ms-data-grid 0.0.58 → 0.0.60

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.
@@ -916,7 +916,7 @@ export class DataGridComponent {
916
916
  : null;
917
917
  if (!temprorySelected) {
918
918
  temprorySelected = Array.isArray(viewValue)
919
- ? viewValue.find(item => item.is_is_default)
919
+ ? viewValue.find(item => item.is_default)
920
920
  : null;
921
921
  }
922
922
  this.curretaTablePresetForUpdate = temprorySelected || null;
@@ -3403,10 +3403,11 @@ export class DataGridComponent {
3403
3403
  return '';
3404
3404
  }
3405
3405
  const status = val?.toString().toLowerCase();
3406
- if (field === 'status' ||
3406
+ if ((field === 'status' ||
3407
3407
  field === 'account_status' ||
3408
3408
  field === 'availstatus' ||
3409
- field === 'is_custom_grade') {
3409
+ field === 'is_custom_grade')
3410
+ && !column?.cellRenderer) {
3410
3411
  return STATUSES_BADGE_MAP[status] || 'badge badge-secondary';
3411
3412
  }
3412
3413
  return '';
@@ -5065,4 +5066,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
5065
5066
  type: ViewChild,
5066
5067
  args: ['fullscreenImageTemplate']
5067
5068
  }] } });
5068
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtZ3JpZC9zcmMvbGliL2RhdGEtZ3JpZC9kYXRhLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1ncmlkL3NyYy9saWIvZGF0YS1ncmlkL2RhdGEtZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBSU4sU0FBUyxFQUVULFlBQVksRUFFWixZQUFZLEVBTVosdUJBQXVCLEVBRXZCLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFVTCxlQUFlLEdBQ2hCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1AsS0FBSyxFQUNMLE9BQU8sR0FDUixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVoRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzVCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQVNyRSxNQUFNLENBQU4sSUFBWSxnQkFRWDtBQVJELFdBQVksZ0JBQWdCO0lBQzFCLGlDQUFhLENBQUE7SUFDYiw4Q0FBMEIsQ0FBQTtJQUMxQiw4Q0FBMEIsQ0FBQTtJQUMxQixpREFBNkIsQ0FBQTtJQUM3QiwwQ0FBc0IsQ0FBQTtJQUN0QiwwQ0FBc0IsQ0FBQTtJQUN0QixpREFBNkIsQ0FBQTtBQUMvQixDQUFDLEVBUlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQVEzQjtBQUdELE1BQU0sQ0FBQyxN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bUI7Z0JBSTlCLGlCQUFpQjtzQkFEaEIsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBSzlCLG1CQUFtQjtzQkFEbEIsU0FBUzt1QkFBQyxxQkFBcUI7Z0JBc1loQyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBNnBCMUMsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLHlCQUF5QixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXFCbkQsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkF1Q2QsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQTZPQSxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ0UsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUV2QixvQkFBb0I7c0JBRG5CLFNBQVM7dUJBQUMsc0JBQXNCO2dCQUdqQyxvQkFBb0I7c0JBRG5CLFNBQVM7dUJBQUMsc0JBQXNCO2dCQTAwQkksc0JBQXNCO3NCQUExRCxTQUFTO3VCQUFDLHdCQUF3QjtnQkFDRSxzQkFBc0I7c0JBQTFELFNBQVM7dUJBQUMsd0JBQXdCO2dCQXNlTixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkF3ekMzQixTQUFTO3NCQURSLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBMkh0QyxPQUFPO3NCQURaLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBdUoxQyxXQUFXO3NCQURWLFNBQVM7dUJBQUMsYUFBYTtnQkFxYmMsdUJBQXVCO3NCQUE1RCxTQUFTO3VCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgRWxlbWVudFJlZixcclxuICBWaWV3Q2hpbGQsXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE5nWm9uZSxcclxuICBSZW5kZXJlcjIsXHJcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcclxuICBFbWJlZGRlZFZpZXdSZWYsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBpbmplY3QsXHJcbiAgSW5qZWN0b3JcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3BsaXRDb2x1bW5zU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NwbGl0LWNvbHVtbnMuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb21tb24uc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgQ2RrRHJhZyxcclxuICBDZGtEcmFnRHJvcCxcclxuICBDZGtEcmFnRW5kLFxyXG4gIENka0RyYWdFbnRlcixcclxuICBDZGtEcmFnRXhpdCxcclxuICBDZGtEcmFnTW92ZSxcclxuICBDZGtEcmFnU29ydEV2ZW50LFxyXG4gIENka0RyYWdTdGFydCxcclxuICBEcmFnRHJvcCxcclxuICBtb3ZlSXRlbUluQXJyYXksXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7XHJcbiAgdHJpZ2dlcixcclxuICBzdGF0ZSxcclxuICBzdHlsZSxcclxuICB0cmFuc2l0aW9uLFxyXG4gIGFuaW1hdGUsXHJcbiAgcXVlcnksXHJcbiAgc3RhZ2dlcixcclxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgQ2RrRHJvcExpc3QgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgU1RBVFVTRVNfQkFER0VfTUFQIH0gZnJvbSAnLi9zdGF0dXNlcyc7XHJcbmltcG9ydCB7IENvcHlTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvcHktc2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEV4cG9ydFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9leHBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IENlbGxIb3N0RGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9jZWxsSG9zdC5kaXJlY3RpdmUnO1xyXG5cclxuaW50ZXJmYWNlIENlbGxQb3NpdGlvbiB7XHJcbiAgcm93SW5kZXg6IG51bWJlcjtcclxuICBjb2xJbmRleDogbnVtYmVyO1xyXG4gIHN1YkNvbEluZGV4OiBudW1iZXI7XHJcbiAgZmllbGQ6IHN0cmluZztcclxuICBrZXk6IHN0cmluZztcclxufVxyXG5leHBvcnQgZW51bSBSb3dBbmltYXRpb25UeXBlIHtcclxuICBOb25lID0gJ25vbmUnLFxyXG4gIFNwcmVhZCA9ICdzcHJlYWRBbmltYXRpb24nLFxyXG4gIEJvdW5jZSA9ICdib3VuY2VBbmltYXRpb24nLFxyXG4gIFNsaWRlVXAgPSAnc2xpZGVVcEZyb21Cb3R0b20nLFxyXG4gIEZsaXAgPSAnZmxpcEFuaW1hdGlvbicsXHJcbiAgU2tldyA9ICdza2V3QW5pbWF0aW9uJyxcclxuICBTbGlkZVJpZ2h0ID0gJ3NsaWRlRnJvbVJpZ2h0JyxcclxufVxyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBzb3J0aW5nQW5pbWF0aW9uID0gdHJpZ2dlcignbGlzdFNvcnQnLCBbXHJcbiAgdHJhbnNpdGlvbignKiA9PiAqJywgW1xyXG4gICAgLy8gUXVlcnkgYWxsIGVsZW1lbnRzIGVudGVyaW5nIG9yIGxlYXZpbmdcclxuICAgIHF1ZXJ5KCc6ZW50ZXIsIDpsZWF2ZScsIHN0eWxlKHsgcG9zaXRpb246ICdhYnNvbHV0ZScsIHdpZHRoOiAnMTAwJScgfSksIHsgb3B0aW9uYWw6IHRydWUgfSksXHJcblxyXG4gICAgLy8gQW5pbWF0ZSBsZWF2aW5nIGVsZW1lbnRzIHVwd2FyZCB3aXRoIGZhZGUgb3V0XHJcbiAgICBxdWVyeSgnOmxlYXZlJywgW1xyXG4gICAgICBhbmltYXRlKCczMDBtcyBlYXNlLWluJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0yMHB4KScsIG9wYWNpdHk6IDAgfSkpXHJcbiAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxyXG5cclxuICAgIC8vIFN0YWdnZXIgdGhlIGVudGVyaW5nIGVsZW1lbnRzIGZvciBhIHNtb290aGVyIGVmZmVjdFxyXG4gICAgcXVlcnkoJzplbnRlcicsIFtcclxuICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDIwcHgpJywgb3BhY2l0eTogMCB9KSxcclxuICAgICAgc3RhZ2dlcig1MCwgW1xyXG4gICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2Utb3V0Jywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJywgb3BhY2l0eTogMSB9KSlcclxuICAgICAgXSlcclxuICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSlcclxuICBdKVxyXG5dKTtcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkYXRhLWdyaWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLWdyaWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RhdGEtZ3JpZC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2FjY29yZGlvblRvZ2dsZScsIFtcclxuICAgICAgc3RhdGUoXHJcbiAgICAgICAgJ2NvbGxhcHNlZCcsXHJcbiAgICAgICAgc3R5bGUoeyBoZWlnaHQ6ICcwcHgnLCBvdmVyZmxvdzogJ3Vuc2V0JyB9KVxyXG4gICAgICApLFxyXG4gICAgICBzdGF0ZSgnZXhwYW5kZWQnLCBzdHlsZSh7IGhlaWdodDogJyonLCBvdmVyZmxvdzogJ3Vuc2V0JyB9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ2NvbGxhcHNlZCA8PT4gZXhwYW5kZWQnLCBhbmltYXRlKCczMDBtcyBlYXNlLWluJykpLFxyXG4gICAgXSksXHJcbiAgICB0cmlnZ2VyKCdzbGlkZVRvZ2dsZScsIFtcclxuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xyXG4gICAgICAgIHN0eWxlKHsgaGVpZ2h0OiAnMHB4Jywgb3BhY2l0eTogMCwgb3ZlcmZsb3c6ICdoaWRkZW4nIH0pLFxyXG4gICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2Utb3V0Jywgc3R5bGUoeyBoZWlnaHQ6ICcqJywgb3BhY2l0eTogMSB9KSlcclxuICAgICAgXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcclxuICAgICAgICBzdHlsZSh7IGhlaWdodDogJyonLCBvcGFjaXR5OiAxLCBvdmVyZmxvdzogJ2hpZGRlbicgfSksXHJcbiAgICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbicsIHN0eWxlKHsgaGVpZ2h0OiAnMHB4Jywgb3BhY2l0eTogMCB9KSlcclxuICAgICAgXSlcclxuICAgIF0pLFxyXG4gICAgdHJpZ2dlcignc2xpZGVVcCcsIFtcclxuICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMTAwJSknLCBvcGFjaXR5OiAwIH0pKSxcclxuICAgICAgc3RhdGUoJyonLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknLCBvcGFjaXR5OiAxIH0pKSxcclxuICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgYW5pbWF0ZSgnMzAwbXMgZWFzZS1vdXQnKSksXHJcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gdm9pZCcsIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4nKSksXHJcbiAgICBdKSxcclxuICB0cmlnZ2VyKCdyb3dEeW5hbWljJywgW1xyXG5cclxuICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBTUFJFQUQgLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cclxuICAgIHRyYW5zaXRpb24oJyogPT4gc3ByZWFkQW5pbWF0aW9uJywgW1xyXG4gICAgICBxdWVyeSgnOmVudGVyJywgW1xyXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2NhbGVYKDAuNyknIH0pLFxyXG4gICAgICAgIHN0YWdnZXIoNjAsIFtcclxuICAgICAgICAgIGFuaW1hdGUoJzM1MG1zIGVhc2Utb3V0JyxcclxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICdzY2FsZVgoMSknIH0pXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgXSlcclxuICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcclxuXHJcbiAgICAgIHF1ZXJ5KCc6bGVhdmUnLCBbXHJcbiAgICAgICAgc3RhZ2dlcig0MCwgW1xyXG4gICAgICAgICAgYW5pbWF0ZSgnMjIwbXMgZWFzZS1pbicsXHJcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2NhbGVYKDAuNyknIH0pXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgXSlcclxuICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KVxyXG4gICAgXSksXHJcblxyXG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0gQk9VTkNFIC0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcbiAgICB0cmFuc2l0aW9uKCcqID0+IGJvdW5jZUFuaW1hdGlvbicsIFtcclxuICAgICAgcXVlcnkoJzplbnRlcicsIFtcclxuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTEwcHgpJyB9KSxcclxuICAgICAgICBzdGFnZ2VyKDQ1LCBbXHJcbiAgICAgICAgICBhbmltYXRlKFxyXG4gICAgICAgICAgICAnNTAwbXMgY3ViaWMtYmV6aWVyKC42OCwtMC41NSwuMjcsMS41NSknLFxyXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknIH0pXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgXSlcclxuICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcclxuXHJcbiAgICAgIHF1ZXJ5KCc6bGVhdmUnLCBbXHJcbiAgICAgICAgc3RhZ2dlcig0MCwgW1xyXG4gICAgICAgICAgYW5pbWF0ZSgnMjAwbXMgZWFzZS1pbicsXHJcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgxMHB4KScgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICBdKVxyXG4gICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pXHJcbiAgICBdKSxcclxuXHJcbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBORVcgMTogRkxJUCAtLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gICAgdHJhbnNpdGlvbignKiA9PiBmbGlwQW5pbWF0aW9uJywgW1xyXG4gICAgICBxdWVyeSgnOmVudGVyJywgW1xyXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAncm90YXRlWCgtODBkZWcpJyB9KSxcclxuICAgICAgICBzdGFnZ2VyKDcwLCBbXHJcbiAgICAgICAgICBhbmltYXRlKCc0NTBtcyBlYXNlLW91dCcsXHJcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAncm90YXRlWCgwKScgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICBdKVxyXG4gICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxyXG5cclxuICAgICAgcXVlcnkoJzpsZWF2ZScsIFtcclxuICAgICAgICBzdGFnZ2VyKDUwLCBbXHJcbiAgICAgICAgICBhbmltYXRlKCcyNTBtcyBlYXNlLWluJyxcclxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICdyb3RhdGVYKDgwZGVnKScgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICBdKVxyXG4gICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pXHJcbiAgICBdKSxcclxuXHJcbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBORVcgMjogU0tFVyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gICAgdHJhbnNpdGlvbignKiA9PiBza2V3QW5pbWF0aW9uJywgW1xyXG4gICAgICBxdWVyeSgnOmVudGVyJywgW1xyXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2tld1koNmRlZykgdHJhbnNsYXRlWSg4cHgpJyB9KSxcclxuICAgICAgICBzdGFnZ2VyKDYwLCBbXHJcbiAgICAgICAgICBhbmltYXRlKCczMjBtcyBlYXNlLW91dCcsXHJcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAnc2tld1koMGRlZykgdHJhbnNsYXRlWSgwKScgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICBdKVxyXG4gICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxyXG5cclxuICAgICAgcXVlcnkoJzpsZWF2ZScsIFtcclxuICAgICAgICBzdGFnZ2VyKDQwLCBbXHJcbiAgICAgICAgICBhbmltYXRlKCcyMjBtcyBlYXNlLWluJyxcclxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICdza2V3WSgtNmRlZykgdHJhbnNsYXRlWSgtOHB4KScgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICBdKVxyXG4gICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pXHJcbiAgICBdKSxcclxuICAgIHRyYW5zaXRpb24oJyogPT4gc2xpZGVVcEZyb21Cb3R0b20nLCBbXHJcbiAgICAgICAgcXVlcnkoJzplbnRlcicsIFtcclxuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgxMDB2aCknIH0pLFxyXG4gICAgICAgICAgc3RhZ2dlcig2MCwgW1xyXG4gICAgICAgICAgICBhbmltYXRlKCc1MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKScsXHJcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSksXHJcblxyXG4gICAgICAgIHF1ZXJ5KCc6bGVhdmUnLCBbXHJcbiAgICAgICAgICBzdGFnZ2VyKDQwLCBbXHJcbiAgICAgICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4nLFxyXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtNTBweCknIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KVxyXG4gICAgICBdKSxcclxuXHJcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gc2xpZGVGcm9tUmlnaHQnLCBbXHJcbiAgICAgICAgcXVlcnkoJzplbnRlcicsIFtcclxuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMDB2dyknIH0pLFxyXG4gICAgICAgICAgc3RhZ2dlcig2MCwgW1xyXG4gICAgICAgICAgICBhbmltYXRlKCc1MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKScsXHJcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyB9KSBcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgXSlcclxuICAgICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxyXG5cclxuICAgICAgICBxdWVyeSgnOmxlYXZlJywgW1xyXG4gICAgICAgICAgc3RhZ2dlcig0MCwgW1xyXG4gICAgICAgICAgICBhbmltYXRlKCczMDBtcyBlYXNlLWluJyxcclxuICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoNTBweCknIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KVxyXG4gICAgICBdKSxcclxuXHJcblxyXG5cclxuICBdKVxyXG5cclxuXHJcbiAgXSxcclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRhR3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkIHtcclxuICAvLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG4gIC8vICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXHJcbiAgLy8gKioqKioqKioqKiAgSW5wdXQgR29lcyBIZXJlICoqKioqKioqKioqIC8vXHJcbiAgLy8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cclxuICAvLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG5cclxuXHJcbkBJbnB1dCgpIHJvd0FuaW1hdGlvbjogUm93QW5pbWF0aW9uVHlwZSA9IFJvd0FuaW1hdGlvblR5cGUuTm9uZTtcclxuXHJcbiAgLy8gUGFnaW5hdGlvbiBDb25maWcgU3RvcmUgSGVyZVxyXG4gIEBJbnB1dCgpIHBhZ2luYXRpb25Db25maWc6IGFueSA9IHt9O1xyXG5cclxuICAvLyBUaGUgZGF0YXNldCBzdG9yZSBoZXJlO1xyXG4gIEBJbnB1dCgpIGRhdGFTZXQ6IGFueVtdID0gW107XHJcblxyXG4gIC8vIFRoZSBjb2x1bW5zIFN0b3JlIEhlcmVcclxuICBASW5wdXQoKSBjb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG5cclxuICAvLyBSb3cgSGVpZ2h0O1xyXG4gIEBJbnB1dCgpIHJvd0hlaWdodDogbnVtYmVyID0gNDQ7XHJcblxyXG4gIC8vIEhlYWRlciBSb3cgSGVpZ2h0O1xyXG4gIEBJbnB1dCgpIGhlYWRlclJvd0hlaWdodDogbnVtYmVyID0gNTA7XHJcblxyXG4gIC8vIFNob3cgVmVydGljYWwgQm9yZGVycztcclxuICBASW5wdXQoKSBzaG93VmVydGljYWxCb3JkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gRXZlbiBSb3dzIEJhY2tncm91bmQgQ29sb3I7XHJcbiAgQElucHV0KCkgZXZlblJvd3NCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xyXG5cclxuICAvLyBFdmVuIFJvd3MgQmFja2dyb3VuZCBDb2xvcjtcclxuICBASW5wdXQoKSBvZGRSb3dzQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnI2YyZjJmMic7XHJcblxyXG4gIC8vIEhlYWRlciBSb3dzIEJhY2tncm91bmQgQ29sb3I7XHJcbiAgQElucHV0KCkgaGVhZGVyQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgPSAnI2Y2ZjhmZic7XHJcblxyXG4gIC8vIEhlYWRlciBSb3dzIEJhY2tncm91bmQgQ29sb3I7XHJcbiAgQElucHV0KCkgY2hlY2tib3hlc0JhY2tncm91bmRDb2xvcjogc3RyaW5nID0gJyNmNmY4ZmYnO1xyXG5cclxuICAvLyBTaG93IENvbHVtbnMgR3JvdXBpbmc7XHJcbiAgQElucHV0KCkgc2hvd0NvbHVtbnNHcm91cGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyBSb3cgSG92ZXJlZCBCYWNrZ3JvdW5kIGNvbG9yO1xyXG4gIEBJbnB1dCgpIHJvd0hvdmVyQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICdyZ2JhKDAsIDEyMywgMjU1LCAwLjEpJztcclxuXHJcbiAgLy8gTGVmdCBQaW5uZWRCYWNrZ3JvdW5kIGNvbG9yO1xyXG4gIEBJbnB1dCgpIGxlZnRQaW5uZWRCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGZmJztcclxuXHJcbiAgLy8gQm9keSBCYWNrZ3JvdW5kIGNvbG9yO1xyXG4gIEBJbnB1dCgpIGJvZHlCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGZmJztcclxuXHJcbiAgLy8gUmlnaHQgUGlubmVkIEJhY2tncm91bmQgY29sb3I7XHJcbiAgQElucHV0KCkgcmlnaHRQaW5uZWRCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGZmJztcclxuXHJcbiAgLy8gU2lkZSBNZW51IEJhY2tncm91bmQgY29sb3I7XHJcbiAgQElucHV0KCkgc2lkZW1lbnVCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGZmJztcclxuXHJcbiAgLy8gQm9keSB0ZXh0IGNvbG9yO1xyXG4gIEBJbnB1dCgpIGJvZHlUZXh0Q29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjMGMxMTJiJztcclxuXHJcbiAgLy8gSGVhZGVyIHRleHQgY29sb3I7XHJcbiAgQElucHV0KCkgaGVhZGVyVGV4dENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnIzJhMWY3Myc7XHJcblxyXG4gIC8vIEhlYWRlciB0ZXh0IGNvbG9yO1xyXG4gIEBJbnB1dCgpIGNoZWNrYm94ZXNDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyMyYTFmNzMnO1xyXG5cclxuICAvLyBIZWFkZXIgdGV4dCBzaXplO1xyXG4gIEBJbnB1dCgpIGhlYWRlclRleHRGb250c1NpemU6IG51bWJlciB8IHVuZGVmaW5lZCA9IDE0O1xyXG5cclxuICAvLyBCb2R5IHRleHQgY29sb3I7XHJcbiAgQElucHV0KCkgYm9keVRleHRGb250c1NpemU6IG51bWJlciB8IHVuZGVmaW5lZCA9IDE0O1xyXG5cclxuICAvLyBIZWFkZXIgZm9udCB3ZWlnaHQ7XHJcbiAgQElucHV0KCkgaGVhZGVyRm9udFdlaWdodDogbnVtYmVyIHwgdW5kZWZpbmVkID0gNTAwO1xyXG5cclxuICAvLyBCb2R5IEZvbnQgV2VpZ2h0O1xyXG4gIEBJbnB1dCgpIGJvZHlGb250V2VpZ2h0OiBudW1iZXIgfCB1bmRlZmluZWQgPSA0MDA7XHJcblxyXG4gIC8vIENoZWNrZWQgUm93IEJhY2tncm91bmQgQ29sb3I7XHJcbiAgQElucHV0KCkgY2hlY2tlZFJvd0JhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJ2FsaWNlYmx1ZSc7XHJcblxyXG4gIC8vIGRyb3Bkb3ducyBCYWNrZ3JvdW5kIENvbG9yO1xyXG4gIEBJbnB1dCgpIGRyb3Bkb3duc0JhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyNmNmY4ZjgnO1xyXG5cclxuXHJcbiAgQElucHV0KCkgZm9vdGVyUm93QmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcclxuXHJcbiAgLy8gRm9vdGVyIHJvdyBIZWlnaHQ7XHJcbiAgQElucHV0KCkgZm9vdGVyUm93SGVpZ2h0OiBudW1iZXIgPSA0NjtcclxuXHJcbiAgLy8gRm9vdGVyIHJvdyBIZWlnaHQ7XHJcbiAgQElucHV0KCkgdG9wR3JvdXBlZEJhZGdlc0JhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyc7XHJcblxyXG4gIC8vIFNob3cgUm93IHdpc2UgZ3JvdXBpbmc7XHJcbiAgQElucHV0KCkgc2hvd1Jvd3NHcm91cGluZzogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xyXG5cclxuICAvLyBTaG93IFJvdyB3aXNlIGdyb3VwaW5nO1xyXG4gIEBJbnB1dCgpIHNob3dGaWx0ZXJSb3c6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcclxuXHJcbiAgLy8gU2hvdyBSb3cgd2lzZSBncm91cGluZztcclxuICBASW5wdXQoKSBmb250RmFpbWx5OiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnc2Fucy1zZXJpZic7XHJcblxyXG4gIC8vIFNob3cgU2lkZUNvbHVtbjtcclxuICBASW5wdXQoKSBzaG93U2lkZU1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gRm9vdGVyIFBhZGRpbmdcclxuICBASW5wdXQoKSBmb290ZXJQYWRkaW5nOiBudW1iZXIgPSAzXHJcblxyXG5cclxuICAvLyBGb290ZXIgUGFkZGluZ1xyXG4gIEBJbnB1dCgpIHRvcEZpbHRlclJvd0hlaWdodDogbnVtYmVyID0gNTA7XHJcblxyXG4gIC8vIFNob3cgUm93cyBzaGFkaW5nXHJcbiAgQElucHV0KCkgcm93U2hhZGluZ0VuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gU2hvdyBSb3dzIHNoYWRpbmdcclxuICBASW5wdXQoKSBzaG93U2VyaWFsTnVtYmVyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIFNpbmdsZSBTcGEgVXJsIEF0dGFjaCB0byBpY29uc1xyXG4gIEBJbnB1dCgpIHNpbmdsZVNwYUFzc2V0c1BhdGg6IHN0cmluZyA9ICdhc3NldHMvJztcclxuXHJcblxyXG4gIC8vIEFwcGxpZWQgRmlsdGVyc1xyXG4gIEBJbnB1dCgpIGZpbHRlcnNDb25maWc6IGFueVtdID0gW107XHJcblxyXG5cclxuICAvLyBBcHBsaWVkIEZpbHRlcnNcclxuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vVmVydGljYWwgU2Nyb2xsYmFyIHN0eWxlXHJcbiAgQElucHV0KCkgdmVydGljYWxTY3JvbGxiYXJXaWR0aDogJ2F1dG8nIHwgJ3RoaW4nID0gJ2F1dG8nO1xyXG5cclxuICAvL0hvcml6aW50YWwgU2Nyb2xsYmFyIHN0eWxlXHJcbiAgQElucHV0KCkgaG9yaXppbnRhbFNjcm9sbGJhcldpZHRoOiAnYXV0bycgfCAndGhpbicgPSAnYXV0byc7XHJcblxyXG4gIC8vIFNob3cgQ2VsbCBkZXRhaWxzIGJveFxyXG4gIEBJbnB1dCgpIHNob3dDZWxsRGV0YWlsc0JveDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvL0RhdGUgZm9ybWF0XHJcblxyXG4gIEBJbnB1dCgpIGRhdGVGb3JtYXQ6IHN0cmluZyA9ICdkZC9NTS95eXl5J1xyXG5cclxuICAvL0RhdGUgZm9ybWF0XHJcbiAgQElucHV0KCkgdGFibGVTZWFyY2g6IHN0cmluZyA9ICcnO1xyXG5cclxuXHJcbiAgLy9EYXRlIGZvcm1hdFxyXG4gIEBJbnB1dCgpIGFjdGlvbnM6IGFueVtdID0gWydlZGl0JywgJ2RlbGV0ZSddO1xyXG5cclxuXHJcbiAgLy8gVGFibGUgQ29uZmlnIGZvciBwYWdpbmF0aW9ucyBpcyBoZXJlXHJcbiAgQElucHV0KCkgY29uZmlnOiBhbnk7XHJcblxyXG5cclxuICAvLyBTZWxlY3Rpb24gdGFzayBiYXJcclxuICBASW5wdXQoKSBzaG93VGFza2JhciA9IGZhbHNlXHJcblxyXG4gIC8vIFRhYmxlIE5hbWUgZm9yIHN0YXRlIG1hbmFnZVxyXG4gIEBJbnB1dCgpIHRhYmxlTmFtZSA9IHRydWVcclxuXHJcblxyXG4gIC8vIExpc3RpbmcgdHlwZVxyXG4gIEBJbnB1dCgpIGxpc3RpbmdUeXBlOiBzdHJpbmcgfCBib29sZWFuID0gJyc7XHJcblxyXG4gIC8vIExpc3RpbmcgdHlwZVxyXG5cclxuICBASW5wdXQoKSBjaGVja2JveFN0YXRlOiB7IHJlc2V0OiBib29sZWFuIH0gPSB7XHJcbiAgICByZXNldDogdHJ1ZVxyXG4gIH1cclxuXHJcbiAgLy8gVGFza2JhciBhY3Rpb25zXHJcbiAgQElucHV0KCkgdGFza2JhckFjdGlvbnM6IGFueVtdID0gW11cclxuXHJcblxyXG4gIC8vIFNvcnRpbmcgQ29uZmlnIHRvIHNob3cgc29ydCBpY29uc1xyXG4gIEBJbnB1dCgpIHNvcnRpbmdDb25maWc6IHsgZmllbGQ6IHN0cmluZywgb3JkZXJfYnk6IHN0cmluZyB9IHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICBASW5wdXQoKSB0YWJsZUZpbHRlclZpZXdJZDogYW55ID0gJyc7XHJcblxyXG5cclxuICBASW5wdXQoKSBzZWxlY3RlZFRhYmxlTGF5b3V0OiBhbnkgPSAnbWVkaXVtJ1xyXG5cclxuICBASW5wdXQoKSBjbG9zZURyb3Bkb3duOiB7IHByZXNldDogeyBjbG9zZWQ6IGJvb2xlYW4sIGxvYWRpbmc6IGJvb2xlYW4gfSB9ID0geyBwcmVzZXQ6IHsgY2xvc2VkOiBmYWxzZSwgbG9hZGluZzogZmFsc2UgfSB9O1xyXG5cclxuICAvLyBUYWJsZSBWaWV3XHJcblxyXG4gIC8vIEdsb2JhbFNlYXJjaFxyXG4gIEBJbnB1dCgpIGdsb2JhbFNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvLyBOZXN0ZWQgVGFibGUgUm93IEZvbnRzaXplXHJcbiAgQElucHV0KCkgbmVzdGVkVGFibGVyb3dGb250c2l6ZSA9IDE0O1xyXG5cclxuICAvLyBOZXN0ZWQgdGFibGUgcm93IEhlYWRlciByb3cgSGVpZ2h0XHJcbiAgQElucHV0KCkgbmVzdGVkVGFibGVIZWFkZXJSb3dIZWlnaHQgPSA0MDtcclxuXHJcbiAgLy8gTmVzdGVkIFRhYmxlIHJvdyBoZWlnaHRcclxuICBASW5wdXQoKSBuZXN0ZWRUYWJsZXJvd0hlaWdodCA9IDQ1O1xyXG5cclxuXHJcbiAgQElucHV0KCkgZ3JpZFR5cGU6IHN0cmluZyA9ICcnO1xyXG5cclxuICBASW5wdXQoKSBjdXJyZW5jeVN5bWJvbDogc3RyaW5nID0gJyQnO1xyXG5cclxuXHJcbiAgQElucHV0KCkgbGVmdFBpbm5lZEJveHNoYWRvdzogc3RyaW5nID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpIHJpZ2h0UGlubmVkQm94c2hhZG93OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLy8gR2xvYmFsU2VhcmNoXHJcbiAgQElucHV0KCkgc2VsZWN0ZWRSb3dzQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgPSAnIzhhYzVmZic7XHJcblxyXG4gIC8vIEdsb2JhbFNlYXJjaFxyXG4gIEBJbnB1dCgpIG5lc3RlZFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgPSAnI2Y2ZjhmZic7XHJcblxyXG5cclxuICBASW5wdXQoKSBuZXN0ZWRUYWJsZVJvd0JhY2tncm91bmRDb2xvcjogc3RyaW5nID0gJyNlYWVhZWEnO1xyXG5cclxuICBASW5wdXQoKSB0YWJsZVZpZXc6IGFueVtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIGJ1dHRvbnM6IHsgbmFtZTogc3RyaW5nOyBpc19zaG93SWNvbjogYm9vbGVhbjsgaWNvbjogc3RyaW5nLCBoYXNfcGVybWlzc2lvbjogYm9vbGVhbiB9W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkga2VlcE11bHRpcGxlRXhwYW5kZWREZXRhaWxzID0gZmFsc2U7XHJcblxyXG5cclxuICBASW5wdXQoKSBzaG93VG90YWxBbW91bnRSb3cgPSBmYWxzZTtcclxuXHJcblxyXG4gIEBJbnB1dCgpIGVuYWJsZUdsb2JhbFNlYXJjaCA9IHRydWU7XHJcblxyXG5cclxuICBASW5wdXQoKSB0YWJsZVR5cGUgPSAnJztcclxuXHJcblxyXG4gIEBJbnB1dCgpIGVuYWJsZUV4cG9ydCA9IGZhbHNlO1xyXG5cclxuXHJcbiAgQElucHV0KCkgc2hvd0Z1bGxTY3JlZW5CdXR0b24gPSBmYWxzZTtcclxuXHJcblxyXG4gIEBJbnB1dCgpIGVuYWJsZUN1dCA9IGZhbHNlO1xyXG5cclxuXHJcbiAgQElucHV0KCkgdGFiczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgc2hvd0NoZWNrYm94ZXMgPSB0cnVlO1xyXG5cclxuXHJcblxyXG5cclxuICBASW5wdXQoKSByZXNldEFsbEZpbHRlcnMgPSB7IHJlc2V0QWxsOiBmYWxzZSB9O1xyXG5cclxuXHJcbiAgQElucHV0KCkgY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZyA9IHtcclxuICAgIHNob3dQaW5sZWZ0OiB0cnVlLFxyXG4gICAgc2hvd1BpbnJpZ2h0OiB0cnVlLFxyXG4gICAgc2hvd0FzY2VuZGluZzogdHJ1ZSxcclxuICAgIHNob3dEZXNjZW5kaW5nOiB0cnVlLFxyXG4gICAgc2hvd0ZpbHRlcjogdHJ1ZSxcclxuICAgIHNob3dSb3dzR3JvdXBpbmc6IHRoaXMuc2hvd1Jvd3NHcm91cGluZyxcclxuICAgIHNob3dBdXRvc2l6ZUFsbENvbHVtbnM6IHRydWUsXHJcbiAgICBzaG93QXV0b3NpemVUaGlzQ29sdW1uOiBmYWxzZSxcclxuICAgIHNob3dDaG9zZUNvbHVtbnM6IGZhbHNlLFxyXG4gICAgc2hvd1Jlc2V0Q29sdW1uczogZmFsc2UsXHJcbiAgfTtcclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgT3V0IFB1dCBFdmVudHNcclxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cclxuXHJcblxyXG4gIC8vQ2hhbmdlIFRhYmxlIExheW91dFxyXG4gIEBWaWV3Q2hpbGRyZW4oQ2VsbEhvc3REaXJlY3RpdmUpIGNlbGxIb3N0cyE6IFF1ZXJ5TGlzdDxDZWxsSG9zdERpcmVjdGl2ZT47XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlTGF5b3V0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgY3VzdG9tQ2VsbEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIC8vIEZpbHRlciBBcHBseSBldmVudDtcclxuICBAT3V0cHV0KCkgcHVibGljIGZpbHRlck9wdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQE91dHB1dCgpIGdlbmVyaWNFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKSB0YWJsZVByZXNldENvbmZpZzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKSBzb3J0aW5nT3JkZXJPcHRpb25zOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KCkgY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgaXNGdWxsU2NyZWVuID0gZmFsc2U7XHJcbiAgYWN0aXZlVGFiOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBncm91cGVkQ29sdW1uczogYW55W10gPSBbXTtcclxuICBhY3RpdmVDb2w6IGFueSA9IG51bGw7XHJcbiAgYWN0aXZlRmlsdGVyQ2VsbDogYW55ID0gbnVsbDtcclxuICBzaG93QWN0aW9uc0Ryb3BEb3duID0gZmFsc2U7XHJcbiAgc2lkZU1lbnVWaXNpYmxlID0gZmFsc2U7XHJcbiAgcGl2b3RNb2RlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY29sdW1uU2VhcmNoOiBzdHJpbmcgPSAnJztcclxuICBleHBhbmRBbGxBY2NvcmRpYW5zID0gdHJ1ZTtcclxuICBjdXJyZW50T3BlbmVkU2lkZU1lbnVlOiAnY29scycgfCAnZmlsdHJzJyB8IG51bGwgPSBudWxsO1xyXG4gIG9yaWdpbmFsQ29sdW1uczogYW55W10gPSBbXTtcclxuICBvcmlnaW5hbERhdGFTZXQ6IGFueVtdID0gW107XHJcbiAgYWN0aXZlVG9wQnV0dG9uOiBzdHJpbmcgfCBudWxsID0gJyc7XHJcbiAgZmlsdGVyQ29sdW1uc0xpc3Q6IGFueVtdID0gW107XHJcbiAgZ3JvdXBCb3hQYWRkaW5nID0gMjAwO1xyXG4gIHByZXNldE5hbWU6IHN0cmluZyA9ICcnO1xyXG4gIHByZXNldEZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlYXJjaFRleHRQcmVzZXRUYWJsZSA9ICcnO1xyXG4gIGFkZEZpbHRlckNvbHVtbklucHV0ID0gJyc7XHJcbiAgc2VhcmNoSW5Ecm9wZG93biA9ICcnO1xyXG4gIGFkZEZpbHRlckRyb3Bkb3duU2VhcmNoID0gJydcclxuICB0b3BTaG93SGlkZUNvbHVtbnMgPSAnJztcclxuICBjaG9zZUNvbHVtbnNTZWFyY2ggPSAnJ1xyXG4gIHNpZGVOZXN0ZWRGaWx0ZXJTZWFyY2ggPSAnJ1xyXG4gIGVkaXRpbkRyb3Bkb3duU2VhcmNoID0gJyc7XHJcbiAgaXNUaHJlZURvdHNGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgY29uZmlybURlbGV0ZSA9IGZhbHNlO1xyXG4gIGZvbnRGYW1pbGllczogc3RyaW5nW10gPSBbXHJcbiAgICAvLyBDb21tb24gRXhjZWwgZm9udHNcclxuICAgICdBcmlhbCcsXHJcbiAgICAnQXJpYWwgQmxhY2snLFxyXG4gICAgJ0JhaG5zY2hyaWZ0JyxcclxuICAgICdDYWxpYnJpJyxcclxuICAgICdDYW1icmlhJyxcclxuICAgICdDYW1icmlhIE1hdGgnLFxyXG4gICAgJ21hdGgnLFxyXG4gICAgJ0NhbmRhcmEnLFxyXG4gICAgJ0NvbWljIFNhbnMgTVMnLFxyXG4gICAgJ0NvbnNvbGFzJyxcclxuICAgICdDb25zdGFudGlhJyxcclxuICAgICdDb3JiZWwnLFxyXG4gICAgJ0NvdXJpZXIgTmV3JyxcclxuICAgICdFYnJpbWEnLFxyXG4gICAgJ0ZyYW5rbGluIEdvdGhpYyBNZWRpdW0nLFxyXG4gICAgJ0dhYnJpb2xhJyxcclxuICAgICdHYWR1Z2knLFxyXG4gICAgJ0dlb3JnaWEnLFxyXG4gICAgJ0ltcGFjdCcsXHJcbiAgICAnSW5rIEZyZWUnLFxyXG4gICAgJ0phdmFuZXNlIFRleHQnLFxyXG4gICAgJ0xlZWxhd2FkZWUgVUknLFxyXG4gICAgJ0x1Y2lkYSBDb25zb2xlJyxcclxuICAgICdMdWNpZGEgU2FucyBVbmljb2RlJyxcclxuICAgICdNYWxndW4gR290aGljJyxcclxuICAgICdNaWNyb3NvZnQgSGltYWxheWEnLFxyXG4gICAgJ01pY3Jvc29mdCBKaGVuZ0hlaScsXHJcbiAgICAnTWljcm9zb2Z0IE5ldyBUYWkgTHVlJyxcclxuICAgICdNaWNyb3NvZnQgUGhhZ3NQYScsXHJcbiAgICAnTWljcm9zb2Z0IFNhbnMgU2VyaWYnLFxyXG4gICAgJ01pY3Jvc29mdCBUYWkgTGUnLFxyXG4gICAgJ01pY3Jvc29mdCBZYUhlaScsXHJcbiAgICAnTWljcm9zb2Z0IFlpIEJhaXRpJyxcclxuICAgICdNb25nb2xpYW4gQmFpdGknLFxyXG4gICAgJ01TIEdvdGhpYycsXHJcbiAgICAnTVMgUEdvdGhpYycsXHJcbiAgICAnTVMgVUkgR290aGljJyxcclxuICAgICdNViBCb2xpJyxcclxuICAgICdOaXJtYWxhIFVJJyxcclxuICAgICdQYWxhdGlubyBMaW5vdHlwZScsXHJcbiAgICAnU2Vnb2UgUHJpbnQnLFxyXG4gICAgJ1NlZ29lIFNjcmlwdCcsXHJcbiAgICAnU2Vnb2UgVUknLFxyXG4gICAgJ1NlZ29lIFVJIEhpc3RvcmljJyxcclxuICAgICdTZWdvZSBVSSBFbW9qaScsXHJcbiAgICAnU2Vnb2UgVUkgU3ltYm9sJyxcclxuICAgICdTaW1TdW4nLFxyXG4gICAgJ1NpdGthIFNtYWxsJyxcclxuICAgICdTeWxmYWVuJyxcclxuICAgICdTeW1ib2wnLFxyXG4gICAgJ1RhaG9tYScsXHJcbiAgICAnVGltZXMgTmV3IFJvbWFuJyxcclxuICAgICdUcmVidWNoZXQgTVMnLFxyXG4gICAgJ1ZlcmRhbmEnLFxyXG4gICAgJ1dlYmRpbmdzJyxcclxuICAgICdXaW5nZGluZ3MnLFxyXG4gICAgJ1l1IEdvdGhpYycsXHJcbiAgICAnc2Fucy1zZXJpZicsXHJcbiAgICAnc2VyaWYnLFxyXG4gICAgJ21vbm9zcGFjZScsXHJcbiAgICAnSW50ZXInXHJcbiAgXTtcclxuXHJcbiAgZm9udFNpemVzOiBzdHJpbmdbXSA9IFtcclxuICAgICc4JywgJzknLCAnMTAnLCAnMTEnLCAnMTInLCAnMTQnLCAnMTYnLCAnMTgnLCAnMjAnLCAnMjQnLCAnMjgnLCAnMzInXHJcbiAgXTtcclxuXHJcbiAgaGFzU2Nyb2xsID0gZmFsc2U7XHJcblxyXG5cclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjb2x1bW5TZXJ2aWNlOiBTcGxpdENvbHVtbnNTZXJ2aWNlLFxyXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgY29tbW9uU2V2aWNlOiBDb21tb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgY29weVNlcnZpY2U6IENvcHlTZXJ2aWNlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICBwcml2YXRlIGV4cG9ydFNlcnZpY2U6IEV4cG9ydFNlcnZpY2UsXHJcblxyXG4gICkgeyB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NlbGxUZXh0JywgeyBzdGF0aWM6IGZhbHNlIH0pIGNlbGxUZXh0ITogYW55O1xyXG4gIEBWaWV3Q2hpbGQoJ25lc3RlZEhlYWRlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBuZXN0ZWRIZWFkZXIhOiBFbGVtZW50UmVmO1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcclxuICAgICAgYXdhaXQgdGhpcy5TZXRDb2x1bW5zRGVmYXVsdFdpZHRoKCk7XHJcbiAgICAgIGF3YWl0IHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcclxuICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcbiAgICAgIHRoaXMuY29tcHV0ZVZpZXdwb3J0Um93cygpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xyXG4gICAgICB0aGlzLmhhc1Njcm9sbCA9IHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuY2VsbFRleHQpIHtcclxuICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmNlbGxUZXh0Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMucmVuZGVyQ3VzdG9tQ2VsbHMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xyXG5cclxuICBjcmVhdGVDZWxsSW5qZWN0b3Iocm93OiBhbnksIGNvbDogYW55KTogSW5qZWN0b3Ige1xyXG4gICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7XHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogJ3Jvd0RhdGEnLCB1c2VWYWx1ZTogcm93IH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiAnY29sRGF0YScsIHVzZVZhbHVlOiBjb2wgfVxyXG4gICAgICBdLFxyXG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3JcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgcmVuZGVyQ3VzdG9tQ2VsbHMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBob3N0cyA9IHRoaXMuY2VsbEhvc3RzLnRvQXJyYXkoKTtcclxuICAgIGxldCBob3N0SW5kZXggPSAwO1xyXG5cclxuICAgIGZvciAoY29uc3Qgcm93IG9mIHRoaXMudmlzaWJsZVJvd3MpIHtcclxuICAgICAgZm9yIChjb25zdCBjb2wgb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgY29uc3QgaG9zdCA9IGhvc3RzW2hvc3RJbmRleCsrXTtcclxuICAgICAgICBpZiAoIWhvc3QgfHwgIWNvbC5jZWxsUmVuZGVyZXIpIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICBjb25zdCB2aWV3Q29udGFpbmVyID0gaG9zdC52aWV3Q29udGFpbmVyUmVmO1xyXG4gICAgICAgIHZpZXdDb250YWluZXIuY2xlYXIoKTtcclxuXHJcbiAgICAgICAgY29uc3QgY29tcFJlZiA9IHZpZXdDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNvbC5jZWxsUmVuZGVyZXIpO1xyXG5cclxuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgICAgICByb3csXHJcbiAgICAgICAgICBjb2wsXHJcbiAgICAgICAgICB2YWx1ZTogdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCksXHJcbiAgICAgICAgICBhcGk6IHRoaXMsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKChjb21wUmVmLmluc3RhbmNlIGFzIGFueSkuZ3JpZEluaXQpIHtcclxuICAgICAgICAgIChjb21wUmVmLmluc3RhbmNlIGFzIGFueSkuZ3JpZEluaXQocGFyYW1zKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYWRkU3R5bGVzVG9JbWFnZXMoKTtcclxuICAgIHRoaXMuaGFzU2Nyb2xsID0gdGhpcy5oYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vICBpZiAodGhpcy50YWJzPy5sZW5ndGgpIHtcclxuICAgIC8vICAgdGhpcy5hY3RpdmVUYWIgPSB0aGlzLnRhYnNbMF07XHJcbiAgICAvLyB9XHJcbiAgICAvLyB0aGlzLmF1dG9zaXplQWxsQ29sdW1ucygpO1xyXG4gIH1cclxuXHJcblxyXG4gIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzWydjb2x1bW5zJ10pIHtcclxuICAgICAgYXdhaXQgdGhpcy5zZXRDb2x1bW5zQ29sdW1uRHJvcGRvd25WYWx1cygpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAgIGlmIChjaGFuZ2VzWyd0YWJzJ10pIHtcclxuICAgICAgICBpZiAoY2hhbmdlc1sndGFicyddKSB7XHJcbiAgICAgICAgY29uc3QgYWxsVGFicyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2FjdGl2ZVRhYnMnKSB8fCAne30nKTtcclxuICAgICAgICBjb25zdCBzYXZlZFRhYiA9IGFsbFRhYnNbdGhpcy50YWJsZVR5cGVdO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlVGFiID0gc2F2ZWRUYWIgfHwgdGhpcy50YWJzPy5bMF07XHJcblxyXG4gICAgICAgIGlmKHRoaXMudGFibGVUeXBlKXtcclxuICAgICAgICAgIHRoaXMuc2V0QWN0aXZlVGFiKHRoaXMuYWN0aXZlVGFiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICB9XHJcbiAgICBpZiAoY2hhbmdlc1snZmlsdGVyc0NvbmZpZyddKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tGaWx0ZXJDaGFuZ2VzRWZmZWN0KCk7XHJcbiAgICAgIGF3YWl0IHRoaXMuYXBwbHlGaWx0ZXJvcHRpb25MaXN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbHVtbnMnXT8uY3VycmVudFZhbHVlPy5sZW5ndGgpIHtcclxuXHJcbiAgICAgIGF3YWl0IHRoaXMuYXBwbHlGaWx0ZXJvcHRpb25MaXN0KCk7XHJcblxyXG4gICAgICB0aGlzLm9yaWdpbmFsQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5tYXAoY29sID0+ICh7XHJcbiAgICAgICAgLi4uY29sLFxyXG4gICAgICAgIHF1ZXJ5OiBjb2wucXVlcnkgPyB7IC4uLmNvbC5xdWVyeSB9IDogbnVsbCxcclxuICAgICAgICBjb2x1bW5fZHJvcGRvd25fdmFsdWU6IGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWVcclxuICAgICAgICAgID8gWy4uLmNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWVdXHJcbiAgICAgICAgICA6IFtdLFxyXG4gICAgICB9KSk7XHJcblxyXG5cclxuICAgICAgaWYgKHRoaXMuZGF0YUdyaWRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5TZXRDb2x1bW5zRGVmYXVsdFdpZHRoKCk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcclxuICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgICAgIHRoaXMuc2V0U2VjdGlvbnNXaWR0aCgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1snZGF0YVNldCddKSB7XHJcbiAgICAgIHRoaXMuZGF0YVNldCA9IHRoaXMuZGF0YVNldD8ubWFwKChyb3csIGkpID0+ICh7XHJcbiAgICAgICAgLi4ucm93LFxyXG4gICAgICAgIF9fdmlydHVhbEluZGV4OiBpICsgMSxcclxuICAgICAgfSkpO1xyXG4gICAgICB0aGlzLm9yaWdpbmFsRGF0YVNldCA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLmRhdGFTZXQpO1xyXG4gICAgICB0aGlzLmV4cGFuZGVkQ2VsbHMuY2xlYXIoKTtcclxuICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcblxyXG4gICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb21wdXRlVmlld3BvcnRSb3dzKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVWaXNpYmxlUm93cygwKTtcclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKHRoaXMuY2VudGVyUGlubmVkSGVhZGVyPy5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgdm9pZCB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPVxyXG4gICAgICAgICAgICB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmFwcGx5Um93c1NlbGVjdGlvblN0YXRlKCk7XHJcblxyXG4gICAgICBpZiAodGhpcy5ncm91cGVkQ29sdW1ucz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc3QgZmllbGRzID0gdGhpcy5ncm91cGVkQ29sdW1ucy5tYXAoKGl0ZW0pID0+IGl0ZW0uZmllbGQpO1xyXG4gICAgICAgIHRoaXMuZGF0YVNldCA9IGF3YWl0IHRoaXMuZ3JvdXBEYXRhQXN5bmModGhpcy5vcmlnaW5hbERhdGFTZXQsIGZpZWxkcyk7XHJcblxyXG4gICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcclxuICAgICAgICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmdyb3VwQm94UGFkZGluZyA9IHRoaXMuY29sdW1uc0dyb3VwZWRCb3g/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1snY2hlY2tib3hTdGF0ZSddPy5jdXJyZW50VmFsdWU/LnJlc2V0KSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb25TdGF0ZSh0aGlzLnRhYmxlVHlwZSk7XHJcblxyXG4gICAgICBjb25zdCBpZHMgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzKTtcclxuICAgICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgbGlzdGluZ1R5cGU6IHRoaXMubGlzdGluZ1R5cGUsXHJcbiAgICAgICAgICBvYmo6IGlkcyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGV2ZW50VHlwZTogJ29uU2VsZWN0Um93JyxcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xyXG5cclxuICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ2Nsb3NlRHJvcGRvd24nXSAmJiB0aGlzLmNsb3NlRHJvcGRvd24ucHJlc2V0LmNsb3NlZCkge1xyXG4gICAgICB0aGlzLmFjdGl2ZVRvcEJ1dHRvbiA9IG51bGw7XHJcbiAgICAgIHRoaXMucHJlc2V0RmlsdGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucHJlc2V0TmFtZSA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmIChjaGFuZ2VzWydvZGRSb3dzQmFja2dyb3VuZENvbG9yJ10pIHtcclxuICAgIC8vICAgdGhpcy5yb3dTaGFkaW5nRW5hYmxlZCA9ICEhdGhpcy5vZGRSb3dzQmFja2dyb3VuZENvbG9yO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzWydyZXNldEFsbEZpbHRlcnMnXSAmJiB0aGlzLnJlc2V0QWxsRmlsdGVycy5yZXNldEFsbCkge1xyXG4gICAgICB0aGlzLmNsZWFyQWxsRmlsdGVycygpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzWyd0YWJsZVZpZXcnXSkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBjb25zdCB2aWV3VmFsdWUgPSB0aGlzLnRhYmxlVmlldztcclxuICAgICAgbGV0IHRlbXByb3J5U2VsZWN0ZWQgPSBBcnJheS5pc0FycmF5KHZpZXdWYWx1ZSlcclxuICAgICAgICA/IHZpZXdWYWx1ZS5maW5kKGl0ZW0gPT4gaXRlbS5pc190ZW1wKVxyXG4gICAgICAgIDogbnVsbDtcclxuXHJcbiAgICAgICAgaWYoIXRlbXByb3J5U2VsZWN0ZWQpe1xyXG4gICAgICAgICAgdGVtcHJvcnlTZWxlY3RlZCA9IEFycmF5LmlzQXJyYXkodmlld1ZhbHVlKVxyXG4gICAgICAgID8gdmlld1ZhbHVlLmZpbmQoaXRlbSA9PiBpdGVtLmlzX2lzX2RlZmF1bHQpXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlID0gdGVtcHJvcnlTZWxlY3RlZCB8fCBudWxsO1xyXG4gICAgICB0aGlzLnByZXNldE5hbWUgPSB0ZW1wcm9yeVNlbGVjdGVkPy5uYW1lIHx8ICcnO1xyXG4gICAgICB0aGlzLnByZXNldEZpbHRlciA9IHRlbXByb3J5U2VsZWN0ZWQ/LmFjdGl2ZUZpbHRlcnMgfHwgZmFsc2U7XHJcbiAgICAgIGlmKHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlKXtcclxuICAgICAgICB0aGlzLnJvd1NoYWRpbmdFbmFibGVkID0gdGVtcHJvcnlTZWxlY3RlZC5jb25maWcucm93U2hhZGluZ0VuYWJsZWQ7XHJcbiAgICAgICAgdGhpcy5zaG93VmVydGljYWxCb3JkZXIgPSB0ZW1wcm9yeVNlbGVjdGVkLmNvbmZpZy5zaG93VmVydGljYWxCb3JkZXI7XHJcbiAgICAgICAgdGhpcy5mb250RmFpbWx5ID0gdGVtcHJvcnlTZWxlY3RlZC5jb25maWcuZm9udEZhaW1seTtcclxuICAgICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSB0ZW1wcm9yeVNlbGVjdGVkLmNvbmZpZy5oZWFkZXJUZXh0Rm9udHNTaXplO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLnNlbGVjdGVkVGFibGVMYXlvdXQ7XHJcbiAgICAgICAgdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLmJvZHlUZXh0Rm9udHNTaXplO1xyXG4gICAgICAgIHRoaXMuZ2xvYmFsU2VhcmNoVGV4dCA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLmdsb2JhbFNlYXJjaDtcclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZm9udEZhaW1seSA9ICdJbnRlcic7XHJcbiAgICAgICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gMTQ7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0ID0gJ21lZGl1bWQnO1xyXG4gICAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSAxNDtcclxuICAgICAgICB0aGlzLmdsb2JhbFNlYXJjaFRleHQgPSAnJztcclxuICAgICAgfVxyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGFzeW5jIHNldENvbHVtbnNDb2x1bW5Ecm9wZG93blZhbHVzKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLmNvbHVtbnMpIHJldHVybjtcclxuICAgIHRoaXMuY29sdW1ucyA9IGF3YWl0IHRoaXMuY29tbW9uU2V2aWNlLmNvcHlEcm9wZG93bkRhdGFSZWN1cnNpdmVseSh0aGlzLmNvbHVtbnMpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgYXBwbHlSb3dzU2VsZWN0aW9uU3RhdGUoKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZElkc0Zyb21TdGF0ZSA9IHRoaXMucmVzdG9yZVNlbGVjdGlvbih0aGlzLnRhYmxlVHlwZSk7XHJcbiAgICBpZiAoc2VsZWN0ZWRJZHNGcm9tU3RhdGUuc2l6ZSA+IDApIHtcclxuICAgICAgY29uc3QgaWRzID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkUm93cyk7XHJcbiAgICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxyXG4gICAgICAgICAgb2JqOiBpZHNcclxuICAgICAgICB9LFxyXG4gICAgICAgIGV2ZW50VHlwZTogXCJvblNlbGVjdFJvd1wiLFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJTZWxlY3Rpb25TdGF0ZSh0YWJsZVR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3Qgc3RvcmVkID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZGF0YXRhYmxlU2VsZWN0aW9ucycpIHx8ICd7XCJzZWxlY3RlZFJvd3NcIjoge319Jyk7XHJcbiAgICBpZiAoc3RvcmVkLnNlbGVjdGVkUm93cyAmJiBzdG9yZWQuc2VsZWN0ZWRSb3dzW3RhYmxlVHlwZV0pIHtcclxuICAgICAgZGVsZXRlIHN0b3JlZC5zZWxlY3RlZFJvd3NbdGFibGVUeXBlXTtcclxuICAgIH1cclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAnZGF0YXRhYmxlU2VsZWN0aW9ucycsXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KHN0b3JlZClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGFzeW5jIGFwcGx5RmlsdGVyb3B0aW9uTGlzdCgpIHtcclxuICAgIGNvbnN0IHVwZGF0ZWRDb2x1bW5zID0gYXdhaXQgdGhpcy5jb21tb25TZXZpY2UuYXBwbHlGaWx0ZXJzVG9Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKTtcclxuICAgIHRoaXMuY29sdW1ucyA9IFsuLi51cGRhdGVkQ29sdW1uc107XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIGxlZnRQaW5uZWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG4gIGNlbnRlckNvbHVtbnM6IGFueVtdID0gW107XHJcbiAgcmlnaHRQaW5uZWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG5cclxuICBwcmV2aWV3TGVmdFBpbm5lZENvbHVtbnM6IGFueVtdID0gW107XHJcbiAgcHJldmlld0NlbnRlckNvbHVtbnM6IGFueVtdID0gW107XHJcbiAgcHJldmlld1JpZ2h0UGlubmVkQ29sdW1uczogYW55W10gPSBbXTtcclxuXHJcbiAgLy8gTWFpbiBDb250YWluZXIgVGVtcGxhdGUgUmVmZXJlbmNlc1xyXG4gIEBWaWV3Q2hpbGQoJ2RhdGFHcmlkQ29udGFpbmVyJylcclxuICBkYXRhR3JpZENvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ3Rhc2tNYW5hZ2VtZW50Q29udGFpbmVyJylcclxuICB0YXNrTWFuYWdlbWVudENvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ25lc3RlZFRhYmxlQ29udGFpbmVyJylcclxuICBuZXN0ZWRUYWJsZUNvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICAvLyBCb2R5IFRlbXBsYXRlIFJlZmVyZW5jZXNcclxuICBAVmlld0NoaWxkKCdsZWZ0UGlubmVkQm9keScpXHJcbiAgbGVmdFBpbm5lZEJvZHkhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdjZW50ZXJQaW5uZWRCb2R5JylcclxuICBjZW50ZXJQaW5uZWRCb2R5ITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgncmlnaHRQaW5uZWRCb2R5JylcclxuICByaWdodFBpbm5lZEJvZHkhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgLy8gSGVhZGVycyBUZW1wbGF0ZSBSZWZlcmVuY2VzXHJcbiAgQFZpZXdDaGlsZCgnbGVmdFBpbm5lZEhlYWRlcicpXHJcbiAgbGVmdFBpbm5lZEhlYWRlciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2NlbnRlclBpbm5lZEhlYWRlcicpXHJcbiAgY2VudGVyUGlubmVkSGVhZGVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgncmlnaHRQaW5uZWRIZWFkZXInKVxyXG4gIHJpZ2h0UGlubmVkSGVhZGVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbnNHcm91cGVkQm94JylcclxuICBjb2x1bW5zR3JvdXBlZEJveCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICAvLyBDZW50ZXIgRmFrZSBzY3JvbGxiYXJkXHJcbiAgQFZpZXdDaGlsZCgnY2VudGVyRmFrZVNjcm9sbGJhcicpXHJcbiAgY2VudGVyRmFrZVNjcm9sbGJhciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIGFzeW5jIHVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3Vwcyhjb2x1bW5zOiBhbnkgPSBudWxsKSB7XHJcbiAgICBpZiAoIXRoaXMuZGF0YUdyaWRDb250YWluZXIpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMuZGF0YUdyaWRDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuXHJcbiAgICAvLyBXcmFwIGluIGEgcHJvbWlzZSBzbyB3ZSBjYW4gYXdhaXRcclxuICAgIGNvbnN0IHsgbGVmdCwgY2VudGVyLCByaWdodCB9OiBhbnkgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgY29uc3QgcHJlcGFyZWQgPSB0aGlzLmNvbHVtblNlcnZpY2UucHJlcGFyZUNvbHVtbnMoXHJcbiAgICAgICAgY29sdW1ucyA/IGNvbHVtbnMgOiB0aGlzLmNvbHVtbnMsXHJcbiAgICAgICAgY29udGFpbmVyV2lkdGhcclxuICAgICAgKTtcclxuICAgICAgcmVzb2x2ZShwcmVwYXJlZCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmxlZnRQaW5uZWRDb2x1bW5zID0gbGVmdDtcclxuICAgIHRoaXMuY2VudGVyQ29sdW1ucyA9IGNlbnRlcjtcclxuICAgIHRoaXMucmlnaHRQaW5uZWRDb2x1bW5zID0gcmlnaHQ7XHJcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgMCkpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVmcmVzaFByZXZpZXdDb2x1bW5zKGNvbHVtbnM6IGFueSA9IG51bGwpIHtcclxuICAgIGlmICghdGhpcy5kYXRhR3JpZENvbnRhaW5lcikgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy5kYXRhR3JpZENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG5cclxuICAgIC8vIFdyYXAgcHJlcGFyZUNvbHVtbnMgaW4gYSBQcm9taXNlIHRvIG1ha2UgaXQgYXdhaXRhYmxlXHJcbiAgICBjb25zdCB7IGxlZnQsIGNlbnRlciwgcmlnaHQgfTogYW55ID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgIGNvbnN0IHByZXBhcmVkID0gdGhpcy5jb2x1bW5TZXJ2aWNlLnByZXBhcmVDb2x1bW5zKFxyXG4gICAgICAgIGNvbHVtbnMgPyBjb2x1bW5zIDogdGhpcy5jb2x1bW5zLFxyXG4gICAgICAgIGNvbnRhaW5lcldpZHRoXHJcbiAgICAgICk7XHJcbiAgICAgIHJlc29sdmUocHJlcGFyZWQpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5wcmV2aWV3TGVmdFBpbm5lZENvbHVtbnMgPSBsZWZ0O1xyXG4gICAgdGhpcy5wcmV2aWV3Q2VudGVyQ29sdW1ucyA9IGNlbnRlcjtcclxuICAgIHRoaXMucHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucyA9IHJpZ2h0O1xyXG4gICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDEwKSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYXN5bmMgU2V0Q29sdW1uc0RlZmF1bHRXaWR0aCgpIHtcclxuICAgIGxldCBjb250YWluZXJXaWR0aCA9IHRoaXMuZGF0YUdyaWRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggKyA3MDtcclxuICAgIC8vIGlmICh0aGlzLnNob3dTZXJpYWxOdW1iZXIpIGNvbnRhaW5lcldpZHRoIC09IDU1O1xyXG4gICAgLy8gaWYgKHRoaXMuc2hvd1NpZGVNZW51KSBjb250YWluZXJXaWR0aCAtPSAyOTtcclxuICAgIC8vIGlmICh0aGlzLmdyaWRUeXBlID09ICdBc3NldHMnIHx8IHRoaXMuZ3JpZFR5cGUgPT0gJ1Rhc2tzJykgY29udGFpbmVyV2lkdGggLT0gMzA7XHJcbiAgICAvLyBjb250YWluZXJXaWR0aCAtPSA1O1xyXG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5TZXJ2aWNlLmFzc2lnbkRlZmF1bHRXaWR0aHMoXHJcbiAgICAgIHRoaXMuY29sdW1ucyxcclxuICAgICAgY29udGFpbmVyV2lkdGhcclxuICAgICk7XHJcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMCkpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG4gIHNldFNlY3Rpb25zV2lkdGgoKSB7XHJcbiAgICBjb25zdCBsZWZ0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmxlZnQtcGlubmVkLWJvZHknKSBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IGNlbnRlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICcuY2VudGVyLXNjcm9sbGFibGUtYm9keSdcclxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCByaWdodCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5yaWdodC1waW5uZWQtYm9keScpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKGxlZnQpIHtcclxuICAgICAgbGVmdC5zdHlsZS5taW5XaWR0aCA9IGAke3RoaXMubGVmdFBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofWA7XHJcbiAgICB9XHJcbiAgICBpZiAoY2VudGVyKSB7XHJcbiAgICAgIGxlZnQuc3R5bGUubWluV2lkdGggPSBgJHt0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofWA7XHJcbiAgICB9XHJcbiAgICBpZiAocmlnaHQpIHtcclxuICAgICAgbGVmdC5zdHlsZS5taW5XaWR0aCA9IGAke3RoaXMucmlnaHRQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aH1gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gb25DZW50ZXJCb2R5U2Nyb2xsKCk6IHZvaWQge1xyXG4gIC8vICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5jZW50ZXJQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gIC8vICAgY29uc3Qgc2Nyb2xsTGVmdCA9IHRoaXMuY2VudGVyUGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XHJcblxyXG4gIC8vICAgLy8gU3luYyB2ZXJ0aWNhbCBzY3JvbGwgd2l0aCBsZWZ0ICYgcmlnaHQgcGlubmVkIGJvZGllc1xyXG4gIC8vICAgdGhpcy5sZWZ0UGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcclxuICAvLyAgIHRoaXMucmlnaHRQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG5cclxuICAvLyAgIC8vIFN5bmMgaG9yaXpvbnRhbCBzY3JvbGwgd2l0aCBjZW50ZXIgaGVhZGVyXHJcbiAgLy8gICB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xyXG4gIC8vICAgdGhpcy5jZW50ZXJGYWtlU2Nyb2xsYmFyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQ7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBvbkxlZnRCb2R5U2Nyb2xsKCk6IHZvaWQge1xyXG4gIC8vICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5sZWZ0UGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcDtcclxuICAvLyAgIHRoaXMuY2VudGVyUGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcclxuICAvLyAgIHRoaXMucmlnaHRQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG4gIC8vIH1cclxuICAvLyBvblJpZ2h0Qm9keVNjcm9sbCgpOiB2b2lkIHtcclxuICAvLyAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMucmlnaHRQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gIC8vICAgdGhpcy5jZW50ZXJQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG4gIC8vICAgdGhpcy5sZWZ0UGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcclxuICAvLyB9XHJcblxyXG4gIGZha2VTY3JvbGxiYXJTY3JvbGxMZWZ0ID0gMDtcclxuICAvLyBvbkZha2VTY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgLy8gICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgLy8gICB0aGlzLmZha2VTY3JvbGxiYXJTY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XHJcbiAgLy8gICB0aGlzLmNlbnRlclBpbm5lZEJvZHkubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XHJcbiAgLy8gICB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0YXJnZXQuc2Nyb2xsTGVmdDtcclxuICAvLyB9XHJcblxyXG5cclxuXHJcblxyXG4gIGdldE5lc3RlZFZhbHVlKG9iajogYW55LCBmaWVsZDogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiBmaWVsZD8uc3BsaXQoJy4nKS5yZWR1Y2UoKGFjYywgcGFydCkgPT4gYWNjICYmIGFjY1twYXJ0XSwgb2JqKTtcclxuICB9XHJcblxyXG4gIGlzTmVzdGVkVmFsdWVBcnJheShvYmo6IGFueSwgZmllbGQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFvYmogfHwgIWZpZWxkKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGZpZWxkXHJcbiAgICAgIC5zcGxpdCgnLicpXHJcbiAgICAgIC5yZWR1Y2UoKGFjYywgcGFydCkgPT4gKGFjYyAmJiBhY2NbcGFydF0gIT09IHVuZGVmaW5lZCA/IGFjY1twYXJ0XSA6IHVuZGVmaW5lZCksIG9iaik7XHJcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBvblJlc2l6ZUdyb3VwKGV2ZW50OiBNb3VzZUV2ZW50LCBjb2w6IGFueSwgaXNSaWdodFBpbm5lZD86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBjb25zdCBzdGFydFggPSBldmVudC5jbGllbnRYO1xyXG4gICAgY29uc3QgY2hpbGRyZW4gPSBjb2wuY2hpbGRyZW4gfHwgW107XHJcbiAgICBpZiAoIWNoaWxkcmVuLmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNoaWxkV2lkdGhzOiB7IGZpZWxkOiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdID0gY2hpbGRyZW4ubWFwKFxyXG4gICAgICAoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgICAgIGBbZmllbGQ9XCIke2NoaWxkLmZpZWxkfVwiXWBcclxuICAgICAgICApIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBmaWVsZDogY2hpbGQuZmllbGQsXHJcbiAgICAgICAgICB3aWR0aDogZWw/Lm9mZnNldFdpZHRoIHx8IDAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCB0b3RhbEluaXRpYWxXaWR0aCA9IGNoaWxkV2lkdGhzLnJlZHVjZShcclxuICAgICAgKHN1bSwgY29sKSA9PiBzdW0gKyBjb2wud2lkdGgsXHJcbiAgICAgIDBcclxuICAgICk7XHJcblxyXG4gICAgY29uc3Qgb25Nb3VzZU1vdmUgPSAobW92ZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICAgIGxldCBkZWx0YVggPSBtb3ZlRXZlbnQuY2xpZW50WCAtIHN0YXJ0WDtcclxuXHJcbiAgICAgIGlmIChpc1JpZ2h0UGlubmVkKSB7XHJcbiAgICAgICAgZGVsdGFYID0gLWRlbHRhWDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUHJldmVudCBzaHJpbmtpbmcgdG9vIHNtYWxsXHJcbiAgICAgIGlmICh0b3RhbEluaXRpYWxXaWR0aCArIGRlbHRhWCA8IGNoaWxkcmVuLmxlbmd0aCAqIDgwKSByZXR1cm47XHJcblxyXG4gICAgICBsZXQgdG90YWxOZXdXaWR0aCA9IDA7XHJcblxyXG4gICAgICBjaGlsZFdpZHRocy5mb3JFYWNoKChjaGlsZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJhdGlvID0gY2hpbGQud2lkdGggLyB0b3RhbEluaXRpYWxXaWR0aDtcclxuICAgICAgICBjb25zdCBuZXdXaWR0aCA9IE1hdGgubWF4KGNoaWxkLndpZHRoICsgZGVsdGFYICogcmF0aW8sIDgwKTtcclxuICAgICAgICB0b3RhbE5ld1dpZHRoICs9IG5ld1dpZHRoO1xyXG5cclxuICAgICAgICBjb25zdCBjaGlsZEVscyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7Y2hpbGQuZmllbGR9XCJdYCk7XHJcbiAgICAgICAgY2hpbGRFbHMuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGVsSHRtbCA9IGVsIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgICAgZWxIdG1sLnN0eWxlLm1pbldpZHRoID0gYCR7bmV3V2lkdGh9cHhgO1xyXG4gICAgICAgICAgZWxIdG1sLnN0eWxlLndpZHRoID0gYCR7bmV3V2lkdGh9cHhgO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGNoaWxkLmZpZWxkLCBuZXdXaWR0aCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8g4pyFIFVwZGF0ZSBncm91cCBoZWFkZXIgd2lkdGggaW4gRE9NXHJcbiAgICAgIGNvbnN0IGdyb3VwSGVhZGVyRWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAgIGBbZ3JvdXA9XCIke2NvbC5oZWFkZXJ9XCJdYFxyXG4gICAgICApIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoZ3JvdXBIZWFkZXJFbCkge1xyXG4gICAgICAgIGdyb3VwSGVhZGVyRWwuc3R5bGUud2lkdGggPSBgJHt0b3RhbE5ld1dpZHRofXB4YDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBvbk1vdXNlVXAgPSAoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSB7XHJcbiAgICAgICAgdGhpcy5zYXZlUHJlc2V0KCdtb3VzZVVwJyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xyXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUpO1xyXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XHJcbiAgICAgIGNvbnN0IHNlbmREYXRhID0ge1xyXG4gICAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXHJcbiAgICAgICAgbm9fb2ZfcmVjb3JkczogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2VTaXplLFxyXG4gICAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGZpZWxkOiBzdHJpbmcsIHdpZHRoOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IHVwZGF0ZSA9IChjb2x1bW5zOiBhbnlbXSkgPT4ge1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zKSB7XHJcbiAgICAgICAgaWYgKGNvbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICB1cGRhdGUoY29sLmNoaWxkcmVuKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGNvbC5maWVsZCA9PT0gZmllbGQpIHtcclxuICAgICAgICAgIGNvbC53aWR0aCA9IHdpZHRoO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICB1cGRhdGUodGhpcy5jb2x1bW5zKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGNsZWFuQ29sdW1ucyhjb2x1bW5zOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIGNvbnN0IGNsZWFuZWRDb2x1bW5zID0gY29sdW1ucy5tYXAoXHJcbiAgICAgICh7XHJcbiAgICAgICAgX190eXBlbmFtZSxcclxuICAgICAgICBfaWQsXHJcbiAgICAgICAgY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLFxyXG4gICAgICAgIGZpbHRlclZhbHVlLFxyXG4gICAgICAgIHNlYXJjaCxcclxuICAgICAgICBleHBhbmRlZEZpbHRlcixcclxuICAgICAgICBxdWVyeSxcclxuICAgICAgICBpc1Jvd0dyb3VwZWQsXHJcbiAgICAgICAgLi4ucmVzdFxyXG4gICAgICB9KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIC4uLnJlc3QsXHJcbiAgICAgICAgICBpc19ncm91cGFibGU6IHJlc3QudHlwZSAhPT0gJ2ltYWdlJyxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiBjbGVhbmVkQ29sdW1ucztcclxuXHJcbiAgfVxyXG5cclxuICBvblJlc2l6ZUNvbHVtbihldmVudDogTW91c2VFdmVudCwgY29sOiBhbnkpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBjb25zdCBzdGFydFggPSBldmVudC5jbGllbnRYO1xyXG5cclxuICAgIGNvbnN0IHRhcmdldEVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgYFtmaWVsZD1cIiR7Y29sLmZpZWxkfVwiXWBcclxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBpbml0aWFsV2lkdGggPSB0YXJnZXRFbD8ub2Zmc2V0V2lkdGggfHwgMTUwO1xyXG5cclxuICAgIGNvbnN0IG1hdGNoaW5nRWxzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2ZpZWxkPVwiJHtjb2wuZmllbGR9XCJdYCk7XHJcblxyXG4gICAgLy8g8J+RiSBBZGQgaGlnaGxpZ2h0IHdoaWxlIHJlc2l6aW5nXHJcbiAgICBpZiAoY29sPy5waW5uZWQgPT0gJ3JpZ2h0Jykge1xyXG4gICAgICBtYXRjaGluZ0Vscy5mb3JFYWNoKChlbDogRWxlbWVudCkgPT4ge1xyXG4gICAgICAgIChlbCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmFkZCgncmVzaXppbmctaGlnaGxpZ2h0LXJpZ2h0Jyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbWF0Y2hpbmdFbHMuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHtcclxuICAgICAgICAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdC5hZGQoJ3Jlc2l6aW5nLWhpZ2hsaWdodCcpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBvbk1vdXNlTW92ZSA9IChtb3ZlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgbGV0IGRlbHRhWCA9IG1vdmVFdmVudC5jbGllbnRYIC0gc3RhcnRYO1xyXG5cclxuICAgICAgLy8g8J+RiSBSZXZlcnNlIGlmIHRoZSBjb2x1bW4gaXMgcGlubmVkIHRvIHRoZSByaWdodFxyXG4gICAgICBpZiAoY29sLnBpbm5lZCA9PT0gJ3JpZ2h0Jykge1xyXG4gICAgICAgIGRlbHRhWCA9IC1kZWx0YVg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBuZXdXaWR0aCA9IGluaXRpYWxXaWR0aCArIGRlbHRhWDtcclxuICAgICAgaWYgKG5ld1dpZHRoIDwgODApIHJldHVybjtcclxuXHJcbiAgICAgIG1hdGNoaW5nRWxzLmZvckVhY2goKGVsOiBFbGVtZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGVsIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGVsZW1lbnQuc3R5bGUubWluV2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XHJcbiAgICAgICAgZWxlbWVudC5zdHlsZS53aWR0aCA9IGAke25ld1dpZHRofXB4YDtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGNvbC5maWVsZCwgbmV3V2lkdGgpO1xyXG4gICAgICBjb2wud2lkdGggPSBuZXdXaWR0aDtcclxuICAgICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgb25Nb3VzZVVwID0gKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy50YWJsZUZpbHRlclZpZXdJZCkge1xyXG4gICAgICAgIHRoaXMuc2F2ZVByZXNldCgnbW91c2VVcCcpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcclxuICAgICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcclxuICAgICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuXHJcbiAgICAgIG1hdGNoaW5nRWxzLmZvckVhY2goKGVsOiBFbGVtZW50KSA9PiB7XHJcbiAgICAgICAgKGVsIGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3QucmVtb3ZlKCdyZXNpemluZy1oaWdobGlnaHQnKTtcclxuICAgICAgICAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdC5yZW1vdmUoJ3Jlc2l6aW5nLWhpZ2hsaWdodC1yaWdodCcpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcclxuICAgIH07XHJcblxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgb25SZXNpemVHcm91cEJveChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IHN0YXJ0WCA9IGV2ZW50LmNsaWVudFg7XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ3JvdXBCb3hIZWFkZXJEaXYnKTtcclxuICAgIGNvbnN0IGluaXRpYWxXaWR0aCA9IHRhcmdldEVsPy5vZmZzZXRXaWR0aCB8fCAxNTA7XHJcblxyXG4gICAgY29uc3Qgb25Nb3VzZU1vdmUgPSAobW92ZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IGRlbHRhWCA9IG1vdmVFdmVudC5jbGllbnRYIC0gc3RhcnRYO1xyXG5cclxuICAgICAgbGV0IG5ld1dpZHRoID0gaW5pdGlhbFdpZHRoICsgZGVsdGFYO1xyXG4gICAgICBpZiAobmV3V2lkdGggPCAxMDApIG5ld1dpZHRoID0gMTAwO1xyXG5cclxuICAgICAgaWYgKHRhcmdldEVsKSB7XHJcbiAgICAgICAgdGFyZ2V0RWwuc3R5bGUud2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XHJcbiAgICAgICAgdGFyZ2V0RWwuc3R5bGUubWluV2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XHJcbiAgICAgICAgdGhpcy5ncm91cEJveFBhZGRpbmcgPSBuZXdXaWR0aDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBvbk1vdXNlVXAgPSAoKSA9PiB7XHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcclxuICAgIH07XHJcblxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcclxuICB9XHJcblxyXG4gIG9uUGFzdGVJbkZpbHRlclJvd1NlYXJjaChldmVudDogQ2xpcGJvYXJkRXZlbnQsIGNvbDogYW55KSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5vbkZpbHRlckNoYW5nZShjb2wpO1xyXG4gICAgICB0aGlzLmFwcGx5RHJvcGRvd25GaWx0ZXIoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25GaWx0ZXJDaGFuZ2UoY29sOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZpbHRlclZhbHVlID0gY29sLmZpbHRlclZhbHVlPy50b0xvd2VyQ2FzZSgpIHx8ICcnO1xyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbkZvckZpbHRlciA9IGNvbDtcclxuICAgIGlmICghY29sPy5xdWVyeSkge1xyXG4gICAgICBjb2wucXVlcnkgPSB7XHJcbiAgICAgICAgZmlyc3RfY29uZGl0aW9uOiBjb2wudHlwZSA9PSAnZGF0ZScgPyAnZXF1YWwnIDogJ2NvbnRhaW4nLFxyXG4gICAgICAgIGZpcnN0X3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIHNlY29uZF9jb25kaXRpb246IG51bGwsXHJcbiAgICAgICAgc2Vjb25kX3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIGNvbmRpdGlvbjogbnVsbFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb2wucXVlcnkuZmlyc3RfdmFsdWUgPSBmaWx0ZXJWYWx1ZTtcclxuICAgIHRoaXMuZmlyc3RWYWx1ZSA9IGZpbHRlclZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLy8gR2V0IEJvZHkgSGVpZ2h0XHJcbiAgZ2V0IGJvZHlXcmFwcGVySGVpZ2h0KCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCByb3dzID0gdGhpcy5zaG93Q29sdW1uc0dyb3VwaW5nICYmIHRoaXMuc2hvd0ZpbHRlclJvdyA/IDMgOiAodGhpcy5zaG93Q29sdW1uc0dyb3VwaW5nIHx8IHRoaXMuc2hvd0ZpbHRlclJvdyA/IDIgOiAxKTtcclxuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuaGVhZGVyUm93SGVpZ2h0ICogcm93cyArICh0aGlzLmhhc1Njcm9sbCA/IDE3IDogMCk7XHJcbiAgICByZXR1cm4gYGNhbGMoMTAwJSAtICR7b2Zmc2V0fXB4KWA7XHJcbiAgfVxyXG5cclxuICAvLyBSb3cgSG92ZXIgTG9naWMgSGVyZVxyXG4gIGhvdmVyZWRSb3dJZDogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgb25Sb3dIb3Zlcihyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5ob3ZlcmVkUm93SWQgPSByb3cuX2lkIHx8IHJvdy5pZDtcclxuICB9XHJcblxyXG4gIG9uUm93TGVhdmUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmhvdmVyZWRSb3dJZCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5vcGVuSW5kZXggPSBudWxsO1xyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5oYXNQYXJlbnRXaXRoQ2xhc3ModGFyZ2V0LCBbXHJcbiAgICAgICAgJ3RocmVlLWRvdHMnLFxyXG4gICAgICAgICdmaWx0ZXItaWNvbi13cmFwcGVyJyxcclxuICAgICAgICAnY29sdW1uLW1lbnUnLFxyXG4gICAgICAgICdmaWx0ZXItbWVudScsXHJcbiAgICAgIF0pXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xyXG4gICAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbiAgICAgIHRoaXMuc2hvd0FjdGlvbnNEcm9wRG93biA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaW5zaWRlVG9wRmlsdGVyUm93ID0gdGFyZ2V0LmNsb3Nlc3QoJy5maWx0ZXItdGFncycpIHx8IHRhcmdldC5jbG9zZXN0KCcuYWRkLWZpbHRlci1idXR0b24tbWVudScpIHx8XHJcbiAgICAgIHRhcmdldC5jbG9zZXN0KCcudGFibGUtcmlnaHQtdG9wLWFjdGlvbnMnKSB8fCB0YXJnZXQuY2xvc2VzdCgnLnRhYmxlLWxheW91dCcpIHx8IHRhcmdldC5jbG9zZXN0KCcuZmlsdGVyLXJvdy1maWx0ZXItd3JhcHBlcicpO1xyXG4gICAgY29uc3QgaXNDbGlja2VkSW5zaWRlVGhyZWVEb3RzRmlsdGVyID0gdGFyZ2V0LmNsb3Nlc3QoJy50aHJlZS1kb3RzLWZpbHRlcicpIHx8IHRhcmdldC5jbG9zZXN0KCcuZmlsdGVyLW1lbnUtY29udGFpbmVyJyk7XHJcbiAgICBpZiAoIWlzQ2xpY2tlZEluc2lkZVRocmVlRG90c0ZpbHRlcikge1xyXG4gICAgICB0aGlzLmNsb3NlVGhyZWVEb3RzTWVudUZpbHRlcigpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpbnNpZGVUb3BGaWx0ZXJSb3cpIHtcclxuICAgICAgdGhpcy5jbG9zZUZpbHRlckRyb3Bkb3ducyhldmVudCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRhcmdldC5jbG9zZXN0KCcuc2V0LWRlZmF1bHQtcHJlc2V0JykpIHtcclxuICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNldC1kZWZhdWx0LXByZXNldCcpPy5jbGFzc0xpc3Q/LnJlbW92ZSgnc2hvdycpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGFyZ2V0LmNsb3Nlc3QoJy5mdWxsLXRleHQtYm94JykgJiYgIXRhcmdldC5jbG9zZXN0KCcuZGF0YS1ncmlkLWhlYWRlci13cmFwcGVyJykpIHtcclxuICAgICAgdGhpcy5jb2xsYXBzZUFsbEV4cGFuZGVkQ2VsbHMoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRhcmdldC5jbG9zZXN0KCcuZGF0YS1ncmlkLXRhYmxlLXdyYXBwZXInKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkS2V5cy5jbGVhcigpO1xyXG4gICAgICB0aGlzLmFjdGl2ZUNlbGwgPSAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBjbG9zZVRocmVlRG90c01lbnVGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG4gIGNsb3NlRmlsdGVyRHJvcGRvd25zKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gJyc7XHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYXNQYXJlbnRXaXRoQ2xhc3MoXHJcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudCxcclxuICAgIGNsYXNzTGlzdDogc3RyaW5nW11cclxuICApOiBib29sZWFuIHtcclxuICAgIGxldCBlbDogSFRNTEVsZW1lbnQgfCBudWxsID0gZWxlbWVudDtcclxuXHJcbiAgICB3aGlsZSAoZWwgIT09IG51bGwpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGVsLmNsYXNzTGlzdCAmJlxyXG4gICAgICAgIGNsYXNzTGlzdC5zb21lKChjbGFzc05hbWUpID0+IGVsIS5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgZWwgPSBlbC5wYXJlbnRFbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGlzTWVudWVIaWRkZW4gPSBmYWxzZTtcclxuICBvcGVuVGhyZWVEb3RzTWVudShldmVudDogTW91c2VFdmVudCwgY2hpbGQ6IGFueSwga2VlcE9yaWdpbmFsUG9zaXRpb24gPSBmYWxzZSkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5pc01lbnVlSGlkZGVuID0gdHJ1ZTtcclxuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy5kYXRhR3JpZENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGg7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IGNoaWxkO1xyXG4gICAgdGhpcy5hY3RpdmVGaWx0ZXJDZWxsID0gbnVsbDtcclxuICAgIGNvbnN0IHggPSBldmVudC5jbGllbnRYO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY29sdW1uLW1lbnUnKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgaWYgKGVsZW1lbnQpIHtcclxuICAgICAgICBpZiAoeCA+IChjb250YWluZXJXaWR0aCAvIDIpKSB7XHJcbiAgICAgICAgICBlbGVtZW50LnN0eWxlLmxlZnQgPSBgJHt4IC0gMjQwfXB4YDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZWxlbWVudCEuc3R5bGUubGVmdCA9IGAke3h9cHhgO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlzTWVudWVIaWRkZW4gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgLy8gQ29sdW1uIFRocmVlIERvdHMgQWN0aW9uc1xyXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICBzb3J0QXNjKGNvbDogYW55KSB7XHJcbiAgICBpZiAoIWNvbC5pc19zb3J0YWJsZSkgcmV0dXJuO1xyXG4gICAgY29sIS5vcmRlcl9ieSA9ICdhc2MnO1xyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIG9yZGVyOiAnYXNjJyxcclxuICAgICAgY29sdW1uOiBjb2xcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuc29ydGluZ09yZGVyT3B0aW9ucy5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHNvcnREZXNjKGNvbDogYW55KSB7XHJcbiAgICBpZiAoIWNvbC5pc19zb3J0YWJsZSkgcmV0dXJuO1xyXG4gICAgY29sIS5vcmRlcl9ieSA9ICdkZXNjJztcclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBvcmRlcjogJ2Rlc2MnLFxyXG4gICAgICBjb2x1bW46IGNvbFxyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5zb3J0aW5nT3JkZXJPcHRpb25zLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRTb3J0KGNvbDogYW55KSB7XHJcbiAgICB0aGlzLnNvcnRpbmdDb25maWcgPSB7IGZpZWxkOiAnJywgb3JkZXJfYnk6ICcnIH07XHJcbiAgICBjb25zdCBldmVudCA9IHsgZmllbGQ6IG51bGwsIG9yZGVyX2J5OiBudWxsIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuc29ydGluZ09yZGVyT3B0aW9ucy5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG5cclxuICBhc3luYyB1cGRhdGVDb2x1bW5QaW5JblNvdXJjZUJ5RmllbGQoXHJcbiAgICBjb2x1bW46IGFueSxcclxuICAgIHBpbm5lZDogJ2xlZnQnIHwgJ3JpZ2h0JyB8IG51bGwsXHJcbiAgICBpc05lc3RlZFRhYmxlOiBhbnkgPSBmYWxzZSxcclxuICAgIGNvbHVtbnM/OiBhbnlcclxuICApIHtcclxuICAgIGRlYnVnZ2VyXHJcbiAgICBpZiAoaXNOZXN0ZWRUYWJsZSkge1xyXG4gICAgICB0aGlzLnBpblVucGluQ29sdW0oY29sdW1uLCBwaW5uZWQsIGNvbHVtbnMpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB1cGRhdGUgPSAoY29sdW1uczogYW55W10pID0+IHtcclxuICAgICAgZm9yIChjb25zdCBjb2wgb2YgY29sdW1ucykge1xyXG4gICAgICAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgdXBkYXRlKGNvbC5jaGlsZHJlbik7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2wuZmllbGQgPT09IGNvbHVtbi5maWVsZCkge1xyXG4gICAgICAgICAgY29sLnBpbm5lZCA9IHBpbm5lZDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XHJcbiAgICB1cGRhdGUodGhpcy5jb2x1bW5zKTtcclxuICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICB9XHJcblxyXG4gIGF1dG9zaXplQ29sdW1uKGNvbHM6IGFueSB8IGFueVtdKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XHJcblxyXG4gICAgLy8gTm9ybWFsaXplIGlucHV0IHRvIGFuIGFycmF5XHJcbiAgICBjb25zdCBjb2x1bW5zVG9SZXNpemUgPSBBcnJheS5pc0FycmF5KGNvbHMpID8gY29scyA6IFtjb2xzXTtcclxuXHJcbiAgICAvLyBIZWxwZXI6IEZsYXR0ZW4gYWxsIHZpc2libGUgbGVhZiBjb2x1bW5zXHJcbiAgICBjb25zdCBnZXRWaXNpYmxlTGVhZkNvbHVtbnMgPSAoY29sdW1uczogYW55W10pOiBhbnlbXSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcclxuICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xyXG4gICAgICAgIGlmIChjb2x1bW4uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2x1bW4uY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICByZXN1bHQucHVzaCguLi5nZXRWaXNpYmxlTGVhZkNvbHVtbnMoY29sdW1uLmNoaWxkcmVuKSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4uaXNfdmlzaWJsZSkge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goY29sdW1uKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBnZXRWaXNpYmxlTGVhZkNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIGNvbnN0IHZpc2libGVDb3VudCA9IHZpc2libGVDb2x1bW5zLmxlbmd0aDtcclxuXHJcbiAgICBpZiAodmlzaWJsZUNvdW50ID09PSAwKSByZXR1cm47XHJcblxyXG4gICAgbGV0IGNvbnRhaW5lcldpZHRoID1cclxuICAgICAgdGhpcy5kYXRhR3JpZENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGggPz8gMDtcclxuICAgIGlmICh0aGlzLnNob3dTZXJpYWxOdW1iZXIpIGNvbnRhaW5lcldpZHRoIC09IDU1O1xyXG4gICAgaWYgKHRoaXMuc2hvd1NpZGVNZW51KSBjb250YWluZXJXaWR0aCAtPSAyOTtcclxuICAgIGlmICh0aGlzLmdyaWRUeXBlID09ICdBc3NldHMnIHx8IHRoaXMuZ3JpZFR5cGUgPT0gJ1Rhc2tzJykgY29udGFpbmVyV2lkdGggLT0gMzA7XHJcbiAgICBjb250YWluZXJXaWR0aCAtPSA1NTtcclxuICAgIGNvbnN0IGVxdWFsV2lkdGggPSBNYXRoLmZsb29yKGNvbnRhaW5lcldpZHRoIC8gdmlzaWJsZUNvdW50KTtcclxuXHJcbiAgICAvLyBSZXNpemUgZWFjaCBwYXNzZWQgY29sdW1uXHJcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zVG9SZXNpemUpIHtcclxuICAgICAgaWYgKGNvbCAmJiBjb2wuZmllbGQpIHtcclxuICAgICAgICBjb2wud2lkdGggPSBlcXVhbFdpZHRoO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhJblNvdXJjZUJ5RmllbGQoY29sLmZpZWxkLCBlcXVhbFdpZHRoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNlbmREYXRhID0ge1xyXG4gICAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXHJcbiAgICAgICAgbm9fb2ZfcmVjb3JkczogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2VTaXplLFxyXG4gICAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgICB9LCAxMDAwKTtcclxuICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgfVxyXG5cclxuICBnZXRHcm91cFdpZHRoKGdyb3VwOiBhbnkpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgZ3JvdXA/LmNoaWxkcmVuXHJcbiAgICAgICAgPy5maWx0ZXIoKGNvbDogYW55KSA9PiBjb2w/LmlzX3Zpc2libGUpXHJcbiAgICAgICAgPy5yZWR1Y2UoKGFjYzogbnVtYmVyLCBjb2w6IGFueSkgPT4gYWNjICsgKGNvbD8ud2lkdGggfHwgMCksIDApIHx8IDBcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhdXRvc2l6ZUFsbENvbHVtbnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XHJcblxyXG4gICAgY29uc3QgZ2V0VmlzaWJsZUxlYWZDb2x1bW5zID0gKGNvbHVtbnM6IGFueVtdKTogYW55W10gPT4ge1xyXG4gICAgICBjb25zdCByZXN1bHQ6IGFueVtdID0gW107XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgICAgaWYgKGNvbHVtbi5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGNvbHVtbi5jaGlsZHJlbikpIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLmdldFZpc2libGVMZWFmQ29sdW1ucyhjb2x1bW4uY2hpbGRyZW4pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi5pc192aXNpYmxlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goY29sdW1uKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID0gZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcbiAgICBjb25zdCB2aXNpYmxlQ291bnQgPSB2aXNpYmxlQ29sdW1ucy5sZW5ndGg7XHJcblxyXG4gICAgaWYgKHZpc2libGVDb3VudCA9PT0gMCkgcmV0dXJuO1xyXG5cclxuICAgIGxldCBjb250YWluZXJXaWR0aCA9XHJcbiAgICAgIHRoaXMuZGF0YUdyaWRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoID8/IDA7XHJcbiAgICBpZiAodGhpcy5zaG93U2VyaWFsTnVtYmVyKSBjb250YWluZXJXaWR0aCAtPSA1NTtcclxuICAgIGlmICh0aGlzLnNob3dTaWRlTWVudSkgY29udGFpbmVyV2lkdGggLT0gMjk7XHJcbiAgICBpZiAodGhpcy5ncmlkVHlwZSA9PSAnQXNzZXRzJyB8fCB0aGlzLmdyaWRUeXBlID09ICdUYXNrcycpIGNvbnRhaW5lcldpZHRoIC09IDMwO1xyXG4gICAgY29udGFpbmVyV2lkdGggLT0gNTU7XHJcbiAgICBjb25zdCBlcXVhbFdpZHRoID0gTWF0aC5tYXgoTWF0aC5mbG9vcihjb250YWluZXJXaWR0aCAvIHZpc2libGVDb3VudCksIDE1MCk7XHJcblxyXG4gICAgLy8gVXBkYXRlIHdpZHRocyBmb3IgYWxsIHZpc2libGUgY29sdW1uc1xyXG4gICAgdmlzaWJsZUNvbHVtbnMuZm9yRWFjaCgoY29sKSA9PiB7XHJcbiAgICAgIGNvbC53aWR0aCA9IGVxdWFsV2lkdGg7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhJblNvdXJjZUJ5RmllbGQoY29sLmZpZWxkLCBlcXVhbFdpZHRoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcclxuICAgIHRoaXMuaGFzU2Nyb2xsID0gdGhpcy5oYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcclxuICAgICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICAgIH0sIDEwMDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtYXJrQ29sdW1uQXNHcm91cGVkKGNvbHVtbnM6IGFueVtdLCBmaWVsZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zKSB7XHJcbiAgICAgIGlmIChjb2wuZmllbGQgPT09IGZpZWxkKSB7XHJcbiAgICAgICAgY29sLmlzUm93R3JvdXBlZCA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMubWFya0NvbHVtbkFzR3JvdXBlZChjb2wuY2hpbGRyZW4sIGZpZWxkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ3JvdXBCeShjb2w6IGFueSkge1xyXG4gICAgdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcclxuICAgIHRoaXMudHJhbnNsYXRlWSA9IDA7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XHJcbiAgICBpZiAoIWNvbCkgcmV0dXJuO1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIGlmIChjb2w/LmlzX2dyb3VwYWJsZSkge1xyXG4gICAgICB0aGlzLmdyb3VwZWRDb2x1bW5zLnB1c2goY29sKTtcclxuICAgICAgdGhpcy5tYXJrQ29sdW1uQXNHcm91cGVkKHRoaXMuY29sdW1ucywgY29sLmZpZWxkKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZ3JvdXBlZENvbHVtbnMubWFwKChpdGVtKSA9PiBpdGVtLmZpZWxkKTtcclxuICAgIHRoaXMuZGF0YVNldCA9IGF3YWl0IHRoaXMuZ3JvdXBEYXRhQXN5bmModGhpcy5vcmlnaW5hbERhdGFTZXQsIGZpZWxkcyk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3MoMCk7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAxMDApO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdyb3VwQm94UGFkZGluZyA9IHRoaXMuY29sdW1uc0dyb3VwZWRCb3g/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKVxyXG4gICAgfSwgMTApO1xyXG5cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdyb3VwRGF0YUFzeW5jKGRhdGE6IGFueVtdLCBncm91cEZpZWxkczogc3RyaW5nW10pOiBQcm9taXNlPGFueVtdPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZ3JvdXBEYXRhKGRhdGEsIGdyb3VwRmllbGRzKTtcclxuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICBjaG9vc2VDb2x1bW5zKCkge1xyXG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xyXG4gICAgdGhpcy5zaG93Q29sdW1uUGFuZWwgPSB0cnVlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRDb2x1bW5zKCkge1xyXG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xyXG5cclxuICAgIC8vIHRoaXMuY29sdW1ucyA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLm9yaWdpbmFsQ29sdW1ucyk7XHJcbiAgICAvLyBEZWVwIGNvcHkgbmVzdGVkIG9iamVjdHMgYnV0IGtlZXAgY2xhc3MgcmVmcyBzYWZlXHJcbiAgICB0aGlzLm9yaWdpbmFsQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5tYXAoY29sID0+ICh7XHJcbiAgICAgIC4uLmNvbCxcclxuICAgICAgLy8gRGVlcCBjb3B5IG5lc3RlZCBvYmplY3RzIGJ1dCBrZWVwIGNsYXNzIHJlZnMgc2FmZVxyXG4gICAgICBxdWVyeTogY29sLnF1ZXJ5ID8geyAuLi5jb2wucXVlcnkgfSA6IG51bGwsXHJcbiAgICAgIGNvbHVtbl9kcm9wZG93bl92YWx1ZTogY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZVxyXG4gICAgICAgID8gWy4uLmNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWVdXHJcbiAgICAgICAgOiBbXSxcclxuICAgIH0pKTtcclxuXHJcbiAgICB0aGlzLlNldENvbHVtbnNEZWZhdWx0V2lkdGgoKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xyXG4gICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJGaWx0ZXIoY29sOiBhbnkpIHtcclxuICAgIGNvbC5maXJzdFZhbHVlID0gJyc7XHJcbiAgICBjb2wuc2Vjb25kVmFsdWUgPSAnJztcclxuICAgIGNvbC5maXJzdENvbmRpdGlvbiA9ICdjb250YWluJztcclxuICAgIGNvbC5zZWNvbmRDb25kaXRpb24gPSBudWxsO1xyXG4gICAgY29sLmxvZ2ljID0gJ0FORCc7XHJcbiAgICBjb2wuc2VsZWN0QWxsID0gZmFsc2U7XHJcbiAgICBjb2wuc2VsZWN0ZWRPcHRpb25zID0ge307XHJcbiAgICBjb2wuc2VhcmNoVmFsdWUgPSAnJztcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgYXBwbHlGaWx0ZXIoY29sOiBhbnkpIHtcclxuICAgIHRoaXMuZmlsdGVyQ29sdW1uc0xpc3QucHVzaChjb2wpO1xyXG4gIH1cclxuXHJcbiAgLy8gUm93cyBTZWxlY3Rpb24gTG9naWMgR29lcyBIZXJlXHJcblxyXG4gIHNlbGVjdGVkUm93czogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBub3JtYWxpemVkIElEIGZyb20gcm93LlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0Um93SWQocm93OiBhbnkpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHJvdy5pZCA/PyByb3cuX2lkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG9nZ2xlIGEgc2luZ2xlIHJvdyBzZWxlY3Rpb24uXHJcbiAgICovXHJcbiAgdG9nZ2xlUm93U2VsZWN0aW9uKHJvdzogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBpZCA9IHRoaXMuZ2V0Um93SWQocm93KTtcclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFJvd3MuaGFzKGlkKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5kZWxldGUoaWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MuYWRkKGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpZHMgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzKTtcclxuXHJcbiAgICB0aGlzLnNhdmVTZWxlY3Rpb24oaWRzLCB0aGlzLnRhYmxlVHlwZSk7XHJcblxyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBsaXN0aW5nVHlwZTogdGhpcy5saXN0aW5nVHlwZSxcclxuICAgICAgICBvYmo6IGlkc1xyXG4gICAgICB9LFxyXG4gICAgICBldmVudFR5cGU6IFwib25TZWxlY3RSb3dcIixcclxuICAgIH07XHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgdG9nZ2xlU2VsZWN0QWxsKGRhdGE6IGFueVtdKTogdm9pZCB7XHJcbiAgICBjb25zdCBhbGxJZHMgPSB0aGlzLm9yaWdpbmFsRGF0YVNldC5tYXAoKHJvdykgPT4gdGhpcy5nZXRSb3dJZChyb3cpKTtcclxuICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gYWxsSWRzLmV2ZXJ5KChpZCkgPT4gdGhpcy5zZWxlY3RlZFJvd3MuaGFzKGlkKSk7XHJcblxyXG4gICAgaWYgKGFsbFNlbGVjdGVkKSB7XHJcbiAgICAgIGFsbElkcy5mb3JFYWNoKChpZCkgPT4gdGhpcy5zZWxlY3RlZFJvd3MuZGVsZXRlKGlkKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhbGxJZHMuZm9yRWFjaCgoaWQpID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmFkZChpZCkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgY29uc3QgaWRzID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkUm93cyk7XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxyXG4gICAgICAgIG9iajogaWRzXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogXCJvblNlbGVjdFJvd1wiLFxyXG4gICAgfVxyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudCk7XHJcbiAgICB0aGlzLnNhdmVTZWxlY3Rpb24oaWRzLCB0aGlzLnRhYmxlVHlwZSk7XHJcbiAgfVxyXG5cclxuICBpc1Jvd1NlbGVjdGVkKHJvdzogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJvd3MuaGFzKHRoaXMuZ2V0Um93SWQocm93KSk7XHJcbiAgfVxyXG5cclxuICBpc0FsbFNlbGVjdGVkKGRhdGE6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKGRhdGE/LmV2ZXJ5KChyb3cpID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyh0aGlzLmdldFJvd0lkKHJvdykpKSAmJiAodGhpcy5kYXRhU2V0Py5sZW5ndGggPiAwKSk7XHJcbiAgfVxyXG5cclxuICBpc0luZGV0ZXJtaW5hdGVTdGF0ZShkYXRhOiBhbnlbXSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFkYXRhIHx8IGRhdGEubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCBzZWxlY3RlZENvdW50ID0gZGF0YS5maWx0ZXIocm93ID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyh0aGlzLmdldFJvd0lkKHJvdykpKS5sZW5ndGg7XHJcbiAgICByZXR1cm4gc2VsZWN0ZWRDb3VudCA+IDAgJiYgc2VsZWN0ZWRDb3VudCA8IGRhdGEubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgLy8gU2lkZSBNZW51IFdvcmtpbmcgR29lcyBIZXJlXHJcbiAgdG9nZ2xlU2lkZU1lbnUoY2xpY2tlZE9uOiAnY29scycgfCAnZmlsdHJzJykge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9PSBjbGlja2VkT24pIHtcclxuICAgICAgdGhpcy5jdXJyZW50T3BlbmVkU2lkZU1lbnVlID0gY2xpY2tlZE9uO1xyXG4gICAgICB0aGlzLnNpZGVNZW51VmlzaWJsZSA9ICF0aGlzLnNpZGVNZW51VmlzaWJsZTtcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIHRoaXMuc2lkZU1lbnVWaXNpYmxlICYmXHJcbiAgICAgIGNsaWNrZWRPbiAhPSB0aGlzLmN1cnJlbnRPcGVuZWRTaWRlTWVudWVcclxuICAgICkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPSBjbGlja2VkT247XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9IGNsaWNrZWRPbjtcclxuICAgICAgdGhpcy5zaWRlTWVudVZpc2libGUgPSAhdGhpcy5zaWRlTWVudVZpc2libGU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmhhc1Njcm9sbCA9IHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlR3JvdXBWaXNpYmlsaXR5KGNvbDogYW55KSB7XHJcbiAgICBjb25zdCBhbGxWaXNpYmxlID0gY29sLmNoaWxkcmVuLmV2ZXJ5KChjaGlsZDogYW55KSA9PiBjaGlsZC5pc192aXNpYmxlKTtcclxuICAgIGNvbC5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZDogYW55KSA9PiAoY2hpbGQuaXNfdmlzaWJsZSA9ICFhbGxWaXNpYmxlKSk7XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICAgIHRoaXMuU2V0Q29sdW1uc0RlZmF1bHRXaWR0aCgpO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAxMCk7XHJcbiAgfVxyXG5cclxuICBpc0NvbHVtblZpc2libGUoY29sdW1uczogYW55KSB7XHJcbiAgICBpZiAoY29sdW1ucz8uY2hpbGRyZW4pIHtcclxuICAgICAgcmV0dXJuIGNvbHVtbnMuY2hpbGRyZW4uZXZlcnkoKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5pc192aXNpYmxlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY29sdW1ucz8uaXNfdmlzaWJsZTtcclxuICB9XHJcblxyXG4gIGFsbENvbHVtbnNTZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGZsYXR0ZW4gPSB0aGlzLmZsYXR0ZW5Db2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcbiAgICByZXR1cm4gZmxhdHRlbi5ldmVyeSgoY29sKSA9PiBjb2wuaXNfdmlzaWJsZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBmaW5kQ29sdW1uQnlGaWVsZChmaWVsZDogc3RyaW5nLCBjb2xzOiBhbnlbXSk6IGFueSB8IG51bGwge1xyXG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29scykge1xyXG4gICAgICBpZiAoY29sLmZpZWxkID09PSBmaWVsZCkge1xyXG4gICAgICAgIHJldHVybiBjb2w7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGNvbC5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbikpIHtcclxuICAgICAgICBjb25zdCBmb3VuZCA9IHRoaXMuZmluZENvbHVtbkJ5RmllbGQoZmllbGQsIGNvbC5jaGlsZHJlbik7XHJcbiAgICAgICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBhc3luYyB0b2dnbGVDb2x1bW5WaXNpYmlsaXR5KGNvbHVtbjogYW55LCBpc1Zpc2libGU6IGJvb2xlYW4pIHtcclxuICAgIGlmKGlzVmlzaWJsZSl7XHJcbiAgICAgIGlmKHRoaXMudmlzaWJsZUNvbHVtbnMoKT8ubGVuZ3RoIDw9IDIpe1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgY29sID0gdGhpcy5maW5kQ29sdW1uQnlGaWVsZChjb2x1bW4uZmllbGQsIHRoaXMuY29sdW1ucyk7XHJcbiAgICBpZiAoY29sKSB7XHJcbiAgICAgIGNvbC5pc192aXNpYmxlID0gaXNWaXNpYmxlO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSB7XHJcbiAgICAgIHRoaXMuc2F2ZVByZXNldCgnbW91c2VVcCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHRvZ2dsZUFsbENvbHVtbnNWaXNpYmlsaXR5KCk6IHZvaWQge1xyXG4gIGNvbnN0IGZsYXR0ZW4gPSB0aGlzLmZsYXR0ZW5Db2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcbiAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBmbGF0dGVuLmZpbHRlcigoYzogYW55KSA9PiBjLmlzX3Zpc2libGUpO1xyXG4gIGNvbnN0IGFsbFNlbGVjdGVkID0gdmlzaWJsZUNvbHVtbnMubGVuZ3RoID09PSBmbGF0dGVuLmxlbmd0aDtcclxuICBpZiAoYWxsU2VsZWN0ZWQpIHtcclxuICAgIGZsYXR0ZW4uZm9yRWFjaCgoY29sOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgY29sLmlzX3Zpc2libGUgPSBpbmRleCA8IDI7XHJcbiAgICB9KTtcclxuICB9IGVsc2Uge1xyXG4gICAgZmxhdHRlbi5mb3JFYWNoKChjb2w6IGFueSkgPT4gKGNvbC5pc192aXNpYmxlID0gdHJ1ZSkpO1xyXG4gIH1cclxuICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMTAwKTtcclxuICB9LCAxMDApO1xyXG59XHJcblxyXG52aXNpYmxlQ29sdW1ucygpe1xyXG4gIGNvbnN0IGZsYXR0ZW4gPSB0aGlzLmZsYXR0ZW5Db2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcbiAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBmbGF0dGVuLmZpbHRlcigoYzogYW55KSA9PiBjLmlzX3Zpc2libGUpO1xyXG4gIHJldHVybiB2aXNpYmxlQ29sdW1ucztcclxufVxyXG5cclxuICBmbGF0dGVuQ29sdW1ucyhjb2xzOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIHJldHVybiBjb2xzLnJlZHVjZSgoYWNjOiBhbnlbXSwgY29sOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGNvbD8uY2hpbGRyZW4gJiYgY29sLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgIC8vIHJlY3Vyc2l2ZWx5IGZsYXR0ZW4gY2hpbGRyZW5cclxuICAgICAgICByZXR1cm4gYWNjLmNvbmNhdCh0aGlzLmZsYXR0ZW5Db2x1bW5zKGNvbC5jaGlsZHJlbikpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGxlYWYgY29sdW1uXHJcbiAgICAgICAgcmV0dXJuIGFjYy5jb25jYXQoY29sKTtcclxuICAgICAgfVxyXG4gICAgfSwgW10pO1xyXG4gIH1cclxuXHJcblxyXG4gIGZpbHRlcmVkQ29sdW1ucyhjb2xzOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIGNvbnN0IHNlYXJjaCA9IHRoaXMuY29sdW1uU2VhcmNoLnRvTG93ZXJDYXNlKCk7XHJcbiAgICByZXR1cm4gY29sc1xyXG4gICAgICAubWFwKChjb2wpID0+IHtcclxuICAgICAgICBpZiAoY29sLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICBjb25zdCBmaWx0ZXJlZENoaWxkcmVuID0gdGhpcy5maWx0ZXJlZENvbHVtbnMoY29sLmNoaWxkcmVuKTtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgY29sLmhlYWRlci50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaCkgfHxcclxuICAgICAgICAgICAgZmlsdGVyZWRDaGlsZHJlbi5sZW5ndGhcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICByZXR1cm4geyAuLi5jb2wsIGNoaWxkcmVuOiBmaWx0ZXJlZENoaWxkcmVuIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIGNvbC5oZWFkZXIudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gpID8gY29sIDogbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5maWx0ZXIoQm9vbGVhbik7XHJcbiAgfVxyXG5cclxuICBnZXQgYWNjb3JkaW9uU3RhdGUoKTogJ2FsbCcgfCAnbm9uZScgfCAnc29tZScge1xyXG4gICAgY29uc3QgZ3JvdXBzID0gdGhpcy5nZXRBbGxHcm91cENvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIGNvbnN0IGV4cGFuZGVkQ291bnQgPSBncm91cHMuZmlsdGVyKChjb2wpID0+IGNvbC5leHBhbmRlZCkubGVuZ3RoO1xyXG5cclxuICAgIGlmIChleHBhbmRlZENvdW50ID09PSAwKSByZXR1cm4gJ25vbmUnO1xyXG4gICAgaWYgKGV4cGFuZGVkQ291bnQgPT09IGdyb3Vwcy5sZW5ndGgpIHJldHVybiAnYWxsJztcclxuICAgIHJldHVybiAnc29tZSc7XHJcbiAgfVxyXG5cclxuICBnZXQgZmlsdGVyQWNjb3JkaW9uU3RhdGUoKTogJ2FsbCcgfCAnbm9uZScgfCAnc29tZScge1xyXG4gICAgY29uc3QgZ3JvdXBzID0gdGhpcy5nZXRBbGxHcm91cENvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIGNvbnN0IGV4cGFuZGVkQ291bnQgPSBncm91cHMuZmlsdGVyKChjb2wpID0+IGNvbC5leHBhbmRlZEZpbHRlcikubGVuZ3RoO1xyXG5cclxuICAgIGlmIChleHBhbmRlZENvdW50ID09PSAwKSByZXR1cm4gJ25vbmUnO1xyXG4gICAgaWYgKGV4cGFuZGVkQ291bnQgPT09IGdyb3Vwcy5sZW5ndGgpIHJldHVybiAnYWxsJztcclxuICAgIHJldHVybiAnc29tZSc7XHJcbiAgfVxyXG5cclxuICAvLyBSZWN1cnNpdmVseSBjb2xsZWN0IGFsbCBncm91cCBjb2x1bW5zXHJcbiAgcHJpdmF0ZSBnZXRBbGxHcm91cENvbHVtbnMoY29sczogYW55W10pOiBhbnlbXSB7XHJcbiAgICBsZXQgZ3JvdXBzOiBhbnlbXSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29scykge1xyXG4gICAgICBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICBncm91cHMucHVzaChjb2wpO1xyXG4gICAgICAgIGdyb3VwcyA9IGdyb3Vwcy5jb25jYXQodGhpcy5nZXRBbGxHcm91cENvbHVtbnMoY29sLmNoaWxkcmVuKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBncm91cHM7XHJcbiAgfVxyXG5cclxuICAvLyBUb2dnbGUgYmFzZWQgb24gY3VycmVudCBzdGF0ZVxyXG4gIHRvZ2dsZUFsbEFjY29yZGlvbnMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZXh0U3RhdGUgPSB0aGlzLmFjY29yZGlvblN0YXRlID09PSAnYWxsJyA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIHRoaXMuc2V0QWNjb3JkaW9uU3RhdGUodGhpcy5jb2x1bW5zLCBuZXh0U3RhdGUpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQWxsRmlsdGVyQWNjb3JkaW9ucygpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5leHRTdGF0ZSA9IHRoaXMuZmlsdGVyQWNjb3JkaW9uU3RhdGUgPT09ICdhbGwnID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgdGhpcy5zZXRGaWx0ZXJBY2NvcmRpb25TdGF0ZSh0aGlzLmNvbHVtbnMsIG5leHRTdGF0ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEFjY29yZGlvblN0YXRlKGNvbHM6IGFueVtdLCBzdGF0ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgY29sIG9mIGNvbHMpIHtcclxuICAgICAgaWYgKGNvbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgY29sLmV4cGFuZGVkID0gc3RhdGU7XHJcbiAgICAgICAgdGhpcy5zZXRBY2NvcmRpb25TdGF0ZShjb2wuY2hpbGRyZW4sIHN0YXRlKTsgLy8gUmVjdXJzaXZlbHkgaGFuZGxlIG5lc3RlZFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgc2V0RmlsdGVyQWNjb3JkaW9uU3RhdGUoY29sczogYW55W10sIHN0YXRlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBjb2wgb2YgY29scykge1xyXG4gICAgICBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICBjb2wuZXhwYW5kZWRGaWx0ZXIgPSBzdGF0ZTtcclxuICAgICAgICB0aGlzLnNldEZpbHRlckFjY29yZGlvblN0YXRlKGNvbC5jaGlsZHJlbiwgc3RhdGUpOyAvLyBSZWN1cnNpdmVseSBoYW5kbGUgbmVzdGVkXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dDb2x1bW5QYW5lbCA9IGZhbHNlO1xyXG5cclxuICBjbG9zZU1vZGFsQ29sdW1uUGFuZWwoKSB7XHJcbiAgICB0aGlzLnNob3dDb2x1bW5QYW5lbCA9IGZhbHNlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKVxyXG4gIG9uRXNjYXBlKGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5jbG9zZU1vZGFsQ29sdW1uUGFuZWwoKTtcclxuICB9XHJcblxyXG4gIC8vIENoZWNrIElmICBBbnkgY29sdW1uIGhhdmUgcmlnaHQgcGlubmVkXHJcbiAgZ2V0IGhhc1JpZ2h0UGlubmVkQ29sdW1ucygpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5nZXRoYXNSaWdodFBpbm5lZENvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICB9XHJcblxyXG4gIGdldCBoYXNMZWZ0UGlubmVkQ29sdW1ucygpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5nZXRoYXNMZWZ0UGlubmVkQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRhdGFTZXRMZW5ndGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZ2V0RXhwYW5kZWRSb3dDb3VudCh0aGlzLmRhdGFTZXQpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBvblJlc2l6ZShldmVudDogVUlFdmVudCkge1xyXG4gICAgLy8gdGhpcy5hdXRvc2l6ZUFsbENvbHVtbnMoKTtcclxuICAgIGNvbnN0IGggPSB0aGlzLm1haW5TY3JvbGw/Lm5hdGl2ZUVsZW1lbnQ/LmNsaWVudEhlaWdodCA/PyAwO1xyXG4gICAgdGhpcy52aWV3cG9ydFJvd3MgPSBNYXRoLm1heCgxLCBNYXRoLmNlaWwoaCAvIHRoaXMucm93SGVpZ2h0KSk7XHJcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKHRoaXMubWFpblNjcm9sbD8ubmF0aXZlRWxlbWVudD8uc2Nyb2xsVG9wKTtcclxuICAgIHRoaXMuaGFzU2Nyb2xsID0gdGhpcy5oYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHsgfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHJlZnJlc2hIZWFkZXJzKCkge1xyXG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoYXN5bmMgKCkgPT4ge1xyXG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgMCkpO1xyXG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xyXG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG5cclxuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldCBoYXNBbnlWaXNpYmxlQ29sdW1uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU2V2aWNlLmdldGhhc1Zpc2libGVDb2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcbiAgfVxyXG5cclxuICBnZXQgaGFzQW55SW5WaXNpYmxlQ29sdW1uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU2V2aWNlLmdldGhhc0luVmlzaWJsZUNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICB9XHJcblxyXG4gIGdldCBjb2x1bW5zQ291bnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZ2V0VG90YWxDb2x1bW5zTGVuZ3RoKHRoaXMuY29sdW1ucyk7XHJcbiAgfVxyXG5cclxuICB0YWJsZUhlYWRlckFuZEJvZHlIZWlnaHQoKSB7XHJcbiAgICByZXR1cm4gYGNhbGMoMTAwJSAtICR7dGhpcy5mb290ZXJSb3dIZWlnaHR9KWA7XHJcbiAgfVxyXG5cclxuICBkcmFnZ2luZ0luR3JvdXBBcmVhID0gZmFsc2U7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NlbnRlclNjcm9sbCcpIGNlbnRlclNjcm9sbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIHZpc2libGVSb3dDb3VudCA9IDI1O1xyXG4gIHN0YXJ0SW5kZXggPSAwO1xyXG4gIHZpc2libGVSb3dzOiBhbnlbXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIGZsYXR0ZW5Hcm91cGVkUm93cyhcclxuICAgIHJvd3M6IGFueVtdID0gW10sXHJcbiAgICBsZXZlbCA9IDAsXHJcbiAgICByZXN1bHQ6IGFueVtdID0gW11cclxuICApOiBhbnlbXSB7XHJcbiAgICBmb3IgKGNvbnN0IHJvdyBvZiByb3dzKSB7XHJcbiAgICAgIHJlc3VsdC5wdXNoKHsgLi4ucm93LCBfX2RlcHRoOiBsZXZlbCB9KTtcclxuICAgICAgaWYgKHJvdy5pc0dyb3VwICYmIHJvdy5pc0V4cGFuZCAmJiByb3cuY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuZmxhdHRlbkdyb3VwZWRSb3dzKHJvdy5jaGlsZHJlbiwgbGV2ZWwgKyAxLCBbXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuYXNzaWduVmlydHVhbEluZGV4ZXModGhpcy52aXNpYmxlUm93cyk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgYXNzaWduVmlydHVhbEluZGV4ZXMoZGF0YTogYW55W10pOiBhbnlbXSB7XHJcbiAgICBsZXQgY3VycmVudEluZGV4ID0gMTtcclxuICAgIGNvbnN0IHdhbGsgPSAoaXRlbXM6IGFueVtdKTogdm9pZCA9PiB7XHJcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xyXG4gICAgICAgIGl0ZW0uX192aXJ0dWFsSW5kZXggPSBjdXJyZW50SW5kZXgrKztcclxuICAgICAgICBpZiAoaXRlbT8uaXNHcm91cCkge1xyXG4gICAgICAgICAgY29uc3QgZ3JvdXAgPSBpdGVtO1xyXG4gICAgICAgICAgaWYgKGdyb3VwLmlzRXhwYW5kICYmIEFycmF5LmlzQXJyYXkoZ3JvdXAuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgIHdhbGsoZ3JvdXAuY2hpbGRyZW4pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHdhbGsoZGF0YSk7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnVGhpcyBkYXRhc2V0OiAnLCB0aGlzLnZpc2libGVSb3dzKVxyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG5cclxuXHJcbiAgdXBkYXRlVmlzaWJsZVJvd3Moc2Nyb2xsVG9wOiBudW1iZXIpIHtcclxuXHJcbiAgICBpZiAodGhpcy5ncm91cGVkQ29sdW1ucz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMudmlzaWJsZVJvd3MgPSB0aGlzLmRhdGFTZXQ7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZsYXREYXRhID0gdGhpcy5mbGF0dGVuR3JvdXBlZFJvd3ModGhpcy5kYXRhU2V0KTtcclxuXHJcbiAgICBpZiAodGhpcy5kYXRhU2V0Py5sZW5ndGggPD0gMTUpIHtcclxuICAgICAgdGhpcy52aXNpYmxlUm93cyA9IGZsYXREYXRhO1xyXG4gICAgICB0aGlzLmZpcnN0SW5kZXggPSAwO1xyXG4gICAgICB0aGlzLnN0YXJ0SW5kZXggPSAwO1xyXG4gICAgICB0aGlzLnJlbmRlclN0YXJ0ID0gMDtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB0b3RhbCA9IGZsYXREYXRhLmxlbmd0aDtcclxuICAgIGNvbnN0IG1heEZpcnN0ID0gTWF0aC5tYXgoMCwgdG90YWwgLSB0aGlzLnZpZXdwb3J0Um93cyk7XHJcbiAgICBjb25zdCBmaXJzdCA9IE1hdGgubWluKE1hdGguZmxvb3Ioc2Nyb2xsVG9wIC8gdGhpcy5yb3dIZWlnaHQpLCBtYXhGaXJzdCk7XHJcbiAgICBjb25zdCBzdGFydCA9IE1hdGgubWF4KDAsIGZpcnN0KTtcclxuICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKHRvdGFsLCBmaXJzdCArIHRoaXMudmlld3BvcnRSb3dzKTtcclxuXHJcbiAgICB0aGlzLmZpcnN0SW5kZXggPSBmaXJzdDtcclxuICAgIHRoaXMuc3RhcnRJbmRleCA9IGZpcnN0O1xyXG4gICAgdGhpcy5yZW5kZXJTdGFydCA9IHN0YXJ0O1xyXG4gICAgdGhpcy52aXNpYmxlUm93cyA9IGZsYXREYXRhLnNsaWNlKHN0YXJ0LCBlbmQpO1xyXG4gICAgdGhpcy5hc3NpZ25WaXJ0dWFsSW5kZXhlcyh0aGlzLnZpc2libGVSb3dzKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG5cclxuICB0cmFja0J5UmVuZGVyZWRJbmRleCA9IChpOiBudW1iZXIsIF9yb3c6IGFueSkgPT4gdGhpcy5yZW5kZXJTdGFydCArIGk7XHJcblxyXG4gIHByaXZhdGUgaXNTeW5jaW5nRnJvbU1haW4gPSBmYWxzZTtcclxuICBwcml2YXRlIGlzU3luY2luZ0Zyb21GYWtlID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBtYWluU2Nyb2xsUmFmOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgdHJhY2tCeUlkKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xyXG4gICAgcmV0dXJuIGl0ZW0uaWQgfHwgaXRlbS5faWQ7XHJcbiAgfVxyXG5cclxuICBmbGF0dGVuZWREYXRhOiBhbnlbXSA9IFtdO1xyXG5cclxuICB1cGRhdGVGbGF0dGVuZWREYXRhKCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZmxhdHRlbmVkRGF0YSA9IHRoaXMuZmxhdHRlbkdyb3VwZWRSb3dzKHRoaXMuZGF0YVNldCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sIDEwKTtcclxuICB9XHJcblxyXG4gIC8vIHJlcXVlc3RBbmltYXRpb25GcmFtZSBJRHNcclxuICBwcml2YXRlIGZha2VTY3JvbGxSYWY6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgLy8gb25NYWluU2Nyb2xsKGV2ZW50OiBFdmVudCkge1xyXG4gIC8vICAgdGhpcy5leHBhbmRlZENlbGxzLmNsZWFyKCk7XHJcbiAgLy8gICBjb25zdCBzY3JvbGxUb3AgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxUb3A7XHJcbiAgLy8gICAgIGlmICh0aGlzLmdyb3VwZWRDb2x1bW5zPy5sZW5ndGggPiAwKSB7XHJcbiAgLy8gICAgICAgdGhpcy5zdGFydEluZGV4ID0gMDtcclxuICAvLyAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgLy8gICAgICAgcmV0dXJuO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIGNvbnN0IG92ZXJzY2FuID0gdGhpcy5vdmVyc2NhbiAqIDI7XHJcbiAgLy8gICAgIHRoaXMuc3RhcnRJbmRleCA9IE1hdGguZmxvb3Ioc2Nyb2xsVG9wIC8gdGhpcy5yb3dIZWlnaHQpO1xyXG4gIC8vICAgICBjb25zdCBzdGFydCA9IE1hdGgubWF4KDAsIHRoaXMuc3RhcnRJbmRleCAtIG92ZXJzY2FuKTtcclxuICAvLyAgICAgY29uc3QgZW5kID0gTWF0aC5taW4odGhpcy5mbGF0dGVuZWREYXRhLmxlbmd0aCwgdGhpcy5zdGFydEluZGV4ICsgdGhpcy52aWV3cG9ydFJvd3MgKyBvdmVyc2Nhbik7XHJcbiAgLy8gICAgIHRoaXMudmlzaWJsZVJvd3MgPSB0aGlzLmZsYXR0ZW5lZERhdGEuc2xpY2Uoc3RhcnQsIGVuZCk7XHJcbiAgLy8gICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyB9XHJcbiAgdHJhbnNsYXRlWSA9IDA7XHJcblxyXG4gIGxhc3RTY3JvbGxUb3AgPSAwO1xyXG4gIHBlbmRpbmdBbmltYXRpb25GcmFtZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIG9uTWFpblNjcm9sbChldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IHNjcm9sbFRvcCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbFRvcDtcclxuICAgIGlmIChNYXRoLmFicyhzY3JvbGxUb3AgLSB0aGlzLmxhc3RTY3JvbGxUb3ApIDwgKDEwKSkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMucGVuZGluZ0FuaW1hdGlvbkZyYW1lKSBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnBlbmRpbmdBbmltYXRpb25GcmFtZSk7XHJcbiAgICBpZiAodGhpcy5ncm91cGVkQ29sdW1ucz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnN0YXJ0SW5kZXggPSAwO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMucGVuZGluZ0FuaW1hdGlvbkZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgY29uc3Qgc2Nyb2xsaW5nRG93biA9IHNjcm9sbFRvcCA+IHRoaXMubGFzdFNjcm9sbFRvcDtcclxuICAgICAgdGhpcy5sYXN0U2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG5cclxuICAgICAgY29uc3Qgb3ZlcnNjYW4gPSA1O1xyXG4gICAgICBjb25zdCBuZXdTdGFydEluZGV4ID0gTWF0aC5mbG9vcihzY3JvbGxUb3AgLyB0aGlzLnJvd0hlaWdodCk7XHJcbiAgICAgIGNvbnN0IGR5bmFtaWNPdmVyc2NhbiA9IHNjcm9sbGluZ0Rvd24gPyBvdmVyc2NhbiA6IG92ZXJzY2FuO1xyXG5cclxuICAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heCgwLCBuZXdTdGFydEluZGV4IC0gZHluYW1pY092ZXJzY2FuKTtcclxuICAgICAgY29uc3QgZW5kID0gTWF0aC5taW4oXHJcbiAgICAgICAgdGhpcy5mbGF0dGVuZWREYXRhLmxlbmd0aCxcclxuICAgICAgICBuZXdTdGFydEluZGV4ICsgdGhpcy52aWV3cG9ydFJvd3MgKyBkeW5hbWljT3ZlcnNjYW5cclxuICAgICAgKTtcclxuICAgICAgdGhpcy50cmFuc2xhdGVZID0gc3RhcnQgKiB0aGlzLnJvd0hlaWdodDtcclxuICAgICAgaWYgKHRoaXMuc3RhcnRJbmRleCAhPT0gc3RhcnQgfHwgdGhpcy52aXNpYmxlUm93cy5sZW5ndGggIT09IGVuZCAtIHN0YXJ0KSB7XHJcbiAgICAgICAgdGhpcy5zdGFydEluZGV4ID0gc3RhcnQ7XHJcbiAgICAgICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuZGF0YVNldC5zbGljZShzdGFydCwgZW5kKTtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5wZW5kaW5nQW5pbWF0aW9uRnJhbWUgPSBudWxsO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gb25NYWluU2Nyb2xsKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5leHBhbmRlZENlbGxzLmNsZWFyKCk7XHJcbiAgLy8gICBpZiAodGhpcy5pc1N5bmNpbmdGcm9tRmFrZSkge1xyXG4gIC8vICAgICB0aGlzLmlzU3luY2luZ0Zyb21GYWtlID0gZmFsc2U7XHJcbiAgLy8gICAgIHJldHVybjtcclxuICAvLyAgIH1cclxuICAvLyAgIGNvbnN0IHNjcm9sbFRvcCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbFRvcDtcclxuICAvLyAgIGlmIChNYXRoLmFicyhzY3JvbGxUb3AgLSB0aGlzLmxhc3RTY3JvbGxUb3ApIDwgdGhpcy5yb3dIZWlnaHQgLyAyKSByZXR1cm47XHJcbiAgLy8gICB0aGlzLmxhc3RTY3JvbGxUb3AgPSBzY3JvbGxUb3A7XHJcblxyXG4gIC8vICAgaWYgKHRoaXMuZmFrZVNjcm9sbFJhZikgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5mYWtlU2Nyb2xsUmFmKTtcclxuXHJcbiAgLy8gICB0aGlzLmZha2VTY3JvbGxSYWYgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gIC8vICAgICBpZiAodGhpcy5ncm91cGVkQ29sdW1ucz8ubGVuZ3RoID4gMCkge1xyXG4gIC8vICAgICAgIHRoaXMuc3RhcnRJbmRleCA9IDA7XHJcbiAgLy8gICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIC8vICAgICAgIHJldHVybjtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgICBjb25zdCBmbGF0RGF0YSA9IHRoaXMuZmxhdHRlbkdyb3VwZWRSb3dzKHRoaXMuZGF0YVNldCk7XHJcbiAgLy8gICAgIGNvbnN0IHRvdGFsUm93cyA9IGZsYXREYXRhLmxlbmd0aDtcclxuICAvLyAgICAgY29uc3QgbmV3U3RhcnRJbmRleCA9IE1hdGguZmxvb3Ioc2Nyb2xsVG9wIC8gdGhpcy5yb3dIZWlnaHQpO1xyXG4gIC8vICAgICBjb25zdCBzdGFydCA9IE1hdGgubWF4KDAsIG5ld1N0YXJ0SW5kZXggLSAodGhpcy5vdmVyc2NhbiAqIDIpKTtcclxuICAvLyAgICAgY29uc3QgZW5kID0gTWF0aC5taW4odG90YWxSb3dzLCBuZXdTdGFydEluZGV4ICsgdGhpcy52aWV3cG9ydFJvd3MgKyAodGhpcy5vdmVyc2NhbiAqIDIpKTtcclxuXHJcbiAgLy8gICAgIHRoaXMudHJhbnNsYXRlWSA9IHN0YXJ0ICogdGhpcy5yb3dIZWlnaHQ7XHJcbiAgLy8gICAgIHRoaXMuc3RhcnRJbmRleCA9IHN0YXJ0O1xyXG4gIC8vICAgICB0aGlzLnZpc2libGVSb3dzID0gZmxhdERhdGEuc2xpY2Uoc3RhcnQsIGVuZCk7XHJcbiAgLy8gICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcblxyXG4gIGdldCBpc1Njcm9sbGJhclZpc2libGUoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMubWFpblNjcm9sbCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgZWwgPSB0aGlzLm1haW5TY3JvbGwubmF0aXZlRWxlbWVudDtcclxuICAgIHJldHVybiBlbC5zY3JvbGxIZWlnaHQgPiBlbC5jbGllbnRIZWlnaHQ7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVFeHBhbmQocm93OiBhbnkpIHtcclxuICAgIGlmIChyb3cuZGV0YWlscykge1xyXG4gICAgICByb3cuaXNEZXRhaWxzRXhwYW5kID0gIXJvdy5pc0RldGFpbHNFeHBhbmQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByb3cuaXNFeHBhbmQgPSAhcm93LmlzRXhwYW5kO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuY2xlYXIoKTtcclxuICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xyXG4gICAgLy8gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIC8vIH0sIDEwMCk7XHJcbiAgfVxyXG5cclxuICAvLyBvbk1haW5GYWtlU2Nyb2xsKGV2ZW50OiBFdmVudCkge1xyXG4gIC8vICAgaWYgKHRoaXMuaXNTeW5jaW5nRnJvbU1haW4pIHtcclxuICAvLyAgICAgdGhpcy5pc1N5bmNpbmdGcm9tTWFpbiA9IGZhbHNlO1xyXG4gIC8vICAgICByZXR1cm47XHJcbiAgLy8gICB9XHJcbiAgLy8gICBpZiAodGhpcy5ncm91cGVkQ29sdW1ucz8ubGVuZ3RoID4gMCkge1xyXG4gIC8vICAgICB0aGlzLnN0YXJ0SW5kZXggPSAwO1xyXG4gIC8vICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgLy8gICAgIHJldHVybjtcclxuICAvLyAgIH1cclxuICAvLyAgIGNvbnN0IHNjcm9sbFRvcCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbFRvcDtcclxuICAvLyAgIGlmICh0aGlzLm1haW5TY3JvbGxSYWYpIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMubWFpblNjcm9sbFJhZik7XHJcbiAgLy8gICB0aGlzLm1haW5TY3JvbGxSYWYgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gIC8vICAgICB0aGlzLmlzU3luY2luZ0Zyb21GYWtlID0gdHJ1ZTtcclxuICAvLyAgICAgdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG4gIC8vICAgICBjb25zdCBvdmVyc2NhbiA9IHRoaXMub3ZlcnNjYW4gPz8gMDtcclxuICAvLyAgICAgdGhpcy5zdGFydEluZGV4ID0gTWF0aC5mbG9vcihzY3JvbGxUb3AgLyB0aGlzLnJvd0hlaWdodCk7XHJcbiAgLy8gICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5tYXgoMCwgdGhpcy5zdGFydEluZGV4IC0gb3ZlcnNjYW4pO1xyXG4gIC8vICAgICBjb25zdCBlbmQgPSBNYXRoLm1pbihcclxuICAvLyAgICAgICB0aGlzLmZsYXR0ZW5lZERhdGEubGVuZ3RoLFxyXG4gIC8vICAgICAgIHRoaXMuc3RhcnRJbmRleCArIHRoaXMudmlld3BvcnRSb3dzICsgb3ZlcnNjYW5cclxuICAvLyAgICAgKTtcclxuICAvLyAgICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuZmxhdHRlbmVkRGF0YS5zbGljZShzdGFydCwgZW5kKTtcclxuICAvLyAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgdmlld3BvcnRSb3dzID0gMDsgLy8gaG93IG1hbnkgcm93cyBmaXQgaW4gdmlld3BvcnQgKGNvbXB1dGVkKVxyXG4gIGZpcnN0SW5kZXggPSAwOyAvLyBpbmRleCBvZiB0aGUgZmlyc3QgdmlzaWJsZSByb3cgKGNsYW1wZWQpXHJcbiAgcmVuZGVyU3RhcnQgPSAwOyAvLyB3aGVyZSB0aGUgc2xpY2UgYWN0dWFsbHkgc3RhcnRzIChmaXJzdEluZGV4IC0gb3ZlcnNjYW4sIGNsYW1wZWQpXHJcblxyXG4gIHByaXZhdGUgc2Nyb2xsUmFmOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIHBlbmRpbmdTY3JvbGxUb3AgPSAwO1xyXG5cclxuICBAVmlld0NoaWxkKCdtYWluU2Nyb2xsJykgbWFpblNjcm9sbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2Zha2VTY3JvbGwnKSBmYWtlU2Nyb2xsITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnaG9yaXppbnRhbEZha2VTY3JvbGwnKVxyXG4gIGhvcml6aW50YWxGYWtlU2Nyb2xsITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnY2VudGVyU2Nyb2xsYWJsZUJvZHknKVxyXG4gIGNlbnRlclNjcm9sbGFibGVCb2R5ITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgcHJpdmF0ZSBvdmVyc2NhbiA9IDEwOyAvLyBidWZmZXIgcm93cyBhYm92ZSBhbmQgYmVsb3dcclxuXHJcbiAgY29tcHV0ZVZpZXdwb3J0Um93cygpIHtcclxuICAgIGlmICh0aGlzLmZha2VTY3JvbGw/Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5mYWtlU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMubWFpblNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIGNvbnN0IGggPSB0aGlzLm1haW5TY3JvbGwubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgPz8gMDtcclxuXHJcbiAgICAgIC8vIHJvd3MgdmlzaWJsZSBpbiB2aWV3cG9ydFxyXG4gICAgICBjb25zdCByb3dzSW5WaWV3cG9ydCA9IE1hdGgubWF4KDEsIE1hdGguY2VpbChoIC8gdGhpcy5yb3dIZWlnaHQpKTtcclxuXHJcbiAgICAgIC8vIGFkZCBidWZmZXIgcm93cyAob3ZlcnNjYW4pXHJcbiAgICAgIHRoaXMudmlld3BvcnRSb3dzID0gcm93c0luVmlld3BvcnQgKyB0aGlzLm92ZXJzY2FuO1xyXG5cclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIG9uSG9yaXpvbnRhbEZha2VTY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBzY3JvbGxMZWZ0ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuc2Nyb2xsTGVmdDtcclxuICAgIHRoaXMuY2VudGVyUGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQ7XHJcbiAgICBpZiAodGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICB0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNlbnRlckJvZHlTY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAodGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICB0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRhcmdldC5zY3JvbGxMZWZ0O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY2VudGVyUGlubmVkSGVhZGVyKSB7XHJcbiAgICAgIHRoaXMuY2VudGVyUGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRhcmdldC5zY3JvbGxMZWZ0O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaG9yaXppbnRhbEZha2VTY3JvbGw/Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5ob3JpemludGFsRmFrZVNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0YXJnZXQuc2Nyb2xsTGVmdDtcclxuICAgIH1cclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIG9uQ2VudGVySGVhZGVyU2Nyb2xsKGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKHRoaXMuaG9yaXppbnRhbEZha2VTY3JvbGw/Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5ob3JpemludGFsRmFrZVNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0YXJnZXQuc2Nyb2xsTGVmdDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Py5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHkubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBEcmFnZ2luZyBMb2dpYyBpcyBpbXBsZW1lbnRlZCBoZXJlXHJcbiAgLy8gcHJpdmF0ZSBpbml0aWFsSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICBkcmFnZ2luZ0NvbHVtbjogYW55O1xyXG4gIGRyYWdTdGFydEluZGV4OiBhbnkgPSAwO1xyXG4gIC8vIG9uRHJhZ1N0YXJ0KGRhdGE6IGFueSwgaW5kZXg6IG51bWJlcikge1xyXG4gIC8vICAgdGhpcy5kcmFnZ2luZ0NvbHVtbiA9IGRhdGEuY29sdW1uO1xyXG4gIC8vICAgdGhpcy5kcmFnU3RhcnRJbmRleCA9IGluZGV4O1xyXG4gIC8vIH1cclxuICAvLyBvbkRyYWdNb3ZlKGRhdGE6IGFueSkge1xyXG4gIC8vICAgY29uc3QgeyBjbGllbnRYLCBjbGllbnRZIH0gPSBkYXRhLmV2ZW50O1xyXG4gIC8vICAgY29uc3QgaGVhZGVycyA9IEFycmF5LmZyb20oXHJcbiAgLy8gICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5vbmUtcm93LWhlYWRlci1jZWxscycpXHJcbiAgLy8gICApIGFzIEhUTUxFbGVtZW50W107XHJcblxyXG4gIC8vICAgaGVhZGVycy5mb3JFYWNoKChoZWFkZXJFbCwgaWR4KSA9PiB7XHJcbiAgLy8gICAgIGNvbnN0IHJlY3QgPSBoZWFkZXJFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAvLyAgICAgaWYgKFxyXG4gIC8vICAgICAgIGlkeCAhPT0gdGhpcy5kcmFnU3RhcnRJbmRleCAmJlxyXG4gIC8vICAgICAgIGNsaWVudFggPiByZWN0LmxlZnQgJiZcclxuICAvLyAgICAgICBjbGllbnRYIDwgcmVjdC5yaWdodCAmJlxyXG4gIC8vICAgICAgIGNsaWVudFkgPiByZWN0LnRvcCAmJlxyXG4gIC8vICAgICAgIGNsaWVudFkgPCByZWN0LmJvdHRvbVxyXG4gIC8vICAgICApIHtcclxuICAvLyAgICAgICBjb25zdCBvdGhlckluZGV4ID0gaWR4O1xyXG4gIC8vICAgICAgIGNvbnNvbGUubG9nKGAke3RoaXMuZHJhZ1N0YXJ0SW5kZXh9IC0tPiAke290aGVySW5kZXh9YCk7XHJcbiAgLy8gICAgICAgdGhpcy5zd2FwQ29sdW1uKHRoaXMuZHJhZ1N0YXJ0SW5kZXgsIG90aGVySW5kZXgpO1xyXG4gIC8vICAgICAgIGNvbnNvbGUubG9nKCdVcGRhdGVkIENvbHVtbnM6ICcsIHRoaXMuY29sdW1ucyk7XHJcbiAgLy8gICAgICAgdGhpcy5kcmFnU3RhcnRJbmRleCA9IG90aGVySW5kZXg7IC8vIHVwZGF0ZSBpbmRleFxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIC8vIHN3YXBDb2x1bW4ocHJldml1c0luZGV4OiBudW1iZXIsIGN1cnJlbnRJbmRleDogbnVtYmVyKSB7XHJcbiAgLy8gICBjb25zdCBjb2x1bW5zID0gc3RydWN0dXJlZENsb25lKHRoaXMuY29sdW1ucyk7XHJcbiAgLy8gICBjb25zdCBmbGF0dGVuQ29sdW1ucyA9IHRoaXMuZmxhdHRlbkNvbHVtbnMoY29sdW1ucyk7XHJcblxyXG4gIC8vICAgY29uc3QgdmlzaWJsZUZsYXR0ZW5Db2x1bW5zID0gZmxhdHRlbkNvbHVtbnMuZmlsdGVyKFxyXG4gIC8vICAgICAoY29sKSA9PiBjb2wuaXNfdmlzaWJsZVxyXG4gIC8vICAgKTtcclxuICAvLyAgIGNvbnN0IHByZXZpdXNDb2x1bW4gPSB2aXNpYmxlRmxhdHRlbkNvbHVtbnNbcHJldml1c0luZGV4XTtcclxuICAvLyAgIGNvbnN0IGN1cnJlbnRDb2x1bW4gPSB2aXNpYmxlRmxhdHRlbkNvbHVtbnNbY3VycmVudEluZGV4XTtcclxuXHJcbiAgLy8gICBjb25zb2xlLmxvZygnUHJldml1cyBDb2x1bW46ICcsIHByZXZpdXNDb2x1bW4pO1xyXG4gIC8vICAgY29uc29sZS5sb2coJ2N1cnJlbnQgY2x1bW46ICcsIGN1cnJlbnRDb2x1bW4pO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gb25EcmFnRW5kKGRhdGE6IGFueSkge1xyXG4gIC8vICAgdGhpcy5kcmFnZ2luZ0NvbHVtbiA9IG51bGw7XHJcbiAgLy8gICB0aGlzLmRyYWdTdGFydEluZGV4ID0gbnVsbDtcclxuICAvLyB9XHJcblxyXG4gIC8vIENESyBEUkFHIERST1AgTE9HSUMgR09FUyBIRVJFXHJcblxyXG5cclxuICBjYW5FbnRlclRvUm93c0dyb3VwaW5nID0gKGRyYWc6IENka0RyYWc8YW55PiwgZHJvcDogQ2RrRHJvcExpc3Q8YW55PikgPT4ge1xyXG4gICAgLy8gRXhhbXBsZTogQmxvY2sgaWYgYWxyZWFkeSBwaW5uZWQgbGVmdFxyXG4gICAgY29uc3QgZGF0YSA9IGRyYWcuZGF0YTtcclxuICAgIGlmIChkYXRhPy5jaGlsZHJlbiAmJiBkYXRhPy5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIGRhdGEuY2hpbGRyZW4uc29tZShcclxuICAgICAgICAoY29sOiBhbnkpID0+IGNvbC5pc192aXNpYmxlICYmIGNvbC5pc19ncm91cGFibGVcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBkYXRhLmlzX3Zpc2libGUgJiYgZGF0YS5pc19ncm91cGFibGU7XHJcbiAgfTtcclxuXHJcbiAgLy8gb25EcmFnTW92ZWQoZXZlbnQ6IENka0RyYWdNb3ZlPGFueT4pIHtcclxuICAvLyAgIGNvbnN0IHBvaW50ZXJYID0gZXZlbnQucG9pbnRlclBvc2l0aW9uLng7XHJcbiAgLy8gICBjb25zdCBwb2ludGVyWSA9IGV2ZW50LnBvaW50ZXJQb3NpdGlvbi55O1xyXG5cclxuICAvLyAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcclxuICAvLyAgICAgJ3Jvd3MtZ3JvdXBpbmctdG9wLWNvbnRhaW5lcidcclxuICAvLyAgICk7XHJcblxyXG4gIC8vICAgaWYgKHRhcmdldEVsZW1lbnQpIHtcclxuICAvLyAgICAgY29uc3QgcmVjdCA9IHRhcmdldEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gIC8vICAgICBjb25zdCBpc092ZXJUYXJnZXQgPVxyXG4gIC8vICAgICAgIHBvaW50ZXJYID49IHJlY3QubGVmdCAmJlxyXG4gIC8vICAgICAgIHBvaW50ZXJYIDw9IHJlY3QucmlnaHQgJiZcclxuICAvLyAgICAgICBwb2ludGVyWSA+PSByZWN0LnRvcCAmJlxyXG4gIC8vICAgICAgIHBvaW50ZXJZIDw9IHJlY3QuYm90dG9tO1xyXG5cclxuICAvLyAgICAgaWYgKGlzT3ZlclRhcmdldCkge1xyXG4gIC8vICAgICAgIHRoaXMuZHJhZ2dpbmdJbkdyb3VwQXJlYSA9IHRydWU7XHJcbiAgLy8gICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgdGhpcy5kcmFnZ2luZ0luR3JvdXBBcmVhID0gZmFsc2U7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIGVudGVyVG9Ub3BSb3dHcm91cGluZyhkcm9wTGlzdDogQ2RrRHJhZ0VudGVyPGFueT4pIHtcclxuICAgIGNvbnN0IGRyYWdnaW5nRGF0YSA9IGRyb3BMaXN0Lml0ZW0uZGF0YTtcclxuICAgIHRoaXMuZHJhZ2dpbmdJbkdyb3VwQXJlYSA9IHRydWU7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhcIkRyYWdnaW5nIGluIGdyb3VwIGFyZWFcIilcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkcmFnZ2luZ0RhdGE/LmNoaWxkcmVuKSkge1xyXG4gICAgICBjb25zdCB0YXJnZXRHcm91cCA9IHRoaXMuY29sdW1ucy5maW5kKFxyXG4gICAgICAgIChjb2wpID0+IGNvbC5oZWFkZXIgPT09IGRyYWdnaW5nRGF0YS5oZWFkZXJcclxuICAgICAgKTtcclxuICAgICAgaWYgKHRhcmdldEdyb3VwKSB7XHJcbiAgICAgICAgZHJhZ2dpbmdEYXRhLmNoaWxkcmVuLmZvckVhY2goKGRyYWdnZWRDaGlsZDogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBtYXRjaGluZ0NoaWxkID0gdGFyZ2V0R3JvdXAuY2hpbGRyZW4uZmluZChcclxuICAgICAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLmZpZWxkID09PSBkcmFnZ2VkQ2hpbGQuZmllbGRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAobWF0Y2hpbmdDaGlsZCkge1xyXG4gICAgICAgICAgICBtYXRjaGluZ0NoaWxkLmlzUm93R3JvdXBlZCA9ICEhbWF0Y2hpbmdDaGlsZC5pc19ncm91cGFibGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAvLyBUcnkgZmluZGluZyBpdCBpbiB0b3AtbGV2ZWwgY29sdW1ucyBmaXJzdFxyXG4gICAgICBsZXQgdGFyZ2V0Q29sdW1uID0gdGhpcy5jb2x1bW5zLmZpbmQoXHJcbiAgICAgICAgKGNvbDogYW55KSA9PiBjb2wuZmllbGQgPT09IGRyYWdnaW5nRGF0YS5maWVsZFxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKHRhcmdldENvbHVtbikge1xyXG4gICAgICAgIHRhcmdldENvbHVtbi5pc1Jvd0dyb3VwZWQgPSAhIXRhcmdldENvbHVtbi5pc19ncm91cGFibGU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9yIChsZXQgZ3JvdXAgb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShncm91cC5jaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmdDaGlsZCA9IGdyb3VwLmNoaWxkcmVuLmZpbmQoXHJcbiAgICAgICAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLmZpZWxkID09PSBkcmFnZ2luZ0RhdGEuZmllbGRcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKG1hdGNoaW5nQ2hpbGQpIHtcclxuICAgICAgICAgICAgICBtYXRjaGluZ0NoaWxkLmlzUm93R3JvdXBlZCA9ICEhbWF0Y2hpbmdDaGlsZC5pc19ncm91cGFibGU7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyDinIUgUmVmcmVzaCBVSVxyXG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG9uRHJvcExpc3RFbnRlcihcclxuICAgIGRyb3BMaXN0OiBDZGtEcmFnRW50ZXI8YW55PixcclxuICAgIHNlY3Rpb246ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0J1xyXG4gICkge1xyXG4gICAgY29uc3QgZHJhZ2dpbmdEYXRhID0gZHJvcExpc3QuaXRlbS5kYXRhO1xyXG5cclxuICAgIGNvbnN0IHRhcmdldENvbHVtbjogYW55ID0gdGhpcy5jb2x1bW5zLmZpbmQoXHJcbiAgICAgIChjb2wpID0+IGNvbC5oZWFkZXIgPT0gZHJhZ2dpbmdEYXRhLmhlYWRlclxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoIXRhcmdldENvbHVtbikgcmV0dXJuO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgQXJyYXkuaXNBcnJheShkcmFnZ2luZ0RhdGE/LmNoaWxkcmVuKSAmJlxyXG4gICAgICBBcnJheS5pc0FycmF5KHRhcmdldENvbHVtbj8uY2hpbGRyZW4pXHJcbiAgICApIHtcclxuICAgICAgZHJhZ2dpbmdEYXRhLmNoaWxkcmVuLmZvckVhY2goKGRyYWdnZWRDaGlsZDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbWF0Y2hpbmdDaGlsZCA9IHRhcmdldENvbHVtbi5jaGlsZHJlbi5maW5kKFxyXG4gICAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLmZpZWxkID09PSBkcmFnZ2VkQ2hpbGQuZmllbGRcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChtYXRjaGluZ0NoaWxkKSB7XHJcbiAgICAgICAgICBtYXRjaGluZ0NoaWxkLnBpbm5lZCA9IHNlY3Rpb24gPT09ICdjZW50ZXInID8gbnVsbCA6IHNlY3Rpb247XHJcbiAgICAgICAgICBtYXRjaGluZ0NoaWxkWydpc1Jvd0dyb3VwZWQnXSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0YXJnZXRDb2x1bW4ucGlubmVkID0gc2VjdGlvbiA9PT0gJ2NlbnRlcicgPyBudWxsIDogc2VjdGlvbjtcclxuICAgICAgdGFyZ2V0Q29sdW1uWydpc1Jvd0dyb3VwZWQnXSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvLyBlbnRlclRvVG9wR3JvdXBpbmdSb3coZHJvcExpc3Q6IENka0RyYWdFbnRlcjxhbnk+KSB7XHJcbiAgLy8gICB0aGlzLnNob3VsZERpc2FibGVEcm9wbGlzdFNvcnRpbmcgPSB0aGlzLmlzRGlzYWJsZUNvbHVtbkdyb3VwaW5nO1xyXG4gIC8vICAgdGhpcy5kcmFnZ2luZ0luR3JvdXBBcmVhID0gdHJ1ZTtcclxuICAvLyAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyBjb25zdCBpbmRleCA9IHRoaXMuZ3JvdXBlZENvbHVtbnMuZmluZEluZGV4KFxyXG4gIC8vICAgKGNvbCkgPT4gY29sLmZpZWxkID09PSBjb2x1bW4uZmllbGRcclxuICAvLyApO1xyXG4gIC8vIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAvLyAgIHRoaXMuZ3JvdXBlZENvbHVtbnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAvLyB9XHJcblxyXG4gIC8vIC8vIDIuIFRyYXZlcnNlIHRoaXMuY29sdW1ucyB0byBmaW5kIGFuZCB1cGRhdGUgdGhlIG1hdGNoaW5nIGNvbHVtblxyXG4gIC8vIHRoaXMuY29sdW1ucy5mb3JFYWNoKChncm91cCkgPT4ge1xyXG4gIC8vICAgaWYgKGdyb3VwPy5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGdyb3VwLmNoaWxkcmVuKSkge1xyXG4gIC8vICAgICBncm91cC5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xyXG4gIC8vICAgICAgIGlmIChjaGlsZC5maWVsZCA9PT0gY29sdW1uLmZpZWxkKSB7XHJcbiAgLy8gICAgICAgICBjaGlsZC5pc1Jvd0dyb3VwZWQgPSBmYWxzZTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vICAgfSBlbHNlIGlmIChncm91cC5maWVsZCA9PT0gY29sdW1uLmZpZWxkKSB7XHJcbiAgLy8gICAgIGdyb3VwLmlzUm93R3JvdXBlZCA9IGZhbHNlO1xyXG4gIC8vICAgfVxyXG4gIC8vIH0pO1xyXG4gIC8vICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIC8vIH1cclxuXHJcbiAgZXhpdGVkRnJvbVRoZVRvcFJvdyhkcm9wTGlzdDogQ2RrRHJhZ0V4aXQ8YW55Pikge1xyXG4gICAgdGhpcy5kcmFnZ2luZ0luR3JvdXBBcmVhID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzRGlzYWJsZUNvbHVtbkdyb3VwaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3VsZERpc2FibGVEcm9wbGlzdFNvcnRpbmcgPSBmYWxzZTtcclxuICAgIGNvbnN0IGRyYWdnaW5nRGF0YSA9IGRyb3BMaXN0Lml0ZW0uZGF0YTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGRyYWdnaW5nRGF0YT8uY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNvbnN0IHRhcmdldEdyb3VwID0gdGhpcy5jb2x1bW5zLmZpbmQoXHJcbiAgICAgICAgKGNvbCkgPT4gY29sLmhlYWRlciA9PT0gZHJhZ2dpbmdEYXRhLmhlYWRlclxyXG4gICAgICApO1xyXG4gICAgICBpZiAodGFyZ2V0R3JvdXApIHtcclxuICAgICAgICBkcmFnZ2luZ0RhdGEuY2hpbGRyZW4uZm9yRWFjaCgoZHJhZ2dlZENoaWxkOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG1hdGNoaW5nQ2hpbGQgPSB0YXJnZXRHcm91cC5jaGlsZHJlbi5maW5kKFxyXG4gICAgICAgICAgICAoY2hpbGQ6IGFueSkgPT4gY2hpbGQuZmllbGQgPT09IGRyYWdnZWRDaGlsZC5maWVsZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmIChtYXRjaGluZ0NoaWxkKSB7XHJcbiAgICAgICAgICAgIG1hdGNoaW5nQ2hpbGQuaXNSb3dHcm91cGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCB0YXJnZXRDb2x1bW4gPSB0aGlzLmNvbHVtbnMuZmluZChcclxuICAgICAgICAoY29sOiBhbnkpID0+IGNvbC5maWVsZCA9PT0gZHJhZ2dpbmdEYXRhLmZpZWxkXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAodGFyZ2V0Q29sdW1uKSB7XHJcbiAgICAgICAgdGFyZ2V0Q29sdW1uLmlzUm93R3JvdXBlZCA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvciAobGV0IGdyb3VwIG9mIHRoaXMuY29sdW1ucykge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZ3JvdXAuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoaW5nQ2hpbGQgPSBncm91cC5jaGlsZHJlbi5maW5kKFxyXG4gICAgICAgICAgICAgIChjaGlsZDogYW55KSA9PiBjaGlsZC5maWVsZCA9PT0gZHJhZ2dpbmdEYXRhLmZpZWxkXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChtYXRjaGluZ0NoaWxkKSB7XHJcbiAgICAgICAgICAgICAgbWF0Y2hpbmdDaGlsZC5pc1Jvd0dyb3VwZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNob3VsZERpc2FibGVEcm9wbGlzdFNvcnRpbmcgPSBmYWxzZTtcclxuICBpc0Rpc2FibGVDb2x1bW5Hcm91cGluZyA9IGZhbHNlO1xyXG4gIGNoZWNrQ29sdW1uR3JvdXBpbmdTdGF0dXMoY29sOiBhbnkpIHtcclxuICAgIGlmIChjb2w/LmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSkge1xyXG4gICAgICBjb25zdCBhbGxDaGlsZHJlbkRpc2FibGVkID0gY29sLmNoaWxkcmVuLmV2ZXJ5KFxyXG4gICAgICAgIChjaGlsZDogYW55KSA9PiBjaGlsZC5pc19ncm91cGFibGUgPT09IGZhbHNlXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuaXNEaXNhYmxlQ29sdW1uR3JvdXBpbmcgPSBhbGxDaGlsZHJlbkRpc2FibGVkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pc0Rpc2FibGVDb2x1bW5Hcm91cGluZyA9IGNvbC5pc19ncm91cGFibGUgPT09IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgY3VycmVudERyYWdnaW5nQ29sdW1uOiBhbnkgPSBudWxsO1xyXG4gIGRyYWdTdGFydE9uR3JvdXAoY29sOiBhbnkpIHtcclxuICAgIHRoaXMuY3VycmVudERyYWdnaW5nQ29sdW1uID0gY29sO1xyXG4gIH1cclxuXHJcbiAgb25Tb3J0R3JvdXAgPSBhc3luYyAoZXZlbnQ6IENka0RyYWdTb3J0RXZlbnQ8YW55Piwgc2VjdGlvbjogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCBjb2x1bW5zID0gKHRoaXMgYXMgYW55KVtzZWN0aW9uXTtcclxuICAgIGlmIChldmVudC5wcmV2aW91c0luZGV4ID09PSBldmVudC5jdXJyZW50SW5kZXgpIHJldHVybjtcclxuICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID0gY29sdW1ucy5maWx0ZXIoKGNvbDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChjb2w/LmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSkge1xyXG4gICAgICAgIHJldHVybiBjb2wuY2hpbGRyZW4uc29tZSgoY2hpbGQ6IGFueSkgPT4gY2hpbGQuaXNfdmlzaWJsZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNvbC5pc192aXNpYmxlO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBwcmV2aW91c0hlYWRlciA9IHZpc2libGVDb2x1bW5zW2V2ZW50LnByZXZpb3VzSW5kZXhdLmhlYWRlcjtcclxuICAgIGNvbnN0IGN1cnJlbnRIZWFkZXIgPSB2aXNpYmxlQ29sdW1uc1tldmVudC5jdXJyZW50SW5kZXhdLmhlYWRlcjtcclxuICAgIGNvbnN0IHZpc2libGVQcmV2SW5kZXggPSB2aXNpYmxlQ29sdW1ucy5maW5kSW5kZXgoXHJcbiAgICAgIChjb2w6IGFueSkgPT4gY29sLmhlYWRlciA9PT0gcHJldmlvdXNIZWFkZXJcclxuICAgICk7XHJcbiAgICBjb25zdCB2aXNpYmxlQ3VyckluZGV4ID0gdmlzaWJsZUNvbHVtbnMuZmluZEluZGV4KFxyXG4gICAgICAoY29sOiBhbnkpID0+IGNvbC5oZWFkZXIgPT09IGN1cnJlbnRIZWFkZXJcclxuICAgICk7XHJcbiAgICBjb25zdCBnZXRGaWVsZHMgPSAoaXRlbTogYW55KTogc3RyaW5nW10gPT4ge1xyXG4gICAgICBpZiAoaXRlbT8uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShpdGVtLmNoaWxkcmVuKSkge1xyXG4gICAgICAgIHJldHVybiBpdGVtLmNoaWxkcmVuLm1hcCgoY2hpbGQ6IGFueSkgPT4gY2hpbGQuZmllbGQpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBbaXRlbS5maWVsZF07XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcHJldkZpZWxkcyA9IGdldEZpZWxkcyh2aXNpYmxlQ29sdW1uc1t2aXNpYmxlUHJldkluZGV4XSk7XHJcbiAgICBjb25zdCBjdXJyRmllbGRzID0gZ2V0RmllbGRzKHZpc2libGVDb2x1bW5zW3Zpc2libGVDdXJySW5kZXhdKTtcclxuICAgIGNvbnN0IGFsbEZpZWxkcyA9IFsuLi5wcmV2RmllbGRzLCAuLi5jdXJyRmllbGRzXTtcclxuICAgIGNvbnN0IGNlbGxzID0gYWxsRmllbGRzLmxlbmd0aFxyXG4gICAgICA/IChbXSBhcyBIVE1MRWxlbWVudFtdKS5jb25jYXQoXHJcbiAgICAgICAgLi4uYWxsRmllbGRzLm1hcCgoZmllbGQpID0+XHJcbiAgICAgICAgICBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7ZmllbGR9XCJdYCkpIGFzIEhUTUxFbGVtZW50W11cclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgICAgOiBbXTtcclxuICAgIGNvbnN0IGZpcnN0UG9zaXRpb25zID0gbmV3IE1hcDxIVE1MRWxlbWVudCwgbnVtYmVyPigpO1xyXG4gICAgY2VsbHMuZm9yRWFjaCgoZWwpID0+IGZpcnN0UG9zaXRpb25zLnNldChlbCwgZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCkpO1xyXG4gICAgLy8gY29uc29sZS5sb2coXCJ0aGlzIC5jb2x1bnNcIiwgdGhpcy5jb2x1bW5zKTtcclxuICAgIG1vdmVJdGVtSW5BcnJheSgodGhpcyBhcyBhbnkpW3NlY3Rpb25dLCB2aXNpYmxlUHJldkluZGV4LCB2aXNpYmxlQ3VyckluZGV4KTtcclxuXHJcbiAgICBjb25zdCBwcmV2Q29sSW5kZXhJbkNvbHVtbnMgPSB0aGlzLmNvbHVtbnMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5oZWFkZXIgPT09IHByZXZpb3VzSGVhZGVyKTtcclxuICAgIGNvbnN0IGN1cnJDb2xJbmRleEluQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmhlYWRlciA9PT0gY3VycmVudEhlYWRlcik7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5jb2x1bW5zLCBwcmV2Q29sSW5kZXhJbkNvbHVtbnMsIGN1cnJDb2xJbmRleEluQ29sdW1ucyk7XHJcbiAgICAvLyBhd2FpdCB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgYWxsRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgIGNvbnN0IHVwZGF0ZWRDZWxscyA9IEFycmF5LmZyb20oXHJcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2ZpZWxkPVwiJHtmaWVsZH1cIl1gKVxyXG4gICAgICApIGFzIEhUTUxFbGVtZW50W107XHJcblxyXG4gICAgICB1cGRhdGVkQ2VsbHMuZm9yRWFjaCgoZWwpID0+IHtcclxuICAgICAgICBjb25zdCBuZXdMZWZ0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcclxuICAgICAgICBjb25zdCBvbGRMZWZ0ID0gZmlyc3RQb3NpdGlvbnMuZ2V0KGVsKSE7XHJcbiAgICAgICAgY29uc3QgZGVsdGFYID0gb2xkTGVmdCAtIG5ld0xlZnQ7XHJcbiAgICAgICAgaWYgKGRlbHRhWCAhPT0gMCkge1xyXG4gICAgICAgICAgZWwuc3R5bGUud2lsbENoYW5nZSA9ICd0cmFuc2Zvcm0nO1xyXG4gICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICdub25lJztcclxuICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKCR7ZGVsdGFYfXB4KWA7XHJcbiAgICAgICAgICB2b2lkIGVsLm9mZnNldFdpZHRoO1xyXG4gICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICd0cmFuc2Zvcm0gMzAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSc7XHJcbiAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlWCgwKSc7XHJcbiAgICAgICAgICBjb25zdCBoYW5kbGUgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnJztcclxuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJyc7XHJcbiAgICAgICAgICAgIGVsLnN0eWxlLndpbGxDaGFuZ2UgPSAnJztcclxuICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGhhbmRsZSk7XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGhhbmRsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIG9uRHJvcEdyb3VwKCkge1xyXG4gICAgdGhpcy5sZWZ0UGlubmVkQ29sdW1ucyA9IHRoaXMuZGVlcENsb25lQ29sdW1ucyh0aGlzLnByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucyk7XHJcbiAgICB0aGlzLmNlbnRlckNvbHVtbnMgPSB0aGlzLmRlZXBDbG9uZUNvbHVtbnModGhpcy5wcmV2aWV3Q2VudGVyQ29sdW1ucyk7XHJcbiAgICB0aGlzLnJpZ2h0UGlubmVkQ29sdW1ucyA9IHRoaXMuZGVlcENsb25lQ29sdW1ucyh0aGlzLnByZXZpZXdSaWdodFBpbm5lZENvbHVtbnMpO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuXHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRlZXBDbG9uZUNvbHVtbnMoY29sdW1uczogYW55W10pOiBhbnlbXSB7XHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29sdW1ucykpIHJldHVybiBbXTtcclxuXHJcbiAgICByZXR1cm4gY29sdW1ucy5tYXAoY29sID0+ICh7XHJcbiAgICAgIC4uLmNvbCxcclxuICAgICAgcXVlcnk6IGNvbC5xdWVyeSA/IHsgLi4uY29sLnF1ZXJ5IH0gOiBudWxsLFxyXG4gICAgICBjb2x1bW5fZHJvcGRvd25fdmFsdWU6IEFycmF5LmlzQXJyYXkoY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZSlcclxuICAgICAgICA/IFsuLi5jb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXVxyXG4gICAgICAgIDogW10sXHJcbiAgICAgIC8vIFJlY3Vyc2l2ZWx5IGRlZXAgY2xvbmUgY2hpbGRyZW4gaWYgcHJlc2VudFxyXG4gICAgICBjaGlsZHJlbjogQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pXHJcbiAgICAgICAgPyB0aGlzLmRlZXBDbG9uZUNvbHVtbnMoY29sLmNoaWxkcmVuKVxyXG4gICAgICAgIDogdW5kZWZpbmVkLFxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcblxyXG4gIGFzeW5jIG9uRHJvcFRvcEdyb3VwKGV2ZW50OiBDZGtEcmFnRHJvcDxhbnk+KSB7XHJcbiAgICBpZiAodGhpcy5pc091dHNpZGVDb250YWluZXIpIHJldHVybjtcclxuICAgIHRoaXMubWFpblNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IDA7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy50cmFuc2xhdGVZID0gMDtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIGNvbnN0IGRyYWdnZWREYXRhID0gZXZlbnQuaXRlbS5kYXRhO1xyXG4gICAgaWYgKGRyYWdnZWREYXRhPy5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGRyYWdnZWREYXRhLmNoaWxkcmVuKSkge1xyXG4gICAgICBkcmFnZ2VkRGF0YS5jaGlsZHJlbi5mb3JFYWNoKChjb2w6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChjb2wuaXNfdmlzaWJsZSAmJiBjb2wuaXNfZ3JvdXBhYmxlKSB7XHJcbiAgICAgICAgICB0aGlzLmdyb3VwZWRDb2x1bW5zLnB1c2goY29sKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGRyYWdnZWREYXRhLmlzX3Zpc2libGUgJiYgZHJhZ2dlZERhdGEuaXNfZ3JvdXBhYmxlKSB7XHJcbiAgICAgICAgdGhpcy5ncm91cGVkQ29sdW1ucy5wdXNoKGRyYWdnZWREYXRhKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5kcmFnZ2luZ0luR3JvdXBBcmVhID0gZmFsc2U7XHJcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmdyb3VwZWRDb2x1bW5zLm1hcCgoaXRlbSkgPT4gaXRlbS5maWVsZCk7XHJcbiAgICB0aGlzLmRhdGFTZXQgPSBhd2FpdCB0aGlzLmdyb3VwRGF0YUFzeW5jKHRoaXMub3JpZ2luYWxEYXRhU2V0LCBmaWVsZHMpO1xyXG4gICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcbiAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xyXG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3MoMCk7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRDZWxscyA9IFtdO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sIDEwMDApO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25Hcm91cFJlb3JkZXIoZXZlbnQ6IENka0RyYWdEcm9wPGFueVtdPikge1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuZ3JvdXBlZENvbHVtbnMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmdyb3VwZWRDb2x1bW5zLm1hcCgoaXRlbSkgPT4gaXRlbS5maWVsZCk7XHJcbiAgICB0aGlzLmRhdGFTZXQgPSBhd2FpdCB0aGlzLmdyb3VwRGF0YUFzeW5jKHRoaXMub3JpZ2luYWxEYXRhU2V0LCBmaWVsZHMpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xyXG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xyXG4gICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMTAwKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5ncm91cEJveFBhZGRpbmcgPSB0aGlzLmNvbHVtbnNHcm91cGVkQm94Py5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKClcclxuICAgIH0sIDEwKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHVuZ3JvdXBDb2x1bW4oY29sdW1uOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdyb3VwZWRDb2x1bW5zLmZpbmRJbmRleChcclxuICAgICAgICAoY29sKSA9PiBjb2wuZmllbGQgPT09IGNvbHVtbi5maWVsZFxyXG4gICAgICApO1xyXG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgdGhpcy5ncm91cGVkQ29sdW1ucy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZ3JvdXBlZENvbHVtbnMubWFwKChpdGVtKSA9PiBpdGVtLmZpZWxkKTtcclxuICAgICAgdGhpcy5kYXRhU2V0ID0gYXdhaXQgdGhpcy5ncm91cERhdGFBc3luYyh0aGlzLm9yaWdpbmFsRGF0YVNldCwgZmllbGRzKTtcclxuICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGdyb3VwKSA9PiB7XHJcbiAgICAgICAgaWYgKGdyb3VwPy5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGdyb3VwLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgZ3JvdXAuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY2hpbGQuZmllbGQgPT09IGNvbHVtbi5maWVsZCkge1xyXG4gICAgICAgICAgICAgIGNoaWxkLmlzUm93R3JvdXBlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwLmZpZWxkID09PSBjb2x1bW4uZmllbGQpIHtcclxuICAgICAgICAgIGdyb3VwLmlzUm93R3JvdXBlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSwgMTAwMCk7XHJcblxyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBpbiB1bmdyb3VwQ29sdW1uOlwiLCBlcnIpO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG5cclxuICBzaG91bGRUaGVHcm91cEhlYWRlclNob3coZ3JvdXA6IGFueSkge1xyXG4gICAgaWYgKGdyb3VwPy5jaGlsZHJlbiAmJiBncm91cC5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIGdyb3VwLmNoaWxkcmVuLnNvbWUoXHJcbiAgICAgICAgKGNvbDogYW55KSA9PiBjb2wuaXNfdmlzaWJsZSAmJiAhY29sPy5pc1Jvd0dyb3VwZWRcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBncm91cD8uaXNfdmlzaWJsZSAmJiAhZ3JvdXA/LmlzUm93R3JvdXBlZDtcclxuICB9XHJcblxyXG5cclxuICAvLyBvbkNoaWxkRHJhZ1N0YXJ0KCkge1xyXG4gIC8vICAgZGVidWdnZXI7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBkcm9wTGlzdElkczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgLy8gZ2VuZXJhdGVEcm9wTGlzdElkcygpIHtcclxuICAvLyAgIHRoaXMuZHJvcExpc3RJZHMgPSBbXTtcclxuXHJcbiAgLy8gICBjb25zdCBzZWN0aW9uS2V5cyA9IFtcclxuICAvLyAgICAgJ2xlZnRQaW5uZWRDb2x1bW5zJyxcclxuICAvLyAgICAgJ2NlbnRlckNvbHVtbnMnLFxyXG4gIC8vICAgICAncmlnaHRQaW5uZWRDb2x1bW5zJyxcclxuICAvLyAgIF07XHJcblxyXG4gIC8vICAgc2VjdGlvbktleXMuZm9yRWFjaCgoc2VjdGlvbktleSkgPT4ge1xyXG4gIC8vICAgICBjb25zdCBzZWN0aW9uQ29scyA9ICh0aGlzIGFzIGFueSlbc2VjdGlvbktleV07XHJcblxyXG4gIC8vICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaCgoY29sOiBhbnksIGk6IG51bWJlcikgPT4ge1xyXG4gIC8vICAgICAgIGlmIChjb2w/LmNoaWxkcmVuPy5sZW5ndGggPiAwKSB7XHJcbiAgLy8gICAgICAgICBjb2wuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQ6IGFueSwgY2hpbGRJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgLy8gICAgICAgICAgIGlmIChjaGlsZD8uaXNfdmlzaWJsZSAmJiAhY2hpbGQuaXNSb3dHcm91cGVkKSB7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgaWQgPSBgJHtzZWN0aW9uS2V5fSR7aX1gO1xyXG4gIC8vICAgICAgICAgICAgIHRoaXMuZHJvcExpc3RJZHMucHVzaChpZCk7XHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgIH0pO1xyXG4gIC8vICAgICAgIH0gZWxzZSBpZiAoY29sPy5pc192aXNpYmxlICYmICFjb2wuaXNSb3dHcm91cGVkKSB7XHJcbiAgLy8gICAgICAgICBjb25zdCBpZCA9IGAke3NlY3Rpb25LZXl9JHtpfWA7XHJcbiAgLy8gICAgICAgICB0aGlzLmRyb3BMaXN0SWRzLnB1c2goaWQpO1xyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfSk7XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIG9uQ2hpbGREcm9wbGlzdFNvcnRlZCA9IGFzeW5jIChldmVudDogQ2RrRHJhZ1NvcnRFdmVudDxhbnk+LCBzZWN0aW9uOiBzdHJpbmcpID0+IHtcclxuICAgIGlmIChldmVudC5wcmV2aW91c0luZGV4ID09PSBldmVudC5jdXJyZW50SW5kZXgpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBwaW5uZWQgPVxyXG4gICAgICBzZWN0aW9uID09ICdwcmV2aWV3TGVmdFBpbm5lZENvbHVtbnMnXHJcbiAgICAgICAgPyAnbGVmdCdcclxuICAgICAgICA6IHNlY3Rpb24gPT0gJ3ByZXZpZXdSaWdodFBpbm5lZENvbHVtbnMnXHJcbiAgICAgICAgICA/ICdyaWdodCdcclxuICAgICAgICAgIDogXCJcIjtcclxuXHJcbiAgICBjb25zdCBjb2x1bW4gPSBldmVudC5pdGVtLmRhdGE7XHJcbiAgICBsZXQgZ3JvdXAgPSB0aGlzLmNvbHVtbnMuZmluZChcclxuICAgICAgKGNvbDogYW55KSA9PlxyXG4gICAgICAgIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSAmJlxyXG4gICAgICAgIGNvbC5jaGlsZHJlbi5zb21lKChjaGlsZDogYW55KSA9PiBjaGlsZD8uZmllbGQgPT09IGNvbHVtbj8uZmllbGQpXHJcbiAgICApO1xyXG4gICAgY29uc3QgZ3JvdXBJbmRleCA9IHRoaXMuY29sdW1ucy5maW5kSW5kZXgoXHJcbiAgICAgIChjb2wpID0+IGNvbC5oZWFkZXIgPT09IGdyb3VwLmhlYWRlclxyXG4gICAgKTtcclxuICAgIGNvbnN0IGZpbHRlcmVkR3JvdXAgPSBncm91cD8uY2hpbGRyZW4uZmlsdGVyKChjb2w6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBpc1Bpbm5lZE1hdGNoID1cclxuICAgICAgICAocGlubmVkID09PSBcIlwiICYmICghY29sPy5waW5uZWQgfHwgY29sPy5waW5uZWQgPT09IFwiXCIpKSB8fCBjb2w/LnBpbm5lZCA9PT0gcGlubmVkO1xyXG4gICAgICByZXR1cm4gaXNQaW5uZWRNYXRjaCAmJiBjb2w/LmlzX3Zpc2libGU7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBwcmV2aW91c0ZpZWxkID0gZmlsdGVyZWRHcm91cFtldmVudC5wcmV2aW91c0luZGV4XS5maWVsZDtcclxuICAgIGNvbnN0IGN1cnJlbnRGaWVsZCA9IGZpbHRlcmVkR3JvdXBbZXZlbnQuY3VycmVudEluZGV4XS5maWVsZDtcclxuICAgIGNvbnN0IHZpc2libGVQcmV2SW5kZXggPSBncm91cC5jaGlsZHJlbi5maW5kSW5kZXgoXHJcbiAgICAgIChjb2w6IGFueSkgPT4gY29sLmZpZWxkID09IHByZXZpb3VzRmllbGRcclxuICAgICk7XHJcbiAgICBjb25zdCB2aXNpYmxlQ3VyckluZGV4ID0gZ3JvdXAuY2hpbGRyZW4uZmluZEluZGV4KFxyXG4gICAgICAoY29sOiBhbnkpID0+IGNvbC5maWVsZCA9PSBjdXJyZW50RmllbGRcclxuICAgICk7XHJcbiAgICBjb25zdCBhbGxGaWVsZHMgPSBbcHJldmlvdXNGaWVsZCwgY3VycmVudEZpZWxkXTtcclxuICAgIGNvbnN0IGNlbGxzID0gYWxsRmllbGRzLmxlbmd0aFxyXG4gICAgICA/IChbXSBhcyBIVE1MRWxlbWVudFtdKS5jb25jYXQoXHJcbiAgICAgICAgLi4uYWxsRmllbGRzLm1hcCgoZmllbGQpID0+XHJcbiAgICAgICAgICBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7ZmllbGR9XCJdYCkpIGFzIEhUTUxFbGVtZW50W11cclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgICAgOiBbXTtcclxuXHJcbiAgICBjb25zdCBncm91cEluU2VjdGlvbiA9ICh0aGlzIGFzIGFueSlbc2VjdGlvbl0uZmluZChcclxuICAgICAgKGNvbDogYW55KSA9PlxyXG4gICAgICAgIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSAmJlxyXG4gICAgICAgIGNvbC5jaGlsZHJlbi5zb21lKChjaGlsZDogYW55KSA9PiBjaGlsZD8uZmllbGQgPT09IGNvbHVtbj8uZmllbGQpXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGZpbHRlckdyb3VwSW5TZWN0aW9uID0gKHRoaXMgYXMgYW55KVtzZWN0aW9uXS5maW5kKFxyXG4gICAgICAoY29sOiBhbnkpID0+XHJcbiAgICAgICAgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pICYmXHJcbiAgICAgICAgY29sLmNoaWxkcmVuLnNvbWUoKGNoaWxkOiBhbnkpID0+IGNoaWxkPy5maWVsZCA9PT0gY29sdW1uPy5maWVsZClcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgZ3JvdXBJblNlY3Rpb25JbmRleCA9ICh0aGlzIGFzIGFueSlbc2VjdGlvbl0uZmluZEluZGV4KFxyXG4gICAgICAoY29sOiBhbnkpID0+IGNvbC5oZWFkZXIgPT09IGdyb3VwSW5TZWN0aW9uLmhlYWRlclxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBmaXJzdFBvc2l0aW9ucyA9IG5ldyBNYXA8SFRNTEVsZW1lbnQsIG51bWJlcj4oKTtcclxuICAgIGNlbGxzLmZvckVhY2goKGVsKSA9PiBmaXJzdFBvc2l0aW9ucy5zZXQoZWwsIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQpKTtcclxuICAgIG1vdmVJdGVtSW5BcnJheShcclxuICAgICAgdGhpcy5jb2x1bW5zW2dyb3VwSW5kZXhdPy5jaGlsZHJlbixcclxuICAgICAgdmlzaWJsZVByZXZJbmRleCxcclxuICAgICAgdmlzaWJsZUN1cnJJbmRleFxyXG4gICAgKTtcclxuXHJcbiAgICBtb3ZlSXRlbUluQXJyYXkoXHJcbiAgICAgICh0aGlzIGFzIGFueSlbc2VjdGlvbl0/Lltncm91cEluU2VjdGlvbkluZGV4XS5jaGlsZHJlbixcclxuICAgICAgZXZlbnQucHJldmlvdXNJbmRleCxcclxuICAgICAgZXZlbnQuY3VycmVudEluZGV4XHJcbiAgICApO1xyXG5cclxuICAgIC8vIGF3YWl0IHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBhbGxGaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgY29uc3QgdXBkYXRlZENlbGxzID0gQXJyYXkuZnJvbShcclxuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZmllbGQ9XCIke2ZpZWxkfVwiXWApXHJcbiAgICAgICkgYXMgSFRNTEVsZW1lbnRbXTtcclxuICAgICAgdXBkYXRlZENlbGxzLmZvckVhY2goKGVsKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3TGVmdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XHJcbiAgICAgICAgY29uc3Qgb2xkTGVmdCA9IGZpcnN0UG9zaXRpb25zLmdldChlbCkhO1xyXG4gICAgICAgIGNvbnN0IGRlbHRhWCA9IG9sZExlZnQgLSBuZXdMZWZ0O1xyXG4gICAgICAgIGlmIChkZWx0YVggIT09IDApIHtcclxuICAgICAgICAgIGVsLnN0eWxlLndpbGxDaGFuZ2UgPSAndHJhbnNmb3JtJztcclxuICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSc7XHJcbiAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWCgke2RlbHRhWH1weClgO1xyXG4gICAgICAgICAgdm9pZCBlbC5vZmZzZXRXaWR0aDtcclxuICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAndHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSknO1xyXG4gICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVgoMCknO1xyXG5cclxuICAgICAgICAgIGNvbnN0IGhhbmRsZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICcnO1xyXG4gICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSAnJztcclxuICAgICAgICAgICAgZWwuc3R5bGUud2lsbENoYW5nZSA9ICcnO1xyXG4gICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgaGFuZGxlKTtcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgaGFuZGxlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICBjb25zb2xlLmdyb3VwKCdHcm91cDogJywgZ3JvdXApO1xyXG4gIH1cclxuXHJcblxyXG4gIG9uQ2hpbGREcm9wbGlzdERyb3BlZChjZGtEcmFnRHJvcGV2ZW50OiBDZGtEcmFnRHJvcDxhbnk+KSB7XHJcbiAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMik7XHJcbiAgfVxyXG5cclxuICAvLyBSb3dzIEdyb3VwaW5nIExvZ2ljIEdvZXMgSGVyZVxyXG5cclxuICBncm91cERhdGEoZGF0YTogYW55W10sIGdyb3VwRmllbGRzOiBzdHJpbmdbXSk6IGFueVtdIHtcclxuICAgIGxldCBkYXRhU2V0ID0gc3RydWN0dXJlZENsb25lKGRhdGEpO1xyXG4gICAgaWYgKCFncm91cEZpZWxkcy5sZW5ndGgpIHJldHVybiBkYXRhO1xyXG4gICAgY29uc3QgW2N1cnJlbnRGaWVsZCwgLi4ucmVzdEZpZWxkc10gPSBncm91cEZpZWxkcztcclxuICAgIGNvbnN0IGdyb3VwZWRNYXAgPSBuZXcgTWFwPHN0cmluZywgYW55W10+KCk7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZGF0YVNldCkge1xyXG4gICAgICBsZXQga2V5VmFsdWUgPSBjdXJyZW50RmllbGQuc3BsaXQoJy4nKS5yZWR1Y2UoKG9iaiwgaykgPT4gb2JqPy5ba10sIGl0ZW0pO1xyXG4gICAgICBsZXQgZ3JvdXBLZXk6IHN0cmluZztcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5VmFsdWUpKSB7XHJcbiAgICAgICAgaWYgKGtleVZhbHVlLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgZ3JvdXBLZXkgPSBcIl9CbGFua1wiO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGtleVZhbHVlWzBdID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgICBncm91cEtleSA9IGtleVZhbHVlXHJcbiAgICAgICAgICAgIC5tYXAob2JqID0+IChvYmo/LmRlcGFydG1lbnRfbmFtZSB8fCBvYmoucm9sZU5hbWUgfHwgb2JqPy5mdWxsX25hbWUpID8/IFwiX0JsYW5rXCIpXHJcbiAgICAgICAgICAgIC5qb2luKFwiLFwiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZ3JvdXBLZXkgPSBrZXlWYWx1ZVxyXG4gICAgICAgICAgICAubWFwKHZhbCA9PiB2YWwgPz8gXCJfQmxhbmtcIilcclxuICAgICAgICAgICAgLmpvaW4oXCIsXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBncm91cEtleSA9IGtleVZhbHVlID8/IFwiX0JsYW5rXCI7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFncm91cGVkTWFwLmhhcyhncm91cEtleSkpIGdyb3VwZWRNYXAuc2V0KGdyb3VwS2V5LCBbXSk7XHJcbiAgICAgIGdyb3VwZWRNYXAuZ2V0KGdyb3VwS2V5KSEucHVzaChpdGVtKTtcclxuICAgIH1cclxuICAgIHJldHVybiBBcnJheS5mcm9tKGdyb3VwZWRNYXAuZW50cmllcygpKS5tYXAoKFtncm91cFZhbHVlLCBncm91cEl0ZW1zXSkgPT4gKHtcclxuICAgICAgaXNHcm91cDogdHJ1ZSxcclxuICAgICAgZ3JvdXBGaWVsZDogY3VycmVudEZpZWxkLFxyXG4gICAgICBncm91cFZhbHVlLFxyXG4gICAgICBjaGlsZHJlbjogdGhpcy5ncm91cERhdGEoZ3JvdXBJdGVtcywgcmVzdEZpZWxkcyksXHJcbiAgICAgIGlzRXhwYW5kOiBmYWxzZSxcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG5cclxuICBjb3VudExlYWZSb3dzKGdyb3VwOiBhbnkpOiBudW1iZXIge1xyXG4gICAgaWYgKCFncm91cC5jaGlsZHJlbiB8fCAhZ3JvdXAuY2hpbGRyZW4ubGVuZ3RoKSByZXR1cm4gMDtcclxuXHJcbiAgICByZXR1cm4gZ3JvdXAuY2hpbGRyZW4ucmVkdWNlKChjb3VudDogbnVtYmVyLCBjaGlsZDogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiBjb3VudCArIChjaGlsZC5pc0dyb3VwID8gdGhpcy5jb3VudExlYWZSb3dzKGNoaWxkKSA6IDEpO1xyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICBpc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcclxuICB0b2dnbGVBY3RpdmVGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmlzQWN0aXZlRmlsdGVyT3BlbiA9ICF0aGlzLmlzQWN0aXZlRmlsdGVyT3BlbjtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUFjdGlvbnModHlwZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodHlwZSA9PT0gdGhpcy5hY3RpdmVUb3BCdXR0b24pIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gdHlwZTtcclxuICAgIGVsc2UgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSB0eXBlO1xyXG4gICAgdGhpcy5hY3RpdmVTdWJCdXR0b24gPSAnJztcclxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBhY3RpdmVTdWJCdXR0b24gPSAnJztcclxuICB0b2dnbGVTdWJBY3Rpb25zKHR5cGU6IHN0cmluZykge1xyXG4gICAgaWYgKHR5cGUgPT09IHRoaXMuYWN0aXZlU3ViQnV0dG9uKSB0aGlzLmFjdGl2ZVN1YkJ1dHRvbiA9ICcnO1xyXG4gICAgZWxzZSB0aGlzLmFjdGl2ZVN1YkJ1dHRvbiA9IHR5cGU7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVBY3Rpb25zRHJvcGRvd24oKSB7XHJcbiAgICB0aGlzLnNob3dBY3Rpb25zRHJvcERvd24gPSAhdGhpcy5zaG93QWN0aW9uc0Ryb3BEb3duO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBhc3luYyBjaGFuZ2VUYWJsZUxheW91dChldmVudDogRXZlbnQsIGxheW91dFR5cGU6IHN0cmluZykge1xyXG4gICAgbGV0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG5cclxuICAgIGlmICh0YXJnZXQuY2hlY2tlZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgPSBsYXlvdXRUeXBlO1xyXG4gICAgICBpZiAobGF5b3V0VHlwZSA9PT0gJ3NtYWxsJykge1xyXG4gICAgICAgIHRoaXMucm93SGVpZ2h0ID0gMzY7XHJcbiAgICAgICAgdGhpcy5oZWFkZXJSb3dIZWlnaHQgPSA0MDtcclxuICAgICAgICB0aGlzLmJvZHlUZXh0Rm9udHNTaXplID0gMTA7XHJcbiAgICAgICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gMTA7XHJcblxyXG4gICAgICB9IGVsc2UgaWYgKGxheW91dFR5cGUgPT09ICdtZWRpdW0nKSB7XHJcbiAgICAgICAgdGhpcy5yb3dIZWlnaHQgPSA0NDtcclxuICAgICAgICB0aGlzLmhlYWRlclJvd0hlaWdodCA9IDQ0O1xyXG4gICAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSAxNDtcclxuICAgICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSAxNDtcclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yb3dIZWlnaHQgPSA2MDtcclxuICAgICAgICB0aGlzLmhlYWRlclJvd0hlaWdodCA9IDUyO1xyXG4gICAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSAxNjtcclxuICAgICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSAxNjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKHRoaXMubWFpblNjcm9sbD8ubmF0aXZlRWxlbWVudD8uc2Nyb2xsVG9wKTtcclxuICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudGFibGVGaWx0ZXJWaWV3SWQpIHtcclxuICAgICAgdGhpcy5zYXZlUHJlc2V0KCdtb3VzZVVwJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uRm9udENoYW5nZSgpXHJcbiAgfVxyXG5cclxuXHJcbiAgcGFnZVNpemVPcHRpb25zID0gWzEwLCAyNSwgNTAsIDc1LCAxMDAsIDE1MCwgMjAwLCAyNTAsIDMwMCwgNTAwXTtcclxuICBnZXQgc3RhcnRJbmRleERhdGEoKSB7XHJcbiAgICByZXR1cm4gKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlIC0gMSkgKiB0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQ7XHJcbiAgfVxyXG5cclxuICBnZXQgZW5kSW5kZXgoKSB7XHJcbiAgICByZXR1cm4gTWF0aC5taW4odGhpcy5zdGFydEluZGV4ICsgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0LCB0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxSZXN1bHRzKTtcclxuICB9XHJcblxyXG4gIGdldCB2aXNpYmxlUGFnZXMoKTogKG51bWJlciB8IHN0cmluZylbXSB7XHJcbiAgICBjb25zdCBwYWdlczogKG51bWJlciB8IHN0cmluZylbXSA9IFtdO1xyXG5cclxuICAgIGlmICh0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxQYWdlcyA8PSA3KSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VzOyBpKyspIHtcclxuICAgICAgICBwYWdlcy5wdXNoKGkpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBwYWdlcy5wdXNoKDEpO1xyXG4gICAgICBpZiAodGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgPiAzKSB7XHJcbiAgICAgICAgcGFnZXMucHVzaCgnLi4uJyk7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHN0YXJ0ID0gTWF0aC5tYXgoMiwgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgLSAxKTtcclxuICAgICAgbGV0IGVuZCA9IE1hdGgubWluKHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VzIC0gMSwgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgKyAxKTtcclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkrKykge1xyXG4gICAgICAgIHBhZ2VzLnB1c2goaSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSA8IHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VzIC0gMikge1xyXG4gICAgICAgIHBhZ2VzLnB1c2goJy4uLicpO1xyXG4gICAgICB9XHJcbiAgICAgIHBhZ2VzLnB1c2godGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUGFnZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwYWdlcztcclxuICB9XHJcblxyXG5cclxuICBzZWFyY2hUZXh0Rm9yRmlsdGVyRHJvcERvd24gPSAnJztcclxuICB0b2dnbGVDb2x1bW5JbkZpbHRlckRyb3Bkb3duKGNvbDogYW55KSB7XHJcblxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQ29sdW1uRnJvbUZpbHRlcihvcHRpb246IGFueSkge1xyXG5cclxuICB9XHJcblxyXG4gIGhhbmRsZUJhY2tzcGFjZShldmVudDogRXZlbnQpIHtcclxuICAgIC8vIElmIHNlYXJjaCBpcyBlbXB0eSwgcmVtb3ZlIGxhc3QgdGFnXHJcbiAgICBpZiAoIXRoaXMuc2VhcmNoVGV4dEZvckZpbHRlckRyb3BEb3duICYmIHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBsYXN0ID0gdGhpcy5zZWxlY3RlZEZpbHRlck9wdGlvbnNbdGhpcy5zZWxlY3RlZEZpbHRlck9wdGlvbnMubGVuZ3RoIC0gMV07XHJcbiAgICAgIHRoaXMudG9nZ2xlU2VsZWN0aW9uSW5GaWx0ZXIobGFzdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCdmaWx0ZXJNZW51ZVNlYXJjaElucHV0JykgZmlsdGVyTWVudWVTZWFyY2hJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD5cclxuICBAVmlld0NoaWxkKCdmaWx0ZXJNZW51ZVRleHRjaElucHV0JykgZmlsdGVyTWVudWVUZXh0Y2hJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD5cclxuXHJcbiAgb3BlbkZpbHRlcm9uVGhyZWVEb3RzQ2xpY2soY29sOiBhbnkpIHtcclxuICAgIGlmIChjb2wudHlwZSA9PSAnaW1hZ2UnIHx8ICFjb2w/LnR5cGUpIHJldHVybjtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIgPSBjb2w7XHJcbiAgICB0aGlzLmlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IHRydWU7XHJcbiAgICBpZiAoY29sLnR5cGUgPT09ICdkcm9wZG93bicpIHtcclxuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuY2xlYXIoKTtcclxuICAgICAgY29uc3Qgc2F2ZWRJZHMgPSBjb2w/LnF1ZXJ5Py5faWRzIHx8IFtdO1xyXG4gICAgICBzYXZlZElkcy5mb3JFYWNoKChpZDogc3RyaW5nKSA9PiB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5hZGQoaWQpKTtcclxuXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zID0gdGhpcy5zZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLmZpbHRlcihcclxuICAgICAgICAob3B0aW9uOiBhbnkpID0+IHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhvcHRpb24/LmlkIHx8IG9wdGlvbj8uX2lkIHx8IG9wdGlvbilcclxuICAgICAgKTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyTWVudWVTZWFyY2hJbnB1dCkge1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJNZW51ZVNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9IGVsc2UgaWYgKFsnc3RyaW5nJywgJ251bWJlcicsICdkYXRlJ10uaW5jbHVkZXMoY29sLnR5cGUpKSB7XHJcbiAgICAgIHRoaXMuZmlyc3RDb25kaXRpb24gPSBjb2wucXVlcnkuZmlyc3RfY29uZGl0aW9uID8gY29sLnF1ZXJ5LmZpcnN0X2NvbmRpdGlvbiA6IChjb2wudHlwZSA9PSAnZGF0ZScgPyAnZXF1YWwnIDogJ2NvbnRhaW4nKTtcclxuICAgICAgdGhpcy5maXJzdFZhbHVlID0gY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgfHwgJyc7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uID0gY29sPy5xdWVyeT8uY29uZGl0aW9uIHx8ICdub25lJztcclxuICAgICAgdGhpcy5zZWNvbmRDb25kaXRpb24gPSAoY29sPy5xdWVyeT8uc2Vjb25kX2NvbmRpdGlvbikgfHwgbnVsbDtcclxuICAgICAgdGhpcy5zZWNvbmRWYWx1ZSA9IGNvbD8ucXVlcnk/LnNlY29uZF92YWx1ZSB8fCAnJztcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJNZW51ZVRleHRjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgfSwgMTAwKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGlzRmlsdGVyT3BlbiA9IGZhbHNlXHJcbiAgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI6IGFueTtcclxuICBzaG93RmlsdGVycyA9IHRoaXMuc2hvd1NpZGVNZW51ID8gZmFsc2UgOiBmYWxzZTtcclxuXHJcbiAgb3BlbkZpbHRlckZyb21EaXNhYmxlZFNlYXJjaGVkSW5wdXQoY29sOiBhbnkpIHtcclxuICAgIGlmIChjb2wudHlwZSAhPT0gJ2Ryb3Bkb3duJykgcmV0dXJuO1xyXG4gICAgdGhpcy5vcGVuRmlsdGVyKGNvbCk7XHJcbiAgfVxyXG5cclxuICBvcGVuRmlsdGVyKGNvbDogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBjb2w7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGxcclxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIgPSBjb2w7XHJcblxyXG4gICAgaWYgKGNvbC50eXBlID09PSAnZHJvcGRvd24nKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmNsZWFyKCk7XHJcbiAgICAgIGNvbnN0IHNhdmVkSWRzID0gY29sPy5xdWVyeT8uX2lkcyB8fCBbXTtcclxuICAgICAgc2F2ZWRJZHMuZm9yRWFjaCgoaWQ6IHN0cmluZykgPT4gdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuYWRkKGlkKSk7XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVyT3B0aW9ucyA9IHRoaXMuc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmNvbHVtbl9kcm9wZG93bl92YWx1ZT8uZmlsdGVyKFxyXG4gICAgICAgIChvcHRpb246IGFueSkgPT4gdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuaGFzKG9wdGlvbj8uaWQgfHwgb3B0aW9uPy5faWQgfHwgb3B0aW9uKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmIChbJ3N0cmluZycsICdudW1iZXInLCAnZGF0ZSddLmluY2x1ZGVzKGNvbC50eXBlKSkge1xyXG4gICAgICB0aGlzLmZpcnN0Q29uZGl0aW9uID0gY29sPy5xdWVyeT8uZmlyc3RfY29uZGl0aW9uIHx8ICdjb250YWluJztcclxuICAgICAgdGhpcy5maXJzdFZhbHVlID0gY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgfHwgJyc7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uID0gY29sPy5xdWVyeT8uY29uZGl0aW9uIHx8ICdub25lJztcclxuICAgICAgdGhpcy5zZWNvbmRDb25kaXRpb24gPSBjb2w/LnF1ZXJ5Py5zZWNvbmRfY29uZGl0aW9uIHx8IG51bGw7XHJcbiAgICAgIHRoaXMuc2Vjb25kVmFsdWUgPSBjb2w/LnF1ZXJ5Py5zZWNvbmRfdmFsdWUgfHwgJyc7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZmlyc3RWYWx1ZTogYW55ID0gJyc7XHJcbiAgZmlyc3RDb25kaXRpb24gPSAnJztcclxuICBzZWNvbmRWYWx1ZTogYW55ID0gJyc7XHJcbiAgc2Vjb25kQ29uZGl0aW9uID0gbnVsbDtcclxuICBjb25kaXRpb24gPSAnJztcclxuXHJcbiAgcmVzZXRUZXh0RmlsdGVyQ2hhbmdlcygpIHtcclxuICAgIHRoaXMuZmlyc3RDb25kaXRpb24gPSAnY29udGFpbic7XHJcbiAgICB0aGlzLmZpcnN0VmFsdWUgPSAnJztcclxuICAgIHRoaXMuY29uZGl0aW9uID0gJ25vbmUnO1xyXG4gICAgdGhpcy5zZWNvbmRDb25kaXRpb24gPSBudWxsO1xyXG4gICAgdGhpcy5zZWNvbmRWYWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5pc0ZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmFjdGl2ZVRvcEJ1dHRvbiA9ICcnO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQWxsVmFsdXNTZWxlY3Rpb25JbkRyb3Bkb3duRmlsdGVyKGNvbHVtbjogYW55KSB7XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIHNlbGVjdGVkRmlsdGVyT3B0aW9uczogYW55W10gPSBbXVxyXG5cclxuICBjdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuXHJcbiAgdG9nZ2xlU2VsZWN0aW9uSW5GaWx0ZXIob3B0aW9uOiBhbnkpIHtcclxuICAgIGRlYnVnZ2VyXHJcbiAgICBjb25zdCBpZCA9IG9wdGlvbi5pZCB8fCBvcHRpb24uX2lkIHx8IG9wdGlvbjtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5oYXMoaWQpKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmRlbGV0ZShpZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5hZGQoaWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RlZEZpbHRlck9wdGlvbnMgPSB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5jb2x1bW5fZHJvcGRvd25fdmFsdWUuZmlsdGVyKChvcHRpb246IGFueSkgPT4gdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuaGFzKG9wdGlvbi5pZCB8fCBvcHRpb24uX2lkIHx8IG9wdGlvbikpXHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICByZXNldEZpbHRlckNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuY2xlYXIoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zIS5sZW5ndGggPSAwO1xyXG4gICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gJyc7XHJcbiAgICAvLyBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNvbW1vblNldmljZS5nZXRGaWx0ZXJzRnJvbUNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKFwiRmlsdGVyZWQgQ29sdW1ucyBBcmU6IFwiLCBmaWx0ZXJlZENvbHVtbnMpO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlEcm9wZG93bkZpbHRlcigpIHtcclxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSAnJztcclxuICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XHJcbiAgICB0aGlzLmlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgY29uc3QgZmluZENvbHVtbiA9IChjb2x1bW5zOiBhbnlbXSwgZmllbGQ6IHN0cmluZyk6IGFueSA9PiB7XHJcbiAgICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHVtbnMpIHtcclxuICAgICAgICBpZiAoY29sLmZpZWxkID09PSBmaWVsZCkgcmV0dXJuIGNvbDtcclxuICAgICAgICBpZiAoY29sLmNoaWxkcmVuICYmIGNvbC5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICAgIGNvbnN0IGZvdW5kID0gZmluZENvbHVtbihjb2wuY2hpbGRyZW4sIGZpZWxkKTtcclxuICAgICAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGZvdW5kO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgY29sdW1uID0gZmluZENvbHVtbih0aGlzLmNvbHVtbnMsIHRoaXMuc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIuZmllbGQpO1xyXG4gICAgaWYgKGNvbHVtbikge1xyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdkcm9wZG93bicpIHtcclxuICAgICAgICBjb2x1bW4ucXVlcnkgPSBjb2x1bW4ucXVlcnkgfHwge307XHJcbiAgICAgICAgY29sdW1uLnF1ZXJ5Ll9pZHMgPSBjb2x1bW4ucXVlcnkuX2lkcyB8fCBbXTtcclxuXHJcbiAgICAgICAgLy8gUmVtb3ZlIHN0YWxlIElEcyAobm90IHByZXNlbnQgaW4gU2V0KVxyXG4gICAgICAgIGNvbHVtbi5xdWVyeS5faWRzID0gY29sdW1uLnF1ZXJ5Ll9pZHMuZmlsdGVyKFxyXG4gICAgICAgICAgKGlkOiBhbnkpID0+IHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhpZCkgICAvLyA8LS0gdXNlIC5oYXMoKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIC8vIEFkZCBuZXcgb25lcyBpZiBtaXNzaW5nXHJcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuZm9yRWFjaChpZCA9PiB7XHJcbiAgICAgICAgICBpZiAoIWNvbHVtbi5xdWVyeS5faWRzLmluY2x1ZGVzKGlkKSkge1xyXG4gICAgICAgICAgICBjb2x1bW4ucXVlcnkuX2lkcy5wdXNoKGlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIH0gZWxzZSBpZiAoWydzdHJpbmcnLCAnbnVtYmVyJywgJ2RhdGUnXS5pbmNsdWRlcyhjb2x1bW4udHlwZSkpIHtcclxuICAgICAgICBjb2x1bW4ucXVlcnkgPSB7XHJcbiAgICAgICAgICBmaXJzdF9jb25kaXRpb246IHRoaXMuZmlyc3RDb25kaXRpb24gfHwgJ2NvbnRhaW4nLFxyXG4gICAgICAgICAgZmlyc3RfdmFsdWU6IHRoaXMuZmlyc3RWYWx1ZSB8fCBudWxsLFxyXG4gICAgICAgICAgY29uZGl0aW9uOiB0aGlzLmNvbmRpdGlvbiB8fCAnbm9uZScsXHJcbiAgICAgICAgICBzZWNvbmRfY29uZGl0aW9uOiB0aGlzLnNlY29uZENvbmRpdGlvbiB8fCBudWxsLFxyXG4gICAgICAgICAgc2Vjb25kX3ZhbHVlOiB0aGlzLnNlY29uZFZhbHVlIHx8IG51bGwsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpbHRlciA9IHtcclxuICAgICAgZmllbGQ6IGNvbHVtbi5maWVsZCxcclxuICAgICAgc2VhcmNoOiBjb2x1bW4uc2VhcmNoLFxyXG4gICAgICBxdWVyeTogY29sdW1uLnF1ZXJ5LFxyXG4gICAgICB0eXBlOiBjb2x1bW4udHlwZSxcclxuICAgICAgX2lkczogY29sdW1uLl9pZHNcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IHRoaXMuZmlsdGVyc0NvbmZpZy5maW5kSW5kZXgoZiA9PiBmLmZpZWxkID09PSBjb2x1bW4uZmllbGQpO1xyXG5cclxuICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLmZpbHRlcnNDb25maWdbZXhpc3RpbmdJbmRleF0gPSBmaWx0ZXI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcucHVzaChmaWx0ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XHJcbiAgICB0aGlzLmlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSAnJztcclxuICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XHJcbiAgICB0aGlzLmlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiBOdW1iZXIodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0KSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG5cclxuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucy5lbWl0KGZpbHRlcnMpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIC8vIGFwcGx5RmlsdGVyRnJvbUZpbHRlclJvdyhjb2x1bW46IGFueSkge1xyXG4gIC8vICAgY29uc3QgZmlsdGVyID0ge1xyXG4gIC8vICAgICBmaWVsZDogY29sdW1uLmZpZWxkLFxyXG4gIC8vICAgICBzZWFyY2g6IGNvbHVtbi5zZWFyY2gsXHJcbiAgLy8gICAgIHF1ZXJ5OiBjb2x1bW4ucXVlcnksXHJcbiAgLy8gICAgIHR5cGU6IGNvbHVtbi50eXBlLFxyXG4gIC8vICAgICBfaWRzOiBjb2x1bW4uX2lkc1xyXG4gIC8vICAgfTtcclxuICAvLyAgIHRoaXMuZmlsdGVyc0NvbmZpZy5wdXNoKGZpbHRlcik7XHJcbiAgLy8gICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gIC8vICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAvLyAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gJyc7XHJcbiAgLy8gICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xyXG4gIC8vICAgdGhpcy5pc1RocmVlRG90c0ZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAvLyAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IHRoaXMuY29tbW9uU2V2aWNlLmdldEZpbHRlcnNGcm9tQ29sdW1ucyh0aGlzLmNvbHVtbnMsIHRoaXMuZmlsdGVyc0NvbmZpZyk7XHJcbiAgLy8gICB0aGlzLmZpbHRlck9wdGlvbnMuZW1pdChmaWx0ZXJlZENvbHVtbnMpO1xyXG4gIC8vIH1cclxuXHJcbiAgaXNGaWx0ZXJBcHBsaWVkT25Db2x1bW4oY29sdW1uOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlcnNDb25maWcuc29tZShjb2wgPT4gY29sLmZpZWxkID09PSBjb2x1bW4uZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgLy8gU2lkZSBGaWx0ZXJzIExvZ2ljIGlzIGhlcmVcclxuXHJcbiAgdG9nZ2xlU2VsZWN0QWxsU2lkZUZpbHRlcnMoY29sOiBhbnksIGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgY2hlY2tlZCA9IChldmVudD8udGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpPy5jaGVja2VkO1xyXG5cclxuICAgIGlmIChjaGVja2VkKSB7XHJcbiAgICAgIGNvbC5xdWVyeS5faWRzID0gY29sPy5jb2x1bW5fZHJvcGRvd25fdmFsdWU/Lm1hcChcclxuICAgICAgICAob3B0OiBhbnkpID0+IG9wdC5pZCB8fCBvcHQuX2lkIHx8IG9wdFxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcyA9IG5ldyBTZXQ8c3RyaW5nPihjb2wucXVlcnkuX2lkcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb2wucXVlcnkuX2lkcyA9IFtdO1xyXG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5jbGVhcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGlzQWxsU2lkZUZpbHRlck9wdGlvbnNTZWxlY3RlZChjb2w6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFjb2w/LnF1ZXJ5Py5faWRzIHx8ICFBcnJheS5pc0FycmF5KGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWUpKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gY29sLnF1ZXJ5Ll9pZHMubGVuZ3RoID09PSBjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIG9uT3B0aW9uVG9nZ2xlKGNvbDogYW55LCBvcHRpb246IGFueSkge1xyXG4gICAgY29uc3Qgb3B0aW9uSWQgPSBvcHRpb24uaWQgfHwgb3B0aW9uLl9pZCB8fCBvcHRpb247XHJcbiAgICBpZiAoIWNvbC5xdWVyeS5faWRzKSB7XHJcbiAgICAgIGNvbC5xdWVyeS5faWRzID0gW107XHJcbiAgICB9XHJcbiAgICBjb25zdCBpZHggPSBjb2wucXVlcnkuX2lkcy5pbmRleE9mKG9wdGlvbklkKTtcclxuICAgIGlmIChpZHggPiAtMSkge1xyXG4gICAgICBjb2wucXVlcnkuX2lkcy5zcGxpY2UoaWR4LCAxKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbC5xdWVyeS5faWRzLnB1c2gob3B0aW9uSWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgcmVzZXRTaWRlRmlsdGVyKGNvbDogYW55KSB7XHJcbiAgICBjb25zdCByZXNldENvbHVtblJlY3Vyc2l2ZWx5ID0gKGNvbHVtbnM6IGFueVtdKTogYm9vbGVhbiA9PiB7XHJcbiAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcclxuICAgICAgICBpZiAoY29sdW1uLmZpZWxkID09PSBjb2wuZmllbGQpIHtcclxuICAgICAgICAgIGNvbHVtbi5xdWVyeSA9IHtcclxuICAgICAgICAgICAgX2lkczogW10sXHJcbiAgICAgICAgICAgIGZpcnN0X2NvbmRpdGlvbjogJ2NvbnRhaW4nLFxyXG4gICAgICAgICAgICBmaXJzdF92YWx1ZTogbnVsbCxcclxuICAgICAgICAgICAgY29uZGl0aW9uOiAnbm9uZScsXHJcbiAgICAgICAgICAgIHNlY29uZF9jb25kaXRpb246ICdjb250YWluJyxcclxuICAgICAgICAgICAgc2Vjb25kX3ZhbHVlOiBudWxsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbHVtbj8uY2hpbGRyZW4pICYmIGNvbHVtbj8uY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgaWYgKHJlc2V0Q29sdW1uUmVjdXJzaXZlbHkoY29sdW1uLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfTtcclxuICAgIHJlc2V0Q29sdW1uUmVjdXJzaXZlbHkodGhpcy5jb2x1bW5zKTtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWx0ZXJzQ29uZmlnLmZpbmRJbmRleCgoZjogYW55KSA9PiBmLmZpZWxkID09PSBjb2wuZmllbGQpO1xyXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcblxyXG4gICAgY29uc3QgZmlsdGVycyA9IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVycyk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcblxyXG4gIGNsZWFyQWxsRmlsdGVycygpIHtcclxuICAgIHRoaXMudGFibGVWaWV3Py5mb3JFYWNoKChlbGUpID0+IHsgZWxlLmlzX3RlbXAgPSBmYWxzZSB9KTtcclxuICAgIGNvbnN0IHJlc2V0QWxsUmVjdXJzaXZlbHkgPSAoY29sdW1uczogYW55W10pID0+IHtcclxuICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xyXG4gICAgICAgIGlmIChjb2x1bW4ucXVlcnkpIHtcclxuICAgICAgICAgIGNvbHVtbi5xdWVyeSA9IHtcclxuICAgICAgICAgICAgX2lkczogW10sXHJcbiAgICAgICAgICAgIGZpcnN0X2NvbmRpdGlvbjogJ2NvbnRhaW4nLFxyXG4gICAgICAgICAgICBmaXJzdF92YWx1ZTogbnVsbCxcclxuICAgICAgICAgICAgY29uZGl0aW9uOiAnbm9uZScsXHJcbiAgICAgICAgICAgIHNlY29uZF9jb25kaXRpb246ICdjb250YWluJyxcclxuICAgICAgICAgICAgc2Vjb25kX3ZhbHVlOiBudWxsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjb2x1bW4/LmNoaWxkcmVuKSAmJiBjb2x1bW4uY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXNldEFsbFJlY3Vyc2l2ZWx5KGNvbHVtbi5jaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmVzZXRBbGxSZWN1cnNpdmVseSh0aGlzLmNvbHVtbnMpO1xyXG4gICAgdGhpcy5hY3RpdmVGaWx0ZXJDZWxsID0gbnVsbDtcclxuICAgIHRoaXMuZmlsdGVyc0NvbmZpZyA9IFtdO1xyXG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyID0gZmFsc2U7XHJcbiAgICB0aGlzLmZvbnRGYWltbHkgPSAnSW50ZXInO1xyXG4gICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gMTQ7XHJcbiAgICB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgPSAnbWVkaXVtZCc7XHJcbiAgICB0aGlzLmJvZHlUZXh0Rm9udHNTaXplID0gMTQ7XHJcbiAgICB0aGlzLmdsb2JhbFNlYXJjaFRleHQgPSAnJztcclxuICAgIGNvbnN0IGV2ZW50ID0geyBldmVudFR5cGU6ICdyZXNldCcsIGRhdGE6IHsgdGFibGVUeXBlOiB0aGlzLnRhYmxlVHlwZSB9IH07XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKS5tYXAoKHsgcXVlcnksIC4uLnJlc3QgfSkgPT4ge1xyXG4gICAgICAgIGlmIChxdWVyeSkge1xyXG4gICAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBxdWVyeSxcclxuICAgICAgICAgIC4uLnJlc3QsXHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgbm9fb2ZfcmVjb3JkczogTnVtYmVyKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCksXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCk7XHJcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucy5lbWl0KGZpbHRlcmVkQ29sdW1ucyk7XHJcbiAgICB9LCAzMDApO1xyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcclxuICB9XHJcblxyXG5cclxuICBhcHBseVNpZGVGaWx0ZXIoY29sdW1uOiBhbnkpIHtcclxuICAgIGlmICghY29sdW1uLnF1ZXJ5LmZpcnN0X3ZhbHVlICYmICFjb2x1bW4/LnF1ZXJ5Py5faWRzLmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgY29uc3QgZmlsdGVyID0ge1xyXG4gICAgICBmaWVsZDogY29sdW1uLmZpZWxkLFxyXG4gICAgICBzZWFyY2g6IGNvbHVtbi5zZWFyY2gsXHJcbiAgICAgIHF1ZXJ5OiBjb2x1bW4ucXVlcnksXHJcbiAgICAgIHR5cGU6IGNvbHVtbi50eXBlLFxyXG4gICAgICBfaWRzOiBjb2x1bW4uX2lkcyB8fCBbXVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gdGhpcy5maWx0ZXJzQ29uZmlnLmZpbmRJbmRleChmID0+IGYuZmllbGQgPT09IGNvbHVtbi5maWVsZCk7XHJcblxyXG4gICAgaWYgKGV4aXN0aW5nSW5kZXggIT09IC0xKSB7XHJcbiAgICAgIC8vIFJlcGxhY2UgdGhlIGV4aXN0aW5nIGZpbHRlclxyXG4gICAgICB0aGlzLmZpbHRlcnNDb25maWdbZXhpc3RpbmdJbmRleF0gPSBmaWx0ZXI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBBZGQgbmV3IGZpbHRlclxyXG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcucHVzaChmaWx0ZXIpO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY29tbW9uU2V2aWNlLmdldEZpbHRlcnNGcm9tQ29sdW1ucyh0aGlzLmNvbHVtbnMsIHRoaXMuZmlsdGVyc0NvbmZpZykubWFwKCh7IHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcclxuICAgICAgICBpZiAocXVlcnkpIHtcclxuICAgICAgICAgIGRlbGV0ZSBxdWVyeS5fX3R5cGVuYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgcXVlcnksXHJcbiAgICAgICAgICAuLi5yZXN0LFxyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpO1xyXG4gICAgICB0aGlzLmZpbHRlck9wdGlvbnMuZW1pdChmaWx0ZXJlZENvbHVtbnMpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG5cclxuICByZW1vdmVTaWRlRmlsdGVyKGNvbHVtbjogYW55KSB7XHJcbiAgICBpZiAoIWNvbHVtbi5xdWVyeS5maXJzdF92YWx1ZSAmJiAhY29sdW1uPy5xdWVyeT8uX2lkcy5sZW5ndGgpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gdGhpcy5maWx0ZXJzQ29uZmlnLmZpbmRJbmRleChmID0+IGYuZmllbGQgPT09IGNvbHVtbi5maWVsZCk7XHJcbiAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnLnNwbGljZShleGlzdGluZ0luZGV4LCAxKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHNlbmREYXRhID0ge1xyXG4gICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxyXG4gICAgICBmaWx0ZXJzOiB0aGlzLmNvbW1vblNldmljZS5nZXRGaWx0ZXJzRnJvbUNvbHVtbnModGhpcy5jb2x1bW5zLCB0aGlzLmZpbHRlcnNDb25maWcpLm1hcCgoeyBxdWVyeSwgLi4ucmVzdCB9KSA9PiB7XHJcbiAgICAgICAgaWYgKHF1ZXJ5KSB7XHJcbiAgICAgICAgICBkZWxldGUgcXVlcnkuX190eXBlbmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIHF1ZXJ5LFxyXG4gICAgICAgICAgLi4ucmVzdCxcclxuICAgICAgICB9O1xyXG4gICAgICB9KSxcclxuICAgICAgbm9fb2ZfcmVjb3JkczogTnVtYmVyKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCksXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKTtcclxuICAgICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVyZWRDb2x1bW5zKTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuICBjb2xsYXBzZUFsbEV4cGFuZGVkQ2VsbHMoKSB7XHJcbiAgICBpZiAodGhpcy5leHBhbmRlZENlbGxzPy5zaXplID4gMCkge1xyXG4gICAgICB0aGlzLmV4cGFuZGVkQ2VsbHMuY2xlYXIoKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxuICB0cmFja0J5RmllbGQoaW5kZXg6IG51bWJlciwgY29sOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGNvbD8uZmllbGQ7XHJcbiAgfVxyXG5cclxuICBnZXQgYWN0aXZlRmlsdGVyZWRDb2x1bW5zKCk6IGFueVtdIHtcclxuICAgIGNvbnN0IGNvbGxlY3RGaWx0ZXJlZCA9IChjb2x1bW5zOiBhbnlbXSk6IGFueVtdID0+IHtcclxuICAgICAgbGV0IHJlc3VsdDogYW55W10gPSBbXTtcclxuXHJcbiAgICAgIGNvbHVtbnMuZm9yRWFjaChjb2wgPT4ge1xyXG4gICAgICAgIGlmIChjb2wuY2hpbGRyZW4gJiYgY29sLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChjb2xsZWN0RmlsdGVyZWQoY29sLmNoaWxkcmVuKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBpc0luRmlsdGVyc0NvbmZpZyA9IHRoaXMuZmlsdGVyc0NvbmZpZy5zb21lKGYgPT4gZi5maWVsZCA9PT0gY29sLmZpZWxkKTtcclxuICAgICAgICBpZiAoaXNJbkZpbHRlcnNDb25maWcpIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKGNvbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBjb2xsZWN0RmlsdGVyZWQodGhpcy5jb2x1bW5zKTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG4gIHRvZ2dsZU9wZW5GaWx0ZXIoKSB7XHJcbiAgICB0aGlzLnNob3dGaWx0ZXJzID0gIXRoaXMuc2hvd0ZpbHRlcnM7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICAvLyBDZWxsIEVkaXRpbmcgV29yayBzdGFydCBoZXJlXHJcblxyXG4gIGVkaXRpbmdLZXk6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIGFjdGl2ZUNlbGw6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBzZXRBY3RpdmVDZWxsKHJvdzogYW55LCBjb2x1bW46IGFueSkge1xyXG4gICAgdGhpcy5hY3RpdmVDZWxsID0gKChyb3cuaWQgfHwgcm93Ll9pZCkgKyAnLScgKyBjb2x1bW4uZmllbGQpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgaXNBY3RpdmVDZWxsKHJvdzogYW55LCBjb2w6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlQ2VsbCA9PT0gKChyb3cuaWQgfHwgcm93Ll9pZCkgKyAnLScgKyBjb2wuZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgndGV4dEFyZWFkSW5wdXQnKSB0ZXh0QXJlYWRJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD47XHJcbiAgZW5hYmxlRWRpdChyb3c6IGFueSwgY29sdW1uOiBhbnksIGNsaWNrZWRGcm9tRGV0YWlsc0JveCA9IGZhbHNlLCBjZWxsQ29udGFpbmVyPzogSFRNTEVsZW1lbnQpIHtcclxuICAgIHRoaXMuZWRpdGluRHJvcGRvd25TZWFyY2ggPSAnJztcclxuICAgIGlmIChyb3c/Ll9fdmlydHVhbEluZGV4ID09IDApIHJldHVybjtcclxuICAgIGlmIChjb2x1bW4udHlwZSA9PSAnaW1hZ2UnIHx8ICFjb2x1bW4/LmlzX2VkaXRhYmxlKSByZXR1cm47XHJcbiAgICB0aGlzLmVkaXRpbmdLZXkgPSAoKHJvdy5pZCB8fCByb3cuX2lkKSArICctJyArIGNvbHVtbi5maWVsZCk7XHJcblxyXG4gICAgaWYgKGNvbHVtbi50eXBlID09PSAnZHJvcGRvd24nKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRyb3Bkb3duTWVudSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jZWxsLWVkaXRpbmctZHJvcGRvd24tbWVudScpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGlmIChkcm9wZG93bk1lbnUpIHtcclxuICAgICAgICAgIGNvbnN0IHJlY3QgPSBkcm9wZG93bk1lbnUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgICBjb25zdCB3aW5kb3dIZWlnaHQgPSB0aGlzLmRhdGFHcmlkQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldEhlaWdodDtcclxuXHJcbiAgICAgICAgICBpZiAocmVjdC5ib3R0b20gPiB3aW5kb3dIZWlnaHQpIHtcclxuICAgICAgICAgICAgZHJvcGRvd25NZW51LnN0eWxlLnRvcCA9IGAtJHtyZWN0LmhlaWdodH1weGA7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBkcm9wZG93bk1lbnUuc3R5bGUudG9wID0gJzEwMCUnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFjbGlja2VkRnJvbURldGFpbHNCb3ggJiYgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbHVtbi5maWVsZCk/Lmxlbmd0aCA+IDUwKSB7XHJcbiAgICAgIHRoaXMudG9nZ2xlRXhwYW5kT2ZMb25nQ2VsbFRleHQocm93LCBjb2x1bW4sIHRoaXMuY29sdW1ucywgZmFsc2UpXHJcbiAgICB9XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKCFjZWxsQ29udGFpbmVyKSByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCBmb2N1c2FibGUgPSBjZWxsQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICAgJ2lucHV0LCB0ZXh0YXJlYSwgc2VsZWN0LCBbY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiXSdcclxuICAgICAgKSBhcyBIVE1MRWxlbWVudCB8IG51bGw7XHJcblxyXG4gICAgICBpZiAoZm9jdXNhYmxlKSB7XHJcbiAgICAgICAgKGZvY3VzYWJsZSBhcyBIVE1MRWxlbWVudCkuc3R5bGUuZm9udFNpemUgPSAnMTZweCc7XHJcbiAgICAgICAgZm9jdXNhYmxlLmZvY3VzKCk7XHJcblxyXG4gICAgICAgIGlmIChmb2N1c2FibGUgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50IHx8IGZvY3VzYWJsZSBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnQpIHtcclxuICAgICAgICAgIGZvY3VzYWJsZS5zZWxlY3QoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG5cclxuICBkaXNhYmxlRWRpdChyb3c6IGFueSwgY29sdW1uOiBhbnksIGNvbnRyb2w/OiBhbnkpIHtcclxuICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmNsZWFyKCk7XHJcbiAgICBpZiAoIXRoaXMuZWRpdGluZ0tleSkgcmV0dXJuXHJcbiAgICB0aGlzLmNoZWNrUm93RWRpdEFuZEVtaXRWYWx1ZShyb3csIGNvbHVtbiwgcm93W2NvbHVtbi5maWVsZF0pXHJcbiAgICB0aGlzLmVkaXRpbmdLZXkgPSBudWxsO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2x1bW4/LmZpZWxkKTtcclxuICAgIGlmICghY3VycmVudCB8fCAoY29sdW1uLnR5cGUgPT0gJ2VtYWlsJyAmJiAhdGhpcy52YWxpZGF0ZUVtYWlsKGN1cnJlbnQpKSkge1xyXG4gICAgICBjb25zdCBvcmlnaW5hbFJvdyA9IHRoaXMub3JpZ2luYWxEYXRhU2V0LmZpbmQoaXRlbSA9PiBpdGVtLmlkID09IHJvdy5pZCB8fCBpdGVtLmlkID09IHJvdy5faWQpO1xyXG4gICAgICBjb25zdCBvcmlnaW5hbCA9IHRoaXMuZ2V0TmVzdGVkVmFsdWUob3JpZ2luYWxSb3csIGNvbHVtbj8uZmllbGQpO1xyXG4gICAgICB0aGlzLnNldE5lc3RlZFZhbHVlKHJvdywgY29sdW1uLCBvcmlnaW5hbCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVtYWlsUmVnZXggPSAvXlthLXpBLVowLTkuXyUrLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Mix9JC87XHJcbiAgdmFsaWRhdGVFbWFpbCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5lbWFpbFJlZ2V4LnRlc3QodmFsdWUpO1xyXG4gIH1cclxuICBhbGxvd09ubHlOdW1iZXJzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBjb25zdCBjaGFyQ29kZSA9IGV2ZW50LndoaWNoID8gZXZlbnQud2hpY2ggOiBldmVudC5rZXlDb2RlO1xyXG4gICAgaWYgKGNoYXJDb2RlIDwgNDggfHwgY2hhckNvZGUgPiA1Nykge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tSb3dFZGl0QW5kRW1pdFZhbHVlKHJvdzogYW55LCBjb2x1bW46IGFueSwgdmFsdWU/OiBhbnkpIHtcclxuICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgY29uc3Qgb3JpZ2luYWxSb3cgPSB0aGlzLm9yaWdpbmFsRGF0YVNldD8uZmluZChcclxuICAgICAgKHI6IGFueSkgPT4gci5pZCA9PT0gcm93LmlkIHx8IHIuX2lkID09PSByb3cuX2lkXHJcbiAgICApO1xyXG4gICAgaWYgKCFvcmlnaW5hbFJvdykgcmV0dXJuO1xyXG4gICAgLy8gY29uc3QgY2xlYW4gPSAob2JqOiBhbnkpID0+IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqKSk7XHJcbiAgICAvLyBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sdW1uLmZpZWxkKTtcclxuICAgIC8vIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSB0aGlzLmdldE5lc3RlZFZhbHVlKG9yaWdpbmFsUm93LCBjb2x1bW4uZmllbGQpO1xyXG4gICAgY29uc3Qgb3JpZ2luVmFsdWUgPSB0aGlzLmRhdGFTZXQuZmluZCgocjogYW55KSA9PiByLmlkID09PSByb3cuaWQpO1xyXG4gICAgY29uc3QgY2hhbmdlZFZhbHVlID0gb3JpZ2luVmFsdWUudmVyaWZpZWQgPT0gdmFsdWU7XHJcbiAgICAvLyBpZiAoY2hhbmdlZFZhbHVlKSByZXR1cm47XHJcbiAgICAvLyBjb25zdCBoYXNDaGFuZ2VkID0gdGhpcy5jb21tb25TZXZpY2UuaGFzRmllbGRDaGFuZ2VkKGN1cnJlbnRWYWx1ZSwgb3JpZ2luYWxWYWx1ZSwgY29sdW1uLnR5cGUpO1xyXG4gICAgLy8gaWYgKCFoYXNDaGFuZ2VkKSByZXR1cm47XHJcbiAgICAvLyB0aGlzLnNldE5lc3RlZFZhbHVlKG9yaWdpbmFsUm93LCBjb2x1bW4sIHZhbHVlKTtcclxuXHJcbiAgICBjb25zdCBzZW5kT2JqID0ge1xyXG4gICAgICBkYXRhOiB7IC4uLm9yaWdpblZhbHVlIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogJ29uQ2VsbEVkaXQnLFxyXG4gICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICAgIGNvbHVtbjogY29sdW1uXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoc2VuZE9iailcclxuICAgIC8vIH0sIDEwMCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgaXNFZGl0aW5nKHJvdzogYW55LCBjb2w6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZWRpdGluZ0tleSA9PT0gKChyb3cuaWQgfHwgcm93Ll9pZCkgKyAnLScgKyBjb2wuZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgc2V0TmVzdGVkVmFsdWUob2JqOiBhbnksIGNvbHVtbjogYW55LCBvcHRpb246IGFueSwgY2FsbGVkRnJvbUlucHV0ID0gZmFsc2UpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBhdGggPSBjb2x1bW4uZmllbGQ7XHJcbiAgICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xyXG4gICAgY29uc3QgbGFzdEtleSA9IGtleXMucG9wKCk7XHJcbiAgICBjb25zdCBwYXJlbnQgPSBrZXlzLnJlZHVjZSgoYWNjOiB7IFt4OiBzdHJpbmddOiB7fTsgfSwga2V5OiBzdHJpbmcgfCBudW1iZXIpID0+IGFjY1trZXldID8/PSB7fSwgb2JqKTtcclxuXHJcbiAgICBpZiAocGFyZW50ICYmIGxhc3RLZXkpIHtcclxuICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnICYmIG9wdGlvbiAhPT0gbnVsbCkge1xyXG4gICAgICAgIC8vIGNhc2U6IGRyb3Bkb3duIG9iamVjdCB7aWQsIHZhbHVlfVxyXG4gICAgICAgIHBhcmVudC5pZCA9IG9wdGlvbi5pZDtcclxuICAgICAgICBwYXJlbnRbbGFzdEtleV0gPSBvcHRpb24udmFsdWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gY2FzZTogcGxhaW4gc3RyaW5nIG9yIG51bWJlclxyXG4gICAgICAgIHBhcmVudFtsYXN0S2V5XSA9IG9wdGlvbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlbmRPYmogPSB7XHJcbiAgICAgIGRhdGE6IHsgLi4ub2JqIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogJ29uQ2VsbEVkaXQnLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoY2FsbGVkRnJvbUlucHV0KSB7XHJcbiAgICAgIHRoaXMuY2hlY2tSb3dFZGl0QW5kRW1pdFZhbHVlKG9iaiwgY29sdW1uLCBvcHRpb24pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICBnb1RvUGFnZShwYWdlOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnBhZ2luYXRpb25Db25maWc/LnBhZ2UgPT0gcGFnZSkgcmV0dXJuO1xyXG4gICAgaWYgKHBhZ2UgPCAxIHx8IHBhZ2UgPiB0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxQYWdlcykgcmV0dXJuO1xyXG4gICAgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgPSBwYWdlO1xyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIG9iajoge1xyXG4gICAgICAgIGxpbWl0OiB0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQsXHJcbiAgICAgICAgcGFnZTogcGFnZSxcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiAncGFnZUNoYW5nZScsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcclxuICB9XHJcblxyXG4gIG9uUGFnZVNpemVDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSA9IDE7XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKS5tYXAoKHsgcXVlcnksIC4uLnJlc3QgfSkgPT4ge1xyXG4gICAgICAgIGlmIChxdWVyeSkge1xyXG4gICAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBxdWVyeSxcclxuICAgICAgICAgIC4uLnJlc3QsXHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgbm9fb2ZfcmVjb3JkczogTnVtYmVyKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCksXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgICBvYmo6IHtcclxuICAgICAgICAgIGxpbWl0OiB0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQsXHJcbiAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGV2ZW50VHlwZTogJ3BhZ2VDaGFuZ2UnLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KVxyXG4gICAgfSwgNzAwKTtcclxuICB9XHJcblxyXG4gIGFjdGlvblByZXNldChkYXRhOiBhbnksIHR5cGU6IGFueSkge1xyXG4gICAgZGF0YS5jb2x1bW5zID0gZGF0YS5jb2x1bW5zLm1hcCgoeyBfaWQsIGZpbHRlclZhbHVlLCBzZWFyY2gsIGNvbHVtbl9kcm9wZG93bl92YWx1ZSwgcXVlcnksIF9fdHlwZW5hbWUsIC4uLnJlc3QgfTogYW55KSA9PiByZXN0KTtcclxuICAgIHRoaXMudGFibGVWaWV3Py5mb3JFYWNoKChlbGUpID0+IHsgZWxlLmlzX3RlbXAgPSBmYWxzZSB9KTtcclxuXHJcbiAgICB7XHJcbiAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSBkYXRhLmNvbmZpZy5ib2R5VGV4dEZvbnRzU2l6ZSxcclxuICAgICAgICB0aGlzLmZvbnRGYWltbHkgPSBkYXRhLmNvbmZpZy5mb250RmFpbWx5LFxyXG4gICAgICAgIGRhdGEuZmlsdGVycy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGRlbGV0ZSBlbGVtZW50Ll9fdHlwZW5hbWU7XHJcbiAgICAgICAgICBpZiAoZWxlbWVudC5xdWVyeSkge1xyXG4gICAgICAgICAgICBkZWxldGUgZWxlbWVudC5xdWVyeS5fX3R5cGVuYW1lO1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgdHlwZW9mIGVsZW1lbnQucXVlcnkgPT09ICdvYmplY3QnICYmXHJcbiAgICAgICAgICAgICAgZWxlbWVudC5xdWVyeSAhPT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgIE9iamVjdC5rZXlzKGVsZW1lbnQucXVlcnkpLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LnF1ZXJ5ID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSBkYXRhLmNvbmZpZy5oZWFkZXJUZXh0Rm9udHNTaXplLFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCA9IGRhdGEuY29uZmlnLnNlbGVjdGVkVGFibGVMYXlvdXQsXHJcbiAgICAgICAgdGhpcy5zaG93VmVydGljYWxCb3JkZXIgPSBkYXRhLmNvbmZpZy5zaG93VmVydGljYWxCb3JkZXIsXHJcbiAgICAgICAgdGhpcy5jdXJyZW50SWRGb3JVcGRhdGVQcmVzZXQgPSBkYXRhLmlkO1xyXG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcgPSBkYXRhLmZpbHRlcnM7XHJcbiAgICB9XHJcbiAgICBkZWxldGUgZGF0YT8uX190eXBlbmFtZTtcclxuICAgIGRlbGV0ZSBkYXRhPy5pc190ZW1wO1xyXG4gICAgZGVsZXRlIGRhdGE/LmNvbmZpZy5fX3R5cGVuYW1lO1xyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIG9iajoge1xyXG4gICAgICAgIGRhdGE6IGRhdGFcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiB0eXBlXHJcbiAgICB9XHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KVxyXG4gIH1cclxuXHJcbiAgY3VycmVudElkRm9yVXBkYXRlUHJlc2V0ID0gJyc7XHJcbiAgY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlOiBhbnk7XHJcbiAgdGVtcF9zdGF0ZSA9IHtcclxuICAgIGlkOiAnJyxcclxuICAgIGlzX3RlbXA6IGZhbHNlXHJcbiAgfVxyXG4gIGFzeW5jIHNlbGVjdEZpbHRlcihkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMudGVtcF9zdGF0ZSA9IHtcclxuICAgICAgaWQ6IGRhdGEuaWQsXHJcbiAgICAgIGlzX3RlbXA6IHRydWVcclxuICAgIH1cclxuICAgIHRoaXMudGFibGVWaWV3Py5mb3JFYWNoKChlbGUpID0+IHsgZWxlLmlzX3RlbXAgPSBmYWxzZSB9KTtcclxuICAgIHRoaXMudGFibGVWaWV3ID0gdGhpcy50YWJsZVZpZXcubWFwKGl0ZW0gPT4gKHtcclxuICAgICAgLi4uaXRlbSxcclxuICAgICAgaXNfdGVtcDogaXRlbS5pZCA9PSBkYXRhPy5pZFxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5jb2x1bW5zID0gZGF0YS5jb2x1bW5zO1xyXG4gICAge1xyXG4gICAgICB0aGlzLmJvZHlUZXh0Rm9udHNTaXplID0gZGF0YS5jb25maWcuYm9keVRleHRGb250c1NpemUsXHJcbiAgICAgICAgdGhpcy5mb250RmFpbWx5ID0gZGF0YS5jb25maWcuZm9udEZhaW1seSxcclxuICAgICAgICBkYXRhLmZpbHRlcnMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBkZWxldGUgZWxlbWVudC5fX3R5cGVuYW1lO1xyXG5cclxuICAgICAgICAgIGlmIChlbGVtZW50LnF1ZXJ5KSB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSBlbGVtZW50LnF1ZXJ5Ll9fdHlwZW5hbWU7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICB0eXBlb2YgZWxlbWVudC5xdWVyeSA9PT0gJ29iamVjdCcgJiZcclxuICAgICAgICAgICAgICBlbGVtZW50LnF1ZXJ5ICE9PSBudWxsICYmXHJcbiAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZWxlbWVudC5xdWVyeSkubGVuZ3RoID09PSAwXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQucXVlcnkgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAvLyB0aGlzLmdsb2JhbFNlYXJjaCA9IGRhdGEuY29uZmlnLmJvZHlUZXh0Rm9udHNTaXplLFxyXG4gICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSBkYXRhLmNvbmZpZy5oZWFkZXJUZXh0Rm9udHNTaXplLFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCA9IGRhdGEuY29uZmlnLnNlbGVjdGVkVGFibGVMYXlvdXQsXHJcbiAgICAgICAgdGhpcy5zaG93VmVydGljYWxCb3JkZXIgPSBkYXRhLmNvbmZpZy5zaG93VmVydGljYWxCb3JkZXIsXHJcbiAgICAgICAgdGhpcy5jdXJyZW50SWRGb3JVcGRhdGVQcmVzZXQgPSBkYXRhLmlkO1xyXG4gICAgICB0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZSA9IHN0cnVjdHVyZWRDbG9uZShkYXRhKTtcclxuICAgICAgdGhpcy5wcmVzZXROYW1lID0gZGF0YT8ubmFtZTtcclxuICAgICAgdGhpcy5wcmVzZXRGaWx0ZXIgPSBkYXRhPy5hY3RpdmVGaWx0ZXJzIHx8IGZhbHNlO1xyXG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcgPSBkYXRhLmZpbHRlcnM7XHJcbiAgICAgIGF3YWl0IHRoaXMuYXBwbHlGaWx0ZXJvcHRpb25MaXN0KCk7XHJcbiAgICAgIHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICBkYXRhLmNvbHVtbnMgPSB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xyXG4gICAgICBkZWxldGUgZGF0YT8uX190eXBlbmFtZTtcclxuICAgICAgZGVsZXRlIGRhdGE/LmlzX3RlbXA7XHJcbiAgICAgIGRlbGV0ZSBkYXRhPy5jb25maWcuX190eXBlbmFtZTtcclxuICAgIH1cclxuICAgIGlmIChkYXRhPy5pc19kZWFmdWx0KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFjdGlvblByZXNldChkYXRhLCAnc2V0UHJlc2V0JylcclxuICAgIH1cclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBvYmo6IHtcclxuICAgICAgICBkYXRhOiBkYXRhXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogJ3NlbGVjdCdcclxuICAgIH1cclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpXHJcbiAgfVxyXG5cclxuICBzYXZlUHJlc2V0KGNvbnRyb2w/OiBhbnkpIHtcclxuICAgIGlmIChjb250cm9sPy5pbnZhbGlkKSB7XHJcbiAgICAgIGNvbnRyb2w/LmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgbmFtZXMgPSB0aGlzLmdldEZpbHRlckhlYWRlcnModGhpcy5maWx0ZXJzQ29uZmlnLCB0aGlzLmNvbHVtbnMpO1xyXG4gICAgdGhpcy5wcmVzZXRGaWx0ZXIgPSB0aGlzLnRhYmxlRmlsdGVyVmlld0lkID8gdHJ1ZSA6IHRoaXMucHJlc2V0RmlsdGVyO1xyXG4gICAgbGV0IHNlbGVjdGVkRGF0YTogYW55ID0gdGhpcy50YWJsZVZpZXcuZmluZCgoZWxlKSA9PiBlbGUuaWQgPT0gdGhpcy50YWJsZUZpbHRlclZpZXdJZCk7XHJcbiAgICBsZXQgY29uZmlnID0ge1xyXG4gICAgICBmb250RmFpbWx5OiB0aGlzLmZvbnRGYWltbHksXHJcbiAgICAgIGJvZHlUZXh0Rm9udHNTaXplOiArKHRoaXMuYm9keVRleHRGb250c1NpemUgfHwgMTQpLFxyXG4gICAgICBoZWFkZXJUZXh0Rm9udHNTaXplOiArKHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSB8fCAxNCksXHJcbiAgICAgIG9kZFJvd3NCYWNrZ3JvdW5kQ29sb3I6IHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPyB0aGlzLm9kZFJvd3NCYWNrZ3JvdW5kQ29sb3IgOiB1bmRlZmluZWQsXHJcbiAgICAgIHNob3dWZXJ0aWNhbEJvcmRlcjogdGhpcy5zaG93VmVydGljYWxCb3JkZXIsXHJcbiAgICAgIHNlbGVjdGVkVGFibGVMYXlvdXQ6IHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCxcclxuICAgICAgZ2xvYmFsU2VhcmNoOiB0aGlzLnRhYmxlU2VhcmNoLFxyXG4gICAgICBmaWx0ZXJOYW1lczogbmFtZXMsXHJcbiAgICAgIHRvdGFsQ291bnQ6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHMsXHJcbiAgICAgIHJvd1NoYWRpbmdFbmFibGVkOiB0aGlzLnJvd1NoYWRpbmdFbmFibGVkXHJcblxyXG4gICAgfVxyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIG9iajoge1xyXG4gICAgICAgIG5hbWU6IHRoaXMudGFibGVGaWx0ZXJWaWV3SWQgPyBzZWxlY3RlZERhdGE/Lm5hbWUgOiB0aGlzLnByZXNldE5hbWUsXHJcbiAgICAgICAgYWN0aXZlRmlsdGVyczogdGhpcy5wcmVzZXRGaWx0ZXIsXHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgICBmaWx0ZXJzOiB0aGlzLnByZXNldEZpbHRlclxyXG4gICAgICAgICAgPyB0aGlzLmZpbHRlcnNDb25maWc/Lm1hcCgoeyBfX3R5cGVuYW1lLCBxdWVyeSwgLi4ucmVzdCB9KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgX190eXBlbmFtZTogX19pbm5lciwgLi4uY2xlYW5RdWVyeSB9ID0gcXVlcnkgfHwge307XHJcbiAgICAgICAgICAgIHJldHVybiB7IC4uLnJlc3QsIHF1ZXJ5OiBjbGVhblF1ZXJ5IH07XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgOiBbXSxcclxuICAgICAgICBjb25maWc6IGNvbmZpZyxcclxuICAgICAgICBpZDogdGhpcy50YWJsZUZpbHRlclZpZXdJZCB8fCB0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZT8uaWQsXHJcbiAgICAgICAgbG9hZGluZ0NhbGw6IGNvbnRyb2wgPT0gJ21vdXNlVXAnID8gZmFsc2UgOiB0cnVlLFxyXG4gICAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogdGhpcy50YWJsZUZpbHRlclZpZXdJZCB8fCAhdGhpcy5pc1RhYmxlUHJlc2V0Tm90Q2hhbmdlZCA/ICd1cGRhdGVQcmVzZXQnIDogJ2NyZWF0ZVByZXNldCdcclxuICAgIH1cclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpXHJcbiAgfVxyXG5cclxuICBnZXRGaWx0ZXJIZWFkZXJzKGZpbHRlcnM6IGFueVtdLCBjb2x1bW5zOiBhbnlbXSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBtYXRjaGVkSGVhZGVycyA9IGZpbHRlcnNcclxuICAgICAgLm1hcChmID0+IHtcclxuICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zLmZpbmQoYyA9PiBjLmZpZWxkID09PSBmLmZpZWxkKTtcclxuICAgICAgICByZXR1cm4gY29sdW1uID8gY29sdW1uLmhlYWRlciA6IG51bGw7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5maWx0ZXIoaGVhZGVyID0+ICEhaGVhZGVyKTtcclxuXHJcbiAgICByZXR1cm4gbWF0Y2hlZEhlYWRlcnMuam9pbignLCAnKTtcclxuICB9XHJcblxyXG5cclxuICB0b2dnbGVSb3dTaGFkaW5nKCkge1xyXG4gICAgdGhpcy5vZGRSb3dzQmFja2dyb3VuZENvbG9yID0gdGhpcy5yb3dTaGFkaW5nRW5hYmxlZCA/ICcjZjFmMWYxJyA6IHVuZGVmaW5lZDtcclxuICAgIHRoaXMub25Gb250Q2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5VGFibGUoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICByZXR1cm4gaW5kZXg7XHJcbiAgfVxyXG4gIGFjdGl2ZVJvdzogYW55XHJcbiAgYWN0aXZlUm93Q29sOiBhbnk7XHJcblxyXG4gIC8vIFRyYWNrIGV4cGFuZGVkIGNlbGxzIGFzIGEgU2V0IG9mIHVuaXF1ZSByb3crY29sIGlkZW50aWZpZXJzXHJcblxyXG4gIGdldENlbGxLZXkocm93OiBhbnksIGNvbDogYW55KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHt0aGlzLmdldFJvd0lkKHJvdyl9XyR7Y29sPy5maWVsZH1gO1xyXG4gIH1cclxuXHJcbiAgZXhwYW5kZWRDZWxscyA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XHJcbiAgcHJpdmF0ZSB6Q291bnRlciA9IDIxO1xyXG5cclxuICBzaG93RGV0YWlsc0JveCA9IGZhbHNlO1xyXG5cclxuICB0b2dnbGVFeHBhbmRPZkxvbmdDZWxsVGV4dChcclxuICAgIHJvdzogYW55LFxyXG4gICAgY29sOiBhbnksXHJcbiAgICBjb2x1bW5zOiBhbnlbXSxcclxuICAgIGV4cGFuZFdob2xlUm93ID0gZmFsc2VcclxuICApIHtcclxuICAgIGNvbnN0IGV4cGFuZENlbGxzID0gKHRhcmdldFJvdzogYW55KSA9PiB7XHJcbiAgICAgIGNvbHVtbnMuZm9yRWFjaChjID0+IHtcclxuICAgICAgICBpZiAoYy50eXBlID09PSAnaW1hZ2UnKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgdGV4dCA9IHRhcmdldFJvd1tjLmZpZWxkXTtcclxuXHJcbiAgICAgICAgaWYgKCh0eXBlb2YgdGV4dCA9PT0gJ3N0cmluZycgJiYgdGV4dC5sZW5ndGggPiA1MCkgfHwgKEFycmF5LmlzQXJyYXkodGV4dCkgJiYgdGV4dD8ubGVuZ3RoID4gMSkpIHtcclxuICAgICAgICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0Um93SWQodGFyZ2V0Um93KSArICctJyArIGMuZmllbGQ7XHJcbiAgICAgICAgICB0aGlzLnpDb3VudGVyKys7XHJcbiAgICAgICAgICB0aGlzLmV4cGFuZGVkQ2VsbHMuc2V0KGtleSwgdGhpcy56Q291bnRlcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIGNvbnN0IGNvbGxlY3RLZXlzRm9yUm93ID0gKHRhcmdldFJvdzogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgIGNvbHVtbnMuZm9yRWFjaChjID0+IHtcclxuICAgICAgICBpZiAoYy50eXBlID09PSAnaW1hZ2UnKSByZXR1cm47XHJcblxyXG4gICAgICAgIGNvbnN0IHRleHQgPSB0YXJnZXRSb3dbYy5maWVsZF07XHJcbiAgICAgICAgaWYgKHR5cGVvZiB0ZXh0ID09PSAnc3RyaW5nJyAmJiB0ZXh0Lmxlbmd0aCA+IDUwIHx8IChBcnJheS5pc0FycmF5KHRleHQpICYmIHRleHQ/Lmxlbmd0aCA+IDEpKSB7XHJcbiAgICAgICAgICBrZXlzLnB1c2godGhpcy5nZXRSb3dJZCh0YXJnZXRSb3cpICsgJy0nICsgYy5maWVsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGtleXM7XHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChleHBhbmRXaG9sZVJvdykge1xyXG4gICAgICBsZXQgcm93S2V5czogc3RyaW5nW10gPSBbXTtcclxuICAgICAgY29uc3QgdGV4dCA9IHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2w/LmZpZWxkKTtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGV4dCkgJiYgdGV4dC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgcm93S2V5cyA9IGNvbGxlY3RLZXlzRm9yUm93KHJvdyk7XHJcbiAgICAgICAgcm93Py5jaGlsZHJlbj8uZm9yRWFjaCgoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcm93S2V5cy5wdXNoKC4uLmNvbGxlY3RLZXlzRm9yUm93KGNoaWxkKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcm93S2V5cyA9IGNvbGxlY3RLZXlzRm9yUm93KHJvdyk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgYWxsRXhwYW5kZWQgPSByb3dLZXlzLmV2ZXJ5KGsgPT4gdGhpcy5leHBhbmRlZENlbGxzLmhhcyhrKSk7XHJcbiAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5jbGVhcigpO1xyXG4gICAgICBpZiAoIWFsbEV4cGFuZGVkKSB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93LmNoaWxkcmVuKSAmJiByb3cuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgZXhwYW5kQ2VsbHMocm93KTtcclxuICAgICAgICAgIHJvdz8uY2hpbGRyZW4/LmZvckVhY2goKGNoaWxkOiBhbnkpID0+IGV4cGFuZENlbGxzKGNoaWxkKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGV4cGFuZENlbGxzKHJvdyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBrZXkgPSB0aGlzLmdldFJvd0lkKHJvdykgKyAnLScgKyBjb2wuZmllbGQ7XHJcbiAgICAgIGlmIChjb2wudHlwZSA9PT0gJ2ltYWdlJykgcmV0dXJuO1xyXG5cclxuICAgICAgaWYgKCF0aGlzLmV4cGFuZGVkQ2VsbHMuaGFzKGtleSkpIHtcclxuICAgICAgICB0aGlzLmV4cGFuZGVkQ2VsbHMuY2xlYXIoKTtcclxuICAgICAgICB0aGlzLnpDb3VudGVyKys7XHJcbiAgICAgICAgdGhpcy5leHBhbmRlZENlbGxzLnNldChrZXksIHRoaXMuekNvdW50ZXIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5kZWxldGUoa2V5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2hvd0RldGFpbHNCb3ggPSBmYWxzZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmlzT3BlblRvVG9wKHJvdylcclxuICAgIH0sIDApO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgaXNPcGVuVG9Ub3Aocm93OiBhbnkpIHtcclxuICAgIGNvbnN0IHdyYXBwZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZGF0YS1ncmlkLWJvZHktd3JhcHBlcicpIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcclxuICAgIGlmICghd3JhcHBlcikgcmV0dXJuIGZhbHNlO1xyXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGlkID0gKHJvdy5pZCB8fCByb3cuX2lkKSArICctJyArIChjb2wuaWQgfHwgY29sLl9pZCk7XHJcbiAgICAgIGNvbnN0IGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcclxuICAgICAgaWYgKCFib3gpIHJldHVybiBmYWxzZTtcclxuICAgICAgY29uc3QgYm94UmVjdCA9IGJveC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgY29uc3Qgd3JhcHBlclJlY3QgPSB3cmFwcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICBjb25zdCBpc092ZXJmbG93aW5nQm90dG9tID0gYm94UmVjdC5ib3R0b20gPiB3cmFwcGVyUmVjdC5ib3R0b207XHJcbiAgICAgIGNvbnN0IGlzT3ZlcmZsb3dpbmdUb3AgPSBib3hSZWN0LnRvcCA8IHdyYXBwZXJSZWN0LnRvcDtcclxuICAgICAgaWYgKGlzT3ZlcmZsb3dpbmdCb3R0b20gJiYgIWlzT3ZlcmZsb3dpbmdUb3ApIHtcclxuICAgICAgICBjb25zdCBib3hIZWlnaHQgPSBib3gub2Zmc2V0SGVpZ2h0IHx8IDA7XHJcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gYm94SGVpZ2h0ICsgNDtcclxuICAgICAgICBib3guc3R5bGUudG9wID0gYCR7LW9mZnNldH1weGA7XHJcblxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGJveC5zdHlsZS5ib3R0b20gPSBgYXV0b2A7XHJcbiAgICAgICAgYm94LnN0eWxlLnRvcCA9IGAxMDAlYDtcclxuICAgICAgICBib3guc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVkoMClgO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0pXHJcbiAgICB0aGlzLnNob3dEZXRhaWxzQm94ID0gdHJ1ZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICBpc0V4cGFuZGVkKHJvdzogYW55LCBjb2w6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWRDZWxscy5oYXModGhpcy5nZXRSb3dJZChyb3cpICsgJy0nICsgY29sLmZpZWxkKTtcclxuICB9XHJcblxyXG4gIGdldFpJbmRleChyb3c6IGFueSwgY29sOiBhbnkpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWRDZWxscy5nZXQodGhpcy5nZXRSb3dJZChyb3cpICsgJy0nICsgY29sLmZpZWxkKSA/PyAyMTtcclxuICB9XHJcblxyXG4gIGlzT3ZlcmZsb3dpbmcoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWVsZW1lbnQpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBlbGVtZW50LnNjcm9sbFdpZHRoID4gZWxlbWVudC5jbGllbnRXaWR0aDtcclxuICB9XHJcblxyXG5cclxuICAvLyBQaWN0dXJlIGNlbGwgTG9naWNcclxuICBjb2xvckNvbWJpbmF0aW9uID0gWydwaWMtY29tYjEnLCAncGljLWNvbWIyJywgJ3BpYy1jb21iNCddO1xyXG4gIGdldER5bmFtaWNDbGFzcyhuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFuYW1lKSByZXR1cm4gdGhpcy5jb2xvckNvbWJpbmF0aW9uWzBdO1xyXG4gICAgY29uc3QgaGFzaCA9IEFycmF5LmZyb20obmFtZSkucmVkdWNlKChhY2MsIGNoYXIpID0+IGFjYyArIGNoYXIuY2hhckNvZGVBdCgwKSwgMCk7XHJcbiAgICBjb25zdCBpbmRleCA9IGhhc2ggJSB0aGlzLmNvbG9yQ29tYmluYXRpb24/Lmxlbmd0aDtcclxuICAgIHJldHVybiB0aGlzLmNvbG9yQ29tYmluYXRpb25baW5kZXhdO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW5pdGlhbHMobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghbmFtZSkgcmV0dXJuICdOQSc7XHJcbiAgICBjb25zdCBwYXJ0cyA9IG5hbWUudHJpbSgpLnNwbGl0KCcgJyk7XHJcbiAgICByZXR1cm4gKHBhcnRzWzBdWzBdICsgKHBhcnRzWzFdPy5bMF0gfHwgJycpKS50b1VwcGVyQ2FzZSgpO1xyXG4gIH1cclxuXHJcblxyXG4gIGFjdGlvbkhpZGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHhQb3MgPSAwO1xyXG4gIHlQb3MgPSAwO1xyXG4gIGlzVmlzaWJsZSA9IGZhbHNlO1xyXG4gIGRlYXRpbHNMaXN0OiBhbnk7XHJcbiAgb3BlbkV4cGVuZEluZGV4OiBhbnk7XHJcbiAgcG9zaXRpb25lZFlldCA9IGZhbHNlO1xyXG5cclxuICBvblJpZ2h0Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50IHwgYW55LCBkZWF0aWxzTGlzdDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoZGVhdGlsc0xpc3Q/LmFjdGlvbnM/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmFjdGlvbnMgPSBkZWF0aWxzTGlzdC5hY3Rpb25zO1xyXG4gICAgfVxyXG4gICAgaWYgKCEoZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGRlYXRpbHNMaXN0Ll9fdmlydHVhbEluZGV4ID09IDApIHJldHVybiBmYWxzZTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLnhQb3MgPSAoZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSA/IGV2ZW50LmNsaWVudFggOiBldmVudC50b3VjaGVzWzBdLmNsaWVudFg7XHJcbiAgICB0aGlzLnlQb3MgPSAoZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSA/IGV2ZW50LmNsaWVudFkgOiBldmVudC50b3VjaGVzWzBdLmNsaWVudFk7XHJcbiAgICAvLyB0aGlzLnhQb3MgPSBldmVudC5jbGllbnRYO1xyXG4gICAgLy8gdGhpcy55UG9zID0gZXZlbnQuY2xpZW50WTtcclxuICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcclxuICAgIHRoaXMucG9zaXRpb25lZFlldCA9IGZhbHNlO1xyXG4gICAgdGhpcy5kZWF0aWxzTGlzdCA9IGRlYXRpbHNMaXN0O1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IG1lbnVFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNvbnRleHQtbWVudScpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoIW1lbnVFbGVtZW50KSByZXR1cm47XHJcbiAgICAgIGNvbnN0IG1lbnVXaWR0aCA9IG1lbnVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICBjb25zdCBtZW51SGVpZ2h0ID0gbWVudUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICAgIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xyXG4gICAgICBsZXQgeCA9IChldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpID8gZXZlbnQuY2xpZW50WCA6IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WDsgLy9ldmVudC5jbGllbnRYO1xyXG4gICAgICBsZXQgeSA9IChldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpID8gZXZlbnQuY2xpZW50WSA6IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WTsgLy9ldmVudC5jbGllbnRZO1xyXG4gICAgICBpZiAoeCArIG1lbnVXaWR0aCA+IHZpZXdwb3J0V2lkdGgpIHtcclxuICAgICAgICB4ID0gdmlld3BvcnRXaWR0aCAtIG1lbnVXaWR0aCAtIDEwO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh5ICsgbWVudUhlaWdodCA+IHZpZXdwb3J0SGVpZ2h0KSB7XHJcbiAgICAgICAgeSA9IHZpZXdwb3J0SGVpZ2h0IC0gbWVudUhlaWdodCAtIDEwO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMueFBvcyA9IHg7XHJcbiAgICAgIHRoaXMueVBvcyA9IHk7XHJcbiAgICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucG9zaXRpb25lZFlldCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvbkFjdGlvbkNsaWNrKGFjdGlvbjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBzZW5kT2JqID0ge1xyXG4gICAgICBvYmo6IHRoaXMuZGVhdGlsc0xpc3QsXHJcbiAgICAgIGV2ZW50VHlwZTogYWN0aW9uLFxyXG4gICAgfTtcclxuICAgIHRoaXMucG9zaXRpb25lZFlldCA9IGZhbHNlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChzZW5kT2JqKTtcclxuICB9XHJcblxyXG5cclxuICBvblZlcmlmeUNsaWNrKHR5cGU6IHN0cmluZykge1xyXG4gICAgY29uc3QgaWRzQXJyYXkgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzKTtcclxuICAgIGNvbnN0IGFycmF5T2ZPYmplY3RzV2l0aFRhYmxlVHlwZTogYW55W10gPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmZvckVhY2goaWQgPT4ge1xyXG4gICAgICBhcnJheU9mT2JqZWN0c1dpdGhUYWJsZVR5cGUucHVzaCh7XHJcbiAgICAgICAgaWQ6IGlkLFxyXG4gICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgY29uc3Qgc2VuZE9iaiA9IHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIG9iajogaWRzQXJyYXksXHJcbiAgICAgICAgdGFibGVOYW1lOiB0aGlzLnRhYmxlTmFtZSxcclxuICAgICAgICBsaXN0aW5nVHlwZTogdGhpcy5saXN0aW5nVHlwZSxcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiB0eXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoc2VuZE9iailcclxuICB9XHJcblxyXG5cclxuXHJcbiAgZ2V0Q2VsbENsYXNzZXMoY29sdW1uOiBhbnksIHZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF2YWx1ZSB8fCAhY29sdW1uPy5maWVsZCkgcmV0dXJuICcnO1xyXG5cclxuICAgIGxldCB2YWw6IGFueSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyB2YWx1ZT8udmFsdWUgPz8gdmFsdWUgOiB2YWx1ZTtcclxuICAgIGNvbnN0IGZpZWxkID0gY29sdW1uLmZpZWxkLnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgaWYgKGZpZWxkID09PSAnZHVlX2RhdGUnKSB7XHJcbiAgICAgIGNvbnN0IGR1ZURhdGUgPSBuZXcgRGF0ZSh2YWwpO1xyXG4gICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGNvbnN0IHRvZGF5VVRDID0gRGF0ZS5VVEModG9kYXkuZ2V0RnVsbFllYXIoKSwgdG9kYXkuZ2V0TW9udGgoKSwgdG9kYXkuZ2V0RGF0ZSgpKTtcclxuICAgICAgY29uc3QgZHVlVVRDID0gRGF0ZS5VVEMoZHVlRGF0ZS5nZXRGdWxsWWVhcigpLCBkdWVEYXRlLmdldE1vbnRoKCksIGR1ZURhdGUuZ2V0RGF0ZSgpKTtcclxuXHJcbiAgICAgIGlmIChkdWVVVEMgPCB0b2RheVVUQykge1xyXG4gICAgICAgIHJldHVybiAndGV4dC1kYW5nZXInO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGVsc2UgaWYoZHVlVVRDID09PSB0b2RheVVUQyl7XHJcbiAgICAgIC8vICAgcmV0dXJuICd0ZXh0LXdhcm5pbmcnO1xyXG4gICAgICAvLyB9XHJcblxyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGNvbnN0IHN0YXR1cyA9IHZhbD8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKFxyXG4gICAgICBmaWVsZCA9PT0gJ3N0YXR1cycgfHxcclxuICAgICAgZmllbGQgPT09ICdhY2NvdW50X3N0YXR1cycgfHxcclxuICAgICAgZmllbGQgPT09ICdhdmFpbHN0YXR1cycgfHxcclxuICAgICAgZmllbGQgPT09ICdpc19jdXN0b21fZ3JhZGUnXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIFNUQVRVU0VTX0JBREdFX01BUFtzdGF0dXNdIHx8ICdiYWRnZSBiYWRnZS1zZWNvbmRhcnknO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG5cclxuICByZW1vdmVDb2x1bW5GaWx0ZXJGcm9tQ29sdW1uKGNvbHVtbjogYW55KSB7XHJcbiAgICBpZiAoIWNvbHVtbikgcmV0dXJuXHJcbiAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdkcm9wZG93bicpIHtcclxuICAgICAgY29sdW1uLnF1ZXJ5Ll9pZHMgPSBbXTtcclxuICAgIH0gZWxzZSBpZiAoWydzdHJpbmcnLCAnbnVtYmVyJywgJ2RhdGUnXS5pbmNsdWRlcyhjb2x1bW4udHlwZSkpIHtcclxuICAgICAgY29sdW1uLnF1ZXJ5ID0ge1xyXG4gICAgICAgIGZpcnN0X2NvbmRpdGlvbjogJ2NvbnRhaW4nLFxyXG4gICAgICAgIGZpcnN0X3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIGNvbmRpdGlvbjogJ25vbmUnLFxyXG4gICAgICAgIHNlY29uZF9jb25kaXRpb246IG51bGwsXHJcbiAgICAgICAgc2Vjb25kX3ZhbHVlOiBudWxsLFxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZpbHRlcnNDb25maWcuZmluZEluZGV4KChmOiBhbnkpID0+IGYuZmllbGQgPT09IGNvbHVtbi5maWVsZCk7XHJcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IHRoaXMuY29tbW9uU2V2aWNlLmdldEZpbHRlcnNGcm9tQ29sdW1ucyh0aGlzLmNvbHVtbnMsIHRoaXMuZmlsdGVyc0NvbmZpZyk7XHJcbiAgICBjb25zdCBjbGVhbmVkRmlsdGVyZWRDb2x1bW5zID0gZmlsdGVyZWRDb2x1bW5zLm1hcCgoeyBxdWVyeSwgLi4ucmVzdCB9KSA9PiB7XHJcbiAgICAgIGlmIChxdWVyeSkge1xyXG4gICAgICAgIGRlbGV0ZSBxdWVyeS5fX3R5cGVuYW1lO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgcXVlcnksXHJcbiAgICAgICAgLi4ucmVzdCxcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IGNsZWFuZWRGaWx0ZXJlZENvbHVtbnMsXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gY2xlYW5lZEZpbHRlcmVkQ29sdW1ucztcclxuICAgICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVyZWRDb2x1bW5zKTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuICBvblNpZGVNZW51Q29sdW1uc1Zpc2liaWxpdHlDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKS5tYXAoKHsgcXVlcnksIC4uLnJlc3QgfSkgPT4ge1xyXG4gICAgICAgIGlmIChxdWVyeSkge1xyXG4gICAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBxdWVyeSxcclxuICAgICAgICAgIC4uLnJlc3QsXHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgbm9fb2ZfcmVjb3JkczogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2VTaXplLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgfVxyXG5cclxuICBjbGVhbkZpbHRlcmRDb2x1bW5zKCkge1xyXG4gICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKTtcclxuICAgIGNvbnN0IGNsZWFuZWRGaWx0ZXJlZENvbHVtbnMgPSBmaWx0ZXJlZENvbHVtbnMubWFwKCh7IHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcclxuICAgICAgaWYgKHF1ZXJ5KSB7XHJcbiAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBxdWVyeSxcclxuICAgICAgICAuLi5yZXN0LFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBjbGVhbmVkRmlsdGVyZWRDb2x1bW5zO1xyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRDc3YodHlwZTogJ2NzdicgfCAneGxzeCcpIHtcclxuICAgIGNvbnN0IGNvbmZpZzogYW55ID0ge1xyXG4gICAgICBoZWFkZXJCZ0NvbG9yOiB0aGlzLmhlYWRlckJhY2tncm91bmRDb2xvcixcclxuICAgICAgaGVhZGVyVGV4dENvbG9yOiB0aGlzLmhlYWRlclRleHRDb2xvcixcclxuICAgICAgYm9keVRleHRDb2xvcjogJyMwMDAwMDAnLFxyXG4gICAgICBmb250RmFtaWx5OiB0aGlzLmZvbnRGYWltbHksXHJcbiAgICAgIGZvbnRXZWlnaHQ6ICdub3JtYWwnLFxyXG4gICAgICB6b29tU2NhbGU6IDEyNSxcclxuICAgICAgaGVhZGVyUm93SGVpZ2h0OiAzMFxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZW5hYmxlRXhwb3J0KSB7XHJcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGNvbnN0IGRkID0gU3RyaW5nKG5vdy5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgIGNvbnN0IG1tID0gU3RyaW5nKG5vdy5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgY29uc3QgeXl5eSA9IG5vdy5nZXRGdWxsWWVhcigpO1xyXG4gICAgICBjb25zdCBISCA9IFN0cmluZyhub3cuZ2V0SG91cnMoKSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgY29uc3QgTU0gPSBTdHJpbmcobm93LmdldE1pbnV0ZXMoKSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgY29uc3QgZm9ybWF0dGVkID1cclxuICAgICAgICBgJHt0aGlzLnRhYmxlVHlwZX1fJHtkZH0tJHttbX0tJHt5eXl5fV8ke0hIfS0ke01NfWA7XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhmb3JtYXR0ZWQpO1xyXG5cclxuICAgICAgdGhpcy5leHBvcnRTZXJ2aWNlLmV4cG9ydERhdGEodGhpcy5jb2x1bW5zLCB0aGlzLmRhdGFTZXQsIGZvcm1hdHRlZCwgdHlwZSwgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMsIGNvbmZpZyk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgb2JqOiB7XHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zLFxyXG4gICAgICAgIGZpbHRlcnM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogJ2Rvd25sb2FkQ3N2J1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGUgPT0gJ3hsc3gnKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcclxuXHJcbiAgfVxyXG5cclxuICBvbkZvbnRDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSB0aGlzLmJvZHlUZXh0Rm9udHNTaXplO1xyXG4gICAgY29uc3QgY29uZmlnID0ge1xyXG4gICAgICBmb250RmFpbWx5OiB0aGlzLmZvbnRGYWltbHksXHJcbiAgICAgIGJvZHlUZXh0Rm9udHNTaXplOiB0aGlzLmJvZHlUZXh0Rm9udHNTaXplLFxyXG4gICAgICBoZWFkZXJUZXh0Rm9udHNTaXplOiB0aGlzLmhlYWRlclRleHRGb250c1NpemUsXHJcbiAgICAgIG9kZFJvd3NCYWNrZ3JvdW5kQ29sb3I6IHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPyB0aGlzLm9kZFJvd3NCYWNrZ3JvdW5kQ29sb3IgOiB1bmRlZmluZWQsXHJcbiAgICAgIHNob3dWZXJ0aWNhbEJvcmRlcjogdGhpcy5zaG93VmVydGljYWxCb3JkZXIsXHJcbiAgICAgIHNlbGVjdGVkVGFibGVMYXlvdXQ6IHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCxcclxuICAgICAgZ2xvYmFsU2VhcmNoOiB0aGlzLnRhYmxlU2VhcmNoXHJcbiAgICB9XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgb2JqOiB7XHJcbiAgICAgICAgZGF0YTogY29uZmlnXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogJ2NvbmZpZydcclxuICAgIH1cclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpXHJcbiAgfVxyXG5cclxuICBvbkdsb2JhbFNlYXJjaCgpIHtcclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBvYmo6IHtcclxuICAgICAgICB0YWJsZVNlYXJjaDogdGhpcy50YWJsZVNlYXJjaFxyXG4gICAgICB9LFxyXG4gICAgICBldmVudFR5cGU6ICdzZWFyY2gnXHJcbiAgICB9XHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KVxyXG4gICAgaWYgKHRoaXMudGFibGVGaWx0ZXJWaWV3SWQpIHtcclxuICAgICAgdGhpcy5zYXZlUHJlc2V0KCdtb3VzZVVwJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaElucHV0KGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgLy8gY29uc29sZS5sb2coJ1NlYXJjaCB2YWx1ZTonLCB2YWx1ZSk7XHJcblxyXG4gICAgaWYgKHZhbHVlID09PSAnJykge1xyXG4gICAgICB0aGlzLnRhYmxlU2VhcmNoID0gJyc7XHJcbiAgICAgIHRoaXMub25HbG9iYWxTZWFyY2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrRmlsdGVyQ2hhbmdlc0VmZmVjdCgpOiBhbnkge1xyXG4gICAgaWYgKCF0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSByZXR1cm4gdHJ1ZVxyXG4gICAgY29uc3QgZmluZERlZmF1bHRGaWx0ZXIgPSB0aGlzLnRhYmxlVmlldz8uZmluZCgoZWxlOiBhbnkpID0+IGVsZT8uaWQgPT0gdGhpcy50YWJsZUZpbHRlclZpZXdJZCk7XHJcbiAgICBjb25zdCBub3JtYWxpemVGaWx0ZXJzID0gKGZpbHRlcnM6IGFueVtdIHwgdW5kZWZpbmVkKTogYW55W10gPT4ge1xyXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZmlsdGVycykpIHJldHVybiBbXTtcclxuICAgICAgY29uc3QgY2xvbmVkID0gZmlsdGVycy5tYXAoZiA9PiB7XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZiA/PyB7fSkpO1xyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpdGVtLl9pZHMpKSBpdGVtLl9pZHMgPSBbXTtcclxuICAgICAgICBpdGVtLl9pZHMgPSBpdGVtLl9pZHMuc2xpY2UoKS5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiBhID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgYiA9PT0gJ251bWJlcicpIHJldHVybiBhIC0gYjtcclxuICAgICAgICAgIHJldHVybiAoJycgKyBhKS5sb2NhbGVDb21wYXJlKCcnICsgYik7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmIChpdGVtLnF1ZXJ5ID09PSBudWxsKSB7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbS5xdWVyeSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpdGVtLnF1ZXJ5Ll9pZHMpKSBpdGVtLnF1ZXJ5Ll9pZHMgPSBbXTtcclxuICAgICAgICAgIGl0ZW0ucXVlcnkuX2lkcyA9IGl0ZW0ucXVlcnkuX2lkcy5zbGljZSgpLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgYSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGIgPT09ICdudW1iZXInKSByZXR1cm4gYSAtIGI7XHJcbiAgICAgICAgICAgIHJldHVybiAoJycgKyBhKS5sb2NhbGVDb21wYXJlKCcnICsgYik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICB9KTtcclxuICAgICAgY2xvbmVkLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZmEgPSAoYS5maWVsZCB8fCAnJykgKyAnfCcgKyAoYS50eXBlIHx8ICcnKTtcclxuICAgICAgICBjb25zdCBmYiA9IChiLmZpZWxkIHx8ICcnKSArICd8JyArIChiLnR5cGUgfHwgJycpO1xyXG4gICAgICAgIHJldHVybiBmYS5sb2NhbGVDb21wYXJlKGZiKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXR1cm4gY2xvbmVkO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBkZWVwRXF1YWwgPSAoYTogYW55LCBiOiBhbnkpOiBib29sZWFuID0+IHtcclxuICAgICAgaWYgKGEgPT09IGIpIHJldHVybiB0cnVlO1xyXG5cclxuICAgICAgaWYgKHR5cGVvZiBhICE9PSAnb2JqZWN0JyB8fCBhID09PSBudWxsIHx8IHR5cGVvZiBiICE9PSAnb2JqZWN0JyB8fCBiID09PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIGEgPT09IGI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGEpICE9PSBBcnJheS5pc0FycmF5KGIpKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShhKSkge1xyXG4gICAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmICghZGVlcEVxdWFsKGFbaV0sIGJbaV0pKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBrZXlzQSA9IE9iamVjdC5rZXlzKGEpO1xyXG4gICAgICBjb25zdCBrZXlzQiA9IE9iamVjdC5rZXlzKGIpO1xyXG4gICAgICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXNBKSB7XHJcbiAgICAgICAgaWYgKCFrZXlzQi5pbmNsdWRlcyhrZXkpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKCFkZWVwRXF1YWwoYVtrZXldLCBiW2tleV0pKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9O1xyXG4gICAgY29uc3Qgbm9ybWFsaXplZEEgPSBub3JtYWxpemVGaWx0ZXJzKGZpbmREZWZhdWx0RmlsdGVyPy5maWx0ZXJzKTtcclxuICAgIGNvbnN0IG5vcm1hbGl6ZWRCID0gbm9ybWFsaXplRmlsdGVycyh0aGlzLmZpbHRlcnNDb25maWcpO1xyXG4gICAgY29uc3QgaXNTYW1lID0gZGVlcEVxdWFsKG5vcm1hbGl6ZWRBLCBub3JtYWxpemVkQik7XHJcbiAgICByZXR1cm4gaXNTYW1lO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gQ2VsbCBTZWxlY3Rpb24gSW1wbGVtZW50ZWQgSGVyZSBJbXBsZW1lbnRlZCBIZXJlXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuICBzZWxlY3RlZENlbGxzOiBhbnlbXSA9IFtdO1xyXG4gIHNlbGVjdGVkS2V5czogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XHJcbiAgc2VsZWN0aW9uU3RhcnQ6IGFueSA9IG51bGw7XHJcbiAgaXNTZWxlY3RpbmcgPSBmYWxzZTtcclxuICBzdGFydFNlbGVjdGlvbihcclxuICAgIHJvd0luZGV4OiBudW1iZXIsXHJcbiAgICBjb2xJbmRleDogbnVtYmVyLFxyXG4gICAgc3ViQ29sSW5kZXg6IG51bWJlciB8IG51bGwsXHJcbiAgICBmaWVsZDogc3RyaW5nLFxyXG4gICAgZXZlbnQ6IE1vdXNlRXZlbnQsXHJcbiAgICBzZWN0aW9uOiBzdHJpbmdcclxuICApIHtcclxuICAgIC8vIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5jbGVhcigpO1xyXG4gICAgY29uc3Qgc2FmZVN1YiA9IHN1YkNvbEluZGV4ID8/IDA7XHJcbiAgICBjb25zdCBrZXkgPSBgJHtyb3dJbmRleH0tJHtjb2xJbmRleH0tJHtzYWZlU3VifS0ke2ZpZWxkfWA7XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb25TdGFydCA9IHsgcm93SW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleDogc2FmZVN1YiwgZmllbGQsIGtleSB9O1xyXG4gICAgdGhpcy5pc1NlbGVjdGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnNlbGVjdGVkS2V5cy5jbGVhcigpO1xyXG4gICAgdGhpcy5zZWxlY3RlZEtleXMuYWRkKGtleSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2VsbHMgPSBbdGhpcy5zZWxlY3Rpb25TdGFydF07XHJcbiAgICBjb25zdCBtb3VzZVVwSGFuZGxlciA9ICgpID0+IHtcclxuICAgICAgdGhpcy5lbmRTZWxlY3Rpb24oKTtcclxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBIYW5kbGVyKTtcclxuICAgIH07XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgbW91c2VVcEhhbmRsZXIpO1xyXG4gICAgdGhpcy51cGRhdGVTZWxlY3Rpb25Cb3VuZGFyaWVzKClcclxuICB9XHJcblxyXG5cclxuICBleHRlbmRTZWxlY3Rpb24oXHJcbiAgICByb3dJbmRleDogbnVtYmVyLFxyXG4gICAgY29sSW5kZXg6IG51bWJlcixcclxuICAgIHN1YkNvbEluZGV4OiBudW1iZXIgfCBudWxsLFxyXG4gICAgZmllbGQ6IHN0cmluZyxcclxuICAgIGV2ZW50OiBNb3VzZUV2ZW50LFxyXG4gICAgc2VjdGlvbjogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNTZWxlY3RpbmcgfHwgIXRoaXMuc2VsZWN0aW9uU3RhcnQpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICBjb25zdCB0YXJnZXRTdWJDb2xJbmRleCA9IHN1YkNvbEluZGV4ID8/IDA7XHJcbiAgICBjb25zdCBuZXdLZXlzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcclxuICAgIGNvbnN0IG5ld0NlbGxzOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3QgbWluUm93ID0gTWF0aC5taW4oc3RhcnQucm93SW5kZXgsIHJvd0luZGV4KTtcclxuICAgIGNvbnN0IG1heFJvdyA9IE1hdGgubWF4KHN0YXJ0LnJvd0luZGV4LCByb3dJbmRleCk7XHJcbiAgICBjb25zdCBjb2x1bW5zVG9TZWxlY3QgPSB0aGlzLmdldENvbHVtblNlbGVjdGlvblJhbmdlKHN0YXJ0LmNvbEluZGV4LCBjb2xJbmRleCwgc3RhcnQuc3ViQ29sSW5kZXgsIHRhcmdldFN1YkNvbEluZGV4KTtcclxuXHJcbiAgICBmb3IgKGxldCByID0gbWluUm93OyByIDw9IG1heFJvdzsgcisrKSB7XHJcbiAgICAgIGZvciAoY29uc3QgY29sSW5mbyBvZiBjb2x1bW5zVG9TZWxlY3QpIHtcclxuICAgICAgICBjb25zdCBrID0gYCR7cn0tJHtjb2xJbmZvLmNvbEluZGV4fS0ke2NvbEluZm8uc3ViQ29sSW5kZXh9LSR7c2VjdGlvbn1gO1xyXG4gICAgICAgIG5ld0tleXMuYWRkKGspO1xyXG4gICAgICAgIG5ld0NlbGxzLnB1c2goe1xyXG4gICAgICAgICAgcm93SW5kZXg6IHIsXHJcbiAgICAgICAgICBjb2xJbmRleDogY29sSW5mby5jb2xJbmRleCxcclxuICAgICAgICAgIHN1YkNvbEluZGV4OiBjb2xJbmZvLnN1YkNvbEluZGV4LFxyXG4gICAgICAgICAgZmllbGQsXHJcbiAgICAgICAgICBrZXk6IGtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRLZXlzID0gbmV3S2V5cztcclxuICAgIHRoaXMuc2VsZWN0ZWRDZWxscyA9IG5ld0NlbGxzO1xyXG4gICAgdGhpcy51cGRhdGVTZWxlY3Rpb25Cb3VuZGFyaWVzKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgLy8gQWRkIGF1dG8tc2Nyb2xsaW5nIGxvZ2ljXHJcbiAgICB0aGlzLmhhbmRsZUNlbGxBdXRvU2Nyb2xsKGV2ZW50KTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG4gIGdldENvbHVtblNlbGVjdGlvblJhbmdlKFxyXG4gICAgc3RhcnRDb2w6IG51bWJlcixcclxuICAgIGVuZENvbDogbnVtYmVyLFxyXG4gICAgc3RhcnRTdWI6IG51bWJlcixcclxuICAgIGVuZFN1YjogbnVtYmVyXHJcbiAgKTogeyBjb2xJbmRleDogbnVtYmVyOyBzdWJDb2xJbmRleDogbnVtYmVyIH1bXSB7XHJcbiAgICBjb25zdCByZXN1bHQ6IHsgY29sSW5kZXg6IG51bWJlcjsgc3ViQ29sSW5kZXg6IG51bWJlciB9W10gPSBbXTtcclxuICAgIGNvbnN0IG1pbkNvbCA9IE1hdGgubWluKHN0YXJ0Q29sLCBlbmRDb2wpO1xyXG4gICAgY29uc3QgbWF4Q29sID0gTWF0aC5tYXgoc3RhcnRDb2wsIGVuZENvbCk7XHJcblxyXG4gICAgY29uc3QgaXNMZWZ0VG9SaWdodCA9IHN0YXJ0Q29sIDw9IGVuZENvbDtcclxuICAgIGZvciAobGV0IGMgPSBtaW5Db2w7IGMgPD0gbWF4Q29sOyBjKyspIHtcclxuICAgICAgY29uc3Qgc3ViQ29sQ291bnQgPSB0aGlzLmdldFN1YkNvbHVtbkNvdW50KGMpO1xyXG5cclxuICAgICAgaWYgKGMgPT09IHN0YXJ0Q29sICYmIGMgPT09IGVuZENvbCkge1xyXG4gICAgICAgIGNvbnN0IG1pblN1YiA9IE1hdGgubWluKHN0YXJ0U3ViLCBlbmRTdWIpO1xyXG4gICAgICAgIGNvbnN0IG1heFN1YiA9IE1hdGgubWF4KHN0YXJ0U3ViLCBlbmRTdWIpO1xyXG4gICAgICAgIGZvciAobGV0IHMgPSBtaW5TdWI7IHMgPD0gbWF4U3ViICYmIHMgPCBzdWJDb2xDb3VudDsgcysrKSB7XHJcbiAgICAgICAgICByZXN1bHQucHVzaCh7IGNvbEluZGV4OiBjLCBzdWJDb2xJbmRleDogcyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoYyA9PT0gc3RhcnRDb2wpIHtcclxuICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodCkge1xyXG4gICAgICAgICAgZm9yIChsZXQgcyA9IHN0YXJ0U3ViOyBzIDwgc3ViQ29sQ291bnQ7IHMrKykge1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaCh7IGNvbEluZGV4OiBjLCBzdWJDb2xJbmRleDogcyB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZm9yIChsZXQgcyA9IDA7IHMgPD0gc3RhcnRTdWIgJiYgcyA8IHN1YkNvbENvdW50OyBzKyspIHtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2goeyBjb2xJbmRleDogYywgc3ViQ29sSW5kZXg6IHMgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGMgPT09IGVuZENvbCkge1xyXG4gICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0KSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8PSBlbmRTdWIgJiYgcyA8IHN1YkNvbENvdW50OyBzKyspIHtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2goeyBjb2xJbmRleDogYywgc3ViQ29sSW5kZXg6IHMgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZvciAobGV0IHMgPSBlbmRTdWI7IHMgPCBzdWJDb2xDb3VudDsgcysrKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHsgY29sSW5kZXg6IGMsIHN1YkNvbEluZGV4OiBzIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8IHN1YkNvbENvdW50OyBzKyspIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKHsgY29sSW5kZXg6IGMsIHN1YkNvbEluZGV4OiBzIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBnZXRTdWJDb2x1bW5Db3VudChjb2xJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGlmICghdGhpcy5jb2x1bW5zIHx8IGNvbEluZGV4IDwgMCB8fCBjb2xJbmRleCA+PSB0aGlzLmNvbHVtbnMubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiAxO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29sdW1uID0gdGhpcy5jb2x1bW5zW2NvbEluZGV4XTtcclxuICAgIGlmIChjb2x1bW4uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2x1bW4uY2hpbGRyZW4pKSB7XHJcbiAgICAgIHJldHVybiBjb2x1bW4uY2hpbGRyZW4ubGVuZ3RoO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIDE7XHJcbiAgfVxyXG4gIGlzR3JvdXBDb2x1bW4oY29sSW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0U3ViQ29sdW1uQ291bnQoY29sSW5kZXgpID4gMTtcclxuICB9XHJcbiAgZW5kU2VsZWN0aW9uKCkge1xyXG4gICAgdGhpcy5pc1NlbGVjdGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zdG9wQXV0b1Njcm9sbCgpO1xyXG4gICAgdGhpcy51cGRhdGVTZWxlY3Rpb25Cb3VuZGFyaWVzKCk7XHJcbiAgfVxyXG4gIGlzU2VsZWN0ZWQoXHJcbiAgICByb3dJbmRleDogbnVtYmVyLFxyXG4gICAgY29sSW5kZXg6IG51bWJlcixcclxuICAgIHN1YkNvbEluZGV4OiBudW1iZXIgfCBudWxsLFxyXG4gICAgZmllbGQ6IHN0cmluZyxcclxuICAgIHNlY3Rpb246IHN0cmluZ1xyXG4gICkge1xyXG4gICAgY29uc3Qgc2FmZVN1YiA9IHN1YkNvbEluZGV4ID8/IDA7XHJcbiAgICBjb25zdCBrZXkgPSBgJHtyb3dJbmRleH0tJHtjb2xJbmRleH0tJHtzYWZlU3VifS0ke3NlY3Rpb259YDtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkS2V5cy5oYXMoa2V5KTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHNlbGVjdGlvbkJvdW5kczoge1xyXG4gICAgdG9wOiBudW1iZXIgfCBudWxsO1xyXG4gICAgYm90dG9tOiBudW1iZXIgfCBudWxsO1xyXG4gICAgbGVmdDogeyBjb2xJbmRleDogbnVtYmVyOyBzdWJDb2xJbmRleDogbnVtYmVyIH0gfCBudWxsO1xyXG4gICAgcmlnaHQ6IHsgY29sSW5kZXg6IG51bWJlcjsgc3ViQ29sSW5kZXg6IG51bWJlciB9IHwgbnVsbDtcclxuICB9ID0geyB0b3A6IG51bGwsIGJvdHRvbTogbnVsbCwgbGVmdDogbnVsbCwgcmlnaHQ6IG51bGwgfTtcclxuXHJcbiAgdXBkYXRlU2VsZWN0aW9uQm91bmRhcmllcygpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uQm91bmRzID0geyB0b3A6IG51bGwsIGJvdHRvbTogbnVsbCwgbGVmdDogbnVsbCwgcmlnaHQ6IG51bGwgfTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEdldCBhbGwgdW5pcXVlIHJvdyBpbmRpY2VzIGFuZCBmaW5kIG1pbi9tYXhcclxuICAgIGNvbnN0IHJvd0luZGljZXMgPSBbLi4ubmV3IFNldCh0aGlzLnNlbGVjdGVkQ2VsbHMubWFwKGNlbGwgPT4gY2VsbC5yb3dJbmRleCkpXTtcclxuICAgIHRoaXMuc2VsZWN0aW9uQm91bmRzLnRvcCA9IE1hdGgubWluKC4uLnJvd0luZGljZXMpO1xyXG4gICAgdGhpcy5zZWxlY3Rpb25Cb3VuZHMuYm90dG9tID0gTWF0aC5tYXgoLi4ucm93SW5kaWNlcyk7XHJcblxyXG4gICAgLy8gRm9yIGxlZnQvcmlnaHQgYm91bmRhcmllcywgd2UgbmVlZCB0byBjb25zaWRlciBib3RoIGNvbEluZGV4IGFuZCBzdWJDb2xJbmRleFxyXG4gICAgY29uc3QgbGVmdE1vc3QgPSB0aGlzLmZpbmRMZWZ0TW9zdENlbGwoKTtcclxuICAgIGNvbnN0IHJpZ2h0TW9zdCA9IHRoaXMuZmluZFJpZ2h0TW9zdENlbGwoKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGlvbkJvdW5kcy5sZWZ0ID0gbGVmdE1vc3Q7XHJcbiAgICB0aGlzLnNlbGVjdGlvbkJvdW5kcy5yaWdodCA9IHJpZ2h0TW9zdDtcclxuICB9XHJcbiAgZmluZExlZnRNb3N0Q2VsbCgpOiB7IGNvbEluZGV4OiBudW1iZXI7IHN1YkNvbEluZGV4OiBudW1iZXIgfSB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDZWxscy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xyXG5cclxuICAgIGNvbnN0IG1pbkNvbEluZGV4ID0gTWF0aC5taW4oLi4udGhpcy5zZWxlY3RlZENlbGxzLm1hcChjZWxsID0+IGNlbGwuY29sSW5kZXgpKTtcclxuICAgIGNvbnN0IGxlZnRDb2xDZWxscyA9IHRoaXMuc2VsZWN0ZWRDZWxscy5maWx0ZXIoY2VsbCA9PiBjZWxsLmNvbEluZGV4ID09PSBtaW5Db2xJbmRleCk7XHJcbiAgICBjb25zdCBtaW5TdWJDb2xJbmRleCA9IE1hdGgubWluKC4uLmxlZnRDb2xDZWxscy5tYXAoY2VsbCA9PiBjZWxsLnN1YkNvbEluZGV4KSk7XHJcblxyXG4gICAgcmV0dXJuIHsgY29sSW5kZXg6IG1pbkNvbEluZGV4LCBzdWJDb2xJbmRleDogbWluU3ViQ29sSW5kZXggfTtcclxuICB9XHJcbiAgZmluZFJpZ2h0TW9zdENlbGwoKTogeyBjb2xJbmRleDogbnVtYmVyOyBzdWJDb2xJbmRleDogbnVtYmVyIH0gfCBudWxsIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBjb25zdCBtYXhDb2xJbmRleCA9IE1hdGgubWF4KC4uLnRoaXMuc2VsZWN0ZWRDZWxscy5tYXAoY2VsbCA9PiBjZWxsLmNvbEluZGV4KSk7XHJcbiAgICBjb25zdCByaWdodENvbENlbGxzID0gdGhpcy5zZWxlY3RlZENlbGxzLmZpbHRlcihjZWxsID0+IGNlbGwuY29sSW5kZXggPT09IG1heENvbEluZGV4KTtcclxuICAgIGNvbnN0IG1heFN1YkNvbEluZGV4ID0gTWF0aC5tYXgoLi4ucmlnaHRDb2xDZWxscy5tYXAoY2VsbCA9PiBjZWxsLnN1YkNvbEluZGV4KSk7XHJcblxyXG4gICAgcmV0dXJuIHsgY29sSW5kZXg6IG1heENvbEluZGV4LCBzdWJDb2xJbmRleDogbWF4U3ViQ29sSW5kZXggfTtcclxuICB9XHJcbiAgaXNUb3BCb3JkZXIocm93SW5kZXg6IG51bWJlciwgY29sSW5kZXg6IG51bWJlciwgc3ViQ29sSW5kZXg6IG51bWJlciB8IG51bGwsIHNlY3Rpb246IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgc2FmZVN1YiA9IHN1YkNvbEluZGV4ID8/IDA7XHJcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gdGhpcy5zZWxlY3RlZEtleXMuaGFzKGAke3Jvd0luZGV4fS0ke2NvbEluZGV4fS0ke3NhZmVTdWJ9LSR7c2VjdGlvbn1gKTtcclxuICAgIHJldHVybiBpc1NlbGVjdGVkICYmIHRoaXMuc2VsZWN0aW9uQm91bmRzLnRvcCAhPT0gbnVsbCAmJiByb3dJbmRleCA9PT0gdGhpcy5zZWxlY3Rpb25Cb3VuZHMudG9wO1xyXG4gIH1cclxuICBpc0JvdHRvbUJvcmRlcihyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyLCBzdWJDb2xJbmRleDogbnVtYmVyIHwgbnVsbCwgc2VjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBzYWZlU3ViID0gc3ViQ29sSW5kZXggPz8gMDtcclxuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkS2V5cy5oYXMoYCR7cm93SW5kZXh9LSR7Y29sSW5kZXh9LSR7c2FmZVN1Yn0tJHtzZWN0aW9ufWApO1xyXG4gICAgcmV0dXJuIGlzU2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3Rpb25Cb3VuZHMuYm90dG9tICE9PSBudWxsICYmIHJvd0luZGV4ID09PSB0aGlzLnNlbGVjdGlvbkJvdW5kcy5ib3R0b207XHJcbiAgfVxyXG4gIGlzTGVmdEJvcmRlcihyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyLCBzdWJDb2xJbmRleDogbnVtYmVyIHwgbnVsbCwgc2VjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBzYWZlU3ViID0gc3ViQ29sSW5kZXggPz8gMDtcclxuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkS2V5cy5oYXMoYCR7cm93SW5kZXh9LSR7Y29sSW5kZXh9LSR7c2FmZVN1Yn0tJHtzZWN0aW9ufWApO1xyXG4gICAgcmV0dXJuIGlzU2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3Rpb25Cb3VuZHMubGVmdCAhPT0gbnVsbCAmJlxyXG4gICAgICBjb2xJbmRleCA9PT0gdGhpcy5zZWxlY3Rpb25Cb3VuZHMubGVmdC5jb2xJbmRleCAmJlxyXG4gICAgICBzYWZlU3ViID09PSB0aGlzLnNlbGVjdGlvbkJvdW5kcy5sZWZ0LnN1YkNvbEluZGV4O1xyXG4gIH1cclxuXHJcbiAgaXNSaWdodEJvcmRlcihyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyLCBzdWJDb2xJbmRleDogbnVtYmVyIHwgbnVsbCwgc2VjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBzYWZlU3ViID0gc3ViQ29sSW5kZXggPz8gMDtcclxuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkS2V5cy5oYXMoYCR7cm93SW5kZXh9LSR7Y29sSW5kZXh9LSR7c2FmZVN1Yn0tJHtzZWN0aW9ufWApO1xyXG4gICAgcmV0dXJuIGlzU2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3Rpb25Cb3VuZHMucmlnaHQgIT09IG51bGwgJiZcclxuICAgICAgY29sSW5kZXggPT09IHRoaXMuc2VsZWN0aW9uQm91bmRzLnJpZ2h0LmNvbEluZGV4ICYmXHJcbiAgICAgIHNhZmVTdWIgPT09IHRoaXMuc2VsZWN0aW9uQm91bmRzLnJpZ2h0LnN1YkNvbEluZGV4O1xyXG4gIH1cclxuXHJcbiAgaXNUb3BMZWZ0Q29ybmVyKHJvd0luZGV4OiBudW1iZXIsIGNvbEluZGV4OiBudW1iZXIsIHN1YkNvbEluZGV4OiBudW1iZXIgfCBudWxsLCBzZWN0aW9uOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzVG9wQm9yZGVyKHJvd0luZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pICYmIHRoaXMuaXNMZWZ0Qm9yZGVyKHJvd0luZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgaXNUb3BSaWdodENvcm5lcihyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyLCBzdWJDb2xJbmRleDogbnVtYmVyIHwgbnVsbCwgc2VjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc1RvcEJvcmRlcihyb3dJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKSAmJiB0aGlzLmlzUmlnaHRCb3JkZXIocm93SW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbik7XHJcbiAgfVxyXG5cclxuICBpc0JvdHRvbUxlZnRDb3JuZXIocm93SW5kZXg6IG51bWJlciwgY29sSW5kZXg6IG51bWJlciwgc3ViQ29sSW5kZXg6IG51bWJlciB8IG51bGwsIHNlY3Rpb246IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNCb3R0b21Cb3JkZXIocm93SW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbikgJiYgdGhpcy5pc0xlZnRCb3JkZXIocm93SW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbik7XHJcbiAgfVxyXG5cclxuICBpc0JvdHRvbVJpZ2h0Q29ybmVyKHJvd0luZGV4OiBudW1iZXIsIGNvbEluZGV4OiBudW1iZXIsIHN1YkNvbEluZGV4OiBudW1iZXIgfCBudWxsLCBzZWN0aW9uOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzQm90dG9tQm9yZGVyKHJvd0luZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pICYmIHRoaXMuaXNSaWdodEJvcmRlcihyb3dJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKTtcclxuICB9XHJcblxyXG5cclxuICBjZWxsU2VsZWN0aW9uQXV0b1Njcm9sbEludGVydmFsOiBhbnkgPSBudWxsO1xyXG4gIHByaXZhdGUgc2Nyb2xsU3BlZWQgPSAxNTA7XHJcbiAgcHJpdmF0ZSBzY3JvbGxNYXJnaW4gPSAzMDtcclxuICBoYW5kbGVDZWxsQXV0b1Njcm9sbChldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuY2VsbFNlbGVjdGlvbkF1dG9TY3JvbGxJbnRlcnZhbCkge1xyXG4gICAgICBjbGVhckludGVydmFsKHRoaXMuY2VsbFNlbGVjdGlvbkF1dG9TY3JvbGxJbnRlcnZhbCk7XHJcbiAgICAgIHRoaXMuY2VsbFNlbGVjdGlvbkF1dG9TY3JvbGxJbnRlcnZhbCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBob3Jpem9udGFsQ29udGFpbmVyID0gdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgdmVydGljYWxDb250YWluZXIgPSB0aGlzLm1haW5TY3JvbGwubmF0aXZlRWxlbWVudDtcclxuICAgIGlmICghaG9yaXpvbnRhbENvbnRhaW5lciB8fCAhdmVydGljYWxDb250YWluZXIpIHJldHVybjtcclxuICAgIGNvbnN0IGhvcml6b250YWxSZWN0ID0gaG9yaXpvbnRhbENvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IG1vdXNlWCA9IGV2ZW50LmNsaWVudFg7XHJcbiAgICBjb25zdCB2ZXJ0aWNhbFJlY3QgPSB2ZXJ0aWNhbENvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IG1vdXNlWSA9IGV2ZW50LmNsaWVudFk7XHJcbiAgICBjb25zdCBuZWFyVG9wID0gbW91c2VZIC0gdmVydGljYWxSZWN0LnRvcCA8IHRoaXMuc2Nyb2xsTWFyZ2luO1xyXG4gICAgY29uc3QgbmVhckJvdHRvbSA9IHZlcnRpY2FsUmVjdC5ib3R0b20gLSBtb3VzZVkgPCB0aGlzLnNjcm9sbE1hcmdpbjtcclxuICAgIGNvbnN0IG5lYXJMZWZ0ID0gbW91c2VYIC0gaG9yaXpvbnRhbFJlY3QubGVmdCA8IHRoaXMuc2Nyb2xsTWFyZ2luO1xyXG4gICAgY29uc3QgbmVhclJpZ2h0ID0gaG9yaXpvbnRhbFJlY3QucmlnaHQgLSBtb3VzZVggPCB0aGlzLnNjcm9sbE1hcmdpbjtcclxuICAgIGxldCBzY3JvbGxYID0gMDtcclxuICAgIGxldCBzY3JvbGxZID0gMDtcclxuICAgIGlmIChuZWFyVG9wKSBzY3JvbGxZID0gLXRoaXMuc2Nyb2xsU3BlZWQ7XHJcbiAgICBpZiAobmVhckJvdHRvbSkgc2Nyb2xsWSA9IHRoaXMuc2Nyb2xsU3BlZWQ7XHJcbiAgICBpZiAobmVhckxlZnQpIHNjcm9sbFggPSAtdGhpcy5zY3JvbGxTcGVlZDtcclxuICAgIGlmIChuZWFyUmlnaHQpIHNjcm9sbFggPSB0aGlzLnNjcm9sbFNwZWVkO1xyXG4gICAgaWYgKHNjcm9sbFggIT09IDAgfHwgc2Nyb2xsWSAhPT0gMCkge1xyXG4gICAgICB0aGlzLmNlbGxTZWxlY3Rpb25BdXRvU2Nyb2xsSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHNjcm9sbFggIT09IDApIHtcclxuICAgICAgICAgIGhvcml6b250YWxDb250YWluZXIuc2Nyb2xsQnkoc2Nyb2xsWCwgMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzY3JvbGxZICE9PSAwKSB7XHJcbiAgICAgICAgICB2ZXJ0aWNhbENvbnRhaW5lci5zY3JvbGxCeSgwLCBzY3JvbGxZKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RvcEF1dG9TY3JvbGwoKSB7XHJcbiAgICBpZiAodGhpcy5jZWxsU2VsZWN0aW9uQXV0b1Njcm9sbEludGVydmFsKSB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5jZWxsU2VsZWN0aW9uQXV0b1Njcm9sbEludGVydmFsKTtcclxuICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uQXV0b1Njcm9sbEludGVydmFsID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyBSb3cgU2VsZWN0aW9uIGZyb20gdGhlIEluZGV4aW5nIEltcGxlbWVudGVkIEhlcmVcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4gIHJvd1NlbGVjdGVkSW5kZXhlczogU2V0PG51bWJlcj4gPSBuZXcgU2V0KCk7XHJcbiAgcm93U2VsZWN0aW5nID0gZmFsc2U7XHJcbiAgcm93U2VsZWN0aW9uU3RhcnRJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgYXV0b1Njcm9sbEludGVydmFsOiBhbnkgPSBudWxsO1xyXG5cclxuICBnZXQgZmlyc3RTZWxlY3RlZFJvdygpOiBudW1iZXIgfCBudWxsIHtcclxuICAgIGlmICh0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5zaXplID09PSAwKSByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiBNYXRoLm1pbiguLi50aGlzLnJvd1NlbGVjdGVkSW5kZXhlcyk7XHJcbiAgfVxyXG5cclxuICBnZXQgbGFzdFNlbGVjdGVkUm93KCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLnNpemUgPT09IDApIHJldHVybiBudWxsO1xyXG4gICAgcmV0dXJuIE1hdGgubWF4KC4uLnRoaXMucm93U2VsZWN0ZWRJbmRleGVzKTtcclxuICB9XHJcblxyXG5cclxuICBvblJvd01vdXNlRG93bihpbmRleDogbnVtYmVyLCBldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMucm93U2VsZWN0aW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRLZXlzLmNsZWFyKCk7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGlvblN0YXJ0SW5kZXggPSBpbmRleDtcclxuICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmNsZWFyKCk7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5hZGQoaW5kZXgpO1xyXG4gICAgdGhpcy5hY3RpdmVDZWxsID0gJyc7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgY29uc3QgbW91c2VNb3ZlSGFuZGxlciA9IChlOiBNb3VzZUV2ZW50KSA9PiB0aGlzLmhhbmRsZUF1dG9TY3JvbGwoZSk7XHJcbiAgICBjb25zdCBtb3VzZVVwSGFuZGxlciA9ICgpID0+IHtcclxuICAgICAgdGhpcy5vblJvd01vdXNlVXAoKTtcclxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBIYW5kbGVyKTtcclxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW91c2VNb3ZlSGFuZGxlcik7XHJcbiAgICAgIGlmICh0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCkge1xyXG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuYXV0b1Njcm9sbEludGVydmFsKTtcclxuICAgICAgICB0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBIYW5kbGVyKTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlTW92ZUhhbmRsZXIpO1xyXG4gIH1cclxuXHJcbiAgb25Sb3dNb3VzZU92ZXIoaW5kZXg6IG51bWJlciwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5yb3dTZWxlY3RpbmcgfHwgdGhpcy5yb3dTZWxlY3Rpb25TdGFydEluZGV4ID09PSBudWxsKSByZXR1cm47XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5jbGVhcigpO1xyXG4gICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1pbih0aGlzLnJvd1NlbGVjdGlvblN0YXJ0SW5kZXgsIGluZGV4KTtcclxuICAgIGNvbnN0IGVuZCA9IE1hdGgubWF4KHRoaXMucm93U2VsZWN0aW9uU3RhcnRJbmRleCwgaW5kZXgpO1xyXG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSsrKSB7XHJcbiAgICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmFkZChpKTtcclxuICAgIH1cclxuICAgIC8vIGNvbnNvbGUubG9nKFsuLi50aGlzLnJvd1NlbGVjdGVkSW5kZXhlc10pO1xyXG4gIH1cclxuXHJcbiAgb25Sb3dNb3VzZVVwKCkge1xyXG4gICAgdGhpcy5yb3dTZWxlY3RpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMucm93U2VsZWN0aW9uU3RhcnRJbmRleCA9IG51bGw7XHJcbiAgfVxyXG4gIGhhbmRsZUF1dG9TY3JvbGwoZTogTW91c2VFdmVudCkge1xyXG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKCFjb250YWluZXIpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCByZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgY29uc3QgZWRnZVNpemUgPSA0MFxyXG4gICAgbGV0IHNjcm9sbEFtb3VudCA9IDA7XHJcblxyXG4gICAgaWYgKGUuY2xpZW50WSA8IHJlY3QudG9wICsgZWRnZVNpemUpIHtcclxuICAgICAgc2Nyb2xsQW1vdW50ID0gLTE1MDtcclxuICAgIH0gZWxzZSBpZiAoZS5jbGllbnRZID4gcmVjdC5ib3R0b20gLSBlZGdlU2l6ZSkge1xyXG4gICAgICBzY3JvbGxBbW91bnQgPSAxNTA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNjcm9sbEFtb3VudCAhPT0gMCkge1xyXG4gICAgICBpZiAoIXRoaXMuYXV0b1Njcm9sbEludGVydmFsKSB7XHJcbiAgICAgICAgY29uc3Qgc3RlcCA9ICgpID0+IHtcclxuICAgICAgICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgKz0gc2Nyb2xsQW1vdW50O1xyXG4gICAgICAgICAgdGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShzdGVwKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuYXV0b1Njcm9sbEludGVydmFsKSB7XHJcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwpO1xyXG4gICAgICAgIHRoaXMuYXV0b1Njcm9sbEludGVydmFsID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIGdldFNlbGVjdGVkRGF0YUZvckNvcHkoKTogYW55W11bXSB7XHJcbiAgLy8gICBjb25zdCBjb3BpZWRSb3dzOiBhbnlbXVtdID0gW107XHJcbiAgLy8gICBjb25zdCBmaW5kUm93QnlWaXJ0dWFsSW5kZXggPSAodkluZGV4OiBudW1iZXIpID0+XHJcbiAgLy8gICAgIHRoaXMuZGF0YVNldC5maW5kKChyOiBhbnkpID0+IHIuX192aXJ0dWFsSW5kZXggPT09IHZJbmRleCk7XHJcbiAgLy8gICBpZiAodGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMgJiYgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuc2l6ZSA+IDApIHtcclxuICAvLyAgICAgY29uc3Qgc29ydGVkSW5kZXhlcyA9IFsuLi50aGlzLnJvd1NlbGVjdGVkSW5kZXhlc10uc29ydCgoYSwgYikgPT4gYSAtIGIpO1xyXG4gIC8vICAgICBmb3IgKGNvbnN0IHZJbmRleCBvZiBzb3J0ZWRJbmRleGVzKSB7XHJcbiAgLy8gICAgICAgY29uc3Qgcm93ID0gZmluZFJvd0J5VmlydHVhbEluZGV4KHZJbmRleCk7XHJcbiAgLy8gICAgICAgaWYgKCFyb3cpIGNvbnRpbnVlO1xyXG4gIC8vICAgICAgIGNvbnN0IHJvd1ZhbHVlcyA9IHRoaXMuY29sdW1ucy5mbGF0TWFwKGNvbCA9PlxyXG4gIC8vICAgICAgICAgY29sLmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKVxyXG4gIC8vICAgICAgICAgICA/IGNvbC5jaGlsZHJlbi5tYXAoKGM6IHsgZmllbGQ6IHN0cmluZyB9KSA9PlxyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGMuZmllbGQpID8/ICcnXHJcbiAgLy8gICAgICAgICAgICAgKVxyXG4gIC8vICAgICAgICAgICA6IHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpID8/ICcnXHJcbiAgLy8gICAgICAgKTtcclxuICAvLyAgICAgICBjb3BpZWRSb3dzLnB1c2gocm93VmFsdWVzKTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfVxyXG5cclxuICAvLyAgIGlmICh0aGlzLnNlbGVjdGVkQ2VsbHMgJiYgdGhpcy5zZWxlY3RlZENlbGxzLmxlbmd0aCA+IDApIHtcclxuICAvLyAgICAgY29uc3Qgcm93c01hcCA9IG5ldyBNYXA8bnVtYmVyLCBhbnlbXT4oKTtcclxuICAvLyAgICAgZm9yIChjb25zdCBjZWxsIG9mIHRoaXMuc2VsZWN0ZWRDZWxscykge1xyXG4gIC8vICAgICAgIGNvbnN0IHJvdyA9IGZpbmRSb3dCeVZpcnR1YWxJbmRleChjZWxsLnJvd0luZGV4KTtcclxuICAvLyAgICAgICBpZiAoIXJvdykgY29udGludWU7XHJcblxyXG4gIC8vICAgICAgIGNvbnN0IGNvbCA9IHRoaXMuY29sdW1uc1tjZWxsLmNvbEluZGV4XTtcclxuICAvLyAgICAgICBsZXQgZmllbGROYW1lID0gY29sPy5maWVsZDtcclxuICAvLyAgICAgICBpZiAoY29sPy5jaGlsZHJlbiAmJiBjb2wuY2hpbGRyZW5bY2VsbC5zdWJDb2xJbmRleF0pIHtcclxuICAvLyAgICAgICAgIGZpZWxkTmFtZSA9IGNvbC5jaGlsZHJlbltjZWxsLnN1YkNvbEluZGV4XS5maWVsZDtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgZmllbGROYW1lKSA/PyAnJztcclxuXHJcbiAgLy8gICAgICAgaWYgKCFyb3dzTWFwLmhhcyhjZWxsLnJvd0luZGV4KSkgcm93c01hcC5zZXQoY2VsbC5yb3dJbmRleCwgW10pO1xyXG4gIC8vICAgICAgIHJvd3NNYXAuZ2V0KGNlbGwucm93SW5kZXgpIS5wdXNoKHZhbHVlKTtcclxuICAvLyAgICAgfVxyXG5cclxuICAvLyAgICAgY29uc3Qgc29ydGVkQ2VsbHMgPSBbLi4ucm93c01hcC5lbnRyaWVzKCldXHJcbiAgLy8gICAgICAgLnNvcnQoKFthXSwgW2JdKSA9PiBhIC0gYilcclxuICAvLyAgICAgICAubWFwKChbXywgdl0pID0+IHYpO1xyXG5cclxuICAvLyAgICAgY29waWVkUm93cy5wdXNoKC4uLnNvcnRlZENlbGxzKTtcclxuICAvLyAgIH1cclxuXHJcbiAgLy8gICBpZiAoY29waWVkUm93cy5sZW5ndGggPT09IDApIHtcclxuICAvLyAgICAgY29uc3QgYWN0aXZlQ2VsbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hY3RpdmUtY2VsbCcpO1xyXG4gIC8vICAgICBpZiAoYWN0aXZlQ2VsbCkgcmV0dXJuIFtbYWN0aXZlQ2VsbC50ZXh0Q29udGVudD8udHJpbSgpIHx8ICcnXV07XHJcbiAgLy8gICB9XHJcbiAgLy8gICBjb25zdCBtYXhDb2xzID0gY29waWVkUm93cy5yZWR1Y2UoKG1heCwgcm93KSA9PiBNYXRoLm1heChtYXgsIHJvdy5sZW5ndGgpLCAwKTtcclxuICAvLyAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBjb3BpZWRSb3dzLm1hcChyb3cgPT4ge1xyXG4gIC8vICAgICBjb25zdCBuZXdSb3cgPSBbLi4ucm93XTtcclxuICAvLyAgICAgd2hpbGUgKG5ld1Jvdy5sZW5ndGggPCBtYXhDb2xzKSBuZXdSb3cucHVzaCgnJyk7IFxyXG4gIC8vICAgICByZXR1cm4gbmV3Um93O1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gICByZXR1cm4gbm9ybWFsaXplZDtcclxuICAvLyB9XHJcblxyXG5cclxuICB1bmRvU3RhY2s6IGFueVtdW10gPSBbXTtcclxuICByZWRvU3RhY2s6IGFueVtdW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBjbG9uZURhdGEoZGF0YTogYW55W10pOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgfVxyXG5cclxuICBwZXJmb3JtQ3V0KHNlbGVjdGVkRGF0YTogYW55W11bXSkge1xyXG4gICAgLy8gU2F2ZSBjdXJyZW50IHN0YXRlIGZvciB1bmRvXHJcbiAgICB0aGlzLnVuZG9TdGFjay5wdXNoKHRoaXMuY2xvbmVEYXRhKHRoaXMudmlzaWJsZVJvd3MpKTtcclxuICAgIHRoaXMucmVkb1N0YWNrID0gW107IC8vIENsZWFyIHJlZG8gc3RhY2sgb24gbmV3IGFjdGlvblxyXG5cclxuICAgIC8vIFBlcmZvcm0gY3V0XHJcbiAgICB0aGlzLmNvcHlTZXJ2aWNlLmN1dFdpdGhBbmltYXRpb24oc2VsZWN0ZWREYXRhKTtcclxuICAgIGNvbnN0IHsgdXBkYXRlZFJvd3MgfSA9IHRoaXMuY29weVNlcnZpY2UuY3V0U2VsZWN0ZWRTZWxlY3RlZERhdGEoXHJcbiAgICAgIHRoaXMudmlzaWJsZVJvd3MsXHJcbiAgICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLFxyXG4gICAgICB0aGlzLnNlbGVjdGVkQ2VsbHMsXHJcbiAgICAgIHRoaXMuY29sdW1ucyxcclxuICAgICAgdGhpcy5zZXROZXN0ZWRWYWx1ZS5iaW5kKHRoaXMpXHJcbiAgICApO1xyXG5cclxuICAgIC8vIGNvbnNvbGUubG9nKCdVcGRhdGVkIFJvd3M6ICcsIHVwZGF0ZWRSb3dzKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgZ2V0U2VsZWN0ZWREYXRhRm9yQ29weSgpOiBhbnlbXVtdIHtcclxuICAgIHJldHVybiB0aGlzLmNvcHlTZXJ2aWNlLmdldFNlbGVjdGVkRGF0YUZvckNvcHkoXHJcbiAgICAgIHRoaXMuZGF0YVNldCxcclxuICAgICAgdGhpcy5jb2x1bW5zLFxyXG4gICAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcyxcclxuICAgICAgdGhpcy5zZWxlY3RlZENlbGxzLFxyXG4gICAgICB0aGlzLmdldE5lc3RlZFZhbHVlLmJpbmQodGhpcylcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IGlzRm9ybUZpZWxkID1cclxuICAgICAgdGFyZ2V0LnRhZ05hbWUgPT09ICdJTlBVVCcgfHxcclxuICAgICAgdGFyZ2V0LnRhZ05hbWUgPT09ICdURVhUQVJFQScgfHxcclxuICAgICAgdGFyZ2V0LmlzQ29udGVudEVkaXRhYmxlO1xyXG4gICAgaWYgKGlzRm9ybUZpZWxkKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdGFibGVDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZGF0YS1ncmlkLWJvZHktd3JhcHBlcicpO1xyXG4gICAgaWYgKHRhYmxlQ29udGFpbmVyICYmICF0YWJsZUNvbnRhaW5lci5jb250YWlucyh0YXJnZXQpKSByZXR1cm47XHJcbiAgICBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdjJykge1xyXG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDZWxscz8ubGVuZ3RoICYmICF0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5zaXplKSByZXR1cm5cclxuICAgICAgY29uc3Qgc2VsZWN0ZWREYXRhID0gdGhpcy5nZXRTZWxlY3RlZERhdGFGb3JDb3B5KCk7XHJcbiAgICAgIC8vIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMuY29weVNlcnZpY2UuY29weVRvQ2xpcGJvYXJkKHNlbGVjdGVkRGF0YSk7XHJcblxyXG4gICAgfSBlbHNlIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3gnKSB7XHJcbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZENlbGxzPy5sZW5ndGggfHwgIXRoaXMuZW5hYmxlQ3V0KSByZXR1cm5cclxuICAgICAgY29uc3Qgc2VsZWN0ZWREYXRhID0gdGhpcy5nZXRTZWxlY3RlZERhdGFGb3JDb3B5KCk7XHJcbiAgICAgIC8vIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMucGVyZm9ybUN1dChzZWxlY3RlZERhdGEpO1xyXG5cclxuICAgIH0gZWxzZSBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICd6Jykge1xyXG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDZWxscz8ubGVuZ3RoKSByZXR1cm5cclxuICAgICAgLy8gZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy51bmRvKCk7XHJcblxyXG4gICAgfSBlbHNlIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3knKSB7XHJcbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZENlbGxzPy5sZW5ndGgpIHJldHVyblxyXG4gICAgICAvLyBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB0aGlzLnJlZG8oKTtcclxuICAgIH0gZWxzZSBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5ID09PSAnYScpIHtcclxuICAgICAgLy8g4pyFIFNlbGVjdCBhbGwgY2VsbHNcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy5zZWxlY3RBbGxDZWxscygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHNlbGVjdEFsbENlbGxzKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZENlbGxzID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkS2V5cy5jbGVhcigpO1xyXG4gICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuY2xlYXIoKTtcclxuXHJcbiAgICAvLyBTZXQgc2VsZWN0aW9uIHN0YXJ0IGxpa2Ugc2luZ2xlIHNlbGVjdGlvbiAoZmlyc3QgY2VsbClcclxuICAgIGlmICh0aGlzLmRhdGFTZXQubGVuZ3RoICYmIHRoaXMuY29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgZmlyc3RGaWVsZCA9IHRoaXMuY29sdW1uc1swXS5maWVsZCB8fCB0aGlzLmNvbHVtbnNbMF0ubmFtZTtcclxuICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydCA9IHtcclxuICAgICAgICByb3dJbmRleDogMCxcclxuICAgICAgICBjb2xJbmRleDogMCxcclxuICAgICAgICBzdWJDb2xJbmRleDogMCxcclxuICAgICAgICBmaWVsZDogZmlyc3RGaWVsZCxcclxuICAgICAgICBrZXk6IGAwLTAtMC0ke2ZpcnN0RmllbGR9YCxcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzU2VsZWN0aW5nID0gdHJ1ZTtcclxuXHJcbiAgICBmb3IgKGxldCByb3dJbmRleCA9IDA7IHJvd0luZGV4IDw9IHRoaXMuZGF0YVNldD8ubGVuZ3RoOyByb3dJbmRleCsrKSB7XHJcbiAgICAgIGlmICghcm93SW5kZXgpIGNvbnRpbnVlO1xyXG4gICAgICBjb25zdCByb3cgPSB0aGlzLmRhdGFTZXRbcm93SW5kZXhdO1xyXG4gICAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5hZGQocm93SW5kZXgpO1xyXG5cclxuICAgICAgLy8gZm9yIChsZXQgY29sSW5kZXggPSAwOyBjb2xJbmRleCA8IHRoaXMuY29sdW1ucy5sZW5ndGg7IGNvbEluZGV4KyspIHtcclxuICAgICAgLy8gICBjb25zdCBjb2wgPSB0aGlzLmNvbHVtbnNbY29sSW5kZXhdO1xyXG4gICAgICAvLyAgIGNvbnN0IGZpZWxkID0gY29sLmZpZWxkIHx8IGNvbC5uYW1lO1xyXG4gICAgICAvLyAgIGlmKCFjb2wuaXNfdmlzaWJsZSkgY29udGludWU7XHJcblxyXG4gICAgICAvLyAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAvLyAgICAgY29sLmNoaWxkcmVuLmZvckVhY2goKHN1YjogYW55LCBzdWJDb2xJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIC8vICAgICAgIGNvbnN0IGtleSA9IGAke3Jvd0luZGV4fS0ke2NvbEluZGV4fS0ke3N1YkNvbEluZGV4fS0ke2ZpZWxkfWA7XHJcbiAgICAgIC8vICAgICAgIHRoaXMuc2VsZWN0ZWRLZXlzLmFkZChrZXkpO1xyXG4gICAgICAvLyAgICAgICB0aGlzLnNlbGVjdGVkQ2VsbHMucHVzaCh7XHJcbiAgICAgIC8vICAgICAgICAgcm93SW5kZXgsXHJcbiAgICAgIC8vICAgICAgICAgY29sSW5kZXgsXHJcbiAgICAgIC8vICAgICAgICAgc3ViQ29sSW5kZXgsXHJcbiAgICAgIC8vICAgICAgICAgZmllbGQsXHJcbiAgICAgIC8vICAgICAgICAga2V5LFxyXG4gICAgICAvLyAgICAgICB9KTtcclxuICAgICAgLy8gICAgIH0pO1xyXG4gICAgICAvLyAgIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgICBjb25zdCBrZXkgPSBgJHtyb3dJbmRleH0tJHtjb2xJbmRleH0tMC0ke2ZpZWxkfWA7XHJcbiAgICAgIC8vICAgICB0aGlzLnNlbGVjdGVkS2V5cy5hZGQoa2V5KTtcclxuICAgICAgLy8gICAgIHRoaXMuc2VsZWN0ZWRDZWxscy5wdXNoKHtcclxuICAgICAgLy8gICAgICAgcm93SW5kZXgsXHJcbiAgICAgIC8vICAgICAgIGNvbEluZGV4LFxyXG4gICAgICAvLyAgICAgICBzdWJDb2xJbmRleDogMCxcclxuICAgICAgLy8gICAgICAgZmllbGQsXHJcbiAgICAgIC8vICAgICAgIGtleSxcclxuICAgICAgLy8gICAgIH0pO1xyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFVwZGF0ZSBoaWdobGlnaHRpbmcgYW5kIFVJXHJcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbkJvdW5kYXJpZXMoKTtcclxuXHJcbiAgICAvLyBTdG9wIFwic2VsZWN0aW5nXCIgbW9kZSBzaW5jZSBpdCdzIGEgb25lLXRpbWUgc2VsZWN0LWFsbFxyXG4gICAgdGhpcy5pc1NlbGVjdGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICB1bmRvKCkge1xyXG4gICAgaWYgKHRoaXMudW5kb1N0YWNrLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy51bmRvU3RhY2sucG9wKCkhO1xyXG4gICAgICB0aGlzLnJlZG9TdGFjay5wdXNoKHRoaXMuY2xvbmVEYXRhKHRoaXMudmlzaWJsZVJvd3MpKTtcclxuICAgICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuY2xvbmVEYXRhKHByZXZTdGF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWRvKCkge1xyXG4gICAgaWYgKHRoaXMucmVkb1N0YWNrLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgbmV4dFN0YXRlID0gdGhpcy5yZWRvU3RhY2sucG9wKCkhO1xyXG4gICAgICB0aGlzLnVuZG9TdGFjay5wdXNoKHRoaXMuY2xvbmVEYXRhKHRoaXMudmlzaWJsZVJvd3MpKTtcclxuICAgICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuY2xvbmVEYXRhKG5leHRTdGF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OnBhc3RlJywgWyckZXZlbnQnXSlcclxuICBhc3luYyBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgY29uc3QgdGFnID0gdGFyZ2V0Py50YWdOYW1lPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKHRhZyA9PT0gJ2lucHV0JyB8fCB0YWcgPT09ICd0ZXh0YXJlYScgfHwgdGFyZ2V0Py5nZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScpID09PSAndHJ1ZScpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5zZWxlY3RlZENlbGxzPy5sZW5ndGggfHwgIXRoaXMuYWN0aXZlQ2VsbCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHRleHQgPSBldmVudC5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0Jyk7XHJcbiAgICBpZiAoIXRleHQpIHJldHVybjtcclxuICAgIGNvbnN0IHVzZXJDb25maXJtZWQgPSBhd2FpdCB0aGlzLnNob3dDb25maXJtYXRpb25Nb2RhbChcclxuICAgICAgJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBwYXN0ZSB0aGUgY29waWVkIGRhdGE/J1xyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoIXVzZXJDb25maXJtZWQpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHN0YXJ0Q2VsbCA9IHRoaXMuc2VsZWN0ZWRDZWxscz8uWzBdO1xyXG4gICAgaWYgKCFzdGFydENlbGwpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCB1cGRhdGVkUm93cyA9IGF3YWl0IHRoaXMuY29weVNlcnZpY2UucGFzdGVGcm9tQ2xpcGJvYXJkVGV4dChcclxuICAgICAgdGV4dCxcclxuICAgICAgdGhpcy52aXNpYmxlUm93cyxcclxuICAgICAgdGhpcy5jb2x1bW5zLFxyXG4gICAgICBzdGFydENlbGwucm93SW5kZXgsXHJcbiAgICAgIHN0YXJ0Q2VsbC5jb2xJbmRleCxcclxuICAgICAgc3RhcnRDZWxsLnN1YkNvbEluZGV4XHJcbiAgICApO1xyXG5cclxuICAgIGlmICh1cGRhdGVkUm93cz8udXBkYXRlUm93cz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoe1xyXG4gICAgICAgIGRhdGE6IHVwZGF0ZWRSb3dzPy51cGRhdGVSb3dzLFxyXG4gICAgICAgIGV2ZW50VHlwZTogJ29uQ2VsbEVkaXQnLFxyXG4gICAgICAgIGNvbHVtbjogdXBkYXRlZFJvd3M/LmN1cnJlbnRDb2x1bXNcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0NvbmZpcm1hdGlvbk1vZGFsKG1lc3NhZ2U6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICBjb25zdCBvdmVybGF5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIG92ZXJsYXkuY2xhc3NMaXN0LmFkZCgnY3VzdG9tLW92ZXJsYXktd3JhcHBlcicpO1xyXG4gICAgICBvdmVybGF5LmlubmVySFRNTCA9IGBcclxuICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1vdmVybGF5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1tb2RhbFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1tb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwibW9kYWwtbWVzc2FnZVwiPiR7bWVzc2FnZX08L3A+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1hY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1jb25maXJtXCI+Q29uZmlybTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tY2FuY2VsXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgYDtcclxuXHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQob3ZlcmxheSk7XHJcbiAgICAgIGNvbnN0IGNvbmZpcm1CdG4gPSBvdmVybGF5LnF1ZXJ5U2VsZWN0b3IoJy5idG4tY29uZmlybScpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBjb25zdCBjYW5jZWxCdG4gPSBvdmVybGF5LnF1ZXJ5U2VsZWN0b3IoJy5idG4tY2FuY2VsJykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChvdmVybGF5KTtcclxuICAgICAgfTtcclxuICAgICAgY29uZmlybUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICBjbGVhbnVwKCk7XHJcbiAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBjYW5jZWxCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgY2xlYW51cCgpO1xyXG4gICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIGlzRGF0ZSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIWlzTmFOKG5ldyBEYXRlKHZhbHVlKT8uZ2V0VGltZSgpKTtcclxuICB9XHJcblxyXG5cclxuICAvLyBIb2xkIGV4cGFuZGVkIElEcyAoYXJyYXkgZm9yIG11bHRpcGxlLCBzaW5nbGUgdmFsdWUgZm9yIHNpbmdsZSlcclxuICBleHBhbmRlZGVkRGV0YWlsUm93czogKHN0cmluZyB8IG51bWJlcilbXSB8IHN0cmluZyB8IG51bWJlciA9ICcnO1xyXG5cclxuICB0b2dnbGVEZXRhaWxSb3dFeHBhbmQocm93OiBhbnkpIHtcclxuICAgIGNvbnN0IGlkID0gcm93Py5pZCB8fCByb3c/Ll9pZDtcclxuICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSAnQXNzZXRzJyAmJiByb3c/LmRldGFpbD8uY29sdW1ucykge1xyXG4gICAgICByb3cuZGV0YWlsLmNvbHVtbnMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaXRlbS53aWR0aCA9IGl0ZW0/LndpZHRoIHx8ICh0aGlzLmRhdGFHcmlkQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLyByb3cuZGV0YWlsLmNvbHVtbnM/Lmxlbmd0aClcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMucHJldmlld05lc3RlZENvbHMgPSB0aGlzLmRlZXBDbG9uZUNvbHVtbnMocm93LmRldGFpbC5jb2x1bW5zKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmtlZXBNdWx0aXBsZUV4cGFuZGVkRGV0YWlscykge1xyXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cykpIHtcclxuICAgICAgICB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzID0gW107XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZXhwYW5kZWQgPSB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzIGFzIChzdHJpbmcgfCBudW1iZXIpW107XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gZXhwYW5kZWQuaW5kZXhPZihpZCk7XHJcblxyXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgIGV4cGFuZGVkLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZXhwYW5kZWQucHVzaChpZCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzID09PSBpZCkge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MgPSAnJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzID0gaWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdm9pZCB0aGlzLnJpZ2h0UGlubmVkSGVhZGVyPy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICB0aGlzLmNlbnRlclBpbm5lZEJvZHk/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgIHRoaXMucmlnaHRQaW5uZWRCb2R5Py5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAzMDApXHJcbiAgfVxyXG5cclxuICBpc0RldGFpbHNFeHBhbmRlZChyb3c6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgaWQgPSByb3c/LmlkIHx8IHJvdz8uX2lkO1xyXG5cclxuICAgIGlmICh0aGlzLmtlZXBNdWx0aXBsZUV4cGFuZGVkRGV0YWlscykge1xyXG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzKSAmJlxyXG4gICAgICAgIHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MuaW5jbHVkZXMoaWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MgPT09IGlkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RmlsdGVyVmFsdWUob3B0aW9uOiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIG9wdGlvbj8udmFsdWUgPz8gb3B0aW9uO1xyXG4gIH1cclxuXHJcblxyXG4gIG9wZW5JbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgdG9nZ2xlTWVudShpOiBudW1iZXIsIGV2ZW50PzogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50KSB7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB9XHJcbiAgICB0aGlzLm9wZW5JbmRleCA9IHRoaXMub3BlbkluZGV4ID09PSBpID8gbnVsbCA6IGk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCduZXN0ZWRUYWJsZScpXHJcbiAgbmVzdGVkVGFibGUhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBnZXQgaGFzVmVydGljYWxTY3JvbGwoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMubmVzdGVkVGFibGUpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiB0aGlzLm5lc3RlZFRhYmxlLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gdGhpcy5uZXN0ZWRUYWJsZS5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcclxuICB9XHJcblxyXG4gIGdldCBoYXNIb3Jpem9udGFsU2Nyb2xsKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLm5lc3RlZFRhYmxlKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCBlbCA9IHRoaXMubmVzdGVkVGFibGUubmF0aXZlRWxlbWVudDtcclxuICAgIHJldHVybiBlbC5zY3JvbGxXaWR0aCA+IGVsLmNsaWVudFdpZHRoO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldFRvdGFsQW1vdW50KGNvbHVtbjogYW55KSB7XHJcbiAgICBpZiAoIWNvbHVtbj8uaXNfYW1vdW50KSByZXR1cm47XHJcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMub3JpZ2luYWxEYXRhU2V0LnJlZHVjZSgoc3VtLCByb3cpID0+IHtcclxuICAgICAgY29uc3QgdmFsdWUgPSByb3dbY29sdW1uLmZpZWxkXSB8fCAwO1xyXG4gICAgICByZXR1cm4gc3VtICsgdmFsdWU7XHJcbiAgICB9LCAwKTtcclxuXHJcbiAgICByZXR1cm4gYCR7dGhpcy5jdXJyZW5jeVN5bWJvbH0ke3RvdGFsfWA7XHJcbiAgfVxyXG5cclxuICBkcm9wQ29sdW1uKGV2ZW50OiBDZGtEcmFnRHJvcDxhbnlbXT4sIHJvdzogYW55KSB7XHJcbiAgICAvLyBSZW9yZGVyIHRoZSBjb2x1bW5zIGFycmF5XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkocm93LmRldGFpbC5jb2x1bW5zLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgY3VycmVudFN1YlNvcnRDb2x1bW46IHN0cmluZyB8IG51bGwgPSBudWxsOyAvLyBhY3RpdmUgY29sdW1uXHJcbiAgY3VycmVudFNvcnREaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnID0gJ2FzYyc7IC8vIGFjdGl2ZSBkaXJlY3Rpb25cclxuXHJcbiAgc29ydE5lc3RlZENvbChjb2w6IGFueSwgcm93OiBhbnkpIHtcclxuICAgIGNvbnN0IGRhdGFTZXQgPSByb3c/LmRldGFpbD8ucmVzdWx0O1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFN1YlNvcnRDb2x1bW4gPT09IGNvbC5maWVsZCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uID0gdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiA9PT0gJ2FzYycgPyAnZGVzYycgOiAnYXNjJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFN1YlNvcnRDb2x1bW4gPSBjb2wuZmllbGQ7XHJcbiAgICAgIHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPSAnYXNjJztcclxuICAgIH1cclxuICAgIGNvbC5vcmRlcl9ieSA9IHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb247XHJcblxyXG4gICAgLy8gU29ydCBjb3B5IGluc3RlYWQgb2YgbXV0YXRpbmdcclxuICAgIGNvbnN0IHNvcnRlZCA9IFsuLi5kYXRhU2V0XS5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgIGxldCBhVmFsID0gYVtjb2wuZmllbGRdO1xyXG4gICAgICBsZXQgYlZhbCA9IGJbY29sLmZpZWxkXTtcclxuICAgICAgYVZhbCA9IGFWYWwgPT0gbnVsbCA/ICcnIDogYVZhbDtcclxuICAgICAgYlZhbCA9IGJWYWwgPT0gbnVsbCA/ICcnIDogYlZhbDtcclxuXHJcbiAgICAgIGlmIChjb2wudHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgYVZhbCA9IG5ldyBEYXRlKGFWYWwpLmdldFRpbWUoKTtcclxuICAgICAgICBiVmFsID0gbmV3IERhdGUoYlZhbCkuZ2V0VGltZSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBhTnVtID0gcGFyc2VGbG9hdChhVmFsKTtcclxuICAgICAgY29uc3QgYk51bSA9IHBhcnNlRmxvYXQoYlZhbCk7XHJcbiAgICAgIGNvbnN0IGJvdGhOdW1iZXJzID0gIWlzTmFOKGFOdW0pICYmICFpc05hTihiTnVtKTtcclxuXHJcbiAgICAgIGlmIChib3RoTnVtYmVycykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uID09PSAnYXNjJyA/IGFOdW0gLSBiTnVtIDogYk51bSAtIGFOdW07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgY29tcCA9IFN0cmluZyhhVmFsKS5sb2NhbGVDb21wYXJlKFN0cmluZyhiVmFsKSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPT09ICdhc2MnID8gY29tcCA6IC1jb21wO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByb3cuZGV0YWlsLnJlc3VsdCA9IHNvcnRlZDtcclxuXHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0Q29sdW1uV2lkdGhQeChyb3c6IGFueSwgY29sOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKGNvbC53aWR0aCkgcmV0dXJuIGNvbC53aWR0aCArICdweCc7XHJcbiAgICBjb25zdCBwaXhlbHMgPSB0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Py5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aCAvIHJvdy5kZXRhaWw/LmNvbHVtbnMubGVuZ3RoO1xyXG4gICAgcmV0dXJuIHBpeGVscyArICdweCc7XHJcbiAgfVxyXG5cclxuICBmdWxsc2NyZWVuSW1hZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgLy8gQXNzZXN0cyBOZXN0ZWQgVGFibGUgV29yayBJbXBsZW1lbnRlZCBIZXJlXHJcblxyXG4gIHBpblVucGluQ29sdW0oY29sOiBhbnksIHZhbHVlOiAnbGVmdCcgfCAncmlnaHQnIHwgbnVsbCwgY29sdW1uczogYW55W10pIHtcclxuICAgIGNvbC5waW5uZWQgPSB2YWx1ZTtcclxuICAgIGNvbnN0IGxlZnQgPSBjb2x1bW5zLmZpbHRlcihjID0+IGMucGlubmVkID09PSAnbGVmdCcpO1xyXG4gICAgY29uc3QgbWlkZGxlID0gY29sdW1ucy5maWx0ZXIoYyA9PiAhYy5waW5uZWQgfHwgYy5waW5uZWQgPT09IG51bGwpO1xyXG4gICAgY29uc3QgcmlnaHQgPSBjb2x1bW5zLmZpbHRlcihjID0+IGMucGlubmVkID09PSAncmlnaHQnKTtcclxuICAgIGNvbHVtbnMubGVuZ3RoID0gMDtcclxuICAgIGNvbHVtbnMucHVzaCguLi5sZWZ0LCAuLi5taWRkbGUsIC4uLnJpZ2h0KTtcclxuICAgIHRoaXMuYWN0aXZlQ29sID0gbnVsbDtcclxuICB9XHJcblxyXG4gIGdldExlZnRQaW5uZWRDb3VudChjb2x1bW5zOiBhbnlbXSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gY29sdW1ucy5maWx0ZXIoYyA9PiBjLnBpbm5lZCA9PT0gJ2xlZnQnKS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBnZXRSaWdodFBpbm5lZENvdW50KGNvbHVtbnM6IGFueVtdKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBjb2x1bW5zLmZpbHRlcihjID0+IGMucGlubmVkID09PSAncmlnaHQnKS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBnZXRTdGlja3lMZWZ0KGNvbHVtbnM6IGFueVtdLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBsZWZ0ID0gMDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5kZXg7IGkrKykge1xyXG4gICAgICBjb25zdCBwcmV2Q29sID0gY29sdW1uc1tpXTtcclxuICAgICAgaWYgKHByZXZDb2wucGlubmVkID09PSAnbGVmdCcpIHtcclxuICAgICAgICBsZWZ0ICs9IHByZXZDb2wud2lkdGggfHwgMTAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYCR7bGVmdH1weGA7XHJcbiAgfVxyXG5cclxuICBwcmV2aWV3TmVzdGVkQ29sczogYW55W10gPSBbXTtcclxuICBvbk5lc3RlZENvbFNvcnQoZXZlbnQ6IENka0RyYWdTb3J0RXZlbnQ8YW55W10+LCBjb2x1bW5zOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgaWYgKCFldmVudCB8fCAhY29sdW1ucykgcmV0dXJuO1xyXG4gICAgY29uc3QgZmlyc3RQb3NpdGlvbnMgPSBuZXcgTWFwPEhUTUxFbGVtZW50LCBudW1iZXI+KCk7XHJcbiAgICBjb2x1bW5zLmZvckVhY2goKGNvbCkgPT4ge1xyXG4gICAgICBjb25zdCBjb2xDZWxscyA9IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2ZpZWxkPVwiJHtjb2wuZmllbGR9XCJdYCkpIGFzIEhUTUxFbGVtZW50W107XHJcbiAgICAgIGNvbENlbGxzLmZvckVhY2goKGVsKSA9PiBmaXJzdFBvc2l0aW9ucy5zZXQoZWwsIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQpKTtcclxuICAgIH0pO1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KGNvbHVtbnMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gICAgICBjb2x1bW5zLmZvckVhY2goKGNvbCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRDZWxscyA9IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2ZpZWxkPVwiJHtjb2wuZmllbGR9XCJdYCkpIGFzIEhUTUxFbGVtZW50W107XHJcbiAgICAgICAgdXBkYXRlZENlbGxzLmZvckVhY2goKGVsKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBuZXdMZWZ0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcclxuICAgICAgICAgIGNvbnN0IG9sZExlZnQgPSBmaXJzdFBvc2l0aW9ucy5nZXQoZWwpID8/IG5ld0xlZnQ7XHJcbiAgICAgICAgICBjb25zdCBkZWx0YVggPSBvbGRMZWZ0IC0gbmV3TGVmdDtcclxuXHJcbiAgICAgICAgICBpZiAoZGVsdGFYICE9PSAwKSB7XHJcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSc7XHJcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKCR7ZGVsdGFYfXB4KWA7XHJcbiAgICAgICAgICAgIHZvaWQgZWwub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAndHJhbnNmb3JtIDI1MG1zIGVhc2UnO1xyXG4gICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlWCgwKSc7XHJcbiAgICAgICAgICAgIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICcnO1xyXG4gICAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICcnO1xyXG4gICAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBjbGVhbnVwKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGNsZWFudXApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIHNhdmVTZWxlY3Rpb24oc2VsZWN0ZWRJZHM6IHN0cmluZ1tdLCB0YWJsZVR5cGU6IHN0cmluZykge1xyXG4gICAgaWYgKCF0YWJsZVR5cGUpIHJldHVybjtcclxuICAgIGNvbnN0IHN0b3JlZCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2RhdGF0YWJsZVNlbGVjdGlvbnMnKSB8fCAne1wic2VsZWN0ZWRSb3dzXCI6IHt9fScpO1xyXG4gICAgY29uc3QgYWxsU2VsZWN0ZWQgPSBzdG9yZWQuc2VsZWN0ZWRSb3dzIHx8IHt9O1xyXG4gICAgYWxsU2VsZWN0ZWRbdGFibGVUeXBlXSA9IHNlbGVjdGVkSWRzO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICdkYXRhdGFibGVTZWxlY3Rpb25zJyxcclxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgIHNlbGVjdGVkUm93czogYWxsU2VsZWN0ZWQsXHJcbiAgICAgICAgbGlzdGluZ1R5cGU6IHRhYmxlVHlwZVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG5cclxuICByZXN0b3JlU2VsZWN0aW9uKHRhYmxlVHlwZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBzdG9yZWQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkYXRhdGFibGVTZWxlY3Rpb25zJykgfHwgJ3t9Jyk7XHJcbiAgICBjb25zdCBpZHMgPSBzdG9yZWQuc2VsZWN0ZWRSb3dzPy5bdGFibGVUeXBlXSB8fCBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gbmV3IFNldChpZHMpO1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRSb3dzO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBpc091dHNpZGVDb250YWluZXIgPSBmYWxzZTtcclxuICBwcml2YXRlIGNvbnRhaW5lclJlY3Q6IERPTVJlY3QgfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gIG9uRHJhZ1N0YXJ0ZWQoY29sOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudERyYWdnaW5nQ29sdW1uID0gY29sO1xyXG4gICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGEtZ3JpZC1tYWluLWNvbnRhaW5lcicpO1xyXG4gICAgdGhpcy5jb250YWluZXJSZWN0ID0gY29udGFpbmVyPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB8fCBudWxsO1xyXG4gIH1cclxuXHJcbiAgb25EcmFnTW92ZWQoZXZlbnQ6IENka0RyYWdNb3ZlKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuY29udGFpbmVyUmVjdCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHsgeCwgeSB9ID0gZXZlbnQucG9pbnRlclBvc2l0aW9uO1xyXG4gICAgY29uc3QgaXNPdXRzaWRlID1cclxuICAgICAgeCA8IHRoaXMuY29udGFpbmVyUmVjdC5sZWZ0IHx8XHJcbiAgICAgIHggPiB0aGlzLmNvbnRhaW5lclJlY3QucmlnaHQgfHxcclxuICAgICAgeSA8IHRoaXMuY29udGFpbmVyUmVjdC50b3AgfHxcclxuICAgICAgeSA+IHRoaXMuY29udGFpbmVyUmVjdC5ib3R0b207XHJcblxyXG4gICAgaWYgKGlzT3V0c2lkZSAhPT0gdGhpcy5pc091dHNpZGVDb250YWluZXIpIHtcclxuICAgICAgdGhpcy5pc091dHNpZGVDb250YWluZXIgPSBpc091dHNpZGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkRyYWdFbmRlZCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pc091dHNpZGVDb250YWluZXIgJiYgdGhpcy5jdXJyZW50RHJhZ2dpbmdDb2x1bW4pIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnREcmFnZ2luZ0NvbHVtbiEuaXNfdmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY3VycmVudERyYWdnaW5nQ29sdW1uID0gbnVsbDtcclxuICAgICAgICB0aGlzLmlzT3V0c2lkZUNvbnRhaW5lciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwKTtcclxuICAgIHRoaXMuY29udGFpbmVyUmVjdCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXRTdGFydEluZGV4KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0cyA9PT0gMFxyXG4gICAgICA/IDBcclxuICAgICAgOiAodGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgLSAxKSAqIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCArIDEgfHwgMDtcclxuICB9XHJcblxyXG4gIGhhc0FueURlZmF1bHRWaWV3KCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVWaWV3Py5zb21lKCh4KSA9PiB4LmlzX2RlZmF1bHQpO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldCBpc1RhYmxlUHJlc2V0Tm90Q2hhbmdlZCgpIHtcclxuICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCBjdXJyUHJlc2V0ID0gdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGU7XHJcblxyXG4gICAgY29uc3QgY3VycmVudFByZXNldENvbHVtbnMgPSBjdXJyUHJlc2V0Py5jb2x1bW5zPy5tYXAoKGNvbDogeyBmaWVsZDogYW55OyB3aWR0aDogYW55OyBwaW5uZWQ6IGFueTsgfSkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGZpZWxkOiBjb2wuZmllbGQsXHJcbiAgICAgICAgd2lkdGg6IGNvbC53aWR0aCxcclxuICAgICAgICBwaW5uZWQ6IGNvbC5waW5uZWRcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5jb2x1bW5zPy5tYXAoY29sID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBmaWVsZDogY29sLmZpZWxkLFxyXG4gICAgICAgIHdpZHRoOiBjb2wud2lkdGgsXHJcbiAgICAgICAgcGlubmVkOiBjb2wucGlubmVkXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHN0cmluZ3NDdXJyZW50UHJlc3RDb2xzID0gSlNPTi5zdHJpbmdpZnkoY3VycmVudFByZXNldENvbHVtbnMpO1xyXG4gICAgY29uc3Qgc3RyaW5nQ29sdW1ucyA9IEpTT04uc3RyaW5naWZ5KGNvbHVtbnMpO1xyXG4gICAgY29uc3QgZmlsdGVycyA9IHRoaXMuZmlsdGVyc0NvbmZpZy5tYXAoKGZpbHRlcikgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGZpbGVkOiBmaWx0ZXIuZmllbGQsXHJcbiAgICAgICAgcXVlcnk6IHtcclxuICAgICAgICAgIGNvbmRpdGlvbjogZmlsdGVyPy5xdWVyeT8uY29uZGl0aW9uLFxyXG4gICAgICAgICAgZmlyc3RfY29uZGl0aW9uOiBmaWx0ZXI/LnF1ZXJ5Py5maXJzdF9jb25kaXRpb24sXHJcbiAgICAgICAgICBmaXJzdF92YWx1ZTogZmlsdGVyPy5xdWVyeT8uZmlyc3RfdmFsdWUsXHJcbiAgICAgICAgICBzZWNvbmRfY29uZGl0aW9uOiBmaWx0ZXI/LnF1ZXJ5Py5zZWNvbmRfY29uZGl0aW9uLFxyXG4gICAgICAgICAgc2Vjb25kX3ZhbHVlOiBmaWx0ZXI/LnF1ZXJ5Py5zZWNvbmRfdmFsdWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBfaWRzOiBmaWx0ZXI/Ll9pZHNcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICBjb25zdCBjdXJyZW50UHJlc2V0RmlsdGVycyA9IGN1cnJQcmVzZXQ/LmZpbHRlcnM/Lm1hcCgoZmlsdGVyOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBmaWxlZDogZmlsdGVyLmZpZWxkLFxyXG4gICAgICAgIHF1ZXJ5OiBmaWx0ZXIucXVlcnksXHJcbiAgICAgICAgX2lkczogZmlsdGVyPy5faWRzXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG5cclxuICAgIC8vIGNvbnNvbGUubG9nKFwiZmlsdGVyIGNvbmdpZzogXCIsIGZpbHRlcnMpO1xyXG4gICAgLy8gY29uc29sZS5sb2coXCJjdXJyZW50IHByZXNldCBmaWx0ZXJzOiBcIiwgY3VycmVudFByZXNldEZpbHRlcnMpO1xyXG5cclxuICAgIC8vIGNvbnNvbGUubG9nKCdpc0VxdWFsJywgc3RyaW5nc0N1cnJlbnRQcmVzdENvbHMgPT0gc3RyaW5nQ29sdW1ucyk7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnQ3VycmVudCBUZW1wIFByZXNldCA6ICcsIGN1cnJQcmVzZXQpXHJcbiAgICAvLyBjb25zb2xlLmxvZygnQ3VycmVudCBUZW1wIFByZXNldCBDb2xzIGNvbHVtbnM6ICcsIGN1cnJlbnRQcmVzZXRDb2x1bW5zKVxyXG4gICAgLy8gY29uc29sZS5sb2coJ0N1cnJlbnQgY29sdW1uczogJywgY29sdW1ucyk7XHJcblxyXG4gICAgaWYgKCFjdXJyZW50UHJlc2V0Q29sdW1ucykgcmV0dXJuIHRydWU7XHJcbiAgICByZXR1cm4gKGN1cnJlbnRQcmVzZXRDb2x1bW5zICYmIChzdHJpbmdzQ3VycmVudFByZXN0Q29scyA9PSBzdHJpbmdDb2x1bW5zKSAmJiAoSlNPTi5zdHJpbmdpZnkoZmlsdGVycykgPT0gSlNPTi5zdHJpbmdpZnkoY3VycmVudFByZXNldEZpbHRlcnMpKSAmJiAodGhpcy5mb250RmFpbWx5ID09IGN1cnJQcmVzZXQuY29uZmlnLmZvbnRGYWltbHkpICYmICh0aGlzLmJvZHlUZXh0Rm9udHNTaXplID09IGN1cnJQcmVzZXQuY29uZmlnLmJvZHlUZXh0Rm9udHNTaXplKSAmJiAodGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID09IHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSkpO1xyXG5cclxuICAgIC8vIHJldHVybiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgb25BY3Rpb25CdXR0b25DbGljayhidXR0b246IHN0cmluZykge1xyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBsaXN0aW5nVHlwZTogdGhpcy5saXN0aW5nVHlwZSxcclxuICAgICAgICBvYmo6IGJ1dHRvblxyXG4gICAgICB9LFxyXG4gICAgICBldmVudFR5cGU6IFwib25BY3Rpb25CdXR0b25DbGlja1wiLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcblxyXG4gIHNldEFjdGl2ZVRhYih0YWI6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlVGFiID0gdGFiO1xyXG4gICAgY29uc3QgYWxsVGFicyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2FjdGl2ZVRhYnMnKSB8fCAne30nKTtcclxuICAgIGFsbFRhYnNbdGhpcy50YWJsZVR5cGVdID0gdGFiO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FjdGl2ZVRhYnMnLCBKU09OLnN0cmluZ2lmeShhbGxUYWJzKSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIHRhYmxlVHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICAgICAgb2JqOiB0YWJcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiAnb25UYWJDaGFuZ2UnLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGdldEJhY2tncm91bmRDb2xvcihyb3c6IGFueSwgaXNFdmVuOiBib29sZWFuLCBzZWN0aW9uOiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKHRoaXMuaG92ZXJlZFJvd0lkID09PSAocm93Ll9pZCB8fCByb3cuaWQpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJvd0hvdmVyQ29sb3I7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5pc1Jvd1NlbGVjdGVkKHJvdykpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY2hlY2tlZFJvd0JhY2tncm91bmRDb2xvcjtcclxuICAgIH1cclxuICAgIGxldCBiYXNlQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICBpZiAodGhpcy5yb3dTaGFkaW5nRW5hYmxlZCkge1xyXG4gICAgICBiYXNlQ29sb3IgPSBpc0V2ZW4gPyB0aGlzLmV2ZW5Sb3dzQmFja2dyb3VuZENvbG9yIDogdGhpcy5vZGRSb3dzQmFja2dyb3VuZENvbG9yO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYmFzZUNvbG9yID0gdGhpcy5ldmVuUm93c0JhY2tncm91bmRDb2xvcjtcclxuICAgIH1cclxuICAgIGlmICghYmFzZUNvbG9yKSB7XHJcbiAgICAgIGlmIChzZWN0aW9uID09PSAnbGVmdCcpIHtcclxuICAgICAgICBiYXNlQ29sb3IgPSB0aGlzLmxlZnRQaW5uZWRCYWNrZ3JvdW5kQ29sb3I7XHJcbiAgICAgIH0gZWxzZSBpZiAoc2VjdGlvbiA9PT0gJ3JpZ2h0Jykge1xyXG4gICAgICAgIGJhc2VDb2xvciA9IHRoaXMucmlnaHRQaW5uZWRCYWNrZ3JvdW5kQ29sb3I7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYmFzZUNvbG9yID0gdGhpcy5ib2R5QmFja2dyb3VuZENvbG9yO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYmFzZUNvbG9yO1xyXG4gIH1cclxuXHJcbiAgaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgZWwgPSB0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICByZXR1cm4gZWwuc2Nyb2xsV2lkdGggPiBlbC5jbGllbnRXaWR0aDtcclxuICB9XHJcblxyXG5cclxuICBnZXRTYWZlQ29tbWVudChkZXNjcmlwdGlvbjogc3RyaW5nKTogU2FmZUh0bWwge1xyXG4gICAgcmV0dXJuIHRoaXMuY2xlYW5FZGl0b3JDb250ZW50KGRlc2NyaXB0aW9uKTtcclxuICB9XHJcbiAgY2xlYW5FZGl0b3JDb250ZW50KGNvbnRlbnQ6IHN0cmluZyk6IFNhZmVIdG1sIHtcclxuICAgIGlmICghY29udGVudCkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICAvLyAxLiBEZWNvZGUgSFRNTCBlbnRpdGllc1xyXG4gICAgY29uc3QgdGV4dGFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpO1xyXG4gICAgdGV4dGFyZWEuaW5uZXJIVE1MID0gY29udGVudDtcclxuICAgIGxldCBkZWNvZGVkID0gdGV4dGFyZWEudmFsdWU7XHJcblxyXG4gICAgZGVjb2RlZCA9IGRlY29kZWRcclxuICAgICAgLnJlcGxhY2UoLzxcXC8/KHNwYW58cHx0aGVhZHx0Ym9keXx0Zm9vdClbXj5dKj4vZywgJycpXHJcbiAgICAgIC5yZXBsYWNlKC8mbmJzcDsvZywgJyAnKTtcclxuXHJcbiAgICAvLyBFbnN1cmUgY2xlYW4gdGFibGUgc3RydWN0dXJlXHJcbiAgICBkZWNvZGVkID0gZGVjb2RlZFxyXG4gICAgICAucmVwbGFjZSgvPHRhYmxlW14+XSo+L2csICc8dGFibGU+JylcclxuICAgICAgLnJlcGxhY2UoLzx0cltePl0qPi9nLCAnPHRyPicpXHJcbiAgICAgIC5yZXBsYWNlKC88dGhbXj5dKj4vZywgJzx0aD4nKVxyXG4gICAgICAucmVwbGFjZSgvPHRkW14+XSo+L2csICc8dGQ+Jyk7ICAvLyBSZW1vdmUgPHRoZWFkPiBhbmQgPHRib2R5PiB0YWdzXHJcblxyXG4gICAgLy8gNC4gQWRkIGlubGluZSBzdHlsZXNcclxuICAgIGRlY29kZWQgPSBkZWNvZGVkXHJcbiAgICAgIC8vIEFkZCBpbmxpbmUgc3R5bGVzIHRvIDx0YWJsZT5cclxuICAgICAgLnJlcGxhY2UoLzx0YWJsZShbXj5dKik+L2csIGA8dGFibGUgc3R5bGU9XCJ3aWR0aDogMTAwJTsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgcGFkZGluZzogMjBweDsgZm9udC1zaXplOiAxNHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1wiJDE+YClcclxuICAgICAgLy8gQWRkIGlubGluZSBzdHlsZXMgdG8gPHRyPlxyXG4gICAgICAucmVwbGFjZSgvPHRyKFtePl0qKT4vZywgYDx0ciBzdHlsZT1cImJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjY2NjO1wiJDE+YClcclxuICAgICAgLy8gQWRkIGlubGluZSBzdHlsZXMgdG8gPHRoPlxyXG4gICAgICAucmVwbGFjZSgvPHRoKFtePl0qKT4vZywgYDx0aCBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogMTZweDsgY29sb3I6ICMyQTFGNzM7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7IHBhZGRpbmc6IDEycHggMjBweDsgdGV4dC1hbGlnbjogbGVmdDtcIiQxPmApXHJcbiAgICAgIC8vIEFkZCBpbmxpbmUgc3R5bGVzIHRvIDx0ZD5cclxuICAgICAgLnJlcGxhY2UoLzx0ZChbXj5dKik+L2csIGA8dGQgc3R5bGU9XCJtaW4td2lkdGg6MTIwcHg7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7IHBhZGRpbmc6IDEycHggMjBweDsgdGV4dC1hbGlnbjogbGVmdDtcIiQxPmApO1xyXG4gICAgZGVjb2RlZCA9IGRlY29kZWQucmVwbGFjZSgvPGltZyhbXj5dKik+L2csIChtYXRjaCwgZ3JvdXAxKSA9PiB7XHJcbiAgICAgIC8vIEFkZCBzdHlsZSB0byA8aW1nPiBpZiBub3QgYWxyZWFkeSBzcGVjaWZpZWRcclxuICAgICAgaWYgKC9zdHlsZT0vLnRlc3QoZ3JvdXAxKSkge1xyXG4gICAgICAgIHJldHVybiBtYXRjaDsgIC8vIElmIHN0eWxlIGFscmVhZHkgZXhpc3RzLCBrZWVwIGl0XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGA8aW1nIHN0eWxlPVwid2lkdGg6IDMwJTsgaGVpZ2h0OiAzMCU7Ym9yZGVyLXJhZGl1czogMTZweDsgcGFkZGluZy10b3A6IDE1cHg7cGFkZGluZy1ib3R0b206IDEwcHg7XCIke2dyb3VwMX0+YDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyA1LiBSZXR1cm4gc2FmZSBIVE1MXHJcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoZGVjb2RlZCk7XHJcbiAgfVxyXG5cclxuICBnZXRFeHRlbnRpb24odXJsOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh1cmwgIT09ICctJykge1xyXG4gICAgICBpZiAodHlwZW9mICh1cmwpID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuIHVybC5zcGxpdCgnLicpLnBvcCgpXHJcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh1cmwpKSB7XHJcbiAgICAgICAgcmV0dXJuIHVybFswXS5zcGxpdCgnLicpLnBvcCgpXHJcbiAgICAgIH0gZWxzZSByZXR1cm4gJy0nXHJcbiAgICB9XHJcbiAgICBlbHNlIHJldHVybiAnLSdcclxuICB9XHJcblxyXG4gIGRvd25sb2FkQXR0Y2htZW50KHVybDogYW55LCBmaWxlPzogYW55KSB7XHJcbiAgICAvLyB0aGlzLm9uRXZlbnQuZW1pdCh7XHJcbiAgICAvLyAgIGRvd25sb2FkOiB0cnVlLFxyXG4gICAgLy8gfSk7XHJcbiAgICAvLyB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGRhdGEpXHJcbiAgICAvLyBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGxpbmsuaHJlZiA9IHVybDtcclxuICAgIGxpbmsuZG93bmxvYWQgPSAnJztcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xyXG5cclxuICB9XHJcbiAgZnVsbEltYWdlU3JjOiBzdHJpbmcgfCBudWxsID0gJyc7XHJcbiAgb3BlbkZ1bGxJbWFnZShldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmICh0YXJnZXQudGFnTmFtZSA9PT0gJ0lNRycpIHtcclxuICAgICAgdGhpcy5mdWxsSW1hZ2VTcmMgPSB0YXJnZXQuZ2V0QXR0cmlidXRlKCdzcmMnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZFN0eWxlc1RvSW1hZ2VzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgaW1hZ2VzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNvbW1lbnQtY29udGVudCBpbWcnKTtcclxuICAgIGltYWdlcy5mb3JFYWNoKChpbWcpID0+IHtcclxuICAgICAgLy8gQXBwbHkgaW5saW5lIHN0eWxlcyBkaXJlY3RseVxyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGltZywgJ3dpZHRoJywgJzcwcHgnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShpbWcsICdib3JkZXItcmFkaXVzJywgJzE2cHgnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShpbWcsICdtYXJnaW4nLCAnOHB4Jyk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaW1nLCAnY3Vyc29yJywgJ3BvaW50ZXInKTtcclxuXHJcbiAgICAgIC8vIEFkZCBjbGljayBsaXN0ZW5lciB0byBzaG93IGZ1bGxzY3JlZW4gaW1hZ2Ugb24gY2xpY2tcclxuICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oaW1nLCAnY2xpY2snLCAoKSA9PiB0aGlzLm9uSW1hZ2VDbGljaygoaW1nIGFzIEhUTUxJbWFnZUVsZW1lbnQpLnNyYykpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkltYWdlQ2xpY2soc3JjOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZnVsbHNjcmVlbkltYWdlID0gc3JjO1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgnZnVsbHNjcmVlbkltYWdlVGVtcGxhdGUnKSBmdWxsc2NyZWVuSW1hZ2VUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgcHJpdmF0ZSBmdWxsc2NyZWVuVmlld1JlZjogRW1iZWRkZWRWaWV3UmVmPGFueT4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgaWNvbk1hcDogUmVjb3JkPHN0cmluZywgKHJvdzogYW55LCBjb2w6IGFueSkgPT4gc3RyaW5nPiA9IHtcclxuICAgIGF0dGFjaG1lbnRzX2NvdW50OiAoKSA9PiB0aGlzLnNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2F0dGFjaG1lbnRzLnN2ZycsXHJcbiAgICBjb21tZW50X2NvdW50OiAoKSA9PiB0aGlzLnNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NvbW1lbnRzLnN2ZycsXHJcbiAgICBwcmlvcml0eTogKHJvdywgY29sKSA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbCA9XHJcbiAgICAgICAgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/LnZhbHVlIHx8XHJcbiAgICAgICAgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lm5hbWUgfHxcclxuICAgICAgICB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKTtcclxuXHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgdGhpcy5zaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAnZGF0YS1ncmlkL2ljb25zLycgK1xyXG4gICAgICAgICh2YWwgPz8gJ2RlZmF1bHQnKSArXHJcbiAgICAgICAgJy5zdmcnXHJcbiAgICAgICk7XHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gIHRvZ2dsZUZ1bGxzY3JlZW4oKSB7XHJcbiAgICB0aGlzLmlzRnVsbFNjcmVlbiA9ICF0aGlzLmlzRnVsbFNjcmVlbjtcclxuICAgIGNvbnN0IGVsZW0gPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgYXMgYW55O1xyXG4gICAgaWYgKCFkb2N1bWVudC5mdWxsc2NyZWVuRWxlbWVudCkge1xyXG4gICAgICBpZiAoZWxlbS5yZXF1ZXN0RnVsbHNjcmVlbikge1xyXG4gICAgICAgIGVsZW0ucmVxdWVzdEZ1bGxzY3JlZW4oKTtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtLm1velJlcXVlc3RGdWxsU2NyZWVuKSB7XHJcbiAgICAgICAgZWxlbS5tb3pSZXF1ZXN0RnVsbFNjcmVlbigpO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW0ud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4pIHtcclxuICAgICAgICBlbGVtLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbS5tc1JlcXVlc3RGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgZWxlbS5tc1JlcXVlc3RGdWxsc2NyZWVuKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChkb2N1bWVudC5leGl0RnVsbHNjcmVlbikge1xyXG4gICAgICAgIGRvY3VtZW50LmV4aXRGdWxsc2NyZWVuKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoKGRvY3VtZW50IGFzIGFueSkubW96Q2FuY2VsRnVsbFNjcmVlbikge1xyXG4gICAgICAgIChkb2N1bWVudCBhcyBhbnkpLm1vekNhbmNlbEZ1bGxTY3JlZW4oKTtcclxuICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQgYXMgYW55KS53ZWJraXRFeGl0RnVsbHNjcmVlbikge1xyXG4gICAgICAgIChkb2N1bWVudCBhcyBhbnkpLndlYmtpdEV4aXRGdWxsc2NyZWVuKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoKGRvY3VtZW50IGFzIGFueSkubXNFeGl0RnVsbHNjcmVlbikge1xyXG4gICAgICAgIChkb2N1bWVudCBhcyBhbnkpLm1zRXhpdEZ1bGxzY3JlZW4oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DZWxsRXZlbnQoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5jdXN0b21DZWxsRXZlbnQuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxufSIsIjxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBoLTEwMFwiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTIgYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJuYXYgbmF2LXRhYnNcIiAqbmdJZj1cInRydWVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibmF2IG5hdi10YWJzXCIgaWQ9XCJuYXYtdGFiXCIgcm9sZT1cInRhYmxpc3RcIj5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzZXRBY3RpdmVUYWIodGFiKVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRhYiA9PSB0YWJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyB0YWIgfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJnbG9iYWwtc2VhcmNoXCIgW3N0eWxlLndpZHRoLnB4XT1cIjM1MFwiPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAqbmdJZj1cImVuYWJsZUdsb2JhbFNlYXJjaFwiXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NlYXJjaC5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG14LTIgcG9zaXRpb24tYWJzb2x1dGUgaWNvblwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICpuZ0lmPVwiZW5hYmxlR2xvYmFsU2VhcmNoXCJcclxuICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzNnB4XCJcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVHlwZSB0byBzZWFyY2gsIHRoZW4gcHJlc3MgRW50ZXJcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJ0YWJsZVNlYXJjaFwiXHJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkdsb2JhbFNlYXJjaCgpXCJcclxuICAgICAgICAgIChpbnB1dCk9XCJvblNlYXJjaElucHV0KCRldmVudClcIlxyXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgYWxpZ24taXRlbXMtY2VudGVyIHRhYmxlLXJpZ2h0LXRvcC1hY3Rpb25zXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBidXR0b25zXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIGFjdGlvbi1idXR0b25zLXJvd1wiXHJcbiAgICAgICAgICAqbmdJZj1cImJ1dHRvbj8uaGFzX3Blcm1pc3Npb25cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgIGhyZWY9XCJKYXZhU2NyaXB0OnZvaWQoMClcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25BY3Rpb25CdXR0b25DbGljayhidXR0b24ubmFtZSlcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBidXR0b24tc21hbGwgYnRuIGJvcmRlciBib3JkZXItcHJpbWFyeSBidG4tYWN0aXZlLXByaW1hcnkgbWUtMiBwLTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHB4LTNcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiYnV0dG9uLmlzX3Nob3dJY29uXCJcclxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvJyArIGJ1dHRvbi5pY29uICsgJy5zdmcnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTJcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibGFiZWwtaGlkZGVuIHRleHQtd2hpdGVcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5tcy0wXT1cImJ1dHRvbi5pc19zaG93SWNvblwiXHJcbiAgICAgICAgICAgICAgPnt7IGJ1dHRvbj8ubmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2E+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCIhc2hvd0ZpbHRlclJvd1wiXHJcbiAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBhY3Rpb24tYnV0dG9ucy1yb3dcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVPcGVuRmlsdGVyKClcIlxyXG4gICAgICAgIFtjbGFzcy5hY3RpdmVdPVwic2hvd0ZpbHRlcnNcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGFcclxuICAgICAgICAgIGhyZWY9XCJKYXZhU2NyaXB0OnZvaWQoMClcIlxyXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNtYWxsIGJ0biBidG4tYWN0aXZlLXByaW1hcnkgYm9yZGVyIGJvcmRlci1wcmltYXJ5IG1lLTIgcC0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBweC0zXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2ZpbHRlci0yLnN2ZydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTJcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwtaGlkZGVuIHRleHQtd2hpdGVcIj5GaWx0ZXJzPC9zcGFuPlxyXG4gICAgICAgIDwvYT5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgKm5nSWY9XCJhY3RpdmVGaWx0ZXJlZENvbHVtbnM/Lmxlbmd0aFwiXHJcbiAgICAgICAgICBzdHlsZT1cIlxyXG4gICAgICAgICAgICB3aWR0aDogN3B4O1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDdweDtcclxuICAgICAgICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAzcHggIzAwMjJmZjtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsIDYwLCAyNTUpO1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgIHJpZ2h0OiAxNnB4O1xyXG4gICAgICAgICAgICB0b3A6IDEwcHg7XHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLWNpcmNsZSBkLWJsb2NrXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZC1ub25lXCJcclxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnYWR2YW5jZS1maWx0ZXInKVwiXHJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVUb3BCdXR0b24gPT09ICdhZHZhbmNlLWZpbHRlcidcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvem9vbS1jaGFyZ2Uuc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiB0b3AtaWNvbiBtZS0yXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgYWN0aW9uLWJ1dHRvbnMtcm93XCJcclxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnc2V0dGluZycpXCJcclxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIlxyXG4gICAgICAgICAgYWN0aXZlVG9wQnV0dG9uID09PSAnc2V0dGluZycgfHxcclxuICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3RhYmxlLWxheW91dCcgfHxcclxuICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3RhYmxlLXByZXNldHMnIHx8XHJcbiAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPT09ICdzaG93LWhpZGUtY29sdW1ucydcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPCEtLSA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zZXR0aW5ncy0yLnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gdG9wLWljb24gbWUtMlwiXHJcbiAgICAgICAgPjwvc3Bhbj4gLS0+XHJcbiAgICAgICAgPGFcclxuICAgICAgICAgIGhyZWY9XCJKYXZhU2NyaXB0OnZvaWQoMClcIlxyXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNtYWxsIGJ0biBidG4tYWN0aXZlLXByaW1hcnkgYm9yZGVyIGJvcmRlci1wcmltYXJ5IG1lLTIgcC0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBweC0zXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NldHRpbmdzLTIuc3ZnJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMlwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbC1oaWRkZW4gdGV4dC13aGl0ZVwiPlNldHRpbmc8L3NwYW4+XHJcbiAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cImFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3NldHRpbmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1kcm9wZG93biBtdC0xIGFjdGlvbnMtZHJvcGRvd24tc2V0dGluZ1wiXHJcbiAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgc2hvdyBzaGFkb3cgY3VzdG9tLW1lbnVcIj5cclxuICAgICAgICAgICAgPCEtLSBUYWJsZSBMYXlvdXQgLS0+XHJcbiAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZUFjdGlvbnMoJ3RhYmxlLWxheW91dCcpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICA+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy90YWJsZS0yLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgVGFibGUgTGF5b3V0PC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwhLS0gVGFibGUgUHJlc2V0cyAtLT5cclxuICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVBY3Rpb25zKCd0YWJsZS1wcmVzZXRzJylcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICA+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9saXN0LWRldGFpbHMuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICBUYWJsZSBQcmVzZXRzPC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgICAgICA8IS0tIENvbHVtbnMgLS0+XHJcbiAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhc2hvd1NpZGVNZW51XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZUFjdGlvbnMoJ3Nob3ctaGlkZS1jb2x1bW5zJylcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICA+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9leWUuc3ZnJ1wiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIENvbHVtbnM8L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdXRlZC10ZXh0XCI+e3sgY29sdW1uc0NvdW50IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBGaWx0ZXIgLS0+XHJcbiAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlT3BlbkZpbHRlcigpOyBhY3RpdmVUb3BCdXR0b24gPSAnJ1wiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhc2hvd0ZpbHRlclJvd1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZmlsdGVyLTIuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTIgbXQtMSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICBGaWx0ZXJcclxuICAgICAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBEb3dubG9hZCAtLT5cclxuICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZENzdignY3N2JylcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Rvd25sb2FkLnN2ZydcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIENTViBFeHBvcnRcclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiZW5hYmxlRXhwb3J0XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZENzdigneGxzeCcpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9kb3dubG9hZC5zdmcnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMiBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICBFeGNlbCBFeHBvcnRcclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8IS0tIEZvbnQgRmFtaWx5ICYgRm9udCBTaXplIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBwYi0yIHB0LTJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIEZvbnQgRmFtaWx5IC0tPlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCJcclxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb250RmFpbWx5XCJcclxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkZvbnRDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGZvbnQgb2YgZm9udEZhbWlsaWVzXCIgW3ZhbHVlXT1cImZvbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBmb250IH19XHJcbiAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBGb250IFNpemUgLS0+XHJcbiAgICAgICAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc21cIlxyXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uRm9udENoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJib2R5VGV4dEZvbnRzU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHNpemUgb2YgZm9udFNpemVzXCIgW3ZhbHVlXT1cInNpemVcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBzaXplIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gVGFibGUgTGF5b3V0IC0tPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlVG9wQnV0dG9uID09PSAndGFibGUtbGF5b3V0J1wiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlTGF5b3V0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWRyb3Bkb3duIG10LTFcIlxyXG4gICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZVwiXHJcbiAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gVGFibGUgUHJlc2V0cyAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlVG9wQnV0dG9uID09PSAndGFibGUtcHJlc2V0cydcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZVByZXNldFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1kcm9wZG93biBtdC0xXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGVcIlxyXG4gICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tIFRhYmxlIFByZXNldHMgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3Nob3ctaGlkZS1jb2x1bW5zJ1wiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNob3dIaWRlQ29sdW1uc1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1kcm9wZG93biBtdC0xXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGVcIlxyXG4gICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tYnV0dG9ucy1yb3dcIiAqbmdJZj1cInNob3dGdWxsU2NyZWVuQnV0dG9uXCI+XHJcbiAgICAgICAgPGFcclxuICAgICAgICAgICpuZ0lmPVwiIWlzRnVsbFNjcmVlblwiXHJcbiAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBidXR0b24tc21hbGwgYnRuIGJ0bi1hY3RpdmUtcHJpbWFyeSBib3JkZXIgYm9yZGVyLXByaW1hcnkgZXhwZW5kIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRnVsbHNjcmVlbigpXCJcclxuICAgICAgICAgIGRhdGEtYnMtdG9nZ2xlPVwidG9vbHRpcFwiXHJcbiAgICAgICAgICBkYXRhLWJzLXBsYWNlbWVudD1cInRvcFwiXHJcbiAgICAgICAgICB0aXRsZT1cIk1pbmltaXNlXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgbWluQXJyb3c6ICFpc0Z1bGxTY3JlZW4sIG1heEFycm93OiBpc0Z1bGxTY3JlZW4gfVwiXHJcbiAgICAgICAgICBzdHlsZT1cInRyYW5zaXRpb246IGNvbG9yIDAuMnNcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXhwZW5kLnN2ZydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTIgbWItMVwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDwvYT5cclxuICAgICAgICA8YVxyXG4gICAgICAgICAgKm5nSWY9XCJpc0Z1bGxTY3JlZW5cIlxyXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNtYWxsIGJ0biBidG4tYWN0aXZlLXByaW1hcnkgYm9yZGVyIGJvcmRlci1wcmltYXJ5IGV4cGVuZCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUZ1bGxzY3JlZW4oKVwiXHJcbiAgICAgICAgICBkYXRhLWJzLXRvZ2dsZT1cInRvb2x0aXBcIlxyXG4gICAgICAgICAgZGF0YS1icy1wbGFjZW1lbnQ9XCJ0b3BcIlxyXG4gICAgICAgICAgdGl0bGU9XCJNYXhpbWlzZVwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7IG1pbkFycm93OiAhaXNGdWxsU2NyZWVuLCBtYXhBcnJvdzogaXNGdWxsU2NyZWVuIH1cIlxyXG4gICAgICAgICAgc3R5bGU9XCJ0cmFuc2l0aW9uOiBjb2xvciAwLjJzXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL21pbmltaXplLnN2ZydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTIgbWItMVwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDwvYT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPCEtLSBFeGFtcGxlIHNpbmdsZSBkYW5nZXIgYnV0dG9uIC0tPlxyXG5cclxuICAgICAgICA8IS0tIDxidXR0b25cclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIGQtZmxleCBnYXAtMiBhY3Rpb24tYnV0dG9uXCJcclxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdhY3Rpb25zJylcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIEFjdGlvblxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9WZWN0b3Iuc3ZnJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJhY3RpdmVUb3BCdXR0b24gPT09ICdhY3Rpb25zJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImFjdGlvbnMtZHJvcGRvd24gbXQtMVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgc2hvd1wiPlxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBocmVmPVwiI1wiPkFjdGlvbjwvYT5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgaHJlZj1cIiNcIj5Bbm90aGVyIGFjdGlvbjwvYT5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgaHJlZj1cIiNcIj5Tb21ldGhpbmcgZWxzZSBoZXJlPC9hPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBocmVmPVwiI1wiPlNlcGFyYXRlZCBsaW5rPC9hPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2XHJcbiAgICAqbmdJZj1cInNob3dGaWx0ZXJzICYmICFzaG93RmlsdGVyUm93XCJcclxuICAgIGNsYXNzPVwidG9wLWZpbHRlci1yb3cgYm9yZGVyLXRvcCBweS0yIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJ0b3BGaWx0ZXJSb3dIZWlnaHRcIlxyXG4gID5cclxuICAgIDwhLS0gTEVGVCBTSURFIChGaWx0ZXIgdGFncyArIEZpbHRlciBidXR0b24pIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIGFjdGl2ZUZpbHRlcmVkQ29sdW1uczsgdHJhY2tCeTogdHJhY2tCeUZpZWxkXCJcclxuICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLXRhZ3NcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgIGlzQWN0aXZlRmlsdGVyT3BlbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgYWN0aXZlVG9wQnV0dG9uID0gJ2ZpbHRlci1jb2x1bW5zJztcclxuICAgICAgICAgICAgICBvcGVuRmlsdGVyKGNvbClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXV0ZWQtdGV4dCBhZGQtZmlsdGVyLWJ1dHRvbiBhY3RpdmUtZmlsdGVyc1wiXHJcbiAgICAgICAgICAgIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcFwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiXHJcbiAgICAgICAgICAgICAgY29sPy5maWVsZCA9PSBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uZmllbGQgJiZcclxuICAgICAgICAgICAgICBpc0FjdGl2ZUZpbHRlck9wZW4gJiZcclxuICAgICAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPT0gJ2ZpbHRlci1jb2x1bW5zJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhlYWRlci10YWcgbXQtMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sPy5waW5uZWRcIlxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9waW4uc3ZnJ1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIHt7IGNvbC5oZWFkZXIgfX1cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHJlbW92ZUNvbHVtbkZpbHRlckZyb21Db2x1bW4oY29sKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Nyb3NzLXByaW1hcnkuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGNyb3NzLXNlY29uZGFyeSBtcy0yIG1iLTFcIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPT09ICdmaWx0ZXItY29sdW1ucycgJiZcclxuICAgICAgICAgICAgICBjb2w/LmZpZWxkID09IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5maWVsZCAmJlxyXG4gICAgICAgICAgICAgIGlzQWN0aXZlRmlsdGVyT3BlblxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJDb2x1bW5zOyBjb250ZXh0OiB7IGNvbHVtbjogY29sIH1cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1kcm9wZG93biBtdC0xXCJcclxuICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPCEtLSBGaWx0ZXIgQnV0dG9uIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYWRkLWZpbHRlci1idXR0b24tbWVudVwiPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdmaWx0ZXItY29sdW1ucycpOyBpc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZVwiXHJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtdXRlZC10ZXh0IGFkZC1maWx0ZXItYnV0dG9uIGJ1dHRvbi1maWx0ZXJcIlxyXG4gICAgICAgICAgc3R5bGU9XCJ3aWR0aDogNzBweFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9wbHVzLnN2ZydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cIm1lLTIgZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICBGaWx0ZXJcclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nSWY9XCJhY3RpdmVUb3BCdXR0b24gPT09ICdmaWx0ZXItY29sdW1ucycgJiYgIWlzQWN0aXZlRmlsdGVyT3BlblwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlckNvbHVtbnNcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFjdGlvbnMtZHJvcGRvd24gbXQtMVwiXHJcbiAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBSSUdIVCBTSURFIChVcGRhdGUgKyBSZXNldCkgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0zIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKGNsaWNrKT1cInNhdmVQcmVzZXQoKVwiXHJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgY3Vyc29yLXBvaW50ZXIgYWxsLWZpbHRlcnMtcmVzZXQtYnV0dG9uXCJcclxuICAgICAgICAqbmdJZj1cIiFjaGVja0ZpbHRlckNoYW5nZXNFZmZlY3QoKVwiXHJcbiAgICAgID5cclxuICAgICAgICBVcGRhdGUgVmlld1xyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeSBjdXJzb3ItcG9pbnRlciBhbGwtZmlsdGVycy1yZXNldC1idXR0b25cIlxyXG4gICAgICAgICpuZ0lmPVwiIXRhYmxlRmlsdGVyVmlld0lkICYmIGFjdGl2ZUZpbHRlcmVkQ29sdW1ucz8ubGVuZ3RoXCJcclxuICAgICAgICAoY2xpY2spPVwiY2xlYXJBbGxGaWx0ZXJzKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgUmVzZXRcclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdlxyXG4gICAgW3N0eWxlLmhlaWdodF09XCJcclxuICAgICAgc2hvd0ZpbHRlcnMgPyAnY2FsYygxMDAlIC0gJyArIHRvcEZpbHRlclJvd0hlaWdodCArICdweCknIDogJzEwMCUnXHJcbiAgICBcIlxyXG4gICAgY2RrRHJvcExpc3RHcm91cFxyXG4gICAgY2xhc3M9XCJkYXRhLWdyaWQtdGFibGUtd3JhcHBlciBvdmVyZmxvdy1oaWRkZW5cIlxyXG4gICAgI2RhdGFHcmlkQ29udGFpbmVyXHJcbiAgICBbc3R5bGUuZm9udEZhbWlseV09XCJmb250RmFpbWx5XCJcclxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiYm9keUJhY2tncm91bmRDb2xvclwiXHJcbiAgICBpZD1cImRhdGEtZ3JpZC1tYWluLWNvbnRhaW5lclwiXHJcbiAgPlxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cInNob3dSb3dzR3JvdXBpbmdcIlxyXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiY29sdW1uc1wiXHJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiXHJcbiAgICAgICAgdG9wR3JvdXBlZEJhZGdlc0JhY2tncm91bmRDb2xvciB8fCBoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcclxuICAgICAgXCJcclxuICAgICAgY2RrRHJvcExpc3RcclxuICAgICAgKGNka0Ryb3BMaXN0RW50ZXJlZCk9XCJlbnRlclRvVG9wUm93R3JvdXBpbmcoJGV2ZW50KVwiXHJcbiAgICAgIChjZGtEcm9wTGlzdEV4aXRlZCk9XCJleGl0ZWRGcm9tVGhlVG9wUm93KCRldmVudClcIlxyXG4gICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcFRvcEdyb3VwKCRldmVudClcIlxyXG4gICAgICBbY2RrRHJvcExpc3RFbnRlclByZWRpY2F0ZV09XCJjYW5FbnRlclRvUm93c0dyb3VwaW5nXCJcclxuICAgICAgaWQ9XCJyb3dzLWdyb3VwaW5nLXRvcC1jb250YWluZXJcIlxyXG4gICAgICBjbGFzcz1cImJvcmRlci1iZWxvdyBkLWZsZXggcHgtNCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICBbc3R5bGUuY29sb3JdPVwiaGVhZGVyVGV4dENvbG9yXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2p1c3RpZnkuc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFkcmFnZ2luZ0luR3JvdXBBcmVhICYmICFncm91cGVkQ29sdW1ucz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICBEcmFnIGhlcmUgdG8gc2V0IHJvdyBncm91cHNcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXHJcbiAgICAgICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkdyb3VwUmVvcmRlcigkZXZlbnQpXCJcclxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNka0RyYWdcclxuICAgICAgICAgICAgW2Nka0RyYWdMb2NrQXhpc109XCIneCdcIlxyXG4gICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICBsZXQgY2hpbGQgb2YgZ3JvdXBlZENvbHVtbnM7XHJcbiAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RmllbGRcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICB0b3BHcm91cGluZ1Jvd1BsYWNlaG9sZGVyO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNoaWxkLFxyXG4gICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjpcclxuICAgICAgICAgICAgICAgICAgICBncm91cGVkQ29sdW1ucy5sZW5ndGggPiAxICYmIGkgIT0gZ3JvdXBlZENvbHVtbnMubGVuZ3RoIC0gMVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQcmV2aWV3XHJcbiAgICAgICAgICAgICAgPjxkaXYgY2xhc3M9XCJwLTIgYm9yZGVyIGQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFkcmFnZ2luZ0luR3JvdXBBcmVhXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLW1vdmUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdj57eyBjaGlsZC5oZWFkZXIgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleCBvdmVyZmxvdy1oaWRkZW5cIlxyXG4gICAgICBbc3R5bGUuaGVpZ2h0XT1cIlxyXG4gICAgICAgICdjYWxjKDEwMCUgLSAnICtcclxuICAgICAgICAoc2hvd1Jvd3NHcm91cGluZ1xyXG4gICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKyBmb290ZXJSb3dIZWlnaHRcclxuICAgICAgICAgIDogZm9vdGVyUm93SGVpZ2h0KSArXHJcbiAgICAgICAgJ3B4KSdcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiaC0xMDBcIlxyXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCJcclxuICAgICAgICAgICFzaG93U2lkZU1lbnVcclxuICAgICAgICAgICAgPyAnMTAwJSdcclxuICAgICAgICAgICAgOiBzaWRlTWVudVZpc2libGVcclxuICAgICAgICAgICAgPyAnY2FsYygxMDAlIC0gMjgwcHgpJ1xyXG4gICAgICAgICAgICA6ICdjYWxjKDEwMCUgLSAzMHB4KSdcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImgtMTAwIHRyYW5zaXRpb24gcG9zaXRpb24tcmVsYXRpdmUgdy0xMDBcIj5cclxuICAgICAgICAgIDwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT5cclxuICAgICAgICAgIDwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT5cclxuICAgICAgICAgIDwhLS0gRGF0YSBHcmlkIEhlYWRlciBzdGFydHMgaGVyZSAtLT5cclxuICAgICAgICAgIDwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT5cclxuICAgICAgICAgIDwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLWhlYWRlci13cmFwcGVyIHctMTAwXCJcclxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImhlYWRlclRleHRDb2xvclwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5mb250U2l6ZS5weF09XCJoZWFkZXJUZXh0Rm9udHNTaXplXCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICBbY2xhc3MuYm9yZGVyLWJlbG93XT1cIiFoYXNBbnlWaXNpYmxlQ29sdW1uXCJcclxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcclxuICAgICAgICAgICAgICBzaG93Q29sdW1uc0dyb3VwaW5nICYmIHNob3dGaWx0ZXJSb3dcclxuICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogM1xyXG4gICAgICAgICAgICAgICAgOiBzaG93Q29sdW1uc0dyb3VwaW5nIHx8IHNob3dGaWx0ZXJSb3dcclxuICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogMlxyXG4gICAgICAgICAgICAgICAgOiBoZWFkZXJSb3dIZWlnaHRcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG4gICAgICAgICAgICA8IS0tIERhdGEgR3JpZCBMZWZ0IFBpbm5lZCBIZWFkZXIgc3RhcnRzIGhlcmUgLS0+XHJcbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLWhlYWRlciBsZWZ0LXBpbm5lZFwiXHJcbiAgICAgICAgICAgICAgI2xlZnRQaW5uZWRIZWFkZXJcclxuICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cImhhc0xlZnRQaW5uZWRDb2x1bW5zXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd1NlcmlhbE51bWJlclwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3QtYWxsLWNoZWNrYm94LWNlbGwgYm9yZGVyLWJlbG93XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCI1NVwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxyXG4gICAgICAgICAgICAgICAgICBzaG93Q29sdW1uc0dyb3VwaW5nICYmIHNob3dGaWx0ZXJSb3dcclxuICAgICAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDNcclxuICAgICAgICAgICAgICAgICAgICA6IHNob3dDb2x1bW5zR3JvdXBpbmcgfHwgc2hvd0ZpbHRlclJvd1xyXG4gICAgICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogMlxyXG4gICAgICAgICAgICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIFMuTm9cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0NoZWNrYm94ZXNcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWFsbC1jaGVja2JveC1jZWxsIGJvcmRlci1iZWxvd1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxyXG4gICAgICAgICAgICAgICAgICBzaG93Q29sdW1uc0dyb3VwaW5nICYmIHNob3dGaWx0ZXJSb3dcclxuICAgICAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDNcclxuICAgICAgICAgICAgICAgICAgICA6IHNob3dDb2x1bW5zR3JvdXBpbmcgfHwgc2hvd0ZpbHRlclJvd1xyXG4gICAgICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogMlxyXG4gICAgICAgICAgICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImhhc0FueVZpc2libGVDb2x1bW5cIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJpc0luZGV0ZXJtaW5hdGVTdGF0ZShkYXRhU2V0KVwiXHJcbiAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQWxsU2VsZWN0ZWQoZGF0YVNldClcIlxyXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdEFsbChkYXRhU2V0KVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4XCJcclxuICAgICAgICAgICAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgICAgICAgICAgICBpZD1cImxlZnQtcGlubmVkLWhlYWRlclwiXHJcbiAgICAgICAgICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXHJcbiAgICAgICAgICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImxlZnRQaW5uZWRDb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgIChjZGtEcm9wTGlzdEVudGVyZWQpPVwib25Ecm9wTGlzdEVudGVyKCRldmVudCwgJ2xlZnQnKVwiXHJcbiAgICAgICAgICAgICAgICAoY2RrRHJvcExpc3RTb3J0ZWQpPVwiXHJcbiAgICAgICAgICAgICAgICAgIG9uU29ydEdyb3VwKCRldmVudCwgJ3ByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucycpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyb3BHcm91cCgpXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwibWluLXdpZHRoOiAxcHhcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcmFnYWJsZS1oZWFkZXJcIlxyXG4gICAgICAgICAgICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJjb2xcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY29sIG9mIGxlZnRQaW5uZWRDb2x1bW5zO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZpZWxkXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbDtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAncHJldmlld0xlZnRQaW5uZWRDb2x1bW5zJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQcmV2aWV3XHJcbiAgICAgICAgICAgICAgICAgICAgPjxkaXYgY2xhc3M9XCJwLTIgYm9yZGVyIGQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFkcmFnZ2luZ0luR3JvdXBBcmVhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgY29sLmhlYWRlciB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1BsYWNlaG9sZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckNlbGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZHJhZ2dpbmdJbkdyb3VwQXJlYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBnYXAtMiBtcy0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwib3BhY2l0eTogMC42XCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sPy5jaGlsZHJlbj8ubGVuZ3RoOyBlbHNlIHNpbmdsZUNvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGlsZCBvZiBjb2wuY2hpbGRyZW47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNoaWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGV2cm9uOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sLmNoaWxkcmVuLmxlbmd0aCA+IDEgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgIT0gY29sLmNoaWxkcmVuLmxlbmd0aCAtIDFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVDb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGV2cm9uOiBjb2w/LmNoaWxkcmVuPy5sZW5ndGggPiAxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuICAgICAgICAgICAgPCEtLSBEYXRhIEdyaWQgQ2VudGVyIFBpbm5lZCBIZWFkZXIgc3RhcnRzIGhlcmUgLS0+XHJcbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLWhlYWRlciBjZW50ZXItc2Nyb2xsYWJsZVwiXHJcbiAgICAgICAgICAgICAgI2NlbnRlclBpbm5lZEhlYWRlclxyXG4gICAgICAgICAgICAgIChzY3JvbGwpPVwib25DZW50ZXJCb2R5U2Nyb2xsKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIGlkPVwiY2VudGVyLXBpbm5lZC1oZWFkZXJcIlxyXG4gICAgICAgICAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiXHJcbiAgICAgICAgICAgICAgICBzaG93Um93c0dyb3VwaW5nID8gWydyb3dzLWdyb3VwaW5nLXRvcC1jb250YWluZXInXSA6IFtdXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImNlbnRlckNvbHVtbnNcIlxyXG4gICAgICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcclxuICAgICAgICAgICAgICBbY2RrRHJvcExpc3RTb3J0aW5nRGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICAgICBpc0Rpc2FibGVDb2x1bW5Hcm91cGluZyAmJiBkcmFnZ2luZ0luR3JvdXBBcmVhXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAoY2RrRHJvcExpc3RFbnRlcmVkKT1cIm9uRHJvcExpc3RFbnRlcigkZXZlbnQsICdjZW50ZXInKVwiXHJcbiAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0U29ydGVkKT1cIm9uU29ydEdyb3VwKCRldmVudCwgJ3ByZXZpZXdDZW50ZXJDb2x1bW5zJylcIlxyXG4gICAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wR3JvdXAoKVwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLm1heFdpZHRoXT1cIlxyXG4gICAgICAgICAgICAgICAgJ2NhbGMoMTAwJSAtICcgK1xyXG4gICAgICAgICAgICAgICAgKHJpZ2h0UGlubmVkSGVhZGVyLm9mZnNldFdpZHRoICsgbGVmdFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aCkgK1xyXG4gICAgICAgICAgICAgICAgJ3B4KSdcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJncm91cGVkQ29sdW1ucz8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwibWluLXdpZHRoOiAyMDBweFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImgtMTAwIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAjY29sdW1uc0dyb3VwZWRCb3hcclxuICAgICAgICAgICAgICAgIGlkPVwiZ3JvdXBCb3hIZWFkZXJEaXZcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggdy0xMDAganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGJvcmRlci1iZWxvd1wiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvd0ZpbHRlclJvdyA/IGhlYWRlclJvd0hlaWdodCAqIDIgOiBoZWFkZXJSb3dIZWlnaHRcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBzLTNcIj5Hcm91cDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0aHJlZS1kb3RzIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlblRocmVlRG90c01lbnUoJGV2ZW50LCAnZ3JvdXAnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUaHJlZURvdHNGaWx0ZXJPcGVuID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL3RocmVlLWRvdHMtdmVydGljYWwuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9uUmVzaXplR3JvdXBCb3goJGV2ZW50KVxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVzaXplLWhhbmRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogLTJweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL3Jlc2l6ZS1oYW5kbGUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3JkZXItYmVsb3dcIlxyXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBjdXJzb3ItcG9pbnRlciBib3JkZXItYmVsb3dcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDMwcHg7IGhlaWdodDogMTAwJVwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImdyaWRUeXBlID09PSAnQXNzZXRzJyB8fCBncmlkVHlwZSA9PT0gJ1Rhc2tzJ1wiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRyYWdhYmxlLWhlYWRlclwiXHJcbiAgICAgICAgICAgICAgICAoY2RrRHJhZ1N0YXJ0ZWQpPVwiXHJcbiAgICAgICAgICAgICAgICAgIGNoZWNrQ29sdW1uR3JvdXBpbmdTdGF0dXMoY29sKTtcclxuICAgICAgICAgICAgICAgICAgZHJhZ1N0YXJ0T25Hcm91cChjb2wpO1xyXG4gICAgICAgICAgICAgICAgICBvbkRyYWdTdGFydGVkKGNvbClcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAoY2RrRHJhZ01vdmVkKT1cIm9uRHJhZ01vdmVkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKGNka0RyYWdFbmRlZCk9XCJvbkRyYWdFbmRlZCgpXCJcclxuICAgICAgICAgICAgICAgIGNka0RyYWdcclxuICAgICAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJjb2xcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCBjb2wgb2YgY2VudGVyQ29sdW1ucztcclxuICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJDZWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAncHJldmlld0NlbnRlckNvbHVtbnMnXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1ByZXZpZXdcclxuICAgICAgICAgICAgICAgICAgPjxkaXYgY2xhc3M9XCJwLTIgYm9yZGVyIGQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFpc091dHNpZGVDb250YWluZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkcmFnZ2luZ0luR3JvdXBBcmVhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdkYXRhLWdyaWQvaWNvbnMvanVzdGlmeS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLW1vdmUuc3ZnJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNPdXRzaWRlQ29udGFpbmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9leWUtY3Jvc3Muc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgY29sLmhlYWRlciB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1BsYWNlaG9sZGVyPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJDZWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ2NlbnRlckNvbHVtbnMnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZHJhZ2dpbmdJbkdyb3VwQXJlYSAmJiAhaXNPdXRzaWRlQ29udGFpbmVyXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBnYXAtMiBtcy0yXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm9wYWNpdHk6IDAuNlwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy5jaGlsZHJlbj8ubGVuZ3RoOyBlbHNlIHNpbmdsZUNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hpbGQgb2YgY29sLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGlsZD8uaXNfZ3JvdXBhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2wuY2hpbGRyZW4ubGVuZ3RoID4gMSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAhPSBjb2wuY2hpbGRyZW4ubGVuZ3RoIC0gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVDb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy5pc19ncm91cGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BHcm91cGluZ1Jvd1BsYWNlaG9sZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246IGNvbD8uY2hpbGRyZW4/Lmxlbmd0aCA+IDFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG4gICAgICAgICAgICA8IS0tIERhdGEgR3JpZCBSaWdodCBQaW5uZWQgSGVhZGVyIHN0YXJ0cyBoZXJlIC0tPlxyXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgICAgY2RrRHJvcExpc3RcclxuICAgICAgICAgICAgICBpZD1cInJpZ2h0LXBpbm5lZC1oZWFkZXJcIlxyXG4gICAgICAgICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cIlxyXG4gICAgICAgICAgICAgICAgc2hvd1Jvd3NHcm91cGluZyA/IFsncm93cy1ncm91cGluZy10b3AtY29udGFpbmVyJ10gOiBbXVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLWhlYWRlciByaWdodC1waW5uZWRcIlxyXG4gICAgICAgICAgICAgIChjZGtEcm9wTGlzdFNvcnRlZCk9XCJcclxuICAgICAgICAgICAgICAgIG9uU29ydEdyb3VwKCRldmVudCwgJ3ByZXZpZXdSaWdodFBpbm5lZENvbHVtbnMnKVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RW50ZXJlZCk9XCJvbkRyb3BMaXN0RW50ZXIoJGV2ZW50LCAncmlnaHQnKVwiXHJcbiAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyb3BHcm91cCgpXCJcclxuICAgICAgICAgICAgICAjcmlnaHRQaW5uZWRIZWFkZXJcclxuICAgICAgICAgICAgICBjbGFzcz1cInJpZ2h0LXBpbm5lZC1oZWFkZXIgZC1mbGV4XCJcclxuICAgICAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogMC4ycHhcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkcmFnYWJsZS1oZWFkZXJcIlxyXG4gICAgICAgICAgICAgICAgY2RrRHJhZ1xyXG4gICAgICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cImNvbFwiXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgbGV0IGNvbCBvZiByaWdodFBpbm5lZENvbHVtbnM7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbDtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcclxuICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZFJpZ2h0OiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAncmlnaHQnXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQcmV2aWV3XHJcbiAgICAgICAgICAgICAgICAgID48ZGl2IGNsYXNzPVwicC0yIGJvcmRlciBkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtbW92ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgY29sLmhlYWRlciB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1BsYWNlaG9sZGVyPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJDZWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ3JpZ2h0J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRyYWdnaW5nSW5Hcm91cEFyZWFcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGdhcC0yIG1zLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwib3BhY2l0eTogMC42XCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2w/LmNoaWxkcmVuPy5sZW5ndGg7IGVsc2Ugc2luZ2xlQ29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGlsZCBvZiBjb2wuY2hpbGRyZW47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BHcm91cGluZ1Jvd1BsYWNlaG9sZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNoaWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2wuY2hpbGRyZW4ubGVuZ3RoID4gMSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgIT0gY29sLmNoaWxkcmVuLmxlbmd0aCAtIDFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVDb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGV2cm9uOiBjb2w/LmNoaWxkcmVuPy5sZW5ndGggPiAxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPlxyXG4gICAgICAgICAgPCEtLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT5cclxuICAgICAgICAgIDwhLS0gRGF0YSBHcmlkIEJvZHkgc3RhcnRzIGhlcmUgLS0+XHJcbiAgICAgICAgICA8IS0tIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPlxyXG4gICAgICAgICAgPCEtLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJoLTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAqbmdJZj1cIiFkYXRhU2V0Lmxlbmd0aCAmJiAhbG9hZGluZ1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdlxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3JlY29yZC1ub3QtZm91bmQuc3ZnJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgPjwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPGRpdj5ObyBSZWNvcmQgRm91bmQ8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB3LTEwMCBoLTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbG9hZGluZy1vdmVybGF5XCJcclxuICAgICAgICAgICAgKm5nSWY9XCJsb2FkaW5nXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJcclxuICAgICAgICAgICAgICB6LWluZGV4OiA5OTk7XHJcbiAgICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDFweCk7XHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiYm9keUJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciB0ZXh0LXByaW1hcnlcIiByb2xlPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImxvYWRlclwiPjwvc3Bhbj4gLS0+XHJcbiAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPkxvYWRpbmcuLi48L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICAgIDwhLS0gPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtYm9keS13cmFwcGVyIHBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiYm9keVdyYXBwZXJIZWlnaHRcIlxyXG4gICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXk6IGF1dG87IG92ZXJmbG93LXg6IGhpZGRlblwiXHJcbiAgICAgICAgICAgICNtYWluU2Nyb2xsXHJcbiAgICAgICAgICAgIChzY3JvbGwpPVwib25NYWluU2Nyb2xsKCRldmVudClcIlxyXG4gICAgICAgICAgICBbc3R5bGUuc2Nyb2xsYmFyV2lkdGhdPVwidmVydGljYWxTY3JvbGxiYXJXaWR0aFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwhLS0gTEVGVCBQSU5ORUQgLS0+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxyXG4gICAgICAgICAgICAgICAgIWdyb3VwZWRDb2x1bW5zLmxlbmd0aCA/IG9yaWdpbmFsRGF0YVNldC5sZW5ndGggKiByb3dIZWlnaHQgOiAwXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IFtjbGFzcy5oLTEwMF09XCJvcmlnaW5hbERhdGFTZXQubGVuZ3RoIDwgOFwiPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLWJvZHkgbGVmdC1waW5uZWQtYm9keSB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXk6IGhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cImhhc0xlZnRQaW5uZWRDb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy50cmFuc3BhcmVudC1ib3JkZXItcmlnaHRdPVwiIWhhc0xlZnRQaW5uZWRDb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwiJ3RyYW5zbGF0ZVkoJyArIHRyYW5zbGF0ZVkgKyAncHgpJ1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImxlZnRQaW5uZWRCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmgtMTAwXT1cIm9yaWdpbmFsRGF0YVNldC5sZW5ndGggPCA4XCJcclxuICAgICAgICAgICAgICAgKm5nSWY9XCIhbG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICBbQHJvd0R5bmFtaWNdPVwicm93QW5pbWF0aW9uXCJcclxuXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCByb3cgb2YgdmlzaWJsZVJvd3M7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICByb3dDZWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHJvdyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogcHJldmlld0xlZnRQaW5uZWRDb2x1bW5zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0V2ZW46IChzdGFydEluZGV4ICsgaSkgJSAyID09PSAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc09kZDogKHN0YXJ0SW5kZXggKyBpKSAlIDIgIT09IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTGVmdDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ2xlZnQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RvdGFsUm93OiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dUb3RhbEFtb3VudFJvdyAmJiBvcmlnaW5hbERhdGFTZXQ/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHJvd0NlbGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogeyBfX3ZpcnR1YWxJbmRleDogMCB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBwcmV2aWV3TGVmdFBpbm5lZENvbHVtbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRXZlbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzT2RkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ2xlZnQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RvdGFsUm93OiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBDRU5URVIgLS0+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImgtMTAwXCJcclxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY2VudGVyUGlubmVkSGVhZGVyLmNsaWVudFdpZHRoXCJcclxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImJvZHlCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtYm9keSBjZW50ZXItc2Nyb2xsYWJsZVwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaC0xMDBdPVwib3JpZ2luYWxEYXRhU2V0Lmxlbmd0aCA8IDhcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdy15OiBoaWRkZW47IG92ZXJmbG93LXg6IGF1dG9cIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCIndHJhbnNsYXRlWSgnICsgdHJhbnNsYXRlWSArICdweCknXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiYm9keUJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICAjY2VudGVyU2Nyb2xsYWJsZUJvZHlcclxuICAgICAgICAgICAgICAgIChzY3JvbGwpPVwib25DZW50ZXJCb2R5U2Nyb2xsKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJveFNoYWRvd109XCJsZWZ0UGlubmVkQm94c2hhZG93XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWxvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgW0Byb3dEeW5hbWljXT1cInJvd0FuaW1hdGlvblwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcm93IG9mIHZpc2libGVSb3dzO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcm93Q2VsbDtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiByb3csXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IHByZXZpZXdDZW50ZXJDb2x1bW5zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0V2ZW46IChzdGFydEluZGV4ICsgaSkgJSAyID09PSAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc09kZDogKHN0YXJ0SW5kZXggKyBpKSAlIDIgIT09IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RvdGFsUm93OiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dUb3RhbEFtb3VudFJvdyAmJiBvcmlnaW5hbERhdGFTZXQ/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHJvd0NlbGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogeyBfX3ZpcnR1YWxJbmRleDogMCB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBwcmV2aWV3Q2VudGVyQ29sdW1ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNFdmVuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNPZGQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gUklHSFQgUElOTkVEIC0tPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJyaWdodC1waW5uZWQtYm9keS13cmFwcGVyXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImhhc1JpZ2h0UGlubmVkQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmgtMTAwXT1cIm9yaWdpbmFsRGF0YVNldC5sZW5ndGggPCA4XCJcclxuICAgICAgICAgICAgICBbc3R5bGUubWF4V2lkdGgucHhdPVwiXHJcbiAgICAgICAgICAgICAgICBpc1Njcm9sbGJhclZpc2libGVcclxuICAgICAgICAgICAgICAgICAgPyByaWdodFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aCAtIDE1XHJcbiAgICAgICAgICAgICAgICAgIDogcmlnaHRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGhcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwicmlnaHRQaW5uZWRCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtYm9keSByaWdodC1waW5uZWQtYm9keSB3LTEwMCBoLTEwMFwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXk6IGhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUudHJhbnNmb3JtXT1cIid0cmFuc2xhdGVZKCcgKyB0cmFuc2xhdGVZICsgJ3B4KSdcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJveFNoYWRvd109XCJyaWdodFBpbm5lZEJveHNoYWRvd1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cInJpZ2h0UGlubmVkQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWxvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgW0Byb3dEeW5hbWljXT1cInJvd0FuaW1hdGlvblwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcm93IG9mIHZpc2libGVSb3dzO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcm93Q2VsbDtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiByb3csXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IHByZXZpZXdSaWdodFBpbm5lZENvbHVtbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRXZlbjogKHN0YXJ0SW5kZXggKyBpKSAlIDIgPT09IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzT2RkOiAoc3RhcnRJbmRleCArIGkpICUgMiAhPT0gMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ3JpZ2h0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VG90YWxBbW91bnRSb3cgJiYgb3JpZ2luYWxEYXRhU2V0Py5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICByb3dDZWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHsgX192aXJ0dWFsSW5kZXg6IDAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogcHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNFdmVuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNPZGQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAncmlnaHQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RvdGFsUm93OiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwidG9wOiBhdXRvOyBsZWZ0OiBhdXRvXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBmdWxsc2NyZWVuSW1hZ2UgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgY2RyLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImRhdGFHcmlkQ29udGFpbmVyLm9mZnNldFdpZHRoXCJcclxuICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxyXG4gICAgICAgICAgICAgICAgZGF0YUdyaWRDb250YWluZXIub2Zmc2V0SGVpZ2h0IC0gKGZvb3RlclJvd0hlaWdodCArIDEwMClcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaW1hZ2UtbW9kYWwgZnVsbC1pbWFnZS1tb2RhbFwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJmdWxsc2NyZWVuSW1hZ2VcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICBbc3JjXT1cImZ1bGxzY3JlZW5JbWFnZVwiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJGdWxsc2NyZWVuIEltYWdlXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRSb3dzLnNpemUgPiAwICYmIHNob3dUYXNrYmFyXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInRhc2tiYXIgdy0xMDBcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3R0b20ucHhdPVwiODVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLXJvd3MtYWN0aW9uLWJhclwiIFtAc2xpZGVVcF0+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdGVkLWNvdW50XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkUm93cy5zaXplIH19IHNlbGVjdGVkIG9mXHJcbiAgICAgICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHMgfHxcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz8ucGFnaW5hdGlvblBhcmFtcz8udG90YWxJdGVtc1xyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBUb3RhbFxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgdGFza2JhckFjdGlvbnM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGlvbj8uaGFzX3Blcm1pc3Npb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWJ0biB2ZXJpZmllZCBidG4ge3sgYWN0aW9uIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVmVyaWZ5Q2xpY2soYWN0aW9uPy5hY3Rpb25OYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID57eyBhY3Rpb24/LmFjdGlvbk5hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza2JhckFjdGlvbnMubGVuZ3RoID4gMSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGkgIT09IHRhc2tiYXJBY3Rpb25zLmxlbmd0aCAtIDEgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrYmFyQWN0aW9uc1tpICsgMV0/Lmhhc19wZXJtaXNzaW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPnw8L3NwYW5cclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImNsZWFyU2VsZWN0aW9uU3RhdGUodGFibGVUeXBlKTtzZWxlY3RlZFJvd3MuY2xlYXIoKTtcIiBjbGFzcz1cImNsZWFyLWJ0biBtcy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJiaSBiaS14LWNpcmNsZVwiPjwvaT4gQ2xlYXIgU2VsZWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8IS0tIFZlcnRpY2FsIEZha2Ugc2Nyb2xsIEJhciAtLT5cclxuICAgICAgICAgIDwhLS0gPGRpdlxyXG4gICAgICAgICAgICAoc2Nyb2xsKT1cIm9uTWFpbkZha2VTY3JvbGwoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZmFrZS1zY3JvbGxiYXIgZmFrZS1zY3JvbGxiYXItdmVydGljYWwgZC1ub25lXCJcclxuICAgICAgICAgICAgW3N0eWxlLnNjcm9sbGJhcldpZHRoXT1cInZlcnRpY2FsU2Nyb2xsYmFyV2lkdGhcIlxyXG4gICAgICAgICAgICBbc3R5bGUudG9wLnB4XT1cIlxyXG4gICAgICAgICAgICAgIHNob3dDb2x1bW5zR3JvdXBpbmcgJiYgc2hvd0ZpbHRlclJvd1xyXG4gICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAzXHJcbiAgICAgICAgICAgICAgICA6IHNob3dDb2x1bW5zR3JvdXBpbmcgfHwgc2hvd0ZpbHRlclJvd1xyXG4gICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAyXHJcbiAgICAgICAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodFxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAjZmFrZVNjcm9sbFxyXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImJvZHlXcmFwcGVySGVpZ2h0XCJcclxuICAgICAgICAgICAgc3R5bGU9XCJcclxuICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xyXG4gICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcclxuICAgICAgICAgICAgICB3aWR0aDogMTdweDtcclxuICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgcmlnaHQ6IDA7XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZjFmMmYzO1xyXG4gICAgICAgICAgICAgIHotaW5kZXg6IDEwO1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0ICogZGF0YVNldExlbmd0aFwiPjwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIEhvcml6aW50YWwgRmFrZSBTY3JvbGxiYXJzIC0tPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCJcclxuICAgICAgICAgICpuZ0lmPVwiZGF0YVNldC5sZW5ndGggJiYgaGFzU2Nyb2xsXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIFtzdHlsZS5zY3JvbGxiYXJXaWR0aF09XCJob3JpemludGFsU2Nyb2xsYmFyV2lkdGhcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZha2UtaG9yaXppbnRhbC1zY3JvbGxiYXJcIlxyXG4gICAgICAgICAgICAjZmFrZVNjcm9sbFxyXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwibGVmdFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aFwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3cteDogc2Nyb2xsXCJcclxuICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgW3N0eWxlLnNjcm9sbGJhcldpZHRoXT1cImhvcml6aW50YWxTY3JvbGxiYXJXaWR0aFwiXHJcbiAgICAgICAgICAgIChzY3JvbGwpPVwib25DZW50ZXJCb2R5U2Nyb2xsKCRldmVudClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZha2UtaG9yaXppbnRhbC1zY3JvbGxiYXJcIlxyXG4gICAgICAgICAgICAjaG9yaXppbnRhbEZha2VTY3JvbGxcclxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNlbnRlclBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgW3N0eWxlLndpZHRoLnB4XT1cImNlbnRlclBpbm5lZEhlYWRlci5zY3JvbGxXaWR0aCAtIDEwXCI+PC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgW3N0eWxlLnNjcm9sbGJhcldpZHRoXT1cImhvcml6aW50YWxTY3JvbGxiYXJXaWR0aFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZmFrZS1ob3JpemludGFsLXNjcm9sbGJhclwiXHJcbiAgICAgICAgICAgICNmYWtlU2Nyb2xsXHJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJyaWdodFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aFwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3cteDogc2Nyb2xsXCJcclxuICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIFNpZGUgTWVudSBJbXBsZW1lbnRlZCBIZXJlIC0tPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJzaG93U2lkZU1lbnVcIlxyXG4gICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJzaWRlTWVudVZpc2libGUgPyAyODAgOiAzMFwiXHJcbiAgICAgICAgY2xhc3M9XCJyaWdodC1tZW51IGgtMTAwXCJcclxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cInNpZGVtZW51QmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMCBkLWZsZXggZmxleC1yb3ctcmV2ZXJzZVwiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAzMHB4XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1zdGFydF09XCJzaWRlTWVudVZpc2libGVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNpZGVNZW51KCdjb2xzJylcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5iZy1mZmZdPVwiXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50T3BlbmVkU2lkZU1lbnVlID09ICdjb2xzJyAmJiBzaWRlTWVudVZpc2libGVcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItYmVsb3ddPVwic2lkZU1lbnVWaXNpYmxlXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImNvbHVtbnMtYnV0dG9uIGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvdWktY2hlY2tzLWdyaWQuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1tZW51ZS10ZXh0XCI+Q29sdW1uczwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2lkZU1lbnUoJ2ZpbHRycycpXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuYmctZmZmXT1cIlxyXG4gICAgICAgICAgICAgICAgY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9PSAnZmlsdHJzJyAmJiBzaWRlTWVudVZpc2libGVcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItYmVsb3ddPVwiXHJcbiAgICAgICAgICAgICAgICBzaWRlTWVudVZpc2libGUgJiYgY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9PSAnZmlsdHJzJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb2x1bW5zLWJ1dHRvbiBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2ZpbHRlci0yLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbWVudWUtdGV4dFwiPkZpbHRlcjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImgtMTAwXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJzaWRlTWVudVZpc2libGVcIlxyXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7IHdpZHRoOiBzaWRlTWVudVZpc2libGUgPyAnMjUwcHgnIDogJycgfVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMFwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9PSAnY29scycgJiYgc2lkZU1lbnVWaXNpYmxlXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uUGFubmVsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIENvbHVtbiBJdGVtcyAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tcGFuZWwtYm9keSBweC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnM7IHRyYWNrQnk6IHRyYWNrQnlGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtblBhbmVsSXRlbTsgY29udGV4dDogeyBjb2w6IGNvbCB9XCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8aHIgLz5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1tZW51LXJvdy1ncm91cHNcIiBzdHlsZT1cImhlaWdodDogMzAlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGVNZW51Um93R3JvdXBzXCJcclxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjdXJyZW50T3BlbmVkU2lkZU1lbnVlID09ICdmaWx0cnMnICYmIHNpZGVNZW51VmlzaWJsZVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGVGaWx0ZXJzXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiZm9vdGVyUm93SGVpZ2h0XCJcclxuICAgICAgY2xhc3M9XCJib3JkZXItdG9wXCJcclxuICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJmb290ZXJSb3dCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgPlxyXG4gICAgICA8IS0tIFJvd3M6IDxzcGFuIGNsYXNzPVwiZnctNTAwIG1zLTFcIj57eyBkYXRhU2V0Lmxlbmd0aCB9fTwvc3Bhbj4gLS0+XHJcblxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJwYWdpbmF0aW9uLWNvbnRhaW5lclwiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJmb290ZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgIFtzdHlsZS5wYWRkaW5nLnB4XT1cImZvb3RlclBhZGRpbmdcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2Utc2l6ZVwiPlxyXG4gICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBhZ2luYXRpb25Db25maWcubGltaXRcIlxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHNpemUgb2YgcGFnZVNpemVPcHRpb25zXCIgW3ZhbHVlXT1cInNpemVcIj5cclxuICAgICAgICAgICAgICB7eyBzaXplIH19XHJcbiAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlcGFyYXRvclwiPiBwZXIgcGFnZSA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYWdlLWluZm9cIj5cclxuICAgICAgICAgIFJlc3VsdHM6XHJcbiAgICAgICAgICB7eyAocGFnaW5hdGlvbkNvbmZpZy5wYWdlIC0gMSkgKiBwYWdpbmF0aW9uQ29uZmlnLmxpbWl0ICsgMSB9fS17e1xyXG4gICAgICAgICAgICBwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgKiBwYWdpbmF0aW9uQ29uZmlnLmxpbWl0IDxcclxuICAgICAgICAgICAgcGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHNcclxuICAgICAgICAgICAgICA/IHBhZ2luYXRpb25Db25maWcucGFnZSAqIHBhZ2luYXRpb25Db25maWcubGltaXRcclxuICAgICAgICAgICAgICA6IHBhZ2luYXRpb25Db25maWcudG90YWxSZXN1bHRzXHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgb2ZcclxuICAgICAgICAgIHt7IHBhZ2luYXRpb25Db25maWcudG90YWxSZXN1bHRzIH19XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYWdlLWJ1dHRvbnNcIj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKHBhZ2luYXRpb25Db25maWcucGFnZSAtIDEpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInBhZ2luYXRpb25Db25maWcucGFnZSA9PT0gMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOKAuVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGFnZSBvZiB2aXNpYmxlUGFnZXNcIj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicGFnZSAhPT0gJy4uLidcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJnb1RvUGFnZShwYWdlKVwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJwYWdlID09PSBwYWdpbmF0aW9uQ29uZmlnLnBhZ2VcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3sgcGFnZSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwYWdlID09PSAnLi4uJ1wiPi4uLjwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKHBhZ2luYXRpb25Db25maWcucGFnZSArIDEpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInBhZ2luYXRpb25Db25maWcucGFnZSA9PT0gcGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHNcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDigLpcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuPCEtLSBIZWFkZXIgQ2VsbCBUZW1wbGF0ZSAtLT5cclxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XHJcbjwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG5cclxuPG5nLXRlbXBsYXRlXHJcbiAgI2hlYWRlckNlbGxcclxuICBsZXQtY29sXHJcbiAgbGV0LXBpbm5lZFJpZ2h0PVwicGlubmVkUmlnaHRcIlxyXG4gIGxldC1pPVwiaW5kZXhcIlxyXG4gIGxldC1zZWN0aW9ucz1cInNlY3Rpb25cIlxyXG4gIGxldC1jYWxsZWRGcm9tTmVzdGVkUGxhY2Vob2xkZXI9XCJjYWxsZWRGcm9tTmVzdGVkUGxhY2Vob2xkZXJcIlxyXG4+XHJcbiAgPGRpdj5cclxuICAgIDwhLS0gR3JvdXAgSGVhZGVyIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5jaGlsZHJlbj8ubGVuZ3RoID4gMDsgZWxzZSBmbGF0SGVhZGVyXCI+XHJcbiAgICAgIDxkaXYgY2RrRHJvcGxpc3RHcm91cCBjbGFzcz1cImdyb3VwLWNvbHVtbi13cmFwcGVyXCI+XHJcbiAgICAgICAgPCEtLSBQYXJlbnQgSGVhZGVyIC0tPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwic2hvdWxkVGhlR3JvdXBIZWFkZXJTaG93KGNvbClcIlxyXG4gICAgICAgICAgY2xhc3M9XCJoZWFkZXItY2VsbCBncm91cC1oZWFkZXJcIlxyXG4gICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICAgICAgICBbc3R5bGUuZ3JpZENvbHVtbl09XCInc3BhbiAnICsgY29sLmNoaWxkcmVuLmxlbmd0aFwiXHJcbiAgICAgICAgICBbc3R5bGUuZm9udFdlaWdodF09XCJoZWFkZXJGb250V2VpZ2h0XCJcclxuICAgICAgICAgIFtjbGFzcy5mbGV4LXJvdy1yZXZlcnNlXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICAgIFtjbGFzcy5qdXN0aWZ5LWNvbnRlbnQtZW5kXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICAgIHN0eWxlPVwiZ3JpZC1yb3c6IDFcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJncm91cC1oZWFkZXItY29udGVudFwiXHJcbiAgICAgICAgICAgIFt0aXRsZV09XCJjb2wuaGVhZGVyXCJcclxuICAgICAgICAgICAgW2NsYXNzLm1zLTJdPVwicGlubmVkUmlnaHRcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJyZXNpemUtaGFuZGxlXCJcclxuICAgICAgICAgICAgKGRibGNsaWNrKT1cImF1dG9zaXplQ29sdW1uKGNvbC5jaGlsZHJlbilcIlxyXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIlxyXG4gICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb25SZXNpemVHcm91cCgkZXZlbnQsIGNvbCwgcGlubmVkUmlnaHQpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Jlc2l6ZS1oYW5kbGUuc3ZnJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIENoaWxkIEhlYWRlcnMgYW5kIEZpbHRlcnMgLS0+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4XCJcclxuICAgICAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXHJcbiAgICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImNvbC5jaGlsZHJlblwiXHJcbiAgICAgICAgICAoY2RrRHJvcExpc3RTb3J0ZWQpPVwib25DaGlsZERyb3BsaXN0U29ydGVkKCRldmVudCwgc2VjdGlvbnMpXCJcclxuICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25DaGlsZERyb3BsaXN0RHJvcGVkKCRldmVudClcIlxyXG4gICAgICAgICAgW2Nka0Ryb3BMaXN0U29ydGluZ0Rpc2FibGVkXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cIlxyXG4gICAgICAgICAgICBzaG93Um93c0dyb3VwaW5nID8gWydyb3dzLWdyb3VwaW5nLXRvcC1jb250YWluZXInXSA6IFtdXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2RrRHJhZ1xyXG4gICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiY2hpbGRcIlxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgY29sLmNoaWxkcmVuOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPCEtLSBDaGlsZCBIZWFkZXIgLS0+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGlsZC5pc192aXNpYmxlICYmICFjaGlsZFsnaXNSb3dHcm91cGVkJ11cIj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjZGtEcmFnSGFuZGxlXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImhlYWRlci1jZWxsIG9uZS1yb3ctaGVhZGVyLWNlbGxzIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcclxuICAgICAgICAgICAgICAgIFthdHRyLmZpZWxkXT1cImNoaWxkLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjaGlsZC53aWR0aFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNoaWxkLndpZHRoXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnRXZWlnaHRdPVwiaGVhZGVyRm9udFdlaWdodFwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImdyaWQtcm93OiAyXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5maWx0ZXItYXBwbGllZC1vbi10ZXh0XT1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNoaWxkKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgaC0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiY29sLmhlYWRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Mudy0xMDBdPVwicGlubmVkUmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWVsbGlwc2lzIGgtMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVkaXRhYmxlLWhlYWRlcl09XCJjaGlsZD8uaXNfZWRpdGFibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlblRocmVlRG90c01lbnUoJGV2ZW50LCBjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbkZpbHRlcm9uVGhyZWVEb3RzQ2xpY2soY2hpbGQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNoaWxkLmhlYWRlciB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mbGV4LXJvdy1yZXZlcnNlXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5tZS0yXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjaGlsZC5waW5uZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9waW4tYmx1ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGhyZWUtZG90cyBwLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlblRocmVlRG90c01lbnUoJGV2ZW50LCBjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNUaHJlZURvdHNGaWx0ZXJPcGVuID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvdGhyZWUtZG90cy12ZXJ0aWNhbC5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBPbmx5IHNob3cgbWVudSBpZiB0aGlzIGNvbHVtbiBpcyBhY3RpdmUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUNvbCA9PT0gY2hpbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInRvcDogLTUwJTsgei1pbmRleDogMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAtKCFjaGlsZD8ucGlubmVkID8gY2VudGVyUGlubmVkSGVhZGVyLnNjcm9sbExlZnQgOiAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUudG9wLnB4XT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzVGhyZWVEb3RzRmlsdGVyT3BlblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzaG93RmlsdGVyUm93IHx8IHNob3dDb2x1bW5zR3JvdXBpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAyIC0gMTBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBoZWFkZXJSb3dIZWlnaHQgLSAxMFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uTWVudTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sOiBjaGlsZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOZXN0ZWRUYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246IHNlY3Rpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGJsY2xpY2spPVwiYXV0b3NpemVDb2x1bW4oY2hpbGQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25SZXNpemVDb2x1bW4oJGV2ZW50LCBjaGlsZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL3Jlc2l6ZS1oYW5kbGUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIEZpbHRlciBDZWxsIC0tPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0ZpbHRlclJvd1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImhlYWRlci1jZWxsIGZpbHRlci1jZWxsXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcclxuICAgICAgICAgICAgICAgIFthdHRyLmZpZWxkXT1cImNoaWxkLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjaGlsZC53aWR0aFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNoaWxkLndpZHRoXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJncmlkLXJvdzogM1wiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImhlYWRlci1jZWxsIGZpbHRlci1jZWxsXCJcclxuICAgICAgICAgICAgICAgICAgW2F0dHIuZmllbGRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkZpbHRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjaGlsZC5maWx0ZXJWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoY2hpbGQpXCJcclxuICAgICAgICAgICAgICAgICAgICAocGFzdGUpPVwib25GaWx0ZXJDaGFuZ2UoY2hpbGQpOyBhcHBseURyb3Bkb3duRmlsdGVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkPy50eXBlID09ICdkcm9wZG93bicgfHwgY2hpbGQ/LnR5cGUgPT0gJ2ltYWdlJ1xyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkLXNlYXJjaC1pbnB1dF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkPy50eXBlID09ICdkcm9wZG93bicgfHwgY2hpbGQ/LnR5cGUgPT0gJ2ltYWdlJ1xyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgb3BlbkZpbHRlckZyb21EaXNhYmxlZFNlYXJjaGVkSW5wdXQoY2hpbGQpXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9wZW5GaWx0ZXIoY2hpbGQpXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmlsdGVyLWFwcGxpZWRdPVwiaXNGaWx0ZXJBcHBsaWVkT25Db2x1bW4oY2hpbGQpXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MucGUtbm9uZV09XCJjaGlsZD8udHlwZSA9PSAnaW1hZ2UnXCJcclxuICAgICAgICAgICAgICAgICAgICA+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2ZpbHRlci0yLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNGaWx0ZXJBcHBsaWVkT25Db2x1bW4oY2hpbGQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiA3cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogN3B4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwcHggMHB4IDNweCAjNzQ4NmZmO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCAxNjMgMjMzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByaWdodDogNHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3A6IDEycHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLWNpcmNsZSBkLWJsb2NrXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBmaWx0ZXItcm93LWZpbHRlci13cmFwcGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUZpbHRlckNlbGw/LmZpZWxkID09IGNoaWxkPy5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IDEwMCU7IHJpZ2h0OiAwOyB6LWluZGV4OiA5OVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZD8ucGlubmVkID8gMCA6IC1jZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsTGVmdFxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlck1lbnU7IGNvbnRleHQ6IHsgY29sOiBjaGlsZCB9XCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1ByZXZpZXdcclxuICAgICAgICAgICAgICA+PGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIWRyYWdnaW5nSW5Hcm91cEFyZWEgfHxcclxuICAgICAgICAgICAgICAgICAgICAoY2hpbGQuaXNfZ3JvdXBhYmxlICYmIGRyYWdnaW5nSW5Hcm91cEFyZWEpXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkcmFnZ2luZ0luR3JvdXBBcmVhICYmICFjaGlsZC5pc19ncm91cGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYmFuLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXY+e3sgY2hpbGQuaGVhZGVyIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUGxhY2Vob2xkZXI+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFkcmFnZ2luZ0luR3JvdXBBcmVhXCIgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICBjaGlsZEhlYWRlclBsYWNlaG9sZGVyO1xyXG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCxcclxuICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcclxuICAgICAgICAgICAgICAgICAgICBzZWN0aW9uczogc2VjdGlvbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGVkRnJvbU5lc3RlZFBsYWNlaG9sZGVyOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZHJhZ2dpbmdJbkdyb3VwQXJlYSAmJiBjaGlsZD8uaXNfZ3JvdXBhYmxlXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGdhcC0yIG1zLTJcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJvcGFjaXR5OiAwLjZcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICB0b3BHcm91cGluZ1Jvd1BsYWNlaG9sZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICBwaW5uZWRSaWdodDogcGlubmVkUmlnaHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uczogc2VjdGlvbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gRmxhdCBIZWFkZXIgfHwgU2luZ2xlIEhlYWRlciBDZWxsLS0+XHJcbiAgICA8bmctdGVtcGxhdGUgI2ZsYXRIZWFkZXI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImdyb3VwLWNvbHVtbi13cmFwcGVyXCJcclxuICAgICAgICAqbmdJZj1cImNvbC5pc192aXNpYmxlICYmICFjb2xbJ2lzUm93R3JvdXBlZCddXCJcclxuICAgICAgPlxyXG4gICAgICAgIDwhLS0gRnVsbC1oZWlnaHQgSGVhZGVyIENlbGwgKHNwYW5zIDIgcm93cyB2aXN1YWxseSkgLS0+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJoZWFkZXItY2VsbCBvbmUtcm93LWhlYWRlci1jZWxsc1wiXHJcbiAgICAgICAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICAgICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJcclxuICAgICAgICAgICAgc2hvd0NvbHVtbnNHcm91cGluZyA/IGhlYWRlclJvd0hlaWdodCAqIDIgOiBoZWFkZXJSb3dIZWlnaHRcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxyXG4gICAgICAgICAgICBzaG93Q29sdW1uc0dyb3VwaW5nID8gaGVhZGVyUm93SGVpZ2h0ICogMiA6IGhlYWRlclJvd0hlaWdodFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIFtzdHlsZS5mb250V2VpZ2h0XT1cImhlYWRlckZvbnRXZWlnaHRcIlxyXG4gICAgICAgICAgc3R5bGU9XCJncmlkLXJvdzogMSAvIHNwYW4gMlwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gdy0xMDAgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgaC0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiY29sLmhlYWRlclwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgaC0xMDAgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuZWRpdGFibGUtaGVhZGVyXT1cImNvbD8uaXNfZWRpdGFibGVcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuZmlsdGVyLWFwcGxpZWQtb24tdGV4dF09XCJpc0ZpbHRlckFwcGxpZWRPbkNvbHVtbihjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIG9wZW5UaHJlZURvdHNNZW51KCRldmVudCwgY29sKTtcclxuICAgICAgICAgICAgICAgICAgICBvcGVuRmlsdGVyb25UaHJlZURvdHNDbGljayhjb2wpXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHt7IGNvbC5oZWFkZXIgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3MubWUtMl09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sPy5waW5uZWRcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9waW4tYmx1ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5tZS0yXT1cImNvbC5vcmRlcl9ieVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwic29ydGluZ0NvbmZpZz8uZmllbGQgPT0gY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBBc2NlbmRpbmcgU29ydCBJY29uIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic29ydGluZ0NvbmZpZz8ub3JkZXJfYnkgPT0gJ2FzYydcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zb3J0LWFzYy5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNvcnREZXNjKGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwic29ydGluZ0NvbmZpZz8ub3JkZXJfYnkgPT09ICdhc2MnXCJcclxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gRGVzY2VuZGluZyBTb3J0IEljb24gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PSAnZGVzYydcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zb3J0LWRlc2Muc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG10LTEgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzb3J0QXNjKGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwic29ydGluZ0NvbmZpZz8ub3JkZXJfYnkgPT09ICdkZXNjJ1wiXHJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0aHJlZS1kb3RzIHAtMVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICBvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsIGNvbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXNUaHJlZURvdHNGaWx0ZXJPcGVuID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvdGhyZWUtZG90cy12ZXJ0aWNhbC5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBPbmx5IHNob3cgbWVudSBpZiB0aGlzIGNvbHVtbiBpcyBhY3RpdmUgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUNvbCA9PT0gY29sXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IC01MCU7IHotaW5kZXg6IDIxXCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgLSghY29sPy5waW5uZWQgPyBjZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsTGVmdCA6IDApXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaXNUaHJlZURvdHNGaWx0ZXJPcGVuXHJcbiAgICAgICAgICAgICAgICAgICAgICA/IHNob3dGaWx0ZXJSb3cgfHwgc2hvd0NvbHVtbnNHcm91cGluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDIgLSAxMFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodCAtIDEwXHJcbiAgICAgICAgICAgICAgICAgICAgICA6IDBcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5NZW51O1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2w6IGNvbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNOZXN0ZWRUYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246IHNlY3Rpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3Mudy0xMDBdPVwiY29sLnBpbm5lZCA9PSAncmlnaHQnXCJcclxuICAgICAgICAgICAgICAgICAgKGRibGNsaWNrKT1cImF1dG9zaXplQ29sdW1uKGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb25SZXNpemVDb2x1bW4oJGV2ZW50LCBjb2wpXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Jlc2l6ZS1oYW5kbGUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIEZpbHRlciBDZWxsIC0tPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwic2hvd0ZpbHRlclJvd1wiXHJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICBjbGFzcz1cImhlYWRlci1jZWxsIGZpbHRlci1jZWxsXCJcclxuICAgICAgICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcclxuICAgICAgICAgIFthdHRyLmZpZWxkXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wuZmlsdGVyVmFsdWVcIlxyXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkZpbHRlckNoYW5nZShjb2wpXCJcclxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cImNvbD8udHlwZSA9PSAnZHJvcGRvd24nIHx8IGNvbD8udHlwZSA9PSAnaW1hZ2UnXCJcclxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkLXNlYXJjaC1pbnB1dF09XCJcclxuICAgICAgICAgICAgICBjb2w/LnR5cGUgPT0gJ2Ryb3Bkb3duJyB8fCBjb2w/LnR5cGUgPT0gJ2ltYWdlJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAocGFzdGUpPVwib25QYXN0ZUluRmlsdGVyUm93U2VhcmNoKCRldmVudCwgY29sKVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9wZW5GaWx0ZXJGcm9tRGlzYWJsZWRTZWFyY2hlZElucHV0KGNvbClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcclxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlclwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9wZW5GaWx0ZXIoY29sKVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5maWx0ZXItYXBwbGllZF09XCJpc0ZpbHRlckFwcGxpZWRPbkNvbHVtbihjb2wpXCJcclxuICAgICAgICAgICAgW2NsYXNzLnBlLW5vbmVdPVwiY29sPy50eXBlID09ICdpbWFnZSdcIlxyXG4gICAgICAgICAgICA+PHNwYW5cclxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2ZpbHRlci0yLnN2ZydcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJpc0ZpbHRlckFwcGxpZWRPbkNvbHVtbihjb2wpXCJcclxuICAgICAgICAgICAgICBzdHlsZT1cIlxyXG4gICAgICAgICAgICAgICAgd2lkdGg6IDdweDtcclxuICAgICAgICAgICAgICAgIGhlaWdodDogN3B4O1xyXG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAzcHggIzc0ODZmZjtcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwIDE2MyAyMzMpO1xyXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICAgICAgcmlnaHQ6IDRweDtcclxuICAgICAgICAgICAgICAgIHRvcDogMTJweDtcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC1jaXJjbGUgZC1ibG9ja1wiXHJcbiAgICAgICAgICAgID48L3NwYW5cclxuICAgICAgICAgID48L3NwYW4+XHJcblxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGZpbHRlci1yb3ctZmlsdGVyLXdyYXBwZXJcIlxyXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUZpbHRlckNlbGwgPT09IGNvbFwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwidG9wOiAxMDAlOyByaWdodDogMDsgei1pbmRleDogOTlcIlxyXG4gICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJjb2w/LnBpbm5lZCA/IDAgOiAtY2VudGVyUGlubmVkSGVhZGVyLnNjcm9sbExlZnRcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJNZW51OyBjb250ZXh0OiB7IGNvbDogY29sIH1cIlxyXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuPCEtLSBCb2R5IENlbGwgVGVtcGxhdGUgLS0+XHJcbjwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XHJcbjwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XHJcblxyXG48bmctdGVtcGxhdGVcclxuICAjcm93Q2VsbFxyXG4gIGxldC1yb3dcclxuICBsZXQtY29sdW1ucz1cImNvbHVtbnNcIlxyXG4gIGxldC1pc0V2ZW49XCJpc0V2ZW5cIlxyXG4gIGxldC1pc09kZD1cImlzT2RkXCJcclxuICBsZXQtaXNMZWZ0U2VjdGlvbj1cImlzTGVmdFwiXHJcbiAgbGV0LXNlY3Rpb249XCJzZWN0aW9uXCJcclxuICBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiXHJcbiAgbGV0LWlzVG90YWxSb3c9XCJpc1RvdGFsUm93XCJcclxuPlxyXG4gIDwhLS0gQ2hlY2sgaWYgcm93IGlzIGEgZ3JvdXAgLS0+XHJcbiAgPG5nLWNvbnRhaW5lclxyXG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJncm91cFJvd1RlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93LCBkZXB0aDogMCB9XCJcclxuICA+PC9uZy1jb250YWluZXI+XHJcbiAgPG5nLXRlbXBsYXRlICNncm91cFJvd1RlbXBsYXRlIGxldC1yb3cgbGV0LWRlcHRoPVwiZGVwdGhcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cuaXNHcm91cDsgZWxzZSByZWd1bGFyUm93XCI+XHJcbiAgICAgIDwhLS0gR3JvdXAgSGVhZGVyIC0tPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJncm91cC1oZWFkZXItcm93IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcclxuICAgICAgICBbY2xhc3MuYm9yZGVyLWJlbG93XT1cInNlY3Rpb24gIT09ICdjZW50ZXInXCJcclxuICAgICAgICBbc3R5bGUud2lkdGhdPVwiXHJcbiAgICAgICAgICBzZWN0aW9uID09PSAnY2VudGVyJ1xyXG4gICAgICAgICAgICA/IChjZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudD8uc2Nyb2xsV2lkdGggPz8gMCkgKyAncHgnXHJcbiAgICAgICAgICAgIDogJzEwMCUnXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwic2VjdGlvbiA9PSAnbGVmdCdcIlxyXG4gICAgICAgICAgY2xhc3M9XCJoLTEwMCBkLWZsZXhcIlxyXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImxlZnRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGggLSAxXCJcclxuICAgICAgICAgIFtjbGFzcy5yb3ctc2VsZWN0ZWRdPVwicm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1NlcmlhbE51bWJlclwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDUwcHhcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgaC0xMDAgYm9yZGVyLXJpZ2h0IGp1c3RpZnktY29udGVudC1lbmQgcGUtMiBzLW5vXCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIjU1XCJcclxuICAgICAgICAgICAgW3N0eWxlLmN1cnNvcl09XCJcclxuICAgICAgICAgICAgICAndXJsKCcgK1xyXG4gICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctcmlnaHQuc3ZnKSwgYXV0bydcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvblJvd01vdXNlRG93bihyb3cuX192aXJ0dWFsSW5kZXgsICRldmVudClcIlxyXG4gICAgICAgICAgICAobW91c2VvdmVyKT1cIm9uUm93TW91c2VPdmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJjaGVja2JveGVzQ29sb3JcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBnZXRTdGFydEluZGV4KCkgKyAocm93Ll9fdmlydHVhbEluZGV4IC0gMSkgfHwgXCJcIiB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDUwcHhcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBoLTEwMCBib3JkZXItcmlnaHRcIlxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICBbY2xhc3Mucm93LXNlbGVjdGVkXT1cInJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5sZWZ0LXNlbGVjdGlvbi1ib3JkZXJdPVwiXHJcbiAgICAgICAgICAgICAgcm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5maXJzdC1yb3ctc2VsZWN0ZWRdPVwiZmlyc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcclxuICAgICAgICAgICAgW2NsYXNzLmxhc3Qtcm93LXNlbGVjdGVkXT1cImxhc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcclxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImNoZWNrYm94ZXNDb2xvclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dCBzdHlsZT1cIndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHhcIiB0eXBlPVwiY2hlY2tib3hcIiAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwic2VjdGlvbiA9PSAnY2VudGVyJ1wiXHJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY2VudGVyUGlubmVkSGVhZGVyLnNjcm9sbFdpZHRoXCJcclxuICAgICAgICAgIFtzdHlsZS5taW5XaWR0aC5weF09XCJjZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsV2lkdGhcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBzLTIgaC0xMDAgYm9yZGVyLWJlbG93XCJcclxuICAgICAgICAgIFtjbGFzcy5yb3ctc2VsZWN0ZWRdPVwicm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXCJcclxuICAgICAgICAgIFtjbGFzcy5maXJzdC1yb3ctc2VsZWN0ZWRdPVwiZmlyc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcclxuICAgICAgICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIlxyXG4gICAgICAgICAgICBbc3R5bGUucGFkZGluZ0xlZnQucHhdPVwiZGVwdGggPiAwID8gZGVwdGggKiAzMCA6IDBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTIgZmlsdGVyLWljb24td3JhcHBlclwiIChjbGljayk9XCJ0b2dnbGVFeHBhbmQocm93KVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvblwiXHJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICByb3cuaXNFeHBhbmRcclxuICAgICAgICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tZG93bi5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgOiBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3Ryb25nIChjbGljayk9XCJ0b2dnbGVFeHBhbmQocm93KVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICB7eyByb3cuZ3JvdXBWYWx1ZSB9fSAoe3sgY291bnRMZWFmUm93cyhyb3cpIH19KVxyXG4gICAgICAgICAgICA8L3N0cm9uZz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cInNlY3Rpb24gPT0gJ3JpZ2h0J1wiXHJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicmlnaHRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGhcIlxyXG4gICAgICAgICAgW2NsYXNzLnJvdy1zZWxlY3RlZF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxyXG4gICAgICAgICAgW2NsYXNzLmZpcnN0LXJvdy1zZWxlY3RlZF09XCJmaXJzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxyXG4gICAgICAgICAgW2NsYXNzLmxhc3Qtcm93LXNlbGVjdGVkXT1cImxhc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcclxuICAgICAgICA+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBSZWN1cnNpdmUgQ2hpbGRyZW4gLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJncm91cC1jaGlsZHJlblwiICpuZ0lmPVwicm93LmlzRXhwYW5kXCIgW0BzbGlkZVRvZ2dsZV0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGNoaWxkIG9mIHJvdy5jaGlsZHJlbjsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUlkXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpbGQuaXNHcm91cDsgZWxzZSBkYXRhUm93XCI+XHJcbiAgICAgICAgICAgIDwhLS0gUmVjdXJzaXZlIGNhbGwgZm9yIG5lc3RlZCBncm91cCAtLT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICBncm91cFJvd1RlbXBsYXRlO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGNoaWxkLCBkZXB0aDogZGVwdGggKyAxIH1cclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2RhdGFSb3c+XHJcbiAgICAgICAgICAgIDwhLS0gUmVndWxhciBkYXRhIHJvdyAtLT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICByb3dDZWxsO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNoaWxkLFxyXG4gICAgICAgICAgICAgICAgICBjb2x1bW5zOiBjb2x1bW5zLFxyXG4gICAgICAgICAgICAgICAgICBpc0V2ZW46IGkgJSAyID09PSAwLFxyXG4gICAgICAgICAgICAgICAgICBpc09kZDogaSAlIDIgIT09IDAsXHJcbiAgICAgICAgICAgICAgICAgIGlzTGVmdDogaXNMZWZ0U2VjdGlvbixcclxuICAgICAgICAgICAgICAgICAgc2VjdGlvbjogc2VjdGlvbixcclxuICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogaXNUb3RhbFJvd1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPCEtLSBSZWd1bGFyIHJvdyAobm90IGEgZ3JvdXApIC0tPlxyXG4gIDxuZy10ZW1wbGF0ZSAjcmVndWxhclJvdz5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkLWZsZXhcIlxyXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXHJcbiAgICAgIFtzdHlsZS5taW5IZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcclxuICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxyXG4gICAgPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGN1cnNvci1wb2ludGVyIGJvcmRlci1iZWxvd1wiXHJcbiAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDMwcHg7IGhlaWdodDogMTAwJVwiXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHNlY3Rpb24gPT0gJ2NlbnRlcicgJiYgKGdyaWRUeXBlID09PSAnQXNzZXRzJyB8fCBncmlkVHlwZSA9PT0gJ1Rhc2tzJylcclxuICAgICAgICBcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXHJcbiAgICAgICAgICAgID8gbnVsbFxyXG4gICAgICAgICAgICA6IGdldEJhY2tncm91bmRDb2xvcihyb3csIGlzRXZlbiwgc2VjdGlvbilcclxuICAgICAgICB9XCJcclxuICAgICAgICBbY2xhc3Muc2VsZWN0ZWQtY2VsbF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxyXG4gICAgICAgIFtjbGFzcy5maXJzdC1yb3ctc2VsZWN0ZWRdPVwiZmlyc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcclxuICAgICAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEZXRhaWxSb3dFeHBhbmQocm93KVwiXHJcbiAgICAgICAgICAqbmdJZj1cInJvdz8uZGV0YWlsPy5yZXN1bHQ/Lmxlbmd0aCB8fCBncmlkVHlwZSA9PT0gJ1Rhc2tzJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBmaWx0ZXItaWNvbi13cmFwcGVyXCJcclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgIGlzRGV0YWlsc0V4cGFuZGVkKHJvdylcclxuICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tZG93bi5zdmcnXHJcbiAgICAgICAgICAgICAgOiBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJcclxuICAgICAgICAgIHNlY3Rpb24gPT0gJ2NlbnRlcicgJiYgZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aCA/IGdyb3VwQm94UGFkZGluZyA6IDBcclxuICAgICAgICBcIlxyXG4gICAgICAgIFtjbGFzcy5yb3ctc2VsZWN0ZWRdPVwicm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXCJcclxuICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgW2NsYXNzLmxhc3Qtcm93LXNlbGVjdGVkXT1cImxhc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcclxuICAgICAgICAoY29udGV4dG1lbnUpPVwib25SaWdodENsaWNrKCRldmVudCwgcm93KVwiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxyXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXJvdyBoLTEwMFwiXHJcbiAgICAgICAgW2NsYXNzLmV2ZW4tcm93XT1cImlzRXZlblwiXHJcbiAgICAgICAgW2NsYXNzLm9kZC1yb3ddPVwiaXNPZGRcIlxyXG4gICAgICAgIFtjbGFzcy5ob3ZlcmVkLXJvd109XCJob3ZlcmVkUm93SWQgPT09IChyb3cuX2lkIHx8IHJvdy5pZClcIlxyXG4gICAgICAgIChtb3VzZWVudGVyKT1cIm9uUm93SG92ZXIocm93KVwiXHJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwib25Sb3dMZWF2ZSgpXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6IGdldEJhY2tncm91bmRDb2xvcihyb3csIGlzRXZlbiwgc2VjdGlvbilcclxuICAgICAgICB9XCJcclxuICAgICAgICBbc3R5bGUubWluSGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXHJcbiAgICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxyXG4gICAgICA+PC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAoY29udGV4dG1lbnUpPVwib25SaWdodENsaWNrKCRldmVudCwgcm93KVwiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxyXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXJvd1wiXHJcbiAgICAgICAgW2NsYXNzLmV2ZW4tcm93XT1cImlzRXZlblwiXHJcbiAgICAgICAgW2NsYXNzLm9kZC1yb3ddPVwiaXNPZGRcIlxyXG4gICAgICAgIFtjbGFzcy5ob3ZlcmVkLXJvd109XCJob3ZlcmVkUm93SWQgPT09IChyb3cuX2lkIHx8IHJvdy5pZClcIlxyXG4gICAgICAgIChtb3VzZWVudGVyKT1cIm9uUm93SG92ZXIocm93KVwiXHJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwib25Sb3dMZWF2ZSgpXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6IGdldEJhY2tncm91bmRDb2xvcihyb3csIGlzRXZlbiwgc2VjdGlvbilcclxuICAgICAgICB9XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdC1hbGwtY2hlY2tib3gtY2VsbCBqdXN0aWZ5LWNvbnRlbnQtZW5kIHBlLTIgcy1ub1wiXHJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiNTVcIlxyXG4gICAgICAgICAgKm5nSWY9XCJpc0xlZnRTZWN0aW9uICYmIHNob3dTZXJpYWxOdW1iZXJcIlxyXG4gICAgICAgICAgW3N0eWxlLmN1cnNvcl09XCJcclxuICAgICAgICAgICAgJ3VybCgnICtcclxuICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctcmlnaHQuc3ZnKSwgYXV0bydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICAobW91c2Vkb3duKT1cIm9uUm93TW91c2VEb3duKHJvdy5fX3ZpcnR1YWxJbmRleCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAobW91c2VvdmVyKT1cIm9uUm93TW91c2VPdmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiY2hlY2tib3hlc0NvbG9yXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBnZXRTdGFydEluZGV4KCkgKyAocm93Ll9fdmlydHVhbEluZGV4IC0gMSkgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJib3JkZXItYmVsb3dcIlxyXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJcclxuICAgICAgICAgICAgcm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXHJcbiAgICAgICAgICAgICAgPyBzZWxlY3RlZFJvd3NCYWNrZ3JvdW5kQ29sb3JcclxuICAgICAgICAgICAgICA6IGNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdC1hbGwtY2hlY2tib3gtY2VsbFwiXHJcbiAgICAgICAgICAqbmdJZj1cImlzTGVmdFNlY3Rpb24gJiYgc2hvd0NoZWNrYm94ZXNcIlxyXG4gICAgICAgICAgW2NsYXNzLmxlZnQtc2VsZWN0aW9uLWJvcmRlcl09XCJcclxuICAgICAgICAgICAgcm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgW2NsYXNzLmZpcnN0LXJvdy1zZWxlY3RlZF09XCJmaXJzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxyXG4gICAgICAgICAgW2NsYXNzLmxhc3Qtcm93LXNlbGVjdGVkXT1cImxhc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcclxuICAgICAgICAgIFtzdHlsZS5taW5IZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMVwiXHJcbiAgICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzQW55VmlzaWJsZUNvbHVtblwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImlzUm93U2VsZWN0ZWQocm93KVwiXHJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlUm93U2VsZWN0aW9uKHJvdylcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBSZW5kZXIgYWxsIGNvbHVtbnMgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucztcclxuICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZpZWxkO1xyXG4gICAgICAgICAgICBsZXQgY29sSW5kZXggPSBpbmRleFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmNoaWxkcmVuPy5sZW5ndGggPiAwOyBlbHNlIGZsYXRDb2x1bW5cIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZDtcclxuICAgICAgICAgICAgICAgIGxldCBzdWJDb2xJbmRleCA9IGluZGV4XHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGlsZD8uaXNfdmlzaWJsZSAmJiAhY2hpbGQ/LmlzUm93R3JvdXBlZFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNlbGxUZW1wbGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2w6IGNoaWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcm93OiByb3csXHJcbiAgICAgICAgICAgICAgICAgICAgICByb3dJbmRleDogcm93SW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2xJbmRleDogY29sSW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdWJDb2xJbmRleDogc3ViQ29sSW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiBzZWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogaXNUb3RhbFJvd1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2ZsYXRDb2x1bW4+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2w/LmlzX3Zpc2libGUgJiYgIWNvbD8uaXNSb3dHcm91cGVkXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgY2VsbFRlbXBsYXRlO1xyXG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sOiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgcm93OiByb3csXHJcbiAgICAgICAgICAgICAgICAgICAgcm93SW5kZXg6IHJvd0luZGV4LFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbEluZGV4OiBjb2xJbmRleCxcclxuICAgICAgICAgICAgICAgICAgICBzdWJDb2xJbmRleDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiBzZWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IGlzVG90YWxSb3dcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2XHJcbiAgICAgIFtAc2xpZGVUb2dnbGVdXHJcbiAgICAgICpuZ0lmPVwic2VjdGlvbiA9PT0gJ2xlZnQnICYmIGlzRGV0YWlsc0V4cGFuZGVkKHJvdylcIlxyXG4gICAgICBjbGFzcz1cImFjY29yZGlvbi1kZXRhaWxzXCJcclxuICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzNTBweDsgb3ZlcmZsb3c6IGhpZGRlblwiXHJcbiAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiaGFzSG9yaXpvbnRhbFNjcm9sbCA/IDMzOSA6IDM0MVwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgbGVmdFJpZ2h0TmVzdGVkUGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93IH1cclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICBbQHNsaWRlVG9nZ2xlXVxyXG4gICAgICAqbmdJZj1cInNlY3Rpb24gPT09ICdjZW50ZXInICYmIGlzRGV0YWlsc0V4cGFuZGVkKHJvdylcIlxyXG4gICAgICBjbGFzcz1cImFjY29yZGlvbi1kZXRhaWxzIGNlbnRlci1zZWN0aW9uXCJcclxuICAgICAgc3R5bGU9XCJcclxuICAgICAgICBtYXgtaGVpZ2h0OiAzNTBweDtcclxuICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47XHJcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcclxuICAgICAgICBzY3JvbGxiYXItd2lkdGg6IHRoaW47XHJcbiAgICAgIFwiXHJcbiAgICAgICNuZXN0ZWRUYWJsZVxyXG4gICAgICBbc3R5bGUud2lkdGhdPVwiXHJcbiAgICAgICAgaGFzUmlnaHRQaW5uZWRDb2x1bW5zXHJcbiAgICAgICAgICA/ICcxMDAlJ1xyXG4gICAgICAgICAgOiBoYXNWZXJ0aWNhbFNjcm9sbFxyXG4gICAgICAgICAgPyAnY2FsYygxMDAlIC0gMTJweCknXHJcbiAgICAgICAgICA6ICcxMDAlJ1xyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JpZFR5cGUgPT0gJ0Fzc2V0cydcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIm5lc3RlZFRhYmxlVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyaWRUeXBlID09ICdUYXNrcydcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICB0YXNrTWFuYWdlbWVudFRlbXBsYXRlO1xyXG4gICAgICAgICAgICBjb250ZXh0OiB7IHRhc2tEZXRhaWxzOiByb3cgfVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICBbQHNsaWRlVG9nZ2xlXVxyXG4gICAgICAqbmdJZj1cInNlY3Rpb24gPT09ICdyaWdodCcgJiYgaXNEZXRhaWxzRXhwYW5kZWQocm93KVwiXHJcbiAgICAgIGNsYXNzPVwiYWNjb3JkaW9uLWRldGFpbHNcIlxyXG4gICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IDM1MHB4OyBvdmVyZmxvdzogaGlkZGVuXCJcclxuICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJoYXNIb3Jpem9udGFsU2Nyb2xsID8gMzM5IDogMzQxXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICBsZWZ0UmlnaHROZXN0ZWRQbGFjZWhvbGRlcjtcclxuICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBBY3R1YWwgQ2VsbCBpcyBIZXJlIC0tPlxyXG48bmctdGVtcGxhdGVcclxuICAjY2VsbFRlbXBsYXRlXHJcbiAgbGV0LWNvbD1cImNvbFwiXHJcbiAgbGV0LXJvdz1cInJvd1wiXHJcbiAgbGV0LXNlY3Rpb249XCJzZWN0aW9uXCJcclxuICBsZXQtc3ViQ29sSW5kZXg9XCJzdWJDb2xJbmRleFwiXHJcbiAgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIlxyXG4gIGxldC1jb2xJbmRleD1cImNvbEluZGV4XCJcclxuICBsZXQtaXNUb3RhbFJvdz1cImlzVG90YWxSb3dcIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgI2NlbGxDb250YWluZXJcclxuICAgIChjbGljayk9XCJcclxuICAgICAgZWRpdGluZ0tleSA9ICcnOyBzZXRBY3RpdmVDZWxsKHJvdywgY29sKTsgY29sbGFwc2VBbGxFeHBhbmRlZENlbGxzKClcclxuICAgIFwiXHJcbiAgICBbc3R5bGUuZm9udFdlaWdodF09XCJib2R5Rm9udFdlaWdodFwiXHJcbiAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICBjbGFzcz1cImNlbGwgb3ZlcmZsb3ctdmlzaWJsZSBwb3NpdGlvbi1yZWxhdGl2ZSBkYXRhLWdyaWQtY2VsbFwiXHJcbiAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxyXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICBbc3R5bGUuZm9udFNpemUucHhdPVwiYm9keVRleHRGb250c1NpemVcIlxyXG4gICAgW3N0eWxlLm1pbkhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxyXG4gICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZS1jZWxsXT1cIlxyXG4gICAgICBpc0FjdGl2ZUNlbGwocm93LCBjb2wpICYmICFpc0VkaXRpbmcocm93LCBjb2wpICYmIHNlbGVjdGVkS2V5cy5zaXplID09IDFcclxuICAgIFwiXHJcbiAgICAoZGJsY2xpY2spPVwiXHJcbiAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIGVuYWJsZUVkaXQocm93LCBjb2wsIGZhbHNlLCBjZWxsQ29udGFpbmVyKVxyXG4gICAgXCJcclxuICAgIFtjbGFzcy5yb3ctc2VsZWN0ZWRdPVwicm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXCJcclxuICAgIFtjbGFzcy5maXJzdC1yb3ctc2VsZWN0ZWRdPVwiZmlyc3RTZWxlY3RlZFJvdyA9PT0gcm93Py5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3c/Ll9fdmlydHVhbEluZGV4XCJcclxuICAgIHRhYmluZGV4PVwiLTFcIlxyXG4gICAgKGtleWRvd24uZW50ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGVuYWJsZUVkaXQocm93LCBjb2wpXCJcclxuICAgIChtb3VzZWRvd24pPVwiXHJcbiAgICAgIHN0YXJ0U2VsZWN0aW9uKFxyXG4gICAgICAgIHJvdy5fX3ZpcnR1YWxJbmRleCxcclxuICAgICAgICBjb2xJbmRleCxcclxuICAgICAgICBzdWJDb2xJbmRleCA/PyAwLFxyXG4gICAgICAgIGNvbC5maWVsZCxcclxuICAgICAgICAkZXZlbnQsXHJcbiAgICAgICAgc2VjdGlvblxyXG4gICAgICApXHJcbiAgICBcIlxyXG4gICAgKG1vdXNlZW50ZXIpPVwiXHJcbiAgICAgIGV4dGVuZFNlbGVjdGlvbihcclxuICAgICAgICByb3cuX192aXJ0dWFsSW5kZXgsXHJcbiAgICAgICAgY29sSW5kZXgsXHJcbiAgICAgICAgc3ViQ29sSW5kZXggPz8gMCxcclxuICAgICAgICBjb2wuZmllbGQsXHJcbiAgICAgICAgJGV2ZW50LFxyXG4gICAgICAgIHNlY3Rpb25cclxuICAgICAgKVxyXG4gICAgXCJcclxuICAgIChtb3VzZXVwKT1cImVuZFNlbGVjdGlvbigpXCJcclxuICAgIFtjbGFzcy5zZWxlY3RlZC1jZWxsXT1cIlxyXG4gICAgICBpc1NlbGVjdGVkKFxyXG4gICAgICAgIHJvdy5fX3ZpcnR1YWxJbmRleCxcclxuICAgICAgICBjb2xJbmRleCxcclxuICAgICAgICBzdWJDb2xJbmRleCA/PyAwLFxyXG4gICAgICAgIGNvbC5maWVsZCxcclxuICAgICAgICBzZWN0aW9uXHJcbiAgICAgIClcclxuICAgIFwiXHJcbiAgICBbY2xhc3MudG9wLWJvcmRlcl09XCJcclxuICAgICAgaXNUb3BCb3JkZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pXHJcbiAgICBcIlxyXG4gICAgW2NsYXNzLmJvdHRvbS1ib3JkZXJdPVwiXHJcbiAgICAgIGlzQm90dG9tQm9yZGVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKVxyXG4gICAgXCJcclxuICAgIFtjbGFzcy5sZWZ0LWJvcmRlcl09XCJcclxuICAgICAgaXNMZWZ0Qm9yZGVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKVxyXG4gICAgXCJcclxuICAgIFtjbGFzcy5yaWdodC1ib3JkZXJdPVwiXHJcbiAgICAgIGlzUmlnaHRCb3JkZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pXHJcbiAgICBcIlxyXG4gICAgW2NsYXNzLnRvcC1sZWZ0LWNvcm5lcl09XCJcclxuICAgICAgaXNUb3BMZWZ0Q29ybmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKVxyXG4gICAgXCJcclxuICAgIFtjbGFzcy50b3AtcmlnaHQtY29ybmVyXT1cIlxyXG4gICAgICBpc1RvcFJpZ2h0Q29ybmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKVxyXG4gICAgXCJcclxuICAgIFtjbGFzcy5ib3R0b20tbGVmdC1jb3JuZXJdPVwiXHJcbiAgICAgIGlzQm90dG9tTGVmdENvcm5lcihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbilcclxuICAgIFwiXHJcbiAgICBbY2xhc3MuYm90dG9tLXJpZ2h0LWNvcm5lcl09XCJcclxuICAgICAgaXNCb3R0b21SaWdodENvcm5lcihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbilcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPCEtLSAgKG1vdXNlZG93bik9XCJzdGFydFNlbGVjdGlvbihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCA/PyAwLCBjb2wuZmllbGQsICRldmVudClcIlxyXG4gIChtb3VzZWVudGVyKT1cImV4dGVuZFNlbGVjdGlvbihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCA/PyAwLCBjb2wuZmllbGQsICRldmVudClcIlxyXG4gIChtb3VzZXVwKT1cImVuZFNlbGVjdGlvbigpXCJcclxuICBbY2xhc3Muc2VsZWN0ZWQtY2VsbF09XCJpc1NlbGVjdGVkKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsICBzdWJDb2xJbmRleCA/PyAwLCBjb2wuZmllbGQpXCIgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwidGFibGUtY2VsbFwiXHJcbiAgICAgIFtjbGFzcy5hY3RpdmUtZm9yLWVkaXRpbmddPVwiXHJcbiAgICAgICAgaXNFZGl0aW5nKHJvdywgY29sKSAmJlxyXG4gICAgICAgIChnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lmxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lmxlbmd0aCA8PSA1MClcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICBpc0VkaXRpbmcocm93LCBjb2wpICYmXHJcbiAgICAgICAgICAgIChnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lmxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgICAgICAgKGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubGVuZ3RoIDw9IDUwICYmXHJcbiAgICAgICAgICAgICAgICAhZXhwYW5kZWRDZWxscy5zaXplKSk7XHJcbiAgICAgICAgICBlbHNlIHZpZXdNb2RlXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbC50eXBlXCI+XHJcbiAgICAgICAgICA8IS0tIFRleHQgSW5wdXQgLS0+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXHJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInaW5wdXQnXCJcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wpXCJcclxuICAgICAgICAgICAgYXV0b2ZvY3VzXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgPCEtLSBOdW1iZXIgSW5wdXQgLS0+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSA4XCJcclxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCJcclxuICAgICAgICAgICAgI251bWJlcklucHV0PVwibmdNb2RlbFwiXHJcbiAgICAgICAgICAgICNudW1iZXJSZWZcclxuICAgICAgICAgICAgKGtleXByZXNzKT1cImFsbG93T25seU51bWJlcnMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICByZXF1aXJlZFxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wpXCJcclxuICAgICAgICAgICAgYXV0b2ZvY3VzXHJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm51bWJlclJlZi5ibHVyKClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgJ2lzLWludmFsaWQnOiBudW1iZXJJbnB1dC5pbnZhbGlkXHJcbiAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgIDwhLS0gRGF0ZSBJbnB1dCAtLT5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDhcIlxyXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCJcclxuICAgICAgICAgICAgdHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wpXCJcclxuICAgICAgICAgICAgYXV0b2ZvY3VzXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICAgICNkYXRlSW5wdXQ9XCJuZ01vZGVsXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogZGF0ZUlucHV0LmludmFsaWRcclxuICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgPCEtLSBEcm9wZG93biAtLT5cclxuICAgICAgICAgIDwhLS0gbmctc2VsZWN0IGxpa2UgZHJvcGRvd24gLS0+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInZHJvcGRvd24nXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93biB3LTEwMFwiXHJcbiAgICAgICAgICAgIChibHVyKT1cImRpc2FibGVFZGl0KHJvdywgY29sKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwhLS0gVHJpZ2dlciAtLT5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc20gdGV4dC1zdGFydCB3LTEwMCB0ZXh0LWVsbGlwc2lzXCJcclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCJcclxuICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5taW5IZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxyXG4gICAgICAgICAgICAgIGRhdGEtYnMtZGlzcGxheT1cInN0YXRpY1wiXHJcbiAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8udmFsdWUgfHxcclxuICAgICAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lm5hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNwbGFjZWhvbGRlcj4gU2VsZWN0IG9wdGlvbnMuLi4gPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICA8IS0tIE1lbnUgLS0+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLW1lbnUgdy0xMDAgcC0wIGNlbGwtZWRpdGluZy1kcm9wZG93bi1tZW51IHJvdW5kZWQtM1wiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLnNob3ddPVwiaXNFZGl0aW5nKHJvdywgY29sKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8IS0tIFNlYXJjaCAtLT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBweS0xIGVkaXRpbmctZHJvcGRvd24tc2VhcmNoLWlucHV0XCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiXHJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZWRpdGluRHJvcGRvd25TZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIE9wdGlvbnMgLS0+XHJcbiAgICAgICAgICAgICAgPCEtLSA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNlbGwtZWRpdGluLWRyb3Bkb3duXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwibWF4LWhlaWdodDogMjAwcHg7IG92ZXJmbG93OiBhdXRvXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICBzZXROZXN0ZWRWYWx1ZShyb3csIGNvbCwgb3B0aW9uLCB0cnVlKTsgZWRpdGluZ0tleSA9IG51bGxcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJweC0yIHB5LTEgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBkZW9wZG93bi1pdGVtXCJcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9wdGlvbiBvZiBjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICB8IGZpbHRlciA6IGVkaXRpbkRyb3Bkb3duU2VhcmNoOiAndmFsdWUnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTAgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JdPVwiY29sLmZpZWxkICsgJy0nICsgb3B0aW9uLnZhbHVlIHx8IG9wdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24udmFsdWUgfHwgb3B0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCBcclxuICAgICAgICAgICAgICAgICAgICBpdGVtU2l6ZT1cIjM1XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi12aWV3cG9ydFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDEyMHB4XCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtMiBweS0xIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZHJvcGRvd24taXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3B0aW9uIG9mIGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWUgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmaWx0ZXIgOiBlZGl0aW5Ecm9wZG93blNlYXJjaCA6ICd2YWx1ZSdcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0TmVzdGVkVmFsdWUocm93LCBjb2wsIG9wdGlvbiwgdHJ1ZSk7IGVkaXRpbmdLZXkgPSBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JdPVwiY29sLmZpZWxkICsgJy0nICsgKG9wdGlvbi52YWx1ZSB8fCBvcHRpb24pXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLnZhbHVlIHx8IG9wdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidlbWFpbCdcIlxyXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEwXCJcclxuICAgICAgICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXHJcbiAgICAgICAgICAgICNlbWFpbE1vZGVsPVwibmdNb2RlbFwiXHJcbiAgICAgICAgICAgICNlbWFpbElucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJlbWFpbFwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93W2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICBuYW1lPVwie3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgcmVxdWlyZWRcclxuICAgICAgICAgICAgcGF0dGVybj1cIl5bYS16QS1aMC05Ll8lKy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsfSRcIlxyXG4gICAgICAgICAgICAoYmx1cik9XCJkaXNhYmxlRWRpdChyb3csIGNvbCwgZW1haWxNb2RlbClcIlxyXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJcclxuICAgICAgICAgICAgICBlbWFpbE1vZGVsLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpOyBlbWFpbElucHV0LmJsdXIoKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBhdXRvZm9jdXNcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogZW1haWxNb2RlbC5pbnZhbGlkXHJcbiAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPCEtLSBEZWZhdWx0IGZhbGxiYWNrIC0tPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICpuZ1N3aXRjaERlZmF1bHRcclxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxyXG4gICAgICAgICAgICAjdGV4dE1vZGVsPVwibmdNb2RlbFwiXHJcbiAgICAgICAgICAgICN0ZXh0SW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgbmFtZT1cInt7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICAgIChibHVyKT1cImRpc2FibGVFZGl0KHJvdywgY29sLCB0ZXh0TW9kZWwpXCJcclxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiXHJcbiAgICAgICAgICAgICAgdGV4dE1vZGVsLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpOyB0ZXh0SW5wdXQuYmx1cigpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGF1dG9mb2N1c1xyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgJ2lzLWludmFsaWQnOiB0ZXh0TW9kZWwuaW52YWxpZFxyXG4gICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIERpc3BsYXkgbW9kZSAtLT5cclxuICAgICAgPG5nLXRlbXBsYXRlICN2aWV3TW9kZT5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDAgb3ZlcmZsb3ctaGlkZGVuXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cImdldENlbGxDbGFzc2VzKGNvbCwgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPCEtLSBGaWVsZCBpY29uIChmb3IgVGFza3MgZ3JpZCkgLS0+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZ3JpZFR5cGUgPT09ICdUYXNrcycgJiYgaWNvbk1hcFtjb2wuZmllbGRdICYmICFpc1RvdGFsUm93XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIG1lLTJcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cImljb25NYXBbY29sLmZpZWxkXShyb3csIGNvbClcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPCEtLSDinIUgQ3VzdG9tIGNlbGwgcmVuZGVyZXIgc3VwcG9ydCAtLT5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuY2VsbFJlbmRlcmVyOyBlbHNlIGRlZmF1bHRDZWxsXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICBbY2VsbFJlbmRlckluaXRdPVwiY29sLmNlbGxSZW5kZXJlclwiXHJcbiAgICAgICAgICAgICAgW3Jvd0RhdGFdPVwicm93XCJcclxuICAgICAgICAgICAgICBbY29sRGF0YV09XCJjb2xcIlxyXG4gICAgICAgICAgICAgIFtjZWxsVmFsdWVdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2w/LmZpZWxkKVwiXHJcbiAgICAgICAgICAgICAgKGNlbGxFdmVudCk9XCJvbkNlbGxFdmVudCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDwhLS0g8J+nviBEZWZhdWx0IHRleHQtYmFzZWQgY2VsbCByZW5kZXJpbmcgLS0+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDZWxsPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgI2NlbGxUZXh0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWVsbGlwc2lzIGZsZXgtZ3Jvdy0xXCJcclxuICAgICAgICAgICAgICBbdGl0bGVdPVwiXHJcbiAgICAgICAgICAgICAgICBjb2wudHlwZSA9PT0gJ2RhdGUnXHJcbiAgICAgICAgICAgICAgICAgID8gKGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKSB8IGRhdGUgOiBkYXRlRm9ybWF0KVxyXG4gICAgICAgICAgICAgICAgICA6IGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKSB8fCAnLSdcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPCEtLSBOb3JtYWwgY2VsbCAtLT5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICBjb2wudHlwZSAhPT0gJ2ltYWdlJyAmJlxyXG4gICAgICAgICAgICAgICAgICBjb2wuZmllbGQgIT0gJ2ltYWdlJyAmJlxyXG4gICAgICAgICAgICAgICAgICBjb2wuZmllbGQgIT0gJ2ludm9pY2UuaW52b2ljZV9pbWFnZScgJiZcclxuICAgICAgICAgICAgICAgICAgIWlzVG90YWxSb3dcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5pc19hbW91bnRcIj57e1xyXG4gICAgICAgICAgICAgICAgICBjdXJyZW5jeVN5bWJvbFxyXG4gICAgICAgICAgICAgICAgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICFpc05lc3RlZFZhbHVlQXJyYXkocm93LCBjb2wuZmllbGQpXHJcbiAgICAgICAgICAgICAgPyBjb2wudHlwZSA9PT0gJ2RhdGUnXHJcbiAgICAgICAgICAgICAgICA/IChpc0RhdGUoZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpKVxyXG4gICAgICAgICAgICAgICAgICAgID8gKGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKSB8IGRhdGUgOiBkYXRlRm9ybWF0KVxyXG4gICAgICAgICAgICAgICAgICAgIDogKGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8udmFsdWUgfHxcclxuICAgICAgICAgICAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubmFtZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAnLScpKVxyXG4gICAgICAgICAgICAgICAgOiAoZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy52YWx1ZSB8fFxyXG4gICAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lm5hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpIHx8XHJcbiAgICAgICAgICAgICAgICAgIChjb2wuaXNfYW1vdW50ID8gMCA6ICctJykpXHJcbiAgICAgICAgICAgICAgOiAoZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy5bMF0/LmRlcGFydG1lbnRfbmFtZSB8fFxyXG4gICAgICAgICAgICAgICAgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy5bMF0/LnJvbGVOYW1lIHx8XHJcbiAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/LlswXT8uZnVsbF9uYW1lIHx8XHJcbiAgICAgICAgICAgICAgICAnLScpXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIFRvdGFsIHJvdyAtLT5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNUb3RhbFJvd1wiPlxyXG4gICAgICAgICAgICAgICAge3sgZ2V0VG90YWxBbW91bnQoY29sKSB9fVxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIEludm9pY2UgSW1hZ2UgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5maWVsZCA9PSAnaW52b2ljZS5pbnZvaWNlX2ltYWdlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHpvb206IDAuN1wiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpIHx8ICdBdHRhY2htZW50JyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQXR0Y2htZW50KGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvZG9jdW1lbnQtaWNvbnMvJyArXHJcbiAgICAgICAgICAgICAgICAgICAgICBnZXRFeHRlbnRpb24oZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpKSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAnLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgIDwhLS0gSW1hZ2UgY2VsbCAtLT5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gJ2ltYWdlJyAmJiAhaXNUb3RhbFJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRJbWFnZVBsYWNlaG9sZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgcm93OiByb3csIGNvbDogY29sIH1cclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgKCFjb2w/LmNlbGxSZW5kZXJlciAmJiBzaG93Q2VsbERldGFpbHNCb3ggJiZcclxuICAgICAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubGVuZ3RoID4gNTAgJiYgY29sLnR5cGUgIT09ICdpbWFnZScpIHx8XHJcbiAgICAgICAgICAgICAgKGlzTmVzdGVkVmFsdWVBcnJheShyb3csIGNvbC5maWVsZCkgJiZcclxuICAgICAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubGVuZ3RoID4gMSlcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtaWNvbiBkYXRhLWdyaWQtc3ZnLWljb24gbXMtMiBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgaXNFeHBhbmRlZChyb3csIGNvbClcclxuICAgICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcclxuICAgICAgICAgICAgICAgIDogc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgdG9nZ2xlRXhwYW5kT2ZMb25nQ2VsbFRleHQocm93LCBjb2wsIGNvbHVtbnMsIHRydWUpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChkYmxjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPCEtLSBFeHBhbmQgLyBDb2xsYXBzZSBpY29uIC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIEV4cGFuZGVkIHRleHQgLS0+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB3LTEwMCBleHBhbmRlZC1ib3hcIlxyXG4gICAgICAgICAgKm5nSWY9XCJpc0V4cGFuZGVkKHJvdywgY29sKVwiXHJcbiAgICAgICAgICBbc3R5bGUuekluZGV4XT1cImdldFpJbmRleChyb3csIGNvbClcIlxyXG4gICAgICAgICAgc3R5bGU9XCJ0b3A6IDEwMCU7IGxlZnQ6IDBcIlxyXG4gICAgICAgICAgW2F0dHIuaWRdPVwiKHJvdy5pZCB8fCByb3cuX2lkKSArICctJyArIChjb2wuaWQgfHwgY29sLl9pZClcIlxyXG4gICAgICAgICAgW2NsYXNzLmludmlzaWJsZV09XCIhc2hvd0RldGFpbHNCb3hcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICBmdWxsVGV4dFRlbXBsYXRlO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgIHJvdzogcm93LFxyXG4gICAgICAgICAgICAgICAgY29sOiBjb2wsXHJcbiAgICAgICAgICAgICAgICBpc0FycmF5OiBpc05lc3RlZFZhbHVlQXJyYXkocm93LCBjb2wuZmllbGQpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIEhlYWRlcnMgQWN0aW9uIExpc3QgT24gY2xpY2tpbmcgdGhyZWUgZG90cyAtLT5cclxuXHJcbjxuZy10ZW1wbGF0ZVxyXG4gICNjb2x1bW5NZW51XHJcbiAgbGV0LWNvbD1cImNvbFwiXHJcbiAgbGV0LWlzTmVzdGVkVGFibGU9XCJpc05lc3RlZFRhYmxlXCJcclxuICBsZXQtY29sdW1ucz1cImNvbHVtbnNcIlxyXG4gIGxldC1zZWN0aW9uPVwic2VjdGlvblwiXHJcbj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImNvbHVtbi1tZW51IHRocmVlLWRvdHMtY29sLW1lbnVcIlxyXG4gICAgW2NsYXNzLnZpc3VhbGx5LWhpZGRlbl09XCJpc01lbnVlSGlkZGVuXCJcclxuICAgICpuZ0lmPVwiYWN0aXZlQ29sICYmICFpc1RocmVlRG90c0ZpbHRlck9wZW5cIlxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJkcm9wZG93bnNCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICBbc3R5bGUuY29sb3JdPVwiaGVhZGVyVGV4dENvbG9yXCJcclxuICA+XHJcbiAgICA8IS0tIFNvcnQgQXNjZW5kaW5nIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImJvcmRlci1iZWxvdyBwYi0yXCIgW2NsYXNzLmRpc2FibGUtc29ydGluZ109XCIhY29sLmlzX3NvcnRhYmxlXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibXV0ZWQtdGV4dCBmcy03XCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTJweFwiPlNvcnQ8L3NwYW4+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd0FzY2VuZGluZyAmJlxyXG4gICAgICAgICAgKHNvcnRpbmdDb25maWc/LmZpZWxkICE9IGNvbC5maWVsZCB8fFxyXG4gICAgICAgICAgICBzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PSAnZGVzYycpXHJcbiAgICAgICAgXCJcclxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxyXG4gICAgICAgIChjbGljayk9XCJzb3J0QXNjKGFjdGl2ZUNvbClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctdXAuc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIFNvcnQgQXNjZW5kaW5nXHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBTb3J0IERlc2NlbmRpbmcgLS0+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd0Rlc2NlbmRpbmcgJiZcclxuICAgICAgICAgIChzb3J0aW5nQ29uZmlnPy5maWVsZCAhPSBjb2wuZmllbGQgfHxcclxuICAgICAgICAgICAgc29ydGluZ0NvbmZpZz8ub3JkZXJfYnkgPT0gJ2FzYycpXHJcbiAgICAgICAgXCJcclxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxyXG4gICAgICAgIChjbGljayk9XCJzb3J0RGVzYyhhY3RpdmVDb2wpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LWRvd24uc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIFNvcnQgRGVzY2VuZGluZ1xyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgc29ydGluZ0NvbmZpZz8uZmllbGQgPT09IGNvbC5maWVsZCAmJlxyXG4gICAgICAgICAgKHNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09PSAnYXNjJyB8fFxyXG4gICAgICAgICAgICBzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PT0gJ2Rlc2MnKVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcclxuICAgICAgICAoY2xpY2spPVwicmVzZXRTb3J0KGFjdGl2ZUNvbClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LWNvdW50ZXJjbG9ja3dpc2Uuc3ZnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgUmVzZXQgU29ydFxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInB5LTIgYm9yZGVyLWJlbG93IHRocmVlLWRvdHMtZmlsdGVyXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cImNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dGaWx0ZXJcIlxyXG4gICAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbSB0aHJlZS1kb3RzLWZpbHRlclwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5GaWx0ZXJvblRocmVlRG90c0NsaWNrKGNvbClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZmlsdGVyLTIuc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIEZpbHRlclxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJweS0yIGJvcmRlci1iZWxvd1wiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm11dGVkLXRleHQgZnMtN1wiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEycHhcIj5QaW48L3NwYW4+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cImNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dQaW5sZWZ0ICYmIGNvbD8ucGlubmVkICE9PSAnbGVmdCdcIlxyXG4gICAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgdXBkYXRlQ29sdW1uUGluSW5Tb3VyY2VCeUZpZWxkKFxyXG4gICAgICAgICAgICBhY3RpdmVDb2wsXHJcbiAgICAgICAgICAgICdsZWZ0JyxcclxuICAgICAgICAgICAgaXNOZXN0ZWRUYWJsZSxcclxuICAgICAgICAgICAgY29sdW1uc1xyXG4gICAgICAgICAgKVxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9waW4tbGVmdC5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgID48L3NwYW5cclxuICAgICAgICA+UGluIExlZnRcclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIGNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dQaW5yaWdodCAmJiBjb2w/LnBpbm5lZCAhPT0gJ3JpZ2h0J1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcclxuICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICB1cGRhdGVDb2x1bW5QaW5JblNvdXJjZUJ5RmllbGQoXHJcbiAgICAgICAgICAgIGFjdGl2ZUNvbCxcclxuICAgICAgICAgICAgJ3JpZ2h0JyxcclxuICAgICAgICAgICAgaXNOZXN0ZWRUYWJsZSxcclxuICAgICAgICAgICAgY29sdW1uc1xyXG4gICAgICAgICAgKVxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9waW4tcmlnaHQuc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgPjwvc3BhblxyXG4gICAgICAgID5QaW4gUmlnaHRcclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJjb2w/LnBpbm5lZFwiXHJcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcclxuICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICB1cGRhdGVDb2x1bW5QaW5JblNvdXJjZUJ5RmllbGQoXHJcbiAgICAgICAgICAgIGFjdGl2ZUNvbCxcclxuICAgICAgICAgICAgbnVsbCxcclxuICAgICAgICAgICAgaXNOZXN0ZWRUYWJsZSxcclxuICAgICAgICAgICAgY29sdW1uc1xyXG4gICAgICAgICAgKVxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvbGF5b3V0LXRocmVlLWNvbHVtbnMuc3ZnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgID48L3NwYW5cclxuICAgICAgICA+VW5waW5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwiY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd0F1dG9zaXplVGhpc0NvbHVtblwiXHJcbiAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgIChjbGljayk9XCJhdXRvc2l6ZUNvbHVtbihhY3RpdmVDb2wpXCJcclxuICAgID5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLWV4cGFuZC12ZXJ0aWNhbC5zdmcnXHJcbiAgICAgICAgXCJcclxuICAgICAgICBjbGFzcz1cIm1lLTJcIlxyXG4gICAgICA+PC9zcGFuPlxyXG4gICAgICBBdXRvc2l6ZSBUaGlzIENvbHVtblxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBBdXRvc2l6ZSBBbGwgQ29sdW1ucyAtLT5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93QXV0b3NpemVBbGxDb2x1bW5zXCJcclxuICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcclxuICAgICAgKGNsaWNrKT1cImF1dG9zaXplQWxsQ29sdW1ucygpXCJcclxuICAgID5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLWFuZ2xlLWV4cGFuZC5zdmcnXHJcbiAgICAgICAgXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgPjwvc3BhblxyXG4gICAgICA+QXV0b3NpemUgQWxsIENvbHVtbnNcclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gR3JvdXAgQnkgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwic2hvd1Jvd3NHcm91cGluZ1wiXHJcbiAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgIChjbGljayk9XCJncm91cEJ5KGFjdGl2ZUNvbClcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZS1zb3J0aW5nXT1cIiFjb2wuaXNfZ3JvdXBhYmxlXCJcclxuICAgID5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2RpYWdyYW0tMy5zdmcnXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgPjwvc3Bhbj5cclxuICAgICAgR3JvdXAgYnkge3sgY29sLmhlYWRlciB9fVxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBDaG9vc2UgQ29sdW1ucyAtLT5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93Q2hvc2VDb2x1bW5zXCJcclxuICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcclxuICAgICAgKGNsaWNrKT1cImNob29zZUNvbHVtbnMoKVwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy91aS1jaGVja3MtZ3JpZC5zdmcnXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgPjwvc3Bhbj5cclxuICAgICAgQ2hvb3NlIENvbHVtbnNcclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gUmVzZXQgQ29sdW1ucyAtLT5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93UmVzZXRDb2x1bW5zXCJcclxuICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcclxuICAgICAgKGNsaWNrKT1cInJlc2V0Q29sdW1ucygpXCJcclxuICAgID5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctY291bnRlcmNsb2Nrd2lzZS5zdmcnXHJcbiAgICAgICAgXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgPjwvc3BhblxyXG4gICAgICA+UmVzZXQgQ29sdW1uc1xyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdlxyXG4gICAgQHNsaWRlVG9nZ2xlXHJcbiAgICAqbmdJZj1cImlzVGhyZWVEb3RzRmlsdGVyT3BlblwiXHJcbiAgICBjbGFzcz1cInRocmVlLWRvdHMtY29sLW1lbnUgcG9zaXRpb24tcmVsYXRpdmVcIlxyXG4gICAgW3N0eWxlLnJpZ2h0LnB4XT1cInNlY3Rpb24gPT0gJ3JpZ2h0JyA/IG51bGwgOiBjb2wud2lkdGggLSA0NVwiXHJcbiAgICBbY2xhc3MudmlzdWFsbHktaGlkZGVuXT1cImlzTWVudWVIaWRkZW5cIlxyXG4gID5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJNZW51OyBjb250ZXh0OiB7IGNvbDogY29sIH1cIlxyXG4gICAgPjwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBGaWx0ZXIgTWVudWUgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZmlsdGVyTWVudSBsZXQtY29sPVwiY29sXCI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJmaWx0ZXItbWVudS1jb250YWluZXIgZmlsdGVyLW1lbnVcIlxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJkcm9wZG93bnNCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gID5cclxuICAgIDwhLS0gRHJvcGRvd24gVHlwZSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PT0gJ2Ryb3Bkb3duJzsgZWxzZSB0ZXh0RmlsdGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItZHJvcGRvd24tc2VjdGlvbiBwLTFcIj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiXHJcbiAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiYWRkRmlsdGVyQ29sdW1uSW5wdXRcIlxyXG4gICAgICAgIC8+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTEgbXQtMiBwcy00IG1zLTFcIj5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJpc0FsbFNpZGVGaWx0ZXJPcHRpb25zU2VsZWN0ZWQoY29sKVwiXHJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0QWxsU2lkZUZpbHRlcnMoY29sLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgaWQ9XCJzZWxlY3RBbGxfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwic2VsZWN0QWxsX3t7IGNvbC5maWVsZCB9fVwiPlxyXG4gICAgICAgICAgICBTZWxlY3QgQWxsXHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1vcHRpb25zIHBzLTFcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTFcIlxyXG4gICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICBsZXQgb3B0aW9uIG9mIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5jb2x1bW5fZHJvcGRvd25fdmFsdWVcclxuICAgICAgICAgICAgICAgIHwgZmlsdGVyIDogYWRkRmlsdGVyQ29sdW1uSW5wdXQgOiAndmFsdWUnO1xyXG4gICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZDtcclxuICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4XHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICBbaWRdPVwiaVwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuaGFzKG9wdGlvbj8uaWQgPz8gb3B0aW9uPy5faWQgPz8gb3B0aW9uKVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3Rpb25JbkZpbHRlcihvcHRpb24pXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBmdy1zZW1pYm9sZFwiIFtmb3JdPVwiaVwiPlxyXG4gICAgICAgICAgICAgIHt7IG9wdGlvbj8udmFsdWUgPz8gb3B0aW9uPy5uYW1lID8/IG9wdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcclxuICAgICAgICAgICAgICBpdGVtU2l6ZT1cIjMyXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZpbHRlci12aWV3cG9ydFwiXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDEyMHB4XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBtYi0xXCJcclxuICAgICAgICAgICAgICAgICpjZGtWaXJ0dWFsRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCBvcHRpb24gb2Ygc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmNvbHVtbl9kcm9wZG93bl92YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIHwgZmlsdGVyIDogYWRkRmlsdGVyQ29sdW1uSW5wdXQgOiAndmFsdWUnO1xyXG4gICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgIFtpZF09XCJvcHRpb24/LmlkID8/IG9wdGlvbj8uX2lkID8/IG9wdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5oYXMob3B0aW9uPy5pZCA/PyBvcHRpb24/Ll9pZCA/PyBvcHRpb24pXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0aW9uSW5GaWx0ZXIob3B0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgZnctc2VtaWJvbGRcIlxyXG4gICAgICAgICAgICAgICAgICBbZm9yXT1cIm9wdGlvbj8uaWQgPz8gb3B0aW9uPy5faWQgPz8gb3B0aW9uXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge3sgb3B0aW9uPy52YWx1ZSA/PyBvcHRpb24/Lm5hbWUgPz8gb3B0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBUZXh0IEZpbHRlciBTZWN0aW9uIC0tPlxyXG4gICAgPG5nLXRlbXBsYXRlICN0ZXh0RmlsdGVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXRleHQtc2VjdGlvblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTJcIj5cclxuICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbSBjdXN0b20tc2VsZWN0XCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaXJzdENvbmRpdGlvblwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlICE9PSAnZGF0ZSdcIj5cclxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY29udGFpblwiPkNvbnRhaW5zPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRvZXNfbm90X2NvbnRhaW5cIj5Eb2VzIE5vdCBDb250YWluPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPlN0YXJ0cyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+RW5kcyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vdF9lcXVhbFwiPk5vdCBFcXVhbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkFmdGVyPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIFt0eXBlXT1cImNvbC50eXBlID09ICdzdHJpbmcnID8gJ3RleHQnIDogY29sLnR5cGVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTNcIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJWYWx1ZVwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpcnN0VmFsdWVcIlxyXG4gICAgICAgICAgI2ZpbHRlck1lbnVlVGV4dGNoSW5wdXRcclxuICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiXHJcbiAgICAgICAgLz5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMyBkLWZsZXggZmxleC1yb3dcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIG0tMCBjb2wtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGZpbHRlci1yYWRpby1pbnB1dHNcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgICAgbmFtZT1cImNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAgIHZhbHVlPVwiYW5kXCJcclxuICAgICAgICAgICAgICBpZD1cImFuZF97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2RyLmRldGVjdENoYW5nZXMoKVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCIgZm9yPVwiYW5kX3t7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAgICAgPkFORDwvbGFiZWxcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBtLTAgY29sLTQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMSBnYXAtMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBmaWx0ZXItcmFkaW8taW5wdXRzXCJcclxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgIG5hbWU9XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICB2YWx1ZT1cIm9yXCJcclxuICAgICAgICAgICAgICBpZD1cIm9yX3t7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjZHIuZGV0ZWN0Q2hhbmdlcygpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIiBmb3I9XCJvcl97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAgID5PUjwvbGFiZWxcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBtLTAgY29sLTQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMSBnYXAtMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBmaWx0ZXItcmFkaW8taW5wdXRzXCJcclxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgIG5hbWU9XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICB2YWx1ZT1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgIGlkPVwibm9uZV97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2RyLmRldGVjdENoYW5nZXMoKVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCIgZm9yPVwibm9uZV97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAgID5Ob25lPC9sYWJlbFxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IEBzbGlkZVRvZ2dsZSAqbmdJZj1cImZpcnN0VmFsdWUgJiYgY29uZGl0aW9uICE9ICdub25lJ1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMlwiPlxyXG4gICAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbSBjdXN0b20tc2VsZWN0XCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlY29uZENvbmRpdGlvblwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZSAhPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY29udGFpblwiPkNvbnRhaW5zPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZG9lc19ub3RfY29udGFpblwiPkRvZXMgTm90IENvbnRhaW48L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPlN0YXJ0cyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5FbmRzIFdpdGg8L29wdGlvbj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHMgVG88L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJub3RfZXF1YWxcIj5Ob3QgRXF1YWw8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkFmdGVyPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+QmVmb3JlPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIFt0eXBlXT1cImNvbC50eXBlID09ICdzdHJpbmcnID8gJ3RleHQnIDogY29sLnR5cGVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gbWItM1wiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2Vjb25kIFZhbHVlXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWNvbmRWYWx1ZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPCEtLSBBY3Rpb25zIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMiBtdC0yXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcyEuc2l6ZSAmJiAhZmlyc3RWYWx1ZVwiXHJcbiAgICAgICAgW2NsYXNzLnBlLW5vbmVdPVwiIWN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcyEuc2l6ZSAmJiAhZmlyc3RWYWx1ZVwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMwcHhcIlxyXG4gICAgICAgIChjbGljayk9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgQXBwbHlcclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLXNlY29uZGFyeSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxyXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzMHB4XCJcclxuICAgICAgICAoY2xpY2spPVwicmVzZXRTaWRlRmlsdGVyKGNvbClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgUmVzZXRcclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gU2lkZSBNZW51ZSAtLT5cclxuXHJcbjwhLS0gQ29sdW1uIFBhbm5lbCAvIFBpdm90IE1vZGUgLyBTZWFyY2hpbmcgLS0+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbHVtblBhbm5lbD5cclxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLXBhbmVsLWhlYWRlclwiPlxyXG4gICAgPCEtLSBQaXZvdCBUb2dnbGUgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTIgcGl2b3QtbW9kZSBweC01IG1zLTIgZC1ub25lXCJcclxuICAgID5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIlxyXG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgaWQ9XCJwaXZvdFRvZ2dsZVwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJwaXZvdE1vZGVcIlxyXG4gICAgICAvPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwicGl2b3RUb2dnbGVcIj5QaXZvdCBNb2RlPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gU2VsZWN0IEFsbCAmIFNlYXJjaCAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTIgcHgtMyBtdC0zXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlciBtZS0yXCIgKm5nSWY9XCJzaG93Q29sdW1uc0dyb3VwaW5nXCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgIGFjY29yZGlvblN0YXRlID09PSAnYWxsJ1xyXG4gICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcclxuICAgICAgICAgICAgICA6IGFjY29yZGlvblN0YXRlID09PSAnc29tZSdcclxuICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Rhc2guc3ZnJ1xyXG4gICAgICAgICAgICAgIDogc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFsbEFjY29yZGlvbnMoKVwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCJcclxuICAgICAgICBbY2hlY2tlZF09XCJhbGxDb2x1bW5zU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxDb2x1bW5zVmlzaWJpbGl0eSgpXCJcclxuICAgICAgLz5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggY29sdW1ucy4uLlwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjb2x1bW5TZWFyY2hcIlxyXG4gICAgICAvPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBTZXBhcmF0b3IgLS0+XHJcbiAgICA8aHIgY2xhc3M9XCJteS0yXCIgLz5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gUmlnaHQgQ29sdW1ucyBNZW51ZSAtLT5cclxuXHJcbjwhLS0gQ29sdW1uIFBhbmVsIEl0ZW0gVGVtcGxhdGUgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjY29sdW1uUGFuZWxJdGVtIGxldC1jb2w9XCJjb2xcIj5cclxuICA8IS0tIEdyb3VwIENvbHVtbiAtLT5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmNoaWxkcmVuPy5sZW5ndGhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tZ3JvdXAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlciBtZS0yXCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIFtjbGFzcy5yb3RhdGVdPVwiY29sLmV4cGFuZGVkXCJcclxuICAgICAgICAgIChjbGljayk9XCJjb2wuZXhwYW5kZWQgPSAhY29sLmV4cGFuZGVkXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIlxyXG4gICAgICAgIFtpZF09XCInZ3JvdXBfJyArIGNvbC5oZWFkZXJcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cImlzQ29sdW1uVmlzaWJsZShjb2wpXCJcclxuICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUdyb3VwVmlzaWJpbGl0eShjb2wpXCJcclxuICAgICAgLz5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2dyaWQtM3gyLWdhcC5zdmcnXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbWUtMlwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICAgIDxsYWJlbFxyXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0wIHctMTAwXCJcclxuICAgICAgICBbZm9yXT1cIidncm91cF8nICsgY29sLmhlYWRlclwiXHJcbiAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cclxuICAgICAgPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImNvbC5leHBhbmRlZFwiIGNsYXNzPVwicHMtNFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBjb2wuY2hpbGRyZW47IHRyYWNrQnk6IHRyYWNrQnlGaWVsZFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uUGFuZWxJdGVtOyBjb250ZXh0OiB7IGNvbDogY2hpbGQgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8IS0tIExlYWYgQ29sdW1uIC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sLmNoaWxkcmVuPy5sZW5ndGhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yXCIgc3R5bGU9XCJ3aWR0aDogMS41cmVtXCI+PC9zcGFuPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cImNvbC5pc192aXNpYmxlXCJcclxuICAgICAgICBbaWRdPVwiJ2NvbF8nICsgY29sLmZpZWxkXCJcclxuICAgICAgICAoY2hhbmdlKT1cIm9uU2lkZU1lbnVDb2x1bW5zVmlzaWJpbGl0eUNoYW5nZSgpXCJcclxuICAgICAgLz5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2dyaWQtM3gyLWdhcC5zdmcnXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbWUtMlwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICAgIDxsYWJlbFxyXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0wIHctMTAwXCJcclxuICAgICAgICBbZm9yXT1cIidjb2xfJyArIGNvbC5maWVsZFwiXHJcbiAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cclxuICAgICAgPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBDb2x1bW5zIFNpZGUgRmlsdGVyIC0tPlxyXG48bmctdGVtcGxhdGUgI3NpZGVGaWx0ZXJzPlxyXG4gIDxkaXYgY2xhc3M9XCJweS0zIHB4LTIgcGUtMyBoLTEwMFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXIgbWUtMlwiICpuZ0lmPVwic2hvd0NvbHVtbnNHcm91cGluZ1wiPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1pY29uIGRhdGEtZ3JpZC1zdmctaWNvblwiXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICBmaWx0ZXJBY2NvcmRpb25TdGF0ZSA9PT0gJ2FsbCdcclxuICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tZG93bi5zdmcnXHJcbiAgICAgICAgICAgICAgOiBmaWx0ZXJBY2NvcmRpb25TdGF0ZSA9PT0gJ3NvbWUnXHJcbiAgICAgICAgICAgICAgPyBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9kYXNoLnN2ZydcclxuICAgICAgICAgICAgICA6IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBbGxGaWx0ZXJBY2NvcmRpb25zKClcIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwiY29sdW1uU2VhcmNoXCJcclxuICAgICAgLz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cIm92ZXJmbG93LWF1dG8gc2lkZS1maWx0ZXItY29sdW1ucy13cmFwcGVyXCJcclxuICAgICAgc3R5bGU9XCJoZWlnaHQ6IGNhbGMoMTAwJSAtIDcwcHgpOyBzY3JvbGxiYXItd2lkdGg6IHRoaW5cIlxyXG4gICAgPlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICBsZXQgY29sIG9mIGNvbHVtbnMgfCBmaWx0ZXIgOiBjb2x1bW5TZWFyY2ggOiAnaGVhZGVyJztcclxuICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlclBhbm5lbEl0ZW07IGNvbnRleHQ6IHsgY29sOiBjb2wgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNmaWx0ZXJQYW5uZWxJdGVtIGxldC1jb2w9XCJjb2xcIj5cclxuICA8IS0tIEdyb3VwIENvbHVtbiAtLT5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmNoaWxkcmVuPy5sZW5ndGhcIj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJjb2x1bW4tZ3JvdXAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCJcclxuICAgICAgKm5nSWY9XCJjb2wudHlwZSAhPT0gJ2ltYWdlJ1wiXHJcbiAgICA+XHJcbiAgICAgIDwhLS0gQ2hldnJvbiB0b2dnbGUgLS0+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlciBtZS0yXCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIFtjbGFzcy5yb3RhdGVdPVwiY29sLmV4cGFuZGVkRmlsdGVyXCJcclxuICAgICAgICAgIChjbGljayk9XCJjb2wuZXhwYW5kZWRGaWx0ZXIgPSAhY29sLmV4cGFuZGVkRmlsdGVyXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcblxyXG4gICAgICA8IS0tIEdyb3VwIGxhYmVsIHRvZ2dsZSAtLT5cclxuICAgICAgPGxhYmVsXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTAgdy0xMDBcIlxyXG4gICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcclxuICAgICAgICAoY2xpY2spPVwiY29sLmV4cGFuZGVkRmlsdGVyID0gIWNvbC5leHBhbmRlZEZpbHRlclwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LWJvbGQgdGV4dC10cnVuY2F0ZVwiXHJcbiAgICAgICAgICA+e3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgbXMtMVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiY29sPy5xdWVyeT8uX2lkcz8ubGVuZ3RoIHx8IGNvbD8ucXVlcnk/Ll9maXJzdF92YWx1ZVwiXHJcbiAgICAgICAgICAgID4qPC9zcGFuXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBDaGlsZHJlbiBjb2x1bW5zIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cImNvbC5leHBhbmRlZEZpbHRlclwiIGNsYXNzPVwicHMtNFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBjb2wuY2hpbGRyZW47IHRyYWNrQnk6IHRyYWNrQnlGaWVsZFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyUGFubmVsSXRlbTsgY29udGV4dDogeyBjb2w6IGNoaWxkIH1cIlxyXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPCEtLSBMZWFmIENvbHVtbiAtLT5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbC5jaGlsZHJlbj8ubGVuZ3RoXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCIgKm5nSWY9XCJjb2wudHlwZSAhPT0gJ2ltYWdlJ1wiPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIGNsYXNzPVwibWUtMiBmaWx0ZXItaWNvbi13cmFwcGVyIG1lLTJcIlxyXG4gICAgICAgIChjbGljayk9XCJjb2wuZXhwYW5kZWRGaWx0ZXIgPSAhY29sLmV4cGFuZGVkRmlsdGVyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1pY29uIGRhdGEtZ3JpZC1zdmctaWNvblwiXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBbY2xhc3Mucm90YXRlXT1cImNvbC5leHBhbmRlZEZpbHRlclwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgPGxhYmVsXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTAgdy0xMDBcIlxyXG4gICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcclxuICAgICAgICAoY2xpY2spPVwiY29sLmV4cGFuZGVkRmlsdGVyID0gIWNvbC5leHBhbmRlZEZpbHRlclwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGUgZnctYm9sZFwiPnt7IGNvbC5oZWFkZXIgfX08L3NwYW4+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFNob3cgZmlsdGVyIHdoZW4gZXhwYW5kZWQgLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiY29sLmV4cGFuZGVkRmlsdGVyXCIgY2xhc3M9XCJwcy00IHBlLTNcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic2lkZU5lc3RlZEZpbHRlcjsgY29udGV4dDogeyBjb2w6IGNvbCB9XCJcclxuICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFNpZGUgTmVzdGVkIEZpbHRlcnMgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjc2lkZU5lc3RlZEZpbHRlciBsZXQtY29sPVwiY29sXCI+XHJcbiAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgPCEtLSBEcm9wZG93biBUeXBlIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09PSAnZHJvcGRvd24nOyBlbHNlIHRleHRGaWx0ZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInAtMVwiPlxyXG4gICAgICAgIDwhLS0gU2VhcmNoIC0tPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTJcIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzaWRlTmVzdGVkRmlsdGVyU2VhcmNoXCJcclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICA8IS0tIFNlbGVjdCBBbGwgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItMSBtcy0xXCI+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiXHJcbiAgICAgICAgICAgICAgY29sLnF1ZXJ5Py5faWRzPy5sZW5ndGggPT0gY29sPy5jb2x1bW5fZHJvcGRvd25fdmFsdWU/Lmxlbmd0aFxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdEFsbFNpZGVGaWx0ZXJzKGNvbCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIGlkPVwic2VsZWN0QWxsX3t7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cInNlbGVjdEFsbF97eyBjb2wuZmllbGQgfX1cIj5cclxuICAgICAgICAgICAgU2VsZWN0IEFsbFxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBPcHRpb25zIC0tPlxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImRyb3Bkb3duLW9wdGlvbnNcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTEgbXMtMVwiXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgIGxldCBvcHRpb24gb2YgY29sPy5jb2x1bW5fZHJvcGRvd25fdmFsdWVcclxuICAgICAgICAgICAgICAgIHwgZmlsdGVyIDogc2lkZU5lc3RlZEZpbHRlclNlYXJjaCA6ICd2YWx1ZSdcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIlxyXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cIlxyXG4gICAgICAgICAgICAgICAgY29sLnF1ZXJ5Py5faWRzPy5pbmNsdWRlcyhvcHRpb24/Ll9pZCB8fCBvcHRpb24/LmlkIHx8IG9wdGlvbilcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwib25PcHRpb25Ub2dnbGUoY29sLCBvcHRpb24pXCJcclxuICAgICAgICAgICAgICBpZD1cIm9wdGlvbl97eyBjb2wuZmllbGQgfX1fe3tcclxuICAgICAgICAgICAgICAgIG9wdGlvbj8uaWQgfHwgb3B0aW9uPy5faWQgfHwgb3B0aW9uXHJcbiAgICAgICAgICAgICAgfX1cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIlxyXG4gICAgICAgICAgICAgIFtmb3JdPVwiXHJcbiAgICAgICAgICAgICAgICAnb3B0aW9uXycgK1xyXG4gICAgICAgICAgICAgICAgY29sLmZpZWxkICtcclxuICAgICAgICAgICAgICAgICdfJyArXHJcbiAgICAgICAgICAgICAgICAob3B0aW9uPy5pZCB8fCBvcHRpb24/Ll9pZCB8fCBvcHRpb24pXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IG9wdGlvbi52YWx1ZSB8fCBvcHRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XHJcbiAgICAgICAgICAgIGl0ZW1TaXplPVwiMzJcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLXZpZXdwb3J0XCJcclxuICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDEyMHB4XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBtYi0xIG1zLTFcIlxyXG4gICAgICAgICAgICAgICpjZGtWaXJ0dWFsRm9yPVwiXHJcbiAgICAgICAgICAgICAgICBsZXQgb3B0aW9uIG9mIGNvbD8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXHJcbiAgICAgICAgICAgICAgICAgIHwgZmlsdGVyIDogc2lkZU5lc3RlZEZpbHRlclNlYXJjaCA6ICd2YWx1ZSdcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiXHJcbiAgICAgICAgICAgICAgICAgIGNvbC5xdWVyeT8uX2lkcz8uaW5jbHVkZXMob3B0aW9uPy5faWQgfHwgb3B0aW9uPy5pZCB8fCBvcHRpb24pXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbk9wdGlvblRvZ2dsZShjb2wsIG9wdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgaWQ9XCJvcHRpb25fe3sgY29sLmZpZWxkIH19X3t7XHJcbiAgICAgICAgICAgICAgICAgIG9wdGlvbj8uaWQgfHwgb3B0aW9uPy5faWQgfHwgb3B0aW9uXHJcbiAgICAgICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgW2Zvcl09XCJcclxuICAgICAgICAgICAgICAgICAgJ29wdGlvbl8nICtcclxuICAgICAgICAgICAgICAgICAgY29sLmZpZWxkICtcclxuICAgICAgICAgICAgICAgICAgJ18nICtcclxuICAgICAgICAgICAgICAgICAgKG9wdGlvbj8uaWQgfHwgb3B0aW9uPy5faWQgfHwgb3B0aW9uKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyBvcHRpb24udmFsdWUgfHwgb3B0aW9uIH19XHJcbiAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cclxuXHJcblxyXG4gICAgICAgIDwhLS0gQWN0aW9ucyAtLT5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXQtMlwiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDIycHg7XCJcclxuICAgICAgICAoY2xpY2spPVwiYXBwbHlTaWRlRmlsdGVyKGNvbClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgQXBwbHlcclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLXNlY29uZGFyeSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIiBcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMjJweDtcIlxyXG4gICAgICAgIChjbGljayk9XCJyZXNldFNpZGVGaWx0ZXIoY29sKVwiXHJcbiAgICAgID5cclxuICAgICAgICBSZXNldFxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PiAtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIFRleHQgRmlsdGVyIFNlY3Rpb24gLS0+XHJcbiAgICA8bmctdGVtcGxhdGUgI3RleHRGaWx0ZXI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItdGV4dC1zZWN0aW9uXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMlwiPlxyXG4gICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wucXVlcnkuZmlyc3RfY29uZGl0aW9uXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlICE9PSAnZGF0ZSdcIj5cclxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY29udGFpblwiPkNvbnRhaW5zPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkb2VzX25vdF9jb250YWluXCI+RG9lcyBOb3QgQ29udGFpbjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5TdGFydHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkVuZHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSAnZGF0ZSdcIj5cclxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHMgVG88L29wdGlvbj5cclxuICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vdF9lcXVhbFwiPk5vdCBFcXVhbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkFmdGVyPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIFt0eXBlXT1cImNvbC50eXBlID09ICdkYXRlJyA/ICdkYXRlJyA6ICd0ZXh0J1wiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gbWItM1wiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlZhbHVlXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sIS5xdWVyeSEuZmlyc3RfdmFsdWVcIlxyXG4gICAgICAgIC8+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1ncm91cCBtYi0zIGQtZmxleCBmbGV4LXJvdyBtdXRlZFwiXHJcbiAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMTRweFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgbS0wIGNvbC00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgZmlsdGVyLXJhZGlvLWlucHV0c1wiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbCEucXVlcnkuY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICB2YWx1ZT1cImFuZFwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJhbmRfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIiBmb3I9XCJhbmRfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgICA+QU5EPC9sYWJlbFxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIG0tMCBjb2wtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGZpbHRlci1yYWRpby1pbnB1dHNcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgICAgbmFtZT1cImNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2whLnF1ZXJ5LmNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJvclwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJvcl97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cIm9yX3t7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAgICAgPk9SPC9sYWJlbFxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIG0tMCBjb2wtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGZpbHRlci1yYWRpby1pbnB1dHNcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgICAgbmFtZT1cImNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2whLnF1ZXJ5LmNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJub25lXCJcclxuICAgICAgICAgICAgICBpZD1cIm5vbmVfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJubm9uZW0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCJcclxuICAgICAgICAgICAgICBmb3I9XCJub25lX3t7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAgICAgPk5vbmU8L2xhYmVsXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ0lmPVwiY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgJiYgY29sPy5xdWVyeT8uY29uZGl0aW9uICE9PSAnbm9uZSdcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTJcIj5cclxuICAgICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc21cIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sIS5xdWVyeS5zZWNvbmRfY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSAhPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY29udGFpblwiPkNvbnRhaW5zPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZG9lc19ub3RfY29udGFpblwiPkRvZXMgTm90IENvbnRhaW48L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPlN0YXJ0cyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5FbmRzIFdpdGg8L29wdGlvbj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vdF9lcXVhbFwiPk5vdCBFcXVhbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+QWZ0ZXI8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5CZWZvcmU8L29wdGlvbj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgW3R5cGVdPVwiY29sLnR5cGUgPT0gJ2RhdGUnID8gJ2RhdGUnIDogJ3RleHQnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTNcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlY29uZCBWYWx1ZVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sIS5xdWVyeS5zZWNvbmRfdmFsdWVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwiaGVpZ2h0OiAyMnB4O1wiIChjbGljayk9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIj5hcHBseTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXNlY29uZGFyeSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cImhlaWdodDogMjJweDtcIiAoY2xpY2spPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCI+cmVzZXQ8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTIgYm9yZGVyLXRvcFwiXHJcbiAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzOHB4XCJcclxuICAgID5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIHN0eWxlPVwibWF4LWhlaWdodDogMzBweFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1saWdodCBib3JkZXIgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTEgYnRuLWxpZ2h0XCJcclxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyByZW1vdmVTaWRlRmlsdGVyKGNvbClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4+Q2xlYXI8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzMHB4XCJcclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtMVwiXHJcbiAgICAgICAgKGNsaWNrKT1cImFwcGx5U2lkZUZpbHRlcihjb2wpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogLTFweFwiPkFwcGx5PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBDZW50ciBPdmVybGF5IGZvciBzaG93aW5nIHRoZSBjaG9zZSBjb2x1bW5zIC0tPlxyXG5cclxuPGRpdiAqbmdJZj1cInNob3dDb2x1bW5QYW5lbFwiIGNsYXNzPVwiY3VzdG9tLW1vZGFsLW92ZXJsYXlcIj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImN1c3RvbS1tb2RhbC1jb250ZW50XCJcclxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZHJvcGRvd25zQmFja2dyb3VuZENvbG9yXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gID5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2RhbENvbHVtblBhbm5lbFwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gVGhlIGV4aXN0aW5nIG5nLXRlbXBsYXRlIHlvdSBwcm92aWRlZCAtLT5cclxuPG5nLXRlbXBsYXRlICNtb2RhbENvbHVtblBhbm5lbD5cclxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLXBhbmVsLWhlYWRlclwiPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtMiBwcy0zIHJvdW5kZWQtdG9wLTIgbW9kYS1oZWFkZXJcIlxyXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIjQ4XCJcclxuICAgID5cclxuICAgICAgQ2hvb3NlIENvbHVtbnNcclxuICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyXCIgKGNsaWNrKT1cImNsb3NlTW9kYWxDb2x1bW5QYW5lbCgpXCJcclxuICAgICAgICA+PHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMveC5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgPjwvc3BhblxyXG4gICAgICA+PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8aHIgY2xhc3M9XCJteS0wXCIgLz5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHB4LTIgcGUtM1wiIFtzdHlsZS5oZWlnaHQucHhdPVwiNDhcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXIgbWUtMlwiICpuZ0lmPVwic2hvd0NvbHVtbnNHcm91cGluZ1wiPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtaWNvbiBkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgIGFjY29yZGlvblN0YXRlID09PSAnYWxsJ1xyXG4gICAgICAgICAgICAgICAgPyBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLWRvd24uc3ZnJ1xyXG4gICAgICAgICAgICAgICAgOiBhY2NvcmRpb25TdGF0ZSA9PT0gJ3NvbWUnXHJcbiAgICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Rhc2guc3ZnJ1xyXG4gICAgICAgICAgICAgICAgOiBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFsbEFjY29yZGlvbnMoKVwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtMlwiXHJcbiAgICAgICAgICBbY2hlY2tlZF09XCJhbGxDb2x1bW5zU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUFsbENvbHVtbnNWaXNpYmlsaXR5KClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggY29sdW1ucy4uLlwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNob3NlQ29sdW1uc1NlYXJjaFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8aHIgY2xhc3M9XCJtdC0wIG1iLTFcIiAvPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicHgtMiBvdmVybGF5LXNjcm9sbGFibGVcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgbGV0IGNvbCBvZiBjb2x1bW5zIHwgZmlsdGVyIDogY2hvc2VDb2x1bW5zU2VhcmNoIDogJ2hlYWRlcic7XHJcbiAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uUGFuZWxJdGVtOyBjb250ZXh0OiB7IGNvbDogY29sIH1cIlxyXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNzaWRlTWVudVJvd0dyb3Vwcz5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGgtMTAwIGQtbm9uZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInB4LTMgaC0xMDBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMyBtYi00XCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvanVzdGlmeS5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8c3Bhbj5Sb3cgR3JvdXBzPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImgtNTBcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInB4LTMgcHktMiBib3JkZXItZGFzaGVkIGgtMTAwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMTRweFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgRHJhZyBoZXJlIHRvIHNldCByb3cgR3JvdXBzXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGhyIGNsYXNzPVwibXQtNFwiIC8+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInB4LTMgaC0xMDBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMyBtYi00XCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvanVzdGlmeS5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8c3Bhbj5WYWx1ZXM8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaC01MCBkLWZsZXhcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInB4LTMgcHktMiBib3JkZXItZGFzaGVkIGgtMTAwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMTRweFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgRHJhZyBoZXJlIGFnZ3JlZ2F0ZVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbjwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG48IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuPCEtLSBEcmFnIFByZXZpZXcgVGVtcGxhdGUgLS0+XHJcbjwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG48IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuPG5nLXRlbXBsYXRlICNkcmFnUHJldmlldyBsZXQtY29sPlxyXG4gIDxkaXYgY2xhc3M9XCJwLTIgYm9yZGVyIGQtZmxleCBnYXAtMlwiPlxyXG4gICAgPGRpdj5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZydcIlxyXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXY+e3sgY29sLmhlYWRlciB9fTwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBEcmFnIFBsYWNlaG9sZGVyIFRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGVcclxuICAjZHJhZ1BsYWNlaG9sZGVyXHJcbiAgbGV0LWNvbFxyXG4gIGxldC1pPVwiaW5kZXhcIlxyXG4gIGxldC1zZWN0aW9uPVwic2VjdGlvblwiXHJcbiAgbGV0LWRyYWdnaW5nSW5Hcm91cEFyZWE9XCJkcmFnZ2luZ0luR3JvdXBBcmVhXCJcclxuPlxyXG4gIDxkaXYgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiPlxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgIGhlYWRlckNlbGw7XHJcbiAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbCwgaW5kZXg6IGksIHNlY3Rpb246IHNlY3Rpb24gfVxyXG4gICAgICBcIlxyXG4gICAgPjwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJkcmFnZ2luZ0luR3JvdXBBcmVhXCI+TmV3IFBsYWNlaG9sZGVyPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFRvcCBHcm91cCBSb3cgUGxhY2Vob2xkZXIgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlciBsZXQtY29sIGxldC1zaG93Q2hldnJvbj1cInNob3dDaGV2cm9uXCI+XHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleCBnYXAtMiB0b3Atcm93LWdyb3VwaW5nLXBsYWNlaG9sZGVyXCJcclxuICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJ0b3BHcm91cGVkQmFkZ2VzQmFja2dyb3VuZENvbG9yXCJcclxuICAgID5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBjZGtEcmFnSGFuZGxlXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9ncmlkLTN4Mi1nYXAuc3ZnJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgPjwvc3Bhbj5cclxuICAgICAgPHNwYW4+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cclxuICAgICAgPHNwYW5cclxuICAgICAgICAoY2xpY2spPVwidW5ncm91cENvbHVtbihjb2wpXCJcclxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3guc3ZnJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgPjwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJzaG93Q2hldnJvblwiIHN0eWxlPVwib3BhY2l0eTogMC42OyBmb250LXNpemU6IDE0cHhcIj5cclxuICAgIDxzcGFuXHJcbiAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXCJcclxuICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgID48L3NwYW4+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGVcclxuICAjY2hpbGRIZWFkZXJQbGFjZWhvbGRlclxyXG4gIGxldC1jb2xcclxuICBsZXQtcGlubmVkUmlnaHQ9XCJwaW5uZWRSaWdodFwiXHJcbiAgbGV0LWk9XCJpbmRleFwiXHJcbiAgbGV0LXNlY3Rpb25zPVwic2VjdGlvbnNcIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJoZWFkZXItY2VsbCBvbmUtcm93LWhlYWRlci1jZWxsc1wiXHJcbiAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgW3N0eWxlLmZvbnRXZWlnaHRdPVwiaGVhZGVyRm9udFdlaWdodFwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXHJcbiAgICAgICAgW2NsYXNzLmZsZXgtcm93LXJldmVyc2VdPVwicGlubmVkUmlnaHRcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LWVsbGlwc2lzIGgtMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgW3RpdGxlXT1cImNvbC5oZWFkZXJcIlxyXG4gICAgICAgICAgW2NsYXNzLnctMTAwXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4XCJcclxuICAgICAgICAgIFtjbGFzcy5mbGV4LXJvdy1yZXZlcnNlXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhyZWUtZG90cyBwLTFcIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy90aHJlZS1kb3RzLXZlcnRpY2FsLnN2ZydcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzaXplLWhhbmRsZVwiPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9yZXNpemUtaGFuZGxlLnN2ZydcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2XHJcbiAgICAqbmdJZj1cInNob3dGaWx0ZXJSb3dcIlxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgY2xhc3M9XCJoZWFkZXItY2VsbCBmaWx0ZXItY2VsbFwiXHJcbiAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxyXG4gICAgc3R5bGU9XCJncmlkLXJvdzogM1wiXHJcbiAgPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImhlYWRlci1jZWxsIGZpbHRlci1jZWxsXCJcclxuICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJjb2wud2lkdGhcIlxyXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICA+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cImNvbC5maWx0ZXJWYWx1ZVwiXHJcbiAgICAgICAgW3JlYWRvbmx5XT1cImNvbD8udHlwZSA9PSAnZHJvcGRvd24nIHx8IGNvbD8udHlwZSA9PSAnaW1hZ2UnXCJcclxuICAgICAgICBbY2xhc3MuZGlzYWJsZWQtc2VhcmNoLWlucHV0XT1cIlxyXG4gICAgICAgICAgY29sPy50eXBlID09ICdkcm9wZG93bicgfHwgY29sPy50eXBlID09ICdpbWFnZSdcclxuICAgICAgICBcIlxyXG4gICAgICAvPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlclwiXHJcbiAgICAgICAgKGNsaWNrKT1cImFjdGl2ZUZpbHRlckNlbGwgPSBjb2w7IGFjdGl2ZUNvbCA9IG51bGxcIlxyXG4gICAgICAgID48c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgPjwvc3BhblxyXG4gICAgICA+PC9zcGFuPlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIlxyXG4gICAgICAgICpuZ0lmPVwiYWN0aXZlRmlsdGVyQ2VsbCA9PT0gY29sXCJcclxuICAgICAgICBzdHlsZT1cInRvcDogMTAwJTsgcmlnaHQ6IDA7IHotaW5kZXg6IDEwOyBsZWZ0OiAwXCJcclxuICAgICAgPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3RhYmxlTGF5b3V0PlxyXG4gIDxkaXZcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgY2xhc3M9XCJwLTMgc2hhZG93IGFjdGlvbnMtZHJvcGRvd24gbXQtMSBkcm9wZG93bi1tZW51IHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dFwiXHJcbiAgICBzdHlsZT1cIndpZHRoOiAzMjBweFwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wXCJcclxuICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMTBweFwiXHJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ3NldHRpbmcnKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1sZWZ0LnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxoNiBjbGFzcz1cIm1iLTAgbXMtMlwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDUwMFwiPlRhYmxlIExheW91dDwvaDY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxociBjbGFzcz1cIm15LTJcIiAvPlxyXG4gICAgPGRpdiBjbGFzcz1cInctMTAwIG1iLTMgZC1mbGV4XCIgcm9sZT1cImdyb3VwXCI+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgY2xhc3M9XCJidG4tY2hlY2sgbGF5b3V0LWJ1dHRvbi1jaGVja1wiXHJcbiAgICAgICAgbmFtZT1cImxheW91dFNpemVcIlxyXG4gICAgICAgIGlkPVwic21hbGxcIlxyXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2VUYWJsZUxheW91dCgkZXZlbnQsICdzbWFsbCcpXCJcclxuICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFRhYmxlTGF5b3V0ID09ICdzbWFsbCdcIlxyXG4gICAgICAvPlxyXG4gICAgICA8bGFiZWxcclxuICAgICAgICBjbGFzcz1cImJvcmRlciBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGxheW91dC1idXR0b25cIlxyXG4gICAgICAgIGZvcj1cInNtYWxsXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICBjb2xvcjogc2VsZWN0ZWRUYWJsZUxheW91dCA9PSAnc21hbGwnID8gJyMwMDAnIDogJyM3MjcyNzInXHJcbiAgICAgICAgfVwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlldy1ib3ggYm9yZGVyIG1iLTFcIiBzdHlsZT1cImhlaWdodDogOHB4XCI+PC9kaXY+XHJcbiAgICAgICAgU21hbGxcclxuICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgY2xhc3M9XCJidG4tY2hlY2sgbGF5b3V0LWJ1dHRvbi1jaGVja1wiXHJcbiAgICAgICAgbmFtZT1cImxheW91dFNpemVcIlxyXG4gICAgICAgIGlkPVwibWVkaXVtXCJcclxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkVGFibGVMYXlvdXQgPT0gJ21lZGl1bSdcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlVGFibGVMYXlvdXQoJGV2ZW50LCAnbWVkaXVtJylcIlxyXG4gICAgICAvPlxyXG4gICAgICA8bGFiZWxcclxuICAgICAgICBjbGFzcz1cImJvcmRlciBteC0zIGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIgbGF5b3V0LWJ1dHRvblwiXHJcbiAgICAgICAgZm9yPVwibWVkaXVtXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICBjb2xvcjogc2VsZWN0ZWRUYWJsZUxheW91dCA9PSAnbWVkaXVtJyA/ICcjMDAwJyA6ICcjNzI3MjcyJ1xyXG4gICAgICAgIH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXctYm94IGJvcmRlciBtYi0xXCIgc3R5bGU9XCJoZWlnaHQ6IDEycHhcIj48L2Rpdj5cclxuICAgICAgICBNZWRpdW1cclxuICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgY2xhc3M9XCJidG4tY2hlY2sgbGF5b3V0LWJ1dHRvbi1jaGVja1wiXHJcbiAgICAgICAgbmFtZT1cImxheW91dFNpemVcIlxyXG4gICAgICAgIGlkPVwibGFyZ2VcIlxyXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2VUYWJsZUxheW91dCgkZXZlbnQsICdsYXJnZScpXCJcclxuICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFRhYmxlTGF5b3V0ID09ICdsYXJnZSdcIlxyXG4gICAgICAvPlxyXG4gICAgICA8bGFiZWxcclxuICAgICAgICBjbGFzcz1cImJvcmRlciBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGxheW91dC1idXR0b25cIlxyXG4gICAgICAgIGZvcj1cImxhcmdlXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICBjb2xvcjogc2VsZWN0ZWRUYWJsZUxheW91dCA9PSAnbGFyZ2UnID8gJyMwMDAnIDogJyM3MjcyNzInXHJcbiAgICAgICAgfVwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlldy1ib3ggYm9yZGVyIG1iLTFcIiBzdHlsZT1cImhlaWdodDogMTZweFwiPjwvZGl2PlxyXG4gICAgICAgIExhcmdlXHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8aHIgY2xhc3M9XCJteS0yXCIgLz5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cclxuICAgICAgPHNwYW4+U2hvdyBzZXBhcmF0b3JzPC9zcGFuPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtLTBcIj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgaWQ9XCJzZXBhcmF0b3JzXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcclxuICAgICAgICAgIChjaGFuZ2UpPVwib25Gb250Q2hhbmdlKClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICA8c3Bhbj5Sb3cgc2hhZGluZzwvc3Bhbj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbS0wXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dTaGFkaW5nRW5hYmxlZFwiXHJcbiAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVJvd1NoYWRpbmcoKVwiXHJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgaWQ9XCJyb3dTaGFkaW5nXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XHJcbiAgICAgIDxzcGFuPlNob3cgU2lkZSBNZW51PC9zcGFuPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtLTBcIj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNob3dTaWRlTWVudVwiXHJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgaWQ9XCJyb3dTaGFkaW5nXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxyXG4gICAgICA8c3Bhbj5TaG93IEZpbHRlciBSb3c8L3NwYW4+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG0tMFwiPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2hvd0ZpbHRlclJvd1wiXHJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgaWQ9XCJyb3dTaGFkaW5nXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PiAtLT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdGFibGVQcmVzZXQ+XHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJhY3RpdmVTdWJCdXR0b24gIT09ICdzYXZlLXByZXNldCdcIlxyXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICBjbGFzcz1cInAtMyBzaGFkb3cgYWN0aW9ucy1kcm9wZG93biBtdC0xIGRyb3Bkb3duLW1lbnUgc2hvdyBzaGFkb3cgY3VzdG9tLW1lbnUgdGFibGUtbGF5b3V0XCJcclxuICAgIHN0eWxlPVwid2lkdGg6IDI4MHB4XCJcclxuICA+XHJcbiAgICA8IS0tIEhlYWRlciAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBwLTBcIlxyXG4gICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTEwcHhcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ3NldHRpbmcnKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1sZWZ0LnN2ZydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvblwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxoNiBjbGFzcz1cIm1iLTAgbXMtMlwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDUwMFwiPlRhYmxlIFByZXNldHM8L2g2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSBTYXZlIFByZXNldCBCdXR0b24gd2l0aCBEcm9wZG93biAtLT5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8YVxyXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LXByaW1hcnlcIlxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBpZD1cInNhdmVQcmVzZXREcm9wZG93blwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVTdWJBY3Rpb25zKCdzYXZlLXByZXNldCcpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBpc1RhYmxlUHJlc2V0Tm90Q2hhbmdlZCA/IFwiU2F2ZSBwcmVzZXRcIiA6IFwiVXBkYXRlIFByZXNldFwiIH19XHJcbiAgICAgICAgPC9hPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gU2VhcmNoIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoXCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvc2VhcmNoLnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbXgtMiBwb3NpdGlvbi1hYnNvbHV0ZSBpY29uXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFByZXNldFRhYmxlXCJcclxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBQcmVzZXQgTGlzdCAtLT5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgKm5nSWY9XCJcclxuICAgICAgICB0YWJsZVZpZXcgfCBmaWx0ZXIgOiBzZWFyY2hUZXh0UHJlc2V0VGFibGUgOiAnbmFtZScgYXMgZmlsdGVyZWRMaXN0XHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDwhLS0gSWYgZmlsdGVyZWRMaXN0IGV4aXN0cyBhbmQgbm9uZSBpcyBkZWZhdWx0IC0+IHNob3cgZmFsbGJhY2sgLS0+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cIiBwYi01XCJcclxuICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImRhdGFHcmlkQ29udGFpbmVyLm9mZnNldEhlaWdodCAtIDI1MFwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgY2xlYXJBbGxGaWx0ZXJzKCk7XHJcbiAgICAgICAgICAgIG9wZW5JbmRleCA9IG51bGw7XHJcbiAgICAgICAgICAgIHRlbXBfc3RhdGUuaWQgPSAnJztcclxuICAgICAgICAgICAgYWN0aXZlVG9wQnV0dG9uID0gJyc7XHJcbiAgICAgICAgICAgIGN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZSA9IG51bGxcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkXCI+RGVmYXVsdCBWaWV3PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1kYXJrXCI+Q3JlYXRlZCBieSBzeXN0ZW08L3NtYWxsPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgKm5nSWY9XCIhdGFibGVGaWx0ZXJWaWV3SWQgJiYgIWhhc0FueURlZmF1bHRWaWV3KClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJhZGdlIGJnLWxpZ2h0IHRleHQtcHJpbWFyeSBtcy0yXCJcclxuICAgICAgICAgICAgPkRlZmF1bHQ8L3NwYW5cclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIXRhYmxlRmlsdGVyVmlld0lkICYmICFoYXNBbnlEZWZhdWx0VmlldygpXCJcclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGVjay1ibHVlLnN2ZydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93biBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwidGFibGVGaWx0ZXJWaWV3SWRcIlxyXG4gICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIFRoZSBsaXN0OiByZW5kZXIgZWFjaCB0YWJsZSBmcm9tIGZpbHRlcmVkTGlzdCAtLT5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiXHJcbiAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgbGV0IHRhYmxlIG9mIGZpbHRlcmVkTGlzdDtcclxuICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeVRhYmxlXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDwhLS0gSXRlbSAtLT5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb3BlbkluZGV4ID0gbnVsbDsgYWN0aXZlVG9wQnV0dG9uID0gJydcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwic2VsZWN0RmlsdGVyKHRhYmxlKTsgb3BlbkluZGV4ID0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZFwiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICB7eyB0YWJsZT8ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPCEtLSB7e3RhYmxlPy5pc190ZW1wfX0gLS0+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICh0YWJsZT8uaXNfdGVtcCAmJiAhdGVtcF9zdGF0ZS5pZCkgfHxcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wX3N0YXRlLmlkID09IHRhYmxlLmlkXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hlY2stYmx1ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0YWJsZT8uaXNfZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgYmctbGlnaHQgdGV4dC1wcmltYXJ5IG1zLTJcIlxyXG4gICAgICAgICAgICAgICAgICA+RGVmYXVsdDwvc3BhblxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFya1wiICpuZ0lmPVwidGFibGU/LmNvbmZpZz8uZmlsdGVyTmFtZXNcIiBbdGl0bGVdPVwidGFibGU/LmNvbmZpZz8uZmlsdGVyTmFtZXNcIj5cclxuICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgIHRhYmxlPy5jb25maWc/LmZpbHRlck5hbWVzPy5sZW5ndGggPiAyNSBcclxuICAgICAgICAgICAgICA/ICh0YWJsZT8uY29uZmlnPy5maWx0ZXJOYW1lcyB8IHNsaWNlOjA6MjUpICsgJy4uLidcclxuICAgICAgICAgICAgICA6IHRhYmxlPy5jb25maWc/LmZpbHRlck5hbWVzXHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAoe3sgdGFibGU/LmNvbmZpZz8udG90YWxDb3VudCB9fSlcclxuICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFya1wiICpuZ0lmPVwiIXRhYmxlPy5jb25maWc/LmZpbHRlck5hbWVzXCI+e3sgdGFibGU/LmNyZWF0ZWRBdCB8IGRhdGUgOiBcIk1NTSBkLCB5XCIgfX08L3NtYWxsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwidGFibGU/LmlzX2RlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hlY2stYmx1ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25cIiAqbmdJZj1cIiF0YWJsZT8uaXNfZGVmYXVsdFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLXdyYXBwZXJcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWljb24gbXV0ZWQtdGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU1lbnUoaSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwib3BlbkluZGV4ID09PSBpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy9ob3Jpem9udGFsLWRvdHMuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8IS0tIG1lbnUgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDx1bFxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib3BlbkluZGV4ID09PSBpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImN1c3RvbS1kcm9wZG93bi1tZW51XCJcclxuICAgICAgICAgICAgICAgICAgICByb2xlPVwibWVudVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgcm9sZT1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm1lbnVpdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblByZXNldCh0YWJsZSwgJ3NldFByZXNldCcpOyB0ZW1wX3N0YXRlLmlkID0gJydcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvc3Rhci5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTZXQgYXMgZGVmYXVsdFxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIHJvbGU9XCJub25lXCIgKm5nSWY9XCIhdGFibGUuY29uZmlybURlbGV0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibWVudWl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gdGV4dC1kYW5nZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidGFibGUuY29uZmlybURlbGV0ZSA9IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogLTRweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy90cmFzaC1yZWQuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGFibGUuY29uZmlybURlbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbmZpcm0tYmxvY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0zIHB5LTIgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIDxiciAvPjxiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+4oCce3sgdGFibGU/Lm5hbWUgfX3igJ08L2JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+P1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQgbWUtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidGFibGUuY29uZmlybURlbGV0ZSA9IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLWRhbmdlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uUHJlc2V0KHRhYmxlLCAnZGVsZXRlUHJlc2V0JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlbGV0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gSXRlbSBFbmQgSGVyZSAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdlxyXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAqbmdJZj1cImFjdGl2ZVN1YkJ1dHRvbiA9PSAnc2F2ZS1wcmVzZXQnXCJcclxuICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudSBwLTMgYmFkZ2UgbXQtNCBzYXZlLXByZXNldC1kcm9wZG93biBtdC0xXCJcclxuICAgIGFyaWEtbGFiZWxsZWRieT1cInNhdmVQcmVzZXREcm9wZG93blwiXHJcbiAgICBzdHlsZT1cIm1pbi13aWR0aDogMjUwcHhcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIGZzLTE0cHggbWItMlwiPlxyXG4gICAgICB7eyBpc1RhYmxlUHJlc2V0Tm90Q2hhbmdlZCA/IFwiU2F2ZSBwcmVzZXRcIiA6IFwiVXBkYXRlIFByZXNldFwiIH19XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmcy0xNHB4IG1iLTJcIiBzdHlsZT1cImxpbmUtaGVpZ2h0OiAyMHB4XCI+XHJcbiAgICAgIFRoaXMgd2lsbCBzYXZlIHRoZSBjdXJyZW50IHRhYmxlIGFkanVzdG1lbnRzIGFzIGEgcHJlc2V0LlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIElucHV0IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgPGxhYmVsIGZvcj1cInByZXNldE5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWwgZnMtMTJweCBmdy1ib2xkXCJcclxuICAgICAgICA+UHJlc2V0IE5hbWU8L2xhYmVsXHJcbiAgICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAjcHJlc2V0TmFtZUN0cmw9XCJuZ01vZGVsXCJcclxuICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInByZXNldE5hbWVcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAnaXMtaW52YWxpZCc6XHJcbiAgICAgICAgICAgICAgcHJlc2V0TmFtZUN0cmwuaW52YWxpZCAmJlxyXG4gICAgICAgICAgICAgIChwcmVzZXROYW1lQ3RybC5kaXJ0eSB8fCBwcmVzZXROYW1lQ3RybC50b3VjaGVkKVxyXG4gICAgICAgICAgfVwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gcHMtMlwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHByZXNldCBuYW1lXCJcclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gQ2hlY2tib3ggLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0yXCI+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJwcmVzZXRGaWx0ZXJcIlxyXG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgaWQ9XCJzYXZlRmlsdGVyc1wiXHJcbiAgICAgIC8+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbXQtMVwiIGZvcj1cInNhdmVGaWx0ZXJzXCI+XHJcbiAgICAgICAgU2F2ZSBhY3RpdmUgZmlsdGVyc1xyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBTYXZlIEJ1dHRvbiAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMlwiIHN0eWxlPVwiaGVpZ2h0OiAzMnB4XCI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYm9yZGVyIHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBidG4tbGlnaHRcIlxyXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZUFjdGlvbnMoJ3RhYmxlLXByZXNldHMnKVwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tdG9wOiAtMnB4XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuPkNhbmNlbDwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBbZGlzYWJsZWRdPVwiY2xvc2VEcm9wZG93bi5wcmVzZXQubG9hZGluZ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInNhdmVQcmVzZXQocHJlc2V0TmFtZUN0cmwpXCJcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogLTJweFwiICpuZ0lmPVwiaXNUYWJsZVByZXNldE5vdENoYW5nZWRcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY2xvc2VEcm9wZG93bi5wcmVzZXQubG9hZGluZ1wiXHJcbiAgICAgICAgICAgID5TYXZlPC9uZy1jb250YWluZXJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjbG9zZURyb3Bkb3duLnByZXNldC5sb2FkaW5nXCJcclxuICAgICAgICAgICAgPjxzcGFuIGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc21cIj48L3NwYW5cclxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwXCIgKm5nSWY9XCIhaXNUYWJsZVByZXNldE5vdENoYW5nZWRcIlxyXG4gICAgICAgICAgPlVwZGF0ZSBQcmVzZXQ8L3NwYW5cclxuICAgICAgICA+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3Nob3dIaWRlQ29sdW1ucz5cclxuICA8ZGl2XHJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgIGNsYXNzPVwicC0zIHNoYWRvdyBhY3Rpb25zLWRyb3Bkb3duIG10LTEgZHJvcGRvd24tbWVudSBzaG93IHNoYWRvdyBjdXN0b20tbWVudSB0YWJsZS1sYXlvdXRcIlxyXG4gICAgc3R5bGU9XCJ3aWR0aDogMjgwcHhcIlxyXG4gID5cclxuICAgIDwhLS0gSGVhZGVyIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMFwiXHJcbiAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMTBweFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnc2V0dGluZycpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LWxlZnQuc3ZnJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGg2IGNsYXNzPVwibWItMCBtcy0yXCIgc3R5bGU9XCJmb250LXdlaWdodDogNTAwXCI+Q29sdW1uczwvaDY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8YVxyXG4gICAgICAgIChjbGljayk9XCJyZXNldENvbHVtbnMoKVwiXHJcbiAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXHJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgdGV4dC1kZWNvcmF0aW9uLW5vbmVcIlxyXG4gICAgICAgID5SZXNldDwvYVxyXG4gICAgICA+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFNlYXJjaCAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZ2xvYmFsLXNlYXJjaFwiPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NlYXJjaC5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwibXgtMiBwb3NpdGlvbi1hYnNvbHV0ZSBpY29uIGRhdGEtZ3JpZC1zdmctaWNvblwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBjb2x1bW5cIlxyXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInRvcFNob3dIaWRlQ29sdW1uc1wiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gUHJlc2V0IExpc3QgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCJcclxuICAgICAgc3R5bGU9XCJvdmVyZmxvdzogYXV0bzsgc2Nyb2xsYmFyLXdpZHRoOiB0aGluXCJcclxuICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJkYXRhR3JpZENvbnRhaW5lci5vZmZzZXRIZWlnaHQgLSAyMjBcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXV0ZWQtdGV4dCBzaG93LWhpZGUtdGFibGUtbGFiZWwgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCIgKm5nSWY9XCJoYXNBbnlWaXNpYmxlQ29sdW1uXCI+XHJcbiAgICAgICAgU2hvdyBpbiB0YWJsZVxyXG4gICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJoaWRlX2FsbFwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiYWxsQ29sdW1uc1NlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlQWxsQ29sdW1uc1Zpc2liaWxpdHkoKVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgZnctc2VtaWJvbGRcIiBmb3I9XCJoaWRlX2FsbFwiPlxyXG4gICAgICAgICAgICAgIFNob3cvSGlkZSBBbGwgXHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0gSXRlbSAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgbGV0IGNvbCBvZiBjb2x1bW5zIHwgZmlsdGVyIDogdG9wU2hvd0hpZGVDb2x1bW5zIDogJ2hlYWRlcic7XHJcbiAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RmllbGRcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJjb2wuaXNfdmlzaWJsZVwiXHJcbiAgICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBib3JkZXItMCBweC0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTFcIj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhY29sPy5waW5uZWRcIlxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZ3JpcC12ZXJ0aWNhbC5zdmcnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItZ3JhcCBkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXHJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb2w/LnBpbm5lZFwiXHJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9waW4tYmx1ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItZ3JhcCBkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXHJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgIHt7IGNvbC5oZWFkZXIgfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nSWY9XCIhY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgJiYgIWNvbD8ucXVlcnk/Ll9pZHM/Lmxlbmd0aFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDb2x1bW5WaXNpYmlsaXR5KGNvbCwgZmFsc2UpXCJcclxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInZpc2libGVDb2x1bW5zKCkubGVuZ3RoIDw9IDIgfHwgY29sPy5pc19hbHdheXNfdmlzaWJsZVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5wZS1ub25lXT1cInZpc2libGVDb2x1bW5zKCkubGVuZ3RoIDw9IDIgfHwgY29sPy5pc19hbHdheXNfdmlzaWJsZVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5vcGFjaXR5LTUwXT1cInZpc2libGVDb2x1bW5zKCkubGVuZ3RoIDw9IDIgfHwgY29sPy5pc19hbHdheXNfdmlzaWJsZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9leWUuc3ZnJ1wiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nSWY9XCJjb2w/LnF1ZXJ5Py5maXJzdF92YWx1ZSB8fCBjb2w/LnF1ZXJ5Py5faWRzPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICBzdHlsZT1cIm9wYWNpdHk6IDAuNVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9leWUuc3ZnJ1wiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8IS0tIEl0ZW0gRW5kIEhlcmUgLS0+XHJcblxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1kaXZpZGVyXCJcclxuICAgICAgICAqbmdJZj1cImhhc0FueVZpc2libGVDb2x1bW4gJiYgaGFzQW55SW5WaXNpYmxlQ29sdW1uXCJcclxuICAgICAgPjwvZGl2PlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwibXV0ZWQtdGV4dCBzaG93LWhpZGUtdGFibGUtbGFiZWwgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCJcclxuICAgICAgICAqbmdJZj1cImhhc0FueUluVmlzaWJsZUNvbHVtblwiXHJcbiAgICAgID5cclxuICAgICAgICBIaWRlIGluIHRhYmxlXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgIGlkPVwic2hvd19hbGxcIlxyXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImFsbENvbHVtbnNTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUFsbENvbHVtbnNWaXNpYmlsaXR5KClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGZ3LXNlbWlib2xkXCIgZm9yPVwic2hvd19hbGxcIj5cclxuICAgICAgICAgICAgICBTaG93L0hpZGUgQWxsIFxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnM7IHRyYWNrQnk6IHRyYWNrQnlGaWVsZFwiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cIiFjb2wuaXNfdmlzaWJsZVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJvcmRlci0wIHB4LTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTFcIj5cclxuICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY29sPy5waW5uZWRcIlxyXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2dyaXAtdmVydGljYWwuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBjdXJzb3ItZ3JhcFwiXHJcbiAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxyXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sPy5waW5uZWRcIlxyXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Bpbi1ibHVlLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gY3Vyc29yLWdyYXBcIlxyXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ29sdW1uVmlzaWJpbGl0eShjb2wsIHRydWUpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9leWUtY3Jvc3Muc3ZnJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBJdGVtIEVuZCBIZXJlIC0tPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2ZpbHRlckNvbHVtbnMgbGV0LWNvbD1cImNvbHVtblwiPlxyXG4gIDxkaXZcclxuICAgIEBzbGlkZVRvZ2dsZVxyXG4gICAgKm5nSWY9XCIhaXNGaWx0ZXJPcGVuICYmIGFjdGl2ZVRvcEJ1dHRvbiA9PSAnZmlsdGVyLWNvbHVtbnMnXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgY2xhc3M9XCJzaGFkb3cgYWN0aW9ucy1kcm9wZG93biBtdC0xIHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dCBmaWx0ZXItY29sdW1uc1wiXHJcbiAgICBzdHlsZT1cIndpZHRoOiAyODBweDsgcmlnaHQ6IHVuc2V0OyBtYXgtd2lkdGg6IDIzMHB4XCJcclxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTIgcHgtM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGdsb2JhbC1zZWFyY2hcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zZWFyY2guc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBteC0yIHBvc2l0aW9uLWFic29sdXRlIGljb25cIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJGaWx0ZXIgYnlcIlxyXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImFkZEZpbHRlckNvbHVtbklucHV0XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiXHJcbiAgICAgIHN0eWxlPVwibWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDUwMHB4KTsgb3ZlcmZsb3c6IGF1dG9cIlxyXG4gICAgPlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICBsZXQgY29sIG9mIGNvbHVtbnMgfCBmaWx0ZXIgOiBhZGRGaWx0ZXJDb2x1bW5JbnB1dCA6ICdoZWFkZXInO1xyXG4gICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZpZWxkXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIChjbGljayk9XCJvcGVuRmlsdGVyKGNvbClcIlxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgY29sLmlzX3Zpc2libGUgJiZcclxuICAgICAgICAgICAgIWNvbD8ucXVlcnk/LmZpcnN0X3ZhbHVlICYmXHJcbiAgICAgICAgICAgICFjb2w/LnF1ZXJ5Py5faWRzPy5sZW5ndGhcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBib3JkZXItMCBweC0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZHJvcGRvd24taXRlbSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMVwiPlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLXRvcDogLTNweFwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGRcIj5cclxuICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gRHJvcGRvd24gLS0+XHJcbiAgPGRpdlxyXG4gICAgQHNsaWRlVG9nZ2xlXHJcbiAgICAqbmdJZj1cImlzRmlsdGVyT3BlbiAmJiBzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlID09ICdkcm9wZG93bidcIlxyXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICBjbGFzcz1cInNoYWRvdyBhY3Rpb25zLWRyb3Bkb3duIG10LTEgc2hvdyBzaGFkb3cgY3VzdG9tLW1lbnUgdGFibGUtbGF5b3V0IGZpbHRlci1jb2x1bW5zIHBiLTJcIlxyXG4gICAgc3R5bGU9XCJ3aWR0aDogMjgwcHg7IHJpZ2h0OiB1bnNldDsgbWF4LXdpZHRoOiAyMzBweFwiXHJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJweC0zIG15LTIgYm9yZGVyLWJlbG93IHB5LTEgcGItMiBtYi0zIGQtZmxleCBwcy0xXCI+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ2ZpbHRlci1jb2x1bW5zJyk7IGlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlXCJcclxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LWxlZnQuc3ZnJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMiBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgID48L3NwYW5cclxuICAgICAgPjxiPnt7IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5oZWFkZXIgfX08L2I+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0yIHB4LTNcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiY29sLTEyIGdsb2JhbC1zZWFyY2ggcG9zaXRpb24tcmVsYXRpdmUgYm9yZGVyIHJvdW5kZWQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LXdyYXAgcHgtMiBmaWx0ZXItc2VyYWNoLWlucHRcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBzZWxlY3RlZCBvZiBzZWxlY3RlZEZpbHRlck9wdGlvbnNcIlxyXG4gICAgICAgICAgY2xhc3M9XCJiYWRnZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xIG1lLTEgbWItMVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgc2VsZWN0ZWQ/LnZhbHVlID8gc2VsZWN0ZWQudmFsdWUgOiBzZWxlY3RlZCB9fVxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlbGVjdGlvbkluRmlsdGVyKHNlbGVjdGVkKVwiXHJcbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY3Jvc3MtcHJpbWFyeS5zdmcnXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBib3JkZXItMCBmbGV4LWdyb3ctMVwiXHJcbiAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDBcIlxyXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlbGVjdGVkRmlsdGVyT3B0aW9ucz8ubGVuZ3RoID8gJycgOiAnRmlsdGVyIGJ5J1wiXHJcbiAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dEZvckZpbHRlckRyb3BEb3duXCJcclxuICAgICAgICAgIChrZXlkb3duLmJhY2tzcGFjZSk9XCJoYW5kbGVCYWNrc3BhY2UoJGV2ZW50KVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIlxyXG4gICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSA2MDBweCk7IG92ZXJmbG93OiBhdXRvXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgbGV0IGNvbCBvZiBzZWxlY3RlZENvbHVtbkZvckZpbHRlci5jb2x1bW5fZHJvcGRvd25fdmFsdWVcclxuICAgICAgICAgICAgfCBmaWx0ZXIgOiBzZWFyY2hUZXh0Rm9yRmlsdGVyRHJvcERvd24gOiAndmFsdWUnO1xyXG4gICAgICAgICAgbGV0IGkgPSBpbmRleFxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBib3JkZXItMCBweC0yIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZHJvcGRvd24taXRlbSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgIFtpZF09XCJpXCJcclxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuaGFzKGNvbC5pZCB8fCBjb2wuX2lkIHx8IGNvbClcIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0aW9uSW5GaWx0ZXIoY29sKVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgZnctc2VtaWJvbGRcIiBbZm9yXT1cImlcIj5cclxuICAgICAgICAgICAgICB7eyBjb2w/LnZhbHVlIHx8IGNvbD8ubmFtZSB8fCBjb2wgfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0yIHB4LTIgYm9yZGVyLXRvcFwiXHJcbiAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzOHB4XCJcclxuICAgID5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzMnB4XCJcclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnkgYnRuLWxpZ2h0IGJvcmRlciB3LTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtMSBidG4tbGlnaHRcIlxyXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHJlc2V0RmlsdGVyQ2hhbmdlcygpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuPkNhbmNlbDwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTFcIlxyXG4gICAgICAgIChjbGljayk9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tdG9wOiAtMnB4XCI+U2F2ZTwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBGb3IgVGV4dCBmaWVsZHMgYW5kIG51bWJlciBmaWVsZHMtLT5cclxuXHJcbiAgPGRpdlxyXG4gICAgQHNsaWRlVG9nZ2xlXHJcbiAgICAqbmdJZj1cIlxyXG4gICAgICBpc0ZpbHRlck9wZW4gJiZcclxuICAgICAgKHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgPT0gJ3N0cmluZycgfHxcclxuICAgICAgICBzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlID09ICdudW1iZXInIHx8XHJcbiAgICAgICAgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZSA9PSAnZGF0ZScpXHJcbiAgICBcIlxyXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICBjbGFzcz1cInNoYWRvdyBhY3Rpb25zLWRyb3Bkb3duIG10LTEgc2hvdyBzaGFkb3cgY3VzdG9tLW1lbnUgdGFibGUtbGF5b3V0IGZpbHRlci1jb2x1bW5zIHBiLTJcIlxyXG4gICAgc3R5bGU9XCJ3aWR0aDogMjEwcHg7IHJpZ2h0OiB1bnNldDsgbWF4LXdpZHRoOiAyMzBweFwiXHJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJweC0zIGJvcmRlci1iZWxvdyBweS0xIHBiLTIgZC1mbGV4IHBzLTFcIj5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LWxlZnQuc3ZnJ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ2ZpbHRlci1jb2x1bW5zJyk7IGlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgPjwvc3BhblxyXG4gICAgICA+PGI+e3sgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmhlYWRlciB9fTwvYj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBwb3NpdGlvbi1yZWxhdGl2ZSBwLTIgdGV4dC1maWx0ZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtIGN1c3RvbS1zZWxlY3QgYm9yZGVyXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlyc3RDb25kaXRpb25cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlICE9PSAnZGF0ZSdcIj5cclxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNvbnRhaW5cIj5Db250YWluczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRvZXNfbm90X2NvbnRhaW5cIj5Eb2VzIE5vdCBDb250YWluPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+U3RhcnRzIFdpdGg8L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+RW5kcyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZSA9PSAnZGF0ZSdcIj5cclxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XHJcbiAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibm90X2VxdWFsXCI+Tm90IEVxdWFsPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkFmdGVyPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5CZWZvcmU8L29wdGlvbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIGZpcnN0IHZhbHVlXCJcclxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxyXG4gICAgICAgICAgW3R5cGVdPVwiXHJcbiAgICAgICAgICAgIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgPT0gJ3N0cmluZydcclxuICAgICAgICAgICAgICA/ICd0ZXh0J1xyXG4gICAgICAgICAgICAgIDogc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlyc3RWYWx1ZVwiXHJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXktMyBkLWZsZXggZmxleC1yb3dcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweFwiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgY29sLTQgbS0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgICAgaWQ9XCJsb2dpY2FsQW5kXCJcclxuICAgICAgICAgICAgICBuYW1lPVwibG9naWNhbE9wZXJhdG9yXCJcclxuICAgICAgICAgICAgICB2YWx1ZT1cImFuZFwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cImxvZ2ljYWxBbmRcIlxyXG4gICAgICAgICAgICAgID5BTkQ8L2xhYmVsXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIGNvbC00IG0tMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgIGlkPVwibG9naWNhbE9yXCJcclxuICAgICAgICAgICAgICBuYW1lPVwibG9naWNhbE9wZXJhdG9yXCJcclxuICAgICAgICAgICAgICB2YWx1ZT1cIm9yXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCIgZm9yPVwibG9naWNhbE9yXCI+T1I8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgY29sLTQgbS0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgICAgaWQ9XCJsb2dpY2FsTm9uZVwiXHJcbiAgICAgICAgICAgICAgbmFtZT1cImxvZ2ljYWxPcGVyYXRvclwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJub25lXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCIgZm9yPVwibG9naWNhbE5vbmVcIlxyXG4gICAgICAgICAgICAgID5Ob25lPC9sYWJlbFxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmRpdGlvbiAhPT0gJ25vbmUnICYmIGZpcnN0VmFsdWVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yIG10LTNcIj5cclxuICAgICAgICAgICAgPCEtLSBTZWNvbmQgY29uZGl0aW9uIHNlbGVjdCAtLT5cclxuICAgICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc20gYm9yZGVyXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlY29uZENvbmRpdGlvblwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZSAhPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY29udGFpblwiPkNvbnRhaW5zPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZG9lc19ub3RfY29udGFpblwiPkRvZXMgTm90IENvbnRhaW48L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPlN0YXJ0cyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5FbmRzIFdpdGg8L29wdGlvbj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHMgVG88L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJub3RfZXF1YWxcIj5Ob3QgRXF1YWw8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkFmdGVyPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+QmVmb3JlPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgICAgICAgPCEtLSBTZWNvbmQgdmFsdWUgaW5wdXQgLS0+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIFt0eXBlXT1cIlxyXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZSA9PSAnc3RyaW5nJ1xyXG4gICAgICAgICAgICAgICAgICA/ICd0ZXh0J1xyXG4gICAgICAgICAgICAgICAgICA6IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGVcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBzZWNvbmQgdmFsdWVcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2Vjb25kVmFsdWVcIlxyXG4gICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTIgcHgtMiBib3JkZXItdG9wXCJcclxuICAgICAgc3R5bGU9XCJoZWlnaHQ6IDM4cHhcIlxyXG4gICAgPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFjdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHM/LnNpemUgJiYgIWZpcnN0VmFsdWVcIlxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzMnB4XCJcclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnkgYnRuLWxpZ2h0IGJvcmRlciB3LTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtMSBidG4tbGlnaHRcIlxyXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHJlc2V0VGV4dEZpbHRlckNoYW5nZXMoKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3Bhbj5DYW5jZWw8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcz8uc2l6ZSA9PT0gMCAmJiAhZmlyc3RWYWx1ZVwiXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMycHhcIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0xXCJcclxuICAgICAgICAoY2xpY2spPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogLTJweFwiPkFwcGx5PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBFZGl0IGRyb3Bkb3duIGhlcmUgLS0+XHJcbjxuZy10ZW1wbGF0ZSBsZXQtY29sPlxyXG4gIDxkaXYgY2xhc3M9XCJkcm9wLWRvd24tZWRpdFwiPjwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlXHJcbiAgI2Z1bGxUZXh0VGVtcGxhdGVcclxuICBsZXQtcm93PVwicm93XCJcclxuICBsZXQtY29sPVwiY29sXCJcclxuICBsZXQtaXNBcnJheT1cImlzQXJyYXlcIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJmdWxsLXRleHQtYm94XCJcclxuICAgIChkYmxjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiZGF0YUdyaWRDb250YWluZXIub2Zmc2V0SGVpZ2h0IC8gMlwiXHJcbiAgPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0VkaXRpbmcocm93LCBjb2wpXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIiFpc0FycmF5XCJcclxuICAgICAgICBjbGFzcz1cImZ1bGwtdGV4dC1jb250ZW50XCJcclxuICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImRhdGFHcmlkQ29udGFpbmVyLm9mZnNldEhlaWdodCAvIDJcIlxyXG4gICAgICAgIChkYmxjbGljayk9XCJcclxuICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgZW5hYmxlRWRpdChyb3csIGNvbCwgdHJ1ZSlcclxuICAgICAgICBcIlxyXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7XHJcbiAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/LnZhbHVlIHx8XHJcbiAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubmFtZSB8fFxyXG4gICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcclxuICAgICAgICB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cImlzQXJyYXlcIj5cclxuICAgICAgICA8dWw+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKTsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxsaSAqbmdJZj1cImkgIT09IDBcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgaXRlbT8uZGVwYXJ0bWVudF9uYW1lIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbT8ucm9sZU5hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICBpdGVtPy5mdWxsX25hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICBcIi1cIlxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFZGl0aW5nKHJvdywgY29sKVwiPlxyXG4gICAgICA8dGV4dGFyZWFcclxuICAgICAgICAoZGJsY2xpY2spPVwiXHJcbiAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIGVuYWJsZUVkaXQocm93LCBjb2wsIHRydWUpXHJcbiAgICAgICAgXCJcclxuICAgICAgICAjdGV4dE1vZGVsPVwibmdNb2RlbFwiXHJcbiAgICAgICAgcm93cz1cIjRcIlxyXG4gICAgICAgICN0ZXh0QXJlYWRJbnB1dFxyXG4gICAgICAgIFsobmdNb2RlbCldPVwicm93W2NvbC5maWVsZF1cIlxyXG4gICAgICAgIG5hbWU9XCJ7eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIHRleHRNb2RlbClcIlxyXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cInRleHRBcmVhZElucHV0LmJsdXIoKVwiXHJcbiAgICAgICAgYXV0b2ZvY3VzXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICdpcy1pbnZhbGlkJzogdGV4dE1vZGVsLmludmFsaWRcclxuICAgICAgICB9XCJcclxuICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgID48L3RleHRhcmVhPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHRJbWFnZVBsYWNlaG9sZGVyIGxldC1yb3c9XCJyb3dcIiBsZXQtY29sPVwiY29sXCI+XHJcbiAgPHNwYW5cclxuICAgIGNsYXNzPVwicHgtMiBkLWZsZXggdy0xMDAgY2VsbC1jb250ZW50IGltYWdlLXBsYWNlaG9sZGVyXCJcclxuICAgIFt0aXRsZV09XCJyb3c/LmZ1bGxfbmFtZSB8fCByb3c/Lm5hbWUgfHwgJ04vQSdcIlxyXG4gID5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgKm5nSWY9XCJcclxuICAgICAgICByb3c/LmxvZ28gfHxcclxuICAgICAgICAgIHJvdz8uYXNzZXRJbWFnZSB8fFxyXG4gICAgICAgICAgcm93Py5pbnZvaWNlPy5pbnZvaWNlX2ltYWdlIHx8XHJcbiAgICAgICAgICByb3c/Lmludm9pY2VfaW1hZ2U7XHJcbiAgICAgICAgZWxzZSBwbGFjZWhvbGRlclxyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIChjbGljayk9XCJmdWxsc2NyZWVuSW1hZ2UgPSByb3c/LnByb2ZpbGVfcGljdHVyZXM/Lls0XT8ucGF0aCB8fFxyXG4gICAgICAgICAgICByb3c/LmxvZ28gfHxcclxuICAgICAgICAgICAgcm93Py5hc3NldEltYWdlIHx8XHJcbiAgICAgICAgICAgIHJvdz8uaW52b2ljZV9pbWFnZVwiXHJcbiAgICAgICAgY2xhc3M9XCJwaWNcIlxyXG4gICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXHJcbiAgICAgICAgW2NsYXNzLmFzc2V0cy1waWNdPVwiZ3JpZFR5cGUgPT0gJ0Fzc2V0cydcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgW3dpZHRoXT1cInJvd0hlaWdodCAtIDEyXCJcclxuICAgICAgICAgIFtoZWlnaHRdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInJvd0hlaWdodCAtIDEwXCJcclxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxyXG4gICAgICAgICAgW3NyY109XCJcclxuICAgICAgICAgICAgcm93Py5wcm9maWxlX3BpY3R1cmVzPy5bNF0/LnBhdGggfHxcclxuICAgICAgICAgICAgcm93Py5sb2dvIHx8XHJcbiAgICAgICAgICAgIHJvdz8uYXNzZXRJbWFnZSB8fFxyXG4gICAgICAgICAgICByb3c/Lmludm9pY2VfaW1hZ2VcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBhbHQ9XCJpY29uXCJcclxuICAgICAgICAgIGNsYXNzPVwib3B0aW9uLWljb25cIlxyXG4gICAgICAgICAgbG9hZGluZz1cImxhenlcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZnVsbHNjcmVlbi1vdmVybGF5XCJcclxuICAgICAgKm5nSWY9XCJmdWxsc2NyZWVuSW1hZ2VcIlxyXG4gICAgICAoY2xpY2spPVwiZnVsbHNjcmVlbkltYWdlID0gbnVsbFwiXHJcbiAgICA+XHJcbiAgICAgIDxpbWcgW3NyY109XCJmdWxsc2NyZWVuSW1hZ2VcIiBjbGFzcz1cImZ1bGxzY3JlZW4taW1nXCIgLz5cclxuICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI3BsYWNlaG9sZGVyPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldER5bmFtaWNDbGFzcyhyb3c/LmZ1bGxfbmFtZSB8fCByb3c/Lm5hbWUpXCJcclxuICAgICAgICBjbGFzcz1cInBpYyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHJvdW5kZWQtY2lyY2xlXCJcclxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgIFtzdHlsZS5mb250U2l6ZS5weF09XCJyb3dIZWlnaHQgLyAzXCJcclxuICAgICAgICBbY2xhc3MuYXNzZXRzLXBpY109XCJncmlkVHlwZSA9PSAnQXNzZXRzJ1wiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBnZXRJbml0aWFscyhyb3c/LmZ1bGxfbmFtZSkgfX1cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFJpZ2h0IENsaWNrIE1lbnVlIC0tPlxyXG48ZGl2XHJcbiAgW2NsYXNzLmludmlzaWJsZV09XCIhcG9zaXRpb25lZFlldFwiXHJcbiAgY2xhc3M9XCJjb250ZXh0LW1lbnUgcC0yXCJcclxuICAqbmdJZj1cImFjdGlvbkhpZGUgJiYgYWN0aW9ucz8ubGVuZ3RoXCJcclxuICBbbmdTdHlsZV09XCJ7ICd0b3AucHgnOiB5UG9zLCAnbGVmdC5weCc6IHhQb3MgfVwiXHJcbiAgW2NsYXNzLnNob3ddPVwiaXNWaXNpYmxlXCJcclxuICBhcHBlbmRUbz1cImJvZHlcIlxyXG4+XHJcbiAgPHVsPlxyXG4gICAgPGxpXHJcbiAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYWN0aW9uc1wiXHJcbiAgICAgIGNsYXNzPVwicm91bmRlZCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soYWN0aW9uKVwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy8nICsgYWN0aW9uICsgJy5zdmcnXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiByaWdodC1jbGljay1tZW51LWljb25zIG1lLTJcIlxyXG4gICAgICA+PC9zcGFuPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtY2FwaXRhbGl6ZSBmdy01MDBcIj57eyBhY3Rpb24gfX08L3NwYW4+XHJcbiAgICA8L2xpPlxyXG4gIDwvdWw+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSBEZXRhaWxzIFRvZ2dsZSBmcm9tIGJvdHRvbSAtLT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbmVzdGVkVGFibGVUZW1wbGF0ZSBsZXQtcm93PlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwibmVzdGVkLXRhYmxlIHRhYmxlIHRhYmxlLXNtIHctMTAwIG1iLTAgY2VudGVyLW5lc3RlZC10YWJsZSB3LTEwMFwiXHJcbiAgICBzdHlsZT1cInRhYmxlLWxheW91dDogZml4ZWQgIWltcG9ydGFudFwiXHJcbiAgICAjbmVzdGVkVGFibGVDb250YWluZXJcclxuICA+XHJcbiAgICA8dGhlYWRcclxuICAgICAgI25lc3RlZEhlYWRlclxyXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIm5lc3RlZFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJyb3c/LmRldGFpbC5jb2x1bW5zXCJcclxuICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXHJcbiAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wQ29sdW1uKCRldmVudCwgcm93KVwiXHJcbiAgICAgICAgKGNka0Ryb3BMaXN0U29ydGVkKT1cIm9uTmVzdGVkQ29sU29ydCgkZXZlbnQsIHByZXZpZXdOZXN0ZWRDb2xzKVwiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZUhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggdHIgYm9yZGVyLWJlbG93XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2Ygcm93LmRldGFpbC5jb2x1bW5zOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2w/LndpZHRoIHx8IDI1MFwiXHJcbiAgICAgICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwiY29sPy53aWR0aCB8fCAyNTBcIlxyXG4gICAgICAgICAgW3N0eWxlLm1heFdpZHRoLnB4XT1cImNvbD8ud2lkdGggfHwgMjUwXCJcclxuICAgICAgICAgIGNsYXNzPVwicHgtNCB0aFwiXHJcbiAgICAgICAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJuZXN0ZWRUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBoLTEwMCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBwb3NpdGlvbi1yZWxhdGl2ZSBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbGxpcHNpc1wiIChjbGljayk9XCJzb3J0TmVzdGVkQ29sKGNvbCwgcm93KVwiPlxyXG4gICAgICAgICAgICAgIHt7IGNvbC5oZWFkZXIgfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjdXJyZW50U3ViU29ydENvbHVtbiA9PSBjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAgIChjb2w/Lm9yZGVyX2J5ID09ICdkZXNjJ1xyXG4gICAgICAgICAgICAgICAgICAgID8gJ2RhdGEtZ3JpZC9pY29ucy9zb3J0LWRlc2Muc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgIDogJ2RhdGEtZ3JpZC9pY29ucy9zb3J0LWFzYy5zdmcnKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtcy0yIHN0YXJ0LTUwXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwhLS0gPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0aHJlZS1kb3RzIHAtMVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlblRocmVlRG90c01lbnUoJGV2ZW50LCBjb2wpXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvdGhyZWUtZG90cy12ZXJ0aWNhbC5zdmcnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBPbmx5IHNob3cgbWVudSBpZiB0aGlzIGNvbHVtbiBpcyBhY3RpdmUgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZVwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUNvbCA9PT0gY29sXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwidG9wOiAtNTAlOyB6LWluZGV4OiAyMTsgbGVmdDogMFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbk1lbnU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29sOiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgICBpc05lc3RlZFRhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogcm93Py5kZXRhaWwuY29sdW1uc1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIlxyXG4gICAgICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgICAgb25SZXNpemVDb2x1bW4oJGV2ZW50LCBjb2wpO1xyXG4gICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9yZXNpemUtaGFuZGxlLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1ByZXZpZXc+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTIgYm9yZGVyIGQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdj57eyBjb2wuaGVhZGVyIH19PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3RoZWFkPlxyXG4gICAgPGRpdlxyXG4gICAgICBbc3R5bGUud2lkdGgucHhdPVwibmVzdGVkSGVhZGVyLm9mZnNldFdpZHRoIC0gMTBcIlxyXG4gICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwibmVzdGVkSGVhZGVyLm9mZnNldFdpZHRoIC0gMTBcIlxyXG4gICAgPlxyXG4gICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XHJcbiAgICAgICAgW2l0ZW1TaXplXT1cIm5lc3RlZFRhYmxlcm93SGVpZ2h0XCJcclxuICAgICAgICBjbGFzcz1cInZpZXdwb3J0XCJcclxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxyXG4gICAgICAgICAgKHJvdz8uZGV0YWlsPy5yZXN1bHQ/Lmxlbmd0aCA8IDVcclxuICAgICAgICAgICAgPyBuZXN0ZWRUYWJsZXJvd0hlaWdodCAqIHJvdz8uZGV0YWlsPy5yZXN1bHQ/Lmxlbmd0aCArIDQwXHJcbiAgICAgICAgICAgIDogMzAwKSArIChoYXNIb3Jpem9udGFsU2Nyb2xsID8gLTEyIDogMSlcclxuICAgICAgICBcIlxyXG4gICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJuZXN0ZWRIZWFkZXIub2Zmc2V0V2lkdGggLSAxMFwiXHJcbiAgICAgICAgW3N0eWxlLm1pbldpZHRoLnB4XT1cIm5lc3RlZEhlYWRlci5vZmZzZXRXaWR0aCAtIDEwXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgYm9yZGVyLWJlbG93IGQtZmxleCB0clwiXHJcbiAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCBkIG9mIHJvdz8uZGV0YWlsPy5yZXN1bHQ7IHRyYWNrQnk6IHRyYWNrQnlJZFwiXHJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIm5lc3RlZFRhYmxlcm93SGVpZ2h0XCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJuZXN0ZWRIZWFkZXI/Lm9mZnNldFdpZHRoXCJcclxuICAgICAgICAgIFtzdHlsZS5taW5XaWR0aC5weF09XCJuZXN0ZWRIZWFkZXI/Lm9mZnNldFdpZHRoXCJcclxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiYm9keUJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAoY29udGV4dG1lbnUpPVwib25SaWdodENsaWNrKCRldmVudCwgZClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJweC00IHB5LTAgdGRcIlxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIHByZXZpZXdOZXN0ZWRDb2xzOyBsZXQgaiA9IGluZGV4XCJcclxuICAgICAgICAgICAgW3N0eWxlLmZvbnRTaXplLnB4XT1cIm5lc3RlZFRhYmxlcm93Rm9udHNpemVcIlxyXG4gICAgICAgICAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sPy53aWR0aCB8fCAyNTBcIlxyXG4gICAgICAgICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwiY29sPy53aWR0aCB8fCAyNTBcIlxyXG4gICAgICAgICAgICBbc3R5bGUubWF4V2lkdGgucHhdPVwiY29sPy53aWR0aCB8fCAyNTBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZXJvd0hlaWdodCAtIDFcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwiY29sPy53aWR0aFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwhLS0ge3sgZFtjb2wuZmllbGRdIHx8IChjb2wuaXNfYW1vdW50ID8gMCA6IFwiLVwiKSB9fSAtLT5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAjY2VsbFRleHRcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1lbGxpcHNpcyBmbGV4LWdyb3ctMVwiXHJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXHJcbiAgICAgICAgICAgICAgICAgIGNvbC50eXBlID09PSAnZGF0ZSdcclxuICAgICAgICAgICAgICAgICAgICA/IChnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpIHwgZGF0ZSA6IGRhdGVGb3JtYXQpXHJcbiAgICAgICAgICAgICAgICAgICAgOiBnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpIHx8ICctJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgIT09ICdpbWFnZSdcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5pc19hbW91bnRcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5U3ltYm9sXHJcbiAgICAgICAgICAgICAgICAgIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzTmVzdGVkVmFsdWVBcnJheShkLCBjb2wuZmllbGQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGNvbC50eXBlID09PSAnZGF0ZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoaXNEYXRlKGdldE5lc3RlZFZhbHVlKGQsIGNvbC5maWVsZCkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IChnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpIHwgZGF0ZTogZGF0ZUZvcm1hdClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKGdldE5lc3RlZFZhbHVlKGQsIGNvbC5maWVsZCk/LnZhbHVlIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKGQsIGNvbC5maWVsZCk/Lm5hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLScpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpPy52YWx1ZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKGQsIGNvbC5maWVsZCk/Lm5hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbC5pc19hbW91bnQgPyAwOiAnLScpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKT8uWzBdPy5kZXBhcnRtZW50X25hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKT8uWzBdPy5yb2xlTmFtZSB8fCBnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpPy5bMF0/LmZ1bGxfbmFtZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLScpXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBnZXRUb3RhbEFtb3VudChjb2wpIH19XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSAnaW1hZ2UnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEltYWdlUGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdzogZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sOiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2xlZnRSaWdodE5lc3RlZFBsYWNlaG9sZGVyIGxldC1yb3c+XHJcbiAgPHRhYmxlXHJcbiAgICBjbGFzcz1cIm5lc3RlZC10YWJsZSB0YWJsZSB0YWJsZS1zbSB3LTEwMCBtYi0wXCJcclxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiYm9keUJhY2tncm91bmRDb2xvclwiXHJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxyXG4gICAgICBncmlkVHlwZSA9PSAnQXNzZXRzJ1xyXG4gICAgICAgID8gKG5lc3RlZFRhYmxlQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQgPz8gMCkgKyAxMlxyXG4gICAgICAgIDogKHRhc2tNYW5hZ2VtZW50Q29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQgPz8gMClcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwidGhlYWRcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwidHIgZC1mbGV4IGJvcmRlci1iZWxvd1wiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZUhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRoXCIgKm5nRm9yPVwibGV0IF8gb2YgWzEsIDIsIDMsIDQsIDVdXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+IC0tPlxyXG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwidGJvZHlcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwidHIgYm9yZGVyLWJlbG93XCJcclxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIm5lc3RlZFRhYmxlcm93SGVpZ2h0XCJcclxuICAgICAgICAqbmdGb3I9XCJsZXQgXyBvZiByb3c/LmRldGFpbD8ucmVzdWx0XCJcclxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGRcIiAqbmdGb3I9XCJsZXQgX18gb2YgWzEsIDIsIDMsIDQsIDVdXCIgY2xhc3M9XCJweS0wXCI+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIm5lc3RlZFRhYmxlcm93SGVpZ2h0XCJcclxuICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aC5weF09XCJuZXN0ZWRUYWJsZXJvd0hlaWdodFwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PiAtLT5cclxuICA8L3RhYmxlPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0YXNrTWFuYWdlbWVudFRlbXBsYXRlIGxldC10YXNrRGV0YWlscz1cInRhc2tEZXRhaWxzXCI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJwLTRcIlxyXG4gICAgI3Rhc2tNYW5hZ2VtZW50Q29udGFpbmVyXHJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIm5lc3RlZFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgIFtzdHlsZS5mb250RmFpbWx5XT1cImZvbnRGYWltbHlcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tdGl0bGVcIj5EZXNjcmlwdGlvbjwvZGl2PlxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIml0ZW0tY29udGVudCBmaXJzdERpdlwiPlxyXG4gICAgICAgIHt7IHRhc2tEZXRhaWxzLmRlc2NyaXB0aW9uIH19XHJcbiAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8cFxyXG4gICAgICAgICAgW3N0eWxlLmZvbnRTaXplXT1cImJvZHlUZXh0Rm9udHNTaXplXCJcclxuICAgICAgICAgIGNsYXNzPVwiaXRlbS1jb250ZW50IGZpcnN0RGl2IHRhc2tEZXNjcmlwdGlvbiBwZS00XCJcclxuICAgICAgICAgIFtpbm5lckhUTUxdPVwiZ2V0U2FmZUNvbW1lbnQodGFza0RldGFpbHM/LmVkaXRvcl9kZXNjcmlwdGlvbilcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5GdWxsSW1hZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgPjwvcD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXRpdGxlXCI+QXR0YWNobWVudHM8L2Rpdj5cclxuICAgICAgICA8aDUgKm5nSWY9XCJ0YXNrRGV0YWlscz8uYXR0YWNobWVudHM/Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICBObyBBdHRhY2htZW50cyBmb3VuZFxyXG4gICAgICAgIDwvaDU+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJ0YXNrRGV0YWlscz8uYXR0YWNobWVudHM/Lmxlbmd0aFwiXHJcbiAgICAgICAgICBjbGFzcz1cIml0ZW0tY29udGVudCBkLWZsZXggZmxleC13cmFwXCJcclxuICAgICAgICAgIHN0eWxlPVwiZ2FwOiAxMHB4XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgYXR0YWNoZW1lbnQgb2YgdGFza0RldGFpbHM/LmF0dGFjaG1lbnRzOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzeW1ib2wtbGFiZWwgZnMtMiBmdy1zZW1pYm9sZCB0ZXh0LXN1Y2Nlc3MgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgdGFza0RldGFpbHM/LmF0dGFjaG1lbnRzX25hbWVbaV0gfHwgJ0F0dGFjaG1lbnQnIH19XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRBdHRjaG1lbnQoYXR0YWNoZW1lbnQpXCJcclxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2RvY3VtZW50LWljb25zLycgK1xyXG4gICAgICAgICAgICAgICAgZ2V0RXh0ZW50aW9uKGF0dGFjaGVtZW50KSArXHJcbiAgICAgICAgICAgICAgICAnLnN2ZydcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvYT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXRpdGxlXCI+XHJcbiAgICAgICAgICBDb21tZW50cyAoe3sgdGFza0RldGFpbHM/LmNvbW1lbnRzPy5sZW5ndGggfX0pXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGg1ICpuZ0lmPVwidGFza0RldGFpbHM/LmNvbW1lbnRzPy5sZW5ndGggPT0gMFwiPk5vIENvbW1lbnRzIGZvdW5kPC9oNT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwidGFza0RldGFpbHM/LmNvbW1lbnRzPy5sZW5ndGhcIiBjbGFzcz1cIml0ZW0tY29udGVudFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnRcIiAqbmdGb3I9XCJsZXQgY29tbWVudCBvZiB0YXNrRGV0YWlscy5jb21tZW50c1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwZS0zXCI+XHJcbiAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwaWMgaW1hZ2UtaW5wdXQtd3JhcHBlclwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMlwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbW1lbnQ/LmNvbW1lbnRfYnkubG9nb1wiXHJcbiAgICAgICAgICAgICAgICBzcmM9XCJ7eyBjb21tZW50Py5jb21tZW50X2J5LmxvZ28gfX1cIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwie3sgY29tbWVudC5jb21tZW50X2J5LmZ1bGxfbmFtZSB9fVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8IS0tIDxhcHAtZGVmYXVsdC1pbWFnZS1wbGFjZWhvbGRlciAqbmdJZj1cIiFjb21tZW50Py5jb21tZW50X2J5LmxvZ29cIiB0aXRsZT1cInt7IGNvbW1lbnQuY29tbWVudF9ieS5mdWxsX25hbWUgfX1cIiBbbmFtZV09XCJjb21tZW50LmNvbW1lbnRfYnkuZnVsbF9uYW1lXCI+PC9hcHAtZGVmYXVsdC1pbWFnZS1wbGFjZWhvbGRlcj4gLS0+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbW1lbnQ/LmNvbW1lbnRfYnkubG9nb1wiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXREeW5hbWljQ2xhc3MoY29tbWVudC5jb21tZW50X2J5LmZ1bGxfbmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwaWMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciByb3VuZGVkLWNpcmNsZVwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMlwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZm9udFNpemUucHhdPVwicm93SGVpZ2h0IC8gM1wiXHJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7IGNvbW1lbnQuY29tbWVudF9ieS5mdWxsX25hbWUgfX1cIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IGdldEluaXRpYWxzKGNvbW1lbnQuY29tbWVudF9ieS5mdWxsX25hbWUpIH19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudC1hdXRob3IgZnMtMTRweFwiPlxyXG4gICAgICAgICAgICAgICAge3sgY29tbWVudD8uY29tbWVudF9ieS5mdWxsX25hbWUgfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbW1lbnQtY29udGVudCBmb3JDb21tZW50SW1nXCJcclxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZ2V0U2FmZUNvbW1lbnQoY29tbWVudC5jb21tZW50KVwiXHJcbiAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LXRpbWVzdGFtcFwiPlxyXG4gICAgICAgICAgICAgICAge3sgY29tbWVudC5jb21tZW50X2RhdGUgfCBkYXRlIH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtdGltZXN0YW1wXCI+XHJcbiAgICAgICAgICAgICAgICBSZXBsaWVzOiAoe3sgY29tbWVudC5yZXBsaWVzLmxlbmd0aCB9fSlcclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
5069
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtZ3JpZC9zcmMvbGliL2RhdGEtZ3JpZC9kYXRhLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1ncmlkL3NyYy9saWIvZGF0YS1ncmlkL2RhdGEtZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBSU4sU0FBUyxFQUVULFlBQVksRUFFWixZQUFZLEVBTVosdUJBQXVCLEVBRXZCLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFVTCxlQUFlLEdBQ2hCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1AsS0FBSyxFQUNMLE9BQU8sR0FDUixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVoRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzVCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQVNyRSxNQUFNLENBQU4sSUFBWSxnQkFRWDtBQVJELFdBQVksZ0JBQWdCO0lBQzFCLGlDQUFhLENBQUE7SUFDYiw4Q0FBMEIsQ0FBQTtJQUMxQiw4Q0FBMEIsQ0FBQTtJQUMxQixpREFBNkIsQ0FBQTtJQUM3QiwwQ0FBc0IsQ0FBQTtJQUN0QiwwQ0FBc0IsQ0FBQTtJQUN0QixpREFBNkIsQ0FBQTtBQUMvQixDQUFDLEVBUlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQVEzQjtBQUdELE1BQU0sQ0FBQyxN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Z0JBRy9CLGlCQUFpQjtzQkFEaEIsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBSTlCLGlCQUFpQjtzQkFEaEIsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBSzlCLG1CQUFtQjtzQkFEbEIsU0FBUzt1QkFBQyxxQkFBcUI7Z0JBc1loQyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBNnBCMUMsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLHlCQUF5QixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXFCbkQsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkF1Q2QsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQTZPQSxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ0UsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUV2QixvQkFBb0I7c0JBRG5CLFNBQVM7dUJBQUMsc0JBQXNCO2dCQUdqQyxvQkFBb0I7c0JBRG5CLFNBQVM7dUJBQUMsc0JBQXNCO2dCQTAwQkksc0JBQXNCO3NCQUExRCxTQUFTO3VCQUFDLHdCQUF3QjtnQkFDRSxzQkFBc0I7c0JBQTFELFNBQVM7dUJBQUMsd0JBQXdCO2dCQXNlTixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkF5ekMzQixTQUFTO3NCQURSLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBMkh0QyxPQUFPO3NCQURaLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBdUoxQyxXQUFXO3NCQURWLFNBQVM7dUJBQUMsYUFBYTtnQkFxYmMsdUJBQXVCO3NCQUE1RCxTQUFTO3VCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgRWxlbWVudFJlZixcclxuICBWaWV3Q2hpbGQsXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE5nWm9uZSxcclxuICBSZW5kZXJlcjIsXHJcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcclxuICBFbWJlZGRlZFZpZXdSZWYsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBpbmplY3QsXHJcbiAgSW5qZWN0b3JcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3BsaXRDb2x1bW5zU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NwbGl0LWNvbHVtbnMuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb21tb24uc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgQ2RrRHJhZyxcclxuICBDZGtEcmFnRHJvcCxcclxuICBDZGtEcmFnRW5kLFxyXG4gIENka0RyYWdFbnRlcixcclxuICBDZGtEcmFnRXhpdCxcclxuICBDZGtEcmFnTW92ZSxcclxuICBDZGtEcmFnU29ydEV2ZW50LFxyXG4gIENka0RyYWdTdGFydCxcclxuICBEcmFnRHJvcCxcclxuICBtb3ZlSXRlbUluQXJyYXksXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7XHJcbiAgdHJpZ2dlcixcclxuICBzdGF0ZSxcclxuICBzdHlsZSxcclxuICB0cmFuc2l0aW9uLFxyXG4gIGFuaW1hdGUsXHJcbiAgcXVlcnksXHJcbiAgc3RhZ2dlcixcclxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgQ2RrRHJvcExpc3QgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgU1RBVFVTRVNfQkFER0VfTUFQIH0gZnJvbSAnLi9zdGF0dXNlcyc7XHJcbmltcG9ydCB7IENvcHlTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvcHktc2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEV4cG9ydFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9leHBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IENlbGxIb3N0RGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9jZWxsSG9zdC5kaXJlY3RpdmUnO1xyXG5cclxuaW50ZXJmYWNlIENlbGxQb3NpdGlvbiB7XHJcbiAgcm93SW5kZXg6IG51bWJlcjtcclxuICBjb2xJbmRleDogbnVtYmVyO1xyXG4gIHN1YkNvbEluZGV4OiBudW1iZXI7XHJcbiAgZmllbGQ6IHN0cmluZztcclxuICBrZXk6IHN0cmluZztcclxufVxyXG5leHBvcnQgZW51bSBSb3dBbmltYXRpb25UeXBlIHtcclxuICBOb25lID0gJ25vbmUnLFxyXG4gIFNwcmVhZCA9ICdzcHJlYWRBbmltYXRpb24nLFxyXG4gIEJvdW5jZSA9ICdib3VuY2VBbmltYXRpb24nLFxyXG4gIFNsaWRlVXAgPSAnc2xpZGVVcEZyb21Cb3R0b20nLFxyXG4gIEZsaXAgPSAnZmxpcEFuaW1hdGlvbicsXHJcbiAgU2tldyA9ICdza2V3QW5pbWF0aW9uJyxcclxuICBTbGlkZVJpZ2h0ID0gJ3NsaWRlRnJvbVJpZ2h0JyxcclxufVxyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBzb3J0aW5nQW5pbWF0aW9uID0gdHJpZ2dlcignbGlzdFNvcnQnLCBbXHJcbiAgdHJhbnNpdGlvbignKiA9PiAqJywgW1xyXG4gICAgLy8gUXVlcnkgYWxsIGVsZW1lbnRzIGVudGVyaW5nIG9yIGxlYXZpbmdcclxuICAgIHF1ZXJ5KCc6ZW50ZXIsIDpsZWF2ZScsIHN0eWxlKHsgcG9zaXRpb246ICdhYnNvbHV0ZScsIHdpZHRoOiAnMTAwJScgfSksIHsgb3B0aW9uYWw6IHRydWUgfSksXHJcblxyXG4gICAgLy8gQW5pbWF0ZSBsZWF2aW5nIGVsZW1lbnRzIHVwd2FyZCB3aXRoIGZhZGUgb3V0XHJcbiAgICBxdWVyeSgnOmxlYXZlJywgW1xyXG4gICAgICBhbmltYXRlKCczMDBtcyBlYXNlLWluJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0yMHB4KScsIG9wYWNpdHk6IDAgfSkpXHJcbiAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxyXG5cclxuICAgIC8vIFN0YWdnZXIgdGhlIGVudGVyaW5nIGVsZW1lbnRzIGZvciBhIHNtb290aGVyIGVmZmVjdFxyXG4gICAgcXVlcnkoJzplbnRlcicsIFtcclxuICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDIwcHgpJywgb3BhY2l0eTogMCB9KSxcclxuICAgICAgc3RhZ2dlcig1MCwgW1xyXG4gICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2Utb3V0Jywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJywgb3BhY2l0eTogMSB9KSlcclxuICAgICAgXSlcclxuICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSlcclxuICBdKVxyXG5dKTtcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkYXRhLWdyaWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLWdyaWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RhdGEtZ3JpZC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2FjY29yZGlvblRvZ2dsZScsIFtcclxuICAgICAgc3RhdGUoXHJcbiAgICAgICAgJ2NvbGxhcHNlZCcsXHJcbiAgICAgICAgc3R5bGUoeyBoZWlnaHQ6ICcwcHgnLCBvdmVyZmxvdzogJ3Vuc2V0JyB9KVxyXG4gICAgICApLFxyXG4gICAgICBzdGF0ZSgnZXhwYW5kZWQnLCBzdHlsZSh7IGhlaWdodDogJyonLCBvdmVyZmxvdzogJ3Vuc2V0JyB9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ2NvbGxhcHNlZCA8PT4gZXhwYW5kZWQnLCBhbmltYXRlKCczMDBtcyBlYXNlLWluJykpLFxyXG4gICAgXSksXHJcbiAgICB0cmlnZ2VyKCdzbGlkZVRvZ2dsZScsIFtcclxuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xyXG4gICAgICAgIHN0eWxlKHsgaGVpZ2h0OiAnMHB4Jywgb3BhY2l0eTogMCwgb3ZlcmZsb3c6ICdoaWRkZW4nIH0pLFxyXG4gICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2Utb3V0Jywgc3R5bGUoeyBoZWlnaHQ6ICcqJywgb3BhY2l0eTogMSB9KSlcclxuICAgICAgXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcclxuICAgICAgICBzdHlsZSh7IGhlaWdodDogJyonLCBvcGFjaXR5OiAxLCBvdmVyZmxvdzogJ2hpZGRlbicgfSksXHJcbiAgICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbicsIHN0eWxlKHsgaGVpZ2h0OiAnMHB4Jywgb3BhY2l0eTogMCB9KSlcclxuICAgICAgXSlcclxuICAgIF0pLFxyXG4gICAgdHJpZ2dlcignc2xpZGVVcCcsIFtcclxuICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMTAwJSknLCBvcGFjaXR5OiAwIH0pKSxcclxuICAgICAgc3RhdGUoJyonLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknLCBvcGFjaXR5OiAxIH0pKSxcclxuICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgYW5pbWF0ZSgnMzAwbXMgZWFzZS1vdXQnKSksXHJcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gdm9pZCcsIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4nKSksXHJcbiAgICBdKSxcclxuICB0cmlnZ2VyKCdyb3dEeW5hbWljJywgW1xyXG5cclxuICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBTUFJFQUQgLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cclxuICAgIHRyYW5zaXRpb24oJyogPT4gc3ByZWFkQW5pbWF0aW9uJywgW1xyXG4gICAgICBxdWVyeSgnOmVudGVyJywgW1xyXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2NhbGVYKDAuNyknIH0pLFxyXG4gICAgICAgIHN0YWdnZXIoNjAsIFtcclxuICAgICAgICAgIGFuaW1hdGUoJzM1MG1zIGVhc2Utb3V0JyxcclxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICdzY2FsZVgoMSknIH0pXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgXSlcclxuICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcclxuXHJcbiAgICAgIHF1ZXJ5KCc6bGVhdmUnLCBbXHJcbiAgICAgICAgc3RhZ2dlcig0MCwgW1xyXG4gICAgICAgICAgYW5pbWF0ZSgnMjIwbXMgZWFzZS1pbicsXHJcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2NhbGVYKDAuNyknIH0pXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgXSlcclxuICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KVxyXG4gICAgXSksXHJcblxyXG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0gQk9VTkNFIC0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcbiAgICB0cmFuc2l0aW9uKCcqID0+IGJvdW5jZUFuaW1hdGlvbicsIFtcclxuICAgICAgcXVlcnkoJzplbnRlcicsIFtcclxuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTEwcHgpJyB9KSxcclxuICAgICAgICBzdGFnZ2VyKDQ1LCBbXHJcbiAgICAgICAgICBhbmltYXRlKFxyXG4gICAgICAgICAgICAnNTAwbXMgY3ViaWMtYmV6aWVyKC42OCwtMC41NSwuMjcsMS41NSknLFxyXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknIH0pXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgXSlcclxuICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcclxuXHJcbiAgICAgIHF1ZXJ5KCc6bGVhdmUnLCBbXHJcbiAgICAgICAgc3RhZ2dlcig0MCwgW1xyXG4gICAgICAgICAgYW5pbWF0ZSgnMjAwbXMgZWFzZS1pbicsXHJcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgxMHB4KScgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICBdKVxyXG4gICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pXHJcbiAgICBdKSxcclxuXHJcbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBORVcgMTogRkxJUCAtLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gICAgdHJhbnNpdGlvbignKiA9PiBmbGlwQW5pbWF0aW9uJywgW1xyXG4gICAgICBxdWVyeSgnOmVudGVyJywgW1xyXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAncm90YXRlWCgtODBkZWcpJyB9KSxcclxuICAgICAgICBzdGFnZ2VyKDcwLCBbXHJcbiAgICAgICAgICBhbmltYXRlKCc0NTBtcyBlYXNlLW91dCcsXHJcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAncm90YXRlWCgwKScgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICBdKVxyXG4gICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxyXG5cclxuICAgICAgcXVlcnkoJzpsZWF2ZScsIFtcclxuICAgICAgICBzdGFnZ2VyKDUwLCBbXHJcbiAgICAgICAgICBhbmltYXRlKCcyNTBtcyBlYXNlLWluJyxcclxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICdyb3RhdGVYKDgwZGVnKScgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICBdKVxyXG4gICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pXHJcbiAgICBdKSxcclxuXHJcbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBORVcgMjogU0tFVyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gICAgdHJhbnNpdGlvbignKiA9PiBza2V3QW5pbWF0aW9uJywgW1xyXG4gICAgICBxdWVyeSgnOmVudGVyJywgW1xyXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2tld1koNmRlZykgdHJhbnNsYXRlWSg4cHgpJyB9KSxcclxuICAgICAgICBzdGFnZ2VyKDYwLCBbXHJcbiAgICAgICAgICBhbmltYXRlKCczMjBtcyBlYXNlLW91dCcsXHJcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAnc2tld1koMGRlZykgdHJhbnNsYXRlWSgwKScgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICBdKVxyXG4gICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxyXG5cclxuICAgICAgcXVlcnkoJzpsZWF2ZScsIFtcclxuICAgICAgICBzdGFnZ2VyKDQwLCBbXHJcbiAgICAgICAgICBhbmltYXRlKCcyMjBtcyBlYXNlLWluJyxcclxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICdza2V3WSgtNmRlZykgdHJhbnNsYXRlWSgtOHB4KScgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICBdKVxyXG4gICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pXHJcbiAgICBdKSxcclxuICAgIHRyYW5zaXRpb24oJyogPT4gc2xpZGVVcEZyb21Cb3R0b20nLCBbXHJcbiAgICAgICAgcXVlcnkoJzplbnRlcicsIFtcclxuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgxMDB2aCknIH0pLFxyXG4gICAgICAgICAgc3RhZ2dlcig2MCwgW1xyXG4gICAgICAgICAgICBhbmltYXRlKCc1MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKScsXHJcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSksXHJcblxyXG4gICAgICAgIHF1ZXJ5KCc6bGVhdmUnLCBbXHJcbiAgICAgICAgICBzdGFnZ2VyKDQwLCBbXHJcbiAgICAgICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4nLFxyXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtNTBweCknIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KVxyXG4gICAgICBdKSxcclxuXHJcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gc2xpZGVGcm9tUmlnaHQnLCBbXHJcbiAgICAgICAgcXVlcnkoJzplbnRlcicsIFtcclxuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMDB2dyknIH0pLFxyXG4gICAgICAgICAgc3RhZ2dlcig2MCwgW1xyXG4gICAgICAgICAgICBhbmltYXRlKCc1MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKScsXHJcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyB9KSBcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgXSlcclxuICAgICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxyXG5cclxuICAgICAgICBxdWVyeSgnOmxlYXZlJywgW1xyXG4gICAgICAgICAgc3RhZ2dlcig0MCwgW1xyXG4gICAgICAgICAgICBhbmltYXRlKCczMDBtcyBlYXNlLWluJyxcclxuICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoNTBweCknIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KVxyXG4gICAgICBdKSxcclxuXHJcblxyXG5cclxuICBdKVxyXG5cclxuXHJcbiAgXSxcclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRhR3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkIHtcclxuICAvLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG4gIC8vICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXHJcbiAgLy8gKioqKioqKioqKiAgSW5wdXQgR29lcyBIZXJlICoqKioqKioqKioqIC8vXHJcbiAgLy8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cclxuICAvLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG5cclxuXHJcbkBJbnB1dCgpIHJvd0FuaW1hdGlvbjogUm93QW5pbWF0aW9uVHlwZSA9IFJvd0FuaW1hdGlvblR5cGUuTm9uZTtcclxuXHJcbiAgLy8gUGFnaW5hdGlvbiBDb25maWcgU3RvcmUgSGVyZVxyXG4gIEBJbnB1dCgpIHBhZ2luYXRpb25Db25maWc6IGFueSA9IHt9O1xyXG5cclxuICAvLyBUaGUgZGF0YXNldCBzdG9yZSBoZXJlO1xyXG4gIEBJbnB1dCgpIGRhdGFTZXQ6IGFueVtdID0gW107XHJcblxyXG4gIC8vIFRoZSBjb2x1bW5zIFN0b3JlIEhlcmVcclxuICBASW5wdXQoKSBjb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG5cclxuICAvLyBSb3cgSGVpZ2h0O1xyXG4gIEBJbnB1dCgpIHJvd0hlaWdodDogbnVtYmVyID0gNDQ7XHJcblxyXG4gIC8vIEhlYWRlciBSb3cgSGVpZ2h0O1xyXG4gIEBJbnB1dCgpIGhlYWRlclJvd0hlaWdodDogbnVtYmVyID0gNTA7XHJcblxyXG4gIC8vIFNob3cgVmVydGljYWwgQm9yZGVycztcclxuICBASW5wdXQoKSBzaG93VmVydGljYWxCb3JkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gRXZlbiBSb3dzIEJhY2tncm91bmQgQ29sb3I7XHJcbiAgQElucHV0KCkgZXZlblJvd3NCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xyXG5cclxuICAvLyBFdmVuIFJvd3MgQmFja2dyb3VuZCBDb2xvcjtcclxuICBASW5wdXQoKSBvZGRSb3dzQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnI2YyZjJmMic7XHJcblxyXG4gIC8vIEhlYWRlciBSb3dzIEJhY2tncm91bmQgQ29sb3I7XHJcbiAgQElucHV0KCkgaGVhZGVyQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgPSAnI2Y2ZjhmZic7XHJcblxyXG4gIC8vIEhlYWRlciBSb3dzIEJhY2tncm91bmQgQ29sb3I7XHJcbiAgQElucHV0KCkgY2hlY2tib3hlc0JhY2tncm91bmRDb2xvcjogc3RyaW5nID0gJyNmNmY4ZmYnO1xyXG5cclxuICAvLyBTaG93IENvbHVtbnMgR3JvdXBpbmc7XHJcbiAgQElucHV0KCkgc2hvd0NvbHVtbnNHcm91cGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyBSb3cgSG92ZXJlZCBCYWNrZ3JvdW5kIGNvbG9yO1xyXG4gIEBJbnB1dCgpIHJvd0hvdmVyQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICdyZ2JhKDAsIDEyMywgMjU1LCAwLjEpJztcclxuXHJcbiAgLy8gTGVmdCBQaW5uZWRCYWNrZ3JvdW5kIGNvbG9yO1xyXG4gIEBJbnB1dCgpIGxlZnRQaW5uZWRCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGZmJztcclxuXHJcbiAgLy8gQm9keSBCYWNrZ3JvdW5kIGNvbG9yO1xyXG4gIEBJbnB1dCgpIGJvZHlCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGZmJztcclxuXHJcbiAgLy8gUmlnaHQgUGlubmVkIEJhY2tncm91bmQgY29sb3I7XHJcbiAgQElucHV0KCkgcmlnaHRQaW5uZWRCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGZmJztcclxuXHJcbiAgLy8gU2lkZSBNZW51IEJhY2tncm91bmQgY29sb3I7XHJcbiAgQElucHV0KCkgc2lkZW1lbnVCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGZmJztcclxuXHJcbiAgLy8gQm9keSB0ZXh0IGNvbG9yO1xyXG4gIEBJbnB1dCgpIGJvZHlUZXh0Q29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjMGMxMTJiJztcclxuXHJcbiAgLy8gSGVhZGVyIHRleHQgY29sb3I7XHJcbiAgQElucHV0KCkgaGVhZGVyVGV4dENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnIzJhMWY3Myc7XHJcblxyXG4gIC8vIEhlYWRlciB0ZXh0IGNvbG9yO1xyXG4gIEBJbnB1dCgpIGNoZWNrYm94ZXNDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyMyYTFmNzMnO1xyXG5cclxuICAvLyBIZWFkZXIgdGV4dCBzaXplO1xyXG4gIEBJbnB1dCgpIGhlYWRlclRleHRGb250c1NpemU6IG51bWJlciB8IHVuZGVmaW5lZCA9IDE0O1xyXG5cclxuICAvLyBCb2R5IHRleHQgY29sb3I7XHJcbiAgQElucHV0KCkgYm9keVRleHRGb250c1NpemU6IG51bWJlciB8IHVuZGVmaW5lZCA9IDE0O1xyXG5cclxuICAvLyBIZWFkZXIgZm9udCB3ZWlnaHQ7XHJcbiAgQElucHV0KCkgaGVhZGVyRm9udFdlaWdodDogbnVtYmVyIHwgdW5kZWZpbmVkID0gNTAwO1xyXG5cclxuICAvLyBCb2R5IEZvbnQgV2VpZ2h0O1xyXG4gIEBJbnB1dCgpIGJvZHlGb250V2VpZ2h0OiBudW1iZXIgfCB1bmRlZmluZWQgPSA0MDA7XHJcblxyXG4gIC8vIENoZWNrZWQgUm93IEJhY2tncm91bmQgQ29sb3I7XHJcbiAgQElucHV0KCkgY2hlY2tlZFJvd0JhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJ2FsaWNlYmx1ZSc7XHJcblxyXG4gIC8vIGRyb3Bkb3ducyBCYWNrZ3JvdW5kIENvbG9yO1xyXG4gIEBJbnB1dCgpIGRyb3Bkb3duc0JhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyNmNmY4ZjgnO1xyXG5cclxuXHJcbiAgQElucHV0KCkgZm9vdGVyUm93QmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcclxuXHJcbiAgLy8gRm9vdGVyIHJvdyBIZWlnaHQ7XHJcbiAgQElucHV0KCkgZm9vdGVyUm93SGVpZ2h0OiBudW1iZXIgPSA0NjtcclxuXHJcbiAgLy8gRm9vdGVyIHJvdyBIZWlnaHQ7XHJcbiAgQElucHV0KCkgdG9wR3JvdXBlZEJhZGdlc0JhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyc7XHJcblxyXG4gIC8vIFNob3cgUm93IHdpc2UgZ3JvdXBpbmc7XHJcbiAgQElucHV0KCkgc2hvd1Jvd3NHcm91cGluZzogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xyXG5cclxuICAvLyBTaG93IFJvdyB3aXNlIGdyb3VwaW5nO1xyXG4gIEBJbnB1dCgpIHNob3dGaWx0ZXJSb3c6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcclxuXHJcbiAgLy8gU2hvdyBSb3cgd2lzZSBncm91cGluZztcclxuICBASW5wdXQoKSBmb250RmFpbWx5OiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnc2Fucy1zZXJpZic7XHJcblxyXG4gIC8vIFNob3cgU2lkZUNvbHVtbjtcclxuICBASW5wdXQoKSBzaG93U2lkZU1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gRm9vdGVyIFBhZGRpbmdcclxuICBASW5wdXQoKSBmb290ZXJQYWRkaW5nOiBudW1iZXIgPSAzXHJcblxyXG5cclxuICAvLyBGb290ZXIgUGFkZGluZ1xyXG4gIEBJbnB1dCgpIHRvcEZpbHRlclJvd0hlaWdodDogbnVtYmVyID0gNTA7XHJcblxyXG4gIC8vIFNob3cgUm93cyBzaGFkaW5nXHJcbiAgQElucHV0KCkgcm93U2hhZGluZ0VuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gU2hvdyBSb3dzIHNoYWRpbmdcclxuICBASW5wdXQoKSBzaG93U2VyaWFsTnVtYmVyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIFNpbmdsZSBTcGEgVXJsIEF0dGFjaCB0byBpY29uc1xyXG4gIEBJbnB1dCgpIHNpbmdsZVNwYUFzc2V0c1BhdGg6IHN0cmluZyA9ICdhc3NldHMvJztcclxuXHJcblxyXG4gIC8vIEFwcGxpZWQgRmlsdGVyc1xyXG4gIEBJbnB1dCgpIGZpbHRlcnNDb25maWc6IGFueVtdID0gW107XHJcblxyXG5cclxuICAvLyBBcHBsaWVkIEZpbHRlcnNcclxuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vVmVydGljYWwgU2Nyb2xsYmFyIHN0eWxlXHJcbiAgQElucHV0KCkgdmVydGljYWxTY3JvbGxiYXJXaWR0aDogJ2F1dG8nIHwgJ3RoaW4nID0gJ2F1dG8nO1xyXG5cclxuICAvL0hvcml6aW50YWwgU2Nyb2xsYmFyIHN0eWxlXHJcbiAgQElucHV0KCkgaG9yaXppbnRhbFNjcm9sbGJhcldpZHRoOiAnYXV0bycgfCAndGhpbicgPSAnYXV0byc7XHJcblxyXG4gIC8vIFNob3cgQ2VsbCBkZXRhaWxzIGJveFxyXG4gIEBJbnB1dCgpIHNob3dDZWxsRGV0YWlsc0JveDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvL0RhdGUgZm9ybWF0XHJcblxyXG4gIEBJbnB1dCgpIGRhdGVGb3JtYXQ6IHN0cmluZyA9ICdkZC9NTS95eXl5J1xyXG5cclxuICAvL0RhdGUgZm9ybWF0XHJcbiAgQElucHV0KCkgdGFibGVTZWFyY2g6IHN0cmluZyA9ICcnO1xyXG5cclxuXHJcbiAgLy9EYXRlIGZvcm1hdFxyXG4gIEBJbnB1dCgpIGFjdGlvbnM6IGFueVtdID0gWydlZGl0JywgJ2RlbGV0ZSddO1xyXG5cclxuXHJcbiAgLy8gVGFibGUgQ29uZmlnIGZvciBwYWdpbmF0aW9ucyBpcyBoZXJlXHJcbiAgQElucHV0KCkgY29uZmlnOiBhbnk7XHJcblxyXG5cclxuICAvLyBTZWxlY3Rpb24gdGFzayBiYXJcclxuICBASW5wdXQoKSBzaG93VGFza2JhciA9IGZhbHNlXHJcblxyXG4gIC8vIFRhYmxlIE5hbWUgZm9yIHN0YXRlIG1hbmFnZVxyXG4gIEBJbnB1dCgpIHRhYmxlTmFtZSA9IHRydWVcclxuXHJcblxyXG4gIC8vIExpc3RpbmcgdHlwZVxyXG4gIEBJbnB1dCgpIGxpc3RpbmdUeXBlOiBzdHJpbmcgfCBib29sZWFuID0gJyc7XHJcblxyXG4gIC8vIExpc3RpbmcgdHlwZVxyXG5cclxuICBASW5wdXQoKSBjaGVja2JveFN0YXRlOiB7IHJlc2V0OiBib29sZWFuIH0gPSB7XHJcbiAgICByZXNldDogdHJ1ZVxyXG4gIH1cclxuXHJcbiAgLy8gVGFza2JhciBhY3Rpb25zXHJcbiAgQElucHV0KCkgdGFza2JhckFjdGlvbnM6IGFueVtdID0gW11cclxuXHJcblxyXG4gIC8vIFNvcnRpbmcgQ29uZmlnIHRvIHNob3cgc29ydCBpY29uc1xyXG4gIEBJbnB1dCgpIHNvcnRpbmdDb25maWc6IHsgZmllbGQ6IHN0cmluZywgb3JkZXJfYnk6IHN0cmluZyB9IHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICBASW5wdXQoKSB0YWJsZUZpbHRlclZpZXdJZDogYW55ID0gJyc7XHJcblxyXG5cclxuICBASW5wdXQoKSBzZWxlY3RlZFRhYmxlTGF5b3V0OiBhbnkgPSAnbWVkaXVtJ1xyXG5cclxuICBASW5wdXQoKSBjbG9zZURyb3Bkb3duOiB7IHByZXNldDogeyBjbG9zZWQ6IGJvb2xlYW4sIGxvYWRpbmc6IGJvb2xlYW4gfSB9ID0geyBwcmVzZXQ6IHsgY2xvc2VkOiBmYWxzZSwgbG9hZGluZzogZmFsc2UgfSB9O1xyXG5cclxuICAvLyBUYWJsZSBWaWV3XHJcblxyXG4gIC8vIEdsb2JhbFNlYXJjaFxyXG4gIEBJbnB1dCgpIGdsb2JhbFNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvLyBOZXN0ZWQgVGFibGUgUm93IEZvbnRzaXplXHJcbiAgQElucHV0KCkgbmVzdGVkVGFibGVyb3dGb250c2l6ZSA9IDE0O1xyXG5cclxuICAvLyBOZXN0ZWQgdGFibGUgcm93IEhlYWRlciByb3cgSGVpZ2h0XHJcbiAgQElucHV0KCkgbmVzdGVkVGFibGVIZWFkZXJSb3dIZWlnaHQgPSA0MDtcclxuXHJcbiAgLy8gTmVzdGVkIFRhYmxlIHJvdyBoZWlnaHRcclxuICBASW5wdXQoKSBuZXN0ZWRUYWJsZXJvd0hlaWdodCA9IDQ1O1xyXG5cclxuXHJcbiAgQElucHV0KCkgZ3JpZFR5cGU6IHN0cmluZyA9ICcnO1xyXG5cclxuICBASW5wdXQoKSBjdXJyZW5jeVN5bWJvbDogc3RyaW5nID0gJyQnO1xyXG5cclxuXHJcbiAgQElucHV0KCkgbGVmdFBpbm5lZEJveHNoYWRvdzogc3RyaW5nID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpIHJpZ2h0UGlubmVkQm94c2hhZG93OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLy8gR2xvYmFsU2VhcmNoXHJcbiAgQElucHV0KCkgc2VsZWN0ZWRSb3dzQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgPSAnIzhhYzVmZic7XHJcblxyXG4gIC8vIEdsb2JhbFNlYXJjaFxyXG4gIEBJbnB1dCgpIG5lc3RlZFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgPSAnI2Y2ZjhmZic7XHJcblxyXG5cclxuICBASW5wdXQoKSBuZXN0ZWRUYWJsZVJvd0JhY2tncm91bmRDb2xvcjogc3RyaW5nID0gJyNlYWVhZWEnO1xyXG5cclxuICBASW5wdXQoKSB0YWJsZVZpZXc6IGFueVtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIGJ1dHRvbnM6IHsgbmFtZTogc3RyaW5nOyBpc19zaG93SWNvbjogYm9vbGVhbjsgaWNvbjogc3RyaW5nLCBoYXNfcGVybWlzc2lvbjogYm9vbGVhbiB9W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkga2VlcE11bHRpcGxlRXhwYW5kZWREZXRhaWxzID0gZmFsc2U7XHJcblxyXG5cclxuICBASW5wdXQoKSBzaG93VG90YWxBbW91bnRSb3cgPSBmYWxzZTtcclxuXHJcblxyXG4gIEBJbnB1dCgpIGVuYWJsZUdsb2JhbFNlYXJjaCA9IHRydWU7XHJcblxyXG5cclxuICBASW5wdXQoKSB0YWJsZVR5cGUgPSAnJztcclxuXHJcblxyXG4gIEBJbnB1dCgpIGVuYWJsZUV4cG9ydCA9IGZhbHNlO1xyXG5cclxuXHJcbiAgQElucHV0KCkgc2hvd0Z1bGxTY3JlZW5CdXR0b24gPSBmYWxzZTtcclxuXHJcblxyXG4gIEBJbnB1dCgpIGVuYWJsZUN1dCA9IGZhbHNlO1xyXG5cclxuXHJcbiAgQElucHV0KCkgdGFiczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgc2hvd0NoZWNrYm94ZXMgPSB0cnVlO1xyXG5cclxuXHJcblxyXG5cclxuICBASW5wdXQoKSByZXNldEFsbEZpbHRlcnMgPSB7IHJlc2V0QWxsOiBmYWxzZSB9O1xyXG5cclxuXHJcbiAgQElucHV0KCkgY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZyA9IHtcclxuICAgIHNob3dQaW5sZWZ0OiB0cnVlLFxyXG4gICAgc2hvd1BpbnJpZ2h0OiB0cnVlLFxyXG4gICAgc2hvd0FzY2VuZGluZzogdHJ1ZSxcclxuICAgIHNob3dEZXNjZW5kaW5nOiB0cnVlLFxyXG4gICAgc2hvd0ZpbHRlcjogdHJ1ZSxcclxuICAgIHNob3dSb3dzR3JvdXBpbmc6IHRoaXMuc2hvd1Jvd3NHcm91cGluZyxcclxuICAgIHNob3dBdXRvc2l6ZUFsbENvbHVtbnM6IHRydWUsXHJcbiAgICBzaG93QXV0b3NpemVUaGlzQ29sdW1uOiBmYWxzZSxcclxuICAgIHNob3dDaG9zZUNvbHVtbnM6IGZhbHNlLFxyXG4gICAgc2hvd1Jlc2V0Q29sdW1uczogZmFsc2UsXHJcbiAgfTtcclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgT3V0IFB1dCBFdmVudHNcclxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cclxuXHJcblxyXG4gIC8vQ2hhbmdlIFRhYmxlIExheW91dFxyXG4gIEBWaWV3Q2hpbGRyZW4oQ2VsbEhvc3REaXJlY3RpdmUpIGNlbGxIb3N0cyE6IFF1ZXJ5TGlzdDxDZWxsSG9zdERpcmVjdGl2ZT47XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlTGF5b3V0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgY3VzdG9tQ2VsbEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIC8vIEZpbHRlciBBcHBseSBldmVudDtcclxuICBAT3V0cHV0KCkgcHVibGljIGZpbHRlck9wdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQE91dHB1dCgpIGdlbmVyaWNFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKSB0YWJsZVByZXNldENvbmZpZzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKSBzb3J0aW5nT3JkZXJPcHRpb25zOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KCkgY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgaXNGdWxsU2NyZWVuID0gZmFsc2U7XHJcbiAgYWN0aXZlVGFiOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBncm91cGVkQ29sdW1uczogYW55W10gPSBbXTtcclxuICBhY3RpdmVDb2w6IGFueSA9IG51bGw7XHJcbiAgYWN0aXZlRmlsdGVyQ2VsbDogYW55ID0gbnVsbDtcclxuICBzaG93QWN0aW9uc0Ryb3BEb3duID0gZmFsc2U7XHJcbiAgc2lkZU1lbnVWaXNpYmxlID0gZmFsc2U7XHJcbiAgcGl2b3RNb2RlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY29sdW1uU2VhcmNoOiBzdHJpbmcgPSAnJztcclxuICBleHBhbmRBbGxBY2NvcmRpYW5zID0gdHJ1ZTtcclxuICBjdXJyZW50T3BlbmVkU2lkZU1lbnVlOiAnY29scycgfCAnZmlsdHJzJyB8IG51bGwgPSBudWxsO1xyXG4gIG9yaWdpbmFsQ29sdW1uczogYW55W10gPSBbXTtcclxuICBvcmlnaW5hbERhdGFTZXQ6IGFueVtdID0gW107XHJcbiAgYWN0aXZlVG9wQnV0dG9uOiBzdHJpbmcgfCBudWxsID0gJyc7XHJcbiAgZmlsdGVyQ29sdW1uc0xpc3Q6IGFueVtdID0gW107XHJcbiAgZ3JvdXBCb3hQYWRkaW5nID0gMjAwO1xyXG4gIHByZXNldE5hbWU6IHN0cmluZyA9ICcnO1xyXG4gIHByZXNldEZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlYXJjaFRleHRQcmVzZXRUYWJsZSA9ICcnO1xyXG4gIGFkZEZpbHRlckNvbHVtbklucHV0ID0gJyc7XHJcbiAgc2VhcmNoSW5Ecm9wZG93biA9ICcnO1xyXG4gIGFkZEZpbHRlckRyb3Bkb3duU2VhcmNoID0gJydcclxuICB0b3BTaG93SGlkZUNvbHVtbnMgPSAnJztcclxuICBjaG9zZUNvbHVtbnNTZWFyY2ggPSAnJ1xyXG4gIHNpZGVOZXN0ZWRGaWx0ZXJTZWFyY2ggPSAnJ1xyXG4gIGVkaXRpbkRyb3Bkb3duU2VhcmNoID0gJyc7XHJcbiAgaXNUaHJlZURvdHNGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgY29uZmlybURlbGV0ZSA9IGZhbHNlO1xyXG4gIGZvbnRGYW1pbGllczogc3RyaW5nW10gPSBbXHJcbiAgICAvLyBDb21tb24gRXhjZWwgZm9udHNcclxuICAgICdBcmlhbCcsXHJcbiAgICAnQXJpYWwgQmxhY2snLFxyXG4gICAgJ0JhaG5zY2hyaWZ0JyxcclxuICAgICdDYWxpYnJpJyxcclxuICAgICdDYW1icmlhJyxcclxuICAgICdDYW1icmlhIE1hdGgnLFxyXG4gICAgJ21hdGgnLFxyXG4gICAgJ0NhbmRhcmEnLFxyXG4gICAgJ0NvbWljIFNhbnMgTVMnLFxyXG4gICAgJ0NvbnNvbGFzJyxcclxuICAgICdDb25zdGFudGlhJyxcclxuICAgICdDb3JiZWwnLFxyXG4gICAgJ0NvdXJpZXIgTmV3JyxcclxuICAgICdFYnJpbWEnLFxyXG4gICAgJ0ZyYW5rbGluIEdvdGhpYyBNZWRpdW0nLFxyXG4gICAgJ0dhYnJpb2xhJyxcclxuICAgICdHYWR1Z2knLFxyXG4gICAgJ0dlb3JnaWEnLFxyXG4gICAgJ0ltcGFjdCcsXHJcbiAgICAnSW5rIEZyZWUnLFxyXG4gICAgJ0phdmFuZXNlIFRleHQnLFxyXG4gICAgJ0xlZWxhd2FkZWUgVUknLFxyXG4gICAgJ0x1Y2lkYSBDb25zb2xlJyxcclxuICAgICdMdWNpZGEgU2FucyBVbmljb2RlJyxcclxuICAgICdNYWxndW4gR290aGljJyxcclxuICAgICdNaWNyb3NvZnQgSGltYWxheWEnLFxyXG4gICAgJ01pY3Jvc29mdCBKaGVuZ0hlaScsXHJcbiAgICAnTWljcm9zb2Z0IE5ldyBUYWkgTHVlJyxcclxuICAgICdNaWNyb3NvZnQgUGhhZ3NQYScsXHJcbiAgICAnTWljcm9zb2Z0IFNhbnMgU2VyaWYnLFxyXG4gICAgJ01pY3Jvc29mdCBUYWkgTGUnLFxyXG4gICAgJ01pY3Jvc29mdCBZYUhlaScsXHJcbiAgICAnTWljcm9zb2Z0IFlpIEJhaXRpJyxcclxuICAgICdNb25nb2xpYW4gQmFpdGknLFxyXG4gICAgJ01TIEdvdGhpYycsXHJcbiAgICAnTVMgUEdvdGhpYycsXHJcbiAgICAnTVMgVUkgR290aGljJyxcclxuICAgICdNViBCb2xpJyxcclxuICAgICdOaXJtYWxhIFVJJyxcclxuICAgICdQYWxhdGlubyBMaW5vdHlwZScsXHJcbiAgICAnU2Vnb2UgUHJpbnQnLFxyXG4gICAgJ1NlZ29lIFNjcmlwdCcsXHJcbiAgICAnU2Vnb2UgVUknLFxyXG4gICAgJ1NlZ29lIFVJIEhpc3RvcmljJyxcclxuICAgICdTZWdvZSBVSSBFbW9qaScsXHJcbiAgICAnU2Vnb2UgVUkgU3ltYm9sJyxcclxuICAgICdTaW1TdW4nLFxyXG4gICAgJ1NpdGthIFNtYWxsJyxcclxuICAgICdTeWxmYWVuJyxcclxuICAgICdTeW1ib2wnLFxyXG4gICAgJ1RhaG9tYScsXHJcbiAgICAnVGltZXMgTmV3IFJvbWFuJyxcclxuICAgICdUcmVidWNoZXQgTVMnLFxyXG4gICAgJ1ZlcmRhbmEnLFxyXG4gICAgJ1dlYmRpbmdzJyxcclxuICAgICdXaW5nZGluZ3MnLFxyXG4gICAgJ1l1IEdvdGhpYycsXHJcbiAgICAnc2Fucy1zZXJpZicsXHJcbiAgICAnc2VyaWYnLFxyXG4gICAgJ21vbm9zcGFjZScsXHJcbiAgICAnSW50ZXInXHJcbiAgXTtcclxuXHJcbiAgZm9udFNpemVzOiBzdHJpbmdbXSA9IFtcclxuICAgICc4JywgJzknLCAnMTAnLCAnMTEnLCAnMTInLCAnMTQnLCAnMTYnLCAnMTgnLCAnMjAnLCAnMjQnLCAnMjgnLCAnMzInXHJcbiAgXTtcclxuXHJcbiAgaGFzU2Nyb2xsID0gZmFsc2U7XHJcblxyXG5cclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjb2x1bW5TZXJ2aWNlOiBTcGxpdENvbHVtbnNTZXJ2aWNlLFxyXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgY29tbW9uU2V2aWNlOiBDb21tb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgY29weVNlcnZpY2U6IENvcHlTZXJ2aWNlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICBwcml2YXRlIGV4cG9ydFNlcnZpY2U6IEV4cG9ydFNlcnZpY2UsXHJcblxyXG4gICkgeyB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NlbGxUZXh0JywgeyBzdGF0aWM6IGZhbHNlIH0pIGNlbGxUZXh0ITogYW55O1xyXG4gIEBWaWV3Q2hpbGQoJ25lc3RlZEhlYWRlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBuZXN0ZWRIZWFkZXIhOiBFbGVtZW50UmVmO1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcclxuICAgICAgYXdhaXQgdGhpcy5TZXRDb2x1bW5zRGVmYXVsdFdpZHRoKCk7XHJcbiAgICAgIGF3YWl0IHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcclxuICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcbiAgICAgIHRoaXMuY29tcHV0ZVZpZXdwb3J0Um93cygpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xyXG4gICAgICB0aGlzLmhhc1Njcm9sbCA9IHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuY2VsbFRleHQpIHtcclxuICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmNlbGxUZXh0Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMucmVuZGVyQ3VzdG9tQ2VsbHMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xyXG5cclxuICBjcmVhdGVDZWxsSW5qZWN0b3Iocm93OiBhbnksIGNvbDogYW55KTogSW5qZWN0b3Ige1xyXG4gICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7XHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogJ3Jvd0RhdGEnLCB1c2VWYWx1ZTogcm93IH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiAnY29sRGF0YScsIHVzZVZhbHVlOiBjb2wgfVxyXG4gICAgICBdLFxyXG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3JcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgcmVuZGVyQ3VzdG9tQ2VsbHMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBob3N0cyA9IHRoaXMuY2VsbEhvc3RzLnRvQXJyYXkoKTtcclxuICAgIGxldCBob3N0SW5kZXggPSAwO1xyXG5cclxuICAgIGZvciAoY29uc3Qgcm93IG9mIHRoaXMudmlzaWJsZVJvd3MpIHtcclxuICAgICAgZm9yIChjb25zdCBjb2wgb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgY29uc3QgaG9zdCA9IGhvc3RzW2hvc3RJbmRleCsrXTtcclxuICAgICAgICBpZiAoIWhvc3QgfHwgIWNvbC5jZWxsUmVuZGVyZXIpIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICBjb25zdCB2aWV3Q29udGFpbmVyID0gaG9zdC52aWV3Q29udGFpbmVyUmVmO1xyXG4gICAgICAgIHZpZXdDb250YWluZXIuY2xlYXIoKTtcclxuXHJcbiAgICAgICAgY29uc3QgY29tcFJlZiA9IHZpZXdDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNvbC5jZWxsUmVuZGVyZXIpO1xyXG5cclxuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgICAgICByb3csXHJcbiAgICAgICAgICBjb2wsXHJcbiAgICAgICAgICB2YWx1ZTogdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCksXHJcbiAgICAgICAgICBhcGk6IHRoaXMsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKChjb21wUmVmLmluc3RhbmNlIGFzIGFueSkuZ3JpZEluaXQpIHtcclxuICAgICAgICAgIChjb21wUmVmLmluc3RhbmNlIGFzIGFueSkuZ3JpZEluaXQocGFyYW1zKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYWRkU3R5bGVzVG9JbWFnZXMoKTtcclxuICAgIHRoaXMuaGFzU2Nyb2xsID0gdGhpcy5oYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vICBpZiAodGhpcy50YWJzPy5sZW5ndGgpIHtcclxuICAgIC8vICAgdGhpcy5hY3RpdmVUYWIgPSB0aGlzLnRhYnNbMF07XHJcbiAgICAvLyB9XHJcbiAgICAvLyB0aGlzLmF1dG9zaXplQWxsQ29sdW1ucygpO1xyXG4gIH1cclxuXHJcblxyXG4gIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzWydjb2x1bW5zJ10pIHtcclxuICAgICAgYXdhaXQgdGhpcy5zZXRDb2x1bW5zQ29sdW1uRHJvcGRvd25WYWx1cygpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAgIGlmIChjaGFuZ2VzWyd0YWJzJ10pIHtcclxuICAgICAgICBpZiAoY2hhbmdlc1sndGFicyddKSB7XHJcbiAgICAgICAgY29uc3QgYWxsVGFicyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2FjdGl2ZVRhYnMnKSB8fCAne30nKTtcclxuICAgICAgICBjb25zdCBzYXZlZFRhYiA9IGFsbFRhYnNbdGhpcy50YWJsZVR5cGVdO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlVGFiID0gc2F2ZWRUYWIgfHwgdGhpcy50YWJzPy5bMF07XHJcblxyXG4gICAgICAgIGlmKHRoaXMudGFibGVUeXBlKXtcclxuICAgICAgICAgIHRoaXMuc2V0QWN0aXZlVGFiKHRoaXMuYWN0aXZlVGFiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICB9XHJcbiAgICBpZiAoY2hhbmdlc1snZmlsdGVyc0NvbmZpZyddKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tGaWx0ZXJDaGFuZ2VzRWZmZWN0KCk7XHJcbiAgICAgIGF3YWl0IHRoaXMuYXBwbHlGaWx0ZXJvcHRpb25MaXN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbHVtbnMnXT8uY3VycmVudFZhbHVlPy5sZW5ndGgpIHtcclxuXHJcbiAgICAgIGF3YWl0IHRoaXMuYXBwbHlGaWx0ZXJvcHRpb25MaXN0KCk7XHJcblxyXG4gICAgICB0aGlzLm9yaWdpbmFsQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5tYXAoY29sID0+ICh7XHJcbiAgICAgICAgLi4uY29sLFxyXG4gICAgICAgIHF1ZXJ5OiBjb2wucXVlcnkgPyB7IC4uLmNvbC5xdWVyeSB9IDogbnVsbCxcclxuICAgICAgICBjb2x1bW5fZHJvcGRvd25fdmFsdWU6IGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWVcclxuICAgICAgICAgID8gWy4uLmNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWVdXHJcbiAgICAgICAgICA6IFtdLFxyXG4gICAgICB9KSk7XHJcblxyXG5cclxuICAgICAgaWYgKHRoaXMuZGF0YUdyaWRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5TZXRDb2x1bW5zRGVmYXVsdFdpZHRoKCk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcclxuICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgICAgIHRoaXMuc2V0U2VjdGlvbnNXaWR0aCgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1snZGF0YVNldCddKSB7XHJcbiAgICAgIHRoaXMuZGF0YVNldCA9IHRoaXMuZGF0YVNldD8ubWFwKChyb3csIGkpID0+ICh7XHJcbiAgICAgICAgLi4ucm93LFxyXG4gICAgICAgIF9fdmlydHVhbEluZGV4OiBpICsgMSxcclxuICAgICAgfSkpO1xyXG4gICAgICB0aGlzLm9yaWdpbmFsRGF0YVNldCA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLmRhdGFTZXQpO1xyXG4gICAgICB0aGlzLmV4cGFuZGVkQ2VsbHMuY2xlYXIoKTtcclxuICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcblxyXG4gICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb21wdXRlVmlld3BvcnRSb3dzKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVWaXNpYmxlUm93cygwKTtcclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKHRoaXMuY2VudGVyUGlubmVkSGVhZGVyPy5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgdm9pZCB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPVxyXG4gICAgICAgICAgICB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmFwcGx5Um93c1NlbGVjdGlvblN0YXRlKCk7XHJcblxyXG4gICAgICBpZiAodGhpcy5ncm91cGVkQ29sdW1ucz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc3QgZmllbGRzID0gdGhpcy5ncm91cGVkQ29sdW1ucy5tYXAoKGl0ZW0pID0+IGl0ZW0uZmllbGQpO1xyXG4gICAgICAgIHRoaXMuZGF0YVNldCA9IGF3YWl0IHRoaXMuZ3JvdXBEYXRhQXN5bmModGhpcy5vcmlnaW5hbERhdGFTZXQsIGZpZWxkcyk7XHJcblxyXG4gICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcclxuICAgICAgICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmdyb3VwQm94UGFkZGluZyA9IHRoaXMuY29sdW1uc0dyb3VwZWRCb3g/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1snY2hlY2tib3hTdGF0ZSddPy5jdXJyZW50VmFsdWU/LnJlc2V0KSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb25TdGF0ZSh0aGlzLnRhYmxlVHlwZSk7XHJcblxyXG4gICAgICBjb25zdCBpZHMgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzKTtcclxuICAgICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgbGlzdGluZ1R5cGU6IHRoaXMubGlzdGluZ1R5cGUsXHJcbiAgICAgICAgICBvYmo6IGlkcyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGV2ZW50VHlwZTogJ29uU2VsZWN0Um93JyxcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xyXG5cclxuICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ2Nsb3NlRHJvcGRvd24nXSAmJiB0aGlzLmNsb3NlRHJvcGRvd24ucHJlc2V0LmNsb3NlZCkge1xyXG4gICAgICB0aGlzLmFjdGl2ZVRvcEJ1dHRvbiA9IG51bGw7XHJcbiAgICAgIHRoaXMucHJlc2V0RmlsdGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucHJlc2V0TmFtZSA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmIChjaGFuZ2VzWydvZGRSb3dzQmFja2dyb3VuZENvbG9yJ10pIHtcclxuICAgIC8vICAgdGhpcy5yb3dTaGFkaW5nRW5hYmxlZCA9ICEhdGhpcy5vZGRSb3dzQmFja2dyb3VuZENvbG9yO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzWydyZXNldEFsbEZpbHRlcnMnXSAmJiB0aGlzLnJlc2V0QWxsRmlsdGVycy5yZXNldEFsbCkge1xyXG4gICAgICB0aGlzLmNsZWFyQWxsRmlsdGVycygpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzWyd0YWJsZVZpZXcnXSkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBjb25zdCB2aWV3VmFsdWUgPSB0aGlzLnRhYmxlVmlldztcclxuICAgICAgbGV0IHRlbXByb3J5U2VsZWN0ZWQgPSBBcnJheS5pc0FycmF5KHZpZXdWYWx1ZSlcclxuICAgICAgICA/IHZpZXdWYWx1ZS5maW5kKGl0ZW0gPT4gaXRlbS5pc190ZW1wKVxyXG4gICAgICAgIDogbnVsbDtcclxuXHJcbiAgICAgICAgaWYoIXRlbXByb3J5U2VsZWN0ZWQpe1xyXG4gICAgICAgICAgdGVtcHJvcnlTZWxlY3RlZCA9IEFycmF5LmlzQXJyYXkodmlld1ZhbHVlKVxyXG4gICAgICAgID8gdmlld1ZhbHVlLmZpbmQoaXRlbSA9PiBpdGVtLmlzX2RlZmF1bHQpXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlID0gdGVtcHJvcnlTZWxlY3RlZCB8fCBudWxsO1xyXG4gICAgICB0aGlzLnByZXNldE5hbWUgPSB0ZW1wcm9yeVNlbGVjdGVkPy5uYW1lIHx8ICcnO1xyXG4gICAgICB0aGlzLnByZXNldEZpbHRlciA9IHRlbXByb3J5U2VsZWN0ZWQ/LmFjdGl2ZUZpbHRlcnMgfHwgZmFsc2U7XHJcbiAgICAgIGlmKHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlKXtcclxuICAgICAgICB0aGlzLnJvd1NoYWRpbmdFbmFibGVkID0gdGVtcHJvcnlTZWxlY3RlZC5jb25maWcucm93U2hhZGluZ0VuYWJsZWQ7XHJcbiAgICAgICAgdGhpcy5zaG93VmVydGljYWxCb3JkZXIgPSB0ZW1wcm9yeVNlbGVjdGVkLmNvbmZpZy5zaG93VmVydGljYWxCb3JkZXI7XHJcbiAgICAgICAgdGhpcy5mb250RmFpbWx5ID0gdGVtcHJvcnlTZWxlY3RlZC5jb25maWcuZm9udEZhaW1seTtcclxuICAgICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSB0ZW1wcm9yeVNlbGVjdGVkLmNvbmZpZy5oZWFkZXJUZXh0Rm9udHNTaXplO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLnNlbGVjdGVkVGFibGVMYXlvdXQ7XHJcbiAgICAgICAgdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLmJvZHlUZXh0Rm9udHNTaXplO1xyXG4gICAgICAgIHRoaXMuZ2xvYmFsU2VhcmNoVGV4dCA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLmdsb2JhbFNlYXJjaDtcclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZm9udEZhaW1seSA9ICdJbnRlcic7XHJcbiAgICAgICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gMTQ7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0ID0gJ21lZGl1bWQnO1xyXG4gICAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSAxNDtcclxuICAgICAgICB0aGlzLmdsb2JhbFNlYXJjaFRleHQgPSAnJztcclxuICAgICAgfVxyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGFzeW5jIHNldENvbHVtbnNDb2x1bW5Ecm9wZG93blZhbHVzKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLmNvbHVtbnMpIHJldHVybjtcclxuICAgIHRoaXMuY29sdW1ucyA9IGF3YWl0IHRoaXMuY29tbW9uU2V2aWNlLmNvcHlEcm9wZG93bkRhdGFSZWN1cnNpdmVseSh0aGlzLmNvbHVtbnMpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgYXBwbHlSb3dzU2VsZWN0aW9uU3RhdGUoKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZElkc0Zyb21TdGF0ZSA9IHRoaXMucmVzdG9yZVNlbGVjdGlvbih0aGlzLnRhYmxlVHlwZSk7XHJcbiAgICBpZiAoc2VsZWN0ZWRJZHNGcm9tU3RhdGUuc2l6ZSA+IDApIHtcclxuICAgICAgY29uc3QgaWRzID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkUm93cyk7XHJcbiAgICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxyXG4gICAgICAgICAgb2JqOiBpZHNcclxuICAgICAgICB9LFxyXG4gICAgICAgIGV2ZW50VHlwZTogXCJvblNlbGVjdFJvd1wiLFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJTZWxlY3Rpb25TdGF0ZSh0YWJsZVR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3Qgc3RvcmVkID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZGF0YXRhYmxlU2VsZWN0aW9ucycpIHx8ICd7XCJzZWxlY3RlZFJvd3NcIjoge319Jyk7XHJcbiAgICBpZiAoc3RvcmVkLnNlbGVjdGVkUm93cyAmJiBzdG9yZWQuc2VsZWN0ZWRSb3dzW3RhYmxlVHlwZV0pIHtcclxuICAgICAgZGVsZXRlIHN0b3JlZC5zZWxlY3RlZFJvd3NbdGFibGVUeXBlXTtcclxuICAgIH1cclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAnZGF0YXRhYmxlU2VsZWN0aW9ucycsXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KHN0b3JlZClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGFzeW5jIGFwcGx5RmlsdGVyb3B0aW9uTGlzdCgpIHtcclxuICAgIGNvbnN0IHVwZGF0ZWRDb2x1bW5zID0gYXdhaXQgdGhpcy5jb21tb25TZXZpY2UuYXBwbHlGaWx0ZXJzVG9Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKTtcclxuICAgIHRoaXMuY29sdW1ucyA9IFsuLi51cGRhdGVkQ29sdW1uc107XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIGxlZnRQaW5uZWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG4gIGNlbnRlckNvbHVtbnM6IGFueVtdID0gW107XHJcbiAgcmlnaHRQaW5uZWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG5cclxuICBwcmV2aWV3TGVmdFBpbm5lZENvbHVtbnM6IGFueVtdID0gW107XHJcbiAgcHJldmlld0NlbnRlckNvbHVtbnM6IGFueVtdID0gW107XHJcbiAgcHJldmlld1JpZ2h0UGlubmVkQ29sdW1uczogYW55W10gPSBbXTtcclxuXHJcbiAgLy8gTWFpbiBDb250YWluZXIgVGVtcGxhdGUgUmVmZXJlbmNlc1xyXG4gIEBWaWV3Q2hpbGQoJ2RhdGFHcmlkQ29udGFpbmVyJylcclxuICBkYXRhR3JpZENvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ3Rhc2tNYW5hZ2VtZW50Q29udGFpbmVyJylcclxuICB0YXNrTWFuYWdlbWVudENvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ25lc3RlZFRhYmxlQ29udGFpbmVyJylcclxuICBuZXN0ZWRUYWJsZUNvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICAvLyBCb2R5IFRlbXBsYXRlIFJlZmVyZW5jZXNcclxuICBAVmlld0NoaWxkKCdsZWZ0UGlubmVkQm9keScpXHJcbiAgbGVmdFBpbm5lZEJvZHkhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdjZW50ZXJQaW5uZWRCb2R5JylcclxuICBjZW50ZXJQaW5uZWRCb2R5ITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgncmlnaHRQaW5uZWRCb2R5JylcclxuICByaWdodFBpbm5lZEJvZHkhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgLy8gSGVhZGVycyBUZW1wbGF0ZSBSZWZlcmVuY2VzXHJcbiAgQFZpZXdDaGlsZCgnbGVmdFBpbm5lZEhlYWRlcicpXHJcbiAgbGVmdFBpbm5lZEhlYWRlciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2NlbnRlclBpbm5lZEhlYWRlcicpXHJcbiAgY2VudGVyUGlubmVkSGVhZGVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgncmlnaHRQaW5uZWRIZWFkZXInKVxyXG4gIHJpZ2h0UGlubmVkSGVhZGVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbnNHcm91cGVkQm94JylcclxuICBjb2x1bW5zR3JvdXBlZEJveCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICAvLyBDZW50ZXIgRmFrZSBzY3JvbGxiYXJkXHJcbiAgQFZpZXdDaGlsZCgnY2VudGVyRmFrZVNjcm9sbGJhcicpXHJcbiAgY2VudGVyRmFrZVNjcm9sbGJhciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIGFzeW5jIHVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3Vwcyhjb2x1bW5zOiBhbnkgPSBudWxsKSB7XHJcbiAgICBpZiAoIXRoaXMuZGF0YUdyaWRDb250YWluZXIpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMuZGF0YUdyaWRDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuXHJcbiAgICAvLyBXcmFwIGluIGEgcHJvbWlzZSBzbyB3ZSBjYW4gYXdhaXRcclxuICAgIGNvbnN0IHsgbGVmdCwgY2VudGVyLCByaWdodCB9OiBhbnkgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgY29uc3QgcHJlcGFyZWQgPSB0aGlzLmNvbHVtblNlcnZpY2UucHJlcGFyZUNvbHVtbnMoXHJcbiAgICAgICAgY29sdW1ucyA/IGNvbHVtbnMgOiB0aGlzLmNvbHVtbnMsXHJcbiAgICAgICAgY29udGFpbmVyV2lkdGhcclxuICAgICAgKTtcclxuICAgICAgcmVzb2x2ZShwcmVwYXJlZCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmxlZnRQaW5uZWRDb2x1bW5zID0gbGVmdDtcclxuICAgIHRoaXMuY2VudGVyQ29sdW1ucyA9IGNlbnRlcjtcclxuICAgIHRoaXMucmlnaHRQaW5uZWRDb2x1bW5zID0gcmlnaHQ7XHJcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgMCkpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVmcmVzaFByZXZpZXdDb2x1bW5zKGNvbHVtbnM6IGFueSA9IG51bGwpIHtcclxuICAgIGlmICghdGhpcy5kYXRhR3JpZENvbnRhaW5lcikgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy5kYXRhR3JpZENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG5cclxuICAgIC8vIFdyYXAgcHJlcGFyZUNvbHVtbnMgaW4gYSBQcm9taXNlIHRvIG1ha2UgaXQgYXdhaXRhYmxlXHJcbiAgICBjb25zdCB7IGxlZnQsIGNlbnRlciwgcmlnaHQgfTogYW55ID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgIGNvbnN0IHByZXBhcmVkID0gdGhpcy5jb2x1bW5TZXJ2aWNlLnByZXBhcmVDb2x1bW5zKFxyXG4gICAgICAgIGNvbHVtbnMgPyBjb2x1bW5zIDogdGhpcy5jb2x1bW5zLFxyXG4gICAgICAgIGNvbnRhaW5lcldpZHRoXHJcbiAgICAgICk7XHJcbiAgICAgIHJlc29sdmUocHJlcGFyZWQpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5wcmV2aWV3TGVmdFBpbm5lZENvbHVtbnMgPSBsZWZ0O1xyXG4gICAgdGhpcy5wcmV2aWV3Q2VudGVyQ29sdW1ucyA9IGNlbnRlcjtcclxuICAgIHRoaXMucHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucyA9IHJpZ2h0O1xyXG4gICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDEwKSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYXN5bmMgU2V0Q29sdW1uc0RlZmF1bHRXaWR0aCgpIHtcclxuICAgIGxldCBjb250YWluZXJXaWR0aCA9IHRoaXMuZGF0YUdyaWRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggKyA3MDtcclxuICAgIC8vIGlmICh0aGlzLnNob3dTZXJpYWxOdW1iZXIpIGNvbnRhaW5lcldpZHRoIC09IDU1O1xyXG4gICAgLy8gaWYgKHRoaXMuc2hvd1NpZGVNZW51KSBjb250YWluZXJXaWR0aCAtPSAyOTtcclxuICAgIC8vIGlmICh0aGlzLmdyaWRUeXBlID09ICdBc3NldHMnIHx8IHRoaXMuZ3JpZFR5cGUgPT0gJ1Rhc2tzJykgY29udGFpbmVyV2lkdGggLT0gMzA7XHJcbiAgICAvLyBjb250YWluZXJXaWR0aCAtPSA1O1xyXG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5TZXJ2aWNlLmFzc2lnbkRlZmF1bHRXaWR0aHMoXHJcbiAgICAgIHRoaXMuY29sdW1ucyxcclxuICAgICAgY29udGFpbmVyV2lkdGhcclxuICAgICk7XHJcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMCkpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG4gIHNldFNlY3Rpb25zV2lkdGgoKSB7XHJcbiAgICBjb25zdCBsZWZ0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmxlZnQtcGlubmVkLWJvZHknKSBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IGNlbnRlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICcuY2VudGVyLXNjcm9sbGFibGUtYm9keSdcclxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCByaWdodCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5yaWdodC1waW5uZWQtYm9keScpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKGxlZnQpIHtcclxuICAgICAgbGVmdC5zdHlsZS5taW5XaWR0aCA9IGAke3RoaXMubGVmdFBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofWA7XHJcbiAgICB9XHJcbiAgICBpZiAoY2VudGVyKSB7XHJcbiAgICAgIGxlZnQuc3R5bGUubWluV2lkdGggPSBgJHt0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofWA7XHJcbiAgICB9XHJcbiAgICBpZiAocmlnaHQpIHtcclxuICAgICAgbGVmdC5zdHlsZS5taW5XaWR0aCA9IGAke3RoaXMucmlnaHRQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aH1gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gb25DZW50ZXJCb2R5U2Nyb2xsKCk6IHZvaWQge1xyXG4gIC8vICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5jZW50ZXJQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gIC8vICAgY29uc3Qgc2Nyb2xsTGVmdCA9IHRoaXMuY2VudGVyUGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XHJcblxyXG4gIC8vICAgLy8gU3luYyB2ZXJ0aWNhbCBzY3JvbGwgd2l0aCBsZWZ0ICYgcmlnaHQgcGlubmVkIGJvZGllc1xyXG4gIC8vICAgdGhpcy5sZWZ0UGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcclxuICAvLyAgIHRoaXMucmlnaHRQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG5cclxuICAvLyAgIC8vIFN5bmMgaG9yaXpvbnRhbCBzY3JvbGwgd2l0aCBjZW50ZXIgaGVhZGVyXHJcbiAgLy8gICB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xyXG4gIC8vICAgdGhpcy5jZW50ZXJGYWtlU2Nyb2xsYmFyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQ7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBvbkxlZnRCb2R5U2Nyb2xsKCk6IHZvaWQge1xyXG4gIC8vICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5sZWZ0UGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcDtcclxuICAvLyAgIHRoaXMuY2VudGVyUGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcclxuICAvLyAgIHRoaXMucmlnaHRQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG4gIC8vIH1cclxuICAvLyBvblJpZ2h0Qm9keVNjcm9sbCgpOiB2b2lkIHtcclxuICAvLyAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMucmlnaHRQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gIC8vICAgdGhpcy5jZW50ZXJQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG4gIC8vICAgdGhpcy5sZWZ0UGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcclxuICAvLyB9XHJcblxyXG4gIGZha2VTY3JvbGxiYXJTY3JvbGxMZWZ0ID0gMDtcclxuICAvLyBvbkZha2VTY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgLy8gICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgLy8gICB0aGlzLmZha2VTY3JvbGxiYXJTY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XHJcbiAgLy8gICB0aGlzLmNlbnRlclBpbm5lZEJvZHkubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XHJcbiAgLy8gICB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0YXJnZXQuc2Nyb2xsTGVmdDtcclxuICAvLyB9XHJcblxyXG5cclxuXHJcblxyXG4gIGdldE5lc3RlZFZhbHVlKG9iajogYW55LCBmaWVsZDogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiBmaWVsZD8uc3BsaXQoJy4nKS5yZWR1Y2UoKGFjYywgcGFydCkgPT4gYWNjICYmIGFjY1twYXJ0XSwgb2JqKTtcclxuICB9XHJcblxyXG4gIGlzTmVzdGVkVmFsdWVBcnJheShvYmo6IGFueSwgZmllbGQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFvYmogfHwgIWZpZWxkKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGZpZWxkXHJcbiAgICAgIC5zcGxpdCgnLicpXHJcbiAgICAgIC5yZWR1Y2UoKGFjYywgcGFydCkgPT4gKGFjYyAmJiBhY2NbcGFydF0gIT09IHVuZGVmaW5lZCA/IGFjY1twYXJ0XSA6IHVuZGVmaW5lZCksIG9iaik7XHJcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBvblJlc2l6ZUdyb3VwKGV2ZW50OiBNb3VzZUV2ZW50LCBjb2w6IGFueSwgaXNSaWdodFBpbm5lZD86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBjb25zdCBzdGFydFggPSBldmVudC5jbGllbnRYO1xyXG4gICAgY29uc3QgY2hpbGRyZW4gPSBjb2wuY2hpbGRyZW4gfHwgW107XHJcbiAgICBpZiAoIWNoaWxkcmVuLmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNoaWxkV2lkdGhzOiB7IGZpZWxkOiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdID0gY2hpbGRyZW4ubWFwKFxyXG4gICAgICAoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgICAgIGBbZmllbGQ9XCIke2NoaWxkLmZpZWxkfVwiXWBcclxuICAgICAgICApIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBmaWVsZDogY2hpbGQuZmllbGQsXHJcbiAgICAgICAgICB3aWR0aDogZWw/Lm9mZnNldFdpZHRoIHx8IDAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCB0b3RhbEluaXRpYWxXaWR0aCA9IGNoaWxkV2lkdGhzLnJlZHVjZShcclxuICAgICAgKHN1bSwgY29sKSA9PiBzdW0gKyBjb2wud2lkdGgsXHJcbiAgICAgIDBcclxuICAgICk7XHJcblxyXG4gICAgY29uc3Qgb25Nb3VzZU1vdmUgPSAobW92ZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICAgIGxldCBkZWx0YVggPSBtb3ZlRXZlbnQuY2xpZW50WCAtIHN0YXJ0WDtcclxuXHJcbiAgICAgIGlmIChpc1JpZ2h0UGlubmVkKSB7XHJcbiAgICAgICAgZGVsdGFYID0gLWRlbHRhWDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUHJldmVudCBzaHJpbmtpbmcgdG9vIHNtYWxsXHJcbiAgICAgIGlmICh0b3RhbEluaXRpYWxXaWR0aCArIGRlbHRhWCA8IGNoaWxkcmVuLmxlbmd0aCAqIDgwKSByZXR1cm47XHJcblxyXG4gICAgICBsZXQgdG90YWxOZXdXaWR0aCA9IDA7XHJcblxyXG4gICAgICBjaGlsZFdpZHRocy5mb3JFYWNoKChjaGlsZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJhdGlvID0gY2hpbGQud2lkdGggLyB0b3RhbEluaXRpYWxXaWR0aDtcclxuICAgICAgICBjb25zdCBuZXdXaWR0aCA9IE1hdGgubWF4KGNoaWxkLndpZHRoICsgZGVsdGFYICogcmF0aW8sIDgwKTtcclxuICAgICAgICB0b3RhbE5ld1dpZHRoICs9IG5ld1dpZHRoO1xyXG5cclxuICAgICAgICBjb25zdCBjaGlsZEVscyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7Y2hpbGQuZmllbGR9XCJdYCk7XHJcbiAgICAgICAgY2hpbGRFbHMuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGVsSHRtbCA9IGVsIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgICAgZWxIdG1sLnN0eWxlLm1pbldpZHRoID0gYCR7bmV3V2lkdGh9cHhgO1xyXG4gICAgICAgICAgZWxIdG1sLnN0eWxlLndpZHRoID0gYCR7bmV3V2lkdGh9cHhgO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGNoaWxkLmZpZWxkLCBuZXdXaWR0aCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8g4pyFIFVwZGF0ZSBncm91cCBoZWFkZXIgd2lkdGggaW4gRE9NXHJcbiAgICAgIGNvbnN0IGdyb3VwSGVhZGVyRWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAgIGBbZ3JvdXA9XCIke2NvbC5oZWFkZXJ9XCJdYFxyXG4gICAgICApIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoZ3JvdXBIZWFkZXJFbCkge1xyXG4gICAgICAgIGdyb3VwSGVhZGVyRWwuc3R5bGUud2lkdGggPSBgJHt0b3RhbE5ld1dpZHRofXB4YDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBvbk1vdXNlVXAgPSAoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSB7XHJcbiAgICAgICAgdGhpcy5zYXZlUHJlc2V0KCdtb3VzZVVwJyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xyXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUpO1xyXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XHJcbiAgICAgIGNvbnN0IHNlbmREYXRhID0ge1xyXG4gICAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXHJcbiAgICAgICAgbm9fb2ZfcmVjb3JkczogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2VTaXplLFxyXG4gICAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGZpZWxkOiBzdHJpbmcsIHdpZHRoOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IHVwZGF0ZSA9IChjb2x1bW5zOiBhbnlbXSkgPT4ge1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zKSB7XHJcbiAgICAgICAgaWYgKGNvbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICB1cGRhdGUoY29sLmNoaWxkcmVuKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGNvbC5maWVsZCA9PT0gZmllbGQpIHtcclxuICAgICAgICAgIGNvbC53aWR0aCA9IHdpZHRoO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICB1cGRhdGUodGhpcy5jb2x1bW5zKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGNsZWFuQ29sdW1ucyhjb2x1bW5zOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIGNvbnN0IGNsZWFuZWRDb2x1bW5zID0gY29sdW1ucy5tYXAoXHJcbiAgICAgICh7XHJcbiAgICAgICAgX190eXBlbmFtZSxcclxuICAgICAgICBfaWQsXHJcbiAgICAgICAgY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLFxyXG4gICAgICAgIGZpbHRlclZhbHVlLFxyXG4gICAgICAgIHNlYXJjaCxcclxuICAgICAgICBleHBhbmRlZEZpbHRlcixcclxuICAgICAgICBxdWVyeSxcclxuICAgICAgICBpc1Jvd0dyb3VwZWQsXHJcbiAgICAgICAgLi4ucmVzdFxyXG4gICAgICB9KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIC4uLnJlc3QsXHJcbiAgICAgICAgICBpc19ncm91cGFibGU6IHJlc3QudHlwZSAhPT0gJ2ltYWdlJyxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiBjbGVhbmVkQ29sdW1ucztcclxuXHJcbiAgfVxyXG5cclxuICBvblJlc2l6ZUNvbHVtbihldmVudDogTW91c2VFdmVudCwgY29sOiBhbnkpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBjb25zdCBzdGFydFggPSBldmVudC5jbGllbnRYO1xyXG5cclxuICAgIGNvbnN0IHRhcmdldEVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgYFtmaWVsZD1cIiR7Y29sLmZpZWxkfVwiXWBcclxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBpbml0aWFsV2lkdGggPSB0YXJnZXRFbD8ub2Zmc2V0V2lkdGggfHwgMTUwO1xyXG5cclxuICAgIGNvbnN0IG1hdGNoaW5nRWxzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2ZpZWxkPVwiJHtjb2wuZmllbGR9XCJdYCk7XHJcblxyXG4gICAgLy8g8J+RiSBBZGQgaGlnaGxpZ2h0IHdoaWxlIHJlc2l6aW5nXHJcbiAgICBpZiAoY29sPy5waW5uZWQgPT0gJ3JpZ2h0Jykge1xyXG4gICAgICBtYXRjaGluZ0Vscy5mb3JFYWNoKChlbDogRWxlbWVudCkgPT4ge1xyXG4gICAgICAgIChlbCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmFkZCgncmVzaXppbmctaGlnaGxpZ2h0LXJpZ2h0Jyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbWF0Y2hpbmdFbHMuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHtcclxuICAgICAgICAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdC5hZGQoJ3Jlc2l6aW5nLWhpZ2hsaWdodCcpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBvbk1vdXNlTW92ZSA9IChtb3ZlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgbGV0IGRlbHRhWCA9IG1vdmVFdmVudC5jbGllbnRYIC0gc3RhcnRYO1xyXG5cclxuICAgICAgLy8g8J+RiSBSZXZlcnNlIGlmIHRoZSBjb2x1bW4gaXMgcGlubmVkIHRvIHRoZSByaWdodFxyXG4gICAgICBpZiAoY29sLnBpbm5lZCA9PT0gJ3JpZ2h0Jykge1xyXG4gICAgICAgIGRlbHRhWCA9IC1kZWx0YVg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBuZXdXaWR0aCA9IGluaXRpYWxXaWR0aCArIGRlbHRhWDtcclxuICAgICAgaWYgKG5ld1dpZHRoIDwgODApIHJldHVybjtcclxuXHJcbiAgICAgIG1hdGNoaW5nRWxzLmZvckVhY2goKGVsOiBFbGVtZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGVsIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGVsZW1lbnQuc3R5bGUubWluV2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XHJcbiAgICAgICAgZWxlbWVudC5zdHlsZS53aWR0aCA9IGAke25ld1dpZHRofXB4YDtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGNvbC5maWVsZCwgbmV3V2lkdGgpO1xyXG4gICAgICBjb2wud2lkdGggPSBuZXdXaWR0aDtcclxuICAgICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgb25Nb3VzZVVwID0gKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy50YWJsZUZpbHRlclZpZXdJZCkge1xyXG4gICAgICAgIHRoaXMuc2F2ZVByZXNldCgnbW91c2VVcCcpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcclxuICAgICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcclxuICAgICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuXHJcbiAgICAgIG1hdGNoaW5nRWxzLmZvckVhY2goKGVsOiBFbGVtZW50KSA9PiB7XHJcbiAgICAgICAgKGVsIGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3QucmVtb3ZlKCdyZXNpemluZy1oaWdobGlnaHQnKTtcclxuICAgICAgICAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdC5yZW1vdmUoJ3Jlc2l6aW5nLWhpZ2hsaWdodC1yaWdodCcpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcclxuICAgIH07XHJcblxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgb25SZXNpemVHcm91cEJveChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IHN0YXJ0WCA9IGV2ZW50LmNsaWVudFg7XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ3JvdXBCb3hIZWFkZXJEaXYnKTtcclxuICAgIGNvbnN0IGluaXRpYWxXaWR0aCA9IHRhcmdldEVsPy5vZmZzZXRXaWR0aCB8fCAxNTA7XHJcblxyXG4gICAgY29uc3Qgb25Nb3VzZU1vdmUgPSAobW92ZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IGRlbHRhWCA9IG1vdmVFdmVudC5jbGllbnRYIC0gc3RhcnRYO1xyXG5cclxuICAgICAgbGV0IG5ld1dpZHRoID0gaW5pdGlhbFdpZHRoICsgZGVsdGFYO1xyXG4gICAgICBpZiAobmV3V2lkdGggPCAxMDApIG5ld1dpZHRoID0gMTAwO1xyXG5cclxuICAgICAgaWYgKHRhcmdldEVsKSB7XHJcbiAgICAgICAgdGFyZ2V0RWwuc3R5bGUud2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XHJcbiAgICAgICAgdGFyZ2V0RWwuc3R5bGUubWluV2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XHJcbiAgICAgICAgdGhpcy5ncm91cEJveFBhZGRpbmcgPSBuZXdXaWR0aDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBvbk1vdXNlVXAgPSAoKSA9PiB7XHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcclxuICAgIH07XHJcblxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcclxuICB9XHJcblxyXG4gIG9uUGFzdGVJbkZpbHRlclJvd1NlYXJjaChldmVudDogQ2xpcGJvYXJkRXZlbnQsIGNvbDogYW55KSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5vbkZpbHRlckNoYW5nZShjb2wpO1xyXG4gICAgICB0aGlzLmFwcGx5RHJvcGRvd25GaWx0ZXIoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25GaWx0ZXJDaGFuZ2UoY29sOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZpbHRlclZhbHVlID0gY29sLmZpbHRlclZhbHVlPy50b0xvd2VyQ2FzZSgpIHx8ICcnO1xyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbkZvckZpbHRlciA9IGNvbDtcclxuICAgIGlmICghY29sPy5xdWVyeSkge1xyXG4gICAgICBjb2wucXVlcnkgPSB7XHJcbiAgICAgICAgZmlyc3RfY29uZGl0aW9uOiBjb2wudHlwZSA9PSAnZGF0ZScgPyAnZXF1YWwnIDogJ2NvbnRhaW4nLFxyXG4gICAgICAgIGZpcnN0X3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIHNlY29uZF9jb25kaXRpb246IG51bGwsXHJcbiAgICAgICAgc2Vjb25kX3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIGNvbmRpdGlvbjogbnVsbFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb2wucXVlcnkuZmlyc3RfdmFsdWUgPSBmaWx0ZXJWYWx1ZTtcclxuICAgIHRoaXMuZmlyc3RWYWx1ZSA9IGZpbHRlclZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLy8gR2V0IEJvZHkgSGVpZ2h0XHJcbiAgZ2V0IGJvZHlXcmFwcGVySGVpZ2h0KCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCByb3dzID0gdGhpcy5zaG93Q29sdW1uc0dyb3VwaW5nICYmIHRoaXMuc2hvd0ZpbHRlclJvdyA/IDMgOiAodGhpcy5zaG93Q29sdW1uc0dyb3VwaW5nIHx8IHRoaXMuc2hvd0ZpbHRlclJvdyA/IDIgOiAxKTtcclxuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuaGVhZGVyUm93SGVpZ2h0ICogcm93cyArICh0aGlzLmhhc1Njcm9sbCA/IDE3IDogMCk7XHJcbiAgICByZXR1cm4gYGNhbGMoMTAwJSAtICR7b2Zmc2V0fXB4KWA7XHJcbiAgfVxyXG5cclxuICAvLyBSb3cgSG92ZXIgTG9naWMgSGVyZVxyXG4gIGhvdmVyZWRSb3dJZDogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgb25Sb3dIb3Zlcihyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5ob3ZlcmVkUm93SWQgPSByb3cuX2lkIHx8IHJvdy5pZDtcclxuICB9XHJcblxyXG4gIG9uUm93TGVhdmUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmhvdmVyZWRSb3dJZCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5vcGVuSW5kZXggPSBudWxsO1xyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5oYXNQYXJlbnRXaXRoQ2xhc3ModGFyZ2V0LCBbXHJcbiAgICAgICAgJ3RocmVlLWRvdHMnLFxyXG4gICAgICAgICdmaWx0ZXItaWNvbi13cmFwcGVyJyxcclxuICAgICAgICAnY29sdW1uLW1lbnUnLFxyXG4gICAgICAgICdmaWx0ZXItbWVudScsXHJcbiAgICAgIF0pXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xyXG4gICAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbiAgICAgIHRoaXMuc2hvd0FjdGlvbnNEcm9wRG93biA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaW5zaWRlVG9wRmlsdGVyUm93ID0gdGFyZ2V0LmNsb3Nlc3QoJy5maWx0ZXItdGFncycpIHx8IHRhcmdldC5jbG9zZXN0KCcuYWRkLWZpbHRlci1idXR0b24tbWVudScpIHx8XHJcbiAgICAgIHRhcmdldC5jbG9zZXN0KCcudGFibGUtcmlnaHQtdG9wLWFjdGlvbnMnKSB8fCB0YXJnZXQuY2xvc2VzdCgnLnRhYmxlLWxheW91dCcpIHx8IHRhcmdldC5jbG9zZXN0KCcuZmlsdGVyLXJvdy1maWx0ZXItd3JhcHBlcicpO1xyXG4gICAgY29uc3QgaXNDbGlja2VkSW5zaWRlVGhyZWVEb3RzRmlsdGVyID0gdGFyZ2V0LmNsb3Nlc3QoJy50aHJlZS1kb3RzLWZpbHRlcicpIHx8IHRhcmdldC5jbG9zZXN0KCcuZmlsdGVyLW1lbnUtY29udGFpbmVyJyk7XHJcbiAgICBpZiAoIWlzQ2xpY2tlZEluc2lkZVRocmVlRG90c0ZpbHRlcikge1xyXG4gICAgICB0aGlzLmNsb3NlVGhyZWVEb3RzTWVudUZpbHRlcigpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpbnNpZGVUb3BGaWx0ZXJSb3cpIHtcclxuICAgICAgdGhpcy5jbG9zZUZpbHRlckRyb3Bkb3ducyhldmVudCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRhcmdldC5jbG9zZXN0KCcuc2V0LWRlZmF1bHQtcHJlc2V0JykpIHtcclxuICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNldC1kZWZhdWx0LXByZXNldCcpPy5jbGFzc0xpc3Q/LnJlbW92ZSgnc2hvdycpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGFyZ2V0LmNsb3Nlc3QoJy5mdWxsLXRleHQtYm94JykgJiYgIXRhcmdldC5jbG9zZXN0KCcuZGF0YS1ncmlkLWhlYWRlci13cmFwcGVyJykpIHtcclxuICAgICAgdGhpcy5jb2xsYXBzZUFsbEV4cGFuZGVkQ2VsbHMoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRhcmdldC5jbG9zZXN0KCcuZGF0YS1ncmlkLXRhYmxlLXdyYXBwZXInKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkS2V5cy5jbGVhcigpO1xyXG4gICAgICB0aGlzLmFjdGl2ZUNlbGwgPSAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBjbG9zZVRocmVlRG90c01lbnVGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG4gIGNsb3NlRmlsdGVyRHJvcGRvd25zKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gJyc7XHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYXNQYXJlbnRXaXRoQ2xhc3MoXHJcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudCxcclxuICAgIGNsYXNzTGlzdDogc3RyaW5nW11cclxuICApOiBib29sZWFuIHtcclxuICAgIGxldCBlbDogSFRNTEVsZW1lbnQgfCBudWxsID0gZWxlbWVudDtcclxuXHJcbiAgICB3aGlsZSAoZWwgIT09IG51bGwpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGVsLmNsYXNzTGlzdCAmJlxyXG4gICAgICAgIGNsYXNzTGlzdC5zb21lKChjbGFzc05hbWUpID0+IGVsIS5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgZWwgPSBlbC5wYXJlbnRFbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGlzTWVudWVIaWRkZW4gPSBmYWxzZTtcclxuICBvcGVuVGhyZWVEb3RzTWVudShldmVudDogTW91c2VFdmVudCwgY2hpbGQ6IGFueSwga2VlcE9yaWdpbmFsUG9zaXRpb24gPSBmYWxzZSkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5pc01lbnVlSGlkZGVuID0gdHJ1ZTtcclxuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy5kYXRhR3JpZENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGg7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IGNoaWxkO1xyXG4gICAgdGhpcy5hY3RpdmVGaWx0ZXJDZWxsID0gbnVsbDtcclxuICAgIGNvbnN0IHggPSBldmVudC5jbGllbnRYO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY29sdW1uLW1lbnUnKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgaWYgKGVsZW1lbnQpIHtcclxuICAgICAgICBpZiAoeCA+IChjb250YWluZXJXaWR0aCAvIDIpKSB7XHJcbiAgICAgICAgICBlbGVtZW50LnN0eWxlLmxlZnQgPSBgJHt4IC0gMjQwfXB4YDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZWxlbWVudCEuc3R5bGUubGVmdCA9IGAke3h9cHhgO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlzTWVudWVIaWRkZW4gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgLy8gQ29sdW1uIFRocmVlIERvdHMgQWN0aW9uc1xyXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICBzb3J0QXNjKGNvbDogYW55KSB7XHJcbiAgICBpZiAoIWNvbC5pc19zb3J0YWJsZSkgcmV0dXJuO1xyXG4gICAgY29sIS5vcmRlcl9ieSA9ICdhc2MnO1xyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIG9yZGVyOiAnYXNjJyxcclxuICAgICAgY29sdW1uOiBjb2xcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuc29ydGluZ09yZGVyT3B0aW9ucy5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHNvcnREZXNjKGNvbDogYW55KSB7XHJcbiAgICBpZiAoIWNvbC5pc19zb3J0YWJsZSkgcmV0dXJuO1xyXG4gICAgY29sIS5vcmRlcl9ieSA9ICdkZXNjJztcclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBvcmRlcjogJ2Rlc2MnLFxyXG4gICAgICBjb2x1bW46IGNvbFxyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5zb3J0aW5nT3JkZXJPcHRpb25zLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRTb3J0KGNvbDogYW55KSB7XHJcbiAgICB0aGlzLnNvcnRpbmdDb25maWcgPSB7IGZpZWxkOiAnJywgb3JkZXJfYnk6ICcnIH07XHJcbiAgICBjb25zdCBldmVudCA9IHsgZmllbGQ6IG51bGwsIG9yZGVyX2J5OiBudWxsIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuc29ydGluZ09yZGVyT3B0aW9ucy5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG5cclxuICBhc3luYyB1cGRhdGVDb2x1bW5QaW5JblNvdXJjZUJ5RmllbGQoXHJcbiAgICBjb2x1bW46IGFueSxcclxuICAgIHBpbm5lZDogJ2xlZnQnIHwgJ3JpZ2h0JyB8IG51bGwsXHJcbiAgICBpc05lc3RlZFRhYmxlOiBhbnkgPSBmYWxzZSxcclxuICAgIGNvbHVtbnM/OiBhbnlcclxuICApIHtcclxuICAgIGRlYnVnZ2VyXHJcbiAgICBpZiAoaXNOZXN0ZWRUYWJsZSkge1xyXG4gICAgICB0aGlzLnBpblVucGluQ29sdW0oY29sdW1uLCBwaW5uZWQsIGNvbHVtbnMpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB1cGRhdGUgPSAoY29sdW1uczogYW55W10pID0+IHtcclxuICAgICAgZm9yIChjb25zdCBjb2wgb2YgY29sdW1ucykge1xyXG4gICAgICAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgdXBkYXRlKGNvbC5jaGlsZHJlbik7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2wuZmllbGQgPT09IGNvbHVtbi5maWVsZCkge1xyXG4gICAgICAgICAgY29sLnBpbm5lZCA9IHBpbm5lZDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XHJcbiAgICB1cGRhdGUodGhpcy5jb2x1bW5zKTtcclxuICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICB9XHJcblxyXG4gIGF1dG9zaXplQ29sdW1uKGNvbHM6IGFueSB8IGFueVtdKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XHJcblxyXG4gICAgLy8gTm9ybWFsaXplIGlucHV0IHRvIGFuIGFycmF5XHJcbiAgICBjb25zdCBjb2x1bW5zVG9SZXNpemUgPSBBcnJheS5pc0FycmF5KGNvbHMpID8gY29scyA6IFtjb2xzXTtcclxuXHJcbiAgICAvLyBIZWxwZXI6IEZsYXR0ZW4gYWxsIHZpc2libGUgbGVhZiBjb2x1bW5zXHJcbiAgICBjb25zdCBnZXRWaXNpYmxlTGVhZkNvbHVtbnMgPSAoY29sdW1uczogYW55W10pOiBhbnlbXSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcclxuICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xyXG4gICAgICAgIGlmIChjb2x1bW4uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2x1bW4uY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICByZXN1bHQucHVzaCguLi5nZXRWaXNpYmxlTGVhZkNvbHVtbnMoY29sdW1uLmNoaWxkcmVuKSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4uaXNfdmlzaWJsZSkge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goY29sdW1uKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBnZXRWaXNpYmxlTGVhZkNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIGNvbnN0IHZpc2libGVDb3VudCA9IHZpc2libGVDb2x1bW5zLmxlbmd0aDtcclxuXHJcbiAgICBpZiAodmlzaWJsZUNvdW50ID09PSAwKSByZXR1cm47XHJcblxyXG4gICAgbGV0IGNvbnRhaW5lcldpZHRoID1cclxuICAgICAgdGhpcy5kYXRhR3JpZENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGggPz8gMDtcclxuICAgIGlmICh0aGlzLnNob3dTZXJpYWxOdW1iZXIpIGNvbnRhaW5lcldpZHRoIC09IDU1O1xyXG4gICAgaWYgKHRoaXMuc2hvd1NpZGVNZW51KSBjb250YWluZXJXaWR0aCAtPSAyOTtcclxuICAgIGlmICh0aGlzLmdyaWRUeXBlID09ICdBc3NldHMnIHx8IHRoaXMuZ3JpZFR5cGUgPT0gJ1Rhc2tzJykgY29udGFpbmVyV2lkdGggLT0gMzA7XHJcbiAgICBjb250YWluZXJXaWR0aCAtPSA1NTtcclxuICAgIGNvbnN0IGVxdWFsV2lkdGggPSBNYXRoLmZsb29yKGNvbnRhaW5lcldpZHRoIC8gdmlzaWJsZUNvdW50KTtcclxuXHJcbiAgICAvLyBSZXNpemUgZWFjaCBwYXNzZWQgY29sdW1uXHJcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zVG9SZXNpemUpIHtcclxuICAgICAgaWYgKGNvbCAmJiBjb2wuZmllbGQpIHtcclxuICAgICAgICBjb2wud2lkdGggPSBlcXVhbFdpZHRoO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhJblNvdXJjZUJ5RmllbGQoY29sLmZpZWxkLCBlcXVhbFdpZHRoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNlbmREYXRhID0ge1xyXG4gICAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXHJcbiAgICAgICAgbm9fb2ZfcmVjb3JkczogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2VTaXplLFxyXG4gICAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgICB9LCAxMDAwKTtcclxuICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgfVxyXG5cclxuICBnZXRHcm91cFdpZHRoKGdyb3VwOiBhbnkpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgZ3JvdXA/LmNoaWxkcmVuXHJcbiAgICAgICAgPy5maWx0ZXIoKGNvbDogYW55KSA9PiBjb2w/LmlzX3Zpc2libGUpXHJcbiAgICAgICAgPy5yZWR1Y2UoKGFjYzogbnVtYmVyLCBjb2w6IGFueSkgPT4gYWNjICsgKGNvbD8ud2lkdGggfHwgMCksIDApIHx8IDBcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhdXRvc2l6ZUFsbENvbHVtbnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XHJcblxyXG4gICAgY29uc3QgZ2V0VmlzaWJsZUxlYWZDb2x1bW5zID0gKGNvbHVtbnM6IGFueVtdKTogYW55W10gPT4ge1xyXG4gICAgICBjb25zdCByZXN1bHQ6IGFueVtdID0gW107XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgICAgaWYgKGNvbHVtbi5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGNvbHVtbi5jaGlsZHJlbikpIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLmdldFZpc2libGVMZWFmQ29sdW1ucyhjb2x1bW4uY2hpbGRyZW4pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi5pc192aXNpYmxlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goY29sdW1uKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID0gZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcbiAgICBjb25zdCB2aXNpYmxlQ291bnQgPSB2aXNpYmxlQ29sdW1ucy5sZW5ndGg7XHJcblxyXG4gICAgaWYgKHZpc2libGVDb3VudCA9PT0gMCkgcmV0dXJuO1xyXG5cclxuICAgIGxldCBjb250YWluZXJXaWR0aCA9XHJcbiAgICAgIHRoaXMuZGF0YUdyaWRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoID8/IDA7XHJcbiAgICBpZiAodGhpcy5zaG93U2VyaWFsTnVtYmVyKSBjb250YWluZXJXaWR0aCAtPSA1NTtcclxuICAgIGlmICh0aGlzLnNob3dTaWRlTWVudSkgY29udGFpbmVyV2lkdGggLT0gMjk7XHJcbiAgICBpZiAodGhpcy5ncmlkVHlwZSA9PSAnQXNzZXRzJyB8fCB0aGlzLmdyaWRUeXBlID09ICdUYXNrcycpIGNvbnRhaW5lcldpZHRoIC09IDMwO1xyXG4gICAgY29udGFpbmVyV2lkdGggLT0gNTU7XHJcbiAgICBjb25zdCBlcXVhbFdpZHRoID0gTWF0aC5tYXgoTWF0aC5mbG9vcihjb250YWluZXJXaWR0aCAvIHZpc2libGVDb3VudCksIDE1MCk7XHJcblxyXG4gICAgLy8gVXBkYXRlIHdpZHRocyBmb3IgYWxsIHZpc2libGUgY29sdW1uc1xyXG4gICAgdmlzaWJsZUNvbHVtbnMuZm9yRWFjaCgoY29sKSA9PiB7XHJcbiAgICAgIGNvbC53aWR0aCA9IGVxdWFsV2lkdGg7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhJblNvdXJjZUJ5RmllbGQoY29sLmZpZWxkLCBlcXVhbFdpZHRoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcclxuICAgIHRoaXMuaGFzU2Nyb2xsID0gdGhpcy5oYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcclxuICAgICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICAgIH0sIDEwMDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtYXJrQ29sdW1uQXNHcm91cGVkKGNvbHVtbnM6IGFueVtdLCBmaWVsZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zKSB7XHJcbiAgICAgIGlmIChjb2wuZmllbGQgPT09IGZpZWxkKSB7XHJcbiAgICAgICAgY29sLmlzUm93R3JvdXBlZCA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMubWFya0NvbHVtbkFzR3JvdXBlZChjb2wuY2hpbGRyZW4sIGZpZWxkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ3JvdXBCeShjb2w6IGFueSkge1xyXG4gICAgdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcclxuICAgIHRoaXMudHJhbnNsYXRlWSA9IDA7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XHJcbiAgICBpZiAoIWNvbCkgcmV0dXJuO1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIGlmIChjb2w/LmlzX2dyb3VwYWJsZSkge1xyXG4gICAgICB0aGlzLmdyb3VwZWRDb2x1bW5zLnB1c2goY29sKTtcclxuICAgICAgdGhpcy5tYXJrQ29sdW1uQXNHcm91cGVkKHRoaXMuY29sdW1ucywgY29sLmZpZWxkKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZ3JvdXBlZENvbHVtbnMubWFwKChpdGVtKSA9PiBpdGVtLmZpZWxkKTtcclxuICAgIHRoaXMuZGF0YVNldCA9IGF3YWl0IHRoaXMuZ3JvdXBEYXRhQXN5bmModGhpcy5vcmlnaW5hbERhdGFTZXQsIGZpZWxkcyk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3MoMCk7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAxMDApO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdyb3VwQm94UGFkZGluZyA9IHRoaXMuY29sdW1uc0dyb3VwZWRCb3g/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKVxyXG4gICAgfSwgMTApO1xyXG5cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdyb3VwRGF0YUFzeW5jKGRhdGE6IGFueVtdLCBncm91cEZpZWxkczogc3RyaW5nW10pOiBQcm9taXNlPGFueVtdPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZ3JvdXBEYXRhKGRhdGEsIGdyb3VwRmllbGRzKTtcclxuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICBjaG9vc2VDb2x1bW5zKCkge1xyXG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xyXG4gICAgdGhpcy5zaG93Q29sdW1uUGFuZWwgPSB0cnVlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRDb2x1bW5zKCkge1xyXG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xyXG5cclxuICAgIC8vIHRoaXMuY29sdW1ucyA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLm9yaWdpbmFsQ29sdW1ucyk7XHJcbiAgICAvLyBEZWVwIGNvcHkgbmVzdGVkIG9iamVjdHMgYnV0IGtlZXAgY2xhc3MgcmVmcyBzYWZlXHJcbiAgICB0aGlzLm9yaWdpbmFsQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5tYXAoY29sID0+ICh7XHJcbiAgICAgIC4uLmNvbCxcclxuICAgICAgLy8gRGVlcCBjb3B5IG5lc3RlZCBvYmplY3RzIGJ1dCBrZWVwIGNsYXNzIHJlZnMgc2FmZVxyXG4gICAgICBxdWVyeTogY29sLnF1ZXJ5ID8geyAuLi5jb2wucXVlcnkgfSA6IG51bGwsXHJcbiAgICAgIGNvbHVtbl9kcm9wZG93bl92YWx1ZTogY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZVxyXG4gICAgICAgID8gWy4uLmNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWVdXHJcbiAgICAgICAgOiBbXSxcclxuICAgIH0pKTtcclxuXHJcbiAgICB0aGlzLlNldENvbHVtbnNEZWZhdWx0V2lkdGgoKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xyXG4gICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJGaWx0ZXIoY29sOiBhbnkpIHtcclxuICAgIGNvbC5maXJzdFZhbHVlID0gJyc7XHJcbiAgICBjb2wuc2Vjb25kVmFsdWUgPSAnJztcclxuICAgIGNvbC5maXJzdENvbmRpdGlvbiA9ICdjb250YWluJztcclxuICAgIGNvbC5zZWNvbmRDb25kaXRpb24gPSBudWxsO1xyXG4gICAgY29sLmxvZ2ljID0gJ0FORCc7XHJcbiAgICBjb2wuc2VsZWN0QWxsID0gZmFsc2U7XHJcbiAgICBjb2wuc2VsZWN0ZWRPcHRpb25zID0ge307XHJcbiAgICBjb2wuc2VhcmNoVmFsdWUgPSAnJztcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgYXBwbHlGaWx0ZXIoY29sOiBhbnkpIHtcclxuICAgIHRoaXMuZmlsdGVyQ29sdW1uc0xpc3QucHVzaChjb2wpO1xyXG4gIH1cclxuXHJcbiAgLy8gUm93cyBTZWxlY3Rpb24gTG9naWMgR29lcyBIZXJlXHJcblxyXG4gIHNlbGVjdGVkUm93czogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBub3JtYWxpemVkIElEIGZyb20gcm93LlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0Um93SWQocm93OiBhbnkpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHJvdy5pZCA/PyByb3cuX2lkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG9nZ2xlIGEgc2luZ2xlIHJvdyBzZWxlY3Rpb24uXHJcbiAgICovXHJcbiAgdG9nZ2xlUm93U2VsZWN0aW9uKHJvdzogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBpZCA9IHRoaXMuZ2V0Um93SWQocm93KTtcclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFJvd3MuaGFzKGlkKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5kZWxldGUoaWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MuYWRkKGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpZHMgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzKTtcclxuXHJcbiAgICB0aGlzLnNhdmVTZWxlY3Rpb24oaWRzLCB0aGlzLnRhYmxlVHlwZSk7XHJcblxyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBsaXN0aW5nVHlwZTogdGhpcy5saXN0aW5nVHlwZSxcclxuICAgICAgICBvYmo6IGlkc1xyXG4gICAgICB9LFxyXG4gICAgICBldmVudFR5cGU6IFwib25TZWxlY3RSb3dcIixcclxuICAgIH07XHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgdG9nZ2xlU2VsZWN0QWxsKGRhdGE6IGFueVtdKTogdm9pZCB7XHJcbiAgICBjb25zdCBhbGxJZHMgPSB0aGlzLm9yaWdpbmFsRGF0YVNldC5tYXAoKHJvdykgPT4gdGhpcy5nZXRSb3dJZChyb3cpKTtcclxuICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gYWxsSWRzLmV2ZXJ5KChpZCkgPT4gdGhpcy5zZWxlY3RlZFJvd3MuaGFzKGlkKSk7XHJcblxyXG4gICAgaWYgKGFsbFNlbGVjdGVkKSB7XHJcbiAgICAgIGFsbElkcy5mb3JFYWNoKChpZCkgPT4gdGhpcy5zZWxlY3RlZFJvd3MuZGVsZXRlKGlkKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhbGxJZHMuZm9yRWFjaCgoaWQpID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmFkZChpZCkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgY29uc3QgaWRzID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkUm93cyk7XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxyXG4gICAgICAgIG9iajogaWRzXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogXCJvblNlbGVjdFJvd1wiLFxyXG4gICAgfVxyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudCk7XHJcbiAgICB0aGlzLnNhdmVTZWxlY3Rpb24oaWRzLCB0aGlzLnRhYmxlVHlwZSk7XHJcbiAgfVxyXG5cclxuICBpc1Jvd1NlbGVjdGVkKHJvdzogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJvd3MuaGFzKHRoaXMuZ2V0Um93SWQocm93KSk7XHJcbiAgfVxyXG5cclxuICBpc0FsbFNlbGVjdGVkKGRhdGE6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKGRhdGE/LmV2ZXJ5KChyb3cpID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyh0aGlzLmdldFJvd0lkKHJvdykpKSAmJiAodGhpcy5kYXRhU2V0Py5sZW5ndGggPiAwKSk7XHJcbiAgfVxyXG5cclxuICBpc0luZGV0ZXJtaW5hdGVTdGF0ZShkYXRhOiBhbnlbXSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFkYXRhIHx8IGRhdGEubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCBzZWxlY3RlZENvdW50ID0gZGF0YS5maWx0ZXIocm93ID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyh0aGlzLmdldFJvd0lkKHJvdykpKS5sZW5ndGg7XHJcbiAgICByZXR1cm4gc2VsZWN0ZWRDb3VudCA+IDAgJiYgc2VsZWN0ZWRDb3VudCA8IGRhdGEubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgLy8gU2lkZSBNZW51IFdvcmtpbmcgR29lcyBIZXJlXHJcbiAgdG9nZ2xlU2lkZU1lbnUoY2xpY2tlZE9uOiAnY29scycgfCAnZmlsdHJzJykge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9PSBjbGlja2VkT24pIHtcclxuICAgICAgdGhpcy5jdXJyZW50T3BlbmVkU2lkZU1lbnVlID0gY2xpY2tlZE9uO1xyXG4gICAgICB0aGlzLnNpZGVNZW51VmlzaWJsZSA9ICF0aGlzLnNpZGVNZW51VmlzaWJsZTtcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIHRoaXMuc2lkZU1lbnVWaXNpYmxlICYmXHJcbiAgICAgIGNsaWNrZWRPbiAhPSB0aGlzLmN1cnJlbnRPcGVuZWRTaWRlTWVudWVcclxuICAgICkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPSBjbGlja2VkT247XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9IGNsaWNrZWRPbjtcclxuICAgICAgdGhpcy5zaWRlTWVudVZpc2libGUgPSAhdGhpcy5zaWRlTWVudVZpc2libGU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmhhc1Njcm9sbCA9IHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlR3JvdXBWaXNpYmlsaXR5KGNvbDogYW55KSB7XHJcbiAgICBjb25zdCBhbGxWaXNpYmxlID0gY29sLmNoaWxkcmVuLmV2ZXJ5KChjaGlsZDogYW55KSA9PiBjaGlsZC5pc192aXNpYmxlKTtcclxuICAgIGNvbC5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZDogYW55KSA9PiAoY2hpbGQuaXNfdmlzaWJsZSA9ICFhbGxWaXNpYmxlKSk7XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICAgIHRoaXMuU2V0Q29sdW1uc0RlZmF1bHRXaWR0aCgpO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAxMCk7XHJcbiAgfVxyXG5cclxuICBpc0NvbHVtblZpc2libGUoY29sdW1uczogYW55KSB7XHJcbiAgICBpZiAoY29sdW1ucz8uY2hpbGRyZW4pIHtcclxuICAgICAgcmV0dXJuIGNvbHVtbnMuY2hpbGRyZW4uZXZlcnkoKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5pc192aXNpYmxlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY29sdW1ucz8uaXNfdmlzaWJsZTtcclxuICB9XHJcblxyXG4gIGFsbENvbHVtbnNTZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGZsYXR0ZW4gPSB0aGlzLmZsYXR0ZW5Db2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcbiAgICByZXR1cm4gZmxhdHRlbi5ldmVyeSgoY29sKSA9PiBjb2wuaXNfdmlzaWJsZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBmaW5kQ29sdW1uQnlGaWVsZChmaWVsZDogc3RyaW5nLCBjb2xzOiBhbnlbXSk6IGFueSB8IG51bGwge1xyXG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29scykge1xyXG4gICAgICBpZiAoY29sLmZpZWxkID09PSBmaWVsZCkge1xyXG4gICAgICAgIHJldHVybiBjb2w7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGNvbC5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbikpIHtcclxuICAgICAgICBjb25zdCBmb3VuZCA9IHRoaXMuZmluZENvbHVtbkJ5RmllbGQoZmllbGQsIGNvbC5jaGlsZHJlbik7XHJcbiAgICAgICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBhc3luYyB0b2dnbGVDb2x1bW5WaXNpYmlsaXR5KGNvbHVtbjogYW55LCBpc1Zpc2libGU6IGJvb2xlYW4pIHtcclxuICAgIGlmKGlzVmlzaWJsZSl7XHJcbiAgICAgIGlmKHRoaXMudmlzaWJsZUNvbHVtbnMoKT8ubGVuZ3RoIDw9IDIpe1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgY29sID0gdGhpcy5maW5kQ29sdW1uQnlGaWVsZChjb2x1bW4uZmllbGQsIHRoaXMuY29sdW1ucyk7XHJcbiAgICBpZiAoY29sKSB7XHJcbiAgICAgIGNvbC5pc192aXNpYmxlID0gaXNWaXNpYmxlO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSB7XHJcbiAgICAgIHRoaXMuc2F2ZVByZXNldCgnbW91c2VVcCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHRvZ2dsZUFsbENvbHVtbnNWaXNpYmlsaXR5KCk6IHZvaWQge1xyXG4gIGNvbnN0IGZsYXR0ZW4gPSB0aGlzLmZsYXR0ZW5Db2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcbiAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBmbGF0dGVuLmZpbHRlcigoYzogYW55KSA9PiBjLmlzX3Zpc2libGUpO1xyXG4gIGNvbnN0IGFsbFNlbGVjdGVkID0gdmlzaWJsZUNvbHVtbnMubGVuZ3RoID09PSBmbGF0dGVuLmxlbmd0aDtcclxuICBpZiAoYWxsU2VsZWN0ZWQpIHtcclxuICAgIGZsYXR0ZW4uZm9yRWFjaCgoY29sOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgY29sLmlzX3Zpc2libGUgPSBpbmRleCA8IDI7XHJcbiAgICB9KTtcclxuICB9IGVsc2Uge1xyXG4gICAgZmxhdHRlbi5mb3JFYWNoKChjb2w6IGFueSkgPT4gKGNvbC5pc192aXNpYmxlID0gdHJ1ZSkpO1xyXG4gIH1cclxuICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMTAwKTtcclxuICB9LCAxMDApO1xyXG59XHJcblxyXG52aXNpYmxlQ29sdW1ucygpe1xyXG4gIGNvbnN0IGZsYXR0ZW4gPSB0aGlzLmZsYXR0ZW5Db2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcbiAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBmbGF0dGVuLmZpbHRlcigoYzogYW55KSA9PiBjLmlzX3Zpc2libGUpO1xyXG4gIHJldHVybiB2aXNpYmxlQ29sdW1ucztcclxufVxyXG5cclxuICBmbGF0dGVuQ29sdW1ucyhjb2xzOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIHJldHVybiBjb2xzLnJlZHVjZSgoYWNjOiBhbnlbXSwgY29sOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGNvbD8uY2hpbGRyZW4gJiYgY29sLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgIC8vIHJlY3Vyc2l2ZWx5IGZsYXR0ZW4gY2hpbGRyZW5cclxuICAgICAgICByZXR1cm4gYWNjLmNvbmNhdCh0aGlzLmZsYXR0ZW5Db2x1bW5zKGNvbC5jaGlsZHJlbikpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGxlYWYgY29sdW1uXHJcbiAgICAgICAgcmV0dXJuIGFjYy5jb25jYXQoY29sKTtcclxuICAgICAgfVxyXG4gICAgfSwgW10pO1xyXG4gIH1cclxuXHJcblxyXG4gIGZpbHRlcmVkQ29sdW1ucyhjb2xzOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIGNvbnN0IHNlYXJjaCA9IHRoaXMuY29sdW1uU2VhcmNoLnRvTG93ZXJDYXNlKCk7XHJcbiAgICByZXR1cm4gY29sc1xyXG4gICAgICAubWFwKChjb2wpID0+IHtcclxuICAgICAgICBpZiAoY29sLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICBjb25zdCBmaWx0ZXJlZENoaWxkcmVuID0gdGhpcy5maWx0ZXJlZENvbHVtbnMoY29sLmNoaWxkcmVuKTtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgY29sLmhlYWRlci50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaCkgfHxcclxuICAgICAgICAgICAgZmlsdGVyZWRDaGlsZHJlbi5sZW5ndGhcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICByZXR1cm4geyAuLi5jb2wsIGNoaWxkcmVuOiBmaWx0ZXJlZENoaWxkcmVuIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIGNvbC5oZWFkZXIudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gpID8gY29sIDogbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5maWx0ZXIoQm9vbGVhbik7XHJcbiAgfVxyXG5cclxuICBnZXQgYWNjb3JkaW9uU3RhdGUoKTogJ2FsbCcgfCAnbm9uZScgfCAnc29tZScge1xyXG4gICAgY29uc3QgZ3JvdXBzID0gdGhpcy5nZXRBbGxHcm91cENvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIGNvbnN0IGV4cGFuZGVkQ291bnQgPSBncm91cHMuZmlsdGVyKChjb2wpID0+IGNvbC5leHBhbmRlZCkubGVuZ3RoO1xyXG5cclxuICAgIGlmIChleHBhbmRlZENvdW50ID09PSAwKSByZXR1cm4gJ25vbmUnO1xyXG4gICAgaWYgKGV4cGFuZGVkQ291bnQgPT09IGdyb3Vwcy5sZW5ndGgpIHJldHVybiAnYWxsJztcclxuICAgIHJldHVybiAnc29tZSc7XHJcbiAgfVxyXG5cclxuICBnZXQgZmlsdGVyQWNjb3JkaW9uU3RhdGUoKTogJ2FsbCcgfCAnbm9uZScgfCAnc29tZScge1xyXG4gICAgY29uc3QgZ3JvdXBzID0gdGhpcy5nZXRBbGxHcm91cENvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIGNvbnN0IGV4cGFuZGVkQ291bnQgPSBncm91cHMuZmlsdGVyKChjb2wpID0+IGNvbC5leHBhbmRlZEZpbHRlcikubGVuZ3RoO1xyXG5cclxuICAgIGlmIChleHBhbmRlZENvdW50ID09PSAwKSByZXR1cm4gJ25vbmUnO1xyXG4gICAgaWYgKGV4cGFuZGVkQ291bnQgPT09IGdyb3Vwcy5sZW5ndGgpIHJldHVybiAnYWxsJztcclxuICAgIHJldHVybiAnc29tZSc7XHJcbiAgfVxyXG5cclxuICAvLyBSZWN1cnNpdmVseSBjb2xsZWN0IGFsbCBncm91cCBjb2x1bW5zXHJcbiAgcHJpdmF0ZSBnZXRBbGxHcm91cENvbHVtbnMoY29sczogYW55W10pOiBhbnlbXSB7XHJcbiAgICBsZXQgZ3JvdXBzOiBhbnlbXSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29scykge1xyXG4gICAgICBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICBncm91cHMucHVzaChjb2wpO1xyXG4gICAgICAgIGdyb3VwcyA9IGdyb3Vwcy5jb25jYXQodGhpcy5nZXRBbGxHcm91cENvbHVtbnMoY29sLmNoaWxkcmVuKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBncm91cHM7XHJcbiAgfVxyXG5cclxuICAvLyBUb2dnbGUgYmFzZWQgb24gY3VycmVudCBzdGF0ZVxyXG4gIHRvZ2dsZUFsbEFjY29yZGlvbnMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZXh0U3RhdGUgPSB0aGlzLmFjY29yZGlvblN0YXRlID09PSAnYWxsJyA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIHRoaXMuc2V0QWNjb3JkaW9uU3RhdGUodGhpcy5jb2x1bW5zLCBuZXh0U3RhdGUpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQWxsRmlsdGVyQWNjb3JkaW9ucygpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5leHRTdGF0ZSA9IHRoaXMuZmlsdGVyQWNjb3JkaW9uU3RhdGUgPT09ICdhbGwnID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgdGhpcy5zZXRGaWx0ZXJBY2NvcmRpb25TdGF0ZSh0aGlzLmNvbHVtbnMsIG5leHRTdGF0ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEFjY29yZGlvblN0YXRlKGNvbHM6IGFueVtdLCBzdGF0ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgY29sIG9mIGNvbHMpIHtcclxuICAgICAgaWYgKGNvbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgY29sLmV4cGFuZGVkID0gc3RhdGU7XHJcbiAgICAgICAgdGhpcy5zZXRBY2NvcmRpb25TdGF0ZShjb2wuY2hpbGRyZW4sIHN0YXRlKTsgLy8gUmVjdXJzaXZlbHkgaGFuZGxlIG5lc3RlZFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgc2V0RmlsdGVyQWNjb3JkaW9uU3RhdGUoY29sczogYW55W10sIHN0YXRlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBjb2wgb2YgY29scykge1xyXG4gICAgICBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICBjb2wuZXhwYW5kZWRGaWx0ZXIgPSBzdGF0ZTtcclxuICAgICAgICB0aGlzLnNldEZpbHRlckFjY29yZGlvblN0YXRlKGNvbC5jaGlsZHJlbiwgc3RhdGUpOyAvLyBSZWN1cnNpdmVseSBoYW5kbGUgbmVzdGVkXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dDb2x1bW5QYW5lbCA9IGZhbHNlO1xyXG5cclxuICBjbG9zZU1vZGFsQ29sdW1uUGFuZWwoKSB7XHJcbiAgICB0aGlzLnNob3dDb2x1bW5QYW5lbCA9IGZhbHNlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKVxyXG4gIG9uRXNjYXBlKGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5jbG9zZU1vZGFsQ29sdW1uUGFuZWwoKTtcclxuICB9XHJcblxyXG4gIC8vIENoZWNrIElmICBBbnkgY29sdW1uIGhhdmUgcmlnaHQgcGlubmVkXHJcbiAgZ2V0IGhhc1JpZ2h0UGlubmVkQ29sdW1ucygpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5nZXRoYXNSaWdodFBpbm5lZENvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICB9XHJcblxyXG4gIGdldCBoYXNMZWZ0UGlubmVkQ29sdW1ucygpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5nZXRoYXNMZWZ0UGlubmVkQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRhdGFTZXRMZW5ndGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZ2V0RXhwYW5kZWRSb3dDb3VudCh0aGlzLmRhdGFTZXQpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBvblJlc2l6ZShldmVudDogVUlFdmVudCkge1xyXG4gICAgLy8gdGhpcy5hdXRvc2l6ZUFsbENvbHVtbnMoKTtcclxuICAgIGNvbnN0IGggPSB0aGlzLm1haW5TY3JvbGw/Lm5hdGl2ZUVsZW1lbnQ/LmNsaWVudEhlaWdodCA/PyAwO1xyXG4gICAgdGhpcy52aWV3cG9ydFJvd3MgPSBNYXRoLm1heCgxLCBNYXRoLmNlaWwoaCAvIHRoaXMucm93SGVpZ2h0KSk7XHJcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKHRoaXMubWFpblNjcm9sbD8ubmF0aXZlRWxlbWVudD8uc2Nyb2xsVG9wKTtcclxuICAgIHRoaXMuaGFzU2Nyb2xsID0gdGhpcy5oYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHsgfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHJlZnJlc2hIZWFkZXJzKCkge1xyXG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoYXN5bmMgKCkgPT4ge1xyXG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgMCkpO1xyXG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xyXG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG5cclxuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldCBoYXNBbnlWaXNpYmxlQ29sdW1uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU2V2aWNlLmdldGhhc1Zpc2libGVDb2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcbiAgfVxyXG5cclxuICBnZXQgaGFzQW55SW5WaXNpYmxlQ29sdW1uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU2V2aWNlLmdldGhhc0luVmlzaWJsZUNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICB9XHJcblxyXG4gIGdldCBjb2x1bW5zQ291bnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZ2V0VG90YWxDb2x1bW5zTGVuZ3RoKHRoaXMuY29sdW1ucyk7XHJcbiAgfVxyXG5cclxuICB0YWJsZUhlYWRlckFuZEJvZHlIZWlnaHQoKSB7XHJcbiAgICByZXR1cm4gYGNhbGMoMTAwJSAtICR7dGhpcy5mb290ZXJSb3dIZWlnaHR9KWA7XHJcbiAgfVxyXG5cclxuICBkcmFnZ2luZ0luR3JvdXBBcmVhID0gZmFsc2U7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NlbnRlclNjcm9sbCcpIGNlbnRlclNjcm9sbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIHZpc2libGVSb3dDb3VudCA9IDI1O1xyXG4gIHN0YXJ0SW5kZXggPSAwO1xyXG4gIHZpc2libGVSb3dzOiBhbnlbXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIGZsYXR0ZW5Hcm91cGVkUm93cyhcclxuICAgIHJvd3M6IGFueVtdID0gW10sXHJcbiAgICBsZXZlbCA9IDAsXHJcbiAgICByZXN1bHQ6IGFueVtdID0gW11cclxuICApOiBhbnlbXSB7XHJcbiAgICBmb3IgKGNvbnN0IHJvdyBvZiByb3dzKSB7XHJcbiAgICAgIHJlc3VsdC5wdXNoKHsgLi4ucm93LCBfX2RlcHRoOiBsZXZlbCB9KTtcclxuICAgICAgaWYgKHJvdy5pc0dyb3VwICYmIHJvdy5pc0V4cGFuZCAmJiByb3cuY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuZmxhdHRlbkdyb3VwZWRSb3dzKHJvdy5jaGlsZHJlbiwgbGV2ZWwgKyAxLCBbXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuYXNzaWduVmlydHVhbEluZGV4ZXModGhpcy52aXNpYmxlUm93cyk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgYXNzaWduVmlydHVhbEluZGV4ZXMoZGF0YTogYW55W10pOiBhbnlbXSB7XHJcbiAgICBsZXQgY3VycmVudEluZGV4ID0gMTtcclxuICAgIGNvbnN0IHdhbGsgPSAoaXRlbXM6IGFueVtdKTogdm9pZCA9PiB7XHJcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xyXG4gICAgICAgIGl0ZW0uX192aXJ0dWFsSW5kZXggPSBjdXJyZW50SW5kZXgrKztcclxuICAgICAgICBpZiAoaXRlbT8uaXNHcm91cCkge1xyXG4gICAgICAgICAgY29uc3QgZ3JvdXAgPSBpdGVtO1xyXG4gICAgICAgICAgaWYgKGdyb3VwLmlzRXhwYW5kICYmIEFycmF5LmlzQXJyYXkoZ3JvdXAuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgIHdhbGsoZ3JvdXAuY2hpbGRyZW4pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHdhbGsoZGF0YSk7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnVGhpcyBkYXRhc2V0OiAnLCB0aGlzLnZpc2libGVSb3dzKVxyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG5cclxuXHJcbiAgdXBkYXRlVmlzaWJsZVJvd3Moc2Nyb2xsVG9wOiBudW1iZXIpIHtcclxuXHJcbiAgICBpZiAodGhpcy5ncm91cGVkQ29sdW1ucz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMudmlzaWJsZVJvd3MgPSB0aGlzLmRhdGFTZXQ7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZsYXREYXRhID0gdGhpcy5mbGF0dGVuR3JvdXBlZFJvd3ModGhpcy5kYXRhU2V0KTtcclxuXHJcbiAgICBpZiAodGhpcy5kYXRhU2V0Py5sZW5ndGggPD0gMTUpIHtcclxuICAgICAgdGhpcy52aXNpYmxlUm93cyA9IGZsYXREYXRhO1xyXG4gICAgICB0aGlzLmZpcnN0SW5kZXggPSAwO1xyXG4gICAgICB0aGlzLnN0YXJ0SW5kZXggPSAwO1xyXG4gICAgICB0aGlzLnJlbmRlclN0YXJ0ID0gMDtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB0b3RhbCA9IGZsYXREYXRhLmxlbmd0aDtcclxuICAgIGNvbnN0IG1heEZpcnN0ID0gTWF0aC5tYXgoMCwgdG90YWwgLSB0aGlzLnZpZXdwb3J0Um93cyk7XHJcbiAgICBjb25zdCBmaXJzdCA9IE1hdGgubWluKE1hdGguZmxvb3Ioc2Nyb2xsVG9wIC8gdGhpcy5yb3dIZWlnaHQpLCBtYXhGaXJzdCk7XHJcbiAgICBjb25zdCBzdGFydCA9IE1hdGgubWF4KDAsIGZpcnN0KTtcclxuICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKHRvdGFsLCBmaXJzdCArIHRoaXMudmlld3BvcnRSb3dzKTtcclxuXHJcbiAgICB0aGlzLmZpcnN0SW5kZXggPSBmaXJzdDtcclxuICAgIHRoaXMuc3RhcnRJbmRleCA9IGZpcnN0O1xyXG4gICAgdGhpcy5yZW5kZXJTdGFydCA9IHN0YXJ0O1xyXG4gICAgdGhpcy52aXNpYmxlUm93cyA9IGZsYXREYXRhLnNsaWNlKHN0YXJ0LCBlbmQpO1xyXG4gICAgdGhpcy5hc3NpZ25WaXJ0dWFsSW5kZXhlcyh0aGlzLnZpc2libGVSb3dzKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG5cclxuICB0cmFja0J5UmVuZGVyZWRJbmRleCA9IChpOiBudW1iZXIsIF9yb3c6IGFueSkgPT4gdGhpcy5yZW5kZXJTdGFydCArIGk7XHJcblxyXG4gIHByaXZhdGUgaXNTeW5jaW5nRnJvbU1haW4gPSBmYWxzZTtcclxuICBwcml2YXRlIGlzU3luY2luZ0Zyb21GYWtlID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBtYWluU2Nyb2xsUmFmOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgdHJhY2tCeUlkKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xyXG4gICAgcmV0dXJuIGl0ZW0uaWQgfHwgaXRlbS5faWQ7XHJcbiAgfVxyXG5cclxuICBmbGF0dGVuZWREYXRhOiBhbnlbXSA9IFtdO1xyXG5cclxuICB1cGRhdGVGbGF0dGVuZWREYXRhKCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZmxhdHRlbmVkRGF0YSA9IHRoaXMuZmxhdHRlbkdyb3VwZWRSb3dzKHRoaXMuZGF0YVNldCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sIDEwKTtcclxuICB9XHJcblxyXG4gIC8vIHJlcXVlc3RBbmltYXRpb25GcmFtZSBJRHNcclxuICBwcml2YXRlIGZha2VTY3JvbGxSYWY6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgLy8gb25NYWluU2Nyb2xsKGV2ZW50OiBFdmVudCkge1xyXG4gIC8vICAgdGhpcy5leHBhbmRlZENlbGxzLmNsZWFyKCk7XHJcbiAgLy8gICBjb25zdCBzY3JvbGxUb3AgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxUb3A7XHJcbiAgLy8gICAgIGlmICh0aGlzLmdyb3VwZWRDb2x1bW5zPy5sZW5ndGggPiAwKSB7XHJcbiAgLy8gICAgICAgdGhpcy5zdGFydEluZGV4ID0gMDtcclxuICAvLyAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgLy8gICAgICAgcmV0dXJuO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIGNvbnN0IG92ZXJzY2FuID0gdGhpcy5vdmVyc2NhbiAqIDI7XHJcbiAgLy8gICAgIHRoaXMuc3RhcnRJbmRleCA9IE1hdGguZmxvb3Ioc2Nyb2xsVG9wIC8gdGhpcy5yb3dIZWlnaHQpO1xyXG4gIC8vICAgICBjb25zdCBzdGFydCA9IE1hdGgubWF4KDAsIHRoaXMuc3RhcnRJbmRleCAtIG92ZXJzY2FuKTtcclxuICAvLyAgICAgY29uc3QgZW5kID0gTWF0aC5taW4odGhpcy5mbGF0dGVuZWREYXRhLmxlbmd0aCwgdGhpcy5zdGFydEluZGV4ICsgdGhpcy52aWV3cG9ydFJvd3MgKyBvdmVyc2Nhbik7XHJcbiAgLy8gICAgIHRoaXMudmlzaWJsZVJvd3MgPSB0aGlzLmZsYXR0ZW5lZERhdGEuc2xpY2Uoc3RhcnQsIGVuZCk7XHJcbiAgLy8gICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyB9XHJcbiAgdHJhbnNsYXRlWSA9IDA7XHJcblxyXG4gIGxhc3RTY3JvbGxUb3AgPSAwO1xyXG4gIHBlbmRpbmdBbmltYXRpb25GcmFtZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIG9uTWFpblNjcm9sbChldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IHNjcm9sbFRvcCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbFRvcDtcclxuICAgIGlmIChNYXRoLmFicyhzY3JvbGxUb3AgLSB0aGlzLmxhc3RTY3JvbGxUb3ApIDwgKDEwKSkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMucGVuZGluZ0FuaW1hdGlvbkZyYW1lKSBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnBlbmRpbmdBbmltYXRpb25GcmFtZSk7XHJcbiAgICBpZiAodGhpcy5ncm91cGVkQ29sdW1ucz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnN0YXJ0SW5kZXggPSAwO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMucGVuZGluZ0FuaW1hdGlvbkZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgY29uc3Qgc2Nyb2xsaW5nRG93biA9IHNjcm9sbFRvcCA+IHRoaXMubGFzdFNjcm9sbFRvcDtcclxuICAgICAgdGhpcy5sYXN0U2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG5cclxuICAgICAgY29uc3Qgb3ZlcnNjYW4gPSA1O1xyXG4gICAgICBjb25zdCBuZXdTdGFydEluZGV4ID0gTWF0aC5mbG9vcihzY3JvbGxUb3AgLyB0aGlzLnJvd0hlaWdodCk7XHJcbiAgICAgIGNvbnN0IGR5bmFtaWNPdmVyc2NhbiA9IHNjcm9sbGluZ0Rvd24gPyBvdmVyc2NhbiA6IG92ZXJzY2FuO1xyXG5cclxuICAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heCgwLCBuZXdTdGFydEluZGV4IC0gZHluYW1pY092ZXJzY2FuKTtcclxuICAgICAgY29uc3QgZW5kID0gTWF0aC5taW4oXHJcbiAgICAgICAgdGhpcy5mbGF0dGVuZWREYXRhLmxlbmd0aCxcclxuICAgICAgICBuZXdTdGFydEluZGV4ICsgdGhpcy52aWV3cG9ydFJvd3MgKyBkeW5hbWljT3ZlcnNjYW5cclxuICAgICAgKTtcclxuICAgICAgdGhpcy50cmFuc2xhdGVZID0gc3RhcnQgKiB0aGlzLnJvd0hlaWdodDtcclxuICAgICAgaWYgKHRoaXMuc3RhcnRJbmRleCAhPT0gc3RhcnQgfHwgdGhpcy52aXNpYmxlUm93cy5sZW5ndGggIT09IGVuZCAtIHN0YXJ0KSB7XHJcbiAgICAgICAgdGhpcy5zdGFydEluZGV4ID0gc3RhcnQ7XHJcbiAgICAgICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuZGF0YVNldC5zbGljZShzdGFydCwgZW5kKTtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5wZW5kaW5nQW5pbWF0aW9uRnJhbWUgPSBudWxsO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gb25NYWluU2Nyb2xsKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5leHBhbmRlZENlbGxzLmNsZWFyKCk7XHJcbiAgLy8gICBpZiAodGhpcy5pc1N5bmNpbmdGcm9tRmFrZSkge1xyXG4gIC8vICAgICB0aGlzLmlzU3luY2luZ0Zyb21GYWtlID0gZmFsc2U7XHJcbiAgLy8gICAgIHJldHVybjtcclxuICAvLyAgIH1cclxuICAvLyAgIGNvbnN0IHNjcm9sbFRvcCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbFRvcDtcclxuICAvLyAgIGlmIChNYXRoLmFicyhzY3JvbGxUb3AgLSB0aGlzLmxhc3RTY3JvbGxUb3ApIDwgdGhpcy5yb3dIZWlnaHQgLyAyKSByZXR1cm47XHJcbiAgLy8gICB0aGlzLmxhc3RTY3JvbGxUb3AgPSBzY3JvbGxUb3A7XHJcblxyXG4gIC8vICAgaWYgKHRoaXMuZmFrZVNjcm9sbFJhZikgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5mYWtlU2Nyb2xsUmFmKTtcclxuXHJcbiAgLy8gICB0aGlzLmZha2VTY3JvbGxSYWYgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gIC8vICAgICBpZiAodGhpcy5ncm91cGVkQ29sdW1ucz8ubGVuZ3RoID4gMCkge1xyXG4gIC8vICAgICAgIHRoaXMuc3RhcnRJbmRleCA9IDA7XHJcbiAgLy8gICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIC8vICAgICAgIHJldHVybjtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgICBjb25zdCBmbGF0RGF0YSA9IHRoaXMuZmxhdHRlbkdyb3VwZWRSb3dzKHRoaXMuZGF0YVNldCk7XHJcbiAgLy8gICAgIGNvbnN0IHRvdGFsUm93cyA9IGZsYXREYXRhLmxlbmd0aDtcclxuICAvLyAgICAgY29uc3QgbmV3U3RhcnRJbmRleCA9IE1hdGguZmxvb3Ioc2Nyb2xsVG9wIC8gdGhpcy5yb3dIZWlnaHQpO1xyXG4gIC8vICAgICBjb25zdCBzdGFydCA9IE1hdGgubWF4KDAsIG5ld1N0YXJ0SW5kZXggLSAodGhpcy5vdmVyc2NhbiAqIDIpKTtcclxuICAvLyAgICAgY29uc3QgZW5kID0gTWF0aC5taW4odG90YWxSb3dzLCBuZXdTdGFydEluZGV4ICsgdGhpcy52aWV3cG9ydFJvd3MgKyAodGhpcy5vdmVyc2NhbiAqIDIpKTtcclxuXHJcbiAgLy8gICAgIHRoaXMudHJhbnNsYXRlWSA9IHN0YXJ0ICogdGhpcy5yb3dIZWlnaHQ7XHJcbiAgLy8gICAgIHRoaXMuc3RhcnRJbmRleCA9IHN0YXJ0O1xyXG4gIC8vICAgICB0aGlzLnZpc2libGVSb3dzID0gZmxhdERhdGEuc2xpY2Uoc3RhcnQsIGVuZCk7XHJcbiAgLy8gICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcblxyXG4gIGdldCBpc1Njcm9sbGJhclZpc2libGUoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMubWFpblNjcm9sbCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgZWwgPSB0aGlzLm1haW5TY3JvbGwubmF0aXZlRWxlbWVudDtcclxuICAgIHJldHVybiBlbC5zY3JvbGxIZWlnaHQgPiBlbC5jbGllbnRIZWlnaHQ7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVFeHBhbmQocm93OiBhbnkpIHtcclxuICAgIGlmIChyb3cuZGV0YWlscykge1xyXG4gICAgICByb3cuaXNEZXRhaWxzRXhwYW5kID0gIXJvdy5pc0RldGFpbHNFeHBhbmQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByb3cuaXNFeHBhbmQgPSAhcm93LmlzRXhwYW5kO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuY2xlYXIoKTtcclxuICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xyXG4gICAgLy8gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIC8vIH0sIDEwMCk7XHJcbiAgfVxyXG5cclxuICAvLyBvbk1haW5GYWtlU2Nyb2xsKGV2ZW50OiBFdmVudCkge1xyXG4gIC8vICAgaWYgKHRoaXMuaXNTeW5jaW5nRnJvbU1haW4pIHtcclxuICAvLyAgICAgdGhpcy5pc1N5bmNpbmdGcm9tTWFpbiA9IGZhbHNlO1xyXG4gIC8vICAgICByZXR1cm47XHJcbiAgLy8gICB9XHJcbiAgLy8gICBpZiAodGhpcy5ncm91cGVkQ29sdW1ucz8ubGVuZ3RoID4gMCkge1xyXG4gIC8vICAgICB0aGlzLnN0YXJ0SW5kZXggPSAwO1xyXG4gIC8vICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgLy8gICAgIHJldHVybjtcclxuICAvLyAgIH1cclxuICAvLyAgIGNvbnN0IHNjcm9sbFRvcCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbFRvcDtcclxuICAvLyAgIGlmICh0aGlzLm1haW5TY3JvbGxSYWYpIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMubWFpblNjcm9sbFJhZik7XHJcbiAgLy8gICB0aGlzLm1haW5TY3JvbGxSYWYgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gIC8vICAgICB0aGlzLmlzU3luY2luZ0Zyb21GYWtlID0gdHJ1ZTtcclxuICAvLyAgICAgdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG4gIC8vICAgICBjb25zdCBvdmVyc2NhbiA9IHRoaXMub3ZlcnNjYW4gPz8gMDtcclxuICAvLyAgICAgdGhpcy5zdGFydEluZGV4ID0gTWF0aC5mbG9vcihzY3JvbGxUb3AgLyB0aGlzLnJvd0hlaWdodCk7XHJcbiAgLy8gICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5tYXgoMCwgdGhpcy5zdGFydEluZGV4IC0gb3ZlcnNjYW4pO1xyXG4gIC8vICAgICBjb25zdCBlbmQgPSBNYXRoLm1pbihcclxuICAvLyAgICAgICB0aGlzLmZsYXR0ZW5lZERhdGEubGVuZ3RoLFxyXG4gIC8vICAgICAgIHRoaXMuc3RhcnRJbmRleCArIHRoaXMudmlld3BvcnRSb3dzICsgb3ZlcnNjYW5cclxuICAvLyAgICAgKTtcclxuICAvLyAgICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuZmxhdHRlbmVkRGF0YS5zbGljZShzdGFydCwgZW5kKTtcclxuICAvLyAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgdmlld3BvcnRSb3dzID0gMDsgLy8gaG93IG1hbnkgcm93cyBmaXQgaW4gdmlld3BvcnQgKGNvbXB1dGVkKVxyXG4gIGZpcnN0SW5kZXggPSAwOyAvLyBpbmRleCBvZiB0aGUgZmlyc3QgdmlzaWJsZSByb3cgKGNsYW1wZWQpXHJcbiAgcmVuZGVyU3RhcnQgPSAwOyAvLyB3aGVyZSB0aGUgc2xpY2UgYWN0dWFsbHkgc3RhcnRzIChmaXJzdEluZGV4IC0gb3ZlcnNjYW4sIGNsYW1wZWQpXHJcblxyXG4gIHByaXZhdGUgc2Nyb2xsUmFmOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIHBlbmRpbmdTY3JvbGxUb3AgPSAwO1xyXG5cclxuICBAVmlld0NoaWxkKCdtYWluU2Nyb2xsJykgbWFpblNjcm9sbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2Zha2VTY3JvbGwnKSBmYWtlU2Nyb2xsITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnaG9yaXppbnRhbEZha2VTY3JvbGwnKVxyXG4gIGhvcml6aW50YWxGYWtlU2Nyb2xsITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnY2VudGVyU2Nyb2xsYWJsZUJvZHknKVxyXG4gIGNlbnRlclNjcm9sbGFibGVCb2R5ITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgcHJpdmF0ZSBvdmVyc2NhbiA9IDEwOyAvLyBidWZmZXIgcm93cyBhYm92ZSBhbmQgYmVsb3dcclxuXHJcbiAgY29tcHV0ZVZpZXdwb3J0Um93cygpIHtcclxuICAgIGlmICh0aGlzLmZha2VTY3JvbGw/Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5mYWtlU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMubWFpblNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIGNvbnN0IGggPSB0aGlzLm1haW5TY3JvbGwubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgPz8gMDtcclxuXHJcbiAgICAgIC8vIHJvd3MgdmlzaWJsZSBpbiB2aWV3cG9ydFxyXG4gICAgICBjb25zdCByb3dzSW5WaWV3cG9ydCA9IE1hdGgubWF4KDEsIE1hdGguY2VpbChoIC8gdGhpcy5yb3dIZWlnaHQpKTtcclxuXHJcbiAgICAgIC8vIGFkZCBidWZmZXIgcm93cyAob3ZlcnNjYW4pXHJcbiAgICAgIHRoaXMudmlld3BvcnRSb3dzID0gcm93c0luVmlld3BvcnQgKyB0aGlzLm92ZXJzY2FuO1xyXG5cclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIG9uSG9yaXpvbnRhbEZha2VTY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBzY3JvbGxMZWZ0ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuc2Nyb2xsTGVmdDtcclxuICAgIHRoaXMuY2VudGVyUGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQ7XHJcbiAgICBpZiAodGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICB0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNlbnRlckJvZHlTY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAodGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICB0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRhcmdldC5zY3JvbGxMZWZ0O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY2VudGVyUGlubmVkSGVhZGVyKSB7XHJcbiAgICAgIHRoaXMuY2VudGVyUGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRhcmdldC5zY3JvbGxMZWZ0O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaG9yaXppbnRhbEZha2VTY3JvbGw/Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5ob3JpemludGFsRmFrZVNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0YXJnZXQuc2Nyb2xsTGVmdDtcclxuICAgIH1cclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIG9uQ2VudGVySGVhZGVyU2Nyb2xsKGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKHRoaXMuaG9yaXppbnRhbEZha2VTY3JvbGw/Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5ob3JpemludGFsRmFrZVNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0YXJnZXQuc2Nyb2xsTGVmdDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Py5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHkubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBEcmFnZ2luZyBMb2dpYyBpcyBpbXBsZW1lbnRlZCBoZXJlXHJcbiAgLy8gcHJpdmF0ZSBpbml0aWFsSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICBkcmFnZ2luZ0NvbHVtbjogYW55O1xyXG4gIGRyYWdTdGFydEluZGV4OiBhbnkgPSAwO1xyXG4gIC8vIG9uRHJhZ1N0YXJ0KGRhdGE6IGFueSwgaW5kZXg6IG51bWJlcikge1xyXG4gIC8vICAgdGhpcy5kcmFnZ2luZ0NvbHVtbiA9IGRhdGEuY29sdW1uO1xyXG4gIC8vICAgdGhpcy5kcmFnU3RhcnRJbmRleCA9IGluZGV4O1xyXG4gIC8vIH1cclxuICAvLyBvbkRyYWdNb3ZlKGRhdGE6IGFueSkge1xyXG4gIC8vICAgY29uc3QgeyBjbGllbnRYLCBjbGllbnRZIH0gPSBkYXRhLmV2ZW50O1xyXG4gIC8vICAgY29uc3QgaGVhZGVycyA9IEFycmF5LmZyb20oXHJcbiAgLy8gICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5vbmUtcm93LWhlYWRlci1jZWxscycpXHJcbiAgLy8gICApIGFzIEhUTUxFbGVtZW50W107XHJcblxyXG4gIC8vICAgaGVhZGVycy5mb3JFYWNoKChoZWFkZXJFbCwgaWR4KSA9PiB7XHJcbiAgLy8gICAgIGNvbnN0IHJlY3QgPSBoZWFkZXJFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAvLyAgICAgaWYgKFxyXG4gIC8vICAgICAgIGlkeCAhPT0gdGhpcy5kcmFnU3RhcnRJbmRleCAmJlxyXG4gIC8vICAgICAgIGNsaWVudFggPiByZWN0LmxlZnQgJiZcclxuICAvLyAgICAgICBjbGllbnRYIDwgcmVjdC5yaWdodCAmJlxyXG4gIC8vICAgICAgIGNsaWVudFkgPiByZWN0LnRvcCAmJlxyXG4gIC8vICAgICAgIGNsaWVudFkgPCByZWN0LmJvdHRvbVxyXG4gIC8vICAgICApIHtcclxuICAvLyAgICAgICBjb25zdCBvdGhlckluZGV4ID0gaWR4O1xyXG4gIC8vICAgICAgIGNvbnNvbGUubG9nKGAke3RoaXMuZHJhZ1N0YXJ0SW5kZXh9IC0tPiAke290aGVySW5kZXh9YCk7XHJcbiAgLy8gICAgICAgdGhpcy5zd2FwQ29sdW1uKHRoaXMuZHJhZ1N0YXJ0SW5kZXgsIG90aGVySW5kZXgpO1xyXG4gIC8vICAgICAgIGNvbnNvbGUubG9nKCdVcGRhdGVkIENvbHVtbnM6ICcsIHRoaXMuY29sdW1ucyk7XHJcbiAgLy8gICAgICAgdGhpcy5kcmFnU3RhcnRJbmRleCA9IG90aGVySW5kZXg7IC8vIHVwZGF0ZSBpbmRleFxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIC8vIHN3YXBDb2x1bW4ocHJldml1c0luZGV4OiBudW1iZXIsIGN1cnJlbnRJbmRleDogbnVtYmVyKSB7XHJcbiAgLy8gICBjb25zdCBjb2x1bW5zID0gc3RydWN0dXJlZENsb25lKHRoaXMuY29sdW1ucyk7XHJcbiAgLy8gICBjb25zdCBmbGF0dGVuQ29sdW1ucyA9IHRoaXMuZmxhdHRlbkNvbHVtbnMoY29sdW1ucyk7XHJcblxyXG4gIC8vICAgY29uc3QgdmlzaWJsZUZsYXR0ZW5Db2x1bW5zID0gZmxhdHRlbkNvbHVtbnMuZmlsdGVyKFxyXG4gIC8vICAgICAoY29sKSA9PiBjb2wuaXNfdmlzaWJsZVxyXG4gIC8vICAgKTtcclxuICAvLyAgIGNvbnN0IHByZXZpdXNDb2x1bW4gPSB2aXNpYmxlRmxhdHRlbkNvbHVtbnNbcHJldml1c0luZGV4XTtcclxuICAvLyAgIGNvbnN0IGN1cnJlbnRDb2x1bW4gPSB2aXNpYmxlRmxhdHRlbkNvbHVtbnNbY3VycmVudEluZGV4XTtcclxuXHJcbiAgLy8gICBjb25zb2xlLmxvZygnUHJldml1cyBDb2x1bW46ICcsIHByZXZpdXNDb2x1bW4pO1xyXG4gIC8vICAgY29uc29sZS5sb2coJ2N1cnJlbnQgY2x1bW46ICcsIGN1cnJlbnRDb2x1bW4pO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gb25EcmFnRW5kKGRhdGE6IGFueSkge1xyXG4gIC8vICAgdGhpcy5kcmFnZ2luZ0NvbHVtbiA9IG51bGw7XHJcbiAgLy8gICB0aGlzLmRyYWdTdGFydEluZGV4ID0gbnVsbDtcclxuICAvLyB9XHJcblxyXG4gIC8vIENESyBEUkFHIERST1AgTE9HSUMgR09FUyBIRVJFXHJcblxyXG5cclxuICBjYW5FbnRlclRvUm93c0dyb3VwaW5nID0gKGRyYWc6IENka0RyYWc8YW55PiwgZHJvcDogQ2RrRHJvcExpc3Q8YW55PikgPT4ge1xyXG4gICAgLy8gRXhhbXBsZTogQmxvY2sgaWYgYWxyZWFkeSBwaW5uZWQgbGVmdFxyXG4gICAgY29uc3QgZGF0YSA9IGRyYWcuZGF0YTtcclxuICAgIGlmIChkYXRhPy5jaGlsZHJlbiAmJiBkYXRhPy5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIGRhdGEuY2hpbGRyZW4uc29tZShcclxuICAgICAgICAoY29sOiBhbnkpID0+IGNvbC5pc192aXNpYmxlICYmIGNvbC5pc19ncm91cGFibGVcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBkYXRhLmlzX3Zpc2libGUgJiYgZGF0YS5pc19ncm91cGFibGU7XHJcbiAgfTtcclxuXHJcbiAgLy8gb25EcmFnTW92ZWQoZXZlbnQ6IENka0RyYWdNb3ZlPGFueT4pIHtcclxuICAvLyAgIGNvbnN0IHBvaW50ZXJYID0gZXZlbnQucG9pbnRlclBvc2l0aW9uLng7XHJcbiAgLy8gICBjb25zdCBwb2ludGVyWSA9IGV2ZW50LnBvaW50ZXJQb3NpdGlvbi55O1xyXG5cclxuICAvLyAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcclxuICAvLyAgICAgJ3Jvd3MtZ3JvdXBpbmctdG9wLWNvbnRhaW5lcidcclxuICAvLyAgICk7XHJcblxyXG4gIC8vICAgaWYgKHRhcmdldEVsZW1lbnQpIHtcclxuICAvLyAgICAgY29uc3QgcmVjdCA9IHRhcmdldEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gIC8vICAgICBjb25zdCBpc092ZXJUYXJnZXQgPVxyXG4gIC8vICAgICAgIHBvaW50ZXJYID49IHJlY3QubGVmdCAmJlxyXG4gIC8vICAgICAgIHBvaW50ZXJYIDw9IHJlY3QucmlnaHQgJiZcclxuICAvLyAgICAgICBwb2ludGVyWSA+PSByZWN0LnRvcCAmJlxyXG4gIC8vICAgICAgIHBvaW50ZXJZIDw9IHJlY3QuYm90dG9tO1xyXG5cclxuICAvLyAgICAgaWYgKGlzT3ZlclRhcmdldCkge1xyXG4gIC8vICAgICAgIHRoaXMuZHJhZ2dpbmdJbkdyb3VwQXJlYSA9IHRydWU7XHJcbiAgLy8gICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgdGhpcy5kcmFnZ2luZ0luR3JvdXBBcmVhID0gZmFsc2U7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIGVudGVyVG9Ub3BSb3dHcm91cGluZyhkcm9wTGlzdDogQ2RrRHJhZ0VudGVyPGFueT4pIHtcclxuICAgIGNvbnN0IGRyYWdnaW5nRGF0YSA9IGRyb3BMaXN0Lml0ZW0uZGF0YTtcclxuICAgIHRoaXMuZHJhZ2dpbmdJbkdyb3VwQXJlYSA9IHRydWU7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhcIkRyYWdnaW5nIGluIGdyb3VwIGFyZWFcIilcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkcmFnZ2luZ0RhdGE/LmNoaWxkcmVuKSkge1xyXG4gICAgICBjb25zdCB0YXJnZXRHcm91cCA9IHRoaXMuY29sdW1ucy5maW5kKFxyXG4gICAgICAgIChjb2wpID0+IGNvbC5oZWFkZXIgPT09IGRyYWdnaW5nRGF0YS5oZWFkZXJcclxuICAgICAgKTtcclxuICAgICAgaWYgKHRhcmdldEdyb3VwKSB7XHJcbiAgICAgICAgZHJhZ2dpbmdEYXRhLmNoaWxkcmVuLmZvckVhY2goKGRyYWdnZWRDaGlsZDogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBtYXRjaGluZ0NoaWxkID0gdGFyZ2V0R3JvdXAuY2hpbGRyZW4uZmluZChcclxuICAgICAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLmZpZWxkID09PSBkcmFnZ2VkQ2hpbGQuZmllbGRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAobWF0Y2hpbmdDaGlsZCkge1xyXG4gICAgICAgICAgICBtYXRjaGluZ0NoaWxkLmlzUm93R3JvdXBlZCA9ICEhbWF0Y2hpbmdDaGlsZC5pc19ncm91cGFibGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAvLyBUcnkgZmluZGluZyBpdCBpbiB0b3AtbGV2ZWwgY29sdW1ucyBmaXJzdFxyXG4gICAgICBsZXQgdGFyZ2V0Q29sdW1uID0gdGhpcy5jb2x1bW5zLmZpbmQoXHJcbiAgICAgICAgKGNvbDogYW55KSA9PiBjb2wuZmllbGQgPT09IGRyYWdnaW5nRGF0YS5maWVsZFxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKHRhcmdldENvbHVtbikge1xyXG4gICAgICAgIHRhcmdldENvbHVtbi5pc1Jvd0dyb3VwZWQgPSAhIXRhcmdldENvbHVtbi5pc19ncm91cGFibGU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9yIChsZXQgZ3JvdXAgb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShncm91cC5jaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmdDaGlsZCA9IGdyb3VwLmNoaWxkcmVuLmZpbmQoXHJcbiAgICAgICAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLmZpZWxkID09PSBkcmFnZ2luZ0RhdGEuZmllbGRcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKG1hdGNoaW5nQ2hpbGQpIHtcclxuICAgICAgICAgICAgICBtYXRjaGluZ0NoaWxkLmlzUm93R3JvdXBlZCA9ICEhbWF0Y2hpbmdDaGlsZC5pc19ncm91cGFibGU7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyDinIUgUmVmcmVzaCBVSVxyXG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG9uRHJvcExpc3RFbnRlcihcclxuICAgIGRyb3BMaXN0OiBDZGtEcmFnRW50ZXI8YW55PixcclxuICAgIHNlY3Rpb246ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0J1xyXG4gICkge1xyXG4gICAgY29uc3QgZHJhZ2dpbmdEYXRhID0gZHJvcExpc3QuaXRlbS5kYXRhO1xyXG5cclxuICAgIGNvbnN0IHRhcmdldENvbHVtbjogYW55ID0gdGhpcy5jb2x1bW5zLmZpbmQoXHJcbiAgICAgIChjb2wpID0+IGNvbC5oZWFkZXIgPT0gZHJhZ2dpbmdEYXRhLmhlYWRlclxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoIXRhcmdldENvbHVtbikgcmV0dXJuO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgQXJyYXkuaXNBcnJheShkcmFnZ2luZ0RhdGE/LmNoaWxkcmVuKSAmJlxyXG4gICAgICBBcnJheS5pc0FycmF5KHRhcmdldENvbHVtbj8uY2hpbGRyZW4pXHJcbiAgICApIHtcclxuICAgICAgZHJhZ2dpbmdEYXRhLmNoaWxkcmVuLmZvckVhY2goKGRyYWdnZWRDaGlsZDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbWF0Y2hpbmdDaGlsZCA9IHRhcmdldENvbHVtbi5jaGlsZHJlbi5maW5kKFxyXG4gICAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLmZpZWxkID09PSBkcmFnZ2VkQ2hpbGQuZmllbGRcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChtYXRjaGluZ0NoaWxkKSB7XHJcbiAgICAgICAgICBtYXRjaGluZ0NoaWxkLnBpbm5lZCA9IHNlY3Rpb24gPT09ICdjZW50ZXInID8gbnVsbCA6IHNlY3Rpb247XHJcbiAgICAgICAgICBtYXRjaGluZ0NoaWxkWydpc1Jvd0dyb3VwZWQnXSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0YXJnZXRDb2x1bW4ucGlubmVkID0gc2VjdGlvbiA9PT0gJ2NlbnRlcicgPyBudWxsIDogc2VjdGlvbjtcclxuICAgICAgdGFyZ2V0Q29sdW1uWydpc1Jvd0dyb3VwZWQnXSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvLyBlbnRlclRvVG9wR3JvdXBpbmdSb3coZHJvcExpc3Q6IENka0RyYWdFbnRlcjxhbnk+KSB7XHJcbiAgLy8gICB0aGlzLnNob3VsZERpc2FibGVEcm9wbGlzdFNvcnRpbmcgPSB0aGlzLmlzRGlzYWJsZUNvbHVtbkdyb3VwaW5nO1xyXG4gIC8vICAgdGhpcy5kcmFnZ2luZ0luR3JvdXBBcmVhID0gdHJ1ZTtcclxuICAvLyAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyBjb25zdCBpbmRleCA9IHRoaXMuZ3JvdXBlZENvbHVtbnMuZmluZEluZGV4KFxyXG4gIC8vICAgKGNvbCkgPT4gY29sLmZpZWxkID09PSBjb2x1bW4uZmllbGRcclxuICAvLyApO1xyXG4gIC8vIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAvLyAgIHRoaXMuZ3JvdXBlZENvbHVtbnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAvLyB9XHJcblxyXG4gIC8vIC8vIDIuIFRyYXZlcnNlIHRoaXMuY29sdW1ucyB0byBmaW5kIGFuZCB1cGRhdGUgdGhlIG1hdGNoaW5nIGNvbHVtblxyXG4gIC8vIHRoaXMuY29sdW1ucy5mb3JFYWNoKChncm91cCkgPT4ge1xyXG4gIC8vICAgaWYgKGdyb3VwPy5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGdyb3VwLmNoaWxkcmVuKSkge1xyXG4gIC8vICAgICBncm91cC5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xyXG4gIC8vICAgICAgIGlmIChjaGlsZC5maWVsZCA9PT0gY29sdW1uLmZpZWxkKSB7XHJcbiAgLy8gICAgICAgICBjaGlsZC5pc1Jvd0dyb3VwZWQgPSBmYWxzZTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vICAgfSBlbHNlIGlmIChncm91cC5maWVsZCA9PT0gY29sdW1uLmZpZWxkKSB7XHJcbiAgLy8gICAgIGdyb3VwLmlzUm93R3JvdXBlZCA9IGZhbHNlO1xyXG4gIC8vICAgfVxyXG4gIC8vIH0pO1xyXG4gIC8vICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIC8vIH1cclxuXHJcbiAgZXhpdGVkRnJvbVRoZVRvcFJvdyhkcm9wTGlzdDogQ2RrRHJhZ0V4aXQ8YW55Pikge1xyXG4gICAgdGhpcy5kcmFnZ2luZ0luR3JvdXBBcmVhID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzRGlzYWJsZUNvbHVtbkdyb3VwaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3VsZERpc2FibGVEcm9wbGlzdFNvcnRpbmcgPSBmYWxzZTtcclxuICAgIGNvbnN0IGRyYWdnaW5nRGF0YSA9IGRyb3BMaXN0Lml0ZW0uZGF0YTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGRyYWdnaW5nRGF0YT8uY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNvbnN0IHRhcmdldEdyb3VwID0gdGhpcy5jb2x1bW5zLmZpbmQoXHJcbiAgICAgICAgKGNvbCkgPT4gY29sLmhlYWRlciA9PT0gZHJhZ2dpbmdEYXRhLmhlYWRlclxyXG4gICAgICApO1xyXG4gICAgICBpZiAodGFyZ2V0R3JvdXApIHtcclxuICAgICAgICBkcmFnZ2luZ0RhdGEuY2hpbGRyZW4uZm9yRWFjaCgoZHJhZ2dlZENoaWxkOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG1hdGNoaW5nQ2hpbGQgPSB0YXJnZXRHcm91cC5jaGlsZHJlbi5maW5kKFxyXG4gICAgICAgICAgICAoY2hpbGQ6IGFueSkgPT4gY2hpbGQuZmllbGQgPT09IGRyYWdnZWRDaGlsZC5maWVsZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmIChtYXRjaGluZ0NoaWxkKSB7XHJcbiAgICAgICAgICAgIG1hdGNoaW5nQ2hpbGQuaXNSb3dHcm91cGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCB0YXJnZXRDb2x1bW4gPSB0aGlzLmNvbHVtbnMuZmluZChcclxuICAgICAgICAoY29sOiBhbnkpID0+IGNvbC5maWVsZCA9PT0gZHJhZ2dpbmdEYXRhLmZpZWxkXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAodGFyZ2V0Q29sdW1uKSB7XHJcbiAgICAgICAgdGFyZ2V0Q29sdW1uLmlzUm93R3JvdXBlZCA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvciAobGV0IGdyb3VwIG9mIHRoaXMuY29sdW1ucykge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZ3JvdXAuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoaW5nQ2hpbGQgPSBncm91cC5jaGlsZHJlbi5maW5kKFxyXG4gICAgICAgICAgICAgIChjaGlsZDogYW55KSA9PiBjaGlsZC5maWVsZCA9PT0gZHJhZ2dpbmdEYXRhLmZpZWxkXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChtYXRjaGluZ0NoaWxkKSB7XHJcbiAgICAgICAgICAgICAgbWF0Y2hpbmdDaGlsZC5pc1Jvd0dyb3VwZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNob3VsZERpc2FibGVEcm9wbGlzdFNvcnRpbmcgPSBmYWxzZTtcclxuICBpc0Rpc2FibGVDb2x1bW5Hcm91cGluZyA9IGZhbHNlO1xyXG4gIGNoZWNrQ29sdW1uR3JvdXBpbmdTdGF0dXMoY29sOiBhbnkpIHtcclxuICAgIGlmIChjb2w/LmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSkge1xyXG4gICAgICBjb25zdCBhbGxDaGlsZHJlbkRpc2FibGVkID0gY29sLmNoaWxkcmVuLmV2ZXJ5KFxyXG4gICAgICAgIChjaGlsZDogYW55KSA9PiBjaGlsZC5pc19ncm91cGFibGUgPT09IGZhbHNlXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuaXNEaXNhYmxlQ29sdW1uR3JvdXBpbmcgPSBhbGxDaGlsZHJlbkRpc2FibGVkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pc0Rpc2FibGVDb2x1bW5Hcm91cGluZyA9IGNvbC5pc19ncm91cGFibGUgPT09IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgY3VycmVudERyYWdnaW5nQ29sdW1uOiBhbnkgPSBudWxsO1xyXG4gIGRyYWdTdGFydE9uR3JvdXAoY29sOiBhbnkpIHtcclxuICAgIHRoaXMuY3VycmVudERyYWdnaW5nQ29sdW1uID0gY29sO1xyXG4gIH1cclxuXHJcbiAgb25Tb3J0R3JvdXAgPSBhc3luYyAoZXZlbnQ6IENka0RyYWdTb3J0RXZlbnQ8YW55Piwgc2VjdGlvbjogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCBjb2x1bW5zID0gKHRoaXMgYXMgYW55KVtzZWN0aW9uXTtcclxuICAgIGlmIChldmVudC5wcmV2aW91c0luZGV4ID09PSBldmVudC5jdXJyZW50SW5kZXgpIHJldHVybjtcclxuICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID0gY29sdW1ucy5maWx0ZXIoKGNvbDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChjb2w/LmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSkge1xyXG4gICAgICAgIHJldHVybiBjb2wuY2hpbGRyZW4uc29tZSgoY2hpbGQ6IGFueSkgPT4gY2hpbGQuaXNfdmlzaWJsZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNvbC5pc192aXNpYmxlO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBwcmV2aW91c0hlYWRlciA9IHZpc2libGVDb2x1bW5zW2V2ZW50LnByZXZpb3VzSW5kZXhdLmhlYWRlcjtcclxuICAgIGNvbnN0IGN1cnJlbnRIZWFkZXIgPSB2aXNpYmxlQ29sdW1uc1tldmVudC5jdXJyZW50SW5kZXhdLmhlYWRlcjtcclxuICAgIGNvbnN0IHZpc2libGVQcmV2SW5kZXggPSB2aXNpYmxlQ29sdW1ucy5maW5kSW5kZXgoXHJcbiAgICAgIChjb2w6IGFueSkgPT4gY29sLmhlYWRlciA9PT0gcHJldmlvdXNIZWFkZXJcclxuICAgICk7XHJcbiAgICBjb25zdCB2aXNpYmxlQ3VyckluZGV4ID0gdmlzaWJsZUNvbHVtbnMuZmluZEluZGV4KFxyXG4gICAgICAoY29sOiBhbnkpID0+IGNvbC5oZWFkZXIgPT09IGN1cnJlbnRIZWFkZXJcclxuICAgICk7XHJcbiAgICBjb25zdCBnZXRGaWVsZHMgPSAoaXRlbTogYW55KTogc3RyaW5nW10gPT4ge1xyXG4gICAgICBpZiAoaXRlbT8uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShpdGVtLmNoaWxkcmVuKSkge1xyXG4gICAgICAgIHJldHVybiBpdGVtLmNoaWxkcmVuLm1hcCgoY2hpbGQ6IGFueSkgPT4gY2hpbGQuZmllbGQpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBbaXRlbS5maWVsZF07XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcHJldkZpZWxkcyA9IGdldEZpZWxkcyh2aXNpYmxlQ29sdW1uc1t2aXNpYmxlUHJldkluZGV4XSk7XHJcbiAgICBjb25zdCBjdXJyRmllbGRzID0gZ2V0RmllbGRzKHZpc2libGVDb2x1bW5zW3Zpc2libGVDdXJySW5kZXhdKTtcclxuICAgIGNvbnN0IGFsbEZpZWxkcyA9IFsuLi5wcmV2RmllbGRzLCAuLi5jdXJyRmllbGRzXTtcclxuICAgIGNvbnN0IGNlbGxzID0gYWxsRmllbGRzLmxlbmd0aFxyXG4gICAgICA/IChbXSBhcyBIVE1MRWxlbWVudFtdKS5jb25jYXQoXHJcbiAgICAgICAgLi4uYWxsRmllbGRzLm1hcCgoZmllbGQpID0+XHJcbiAgICAgICAgICBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7ZmllbGR9XCJdYCkpIGFzIEhUTUxFbGVtZW50W11cclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgICAgOiBbXTtcclxuICAgIGNvbnN0IGZpcnN0UG9zaXRpb25zID0gbmV3IE1hcDxIVE1MRWxlbWVudCwgbnVtYmVyPigpO1xyXG4gICAgY2VsbHMuZm9yRWFjaCgoZWwpID0+IGZpcnN0UG9zaXRpb25zLnNldChlbCwgZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCkpO1xyXG4gICAgLy8gY29uc29sZS5sb2coXCJ0aGlzIC5jb2x1bnNcIiwgdGhpcy5jb2x1bW5zKTtcclxuICAgIG1vdmVJdGVtSW5BcnJheSgodGhpcyBhcyBhbnkpW3NlY3Rpb25dLCB2aXNpYmxlUHJldkluZGV4LCB2aXNpYmxlQ3VyckluZGV4KTtcclxuXHJcbiAgICBjb25zdCBwcmV2Q29sSW5kZXhJbkNvbHVtbnMgPSB0aGlzLmNvbHVtbnMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5oZWFkZXIgPT09IHByZXZpb3VzSGVhZGVyKTtcclxuICAgIGNvbnN0IGN1cnJDb2xJbmRleEluQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmhlYWRlciA9PT0gY3VycmVudEhlYWRlcik7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5jb2x1bW5zLCBwcmV2Q29sSW5kZXhJbkNvbHVtbnMsIGN1cnJDb2xJbmRleEluQ29sdW1ucyk7XHJcbiAgICAvLyBhd2FpdCB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgYWxsRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgIGNvbnN0IHVwZGF0ZWRDZWxscyA9IEFycmF5LmZyb20oXHJcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2ZpZWxkPVwiJHtmaWVsZH1cIl1gKVxyXG4gICAgICApIGFzIEhUTUxFbGVtZW50W107XHJcblxyXG4gICAgICB1cGRhdGVkQ2VsbHMuZm9yRWFjaCgoZWwpID0+IHtcclxuICAgICAgICBjb25zdCBuZXdMZWZ0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcclxuICAgICAgICBjb25zdCBvbGRMZWZ0ID0gZmlyc3RQb3NpdGlvbnMuZ2V0KGVsKSE7XHJcbiAgICAgICAgY29uc3QgZGVsdGFYID0gb2xkTGVmdCAtIG5ld0xlZnQ7XHJcbiAgICAgICAgaWYgKGRlbHRhWCAhPT0gMCkge1xyXG4gICAgICAgICAgZWwuc3R5bGUud2lsbENoYW5nZSA9ICd0cmFuc2Zvcm0nO1xyXG4gICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICdub25lJztcclxuICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKCR7ZGVsdGFYfXB4KWA7XHJcbiAgICAgICAgICB2b2lkIGVsLm9mZnNldFdpZHRoO1xyXG4gICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICd0cmFuc2Zvcm0gMzAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSc7XHJcbiAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlWCgwKSc7XHJcbiAgICAgICAgICBjb25zdCBoYW5kbGUgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnJztcclxuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJyc7XHJcbiAgICAgICAgICAgIGVsLnN0eWxlLndpbGxDaGFuZ2UgPSAnJztcclxuICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGhhbmRsZSk7XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGhhbmRsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIG9uRHJvcEdyb3VwKCkge1xyXG4gICAgdGhpcy5sZWZ0UGlubmVkQ29sdW1ucyA9IHRoaXMuZGVlcENsb25lQ29sdW1ucyh0aGlzLnByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucyk7XHJcbiAgICB0aGlzLmNlbnRlckNvbHVtbnMgPSB0aGlzLmRlZXBDbG9uZUNvbHVtbnModGhpcy5wcmV2aWV3Q2VudGVyQ29sdW1ucyk7XHJcbiAgICB0aGlzLnJpZ2h0UGlubmVkQ29sdW1ucyA9IHRoaXMuZGVlcENsb25lQ29sdW1ucyh0aGlzLnByZXZpZXdSaWdodFBpbm5lZENvbHVtbnMpO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuXHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRlZXBDbG9uZUNvbHVtbnMoY29sdW1uczogYW55W10pOiBhbnlbXSB7XHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29sdW1ucykpIHJldHVybiBbXTtcclxuXHJcbiAgICByZXR1cm4gY29sdW1ucy5tYXAoY29sID0+ICh7XHJcbiAgICAgIC4uLmNvbCxcclxuICAgICAgcXVlcnk6IGNvbC5xdWVyeSA/IHsgLi4uY29sLnF1ZXJ5IH0gOiBudWxsLFxyXG4gICAgICBjb2x1bW5fZHJvcGRvd25fdmFsdWU6IEFycmF5LmlzQXJyYXkoY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZSlcclxuICAgICAgICA/IFsuLi5jb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXVxyXG4gICAgICAgIDogW10sXHJcbiAgICAgIC8vIFJlY3Vyc2l2ZWx5IGRlZXAgY2xvbmUgY2hpbGRyZW4gaWYgcHJlc2VudFxyXG4gICAgICBjaGlsZHJlbjogQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pXHJcbiAgICAgICAgPyB0aGlzLmRlZXBDbG9uZUNvbHVtbnMoY29sLmNoaWxkcmVuKVxyXG4gICAgICAgIDogdW5kZWZpbmVkLFxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcblxyXG4gIGFzeW5jIG9uRHJvcFRvcEdyb3VwKGV2ZW50OiBDZGtEcmFnRHJvcDxhbnk+KSB7XHJcbiAgICBpZiAodGhpcy5pc091dHNpZGVDb250YWluZXIpIHJldHVybjtcclxuICAgIHRoaXMubWFpblNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IDA7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy50cmFuc2xhdGVZID0gMDtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIGNvbnN0IGRyYWdnZWREYXRhID0gZXZlbnQuaXRlbS5kYXRhO1xyXG4gICAgaWYgKGRyYWdnZWREYXRhPy5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGRyYWdnZWREYXRhLmNoaWxkcmVuKSkge1xyXG4gICAgICBkcmFnZ2VkRGF0YS5jaGlsZHJlbi5mb3JFYWNoKChjb2w6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChjb2wuaXNfdmlzaWJsZSAmJiBjb2wuaXNfZ3JvdXBhYmxlKSB7XHJcbiAgICAgICAgICB0aGlzLmdyb3VwZWRDb2x1bW5zLnB1c2goY29sKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGRyYWdnZWREYXRhLmlzX3Zpc2libGUgJiYgZHJhZ2dlZERhdGEuaXNfZ3JvdXBhYmxlKSB7XHJcbiAgICAgICAgdGhpcy5ncm91cGVkQ29sdW1ucy5wdXNoKGRyYWdnZWREYXRhKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5kcmFnZ2luZ0luR3JvdXBBcmVhID0gZmFsc2U7XHJcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmdyb3VwZWRDb2x1bW5zLm1hcCgoaXRlbSkgPT4gaXRlbS5maWVsZCk7XHJcbiAgICB0aGlzLmRhdGFTZXQgPSBhd2FpdCB0aGlzLmdyb3VwRGF0YUFzeW5jKHRoaXMub3JpZ2luYWxEYXRhU2V0LCBmaWVsZHMpO1xyXG4gICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcbiAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xyXG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3MoMCk7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRDZWxscyA9IFtdO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sIDEwMDApO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25Hcm91cFJlb3JkZXIoZXZlbnQ6IENka0RyYWdEcm9wPGFueVtdPikge1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuZ3JvdXBlZENvbHVtbnMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmdyb3VwZWRDb2x1bW5zLm1hcCgoaXRlbSkgPT4gaXRlbS5maWVsZCk7XHJcbiAgICB0aGlzLmRhdGFTZXQgPSBhd2FpdCB0aGlzLmdyb3VwRGF0YUFzeW5jKHRoaXMub3JpZ2luYWxEYXRhU2V0LCBmaWVsZHMpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xyXG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xyXG4gICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMTAwKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5ncm91cEJveFBhZGRpbmcgPSB0aGlzLmNvbHVtbnNHcm91cGVkQm94Py5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKClcclxuICAgIH0sIDEwKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHVuZ3JvdXBDb2x1bW4oY29sdW1uOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdyb3VwZWRDb2x1bW5zLmZpbmRJbmRleChcclxuICAgICAgICAoY29sKSA9PiBjb2wuZmllbGQgPT09IGNvbHVtbi5maWVsZFxyXG4gICAgICApO1xyXG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgdGhpcy5ncm91cGVkQ29sdW1ucy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZ3JvdXBlZENvbHVtbnMubWFwKChpdGVtKSA9PiBpdGVtLmZpZWxkKTtcclxuICAgICAgdGhpcy5kYXRhU2V0ID0gYXdhaXQgdGhpcy5ncm91cERhdGFBc3luYyh0aGlzLm9yaWdpbmFsRGF0YVNldCwgZmllbGRzKTtcclxuICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGdyb3VwKSA9PiB7XHJcbiAgICAgICAgaWYgKGdyb3VwPy5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGdyb3VwLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgZ3JvdXAuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY2hpbGQuZmllbGQgPT09IGNvbHVtbi5maWVsZCkge1xyXG4gICAgICAgICAgICAgIGNoaWxkLmlzUm93R3JvdXBlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwLmZpZWxkID09PSBjb2x1bW4uZmllbGQpIHtcclxuICAgICAgICAgIGdyb3VwLmlzUm93R3JvdXBlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSwgMTAwMCk7XHJcblxyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBpbiB1bmdyb3VwQ29sdW1uOlwiLCBlcnIpO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG5cclxuICBzaG91bGRUaGVHcm91cEhlYWRlclNob3coZ3JvdXA6IGFueSkge1xyXG4gICAgaWYgKGdyb3VwPy5jaGlsZHJlbiAmJiBncm91cC5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIGdyb3VwLmNoaWxkcmVuLnNvbWUoXHJcbiAgICAgICAgKGNvbDogYW55KSA9PiBjb2wuaXNfdmlzaWJsZSAmJiAhY29sPy5pc1Jvd0dyb3VwZWRcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBncm91cD8uaXNfdmlzaWJsZSAmJiAhZ3JvdXA/LmlzUm93R3JvdXBlZDtcclxuICB9XHJcblxyXG5cclxuICAvLyBvbkNoaWxkRHJhZ1N0YXJ0KCkge1xyXG4gIC8vICAgZGVidWdnZXI7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBkcm9wTGlzdElkczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgLy8gZ2VuZXJhdGVEcm9wTGlzdElkcygpIHtcclxuICAvLyAgIHRoaXMuZHJvcExpc3RJZHMgPSBbXTtcclxuXHJcbiAgLy8gICBjb25zdCBzZWN0aW9uS2V5cyA9IFtcclxuICAvLyAgICAgJ2xlZnRQaW5uZWRDb2x1bW5zJyxcclxuICAvLyAgICAgJ2NlbnRlckNvbHVtbnMnLFxyXG4gIC8vICAgICAncmlnaHRQaW5uZWRDb2x1bW5zJyxcclxuICAvLyAgIF07XHJcblxyXG4gIC8vICAgc2VjdGlvbktleXMuZm9yRWFjaCgoc2VjdGlvbktleSkgPT4ge1xyXG4gIC8vICAgICBjb25zdCBzZWN0aW9uQ29scyA9ICh0aGlzIGFzIGFueSlbc2VjdGlvbktleV07XHJcblxyXG4gIC8vICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaCgoY29sOiBhbnksIGk6IG51bWJlcikgPT4ge1xyXG4gIC8vICAgICAgIGlmIChjb2w/LmNoaWxkcmVuPy5sZW5ndGggPiAwKSB7XHJcbiAgLy8gICAgICAgICBjb2wuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQ6IGFueSwgY2hpbGRJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgLy8gICAgICAgICAgIGlmIChjaGlsZD8uaXNfdmlzaWJsZSAmJiAhY2hpbGQuaXNSb3dHcm91cGVkKSB7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgaWQgPSBgJHtzZWN0aW9uS2V5fSR7aX1gO1xyXG4gIC8vICAgICAgICAgICAgIHRoaXMuZHJvcExpc3RJZHMucHVzaChpZCk7XHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgIH0pO1xyXG4gIC8vICAgICAgIH0gZWxzZSBpZiAoY29sPy5pc192aXNpYmxlICYmICFjb2wuaXNSb3dHcm91cGVkKSB7XHJcbiAgLy8gICAgICAgICBjb25zdCBpZCA9IGAke3NlY3Rpb25LZXl9JHtpfWA7XHJcbiAgLy8gICAgICAgICB0aGlzLmRyb3BMaXN0SWRzLnB1c2goaWQpO1xyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfSk7XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIG9uQ2hpbGREcm9wbGlzdFNvcnRlZCA9IGFzeW5jIChldmVudDogQ2RrRHJhZ1NvcnRFdmVudDxhbnk+LCBzZWN0aW9uOiBzdHJpbmcpID0+IHtcclxuICAgIGlmIChldmVudC5wcmV2aW91c0luZGV4ID09PSBldmVudC5jdXJyZW50SW5kZXgpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBwaW5uZWQgPVxyXG4gICAgICBzZWN0aW9uID09ICdwcmV2aWV3TGVmdFBpbm5lZENvbHVtbnMnXHJcbiAgICAgICAgPyAnbGVmdCdcclxuICAgICAgICA6IHNlY3Rpb24gPT0gJ3ByZXZpZXdSaWdodFBpbm5lZENvbHVtbnMnXHJcbiAgICAgICAgICA/ICdyaWdodCdcclxuICAgICAgICAgIDogXCJcIjtcclxuXHJcbiAgICBjb25zdCBjb2x1bW4gPSBldmVudC5pdGVtLmRhdGE7XHJcbiAgICBsZXQgZ3JvdXAgPSB0aGlzLmNvbHVtbnMuZmluZChcclxuICAgICAgKGNvbDogYW55KSA9PlxyXG4gICAgICAgIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSAmJlxyXG4gICAgICAgIGNvbC5jaGlsZHJlbi5zb21lKChjaGlsZDogYW55KSA9PiBjaGlsZD8uZmllbGQgPT09IGNvbHVtbj8uZmllbGQpXHJcbiAgICApO1xyXG4gICAgY29uc3QgZ3JvdXBJbmRleCA9IHRoaXMuY29sdW1ucy5maW5kSW5kZXgoXHJcbiAgICAgIChjb2wpID0+IGNvbC5oZWFkZXIgPT09IGdyb3VwLmhlYWRlclxyXG4gICAgKTtcclxuICAgIGNvbnN0IGZpbHRlcmVkR3JvdXAgPSBncm91cD8uY2hpbGRyZW4uZmlsdGVyKChjb2w6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBpc1Bpbm5lZE1hdGNoID1cclxuICAgICAgICAocGlubmVkID09PSBcIlwiICYmICghY29sPy5waW5uZWQgfHwgY29sPy5waW5uZWQgPT09IFwiXCIpKSB8fCBjb2w/LnBpbm5lZCA9PT0gcGlubmVkO1xyXG4gICAgICByZXR1cm4gaXNQaW5uZWRNYXRjaCAmJiBjb2w/LmlzX3Zpc2libGU7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBwcmV2aW91c0ZpZWxkID0gZmlsdGVyZWRHcm91cFtldmVudC5wcmV2aW91c0luZGV4XS5maWVsZDtcclxuICAgIGNvbnN0IGN1cnJlbnRGaWVsZCA9IGZpbHRlcmVkR3JvdXBbZXZlbnQuY3VycmVudEluZGV4XS5maWVsZDtcclxuICAgIGNvbnN0IHZpc2libGVQcmV2SW5kZXggPSBncm91cC5jaGlsZHJlbi5maW5kSW5kZXgoXHJcbiAgICAgIChjb2w6IGFueSkgPT4gY29sLmZpZWxkID09IHByZXZpb3VzRmllbGRcclxuICAgICk7XHJcbiAgICBjb25zdCB2aXNpYmxlQ3VyckluZGV4ID0gZ3JvdXAuY2hpbGRyZW4uZmluZEluZGV4KFxyXG4gICAgICAoY29sOiBhbnkpID0+IGNvbC5maWVsZCA9PSBjdXJyZW50RmllbGRcclxuICAgICk7XHJcbiAgICBjb25zdCBhbGxGaWVsZHMgPSBbcHJldmlvdXNGaWVsZCwgY3VycmVudEZpZWxkXTtcclxuICAgIGNvbnN0IGNlbGxzID0gYWxsRmllbGRzLmxlbmd0aFxyXG4gICAgICA/IChbXSBhcyBIVE1MRWxlbWVudFtdKS5jb25jYXQoXHJcbiAgICAgICAgLi4uYWxsRmllbGRzLm1hcCgoZmllbGQpID0+XHJcbiAgICAgICAgICBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7ZmllbGR9XCJdYCkpIGFzIEhUTUxFbGVtZW50W11cclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgICAgOiBbXTtcclxuXHJcbiAgICBjb25zdCBncm91cEluU2VjdGlvbiA9ICh0aGlzIGFzIGFueSlbc2VjdGlvbl0uZmluZChcclxuICAgICAgKGNvbDogYW55KSA9PlxyXG4gICAgICAgIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSAmJlxyXG4gICAgICAgIGNvbC5jaGlsZHJlbi5zb21lKChjaGlsZDogYW55KSA9PiBjaGlsZD8uZmllbGQgPT09IGNvbHVtbj8uZmllbGQpXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGZpbHRlckdyb3VwSW5TZWN0aW9uID0gKHRoaXMgYXMgYW55KVtzZWN0aW9uXS5maW5kKFxyXG4gICAgICAoY29sOiBhbnkpID0+XHJcbiAgICAgICAgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pICYmXHJcbiAgICAgICAgY29sLmNoaWxkcmVuLnNvbWUoKGNoaWxkOiBhbnkpID0+IGNoaWxkPy5maWVsZCA9PT0gY29sdW1uPy5maWVsZClcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgZ3JvdXBJblNlY3Rpb25JbmRleCA9ICh0aGlzIGFzIGFueSlbc2VjdGlvbl0uZmluZEluZGV4KFxyXG4gICAgICAoY29sOiBhbnkpID0+IGNvbC5oZWFkZXIgPT09IGdyb3VwSW5TZWN0aW9uLmhlYWRlclxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBmaXJzdFBvc2l0aW9ucyA9IG5ldyBNYXA8SFRNTEVsZW1lbnQsIG51bWJlcj4oKTtcclxuICAgIGNlbGxzLmZvckVhY2goKGVsKSA9PiBmaXJzdFBvc2l0aW9ucy5zZXQoZWwsIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQpKTtcclxuICAgIG1vdmVJdGVtSW5BcnJheShcclxuICAgICAgdGhpcy5jb2x1bW5zW2dyb3VwSW5kZXhdPy5jaGlsZHJlbixcclxuICAgICAgdmlzaWJsZVByZXZJbmRleCxcclxuICAgICAgdmlzaWJsZUN1cnJJbmRleFxyXG4gICAgKTtcclxuXHJcbiAgICBtb3ZlSXRlbUluQXJyYXkoXHJcbiAgICAgICh0aGlzIGFzIGFueSlbc2VjdGlvbl0/Lltncm91cEluU2VjdGlvbkluZGV4XS5jaGlsZHJlbixcclxuICAgICAgZXZlbnQucHJldmlvdXNJbmRleCxcclxuICAgICAgZXZlbnQuY3VycmVudEluZGV4XHJcbiAgICApO1xyXG5cclxuICAgIC8vIGF3YWl0IHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBhbGxGaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgY29uc3QgdXBkYXRlZENlbGxzID0gQXJyYXkuZnJvbShcclxuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZmllbGQ9XCIke2ZpZWxkfVwiXWApXHJcbiAgICAgICkgYXMgSFRNTEVsZW1lbnRbXTtcclxuICAgICAgdXBkYXRlZENlbGxzLmZvckVhY2goKGVsKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3TGVmdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XHJcbiAgICAgICAgY29uc3Qgb2xkTGVmdCA9IGZpcnN0UG9zaXRpb25zLmdldChlbCkhO1xyXG4gICAgICAgIGNvbnN0IGRlbHRhWCA9IG9sZExlZnQgLSBuZXdMZWZ0O1xyXG4gICAgICAgIGlmIChkZWx0YVggIT09IDApIHtcclxuICAgICAgICAgIGVsLnN0eWxlLndpbGxDaGFuZ2UgPSAndHJhbnNmb3JtJztcclxuICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSc7XHJcbiAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWCgke2RlbHRhWH1weClgO1xyXG4gICAgICAgICAgdm9pZCBlbC5vZmZzZXRXaWR0aDtcclxuICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAndHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSknO1xyXG4gICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVgoMCknO1xyXG5cclxuICAgICAgICAgIGNvbnN0IGhhbmRsZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICcnO1xyXG4gICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSAnJztcclxuICAgICAgICAgICAgZWwuc3R5bGUud2lsbENoYW5nZSA9ICcnO1xyXG4gICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgaGFuZGxlKTtcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgaGFuZGxlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICBjb25zb2xlLmdyb3VwKCdHcm91cDogJywgZ3JvdXApO1xyXG4gIH1cclxuXHJcblxyXG4gIG9uQ2hpbGREcm9wbGlzdERyb3BlZChjZGtEcmFnRHJvcGV2ZW50OiBDZGtEcmFnRHJvcDxhbnk+KSB7XHJcbiAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMik7XHJcbiAgfVxyXG5cclxuICAvLyBSb3dzIEdyb3VwaW5nIExvZ2ljIEdvZXMgSGVyZVxyXG5cclxuICBncm91cERhdGEoZGF0YTogYW55W10sIGdyb3VwRmllbGRzOiBzdHJpbmdbXSk6IGFueVtdIHtcclxuICAgIGxldCBkYXRhU2V0ID0gc3RydWN0dXJlZENsb25lKGRhdGEpO1xyXG4gICAgaWYgKCFncm91cEZpZWxkcy5sZW5ndGgpIHJldHVybiBkYXRhO1xyXG4gICAgY29uc3QgW2N1cnJlbnRGaWVsZCwgLi4ucmVzdEZpZWxkc10gPSBncm91cEZpZWxkcztcclxuICAgIGNvbnN0IGdyb3VwZWRNYXAgPSBuZXcgTWFwPHN0cmluZywgYW55W10+KCk7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZGF0YVNldCkge1xyXG4gICAgICBsZXQga2V5VmFsdWUgPSBjdXJyZW50RmllbGQuc3BsaXQoJy4nKS5yZWR1Y2UoKG9iaiwgaykgPT4gb2JqPy5ba10sIGl0ZW0pO1xyXG4gICAgICBsZXQgZ3JvdXBLZXk6IHN0cmluZztcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5VmFsdWUpKSB7XHJcbiAgICAgICAgaWYgKGtleVZhbHVlLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgZ3JvdXBLZXkgPSBcIl9CbGFua1wiO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGtleVZhbHVlWzBdID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgICBncm91cEtleSA9IGtleVZhbHVlXHJcbiAgICAgICAgICAgIC5tYXAob2JqID0+IChvYmo/LmRlcGFydG1lbnRfbmFtZSB8fCBvYmoucm9sZU5hbWUgfHwgb2JqPy5mdWxsX25hbWUpID8/IFwiX0JsYW5rXCIpXHJcbiAgICAgICAgICAgIC5qb2luKFwiLFwiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZ3JvdXBLZXkgPSBrZXlWYWx1ZVxyXG4gICAgICAgICAgICAubWFwKHZhbCA9PiB2YWwgPz8gXCJfQmxhbmtcIilcclxuICAgICAgICAgICAgLmpvaW4oXCIsXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBncm91cEtleSA9IGtleVZhbHVlID8/IFwiX0JsYW5rXCI7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFncm91cGVkTWFwLmhhcyhncm91cEtleSkpIGdyb3VwZWRNYXAuc2V0KGdyb3VwS2V5LCBbXSk7XHJcbiAgICAgIGdyb3VwZWRNYXAuZ2V0KGdyb3VwS2V5KSEucHVzaChpdGVtKTtcclxuICAgIH1cclxuICAgIHJldHVybiBBcnJheS5mcm9tKGdyb3VwZWRNYXAuZW50cmllcygpKS5tYXAoKFtncm91cFZhbHVlLCBncm91cEl0ZW1zXSkgPT4gKHtcclxuICAgICAgaXNHcm91cDogdHJ1ZSxcclxuICAgICAgZ3JvdXBGaWVsZDogY3VycmVudEZpZWxkLFxyXG4gICAgICBncm91cFZhbHVlLFxyXG4gICAgICBjaGlsZHJlbjogdGhpcy5ncm91cERhdGEoZ3JvdXBJdGVtcywgcmVzdEZpZWxkcyksXHJcbiAgICAgIGlzRXhwYW5kOiBmYWxzZSxcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG5cclxuICBjb3VudExlYWZSb3dzKGdyb3VwOiBhbnkpOiBudW1iZXIge1xyXG4gICAgaWYgKCFncm91cC5jaGlsZHJlbiB8fCAhZ3JvdXAuY2hpbGRyZW4ubGVuZ3RoKSByZXR1cm4gMDtcclxuXHJcbiAgICByZXR1cm4gZ3JvdXAuY2hpbGRyZW4ucmVkdWNlKChjb3VudDogbnVtYmVyLCBjaGlsZDogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiBjb3VudCArIChjaGlsZC5pc0dyb3VwID8gdGhpcy5jb3VudExlYWZSb3dzKGNoaWxkKSA6IDEpO1xyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICBpc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcclxuICB0b2dnbGVBY3RpdmVGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmlzQWN0aXZlRmlsdGVyT3BlbiA9ICF0aGlzLmlzQWN0aXZlRmlsdGVyT3BlbjtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUFjdGlvbnModHlwZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodHlwZSA9PT0gdGhpcy5hY3RpdmVUb3BCdXR0b24pIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gdHlwZTtcclxuICAgIGVsc2UgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSB0eXBlO1xyXG4gICAgdGhpcy5hY3RpdmVTdWJCdXR0b24gPSAnJztcclxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBhY3RpdmVTdWJCdXR0b24gPSAnJztcclxuICB0b2dnbGVTdWJBY3Rpb25zKHR5cGU6IHN0cmluZykge1xyXG4gICAgaWYgKHR5cGUgPT09IHRoaXMuYWN0aXZlU3ViQnV0dG9uKSB0aGlzLmFjdGl2ZVN1YkJ1dHRvbiA9ICcnO1xyXG4gICAgZWxzZSB0aGlzLmFjdGl2ZVN1YkJ1dHRvbiA9IHR5cGU7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVBY3Rpb25zRHJvcGRvd24oKSB7XHJcbiAgICB0aGlzLnNob3dBY3Rpb25zRHJvcERvd24gPSAhdGhpcy5zaG93QWN0aW9uc0Ryb3BEb3duO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBhc3luYyBjaGFuZ2VUYWJsZUxheW91dChldmVudDogRXZlbnQsIGxheW91dFR5cGU6IHN0cmluZykge1xyXG4gICAgbGV0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG5cclxuICAgIGlmICh0YXJnZXQuY2hlY2tlZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgPSBsYXlvdXRUeXBlO1xyXG4gICAgICBpZiAobGF5b3V0VHlwZSA9PT0gJ3NtYWxsJykge1xyXG4gICAgICAgIHRoaXMucm93SGVpZ2h0ID0gMzY7XHJcbiAgICAgICAgdGhpcy5oZWFkZXJSb3dIZWlnaHQgPSA0MDtcclxuICAgICAgICB0aGlzLmJvZHlUZXh0Rm9udHNTaXplID0gMTA7XHJcbiAgICAgICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gMTA7XHJcblxyXG4gICAgICB9IGVsc2UgaWYgKGxheW91dFR5cGUgPT09ICdtZWRpdW0nKSB7XHJcbiAgICAgICAgdGhpcy5yb3dIZWlnaHQgPSA0NDtcclxuICAgICAgICB0aGlzLmhlYWRlclJvd0hlaWdodCA9IDQ0O1xyXG4gICAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSAxNDtcclxuICAgICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSAxNDtcclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yb3dIZWlnaHQgPSA2MDtcclxuICAgICAgICB0aGlzLmhlYWRlclJvd0hlaWdodCA9IDUyO1xyXG4gICAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSAxNjtcclxuICAgICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSAxNjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKHRoaXMubWFpblNjcm9sbD8ubmF0aXZlRWxlbWVudD8uc2Nyb2xsVG9wKTtcclxuICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudGFibGVGaWx0ZXJWaWV3SWQpIHtcclxuICAgICAgdGhpcy5zYXZlUHJlc2V0KCdtb3VzZVVwJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uRm9udENoYW5nZSgpXHJcbiAgfVxyXG5cclxuXHJcbiAgcGFnZVNpemVPcHRpb25zID0gWzEwLCAyNSwgNTAsIDc1LCAxMDAsIDE1MCwgMjAwLCAyNTAsIDMwMCwgNTAwXTtcclxuICBnZXQgc3RhcnRJbmRleERhdGEoKSB7XHJcbiAgICByZXR1cm4gKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlIC0gMSkgKiB0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQ7XHJcbiAgfVxyXG5cclxuICBnZXQgZW5kSW5kZXgoKSB7XHJcbiAgICByZXR1cm4gTWF0aC5taW4odGhpcy5zdGFydEluZGV4ICsgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0LCB0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxSZXN1bHRzKTtcclxuICB9XHJcblxyXG4gIGdldCB2aXNpYmxlUGFnZXMoKTogKG51bWJlciB8IHN0cmluZylbXSB7XHJcbiAgICBjb25zdCBwYWdlczogKG51bWJlciB8IHN0cmluZylbXSA9IFtdO1xyXG5cclxuICAgIGlmICh0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxQYWdlcyA8PSA3KSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VzOyBpKyspIHtcclxuICAgICAgICBwYWdlcy5wdXNoKGkpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBwYWdlcy5wdXNoKDEpO1xyXG4gICAgICBpZiAodGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgPiAzKSB7XHJcbiAgICAgICAgcGFnZXMucHVzaCgnLi4uJyk7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHN0YXJ0ID0gTWF0aC5tYXgoMiwgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgLSAxKTtcclxuICAgICAgbGV0IGVuZCA9IE1hdGgubWluKHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VzIC0gMSwgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgKyAxKTtcclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkrKykge1xyXG4gICAgICAgIHBhZ2VzLnB1c2goaSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSA8IHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VzIC0gMikge1xyXG4gICAgICAgIHBhZ2VzLnB1c2goJy4uLicpO1xyXG4gICAgICB9XHJcbiAgICAgIHBhZ2VzLnB1c2godGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUGFnZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwYWdlcztcclxuICB9XHJcblxyXG5cclxuICBzZWFyY2hUZXh0Rm9yRmlsdGVyRHJvcERvd24gPSAnJztcclxuICB0b2dnbGVDb2x1bW5JbkZpbHRlckRyb3Bkb3duKGNvbDogYW55KSB7XHJcblxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQ29sdW1uRnJvbUZpbHRlcihvcHRpb246IGFueSkge1xyXG5cclxuICB9XHJcblxyXG4gIGhhbmRsZUJhY2tzcGFjZShldmVudDogRXZlbnQpIHtcclxuICAgIC8vIElmIHNlYXJjaCBpcyBlbXB0eSwgcmVtb3ZlIGxhc3QgdGFnXHJcbiAgICBpZiAoIXRoaXMuc2VhcmNoVGV4dEZvckZpbHRlckRyb3BEb3duICYmIHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBsYXN0ID0gdGhpcy5zZWxlY3RlZEZpbHRlck9wdGlvbnNbdGhpcy5zZWxlY3RlZEZpbHRlck9wdGlvbnMubGVuZ3RoIC0gMV07XHJcbiAgICAgIHRoaXMudG9nZ2xlU2VsZWN0aW9uSW5GaWx0ZXIobGFzdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCdmaWx0ZXJNZW51ZVNlYXJjaElucHV0JykgZmlsdGVyTWVudWVTZWFyY2hJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD5cclxuICBAVmlld0NoaWxkKCdmaWx0ZXJNZW51ZVRleHRjaElucHV0JykgZmlsdGVyTWVudWVUZXh0Y2hJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD5cclxuXHJcbiAgb3BlbkZpbHRlcm9uVGhyZWVEb3RzQ2xpY2soY29sOiBhbnkpIHtcclxuICAgIGlmIChjb2wudHlwZSA9PSAnaW1hZ2UnIHx8ICFjb2w/LnR5cGUpIHJldHVybjtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIgPSBjb2w7XHJcbiAgICB0aGlzLmlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IHRydWU7XHJcbiAgICBpZiAoY29sLnR5cGUgPT09ICdkcm9wZG93bicpIHtcclxuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuY2xlYXIoKTtcclxuICAgICAgY29uc3Qgc2F2ZWRJZHMgPSBjb2w/LnF1ZXJ5Py5faWRzIHx8IFtdO1xyXG4gICAgICBzYXZlZElkcy5mb3JFYWNoKChpZDogc3RyaW5nKSA9PiB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5hZGQoaWQpKTtcclxuXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zID0gdGhpcy5zZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLmZpbHRlcihcclxuICAgICAgICAob3B0aW9uOiBhbnkpID0+IHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhvcHRpb24/LmlkIHx8IG9wdGlvbj8uX2lkIHx8IG9wdGlvbilcclxuICAgICAgKTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyTWVudWVTZWFyY2hJbnB1dCkge1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJNZW51ZVNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9IGVsc2UgaWYgKFsnc3RyaW5nJywgJ251bWJlcicsICdkYXRlJ10uaW5jbHVkZXMoY29sLnR5cGUpKSB7XHJcbiAgICAgIHRoaXMuZmlyc3RDb25kaXRpb24gPSBjb2wucXVlcnkuZmlyc3RfY29uZGl0aW9uID8gY29sLnF1ZXJ5LmZpcnN0X2NvbmRpdGlvbiA6IChjb2wudHlwZSA9PSAnZGF0ZScgPyAnZXF1YWwnIDogJ2NvbnRhaW4nKTtcclxuICAgICAgdGhpcy5maXJzdFZhbHVlID0gY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgfHwgJyc7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uID0gY29sPy5xdWVyeT8uY29uZGl0aW9uIHx8ICdub25lJztcclxuICAgICAgdGhpcy5zZWNvbmRDb25kaXRpb24gPSAoY29sPy5xdWVyeT8uc2Vjb25kX2NvbmRpdGlvbikgfHwgbnVsbDtcclxuICAgICAgdGhpcy5zZWNvbmRWYWx1ZSA9IGNvbD8ucXVlcnk/LnNlY29uZF92YWx1ZSB8fCAnJztcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJNZW51ZVRleHRjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgfSwgMTAwKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGlzRmlsdGVyT3BlbiA9IGZhbHNlXHJcbiAgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI6IGFueTtcclxuICBzaG93RmlsdGVycyA9IHRoaXMuc2hvd1NpZGVNZW51ID8gZmFsc2UgOiBmYWxzZTtcclxuXHJcbiAgb3BlbkZpbHRlckZyb21EaXNhYmxlZFNlYXJjaGVkSW5wdXQoY29sOiBhbnkpIHtcclxuICAgIGlmIChjb2wudHlwZSAhPT0gJ2Ryb3Bkb3duJykgcmV0dXJuO1xyXG4gICAgdGhpcy5vcGVuRmlsdGVyKGNvbCk7XHJcbiAgfVxyXG5cclxuICBvcGVuRmlsdGVyKGNvbDogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBjb2w7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGxcclxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIgPSBjb2w7XHJcblxyXG4gICAgaWYgKGNvbC50eXBlID09PSAnZHJvcGRvd24nKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmNsZWFyKCk7XHJcbiAgICAgIGNvbnN0IHNhdmVkSWRzID0gY29sPy5xdWVyeT8uX2lkcyB8fCBbXTtcclxuICAgICAgc2F2ZWRJZHMuZm9yRWFjaCgoaWQ6IHN0cmluZykgPT4gdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuYWRkKGlkKSk7XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVyT3B0aW9ucyA9IHRoaXMuc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmNvbHVtbl9kcm9wZG93bl92YWx1ZT8uZmlsdGVyKFxyXG4gICAgICAgIChvcHRpb246IGFueSkgPT4gdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuaGFzKG9wdGlvbj8uaWQgfHwgb3B0aW9uPy5faWQgfHwgb3B0aW9uKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmIChbJ3N0cmluZycsICdudW1iZXInLCAnZGF0ZSddLmluY2x1ZGVzKGNvbC50eXBlKSkge1xyXG4gICAgICB0aGlzLmZpcnN0Q29uZGl0aW9uID0gY29sPy5xdWVyeT8uZmlyc3RfY29uZGl0aW9uIHx8ICdjb250YWluJztcclxuICAgICAgdGhpcy5maXJzdFZhbHVlID0gY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgfHwgJyc7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uID0gY29sPy5xdWVyeT8uY29uZGl0aW9uIHx8ICdub25lJztcclxuICAgICAgdGhpcy5zZWNvbmRDb25kaXRpb24gPSBjb2w/LnF1ZXJ5Py5zZWNvbmRfY29uZGl0aW9uIHx8IG51bGw7XHJcbiAgICAgIHRoaXMuc2Vjb25kVmFsdWUgPSBjb2w/LnF1ZXJ5Py5zZWNvbmRfdmFsdWUgfHwgJyc7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZmlyc3RWYWx1ZTogYW55ID0gJyc7XHJcbiAgZmlyc3RDb25kaXRpb24gPSAnJztcclxuICBzZWNvbmRWYWx1ZTogYW55ID0gJyc7XHJcbiAgc2Vjb25kQ29uZGl0aW9uID0gbnVsbDtcclxuICBjb25kaXRpb24gPSAnJztcclxuXHJcbiAgcmVzZXRUZXh0RmlsdGVyQ2hhbmdlcygpIHtcclxuICAgIHRoaXMuZmlyc3RDb25kaXRpb24gPSAnY29udGFpbic7XHJcbiAgICB0aGlzLmZpcnN0VmFsdWUgPSAnJztcclxuICAgIHRoaXMuY29uZGl0aW9uID0gJ25vbmUnO1xyXG4gICAgdGhpcy5zZWNvbmRDb25kaXRpb24gPSBudWxsO1xyXG4gICAgdGhpcy5zZWNvbmRWYWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5pc0ZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmFjdGl2ZVRvcEJ1dHRvbiA9ICcnO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQWxsVmFsdXNTZWxlY3Rpb25JbkRyb3Bkb3duRmlsdGVyKGNvbHVtbjogYW55KSB7XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIHNlbGVjdGVkRmlsdGVyT3B0aW9uczogYW55W10gPSBbXVxyXG5cclxuICBjdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuXHJcbiAgdG9nZ2xlU2VsZWN0aW9uSW5GaWx0ZXIob3B0aW9uOiBhbnkpIHtcclxuICAgIGRlYnVnZ2VyXHJcbiAgICBjb25zdCBpZCA9IG9wdGlvbi5pZCB8fCBvcHRpb24uX2lkIHx8IG9wdGlvbjtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5oYXMoaWQpKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmRlbGV0ZShpZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5hZGQoaWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RlZEZpbHRlck9wdGlvbnMgPSB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5jb2x1bW5fZHJvcGRvd25fdmFsdWUuZmlsdGVyKChvcHRpb246IGFueSkgPT4gdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuaGFzKG9wdGlvbi5pZCB8fCBvcHRpb24uX2lkIHx8IG9wdGlvbikpXHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICByZXNldEZpbHRlckNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuY2xlYXIoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zIS5sZW5ndGggPSAwO1xyXG4gICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gJyc7XHJcbiAgICAvLyBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNvbW1vblNldmljZS5nZXRGaWx0ZXJzRnJvbUNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKFwiRmlsdGVyZWQgQ29sdW1ucyBBcmU6IFwiLCBmaWx0ZXJlZENvbHVtbnMpO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlEcm9wZG93bkZpbHRlcigpIHtcclxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSAnJztcclxuICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XHJcbiAgICB0aGlzLmlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgY29uc3QgZmluZENvbHVtbiA9IChjb2x1bW5zOiBhbnlbXSwgZmllbGQ6IHN0cmluZyk6IGFueSA9PiB7XHJcbiAgICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHVtbnMpIHtcclxuICAgICAgICBpZiAoY29sLmZpZWxkID09PSBmaWVsZCkgcmV0dXJuIGNvbDtcclxuICAgICAgICBpZiAoY29sLmNoaWxkcmVuICYmIGNvbC5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICAgIGNvbnN0IGZvdW5kID0gZmluZENvbHVtbihjb2wuY2hpbGRyZW4sIGZpZWxkKTtcclxuICAgICAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGZvdW5kO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgY29sdW1uID0gZmluZENvbHVtbih0aGlzLmNvbHVtbnMsIHRoaXMuc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIuZmllbGQpO1xyXG4gICAgaWYgKGNvbHVtbikge1xyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdkcm9wZG93bicpIHtcclxuICAgICAgICBjb2x1bW4ucXVlcnkgPSBjb2x1bW4ucXVlcnkgfHwge307XHJcbiAgICAgICAgY29sdW1uLnF1ZXJ5Ll9pZHMgPSBjb2x1bW4ucXVlcnkuX2lkcyB8fCBbXTtcclxuXHJcbiAgICAgICAgLy8gUmVtb3ZlIHN0YWxlIElEcyAobm90IHByZXNlbnQgaW4gU2V0KVxyXG4gICAgICAgIGNvbHVtbi5xdWVyeS5faWRzID0gY29sdW1uLnF1ZXJ5Ll9pZHMuZmlsdGVyKFxyXG4gICAgICAgICAgKGlkOiBhbnkpID0+IHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhpZCkgICAvLyA8LS0gdXNlIC5oYXMoKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIC8vIEFkZCBuZXcgb25lcyBpZiBtaXNzaW5nXHJcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuZm9yRWFjaChpZCA9PiB7XHJcbiAgICAgICAgICBpZiAoIWNvbHVtbi5xdWVyeS5faWRzLmluY2x1ZGVzKGlkKSkge1xyXG4gICAgICAgICAgICBjb2x1bW4ucXVlcnkuX2lkcy5wdXNoKGlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIH0gZWxzZSBpZiAoWydzdHJpbmcnLCAnbnVtYmVyJywgJ2RhdGUnXS5pbmNsdWRlcyhjb2x1bW4udHlwZSkpIHtcclxuICAgICAgICBjb2x1bW4ucXVlcnkgPSB7XHJcbiAgICAgICAgICBmaXJzdF9jb25kaXRpb246IHRoaXMuZmlyc3RDb25kaXRpb24gfHwgJ2NvbnRhaW4nLFxyXG4gICAgICAgICAgZmlyc3RfdmFsdWU6IHRoaXMuZmlyc3RWYWx1ZSB8fCBudWxsLFxyXG4gICAgICAgICAgY29uZGl0aW9uOiB0aGlzLmNvbmRpdGlvbiB8fCAnbm9uZScsXHJcbiAgICAgICAgICBzZWNvbmRfY29uZGl0aW9uOiB0aGlzLnNlY29uZENvbmRpdGlvbiB8fCBudWxsLFxyXG4gICAgICAgICAgc2Vjb25kX3ZhbHVlOiB0aGlzLnNlY29uZFZhbHVlIHx8IG51bGwsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpbHRlciA9IHtcclxuICAgICAgZmllbGQ6IGNvbHVtbi5maWVsZCxcclxuICAgICAgc2VhcmNoOiBjb2x1bW4uc2VhcmNoLFxyXG4gICAgICBxdWVyeTogY29sdW1uLnF1ZXJ5LFxyXG4gICAgICB0eXBlOiBjb2x1bW4udHlwZSxcclxuICAgICAgX2lkczogY29sdW1uLl9pZHNcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IHRoaXMuZmlsdGVyc0NvbmZpZy5maW5kSW5kZXgoZiA9PiBmLmZpZWxkID09PSBjb2x1bW4uZmllbGQpO1xyXG5cclxuICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLmZpbHRlcnNDb25maWdbZXhpc3RpbmdJbmRleF0gPSBmaWx0ZXI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcucHVzaChmaWx0ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XHJcbiAgICB0aGlzLmlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSAnJztcclxuICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XHJcbiAgICB0aGlzLmlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiBOdW1iZXIodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0KSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG5cclxuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucy5lbWl0KGZpbHRlcnMpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIC8vIGFwcGx5RmlsdGVyRnJvbUZpbHRlclJvdyhjb2x1bW46IGFueSkge1xyXG4gIC8vICAgY29uc3QgZmlsdGVyID0ge1xyXG4gIC8vICAgICBmaWVsZDogY29sdW1uLmZpZWxkLFxyXG4gIC8vICAgICBzZWFyY2g6IGNvbHVtbi5zZWFyY2gsXHJcbiAgLy8gICAgIHF1ZXJ5OiBjb2x1bW4ucXVlcnksXHJcbiAgLy8gICAgIHR5cGU6IGNvbHVtbi50eXBlLFxyXG4gIC8vICAgICBfaWRzOiBjb2x1bW4uX2lkc1xyXG4gIC8vICAgfTtcclxuICAvLyAgIHRoaXMuZmlsdGVyc0NvbmZpZy5wdXNoKGZpbHRlcik7XHJcbiAgLy8gICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gIC8vICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAvLyAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gJyc7XHJcbiAgLy8gICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xyXG4gIC8vICAgdGhpcy5pc1RocmVlRG90c0ZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAvLyAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IHRoaXMuY29tbW9uU2V2aWNlLmdldEZpbHRlcnNGcm9tQ29sdW1ucyh0aGlzLmNvbHVtbnMsIHRoaXMuZmlsdGVyc0NvbmZpZyk7XHJcbiAgLy8gICB0aGlzLmZpbHRlck9wdGlvbnMuZW1pdChmaWx0ZXJlZENvbHVtbnMpO1xyXG4gIC8vIH1cclxuXHJcbiAgaXNGaWx0ZXJBcHBsaWVkT25Db2x1bW4oY29sdW1uOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlcnNDb25maWcuc29tZShjb2wgPT4gY29sLmZpZWxkID09PSBjb2x1bW4uZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgLy8gU2lkZSBGaWx0ZXJzIExvZ2ljIGlzIGhlcmVcclxuXHJcbiAgdG9nZ2xlU2VsZWN0QWxsU2lkZUZpbHRlcnMoY29sOiBhbnksIGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgY2hlY2tlZCA9IChldmVudD8udGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpPy5jaGVja2VkO1xyXG5cclxuICAgIGlmIChjaGVja2VkKSB7XHJcbiAgICAgIGNvbC5xdWVyeS5faWRzID0gY29sPy5jb2x1bW5fZHJvcGRvd25fdmFsdWU/Lm1hcChcclxuICAgICAgICAob3B0OiBhbnkpID0+IG9wdC5pZCB8fCBvcHQuX2lkIHx8IG9wdFxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcyA9IG5ldyBTZXQ8c3RyaW5nPihjb2wucXVlcnkuX2lkcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb2wucXVlcnkuX2lkcyA9IFtdO1xyXG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5jbGVhcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGlzQWxsU2lkZUZpbHRlck9wdGlvbnNTZWxlY3RlZChjb2w6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFjb2w/LnF1ZXJ5Py5faWRzIHx8ICFBcnJheS5pc0FycmF5KGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWUpKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gY29sLnF1ZXJ5Ll9pZHMubGVuZ3RoID09PSBjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIG9uT3B0aW9uVG9nZ2xlKGNvbDogYW55LCBvcHRpb246IGFueSkge1xyXG4gICAgY29uc3Qgb3B0aW9uSWQgPSBvcHRpb24uaWQgfHwgb3B0aW9uLl9pZCB8fCBvcHRpb247XHJcbiAgICBpZiAoIWNvbC5xdWVyeS5faWRzKSB7XHJcbiAgICAgIGNvbC5xdWVyeS5faWRzID0gW107XHJcbiAgICB9XHJcbiAgICBjb25zdCBpZHggPSBjb2wucXVlcnkuX2lkcy5pbmRleE9mKG9wdGlvbklkKTtcclxuICAgIGlmIChpZHggPiAtMSkge1xyXG4gICAgICBjb2wucXVlcnkuX2lkcy5zcGxpY2UoaWR4LCAxKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbC5xdWVyeS5faWRzLnB1c2gob3B0aW9uSWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgcmVzZXRTaWRlRmlsdGVyKGNvbDogYW55KSB7XHJcbiAgICBjb25zdCByZXNldENvbHVtblJlY3Vyc2l2ZWx5ID0gKGNvbHVtbnM6IGFueVtdKTogYm9vbGVhbiA9PiB7XHJcbiAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcclxuICAgICAgICBpZiAoY29sdW1uLmZpZWxkID09PSBjb2wuZmllbGQpIHtcclxuICAgICAgICAgIGNvbHVtbi5xdWVyeSA9IHtcclxuICAgICAgICAgICAgX2lkczogW10sXHJcbiAgICAgICAgICAgIGZpcnN0X2NvbmRpdGlvbjogJ2NvbnRhaW4nLFxyXG4gICAgICAgICAgICBmaXJzdF92YWx1ZTogbnVsbCxcclxuICAgICAgICAgICAgY29uZGl0aW9uOiAnbm9uZScsXHJcbiAgICAgICAgICAgIHNlY29uZF9jb25kaXRpb246ICdjb250YWluJyxcclxuICAgICAgICAgICAgc2Vjb25kX3ZhbHVlOiBudWxsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbHVtbj8uY2hpbGRyZW4pICYmIGNvbHVtbj8uY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgaWYgKHJlc2V0Q29sdW1uUmVjdXJzaXZlbHkoY29sdW1uLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfTtcclxuICAgIHJlc2V0Q29sdW1uUmVjdXJzaXZlbHkodGhpcy5jb2x1bW5zKTtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWx0ZXJzQ29uZmlnLmZpbmRJbmRleCgoZjogYW55KSA9PiBmLmZpZWxkID09PSBjb2wuZmllbGQpO1xyXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcblxyXG4gICAgY29uc3QgZmlsdGVycyA9IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVycyk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcblxyXG4gIGNsZWFyQWxsRmlsdGVycygpIHtcclxuICAgIHRoaXMudGFibGVWaWV3Py5mb3JFYWNoKChlbGUpID0+IHsgZWxlLmlzX3RlbXAgPSBmYWxzZSB9KTtcclxuICAgIGNvbnN0IHJlc2V0QWxsUmVjdXJzaXZlbHkgPSAoY29sdW1uczogYW55W10pID0+IHtcclxuICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xyXG4gICAgICAgIGlmIChjb2x1bW4ucXVlcnkpIHtcclxuICAgICAgICAgIGNvbHVtbi5xdWVyeSA9IHtcclxuICAgICAgICAgICAgX2lkczogW10sXHJcbiAgICAgICAgICAgIGZpcnN0X2NvbmRpdGlvbjogJ2NvbnRhaW4nLFxyXG4gICAgICAgICAgICBmaXJzdF92YWx1ZTogbnVsbCxcclxuICAgICAgICAgICAgY29uZGl0aW9uOiAnbm9uZScsXHJcbiAgICAgICAgICAgIHNlY29uZF9jb25kaXRpb246ICdjb250YWluJyxcclxuICAgICAgICAgICAgc2Vjb25kX3ZhbHVlOiBudWxsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjb2x1bW4/LmNoaWxkcmVuKSAmJiBjb2x1bW4uY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXNldEFsbFJlY3Vyc2l2ZWx5KGNvbHVtbi5jaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmVzZXRBbGxSZWN1cnNpdmVseSh0aGlzLmNvbHVtbnMpO1xyXG4gICAgdGhpcy5hY3RpdmVGaWx0ZXJDZWxsID0gbnVsbDtcclxuICAgIHRoaXMuZmlsdGVyc0NvbmZpZyA9IFtdO1xyXG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyID0gZmFsc2U7XHJcbiAgICB0aGlzLmZvbnRGYWltbHkgPSAnSW50ZXInO1xyXG4gICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gMTQ7XHJcbiAgICB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgPSAnbWVkaXVtZCc7XHJcbiAgICB0aGlzLmJvZHlUZXh0Rm9udHNTaXplID0gMTQ7XHJcbiAgICB0aGlzLmdsb2JhbFNlYXJjaFRleHQgPSAnJztcclxuICAgIGNvbnN0IGV2ZW50ID0geyBldmVudFR5cGU6ICdyZXNldCcsIGRhdGE6IHsgdGFibGVUeXBlOiB0aGlzLnRhYmxlVHlwZSB9IH07XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKS5tYXAoKHsgcXVlcnksIC4uLnJlc3QgfSkgPT4ge1xyXG4gICAgICAgIGlmIChxdWVyeSkge1xyXG4gICAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBxdWVyeSxcclxuICAgICAgICAgIC4uLnJlc3QsXHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgbm9fb2ZfcmVjb3JkczogTnVtYmVyKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCksXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCk7XHJcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucy5lbWl0KGZpbHRlcmVkQ29sdW1ucyk7XHJcbiAgICB9LCAzMDApO1xyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcclxuICB9XHJcblxyXG5cclxuICBhcHBseVNpZGVGaWx0ZXIoY29sdW1uOiBhbnkpIHtcclxuICAgIGlmICghY29sdW1uLnF1ZXJ5LmZpcnN0X3ZhbHVlICYmICFjb2x1bW4/LnF1ZXJ5Py5faWRzLmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgY29uc3QgZmlsdGVyID0ge1xyXG4gICAgICBmaWVsZDogY29sdW1uLmZpZWxkLFxyXG4gICAgICBzZWFyY2g6IGNvbHVtbi5zZWFyY2gsXHJcbiAgICAgIHF1ZXJ5OiBjb2x1bW4ucXVlcnksXHJcbiAgICAgIHR5cGU6IGNvbHVtbi50eXBlLFxyXG4gICAgICBfaWRzOiBjb2x1bW4uX2lkcyB8fCBbXVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gdGhpcy5maWx0ZXJzQ29uZmlnLmZpbmRJbmRleChmID0+IGYuZmllbGQgPT09IGNvbHVtbi5maWVsZCk7XHJcblxyXG4gICAgaWYgKGV4aXN0aW5nSW5kZXggIT09IC0xKSB7XHJcbiAgICAgIC8vIFJlcGxhY2UgdGhlIGV4aXN0aW5nIGZpbHRlclxyXG4gICAgICB0aGlzLmZpbHRlcnNDb25maWdbZXhpc3RpbmdJbmRleF0gPSBmaWx0ZXI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBBZGQgbmV3IGZpbHRlclxyXG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcucHVzaChmaWx0ZXIpO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY29tbW9uU2V2aWNlLmdldEZpbHRlcnNGcm9tQ29sdW1ucyh0aGlzLmNvbHVtbnMsIHRoaXMuZmlsdGVyc0NvbmZpZykubWFwKCh7IHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcclxuICAgICAgICBpZiAocXVlcnkpIHtcclxuICAgICAgICAgIGRlbGV0ZSBxdWVyeS5fX3R5cGVuYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgcXVlcnksXHJcbiAgICAgICAgICAuLi5yZXN0LFxyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpO1xyXG4gICAgICB0aGlzLmZpbHRlck9wdGlvbnMuZW1pdChmaWx0ZXJlZENvbHVtbnMpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG5cclxuICByZW1vdmVTaWRlRmlsdGVyKGNvbHVtbjogYW55KSB7XHJcbiAgICBpZiAoIWNvbHVtbi5xdWVyeS5maXJzdF92YWx1ZSAmJiAhY29sdW1uPy5xdWVyeT8uX2lkcy5sZW5ndGgpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gdGhpcy5maWx0ZXJzQ29uZmlnLmZpbmRJbmRleChmID0+IGYuZmllbGQgPT09IGNvbHVtbi5maWVsZCk7XHJcbiAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnLnNwbGljZShleGlzdGluZ0luZGV4LCAxKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHNlbmREYXRhID0ge1xyXG4gICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxyXG4gICAgICBmaWx0ZXJzOiB0aGlzLmNvbW1vblNldmljZS5nZXRGaWx0ZXJzRnJvbUNvbHVtbnModGhpcy5jb2x1bW5zLCB0aGlzLmZpbHRlcnNDb25maWcpLm1hcCgoeyBxdWVyeSwgLi4ucmVzdCB9KSA9PiB7XHJcbiAgICAgICAgaWYgKHF1ZXJ5KSB7XHJcbiAgICAgICAgICBkZWxldGUgcXVlcnkuX190eXBlbmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIHF1ZXJ5LFxyXG4gICAgICAgICAgLi4ucmVzdCxcclxuICAgICAgICB9O1xyXG4gICAgICB9KSxcclxuICAgICAgbm9fb2ZfcmVjb3JkczogTnVtYmVyKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCksXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKTtcclxuICAgICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVyZWRDb2x1bW5zKTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuICBjb2xsYXBzZUFsbEV4cGFuZGVkQ2VsbHMoKSB7XHJcbiAgICBpZiAodGhpcy5leHBhbmRlZENlbGxzPy5zaXplID4gMCkge1xyXG4gICAgICB0aGlzLmV4cGFuZGVkQ2VsbHMuY2xlYXIoKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxuICB0cmFja0J5RmllbGQoaW5kZXg6IG51bWJlciwgY29sOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGNvbD8uZmllbGQ7XHJcbiAgfVxyXG5cclxuICBnZXQgYWN0aXZlRmlsdGVyZWRDb2x1bW5zKCk6IGFueVtdIHtcclxuICAgIGNvbnN0IGNvbGxlY3RGaWx0ZXJlZCA9IChjb2x1bW5zOiBhbnlbXSk6IGFueVtdID0+IHtcclxuICAgICAgbGV0IHJlc3VsdDogYW55W10gPSBbXTtcclxuXHJcbiAgICAgIGNvbHVtbnMuZm9yRWFjaChjb2wgPT4ge1xyXG4gICAgICAgIGlmIChjb2wuY2hpbGRyZW4gJiYgY29sLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChjb2xsZWN0RmlsdGVyZWQoY29sLmNoaWxkcmVuKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBpc0luRmlsdGVyc0NvbmZpZyA9IHRoaXMuZmlsdGVyc0NvbmZpZy5zb21lKGYgPT4gZi5maWVsZCA9PT0gY29sLmZpZWxkKTtcclxuICAgICAgICBpZiAoaXNJbkZpbHRlcnNDb25maWcpIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKGNvbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBjb2xsZWN0RmlsdGVyZWQodGhpcy5jb2x1bW5zKTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG4gIHRvZ2dsZU9wZW5GaWx0ZXIoKSB7XHJcbiAgICB0aGlzLnNob3dGaWx0ZXJzID0gIXRoaXMuc2hvd0ZpbHRlcnM7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICAvLyBDZWxsIEVkaXRpbmcgV29yayBzdGFydCBoZXJlXHJcblxyXG4gIGVkaXRpbmdLZXk6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIGFjdGl2ZUNlbGw6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBzZXRBY3RpdmVDZWxsKHJvdzogYW55LCBjb2x1bW46IGFueSkge1xyXG4gICAgdGhpcy5hY3RpdmVDZWxsID0gKChyb3cuaWQgfHwgcm93Ll9pZCkgKyAnLScgKyBjb2x1bW4uZmllbGQpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgaXNBY3RpdmVDZWxsKHJvdzogYW55LCBjb2w6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlQ2VsbCA9PT0gKChyb3cuaWQgfHwgcm93Ll9pZCkgKyAnLScgKyBjb2wuZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgndGV4dEFyZWFkSW5wdXQnKSB0ZXh0QXJlYWRJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD47XHJcbiAgZW5hYmxlRWRpdChyb3c6IGFueSwgY29sdW1uOiBhbnksIGNsaWNrZWRGcm9tRGV0YWlsc0JveCA9IGZhbHNlLCBjZWxsQ29udGFpbmVyPzogSFRNTEVsZW1lbnQpIHtcclxuICAgIHRoaXMuZWRpdGluRHJvcGRvd25TZWFyY2ggPSAnJztcclxuICAgIGlmIChyb3c/Ll9fdmlydHVhbEluZGV4ID09IDApIHJldHVybjtcclxuICAgIGlmIChjb2x1bW4udHlwZSA9PSAnaW1hZ2UnIHx8ICFjb2x1bW4/LmlzX2VkaXRhYmxlKSByZXR1cm47XHJcbiAgICB0aGlzLmVkaXRpbmdLZXkgPSAoKHJvdy5pZCB8fCByb3cuX2lkKSArICctJyArIGNvbHVtbi5maWVsZCk7XHJcblxyXG4gICAgaWYgKGNvbHVtbi50eXBlID09PSAnZHJvcGRvd24nKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRyb3Bkb3duTWVudSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jZWxsLWVkaXRpbmctZHJvcGRvd24tbWVudScpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGlmIChkcm9wZG93bk1lbnUpIHtcclxuICAgICAgICAgIGNvbnN0IHJlY3QgPSBkcm9wZG93bk1lbnUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgICBjb25zdCB3aW5kb3dIZWlnaHQgPSB0aGlzLmRhdGFHcmlkQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldEhlaWdodDtcclxuXHJcbiAgICAgICAgICBpZiAocmVjdC5ib3R0b20gPiB3aW5kb3dIZWlnaHQpIHtcclxuICAgICAgICAgICAgZHJvcGRvd25NZW51LnN0eWxlLnRvcCA9IGAtJHtyZWN0LmhlaWdodH1weGA7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBkcm9wZG93bk1lbnUuc3R5bGUudG9wID0gJzEwMCUnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFjbGlja2VkRnJvbURldGFpbHNCb3ggJiYgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbHVtbi5maWVsZCk/Lmxlbmd0aCA+IDUwKSB7XHJcbiAgICAgIHRoaXMudG9nZ2xlRXhwYW5kT2ZMb25nQ2VsbFRleHQocm93LCBjb2x1bW4sIHRoaXMuY29sdW1ucywgZmFsc2UpXHJcbiAgICB9XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKCFjZWxsQ29udGFpbmVyKSByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCBmb2N1c2FibGUgPSBjZWxsQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICAgJ2lucHV0LCB0ZXh0YXJlYSwgc2VsZWN0LCBbY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiXSdcclxuICAgICAgKSBhcyBIVE1MRWxlbWVudCB8IG51bGw7XHJcblxyXG4gICAgICBpZiAoZm9jdXNhYmxlKSB7XHJcbiAgICAgICAgKGZvY3VzYWJsZSBhcyBIVE1MRWxlbWVudCkuc3R5bGUuZm9udFNpemUgPSAnMTZweCc7XHJcbiAgICAgICAgZm9jdXNhYmxlLmZvY3VzKCk7XHJcblxyXG4gICAgICAgIGlmIChmb2N1c2FibGUgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50IHx8IGZvY3VzYWJsZSBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnQpIHtcclxuICAgICAgICAgIGZvY3VzYWJsZS5zZWxlY3QoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG5cclxuICBkaXNhYmxlRWRpdChyb3c6IGFueSwgY29sdW1uOiBhbnksIGNvbnRyb2w/OiBhbnkpIHtcclxuICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmNsZWFyKCk7XHJcbiAgICBpZiAoIXRoaXMuZWRpdGluZ0tleSkgcmV0dXJuXHJcbiAgICB0aGlzLmNoZWNrUm93RWRpdEFuZEVtaXRWYWx1ZShyb3csIGNvbHVtbiwgcm93W2NvbHVtbi5maWVsZF0pXHJcbiAgICB0aGlzLmVkaXRpbmdLZXkgPSBudWxsO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2x1bW4/LmZpZWxkKTtcclxuICAgIGlmICghY3VycmVudCB8fCAoY29sdW1uLnR5cGUgPT0gJ2VtYWlsJyAmJiAhdGhpcy52YWxpZGF0ZUVtYWlsKGN1cnJlbnQpKSkge1xyXG4gICAgICBjb25zdCBvcmlnaW5hbFJvdyA9IHRoaXMub3JpZ2luYWxEYXRhU2V0LmZpbmQoaXRlbSA9PiBpdGVtLmlkID09IHJvdy5pZCB8fCBpdGVtLmlkID09IHJvdy5faWQpO1xyXG4gICAgICBjb25zdCBvcmlnaW5hbCA9IHRoaXMuZ2V0TmVzdGVkVmFsdWUob3JpZ2luYWxSb3csIGNvbHVtbj8uZmllbGQpO1xyXG4gICAgICB0aGlzLnNldE5lc3RlZFZhbHVlKHJvdywgY29sdW1uLCBvcmlnaW5hbCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVtYWlsUmVnZXggPSAvXlthLXpBLVowLTkuXyUrLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Mix9JC87XHJcbiAgdmFsaWRhdGVFbWFpbCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5lbWFpbFJlZ2V4LnRlc3QodmFsdWUpO1xyXG4gIH1cclxuICBhbGxvd09ubHlOdW1iZXJzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBjb25zdCBjaGFyQ29kZSA9IGV2ZW50LndoaWNoID8gZXZlbnQud2hpY2ggOiBldmVudC5rZXlDb2RlO1xyXG4gICAgaWYgKGNoYXJDb2RlIDwgNDggfHwgY2hhckNvZGUgPiA1Nykge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tSb3dFZGl0QW5kRW1pdFZhbHVlKHJvdzogYW55LCBjb2x1bW46IGFueSwgdmFsdWU/OiBhbnkpIHtcclxuICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgY29uc3Qgb3JpZ2luYWxSb3cgPSB0aGlzLm9yaWdpbmFsRGF0YVNldD8uZmluZChcclxuICAgICAgKHI6IGFueSkgPT4gci5pZCA9PT0gcm93LmlkIHx8IHIuX2lkID09PSByb3cuX2lkXHJcbiAgICApO1xyXG4gICAgaWYgKCFvcmlnaW5hbFJvdykgcmV0dXJuO1xyXG4gICAgLy8gY29uc3QgY2xlYW4gPSAob2JqOiBhbnkpID0+IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqKSk7XHJcbiAgICAvLyBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sdW1uLmZpZWxkKTtcclxuICAgIC8vIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSB0aGlzLmdldE5lc3RlZFZhbHVlKG9yaWdpbmFsUm93LCBjb2x1bW4uZmllbGQpO1xyXG4gICAgY29uc3Qgb3JpZ2luVmFsdWUgPSB0aGlzLmRhdGFTZXQuZmluZCgocjogYW55KSA9PiByLmlkID09PSByb3cuaWQpO1xyXG4gICAgY29uc3QgY2hhbmdlZFZhbHVlID0gb3JpZ2luVmFsdWUudmVyaWZpZWQgPT0gdmFsdWU7XHJcbiAgICAvLyBpZiAoY2hhbmdlZFZhbHVlKSByZXR1cm47XHJcbiAgICAvLyBjb25zdCBoYXNDaGFuZ2VkID0gdGhpcy5jb21tb25TZXZpY2UuaGFzRmllbGRDaGFuZ2VkKGN1cnJlbnRWYWx1ZSwgb3JpZ2luYWxWYWx1ZSwgY29sdW1uLnR5cGUpO1xyXG4gICAgLy8gaWYgKCFoYXNDaGFuZ2VkKSByZXR1cm47XHJcbiAgICAvLyB0aGlzLnNldE5lc3RlZFZhbHVlKG9yaWdpbmFsUm93LCBjb2x1bW4sIHZhbHVlKTtcclxuXHJcbiAgICBjb25zdCBzZW5kT2JqID0ge1xyXG4gICAgICBkYXRhOiB7IC4uLm9yaWdpblZhbHVlIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogJ29uQ2VsbEVkaXQnLFxyXG4gICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICAgIGNvbHVtbjogY29sdW1uXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoc2VuZE9iailcclxuICAgIC8vIH0sIDEwMCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgaXNFZGl0aW5nKHJvdzogYW55LCBjb2w6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZWRpdGluZ0tleSA9PT0gKChyb3cuaWQgfHwgcm93Ll9pZCkgKyAnLScgKyBjb2wuZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgc2V0TmVzdGVkVmFsdWUob2JqOiBhbnksIGNvbHVtbjogYW55LCBvcHRpb246IGFueSwgY2FsbGVkRnJvbUlucHV0ID0gZmFsc2UpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBhdGggPSBjb2x1bW4uZmllbGQ7XHJcbiAgICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xyXG4gICAgY29uc3QgbGFzdEtleSA9IGtleXMucG9wKCk7XHJcbiAgICBjb25zdCBwYXJlbnQgPSBrZXlzLnJlZHVjZSgoYWNjOiB7IFt4OiBzdHJpbmddOiB7fTsgfSwga2V5OiBzdHJpbmcgfCBudW1iZXIpID0+IGFjY1trZXldID8/PSB7fSwgb2JqKTtcclxuXHJcbiAgICBpZiAocGFyZW50ICYmIGxhc3RLZXkpIHtcclxuICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnICYmIG9wdGlvbiAhPT0gbnVsbCkge1xyXG4gICAgICAgIC8vIGNhc2U6IGRyb3Bkb3duIG9iamVjdCB7aWQsIHZhbHVlfVxyXG4gICAgICAgIHBhcmVudC5pZCA9IG9wdGlvbi5pZDtcclxuICAgICAgICBwYXJlbnRbbGFzdEtleV0gPSBvcHRpb24udmFsdWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gY2FzZTogcGxhaW4gc3RyaW5nIG9yIG51bWJlclxyXG4gICAgICAgIHBhcmVudFtsYXN0S2V5XSA9IG9wdGlvbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlbmRPYmogPSB7XHJcbiAgICAgIGRhdGE6IHsgLi4ub2JqIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogJ29uQ2VsbEVkaXQnLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoY2FsbGVkRnJvbUlucHV0KSB7XHJcbiAgICAgIHRoaXMuY2hlY2tSb3dFZGl0QW5kRW1pdFZhbHVlKG9iaiwgY29sdW1uLCBvcHRpb24pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICBnb1RvUGFnZShwYWdlOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnBhZ2luYXRpb25Db25maWc/LnBhZ2UgPT0gcGFnZSkgcmV0dXJuO1xyXG4gICAgaWYgKHBhZ2UgPCAxIHx8IHBhZ2UgPiB0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxQYWdlcykgcmV0dXJuO1xyXG4gICAgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgPSBwYWdlO1xyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIG9iajoge1xyXG4gICAgICAgIGxpbWl0OiB0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQsXHJcbiAgICAgICAgcGFnZTogcGFnZSxcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiAncGFnZUNoYW5nZScsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcclxuICB9XHJcblxyXG4gIG9uUGFnZVNpemVDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSA9IDE7XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKS5tYXAoKHsgcXVlcnksIC4uLnJlc3QgfSkgPT4ge1xyXG4gICAgICAgIGlmIChxdWVyeSkge1xyXG4gICAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBxdWVyeSxcclxuICAgICAgICAgIC4uLnJlc3QsXHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgbm9fb2ZfcmVjb3JkczogTnVtYmVyKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCksXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgICBvYmo6IHtcclxuICAgICAgICAgIGxpbWl0OiB0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQsXHJcbiAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGV2ZW50VHlwZTogJ3BhZ2VDaGFuZ2UnLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KVxyXG4gICAgfSwgNzAwKTtcclxuICB9XHJcblxyXG4gIGFjdGlvblByZXNldChkYXRhOiBhbnksIHR5cGU6IGFueSkge1xyXG4gICAgZGF0YS5jb2x1bW5zID0gZGF0YS5jb2x1bW5zLm1hcCgoeyBfaWQsIGZpbHRlclZhbHVlLCBzZWFyY2gsIGNvbHVtbl9kcm9wZG93bl92YWx1ZSwgcXVlcnksIF9fdHlwZW5hbWUsIC4uLnJlc3QgfTogYW55KSA9PiByZXN0KTtcclxuICAgIHRoaXMudGFibGVWaWV3Py5mb3JFYWNoKChlbGUpID0+IHsgZWxlLmlzX3RlbXAgPSBmYWxzZSB9KTtcclxuXHJcbiAgICB7XHJcbiAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSBkYXRhLmNvbmZpZy5ib2R5VGV4dEZvbnRzU2l6ZSxcclxuICAgICAgICB0aGlzLmZvbnRGYWltbHkgPSBkYXRhLmNvbmZpZy5mb250RmFpbWx5LFxyXG4gICAgICAgIGRhdGEuZmlsdGVycy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGRlbGV0ZSBlbGVtZW50Ll9fdHlwZW5hbWU7XHJcbiAgICAgICAgICBpZiAoZWxlbWVudC5xdWVyeSkge1xyXG4gICAgICAgICAgICBkZWxldGUgZWxlbWVudC5xdWVyeS5fX3R5cGVuYW1lO1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgdHlwZW9mIGVsZW1lbnQucXVlcnkgPT09ICdvYmplY3QnICYmXHJcbiAgICAgICAgICAgICAgZWxlbWVudC5xdWVyeSAhPT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgIE9iamVjdC5rZXlzKGVsZW1lbnQucXVlcnkpLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LnF1ZXJ5ID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSBkYXRhLmNvbmZpZy5oZWFkZXJUZXh0Rm9udHNTaXplLFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCA9IGRhdGEuY29uZmlnLnNlbGVjdGVkVGFibGVMYXlvdXQsXHJcbiAgICAgICAgdGhpcy5zaG93VmVydGljYWxCb3JkZXIgPSBkYXRhLmNvbmZpZy5zaG93VmVydGljYWxCb3JkZXIsXHJcbiAgICAgICAgdGhpcy5jdXJyZW50SWRGb3JVcGRhdGVQcmVzZXQgPSBkYXRhLmlkO1xyXG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcgPSBkYXRhLmZpbHRlcnM7XHJcbiAgICB9XHJcbiAgICBkZWxldGUgZGF0YT8uX190eXBlbmFtZTtcclxuICAgIGRlbGV0ZSBkYXRhPy5pc190ZW1wO1xyXG4gICAgZGVsZXRlIGRhdGE/LmNvbmZpZy5fX3R5cGVuYW1lO1xyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIG9iajoge1xyXG4gICAgICAgIGRhdGE6IGRhdGFcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiB0eXBlXHJcbiAgICB9XHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KVxyXG4gIH1cclxuXHJcbiAgY3VycmVudElkRm9yVXBkYXRlUHJlc2V0ID0gJyc7XHJcbiAgY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlOiBhbnk7XHJcbiAgdGVtcF9zdGF0ZSA9IHtcclxuICAgIGlkOiAnJyxcclxuICAgIGlzX3RlbXA6IGZhbHNlXHJcbiAgfVxyXG4gIGFzeW5jIHNlbGVjdEZpbHRlcihkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMudGVtcF9zdGF0ZSA9IHtcclxuICAgICAgaWQ6IGRhdGEuaWQsXHJcbiAgICAgIGlzX3RlbXA6IHRydWVcclxuICAgIH1cclxuICAgIHRoaXMudGFibGVWaWV3Py5mb3JFYWNoKChlbGUpID0+IHsgZWxlLmlzX3RlbXAgPSBmYWxzZSB9KTtcclxuICAgIHRoaXMudGFibGVWaWV3ID0gdGhpcy50YWJsZVZpZXcubWFwKGl0ZW0gPT4gKHtcclxuICAgICAgLi4uaXRlbSxcclxuICAgICAgaXNfdGVtcDogaXRlbS5pZCA9PSBkYXRhPy5pZFxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5jb2x1bW5zID0gZGF0YS5jb2x1bW5zO1xyXG4gICAge1xyXG4gICAgICB0aGlzLmJvZHlUZXh0Rm9udHNTaXplID0gZGF0YS5jb25maWcuYm9keVRleHRGb250c1NpemUsXHJcbiAgICAgICAgdGhpcy5mb250RmFpbWx5ID0gZGF0YS5jb25maWcuZm9udEZhaW1seSxcclxuICAgICAgICBkYXRhLmZpbHRlcnMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBkZWxldGUgZWxlbWVudC5fX3R5cGVuYW1lO1xyXG5cclxuICAgICAgICAgIGlmIChlbGVtZW50LnF1ZXJ5KSB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSBlbGVtZW50LnF1ZXJ5Ll9fdHlwZW5hbWU7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICB0eXBlb2YgZWxlbWVudC5xdWVyeSA9PT0gJ29iamVjdCcgJiZcclxuICAgICAgICAgICAgICBlbGVtZW50LnF1ZXJ5ICE9PSBudWxsICYmXHJcbiAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZWxlbWVudC5xdWVyeSkubGVuZ3RoID09PSAwXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQucXVlcnkgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAvLyB0aGlzLmdsb2JhbFNlYXJjaCA9IGRhdGEuY29uZmlnLmJvZHlUZXh0Rm9udHNTaXplLFxyXG4gICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSBkYXRhLmNvbmZpZy5oZWFkZXJUZXh0Rm9udHNTaXplLFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCA9IGRhdGEuY29uZmlnLnNlbGVjdGVkVGFibGVMYXlvdXQsXHJcbiAgICAgICAgdGhpcy5zaG93VmVydGljYWxCb3JkZXIgPSBkYXRhLmNvbmZpZy5zaG93VmVydGljYWxCb3JkZXIsXHJcbiAgICAgICAgdGhpcy5jdXJyZW50SWRGb3JVcGRhdGVQcmVzZXQgPSBkYXRhLmlkO1xyXG4gICAgICB0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZSA9IHN0cnVjdHVyZWRDbG9uZShkYXRhKTtcclxuICAgICAgdGhpcy5wcmVzZXROYW1lID0gZGF0YT8ubmFtZTtcclxuICAgICAgdGhpcy5wcmVzZXRGaWx0ZXIgPSBkYXRhPy5hY3RpdmVGaWx0ZXJzIHx8IGZhbHNlO1xyXG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcgPSBkYXRhLmZpbHRlcnM7XHJcbiAgICAgIGF3YWl0IHRoaXMuYXBwbHlGaWx0ZXJvcHRpb25MaXN0KCk7XHJcbiAgICAgIHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICBkYXRhLmNvbHVtbnMgPSB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xyXG4gICAgICBkZWxldGUgZGF0YT8uX190eXBlbmFtZTtcclxuICAgICAgZGVsZXRlIGRhdGE/LmlzX3RlbXA7XHJcbiAgICAgIGRlbGV0ZSBkYXRhPy5jb25maWcuX190eXBlbmFtZTtcclxuICAgIH1cclxuICAgIGlmIChkYXRhPy5pc19kZWFmdWx0KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFjdGlvblByZXNldChkYXRhLCAnc2V0UHJlc2V0JylcclxuICAgIH1cclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBvYmo6IHtcclxuICAgICAgICBkYXRhOiBkYXRhXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogJ3NlbGVjdCdcclxuICAgIH1cclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpXHJcbiAgfVxyXG5cclxuICBzYXZlUHJlc2V0KGNvbnRyb2w/OiBhbnkpIHtcclxuICAgIGlmIChjb250cm9sPy5pbnZhbGlkKSB7XHJcbiAgICAgIGNvbnRyb2w/LmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgbmFtZXMgPSB0aGlzLmdldEZpbHRlckhlYWRlcnModGhpcy5maWx0ZXJzQ29uZmlnLCB0aGlzLmNvbHVtbnMpO1xyXG4gICAgdGhpcy5wcmVzZXRGaWx0ZXIgPSB0aGlzLnRhYmxlRmlsdGVyVmlld0lkID8gdHJ1ZSA6IHRoaXMucHJlc2V0RmlsdGVyO1xyXG4gICAgbGV0IHNlbGVjdGVkRGF0YTogYW55ID0gdGhpcy50YWJsZVZpZXcuZmluZCgoZWxlKSA9PiBlbGUuaWQgPT0gdGhpcy50YWJsZUZpbHRlclZpZXdJZCk7XHJcbiAgICBsZXQgY29uZmlnID0ge1xyXG4gICAgICBmb250RmFpbWx5OiB0aGlzLmZvbnRGYWltbHksXHJcbiAgICAgIGJvZHlUZXh0Rm9udHNTaXplOiArKHRoaXMuYm9keVRleHRGb250c1NpemUgfHwgMTQpLFxyXG4gICAgICBoZWFkZXJUZXh0Rm9udHNTaXplOiArKHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSB8fCAxNCksXHJcbiAgICAgIG9kZFJvd3NCYWNrZ3JvdW5kQ29sb3I6IHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPyB0aGlzLm9kZFJvd3NCYWNrZ3JvdW5kQ29sb3IgOiB1bmRlZmluZWQsXHJcbiAgICAgIHNob3dWZXJ0aWNhbEJvcmRlcjogdGhpcy5zaG93VmVydGljYWxCb3JkZXIsXHJcbiAgICAgIHNlbGVjdGVkVGFibGVMYXlvdXQ6IHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCxcclxuICAgICAgZ2xvYmFsU2VhcmNoOiB0aGlzLnRhYmxlU2VhcmNoLFxyXG4gICAgICBmaWx0ZXJOYW1lczogbmFtZXMsXHJcbiAgICAgIHRvdGFsQ291bnQ6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHMsXHJcbiAgICAgIHJvd1NoYWRpbmdFbmFibGVkOiB0aGlzLnJvd1NoYWRpbmdFbmFibGVkXHJcblxyXG4gICAgfVxyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIG9iajoge1xyXG4gICAgICAgIG5hbWU6IHRoaXMudGFibGVGaWx0ZXJWaWV3SWQgPyBzZWxlY3RlZERhdGE/Lm5hbWUgOiB0aGlzLnByZXNldE5hbWUsXHJcbiAgICAgICAgYWN0aXZlRmlsdGVyczogdGhpcy5wcmVzZXRGaWx0ZXIsXHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgICBmaWx0ZXJzOiB0aGlzLnByZXNldEZpbHRlclxyXG4gICAgICAgICAgPyB0aGlzLmZpbHRlcnNDb25maWc/Lm1hcCgoeyBfX3R5cGVuYW1lLCBxdWVyeSwgLi4ucmVzdCB9KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgX190eXBlbmFtZTogX19pbm5lciwgLi4uY2xlYW5RdWVyeSB9ID0gcXVlcnkgfHwge307XHJcbiAgICAgICAgICAgIHJldHVybiB7IC4uLnJlc3QsIHF1ZXJ5OiBjbGVhblF1ZXJ5IH07XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgOiBbXSxcclxuICAgICAgICBjb25maWc6IGNvbmZpZyxcclxuICAgICAgICBpZDogdGhpcy50YWJsZUZpbHRlclZpZXdJZCB8fCB0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZT8uaWQsXHJcbiAgICAgICAgbG9hZGluZ0NhbGw6IGNvbnRyb2wgPT0gJ21vdXNlVXAnID8gZmFsc2UgOiB0cnVlLFxyXG4gICAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogdGhpcy50YWJsZUZpbHRlclZpZXdJZCB8fCAhdGhpcy5pc1RhYmxlUHJlc2V0Tm90Q2hhbmdlZCA/ICd1cGRhdGVQcmVzZXQnIDogJ2NyZWF0ZVByZXNldCdcclxuICAgIH1cclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpXHJcbiAgfVxyXG5cclxuICBnZXRGaWx0ZXJIZWFkZXJzKGZpbHRlcnM6IGFueVtdLCBjb2x1bW5zOiBhbnlbXSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBtYXRjaGVkSGVhZGVycyA9IGZpbHRlcnNcclxuICAgICAgLm1hcChmID0+IHtcclxuICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zLmZpbmQoYyA9PiBjLmZpZWxkID09PSBmLmZpZWxkKTtcclxuICAgICAgICByZXR1cm4gY29sdW1uID8gY29sdW1uLmhlYWRlciA6IG51bGw7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5maWx0ZXIoaGVhZGVyID0+ICEhaGVhZGVyKTtcclxuXHJcbiAgICByZXR1cm4gbWF0Y2hlZEhlYWRlcnMuam9pbignLCAnKTtcclxuICB9XHJcblxyXG5cclxuICB0b2dnbGVSb3dTaGFkaW5nKCkge1xyXG4gICAgdGhpcy5vZGRSb3dzQmFja2dyb3VuZENvbG9yID0gdGhpcy5yb3dTaGFkaW5nRW5hYmxlZCA/ICcjZjFmMWYxJyA6IHVuZGVmaW5lZDtcclxuICAgIHRoaXMub25Gb250Q2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5VGFibGUoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICByZXR1cm4gaW5kZXg7XHJcbiAgfVxyXG4gIGFjdGl2ZVJvdzogYW55XHJcbiAgYWN0aXZlUm93Q29sOiBhbnk7XHJcblxyXG4gIC8vIFRyYWNrIGV4cGFuZGVkIGNlbGxzIGFzIGEgU2V0IG9mIHVuaXF1ZSByb3crY29sIGlkZW50aWZpZXJzXHJcblxyXG4gIGdldENlbGxLZXkocm93OiBhbnksIGNvbDogYW55KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHt0aGlzLmdldFJvd0lkKHJvdyl9XyR7Y29sPy5maWVsZH1gO1xyXG4gIH1cclxuXHJcbiAgZXhwYW5kZWRDZWxscyA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XHJcbiAgcHJpdmF0ZSB6Q291bnRlciA9IDIxO1xyXG5cclxuICBzaG93RGV0YWlsc0JveCA9IGZhbHNlO1xyXG5cclxuICB0b2dnbGVFeHBhbmRPZkxvbmdDZWxsVGV4dChcclxuICAgIHJvdzogYW55LFxyXG4gICAgY29sOiBhbnksXHJcbiAgICBjb2x1bW5zOiBhbnlbXSxcclxuICAgIGV4cGFuZFdob2xlUm93ID0gZmFsc2VcclxuICApIHtcclxuICAgIGNvbnN0IGV4cGFuZENlbGxzID0gKHRhcmdldFJvdzogYW55KSA9PiB7XHJcbiAgICAgIGNvbHVtbnMuZm9yRWFjaChjID0+IHtcclxuICAgICAgICBpZiAoYy50eXBlID09PSAnaW1hZ2UnKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgdGV4dCA9IHRhcmdldFJvd1tjLmZpZWxkXTtcclxuXHJcbiAgICAgICAgaWYgKCh0eXBlb2YgdGV4dCA9PT0gJ3N0cmluZycgJiYgdGV4dC5sZW5ndGggPiA1MCkgfHwgKEFycmF5LmlzQXJyYXkodGV4dCkgJiYgdGV4dD8ubGVuZ3RoID4gMSkpIHtcclxuICAgICAgICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0Um93SWQodGFyZ2V0Um93KSArICctJyArIGMuZmllbGQ7XHJcbiAgICAgICAgICB0aGlzLnpDb3VudGVyKys7XHJcbiAgICAgICAgICB0aGlzLmV4cGFuZGVkQ2VsbHMuc2V0KGtleSwgdGhpcy56Q291bnRlcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIGNvbnN0IGNvbGxlY3RLZXlzRm9yUm93ID0gKHRhcmdldFJvdzogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgIGNvbHVtbnMuZm9yRWFjaChjID0+IHtcclxuICAgICAgICBpZiAoYy50eXBlID09PSAnaW1hZ2UnKSByZXR1cm47XHJcblxyXG4gICAgICAgIGNvbnN0IHRleHQgPSB0YXJnZXRSb3dbYy5maWVsZF07XHJcbiAgICAgICAgaWYgKHR5cGVvZiB0ZXh0ID09PSAnc3RyaW5nJyAmJiB0ZXh0Lmxlbmd0aCA+IDUwIHx8IChBcnJheS5pc0FycmF5KHRleHQpICYmIHRleHQ/Lmxlbmd0aCA+IDEpKSB7XHJcbiAgICAgICAgICBrZXlzLnB1c2godGhpcy5nZXRSb3dJZCh0YXJnZXRSb3cpICsgJy0nICsgYy5maWVsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGtleXM7XHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChleHBhbmRXaG9sZVJvdykge1xyXG4gICAgICBsZXQgcm93S2V5czogc3RyaW5nW10gPSBbXTtcclxuICAgICAgY29uc3QgdGV4dCA9IHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2w/LmZpZWxkKTtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGV4dCkgJiYgdGV4dC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgcm93S2V5cyA9IGNvbGxlY3RLZXlzRm9yUm93KHJvdyk7XHJcbiAgICAgICAgcm93Py5jaGlsZHJlbj8uZm9yRWFjaCgoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcm93S2V5cy5wdXNoKC4uLmNvbGxlY3RLZXlzRm9yUm93KGNoaWxkKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcm93S2V5cyA9IGNvbGxlY3RLZXlzRm9yUm93KHJvdyk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgYWxsRXhwYW5kZWQgPSByb3dLZXlzLmV2ZXJ5KGsgPT4gdGhpcy5leHBhbmRlZENlbGxzLmhhcyhrKSk7XHJcbiAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5jbGVhcigpO1xyXG4gICAgICBpZiAoIWFsbEV4cGFuZGVkKSB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93LmNoaWxkcmVuKSAmJiByb3cuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgZXhwYW5kQ2VsbHMocm93KTtcclxuICAgICAgICAgIHJvdz8uY2hpbGRyZW4/LmZvckVhY2goKGNoaWxkOiBhbnkpID0+IGV4cGFuZENlbGxzKGNoaWxkKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGV4cGFuZENlbGxzKHJvdyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBrZXkgPSB0aGlzLmdldFJvd0lkKHJvdykgKyAnLScgKyBjb2wuZmllbGQ7XHJcbiAgICAgIGlmIChjb2wudHlwZSA9PT0gJ2ltYWdlJykgcmV0dXJuO1xyXG5cclxuICAgICAgaWYgKCF0aGlzLmV4cGFuZGVkQ2VsbHMuaGFzKGtleSkpIHtcclxuICAgICAgICB0aGlzLmV4cGFuZGVkQ2VsbHMuY2xlYXIoKTtcclxuICAgICAgICB0aGlzLnpDb3VudGVyKys7XHJcbiAgICAgICAgdGhpcy5leHBhbmRlZENlbGxzLnNldChrZXksIHRoaXMuekNvdW50ZXIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5kZWxldGUoa2V5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2hvd0RldGFpbHNCb3ggPSBmYWxzZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmlzT3BlblRvVG9wKHJvdylcclxuICAgIH0sIDApO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgaXNPcGVuVG9Ub3Aocm93OiBhbnkpIHtcclxuICAgIGNvbnN0IHdyYXBwZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZGF0YS1ncmlkLWJvZHktd3JhcHBlcicpIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcclxuICAgIGlmICghd3JhcHBlcikgcmV0dXJuIGZhbHNlO1xyXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGlkID0gKHJvdy5pZCB8fCByb3cuX2lkKSArICctJyArIChjb2wuaWQgfHwgY29sLl9pZCk7XHJcbiAgICAgIGNvbnN0IGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcclxuICAgICAgaWYgKCFib3gpIHJldHVybiBmYWxzZTtcclxuICAgICAgY29uc3QgYm94UmVjdCA9IGJveC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgY29uc3Qgd3JhcHBlclJlY3QgPSB3cmFwcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICBjb25zdCBpc092ZXJmbG93aW5nQm90dG9tID0gYm94UmVjdC5ib3R0b20gPiB3cmFwcGVyUmVjdC5ib3R0b207XHJcbiAgICAgIGNvbnN0IGlzT3ZlcmZsb3dpbmdUb3AgPSBib3hSZWN0LnRvcCA8IHdyYXBwZXJSZWN0LnRvcDtcclxuICAgICAgaWYgKGlzT3ZlcmZsb3dpbmdCb3R0b20gJiYgIWlzT3ZlcmZsb3dpbmdUb3ApIHtcclxuICAgICAgICBjb25zdCBib3hIZWlnaHQgPSBib3gub2Zmc2V0SGVpZ2h0IHx8IDA7XHJcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gYm94SGVpZ2h0ICsgNDtcclxuICAgICAgICBib3guc3R5bGUudG9wID0gYCR7LW9mZnNldH1weGA7XHJcblxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGJveC5zdHlsZS5ib3R0b20gPSBgYXV0b2A7XHJcbiAgICAgICAgYm94LnN0eWxlLnRvcCA9IGAxMDAlYDtcclxuICAgICAgICBib3guc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVkoMClgO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0pXHJcbiAgICB0aGlzLnNob3dEZXRhaWxzQm94ID0gdHJ1ZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICBpc0V4cGFuZGVkKHJvdzogYW55LCBjb2w6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWRDZWxscy5oYXModGhpcy5nZXRSb3dJZChyb3cpICsgJy0nICsgY29sLmZpZWxkKTtcclxuICB9XHJcblxyXG4gIGdldFpJbmRleChyb3c6IGFueSwgY29sOiBhbnkpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWRDZWxscy5nZXQodGhpcy5nZXRSb3dJZChyb3cpICsgJy0nICsgY29sLmZpZWxkKSA/PyAyMTtcclxuICB9XHJcblxyXG4gIGlzT3ZlcmZsb3dpbmcoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWVsZW1lbnQpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBlbGVtZW50LnNjcm9sbFdpZHRoID4gZWxlbWVudC5jbGllbnRXaWR0aDtcclxuICB9XHJcblxyXG5cclxuICAvLyBQaWN0dXJlIGNlbGwgTG9naWNcclxuICBjb2xvckNvbWJpbmF0aW9uID0gWydwaWMtY29tYjEnLCAncGljLWNvbWIyJywgJ3BpYy1jb21iNCddO1xyXG4gIGdldER5bmFtaWNDbGFzcyhuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFuYW1lKSByZXR1cm4gdGhpcy5jb2xvckNvbWJpbmF0aW9uWzBdO1xyXG4gICAgY29uc3QgaGFzaCA9IEFycmF5LmZyb20obmFtZSkucmVkdWNlKChhY2MsIGNoYXIpID0+IGFjYyArIGNoYXIuY2hhckNvZGVBdCgwKSwgMCk7XHJcbiAgICBjb25zdCBpbmRleCA9IGhhc2ggJSB0aGlzLmNvbG9yQ29tYmluYXRpb24/Lmxlbmd0aDtcclxuICAgIHJldHVybiB0aGlzLmNvbG9yQ29tYmluYXRpb25baW5kZXhdO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW5pdGlhbHMobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghbmFtZSkgcmV0dXJuICdOQSc7XHJcbiAgICBjb25zdCBwYXJ0cyA9IG5hbWUudHJpbSgpLnNwbGl0KCcgJyk7XHJcbiAgICByZXR1cm4gKHBhcnRzWzBdWzBdICsgKHBhcnRzWzFdPy5bMF0gfHwgJycpKS50b1VwcGVyQ2FzZSgpO1xyXG4gIH1cclxuXHJcblxyXG4gIGFjdGlvbkhpZGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHhQb3MgPSAwO1xyXG4gIHlQb3MgPSAwO1xyXG4gIGlzVmlzaWJsZSA9IGZhbHNlO1xyXG4gIGRlYXRpbHNMaXN0OiBhbnk7XHJcbiAgb3BlbkV4cGVuZEluZGV4OiBhbnk7XHJcbiAgcG9zaXRpb25lZFlldCA9IGZhbHNlO1xyXG5cclxuICBvblJpZ2h0Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50IHwgYW55LCBkZWF0aWxzTGlzdDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoZGVhdGlsc0xpc3Q/LmFjdGlvbnM/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmFjdGlvbnMgPSBkZWF0aWxzTGlzdC5hY3Rpb25zO1xyXG4gICAgfVxyXG4gICAgaWYgKCEoZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGRlYXRpbHNMaXN0Ll9fdmlydHVhbEluZGV4ID09IDApIHJldHVybiBmYWxzZTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLnhQb3MgPSAoZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSA/IGV2ZW50LmNsaWVudFggOiBldmVudC50b3VjaGVzWzBdLmNsaWVudFg7XHJcbiAgICB0aGlzLnlQb3MgPSAoZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSA/IGV2ZW50LmNsaWVudFkgOiBldmVudC50b3VjaGVzWzBdLmNsaWVudFk7XHJcbiAgICAvLyB0aGlzLnhQb3MgPSBldmVudC5jbGllbnRYO1xyXG4gICAgLy8gdGhpcy55UG9zID0gZXZlbnQuY2xpZW50WTtcclxuICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcclxuICAgIHRoaXMucG9zaXRpb25lZFlldCA9IGZhbHNlO1xyXG4gICAgdGhpcy5kZWF0aWxzTGlzdCA9IGRlYXRpbHNMaXN0O1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IG1lbnVFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNvbnRleHQtbWVudScpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoIW1lbnVFbGVtZW50KSByZXR1cm47XHJcbiAgICAgIGNvbnN0IG1lbnVXaWR0aCA9IG1lbnVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICBjb25zdCBtZW51SGVpZ2h0ID0gbWVudUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICAgIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xyXG4gICAgICBsZXQgeCA9IChldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpID8gZXZlbnQuY2xpZW50WCA6IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WDsgLy9ldmVudC5jbGllbnRYO1xyXG4gICAgICBsZXQgeSA9IChldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpID8gZXZlbnQuY2xpZW50WSA6IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WTsgLy9ldmVudC5jbGllbnRZO1xyXG4gICAgICBpZiAoeCArIG1lbnVXaWR0aCA+IHZpZXdwb3J0V2lkdGgpIHtcclxuICAgICAgICB4ID0gdmlld3BvcnRXaWR0aCAtIG1lbnVXaWR0aCAtIDEwO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh5ICsgbWVudUhlaWdodCA+IHZpZXdwb3J0SGVpZ2h0KSB7XHJcbiAgICAgICAgeSA9IHZpZXdwb3J0SGVpZ2h0IC0gbWVudUhlaWdodCAtIDEwO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMueFBvcyA9IHg7XHJcbiAgICAgIHRoaXMueVBvcyA9IHk7XHJcbiAgICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucG9zaXRpb25lZFlldCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvbkFjdGlvbkNsaWNrKGFjdGlvbjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBzZW5kT2JqID0ge1xyXG4gICAgICBvYmo6IHRoaXMuZGVhdGlsc0xpc3QsXHJcbiAgICAgIGV2ZW50VHlwZTogYWN0aW9uLFxyXG4gICAgfTtcclxuICAgIHRoaXMucG9zaXRpb25lZFlldCA9IGZhbHNlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChzZW5kT2JqKTtcclxuICB9XHJcblxyXG5cclxuICBvblZlcmlmeUNsaWNrKHR5cGU6IHN0cmluZykge1xyXG4gICAgY29uc3QgaWRzQXJyYXkgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzKTtcclxuICAgIGNvbnN0IGFycmF5T2ZPYmplY3RzV2l0aFRhYmxlVHlwZTogYW55W10gPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmZvckVhY2goaWQgPT4ge1xyXG4gICAgICBhcnJheU9mT2JqZWN0c1dpdGhUYWJsZVR5cGUucHVzaCh7XHJcbiAgICAgICAgaWQ6IGlkLFxyXG4gICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgY29uc3Qgc2VuZE9iaiA9IHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIG9iajogaWRzQXJyYXksXHJcbiAgICAgICAgdGFibGVOYW1lOiB0aGlzLnRhYmxlTmFtZSxcclxuICAgICAgICBsaXN0aW5nVHlwZTogdGhpcy5saXN0aW5nVHlwZSxcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiB0eXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoc2VuZE9iailcclxuICB9XHJcblxyXG5cclxuXHJcbiAgZ2V0Q2VsbENsYXNzZXMoY29sdW1uOiBhbnksIHZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF2YWx1ZSB8fCAhY29sdW1uPy5maWVsZCkgcmV0dXJuICcnO1xyXG5cclxuICAgIGxldCB2YWw6IGFueSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyB2YWx1ZT8udmFsdWUgPz8gdmFsdWUgOiB2YWx1ZTtcclxuICAgIGNvbnN0IGZpZWxkID0gY29sdW1uLmZpZWxkLnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgaWYgKGZpZWxkID09PSAnZHVlX2RhdGUnKSB7XHJcbiAgICAgIGNvbnN0IGR1ZURhdGUgPSBuZXcgRGF0ZSh2YWwpO1xyXG4gICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGNvbnN0IHRvZGF5VVRDID0gRGF0ZS5VVEModG9kYXkuZ2V0RnVsbFllYXIoKSwgdG9kYXkuZ2V0TW9udGgoKSwgdG9kYXkuZ2V0RGF0ZSgpKTtcclxuICAgICAgY29uc3QgZHVlVVRDID0gRGF0ZS5VVEMoZHVlRGF0ZS5nZXRGdWxsWWVhcigpLCBkdWVEYXRlLmdldE1vbnRoKCksIGR1ZURhdGUuZ2V0RGF0ZSgpKTtcclxuXHJcbiAgICAgIGlmIChkdWVVVEMgPCB0b2RheVVUQykge1xyXG4gICAgICAgIHJldHVybiAndGV4dC1kYW5nZXInO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGVsc2UgaWYoZHVlVVRDID09PSB0b2RheVVUQyl7XHJcbiAgICAgIC8vICAgcmV0dXJuICd0ZXh0LXdhcm5pbmcnO1xyXG4gICAgICAvLyB9XHJcblxyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGNvbnN0IHN0YXR1cyA9IHZhbD8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKFxyXG4gICAgICAoZmllbGQgPT09ICdzdGF0dXMnIHx8XHJcbiAgICAgIGZpZWxkID09PSAnYWNjb3VudF9zdGF0dXMnIHx8XHJcbiAgICAgIGZpZWxkID09PSAnYXZhaWxzdGF0dXMnIHx8XHJcbiAgICAgIGZpZWxkID09PSAnaXNfY3VzdG9tX2dyYWRlJykgXHJcbiAgICAgICYmICFjb2x1bW4/LmNlbGxSZW5kZXJlclxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBTVEFUVVNFU19CQURHRV9NQVBbc3RhdHVzXSB8fCAnYmFkZ2UgYmFkZ2Utc2Vjb25kYXJ5JztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuXHJcbiAgcmVtb3ZlQ29sdW1uRmlsdGVyRnJvbUNvbHVtbihjb2x1bW46IGFueSkge1xyXG4gICAgaWYgKCFjb2x1bW4pIHJldHVyblxyXG4gICAgaWYgKGNvbHVtbi50eXBlID09PSAnZHJvcGRvd24nKSB7XHJcbiAgICAgIGNvbHVtbi5xdWVyeS5faWRzID0gW107XHJcbiAgICB9IGVsc2UgaWYgKFsnc3RyaW5nJywgJ251bWJlcicsICdkYXRlJ10uaW5jbHVkZXMoY29sdW1uLnR5cGUpKSB7XHJcbiAgICAgIGNvbHVtbi5xdWVyeSA9IHtcclxuICAgICAgICBmaXJzdF9jb25kaXRpb246ICdjb250YWluJyxcclxuICAgICAgICBmaXJzdF92YWx1ZTogbnVsbCxcclxuICAgICAgICBjb25kaXRpb246ICdub25lJyxcclxuICAgICAgICBzZWNvbmRfY29uZGl0aW9uOiBudWxsLFxyXG4gICAgICAgIHNlY29uZF92YWx1ZTogbnVsbCxcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWx0ZXJzQ29uZmlnLmZpbmRJbmRleCgoZjogYW55KSA9PiBmLmZpZWxkID09PSBjb2x1bW4uZmllbGQpO1xyXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNvbW1vblNldmljZS5nZXRGaWx0ZXJzRnJvbUNvbHVtbnModGhpcy5jb2x1bW5zLCB0aGlzLmZpbHRlcnNDb25maWcpO1xyXG4gICAgY29uc3QgY2xlYW5lZEZpbHRlcmVkQ29sdW1ucyA9IGZpbHRlcmVkQ29sdW1ucy5tYXAoKHsgcXVlcnksIC4uLnJlc3QgfSkgPT4ge1xyXG4gICAgICBpZiAocXVlcnkpIHtcclxuICAgICAgICBkZWxldGUgcXVlcnkuX190eXBlbmFtZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHF1ZXJ5LFxyXG4gICAgICAgIC4uLnJlc3QsXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHNlbmREYXRhID0ge1xyXG4gICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxyXG4gICAgICBmaWx0ZXJzOiBjbGVhbmVkRmlsdGVyZWRDb2x1bW5zLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiBOdW1iZXIodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0KSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IGNsZWFuZWRGaWx0ZXJlZENvbHVtbnM7XHJcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucy5lbWl0KGZpbHRlcmVkQ29sdW1ucyk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcbiAgb25TaWRlTWVudUNvbHVtbnNWaXNpYmlsaXR5Q2hhbmdlKCkge1xyXG4gICAgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY29tbW9uU2V2aWNlLmdldEZpbHRlcnNGcm9tQ29sdW1ucyh0aGlzLmNvbHVtbnMsIHRoaXMuZmlsdGVyc0NvbmZpZykubWFwKCh7IHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcclxuICAgICAgICBpZiAocXVlcnkpIHtcclxuICAgICAgICAgIGRlbGV0ZSBxdWVyeS5fX3R5cGVuYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgcXVlcnksXHJcbiAgICAgICAgICAuLi5yZXN0LFxyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG4gIH1cclxuXHJcbiAgY2xlYW5GaWx0ZXJkQ29sdW1ucygpIHtcclxuICAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IHRoaXMuY29tbW9uU2V2aWNlLmdldEZpbHRlcnNGcm9tQ29sdW1ucyh0aGlzLmNvbHVtbnMsIHRoaXMuZmlsdGVyc0NvbmZpZyk7XHJcbiAgICBjb25zdCBjbGVhbmVkRmlsdGVyZWRDb2x1bW5zID0gZmlsdGVyZWRDb2x1bW5zLm1hcCgoeyBxdWVyeSwgLi4ucmVzdCB9KSA9PiB7XHJcbiAgICAgIGlmIChxdWVyeSkge1xyXG4gICAgICAgIGRlbGV0ZSBxdWVyeS5fX3R5cGVuYW1lO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgcXVlcnksXHJcbiAgICAgICAgLi4ucmVzdCxcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY2xlYW5lZEZpbHRlcmVkQ29sdW1ucztcclxuICB9XHJcblxyXG4gIGRvd25sb2FkQ3N2KHR5cGU6ICdjc3YnIHwgJ3hsc3gnKSB7XHJcbiAgICBjb25zdCBjb25maWc6IGFueSA9IHtcclxuICAgICAgaGVhZGVyQmdDb2xvcjogdGhpcy5oZWFkZXJCYWNrZ3JvdW5kQ29sb3IsXHJcbiAgICAgIGhlYWRlclRleHRDb2xvcjogdGhpcy5oZWFkZXJUZXh0Q29sb3IsXHJcbiAgICAgIGJvZHlUZXh0Q29sb3I6ICcjMDAwMDAwJyxcclxuICAgICAgZm9udEZhbWlseTogdGhpcy5mb250RmFpbWx5LFxyXG4gICAgICBmb250V2VpZ2h0OiAnbm9ybWFsJyxcclxuICAgICAgem9vbVNjYWxlOiAxMjUsXHJcbiAgICAgIGhlYWRlclJvd0hlaWdodDogMzBcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmVuYWJsZUV4cG9ydCkge1xyXG4gICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICBjb25zdCBkZCA9IFN0cmluZyhub3cuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgICBjb25zdCBtbSA9IFN0cmluZyhub3cuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgIGNvbnN0IHl5eXkgPSBub3cuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgY29uc3QgSEggPSBTdHJpbmcobm93LmdldEhvdXJzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgIGNvbnN0IE1NID0gU3RyaW5nKG5vdy5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgIGNvbnN0IGZvcm1hdHRlZCA9XHJcbiAgICAgICAgYCR7dGhpcy50YWJsZVR5cGV9XyR7ZGR9LSR7bW19LSR7eXl5eX1fJHtISH0tJHtNTX1gO1xyXG5cclxuICAgICAgY29uc29sZS5sb2coZm9ybWF0dGVkKTtcclxuXHJcbiAgICAgIHRoaXMuZXhwb3J0U2VydmljZS5leHBvcnREYXRhKHRoaXMuY29sdW1ucywgdGhpcy5kYXRhU2V0LCBmb3JtYXR0ZWQsIHR5cGUsIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLCBjb25maWcpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIG9iajoge1xyXG4gICAgICAgIGNvbHVtbnM6IHRoaXMuY29sdW1ucyxcclxuICAgICAgICBmaWx0ZXJzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICBldmVudFR5cGU6ICdkb3dubG9hZENzdidcclxuICAgIH1cclxuICAgIGlmICh0eXBlID09ICd4bHN4Jykge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpXHJcblxyXG4gIH1cclxuXHJcbiAgb25Gb250Q2hhbmdlKCkge1xyXG4gICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZTtcclxuICAgIGNvbnN0IGNvbmZpZyA9IHtcclxuICAgICAgZm9udEZhaW1seTogdGhpcy5mb250RmFpbWx5LFxyXG4gICAgICBib2R5VGV4dEZvbnRzU2l6ZTogdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSxcclxuICAgICAgaGVhZGVyVGV4dEZvbnRzU2l6ZTogdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplLFxyXG4gICAgICBvZGRSb3dzQmFja2dyb3VuZENvbG9yOiB0aGlzLnJvd1NoYWRpbmdFbmFibGVkID8gdGhpcy5vZGRSb3dzQmFja2dyb3VuZENvbG9yIDogdW5kZWZpbmVkLFxyXG4gICAgICBzaG93VmVydGljYWxCb3JkZXI6IHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyLFxyXG4gICAgICBzZWxlY3RlZFRhYmxlTGF5b3V0OiB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQsXHJcbiAgICAgIGdsb2JhbFNlYXJjaDogdGhpcy50YWJsZVNlYXJjaFxyXG4gICAgfVxyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIG9iajoge1xyXG4gICAgICAgIGRhdGE6IGNvbmZpZ1xyXG4gICAgICB9LFxyXG4gICAgICBldmVudFR5cGU6ICdjb25maWcnXHJcbiAgICB9XHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KVxyXG4gIH1cclxuXHJcbiAgb25HbG9iYWxTZWFyY2goKSB7XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgb2JqOiB7XHJcbiAgICAgICAgdGFibGVTZWFyY2g6IHRoaXMudGFibGVTZWFyY2hcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiAnc2VhcmNoJ1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcclxuICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSB7XHJcbiAgICAgIHRoaXMuc2F2ZVByZXNldCgnbW91c2VVcCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TZWFyY2hJbnB1dChldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdTZWFyY2ggdmFsdWU6JywgdmFsdWUpO1xyXG5cclxuICAgIGlmICh2YWx1ZSA9PT0gJycpIHtcclxuICAgICAgdGhpcy50YWJsZVNlYXJjaCA9ICcnO1xyXG4gICAgICB0aGlzLm9uR2xvYmFsU2VhcmNoKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja0ZpbHRlckNoYW5nZXNFZmZlY3QoKTogYW55IHtcclxuICAgIGlmICghdGhpcy50YWJsZUZpbHRlclZpZXdJZCkgcmV0dXJuIHRydWVcclxuICAgIGNvbnN0IGZpbmREZWZhdWx0RmlsdGVyID0gdGhpcy50YWJsZVZpZXc/LmZpbmQoKGVsZTogYW55KSA9PiBlbGU/LmlkID09IHRoaXMudGFibGVGaWx0ZXJWaWV3SWQpO1xyXG4gICAgY29uc3Qgbm9ybWFsaXplRmlsdGVycyA9IChmaWx0ZXJzOiBhbnlbXSB8IHVuZGVmaW5lZCk6IGFueVtdID0+IHtcclxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZpbHRlcnMpKSByZXR1cm4gW107XHJcbiAgICAgIGNvbnN0IGNsb25lZCA9IGZpbHRlcnMubWFwKGYgPT4ge1xyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGYgPz8ge30pKTtcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXRlbS5faWRzKSkgaXRlbS5faWRzID0gW107XHJcbiAgICAgICAgaXRlbS5faWRzID0gaXRlbS5faWRzLnNsaWNlKCkuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgYSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGIgPT09ICdudW1iZXInKSByZXR1cm4gYSAtIGI7XHJcbiAgICAgICAgICByZXR1cm4gKCcnICsgYSkubG9jYWxlQ29tcGFyZSgnJyArIGIpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAoaXRlbS5xdWVyeSA9PT0gbnVsbCkge1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGl0ZW0ucXVlcnkgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXRlbS5xdWVyeS5faWRzKSkgaXRlbS5xdWVyeS5faWRzID0gW107XHJcbiAgICAgICAgICBpdGVtLnF1ZXJ5Ll9pZHMgPSBpdGVtLnF1ZXJ5Ll9pZHMuc2xpY2UoKS5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGEgPT09ICdudW1iZXInICYmIHR5cGVvZiBiID09PSAnbnVtYmVyJykgcmV0dXJuIGEgLSBiO1xyXG4gICAgICAgICAgICByZXR1cm4gKCcnICsgYSkubG9jYWxlQ29tcGFyZSgnJyArIGIpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gaXRlbTtcclxuICAgICAgfSk7XHJcbiAgICAgIGNsb25lZC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGZhID0gKGEuZmllbGQgfHwgJycpICsgJ3wnICsgKGEudHlwZSB8fCAnJyk7XHJcbiAgICAgICAgY29uc3QgZmIgPSAoYi5maWVsZCB8fCAnJykgKyAnfCcgKyAoYi50eXBlIHx8ICcnKTtcclxuICAgICAgICByZXR1cm4gZmEubG9jYWxlQ29tcGFyZShmYik7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmV0dXJuIGNsb25lZDtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZGVlcEVxdWFsID0gKGE6IGFueSwgYjogYW55KTogYm9vbGVhbiA9PiB7XHJcbiAgICAgIGlmIChhID09PSBiKSByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgIGlmICh0eXBlb2YgYSAhPT0gJ29iamVjdCcgfHwgYSA9PT0gbnVsbCB8fCB0eXBlb2YgYiAhPT0gJ29iamVjdCcgfHwgYiA9PT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBhID09PSBiO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShhKSAhPT0gQXJyYXkuaXNBcnJheShiKSkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcclxuICAgICAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoIWRlZXBFcXVhbChhW2ldLCBiW2ldKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3Qga2V5c0EgPSBPYmplY3Qua2V5cyhhKTtcclxuICAgICAgY29uc3Qga2V5c0IgPSBPYmplY3Qua2V5cyhiKTtcclxuICAgICAgaWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVuZ3RoKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzQSkge1xyXG4gICAgICAgIGlmICgha2V5c0IuaW5jbHVkZXMoa2V5KSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGlmICghZGVlcEVxdWFsKGFba2V5XSwgYltrZXldKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IG5vcm1hbGl6ZWRBID0gbm9ybWFsaXplRmlsdGVycyhmaW5kRGVmYXVsdEZpbHRlcj8uZmlsdGVycyk7XHJcbiAgICBjb25zdCBub3JtYWxpemVkQiA9IG5vcm1hbGl6ZUZpbHRlcnModGhpcy5maWx0ZXJzQ29uZmlnKTtcclxuICAgIGNvbnN0IGlzU2FtZSA9IGRlZXBFcXVhbChub3JtYWxpemVkQSwgbm9ybWFsaXplZEIpO1xyXG4gICAgcmV0dXJuIGlzU2FtZTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vIENlbGwgU2VsZWN0aW9uIEltcGxlbWVudGVkIEhlcmUgSW1wbGVtZW50ZWQgSGVyZVxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbiAgc2VsZWN0ZWRDZWxsczogYW55W10gPSBbXTtcclxuICBzZWxlY3RlZEtleXM6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpO1xyXG4gIHNlbGVjdGlvblN0YXJ0OiBhbnkgPSBudWxsO1xyXG4gIGlzU2VsZWN0aW5nID0gZmFsc2U7XHJcbiAgc3RhcnRTZWxlY3Rpb24oXHJcbiAgICByb3dJbmRleDogbnVtYmVyLFxyXG4gICAgY29sSW5kZXg6IG51bWJlcixcclxuICAgIHN1YkNvbEluZGV4OiBudW1iZXIgfCBudWxsLFxyXG4gICAgZmllbGQ6IHN0cmluZyxcclxuICAgIGV2ZW50OiBNb3VzZUV2ZW50LFxyXG4gICAgc2VjdGlvbjogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICAvLyBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuY2xlYXIoKTtcclxuICAgIGNvbnN0IHNhZmVTdWIgPSBzdWJDb2xJbmRleCA/PyAwO1xyXG4gICAgY29uc3Qga2V5ID0gYCR7cm93SW5kZXh9LSR7Y29sSW5kZXh9LSR7c2FmZVN1Yn0tJHtmaWVsZH1gO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0aW9uU3RhcnQgPSB7IHJvd0luZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXg6IHNhZmVTdWIsIGZpZWxkLCBrZXkgfTtcclxuICAgIHRoaXMuaXNTZWxlY3RpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zZWxlY3RlZEtleXMuY2xlYXIoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRLZXlzLmFkZChrZXkpO1xyXG4gICAgdGhpcy5zZWxlY3RlZENlbGxzID0gW3RoaXMuc2VsZWN0aW9uU3RhcnRdO1xyXG4gICAgY29uc3QgbW91c2VVcEhhbmRsZXIgPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMuZW5kU2VsZWN0aW9uKCk7XHJcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBtb3VzZVVwSGFuZGxlcik7XHJcbiAgICB9O1xyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBIYW5kbGVyKTtcclxuICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uQm91bmRhcmllcygpXHJcbiAgfVxyXG5cclxuXHJcbiAgZXh0ZW5kU2VsZWN0aW9uKFxyXG4gICAgcm93SW5kZXg6IG51bWJlcixcclxuICAgIGNvbEluZGV4OiBudW1iZXIsXHJcbiAgICBzdWJDb2xJbmRleDogbnVtYmVyIHwgbnVsbCxcclxuICAgIGZpZWxkOiBzdHJpbmcsXHJcbiAgICBldmVudDogTW91c2VFdmVudCxcclxuICAgIHNlY3Rpb246IHN0cmluZ1xyXG4gICkge1xyXG4gICAgaWYgKCF0aGlzLmlzU2VsZWN0aW5nIHx8ICF0aGlzLnNlbGVjdGlvblN0YXJ0KSByZXR1cm47XHJcblxyXG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLnNlbGVjdGlvblN0YXJ0O1xyXG4gICAgY29uc3QgdGFyZ2V0U3ViQ29sSW5kZXggPSBzdWJDb2xJbmRleCA/PyAwO1xyXG4gICAgY29uc3QgbmV3S2V5czogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XHJcbiAgICBjb25zdCBuZXdDZWxsczogYW55W10gPSBbXTtcclxuICAgIGNvbnN0IG1pblJvdyA9IE1hdGgubWluKHN0YXJ0LnJvd0luZGV4LCByb3dJbmRleCk7XHJcbiAgICBjb25zdCBtYXhSb3cgPSBNYXRoLm1heChzdGFydC5yb3dJbmRleCwgcm93SW5kZXgpO1xyXG4gICAgY29uc3QgY29sdW1uc1RvU2VsZWN0ID0gdGhpcy5nZXRDb2x1bW5TZWxlY3Rpb25SYW5nZShzdGFydC5jb2xJbmRleCwgY29sSW5kZXgsIHN0YXJ0LnN1YkNvbEluZGV4LCB0YXJnZXRTdWJDb2xJbmRleCk7XHJcblxyXG4gICAgZm9yIChsZXQgciA9IG1pblJvdzsgciA8PSBtYXhSb3c7IHIrKykge1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbEluZm8gb2YgY29sdW1uc1RvU2VsZWN0KSB7XHJcbiAgICAgICAgY29uc3QgayA9IGAke3J9LSR7Y29sSW5mby5jb2xJbmRleH0tJHtjb2xJbmZvLnN1YkNvbEluZGV4fS0ke3NlY3Rpb259YDtcclxuICAgICAgICBuZXdLZXlzLmFkZChrKTtcclxuICAgICAgICBuZXdDZWxscy5wdXNoKHtcclxuICAgICAgICAgIHJvd0luZGV4OiByLFxyXG4gICAgICAgICAgY29sSW5kZXg6IGNvbEluZm8uY29sSW5kZXgsXHJcbiAgICAgICAgICBzdWJDb2xJbmRleDogY29sSW5mby5zdWJDb2xJbmRleCxcclxuICAgICAgICAgIGZpZWxkLFxyXG4gICAgICAgICAga2V5OiBrXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkS2V5cyA9IG5ld0tleXM7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2VsbHMgPSBuZXdDZWxscztcclxuICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uQm91bmRhcmllcygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIC8vIEFkZCBhdXRvLXNjcm9sbGluZyBsb2dpY1xyXG4gICAgdGhpcy5oYW5kbGVDZWxsQXV0b1Njcm9sbChldmVudCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICBnZXRDb2x1bW5TZWxlY3Rpb25SYW5nZShcclxuICAgIHN0YXJ0Q29sOiBudW1iZXIsXHJcbiAgICBlbmRDb2w6IG51bWJlcixcclxuICAgIHN0YXJ0U3ViOiBudW1iZXIsXHJcbiAgICBlbmRTdWI6IG51bWJlclxyXG4gICk6IHsgY29sSW5kZXg6IG51bWJlcjsgc3ViQ29sSW5kZXg6IG51bWJlciB9W10ge1xyXG4gICAgY29uc3QgcmVzdWx0OiB7IGNvbEluZGV4OiBudW1iZXI7IHN1YkNvbEluZGV4OiBudW1iZXIgfVtdID0gW107XHJcbiAgICBjb25zdCBtaW5Db2wgPSBNYXRoLm1pbihzdGFydENvbCwgZW5kQ29sKTtcclxuICAgIGNvbnN0IG1heENvbCA9IE1hdGgubWF4KHN0YXJ0Q29sLCBlbmRDb2wpO1xyXG5cclxuICAgIGNvbnN0IGlzTGVmdFRvUmlnaHQgPSBzdGFydENvbCA8PSBlbmRDb2w7XHJcbiAgICBmb3IgKGxldCBjID0gbWluQ29sOyBjIDw9IG1heENvbDsgYysrKSB7XHJcbiAgICAgIGNvbnN0IHN1YkNvbENvdW50ID0gdGhpcy5nZXRTdWJDb2x1bW5Db3VudChjKTtcclxuXHJcbiAgICAgIGlmIChjID09PSBzdGFydENvbCAmJiBjID09PSBlbmRDb2wpIHtcclxuICAgICAgICBjb25zdCBtaW5TdWIgPSBNYXRoLm1pbihzdGFydFN1YiwgZW5kU3ViKTtcclxuICAgICAgICBjb25zdCBtYXhTdWIgPSBNYXRoLm1heChzdGFydFN1YiwgZW5kU3ViKTtcclxuICAgICAgICBmb3IgKGxldCBzID0gbWluU3ViOyBzIDw9IG1heFN1YiAmJiBzIDwgc3ViQ29sQ291bnQ7IHMrKykge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goeyBjb2xJbmRleDogYywgc3ViQ29sSW5kZXg6IHMgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGMgPT09IHN0YXJ0Q29sKSB7XHJcbiAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHQpIHtcclxuICAgICAgICAgIGZvciAobGV0IHMgPSBzdGFydFN1YjsgcyA8IHN1YkNvbENvdW50OyBzKyspIHtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2goeyBjb2xJbmRleDogYywgc3ViQ29sSW5kZXg6IHMgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZvciAobGV0IHMgPSAwOyBzIDw9IHN0YXJ0U3ViICYmIHMgPCBzdWJDb2xDb3VudDsgcysrKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHsgY29sSW5kZXg6IGMsIHN1YkNvbEluZGV4OiBzIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChjID09PSBlbmRDb2wpIHtcclxuICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodCkge1xyXG4gICAgICAgICAgZm9yIChsZXQgcyA9IDA7IHMgPD0gZW5kU3ViICYmIHMgPCBzdWJDb2xDb3VudDsgcysrKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHsgY29sSW5kZXg6IGMsIHN1YkNvbEluZGV4OiBzIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBzID0gZW5kU3ViOyBzIDwgc3ViQ29sQ291bnQ7IHMrKykge1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaCh7IGNvbEluZGV4OiBjLCBzdWJDb2xJbmRleDogcyB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgZm9yIChsZXQgcyA9IDA7IHMgPCBzdWJDb2xDb3VudDsgcysrKSB7XHJcbiAgICAgICAgICByZXN1bHQucHVzaCh7IGNvbEluZGV4OiBjLCBzdWJDb2xJbmRleDogcyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgZ2V0U3ViQ29sdW1uQ291bnQoY29sSW5kZXg6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBpZiAoIXRoaXMuY29sdW1ucyB8fCBjb2xJbmRleCA8IDAgfHwgY29sSW5kZXggPj0gdGhpcy5jb2x1bW5zLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gMTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY29sdW1uc1tjb2xJbmRleF07XHJcbiAgICBpZiAoY29sdW1uLmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY29sdW1uLmNoaWxkcmVuKSkge1xyXG4gICAgICByZXR1cm4gY29sdW1uLmNoaWxkcmVuLmxlbmd0aDtcclxuICAgIH1cclxuICAgIHJldHVybiAxO1xyXG4gIH1cclxuICBpc0dyb3VwQ29sdW1uKGNvbEluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmdldFN1YkNvbHVtbkNvdW50KGNvbEluZGV4KSA+IDE7XHJcbiAgfVxyXG4gIGVuZFNlbGVjdGlvbigpIHtcclxuICAgIHRoaXMuaXNTZWxlY3RpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuc3RvcEF1dG9TY3JvbGwoKTtcclxuICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uQm91bmRhcmllcygpO1xyXG4gIH1cclxuICBpc1NlbGVjdGVkKFxyXG4gICAgcm93SW5kZXg6IG51bWJlcixcclxuICAgIGNvbEluZGV4OiBudW1iZXIsXHJcbiAgICBzdWJDb2xJbmRleDogbnVtYmVyIHwgbnVsbCxcclxuICAgIGZpZWxkOiBzdHJpbmcsXHJcbiAgICBzZWN0aW9uOiBzdHJpbmdcclxuICApIHtcclxuICAgIGNvbnN0IHNhZmVTdWIgPSBzdWJDb2xJbmRleCA/PyAwO1xyXG4gICAgY29uc3Qga2V5ID0gYCR7cm93SW5kZXh9LSR7Y29sSW5kZXh9LSR7c2FmZVN1Yn0tJHtzZWN0aW9ufWA7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEtleXMuaGFzKGtleSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBzZWxlY3Rpb25Cb3VuZHM6IHtcclxuICAgIHRvcDogbnVtYmVyIHwgbnVsbDtcclxuICAgIGJvdHRvbTogbnVtYmVyIHwgbnVsbDtcclxuICAgIGxlZnQ6IHsgY29sSW5kZXg6IG51bWJlcjsgc3ViQ29sSW5kZXg6IG51bWJlciB9IHwgbnVsbDtcclxuICAgIHJpZ2h0OiB7IGNvbEluZGV4OiBudW1iZXI7IHN1YkNvbEluZGV4OiBudW1iZXIgfSB8IG51bGw7XHJcbiAgfSA9IHsgdG9wOiBudWxsLCBib3R0b206IG51bGwsIGxlZnQ6IG51bGwsIHJpZ2h0OiBudWxsIH07XHJcblxyXG4gIHVwZGF0ZVNlbGVjdGlvbkJvdW5kYXJpZXMoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZENlbGxzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbkJvdW5kcyA9IHsgdG9wOiBudWxsLCBib3R0b206IG51bGwsIGxlZnQ6IG51bGwsIHJpZ2h0OiBudWxsIH07XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBHZXQgYWxsIHVuaXF1ZSByb3cgaW5kaWNlcyBhbmQgZmluZCBtaW4vbWF4XHJcbiAgICBjb25zdCByb3dJbmRpY2VzID0gWy4uLm5ldyBTZXQodGhpcy5zZWxlY3RlZENlbGxzLm1hcChjZWxsID0+IGNlbGwucm93SW5kZXgpKV07XHJcbiAgICB0aGlzLnNlbGVjdGlvbkJvdW5kcy50b3AgPSBNYXRoLm1pbiguLi5yb3dJbmRpY2VzKTtcclxuICAgIHRoaXMuc2VsZWN0aW9uQm91bmRzLmJvdHRvbSA9IE1hdGgubWF4KC4uLnJvd0luZGljZXMpO1xyXG5cclxuICAgIC8vIEZvciBsZWZ0L3JpZ2h0IGJvdW5kYXJpZXMsIHdlIG5lZWQgdG8gY29uc2lkZXIgYm90aCBjb2xJbmRleCBhbmQgc3ViQ29sSW5kZXhcclxuICAgIGNvbnN0IGxlZnRNb3N0ID0gdGhpcy5maW5kTGVmdE1vc3RDZWxsKCk7XHJcbiAgICBjb25zdCByaWdodE1vc3QgPSB0aGlzLmZpbmRSaWdodE1vc3RDZWxsKCk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb25Cb3VuZHMubGVmdCA9IGxlZnRNb3N0O1xyXG4gICAgdGhpcy5zZWxlY3Rpb25Cb3VuZHMucmlnaHQgPSByaWdodE1vc3Q7XHJcbiAgfVxyXG4gIGZpbmRMZWZ0TW9zdENlbGwoKTogeyBjb2xJbmRleDogbnVtYmVyOyBzdWJDb2xJbmRleDogbnVtYmVyIH0gfCBudWxsIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBjb25zdCBtaW5Db2xJbmRleCA9IE1hdGgubWluKC4uLnRoaXMuc2VsZWN0ZWRDZWxscy5tYXAoY2VsbCA9PiBjZWxsLmNvbEluZGV4KSk7XHJcbiAgICBjb25zdCBsZWZ0Q29sQ2VsbHMgPSB0aGlzLnNlbGVjdGVkQ2VsbHMuZmlsdGVyKGNlbGwgPT4gY2VsbC5jb2xJbmRleCA9PT0gbWluQ29sSW5kZXgpO1xyXG4gICAgY29uc3QgbWluU3ViQ29sSW5kZXggPSBNYXRoLm1pbiguLi5sZWZ0Q29sQ2VsbHMubWFwKGNlbGwgPT4gY2VsbC5zdWJDb2xJbmRleCkpO1xyXG5cclxuICAgIHJldHVybiB7IGNvbEluZGV4OiBtaW5Db2xJbmRleCwgc3ViQ29sSW5kZXg6IG1pblN1YkNvbEluZGV4IH07XHJcbiAgfVxyXG4gIGZpbmRSaWdodE1vc3RDZWxsKCk6IHsgY29sSW5kZXg6IG51bWJlcjsgc3ViQ29sSW5kZXg6IG51bWJlciB9IHwgbnVsbCB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZENlbGxzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgY29uc3QgbWF4Q29sSW5kZXggPSBNYXRoLm1heCguLi50aGlzLnNlbGVjdGVkQ2VsbHMubWFwKGNlbGwgPT4gY2VsbC5jb2xJbmRleCkpO1xyXG4gICAgY29uc3QgcmlnaHRDb2xDZWxscyA9IHRoaXMuc2VsZWN0ZWRDZWxscy5maWx0ZXIoY2VsbCA9PiBjZWxsLmNvbEluZGV4ID09PSBtYXhDb2xJbmRleCk7XHJcbiAgICBjb25zdCBtYXhTdWJDb2xJbmRleCA9IE1hdGgubWF4KC4uLnJpZ2h0Q29sQ2VsbHMubWFwKGNlbGwgPT4gY2VsbC5zdWJDb2xJbmRleCkpO1xyXG5cclxuICAgIHJldHVybiB7IGNvbEluZGV4OiBtYXhDb2xJbmRleCwgc3ViQ29sSW5kZXg6IG1heFN1YkNvbEluZGV4IH07XHJcbiAgfVxyXG4gIGlzVG9wQm9yZGVyKHJvd0luZGV4OiBudW1iZXIsIGNvbEluZGV4OiBudW1iZXIsIHN1YkNvbEluZGV4OiBudW1iZXIgfCBudWxsLCBzZWN0aW9uOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHNhZmVTdWIgPSBzdWJDb2xJbmRleCA/PyAwO1xyXG4gICAgY29uc3QgaXNTZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRLZXlzLmhhcyhgJHtyb3dJbmRleH0tJHtjb2xJbmRleH0tJHtzYWZlU3VifS0ke3NlY3Rpb259YCk7XHJcbiAgICByZXR1cm4gaXNTZWxlY3RlZCAmJiB0aGlzLnNlbGVjdGlvbkJvdW5kcy50b3AgIT09IG51bGwgJiYgcm93SW5kZXggPT09IHRoaXMuc2VsZWN0aW9uQm91bmRzLnRvcDtcclxuICB9XHJcbiAgaXNCb3R0b21Cb3JkZXIocm93SW5kZXg6IG51bWJlciwgY29sSW5kZXg6IG51bWJlciwgc3ViQ29sSW5kZXg6IG51bWJlciB8IG51bGwsIHNlY3Rpb246IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgc2FmZVN1YiA9IHN1YkNvbEluZGV4ID8/IDA7XHJcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gdGhpcy5zZWxlY3RlZEtleXMuaGFzKGAke3Jvd0luZGV4fS0ke2NvbEluZGV4fS0ke3NhZmVTdWJ9LSR7c2VjdGlvbn1gKTtcclxuICAgIHJldHVybiBpc1NlbGVjdGVkICYmIHRoaXMuc2VsZWN0aW9uQm91bmRzLmJvdHRvbSAhPT0gbnVsbCAmJiByb3dJbmRleCA9PT0gdGhpcy5zZWxlY3Rpb25Cb3VuZHMuYm90dG9tO1xyXG4gIH1cclxuICBpc0xlZnRCb3JkZXIocm93SW5kZXg6IG51bWJlciwgY29sSW5kZXg6IG51bWJlciwgc3ViQ29sSW5kZXg6IG51bWJlciB8IG51bGwsIHNlY3Rpb246IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgc2FmZVN1YiA9IHN1YkNvbEluZGV4ID8/IDA7XHJcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gdGhpcy5zZWxlY3RlZEtleXMuaGFzKGAke3Jvd0luZGV4fS0ke2NvbEluZGV4fS0ke3NhZmVTdWJ9LSR7c2VjdGlvbn1gKTtcclxuICAgIHJldHVybiBpc1NlbGVjdGVkICYmIHRoaXMuc2VsZWN0aW9uQm91bmRzLmxlZnQgIT09IG51bGwgJiZcclxuICAgICAgY29sSW5kZXggPT09IHRoaXMuc2VsZWN0aW9uQm91bmRzLmxlZnQuY29sSW5kZXggJiZcclxuICAgICAgc2FmZVN1YiA9PT0gdGhpcy5zZWxlY3Rpb25Cb3VuZHMubGVmdC5zdWJDb2xJbmRleDtcclxuICB9XHJcblxyXG4gIGlzUmlnaHRCb3JkZXIocm93SW5kZXg6IG51bWJlciwgY29sSW5kZXg6IG51bWJlciwgc3ViQ29sSW5kZXg6IG51bWJlciB8IG51bGwsIHNlY3Rpb246IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgc2FmZVN1YiA9IHN1YkNvbEluZGV4ID8/IDA7XHJcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gdGhpcy5zZWxlY3RlZEtleXMuaGFzKGAke3Jvd0luZGV4fS0ke2NvbEluZGV4fS0ke3NhZmVTdWJ9LSR7c2VjdGlvbn1gKTtcclxuICAgIHJldHVybiBpc1NlbGVjdGVkICYmIHRoaXMuc2VsZWN0aW9uQm91bmRzLnJpZ2h0ICE9PSBudWxsICYmXHJcbiAgICAgIGNvbEluZGV4ID09PSB0aGlzLnNlbGVjdGlvbkJvdW5kcy5yaWdodC5jb2xJbmRleCAmJlxyXG4gICAgICBzYWZlU3ViID09PSB0aGlzLnNlbGVjdGlvbkJvdW5kcy5yaWdodC5zdWJDb2xJbmRleDtcclxuICB9XHJcblxyXG4gIGlzVG9wTGVmdENvcm5lcihyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyLCBzdWJDb2xJbmRleDogbnVtYmVyIHwgbnVsbCwgc2VjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc1RvcEJvcmRlcihyb3dJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKSAmJiB0aGlzLmlzTGVmdEJvcmRlcihyb3dJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIGlzVG9wUmlnaHRDb3JuZXIocm93SW5kZXg6IG51bWJlciwgY29sSW5kZXg6IG51bWJlciwgc3ViQ29sSW5kZXg6IG51bWJlciB8IG51bGwsIHNlY3Rpb246IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNUb3BCb3JkZXIocm93SW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbikgJiYgdGhpcy5pc1JpZ2h0Qm9yZGVyKHJvd0luZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgaXNCb3R0b21MZWZ0Q29ybmVyKHJvd0luZGV4OiBudW1iZXIsIGNvbEluZGV4OiBudW1iZXIsIHN1YkNvbEluZGV4OiBudW1iZXIgfCBudWxsLCBzZWN0aW9uOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzQm90dG9tQm9yZGVyKHJvd0luZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pICYmIHRoaXMuaXNMZWZ0Qm9yZGVyKHJvd0luZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgaXNCb3R0b21SaWdodENvcm5lcihyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyLCBzdWJDb2xJbmRleDogbnVtYmVyIHwgbnVsbCwgc2VjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0JvdHRvbUJvcmRlcihyb3dJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKSAmJiB0aGlzLmlzUmlnaHRCb3JkZXIocm93SW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbik7XHJcbiAgfVxyXG5cclxuXHJcbiAgY2VsbFNlbGVjdGlvbkF1dG9TY3JvbGxJbnRlcnZhbDogYW55ID0gbnVsbDtcclxuICBwcml2YXRlIHNjcm9sbFNwZWVkID0gMTUwO1xyXG4gIHByaXZhdGUgc2Nyb2xsTWFyZ2luID0gMzA7XHJcbiAgaGFuZGxlQ2VsbEF1dG9TY3JvbGwoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmNlbGxTZWxlY3Rpb25BdXRvU2Nyb2xsSW50ZXJ2YWwpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmNlbGxTZWxlY3Rpb25BdXRvU2Nyb2xsSW50ZXJ2YWwpO1xyXG4gICAgICB0aGlzLmNlbGxTZWxlY3Rpb25BdXRvU2Nyb2xsSW50ZXJ2YWwgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaG9yaXpvbnRhbENvbnRhaW5lciA9IHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHkubmF0aXZlRWxlbWVudDtcclxuICAgIGNvbnN0IHZlcnRpY2FsQ29udGFpbmVyID0gdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBpZiAoIWhvcml6b250YWxDb250YWluZXIgfHwgIXZlcnRpY2FsQ29udGFpbmVyKSByZXR1cm47XHJcbiAgICBjb25zdCBob3Jpem9udGFsUmVjdCA9IGhvcml6b250YWxDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCBtb3VzZVggPSBldmVudC5jbGllbnRYO1xyXG4gICAgY29uc3QgdmVydGljYWxSZWN0ID0gdmVydGljYWxDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCBtb3VzZVkgPSBldmVudC5jbGllbnRZO1xyXG4gICAgY29uc3QgbmVhclRvcCA9IG1vdXNlWSAtIHZlcnRpY2FsUmVjdC50b3AgPCB0aGlzLnNjcm9sbE1hcmdpbjtcclxuICAgIGNvbnN0IG5lYXJCb3R0b20gPSB2ZXJ0aWNhbFJlY3QuYm90dG9tIC0gbW91c2VZIDwgdGhpcy5zY3JvbGxNYXJnaW47XHJcbiAgICBjb25zdCBuZWFyTGVmdCA9IG1vdXNlWCAtIGhvcml6b250YWxSZWN0LmxlZnQgPCB0aGlzLnNjcm9sbE1hcmdpbjtcclxuICAgIGNvbnN0IG5lYXJSaWdodCA9IGhvcml6b250YWxSZWN0LnJpZ2h0IC0gbW91c2VYIDwgdGhpcy5zY3JvbGxNYXJnaW47XHJcbiAgICBsZXQgc2Nyb2xsWCA9IDA7XHJcbiAgICBsZXQgc2Nyb2xsWSA9IDA7XHJcbiAgICBpZiAobmVhclRvcCkgc2Nyb2xsWSA9IC10aGlzLnNjcm9sbFNwZWVkO1xyXG4gICAgaWYgKG5lYXJCb3R0b20pIHNjcm9sbFkgPSB0aGlzLnNjcm9sbFNwZWVkO1xyXG4gICAgaWYgKG5lYXJMZWZ0KSBzY3JvbGxYID0gLXRoaXMuc2Nyb2xsU3BlZWQ7XHJcbiAgICBpZiAobmVhclJpZ2h0KSBzY3JvbGxYID0gdGhpcy5zY3JvbGxTcGVlZDtcclxuICAgIGlmIChzY3JvbGxYICE9PSAwIHx8IHNjcm9sbFkgIT09IDApIHtcclxuICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uQXV0b1Njcm9sbEludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgIGlmIChzY3JvbGxYICE9PSAwKSB7XHJcbiAgICAgICAgICBob3Jpem9udGFsQ29udGFpbmVyLnNjcm9sbEJ5KHNjcm9sbFgsIDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2Nyb2xsWSAhPT0gMCkge1xyXG4gICAgICAgICAgdmVydGljYWxDb250YWluZXIuc2Nyb2xsQnkoMCwgc2Nyb2xsWSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCA4KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0b3BBdXRvU2Nyb2xsKCkge1xyXG4gICAgaWYgKHRoaXMuY2VsbFNlbGVjdGlvbkF1dG9TY3JvbGxJbnRlcnZhbCkge1xyXG4gICAgICBjbGVhckludGVydmFsKHRoaXMuY2VsbFNlbGVjdGlvbkF1dG9TY3JvbGxJbnRlcnZhbCk7XHJcbiAgICAgIHRoaXMuY2VsbFNlbGVjdGlvbkF1dG9TY3JvbGxJbnRlcnZhbCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gUm93IFNlbGVjdGlvbiBmcm9tIHRoZSBJbmRleGluZyBJbXBsZW1lbnRlZCBIZXJlXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuICByb3dTZWxlY3RlZEluZGV4ZXM6IFNldDxudW1iZXI+ID0gbmV3IFNldCgpO1xyXG4gIHJvd1NlbGVjdGluZyA9IGZhbHNlO1xyXG4gIHJvd1NlbGVjdGlvblN0YXJ0SW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIGF1dG9TY3JvbGxJbnRlcnZhbDogYW55ID0gbnVsbDtcclxuXHJcbiAgZ2V0IGZpcnN0U2VsZWN0ZWRSb3coKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICBpZiAodGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuc2l6ZSA9PT0gMCkgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gTWF0aC5taW4oLi4udGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGxhc3RTZWxlY3RlZFJvdygpOiBudW1iZXIgfCBudWxsIHtcclxuICAgIGlmICh0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5zaXplID09PSAwKSByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiBNYXRoLm1heCguLi50aGlzLnJvd1NlbGVjdGVkSW5kZXhlcyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb25Sb3dNb3VzZURvd24oaW5kZXg6IG51bWJlciwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnNlbGVjdGVkS2V5cy5jbGVhcigpO1xyXG4gICAgdGhpcy5yb3dTZWxlY3Rpb25TdGFydEluZGV4ID0gaW5kZXg7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5jbGVhcigpO1xyXG4gICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuYWRkKGluZGV4KTtcclxuICAgIHRoaXMuYWN0aXZlQ2VsbCA9ICcnO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIGNvbnN0IG1vdXNlTW92ZUhhbmRsZXIgPSAoZTogTW91c2VFdmVudCkgPT4gdGhpcy5oYW5kbGVBdXRvU2Nyb2xsKGUpO1xyXG4gICAgY29uc3QgbW91c2VVcEhhbmRsZXIgPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMub25Sb3dNb3VzZVVwKCk7XHJcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBtb3VzZVVwSGFuZGxlcik7XHJcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlTW92ZUhhbmRsZXIpO1xyXG4gICAgICBpZiAodGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwpIHtcclxuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCk7XHJcbiAgICAgICAgdGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBtb3VzZVVwSGFuZGxlcik7XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBtb3VzZU1vdmVIYW5kbGVyKTtcclxuICB9XHJcblxyXG4gIG9uUm93TW91c2VPdmVyKGluZGV4OiBudW1iZXIsIGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAoIXRoaXMucm93U2VsZWN0aW5nIHx8IHRoaXMucm93U2VsZWN0aW9uU3RhcnRJbmRleCA9PT0gbnVsbCkgcmV0dXJuO1xyXG4gICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuY2xlYXIoKTtcclxuICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5taW4odGhpcy5yb3dTZWxlY3Rpb25TdGFydEluZGV4LCBpbmRleCk7XHJcbiAgICBjb25zdCBlbmQgPSBNYXRoLm1heCh0aGlzLnJvd1NlbGVjdGlvblN0YXJ0SW5kZXgsIGluZGV4KTtcclxuICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkrKykge1xyXG4gICAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5hZGQoaSk7XHJcbiAgICB9XHJcbiAgICAvLyBjb25zb2xlLmxvZyhbLi4udGhpcy5yb3dTZWxlY3RlZEluZGV4ZXNdKTtcclxuICB9XHJcblxyXG4gIG9uUm93TW91c2VVcCgpIHtcclxuICAgIHRoaXMucm93U2VsZWN0aW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGlvblN0YXJ0SW5kZXggPSBudWxsO1xyXG4gIH1cclxuICBoYW5kbGVBdXRvU2Nyb2xsKGU6IE1vdXNlRXZlbnQpIHtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMubWFpblNjcm9sbD8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmICghY29udGFpbmVyKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgcmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IGVkZ2VTaXplID0gNDBcclxuICAgIGxldCBzY3JvbGxBbW91bnQgPSAwO1xyXG5cclxuICAgIGlmIChlLmNsaWVudFkgPCByZWN0LnRvcCArIGVkZ2VTaXplKSB7XHJcbiAgICAgIHNjcm9sbEFtb3VudCA9IC0xNTA7XHJcbiAgICB9IGVsc2UgaWYgKGUuY2xpZW50WSA+IHJlY3QuYm90dG9tIC0gZWRnZVNpemUpIHtcclxuICAgICAgc2Nyb2xsQW1vdW50ID0gMTUwO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzY3JvbGxBbW91bnQgIT09IDApIHtcclxuICAgICAgaWYgKCF0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCkge1xyXG4gICAgICAgIGNvbnN0IHN0ZXAgPSAoKSA9PiB7XHJcbiAgICAgICAgICBjb250YWluZXIuc2Nyb2xsVG9wICs9IHNjcm9sbEFtb3VudDtcclxuICAgICAgICAgIHRoaXMuYXV0b1Njcm9sbEludGVydmFsID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCkge1xyXG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuYXV0b1Njcm9sbEludGVydmFsKTtcclxuICAgICAgICB0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvLyBnZXRTZWxlY3RlZERhdGFGb3JDb3B5KCk6IGFueVtdW10ge1xyXG4gIC8vICAgY29uc3QgY29waWVkUm93czogYW55W11bXSA9IFtdO1xyXG4gIC8vICAgY29uc3QgZmluZFJvd0J5VmlydHVhbEluZGV4ID0gKHZJbmRleDogbnVtYmVyKSA9PlxyXG4gIC8vICAgICB0aGlzLmRhdGFTZXQuZmluZCgocjogYW55KSA9PiByLl9fdmlydHVhbEluZGV4ID09PSB2SW5kZXgpO1xyXG4gIC8vICAgaWYgKHRoaXMucm93U2VsZWN0ZWRJbmRleGVzICYmIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLnNpemUgPiAwKSB7XHJcbiAgLy8gICAgIGNvbnN0IHNvcnRlZEluZGV4ZXMgPSBbLi4udGhpcy5yb3dTZWxlY3RlZEluZGV4ZXNdLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcclxuICAvLyAgICAgZm9yIChjb25zdCB2SW5kZXggb2Ygc29ydGVkSW5kZXhlcykge1xyXG4gIC8vICAgICAgIGNvbnN0IHJvdyA9IGZpbmRSb3dCeVZpcnR1YWxJbmRleCh2SW5kZXgpO1xyXG4gIC8vICAgICAgIGlmICghcm93KSBjb250aW51ZTtcclxuICAvLyAgICAgICBjb25zdCByb3dWYWx1ZXMgPSB0aGlzLmNvbHVtbnMuZmxhdE1hcChjb2wgPT5cclxuICAvLyAgICAgICAgIGNvbC5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbilcclxuICAvLyAgICAgICAgICAgPyBjb2wuY2hpbGRyZW4ubWFwKChjOiB7IGZpZWxkOiBzdHJpbmcgfSkgPT5cclxuICAvLyAgICAgICAgICAgICAgIHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjLmZpZWxkKSA/PyAnJ1xyXG4gIC8vICAgICAgICAgICAgIClcclxuICAvLyAgICAgICAgICAgOiB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKSA/PyAnJ1xyXG4gIC8vICAgICAgICk7XHJcbiAgLy8gICAgICAgY29waWVkUm93cy5wdXNoKHJvd1ZhbHVlcyk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuXHJcbiAgLy8gICBpZiAodGhpcy5zZWxlY3RlZENlbGxzICYmIHRoaXMuc2VsZWN0ZWRDZWxscy5sZW5ndGggPiAwKSB7XHJcbiAgLy8gICAgIGNvbnN0IHJvd3NNYXAgPSBuZXcgTWFwPG51bWJlciwgYW55W10+KCk7XHJcbiAgLy8gICAgIGZvciAoY29uc3QgY2VsbCBvZiB0aGlzLnNlbGVjdGVkQ2VsbHMpIHtcclxuICAvLyAgICAgICBjb25zdCByb3cgPSBmaW5kUm93QnlWaXJ0dWFsSW5kZXgoY2VsbC5yb3dJbmRleCk7XHJcbiAgLy8gICAgICAgaWYgKCFyb3cpIGNvbnRpbnVlO1xyXG5cclxuICAvLyAgICAgICBjb25zdCBjb2wgPSB0aGlzLmNvbHVtbnNbY2VsbC5jb2xJbmRleF07XHJcbiAgLy8gICAgICAgbGV0IGZpZWxkTmFtZSA9IGNvbD8uZmllbGQ7XHJcbiAgLy8gICAgICAgaWYgKGNvbD8uY2hpbGRyZW4gJiYgY29sLmNoaWxkcmVuW2NlbGwuc3ViQ29sSW5kZXhdKSB7XHJcbiAgLy8gICAgICAgICBmaWVsZE5hbWUgPSBjb2wuY2hpbGRyZW5bY2VsbC5zdWJDb2xJbmRleF0uZmllbGQ7XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGZpZWxkTmFtZSkgPz8gJyc7XHJcblxyXG4gIC8vICAgICAgIGlmICghcm93c01hcC5oYXMoY2VsbC5yb3dJbmRleCkpIHJvd3NNYXAuc2V0KGNlbGwucm93SW5kZXgsIFtdKTtcclxuICAvLyAgICAgICByb3dzTWFwLmdldChjZWxsLnJvd0luZGV4KSEucHVzaCh2YWx1ZSk7XHJcbiAgLy8gICAgIH1cclxuXHJcbiAgLy8gICAgIGNvbnN0IHNvcnRlZENlbGxzID0gWy4uLnJvd3NNYXAuZW50cmllcygpXVxyXG4gIC8vICAgICAgIC5zb3J0KChbYV0sIFtiXSkgPT4gYSAtIGIpXHJcbiAgLy8gICAgICAgLm1hcCgoW18sIHZdKSA9PiB2KTtcclxuXHJcbiAgLy8gICAgIGNvcGllZFJvd3MucHVzaCguLi5zb3J0ZWRDZWxscyk7XHJcbiAgLy8gICB9XHJcblxyXG4gIC8vICAgaWYgKGNvcGllZFJvd3MubGVuZ3RoID09PSAwKSB7XHJcbiAgLy8gICAgIGNvbnN0IGFjdGl2ZUNlbGwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYWN0aXZlLWNlbGwnKTtcclxuICAvLyAgICAgaWYgKGFjdGl2ZUNlbGwpIHJldHVybiBbW2FjdGl2ZUNlbGwudGV4dENvbnRlbnQ/LnRyaW0oKSB8fCAnJ11dO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgY29uc3QgbWF4Q29scyA9IGNvcGllZFJvd3MucmVkdWNlKChtYXgsIHJvdykgPT4gTWF0aC5tYXgobWF4LCByb3cubGVuZ3RoKSwgMCk7XHJcbiAgLy8gICBjb25zdCBub3JtYWxpemVkID0gY29waWVkUm93cy5tYXAocm93ID0+IHtcclxuICAvLyAgICAgY29uc3QgbmV3Um93ID0gWy4uLnJvd107XHJcbiAgLy8gICAgIHdoaWxlIChuZXdSb3cubGVuZ3RoIDwgbWF4Q29scykgbmV3Um93LnB1c2goJycpOyBcclxuICAvLyAgICAgcmV0dXJuIG5ld1JvdztcclxuICAvLyAgIH0pO1xyXG4gIC8vICAgcmV0dXJuIG5vcm1hbGl6ZWQ7XHJcbiAgLy8gfVxyXG5cclxuXHJcbiAgdW5kb1N0YWNrOiBhbnlbXVtdID0gW107XHJcbiAgcmVkb1N0YWNrOiBhbnlbXVtdID0gW107XHJcblxyXG4gIHByaXZhdGUgY2xvbmVEYXRhKGRhdGE6IGFueVtdKTogYW55W10ge1xyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xyXG4gIH1cclxuXHJcbiAgcGVyZm9ybUN1dChzZWxlY3RlZERhdGE6IGFueVtdW10pIHtcclxuICAgIC8vIFNhdmUgY3VycmVudCBzdGF0ZSBmb3IgdW5kb1xyXG4gICAgdGhpcy51bmRvU3RhY2sucHVzaCh0aGlzLmNsb25lRGF0YSh0aGlzLnZpc2libGVSb3dzKSk7XHJcbiAgICB0aGlzLnJlZG9TdGFjayA9IFtdOyAvLyBDbGVhciByZWRvIHN0YWNrIG9uIG5ldyBhY3Rpb25cclxuXHJcbiAgICAvLyBQZXJmb3JtIGN1dFxyXG4gICAgdGhpcy5jb3B5U2VydmljZS5jdXRXaXRoQW5pbWF0aW9uKHNlbGVjdGVkRGF0YSk7XHJcbiAgICBjb25zdCB7IHVwZGF0ZWRSb3dzIH0gPSB0aGlzLmNvcHlTZXJ2aWNlLmN1dFNlbGVjdGVkU2VsZWN0ZWREYXRhKFxyXG4gICAgICB0aGlzLnZpc2libGVSb3dzLFxyXG4gICAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcyxcclxuICAgICAgdGhpcy5zZWxlY3RlZENlbGxzLFxyXG4gICAgICB0aGlzLmNvbHVtbnMsXHJcbiAgICAgIHRoaXMuc2V0TmVzdGVkVmFsdWUuYmluZCh0aGlzKVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBjb25zb2xlLmxvZygnVXBkYXRlZCBSb3dzOiAnLCB1cGRhdGVkUm93cyk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGdldFNlbGVjdGVkRGF0YUZvckNvcHkoKTogYW55W11bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb3B5U2VydmljZS5nZXRTZWxlY3RlZERhdGFGb3JDb3B5KFxyXG4gICAgICB0aGlzLmRhdGFTZXQsXHJcbiAgICAgIHRoaXMuY29sdW1ucyxcclxuICAgICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMsXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDZWxscyxcclxuICAgICAgdGhpcy5nZXROZXN0ZWRWYWx1ZS5iaW5kKHRoaXMpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBpc0Zvcm1GaWVsZCA9XHJcbiAgICAgIHRhcmdldC50YWdOYW1lID09PSAnSU5QVVQnIHx8XHJcbiAgICAgIHRhcmdldC50YWdOYW1lID09PSAnVEVYVEFSRUEnIHx8XHJcbiAgICAgIHRhcmdldC5pc0NvbnRlbnRFZGl0YWJsZTtcclxuICAgIGlmIChpc0Zvcm1GaWVsZCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHRhYmxlQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmRhdGEtZ3JpZC1ib2R5LXdyYXBwZXInKTtcclxuICAgIGlmICh0YWJsZUNvbnRhaW5lciAmJiAhdGFibGVDb250YWluZXIuY29udGFpbnModGFyZ2V0KSkgcmV0dXJuO1xyXG4gICAgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAnYycpIHtcclxuICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkQ2VsbHM/Lmxlbmd0aCAmJiAhdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuc2l6ZSkgcmV0dXJuXHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkRGF0YSA9IHRoaXMuZ2V0U2VsZWN0ZWREYXRhRm9yQ29weSgpO1xyXG4gICAgICAvLyBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB0aGlzLmNvcHlTZXJ2aWNlLmNvcHlUb0NsaXBib2FyZChzZWxlY3RlZERhdGEpO1xyXG5cclxuICAgIH0gZWxzZSBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICd4Jykge1xyXG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDZWxscz8ubGVuZ3RoIHx8ICF0aGlzLmVuYWJsZUN1dCkgcmV0dXJuXHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkRGF0YSA9IHRoaXMuZ2V0U2VsZWN0ZWREYXRhRm9yQ29weSgpO1xyXG4gICAgICAvLyBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB0aGlzLnBlcmZvcm1DdXQoc2VsZWN0ZWREYXRhKTtcclxuXHJcbiAgICB9IGVsc2UgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAneicpIHtcclxuICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkQ2VsbHM/Lmxlbmd0aCkgcmV0dXJuXHJcbiAgICAgIC8vIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMudW5kbygpO1xyXG5cclxuICAgIH0gZWxzZSBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICd5Jykge1xyXG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDZWxscz8ubGVuZ3RoKSByZXR1cm5cclxuICAgICAgLy8gZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy5yZWRvKCk7XHJcbiAgICB9IGVsc2UgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LmtleSA9PT0gJ2EnKSB7XHJcbiAgICAgIC8vIOKchSBTZWxlY3QgYWxsIGNlbGxzXHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0QWxsQ2VsbHMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBzZWxlY3RBbGxDZWxscygpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRDZWxscyA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZEtleXMuY2xlYXIoKTtcclxuICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmNsZWFyKCk7XHJcblxyXG4gICAgLy8gU2V0IHNlbGVjdGlvbiBzdGFydCBsaWtlIHNpbmdsZSBzZWxlY3Rpb24gKGZpcnN0IGNlbGwpXHJcbiAgICBpZiAodGhpcy5kYXRhU2V0Lmxlbmd0aCAmJiB0aGlzLmNvbHVtbnMubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IGZpcnN0RmllbGQgPSB0aGlzLmNvbHVtbnNbMF0uZmllbGQgfHwgdGhpcy5jb2x1bW5zWzBdLm5hbWU7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uU3RhcnQgPSB7XHJcbiAgICAgICAgcm93SW5kZXg6IDAsXHJcbiAgICAgICAgY29sSW5kZXg6IDAsXHJcbiAgICAgICAgc3ViQ29sSW5kZXg6IDAsXHJcbiAgICAgICAgZmllbGQ6IGZpcnN0RmllbGQsXHJcbiAgICAgICAga2V5OiBgMC0wLTAtJHtmaXJzdEZpZWxkfWAsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc1NlbGVjdGluZyA9IHRydWU7XHJcblxyXG4gICAgZm9yIChsZXQgcm93SW5kZXggPSAwOyByb3dJbmRleCA8PSB0aGlzLmRhdGFTZXQ/Lmxlbmd0aDsgcm93SW5kZXgrKykge1xyXG4gICAgICBpZiAoIXJvd0luZGV4KSBjb250aW51ZTtcclxuICAgICAgY29uc3Qgcm93ID0gdGhpcy5kYXRhU2V0W3Jvd0luZGV4XTtcclxuICAgICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuYWRkKHJvd0luZGV4KTtcclxuXHJcbiAgICAgIC8vIGZvciAobGV0IGNvbEluZGV4ID0gMDsgY29sSW5kZXggPCB0aGlzLmNvbHVtbnMubGVuZ3RoOyBjb2xJbmRleCsrKSB7XHJcbiAgICAgIC8vICAgY29uc3QgY29sID0gdGhpcy5jb2x1bW5zW2NvbEluZGV4XTtcclxuICAgICAgLy8gICBjb25zdCBmaWVsZCA9IGNvbC5maWVsZCB8fCBjb2wubmFtZTtcclxuICAgICAgLy8gICBpZighY29sLmlzX3Zpc2libGUpIGNvbnRpbnVlO1xyXG5cclxuICAgICAgLy8gICBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgLy8gICAgIGNvbC5jaGlsZHJlbi5mb3JFYWNoKChzdWI6IGFueSwgc3ViQ29sSW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAvLyAgICAgICBjb25zdCBrZXkgPSBgJHtyb3dJbmRleH0tJHtjb2xJbmRleH0tJHtzdWJDb2xJbmRleH0tJHtmaWVsZH1gO1xyXG4gICAgICAvLyAgICAgICB0aGlzLnNlbGVjdGVkS2V5cy5hZGQoa2V5KTtcclxuICAgICAgLy8gICAgICAgdGhpcy5zZWxlY3RlZENlbGxzLnB1c2goe1xyXG4gICAgICAvLyAgICAgICAgIHJvd0luZGV4LFxyXG4gICAgICAvLyAgICAgICAgIGNvbEluZGV4LFxyXG4gICAgICAvLyAgICAgICAgIHN1YkNvbEluZGV4LFxyXG4gICAgICAvLyAgICAgICAgIGZpZWxkLFxyXG4gICAgICAvLyAgICAgICAgIGtleSxcclxuICAgICAgLy8gICAgICAgfSk7XHJcbiAgICAgIC8vICAgICB9KTtcclxuICAgICAgLy8gICB9IGVsc2Uge1xyXG4gICAgICAvLyAgICAgY29uc3Qga2V5ID0gYCR7cm93SW5kZXh9LSR7Y29sSW5kZXh9LTAtJHtmaWVsZH1gO1xyXG4gICAgICAvLyAgICAgdGhpcy5zZWxlY3RlZEtleXMuYWRkKGtleSk7XHJcbiAgICAgIC8vICAgICB0aGlzLnNlbGVjdGVkQ2VsbHMucHVzaCh7XHJcbiAgICAgIC8vICAgICAgIHJvd0luZGV4LFxyXG4gICAgICAvLyAgICAgICBjb2xJbmRleCxcclxuICAgICAgLy8gICAgICAgc3ViQ29sSW5kZXg6IDAsXHJcbiAgICAgIC8vICAgICAgIGZpZWxkLFxyXG4gICAgICAvLyAgICAgICBrZXksXHJcbiAgICAgIC8vICAgICB9KTtcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBVcGRhdGUgaGlnaGxpZ2h0aW5nIGFuZCBVSVxyXG4gICAgdGhpcy51cGRhdGVTZWxlY3Rpb25Cb3VuZGFyaWVzKCk7XHJcblxyXG4gICAgLy8gU3RvcCBcInNlbGVjdGluZ1wiIG1vZGUgc2luY2UgaXQncyBhIG9uZS10aW1lIHNlbGVjdC1hbGxcclxuICAgIHRoaXMuaXNTZWxlY3RpbmcgPSBmYWxzZTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgdW5kbygpIHtcclxuICAgIGlmICh0aGlzLnVuZG9TdGFjay5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IHByZXZTdGF0ZSA9IHRoaXMudW5kb1N0YWNrLnBvcCgpITtcclxuICAgICAgdGhpcy5yZWRvU3RhY2sucHVzaCh0aGlzLmNsb25lRGF0YSh0aGlzLnZpc2libGVSb3dzKSk7XHJcbiAgICAgIHRoaXMudmlzaWJsZVJvd3MgPSB0aGlzLmNsb25lRGF0YShwcmV2U3RhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVkbygpIHtcclxuICAgIGlmICh0aGlzLnJlZG9TdGFjay5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IG5leHRTdGF0ZSA9IHRoaXMucmVkb1N0YWNrLnBvcCgpITtcclxuICAgICAgdGhpcy51bmRvU3RhY2sucHVzaCh0aGlzLmNsb25lRGF0YSh0aGlzLnZpc2libGVSb3dzKSk7XHJcbiAgICAgIHRoaXMudmlzaWJsZVJvd3MgPSB0aGlzLmNsb25lRGF0YShuZXh0U3RhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpwYXN0ZScsIFsnJGV2ZW50J10pXHJcbiAgYXN5bmMgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IHRhZyA9IHRhcmdldD8udGFnTmFtZT8udG9Mb3dlckNhc2UoKTtcclxuICAgIGlmICh0YWcgPT09ICdpbnB1dCcgfHwgdGFnID09PSAndGV4dGFyZWEnIHx8IHRhcmdldD8uZ2V0QXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnKSA9PT0gJ3RydWUnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDZWxscz8ubGVuZ3RoIHx8ICF0aGlzLmFjdGl2ZUNlbGwpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCB0ZXh0ID0gZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dCcpO1xyXG4gICAgaWYgKCF0ZXh0KSByZXR1cm47XHJcbiAgICBjb25zdCB1c2VyQ29uZmlybWVkID0gYXdhaXQgdGhpcy5zaG93Q29uZmlybWF0aW9uTW9kYWwoXHJcbiAgICAgICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcGFzdGUgdGhlIGNvcGllZCBkYXRhPydcclxuICAgICk7XHJcblxyXG4gICAgaWYgKCF1c2VyQ29uZmlybWVkKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzdGFydENlbGwgPSB0aGlzLnNlbGVjdGVkQ2VsbHM/LlswXTtcclxuICAgIGlmICghc3RhcnRDZWxsKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdXBkYXRlZFJvd3MgPSBhd2FpdCB0aGlzLmNvcHlTZXJ2aWNlLnBhc3RlRnJvbUNsaXBib2FyZFRleHQoXHJcbiAgICAgIHRleHQsXHJcbiAgICAgIHRoaXMudmlzaWJsZVJvd3MsXHJcbiAgICAgIHRoaXMuY29sdW1ucyxcclxuICAgICAgc3RhcnRDZWxsLnJvd0luZGV4LFxyXG4gICAgICBzdGFydENlbGwuY29sSW5kZXgsXHJcbiAgICAgIHN0YXJ0Q2VsbC5zdWJDb2xJbmRleFxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAodXBkYXRlZFJvd3M/LnVwZGF0ZVJvd3M/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KHtcclxuICAgICAgICBkYXRhOiB1cGRhdGVkUm93cz8udXBkYXRlUm93cyxcclxuICAgICAgICBldmVudFR5cGU6ICdvbkNlbGxFZGl0JyxcclxuICAgICAgICBjb2x1bW46IHVwZGF0ZWRSb3dzPy5jdXJyZW50Q29sdW1zXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNob3dDb25maXJtYXRpb25Nb2RhbChtZXNzYWdlOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgY29uc3Qgb3ZlcmxheSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICBvdmVybGF5LmNsYXNzTGlzdC5hZGQoJ2N1c3RvbS1vdmVybGF5LXdyYXBwZXInKTtcclxuICAgICAgb3ZlcmxheS5pbm5lckhUTUwgPSBgXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tb3ZlcmxheVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tbW9kYWxcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tbW9kYWwtYm9keVwiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cIm1vZGFsLW1lc3NhZ2VcIj4ke21lc3NhZ2V9PC9wPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tY29uZmlybVwiPkNvbmZpcm08L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWNhbmNlbFwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIGA7XHJcblxyXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG92ZXJsYXkpO1xyXG4gICAgICBjb25zdCBjb25maXJtQnRuID0gb3ZlcmxheS5xdWVyeVNlbGVjdG9yKCcuYnRuLWNvbmZpcm0nKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgY29uc3QgY2FuY2VsQnRuID0gb3ZlcmxheS5xdWVyeVNlbGVjdG9yKCcuYnRuLWNhbmNlbCcpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBjb25zdCBjbGVhbnVwID0gKCkgPT4ge1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQob3ZlcmxheSk7XHJcbiAgICAgIH07XHJcbiAgICAgIGNvbmZpcm1CdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgY2xlYW51cCgpO1xyXG4gICAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgY2FuY2VsQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgIGNsZWFudXAoKTtcclxuICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuICBpc0RhdGUodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICFpc05hTihuZXcgRGF0ZSh2YWx1ZSk/LmdldFRpbWUoKSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gSG9sZCBleHBhbmRlZCBJRHMgKGFycmF5IGZvciBtdWx0aXBsZSwgc2luZ2xlIHZhbHVlIGZvciBzaW5nbGUpXHJcbiAgZXhwYW5kZWRlZERldGFpbFJvd3M6IChzdHJpbmcgfCBudW1iZXIpW10gfCBzdHJpbmcgfCBudW1iZXIgPSAnJztcclxuXHJcbiAgdG9nZ2xlRGV0YWlsUm93RXhwYW5kKHJvdzogYW55KSB7XHJcbiAgICBjb25zdCBpZCA9IHJvdz8uaWQgfHwgcm93Py5faWQ7XHJcbiAgICBpZiAodGhpcy5ncmlkVHlwZSA9PT0gJ0Fzc2V0cycgJiYgcm93Py5kZXRhaWw/LmNvbHVtbnMpIHtcclxuICAgICAgcm93LmRldGFpbC5jb2x1bW5zLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGl0ZW0ud2lkdGggPSBpdGVtPy53aWR0aCB8fCAodGhpcy5kYXRhR3JpZENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIC8gcm93LmRldGFpbC5jb2x1bW5zPy5sZW5ndGgpXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnByZXZpZXdOZXN0ZWRDb2xzID0gdGhpcy5kZWVwQ2xvbmVDb2x1bW5zKHJvdy5kZXRhaWwuY29sdW1ucyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5rZWVwTXVsdGlwbGVFeHBhbmRlZERldGFpbHMpIHtcclxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MpKSB7XHJcbiAgICAgICAgdGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cyA9IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGV4cGFuZGVkID0gdGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cyBhcyAoc3RyaW5nIHwgbnVtYmVyKVtdO1xyXG4gICAgICBjb25zdCBpbmRleCA9IGV4cGFuZGVkLmluZGV4T2YoaWQpO1xyXG5cclxuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICBleHBhbmRlZC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGV4cGFuZGVkLnB1c2goaWQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cyA9PT0gaWQpIHtcclxuICAgICAgICB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzID0gJyc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cyA9IGlkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHZvaWQgdGhpcy5yaWdodFBpbm5lZEhlYWRlcj8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgdGhpcy5jZW50ZXJQaW5uZWRCb2R5Py5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICB0aGlzLnJpZ2h0UGlubmVkQm9keT8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMzAwKVxyXG4gIH1cclxuXHJcbiAgaXNEZXRhaWxzRXhwYW5kZWQocm93OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGlkID0gcm93Py5pZCB8fCByb3c/Ll9pZDtcclxuXHJcbiAgICBpZiAodGhpcy5rZWVwTXVsdGlwbGVFeHBhbmRlZERldGFpbHMpIHtcclxuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cykgJiZcclxuICAgICAgICB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzLmluY2x1ZGVzKGlkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzID09PSBpZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEZpbHRlclZhbHVlKG9wdGlvbjogYW55KTogYW55IHtcclxuICAgIHJldHVybiBvcHRpb24/LnZhbHVlID8/IG9wdGlvbjtcclxuICB9XHJcblxyXG5cclxuICBvcGVuSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIHRvZ2dsZU1lbnUoaTogbnVtYmVyLCBldmVudD86IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmIChldmVudCkgeyBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgfVxyXG4gICAgdGhpcy5vcGVuSW5kZXggPSB0aGlzLm9wZW5JbmRleCA9PT0gaSA/IG51bGwgOiBpO1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgnbmVzdGVkVGFibGUnKVxyXG4gIG5lc3RlZFRhYmxlITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgZ2V0IGhhc1ZlcnRpY2FsU2Nyb2xsKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLm5lc3RlZFRhYmxlKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gdGhpcy5uZXN0ZWRUYWJsZS5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCA+IHRoaXMubmVzdGVkVGFibGUubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbiAgfVxyXG5cclxuICBnZXQgaGFzSG9yaXpvbnRhbFNjcm9sbCgpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5uZXN0ZWRUYWJsZSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgZWwgPSB0aGlzLm5lc3RlZFRhYmxlLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICByZXR1cm4gZWwuc2Nyb2xsV2lkdGggPiBlbC5jbGllbnRXaWR0aDtcclxuICB9XHJcblxyXG5cclxuICBnZXRUb3RhbEFtb3VudChjb2x1bW46IGFueSkge1xyXG4gICAgaWYgKCFjb2x1bW4/LmlzX2Ftb3VudCkgcmV0dXJuO1xyXG4gICAgY29uc3QgdG90YWwgPSB0aGlzLm9yaWdpbmFsRGF0YVNldC5yZWR1Y2UoKHN1bSwgcm93KSA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gcm93W2NvbHVtbi5maWVsZF0gfHwgMDtcclxuICAgICAgcmV0dXJuIHN1bSArIHZhbHVlO1xyXG4gICAgfSwgMCk7XHJcblxyXG4gICAgcmV0dXJuIGAke3RoaXMuY3VycmVuY3lTeW1ib2x9JHt0b3RhbH1gO1xyXG4gIH1cclxuXHJcbiAgZHJvcENvbHVtbihldmVudDogQ2RrRHJhZ0Ryb3A8YW55W10+LCByb3c6IGFueSkge1xyXG4gICAgLy8gUmVvcmRlciB0aGUgY29sdW1ucyBhcnJheVxyXG4gICAgbW92ZUl0ZW1JbkFycmF5KHJvdy5kZXRhaWwuY29sdW1ucywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICB9XHJcblxyXG4gIGN1cnJlbnRTdWJTb3J0Q29sdW1uOiBzdHJpbmcgfCBudWxsID0gbnVsbDsgLy8gYWN0aXZlIGNvbHVtblxyXG4gIGN1cnJlbnRTb3J0RGlyZWN0aW9uOiAnYXNjJyB8ICdkZXNjJyA9ICdhc2MnOyAvLyBhY3RpdmUgZGlyZWN0aW9uXHJcblxyXG4gIHNvcnROZXN0ZWRDb2woY29sOiBhbnksIHJvdzogYW55KSB7XHJcbiAgICBjb25zdCBkYXRhU2V0ID0gcm93Py5kZXRhaWw/LnJlc3VsdDtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRTdWJTb3J0Q29sdW1uID09PSBjb2wuZmllbGQpIHtcclxuICAgICAgdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiA9IHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPT09ICdhc2MnID8gJ2Rlc2MnIDogJ2FzYyc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRTdWJTb3J0Q29sdW1uID0gY29sLmZpZWxkO1xyXG4gICAgICB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uID0gJ2FzYyc7XHJcbiAgICB9XHJcbiAgICBjb2wub3JkZXJfYnkgPSB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uO1xyXG5cclxuICAgIC8vIFNvcnQgY29weSBpbnN0ZWFkIG9mIG11dGF0aW5nXHJcbiAgICBjb25zdCBzb3J0ZWQgPSBbLi4uZGF0YVNldF0uc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICBsZXQgYVZhbCA9IGFbY29sLmZpZWxkXTtcclxuICAgICAgbGV0IGJWYWwgPSBiW2NvbC5maWVsZF07XHJcbiAgICAgIGFWYWwgPSBhVmFsID09IG51bGwgPyAnJyA6IGFWYWw7XHJcbiAgICAgIGJWYWwgPSBiVmFsID09IG51bGwgPyAnJyA6IGJWYWw7XHJcblxyXG4gICAgICBpZiAoY29sLnR5cGUgPT09ICdkYXRlJykge1xyXG4gICAgICAgIGFWYWwgPSBuZXcgRGF0ZShhVmFsKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgYlZhbCA9IG5ldyBEYXRlKGJWYWwpLmdldFRpbWUoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgYU51bSA9IHBhcnNlRmxvYXQoYVZhbCk7XHJcbiAgICAgIGNvbnN0IGJOdW0gPSBwYXJzZUZsb2F0KGJWYWwpO1xyXG4gICAgICBjb25zdCBib3RoTnVtYmVycyA9ICFpc05hTihhTnVtKSAmJiAhaXNOYU4oYk51bSk7XHJcblxyXG4gICAgICBpZiAoYm90aE51bWJlcnMpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiA9PT0gJ2FzYycgPyBhTnVtIC0gYk51bSA6IGJOdW0gLSBhTnVtO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGNvbXAgPSBTdHJpbmcoYVZhbCkubG9jYWxlQ29tcGFyZShTdHJpbmcoYlZhbCkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uID09PSAnYXNjJyA/IGNvbXAgOiAtY29tcDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcm93LmRldGFpbC5yZXN1bHQgPSBzb3J0ZWQ7XHJcblxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldENvbHVtbldpZHRoUHgocm93OiBhbnksIGNvbDogYW55KTogc3RyaW5nIHtcclxuICAgIGlmIChjb2wud2lkdGgpIHJldHVybiBjb2wud2lkdGggKyAncHgnO1xyXG4gICAgY29uc3QgcGl4ZWxzID0gdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGggLyByb3cuZGV0YWlsPy5jb2x1bW5zLmxlbmd0aDtcclxuICAgIHJldHVybiBwaXhlbHMgKyAncHgnO1xyXG4gIH1cclxuXHJcbiAgZnVsbHNjcmVlbkltYWdlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gIC8vIEFzc2VzdHMgTmVzdGVkIFRhYmxlIFdvcmsgSW1wbGVtZW50ZWQgSGVyZVxyXG5cclxuICBwaW5VbnBpbkNvbHVtKGNvbDogYW55LCB2YWx1ZTogJ2xlZnQnIHwgJ3JpZ2h0JyB8IG51bGwsIGNvbHVtbnM6IGFueVtdKSB7XHJcbiAgICBjb2wucGlubmVkID0gdmFsdWU7XHJcbiAgICBjb25zdCBsZWZ0ID0gY29sdW1ucy5maWx0ZXIoYyA9PiBjLnBpbm5lZCA9PT0gJ2xlZnQnKTtcclxuICAgIGNvbnN0IG1pZGRsZSA9IGNvbHVtbnMuZmlsdGVyKGMgPT4gIWMucGlubmVkIHx8IGMucGlubmVkID09PSBudWxsKTtcclxuICAgIGNvbnN0IHJpZ2h0ID0gY29sdW1ucy5maWx0ZXIoYyA9PiBjLnBpbm5lZCA9PT0gJ3JpZ2h0Jyk7XHJcbiAgICBjb2x1bW5zLmxlbmd0aCA9IDA7XHJcbiAgICBjb2x1bW5zLnB1c2goLi4ubGVmdCwgLi4ubWlkZGxlLCAuLi5yaWdodCk7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXRMZWZ0UGlubmVkQ291bnQoY29sdW1uczogYW55W10pOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGNvbHVtbnMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdsZWZ0JykubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmlnaHRQaW5uZWRDb3VudChjb2x1bW5zOiBhbnlbXSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gY29sdW1ucy5maWx0ZXIoYyA9PiBjLnBpbm5lZCA9PT0gJ3JpZ2h0JykubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RpY2t5TGVmdChjb2x1bW5zOiBhbnlbXSwgaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgbGVmdCA9IDA7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGluZGV4OyBpKyspIHtcclxuICAgICAgY29uc3QgcHJldkNvbCA9IGNvbHVtbnNbaV07XHJcbiAgICAgIGlmIChwcmV2Q29sLnBpbm5lZCA9PT0gJ2xlZnQnKSB7XHJcbiAgICAgICAgbGVmdCArPSBwcmV2Q29sLndpZHRoIHx8IDEwMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGAke2xlZnR9cHhgO1xyXG4gIH1cclxuXHJcbiAgcHJldmlld05lc3RlZENvbHM6IGFueVtdID0gW107XHJcbiAgb25OZXN0ZWRDb2xTb3J0KGV2ZW50OiBDZGtEcmFnU29ydEV2ZW50PGFueVtdPiwgY29sdW1uczogYW55W10pOiB2b2lkIHtcclxuICAgIGlmICghZXZlbnQgfHwgIWNvbHVtbnMpIHJldHVybjtcclxuICAgIGNvbnN0IGZpcnN0UG9zaXRpb25zID0gbmV3IE1hcDxIVE1MRWxlbWVudCwgbnVtYmVyPigpO1xyXG4gICAgY29sdW1ucy5mb3JFYWNoKChjb2wpID0+IHtcclxuICAgICAgY29uc3QgY29sQ2VsbHMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7Y29sLmZpZWxkfVwiXWApKSBhcyBIVE1MRWxlbWVudFtdO1xyXG4gICAgICBjb2xDZWxscy5mb3JFYWNoKChlbCkgPT4gZmlyc3RQb3NpdGlvbnMuc2V0KGVsLCBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0KSk7XHJcbiAgICB9KTtcclxuICAgIG1vdmVJdGVtSW5BcnJheShjb2x1bW5zLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2wpID0+IHtcclxuICAgICAgICBjb25zdCB1cGRhdGVkQ2VsbHMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7Y29sLmZpZWxkfVwiXWApKSBhcyBIVE1MRWxlbWVudFtdO1xyXG4gICAgICAgIHVwZGF0ZWRDZWxscy5mb3JFYWNoKChlbCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgbmV3TGVmdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XHJcbiAgICAgICAgICBjb25zdCBvbGRMZWZ0ID0gZmlyc3RQb3NpdGlvbnMuZ2V0KGVsKSA/PyBuZXdMZWZ0O1xyXG4gICAgICAgICAgY29uc3QgZGVsdGFYID0gb2xkTGVmdCAtIG5ld0xlZnQ7XHJcblxyXG4gICAgICAgICAgaWYgKGRlbHRhWCAhPT0gMCkge1xyXG4gICAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJ25vbmUnO1xyXG4gICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWCgke2RlbHRhWH1weClgO1xyXG4gICAgICAgICAgICB2b2lkIGVsLm9mZnNldFdpZHRoO1xyXG4gICAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJ3RyYW5zZm9ybSAyNTBtcyBlYXNlJztcclxuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVgoMCknO1xyXG4gICAgICAgICAgICBjb25zdCBjbGVhbnVwID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnJztcclxuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSAnJztcclxuICAgICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgY2xlYW51cCk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBjbGVhbnVwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBzYXZlU2VsZWN0aW9uKHNlbGVjdGVkSWRzOiBzdHJpbmdbXSwgdGFibGVUeXBlOiBzdHJpbmcpIHtcclxuICAgIGlmICghdGFibGVUeXBlKSByZXR1cm47XHJcbiAgICBjb25zdCBzdG9yZWQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkYXRhdGFibGVTZWxlY3Rpb25zJykgfHwgJ3tcInNlbGVjdGVkUm93c1wiOiB7fX0nKTtcclxuICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gc3RvcmVkLnNlbGVjdGVkUm93cyB8fCB7fTtcclxuICAgIGFsbFNlbGVjdGVkW3RhYmxlVHlwZV0gPSBzZWxlY3RlZElkcztcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAnZGF0YXRhYmxlU2VsZWN0aW9ucycsXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICBzZWxlY3RlZFJvd3M6IGFsbFNlbGVjdGVkLFxyXG4gICAgICAgIGxpc3RpbmdUeXBlOiB0YWJsZVR5cGVcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcmVzdG9yZVNlbGVjdGlvbih0YWJsZVR5cGU6IHN0cmluZykge1xyXG4gICAgY29uc3Qgc3RvcmVkID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZGF0YXRhYmxlU2VsZWN0aW9ucycpIHx8ICd7fScpO1xyXG4gICAgY29uc3QgaWRzID0gc3RvcmVkLnNlbGVjdGVkUm93cz8uW3RhYmxlVHlwZV0gfHwgW107XHJcbiAgICB0aGlzLnNlbGVjdGVkUm93cyA9IG5ldyBTZXQoaWRzKTtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkUm93cztcclxuICB9XHJcblxyXG5cclxuXHJcbiAgaXNPdXRzaWRlQ29udGFpbmVyID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBjb250YWluZXJSZWN0OiBET01SZWN0IHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICBvbkRyYWdTdGFydGVkKGNvbDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnREcmFnZ2luZ0NvbHVtbiA9IGNvbDtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXRhLWdyaWQtbWFpbi1jb250YWluZXInKTtcclxuICAgIHRoaXMuY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lcj8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIG9uRHJhZ01vdmVkKGV2ZW50OiBDZGtEcmFnTW92ZSk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmNvbnRhaW5lclJlY3QpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCB7IHgsIHkgfSA9IGV2ZW50LnBvaW50ZXJQb3NpdGlvbjtcclxuICAgIGNvbnN0IGlzT3V0c2lkZSA9XHJcbiAgICAgIHggPCB0aGlzLmNvbnRhaW5lclJlY3QubGVmdCB8fFxyXG4gICAgICB4ID4gdGhpcy5jb250YWluZXJSZWN0LnJpZ2h0IHx8XHJcbiAgICAgIHkgPCB0aGlzLmNvbnRhaW5lclJlY3QudG9wIHx8XHJcbiAgICAgIHkgPiB0aGlzLmNvbnRhaW5lclJlY3QuYm90dG9tO1xyXG5cclxuICAgIGlmIChpc091dHNpZGUgIT09IHRoaXMuaXNPdXRzaWRlQ29udGFpbmVyKSB7XHJcbiAgICAgIHRoaXMuaXNPdXRzaWRlQ29udGFpbmVyID0gaXNPdXRzaWRlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25EcmFnRW5kZWQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuaXNPdXRzaWRlQ29udGFpbmVyICYmIHRoaXMuY3VycmVudERyYWdnaW5nQ29sdW1uKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RHJhZ2dpbmdDb2x1bW4hLmlzX3Zpc2libGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmN1cnJlbnREcmFnZ2luZ0NvbHVtbiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5pc091dHNpZGVDb250YWluZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0sIDEwMCk7XHJcbiAgICB0aGlzLmNvbnRhaW5lclJlY3QgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RhcnRJbmRleCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHMgPT09IDBcclxuICAgICAgPyAwXHJcbiAgICAgIDogKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlIC0gMSkgKiB0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQgKyAxIHx8IDA7XHJcbiAgfVxyXG5cclxuICBoYXNBbnlEZWZhdWx0VmlldygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlVmlldz8uc29tZSgoeCkgPT4geC5pc19kZWZhdWx0KTtcclxuICB9XHJcblxyXG5cclxuICBnZXQgaXNUYWJsZVByZXNldE5vdENoYW5nZWQoKSB7XHJcbiAgICBpZiAodGhpcy50YWJsZUZpbHRlclZpZXdJZCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgY3VyclByZXNldCA9IHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlO1xyXG5cclxuICAgIGNvbnN0IGN1cnJlbnRQcmVzZXRDb2x1bW5zID0gY3VyclByZXNldD8uY29sdW1ucz8ubWFwKChjb2w6IHsgZmllbGQ6IGFueTsgd2lkdGg6IGFueTsgcGlubmVkOiBhbnk7IH0pID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBmaWVsZDogY29sLmZpZWxkLFxyXG4gICAgICAgIHdpZHRoOiBjb2wud2lkdGgsXHJcbiAgICAgICAgcGlubmVkOiBjb2wucGlubmVkXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29uc3QgY29sdW1ucyA9IHRoaXMuY29sdW1ucz8ubWFwKGNvbCA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZmllbGQ6IGNvbC5maWVsZCxcclxuICAgICAgICB3aWR0aDogY29sLndpZHRoLFxyXG4gICAgICAgIHBpbm5lZDogY29sLnBpbm5lZFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBzdHJpbmdzQ3VycmVudFByZXN0Q29scyA9IEpTT04uc3RyaW5naWZ5KGN1cnJlbnRQcmVzZXRDb2x1bW5zKTtcclxuICAgIGNvbnN0IHN0cmluZ0NvbHVtbnMgPSBKU09OLnN0cmluZ2lmeShjb2x1bW5zKTtcclxuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmZpbHRlcnNDb25maWcubWFwKChmaWx0ZXIpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBmaWxlZDogZmlsdGVyLmZpZWxkLFxyXG4gICAgICAgIHF1ZXJ5OiB7XHJcbiAgICAgICAgICBjb25kaXRpb246IGZpbHRlcj8ucXVlcnk/LmNvbmRpdGlvbixcclxuICAgICAgICAgIGZpcnN0X2NvbmRpdGlvbjogZmlsdGVyPy5xdWVyeT8uZmlyc3RfY29uZGl0aW9uLFxyXG4gICAgICAgICAgZmlyc3RfdmFsdWU6IGZpbHRlcj8ucXVlcnk/LmZpcnN0X3ZhbHVlLFxyXG4gICAgICAgICAgc2Vjb25kX2NvbmRpdGlvbjogZmlsdGVyPy5xdWVyeT8uc2Vjb25kX2NvbmRpdGlvbixcclxuICAgICAgICAgIHNlY29uZF92YWx1ZTogZmlsdGVyPy5xdWVyeT8uc2Vjb25kX3ZhbHVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgX2lkczogZmlsdGVyPy5faWRzXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgY29uc3QgY3VycmVudFByZXNldEZpbHRlcnMgPSBjdXJyUHJlc2V0Py5maWx0ZXJzPy5tYXAoKGZpbHRlcjogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZmlsZWQ6IGZpbHRlci5maWVsZCxcclxuICAgICAgICBxdWVyeTogZmlsdGVyLnF1ZXJ5LFxyXG4gICAgICAgIF9pZHM6IGZpbHRlcj8uX2lkc1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuXHJcbiAgICAvLyBjb25zb2xlLmxvZyhcImZpbHRlciBjb25naWc6IFwiLCBmaWx0ZXJzKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKFwiY3VycmVudCBwcmVzZXQgZmlsdGVyczogXCIsIGN1cnJlbnRQcmVzZXRGaWx0ZXJzKTtcclxuXHJcbiAgICAvLyBjb25zb2xlLmxvZygnaXNFcXVhbCcsIHN0cmluZ3NDdXJyZW50UHJlc3RDb2xzID09IHN0cmluZ0NvbHVtbnMpO1xyXG4gICAgLy8gY29uc29sZS5sb2coJ0N1cnJlbnQgVGVtcCBQcmVzZXQgOiAnLCBjdXJyUHJlc2V0KVxyXG4gICAgLy8gY29uc29sZS5sb2coJ0N1cnJlbnQgVGVtcCBQcmVzZXQgQ29scyBjb2x1bW5zOiAnLCBjdXJyZW50UHJlc2V0Q29sdW1ucylcclxuICAgIC8vIGNvbnNvbGUubG9nKCdDdXJyZW50IGNvbHVtbnM6ICcsIGNvbHVtbnMpO1xyXG5cclxuICAgIGlmICghY3VycmVudFByZXNldENvbHVtbnMpIHJldHVybiB0cnVlO1xyXG4gICAgcmV0dXJuIChjdXJyZW50UHJlc2V0Q29sdW1ucyAmJiAoc3RyaW5nc0N1cnJlbnRQcmVzdENvbHMgPT0gc3RyaW5nQ29sdW1ucykgJiYgKEpTT04uc3RyaW5naWZ5KGZpbHRlcnMpID09IEpTT04uc3RyaW5naWZ5KGN1cnJlbnRQcmVzZXRGaWx0ZXJzKSkgJiYgKHRoaXMuZm9udEZhaW1seSA9PSBjdXJyUHJlc2V0LmNvbmZpZy5mb250RmFpbWx5KSAmJiAodGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9PSBjdXJyUHJlc2V0LmNvbmZpZy5ib2R5VGV4dEZvbnRzU2l6ZSkgJiYgKHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9PSB0aGlzLmhlYWRlclRleHRGb250c1NpemUpKTtcclxuXHJcbiAgICAvLyByZXR1cm4gZmFsc2VcclxuICB9XHJcblxyXG4gIG9uQWN0aW9uQnV0dG9uQ2xpY2soYnV0dG9uOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgbGlzdGluZ1R5cGU6IHRoaXMubGlzdGluZ1R5cGUsXHJcbiAgICAgICAgb2JqOiBidXR0b25cclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiBcIm9uQWN0aW9uQnV0dG9uQ2xpY2tcIixcclxuICAgIH07XHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG5cclxuICBzZXRBY3RpdmVUYWIodGFiOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGl2ZVRhYiA9IHRhYjtcclxuICAgIGNvbnN0IGFsbFRhYnMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdhY3RpdmVUYWJzJykgfHwgJ3t9Jyk7XHJcbiAgICBhbGxUYWJzW3RoaXMudGFibGVUeXBlXSA9IHRhYjtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdhY3RpdmVUYWJzJywgSlNPTi5zdHJpbmdpZnkoYWxsVGFicykpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICB0YWJsZVR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgICAgIG9iajogdGFiXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogJ29uVGFiQ2hhbmdlJyxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBnZXRCYWNrZ3JvdW5kQ29sb3Iocm93OiBhbnksIGlzRXZlbjogYm9vbGVhbiwgc2VjdGlvbjogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICh0aGlzLmhvdmVyZWRSb3dJZCA9PT0gKHJvdy5faWQgfHwgcm93LmlkKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5yb3dIb3ZlckNvbG9yO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNSb3dTZWxlY3RlZChyb3cpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNoZWNrZWRSb3dCYWNrZ3JvdW5kQ29sb3I7XHJcbiAgICB9XHJcbiAgICBsZXQgYmFzZUNvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gICAgaWYgKHRoaXMucm93U2hhZGluZ0VuYWJsZWQpIHtcclxuICAgICAgYmFzZUNvbG9yID0gaXNFdmVuID8gdGhpcy5ldmVuUm93c0JhY2tncm91bmRDb2xvciA6IHRoaXMub2RkUm93c0JhY2tncm91bmRDb2xvcjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGJhc2VDb2xvciA9IHRoaXMuZXZlblJvd3NCYWNrZ3JvdW5kQ29sb3I7XHJcbiAgICB9XHJcbiAgICBpZiAoIWJhc2VDb2xvcikge1xyXG4gICAgICBpZiAoc2VjdGlvbiA9PT0gJ2xlZnQnKSB7XHJcbiAgICAgICAgYmFzZUNvbG9yID0gdGhpcy5sZWZ0UGlubmVkQmFja2dyb3VuZENvbG9yO1xyXG4gICAgICB9IGVsc2UgaWYgKHNlY3Rpb24gPT09ICdyaWdodCcpIHtcclxuICAgICAgICBiYXNlQ29sb3IgPSB0aGlzLnJpZ2h0UGlubmVkQmFja2dyb3VuZENvbG9yO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGJhc2VDb2xvciA9IHRoaXMuYm9keUJhY2tncm91bmRDb2xvcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJhc2VDb2xvcjtcclxuICB9XHJcblxyXG4gIGhhc0hvcml6b250YWxTY3JvbGxiYXIoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHk/Lm5hdGl2ZUVsZW1lbnQpIHJldHVybiBmYWxzZTtcclxuICAgIGNvbnN0IGVsID0gdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50O1xyXG4gICAgcmV0dXJuIGVsLnNjcm9sbFdpZHRoID4gZWwuY2xpZW50V2lkdGg7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0U2FmZUNvbW1lbnQoZGVzY3JpcHRpb246IHN0cmluZyk6IFNhZmVIdG1sIHtcclxuICAgIHJldHVybiB0aGlzLmNsZWFuRWRpdG9yQ29udGVudChkZXNjcmlwdGlvbik7XHJcbiAgfVxyXG4gIGNsZWFuRWRpdG9yQ29udGVudChjb250ZW50OiBzdHJpbmcpOiBTYWZlSHRtbCB7XHJcbiAgICBpZiAoIWNvbnRlbnQpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgLy8gMS4gRGVjb2RlIEhUTUwgZW50aXRpZXNcclxuICAgIGNvbnN0IHRleHRhcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcclxuICAgIHRleHRhcmVhLmlubmVySFRNTCA9IGNvbnRlbnQ7XHJcbiAgICBsZXQgZGVjb2RlZCA9IHRleHRhcmVhLnZhbHVlO1xyXG5cclxuICAgIGRlY29kZWQgPSBkZWNvZGVkXHJcbiAgICAgIC5yZXBsYWNlKC88XFwvPyhzcGFufHB8dGhlYWR8dGJvZHl8dGZvb3QpW14+XSo+L2csICcnKVxyXG4gICAgICAucmVwbGFjZSgvJm5ic3A7L2csICcgJyk7XHJcblxyXG4gICAgLy8gRW5zdXJlIGNsZWFuIHRhYmxlIHN0cnVjdHVyZVxyXG4gICAgZGVjb2RlZCA9IGRlY29kZWRcclxuICAgICAgLnJlcGxhY2UoLzx0YWJsZVtePl0qPi9nLCAnPHRhYmxlPicpXHJcbiAgICAgIC5yZXBsYWNlKC88dHJbXj5dKj4vZywgJzx0cj4nKVxyXG4gICAgICAucmVwbGFjZSgvPHRoW14+XSo+L2csICc8dGg+JylcclxuICAgICAgLnJlcGxhY2UoLzx0ZFtePl0qPi9nLCAnPHRkPicpOyAgLy8gUmVtb3ZlIDx0aGVhZD4gYW5kIDx0Ym9keT4gdGFnc1xyXG5cclxuICAgIC8vIDQuIEFkZCBpbmxpbmUgc3R5bGVzXHJcbiAgICBkZWNvZGVkID0gZGVjb2RlZFxyXG4gICAgICAvLyBBZGQgaW5saW5lIHN0eWxlcyB0byA8dGFibGU+XHJcbiAgICAgIC5yZXBsYWNlKC88dGFibGUoW14+XSopPi9nLCBgPHRhYmxlIHN0eWxlPVwid2lkdGg6IDEwMCU7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IHBhZGRpbmc6IDIwcHg7IGZvbnQtc2l6ZTogMTRweDsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcIiQxPmApXHJcbiAgICAgIC8vIEFkZCBpbmxpbmUgc3R5bGVzIHRvIDx0cj5cclxuICAgICAgLnJlcGxhY2UoLzx0cihbXj5dKik+L2csIGA8dHIgc3R5bGU9XCJib3JkZXItYm90dG9tOiAxcHggc29saWQgI2NjYztcIiQxPmApXHJcbiAgICAgIC8vIEFkZCBpbmxpbmUgc3R5bGVzIHRvIDx0aD5cclxuICAgICAgLnJlcGxhY2UoLzx0aChbXj5dKik+L2csIGA8dGggc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwOyBmb250LXdlaWdodDogNjAwOyBmb250LXNpemU6IDE2cHg7IGNvbG9yOiAjMkExRjczOyBib3JkZXI6IDFweCBzb2xpZCAjY2NjOyBwYWRkaW5nOiAxMnB4IDIwcHg7IHRleHQtYWxpZ246IGxlZnQ7XCIkMT5gKVxyXG4gICAgICAvLyBBZGQgaW5saW5lIHN0eWxlcyB0byA8dGQ+XHJcbiAgICAgIC5yZXBsYWNlKC88dGQoW14+XSopPi9nLCBgPHRkIHN0eWxlPVwibWluLXdpZHRoOjEyMHB4OyBib3JkZXI6IDFweCBzb2xpZCAjY2NjOyBwYWRkaW5nOiAxMnB4IDIwcHg7IHRleHQtYWxpZ246IGxlZnQ7XCIkMT5gKTtcclxuICAgIGRlY29kZWQgPSBkZWNvZGVkLnJlcGxhY2UoLzxpbWcoW14+XSopPi9nLCAobWF0Y2gsIGdyb3VwMSkgPT4ge1xyXG4gICAgICAvLyBBZGQgc3R5bGUgdG8gPGltZz4gaWYgbm90IGFscmVhZHkgc3BlY2lmaWVkXHJcbiAgICAgIGlmICgvc3R5bGU9Ly50ZXN0KGdyb3VwMSkpIHtcclxuICAgICAgICByZXR1cm4gbWF0Y2g7ICAvLyBJZiBzdHlsZSBhbHJlYWR5IGV4aXN0cywga2VlcCBpdFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBgPGltZyBzdHlsZT1cIndpZHRoOiAzMCU7IGhlaWdodDogMzAlO2JvcmRlci1yYWRpdXM6IDE2cHg7IHBhZGRpbmctdG9wOiAxNXB4O3BhZGRpbmctYm90dG9tOiAxMHB4O1wiJHtncm91cDF9PmA7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gNS4gUmV0dXJuIHNhZmUgSFRNTFxyXG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGRlY29kZWQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RXh0ZW50aW9uKHVybDogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodXJsICE9PSAnLScpIHtcclxuICAgICAgaWYgKHR5cGVvZiAodXJsKSA9PSAnc3RyaW5nJykge1xyXG4gICAgICAgIHJldHVybiB1cmwuc3BsaXQoJy4nKS5wb3AoKVxyXG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodXJsKSkge1xyXG4gICAgICAgIHJldHVybiB1cmxbMF0uc3BsaXQoJy4nKS5wb3AoKVxyXG4gICAgICB9IGVsc2UgcmV0dXJuICctJ1xyXG4gICAgfVxyXG4gICAgZWxzZSByZXR1cm4gJy0nXHJcbiAgfVxyXG5cclxuICBkb3dubG9hZEF0dGNobWVudCh1cmw6IGFueSwgZmlsZT86IGFueSkge1xyXG4gICAgLy8gdGhpcy5vbkV2ZW50LmVtaXQoe1xyXG4gICAgLy8gICBkb3dubG9hZDogdHJ1ZSxcclxuICAgIC8vIH0pO1xyXG4gICAgLy8gdGhpcy5nZW5lcmljRXZlbnQuZW1pdChkYXRhKVxyXG4gICAgLy8gZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICBsaW5rLmhyZWYgPSB1cmw7XHJcbiAgICBsaW5rLmRvd25sb2FkID0gJyc7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgbGluay5jbGljaygpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuXHJcbiAgfVxyXG4gIGZ1bGxJbWFnZVNyYzogc3RyaW5nIHwgbnVsbCA9ICcnO1xyXG4gIG9wZW5GdWxsSW1hZ2UoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAodGFyZ2V0LnRhZ05hbWUgPT09ICdJTUcnKSB7XHJcbiAgICAgIHRoaXMuZnVsbEltYWdlU3JjID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgnc3JjJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRTdHlsZXNUb0ltYWdlcygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGltYWdlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jb21tZW50LWNvbnRlbnQgaW1nJyk7XHJcbiAgICBpbWFnZXMuZm9yRWFjaCgoaW1nKSA9PiB7XHJcbiAgICAgIC8vIEFwcGx5IGlubGluZSBzdHlsZXMgZGlyZWN0bHlcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShpbWcsICd3aWR0aCcsICc3MHB4Jyk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaW1nLCAnYm9yZGVyLXJhZGl1cycsICcxNnB4Jyk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaW1nLCAnbWFyZ2luJywgJzhweCcpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGltZywgJ2N1cnNvcicsICdwb2ludGVyJyk7XHJcblxyXG4gICAgICAvLyBBZGQgY2xpY2sgbGlzdGVuZXIgdG8gc2hvdyBmdWxsc2NyZWVuIGltYWdlIG9uIGNsaWNrXHJcbiAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGltZywgJ2NsaWNrJywgKCkgPT4gdGhpcy5vbkltYWdlQ2xpY2soKGltZyBhcyBIVE1MSW1hZ2VFbGVtZW50KS5zcmMpKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25JbWFnZUNsaWNrKHNyYzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmZ1bGxzY3JlZW5JbWFnZSA9IHNyYztcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2Z1bGxzY3JlZW5JbWFnZVRlbXBsYXRlJykgZnVsbHNjcmVlbkltYWdlVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIHByaXZhdGUgZnVsbHNjcmVlblZpZXdSZWY6IEVtYmVkZGVkVmlld1JlZjxhbnk+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGljb25NYXA6IFJlY29yZDxzdHJpbmcsIChyb3c6IGFueSwgY29sOiBhbnkpID0+IHN0cmluZz4gPSB7XHJcbiAgICBhdHRhY2htZW50c19jb3VudDogKCkgPT4gdGhpcy5zaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hdHRhY2htZW50cy5zdmcnLFxyXG4gICAgY29tbWVudF9jb3VudDogKCkgPT4gdGhpcy5zaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jb21tZW50cy5zdmcnLFxyXG4gICAgcHJpb3JpdHk6IChyb3csIGNvbCkgPT4ge1xyXG4gICAgICBjb25zdCB2YWwgPVxyXG4gICAgICAgIHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy52YWx1ZSB8fFxyXG4gICAgICAgIHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy5uYW1lIHx8XHJcbiAgICAgICAgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk7XHJcblxyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIHRoaXMuc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy8nICtcclxuICAgICAgICAodmFsID8/ICdkZWZhdWx0JykgK1xyXG4gICAgICAgICcuc3ZnJ1xyXG4gICAgICApO1xyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICB0b2dnbGVGdWxsc2NyZWVuKCkge1xyXG4gICAgdGhpcy5pc0Z1bGxTY3JlZW4gPSAhdGhpcy5pc0Z1bGxTY3JlZW47XHJcbiAgICBjb25zdCBlbGVtID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50IGFzIGFueTtcclxuICAgIGlmICghZG9jdW1lbnQuZnVsbHNjcmVlbkVsZW1lbnQpIHtcclxuICAgICAgaWYgKGVsZW0ucmVxdWVzdEZ1bGxzY3JlZW4pIHtcclxuICAgICAgICBlbGVtLnJlcXVlc3RGdWxsc2NyZWVuKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbS5tb3pSZXF1ZXN0RnVsbFNjcmVlbikge1xyXG4gICAgICAgIGVsZW0ubW96UmVxdWVzdEZ1bGxTY3JlZW4oKTtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgZWxlbS53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW0ubXNSZXF1ZXN0RnVsbHNjcmVlbikge1xyXG4gICAgICAgIGVsZW0ubXNSZXF1ZXN0RnVsbHNjcmVlbigpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4pIHtcclxuICAgICAgICBkb2N1bWVudC5leGl0RnVsbHNjcmVlbigpO1xyXG4gICAgICB9IGVsc2UgaWYgKChkb2N1bWVudCBhcyBhbnkpLm1vekNhbmNlbEZ1bGxTY3JlZW4pIHtcclxuICAgICAgICAoZG9jdW1lbnQgYXMgYW55KS5tb3pDYW5jZWxGdWxsU2NyZWVuKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoKGRvY3VtZW50IGFzIGFueSkud2Via2l0RXhpdEZ1bGxzY3JlZW4pIHtcclxuICAgICAgICAoZG9jdW1lbnQgYXMgYW55KS53ZWJraXRFeGl0RnVsbHNjcmVlbigpO1xyXG4gICAgICB9IGVsc2UgaWYgKChkb2N1bWVudCBhcyBhbnkpLm1zRXhpdEZ1bGxzY3JlZW4pIHtcclxuICAgICAgICAoZG9jdW1lbnQgYXMgYW55KS5tc0V4aXRGdWxsc2NyZWVuKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2VsbEV2ZW50KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuY3VzdG9tQ2VsbEV2ZW50LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbn0iLCI8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgaC0xMDBcIj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0yIGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZVwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibmF2IG5hdi10YWJzXCIgKm5nSWY9XCJ0cnVlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hdiBuYXYtdGFic1wiIGlkPVwibmF2LXRhYlwiIHJvbGU9XCJ0YWJsaXN0XCI+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwic2V0QWN0aXZlVGFiKHRhYilcIlxyXG4gICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVUYWIgPT0gdGFiXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgdGFiIH19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZ2xvYmFsLXNlYXJjaFwiIFtzdHlsZS53aWR0aC5weF09XCIzNTBcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgKm5nSWY9XCJlbmFibGVHbG9iYWxTZWFyY2hcIlxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zZWFyY2guc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBteC0yIHBvc2l0aW9uLWFic29sdXRlIGljb25cIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAqbmdJZj1cImVuYWJsZUdsb2JhbFNlYXJjaFwiXHJcbiAgICAgICAgICBzdHlsZT1cImhlaWdodDogMzZweFwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlR5cGUgdG8gc2VhcmNoLCB0aGVuIHByZXNzIEVudGVyXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwidGFibGVTZWFyY2hcIlxyXG4gICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25HbG9iYWxTZWFyY2goKVwiXHJcbiAgICAgICAgICAoaW5wdXQpPVwib25TZWFyY2hJbnB1dCgkZXZlbnQpXCJcclxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yIGFsaWduLWl0ZW1zLWNlbnRlciB0YWJsZS1yaWdodC10b3AtYWN0aW9uc1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBidXR0b24gb2YgYnV0dG9uc1wiPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBhY3Rpb24tYnV0dG9ucy1yb3dcIlxyXG4gICAgICAgICAgKm5nSWY9XCJidXR0b24/Lmhhc19wZXJtaXNzaW9uXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8YVxyXG4gICAgICAgICAgICBocmVmPVwiSmF2YVNjcmlwdDp2b2lkKDApXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uQnV0dG9uQ2xpY2soYnV0dG9uLm5hbWUpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNtYWxsIGJ0biBib3JkZXIgYm9yZGVyLXByaW1hcnkgYnRuLWFjdGl2ZS1wcmltYXJ5IG1lLTIgcC0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBweC0zXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAqbmdJZj1cImJ1dHRvbi5pc19zaG93SWNvblwiXHJcbiAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zLycgKyBidXR0b24uaWNvbiArICcuc3ZnJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0yXCJcclxuICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cImxhYmVsLWhpZGRlbiB0ZXh0LXdoaXRlXCJcclxuICAgICAgICAgICAgICBbY2xhc3MubXMtMF09XCJidXR0b24uaXNfc2hvd0ljb25cIlxyXG4gICAgICAgICAgICAgID57eyBidXR0b24/Lm5hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9hPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwiIXNob3dGaWx0ZXJSb3dcIlxyXG4gICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgYWN0aW9uLWJ1dHRvbnMtcm93XCJcclxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlT3BlbkZpbHRlcigpXCJcclxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNob3dGaWx0ZXJzXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxhXHJcbiAgICAgICAgICBocmVmPVwiSmF2YVNjcmlwdDp2b2lkKDApXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zbWFsbCBidG4gYnRuLWFjdGl2ZS1wcmltYXJ5IGJvcmRlciBib3JkZXItcHJpbWFyeSBtZS0yIHAtMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgcHgtM1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0yXCJcclxuICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsLWhpZGRlbiB0ZXh0LXdoaXRlXCI+RmlsdGVyczwvc3Bhbj5cclxuICAgICAgICA8L2E+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgICpuZ0lmPVwiYWN0aXZlRmlsdGVyZWRDb2x1bW5zPy5sZW5ndGhcIlxyXG4gICAgICAgICAgc3R5bGU9XCJcclxuICAgICAgICAgICAgd2lkdGg6IDdweDtcclxuICAgICAgICAgICAgaGVpZ2h0OiA3cHg7XHJcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDBweCAwcHggM3B4ICMwMDIyZmY7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwLCA2MCwgMjU1KTtcclxuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICByaWdodDogMTZweDtcclxuICAgICAgICAgICAgdG9wOiAxMHB4O1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwicm91bmRlZC1jaXJjbGUgZC1ibG9ja1wiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIGQtbm9uZVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ2FkdmFuY2UtZmlsdGVyJylcIlxyXG4gICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlVG9wQnV0dG9uID09PSAnYWR2YW5jZS1maWx0ZXInXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3pvb20tY2hhcmdlLnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gdG9wLWljb24gbWUtMlwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIGFjdGlvbi1idXR0b25zLXJvd1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ3NldHRpbmcnKVwiXHJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJcclxuICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3NldHRpbmcnIHx8XHJcbiAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPT09ICd0YWJsZS1sYXlvdXQnIHx8XHJcbiAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPT09ICd0YWJsZS1wcmVzZXRzJyB8fFxyXG4gICAgICAgICAgYWN0aXZlVG9wQnV0dG9uID09PSAnc2hvdy1oaWRlLWNvbHVtbnMnXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDwhLS0gPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvc2V0dGluZ3MtMi5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIHRvcC1pY29uIG1lLTJcIlxyXG4gICAgICAgID48L3NwYW4+IC0tPlxyXG4gICAgICAgIDxhXHJcbiAgICAgICAgICBocmVmPVwiSmF2YVNjcmlwdDp2b2lkKDApXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zbWFsbCBidG4gYnRuLWFjdGl2ZS1wcmltYXJ5IGJvcmRlciBib3JkZXItcHJpbWFyeSBtZS0yIHAtMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgcHgtM1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zZXR0aW5ncy0yLnN2ZydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTJcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwtaGlkZGVuIHRleHQtd2hpdGVcIj5TZXR0aW5nPC9zcGFuPlxyXG4gICAgICAgIDwvYT5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJhY3RpdmVUb3BCdXR0b24gPT09ICdzZXR0aW5nJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImFjdGlvbnMtZHJvcGRvd24gbXQtMSBhY3Rpb25zLWRyb3Bkb3duLXNldHRpbmdcIlxyXG4gICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGVcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51IHNob3cgc2hhZG93IGN1c3RvbS1tZW51XCI+XHJcbiAgICAgICAgICAgIDwhLS0gVGFibGUgTGF5b3V0IC0tPlxyXG4gICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVBY3Rpb25zKCd0YWJsZS1sYXlvdXQnKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvdGFibGUtMi5zdmcnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIFRhYmxlIExheW91dDwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8IS0tIFRhYmxlIFByZXNldHMgLS0+XHJcbiAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdG9nZ2xlQWN0aW9ucygndGFibGUtcHJlc2V0cycpXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvbGlzdC1kZXRhaWxzLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgVGFibGUgUHJlc2V0czwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBDb2x1bW5zIC0tPlxyXG4gICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiIXNob3dTaWRlTWVudVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVBY3Rpb25zKCdzaG93LWhpZGUtY29sdW1ucycpXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXllLnN2ZydcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICBDb2x1bW5zPC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXV0ZWQtdGV4dFwiPnt7IGNvbHVtbnNDb3VudCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gRmlsdGVyIC0tPlxyXG4gICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU9wZW5GaWx0ZXIoKTsgYWN0aXZlVG9wQnV0dG9uID0gJydcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiIXNob3dGaWx0ZXJSb3dcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2ZpbHRlci0yLnN2ZydcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yIG10LTEgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgRmlsdGVyXHJcbiAgICAgICAgICAgIDwvYT5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gRG93bmxvYWQgLS0+XHJcbiAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRDc3YoJ2NzdicpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9kb3dubG9hZC5zdmcnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMiBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICBDU1YgRXhwb3J0XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAqbmdJZj1cImVuYWJsZUV4cG9ydFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRDc3YoJ3hsc3gnKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZG93bmxvYWQuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgRXhjZWwgRXhwb3J0XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPCEtLSBGb250IEZhbWlseSAmIEZvbnQgU2l6ZSAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgcGItMiBwdC0yXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBGb250IEZhbWlseSAtLT5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwiXHJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9udEZhaW1seVwiXHJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25Gb250Q2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBmb250IG9mIGZvbnRGYW1pbGllc1wiIFt2YWx1ZV09XCJmb250XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZm9udCB9fVxyXG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gRm9udCBTaXplIC0tPlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCJcclxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkZvbnRDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYm9keVRleHRGb250c1NpemVcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBzaXplIG9mIGZvbnRTaXplc1wiIFt2YWx1ZV09XCJzaXplXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgc2l6ZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIFRhYmxlIExheW91dCAtLT5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3RhYmxlLWxheW91dCdcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZUxheW91dFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1kcm9wZG93biBtdC0xXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGVcIlxyXG4gICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tIFRhYmxlIFByZXNldHMgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3RhYmxlLXByZXNldHMnXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVQcmVzZXRcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFjdGlvbnMtZHJvcGRvd24gbXQtMVwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlXCJcclxuICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSBUYWJsZSBQcmVzZXRzIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVUb3BCdXR0b24gPT09ICdzaG93LWhpZGUtY29sdW1ucydcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaG93SGlkZUNvbHVtbnNcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFjdGlvbnMtZHJvcGRvd24gbXQtMVwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlXCJcclxuICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvbnMtcm93XCIgKm5nSWY9XCJzaG93RnVsbFNjcmVlbkJ1dHRvblwiPlxyXG4gICAgICAgIDxhXHJcbiAgICAgICAgICAqbmdJZj1cIiFpc0Z1bGxTY3JlZW5cIlxyXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNtYWxsIGJ0biBidG4tYWN0aXZlLXByaW1hcnkgYm9yZGVyIGJvcmRlci1wcmltYXJ5IGV4cGVuZCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUZ1bGxzY3JlZW4oKVwiXHJcbiAgICAgICAgICBkYXRhLWJzLXRvZ2dsZT1cInRvb2x0aXBcIlxyXG4gICAgICAgICAgZGF0YS1icy1wbGFjZW1lbnQ9XCJ0b3BcIlxyXG4gICAgICAgICAgdGl0bGU9XCJNaW5pbWlzZVwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7IG1pbkFycm93OiAhaXNGdWxsU2NyZWVuLCBtYXhBcnJvdzogaXNGdWxsU2NyZWVuIH1cIlxyXG4gICAgICAgICAgc3R5bGU9XCJ0cmFuc2l0aW9uOiBjb2xvciAwLjJzXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2V4cGVuZC5zdmcnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0yIG1iLTFcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8L2E+XHJcbiAgICAgICAgPGFcclxuICAgICAgICAgICpuZ0lmPVwiaXNGdWxsU2NyZWVuXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zbWFsbCBidG4gYnRuLWFjdGl2ZS1wcmltYXJ5IGJvcmRlciBib3JkZXItcHJpbWFyeSBleHBlbmQgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVGdWxsc2NyZWVuKClcIlxyXG4gICAgICAgICAgZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJcclxuICAgICAgICAgIGRhdGEtYnMtcGxhY2VtZW50PVwidG9wXCJcclxuICAgICAgICAgIHRpdGxlPVwiTWF4aW1pc2VcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyBtaW5BcnJvdzogIWlzRnVsbFNjcmVlbiwgbWF4QXJyb3c6IGlzRnVsbFNjcmVlbiB9XCJcclxuICAgICAgICAgIHN0eWxlPVwidHJhbnNpdGlvbjogY29sb3IgMC4yc1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9taW5pbWl6ZS5zdmcnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0yIG1iLTFcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8L2E+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDwhLS0gRXhhbXBsZSBzaW5nbGUgZGFuZ2VyIGJ1dHRvbiAtLT5cclxuXHJcbiAgICAgICAgPCEtLSA8YnV0dG9uXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBkLWZsZXggZ2FwLTIgYWN0aW9uLWJ1dHRvblwiXHJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnYWN0aW9ucycpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBBY3Rpb25cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvVmVjdG9yLnN2ZydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvblwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwiYWN0aXZlVG9wQnV0dG9uID09PSAnYWN0aW9ucydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWRyb3Bkb3duIG10LTFcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51IHNob3dcIj5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgaHJlZj1cIiNcIj5BY3Rpb248L2E+XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCIjXCI+QW5vdGhlciBhY3Rpb248L2E+XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCIjXCI+U29tZXRoaW5nIGVsc2UgaGVyZTwvYT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgaHJlZj1cIiNcIj5TZXBhcmF0ZWQgbGluazwvYT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJzaG93RmlsdGVycyAmJiAhc2hvd0ZpbHRlclJvd1wiXHJcbiAgICBjbGFzcz1cInRvcC1maWx0ZXItcm93IGJvcmRlci10b3AgcHktMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgIFtzdHlsZS5oZWlnaHQucHhdPVwidG9wRmlsdGVyUm93SGVpZ2h0XCJcclxuICA+XHJcbiAgICA8IS0tIExFRlQgU0lERSAoRmlsdGVyIHRhZ3MgKyBGaWx0ZXIgYnV0dG9uKSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiBhY3RpdmVGaWx0ZXJlZENvbHVtbnM7IHRyYWNrQnk6IHRyYWNrQnlGaWVsZFwiXHJcbiAgICAgICAgICBjbGFzcz1cImZpbHRlci10YWdzXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICBpc0FjdGl2ZUZpbHRlck9wZW4gPSB0cnVlO1xyXG4gICAgICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9ICdmaWx0ZXItY29sdW1ucyc7XHJcbiAgICAgICAgICAgICAgb3BlbkZpbHRlcihjb2wpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG11dGVkLXRleHQgYWRkLWZpbHRlci1idXR0b24gYWN0aXZlLWZpbHRlcnNcIlxyXG4gICAgICAgICAgICBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3dyYXBcIlxyXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIlxyXG4gICAgICAgICAgICAgIGNvbD8uZmllbGQgPT0gc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmZpZWxkICYmXHJcbiAgICAgICAgICAgICAgaXNBY3RpdmVGaWx0ZXJPcGVuICYmXHJcbiAgICAgICAgICAgICAgYWN0aXZlVG9wQnV0dG9uID09ICdmaWx0ZXItY29sdW1ucydcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXItdGFnIG10LTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbD8ucGlubmVkXCJcclxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLnN2ZydcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyByZW1vdmVDb2x1bW5GaWx0ZXJGcm9tQ29sdW1uKGNvbClcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jcm9zcy1wcmltYXJ5LnN2ZydcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBjcm9zcy1zZWNvbmRhcnkgbXMtMiBtYi0xXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgYWN0aXZlVG9wQnV0dG9uID09PSAnZmlsdGVyLWNvbHVtbnMnICYmXHJcbiAgICAgICAgICAgICAgY29sPy5maWVsZCA9PSBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uZmllbGQgJiZcclxuICAgICAgICAgICAgICBpc0FjdGl2ZUZpbHRlck9wZW5cclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyQ29sdW1uczsgY29udGV4dDogeyBjb2x1bW46IGNvbCB9XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbnMtZHJvcGRvd24gbXQtMVwiXHJcbiAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDwhLS0gRmlsdGVyIEJ1dHRvbiAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImFkZC1maWx0ZXItYnV0dG9uLW1lbnVcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnZmlsdGVyLWNvbHVtbnMnKTsgaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2VcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXV0ZWQtdGV4dCBhZGQtZmlsdGVyLWJ1dHRvbiBidXR0b24tZmlsdGVyXCJcclxuICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDcwcHhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGx1cy5zdmcnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJtZS0yIGRhdGEtZ3JpZC1zdmctaWNvblwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgRmlsdGVyXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ0lmPVwiYWN0aXZlVG9wQnV0dG9uID09PSAnZmlsdGVyLWNvbHVtbnMnICYmICFpc0FjdGl2ZUZpbHRlck9wZW5cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJDb2x1bW5zXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWRyb3Bkb3duIG10LTFcIlxyXG4gICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gUklHSFQgU0lERSAoVXBkYXRlICsgUmVzZXQpIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIChjbGljayk9XCJzYXZlUHJlc2V0KClcIlxyXG4gICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5IGN1cnNvci1wb2ludGVyIGFsbC1maWx0ZXJzLXJlc2V0LWJ1dHRvblwiXHJcbiAgICAgICAgKm5nSWY9XCIhY2hlY2tGaWx0ZXJDaGFuZ2VzRWZmZWN0KClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgVXBkYXRlIFZpZXdcclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgY3Vyc29yLXBvaW50ZXIgYWxsLWZpbHRlcnMtcmVzZXQtYnV0dG9uXCJcclxuICAgICAgICAqbmdJZj1cIiF0YWJsZUZpbHRlclZpZXdJZCAmJiBhY3RpdmVGaWx0ZXJlZENvbHVtbnM/Lmxlbmd0aFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImNsZWFyQWxsRmlsdGVycygpXCJcclxuICAgICAgPlxyXG4gICAgICAgIFJlc2V0XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXZcclxuICAgIFtzdHlsZS5oZWlnaHRdPVwiXHJcbiAgICAgIHNob3dGaWx0ZXJzID8gJ2NhbGMoMTAwJSAtICcgKyB0b3BGaWx0ZXJSb3dIZWlnaHQgKyAncHgpJyA6ICcxMDAlJ1xyXG4gICAgXCJcclxuICAgIGNka0Ryb3BMaXN0R3JvdXBcclxuICAgIGNsYXNzPVwiZGF0YS1ncmlkLXRhYmxlLXdyYXBwZXIgb3ZlcmZsb3ctaGlkZGVuXCJcclxuICAgICNkYXRhR3JpZENvbnRhaW5lclxyXG4gICAgW3N0eWxlLmZvbnRGYW1pbHldPVwiZm9udEZhaW1seVwiXHJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImJvZHlCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgaWQ9XCJkYXRhLWdyaWQtbWFpbi1jb250YWluZXJcIlxyXG4gID5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJzaG93Um93c0dyb3VwaW5nXCJcclxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICBbY2RrRHJvcExpc3REYXRhXT1cImNvbHVtbnNcIlxyXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIlxyXG4gICAgICAgIHRvcEdyb3VwZWRCYWRnZXNCYWNrZ3JvdW5kQ29sb3IgfHwgaGVhZGVyQmFja2dyb3VuZENvbG9yXHJcbiAgICAgIFwiXHJcbiAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgIChjZGtEcm9wTGlzdEVudGVyZWQpPVwiZW50ZXJUb1RvcFJvd0dyb3VwaW5nKCRldmVudClcIlxyXG4gICAgICAoY2RrRHJvcExpc3RFeGl0ZWQpPVwiZXhpdGVkRnJvbVRoZVRvcFJvdygkZXZlbnQpXCJcclxuICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyb3BUb3BHcm91cCgkZXZlbnQpXCJcclxuICAgICAgW2Nka0Ryb3BMaXN0RW50ZXJQcmVkaWNhdGVdPVwiY2FuRW50ZXJUb1Jvd3NHcm91cGluZ1wiXHJcbiAgICAgIGlkPVwicm93cy1ncm91cGluZy10b3AtY29udGFpbmVyXCJcclxuICAgICAgY2xhc3M9XCJib3JkZXItYmVsb3cgZC1mbGV4IHB4LTQgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGdhcC0yIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgW3N0eWxlLmNvbG9yXT1cImhlYWRlclRleHRDb2xvclwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9qdXN0aWZ5LnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYSAmJiAhZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgRHJhZyBoZXJlIHRvIHNldCByb3cgZ3JvdXBzXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxyXG4gICAgICAgICAgY2RrRHJvcExpc3RcclxuICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Hcm91cFJlb3JkZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgICAgIFtjZGtEcmFnTG9ja0F4aXNdPVwiJ3gnXCJcclxuICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgbGV0IGNoaWxkIG9mIGdyb3VwZWRDb2x1bW5zO1xyXG4gICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZpZWxkXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCxcclxuICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246XHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBlZENvbHVtbnMubGVuZ3RoID4gMSAmJiBpICE9IGdyb3VwZWRDb2x1bW5zLmxlbmd0aCAtIDFcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUHJldmlld1xyXG4gICAgICAgICAgICAgID48ZGl2IGNsYXNzPVwicC0yIGJvcmRlciBkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXY+e3sgY2hpbGQuaGVhZGVyIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkLWZsZXggb3ZlcmZsb3ctaGlkZGVuXCJcclxuICAgICAgW3N0eWxlLmhlaWdodF09XCJcclxuICAgICAgICAnY2FsYygxMDAlIC0gJyArXHJcbiAgICAgICAgKHNob3dSb3dzR3JvdXBpbmdcclxuICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICsgZm9vdGVyUm93SGVpZ2h0XHJcbiAgICAgICAgICA6IGZvb3RlclJvd0hlaWdodCkgK1xyXG4gICAgICAgICdweCknXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImgtMTAwXCJcclxuICAgICAgICBbc3R5bGUud2lkdGhdPVwiXHJcbiAgICAgICAgICAhc2hvd1NpZGVNZW51XHJcbiAgICAgICAgICAgID8gJzEwMCUnXHJcbiAgICAgICAgICAgIDogc2lkZU1lbnVWaXNpYmxlXHJcbiAgICAgICAgICAgID8gJ2NhbGMoMTAwJSAtIDI4MHB4KSdcclxuICAgICAgICAgICAgOiAnY2FsYygxMDAlIC0gMzBweCknXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMCB0cmFuc2l0aW9uIHBvc2l0aW9uLXJlbGF0aXZlIHctMTAwXCI+XHJcbiAgICAgICAgICA8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XHJcbiAgICAgICAgICA8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XHJcbiAgICAgICAgICA8IS0tIERhdGEgR3JpZCBIZWFkZXIgc3RhcnRzIGhlcmUgLS0+XHJcbiAgICAgICAgICA8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XHJcbiAgICAgICAgICA8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XHJcblxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1oZWFkZXItd3JhcHBlciB3LTEwMFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJoZWFkZXJUZXh0Q29sb3JcIlxyXG4gICAgICAgICAgICBbc3R5bGUuZm9udFNpemUucHhdPVwiaGVhZGVyVGV4dEZvbnRzU2l6ZVwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1iZWxvd109XCIhaGFzQW55VmlzaWJsZUNvbHVtblwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiXHJcbiAgICAgICAgICAgICAgc2hvd0NvbHVtbnNHcm91cGluZyAmJiBzaG93RmlsdGVyUm93XHJcbiAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDNcclxuICAgICAgICAgICAgICAgIDogc2hvd0NvbHVtbnNHcm91cGluZyB8fCBzaG93RmlsdGVyUm93XHJcbiAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDJcclxuICAgICAgICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0XHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuICAgICAgICAgICAgPCEtLSBEYXRhIEdyaWQgTGVmdCBQaW5uZWQgSGVhZGVyIHN0YXJ0cyBoZXJlIC0tPlxyXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1oZWFkZXIgbGVmdC1waW5uZWRcIlxyXG4gICAgICAgICAgICAgICNsZWZ0UGlubmVkSGVhZGVyXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJoYXNMZWZ0UGlubmVkQ29sdW1uc1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dTZXJpYWxOdW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWFsbC1jaGVja2JveC1jZWxsIGJvcmRlci1iZWxvd1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiNTVcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcclxuICAgICAgICAgICAgICAgICAgc2hvd0NvbHVtbnNHcm91cGluZyAmJiBzaG93RmlsdGVyUm93XHJcbiAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAzXHJcbiAgICAgICAgICAgICAgICAgICAgOiBzaG93Q29sdW1uc0dyb3VwaW5nIHx8IHNob3dGaWx0ZXJSb3dcclxuICAgICAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDJcclxuICAgICAgICAgICAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBTLk5vXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAqbmdJZj1cInNob3dDaGVja2JveGVzXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdC1hbGwtY2hlY2tib3gtY2VsbCBib3JkZXItYmVsb3dcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcclxuICAgICAgICAgICAgICAgICAgc2hvd0NvbHVtbnNHcm91cGluZyAmJiBzaG93RmlsdGVyUm93XHJcbiAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAzXHJcbiAgICAgICAgICAgICAgICAgICAgOiBzaG93Q29sdW1uc0dyb3VwaW5nIHx8IHNob3dGaWx0ZXJSb3dcclxuICAgICAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDJcclxuICAgICAgICAgICAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoYXNBbnlWaXNpYmxlQ29sdW1uXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaXNJbmRldGVybWluYXRlU3RhdGUoZGF0YVNldClcIlxyXG4gICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0FsbFNlbGVjdGVkKGRhdGFTZXQpXCJcclxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGwoZGF0YVNldClcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleFwiXHJcbiAgICAgICAgICAgICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAgICAgICAgICAgaWQ9XCJsZWZ0LXBpbm5lZC1oZWFkZXJcIlxyXG4gICAgICAgICAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxyXG4gICAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJsZWZ0UGlubmVkQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICAoY2RrRHJvcExpc3RFbnRlcmVkKT1cIm9uRHJvcExpc3RFbnRlcigkZXZlbnQsICdsZWZ0JylcIlxyXG4gICAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0U29ydGVkKT1cIlxyXG4gICAgICAgICAgICAgICAgICBvblNvcnRHcm91cCgkZXZlbnQsICdwcmV2aWV3TGVmdFBpbm5lZENvbHVtbnMnKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wR3JvdXAoKVwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogMXB4XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJhZ2FibGUtaGVhZGVyXCJcclxuICAgICAgICAgICAgICAgICAgY2RrRHJhZ1xyXG4gICAgICAgICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiY29sXCJcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbCBvZiBsZWZ0UGlubmVkQ29sdW1ucztcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckNlbGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ3ByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucydcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUHJldmlld1xyXG4gICAgICAgICAgICAgICAgICAgID48ZGl2IGNsYXNzPVwicC0yIGJvcmRlciBkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtbW92ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IGNvbC5oZWFkZXIgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQbGFjZWhvbGRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJDZWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRyYWdnaW5nSW5Hcm91cEFyZWFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXMtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm9wYWNpdHk6IDAuNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbD8uY2hpbGRyZW4/Lmxlbmd0aDsgZWxzZSBzaW5nbGVDb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hpbGQgb2YgY29sLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BHcm91cGluZ1Jvd1BsYWNlaG9sZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC5jaGlsZHJlbi5sZW5ndGggPiAxICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICE9IGNvbC5jaGlsZHJlbi5sZW5ndGggLSAxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2luZ2xlQ29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjogY29sPy5jaGlsZHJlbj8ubGVuZ3RoID4gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbiAgICAgICAgICAgIDwhLS0gRGF0YSBHcmlkIENlbnRlciBQaW5uZWQgSGVhZGVyIHN0YXJ0cyBoZXJlIC0tPlxyXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1oZWFkZXIgY2VudGVyLXNjcm9sbGFibGVcIlxyXG4gICAgICAgICAgICAgICNjZW50ZXJQaW5uZWRIZWFkZXJcclxuICAgICAgICAgICAgICAoc2Nyb2xsKT1cIm9uQ2VudGVyQm9keVNjcm9sbCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBpZD1cImNlbnRlci1waW5uZWQtaGVhZGVyXCJcclxuICAgICAgICAgICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAgICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cIlxyXG4gICAgICAgICAgICAgICAgc2hvd1Jvd3NHcm91cGluZyA/IFsncm93cy1ncm91cGluZy10b3AtY29udGFpbmVyJ10gOiBbXVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJjZW50ZXJDb2x1bW5zXCJcclxuICAgICAgICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXHJcbiAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0U29ydGluZ0Rpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgICAgaXNEaXNhYmxlQ29sdW1uR3JvdXBpbmcgJiYgZHJhZ2dpbmdJbkdyb3VwQXJlYVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RW50ZXJlZCk9XCJvbkRyb3BMaXN0RW50ZXIoJGV2ZW50LCAnY2VudGVyJylcIlxyXG4gICAgICAgICAgICAgIChjZGtEcm9wTGlzdFNvcnRlZCk9XCJvblNvcnRHcm91cCgkZXZlbnQsICdwcmV2aWV3Q2VudGVyQ29sdW1ucycpXCJcclxuICAgICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcEdyb3VwKClcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5tYXhXaWR0aF09XCJcclxuICAgICAgICAgICAgICAgICdjYWxjKDEwMCUgLSAnICtcclxuICAgICAgICAgICAgICAgIChyaWdodFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aCArIGxlZnRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGgpICtcclxuICAgICAgICAgICAgICAgICdweCknXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogMjAwcHhcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgI2NvbHVtbnNHcm91cGVkQm94XHJcbiAgICAgICAgICAgICAgICBpZD1cImdyb3VwQm94SGVhZGVyRGl2XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHctMTAwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBib3JkZXItYmVsb3dcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNob3dGaWx0ZXJSb3cgPyBoZWFkZXJSb3dIZWlnaHQgKiAyIDogaGVhZGVyUm93SGVpZ2h0XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcy0zXCI+R3JvdXA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGhyZWUtZG90cyBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5UaHJlZURvdHNNZW51KCRldmVudCwgJ2dyb3VwJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy90aHJlZS1kb3RzLXZlcnRpY2FsLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvblJlc2l6ZUdyb3VwQm94KCRldmVudClcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IC0ycHhcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy9yZXNpemUtaGFuZGxlLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9yZGVyLWJlbG93XCJcclxuICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgYm9yZGVyLWJlbG93XCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwibWluLXdpZHRoOiAzMHB4OyBoZWlnaHQ6IDEwMCVcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJncmlkVHlwZSA9PT0gJ0Fzc2V0cycgfHwgZ3JpZFR5cGUgPT09ICdUYXNrcydcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkcmFnYWJsZS1oZWFkZXJcIlxyXG4gICAgICAgICAgICAgICAgKGNka0RyYWdTdGFydGVkKT1cIlxyXG4gICAgICAgICAgICAgICAgICBjaGVja0NvbHVtbkdyb3VwaW5nU3RhdHVzKGNvbCk7XHJcbiAgICAgICAgICAgICAgICAgIGRyYWdTdGFydE9uR3JvdXAoY29sKTtcclxuICAgICAgICAgICAgICAgICAgb25EcmFnU3RhcnRlZChjb2wpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgKGNka0RyYWdNb3ZlZCk9XCJvbkRyYWdNb3ZlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChjZGtEcmFnRW5kZWQpPVwib25EcmFnRW5kZWQoKVwiXHJcbiAgICAgICAgICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiY29sXCJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICBsZXQgY29sIG9mIGNlbnRlckNvbHVtbnM7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbDtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcclxuICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ3ByZXZpZXdDZW50ZXJDb2x1bW5zJ1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQcmV2aWV3XHJcbiAgICAgICAgICAgICAgICAgID48ZGl2IGNsYXNzPVwicC0yIGJvcmRlciBkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNPdXRzaWRlQ29udGFpbmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZHJhZ2dpbmdJbkdyb3VwQXJlYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnZGF0YS1ncmlkL2ljb25zL2p1c3RpZnkuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZycpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzT3V0c2lkZUNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXllLWNyb3NzLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IGNvbC5oZWFkZXIgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQbGFjZWhvbGRlcj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFkcmFnZ2luZ0luR3JvdXBBcmVhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdjZW50ZXJDb2x1bW5zJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRyYWdnaW5nSW5Hcm91cEFyZWEgJiYgIWlzT3V0c2lkZUNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXMtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJvcGFjaXR5OiAwLjZcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8uY2hpbGRyZW4/Lmxlbmd0aDsgZWxzZSBzaW5nbGVDb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpbGQ/LmlzX2dyb3VwYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNoaWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGV2cm9uOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sLmNoaWxkcmVuLmxlbmd0aCA+IDEgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgIT0gY29sLmNoaWxkcmVuLmxlbmd0aCAtIDFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2luZ2xlQ29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8uaXNfZ3JvdXBhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGV2cm9uOiBjb2w/LmNoaWxkcmVuPy5sZW5ndGggPiAxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuICAgICAgICAgICAgPCEtLSBEYXRhIEdyaWQgUmlnaHQgUGlubmVkIEhlYWRlciBzdGFydHMgaGVyZSAtLT5cclxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgICAgICAgICAgaWQ9XCJyaWdodC1waW5uZWQtaGVhZGVyXCJcclxuICAgICAgICAgICAgICBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJcclxuICAgICAgICAgICAgICAgIHNob3dSb3dzR3JvdXBpbmcgPyBbJ3Jvd3MtZ3JvdXBpbmctdG9wLWNvbnRhaW5lciddIDogW11cclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1oZWFkZXIgcmlnaHQtcGlubmVkXCJcclxuICAgICAgICAgICAgICAoY2RrRHJvcExpc3RTb3J0ZWQpPVwiXHJcbiAgICAgICAgICAgICAgICBvblNvcnRHcm91cCgkZXZlbnQsICdwcmV2aWV3UmlnaHRQaW5uZWRDb2x1bW5zJylcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIChjZGtEcm9wTGlzdEVudGVyZWQpPVwib25Ecm9wTGlzdEVudGVyKCRldmVudCwgJ3JpZ2h0JylcIlxyXG4gICAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wR3JvdXAoKVwiXHJcbiAgICAgICAgICAgICAgI3JpZ2h0UGlubmVkSGVhZGVyXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJyaWdodC1waW5uZWQtaGVhZGVyIGQtZmxleFwiXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDAuMnB4XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJhZ2FibGUtaGVhZGVyXCJcclxuICAgICAgICAgICAgICAgIGNka0RyYWdcclxuICAgICAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJjb2xcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCBjb2wgb2YgcmlnaHRQaW5uZWRDb2x1bW5zO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xyXG4gICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlckNlbGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgICBwaW5uZWRSaWdodDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ3JpZ2h0J1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUHJldmlld1xyXG4gICAgICAgICAgICAgICAgICA+PGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLW1vdmUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IGNvbC5oZWFkZXIgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQbGFjZWhvbGRlcj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFkcmFnZ2luZ0luR3JvdXBBcmVhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdyaWdodCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkcmFnZ2luZ0luR3JvdXBBcmVhXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBnYXAtMiBtcy0yXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm9wYWNpdHk6IDAuNlwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy5jaGlsZHJlbj8ubGVuZ3RoOyBlbHNlIHNpbmdsZUNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hpbGQgb2YgY29sLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sLmNoaWxkcmVuLmxlbmd0aCA+IDEgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICE9IGNvbC5jaGlsZHJlbi5sZW5ndGggLSAxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2luZ2xlQ29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjogY29sPy5jaGlsZHJlbj8ubGVuZ3RoID4gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT5cclxuICAgICAgICAgIDwhLS0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XHJcbiAgICAgICAgICA8IS0tIERhdGEgR3JpZCBCb2R5IHN0YXJ0cyBoZXJlIC0tPlxyXG4gICAgICAgICAgPCEtLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT5cclxuICAgICAgICAgIDwhLS0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiaC0xMDAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgKm5nSWY9XCIhZGF0YVNldC5sZW5ndGggJiYgIWxvYWRpbmdcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8IS0tIDxkaXZcclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9yZWNvcmQtbm90LWZvdW5kLnN2ZydcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgID48L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgIDxkaXY+Tm8gUmVjb3JkIEZvdW5kPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdy0xMDAgaC0xMDAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGxvYWRpbmctb3ZlcmxheVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwibG9hZGluZ1wiXHJcbiAgICAgICAgICAgIHN0eWxlPVwiXHJcbiAgICAgICAgICAgICAgei1pbmRleDogOTk5O1xyXG4gICAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxcHgpO1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImJvZHlCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgdGV4dC1wcmltYXJ5XCIgcm9sZT1cInN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJsb2FkZXJcIj48L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5Mb2FkaW5nLi4uPC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICA8IS0tIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLWJvZHktd3JhcHBlciBwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXhcIlxyXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImJvZHlXcmFwcGVySGVpZ2h0XCJcclxuICAgICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdy15OiBhdXRvOyBvdmVyZmxvdy14OiBoaWRkZW5cIlxyXG4gICAgICAgICAgICAjbWFpblNjcm9sbFxyXG4gICAgICAgICAgICAoc2Nyb2xsKT1cIm9uTWFpblNjcm9sbCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgW3N0eWxlLnNjcm9sbGJhcldpZHRoXT1cInZlcnRpY2FsU2Nyb2xsYmFyV2lkdGhcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8IS0tIExFRlQgUElOTkVEIC0tPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcclxuICAgICAgICAgICAgICAgICFncm91cGVkQ29sdW1ucy5sZW5ndGggPyBvcmlnaW5hbERhdGFTZXQubGVuZ3RoICogcm93SGVpZ2h0IDogMFxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBbY2xhc3MuaC0xMDBdPVwib3JpZ2luYWxEYXRhU2V0Lmxlbmd0aCA8IDhcIj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1ib2R5IGxlZnQtcGlubmVkLWJvZHkgdy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdy15OiBoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJoYXNMZWZ0UGlubmVkQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MudHJhbnNwYXJlbnQtYm9yZGVyLXJpZ2h0XT1cIiFoYXNMZWZ0UGlubmVkQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUudHJhbnNmb3JtXT1cIid0cmFuc2xhdGVZKCcgKyB0cmFuc2xhdGVZICsgJ3B4KSdcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJsZWZ0UGlubmVkQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5oLTEwMF09XCJvcmlnaW5hbERhdGFTZXQubGVuZ3RoIDwgOFwiXHJcbiAgICAgICAgICAgICAgICpuZ0lmPVwiIWxvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgW0Byb3dEeW5hbWljXT1cInJvd0FuaW1hdGlvblwiXHJcblxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcm93IG9mIHZpc2libGVSb3dzO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcm93Q2VsbDtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiByb3csXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IHByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNFdmVuOiAoc3RhcnRJbmRleCArIGkpICUgMiA9PT0gMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNPZGQ6IChzdGFydEluZGV4ICsgaSkgJSAyICE9PSAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xlZnQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdsZWZ0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VG90YWxBbW91bnRSb3cgJiYgb3JpZ2luYWxEYXRhU2V0Py5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICByb3dDZWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHsgX192aXJ0dWFsSW5kZXg6IDAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogcHJldmlld0xlZnRQaW5uZWRDb2x1bW5zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0V2ZW46IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc09kZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdsZWZ0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gQ0VOVEVSIC0tPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJoLTEwMFwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNlbnRlclBpbm5lZEhlYWRlci5jbGllbnRXaWR0aFwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJib2R5QmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLWJvZHkgY2VudGVyLXNjcm9sbGFibGVcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmgtMTAwXT1cIm9yaWdpbmFsRGF0YVNldC5sZW5ndGggPCA4XCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3cteTogaGlkZGVuOyBvdmVyZmxvdy14OiBhdXRvXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwiJ3RyYW5zbGF0ZVkoJyArIHRyYW5zbGF0ZVkgKyAncHgpJ1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImJvZHlCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICAgICAgI2NlbnRlclNjcm9sbGFibGVCb2R5XHJcbiAgICAgICAgICAgICAgICAoc2Nyb2xsKT1cIm9uQ2VudGVyQm9keVNjcm9sbCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5ib3hTaGFkb3ddPVwibGVmdFBpbm5lZEJveHNoYWRvd1wiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFsb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgIFtAcm93RHluYW1pY109XCJyb3dBbmltYXRpb25cIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJvdyBvZiB2aXNpYmxlUm93cztcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHJvd0NlbGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogcm93LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBwcmV2aWV3Q2VudGVyQ29sdW1ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNFdmVuOiAoc3RhcnRJbmRleCArIGkpICUgMiA9PT0gMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNPZGQ6IChzdGFydEluZGV4ICsgaSkgJSAyICE9PSAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VG90YWxBbW91bnRSb3cgJiYgb3JpZ2luYWxEYXRhU2V0Py5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICByb3dDZWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHsgX192aXJ0dWFsSW5kZXg6IDAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogcHJldmlld0NlbnRlckNvbHVtbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRXZlbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzT2RkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFJJR0hUIFBJTk5FRCAtLT5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicmlnaHQtcGlubmVkLWJvZHktd3JhcHBlclwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJoYXNSaWdodFBpbm5lZENvbHVtbnNcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5oLTEwMF09XCJvcmlnaW5hbERhdGFTZXQubGVuZ3RoIDwgOFwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLm1heFdpZHRoLnB4XT1cIlxyXG4gICAgICAgICAgICAgICAgaXNTY3JvbGxiYXJWaXNpYmxlXHJcbiAgICAgICAgICAgICAgICAgID8gcmlnaHRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGggLSAxNVxyXG4gICAgICAgICAgICAgICAgICA6IHJpZ2h0UGlubmVkSGVhZGVyLm9mZnNldFdpZHRoXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cInJpZ2h0UGlubmVkQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLWJvZHkgcmlnaHQtcGlubmVkLWJvZHkgdy0xMDAgaC0xMDBcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdy15OiBoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCIndHJhbnNsYXRlWSgnICsgdHJhbnNsYXRlWSArICdweCknXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5ib3hTaGFkb3ddPVwicmlnaHRQaW5uZWRCb3hzaGFkb3dcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJyaWdodFBpbm5lZEJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFsb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgIFtAcm93RHluYW1pY109XCJyb3dBbmltYXRpb25cIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJvdyBvZiB2aXNpYmxlUm93cztcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHJvd0NlbGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogcm93LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBwcmV2aWV3UmlnaHRQaW5uZWRDb2x1bW5zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0V2ZW46IChzdGFydEluZGV4ICsgaSkgJSAyID09PSAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc09kZDogKHN0YXJ0SW5kZXggKyBpKSAlIDIgIT09IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdyaWdodCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1RvdGFsQW1vdW50Um93ICYmIG9yaWdpbmFsRGF0YVNldD8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcm93Q2VsbDtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiB7IF9fdmlydHVhbEluZGV4OiAwIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IHByZXZpZXdSaWdodFBpbm5lZENvbHVtbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRXZlbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzT2RkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ3JpZ2h0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBzdHlsZT1cInRvcDogYXV0bzsgbGVmdDogYXV0b1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgZnVsbHNjcmVlbkltYWdlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGNkci5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJkYXRhR3JpZENvbnRhaW5lci5vZmZzZXRXaWR0aFwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcclxuICAgICAgICAgICAgICAgIGRhdGFHcmlkQ29udGFpbmVyLm9mZnNldEhlaWdodCAtIChmb290ZXJSb3dIZWlnaHQgKyAxMDApXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImltYWdlLW1vZGFsIGZ1bGwtaW1hZ2UtbW9kYWxcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiZnVsbHNjcmVlbkltYWdlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgW3NyY109XCJmdWxsc2NyZWVuSW1hZ2VcIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwiRnVsbHNjcmVlbiBJbWFnZVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkUm93cy5zaXplID4gMCAmJiBzaG93VGFza2JhclwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0YXNrYmFyIHctMTAwXCJcclxuICAgICAgICAgICAgICBbc3R5bGUuYm90dG9tLnB4XT1cIjg1XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1yb3dzLWFjdGlvbi1iYXJcIiBbQHNsaWRlVXBdPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3RlZC1jb3VudFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZFJvd3Muc2l6ZSB9fSBzZWxlY3RlZCBvZlxyXG4gICAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2luYXRpb25Db25maWcudG90YWxSZXN1bHRzIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25maWc/LnBhZ2luYXRpb25QYXJhbXM/LnRvdGFsSXRlbXNcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgVG90YWxcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tYnV0dG9ucyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHRhc2tiYXJBY3Rpb25zOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3Rpb24/Lmhhc19wZXJtaXNzaW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbi1idG4gdmVyaWZpZWQgYnRuIHt7IGFjdGlvbiB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblZlcmlmeUNsaWNrKGFjdGlvbj8uYWN0aW9uTmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+e3sgYWN0aW9uPy5hY3Rpb25OYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tiYXJBY3Rpb25zLmxlbmd0aCA+IDEgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpICE9PSB0YXNrYmFyQWN0aW9ucy5sZW5ndGggLSAxICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza2JhckFjdGlvbnNbaSArIDFdPy5oYXNfcGVybWlzc2lvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID58PC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjbGVhclNlbGVjdGlvblN0YXRlKHRhYmxlVHlwZSk7c2VsZWN0ZWRSb3dzLmNsZWFyKCk7XCIgY2xhc3M9XCJjbGVhci1idG4gbXMtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYmkgYmkteC1jaXJjbGVcIj48L2k+IENsZWFyIFNlbGVjdGlvblxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPCEtLSBWZXJ0aWNhbCBGYWtlIHNjcm9sbCBCYXIgLS0+XHJcbiAgICAgICAgICA8IS0tIDxkaXZcclxuICAgICAgICAgICAgKHNjcm9sbCk9XCJvbk1haW5GYWtlU2Nyb2xsKCRldmVudClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZha2Utc2Nyb2xsYmFyIGZha2Utc2Nyb2xsYmFyLXZlcnRpY2FsIGQtbm9uZVwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5zY3JvbGxiYXJXaWR0aF09XCJ2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoXCJcclxuICAgICAgICAgICAgW3N0eWxlLnRvcC5weF09XCJcclxuICAgICAgICAgICAgICBzaG93Q29sdW1uc0dyb3VwaW5nICYmIHNob3dGaWx0ZXJSb3dcclxuICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogM1xyXG4gICAgICAgICAgICAgICAgOiBzaG93Q29sdW1uc0dyb3VwaW5nIHx8IHNob3dGaWx0ZXJSb3dcclxuICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogMlxyXG4gICAgICAgICAgICAgICAgOiBoZWFkZXJSb3dIZWlnaHRcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgI2Zha2VTY3JvbGxcclxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJib2R5V3JhcHBlckhlaWdodFwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwiXHJcbiAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcclxuICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47XHJcbiAgICAgICAgICAgICAgd2lkdGg6IDE3cHg7XHJcbiAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICAgIHJpZ2h0OiAwO1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGYxZjJmMztcclxuICAgICAgICAgICAgICB6LWluZGV4OiAxMDtcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAqIGRhdGFTZXRMZW5ndGhcIj48L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBIb3JpemludGFsIEZha2UgU2Nyb2xsYmFycyAtLT5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXHJcbiAgICAgICAgICAqbmdJZj1cImRhdGFTZXQubGVuZ3RoICYmIGhhc1Njcm9sbFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBbc3R5bGUuc2Nyb2xsYmFyV2lkdGhdPVwiaG9yaXppbnRhbFNjcm9sbGJhcldpZHRoXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmYWtlLWhvcml6aW50YWwtc2Nyb2xsYmFyXCJcclxuICAgICAgICAgICAgI2Zha2VTY3JvbGxcclxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImxlZnRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGhcIlxyXG4gICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXg6IHNjcm9sbFwiXHJcbiAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIFtzdHlsZS5zY3JvbGxiYXJXaWR0aF09XCJob3JpemludGFsU2Nyb2xsYmFyV2lkdGhcIlxyXG4gICAgICAgICAgICAoc2Nyb2xsKT1cIm9uQ2VudGVyQm9keVNjcm9sbCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmYWtlLWhvcml6aW50YWwtc2Nyb2xsYmFyXCJcclxuICAgICAgICAgICAgI2hvcml6aW50YWxGYWtlU2Nyb2xsXHJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjZW50ZXJQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGhcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IFtzdHlsZS53aWR0aC5weF09XCJjZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsV2lkdGggLSAxMFwiPjwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIFtzdHlsZS5zY3JvbGxiYXJXaWR0aF09XCJob3JpemludGFsU2Nyb2xsYmFyV2lkdGhcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZha2UtaG9yaXppbnRhbC1zY3JvbGxiYXJcIlxyXG4gICAgICAgICAgICAjZmFrZVNjcm9sbFxyXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicmlnaHRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGhcIlxyXG4gICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXg6IHNjcm9sbFwiXHJcbiAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBTaWRlIE1lbnUgSW1wbGVtZW50ZWQgSGVyZSAtLT5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwic2hvd1NpZGVNZW51XCJcclxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwic2lkZU1lbnVWaXNpYmxlID8gMjgwIDogMzBcIlxyXG4gICAgICAgIGNsYXNzPVwicmlnaHQtbWVudSBoLTEwMFwiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJzaWRlbWVudUJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDAgZC1mbGV4IGZsZXgtcm93LXJldmVyc2VcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMzBweFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItc3RhcnRdPVwic2lkZU1lbnVWaXNpYmxlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTaWRlTWVudSgnY29scycpXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuYmctZmZmXT1cIlxyXG4gICAgICAgICAgICAgICAgY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9PSAnY29scycgJiYgc2lkZU1lbnVWaXNpYmxlXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLWJlbG93XT1cInNpZGVNZW51VmlzaWJsZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb2x1bW5zLWJ1dHRvbiBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3VpLWNoZWNrcy1ncmlkLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbWVudWUtdGV4dFwiPkNvbHVtbnM8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNpZGVNZW51KCdmaWx0cnMnKVwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmJnLWZmZl09XCJcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPT0gJ2ZpbHRycycgJiYgc2lkZU1lbnVWaXNpYmxlXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLWJlbG93XT1cIlxyXG4gICAgICAgICAgICAgICAgc2lkZU1lbnVWaXNpYmxlICYmIGN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPT0gJ2ZpbHRycydcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY29sdW1ucy1idXR0b24gZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlLW1lbnVlLXRleHRcIj5GaWx0ZXI8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJoLTEwMFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwic2lkZU1lbnVWaXNpYmxlXCJcclxuICAgICAgICAgICAgW25nU3R5bGVdPVwieyB3aWR0aDogc2lkZU1lbnVWaXNpYmxlID8gJzI1MHB4JyA6ICcnIH1cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDBcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPT0gJ2NvbHMnICYmIHNpZGVNZW51VmlzaWJsZVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtblBhbm5lbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBDb2x1bW4gSXRlbXMgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLXBhbmVsLWJvZHkgcHgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5RmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW5QYW5lbEl0ZW07IGNvbnRleHQ6IHsgY29sOiBjb2wgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGhyIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbWVudS1yb3ctZ3JvdXBzXCIgc3R5bGU9XCJoZWlnaHQ6IDMwJVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaWRlTWVudVJvd0dyb3Vwc1wiXHJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9PSAnZmlsdHJzJyAmJiBzaWRlTWVudVZpc2libGVcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaWRlRmlsdGVyc1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImZvb3RlclJvd0hlaWdodFwiXHJcbiAgICAgIGNsYXNzPVwiYm9yZGVyLXRvcFwiXHJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZm9vdGVyUm93QmFja2dyb3VuZENvbG9yXCJcclxuICAgID5cclxuICAgICAgPCEtLSBSb3dzOiA8c3BhbiBjbGFzcz1cImZ3LTUwMCBtcy0xXCI+e3sgZGF0YVNldC5sZW5ndGggfX08L3NwYW4+IC0tPlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwicGFnaW5hdGlvbi1jb250YWluZXJcIlxyXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiZm9vdGVyUm93SGVpZ2h0XCJcclxuICAgICAgICBbc3R5bGUucGFkZGluZy5weF09XCJmb290ZXJQYWRkaW5nXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYWdlLXNpemVcIj5cclxuICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwYWdpbmF0aW9uQ29uZmlnLmxpbWl0XCJcclxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBzaXplIG9mIHBhZ2VTaXplT3B0aW9uc1wiIFt2YWx1ZV09XCJzaXplXCI+XHJcbiAgICAgICAgICAgICAge3sgc2l6ZSB9fVxyXG4gICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZXBhcmF0b3JcIj4gcGVyIHBhZ2UgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1pbmZvXCI+XHJcbiAgICAgICAgICBSZXN1bHRzOlxyXG4gICAgICAgICAge3sgKHBhZ2luYXRpb25Db25maWcucGFnZSAtIDEpICogcGFnaW5hdGlvbkNvbmZpZy5saW1pdCArIDEgfX0te3tcclxuICAgICAgICAgICAgcGFnaW5hdGlvbkNvbmZpZy5wYWdlICogcGFnaW5hdGlvbkNvbmZpZy5saW1pdCA8XHJcbiAgICAgICAgICAgIHBhZ2luYXRpb25Db25maWcudG90YWxSZXN1bHRzXHJcbiAgICAgICAgICAgICAgPyBwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgKiBwYWdpbmF0aW9uQ29uZmlnLmxpbWl0XHJcbiAgICAgICAgICAgICAgOiBwYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0c1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIG9mXHJcbiAgICAgICAgICB7eyBwYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0cyB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1idXR0b25zXCI+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIChjbGljayk9XCJnb1RvUGFnZShwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgLSAxKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgPT09IDFcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDigLlcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgdmlzaWJsZVBhZ2VzXCI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAqbmdJZj1cInBhZ2UgIT09ICcuLi4nXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1BhZ2UocGFnZSlcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwicGFnZSA9PT0gcGFnaW5hdGlvbkNvbmZpZy5wYWdlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IHBhZ2UgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicGFnZSA9PT0gJy4uLidcIj4uLi48L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIChjbGljayk9XCJnb1RvUGFnZShwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgKyAxKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgPT09IHBhZ2luYXRpb25Db25maWcudG90YWxSZXN1bHRzXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg4oC6XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XHJcbjwhLS0gSGVhZGVyIENlbGwgVGVtcGxhdGUgLS0+XHJcbjwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuXHJcbjxuZy10ZW1wbGF0ZVxyXG4gICNoZWFkZXJDZWxsXHJcbiAgbGV0LWNvbFxyXG4gIGxldC1waW5uZWRSaWdodD1cInBpbm5lZFJpZ2h0XCJcclxuICBsZXQtaT1cImluZGV4XCJcclxuICBsZXQtc2VjdGlvbnM9XCJzZWN0aW9uXCJcclxuICBsZXQtY2FsbGVkRnJvbU5lc3RlZFBsYWNlaG9sZGVyPVwiY2FsbGVkRnJvbU5lc3RlZFBsYWNlaG9sZGVyXCJcclxuPlxyXG4gIDxkaXY+XHJcbiAgICA8IS0tIEdyb3VwIEhlYWRlciAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuY2hpbGRyZW4/Lmxlbmd0aCA+IDA7IGVsc2UgZmxhdEhlYWRlclwiPlxyXG4gICAgICA8ZGl2IGNka0Ryb3BsaXN0R3JvdXAgY2xhc3M9XCJncm91cC1jb2x1bW4td3JhcHBlclwiPlxyXG4gICAgICAgIDwhLS0gUGFyZW50IEhlYWRlciAtLT5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cInNob3VsZFRoZUdyb3VwSGVhZGVyU2hvdyhjb2wpXCJcclxuICAgICAgICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgZ3JvdXAtaGVhZGVyXCJcclxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxyXG4gICAgICAgICAgW3N0eWxlLmdyaWRDb2x1bW5dPVwiJ3NwYW4gJyArIGNvbC5jaGlsZHJlbi5sZW5ndGhcIlxyXG4gICAgICAgICAgW3N0eWxlLmZvbnRXZWlnaHRdPVwiaGVhZGVyRm9udFdlaWdodFwiXHJcbiAgICAgICAgICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgICBbY2xhc3MuanVzdGlmeS1jb250ZW50LWVuZF09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgICBzdHlsZT1cImdyaWQtcm93OiAxXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZ3JvdXAtaGVhZGVyLWNvbnRlbnRcIlxyXG4gICAgICAgICAgICBbdGl0bGVdPVwiY29sLmhlYWRlclwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5tcy0yXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwicmVzaXplLWhhbmRsZVwiXHJcbiAgICAgICAgICAgIChkYmxjbGljayk9XCJhdXRvc2l6ZUNvbHVtbihjb2wuY2hpbGRyZW4pXCJcclxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCJcclxuICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9uUmVzaXplR3JvdXAoJGV2ZW50LCBjb2wsIHBpbm5lZFJpZ2h0KVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9yZXNpemUtaGFuZGxlLnN2ZydcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBDaGlsZCBIZWFkZXJzIGFuZCBGaWx0ZXJzIC0tPlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleFwiXHJcbiAgICAgICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxyXG4gICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJjb2wuY2hpbGRyZW5cIlxyXG4gICAgICAgICAgKGNka0Ryb3BMaXN0U29ydGVkKT1cIm9uQ2hpbGREcm9wbGlzdFNvcnRlZCgkZXZlbnQsIHNlY3Rpb25zKVwiXHJcbiAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uQ2hpbGREcm9wbGlzdERyb3BlZCgkZXZlbnQpXCJcclxuICAgICAgICAgIFtjZGtEcm9wTGlzdFNvcnRpbmdEaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJcclxuICAgICAgICAgICAgc2hvd1Jvd3NHcm91cGluZyA/IFsncm93cy1ncm91cGluZy10b3AtY29udGFpbmVyJ10gOiBbXVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNka0RyYWdcclxuICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cImNoaWxkXCJcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwhLS0gQ2hpbGQgSGVhZGVyIC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpbGQuaXNfdmlzaWJsZSAmJiAhY2hpbGRbJ2lzUm93R3JvdXBlZCddXCI+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2RrRHJhZ0hhbmRsZVxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItY2VsbCBvbmUtcm93LWhlYWRlci1jZWxscyBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICAgICAgICAgICAgICBbYXR0ci5maWVsZF09XCJjaGlsZC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY2hpbGQud2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJjaGlsZC53aWR0aFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250V2VpZ2h0XT1cImhlYWRlckZvbnRXZWlnaHRcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJncmlkLXJvdzogMlwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZmlsdGVyLWFwcGxpZWQtb24tdGV4dF09XCJpc0ZpbHRlckFwcGxpZWRPbkNvbHVtbihjaGlsZClcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gaC0xMDAgYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZsZXgtcm93LXJldmVyc2VdPVwicGlubmVkUmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWVsbGlwc2lzIGgtMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImNvbC5oZWFkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnctMTAwXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1lbGxpcHNpcyBoLTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZGl0YWJsZS1oZWFkZXJdPVwiY2hpbGQ/LmlzX2VkaXRhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5UaHJlZURvdHNNZW51KCRldmVudCwgY2hpbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5GaWx0ZXJvblRocmVlRG90c0NsaWNrKGNoaWxkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjaGlsZC5oZWFkZXIgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MubWUtMl09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2hpbGQucGlubmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLWJsdWUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRocmVlLWRvdHMgcC0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5UaHJlZURvdHNNZW51KCRldmVudCwgY2hpbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL3RocmVlLWRvdHMtdmVydGljYWwuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gT25seSBzaG93IG1lbnUgaWYgdGhpcyBjb2x1bW4gaXMgYWN0aXZlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVDb2wgPT09IGNoaWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IC01MCU7IHotaW5kZXg6IDIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLSghY2hpbGQ/LnBpbm5lZCA/IGNlbnRlclBpbm5lZEhlYWRlci5zY3JvbGxMZWZ0IDogMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLnRvcC5weF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc1RocmVlRG90c0ZpbHRlck9wZW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc2hvd0ZpbHRlclJvdyB8fCBzaG93Q29sdW1uc0dyb3VwaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogMiAtIDEwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0IC0gMTBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbk1lbnU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbDogY2hpbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTmVzdGVkVGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiBzZWN0aW9uc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZXNpemUtaGFuZGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGRibGNsaWNrKT1cImF1dG9zaXplQ29sdW1uKGNoaWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVzaXplQ29sdW1uKCRldmVudCwgY2hpbGQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy9yZXNpemUtaGFuZGxlLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBGaWx0ZXIgQ2VsbCAtLT5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dGaWx0ZXJSb3dcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItY2VsbCBmaWx0ZXItY2VsbFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICAgICAgICAgICAgICBbYXR0ci5maWVsZF09XCJjaGlsZC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY2hpbGQud2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJjaGlsZC53aWR0aFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwiZ3JpZC1yb3c6IDNcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItY2VsbCBmaWx0ZXItY2VsbFwiXHJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmZpZWxkXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJGaWx0ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY2hpbGQuZmlsdGVyVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKGNoaWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHBhc3RlKT1cIm9uRmlsdGVyQ2hhbmdlKGNoaWxkKTsgYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZD8udHlwZSA9PSAnZHJvcGRvd24nIHx8IGNoaWxkPy50eXBlID09ICdpbWFnZSdcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZC1zZWFyY2gtaW5wdXRdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZD8udHlwZSA9PSAnZHJvcGRvd24nIHx8IGNoaWxkPy50eXBlID09ICdpbWFnZSdcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICAgIG9wZW5GaWx0ZXJGcm9tRGlzYWJsZWRTZWFyY2hlZElucHV0KGNoaWxkKVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvcGVuRmlsdGVyKGNoaWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZpbHRlci1hcHBsaWVkXT1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNoaWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnBlLW5vbmVdPVwiY2hpbGQ/LnR5cGUgPT0gJ2ltYWdlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNoaWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogN3B4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDdweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAzcHggIzc0ODZmZjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAgMTYzIDIzMyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDRweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAxMnB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC1jaXJjbGUgZC1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3BhblxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgZmlsdGVyLXJvdy1maWx0ZXItd3JhcHBlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVGaWx0ZXJDZWxsPy5maWVsZCA9PSBjaGlsZD8uZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidG9wOiAxMDAlOyByaWdodDogMDsgei1pbmRleDogOTlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGQ/LnBpbm5lZCA/IDAgOiAtY2VudGVyUGlubmVkSGVhZGVyLnNjcm9sbExlZnRcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJNZW51OyBjb250ZXh0OiB7IGNvbDogY2hpbGQgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQcmV2aWV3XHJcbiAgICAgICAgICAgICAgPjxkaXYgY2xhc3M9XCJwLTIgYm9yZGVyIGQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICFkcmFnZ2luZ0luR3JvdXBBcmVhIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKGNoaWxkLmlzX2dyb3VwYWJsZSAmJiBkcmFnZ2luZ0luR3JvdXBBcmVhKVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtbW92ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZHJhZ2dpbmdJbkdyb3VwQXJlYSAmJiAhY2hpbGQuaXNfZ3JvdXBhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Jhbi5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2Pnt7IGNoaWxkLmhlYWRlciB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1BsYWNlaG9sZGVyPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiIGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgY2hpbGRIZWFkZXJQbGFjZWhvbGRlcjtcclxuICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnM6IHNlY3Rpb25zLFxyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxlZEZyb21OZXN0ZWRQbGFjZWhvbGRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImRyYWdnaW5nSW5Hcm91cEFyZWEgJiYgY2hpbGQ/LmlzX2dyb3VwYWJsZVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBnYXAtMiBtcy0yXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwib3BhY2l0eTogMC42XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNoaWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcGlubmVkUmlnaHQ6IHBpbm5lZFJpZ2h0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnM6IHNlY3Rpb25zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIEZsYXQgSGVhZGVyIHx8IFNpbmdsZSBIZWFkZXIgQ2VsbC0tPlxyXG4gICAgPG5nLXRlbXBsYXRlICNmbGF0SGVhZGVyPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJncm91cC1jb2x1bW4td3JhcHBlclwiXHJcbiAgICAgICAgKm5nSWY9XCJjb2wuaXNfdmlzaWJsZSAmJiAhY29sWydpc1Jvd0dyb3VwZWQnXVwiXHJcbiAgICAgID5cclxuICAgICAgICA8IS0tIEZ1bGwtaGVpZ2h0IEhlYWRlciBDZWxsIChzcGFucyAyIHJvd3MgdmlzdWFsbHkpIC0tPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgb25lLXJvdy1oZWFkZXItY2VsbHNcIlxyXG4gICAgICAgICAgW2F0dHIuZmllbGRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxyXG4gICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiXHJcbiAgICAgICAgICAgIHNob3dDb2x1bW5zR3JvdXBpbmcgPyBoZWFkZXJSb3dIZWlnaHQgKiAyIDogaGVhZGVyUm93SGVpZ2h0XHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcclxuICAgICAgICAgICAgc2hvd0NvbHVtbnNHcm91cGluZyA/IGhlYWRlclJvd0hlaWdodCAqIDIgOiBoZWFkZXJSb3dIZWlnaHRcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBbc3R5bGUuZm9udFdlaWdodF09XCJoZWFkZXJGb250V2VpZ2h0XCJcclxuICAgICAgICAgIHN0eWxlPVwiZ3JpZC1yb3c6IDEgLyBzcGFuIDJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gaC0xMDAgYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHctMTAwIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmZsZXgtcm93LXJldmVyc2VdPVwicGlubmVkUmlnaHRcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWVsbGlwc2lzIGgtMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cImNvbC5oZWFkZXJcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWVsbGlwc2lzIGgtMTAwIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmVkaXRhYmxlLWhlYWRlcl09XCJjb2w/LmlzX2VkaXRhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmZpbHRlci1hcHBsaWVkLW9uLXRleHRdPVwiaXNGaWx0ZXJBcHBsaWVkT25Db2x1bW4oY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICBvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsIGNvbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgb3BlbkZpbHRlcm9uVGhyZWVEb3RzQ2xpY2soY29sKVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXhcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmZsZXgtcm93LXJldmVyc2VdPVwicGlubmVkUmlnaHRcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzLm1lLTJdPVwicGlubmVkUmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbD8ucGlubmVkXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLWJsdWUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3MubWUtMl09XCJjb2wub3JkZXJfYnlcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInNvcnRpbmdDb25maWc/LmZpZWxkID09IGNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gQXNjZW5kaW5nIFNvcnQgSWNvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09ICdhc2MnXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvc29ydC1hc2Muc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG10LTEgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzb3J0RGVzYyhjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09PSAnYXNjJ1wiXHJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8IS0tIERlc2NlbmRpbmcgU29ydCBJY29uIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic29ydGluZ0NvbmZpZz8ub3JkZXJfYnkgPT0gJ2Rlc2MnXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvc29ydC1kZXNjLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0xIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic29ydEFzYyhjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09PSAnZGVzYydcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGhyZWUtZG90cyBwLTFcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgb3BlblRocmVlRG90c01lbnUoJGV2ZW50LCBjb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL3RocmVlLWRvdHMtdmVydGljYWwuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gT25seSBzaG93IG1lbnUgaWYgdGhpcyBjb2x1bW4gaXMgYWN0aXZlIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVDb2wgPT09IGNvbFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwidG9wOiAtNTAlOyB6LWluZGV4OiAyMVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIC0oIWNvbD8ucGlubmVkID8gY2VudGVyUGlubmVkSGVhZGVyLnNjcm9sbExlZnQgOiAwKVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUudG9wLnB4XT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGlzVGhyZWVEb3RzRmlsdGVyT3BlblxyXG4gICAgICAgICAgICAgICAgICAgICAgPyBzaG93RmlsdGVyUm93IHx8IHNob3dDb2x1bW5zR3JvdXBpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAyIC0gMTBcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBoZWFkZXJSb3dIZWlnaHQgLSAxMFxyXG4gICAgICAgICAgICAgICAgICAgICAgOiAwXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY29sdW1uTWVudTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sOiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTmVzdGVkVGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiBzZWN0aW9uc1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZXNpemUtaGFuZGxlXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzLnctMTAwXT1cImNvbC5waW5uZWQgPT0gJ3JpZ2h0J1wiXHJcbiAgICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJhdXRvc2l6ZUNvbHVtbihjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJcclxuICAgICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9uUmVzaXplQ29sdW1uKCRldmVudCwgY29sKVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9yZXNpemUtaGFuZGxlLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBGaWx0ZXIgQ2VsbCAtLT5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cInNob3dGaWx0ZXJSb3dcIlxyXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgY2xhc3M9XCJoZWFkZXItY2VsbCBmaWx0ZXItY2VsbFwiXHJcbiAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICAgICAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkZpbHRlclwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sLmZpbHRlclZhbHVlXCJcclxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoY29sKVwiXHJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJjb2w/LnR5cGUgPT0gJ2Ryb3Bkb3duJyB8fCBjb2w/LnR5cGUgPT0gJ2ltYWdlJ1wiXHJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZC1zZWFyY2gtaW5wdXRdPVwiXHJcbiAgICAgICAgICAgICAgY29sPy50eXBlID09ICdkcm9wZG93bicgfHwgY29sPy50eXBlID09ICdpbWFnZSdcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgKHBhc3RlKT1cIm9uUGFzdGVJbkZpbHRlclJvd1NlYXJjaCgkZXZlbnQsIGNvbClcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvcGVuRmlsdGVyRnJvbURpc2FibGVkU2VhcmNoZWRJbnB1dChjb2wpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiXHJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXJcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvcGVuRmlsdGVyKGNvbClcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZmlsdGVyLWFwcGxpZWRdPVwiaXNGaWx0ZXJBcHBsaWVkT25Db2x1bW4oY29sKVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5wZS1ub25lXT1cImNvbD8udHlwZSA9PSAnaW1hZ2UnXCJcclxuICAgICAgICAgICAgPjxzcGFuXHJcbiAgICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXNGaWx0ZXJBcHBsaWVkT25Db2x1bW4oY29sKVwiXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJcclxuICAgICAgICAgICAgICAgIHdpZHRoOiA3cHg7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDdweDtcclxuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDBweCAwcHggM3B4ICM3NDg2ZmY7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCAxNjMgMjMzKTtcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgICAgIHJpZ2h0OiA0cHg7XHJcbiAgICAgICAgICAgICAgICB0b3A6IDEycHg7XHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtY2lyY2xlIGQtYmxvY2tcIlxyXG4gICAgICAgICAgICA+PC9zcGFuXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBmaWx0ZXItcm93LWZpbHRlci13cmFwcGVyXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVGaWx0ZXJDZWxsID09PSBjb2xcIlxyXG4gICAgICAgICAgICBzdHlsZT1cInRvcDogMTAwJTsgcmlnaHQ6IDA7IHotaW5kZXg6IDk5XCJcclxuICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiY29sPy5waW5uZWQgPyAwIDogLWNlbnRlclBpbm5lZEhlYWRlci5zY3JvbGxMZWZ0XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyTWVudTsgY29udGV4dDogeyBjb2w6IGNvbCB9XCJcclxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XHJcbjwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XHJcbjwhLS0gQm9keSBDZWxsIFRlbXBsYXRlIC0tPlxyXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG5cclxuPG5nLXRlbXBsYXRlXHJcbiAgI3Jvd0NlbGxcclxuICBsZXQtcm93XHJcbiAgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCJcclxuICBsZXQtaXNFdmVuPVwiaXNFdmVuXCJcclxuICBsZXQtaXNPZGQ9XCJpc09kZFwiXHJcbiAgbGV0LWlzTGVmdFNlY3Rpb249XCJpc0xlZnRcIlxyXG4gIGxldC1zZWN0aW9uPVwic2VjdGlvblwiXHJcbiAgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIlxyXG4gIGxldC1pc1RvdGFsUm93PVwiaXNUb3RhbFJvd1wiXHJcbj5cclxuICA8IS0tIENoZWNrIGlmIHJvdyBpcyBhIGdyb3VwIC0tPlxyXG4gIDxuZy1jb250YWluZXJcclxuICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ3JvdXBSb3dUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdywgZGVwdGg6IDAgfVwiXHJcbiAgPjwvbmctY29udGFpbmVyPlxyXG4gIDxuZy10ZW1wbGF0ZSAjZ3JvdXBSb3dUZW1wbGF0ZSBsZXQtcm93IGxldC1kZXB0aD1cImRlcHRoXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93LmlzR3JvdXA7IGVsc2UgcmVndWxhclJvd1wiPlxyXG4gICAgICA8IS0tIEdyb3VwIEhlYWRlciAtLT5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZ3JvdXAtaGVhZGVyLXJvdyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXHJcbiAgICAgICAgW2NsYXNzLmJvcmRlci1iZWxvd109XCJzZWN0aW9uICE9PSAnY2VudGVyJ1wiXHJcbiAgICAgICAgW3N0eWxlLndpZHRoXT1cIlxyXG4gICAgICAgICAgc2VjdGlvbiA9PT0gJ2NlbnRlcidcclxuICAgICAgICAgICAgPyAoY2VudGVyU2Nyb2xsYWJsZUJvZHk/Lm5hdGl2ZUVsZW1lbnQ/LnNjcm9sbFdpZHRoID8/IDApICsgJ3B4J1xyXG4gICAgICAgICAgICA6ICcxMDAlJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cInNlY3Rpb24gPT0gJ2xlZnQnXCJcclxuICAgICAgICAgIGNsYXNzPVwiaC0xMDAgZC1mbGV4XCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJsZWZ0UGlubmVkSGVhZGVyLm9mZnNldFdpZHRoIC0gMVwiXHJcbiAgICAgICAgICBbY2xhc3Mucm93LXNlbGVjdGVkXT1cInJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cInNob3dTZXJpYWxOdW1iZXJcIlxyXG4gICAgICAgICAgICBzdHlsZT1cIndpZHRoOiA1MHB4XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGgtMTAwIGJvcmRlci1yaWdodCBqdXN0aWZ5LWNvbnRlbnQtZW5kIHBlLTIgcy1ub1wiXHJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCI1NVwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5jdXJzb3JdPVwiXHJcbiAgICAgICAgICAgICAgJ3VybCgnICtcclxuICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL2Fycm93LXJpZ2h0LnN2ZyksIGF1dG8nXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25Sb3dNb3VzZURvd24ocm93Ll9fdmlydHVhbEluZGV4LCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgKG1vdXNlb3Zlcik9XCJvblJvd01vdXNlT3Zlcihyb3cuX192aXJ0dWFsSW5kZXgsICRldmVudClcIlxyXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiY2hlY2tib3hlc0NvbG9yXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgZ2V0U3RhcnRJbmRleCgpICsgKHJvdy5fX3ZpcnR1YWxJbmRleCAtIDEpIHx8IFwiXCIgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBzdHlsZT1cIndpZHRoOiA1MHB4XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgaC0xMDAgYm9yZGVyLXJpZ2h0XCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgW2NsYXNzLnJvdy1zZWxlY3RlZF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxyXG4gICAgICAgICAgICBbY2xhc3MubGVmdC1zZWxlY3Rpb24tYm9yZGVyXT1cIlxyXG4gICAgICAgICAgICAgIHJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJjaGVja2JveGVzQ29sb3JcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4XCIgdHlwZT1cImNoZWNrYm94XCIgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cInNlY3Rpb24gPT0gJ2NlbnRlcidcIlxyXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNlbnRlclBpbm5lZEhlYWRlci5zY3JvbGxXaWR0aFwiXHJcbiAgICAgICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwiY2VudGVyUGlubmVkSGVhZGVyLnNjcm9sbFdpZHRoXCJcclxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwcy0yIGgtMTAwIGJvcmRlci1iZWxvd1wiXHJcbiAgICAgICAgICBbY2xhc3Mucm93LXNlbGVjdGVkXT1cInJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVwiXHJcbiAgICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCJcclxuICAgICAgICAgICAgW3N0eWxlLnBhZGRpbmdMZWZ0LnB4XT1cImRlcHRoID4gMCA/IGRlcHRoICogMzAgOiAwXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGZpbHRlci1pY29uLXdyYXBwZXJcIiAoY2xpY2spPVwidG9nZ2xlRXhwYW5kKHJvdylcIj5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgcm93LmlzRXhwYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgPyBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLWRvd24uc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgIDogc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHN0cm9uZyAoY2xpY2spPVwidG9nZ2xlRXhwYW5kKHJvdylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAge3sgcm93Lmdyb3VwVmFsdWUgfX0gKHt7IGNvdW50TGVhZlJvd3Mocm93KSB9fSlcclxuICAgICAgICAgICAgPC9zdHJvbmc+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJzZWN0aW9uID09ICdyaWdodCdcIlxyXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInJpZ2h0UGlubmVkSGVhZGVyLm9mZnNldFdpZHRoXCJcclxuICAgICAgICAgIFtjbGFzcy5yb3ctc2VsZWN0ZWRdPVwicm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXCJcclxuICAgICAgICAgIFtjbGFzcy5maXJzdC1yb3ctc2VsZWN0ZWRdPVwiZmlyc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcclxuICAgICAgICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gUmVjdXJzaXZlIENoaWxkcmVuIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXAtY2hpbGRyZW5cIiAqbmdJZj1cInJvdy5pc0V4cGFuZFwiIFtAc2xpZGVUb2dnbGVdPlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjaGlsZCBvZiByb3cuY2hpbGRyZW47IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlJZFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoaWxkLmlzR3JvdXA7IGVsc2UgZGF0YVJvd1wiPlxyXG4gICAgICAgICAgICA8IS0tIFJlY3Vyc2l2ZSBjYWxsIGZvciBuZXN0ZWQgZ3JvdXAgLS0+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgZ3JvdXBSb3dUZW1wbGF0ZTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjaGlsZCwgZGVwdGg6IGRlcHRoICsgMSB9XHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNkYXRhUm93PlxyXG4gICAgICAgICAgICA8IS0tIFJlZ3VsYXIgZGF0YSByb3cgLS0+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgcm93Q2VsbDtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCxcclxuICAgICAgICAgICAgICAgICAgY29sdW1uczogY29sdW1ucyxcclxuICAgICAgICAgICAgICAgICAgaXNFdmVuOiBpICUgMiA9PT0gMCxcclxuICAgICAgICAgICAgICAgICAgaXNPZGQ6IGkgJSAyICE9PSAwLFxyXG4gICAgICAgICAgICAgICAgICBpc0xlZnQ6IGlzTGVmdFNlY3Rpb24sXHJcbiAgICAgICAgICAgICAgICAgIHNlY3Rpb246IHNlY3Rpb24sXHJcbiAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IGlzVG90YWxSb3dcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDwhLS0gUmVndWxhciByb3cgKG5vdCBhIGdyb3VwKSAtLT5cclxuICA8bmctdGVtcGxhdGUgI3JlZ3VsYXJSb3c+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZC1mbGV4XCJcclxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxyXG4gICAgICBbc3R5bGUubWluSGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXHJcbiAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcclxuICAgID5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBjdXJzb3ItcG9pbnRlciBib3JkZXItYmVsb3dcIlxyXG4gICAgICAgIHN0eWxlPVwibWluLXdpZHRoOiAzMHB4OyBoZWlnaHQ6IDEwMCVcIlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICBzZWN0aW9uID09ICdjZW50ZXInICYmIChncmlkVHlwZSA9PT0gJ0Fzc2V0cycgfHwgZ3JpZFR5cGUgPT09ICdUYXNrcycpXHJcbiAgICAgICAgXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6IHJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVxyXG4gICAgICAgICAgICA/IG51bGxcclxuICAgICAgICAgICAgOiBnZXRCYWNrZ3JvdW5kQ29sb3Iocm93LCBpc0V2ZW4sIHNlY3Rpb24pXHJcbiAgICAgICAgfVwiXHJcbiAgICAgICAgW2NsYXNzLnNlbGVjdGVkLWNlbGxdPVwicm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXCJcclxuICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgW2NsYXNzLmxhc3Qtcm93LXNlbGVjdGVkXT1cImxhc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsUm93RXhwYW5kKHJvdylcIlxyXG4gICAgICAgICAgKm5nSWY9XCJyb3c/LmRldGFpbD8ucmVzdWx0Py5sZW5ndGggfHwgZ3JpZFR5cGUgPT09ICdUYXNrcydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZmlsdGVyLWljb24td3JhcHBlclwiXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICBpc0RldGFpbHNFeHBhbmRlZChyb3cpXHJcbiAgICAgICAgICAgICAgPyBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLWRvd24uc3ZnJ1xyXG4gICAgICAgICAgICAgIDogc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiXHJcbiAgICAgICAgICBzZWN0aW9uID09ICdjZW50ZXInICYmIGdyb3VwZWRDb2x1bW5zPy5sZW5ndGggPyBncm91cEJveFBhZGRpbmcgOiAwXHJcbiAgICAgICAgXCJcclxuICAgICAgICBbY2xhc3Mucm93LXNlbGVjdGVkXT1cInJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVwiXHJcbiAgICAgICAgW2NsYXNzLmZpcnN0LXJvdy1zZWxlY3RlZF09XCJmaXJzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxyXG4gICAgICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgKGNvbnRleHRtZW51KT1cIm9uUmlnaHRDbGljaygkZXZlbnQsIHJvdylcIlxyXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1yb3cgaC0xMDBcIlxyXG4gICAgICAgIFtjbGFzcy5ldmVuLXJvd109XCJpc0V2ZW5cIlxyXG4gICAgICAgIFtjbGFzcy5vZGQtcm93XT1cImlzT2RkXCJcclxuICAgICAgICBbY2xhc3MuaG92ZXJlZC1yb3ddPVwiaG92ZXJlZFJvd0lkID09PSAocm93Ll9pZCB8fCByb3cuaWQpXCJcclxuICAgICAgICAobW91c2VlbnRlcik9XCJvblJvd0hvdmVyKHJvdylcIlxyXG4gICAgICAgIChtb3VzZWxlYXZlKT1cIm9uUm93TGVhdmUoKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiBnZXRCYWNrZ3JvdW5kQ29sb3Iocm93LCBpc0V2ZW4sIHNlY3Rpb24pXHJcbiAgICAgICAgfVwiXHJcbiAgICAgICAgW3N0eWxlLm1pbkhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxyXG4gICAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcclxuICAgICAgPjwvZGl2PlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKGNvbnRleHRtZW51KT1cIm9uUmlnaHRDbGljaygkZXZlbnQsIHJvdylcIlxyXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1yb3dcIlxyXG4gICAgICAgIFtjbGFzcy5ldmVuLXJvd109XCJpc0V2ZW5cIlxyXG4gICAgICAgIFtjbGFzcy5vZGQtcm93XT1cImlzT2RkXCJcclxuICAgICAgICBbY2xhc3MuaG92ZXJlZC1yb3ddPVwiaG92ZXJlZFJvd0lkID09PSAocm93Ll9pZCB8fCByb3cuaWQpXCJcclxuICAgICAgICAobW91c2VlbnRlcik9XCJvblJvd0hvdmVyKHJvdylcIlxyXG4gICAgICAgIChtb3VzZWxlYXZlKT1cIm9uUm93TGVhdmUoKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiBnZXRCYWNrZ3JvdW5kQ29sb3Iocm93LCBpc0V2ZW4sIHNlY3Rpb24pXHJcbiAgICAgICAgfVwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3QtYWxsLWNoZWNrYm94LWNlbGwganVzdGlmeS1jb250ZW50LWVuZCBwZS0yIHMtbm9cIlxyXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIjU1XCJcclxuICAgICAgICAgICpuZ0lmPVwiaXNMZWZ0U2VjdGlvbiAmJiBzaG93U2VyaWFsTnVtYmVyXCJcclxuICAgICAgICAgIFtzdHlsZS5jdXJzb3JdPVwiXHJcbiAgICAgICAgICAgICd1cmwoJyArXHJcbiAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL2Fycm93LXJpZ2h0LnN2ZyksIGF1dG8nXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgKG1vdXNlZG93bik9XCJvblJvd01vdXNlRG93bihyb3cuX192aXJ0dWFsSW5kZXgsICRldmVudClcIlxyXG4gICAgICAgICAgKG1vdXNlb3Zlcik9XCJvblJvd01vdXNlT3Zlcihyb3cuX192aXJ0dWFsSW5kZXgsICRldmVudClcIlxyXG4gICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImNoZWNrYm94ZXNDb2xvclwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgZ2V0U3RhcnRJbmRleCgpICsgKHJvdy5fX3ZpcnR1YWxJbmRleCAtIDEpIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiYm9yZGVyLWJlbG93XCJcclxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiXHJcbiAgICAgICAgICAgIHJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVxyXG4gICAgICAgICAgICAgID8gc2VsZWN0ZWRSb3dzQmFja2dyb3VuZENvbG9yXHJcbiAgICAgICAgICAgICAgOiBjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3QtYWxsLWNoZWNrYm94LWNlbGxcIlxyXG4gICAgICAgICAgKm5nSWY9XCJpc0xlZnRTZWN0aW9uICYmIHNob3dDaGVja2JveGVzXCJcclxuICAgICAgICAgIFtjbGFzcy5sZWZ0LXNlbGVjdGlvbi1ib3JkZXJdPVwiXHJcbiAgICAgICAgICAgIHJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIFtjbGFzcy5maXJzdC1yb3ctc2VsZWN0ZWRdPVwiZmlyc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcclxuICAgICAgICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgICBbc3R5bGUubWluSGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDFcIlxyXG4gICAgICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAqbmdJZj1cImhhc0FueVZpc2libGVDb2x1bW5cIlxyXG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJpc1Jvd1NlbGVjdGVkKHJvdylcIlxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVJvd1NlbGVjdGlvbihyb3cpXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gUmVuZGVyIGFsbCBjb2x1bW5zIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICBsZXQgY29sIG9mIGNvbHVtbnM7XHJcbiAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZDtcclxuICAgICAgICAgICAgbGV0IGNvbEluZGV4ID0gaW5kZXhcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5jaGlsZHJlbj8ubGVuZ3RoID4gMDsgZWxzZSBmbGF0Q29sdW1uXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgIGxldCBjaGlsZCBvZiBjb2wuY2hpbGRyZW47XHJcbiAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RmllbGQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgc3ViQ29sSW5kZXggPSBpbmRleFxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpbGQ/LmlzX3Zpc2libGUgJiYgIWNoaWxkPy5pc1Jvd0dyb3VwZWRcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICBjZWxsVGVtcGxhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29sOiBjaGlsZCxcclxuICAgICAgICAgICAgICAgICAgICAgIHJvdzogcm93LFxyXG4gICAgICAgICAgICAgICAgICAgICAgcm93SW5kZXg6IHJvd0luZGV4LFxyXG4gICAgICAgICAgICAgICAgICAgICAgY29sSW5kZXg6IGNvbEluZGV4LFxyXG4gICAgICAgICAgICAgICAgICAgICAgc3ViQ29sSW5kZXg6IHN1YkNvbEluZGV4LFxyXG4gICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogc2VjdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IGlzVG90YWxSb3dcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNmbGF0Q29sdW1uPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy5pc192aXNpYmxlICYmICFjb2w/LmlzUm93R3JvdXBlZFwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgIGNlbGxUZW1wbGF0ZTtcclxuICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgIHJvdzogcm93LFxyXG4gICAgICAgICAgICAgICAgICAgIHJvd0luZGV4OiByb3dJbmRleCxcclxuICAgICAgICAgICAgICAgICAgICBjb2xJbmRleDogY29sSW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgc3ViQ29sSW5kZXg6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogc2VjdGlvbixcclxuICAgICAgICAgICAgICAgICAgICBpc1RvdGFsUm93OiBpc1RvdGFsUm93XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICBbQHNsaWRlVG9nZ2xlXVxyXG4gICAgICAqbmdJZj1cInNlY3Rpb24gPT09ICdsZWZ0JyAmJiBpc0RldGFpbHNFeHBhbmRlZChyb3cpXCJcclxuICAgICAgY2xhc3M9XCJhY2NvcmRpb24tZGV0YWlsc1wiXHJcbiAgICAgIHN0eWxlPVwibWF4LWhlaWdodDogMzUwcHg7IG92ZXJmbG93OiBoaWRkZW5cIlxyXG4gICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImhhc0hvcml6b250YWxTY3JvbGwgPyAzMzkgOiAzNDFcIlxyXG4gICAgPlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgIGxlZnRSaWdodE5lc3RlZFBsYWNlaG9sZGVyO1xyXG4gICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdyB9XHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXZcclxuICAgICAgW0BzbGlkZVRvZ2dsZV1cclxuICAgICAgKm5nSWY9XCJzZWN0aW9uID09PSAnY2VudGVyJyAmJiBpc0RldGFpbHNFeHBhbmRlZChyb3cpXCJcclxuICAgICAgY2xhc3M9XCJhY2NvcmRpb24tZGV0YWlscyBjZW50ZXItc2VjdGlvblwiXHJcbiAgICAgIHN0eWxlPVwiXHJcbiAgICAgICAgbWF4LWhlaWdodDogMzUwcHg7XHJcbiAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuO1xyXG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XHJcbiAgICAgICAgc2Nyb2xsYmFyLXdpZHRoOiB0aGluO1xyXG4gICAgICBcIlxyXG4gICAgICAjbmVzdGVkVGFibGVcclxuICAgICAgW3N0eWxlLndpZHRoXT1cIlxyXG4gICAgICAgIGhhc1JpZ2h0UGlubmVkQ29sdW1uc1xyXG4gICAgICAgICAgPyAnMTAwJSdcclxuICAgICAgICAgIDogaGFzVmVydGljYWxTY3JvbGxcclxuICAgICAgICAgID8gJ2NhbGMoMTAwJSAtIDEycHgpJ1xyXG4gICAgICAgICAgOiAnMTAwJSdcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyaWRUeXBlID09ICdBc3NldHMnXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJuZXN0ZWRUYWJsZVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93IH1cIlxyXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncmlkVHlwZSA9PSAnVGFza3MnXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgdGFza01hbmFnZW1lbnRUZW1wbGF0ZTtcclxuICAgICAgICAgICAgY29udGV4dDogeyB0YXNrRGV0YWlsczogcm93IH1cclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXZcclxuICAgICAgW0BzbGlkZVRvZ2dsZV1cclxuICAgICAgKm5nSWY9XCJzZWN0aW9uID09PSAncmlnaHQnICYmIGlzRGV0YWlsc0V4cGFuZGVkKHJvdylcIlxyXG4gICAgICBjbGFzcz1cImFjY29yZGlvbi1kZXRhaWxzXCJcclxuICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzNTBweDsgb3ZlcmZsb3c6IGhpZGRlblwiXHJcbiAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiaGFzSG9yaXpvbnRhbFNjcm9sbCA/IDMzOSA6IDM0MVwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgbGVmdFJpZ2h0TmVzdGVkUGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93IH1cclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gQWN0dWFsIENlbGwgaXMgSGVyZSAtLT5cclxuPG5nLXRlbXBsYXRlXHJcbiAgI2NlbGxUZW1wbGF0ZVxyXG4gIGxldC1jb2w9XCJjb2xcIlxyXG4gIGxldC1yb3c9XCJyb3dcIlxyXG4gIGxldC1zZWN0aW9uPVwic2VjdGlvblwiXHJcbiAgbGV0LXN1YkNvbEluZGV4PVwic3ViQ29sSW5kZXhcIlxyXG4gIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCJcclxuICBsZXQtY29sSW5kZXg9XCJjb2xJbmRleFwiXHJcbiAgbGV0LWlzVG90YWxSb3c9XCJpc1RvdGFsUm93XCJcclxuPlxyXG4gIDxkaXZcclxuICAgICNjZWxsQ29udGFpbmVyXHJcbiAgICAoY2xpY2spPVwiXHJcbiAgICAgIGVkaXRpbmdLZXkgPSAnJzsgc2V0QWN0aXZlQ2VsbChyb3csIGNvbCk7IGNvbGxhcHNlQWxsRXhwYW5kZWRDZWxscygpXHJcbiAgICBcIlxyXG4gICAgW3N0eWxlLmZvbnRXZWlnaHRdPVwiYm9keUZvbnRXZWlnaHRcIlxyXG4gICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxyXG4gICAgY2xhc3M9XCJjZWxsIG92ZXJmbG93LXZpc2libGUgcG9zaXRpb24tcmVsYXRpdmUgZGF0YS1ncmlkLWNlbGxcIlxyXG4gICAgW2F0dHIuZmllbGRdPVwiY29sLmZpZWxkXCJcclxuICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2wud2lkdGhcIlxyXG4gICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJjb2wud2lkdGhcIlxyXG4gICAgW3N0eWxlLmZvbnRTaXplLnB4XT1cImJvZHlUZXh0Rm9udHNTaXplXCJcclxuICAgIFtzdHlsZS5taW5IZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcclxuICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcclxuICAgIFtjbGFzcy5hY3RpdmUtY2VsbF09XCJcclxuICAgICAgaXNBY3RpdmVDZWxsKHJvdywgY29sKSAmJiAhaXNFZGl0aW5nKHJvdywgY29sKSAmJiBzZWxlY3RlZEtleXMuc2l6ZSA9PSAxXHJcbiAgICBcIlxyXG4gICAgKGRibGNsaWNrKT1cIlxyXG4gICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBlbmFibGVFZGl0KHJvdywgY29sLCBmYWxzZSwgY2VsbENvbnRhaW5lcilcclxuICAgIFwiXHJcbiAgICBbY2xhc3Mucm93LXNlbGVjdGVkXT1cInJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVwiXHJcbiAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdz8uX192aXJ0dWFsSW5kZXhcIlxyXG4gICAgW2NsYXNzLmxhc3Qtcm93LXNlbGVjdGVkXT1cImxhc3RTZWxlY3RlZFJvdyA9PT0gcm93Py5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICB0YWJpbmRleD1cIi0xXCJcclxuICAgIChrZXlkb3duLmVudGVyKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBlbmFibGVFZGl0KHJvdywgY29sKVwiXHJcbiAgICAobW91c2Vkb3duKT1cIlxyXG4gICAgICBzdGFydFNlbGVjdGlvbihcclxuICAgICAgICByb3cuX192aXJ0dWFsSW5kZXgsXHJcbiAgICAgICAgY29sSW5kZXgsXHJcbiAgICAgICAgc3ViQ29sSW5kZXggPz8gMCxcclxuICAgICAgICBjb2wuZmllbGQsXHJcbiAgICAgICAgJGV2ZW50LFxyXG4gICAgICAgIHNlY3Rpb25cclxuICAgICAgKVxyXG4gICAgXCJcclxuICAgIChtb3VzZWVudGVyKT1cIlxyXG4gICAgICBleHRlbmRTZWxlY3Rpb24oXHJcbiAgICAgICAgcm93Ll9fdmlydHVhbEluZGV4LFxyXG4gICAgICAgIGNvbEluZGV4LFxyXG4gICAgICAgIHN1YkNvbEluZGV4ID8/IDAsXHJcbiAgICAgICAgY29sLmZpZWxkLFxyXG4gICAgICAgICRldmVudCxcclxuICAgICAgICBzZWN0aW9uXHJcbiAgICAgIClcclxuICAgIFwiXHJcbiAgICAobW91c2V1cCk9XCJlbmRTZWxlY3Rpb24oKVwiXHJcbiAgICBbY2xhc3Muc2VsZWN0ZWQtY2VsbF09XCJcclxuICAgICAgaXNTZWxlY3RlZChcclxuICAgICAgICByb3cuX192aXJ0dWFsSW5kZXgsXHJcbiAgICAgICAgY29sSW5kZXgsXHJcbiAgICAgICAgc3ViQ29sSW5kZXggPz8gMCxcclxuICAgICAgICBjb2wuZmllbGQsXHJcbiAgICAgICAgc2VjdGlvblxyXG4gICAgICApXHJcbiAgICBcIlxyXG4gICAgW2NsYXNzLnRvcC1ib3JkZXJdPVwiXHJcbiAgICAgIGlzVG9wQm9yZGVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKVxyXG4gICAgXCJcclxuICAgIFtjbGFzcy5ib3R0b20tYm9yZGVyXT1cIlxyXG4gICAgICBpc0JvdHRvbUJvcmRlcihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbilcclxuICAgIFwiXHJcbiAgICBbY2xhc3MubGVmdC1ib3JkZXJdPVwiXHJcbiAgICAgIGlzTGVmdEJvcmRlcihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbilcclxuICAgIFwiXHJcbiAgICBbY2xhc3MucmlnaHQtYm9yZGVyXT1cIlxyXG4gICAgICBpc1JpZ2h0Qm9yZGVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKVxyXG4gICAgXCJcclxuICAgIFtjbGFzcy50b3AtbGVmdC1jb3JuZXJdPVwiXHJcbiAgICAgIGlzVG9wTGVmdENvcm5lcihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbilcclxuICAgIFwiXHJcbiAgICBbY2xhc3MudG9wLXJpZ2h0LWNvcm5lcl09XCJcclxuICAgICAgaXNUb3BSaWdodENvcm5lcihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbilcclxuICAgIFwiXHJcbiAgICBbY2xhc3MuYm90dG9tLWxlZnQtY29ybmVyXT1cIlxyXG4gICAgICBpc0JvdHRvbUxlZnRDb3JuZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pXHJcbiAgICBcIlxyXG4gICAgW2NsYXNzLmJvdHRvbS1yaWdodC1jb3JuZXJdPVwiXHJcbiAgICAgIGlzQm90dG9tUmlnaHRDb3JuZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pXHJcbiAgICBcIlxyXG4gID5cclxuICAgIDwhLS0gIChtb3VzZWRvd24pPVwic3RhcnRTZWxlY3Rpb24ocm93Ll9fdmlydHVhbEluZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXggPz8gMCwgY29sLmZpZWxkLCAkZXZlbnQpXCJcclxuICAobW91c2VlbnRlcik9XCJleHRlbmRTZWxlY3Rpb24ocm93Ll9fdmlydHVhbEluZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXggPz8gMCwgY29sLmZpZWxkLCAkZXZlbnQpXCJcclxuICAobW91c2V1cCk9XCJlbmRTZWxlY3Rpb24oKVwiXHJcbiAgW2NsYXNzLnNlbGVjdGVkLWNlbGxdPVwiaXNTZWxlY3RlZChyb3cuX192aXJ0dWFsSW5kZXgsIGNvbEluZGV4LCAgc3ViQ29sSW5kZXggPz8gMCwgY29sLmZpZWxkKVwiIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cInRhYmxlLWNlbGxcIlxyXG4gICAgICBbY2xhc3MuYWN0aXZlLWZvci1lZGl0aW5nXT1cIlxyXG4gICAgICAgIGlzRWRpdGluZyhyb3csIGNvbCkgJiZcclxuICAgICAgICAoZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy5sZW5ndGggPT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgICAgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy5sZW5ndGggPD0gNTApXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgaXNFZGl0aW5nKHJvdywgY29sKSAmJlxyXG4gICAgICAgICAgICAoZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy5sZW5ndGggPT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgICAgICAgIChnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lmxlbmd0aCA8PSA1MCAmJlxyXG4gICAgICAgICAgICAgICAgIWV4cGFuZGVkQ2VsbHMuc2l6ZSkpO1xyXG4gICAgICAgICAgZWxzZSB2aWV3TW9kZVxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJjb2wudHlwZVwiPlxyXG4gICAgICAgICAgPCEtLSBUZXh0IElucHV0IC0tPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxyXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2lucHV0J1wiXHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgIChibHVyKT1cImRpc2FibGVFZGl0KHJvdywgY29sKVwiXHJcbiAgICAgICAgICAgIGF1dG9mb2N1c1xyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgIDwhLS0gTnVtYmVyIElucHV0IC0tPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gOFwiXHJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiXHJcbiAgICAgICAgICAgICNudW1iZXJJbnB1dD1cIm5nTW9kZWxcIlxyXG4gICAgICAgICAgICAjbnVtYmVyUmVmXHJcbiAgICAgICAgICAgIChrZXlwcmVzcyk9XCJhbGxvd09ubHlOdW1iZXJzKCRldmVudClcIlxyXG4gICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgcmVxdWlyZWRcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgIChibHVyKT1cImRpc2FibGVFZGl0KHJvdywgY29sKVwiXHJcbiAgICAgICAgICAgIGF1dG9mb2N1c1xyXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJudW1iZXJSZWYuYmx1cigpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogbnVtYmVySW5wdXQuaW52YWxpZFxyXG4gICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICA8IS0tIERhdGUgSW5wdXQgLS0+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSA4XCJcclxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiXHJcbiAgICAgICAgICAgIHR5cGU9XCJkYXRlXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgIChibHVyKT1cImRpc2FibGVFZGl0KHJvdywgY29sKVwiXHJcbiAgICAgICAgICAgIGF1dG9mb2N1c1xyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgICAjZGF0ZUlucHV0PVwibmdNb2RlbFwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAnaXMtaW52YWxpZCc6IGRhdGVJbnB1dC5pbnZhbGlkXHJcbiAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgIDwhLS0gRHJvcGRvd24gLS0+XHJcbiAgICAgICAgICA8IS0tIG5nLXNlbGVjdCBsaWtlIGRyb3Bkb3duIC0tPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2Ryb3Bkb3duJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24gdy0xMDBcIlxyXG4gICAgICAgICAgICAoYmx1cik9XCJkaXNhYmxlRWRpdChyb3csIGNvbClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8IS0tIFRyaWdnZXIgLS0+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtIHRleHQtc3RhcnQgdy0xMDAgdGV4dC1lbGxpcHNpc1wiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgZGF0YS1icy10b2dnbGU9XCJkcm9wZG93blwiXHJcbiAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcclxuICAgICAgICAgICAgICBbc3R5bGUubWluSGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEwXCJcclxuICAgICAgICAgICAgICBkYXRhLWJzLWRpc3BsYXk9XCJzdGF0aWNcIlxyXG4gICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/LnZhbHVlIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy5uYW1lIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXI+IFNlbGVjdCBvcHRpb25zLi4uIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBNZW51IC0tPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1tZW51IHctMTAwIHAtMCBjZWxsLWVkaXRpbmctZHJvcGRvd24tbWVudSByb3VuZGVkLTNcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5zaG93XT1cImlzRWRpdGluZyhyb3csIGNvbClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPCEtLSBTZWFyY2ggLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgcHktMSBlZGl0aW5nLWRyb3Bkb3duLXNlYXJjaC1pbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxyXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVkaXRpbkRyb3Bkb3duU2VhcmNoXCJcclxuICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBPcHRpb25zIC0tPlxyXG4gICAgICAgICAgICAgIDwhLS0gPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjZWxsLWVkaXRpbi1kcm9wZG93blwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IDIwMHB4OyBvdmVyZmxvdzogYXV0b1wiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0TmVzdGVkVmFsdWUocm93LCBjb2wsIG9wdGlvbiwgdHJ1ZSk7IGVkaXRpbmdLZXkgPSBudWxsXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtMiBweS0xIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZGVvcGRvd24taXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBvcHRpb24gb2YgY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgfCBmaWx0ZXIgOiBlZGl0aW5Ecm9wZG93blNlYXJjaDogJ3ZhbHVlJ1xyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0wIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICBbZm9yXT1cImNvbC5maWVsZCArICctJyArIG9wdGlvbi52YWx1ZSB8fCBvcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLnZhbHVlIHx8IG9wdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVNpemU9XCIzNVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tdmlld3BvcnRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAxMjBweFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInB4LTIgcHktMSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGRyb3Bkb3duLWl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9wdGlvbiBvZiBjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgZmlsdGVyIDogZWRpdGluRHJvcGRvd25TZWFyY2ggOiAndmFsdWUnXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldE5lc3RlZFZhbHVlKHJvdywgY29sLCBvcHRpb24sIHRydWUpOyBlZGl0aW5nS2V5ID0gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTAgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZm9yXT1cImNvbC5maWVsZCArICctJyArIChvcHRpb24udmFsdWUgfHwgb3B0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbi52YWx1ZSB8fCBvcHRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInZW1haWwnXCJcclxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxyXG4gICAgICAgICAgICAjZW1haWxNb2RlbD1cIm5nTW9kZWxcIlxyXG4gICAgICAgICAgICAjZW1haWxJbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwiZW1haWxcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgbmFtZT1cInt7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICAgIHBhdHRlcm49XCJeW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLH0kXCJcclxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIGVtYWlsTW9kZWwpXCJcclxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiXHJcbiAgICAgICAgICAgICAgZW1haWxNb2RlbC5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTsgZW1haWxJbnB1dC5ibHVyKClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgYXV0b2ZvY3VzXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAnaXMtaW52YWxpZCc6IGVtYWlsTW9kZWwuaW52YWxpZFxyXG4gICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDwhLS0gRGVmYXVsdCBmYWxsYmFjayAtLT5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAqbmdTd2l0Y2hEZWZhdWx0XHJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxyXG4gICAgICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEwXCJcclxuICAgICAgICAgICAgI3RleHRNb2RlbD1cIm5nTW9kZWxcIlxyXG4gICAgICAgICAgICAjdGV4dElucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgIG5hbWU9XCJ7eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICByZXF1aXJlZFxyXG4gICAgICAgICAgICAoYmx1cik9XCJkaXNhYmxlRWRpdChyb3csIGNvbCwgdGV4dE1vZGVsKVwiXHJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIlxyXG4gICAgICAgICAgICAgIHRleHRNb2RlbC5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTsgdGV4dElucHV0LmJsdXIoKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBhdXRvZm9jdXNcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogdGV4dE1vZGVsLmludmFsaWRcclxuICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBEaXNwbGF5IG1vZGUgLS0+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjdmlld01vZGU+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHctMTAwIG92ZXJmbG93LWhpZGRlblwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJnZXRDZWxsQ2xhc3Nlcyhjb2wsIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKSlcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDwhLS0gRmllbGQgaWNvbiAoZm9yIFRhc2tzIGdyaWQpIC0tPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAqbmdJZj1cImdyaWRUeXBlID09PSAnVGFza3MnICYmIGljb25NYXBbY29sLmZpZWxkXSAmJiAhaXNUb3RhbFJvd1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBtZS0yXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgW2lubGluZVNWR109XCJpY29uTWFwW2NvbC5maWVsZF0ocm93LCBjb2wpXCJcclxuICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDwhLS0g4pyFIEN1c3RvbSBjZWxsIHJlbmRlcmVyIHN1cHBvcnQgLS0+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmNlbGxSZW5kZXJlcjsgZWxzZSBkZWZhdWx0Q2VsbFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgW2NlbGxSZW5kZXJJbml0XT1cImNvbC5jZWxsUmVuZGVyZXJcIlxyXG4gICAgICAgICAgICAgIFtyb3dEYXRhXT1cInJvd1wiXHJcbiAgICAgICAgICAgICAgW2NvbERhdGFdPVwiY29sXCJcclxuICAgICAgICAgICAgICBbY2VsbFZhbHVlXT1cImdldE5lc3RlZFZhbHVlKHJvdywgY29sPy5maWVsZClcIlxyXG4gICAgICAgICAgICAgIChjZWxsRXZlbnQpPVwib25DZWxsRXZlbnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8IS0tIPCfp74gRGVmYXVsdCB0ZXh0LWJhc2VkIGNlbGwgcmVuZGVyaW5nIC0tPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q2VsbD5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICNjZWxsVGV4dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1lbGxpcHNpcyBmbGV4LWdyb3ctMVwiXHJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIlxyXG4gICAgICAgICAgICAgICAgY29sLnR5cGUgPT09ICdkYXRlJ1xyXG4gICAgICAgICAgICAgICAgICA/IChnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkgfCBkYXRlIDogZGF0ZUZvcm1hdClcclxuICAgICAgICAgICAgICAgICAgOiBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkgfHwgJy0nXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwhLS0gTm9ybWFsIGNlbGwgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgY29sLnR5cGUgIT09ICdpbWFnZScgJiZcclxuICAgICAgICAgICAgICAgICAgY29sLmZpZWxkICE9ICdpbWFnZScgJiZcclxuICAgICAgICAgICAgICAgICAgY29sLmZpZWxkICE9ICdpbnZvaWNlLmludm9pY2VfaW1hZ2UnICYmXHJcbiAgICAgICAgICAgICAgICAgICFpc1RvdGFsUm93XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuaXNfYW1vdW50XCI+e3tcclxuICAgICAgICAgICAgICAgICAgY3VycmVuY3lTeW1ib2xcclxuICAgICAgICAgICAgICAgIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAhaXNOZXN0ZWRWYWx1ZUFycmF5KHJvdywgY29sLmZpZWxkKVxyXG4gICAgICAgICAgICAgID8gY29sLnR5cGUgPT09ICdkYXRlJ1xyXG4gICAgICAgICAgICAgICAgPyAoaXNEYXRlKGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKSlcclxuICAgICAgICAgICAgICAgICAgICA/IChnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkgfCBkYXRlIDogZGF0ZUZvcm1hdClcclxuICAgICAgICAgICAgICAgICAgICA6IChnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/LnZhbHVlIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lm5hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgJy0nKSlcclxuICAgICAgICAgICAgICAgIDogKGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8udmFsdWUgfHxcclxuICAgICAgICAgICAgICAgICAgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy5uYW1lIHx8XHJcbiAgICAgICAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAoY29sLmlzX2Ftb3VudCA/IDAgOiAnLScpKVxyXG4gICAgICAgICAgICAgIDogKGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8uWzBdPy5kZXBhcnRtZW50X25hbWUgfHxcclxuICAgICAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8uWzBdPy5yb2xlTmFtZSB8fFxyXG4gICAgICAgICAgICAgICAgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy5bMF0/LmZ1bGxfbmFtZSB8fFxyXG4gICAgICAgICAgICAgICAgJy0nKVxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBUb3RhbCByb3cgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVG90YWxSb3dcIj5cclxuICAgICAgICAgICAgICAgIHt7IGdldFRvdGFsQW1vdW50KGNvbCkgfX1cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBJbnZvaWNlIEltYWdlIC0tPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuZmllbGQgPT0gJ2ludm9pY2UuaW52b2ljZV9pbWFnZSdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyB6b29tOiAwLjdcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7IGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKSB8fCAnQXR0YWNobWVudCcgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZEF0dGNobWVudChnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkpXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2RvY3VtZW50LWljb25zLycgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgZ2V0RXh0ZW50aW9uKGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKSkgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgJy5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIEltYWdlIGNlbGwgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09ICdpbWFnZScgJiYgIWlzVG90YWxSb3dcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0SW1hZ2VQbGFjZWhvbGRlcjtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7IHJvdzogcm93LCBjb2w6IGNvbCB9XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICghY29sPy5jZWxsUmVuZGVyZXIgJiYgc2hvd0NlbGxEZXRhaWxzQm94ICYmXHJcbiAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lmxlbmd0aCA+IDUwICYmIGNvbC50eXBlICE9PSAnaW1hZ2UnKSB8fFxyXG4gICAgICAgICAgICAgIChpc05lc3RlZFZhbHVlQXJyYXkocm93LCBjb2wuZmllbGQpICYmXHJcbiAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lmxlbmd0aCA+IDEpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uIG1zLTIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgIGlzRXhwYW5kZWQocm93LCBjb2wpXHJcbiAgICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tZG93bi5zdmcnXHJcbiAgICAgICAgICAgICAgICA6IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgIHRvZ2dsZUV4cGFuZE9mTG9uZ0NlbGxUZXh0KHJvdywgY29sLCBjb2x1bW5zLCB0cnVlKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAoZGJsY2xpY2spPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwhLS0gRXhwYW5kIC8gQ29sbGFwc2UgaWNvbiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBFeHBhbmRlZCB0ZXh0IC0tPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdy0xMDAgZXhwYW5kZWQtYm94XCJcclxuICAgICAgICAgICpuZ0lmPVwiaXNFeHBhbmRlZChyb3csIGNvbClcIlxyXG4gICAgICAgICAgW3N0eWxlLnpJbmRleF09XCJnZXRaSW5kZXgocm93LCBjb2wpXCJcclxuICAgICAgICAgIHN0eWxlPVwidG9wOiAxMDAlOyBsZWZ0OiAwXCJcclxuICAgICAgICAgIFthdHRyLmlkXT1cIihyb3cuaWQgfHwgcm93Ll9pZCkgKyAnLScgKyAoY29sLmlkIHx8IGNvbC5faWQpXCJcclxuICAgICAgICAgIFtjbGFzcy5pbnZpc2libGVdPVwiIXNob3dEZXRhaWxzQm94XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgZnVsbFRleHRUZW1wbGF0ZTtcclxuICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICByb3c6IHJvdyxcclxuICAgICAgICAgICAgICAgIGNvbDogY29sLFxyXG4gICAgICAgICAgICAgICAgaXNBcnJheTogaXNOZXN0ZWRWYWx1ZUFycmF5KHJvdywgY29sLmZpZWxkKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBIZWFkZXJzIEFjdGlvbiBMaXN0IE9uIGNsaWNraW5nIHRocmVlIGRvdHMgLS0+XHJcblxyXG48bmctdGVtcGxhdGVcclxuICAjY29sdW1uTWVudVxyXG4gIGxldC1jb2w9XCJjb2xcIlxyXG4gIGxldC1pc05lc3RlZFRhYmxlPVwiaXNOZXN0ZWRUYWJsZVwiXHJcbiAgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCJcclxuICBsZXQtc2VjdGlvbj1cInNlY3Rpb25cIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJjb2x1bW4tbWVudSB0aHJlZS1kb3RzLWNvbC1tZW51XCJcclxuICAgIFtjbGFzcy52aXN1YWxseS1oaWRkZW5dPVwiaXNNZW51ZUhpZGRlblwiXHJcbiAgICAqbmdJZj1cImFjdGl2ZUNvbCAmJiAhaXNUaHJlZURvdHNGaWx0ZXJPcGVuXCJcclxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZHJvcGRvd25zQmFja2dyb3VuZENvbG9yXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgW3N0eWxlLmNvbG9yXT1cImhlYWRlclRleHRDb2xvclwiXHJcbiAgPlxyXG4gICAgPCEtLSBTb3J0IEFzY2VuZGluZyAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJib3JkZXItYmVsb3cgcGItMlwiIFtjbGFzcy5kaXNhYmxlLXNvcnRpbmddPVwiIWNvbC5pc19zb3J0YWJsZVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm11dGVkLXRleHQgZnMtN1wiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEycHhcIj5Tb3J0PC9zcGFuPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIGNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dBc2NlbmRpbmcgJiZcclxuICAgICAgICAgIChzb3J0aW5nQ29uZmlnPy5maWVsZCAhPSBjb2wuZmllbGQgfHxcclxuICAgICAgICAgICAgc29ydGluZ0NvbmZpZz8ub3JkZXJfYnkgPT0gJ2Rlc2MnKVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcclxuICAgICAgICAoY2xpY2spPVwic29ydEFzYyhhY3RpdmVDb2wpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LXVwLnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICBTb3J0IEFzY2VuZGluZ1xyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gU29ydCBEZXNjZW5kaW5nIC0tPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIGNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dEZXNjZW5kaW5nICYmXHJcbiAgICAgICAgICAoc29ydGluZ0NvbmZpZz8uZmllbGQgIT0gY29sLmZpZWxkIHx8XHJcbiAgICAgICAgICAgIHNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09ICdhc2MnKVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcclxuICAgICAgICAoY2xpY2spPVwic29ydERlc2MoYWN0aXZlQ29sKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1kb3duLnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICBTb3J0IERlc2NlbmRpbmdcclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHNvcnRpbmdDb25maWc/LmZpZWxkID09PSBjb2wuZmllbGQgJiZcclxuICAgICAgICAgIChzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PT0gJ2FzYycgfHxcclxuICAgICAgICAgICAgc29ydGluZ0NvbmZpZz8ub3JkZXJfYnkgPT09ICdkZXNjJylcclxuICAgICAgICBcIlxyXG4gICAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInJlc2V0U29ydChhY3RpdmVDb2wpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1jb3VudGVyY2xvY2t3aXNlLnN2ZydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIFJlc2V0IFNvcnRcclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJweS0yIGJvcmRlci1iZWxvdyB0aHJlZS1kb3RzLWZpbHRlclwiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93RmlsdGVyXCJcclxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW0gdGhyZWUtZG90cy1maWx0ZXJcIlxyXG4gICAgICAgIChjbGljayk9XCJvcGVuRmlsdGVyb25UaHJlZURvdHNDbGljayhjb2wpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2ZpbHRlci0yLnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICBGaWx0ZXJcclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicHktMiBib3JkZXItYmVsb3dcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtdXRlZC10ZXh0IGZzLTdcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMnB4XCI+UGluPC9zcGFuPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93UGlubGVmdCAmJiBjb2w/LnBpbm5lZCAhPT0gJ2xlZnQnXCJcclxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxyXG4gICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgIHVwZGF0ZUNvbHVtblBpbkluU291cmNlQnlGaWVsZChcclxuICAgICAgICAgICAgYWN0aXZlQ29sLFxyXG4gICAgICAgICAgICAnbGVmdCcsXHJcbiAgICAgICAgICAgIGlzTmVzdGVkVGFibGUsXHJcbiAgICAgICAgICAgIGNvbHVtbnNcclxuICAgICAgICAgIClcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLWxlZnQuc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICA+PC9zcGFuXHJcbiAgICAgICAgPlBpbiBMZWZ0XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICBjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93UGlucmlnaHQgJiYgY29sPy5waW5uZWQgIT09ICdyaWdodCdcclxuICAgICAgICBcIlxyXG4gICAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgdXBkYXRlQ29sdW1uUGluSW5Tb3VyY2VCeUZpZWxkKFxyXG4gICAgICAgICAgICBhY3RpdmVDb2wsXHJcbiAgICAgICAgICAgICdyaWdodCcsXHJcbiAgICAgICAgICAgIGlzTmVzdGVkVGFibGUsXHJcbiAgICAgICAgICAgIGNvbHVtbnNcclxuICAgICAgICAgIClcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLXJpZ2h0LnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgID48L3NwYW5cclxuICAgICAgICA+UGluIFJpZ2h0XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwiY29sPy5waW5uZWRcIlxyXG4gICAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgdXBkYXRlQ29sdW1uUGluSW5Tb3VyY2VCeUZpZWxkKFxyXG4gICAgICAgICAgICBhY3RpdmVDb2wsXHJcbiAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgIGlzTmVzdGVkVGFibGUsXHJcbiAgICAgICAgICAgIGNvbHVtbnNcclxuICAgICAgICAgIClcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2xheW91dC10aHJlZS1jb2x1bW5zLnN2ZydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICA+PC9zcGFuXHJcbiAgICAgICAgPlVucGluXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cImNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dBdXRvc2l6ZVRoaXNDb2x1bW5cIlxyXG4gICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxyXG4gICAgICAoY2xpY2spPVwiYXV0b3NpemVDb2x1bW4oYWN0aXZlQ29sKVwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1leHBhbmQtdmVydGljYWwuc3ZnJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJtZS0yXCJcclxuICAgICAgPjwvc3Bhbj5cclxuICAgICAgQXV0b3NpemUgVGhpcyBDb2x1bW5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gQXV0b3NpemUgQWxsIENvbHVtbnMgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwiY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd0F1dG9zaXplQWxsQ29sdW1uc1wiXHJcbiAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgIChjbGljayk9XCJhdXRvc2l6ZUFsbENvbHVtbnMoKVwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1hbmdsZS1leHBhbmQuc3ZnJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgID48L3NwYW5cclxuICAgICAgPkF1dG9zaXplIEFsbCBDb2x1bW5zXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEdyb3VwIEJ5IC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cInNob3dSb3dzR3JvdXBpbmdcIlxyXG4gICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxyXG4gICAgICAoY2xpY2spPVwiZ3JvdXBCeShhY3RpdmVDb2wpXCJcclxuICAgICAgW2NsYXNzLmRpc2FibGUtc29ydGluZ109XCIhY29sLmlzX2dyb3VwYWJsZVwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9kaWFncmFtLTMuc3ZnJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICAgIEdyb3VwIGJ5IHt7IGNvbC5oZWFkZXIgfX1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gQ2hvb3NlIENvbHVtbnMgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwiY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd0Nob3NlQ29sdW1uc1wiXHJcbiAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgIChjbGljayk9XCJjaG9vc2VDb2x1bW5zKClcIlxyXG4gICAgPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvdWktY2hlY2tzLWdyaWQuc3ZnJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICAgIENob29zZSBDb2x1bW5zXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFJlc2V0IENvbHVtbnMgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwiY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd1Jlc2V0Q29sdW1uc1wiXHJcbiAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgIChjbGljayk9XCJyZXNldENvbHVtbnMoKVwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LWNvdW50ZXJjbG9ja3dpc2Uuc3ZnJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgID48L3NwYW5cclxuICAgICAgPlJlc2V0IENvbHVtbnNcclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXZcclxuICAgIEBzbGlkZVRvZ2dsZVxyXG4gICAgKm5nSWY9XCJpc1RocmVlRG90c0ZpbHRlck9wZW5cIlxyXG4gICAgY2xhc3M9XCJ0aHJlZS1kb3RzLWNvbC1tZW51IHBvc2l0aW9uLXJlbGF0aXZlXCJcclxuICAgIFtzdHlsZS5yaWdodC5weF09XCJzZWN0aW9uID09ICdyaWdodCcgPyBudWxsIDogY29sLndpZHRoIC0gNDVcIlxyXG4gICAgW2NsYXNzLnZpc3VhbGx5LWhpZGRlbl09XCJpc01lbnVlSGlkZGVuXCJcclxuICA+XHJcbiAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyTWVudTsgY29udGV4dDogeyBjb2w6IGNvbCB9XCJcclxuICAgID48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gRmlsdGVyIE1lbnVlIC0tPlxyXG48bmctdGVtcGxhdGUgI2ZpbHRlck1lbnUgbGV0LWNvbD1cImNvbFwiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiZmlsdGVyLW1lbnUtY29udGFpbmVyIGZpbHRlci1tZW51XCJcclxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZHJvcGRvd25zQmFja2dyb3VuZENvbG9yXCJcclxuICA+XHJcbiAgICA8IS0tIERyb3Bkb3duIFR5cGUgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT09ICdkcm9wZG93bic7IGVsc2UgdGV4dEZpbHRlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWRyb3Bkb3duLXNlY3Rpb24gcC0xXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxyXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImFkZEZpbHRlckNvbHVtbklucHV0XCJcclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0xIG10LTIgcHMtNCBtcy0xXCI+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNBbGxTaWRlRmlsdGVyT3B0aW9uc1NlbGVjdGVkKGNvbClcIlxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdEFsbFNpZGVGaWx0ZXJzKGNvbCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIGlkPVwic2VsZWN0QWxsX3t7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cInNlbGVjdEFsbF97eyBjb2wuZmllbGQgfX1cIj5cclxuICAgICAgICAgICAgU2VsZWN0IEFsbFxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tb3B0aW9ucyBwcy0xXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBtYi0xXCJcclxuICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgbGV0IG9wdGlvbiBvZiBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXHJcbiAgICAgICAgICAgICAgICB8IGZpbHRlciA6IGFkZEZpbHRlckNvbHVtbklucHV0IDogJ3ZhbHVlJztcclxuICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWQ7XHJcbiAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleFxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgW2lkXT1cImlcIlxyXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cIlxyXG4gICAgICAgICAgICAgICAgY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhvcHRpb24/LmlkID8/IG9wdGlvbj8uX2lkID8/IG9wdGlvbilcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0aW9uSW5GaWx0ZXIob3B0aW9uKVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgZnctc2VtaWJvbGRcIiBbZm9yXT1cImlcIj5cclxuICAgICAgICAgICAgICB7eyBvcHRpb24/LnZhbHVlID8/IG9wdGlvbj8ubmFtZSA/PyBvcHRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XHJcbiAgICAgICAgICAgICAgaXRlbVNpemU9XCIzMlwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItdmlld3BvcnRcIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAxMjBweFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgbWItMVwiXHJcbiAgICAgICAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cIlxyXG4gICAgICAgICAgICAgICAgICBsZXQgb3B0aW9uIG9mIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5jb2x1bW5fZHJvcGRvd25fdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICB8IGZpbHRlciA6IGFkZEZpbHRlckNvbHVtbklucHV0IDogJ3ZhbHVlJztcclxuICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICBbaWRdPVwib3B0aW9uPy5pZCA/PyBvcHRpb24/Ll9pZCA/PyBvcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuaGFzKG9wdGlvbj8uaWQgPz8gb3B0aW9uPy5faWQgPz8gb3B0aW9uKVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdGlvbkluRmlsdGVyKG9wdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGZ3LXNlbWlib2xkXCJcclxuICAgICAgICAgICAgICAgICAgW2Zvcl09XCJvcHRpb24/LmlkID8/IG9wdGlvbj8uX2lkID8/IG9wdGlvblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbj8udmFsdWUgPz8gb3B0aW9uPy5uYW1lID8/IG9wdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gVGV4dCBGaWx0ZXIgU2VjdGlvbiAtLT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjdGV4dEZpbHRlcj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci10ZXh0LXNlY3Rpb25cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0yXCI+XHJcbiAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc20gY3VzdG9tLXNlbGVjdFwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlyc3RDb25kaXRpb25cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZSAhPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNvbnRhaW5cIj5Db250YWluczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkb2VzX25vdF9jb250YWluXCI+RG9lcyBOb3QgQ29udGFpbjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5TdGFydHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkVuZHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlID09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJub3RfZXF1YWxcIj5Ob3QgRXF1YWw8L29wdGlvbj5cclxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5CZWZvcmU8L29wdGlvbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBbdHlwZV09XCJjb2wudHlwZSA9PSAnc3RyaW5nJyA/ICd0ZXh0JyA6IGNvbC50eXBlXCJcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBtYi0zXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVmFsdWVcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJmaXJzdFZhbHVlXCJcclxuICAgICAgICAgICNmaWx0ZXJNZW51ZVRleHRjaElucHV0XHJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxyXG4gICAgICAgIC8+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTMgZC1mbGV4IGZsZXgtcm93XCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBtLTAgY29sLTQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBmaWx0ZXItcmFkaW8taW5wdXRzXCJcclxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgIG5hbWU9XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICB2YWx1ZT1cImFuZFwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJhbmRfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cImNkci5kZXRlY3RDaGFuZ2VzKClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cImFuZF97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAgID5BTkQ8L2xhYmVsXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgbS0wIGNvbC00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTEgZ2FwLTFcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgZmlsdGVyLXJhZGlvLWlucHV0c1wiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJvclwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJvcl97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2RyLmRldGVjdENoYW5nZXMoKVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCIgZm9yPVwib3Jfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgICA+T1I8L2xhYmVsXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgbS0wIGNvbC00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTEgZ2FwLTFcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgZmlsdGVyLXJhZGlvLWlucHV0c1wiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJub25lXCJcclxuICAgICAgICAgICAgICBpZD1cIm5vbmVfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cImNkci5kZXRlY3RDaGFuZ2VzKClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cIm5vbmVfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgICA+Tm9uZTwvbGFiZWxcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBAc2xpZGVUb2dnbGUgKm5nSWY9XCJmaXJzdFZhbHVlICYmIGNvbmRpdGlvbiAhPSAnbm9uZSdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTJcIj5cclxuICAgICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc20gY3VzdG9tLXNlbGVjdFwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWNvbmRDb25kaXRpb25cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgIT09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNvbnRhaW5cIj5Db250YWluczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRvZXNfbm90X2NvbnRhaW5cIj5Eb2VzIE5vdCBDb250YWluPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHM8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5TdGFydHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+RW5kcyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlID09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibm90X2VxdWFsXCI+Tm90IEVxdWFsPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBbdHlwZV09XCJjb2wudHlwZSA9PSAnc3RyaW5nJyA/ICd0ZXh0JyA6IGNvbC50eXBlXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTNcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlY29uZCBWYWx1ZVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2Vjb25kVmFsdWVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDwhLS0gQWN0aW9ucyAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXQtMlwiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFjdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMhLnNpemUgJiYgIWZpcnN0VmFsdWVcIlxyXG4gICAgICAgIFtjbGFzcy5wZS1ub25lXT1cIiFjdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMhLnNpemUgJiYgIWZpcnN0VmFsdWVcIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxyXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzMHB4XCJcclxuICAgICAgICAoY2xpY2spPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcclxuICAgICAgPlxyXG4gICAgICAgIEFwcGx5XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzBweFwiXHJcbiAgICAgICAgKGNsaWNrKT1cInJlc2V0U2lkZUZpbHRlcihjb2wpXCJcclxuICAgICAgPlxyXG4gICAgICAgIFJlc2V0XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFNpZGUgTWVudWUgLS0+XHJcblxyXG48IS0tIENvbHVtbiBQYW5uZWwgLyBQaXZvdCBNb2RlIC8gU2VhcmNoaW5nIC0tPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjb2x1bW5QYW5uZWw+XHJcbiAgPGRpdiBjbGFzcz1cImNvbHVtbi1wYW5lbC1oZWFkZXJcIj5cclxuICAgIDwhLS0gUGl2b3QgVG9nZ2xlIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yIHBpdm90LW1vZGUgcHgtNSBtcy0yIGQtbm9uZVwiXHJcbiAgICA+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCJcclxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgIGlkPVwicGl2b3RUb2dnbGVcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwicGl2b3RNb2RlXCJcclxuICAgICAgLz5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cInBpdm90VG9nZ2xlXCI+UGl2b3QgTW9kZTwvbGFiZWw+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFNlbGVjdCBBbGwgJiBTZWFyY2ggLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yIHB4LTMgbXQtM1wiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXIgbWUtMlwiICpuZ0lmPVwic2hvd0NvbHVtbnNHcm91cGluZ1wiPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1pY29uIGRhdGEtZ3JpZC1zdmctaWNvblwiXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICBhY2NvcmRpb25TdGF0ZSA9PT0gJ2FsbCdcclxuICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tZG93bi5zdmcnXHJcbiAgICAgICAgICAgICAgOiBhY2NvcmRpb25TdGF0ZSA9PT0gJ3NvbWUnXHJcbiAgICAgICAgICAgICAgPyBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9kYXNoLnN2ZydcclxuICAgICAgICAgICAgICA6IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBbGxBY2NvcmRpb25zKClcIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtMlwiXHJcbiAgICAgICAgW2NoZWNrZWRdPVwiYWxsQ29sdW1uc1NlbGVjdGVkKClcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlQWxsQ29sdW1uc1Zpc2liaWxpdHkoKVwiXHJcbiAgICAgIC8+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGNvbHVtbnMuLi5cIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwiY29sdW1uU2VhcmNoXCJcclxuICAgICAgLz5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gU2VwYXJhdG9yIC0tPlxyXG4gICAgPGhyIGNsYXNzPVwibXktMlwiIC8+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFJpZ2h0IENvbHVtbnMgTWVudWUgLS0+XHJcblxyXG48IS0tIENvbHVtbiBQYW5lbCBJdGVtIFRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGUgI2NvbHVtblBhbmVsSXRlbSBsZXQtY29sPVwiY29sXCI+XHJcbiAgPCEtLSBHcm91cCBDb2x1bW4gLS0+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5jaGlsZHJlbj8ubGVuZ3RoXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLWdyb3VwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXIgbWUtMlwiPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1pY29uIGRhdGEtZ3JpZC1zdmctaWNvblwiXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBbY2xhc3Mucm90YXRlXT1cImNvbC5leHBhbmRlZFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiY29sLmV4cGFuZGVkID0gIWNvbC5leHBhbmRlZFwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCJcclxuICAgICAgICBbaWRdPVwiJ2dyb3VwXycgKyBjb2wuaGVhZGVyXCJcclxuICAgICAgICBbY2hlY2tlZF09XCJpc0NvbHVtblZpc2libGUoY29sKVwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVHcm91cFZpc2liaWxpdHkoY29sKVwiXHJcbiAgICAgIC8+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9ncmlkLTN4Mi1nYXAuc3ZnJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG1lLTJcIlxyXG4gICAgICA+PC9zcGFuPlxyXG4gICAgICA8bGFiZWxcclxuICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMCB3LTEwMFwiXHJcbiAgICAgICAgW2Zvcl09XCInZ3JvdXBfJyArIGNvbC5oZWFkZXJcIlxyXG4gICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPnt7IGNvbC5oZWFkZXIgfX08L3NwYW4+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJjb2wuZXhwYW5kZWRcIiBjbGFzcz1cInBzLTRcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgY29sLmNoaWxkcmVuOyB0cmFja0J5OiB0cmFja0J5RmllbGRcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtblBhbmVsSXRlbTsgY29udGV4dDogeyBjb2w6IGNoaWxkIH1cIlxyXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPCEtLSBMZWFmIENvbHVtbiAtLT5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbC5jaGlsZHJlbj8ubGVuZ3RoXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibWUtMlwiIHN0eWxlPVwid2lkdGg6IDEuNXJlbVwiPjwvc3Bhbj5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtMlwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wuaXNfdmlzaWJsZVwiXHJcbiAgICAgICAgW2lkXT1cIidjb2xfJyArIGNvbC5maWVsZFwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJvblNpZGVNZW51Q29sdW1uc1Zpc2liaWxpdHlDaGFuZ2UoKVwiXHJcbiAgICAgIC8+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9ncmlkLTN4Mi1nYXAuc3ZnJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG1lLTJcIlxyXG4gICAgICA+PC9zcGFuPlxyXG4gICAgICA8bGFiZWxcclxuICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMCB3LTEwMFwiXHJcbiAgICAgICAgW2Zvcl09XCInY29sXycgKyBjb2wuZmllbGRcIlxyXG4gICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPnt7IGNvbC5oZWFkZXIgfX08L3NwYW4+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gQ29sdW1ucyBTaWRlIEZpbHRlciAtLT5cclxuPG5nLXRlbXBsYXRlICNzaWRlRmlsdGVycz5cclxuICA8ZGl2IGNsYXNzPVwicHktMyBweC0yIHBlLTMgaC0xMDBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyIG1lLTJcIiAqbmdJZj1cInNob3dDb2x1bW5zR3JvdXBpbmdcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtaWNvbiBkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgZmlsdGVyQWNjb3JkaW9uU3RhdGUgPT09ICdhbGwnXHJcbiAgICAgICAgICAgICAgPyBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLWRvd24uc3ZnJ1xyXG4gICAgICAgICAgICAgIDogZmlsdGVyQWNjb3JkaW9uU3RhdGUgPT09ICdzb21lJ1xyXG4gICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZGFzaC5zdmcnXHJcbiAgICAgICAgICAgICAgOiBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWxsRmlsdGVyQWNjb3JkaW9ucygpXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cImNvbHVtblNlYXJjaFwiXHJcbiAgICAgIC8+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIHNpZGUtZmlsdGVyLWNvbHVtbnMtd3JhcHBlclwiXHJcbiAgICAgIHN0eWxlPVwiaGVpZ2h0OiBjYWxjKDEwMCUgLSA3MHB4KTsgc2Nyb2xsYmFyLXdpZHRoOiB0aGluXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgbGV0IGNvbCBvZiBjb2x1bW5zIHwgZmlsdGVyIDogY29sdW1uU2VhcmNoIDogJ2hlYWRlcic7XHJcbiAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RmllbGRcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJQYW5uZWxJdGVtOyBjb250ZXh0OiB7IGNvbDogY29sIH1cIlxyXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZmlsdGVyUGFubmVsSXRlbSBsZXQtY29sPVwiY29sXCI+XHJcbiAgPCEtLSBHcm91cCBDb2x1bW4gLS0+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5jaGlsZHJlbj8ubGVuZ3RoXCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiY29sdW1uLWdyb3VwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiXHJcbiAgICAgICpuZ0lmPVwiY29sLnR5cGUgIT09ICdpbWFnZSdcIlxyXG4gICAgPlxyXG4gICAgICA8IS0tIENoZXZyb24gdG9nZ2xlIC0tPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXIgbWUtMlwiPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1pY29uIGRhdGEtZ3JpZC1zdmctaWNvblwiXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBbY2xhc3Mucm90YXRlXT1cImNvbC5leHBhbmRlZEZpbHRlclwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiY29sLmV4cGFuZGVkRmlsdGVyID0gIWNvbC5leHBhbmRlZEZpbHRlclwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgPCEtLSBHcm91cCBsYWJlbCB0b2dnbGUgLS0+XHJcbiAgICAgIDxsYWJlbFxyXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0wIHctMTAwXCJcclxuICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXHJcbiAgICAgICAgKGNsaWNrKT1cImNvbC5leHBhbmRlZEZpbHRlciA9ICFjb2wuZXhwYW5kZWRGaWx0ZXJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1ib2xkIHRleHQtdHJ1bmNhdGVcIlxyXG4gICAgICAgICAgPnt7IGNvbC5oZWFkZXIgfX1cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5IG1zLTFcIlxyXG4gICAgICAgICAgICAqbmdJZj1cImNvbD8ucXVlcnk/Ll9pZHM/Lmxlbmd0aCB8fCBjb2w/LnF1ZXJ5Py5fZmlyc3RfdmFsdWVcIlxyXG4gICAgICAgICAgICA+Kjwvc3BhblxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gQ2hpbGRyZW4gY29sdW1ucyAtLT5cclxuICAgIDxkaXYgKm5nSWY9XCJjb2wuZXhwYW5kZWRGaWx0ZXJcIiBjbGFzcz1cInBzLTRcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgY29sLmNoaWxkcmVuOyB0cmFja0J5OiB0cmFja0J5RmllbGRcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlclBhbm5lbEl0ZW07IGNvbnRleHQ6IHsgY29sOiBjaGlsZCB9XCJcclxuICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDwhLS0gTGVhZiBDb2x1bW4gLS0+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2wuY2hpbGRyZW4/Lmxlbmd0aFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiICpuZ0lmPVwiY29sLnR5cGUgIT09ICdpbWFnZSdcIj5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBjbGFzcz1cIm1lLTIgZmlsdGVyLWljb24td3JhcHBlciBtZS0yXCJcclxuICAgICAgICAoY2xpY2spPVwiY29sLmV4cGFuZGVkRmlsdGVyID0gIWNvbC5leHBhbmRlZEZpbHRlclwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtaWNvbiBkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgW2NsYXNzLnJvdGF0ZV09XCJjb2wuZXhwYW5kZWRGaWx0ZXJcIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgIDxsYWJlbFxyXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0wIHctMTAwXCJcclxuICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXHJcbiAgICAgICAgKGNsaWNrKT1cImNvbC5leHBhbmRlZEZpbHRlciA9ICFjb2wuZXhwYW5kZWRGaWx0ZXJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlIGZ3LWJvbGRcIj57eyBjb2wuaGVhZGVyIH19PC9zcGFuPlxyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBTaG93IGZpbHRlciB3aGVuIGV4cGFuZGVkIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cImNvbC5leHBhbmRlZEZpbHRlclwiIGNsYXNzPVwicHMtNCBwZS0zXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGVOZXN0ZWRGaWx0ZXI7IGNvbnRleHQ6IHsgY29sOiBjb2wgfVwiXHJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBTaWRlIE5lc3RlZCBGaWx0ZXJzIC0tPlxyXG48bmctdGVtcGxhdGUgI3NpZGVOZXN0ZWRGaWx0ZXIgbGV0LWNvbD1cImNvbFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgIDwhLS0gRHJvcGRvd24gVHlwZSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PT0gJ2Ryb3Bkb3duJzsgZWxzZSB0ZXh0RmlsdGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwLTFcIj5cclxuICAgICAgICA8IS0tIFNlYXJjaCAtLT5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBtYi0yXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2lkZU5lc3RlZEZpbHRlclNlYXJjaFwiXHJcbiAgICAgICAgLz5cclxuXHJcbiAgICAgICAgPCEtLSBTZWxlY3QgQWxsIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTEgbXMtMVwiPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cIlxyXG4gICAgICAgICAgICAgIGNvbC5xdWVyeT8uX2lkcz8ubGVuZ3RoID09IGNvbD8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlPy5sZW5ndGhcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGxTaWRlRmlsdGVycyhjb2wsICRldmVudClcIlxyXG4gICAgICAgICAgICBpZD1cInNlbGVjdEFsbF97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJzZWxlY3RBbGxfe3sgY29sLmZpZWxkIH19XCI+XHJcbiAgICAgICAgICAgIFNlbGVjdCBBbGxcclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gT3B0aW9ucyAtLT5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1vcHRpb25zXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBtYi0xIG1zLTFcIlxyXG4gICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICBsZXQgb3B0aW9uIG9mIGNvbD8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXHJcbiAgICAgICAgICAgICAgICB8IGZpbHRlciA6IHNpZGVOZXN0ZWRGaWx0ZXJTZWFyY2ggOiAndmFsdWUnXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uXCJcclxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJcclxuICAgICAgICAgICAgICAgIGNvbC5xdWVyeT8uX2lkcz8uaW5jbHVkZXMob3B0aW9uPy5faWQgfHwgb3B0aW9uPy5pZCB8fCBvcHRpb24pXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uT3B0aW9uVG9nZ2xlKGNvbCwgb3B0aW9uKVwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJvcHRpb25fe3sgY29sLmZpZWxkIH19X3t7XHJcbiAgICAgICAgICAgICAgICBvcHRpb24/LmlkIHx8IG9wdGlvbj8uX2lkIHx8IG9wdGlvblxyXG4gICAgICAgICAgICAgIH19XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCJcclxuICAgICAgICAgICAgICBbZm9yXT1cIlxyXG4gICAgICAgICAgICAgICAgJ29wdGlvbl8nICtcclxuICAgICAgICAgICAgICAgIGNvbC5maWVsZCArXHJcbiAgICAgICAgICAgICAgICAnXycgK1xyXG4gICAgICAgICAgICAgICAgKG9wdGlvbj8uaWQgfHwgb3B0aW9uPy5faWQgfHwgb3B0aW9uKVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7eyBvcHRpb24udmFsdWUgfHwgb3B0aW9uIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydFxyXG4gICAgICAgICAgICBpdGVtU2l6ZT1cIjMyXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi12aWV3cG9ydFwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAxMjBweFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgbWItMSBtcy0xXCJcclxuICAgICAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cIlxyXG4gICAgICAgICAgICAgICAgbGV0IG9wdGlvbiBvZiBjb2w/LmNvbHVtbl9kcm9wZG93bl92YWx1ZVxyXG4gICAgICAgICAgICAgICAgICB8IGZpbHRlciA6IHNpZGVOZXN0ZWRGaWx0ZXJTZWFyY2ggOiAndmFsdWUnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uXCJcclxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIlxyXG4gICAgICAgICAgICAgICAgICBjb2wucXVlcnk/Ll9pZHM/LmluY2x1ZGVzKG9wdGlvbj8uX2lkIHx8IG9wdGlvbj8uaWQgfHwgb3B0aW9uKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25PcHRpb25Ub2dnbGUoY29sLCBvcHRpb24pXCJcclxuICAgICAgICAgICAgICAgIGlkPVwib3B0aW9uX3t7IGNvbC5maWVsZCB9fV97e1xyXG4gICAgICAgICAgICAgICAgICBvcHRpb24/LmlkIHx8IG9wdGlvbj8uX2lkIHx8IG9wdGlvblxyXG4gICAgICAgICAgICAgICAgfX1cIlxyXG4gICAgICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCJcclxuICAgICAgICAgICAgICAgIFtmb3JdPVwiXHJcbiAgICAgICAgICAgICAgICAgICdvcHRpb25fJyArXHJcbiAgICAgICAgICAgICAgICAgIGNvbC5maWVsZCArXHJcbiAgICAgICAgICAgICAgICAgICdfJyArXHJcbiAgICAgICAgICAgICAgICAgIChvcHRpb24/LmlkIHx8IG9wdGlvbj8uX2lkIHx8IG9wdGlvbilcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3sgb3B0aW9uLnZhbHVlIHx8IG9wdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcblxyXG5cclxuICAgICAgICA8IS0tIEFjdGlvbnMgLS0+XHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yIG10LTJcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAyMnB4O1wiXHJcbiAgICAgICAgKGNsaWNrKT1cImFwcGx5U2lkZUZpbHRlcihjb2wpXCJcclxuICAgICAgPlxyXG4gICAgICAgIEFwcGx5XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCIgXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDIycHg7XCJcclxuICAgICAgICAoY2xpY2spPVwicmVzZXRTaWRlRmlsdGVyKGNvbClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgUmVzZXRcclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj4gLS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBUZXh0IEZpbHRlciBTZWN0aW9uIC0tPlxyXG4gICAgPG5nLXRlbXBsYXRlICN0ZXh0RmlsdGVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXRleHQtc2VjdGlvblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTJcIj5cclxuICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sLnF1ZXJ5LmZpcnN0X2NvbmRpdGlvblwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSAhPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNvbnRhaW5cIj5Db250YWluczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZG9lc19ub3RfY29udGFpblwiPkRvZXMgTm90IENvbnRhaW48L29wdGlvbj5cclxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHM8L29wdGlvbj5cclxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+U3RhcnRzIFdpdGg8L29wdGlvbj5cclxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5FbmRzIFdpdGg8L29wdGlvbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJub3RfZXF1YWxcIj5Ob3QgRXF1YWw8L29wdGlvbj5cclxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5CZWZvcmU8L29wdGlvbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBbdHlwZV09XCJjb2wudHlwZSA9PSAnZGF0ZScgPyAnZGF0ZScgOiAndGV4dCdcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTNcIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJWYWx1ZVwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbCEucXVlcnkhLmZpcnN0X3ZhbHVlXCJcclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMyBkLWZsZXggZmxleC1yb3cgbXV0ZWRcIlxyXG4gICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDE0cHhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIG0tMCBjb2wtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGZpbHRlci1yYWRpby1pbnB1dHNcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgICAgbmFtZT1cImNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2whLnF1ZXJ5LmNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJhbmRcIlxyXG4gICAgICAgICAgICAgIGlkPVwiYW5kX3t7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCIgZm9yPVwiYW5kX3t7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAgICAgPkFORDwvbGFiZWxcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBtLTAgY29sLTQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBmaWx0ZXItcmFkaW8taW5wdXRzXCJcclxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgIG5hbWU9XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sIS5xdWVyeS5jb25kaXRpb25cIlxyXG4gICAgICAgICAgICAgIHZhbHVlPVwib3JcIlxyXG4gICAgICAgICAgICAgIGlkPVwib3Jfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIiBmb3I9XCJvcl97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAgID5PUjwvbGFiZWxcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBtLTAgY29sLTQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBmaWx0ZXItcmFkaW8taW5wdXRzXCJcclxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgIG5hbWU9XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sIS5xdWVyeS5jb25kaXRpb25cIlxyXG4gICAgICAgICAgICAgIHZhbHVlPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJub25lX3t7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibm5vbmVtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiXHJcbiAgICAgICAgICAgICAgZm9yPVwibm9uZV97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAgID5Ob25lPC9sYWJlbFxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdJZj1cImNvbD8ucXVlcnk/LmZpcnN0X3ZhbHVlICYmIGNvbD8ucXVlcnk/LmNvbmRpdGlvbiAhPT0gJ25vbmUnXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0yXCI+XHJcbiAgICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbCEucXVlcnkuc2Vjb25kX2NvbmRpdGlvblwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgIT09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNvbnRhaW5cIj5Db250YWluczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRvZXNfbm90X2NvbnRhaW5cIj5Eb2VzIE5vdCBDb250YWluPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHM8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5TdGFydHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+RW5kcyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSAnZGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJub3RfZXF1YWxcIj5Ob3QgRXF1YWw8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkFmdGVyPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+QmVmb3JlPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIFt0eXBlXT1cImNvbC50eXBlID09ICdkYXRlJyA/ICdkYXRlJyA6ICd0ZXh0J1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBtYi0zXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWNvbmQgVmFsdWVcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbCEucXVlcnkuc2Vjb25kX3ZhbHVlXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cImhlaWdodDogMjJweDtcIiAoY2xpY2spPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCI+YXBwbHk8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJoZWlnaHQ6IDIycHg7XCIgKGNsaWNrKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiPnJlc2V0PC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0yIGJvcmRlci10b3BcIlxyXG4gICAgICBzdHlsZT1cImhlaWdodDogMzhweFwiXHJcbiAgICA+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IDMwcHhcIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBidG4tbGlnaHQgYm9yZGVyIHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0xIGJ0bi1saWdodFwiXHJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgcmVtb3ZlU2lkZUZpbHRlcihjb2wpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuPkNsZWFyPC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIHN0eWxlPVwibWF4LWhlaWdodDogMzBweFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTFcIlxyXG4gICAgICAgIChjbGljayk9XCJhcHBseVNpZGVGaWx0ZXIoY29sKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi10b3A6IC0xcHhcIj5BcHBseTwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gQ2VudHIgT3ZlcmxheSBmb3Igc2hvd2luZyB0aGUgY2hvc2UgY29sdW1ucyAtLT5cclxuXHJcbjxkaXYgKm5nSWY9XCJzaG93Q29sdW1uUGFuZWxcIiBjbGFzcz1cImN1c3RvbS1tb2RhbC1vdmVybGF5XCI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJjdXN0b20tbW9kYWwtY29udGVudFwiXHJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImRyb3Bkb3duc0JhY2tncm91bmRDb2xvclwiXHJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICA+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9kYWxDb2x1bW5QYW5uZWxcIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tIFRoZSBleGlzdGluZyBuZy10ZW1wbGF0ZSB5b3UgcHJvdmlkZWQgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjbW9kYWxDb2x1bW5QYW5uZWw+XHJcbiAgPGRpdiBjbGFzcz1cImNvbHVtbi1wYW5lbC1oZWFkZXJcIj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHB4LTIgcHMtMyByb3VuZGVkLXRvcC0yIG1vZGEtaGVhZGVyXCJcclxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCI0OFwiXHJcbiAgICA+XHJcbiAgICAgIENob29zZSBDb2x1bW5zXHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlclwiIChjbGljayk9XCJjbG9zZU1vZGFsQ29sdW1uUGFuZWwoKVwiXHJcbiAgICAgICAgPjxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3guc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgID48L3NwYW5cclxuICAgICAgPjwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGhyIGNsYXNzPVwibXktMFwiIC8+XHJcbiAgICA8ZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBweC0yIHBlLTNcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cIjQ4XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyIG1lLTJcIiAqbmdJZj1cInNob3dDb2x1bW5zR3JvdXBpbmdcIj5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICBhY2NvcmRpb25TdGF0ZSA9PT0gJ2FsbCdcclxuICAgICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcclxuICAgICAgICAgICAgICAgIDogYWNjb3JkaW9uU3RhdGUgPT09ICdzb21lJ1xyXG4gICAgICAgICAgICAgICAgPyBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9kYXNoLnN2ZydcclxuICAgICAgICAgICAgICAgIDogc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBbGxBY2NvcmRpb25zKClcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIlxyXG4gICAgICAgICAgW2NoZWNrZWRdPVwiYWxsQ29sdW1uc1NlbGVjdGVkKClcIlxyXG4gICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxDb2x1bW5zVmlzaWJpbGl0eSgpXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGNvbHVtbnMuLi5cIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjaG9zZUNvbHVtbnNTZWFyY2hcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGhyIGNsYXNzPVwibXQtMCBtYi0xXCIgLz5cclxuICAgICAgPGRpdiBjbGFzcz1cInB4LTIgb3ZlcmxheS1zY3JvbGxhYmxlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucyB8IGZpbHRlciA6IGNob3NlQ29sdW1uc1NlYXJjaCA6ICdoZWFkZXInO1xyXG4gICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RmllbGRcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtblBhbmVsSXRlbTsgY29udGV4dDogeyBjb2w6IGNvbCB9XCJcclxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjc2lkZU1lbnVSb3dHcm91cHM+XHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBoLTEwMCBkLW5vbmVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJweC0zIGgtMTAwXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgbWItNFwiPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2p1c3RpZnkuc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPHNwYW4+Um93IEdyb3Vwczwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoLTUwXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJweC0zIHB5LTIgYm9yZGVyLWRhc2hlZCBoLTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDE0cHhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIERyYWcgaGVyZSB0byBzZXQgcm93IEdyb3Vwc1xyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxociBjbGFzcz1cIm10LTRcIiAvPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJweC0zIGgtMTAwXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgbWItNFwiPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2p1c3RpZnkuc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPHNwYW4+VmFsdWVzPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImgtNTAgZC1mbGV4XCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJweC0zIHB5LTIgYm9yZGVyLWRhc2hlZCBoLTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDE0cHhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIERyYWcgaGVyZSBhZ2dyZWdhdGVcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG48IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbjwhLS0gRHJhZyBQcmV2aWV3IFRlbXBsYXRlIC0tPlxyXG48IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZHJhZ1ByZXZpZXcgbGV0LWNvbD5cclxuICA8ZGl2IGNsYXNzPVwicC0yIGJvcmRlciBkLWZsZXggZ2FwLTJcIj5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtbW92ZS5zdmcnXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICA+PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2Pnt7IGNvbC5oZWFkZXIgfX08L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gRHJhZyBQbGFjZWhvbGRlciBUZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlXHJcbiAgI2RyYWdQbGFjZWhvbGRlclxyXG4gIGxldC1jb2xcclxuICBsZXQtaT1cImluZGV4XCJcclxuICBsZXQtc2VjdGlvbj1cInNlY3Rpb25cIlxyXG4gIGxldC1kcmFnZ2luZ0luR3JvdXBBcmVhPVwiZHJhZ2dpbmdJbkdyb3VwQXJlYVwiXHJcbj5cclxuICA8ZGl2ICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIj5cclxuICAgIDxkaXZcclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICBoZWFkZXJDZWxsO1xyXG4gICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2wsIGluZGV4OiBpLCBzZWN0aW9uOiBzZWN0aW9uIH1cclxuICAgICAgXCJcclxuICAgID48L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwiZHJhZ2dpbmdJbkdyb3VwQXJlYVwiPk5ldyBQbGFjZWhvbGRlcjwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBUb3AgR3JvdXAgUm93IFBsYWNlaG9sZGVyIC0tPlxyXG48bmctdGVtcGxhdGUgI3RvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXIgbGV0LWNvbCBsZXQtc2hvd0NoZXZyb249XCJzaG93Q2hldnJvblwiPlxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgdG9wLXJvdy1ncm91cGluZy1wbGFjZWhvbGRlclwiXHJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwidG9wR3JvdXBlZEJhZGdlc0JhY2tncm91bmRDb2xvclwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgY2RrRHJhZ0hhbmRsZVxyXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZ3JpZC0zeDItZ2FwLnN2ZydcIlxyXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICAgIDxzcGFuPnt7IGNvbC5oZWFkZXIgfX08L3NwYW4+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgKGNsaWNrKT1cInVuZ3JvdXBDb2x1bW4oY29sKVwiXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy94LnN2ZydcIlxyXG4gICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwic2hvd0NoZXZyb25cIiBzdHlsZT1cIm9wYWNpdHk6IDAuNjsgZm9udC1zaXplOiAxNHB4XCI+XHJcbiAgICA8c3BhblxyXG4gICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1wiXHJcbiAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICA+PC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlXHJcbiAgI2NoaWxkSGVhZGVyUGxhY2Vob2xkZXJcclxuICBsZXQtY29sXHJcbiAgbGV0LXBpbm5lZFJpZ2h0PVwicGlubmVkUmlnaHRcIlxyXG4gIGxldC1pPVwiaW5kZXhcIlxyXG4gIGxldC1zZWN0aW9ucz1cInNlY3Rpb25zXCJcclxuPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgb25lLXJvdy1oZWFkZXItY2VsbHNcIlxyXG4gICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxyXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgIFtzdHlsZS5mb250V2VpZ2h0XT1cImhlYWRlckZvbnRXZWlnaHRcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gaC0xMDAgYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxyXG4gICAgICAgIFtjbGFzcy5mbGV4LXJvdy1yZXZlcnNlXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwidGV4dC1lbGxpcHNpcyBoLTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgIFt0aXRsZV09XCJjb2wuaGVhZGVyXCJcclxuICAgICAgICAgIFtjbGFzcy53LTEwMF09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleFwiXHJcbiAgICAgICAgICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRocmVlLWRvdHMgcC0xXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvdGhyZWUtZG90cy12ZXJ0aWNhbC5zdmcnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcmVzaXplLWhhbmRsZS5zdmcnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJzaG93RmlsdGVyUm93XCJcclxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgZmlsdGVyLWNlbGxcIlxyXG4gICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxyXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcclxuICAgIHN0eWxlPVwiZ3JpZC1yb3c6IDNcIlxyXG4gID5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJoZWFkZXItY2VsbCBmaWx0ZXItY2VsbFwiXHJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cIkZpbHRlclwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wuZmlsdGVyVmFsdWVcIlxyXG4gICAgICAgIFtyZWFkb25seV09XCJjb2w/LnR5cGUgPT0gJ2Ryb3Bkb3duJyB8fCBjb2w/LnR5cGUgPT0gJ2ltYWdlJ1wiXHJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkLXNlYXJjaC1pbnB1dF09XCJcclxuICAgICAgICAgIGNvbD8udHlwZSA9PSAnZHJvcGRvd24nIHx8IGNvbD8udHlwZSA9PSAnaW1hZ2UnXHJcbiAgICAgICAgXCJcclxuICAgICAgLz5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXJcIlxyXG4gICAgICAgIChjbGljayk9XCJhY3RpdmVGaWx0ZXJDZWxsID0gY29sOyBhY3RpdmVDb2wgPSBudWxsXCJcclxuICAgICAgICA+PHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZmlsdGVyLTIuc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgID48L3NwYW5cclxuICAgICAgPjwvc3Bhbj5cclxuXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlXCJcclxuICAgICAgICAqbmdJZj1cImFjdGl2ZUZpbHRlckNlbGwgPT09IGNvbFwiXHJcbiAgICAgICAgc3R5bGU9XCJ0b3A6IDEwMCU7IHJpZ2h0OiAwOyB6LWluZGV4OiAxMDsgbGVmdDogMFwiXHJcbiAgICAgID48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0YWJsZUxheW91dD5cclxuICA8ZGl2XHJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgIGNsYXNzPVwicC0zIHNoYWRvdyBhY3Rpb25zLWRyb3Bkb3duIG10LTEgZHJvcGRvd24tbWVudSBzaG93IHNoYWRvdyBjdXN0b20tbWVudSB0YWJsZS1sYXlvdXRcIlxyXG4gICAgc3R5bGU9XCJ3aWR0aDogMzIwcHhcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMFwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTEwcHhcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdzZXR0aW5nJylcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctbGVmdC5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8aDYgY2xhc3M9XCJtYi0wIG1zLTJcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA1MDBcIj5UYWJsZSBMYXlvdXQ8L2g2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8aHIgY2xhc3M9XCJteS0yXCIgLz5cclxuICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBtYi0zIGQtZmxleFwiIHJvbGU9XCJncm91cFwiPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuLWNoZWNrIGxheW91dC1idXR0b24tY2hlY2tcIlxyXG4gICAgICAgIG5hbWU9XCJsYXlvdXRTaXplXCJcclxuICAgICAgICBpZD1cInNtYWxsXCJcclxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlVGFibGVMYXlvdXQoJGV2ZW50LCAnc21hbGwnKVwiXHJcbiAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRUYWJsZUxheW91dCA9PSAnc21hbGwnXCJcclxuICAgICAgLz5cclxuICAgICAgPGxhYmVsXHJcbiAgICAgICAgY2xhc3M9XCJib3JkZXIgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBsYXlvdXQtYnV0dG9uXCJcclxuICAgICAgICBmb3I9XCJzbWFsbFwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgY29sb3I6IHNlbGVjdGVkVGFibGVMYXlvdXQgPT0gJ3NtYWxsJyA/ICcjMDAwJyA6ICcjNzI3MjcyJ1xyXG4gICAgICAgIH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXctYm94IGJvcmRlciBtYi0xXCIgc3R5bGU9XCJoZWlnaHQ6IDhweFwiPjwvZGl2PlxyXG4gICAgICAgIFNtYWxsXHJcbiAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuLWNoZWNrIGxheW91dC1idXR0b24tY2hlY2tcIlxyXG4gICAgICAgIG5hbWU9XCJsYXlvdXRTaXplXCJcclxuICAgICAgICBpZD1cIm1lZGl1bVwiXHJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFRhYmxlTGF5b3V0ID09ICdtZWRpdW0nXCJcclxuICAgICAgICAoY2hhbmdlKT1cImNoYW5nZVRhYmxlTGF5b3V0KCRldmVudCwgJ21lZGl1bScpXCJcclxuICAgICAgLz5cclxuICAgICAgPGxhYmVsXHJcbiAgICAgICAgY2xhc3M9XCJib3JkZXIgbXgtMyBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGxheW91dC1idXR0b25cIlxyXG4gICAgICAgIGZvcj1cIm1lZGl1bVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgY29sb3I6IHNlbGVjdGVkVGFibGVMYXlvdXQgPT0gJ21lZGl1bScgPyAnIzAwMCcgOiAnIzcyNzI3MidcclxuICAgICAgICB9XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcmV2aWV3LWJveCBib3JkZXIgbWItMVwiIHN0eWxlPVwiaGVpZ2h0OiAxMnB4XCI+PC9kaXY+XHJcbiAgICAgICAgTWVkaXVtXHJcbiAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuLWNoZWNrIGxheW91dC1idXR0b24tY2hlY2tcIlxyXG4gICAgICAgIG5hbWU9XCJsYXlvdXRTaXplXCJcclxuICAgICAgICBpZD1cImxhcmdlXCJcclxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlVGFibGVMYXlvdXQoJGV2ZW50LCAnbGFyZ2UnKVwiXHJcbiAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRUYWJsZUxheW91dCA9PSAnbGFyZ2UnXCJcclxuICAgICAgLz5cclxuICAgICAgPGxhYmVsXHJcbiAgICAgICAgY2xhc3M9XCJib3JkZXIgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBsYXlvdXQtYnV0dG9uXCJcclxuICAgICAgICBmb3I9XCJsYXJnZVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgY29sb3I6IHNlbGVjdGVkVGFibGVMYXlvdXQgPT0gJ2xhcmdlJyA/ICcjMDAwJyA6ICcjNzI3MjcyJ1xyXG4gICAgICAgIH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXctYm94IGJvcmRlciBtYi0xXCIgc3R5bGU9XCJoZWlnaHQ6IDE2cHhcIj48L2Rpdj5cclxuICAgICAgICBMYXJnZVxyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGhyIGNsYXNzPVwibXktMlwiIC8+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XHJcbiAgICAgIDxzcGFuPlNob3cgc2VwYXJhdG9yczwvc3Bhbj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbS0wXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgIGlkPVwic2VwYXJhdG9yc1wiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICAgICAgICAoY2hhbmdlKT1cIm9uRm9udENoYW5nZSgpXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgPHNwYW4+Um93IHNoYWRpbmc8L3NwYW4+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG0tMFwiPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwicm93U2hhZGluZ0VuYWJsZWRcIlxyXG4gICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVSb3dTaGFkaW5nKClcIlxyXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgIGlkPVwicm93U2hhZGluZ1wiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxyXG4gICAgICA8c3Bhbj5TaG93IFNpZGUgTWVudTwvc3Bhbj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbS0wXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzaG93U2lkZU1lbnVcIlxyXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgIGlkPVwicm93U2hhZGluZ1wiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cclxuICAgICAgPHNwYW4+U2hvdyBGaWx0ZXIgUm93PC9zcGFuPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtLTBcIj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNob3dGaWx0ZXJSb3dcIlxyXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgIGlkPVwicm93U2hhZGluZ1wiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj4gLS0+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3RhYmxlUHJlc2V0PlxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwiYWN0aXZlU3ViQnV0dG9uICE9PSAnc2F2ZS1wcmVzZXQnXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgY2xhc3M9XCJwLTMgc2hhZG93IGFjdGlvbnMtZHJvcGRvd24gbXQtMSBkcm9wZG93bi1tZW51IHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dFwiXHJcbiAgICBzdHlsZT1cIndpZHRoOiAyODBweFwiXHJcbiAgPlxyXG4gICAgPCEtLSBIZWFkZXIgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wXCJcclxuICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC0xMHB4XCJcclxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdzZXR0aW5nJylcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctbGVmdC5zdmcnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8aDYgY2xhc3M9XCJtYi0wIG1zLTJcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA1MDBcIj5UYWJsZSBQcmVzZXRzPC9oNj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0gU2F2ZSBQcmVzZXQgQnV0dG9uIHdpdGggRHJvcGRvd24gLS0+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPGFcclxuICAgICAgICAgIGNsYXNzPVwidGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1wcmltYXJ5XCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgaWQ9XCJzYXZlUHJlc2V0RHJvcGRvd25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdG9nZ2xlU3ViQWN0aW9ucygnc2F2ZS1wcmVzZXQnKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgaXNUYWJsZVByZXNldE5vdENoYW5nZWQgPyBcIlNhdmUgcHJlc2V0XCIgOiBcIlVwZGF0ZSBQcmVzZXRcIiB9fVxyXG4gICAgICAgIDwvYT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFNlYXJjaCAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZ2xvYmFsLXNlYXJjaFwiPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NlYXJjaC5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG14LTIgcG9zaXRpb24tYWJzb2x1dGUgaWNvblwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRQcmVzZXRUYWJsZVwiXHJcbiAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gUHJlc2V0IExpc3QgLS0+XHJcbiAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgdGFibGVWaWV3IHwgZmlsdGVyIDogc2VhcmNoVGV4dFByZXNldFRhYmxlIDogJ25hbWUnIGFzIGZpbHRlcmVkTGlzdFxyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8IS0tIElmIGZpbHRlcmVkTGlzdCBleGlzdHMgYW5kIG5vbmUgaXMgZGVmYXVsdCAtPiBzaG93IGZhbGxiYWNrIC0tPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCIgcGItNVwiXHJcbiAgICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJkYXRhR3JpZENvbnRhaW5lci5vZmZzZXRIZWlnaHQgLSAyNTBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgIGNsZWFyQWxsRmlsdGVycygpO1xyXG4gICAgICAgICAgICBvcGVuSW5kZXggPSBudWxsO1xyXG4gICAgICAgICAgICB0ZW1wX3N0YXRlLmlkID0gJyc7XHJcbiAgICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9ICcnO1xyXG4gICAgICAgICAgICBjdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUgPSBudWxsXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZFwiPkRlZmF1bHQgVmlldzwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFya1wiPkNyZWF0ZWQgYnkgc3lzdGVtPC9zbWFsbD5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIXRhYmxlRmlsdGVyVmlld0lkICYmICFoYXNBbnlEZWZhdWx0VmlldygpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSBiZy1saWdodCB0ZXh0LXByaW1hcnkgbXMtMlwiXHJcbiAgICAgICAgICAgID5EZWZhdWx0PC9zcGFuXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAqbmdJZj1cIiF0YWJsZUZpbHRlclZpZXdJZCAmJiAhaGFzQW55RGVmYXVsdFZpZXcoKVwiXHJcbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hlY2stYmx1ZS5zdmcnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJtZS0yXCJcclxuICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24gZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInRhYmxlRmlsdGVyVmlld0lkXCJcclxuICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBUaGUgbGlzdDogcmVuZGVyIGVhY2ggdGFibGUgZnJvbSBmaWx0ZXJlZExpc3QgLS0+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIlxyXG4gICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgIGxldCB0YWJsZSBvZiBmaWx0ZXJlZExpc3Q7XHJcbiAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlUYWJsZVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8IS0tIEl0ZW0gLS0+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9wZW5JbmRleCA9IG51bGw7IGFjdGl2ZVRvcEJ1dHRvbiA9ICcnXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIHB4LTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInNlbGVjdEZpbHRlcih0YWJsZSk7IG9wZW5JbmRleCA9IG51bGxcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGRcIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAge3sgdGFibGU/Lm5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwhLS0ge3t0YWJsZT8uaXNfdGVtcH19IC0tPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAodGFibGU/LmlzX3RlbXAgJiYgIXRlbXBfc3RhdGUuaWQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcF9zdGF0ZS5pZCA9PSB0YWJsZS5pZFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZWNrLWJsdWUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxyXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGFibGU/LmlzX2RlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJhZGdlIGJnLWxpZ2h0IHRleHQtcHJpbWFyeSBtcy0yXCJcclxuICAgICAgICAgICAgICAgICAgPkRlZmF1bHQ8L3NwYW5cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LWRhcmtcIiAqbmdJZj1cInRhYmxlPy5jb25maWc/LmZpbHRlck5hbWVzXCIgW3RpdGxlXT1cInRhYmxlPy5jb25maWc/LmZpbHRlck5hbWVzXCI+XHJcbiAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICB0YWJsZT8uY29uZmlnPy5maWx0ZXJOYW1lcz8ubGVuZ3RoID4gMjUgXHJcbiAgICAgICAgICAgICAgPyAodGFibGU/LmNvbmZpZz8uZmlsdGVyTmFtZXMgfCBzbGljZTowOjI1KSArICcuLi4nXHJcbiAgICAgICAgICAgICAgOiB0YWJsZT8uY29uZmlnPy5maWx0ZXJOYW1lc1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgKHt7IHRhYmxlPy5jb25maWc/LnRvdGFsQ291bnQgfX0pXHJcbiAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LWRhcmtcIiAqbmdJZj1cIiF0YWJsZT8uY29uZmlnPy5maWx0ZXJOYW1lc1wiPnt7IHRhYmxlPy5jcmVhdGVkQXQgfCBkYXRlIDogXCJNTU0gZCwgeVwiIH19PC9zbWFsbD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInRhYmxlPy5pc19kZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZWNrLWJsdWUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiXHJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duXCIgKm5nSWY9XCIhdGFibGU/LmlzX2RlZmF1bHRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi13cmFwcGVyXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1pY29uIG11dGVkLXRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVNZW51KGksICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIm9wZW5JbmRleCA9PT0gaVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvaG9yaXpvbnRhbC1kb3RzLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBtZW51IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8dWxcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9wZW5JbmRleCA9PT0gaVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20tZHJvcGRvd24tbWVudVwiXHJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm1lbnVcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIHJvbGU9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJtZW51aXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25QcmVzZXQodGFibGUsICdzZXRQcmVzZXQnKTsgdGVtcF9zdGF0ZS5pZCA9ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3N0YXIuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgU2V0IGFzIGRlZmF1bHRcclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSByb2xlPVwibm9uZVwiICpuZ0lmPVwiIXRhYmxlLmNvbmZpcm1EZWxldGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm1lbnVpdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIHRleHQtZGFuZ2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRhYmxlLmNvbmZpcm1EZWxldGUgPSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi10b3A6IC00cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvdHJhc2gtcmVkLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIERlbGV0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRhYmxlLmNvbmZpcm1EZWxldGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb25maXJtLWJsb2NrXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMyBweS0yIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSA8YnIgLz48YlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPuKAnHt7IHRhYmxlPy5uYW1lIH194oCdPC9iXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPj9cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0IG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRhYmxlLmNvbmZpcm1EZWxldGUgPSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1kYW5nZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvblByZXNldCh0YWJsZSwgJ2RlbGV0ZVByZXNldCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWxldGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8IS0tIEl0ZW0gRW5kIEhlcmUgLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXZcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgKm5nSWY9XCJhY3RpdmVTdWJCdXR0b24gPT0gJ3NhdmUtcHJlc2V0J1wiXHJcbiAgICBjbGFzcz1cImRyb3Bkb3duLW1lbnUgcC0zIGJhZGdlIG10LTQgc2F2ZS1wcmVzZXQtZHJvcGRvd24gbXQtMVwiXHJcbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJzYXZlUHJlc2V0RHJvcGRvd25cIlxyXG4gICAgc3R5bGU9XCJtaW4td2lkdGg6IDI1MHB4XCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCBmcy0xNHB4IG1iLTJcIj5cclxuICAgICAge3sgaXNUYWJsZVByZXNldE5vdENoYW5nZWQgPyBcIlNhdmUgcHJlc2V0XCIgOiBcIlVwZGF0ZSBQcmVzZXRcIiB9fVxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZnMtMTRweCBtYi0yXCIgc3R5bGU9XCJsaW5lLWhlaWdodDogMjBweFwiPlxyXG4gICAgICBUaGlzIHdpbGwgc2F2ZSB0aGUgY3VycmVudCB0YWJsZSBhZGp1c3RtZW50cyBhcyBhIHByZXNldC5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBJbnB1dCAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgIDxsYWJlbCBmb3I9XCJwcmVzZXROYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsIGZzLTEycHggZnctYm9sZFwiXHJcbiAgICAgICAgPlByZXNldCBOYW1lPC9sYWJlbFxyXG4gICAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZ2xvYmFsLXNlYXJjaFwiPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgI3ByZXNldE5hbWVDdHJsPVwibmdNb2RlbFwiXHJcbiAgICAgICAgICByZXF1aXJlZFxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJwcmVzZXROYW1lXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgJ2lzLWludmFsaWQnOlxyXG4gICAgICAgICAgICAgIHByZXNldE5hbWVDdHJsLmludmFsaWQgJiZcclxuICAgICAgICAgICAgICAocHJlc2V0TmFtZUN0cmwuZGlydHkgfHwgcHJlc2V0TmFtZUN0cmwudG91Y2hlZClcclxuICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIHBzLTJcIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBwcmVzZXQgbmFtZVwiXHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIENoZWNrYm94IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItMlwiPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwicHJlc2V0RmlsdGVyXCJcclxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgIGlkPVwic2F2ZUZpbHRlcnNcIlxyXG4gICAgICAvPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG10LTFcIiBmb3I9XCJzYXZlRmlsdGVyc1wiPlxyXG4gICAgICAgIFNhdmUgYWN0aXZlIGZpbHRlcnNcclxuICAgICAgPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gU2F2ZSBCdXR0b24gLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTJcIiBzdHlsZT1cImhlaWdodDogMzJweFwiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMycHhcIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJvcmRlciB3LTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgYnRuLWxpZ2h0XCJcclxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVBY3Rpb25zKCd0YWJsZS1wcmVzZXRzJylcIlxyXG4gICAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogLTJweFwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3Bhbj5DYW5jZWw8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImNsb3NlRHJvcGRvd24ucHJlc2V0LmxvYWRpbmdcIlxyXG4gICAgICAgIChjbGljayk9XCJzYXZlUHJlc2V0KHByZXNldE5hbWVDdHJsKVwiXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMycHhcIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi10b3A6IC0ycHhcIiAqbmdJZj1cImlzVGFibGVQcmVzZXROb3RDaGFuZ2VkXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNsb3NlRHJvcGRvd24ucHJlc2V0LmxvYWRpbmdcIlxyXG4gICAgICAgICAgICA+U2F2ZTwvbmctY29udGFpbmVyXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2xvc2VEcm9wZG93bi5wcmVzZXQubG9hZGluZ1wiXHJcbiAgICAgICAgICAgID48c3BhbiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtXCI+PC9zcGFuXHJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcFwiICpuZ0lmPVwiIWlzVGFibGVQcmVzZXROb3RDaGFuZ2VkXCJcclxuICAgICAgICAgID5VcGRhdGUgUHJlc2V0PC9zcGFuXHJcbiAgICAgICAgPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNzaG93SGlkZUNvbHVtbnM+XHJcbiAgPGRpdlxyXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICBjbGFzcz1cInAtMyBzaGFkb3cgYWN0aW9ucy1kcm9wZG93biBtdC0xIGRyb3Bkb3duLW1lbnUgc2hvdyBzaGFkb3cgY3VzdG9tLW1lbnUgdGFibGUtbGF5b3V0XCJcclxuICAgIHN0eWxlPVwid2lkdGg6IDI4MHB4XCJcclxuICA+XHJcbiAgICA8IS0tIEhlYWRlciAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBwLTBcIlxyXG4gICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTEwcHhcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ3NldHRpbmcnKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1sZWZ0LnN2ZydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvblwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxoNiBjbGFzcz1cIm1iLTAgbXMtMlwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDUwMFwiPkNvbHVtbnM8L2g2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGFcclxuICAgICAgICAoY2xpY2spPVwicmVzZXRDb2x1bW5zKClcIlxyXG4gICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxyXG4gICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5IHRleHQtZGVjb3JhdGlvbi1ub25lXCJcclxuICAgICAgICA+UmVzZXQ8L2FcclxuICAgICAgPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBTZWFyY2ggLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGdsb2JhbC1zZWFyY2hcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zZWFyY2guc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cIm14LTIgcG9zaXRpb24tYWJzb2x1dGUgaWNvbiBkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggY29sdW1uXCJcclxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJ0b3BTaG93SGlkZUNvbHVtbnNcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIFByZXNldCBMaXN0IC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiXHJcbiAgICAgIHN0eWxlPVwib3ZlcmZsb3c6IGF1dG87IHNjcm9sbGJhci13aWR0aDogdGhpblwiXHJcbiAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiZGF0YUdyaWRDb250YWluZXIub2Zmc2V0SGVpZ2h0IC0gMjIwXCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cIm11dGVkLXRleHQgc2hvdy1oaWRlLXRhYmxlLWxhYmVsIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiICpuZ0lmPVwiaGFzQW55VmlzaWJsZUNvbHVtblwiPlxyXG4gICAgICAgIFNob3cgaW4gdGFibGVcclxuICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgIGlkPVwiaGlkZV9hbGxcIlxyXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImFsbENvbHVtbnNTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUFsbENvbHVtbnNWaXNpYmlsaXR5KClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGZ3LXNlbWlib2xkXCIgZm9yPVwiaGlkZV9hbGxcIj5cclxuICAgICAgICAgICAgICBTaG93L0hpZGUgQWxsIFxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIEl0ZW0gLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucyB8IGZpbHRlciA6IHRvcFNob3dIaWRlQ29sdW1ucyA6ICdoZWFkZXInO1xyXG4gICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZpZWxkXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwiY29sLmlzX3Zpc2libGVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYm9yZGVyLTAgcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xXCI+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbD8ucGlubmVkXCJcclxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2dyaXAtdmVydGljYWwuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLWdyYXAgZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sPy5waW5uZWRcIlxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLWJsdWUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLWdyYXAgZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGRcIj5cclxuICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWNvbD8ucXVlcnk/LmZpcnN0X3ZhbHVlICYmICFjb2w/LnF1ZXJ5Py5faWRzPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ29sdW1uVmlzaWJpbGl0eShjb2wsIGZhbHNlKVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJ2aXNpYmxlQ29sdW1ucygpLmxlbmd0aCA8PSAyIHx8IGNvbD8uaXNfYWx3YXlzX3Zpc2libGVcIlxyXG4gICAgICAgICAgICBbY2xhc3MucGUtbm9uZV09XCJ2aXNpYmxlQ29sdW1ucygpLmxlbmd0aCA8PSAyIHx8IGNvbD8uaXNfYWx3YXlzX3Zpc2libGVcIlxyXG4gICAgICAgICAgICBbY2xhc3Mub3BhY2l0eS01MF09XCJ2aXNpYmxlQ29sdW1ucygpLmxlbmd0aCA8PSAyIHx8IGNvbD8uaXNfYWx3YXlzX3Zpc2libGVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXllLnN2ZydcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwiY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgfHwgY29sPy5xdWVyeT8uX2lkcz8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJvcGFjaXR5OiAwLjVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXllLnN2ZydcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPCEtLSBJdGVtIEVuZCBIZXJlIC0tPlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiXHJcbiAgICAgICAgKm5nSWY9XCJoYXNBbnlWaXNpYmxlQ29sdW1uICYmIGhhc0FueUluVmlzaWJsZUNvbHVtblwiXHJcbiAgICAgID48L2Rpdj5cclxuXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cIm11dGVkLXRleHQgc2hvdy1oaWRlLXRhYmxlLWxhYmVsIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXHJcbiAgICAgICAgKm5nSWY9XCJoYXNBbnlJblZpc2libGVDb2x1bW5cIlxyXG4gICAgICA+XHJcbiAgICAgICAgSGlkZSBpbiB0YWJsZVxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICBpZD1cInNob3dfYWxsXCJcclxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhbGxDb2x1bW5zU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxDb2x1bW5zVmlzaWJpbGl0eSgpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBmdy1zZW1pYm9sZFwiIGZvcj1cInNob3dfYWxsXCI+XHJcbiAgICAgICAgICAgICAgU2hvdy9IaWRlIEFsbCBcclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5RmllbGRcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nSWY9XCIhY29sLmlzX3Zpc2libGVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBib3JkZXItMCBweC0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xXCI+XHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbD8ucGlubmVkXCJcclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9ncmlwLXZlcnRpY2FsLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gY3Vyc29yLWdyYXBcIlxyXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbD8ucGlubmVkXCJcclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9waW4tYmx1ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGN1cnNvci1ncmFwXCJcclxuICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbHVtblZpc2liaWxpdHkoY29sLCB0cnVlKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXllLWNyb3NzLnN2ZydcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gSXRlbSBFbmQgSGVyZSAtLT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNmaWx0ZXJDb2x1bW5zIGxldC1jb2w9XCJjb2x1bW5cIj5cclxuICA8ZGl2XHJcbiAgICBAc2xpZGVUb2dnbGVcclxuICAgICpuZ0lmPVwiIWlzRmlsdGVyT3BlbiAmJiBhY3RpdmVUb3BCdXR0b24gPT0gJ2ZpbHRlci1jb2x1bW5zJ1wiXHJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgIGNsYXNzPVwic2hhZG93IGFjdGlvbnMtZHJvcGRvd24gbXQtMSBzaG93IHNoYWRvdyBjdXN0b20tbWVudSB0YWJsZS1sYXlvdXQgZmlsdGVyLWNvbHVtbnNcIlxyXG4gICAgc3R5bGU9XCJ3aWR0aDogMjgwcHg7IHJpZ2h0OiB1bnNldDsgbWF4LXdpZHRoOiAyMzBweFwiXHJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0yIHB4LTNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoXCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvc2VhcmNoLnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbXgtMiBwb3NpdGlvbi1hYnNvbHV0ZSBpY29uXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyIGJ5XCJcclxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJhZGRGaWx0ZXJDb2x1bW5JbnB1dFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIlxyXG4gICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSA1MDBweCk7IG92ZXJmbG93OiBhdXRvXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgbGV0IGNvbCBvZiBjb2x1bW5zIHwgZmlsdGVyIDogYWRkRmlsdGVyQ29sdW1uSW5wdXQgOiAnaGVhZGVyJztcclxuICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkZpbHRlcihjb2wpXCJcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIGNvbC5pc192aXNpYmxlICYmXHJcbiAgICAgICAgICAgICFjb2w/LnF1ZXJ5Py5maXJzdF92YWx1ZSAmJlxyXG4gICAgICAgICAgICAhY29sPy5xdWVyeT8uX2lkcz8ubGVuZ3RoXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYm9yZGVyLTAgcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGRyb3Bkb3duLWl0ZW0gY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTFcIj5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IC0zcHhcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkXCI+XHJcbiAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIERyb3Bkb3duIC0tPlxyXG4gIDxkaXZcclxuICAgIEBzbGlkZVRvZ2dsZVxyXG4gICAgKm5nSWY9XCJpc0ZpbHRlck9wZW4gJiYgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZSA9PSAnZHJvcGRvd24nXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgY2xhc3M9XCJzaGFkb3cgYWN0aW9ucy1kcm9wZG93biBtdC0xIHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dCBmaWx0ZXItY29sdW1ucyBwYi0yXCJcclxuICAgIHN0eWxlPVwid2lkdGg6IDI4MHB4OyByaWdodDogdW5zZXQ7IG1heC13aWR0aDogMjMwcHhcIlxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHgtMyBteS0yIGJvcmRlci1iZWxvdyBweS0xIHBiLTIgbWItMyBkLWZsZXggcHMtMVwiPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdmaWx0ZXItY29sdW1ucycpOyBpc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZVwiXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1sZWZ0LnN2ZydcIlxyXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICA+PC9zcGFuXHJcbiAgICAgID48Yj57eyBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uaGVhZGVyIH19PC9iPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMiBweC0zXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoIHBvc2l0aW9uLXJlbGF0aXZlIGJvcmRlciByb3VuZGVkIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC13cmFwIHB4LTIgZmlsdGVyLXNlcmFjaC1pbnB0XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgc2VsZWN0ZWQgb2Ygc2VsZWN0ZWRGaWx0ZXJPcHRpb25zXCJcclxuICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMSBtZS0xIG1iLTFcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IHNlbGVjdGVkPy52YWx1ZSA/IHNlbGVjdGVkLnZhbHVlIDogc2VsZWN0ZWQgfX1cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTZWxlY3Rpb25JbkZpbHRlcihzZWxlY3RlZClcIlxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Nyb3NzLXByaW1hcnkuc3ZnJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gYm9yZGVyLTAgZmxleC1ncm93LTFcIlxyXG4gICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiAwXCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWxlY3RlZEZpbHRlck9wdGlvbnM/Lmxlbmd0aCA/ICcnIDogJ0ZpbHRlciBieSdcIlxyXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRGb3JGaWx0ZXJEcm9wRG93blwiXHJcbiAgICAgICAgICAoa2V5ZG93bi5iYWNrc3BhY2UpPVwiaGFuZGxlQmFja3NwYWNlKCRldmVudClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCJcclxuICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNjAwcHgpOyBvdmVyZmxvdzogYXV0b1wiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgIGxldCBjb2wgb2Ygc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXHJcbiAgICAgICAgICAgIHwgZmlsdGVyIDogc2VhcmNoVGV4dEZvckZpbHRlckRyb3BEb3duIDogJ3ZhbHVlJztcclxuICAgICAgICAgIGxldCBpID0gaW5kZXhcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYm9yZGVyLTAgcHgtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGRyb3Bkb3duLWl0ZW0gY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICBbaWRdPVwiaVwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhjb2wuaWQgfHwgY29sLl9pZCB8fCBjb2wpXCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdGlvbkluRmlsdGVyKGNvbClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGZ3LXNlbWlib2xkXCIgW2Zvcl09XCJpXCI+XHJcbiAgICAgICAgICAgICAge3sgY29sPy52YWx1ZSB8fCBjb2w/Lm5hbWUgfHwgY29sIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMiBweC0yIGJvcmRlci10b3BcIlxyXG4gICAgICBzdHlsZT1cImhlaWdodDogMzhweFwiXHJcbiAgICA+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1saWdodCBib3JkZXIgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTEgYnRuLWxpZ2h0XCJcclxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyByZXNldEZpbHRlckNoYW5nZXMoKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3Bhbj5DYW5jZWw8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMycHhcIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0xXCJcclxuICAgICAgICAoY2xpY2spPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogLTJweFwiPlNhdmU8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gRm9yIFRleHQgZmllbGRzIGFuZCBudW1iZXIgZmllbGRzLS0+XHJcblxyXG4gIDxkaXZcclxuICAgIEBzbGlkZVRvZ2dsZVxyXG4gICAgKm5nSWY9XCJcclxuICAgICAgaXNGaWx0ZXJPcGVuICYmXHJcbiAgICAgIChzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlID09ICdzdHJpbmcnIHx8XHJcbiAgICAgICAgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZSA9PSAnbnVtYmVyJyB8fFxyXG4gICAgICAgIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgPT0gJ2RhdGUnKVxyXG4gICAgXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgY2xhc3M9XCJzaGFkb3cgYWN0aW9ucy1kcm9wZG93biBtdC0xIHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dCBmaWx0ZXItY29sdW1ucyBwYi0yXCJcclxuICAgIHN0eWxlPVwid2lkdGg6IDIxMHB4OyByaWdodDogdW5zZXQ7IG1heC13aWR0aDogMjMwcHhcIlxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHgtMyBib3JkZXItYmVsb3cgcHktMSBwYi0yIGQtZmxleCBwcy0xXCI+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1sZWZ0LnN2ZydcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdmaWx0ZXItY29sdW1ucycpOyBpc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZVwiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMiBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgID48L3NwYW5cclxuICAgICAgPjxiPnt7IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5oZWFkZXIgfX08L2I+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgcG9zaXRpb24tcmVsYXRpdmUgcC0yIHRleHQtZmlsdGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbSBjdXN0b20tc2VsZWN0IGJvcmRlclwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpcnN0Q29uZGl0aW9uXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZSAhPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJjb250YWluXCI+Q29udGFpbnM8L29wdGlvbj5cclxuICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkb2VzX25vdF9jb250YWluXCI+RG9lcyBOb3QgQ29udGFpbjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHM8L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPlN0YXJ0cyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkVuZHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vdF9lcXVhbFwiPk5vdCBFcXVhbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+QmVmb3JlPC9vcHRpb24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBmaXJzdCB2YWx1ZVwiXHJcbiAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcclxuICAgICAgICAgIFt0eXBlXT1cIlxyXG4gICAgICAgICAgICBzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlID09ICdzdHJpbmcnXHJcbiAgICAgICAgICAgICAgPyAndGV4dCdcclxuICAgICAgICAgICAgICA6IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGVcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpcnN0VmFsdWVcIlxyXG4gICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG15LTMgZC1mbGV4IGZsZXgtcm93XCIgc3R5bGU9XCJmb250LXNpemU6IDE0cHhcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIGNvbC00IG0tMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgIGlkPVwibG9naWNhbEFuZFwiXHJcbiAgICAgICAgICAgICAgbmFtZT1cImxvZ2ljYWxPcGVyYXRvclwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJhbmRcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIiBmb3I9XCJsb2dpY2FsQW5kXCJcclxuICAgICAgICAgICAgICA+QU5EPC9sYWJlbFxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBjb2wtNCBtLTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICBpZD1cImxvZ2ljYWxPclwiXHJcbiAgICAgICAgICAgICAgbmFtZT1cImxvZ2ljYWxPcGVyYXRvclwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJvclwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cImxvZ2ljYWxPclwiPk9SPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIGNvbC00IG0tMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgIGlkPVwibG9naWNhbE5vbmVcIlxyXG4gICAgICAgICAgICAgIG5hbWU9XCJsb2dpY2FsT3BlcmF0b3JcIlxyXG4gICAgICAgICAgICAgIHZhbHVlPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cImxvZ2ljYWxOb25lXCJcclxuICAgICAgICAgICAgICA+Tm9uZTwvbGFiZWxcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25kaXRpb24gIT09ICdub25lJyAmJiBmaXJzdFZhbHVlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMiBtdC0zXCI+XHJcbiAgICAgICAgICAgIDwhLS0gU2Vjb25kIGNvbmRpdGlvbiBzZWxlY3QgLS0+XHJcbiAgICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtIGJvcmRlclwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWNvbmRDb25kaXRpb25cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgIT09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNvbnRhaW5cIj5Db250YWluczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRvZXNfbm90X2NvbnRhaW5cIj5Eb2VzIE5vdCBDb250YWluPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHM8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5TdGFydHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+RW5kcyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlID09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibm90X2VxdWFsXCI+Tm90IEVxdWFsPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgICAgICAgIDwhLS0gU2Vjb25kIHZhbHVlIGlucHV0IC0tPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBbdHlwZV09XCJcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgPT0gJ3N0cmluZydcclxuICAgICAgICAgICAgICAgICAgPyAndGV4dCdcclxuICAgICAgICAgICAgICAgICAgOiBzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgc2Vjb25kIHZhbHVlXCJcclxuICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlY29uZFZhbHVlXCJcclxuICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0yIHB4LTIgYm9yZGVyLXRvcFwiXHJcbiAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzOHB4XCJcclxuICAgID5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY3VycmVudEZpbHRlclNlbGVjdGVkSWRzPy5zaXplICYmICFmaXJzdFZhbHVlXCJcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1saWdodCBib3JkZXIgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTEgYnRuLWxpZ2h0XCJcclxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyByZXNldFRleHRGaWx0ZXJDaGFuZ2VzKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4+Q2FuY2VsPC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJjdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHM/LnNpemUgPT09IDAgJiYgIWZpcnN0VmFsdWVcIlxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzMnB4XCJcclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtMVwiXHJcbiAgICAgICAgKGNsaWNrKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi10b3A6IC0ycHhcIj5BcHBseTwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gRWRpdCBkcm9wZG93biBoZXJlIC0tPlxyXG48bmctdGVtcGxhdGUgbGV0LWNvbD5cclxuICA8ZGl2IGNsYXNzPVwiZHJvcC1kb3duLWVkaXRcIj48L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZVxyXG4gICNmdWxsVGV4dFRlbXBsYXRlXHJcbiAgbGV0LXJvdz1cInJvd1wiXHJcbiAgbGV0LWNvbD1cImNvbFwiXHJcbiAgbGV0LWlzQXJyYXk9XCJpc0FycmF5XCJcclxuPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiZnVsbC10ZXh0LWJveFwiXHJcbiAgICAoZGJsY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXHJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXHJcbiAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImRhdGFHcmlkQ29udGFpbmVyLm9mZnNldEhlaWdodCAvIDJcIlxyXG4gID5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNFZGl0aW5nKHJvdywgY29sKVwiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCIhaXNBcnJheVwiXHJcbiAgICAgICAgY2xhc3M9XCJmdWxsLXRleHQtY29udGVudFwiXHJcbiAgICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJkYXRhR3JpZENvbnRhaW5lci5vZmZzZXRIZWlnaHQgLyAyXCJcclxuICAgICAgICAoZGJsY2xpY2spPVwiXHJcbiAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIGVuYWJsZUVkaXQocm93LCBjb2wsIHRydWUpXHJcbiAgICAgICAgXCJcclxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXHJcbiAgICAgID5cclxuICAgICAgICB7e1xyXG4gICAgICAgICAgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy52YWx1ZSB8fFxyXG4gICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lm5hbWUgfHxcclxuICAgICAgICAgICAgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXHJcbiAgICAgICAgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJpc0FycmF5XCI+XHJcbiAgICAgICAgPHVsPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bGkgKm5nSWY9XCJpICE9PSAwXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICAgIGl0ZW0/LmRlcGFydG1lbnRfbmFtZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0/LnJvbGVOYW1lIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbT8uZnVsbF9uYW1lIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgXCItXCJcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3VsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRWRpdGluZyhyb3csIGNvbClcIj5cclxuICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgKGRibGNsaWNrKT1cIlxyXG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICBlbmFibGVFZGl0KHJvdywgY29sLCB0cnVlKVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgI3RleHRNb2RlbD1cIm5nTW9kZWxcIlxyXG4gICAgICAgIHJvd3M9XCI0XCJcclxuICAgICAgICAjdGV4dEFyZWFkSW5wdXRcclxuICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2wuZmllbGRdXCJcclxuICAgICAgICBuYW1lPVwie3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICByZXF1aXJlZFxyXG4gICAgICAgIChibHVyKT1cImRpc2FibGVFZGl0KHJvdywgY29sLCB0ZXh0TW9kZWwpXCJcclxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJ0ZXh0QXJlYWRJbnB1dC5ibHVyKClcIlxyXG4gICAgICAgIGF1dG9mb2N1c1xyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAnaXMtaW52YWxpZCc6IHRleHRNb2RlbC5pbnZhbGlkXHJcbiAgICAgICAgfVwiXHJcbiAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICA+PC90ZXh0YXJlYT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNkZWZhdWx0SW1hZ2VQbGFjZWhvbGRlciBsZXQtcm93PVwicm93XCIgbGV0LWNvbD1cImNvbFwiPlxyXG4gIDxzcGFuXHJcbiAgICBjbGFzcz1cInB4LTIgZC1mbGV4IHctMTAwIGNlbGwtY29udGVudCBpbWFnZS1wbGFjZWhvbGRlclwiXHJcbiAgICBbdGl0bGVdPVwicm93Py5mdWxsX25hbWUgfHwgcm93Py5uYW1lIHx8ICdOL0EnXCJcclxuICA+XHJcbiAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgcm93Py5sb2dvIHx8XHJcbiAgICAgICAgICByb3c/LmFzc2V0SW1hZ2UgfHxcclxuICAgICAgICAgIHJvdz8uaW52b2ljZT8uaW52b2ljZV9pbWFnZSB8fFxyXG4gICAgICAgICAgcm93Py5pbnZvaWNlX2ltYWdlO1xyXG4gICAgICAgIGVsc2UgcGxhY2Vob2xkZXJcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPHNwYW5cclxuICAgICAgICAoY2xpY2spPVwiZnVsbHNjcmVlbkltYWdlID0gcm93Py5wcm9maWxlX3BpY3R1cmVzPy5bNF0/LnBhdGggfHxcclxuICAgICAgICAgICAgcm93Py5sb2dvIHx8XHJcbiAgICAgICAgICAgIHJvdz8uYXNzZXRJbWFnZSB8fFxyXG4gICAgICAgICAgICByb3c/Lmludm9pY2VfaW1hZ2VcIlxyXG4gICAgICAgIGNsYXNzPVwicGljXCJcclxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxyXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxyXG4gICAgICAgIFtjbGFzcy5hc3NldHMtcGljXT1cImdyaWRUeXBlID09ICdBc3NldHMnXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpbWdcclxuICAgICAgICAgIFt3aWR0aF09XCJyb3dIZWlnaHQgLSAxMlwiXHJcbiAgICAgICAgICBbaGVpZ2h0XT1cInJvd0hlaWdodCAtIDEyXCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXHJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEwXCJcclxuICAgICAgICAgIFtzcmNdPVwiXHJcbiAgICAgICAgICAgIHJvdz8ucHJvZmlsZV9waWN0dXJlcz8uWzRdPy5wYXRoIHx8XHJcbiAgICAgICAgICAgIHJvdz8ubG9nbyB8fFxyXG4gICAgICAgICAgICByb3c/LmFzc2V0SW1hZ2UgfHxcclxuICAgICAgICAgICAgcm93Py5pbnZvaWNlX2ltYWdlXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgYWx0PVwiaWNvblwiXHJcbiAgICAgICAgICBjbGFzcz1cIm9wdGlvbi1pY29uXCJcclxuICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gPGRpdlxyXG4gICAgICBjbGFzcz1cImZ1bGxzY3JlZW4tb3ZlcmxheVwiXHJcbiAgICAgICpuZ0lmPVwiZnVsbHNjcmVlbkltYWdlXCJcclxuICAgICAgKGNsaWNrKT1cImZ1bGxzY3JlZW5JbWFnZSA9IG51bGxcIlxyXG4gICAgPlxyXG4gICAgICA8aW1nIFtzcmNdPVwiZnVsbHNjcmVlbkltYWdlXCIgY2xhc3M9XCJmdWxsc2NyZWVuLWltZ1wiIC8+XHJcbiAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNwbGFjZWhvbGRlcj5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBbbmdDbGFzc109XCJnZXREeW5hbWljQ2xhc3Mocm93Py5mdWxsX25hbWUgfHwgcm93Py5uYW1lKVwiXHJcbiAgICAgICAgY2xhc3M9XCJwaWMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciByb3VuZGVkLWNpcmNsZVwiXHJcbiAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInJvd0hlaWdodCAtIDEyXCJcclxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEyXCJcclxuICAgICAgICBbc3R5bGUuZm9udFNpemUucHhdPVwicm93SGVpZ2h0IC8gM1wiXHJcbiAgICAgICAgW2NsYXNzLmFzc2V0cy1waWNdPVwiZ3JpZFR5cGUgPT0gJ0Fzc2V0cydcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgZ2V0SW5pdGlhbHMocm93Py5mdWxsX25hbWUpIH19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBSaWdodCBDbGljayBNZW51ZSAtLT5cclxuPGRpdlxyXG4gIFtjbGFzcy5pbnZpc2libGVdPVwiIXBvc2l0aW9uZWRZZXRcIlxyXG4gIGNsYXNzPVwiY29udGV4dC1tZW51IHAtMlwiXHJcbiAgKm5nSWY9XCJhY3Rpb25IaWRlICYmIGFjdGlvbnM/Lmxlbmd0aFwiXHJcbiAgW25nU3R5bGVdPVwieyAndG9wLnB4JzogeVBvcywgJ2xlZnQucHgnOiB4UG9zIH1cIlxyXG4gIFtjbGFzcy5zaG93XT1cImlzVmlzaWJsZVwiXHJcbiAgYXBwZW5kVG89XCJib2R5XCJcclxuPlxyXG4gIDx1bD5cclxuICAgIDxsaVxyXG4gICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGFjdGlvbnNcIlxyXG4gICAgICBjbGFzcz1cInJvdW5kZWQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgIChjbGljayk9XCJvbkFjdGlvbkNsaWNrKGFjdGlvbilcIlxyXG4gICAgPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvJyArIGFjdGlvbiArICcuc3ZnJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gcmlnaHQtY2xpY2stbWVudS1pY29ucyBtZS0yXCJcclxuICAgICAgPjwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWNhcGl0YWxpemUgZnctNTAwXCI+e3sgYWN0aW9uIH19PC9zcGFuPlxyXG4gICAgPC9saT5cclxuICA8L3VsPlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gRGV0YWlscyBUb2dnbGUgZnJvbSBib3R0b20gLS0+XHJcblxyXG48bmctdGVtcGxhdGUgI25lc3RlZFRhYmxlVGVtcGxhdGUgbGV0LXJvdz5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cIm5lc3RlZC10YWJsZSB0YWJsZSB0YWJsZS1zbSB3LTEwMCBtYi0wIGNlbnRlci1uZXN0ZWQtdGFibGUgdy0xMDBcIlxyXG4gICAgc3R5bGU9XCJ0YWJsZS1sYXlvdXQ6IGZpeGVkICFpbXBvcnRhbnRcIlxyXG4gICAgI25lc3RlZFRhYmxlQ29udGFpbmVyXHJcbiAgPlxyXG4gICAgPHRoZWFkXHJcbiAgICAgICNuZXN0ZWRIZWFkZXJcclxuICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJuZXN0ZWRUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvclwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwicm93Py5kZXRhaWwuY29sdW1uc1wiXHJcbiAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxyXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcENvbHVtbigkZXZlbnQsIHJvdylcIlxyXG4gICAgICAgIChjZGtEcm9wTGlzdFNvcnRlZCk9XCJvbk5lc3RlZENvbFNvcnQoJGV2ZW50LCBwcmV2aWV3TmVzdGVkQ29scylcIlxyXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwibmVzdGVkVGFibGVIZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IHRyIGJvcmRlci1iZWxvd1wiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIHJvdy5kZXRhaWwuY29sdW1uczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sPy53aWR0aCB8fCAyNTBcIlxyXG4gICAgICAgICAgW3N0eWxlLm1pbldpZHRoLnB4XT1cImNvbD8ud2lkdGggfHwgMjUwXCJcclxuICAgICAgICAgIFtzdHlsZS5tYXhXaWR0aC5weF09XCJjb2w/LndpZHRoIHx8IDI1MFwiXHJcbiAgICAgICAgICBjbGFzcz1cInB4LTQgdGhcIlxyXG4gICAgICAgICAgW2F0dHIuZmllbGRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwibmVzdGVkVGFibGVIZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgY2RrRHJhZ1xyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggaC0xMDAganVzdGlmeS1jb250ZW50LWJldHdlZW4gcG9zaXRpb24tcmVsYXRpdmUgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZWxsaXBzaXNcIiAoY2xpY2spPVwic29ydE5lc3RlZENvbChjb2wsIHJvdylcIj5cclxuICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY3VycmVudFN1YlNvcnRDb2x1bW4gPT0gY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAoY29sPy5vcmRlcl9ieSA9PSAnZGVzYydcclxuICAgICAgICAgICAgICAgICAgICA/ICdkYXRhLWdyaWQvaWNvbnMvc29ydC1kZXNjLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICA6ICdkYXRhLWdyaWQvaWNvbnMvc29ydC1hc2Muc3ZnJylcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXMtMiBzdGFydC01MFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8IS0tIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGhyZWUtZG90cyBwLTFcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5UaHJlZURvdHNNZW51KCRldmVudCwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL3RocmVlLWRvdHMtdmVydGljYWwuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgIDwhLS0gT25seSBzaG93IG1lbnUgaWYgdGhpcyBjb2x1bW4gaXMgYWN0aXZlIC0tPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVDb2wgPT09IGNvbFwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cInRvcDogLTUwJTsgei1pbmRleDogMjE7IGxlZnQ6IDBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5NZW51O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgaXNOZXN0ZWRUYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IHJvdz8uZGV0YWlsLmNvbHVtbnNcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyZXNpemUtaGFuZGxlXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJcclxuICAgICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICAgIG9uUmVzaXplQ29sdW1uKCRldmVudCwgY29sKTtcclxuICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcmVzaXplLWhhbmRsZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQcmV2aWV3PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0yIGJvcmRlciBkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtbW92ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXY+e3sgY29sLmhlYWRlciB9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC90aGVhZD5cclxuICAgIDxkaXZcclxuICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIm5lc3RlZEhlYWRlci5vZmZzZXRXaWR0aCAtIDEwXCJcclxuICAgICAgW3N0eWxlLm1pbldpZHRoLnB4XT1cIm5lc3RlZEhlYWRlci5vZmZzZXRXaWR0aCAtIDEwXCJcclxuICAgID5cclxuICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydFxyXG4gICAgICAgIFtpdGVtU2l6ZV09XCJuZXN0ZWRUYWJsZXJvd0hlaWdodFwiXHJcbiAgICAgICAgY2xhc3M9XCJ2aWV3cG9ydFwiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcclxuICAgICAgICAgIChyb3c/LmRldGFpbD8ucmVzdWx0Py5sZW5ndGggPCA1XHJcbiAgICAgICAgICAgID8gbmVzdGVkVGFibGVyb3dIZWlnaHQgKiByb3c/LmRldGFpbD8ucmVzdWx0Py5sZW5ndGggKyA0MFxyXG4gICAgICAgICAgICA6IDMwMCkgKyAoaGFzSG9yaXpvbnRhbFNjcm9sbCA/IC0xMiA6IDEpXHJcbiAgICAgICAgXCJcclxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwibmVzdGVkSGVhZGVyLm9mZnNldFdpZHRoIC0gMTBcIlxyXG4gICAgICAgIFtzdHlsZS5taW5XaWR0aC5weF09XCJuZXN0ZWRIZWFkZXIub2Zmc2V0V2lkdGggLSAxMFwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIGJvcmRlci1iZWxvdyBkLWZsZXggdHJcIlxyXG4gICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgZCBvZiByb3c/LmRldGFpbD8ucmVzdWx0OyB0cmFja0J5OiB0cmFja0J5SWRcIlxyXG4gICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZXJvd0hlaWdodFwiXHJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwibmVzdGVkSGVhZGVyPy5vZmZzZXRXaWR0aFwiXHJcbiAgICAgICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwibmVzdGVkSGVhZGVyPy5vZmZzZXRXaWR0aFwiXHJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImJvZHlCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgKGNvbnRleHRtZW51KT1cIm9uUmlnaHRDbGljaygkZXZlbnQsIGQpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwicHgtNCBweS0wIHRkXCJcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiBwcmV2aWV3TmVzdGVkQ29sczsgbGV0IGogPSBpbmRleFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5mb250U2l6ZS5weF09XCJuZXN0ZWRUYWJsZXJvd0ZvbnRzaXplXCJcclxuICAgICAgICAgICAgW2F0dHIuZmllbGRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbD8ud2lkdGggfHwgMjUwXCJcclxuICAgICAgICAgICAgW3N0eWxlLm1pbldpZHRoLnB4XT1cImNvbD8ud2lkdGggfHwgMjUwXCJcclxuICAgICAgICAgICAgW3N0eWxlLm1heFdpZHRoLnB4XT1cImNvbD8ud2lkdGggfHwgMjUwXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwibmVzdGVkVGFibGVyb3dIZWlnaHQgLSAxXCJcclxuICAgICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoLnB4XT1cImNvbD8ud2lkdGhcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8IS0tIHt7IGRbY29sLmZpZWxkXSB8fCAoY29sLmlzX2Ftb3VudCA/IDAgOiBcIi1cIikgfX0gLS0+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgI2NlbGxUZXh0XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgZmxleC1ncm93LTFcIlxyXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxyXG4gICAgICAgICAgICAgICAgICBjb2wudHlwZSA9PT0gJ2RhdGUnXHJcbiAgICAgICAgICAgICAgICAgICAgPyAoZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKSB8IGRhdGUgOiBkYXRlRm9ybWF0KVxyXG4gICAgICAgICAgICAgICAgICAgIDogZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKSB8fCAnLSdcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlICE9PSAnaW1hZ2UnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuaXNfYW1vdW50XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeVN5bWJvbFxyXG4gICAgICAgICAgICAgICAgICB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFpc05lc3RlZFZhbHVlQXJyYXkoZCwgY29sLmZpZWxkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjb2wudHlwZSA9PT0gJ2RhdGUnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKGlzRGF0ZShnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKSB8IGRhdGU6IGRhdGVGb3JtYXQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpPy52YWx1ZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpPy5uYW1lIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKGQsIGNvbC5maWVsZCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0nKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKT8udmFsdWUgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpPy5uYW1lIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb2wuaXNfYW1vdW50ID8gMDogJy0nKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKGdldE5lc3RlZFZhbHVlKGQsIGNvbC5maWVsZCk/LlswXT8uZGVwYXJ0bWVudF9uYW1lIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKGQsIGNvbC5maWVsZCk/LlswXT8ucm9sZU5hbWUgfHwgZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKT8uWzBdPy5mdWxsX25hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0nKVxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAge3sgZ2V0VG90YWxBbW91bnQoY29sKSB9fVxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gJ2ltYWdlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRJbWFnZVBsYWNlaG9sZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByb3c6IGQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNsZWZ0UmlnaHROZXN0ZWRQbGFjZWhvbGRlciBsZXQtcm93PlxyXG4gIDx0YWJsZVxyXG4gICAgY2xhc3M9XCJuZXN0ZWQtdGFibGUgdGFibGUgdGFibGUtc20gdy0xMDAgbWItMFwiXHJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImJvZHlCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJcclxuICAgICAgZ3JpZFR5cGUgPT0gJ0Fzc2V0cydcclxuICAgICAgICA/IChuZXN0ZWRUYWJsZUNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0SGVpZ2h0ID8/IDApICsgMTJcclxuICAgICAgICA6ICh0YXNrTWFuYWdlbWVudENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0SGVpZ2h0ID8/IDApXHJcbiAgICBcIlxyXG4gID5cclxuICAgIDwhLS0gPGRpdiBjbGFzcz1cInRoZWFkXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cInRyIGQtZmxleCBib3JkZXItYmVsb3dcIlxyXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwibmVzdGVkVGFibGVIZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiICpuZ0Zvcj1cImxldCBfIG9mIFsxLCAyLCAzLCA0LCA1XVwiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PiAtLT5cclxuICAgIDwhLS0gPGRpdiBjbGFzcz1cInRib2R5XCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cInRyIGJvcmRlci1iZWxvd1wiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZXJvd0hlaWdodFwiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IF8gb2Ygcm93Py5kZXRhaWw/LnJlc3VsdFwiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRkXCIgKm5nRm9yPVwibGV0IF9fIG9mIFsxLCAyLCAzLCA0LCA1XVwiIGNsYXNzPVwicHktMFwiPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZXJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwibmVzdGVkVGFibGVyb3dIZWlnaHRcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj4gLS0+XHJcbiAgPC90YWJsZT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdGFza01hbmFnZW1lbnRUZW1wbGF0ZSBsZXQtdGFza0RldGFpbHM9XCJ0YXNrRGV0YWlsc1wiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwicC00XCJcclxuICAgICN0YXNrTWFuYWdlbWVudENvbnRhaW5lclxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJuZXN0ZWRUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvclwiXHJcbiAgICBbc3R5bGUuZm9udEZhaW1seV09XCJmb250RmFpbWx5XCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXRpdGxlXCI+RGVzY3JpcHRpb248L2Rpdj5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJpdGVtLWNvbnRlbnQgZmlyc3REaXZcIj5cclxuICAgICAgICB7eyB0YXNrRGV0YWlscy5kZXNjcmlwdGlvbiB9fVxyXG4gICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPHBcclxuICAgICAgICAgIFtzdHlsZS5mb250U2l6ZV09XCJib2R5VGV4dEZvbnRzU2l6ZVwiXHJcbiAgICAgICAgICBjbGFzcz1cIml0ZW0tY29udGVudCBmaXJzdERpdiB0YXNrRGVzY3JpcHRpb24gcGUtNFwiXHJcbiAgICAgICAgICBbaW5uZXJIVE1MXT1cImdldFNhZmVDb21tZW50KHRhc2tEZXRhaWxzPy5lZGl0b3JfZGVzY3JpcHRpb24pXCJcclxuICAgICAgICAgIChjbGljayk9XCJvcGVuRnVsbEltYWdlKCRldmVudClcIlxyXG4gICAgICAgID48L3A+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS10aXRsZVwiPkF0dGFjaG1lbnRzPC9kaXY+XHJcbiAgICAgICAgPGg1ICpuZ0lmPVwidGFza0RldGFpbHM/LmF0dGFjaG1lbnRzPy5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgTm8gQXR0YWNobWVudHMgZm91bmRcclxuICAgICAgICA8L2g1PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwidGFza0RldGFpbHM/LmF0dGFjaG1lbnRzPy5sZW5ndGhcIlxyXG4gICAgICAgICAgY2xhc3M9XCJpdGVtLWNvbnRlbnQgZC1mbGV4IGZsZXgtd3JhcFwiXHJcbiAgICAgICAgICBzdHlsZT1cImdhcDogMTBweFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGFcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGF0dGFjaGVtZW50IG9mIHRhc2tEZXRhaWxzPy5hdHRhY2htZW50czsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic3ltYm9sLWxhYmVsIGZzLTIgZnctc2VtaWJvbGQgdGV4dC1zdWNjZXNzIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICB0aXRsZT1cInt7IHRhc2tEZXRhaWxzPy5hdHRhY2htZW50c19uYW1lW2ldIHx8ICdBdHRhY2htZW50JyB9fVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQXR0Y2htZW50KGF0dGFjaGVtZW50KVwiXHJcbiAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9kb2N1bWVudC1pY29ucy8nICtcclxuICAgICAgICAgICAgICAgIGdldEV4dGVudGlvbihhdHRhY2hlbWVudCkgK1xyXG4gICAgICAgICAgICAgICAgJy5zdmcnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L2E+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS10aXRsZVwiPlxyXG4gICAgICAgICAgQ29tbWVudHMgKHt7IHRhc2tEZXRhaWxzPy5jb21tZW50cz8ubGVuZ3RoIH19KVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxoNSAqbmdJZj1cInRhc2tEZXRhaWxzPy5jb21tZW50cz8ubGVuZ3RoID09IDBcIj5ObyBDb21tZW50cyBmb3VuZDwvaDU+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInRhc2tEZXRhaWxzPy5jb21tZW50cz8ubGVuZ3RoXCIgY2xhc3M9XCJpdGVtLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50XCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2YgdGFza0RldGFpbHMuY29tbWVudHNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcGUtM1wiPlxyXG4gICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicGljIGltYWdlLWlucHV0LXdyYXBwZXJcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInJvd0hlaWdodCAtIDEyXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb21tZW50Py5jb21tZW50X2J5LmxvZ29cIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwie3sgY29tbWVudD8uY29tbWVudF9ieS5sb2dvIH19XCJcclxuICAgICAgICAgICAgICAgIGFsdD1cInt7IGNvbW1lbnQuY29tbWVudF9ieS5mdWxsX25hbWUgfX1cIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPCEtLSA8YXBwLWRlZmF1bHQtaW1hZ2UtcGxhY2Vob2xkZXIgKm5nSWY9XCIhY29tbWVudD8uY29tbWVudF9ieS5sb2dvXCIgdGl0bGU9XCJ7eyBjb21tZW50LmNvbW1lbnRfYnkuZnVsbF9uYW1lIH19XCIgW25hbWVdPVwiY29tbWVudC5jb21tZW50X2J5LmZ1bGxfbmFtZVwiPjwvYXBwLWRlZmF1bHQtaW1hZ2UtcGxhY2Vob2xkZXI+IC0tPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb21tZW50Py5jb21tZW50X2J5LmxvZ29cIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0RHluYW1pY0NsYXNzKGNvbW1lbnQuY29tbWVudF9ieS5mdWxsX25hbWUpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicGljIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcm91bmRlZC1jaXJjbGVcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInJvd0hlaWdodCAtIDEyXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnRTaXplLnB4XT1cInJvd0hlaWdodCAvIDNcIlxyXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBjb21tZW50LmNvbW1lbnRfYnkuZnVsbF9uYW1lIH19XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyBnZXRJbml0aWFscyhjb21tZW50LmNvbW1lbnRfYnkuZnVsbF9uYW1lKSB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtYXV0aG9yIGZzLTE0cHhcIj5cclxuICAgICAgICAgICAgICAgIHt7IGNvbW1lbnQ/LmNvbW1lbnRfYnkuZnVsbF9uYW1lIH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb21tZW50LWNvbnRlbnQgZm9yQ29tbWVudEltZ1wiXHJcbiAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImdldFNhZmVDb21tZW50KGNvbW1lbnQuY29tbWVudClcIlxyXG4gICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudC10aW1lc3RhbXBcIj5cclxuICAgICAgICAgICAgICAgIHt7IGNvbW1lbnQuY29tbWVudF9kYXRlIHwgZGF0ZSB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LXRpbWVzdGFtcFwiPlxyXG4gICAgICAgICAgICAgICAgUmVwbGllczogKHt7IGNvbW1lbnQucmVwbGllcy5sZW5ndGggfX0pXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==