ng-pli-commons 0.0.1918 → 0.0.1920

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.
@@ -657,13 +657,13 @@ export class TokenComponent {
657
657
  else if (subToken[1].toLowerCase() == TokenService.STATIC_TOKEN_SURNAME.toLowerCase()) {
658
658
  if (this.data.dataFormApplication.username &&
659
659
  this.data.dataFormApplication.username !== null) {
660
- await this.findSesionByLogin(html, token);
660
+ await this.findSesionByLogin(html, subToken[1]);
661
661
  }
662
662
  }
663
663
  else {
664
664
  // Don't find the token
665
665
  console.error('No se encontro el token', token);
666
- html = this.tokenService.replaceToken(html, subToken[1], '');
666
+ html = this.tokenService.replaceToken(html, token.value, '');
667
667
  }
668
668
  return {
669
669
  html: html,
@@ -678,7 +678,7 @@ export class TokenComponent {
678
678
  const surnames = sesion.surname !== '' && sesion.surname !== null
679
679
  ? sesion.surname + ' ' + sesion.lastname
680
680
  : sesion.lastname;
681
- html = this.tokenService.replaceToken(html, token.value, surnames);
681
+ html = this.tokenService.replaceToken(html, token, surnames);
682
682
  console.log('surname', surnames);
683
683
  }
684
684
  catch (error) {
@@ -1026,4 +1026,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
1026
1026
  }], onGenerate: [{
1027
1027
  type: Output
1028
1028
  }] } });
1029
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcGxpLWNvbW1vbnMvc3JjL2xpYi9jb21wb25lbnRzL3Rva2VuL3Rva2VuLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy9saWIvY29tcG9uZW50cy90b2tlbi90b2tlbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUlaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTixVQUFVLEVBSVYsZ0JBQWdCLEVBQ2hCLFVBQVUsRUFFVixrQkFBa0IsRUFHbEIsUUFBUSxFQUVSLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUc1RCxPQUFPLFFBQVEsQ0FBQzs7Ozs7OztBQVFoQixNQUFNLE9BQU8sY0FBYztJQTZCMUIsWUFDUyxZQUEwQixFQUMxQixZQUEwQixFQUMxQixhQUE0QixFQUM1QixxQkFBNEMsRUFDNUMsYUFBNEI7UUFKNUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQTdCckMsdUNBQXVDO1FBQzdCLGVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUVsRSxrREFBa0Q7UUFDbEQsc0JBQWlCLEdBQVksS0FBSyxDQUFDO0lBMEJoQyxDQUFDO0lBRUosUUFBUTtRQUNQLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixH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K0JBQ0MsV0FBVzswTkFNWixRQUFRO3NCQUFoQixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuXHRDb21wb25lbnQsXHJcblx0T25Jbml0LFxyXG5cdElucHV0LFxyXG5cdE91dHB1dCxcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0T25DaGFuZ2VzLFxyXG5cdFNpbXBsZUNoYW5nZXMsXHJcblx0U2ltcGxlQ2hhbmdlXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcblx0VXRpbFN0cmluZyxcclxuXHREYXRhVG9UcmFuc2xhdGVUb2tlbixcclxuXHRUb2tlbixcclxuXHRCdWRnZXREdG8sXHJcblx0RVRpcG9QcmVzdXB1ZXN0byxcclxuXHRQbGlVc3VhcmlvLFxyXG5cdHNlc2lvbixcclxuXHRBdXRoZW50aWNhdGlvblV0aWwsXHJcblx0UGxpVXNlcixcclxuXHRBcHBsaWNhdGlvbkJ1ZGdldFRvdGFsLFxyXG5cdERhdGVVdGlsLFxyXG5cdEV2YWx1YXRpb25cclxufSBmcm9tICduZy1wbGktdXRpbCc7XHJcbmltcG9ydCB7IEN1cnJlbmN5UGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFRva2VuU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Rva2VuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgJ2pxdWVyeSc7XHJcbmltcG9ydCB7IFNlc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zZXNpb24uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ3BsaS10b2tlbicsXHJcblx0dGVtcGxhdGVVcmw6ICcuL3Rva2VuLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi90b2tlbi5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRva2VuQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG5cdC8qKiBJdCBjb250YWlucyB0aGUgdGVtcGxhdGUgaHRtbCB0byB0cmFuc2xhdGUgKi9cclxuXHRASW5wdXQoKSB0ZW1wbGF0ZTogc3RyaW5nO1xyXG5cdC8qKiBJdCBjb250YWlucyB0aGUgZGF0YSB0byBpbXBsZW1lbnQgKi9cclxuXHRASW5wdXQoKSBkYXRhOiBEYXRhVG9UcmFuc2xhdGVUb2tlbjtcclxuXHQvKiogSXQgbm90aWZpZXMgdGhlIGh0bWwgaXMgZ2VuZXJhdGVkKi9cclxuXHRAT3V0cHV0KCkgb25HZW5lcmF0ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqIEl0IGVuYWJsZXMgdGhlIHZpc3VhbGl6YXRpb24gb2YgZGVzdGluYXRpb24gKi9cclxuXHRlbmFibGVEZXN0aW5hdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKiogSXQgY29udGFpbnMgdGhlIHByb20gY29kZSAqL1xyXG5cdHByb21Db2RpZ286IG51bWJlcjtcclxuXHJcblx0LyoqICovXHJcblx0bFRva2VuQ2FsY3VsYXRlZDogVG9rZW5bXTtcclxuXHQvKiogKi9cclxuXHRsRm9ybUZpZWxkc1Rva2VuOiBhbnlbXTtcclxuXHQvKiogKi9cclxuXHR1bmlxdWVWZXJpZmljYXRpb25Db2RlOiBzdHJpbmc7XHJcblx0LyoqICovXHJcblx0YnVkZ2V0RHRvUHJpbWFyeTogQnVkZ2V0RHRvO1xyXG5cdC8qKiAqL1xyXG5cdGJ1ZGdldER0b1NlY3VuZGFyeTogQnVkZ2V0RHRvO1xyXG5cdC8qKiBBcyB0aGUgbGlzdCBvZiB0b2tlbiBhcmUgbG9hZGVkIGR5bmFtaWNhbGx5LCB0aGlzIG1hbmFnZSB0aGF0IG9ubHkgcmVwbGFjZSB0aGUgaW5mbyBvbmNlLiAqL1xyXG5cdGFscmVhZHlDYWxsUmVwbGFjZVRva2VuczogYm9vbGVhbjtcclxuXHJcblx0ZXZhbHVhdGlvbjogRXZhbHVhdGlvbjtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIGN1cnJlbmN5UGlwZTogQ3VycmVuY3lQaXBlLFxyXG5cdFx0cHJpdmF0ZSB0b2tlblNlcnZpY2U6IFRva2VuU2VydmljZSxcclxuXHRcdHByaXZhdGUgdG9hc3RyU2VydmljZTogVG9hc3RyU2VydmljZSxcclxuXHRcdHByaXZhdGUgYXV0aGVudGljYXRpb25TZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHNlc2lvblNlcnZpY2U6IFNlc2lvblNlcnZpY2VcclxuXHQpIHt9XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0dGhpcy5sVG9rZW5DYWxjdWxhdGVkID0gbnVsbDtcclxuXHRcdHRoaXMubEZvcm1GaWVsZHNUb2tlbiA9IG51bGw7XHJcblx0XHR0aGlzLmJ1ZGdldER0b1ByaW1hcnkgPSBudWxsO1xyXG5cdFx0dGhpcy5idWRnZXREdG9TZWN1bmRhcnkgPSBudWxsO1xyXG5cdFx0dGhpcy5ldmFsdWF0aW9uID0gbnVsbDtcclxuXHR9XHJcblxyXG5cdC8qKiBJdCBtYW5hZ2VzIHRoZSBjaGFuZ2Ugb2YgdGhlIGV2ZXJ5IEBJbnB1dCAqL1xyXG5cdG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuXHRcdC8vIEV2ZXJ5IHRpbWUgdGhhdCBpbnB1dCB2YWx1ZXMgY2hhbmdlLCBjYWxsIG5ldyB2ZXJpZmljYXRpb24gY29kZVxyXG5cdFx0dGhpcy51bmlxdWVWZXJpZmljYXRpb25Db2RlID0gbnVsbDtcclxuXHRcdGNvbnN0IHRlbXBsYXRlOiBTaW1wbGVDaGFuZ2UgPSBjaGFuZ2VzLnRlbXBsYXRlO1xyXG5cdFx0Y29uc3QgZGF0YTogU2ltcGxlQ2hhbmdlID0gY2hhbmdlcy5kYXRhO1xyXG5cclxuXHRcdGlmICh0ZW1wbGF0ZSAmJiB0ZW1wbGF0ZS5jdXJyZW50VmFsdWUpIHtcclxuXHRcdFx0dGhpcy50ZW1wbGF0ZSA9IHRlbXBsYXRlLmN1cnJlbnRWYWx1ZTtcclxuXHRcdH1cclxuXHRcdGlmIChkYXRhICYmIGRhdGEuY3VycmVudFZhbHVlKSB7XHJcblx0XHRcdHRoaXMuZGF0YSA9IGRhdGEuY3VycmVudFZhbHVlO1xyXG5cdFx0XHR0aGlzLnByb21Db2RpZ28gPSB0aGlzLmRhdGEucHJvbUNvZGlnbztcclxuXHRcdH1cclxuXHRcdGlmICh0aGlzLmRhdGEpIHtcclxuXHRcdFx0dGhpcy5idWRnZXREdG9QcmltYXJ5ID0gdGhpcy5kYXRhLmJ1ZGdldER0b1ByaW1hcnkgPyB0aGlzLmRhdGEuYnVkZ2V0RHRvUHJpbWFyeSA6IG51bGw7XHJcblx0XHRcdHRoaXMuYnVkZ2V0RHRvU2VjdW5kYXJ5ID0gdGhpcy5kYXRhLmJ1ZGdldER0b1NlY3VuZGFyeVxyXG5cdFx0XHRcdD8gdGhpcy5kYXRhLmJ1ZGdldER0b1NlY3VuZGFyeVxyXG5cdFx0XHRcdDogbnVsbDtcclxuXHRcdFx0dGhpcy5ldmFsdWF0aW9uID0gdGhpcy5kYXRhLmV2YWx1YXRpb247XHJcblx0XHR9XHJcblx0XHRpZiAodGhpcy5kYXRhICYmIHRoaXMudGVtcGxhdGUgJiYgdGhpcy5wcm9tQ29kaWdvKSB7XHJcblx0XHRcdGNvbnN0IHNlbGYgPSB0aGlzO1xyXG5cdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHRzZWxmLmluaXQoKTtcclxuXHRcdFx0fSwgMzAwKTtcclxuXHRcdH1cclxuXHR9XHJcblx0LyoqIEl0IGluaXRpYWxpemVzIHRoZSBwcm9jZXNzIG9mIHRyYW5zbGF0aW9uICovXHJcblx0cHJpdmF0ZSBpbml0KCkge1xyXG5cdFx0dGhpcy50cmFuc2xhdGVUb2tlbnModGhpcy50ZW1wbGF0ZSwgdGhpcy5kYXRhLmRhdGFGb3JtQnlGb3JtKTtcclxuXHR9XHJcblxyXG5cdHRyYW5zbGF0ZUNhdGVnb3J5KGNhdGVnb3J5TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuXHRcdGNvbnN0IGxhbmd1YWdlQnlEZWZhdWx0ID0gJ2VuJztcclxuXHRcdC8vIElmIGRvbid0IGZpbmQgdGhlIGxhbmcsIGdldCBpbiBlbi5cclxuXHRcdGxldCBjYXRlZ29yeU5hbWVCeURlZjogc3RyaW5nID0gY2F0ZWdvcnlOYW1lO1xyXG5cdFx0aWYgKGNhdGVnb3J5TmFtZSAmJiB0aGlzLmRhdGEuY2F0ZWdvcmllcyAmJiB0aGlzLmRhdGEuaWRpb21hKSB7XHJcblx0XHRcdC8vIElmIHRoZSBsb2NhbGUgc2VsZWN0IGlzIGVzLCB0aGlzIGlzIHRoZSBkYWZ1bHQgY2F0ZWdvcnkgbGFuZ3VhZ2VcclxuXHRcdFx0aWYgKHRoaXMuZGF0YS5pZGlvbWEubG9jYWxlID09PSAnZXMnKSB7XHJcblx0XHRcdFx0cmV0dXJuIGNhdGVnb3J5TmFtZTtcclxuXHRcdFx0fVxyXG5cdFx0XHRmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIHRoaXMuZGF0YS5jYXRlZ29yaWVzKSB7XHJcblx0XHRcdFx0aWYgKGNhdGVnb3J5Lmxpc3RhUnVicm9JZGlvbWEgJiYgY2F0ZWdvcnkucnViUnVicm8gPT09IGNhdGVnb3J5TmFtZSkge1xyXG5cdFx0XHRcdFx0Zm9yIChjb25zdCBsYW5ndWFnZSBvZiBjYXRlZ29yeS5saXN0YVJ1YnJvSWRpb21hKSB7XHJcblx0XHRcdFx0XHRcdGlmIChsYW5ndWFnZS5ydWJpSWRpb21hID09PSB0aGlzLmRhdGEuaWRpb21hLmxvY2FsZSkge1xyXG5cdFx0XHRcdFx0XHRcdHJldHVybiBsYW5ndWFnZS5ydWJpVHJhZHVjY2lvbjtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRpZiAobGFuZ3VhZ2UucnViaUlkaW9tYSA9PT0gbGFuZ3VhZ2VCeURlZmF1bHQpIHtcclxuXHRcdFx0XHRcdFx0XHRjYXRlZ29yeU5hbWVCeURlZiA9IGxhbmd1YWdlLnJ1YmlUcmFkdWNjaW9uO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBjYXRlZ29yeU5hbWVCeURlZjtcclxuXHR9XHJcblxyXG5cdHRyYW5zbGF0ZVRva2VucyhodG1sOiBzdHJpbmcsIGxpc3REYXRhOiBhbnkpIHtcclxuXHRcdHRoaXMuYWxyZWFkeUNhbGxSZXBsYWNlVG9rZW5zID0gZmFsc2U7XHJcblx0XHRjb25zdCBsVG9rZW5zOiBhbnlbXSA9IHRoaXMuZ2V0TGlzdFRva2VucyhodG1sKTtcclxuXHRcdGlmICghbFRva2VucyB8fCBPYmplY3Qua2V5cyhsVG9rZW5zKS5sZW5ndGggPT09IDApIHtcclxuXHRcdFx0dGhpcy50ZW1wbGF0ZSA9IGh0bWw7XHJcblx0XHR9XHJcblx0XHR0aGlzLmNhbGxMaXN0VG9rZW5zKGxUb2tlbnMsIGh0bWwsIGxpc3REYXRhKTtcclxuXHR9XHJcblxyXG5cdGNhbGxMaXN0VG9rZW5zKGxUb2tlbnM6IGFueVtdLCBodG1sOiBzdHJpbmcsIGxpc3REYXRhOiBhbnkpIHtcclxuXHRcdGlmIChcclxuXHRcdFx0bFRva2Vuc1tUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQ0FMQ1VMQVRFRF0gJiZcclxuXHRcdFx0T2JqZWN0LmtleXMobFRva2Vuc1tUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQ0FMQ1VMQVRFRF0pLmxlbmd0aCA+IDBcclxuXHRcdCkge1xyXG5cdFx0XHRpZiAodGhpcy5sVG9rZW5DYWxjdWxhdGVkKSB7XHJcblx0XHRcdFx0dGhpcy52YWxpZGF0ZUxpc3RUb2tlbnMobFRva2VucywgaHRtbCwgbGlzdERhdGEpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMudG9rZW5TZXJ2aWNlLmdldExpc3RCeVByb21Db2RpZ28odGhpcy5wcm9tQ29kaWdvKS5zdWJzY3JpYmUoXHJcblx0XHRcdFx0XHQobFRva2VuQ2FsY3VsYXRlZDogVG9rZW5bXSkgPT4ge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmxUb2tlbkNhbGN1bGF0ZWQgPSBsVG9rZW5DYWxjdWxhdGVkO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnZhbGlkYXRlTGlzdFRva2VucyhsVG9rZW5zLCBodG1sLCBsaXN0RGF0YSk7XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0KGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNhbGxMaXN0VG9rZW5zIC1nZXRMaXN0QnlQcm9tQ29kaWdvJywgZXJyb3IpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnRvYXN0clNlcnZpY2UuZXJyb3IoJ0Vycm9yIGdlbmVyYW5kbyBjYXJ0YScpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMudmFsaWRhdGVMaXN0VG9rZW5zKGxUb2tlbnMsIGh0bWwsIGxpc3REYXRhKTtcclxuXHRcdH1cclxuXHRcdGlmIChcclxuXHRcdFx0bFRva2Vuc1tUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfRk9STV0gJiZcclxuXHRcdFx0T2JqZWN0LmtleXMobFRva2Vuc1tUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfRk9STV0pLmxlbmd0aCA+IDBcclxuXHRcdCkge1xyXG5cdFx0XHRpZiAodGhpcy5sRm9ybUZpZWxkc1Rva2VuKSB7XHJcblx0XHRcdFx0dGhpcy52YWxpZGF0ZUxpc3RUb2tlbnMobFRva2VucywgaHRtbCwgbGlzdERhdGEpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMudG9rZW5TZXJ2aWNlLmdldEZvcm1GaWVsZHNCeVByb21Db2RlKHRoaXMucHJvbUNvZGlnbykudGhlbihcclxuXHRcdFx0XHRcdChsRm9ybUZpZWxkc1Rva2VuOiBhbnlbXSkgPT4ge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmxGb3JtRmllbGRzVG9rZW4gPSBsRm9ybUZpZWxkc1Rva2VuO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnZhbGlkYXRlTGlzdFRva2VucyhsVG9rZW5zLCBodG1sLCBsaXN0RGF0YSk7XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0KGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNhbGxMaXN0VG9rZW5zIC1nZXRGb3JtRmllbGRzQnlQcm9tQ29kZScsIGVycm9yKTtcclxuXHRcdFx0XHRcdFx0dGhpcy50b2FzdHJTZXJ2aWNlLmVycm9yKCdFcnJvciBnZW5lcmFuZG8gY2FydGEnKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQpO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLnZhbGlkYXRlTGlzdFRva2VucyhsVG9rZW5zLCBodG1sLCBsaXN0RGF0YSk7XHJcblx0XHR9XHJcblx0XHRpZiAoXHJcblx0XHRcdGxUb2tlbnNbVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1NUQVRJQ10gJiZcclxuXHRcdFx0T2JqZWN0LmtleXMobFRva2Vuc1tUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfU1RBVElDXSkubGVuZ3RoID4gMFxyXG5cdFx0KSB7XHJcblx0XHRcdGlmICh0aGlzLnVuaXF1ZVZlcmlmaWNhdGlvbkNvZGUgIT09IG51bGwpIHtcclxuXHRcdFx0XHR0aGlzLnZhbGlkYXRlTGlzdFRva2VucyhsVG9rZW5zLCBodG1sLCBsaXN0RGF0YSk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Y29uc3QgdG9rZW5WZXJpZmljYXRpb25Db2RlOiBhbnlbXSA9IGxUb2tlbnNbVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1NUQVRJQ10uZmluZChcclxuXHRcdFx0XHRcdCh0b2tlbikgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zdCBzdWJUb2tlbjogc3RyaW5nW10gPSB0b2tlbi5rZXlcclxuXHRcdFx0XHRcdFx0XHQucmVwbGFjZSgneycsICcnKVxyXG5cdFx0XHRcdFx0XHRcdC5yZXBsYWNlKCd9JywgJycpXHJcblx0XHRcdFx0XHRcdFx0LnNwbGl0KCdfJyk7XHJcblx0XHRcdFx0XHRcdHJldHVybiAoXHJcblx0XHRcdFx0XHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PVxyXG5cdFx0XHRcdFx0XHRcdFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9DT0RJR09fVkVSSUZJQ0FDSU9OLnRvTG93ZXJDYXNlKClcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQpO1xyXG5cdFx0XHRcdC8vIE9ubHkgaWYgdGhlIHN0YXRpYyB0b2tlbiBpcyB0aGUgdW5pcXVlIHZlcmlmaWNhdGlvbiBjb2RlXHJcblx0XHRcdFx0aWYgKHRva2VuVmVyaWZpY2F0aW9uQ29kZSAmJiBPYmplY3Qua2V5cyh0b2tlblZlcmlmaWNhdGlvbkNvZGUpLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdGxldCBwbGlVc3VhcmlvT2JqZWN0ID0gQXV0aGVudGljYXRpb25VdGlsLmdldFBsaVVzdWFyaW8oKTtcclxuXHRcdFx0XHRcdGlmICghcGxpVXN1YXJpb09iamVjdCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnVuaXF1ZVZlcmlmaWNhdGlvbkNvZGUgPSAnJztcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcihcclxuXHRcdFx0XHRcdFx0XHQnTm8gc2UgbG9ncm8gY29uc3VsdGFyIGVsIHVzdWFyaW8gcGFyYSBjb25zdWx0YXIgZWwgdG9rZW4nLFxyXG5cdFx0XHRcdFx0XHRcdHBsaVVzdWFyaW9PYmplY3RcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0dGhpcy52YWxpZGF0ZUxpc3RUb2tlbnMobFRva2VucywgaHRtbCwgbGlzdERhdGEpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0Y29uc3QgcGxpVXN1YXJpbzogUGxpVXN1YXJpbyA9IE9iamVjdC5hc3NpZ24oXHJcblx0XHRcdFx0XHRcdFx0bmV3IFBsaVVzdWFyaW8oKSxcclxuXHRcdFx0XHRcdFx0XHRKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHBsaVVzdWFyaW9PYmplY3QpKVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5nZXRUb2tlbkJ5TG9naW4ocGxpVXN1YXJpby51c3VMb2dpbikuc3Vic2NyaWJlKFxyXG5cdFx0XHRcdFx0XHRcdChzZXNpb246IHNlc2lvbikgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gVHJ5IHRvIGdldCB0aGUgdW5pcXVlIHZlcmlmaWNhdGlvbiBjb2RlIHdpdGggdGhlIGRlZmF1bHQgdmFsdWUgb2Ygc2VzaW9uIGlmIGlzIG5vdCBhIHZhbGlkIHZhbHVlXHJcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBzZXNpb25WYWx1ZSA9IHNlc2lvbiA/IHNlc2lvbi5zZXNpb24gOiAnMSc7XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdldFVuaXF1ZVZlcmlmaWNhdGlvbkNvZGUoXHJcblx0XHRcdFx0XHRcdFx0XHRcdHBsaVVzdWFyaW8udXN1TG9naW4sXHJcblx0XHRcdFx0XHRcdFx0XHRcdHNlc2lvblZhbHVlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRsVG9rZW5zLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRodG1sLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRsaXN0RGF0YVxyXG5cdFx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0J0Vycm9yIGNvbnN1bHRhbmRvIGVsIGxvZ2luIGVuIFBMSVMsIGdldFRva2VuQnlMb2dpbicsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGVycm9yXHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gVHJ5IHRvIGdldCB0aGUgdW5pcXVlIHZlcmlmaWNhdGlvbiBjb2RlIHdpdGggdGhlIGRlZmF1bHQgdmFsdWUgb2Ygc2VzaW9uXHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdldFVuaXF1ZVZlcmlmaWNhdGlvbkNvZGUoXHJcblx0XHRcdFx0XHRcdFx0XHRcdHBsaVVzdWFyaW8udXN1TG9naW4sXHJcblx0XHRcdFx0XHRcdFx0XHRcdCcxJyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0bFRva2VucyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0aHRtbCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0bGlzdERhdGFcclxuXHRcdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0XHQvL3RoaXMudG9hc3RyU2VydmljZS5lcnJvcihcIkVycm9yIGdlbmVyYW5kbyBjYXJ0YVwiKTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHRoaXMudW5pcXVlVmVyaWZpY2F0aW9uQ29kZSA9ICcnO1xyXG5cdFx0XHRcdFx0dGhpcy52YWxpZGF0ZUxpc3RUb2tlbnMobFRva2VucywgaHRtbCwgbGlzdERhdGEpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy52YWxpZGF0ZUxpc3RUb2tlbnMobFRva2VucywgaHRtbCwgbGlzdERhdGEpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0IHRoZSB1bmlxdWUgdmVyaWZpY2F0aW9uIGNvZGUgYW5kIGNhbGwgdmFsaWRhdGVMaXN0VG9rZW5zIG1ldGhvZFxyXG5cdCAqL1xyXG5cdGdldFVuaXF1ZVZlcmlmaWNhdGlvbkNvZGUoXHJcblx0XHR1c3VMb2dpbjogc3RyaW5nLFxyXG5cdFx0c2VzaW9uOiBzdHJpbmcsXHJcblx0XHRsVG9rZW5zOiBhbnlbXSxcclxuXHRcdGh0bWw6IHN0cmluZyxcclxuXHRcdGxpc3REYXRhOiBhbnlcclxuXHQpIHtcclxuXHRcdHRoaXMudG9rZW5TZXJ2aWNlLmdldFVuaXF1ZVZlcmlmaWNhdGlvbkNvZGUodXN1TG9naW4sIHNlc2lvbikuc3Vic2NyaWJlKFxyXG5cdFx0XHQodW5pcXVlQ29kZVZhbHVlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRjb25zdCB1bmlxdWVDb2RlOiBzdHJpbmcgPSB1bmlxdWVDb2RlVmFsdWUuY29kaWdvVW5pY287XHJcblx0XHRcdFx0dGhpcy51bmlxdWVWZXJpZmljYXRpb25Db2RlID1cclxuXHRcdFx0XHRcdHVuaXF1ZUNvZGUuc3Vic3RyaW5nKDAsIDQpICsgJyAnICsgdW5pcXVlQ29kZS5zdWJzdHJpbmcoNCwgOCk7XHJcblx0XHRcdFx0dGhpcy52YWxpZGF0ZUxpc3RUb2tlbnMobFRva2VucywgaHRtbCwgbGlzdERhdGEpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHQoZXJyb3IpID0+IHtcclxuXHRcdFx0XHRjb25zb2xlLmVycm9yKCdFcnJvciBjYWxsTGlzdFRva2VucyAtZ2V0TGlzdEJ5UHJvbUNvZGlnbycsIGVycm9yKTtcclxuXHRcdFx0XHR0aGlzLnRvYXN0clNlcnZpY2UuZXJyb3IoJ0Vycm9yIGdlbmVyYW5kbyBjYXJ0YScpO1xyXG5cdFx0XHR9XHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0dmFsaWRhdGVMaXN0VG9rZW5zKGxUb2tlbnM6IGFueVtdLCBodG1sOiBzdHJpbmcsIGxpc3REYXRhOiBhbnkpIHtcclxuXHRcdGxldCBmaW5pc2hMb2FkTGlzdEZvcm06IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRcdGxldCBmaW5pc2hMb2FkTGlzdENhbGN1bGF0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRcdGxldCBmaW5pc2hMb2FkTGlzdFN0YXRpYzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdFx0Y29uc3QgZmluaXNoTG9hZExpc3RCdWRnZXQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cdFx0aWYgKFxyXG5cdFx0XHRsVG9rZW5zW1Rva2VuU2VydmljZS5UT0tFTl9MQUJFTF9GT1JNXSAmJlxyXG5cdFx0XHRsVG9rZW5zW1Rva2VuU2VydmljZS5UT0tFTl9MQUJFTF9GT1JNXS5sZW5ndGggPiAwXHJcblx0XHQpIHtcclxuXHRcdFx0ZmluaXNoTG9hZExpc3RGb3JtID0gdGhpcy5sRm9ybUZpZWxkc1Rva2VuID8gdHJ1ZSA6IGZhbHNlO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0ZmluaXNoTG9hZExpc3RGb3JtID0gdHJ1ZTtcclxuXHRcdH1cclxuXHRcdGlmIChcclxuXHRcdFx0bFRva2Vuc1tUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQ0FMQ1VMQVRFRF0gJiZcclxuXHRcdFx0bFRva2Vuc1tUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQ0FMQ1VMQVRFRF0ubGVuZ3RoID4gMFxyXG5cdFx0KSB7XHJcblx0XHRcdGZpbmlzaExvYWRMaXN0Q2FsY3VsYXRlZCA9IHRoaXMubFRva2VuQ2FsY3VsYXRlZCA/IHRydWUgOiBmYWxzZTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGZpbmlzaExvYWRMaXN0Q2FsY3VsYXRlZCA9IHRydWU7XHJcblx0XHR9XHJcblx0XHRpZiAoXHJcblx0XHRcdGxUb2tlbnNbVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1NUQVRJQ10gJiZcclxuXHRcdFx0bFRva2Vuc1tUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfU1RBVElDXS5sZW5ndGggPiAwXHJcblx0XHQpIHtcclxuXHRcdFx0ZmluaXNoTG9hZExpc3RTdGF0aWMgPSB0aGlzLnVuaXF1ZVZlcmlmaWNhdGlvbkNvZGUgIT09IG51bGwgPyB0cnVlIDogZmFsc2U7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRmaW5pc2hMb2FkTGlzdFN0YXRpYyA9IHRydWU7XHJcblx0XHR9XHJcblx0XHRpZiAoXHJcblx0XHRcdGZpbmlzaExvYWRMaXN0Rm9ybSAmJlxyXG5cdFx0XHRmaW5pc2hMb2FkTGlzdEJ1ZGdldCAmJlxyXG5cdFx0XHRmaW5pc2hMb2FkTGlzdFN0YXRpYyAmJlxyXG5cdFx0XHRmaW5pc2hMb2FkTGlzdENhbGN1bGF0ZWQgJiZcclxuXHRcdFx0IXRoaXMuYWxyZWFkeUNhbGxSZXBsYWNlVG9rZW5zXHJcblx0XHQpIHtcclxuXHRcdFx0dGhpcy5hbHJlYWR5Q2FsbFJlcGxhY2VUb2tlbnMgPSB0cnVlO1xyXG5cdFx0XHR0aGlzLnJlcGxhY2VUb2tlbnNXaXRoRGF0YShsVG9rZW5zLCBodG1sLCBsaXN0RGF0YSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRhc3luYyByZXBsYWNlVG9rZW5zV2l0aERhdGEobFRva2VuczogYW55W10sIGh0bWw6IHN0cmluZywgbGlzdERhdGE6IGFueSkge1xyXG5cdFx0Y29uc3QgbERhdGFPcmc6IGFueVtdID0gW107XHJcblx0XHRjb25zdCBsRm9ybUZpZWxkc1Rva2VuT3JnOiBhbnlbXSA9IFtdO1xyXG5cdFx0aWYgKFxyXG5cdFx0XHQobFRva2Vuc1tUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfRk9STV0gfHxcclxuXHRcdFx0XHRsVG9rZW5zW1Rva2VuU2VydmljZS5UT0tFTl9MQUJFTF9DQUxDVUxBVEVEXSkgJiZcclxuXHRcdFx0bGlzdERhdGFcclxuXHRcdCkge1xyXG5cdFx0XHRmb3IgKGNvbnN0IGRhdGFGb3JtIGluIGxpc3REYXRhKSB7XHJcblx0XHRcdFx0bERhdGFPcmdbZGF0YUZvcm0udG9Mb3dlckNhc2UoKV0gPSBsaXN0RGF0YVtkYXRhRm9ybV07XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKHRoaXMubEZvcm1GaWVsZHNUb2tlbikge1xyXG5cdFx0XHRcdGZvciAoY29uc3QgZm9ybUZpZWxkVG9rZW4gb2YgdGhpcy5sRm9ybUZpZWxkc1Rva2VuKSB7XHJcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHZhbHVlc0ZpZWxkIG9mIGZvcm1GaWVsZFRva2VuLnZhbHVlKSB7XHJcblx0XHRcdFx0XHRcdGNvbnN0IGtleVRva2VuOiBzdHJpbmcgPVxyXG5cdFx0XHRcdFx0XHRcdCckeycgKyBmb3JtRmllbGRUb2tlbi50aXRsZS5rZXkgKyAnXycgKyB2YWx1ZXNGaWVsZC5rZXkgKyAnfSc7XHJcblx0XHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW5Pcmdba2V5VG9rZW5dID0gdmFsdWVzRmllbGQ7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRjb25zdCBsVG9rZW5zQ2FsY3VsYXRlZDogYW55W10gPSBbXTtcclxuXHRcdGlmIChsVG9rZW5zW1Rva2VuU2VydmljZS5UT0tFTl9MQUJFTF9DQUxDVUxBVEVEXSkge1xyXG5cdFx0XHRpZiAodGhpcy5sVG9rZW5DYWxjdWxhdGVkKSB7XHJcblx0XHRcdFx0Zm9yIChjb25zdCB0b2tlbkNhbCBvZiB0aGlzLmxUb2tlbkNhbGN1bGF0ZWQpIHtcclxuXHRcdFx0XHRcdGxUb2tlbnNDYWxjdWxhdGVkW1V0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyh0b2tlbkNhbC5uYW1lKV0gPVxyXG5cdFx0XHRcdFx0XHR0b2tlbkNhbDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGxldCB0eXBlVG9rZW46IGFueTtcclxuXHRcdGNvbnN0IHRva2VuVHlwZVRyYW5zbGF0ZWQ6IGFueSA9IFtdO1xyXG5cdFx0Zm9yICh0eXBlVG9rZW4gaW4gbFRva2Vucykge1xyXG5cdFx0XHRpZiAoIWxUb2tlbnNbdHlwZVRva2VuXSkge1xyXG5cdFx0XHRcdGNvbnRpbnVlO1xyXG5cdFx0XHR9XHJcblx0XHRcdGNvbnN0IHRva2Vuc1R5cGU6IGFueVtdID0gbFRva2Vuc1t0eXBlVG9rZW5dO1xyXG5cdFx0XHR0b2tlblR5cGVUcmFuc2xhdGVkW3R5cGVUb2tlbl0gPSBbXTtcclxuXHRcdFx0Zm9yIChjb25zdCB0b2tlbiBvZiB0b2tlbnNUeXBlKSB7XHJcblx0XHRcdFx0bGV0IHRva2VuVHJhbnNsYXRlZCA9IG51bGw7XHJcblx0XHRcdFx0Y29uc3Qgc3ViVG9rZW46IHN0cmluZ1tdID0gdG9rZW4ua2V5LnJlcGxhY2UoJ3snLCAnJykucmVwbGFjZSgnfScsICcnKS5zcGxpdCgnXycpO1xyXG5cdFx0XHRcdHN3aXRjaCAodHlwZVRva2VuKSB7XHJcblx0XHRcdFx0XHRjYXNlIFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9GT1JNOiAvLyBGb3JtXHJcblx0XHRcdFx0XHRcdGxldCB2YWx1ZURhdGEgPSBudWxsO1xyXG5cdFx0XHRcdFx0XHRjb25zdCBkYXRhT3JnS2V5ID0gc3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKTtcclxuXHRcdFx0XHRcdFx0Ly8gUHV0IHRoaXMga2V5IGJlY2F1c2UgdGhlcmUgbm8gb3RoZXIgd2F5IHRvIGRpZmZlcmVudGlhdGUgdGhlIHNhbWUga2V5IGluIGRpZmZlcmVudHMgZm9ybXNcclxuXHRcdFx0XHRcdFx0Y29uc3QgZGF0YU9yZ0tleUJ5Rm9ybSA9XHJcblx0XHRcdFx0XHRcdFx0c3ViVG9rZW5bMF0uc3Vic3RyaW5nKDEpICsgJ18nICsgc3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKTtcclxuXHRcdFx0XHRcdFx0Y29uc3QgZGF0YU9yZ1ZhbHVlID0gbERhdGFPcmcuaGFzT3duUHJvcGVydHkoZGF0YU9yZ0tleSlcclxuXHRcdFx0XHRcdFx0XHQ/IGxEYXRhT3JnW2RhdGFPcmdLZXldXHJcblx0XHRcdFx0XHRcdFx0OiBsRGF0YU9yZy5oYXNPd25Qcm9wZXJ0eShkYXRhT3JnS2V5QnlGb3JtKVxyXG5cdFx0XHRcdFx0XHRcdD8gbERhdGFPcmdbZGF0YU9yZ0tleUJ5Rm9ybV1cclxuXHRcdFx0XHRcdFx0XHQ6IG51bGw7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnN0IGRhdGFPcmdWYWx1ZUJ5Rm9ybSA9IGxEYXRhT3JnW2RhdGFPcmdLZXlCeUZvcm1dO1xyXG5cdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0c3ViVG9rZW4ubGVuZ3RoID09PSAzICYmXHJcblx0XHRcdFx0XHRcdFx0dHlwZW9mIGRhdGFPcmdWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiZcclxuXHRcdFx0XHRcdFx0XHRkYXRhT3JnVmFsdWUgIT09IG51bGwgJiZcclxuXHRcdFx0XHRcdFx0XHRkYXRhT3JnVmFsdWUuaGFzT3duUHJvcGVydHkoc3ViVG9rZW5bMl0pXHJcblx0XHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRcdHZhbHVlRGF0YSA9IGRhdGFPcmdWYWx1ZVtzdWJUb2tlblsyXV07XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdFx0XHRcdFx0c3ViVG9rZW4ubGVuZ3RoID09PSAyICYmXHJcblx0XHRcdFx0XHRcdFx0dHlwZW9mIGRhdGFPcmdWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiZcclxuXHRcdFx0XHRcdFx0XHRkYXRhT3JnVmFsdWUgIT09IG51bGxcclxuXHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0dmFsdWVEYXRhID0gZGF0YU9yZ1ZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChsRm9ybUZpZWxkc1Rva2VuT3JnW3Rva2VuLmtleV0pIHtcclxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlRGF0YSA9IHRoaXMudG9rZW5TZXJ2aWNlLmdldFZhbHVlRnJvbUZvcm1GaWVsZChcclxuXHRcdFx0XHRcdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbk9yZ1t0b2tlbi5rZXldLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZURhdGFcclxuXHRcdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdHZhbHVlRGF0YSA9IHZhbHVlRGF0YSA/IHZhbHVlRGF0YSA6ICcnO1xyXG5cdFx0XHRcdFx0XHR0b2tlblRyYW5zbGF0ZWQgPSB2YWx1ZURhdGE7XHJcblx0XHRcdFx0XHRcdGh0bWwgPSB0aGlzLnRva2VuU2VydmljZS5yZXBsYWNlVG9rZW4oaHRtbCwgdG9rZW4udmFsdWUsIHZhbHVlRGF0YSk7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSBUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQlVER0VUOiAvL0J1ZGdldFxyXG5cdFx0XHRcdFx0XHRjb25zdCBidWRnZXRSZXNvbHZlVG9rZW4gPSB0aGlzLnJlc29sdmVCdWRnZXRUb2tlbihodG1sLCB0b2tlbiwgc3ViVG9rZW4pO1xyXG5cdFx0XHRcdFx0XHRodG1sID0gYnVkZ2V0UmVzb2x2ZVRva2VuLmh0bWw7XHJcblx0XHRcdFx0XHRcdHRva2VuVHJhbnNsYXRlZCA9IGJ1ZGdldFJlc29sdmVUb2tlbi52YWx1ZTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9UQVNLTDogLy9UYXNrXHJcblx0XHRcdFx0XHRcdGNvbnN0IHRhc2tSZXNvbHZlVG9rZW4gPSB0aGlzLnJlc29sdmVUYXNrb2tlbihodG1sLCB0b2tlbiwgc3ViVG9rZW4pO1xyXG5cdFx0XHRcdFx0XHRodG1sID0gdGFza1Jlc29sdmVUb2tlbi5odG1sO1xyXG5cdFx0XHRcdFx0XHR0b2tlblRyYW5zbGF0ZWQgPSB0YXNrUmVzb2x2ZVRva2VuLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1NUQVRJQzogLy9TdGF0aWNcclxuXHRcdFx0XHRcdFx0Y29uc3Qgc3RhdGljUmVzb2x2ZVRva2VuID0gYXdhaXQgdGhpcy5yZXNvbHZlU3RhdGljVG9rZW4oXHJcblx0XHRcdFx0XHRcdFx0aHRtbCxcclxuXHRcdFx0XHRcdFx0XHR0b2tlbixcclxuXHRcdFx0XHRcdFx0XHRzdWJUb2tlblxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRodG1sID0gc3RhdGljUmVzb2x2ZVRva2VuLmh0bWw7XHJcblx0XHRcdFx0XHRcdHRva2VuVHJhbnNsYXRlZCA9IHN0YXRpY1Jlc29sdmVUb2tlbi52YWx1ZTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9DQUxDVUxBVEVEOiAvL0NhbGN1bGF0ZWRcclxuXHRcdFx0XHRcdFx0Ly8gUmVwbGFjZXMgZGUgdG9rZW5zIG9mIHRoZSBmb3JtdWxhXHJcblx0XHRcdFx0XHRcdGNvbnN0IHRva2VuTmFtZTogc3RyaW5nID0gbFRva2Vuc0NhbGN1bGF0ZWRbc3ViVG9rZW5bMV1dLm5hbWU7XHJcblx0XHRcdFx0XHRcdGxldCBmb3JtdWxhOiBzdHJpbmcgPSBsVG9rZW5zQ2FsY3VsYXRlZFtzdWJUb2tlblsxXV0uZm9ybXVsYTtcclxuXHRcdFx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdFx0XHQvL0FRVUlcclxuXHRcdFx0XHRcdFx0XHRmb3JtdWxhID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2Vuc0Zyb21MaXN0T2JqZWN0KFxyXG5cdFx0XHRcdFx0XHRcdFx0dG9rZW5OYW1lLFxyXG5cdFx0XHRcdFx0XHRcdFx0Zm9ybXVsYSxcclxuXHRcdFx0XHRcdFx0XHRcdGxEYXRhT3JnXHJcblx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcclxuXHRcdFx0XHRcdFx0XHRmb3JtdWxhID0gbnVsbDtcclxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKGVycm9yLmVycm9yID8gZXJyb3IuZXJyb3IgOiBlcnJvcik7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy50b2FzdHJTZXJ2aWNlLndhcm5pbmcoZXJyb3IubWVzc2FnZSwgZXJyb3IudGl0dGxlKTtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0Ly8gVHJ5IHRvIGV2YWx1YXRlIHRoZSBmb3JtdWxhXHJcblx0XHRcdFx0XHRcdGxldCByZXN1bHQ6IGFueSA9IG51bGw7XHJcblx0XHRcdFx0XHRcdGlmIChmb3JtdWxhICE9PSBudWxsKSB7XHJcblx0XHRcdFx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdFx0XHRcdHJlc3VsdCA9IGZvcm11bGEuc3RhcnRzV2l0aCgnZmlsZTovLycpXHJcblx0XHRcdFx0XHRcdFx0XHRcdD8gXCI8aW1nIHdpZHRoPScyNTBweCcgaGVpZ2h0PSdhdXRvJyBzcmM9J1wiICsgZm9ybXVsYSArIFwiJy8+XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0OiBldmFsKGZvcm11bGEpO1xyXG5cdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKGUpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoXHJcblx0XHRcdFx0XHRcdFx0XHRcdCdFcnJvciBldmFsdWF0aW5nIHRoZSBmb3JtdWxhLicsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGxUb2tlbnNDYWxjdWxhdGVkLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRzdWJUb2tlbixcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZVxyXG5cdFx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMudG9hc3RyU2VydmljZS5lcnJvcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0J05vIHNlIGxvZ3JvIGV2YWx1YXIgbGEgZm9ybXVsYXIgZGVsIHRva2VuICcgKyB0b2tlbk5hbWUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdCdFcnJvciEnXHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRpZiAocmVzdWx0ICE9PSBudWxsKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRodG1sID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2VuKGh0bWwsIHRva2VuLnZhbHVlLCByZXN1bHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0dG9rZW5UcmFuc2xhdGVkID0gcmVzdWx0O1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dG9rZW5UeXBlVHJhbnNsYXRlZFt0eXBlVG9rZW5dW3Rva2VuLmtleV0gPSB0b2tlblRyYW5zbGF0ZWQ7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHRoaXMub25HZW5lcmF0ZS5lbWl0KHtcclxuXHRcdFx0aHRtbDogaHRtbCxcclxuXHRcdFx0dG9rZW5UeXBlVHJhbnNsYXRlZDogdG9rZW5UeXBlVHJhbnNsYXRlZFxyXG5cdFx0fSk7XHJcblx0XHQvLyB9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUcnkgdG8gZmluZCB0aGUgYnVkZ2V0IGluZm8gdG8gdHJhbnNsYXRlIHRoZSB0b2tlbi5cclxuXHQgKiBAcGFyYW0gaHRtbFxyXG5cdCAqIEBwYXJhbSB0b2tlblxyXG5cdCAqIEBwYXJhbSBzdWJUb2tlblxyXG5cdCAqL1xyXG5cdHJlc29sdmVCdWRnZXRUb2tlbihodG1sOiBzdHJpbmcsIHRva2VuOiBhbnksIHN1YlRva2VuOiBzdHJpbmdbXSk6IGFueSB7XHJcblx0XHRsZXQgdHByZXNDb2RpZ286IG51bWJlciA9IE51bWJlcihzdWJUb2tlblsxXSk7XHJcblx0XHRsZXQgdG9rZW5WYWx1ZTogc3RyaW5nID0gc3ViVG9rZW5bMl07XHJcblx0XHRsZXQgYnVkZ2V0RHRvOiBCdWRnZXREdG8gPSBudWxsO1xyXG5cdFx0bGV0IGlkVG90YWxCdWRnZXQ6IHN0cmluZyA9IG51bGw7XHJcblx0XHRpZiAoXHJcblx0XHRcdHRoaXMuYnVkZ2V0RHRvUHJpbWFyeSAmJlxyXG5cdFx0XHR0aGlzLmJ1ZGdldER0b1ByaW1hcnkuYnVkZ2V0ICYmXHJcblx0XHRcdHRwcmVzQ29kaWdvID09IEVUaXBvUHJlc3VwdWVzdG8uUFJJTUFSWVxyXG5cdFx0KSB7XHJcblx0XHRcdGJ1ZGdldER0byA9IHRoaXMuYnVkZ2V0RHRvUHJpbWFyeTtcclxuXHRcdFx0aWRUb3RhbEJ1ZGdldCA9ICdwbGktdG9rZW4tcHJpbmNpcGFsLWJ1ZGdldC10b3RhbC1zdW1tYXJ5JztcclxuXHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdHRoaXMuYnVkZ2V0RHRvU2VjdW5kYXJ5ICYmXHJcblx0XHRcdHRoaXMuYnVkZ2V0RHRvU2VjdW5kYXJ5LmJ1ZGdldCAmJlxyXG5cdFx0XHR0cHJlc0NvZGlnbyA9PSBFVGlwb1ByZXN1cHVlc3RvLlNFQ09OREFSWVxyXG5cdFx0KSB7XHJcblx0XHRcdGJ1ZGdldER0byA9IHRoaXMuYnVkZ2V0RHRvU2VjdW5kYXJ5O1xyXG5cdFx0XHRpZFRvdGFsQnVkZ2V0ID0gJ3BsaS10b2tlbi1zZWN1bmRhcnktYnVkZ2V0LXRvdGFsLXN1bW1hcnknO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGJ1ZGdldER0byA9PT0gbnVsbCB8fCAhYnVkZ2V0RHRvLmJ1ZGdldCkge1xyXG5cdFx0XHRjb25zb2xlLmVycm9yKFxyXG5cdFx0XHRcdCdObyBzZSBsb2dybyBlbmNvbnRyYXIgZWwgcHJlc3VwdWVzdG8gZGVsIHRva2VuLicsXHJcblx0XHRcdFx0dG9rZW4sXHJcblx0XHRcdFx0dGhpcy5idWRnZXREdG9QcmltYXJ5LFxyXG5cdFx0XHRcdHRoaXMuYnVkZ2V0RHRvU2VjdW5kYXJ5XHJcblx0XHRcdCk7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0aHRtbDogaHRtbCxcclxuXHRcdFx0XHR2YWx1ZTogbnVsbFxyXG5cdFx0XHR9O1xyXG5cdFx0fVxyXG5cdFx0bGV0IHZhbHVlRGF0YSA9IG51bGw7XHJcblx0XHRjb25zdCBhcHBsaWNhdGlvblByb2Nlc3MgPVxyXG5cdFx0XHR0b2tlblZhbHVlID09IFRva2VuU2VydmljZS5CVURHRVRfVE9LRU5TX0tFWV9BUFBMSUNBVElPTl9QUk9DRVNTX1RPVEFMX0FNT1VOVCB8fFxyXG5cdFx0XHR0b2tlblZhbHVlID09IFRva2VuU2VydmljZS5CVURHRVRfVE9LRU5TX0tFWV9BUFBMSUNBVElPTl9QUk9DRVNTX1RPVEFMX09XTl9GT1VORFMgfHxcclxuXHRcdFx0dG9rZW5WYWx1ZSA9PSBUb2tlblNlcnZpY2UuQlVER0VUX1RPS0VOU19LRVlfQVBQTElDQVRJT05fUFJPQ0VTU19UT1RBTF9GSU5BTkNJTkc7XHJcblx0XHRjb25zdCBsZWdhbGl6YXRpb25Qcm9jZXNzID1cclxuXHRcdFx0dG9rZW5WYWx1ZSA9PSBUb2tlblNlcnZpY2UuQlVER0VUX1RPS0VOU19LRVlfTEVHQUxJWkFUSU9OX1BST0NFU1NfVE9UQUxfQU1PVU5UIHx8XHJcblx0XHRcdHRva2VuVmFsdWUgPT0gVG9rZW5TZXJ2aWNlLkJVREdFVF9UT0tFTlNfS0VZX0xFR0FMSVpBVElPTl9QUk9DRVNTX1RPVEFMX09XTl9GT1VORFMgfHxcclxuXHRcdFx0dG9rZW5WYWx1ZSA9PSBUb2tlblNlcnZpY2UuQlVER0VUX1RPS0VOU19LRVlfTEVHQUxJWkFUSU9OX1BST0NFU1NfVE9UQUxfRklOQU5DSU5HO1xyXG5cclxuXHRcdGlmICh0b2tlblZhbHVlID09IFRva2VuU2VydmljZS5CVURHRVRfVE9LRU5TX0tFWV9UT1RBTF9BTU9VTlQpIHtcclxuXHRcdFx0dmFsdWVEYXRhID1cclxuXHRcdFx0XHRidWRnZXREdG8uYnVkZ2V0ICYmIGJ1ZGdldER0by5idWRnZXQuc3VtbWFyeVxyXG5cdFx0XHRcdFx0PyB0aGlzLmN1cnJlbmN5UGlwZS50cmFuc2Zvcm0oXHJcblx0XHRcdFx0XHRcdFx0YnVkZ2V0RHRvLmJ1ZGdldC5zdW1tYXJ5LmJ1ZGdldFRvdGFsLFxyXG5cdFx0XHRcdFx0XHRcdCdkZWZhdWx0JyxcclxuXHRcdFx0XHRcdFx0XHQnJyxcclxuXHRcdFx0XHRcdFx0XHQnMS4wLTAnXHJcblx0XHRcdFx0XHQgIClcclxuXHRcdFx0XHRcdDogMDtcclxuXHRcdH0gZWxzZSBpZiAodG9rZW5WYWx1ZSA9PSBUb2tlblNlcnZpY2UuQlVER0VUX1RPS0VOU19LRVlfUkVTVU1FX0NBVEVHT1JZX1lFQVIpIHtcclxuXHRcdFx0Ly8gdGhpcy5hZGRJbmZvVG9rZW5SZXN1bWVDYXRlZ29yeVllYXIodHByZXNDb2RpZ28sIGlkVG90YWxCdWRnZXQsIGJ1ZGdldER0byk7XHJcblx0XHRcdHRoaXMuYWRkSW5mb1Rva2VuUmVzdW1lQ2F0ZWdvcnlZZWFyKHRwcmVzQ29kaWdvLCBpZFRvdGFsQnVkZ2V0LCBidWRnZXREdG8pO1xyXG5cdFx0XHRjb25zdCBwbGlUb2tlblRvdGFsQnVkZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWRUb3RhbEJ1ZGdldCk7XHJcblx0XHRcdGlmIChwbGlUb2tlblRvdGFsQnVkZ2V0KSB7XHJcblx0XHRcdFx0dmFsdWVEYXRhID0gdGhpcy5yZW1vdmVDb21tZW50c0h0bWwocGxpVG9rZW5Ub3RhbEJ1ZGdldC5pbm5lckhUTUwpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdwbGlUb2tlblRvdGFsQnVkZ2V0IC0gTlVMTCcsIHBsaVRva2VuVG90YWxCdWRnZXQpO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKHRva2VuVmFsdWUgPT0gVG9rZW5TZXJ2aWNlLkJVREdFVF9UT0tFTlNfS0VZX0ZFQ0hBX0ZJTkFOQ0lOR19TVEFSVCkge1xyXG5cdFx0XHR2YWx1ZURhdGEgPVxyXG5cdFx0XHRcdGJ1ZGdldER0by5idWRnZXQgJiYgYnVkZ2V0RHRvLmJ1ZGdldC5maW5hbmNpbmdTdGFydFxyXG5cdFx0XHRcdFx0PyBidWRnZXREdG8uYnVkZ2V0LmZpbmFuY2luZ1N0YXJ0XHJcblx0XHRcdFx0XHQ6ICcnO1xyXG5cclxuXHRcdFx0aHRtbCA9IHRoaXMudG9rZW5TZXJ2aWNlLnJlcGxhY2VUb2tlbihcclxuXHRcdFx0XHRodG1sLFxyXG5cdFx0XHRcdHRva2VuLnZhbHVlLFxyXG5cdFx0XHRcdHZhbHVlRGF0YSxcclxuXHRcdFx0XHR0aGlzLmRhdGE/LmlkaW9tYT8ubG9jYWxlXHJcblx0XHRcdCk7XHJcblx0XHR9IGVsc2UgaWYgKHRva2VuVmFsdWUgPT0gVG9rZW5TZXJ2aWNlLkJVREdFVF9UT0tFTlNfS0VZX0ZFQ0hBX0ZJTkFOQ0lOR19FTkQpIHtcclxuXHRcdFx0dmFsdWVEYXRhID1cclxuXHRcdFx0XHRidWRnZXREdG8uYnVkZ2V0ICYmIGJ1ZGdldER0by5idWRnZXQuZmluYW5jaW5nRW5kXHJcblx0XHRcdFx0XHQ/IGJ1ZGdldER0by5idWRnZXQuZmluYW5jaW5nRW5kXHJcblx0XHRcdFx0XHQ6ICcnO1xyXG5cclxuXHRcdFx0aHRtbCA9IHRoaXMudG9rZW5TZXJ2aWNlLnJlcGxhY2VUb2tlbihcclxuXHRcdFx0XHRodG1sLFxyXG5cdFx0XHRcdHRva2VuLnZhbHVlLFxyXG5cdFx0XHRcdHZhbHVlRGF0YSxcclxuXHRcdFx0XHR0aGlzLmRhdGE/LmlkaW9tYT8ubG9jYWxlXHJcblx0XHRcdCk7XHJcblx0XHR9IGVsc2UgaWYgKHRva2VuVmFsdWUgPT0gVG9rZW5TZXJ2aWNlLkJVREdFVF9UT0tFTlNfRFVSQVRJT05fU1RVRElFUykge1xyXG5cdFx0XHR2YWx1ZURhdGEgPVxyXG5cdFx0XHRcdGJ1ZGdldER0by5idWRnZXQgJiYgYnVkZ2V0RHRvLmJ1ZGdldC5zdHVkeVN0YXJ0ICYmIGJ1ZGdldER0by5idWRnZXQuc3R1ZHlFbmRcclxuXHRcdFx0XHRcdD8gRGF0ZVV0aWwuZWxhcHNlZE1vbnRocyhcclxuXHRcdFx0XHRcdFx0XHRidWRnZXREdG8uYnVkZ2V0LnN0dWR5U3RhcnQsXHJcblx0XHRcdFx0XHRcdFx0YnVkZ2V0RHRvLmJ1ZGdldC5zdHVkeUVuZFxyXG5cdFx0XHRcdFx0ICApICsgMVxyXG5cdFx0XHRcdFx0OiAnJztcclxuXHRcdH0gZWxzZSBpZiAodG9rZW5WYWx1ZSA9PSBUb2tlblNlcnZpY2UuQlVER0VUX1RPS0VOU19GSU5BTkNJTkdfRFVSQVRJT04pIHtcclxuXHRcdFx0dmFsdWVEYXRhID1cclxuXHRcdFx0XHRidWRnZXREdG8uYnVkZ2V0ICYmIGJ1ZGdldER0by5idWRnZXQuZmluYW5jaW5nRW5kICYmIGJ1ZGdldER0by5idWRnZXQuZmluYW5jaW5nU3RhcnRcclxuXHRcdFx0XHRcdD8gRGF0ZVV0aWwuZWxhcHNlZE1vbnRocyhcclxuXHRcdFx0XHRcdFx0XHRidWRnZXREdG8uYnVkZ2V0LmZpbmFuY2luZ1N0YXJ0LFxyXG5cdFx0XHRcdFx0XHRcdGJ1ZGdldER0by5idWRnZXQuZmluYW5jaW5nRW5kXHJcblx0XHRcdFx0XHQgICkgKyAxXHJcblx0XHRcdFx0XHQ6ICcnO1xyXG5cdFx0fSBlbHNlIGlmICh0b2tlblZhbHVlID09IFRva2VuU2VydmljZS5MRUdBTElaQVRJT05fT1JfQVBQTElDQVRJT05fVE9UQUxfRklOQU5DSU5HKSB7XHJcblx0XHRcdC8vIEpNUCAtIE1hbnRpcyA2Njc0IC0gQWRkIGxvZ2ljIHRvIGxlZ2FsaXphdGlvbiBvciBhcHBsaWNhdGlvbiB0b3RhbCBmaW5hbmNpbmdcclxuXHRcdFx0aWYgKFxyXG5cdFx0XHRcdHRoaXMuZGF0YSAmJlxyXG5cdFx0XHRcdHRoaXMuZGF0YS5kYXRhRm9ybUFwcGxpY2F0aW9uICYmXHJcblx0XHRcdFx0dGhpcy5kYXRhLmRhdGFGb3JtQXBwbGljYXRpb24uYnVkZ2V0XHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGNvbnN0IGJ1ZGdldCA9IHRoaXMuZGF0YS5kYXRhRm9ybUFwcGxpY2F0aW9uLmJ1ZGdldDtcclxuXHJcblx0XHRcdFx0aWYgKGJ1ZGdldC5sZWdhbGl6YXRpb25Qcm9jZXNzICYmIGJ1ZGdldC5sZWdhbGl6YXRpb25Qcm9jZXNzLnRvdGFsRmluYW5jaW5nKSB7XHJcblx0XHRcdFx0XHRjb25zdCB0b3RhbEZpbmFuY2luZyA9IE51bWJlcihidWRnZXQubGVnYWxpemF0aW9uUHJvY2Vzcy50b3RhbEZpbmFuY2luZyk7XHJcblx0XHRcdFx0XHR2YWx1ZURhdGEgPSB0b3RhbEZpbmFuY2luZyAqIDEuMDAzO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAoYnVkZ2V0LmFwcGxpY2F0aW9uUHJvY2VzcyAmJiBidWRnZXQuYXBwbGljYXRpb25Qcm9jZXNzLnRvdGFsRmluYW5jaW5nKSB7XHJcblx0XHRcdFx0XHR2YWx1ZURhdGEgPSBOdW1iZXIoYnVkZ2V0LmFwcGxpY2F0aW9uUHJvY2Vzcy50b3RhbEZpbmFuY2luZyk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHQoYXBwbGljYXRpb25Qcm9jZXNzIHx8IGxlZ2FsaXphdGlvblByb2Nlc3MpICYmXHJcblx0XHRcdHRoaXMuZGF0YSAmJlxyXG5cdFx0XHR0aGlzLmRhdGEuZGF0YUZvcm1BcHBsaWNhdGlvbiAmJlxyXG5cdFx0XHR0aGlzLmRhdGEuZGF0YUZvcm1BcHBsaWNhdGlvbi5idWRnZXRcclxuXHRcdCkge1xyXG5cdFx0XHQvLyBHZXQgdGhlIHRvdGFsIGJ1ZGdldCBhbW91bnQgZGVwZW5kIG9mIHRoZSBwcm9jZXNzXHJcblx0XHRcdGNvbnN0IGFwcEJ1ZGdldFRvdGFsOiBBcHBsaWNhdGlvbkJ1ZGdldFRvdGFsID0gYXBwbGljYXRpb25Qcm9jZXNzXHJcblx0XHRcdFx0PyB0aGlzLmRhdGEuZGF0YUZvcm1BcHBsaWNhdGlvbi5idWRnZXQuYXBwbGljYXRpb25Qcm9jZXNzXHJcblx0XHRcdFx0OiB0aGlzLmRhdGEuZGF0YUZvcm1BcHBsaWNhdGlvbi5idWRnZXQubGVnYWxpemF0aW9uUHJvY2VzcztcclxuXHRcdFx0aWYgKGFwcEJ1ZGdldFRvdGFsICE9IHVuZGVmaW5lZCAmJiBhcHBCdWRnZXRUb3RhbCAhPSBudWxsKSB7XHJcblx0XHRcdFx0Ly8gbm8gbWF0dGVyIHRoZSBwcm9jZXNzLCB0aGUgY2xhc3MgaXMgdGhlIHNhbWVcclxuXHRcdFx0XHRzd2l0Y2ggKHRva2VuVmFsdWUpIHtcclxuXHRcdFx0XHRcdGNhc2UgVG9rZW5TZXJ2aWNlLkJVREdFVF9UT0tFTlNfS0VZX0FQUExJQ0FUSU9OX1BST0NFU1NfVE9UQUxfQU1PVU5UOlxyXG5cdFx0XHRcdFx0Y2FzZSBUb2tlblNlcnZpY2UuQlVER0VUX1RPS0VOU19LRVlfTEVHQUxJWkFUSU9OX1BST0NFU1NfVE9UQUxfQU1PVU5UOlxyXG5cdFx0XHRcdFx0XHR2YWx1ZURhdGEgPSBhcHBCdWRnZXRUb3RhbC50b3RhbEFtb3VudDtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIFRva2VuU2VydmljZS5CVURHRVRfVE9LRU5TX0tFWV9BUFBMSUNBVElPTl9QUk9DRVNTX1RPVEFMX09XTl9GT1VORFM6XHJcblx0XHRcdFx0XHRjYXNlIFRva2VuU2VydmljZS5CVURHRVRfVE9LRU5TX0tFWV9MRUdBTElaQVRJT05fUFJPQ0VTU19UT1RBTF9PV05fRk9VTkRTOlxyXG5cdFx0XHRcdFx0XHR2YWx1ZURhdGEgPSBhcHBCdWRnZXRUb3RhbC50b3RhbE93bkZ1bmRzO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgVG9rZW5TZXJ2aWNlLkJVREdFVF9UT0tFTlNfS0VZX0FQUExJQ0FUSU9OX1BST0NFU1NfVE9UQUxfRklOQU5DSU5HOlxyXG5cdFx0XHRcdFx0Y2FzZSBUb2tlblNlcnZpY2UuQlVER0VUX1RPS0VOU19LRVlfTEVHQUxJWkFUSU9OX1BST0NFU1NfVE9UQUxfRklOQU5DSU5HOlxyXG5cdFx0XHRcdFx0XHR2YWx1ZURhdGEgPSBhcHBCdWRnZXRUb3RhbC50b3RhbEZpbmFuY2luZztcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKHRva2VuVmFsdWUgPT0gVG9rZW5TZXJ2aWNlLkJVREdFVF9UT0tFTlNfS0VZX0lOU1VSQU5DRV9BTU9VTlQpIHtcclxuXHRcdFx0bGV0IHRvdGFsRmluYW5jaW5nID1cclxuXHRcdFx0XHR0aGlzLmRhdGEuZGF0YUZvcm1BcHBsaWNhdGlvbi5idWRnZXQubGVnYWxpemF0aW9uUHJvY2VzcyAmJlxyXG5cdFx0XHRcdHRoaXMuZGF0YS5kYXRhRm9ybUFwcGxpY2F0aW9uLmJ1ZGdldC5sZWdhbGl6YXRpb25Qcm9jZXNzLnRvdGFsRmluYW5jaW5nO1xyXG5cdFx0XHR0b3RhbEZpbmFuY2luZyA9XHJcblx0XHRcdFx0dG90YWxGaW5hbmNpbmcgPT0gdW5kZWZpbmVkIHx8IHRvdGFsRmluYW5jaW5nID09IG51bGwgPyAwIDogTnVtYmVyKHRvdGFsRmluYW5jaW5nKTtcclxuXHRcdFx0Ly8gbGV0IHRvdGFsSW5zdXJhbmNlQW1vdW50ID0gdGhpcy5kYXRhLmRhdGFGb3JtQXBwbGljYXRpb24udG90YWxJbnN1cmFuY2VBbW91bnQ7XHJcblx0XHRcdC8vIHRvdGFsSW5zdXJhbmNlQW1vdW50ID1cclxuXHRcdFx0Ly8gXHR0b3RhbEluc3VyYW5jZUFtb3VudCA9PSB1bmRlZmluZWQgfHwgdG90YWxJbnN1cmFuY2VBbW91bnQgPT0gbnVsbFxyXG5cdFx0XHQvLyBcdFx0PyAwXHJcblx0XHRcdC8vIFx0XHQ6IE51bWJlcih0b3RhbEluc3VyYW5jZUFtb3VudCk7XHJcblx0XHRcdHZhbHVlRGF0YSA9IHRvdGFsRmluYW5jaW5nICogMS4wMDM7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHQvLyBXaGVuIHRoZSB0b2tlbiBjYW4ndCBiZSByZXNvbHZlXHJcblx0XHRcdGNvbnNvbGUuZXJyb3IoJ3Jlc29sdmVCdWRnZXRUb2tlbiAtTm8gc2UgbG9ncm8gcmVzb2x2ZXIgZWwgdG9rZW4gZGUgdGlwbyBwcmVzdXB1ZXN0bycpO1xyXG5cdFx0fVxyXG5cdFx0dmFsdWVEYXRhID0gdmFsdWVEYXRhID09PSBudWxsID8gJycgOiB2YWx1ZURhdGE7XHJcblx0XHRodG1sID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2VuKGh0bWwsIHRva2VuLnZhbHVlLCB2YWx1ZURhdGEpO1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0aHRtbDogaHRtbCxcclxuXHRcdFx0dmFsdWU6IHZhbHVlRGF0YVxyXG5cdFx0fTtcclxuXHR9XHJcblx0cmVzb2x2ZVRhc2tva2VuKGh0bWw6IHN0cmluZywgdG9rZW46IGFueSwgc3ViVG9rZW46IHN0cmluZ1tdKTogYW55IHtcclxuXHRcdGxldCB2YWx1ZVRhc2sgPSBudWxsO1xyXG5cdFx0aWYgKHN1YlRva2VuLmxlbmd0aCA+IDIpIHtcclxuXHRcdFx0bGV0IHRhc2tJZCA9IE51bWJlcihzdWJUb2tlblsyXSk7XHJcblx0XHRcdGxldCB0YXNrID0gdGhpcy5ldmFsdWF0aW9uLnRhc2tzLmZpbmQoKHQpID0+IHQuaWRUYXNrID09IHRhc2tJZCk7XHJcblx0XHRcdHZhbHVlVGFzayA9IHRhc2sucmVzdWx0O1xyXG5cdFx0fVxyXG5cdFx0aHRtbCA9IHRoaXMudG9rZW5TZXJ2aWNlLnJlcGxhY2VUb2tlbihodG1sLCB0b2tlbi52YWx1ZSwgdmFsdWVUYXNrKTtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdGh0bWw6IGh0bWwsXHJcblx0XHRcdHZhbHVlOiB2YWx1ZVRhc2tcclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHRhc3luYyByZXNvbHZlU3RhdGljVG9rZW4oaHRtbDogc3RyaW5nLCB0b2tlbjogYW55LCBzdWJUb2tlbjogc3RyaW5nW10pOiBQcm9taXNlPGFueT4ge1xyXG5cdFx0bGV0IHZhbHVlUmVwbGFjZTogYW55ID0gbnVsbDtcclxuXHRcdGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PVxyXG5cdFx0XHRUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfQ09ESUdPX1ZFUklGSUNBQ0lPTi50b0xvd2VyQ2FzZSgpXHJcblx0XHQpIHtcclxuXHRcdFx0dmFsdWVSZXBsYWNlID0gdGhpcy51bmlxdWVWZXJpZmljYXRpb25Db2RlO1xyXG5cdFx0XHRodG1sID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2VuKGh0bWwsIHRva2VuLnZhbHVlLCB0aGlzLnVuaXF1ZVZlcmlmaWNhdGlvbkNvZGUpO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PVxyXG5cdFx0XHRUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfQV9RVUlFTl9WQV9ESVJJR0lETy50b0xvd2VyQ2FzZSgpXHJcblx0XHQpIHtcclxuXHRcdFx0Ly8gaWYgKHRoaXMuZGF0YS5kYXRhRGVzdGluYXRpb24pIHtcclxuXHRcdFx0aHRtbCA9IHRoaXMucmVzb2x2ZVN0YXRpY1Rva2Vuc0tleUFRdWllblZhRGlyaWdpZG8oaHRtbCwgdG9rZW4udmFsdWUpO1xyXG5cdFx0XHR2YWx1ZVJlcGxhY2UgPSAnJztcclxuXHRcdFx0Ly8gfVxyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PSBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfTEVUVEVSX1NJR04udG9Mb3dlckNhc2UoKVxyXG5cdFx0KSB7XHJcblx0XHRcdGh0bWwgPSB0aGlzLnJlc29sdmVTdGF0aWNUb2tlbnNLZXlTaWduKGh0bWwsIHRva2VuLnZhbHVlLCBzdWJUb2tlbik7XHJcblx0XHRcdHZhbHVlUmVwbGFjZSA9ICcnO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PVxyXG5cdFx0XHRUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfU0FMVURPX0NPTVBMRU1FTlRBUklPLnRvTG93ZXJDYXNlKClcclxuXHRcdCkge1xyXG5cdFx0XHQvLyBpZiAodGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbikge1xyXG5cdFx0XHRodG1sID0gdGhpcy5yZXNvbHZlU3RhdGljVG9rZW5zS2V5U2FsdWRvQ29tcGxlbWVudGFyaW8oaHRtbCwgdG9rZW4udmFsdWUpO1xyXG5cdFx0XHR2YWx1ZVJlcGxhY2UgPSAnJztcclxuXHRcdFx0Ly8gfVxyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PSBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfRkVDSEFfQUNUVUFMLnRvTG93ZXJDYXNlKClcclxuXHRcdCkge1xyXG5cdFx0XHR2YWx1ZVJlcGxhY2UgPSBuZXcgRGF0ZSgpO1xyXG5cdFx0XHRodG1sID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2VuKGh0bWwsIHRva2VuLnZhbHVlLCBuZXcgRGF0ZSgpKTtcclxuXHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdHN1YlRva2VuWzFdLnRvTG93ZXJDYXNlKCkgPT0gVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX1BBVFJPQ0lOQURPUi50b0xvd2VyQ2FzZSgpXHJcblx0XHQpIHtcclxuXHRcdFx0Y29uc3QgcGF0Tm9tYnJlID1cclxuXHRcdFx0XHR0aGlzLmRhdGEucGxpUHJvbW9jaW9uICYmXHJcblx0XHRcdFx0dGhpcy5kYXRhLnBsaVByb21vY2lvbi5wbGlQcm9ncmFtYSAmJlxyXG5cdFx0XHRcdHRoaXMuZGF0YS5wbGlQcm9tb2Npb24ucGxpUHJvZ3JhbWEucGxpUGF0cm9jaW5hZG9yXHJcblx0XHRcdFx0XHQ/IHRoaXMuZGF0YS5wbGlQcm9tb2Npb24ucGxpUHJvZ3JhbWEucGxpUGF0cm9jaW5hZG9yLnBhdE5vbWJyZVxyXG5cdFx0XHRcdFx0OiAnJztcclxuXHRcdFx0dmFsdWVSZXBsYWNlID0gcGF0Tm9tYnJlO1xyXG5cdFx0XHRodG1sID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2VuKGh0bWwsIHRva2VuLnZhbHVlLCBwYXROb21icmUpO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PSBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfUFJPR1JBTUEudG9Mb3dlckNhc2UoKVxyXG5cdFx0KSB7XHJcblx0XHRcdGNvbnN0IHByb2dOb21icmUgPVxyXG5cdFx0XHRcdHRoaXMuZGF0YS5wbGlQcm9tb2Npb24gJiYgdGhpcy5kYXRhLnBsaVByb21vY2lvbi5wbGlQcm9ncmFtYVxyXG5cdFx0XHRcdFx0PyB0aGlzLmRhdGEucGxpUHJvbW9jaW9uLnBsaVByb2dyYW1hLnByb2dOb21icmVcclxuXHRcdFx0XHRcdDogJyc7XHJcblx0XHRcdHZhbHVlUmVwbGFjZSA9IHByb2dOb21icmU7XHJcblx0XHRcdGh0bWwgPSB0aGlzLnRva2VuU2VydmljZS5yZXBsYWNlVG9rZW4oaHRtbCwgdG9rZW4udmFsdWUsIHByb2dOb21icmUpO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PSBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfUFJPTU9DSU9OLnRvTG93ZXJDYXNlKClcclxuXHRcdCkge1xyXG5cdFx0XHRjb25zdCBwcm9tTm9tYnJlID0gdGhpcy5kYXRhLnBsaVByb21vY2lvbiA/IHRoaXMuZGF0YS5wbGlQcm9tb2Npb24ucHJvbU5vbWJyZSA6ICcnO1xyXG5cdFx0XHR2YWx1ZVJlcGxhY2UgPSBwcm9tTm9tYnJlO1xyXG5cdFx0XHRodG1sID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2VuKGh0bWwsIHRva2VuLnZhbHVlLCBwcm9tTm9tYnJlKTtcclxuXHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdHN1YlRva2VuWzFdLnRvTG93ZXJDYXNlKCkgPT0gVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX0FOSU9fUFJPTU9DSU9OLnRvTG93ZXJDYXNlKClcclxuXHRcdCkge1xyXG5cdFx0XHRjb25zdCBhbmlvUHJvbW9jaW9uID1cclxuXHRcdFx0XHR0aGlzLmRhdGEucGxpUHJvbW9jaW9uICYmIHRoaXMuZGF0YS5wbGlQcm9tb2Npb24ucHJvbUFuaW9cclxuXHRcdFx0XHRcdD8gdGhpcy5kYXRhLnBsaVByb21vY2lvbi5wcm9tQW5pb1xyXG5cdFx0XHRcdFx0OiAwO1xyXG5cdFx0XHR2YWx1ZVJlcGxhY2UgPSBhbmlvUHJvbW9jaW9uO1xyXG5cdFx0XHRodG1sID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2VuKGh0bWwsIHRva2VuLnZhbHVlLCBhbmlvUHJvbW9jaW9uKTtcclxuXHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdHN1YlRva2VuWzFdLnRvTG93ZXJDYXNlKCkgPT1cclxuXHRcdFx0VG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX0lTT19NT05FREFfQkFTRS50b0xvd2VyQ2FzZSgpXHJcblx0XHQpIHtcclxuXHRcdFx0Y29uc3QgYmFzZUN1cnJlbmN5ID1cclxuXHRcdFx0XHR0aGlzLmRhdGEuYnVkZ2V0RHRvUHJpbWFyeSAmJiB0aGlzLmRhdGEuYnVkZ2V0RHRvUHJpbWFyeS5idWRnZXRcclxuXHRcdFx0XHRcdD8gdGhpcy5kYXRhLmJ1ZGdldER0b1ByaW1hcnkuYnVkZ2V0LmJhc2VDdXJyZW5jeVxyXG5cdFx0XHRcdFx0OiB0aGlzLmRhdGEuYnVkZ2V0RHRvU2VjdW5kYXJ5ICYmIHRoaXMuZGF0YS5idWRnZXREdG9TZWN1bmRhcnkuYnVkZ2V0XHJcblx0XHRcdFx0XHQ/IHRoaXMuZGF0YS5idWRnZXREdG9TZWN1bmRhcnkuYnVkZ2V0LmJhc2VDdXJyZW5jeVxyXG5cdFx0XHRcdFx0OiAnJztcclxuXHRcdFx0dmFsdWVSZXBsYWNlID0gYmFzZUN1cnJlbmN5O1xyXG5cdFx0XHRodG1sID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2VuKGh0bWwsIHRva2VuLnZhbHVlLCBiYXNlQ3VycmVuY3kpO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PSBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfU1RBVFVTX05BTUUudG9Mb3dlckNhc2UoKVxyXG5cdFx0KSB7XHJcblx0XHRcdGNvbnN0IHN0YXR1c05hbWUgPVxyXG5cdFx0XHRcdHRoaXMuZGF0YS5kYXRhRm9ybUFwcGxpY2F0aW9uICYmXHJcblx0XHRcdFx0VXRpbFN0cmluZy5pc1ZhbGlkKHRoaXMuZGF0YS5kYXRhRm9ybUFwcGxpY2F0aW9uLnN0YXRlTmFtZSlcclxuXHRcdFx0XHRcdD8gdGhpcy5kYXRhLmRhdGFGb3JtQXBwbGljYXRpb24uc3RhdGVOYW1lXHJcblx0XHRcdFx0XHQ6ICcnO1xyXG5cdFx0XHR2YWx1ZVJlcGxhY2UgPSBzdGF0dXNOYW1lO1xyXG5cdFx0XHRodG1sID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2VuKGh0bWwsIHRva2VuLnZhbHVlLCBzdGF0dXNOYW1lKTtcclxuXHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdHN1YlRva2VuWzFdLnRvTG93ZXJDYXNlKCkgPT0gVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX1VTRVJfSU5JVElBTFMudG9Mb3dlckNhc2UoKVxyXG5cdFx0KSB7XHJcblx0XHRcdGNvbnN0IHBsaVVzZXI6IFBsaVVzZXIgPSBBdXRoZW50aWNhdGlvblV0aWwuZ2V0UGxpVXNlcigpO1xyXG5cdFx0XHR2YWx1ZVJlcGxhY2UgPSBVdGlsU3RyaW5nLmluaXRpYWxMZXR0ZXJzKHBsaVVzZXIuZmlyc3RuYW1lICsgJyAnICsgcGxpVXNlci5sYXN0bmFtZSk7XHJcblx0XHRcdGh0bWwgPSB0aGlzLnRva2VuU2VydmljZS5yZXBsYWNlVG9rZW4oaHRtbCwgdG9rZW4udmFsdWUsIHZhbHVlUmVwbGFjZSk7XHJcblx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRzdWJUb2tlblsxXS50b0xvd2VyQ2FzZSgpID09XHJcblx0XHRcdFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9OVU1CRVJfQVBQTElDQVRJT04udG9Mb3dlckNhc2UoKVxyXG5cdFx0KSB7XHJcblx0XHRcdGNvbnN0IG51bWJlciA9XHJcblx0XHRcdFx0dGhpcy5kYXRhLmRhdGFGb3JtQXBwbGljYXRpb24gJiYgdGhpcy5kYXRhLmRhdGFGb3JtQXBwbGljYXRpb24ubnVtYmVyXHJcblx0XHRcdFx0XHQ/IHRoaXMuZGF0YS5kYXRhRm9ybUFwcGxpY2F0aW9uLm51bWJlclxyXG5cdFx0XHRcdFx0OiBudWxsO1xyXG5cdFx0XHR2YWx1ZVJlcGxhY2UgPSBudW1iZXI7XHJcblx0XHRcdGh0bWwgPSB0aGlzLnRva2VuU2VydmljZS5yZXBsYWNlVG9rZW4oaHRtbCwgdG9rZW4udmFsdWUsIG51bWJlcik7XHJcblx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRzdWJUb2tlblsxXS50b0xvd2VyQ2FzZSgpID09IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9OQU1FLnRvTG93ZXJDYXNlKClcclxuXHRcdCkge1xyXG5cdFx0XHRjb25zdCBjb21pdGVOb21icmUgPVxyXG5cdFx0XHRcdHRoaXMuZGF0YS5kYXRhRm9ybUJ5Rm9ybSAmJiB0aGlzLmRhdGEuZGF0YUZvcm1CeUZvcm0uY29taXRlTm9tYnJlXHJcblx0XHRcdFx0XHQ/IHRoaXMuZGF0YS5kYXRhRm9ybUJ5Rm9ybS5jb21pdGVOb21icmVcclxuXHRcdFx0XHRcdDogbnVsbDtcclxuXHRcdFx0dmFsdWVSZXBsYWNlID0gY29taXRlTm9tYnJlO1xyXG5cdFx0XHRodG1sID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2VuKGh0bWwsIHRva2VuLnZhbHVlLCBjb21pdGVOb21icmUpO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PVxyXG5cdFx0XHRUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfU0VHTUVOVEFUSU9OLnRvTG93ZXJDYXNlKClcclxuXHRcdCkge1xyXG5cdFx0XHRjb25zdCBjb21pdGVTZWdtZW50YWNpb24gPVxyXG5cdFx0XHRcdHRoaXMuZGF0YS5kYXRhRm9ybUJ5Rm9ybSAmJlxyXG5cdFx0XHRcdHRoaXMuZGF0YS5kYXRhRm9ybUJ5Rm9ybVtUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfU0VHTUVOVEFUSU9OXVxyXG5cdFx0XHRcdFx0PyB0aGlzLmRhdGEuZGF0YUZvcm1CeUZvcm1bVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX1NFR01FTlRBVElPTl1cclxuXHRcdFx0XHRcdDogbnVsbDtcclxuXHRcdFx0dmFsdWVSZXBsYWNlID0gY29taXRlU2VnbWVudGFjaW9uO1xyXG5cdFx0XHRodG1sID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2VuKGh0bWwsIHRva2VuLnZhbHVlLCBjb21pdGVTZWdtZW50YWNpb24pO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PVxyXG5cdFx0XHRUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfQUdHUlVQQVRJT04udG9Mb3dlckNhc2UoKVxyXG5cdFx0KSB7XHJcblx0XHRcdGNvbnN0IGNvbWl0ZUFncnVwYWNpb24gPVxyXG5cdFx0XHRcdHRoaXMuZGF0YS5kYXRhRm9ybUJ5Rm9ybSAmJlxyXG5cdFx0XHRcdHRoaXMuZGF0YS5kYXRhRm9ybUJ5Rm9ybVtUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfQUdHUlVQQVRJT05dXHJcblx0XHRcdFx0XHQ/IHRoaXMuZGF0YS5kYXRhRm9ybUJ5Rm9ybVtUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfQUdHUlVQQVRJT05dXHJcblx0XHRcdFx0XHQ6IG51bGw7XHJcblx0XHRcdHZhbHVlUmVwbGFjZSA9IGNvbWl0ZUFncnVwYWNpb247XHJcblx0XHRcdGh0bWwgPSB0aGlzLnRva2VuU2VydmljZS5yZXBsYWNlVG9rZW4oaHRtbCwgdG9rZW4udmFsdWUsIGNvbWl0ZUFncnVwYWNpb24pO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PVxyXG5cdFx0XHRUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfQ1VUTElORV9EQVRFLnRvTG93ZXJDYXNlKClcclxuXHRcdCkge1xyXG5cdFx0XHRsZXQgY3V0TGluZURhdGUgPVxyXG5cdFx0XHRcdHRoaXMuZGF0YS5kYXRhRm9ybUJ5Rm9ybSAmJlxyXG5cdFx0XHRcdHRoaXMuZGF0YS5kYXRhRm9ybUJ5Rm9ybVtUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfQ1VUTElORV9EQVRFXVxyXG5cdFx0XHRcdFx0PyB0aGlzLmRhdGEuZGF0YUZvcm1CeUZvcm1bVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX0NVVExJTkVfREFURV1cclxuXHRcdFx0XHRcdDogbnVsbDtcclxuXHRcdFx0aWYgKGN1dExpbmVEYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xyXG5cdFx0XHRcdGN1dExpbmVEYXRlID0gY3V0TGluZURhdGUudG9TdHJpbmcoKTtcclxuXHRcdFx0fVxyXG5cdFx0XHR2YWx1ZVJlcGxhY2UgPSBjdXRMaW5lRGF0ZTtcclxuXHRcdFx0aHRtbCA9IHRoaXMudG9rZW5TZXJ2aWNlLnJlcGxhY2VUb2tlbihodG1sLCB0b2tlbi52YWx1ZSwgY3V0TGluZURhdGUpO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PSBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19UT1RBTF9XRUlHSFRFRC50b0xvd2VyQ2FzZSgpXHJcblx0XHQpIHtcclxuXHRcdFx0bGV0IGJlc3RTY2VuYXJpb1ZhbHVlOiBhbnkgPSAnJztcclxuXHRcdFx0aWYgKHRoaXMuZXZhbHVhdGlvbiAmJiB0aGlzLmV2YWx1YXRpb24uc2NlbmFyaW9zKSB7XHJcblx0XHRcdFx0bGV0IGJlc3RTY2VuYXJpbyA9IHRoaXMuZXZhbHVhdGlvbi5zY2VuYXJpb3MuZmlsdGVyKChzKSA9PiBzLmJlc3QpWzBdO1xyXG5cdFx0XHRcdGlmIChiZXN0U2NlbmFyaW8pIHtcclxuXHRcdFx0XHRcdGJlc3RTY2VuYXJpb1ZhbHVlID0gYmVzdFNjZW5hcmlvLnJlc3VsdDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0aHRtbCA9IHRoaXMudG9rZW5TZXJ2aWNlLnJlcGxhY2VUb2tlbihodG1sLCB0b2tlbi52YWx1ZSwgYmVzdFNjZW5hcmlvVmFsdWUpO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PVxyXG5cdFx0XHRUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19VU0VSX1RZUEVfQ1JFRElUX1NUVURZLnRvTG93ZXJDYXNlKClcclxuXHRcdCkge1xyXG5cdFx0XHRjb25zdCB1c2VyVHlwZUNyZWRpdFN0dWR5ID1cclxuXHRcdFx0XHR0aGlzLmRhdGEuZGF0YUZvcm1CeUZvcm0gJiZcclxuXHRcdFx0XHR0aGlzLmRhdGEuZGF0YUZvcm1CeUZvcm1bVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfVVNFUl9UWVBFX0NSRURJVF9TVFVEWV1cclxuXHRcdFx0XHRcdD8gdGhpcy5kYXRhLmRhdGFGb3JtQnlGb3JtW1Rva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1VTRVJfVFlQRV9DUkVESVRfU1RVRFldXHJcblx0XHRcdFx0XHQ6IG51bGw7XHJcblx0XHRcdHZhbHVlUmVwbGFjZSA9IHVzZXJUeXBlQ3JlZGl0U3R1ZHk7XHJcblx0XHRcdGh0bWwgPSB0aGlzLnRva2VuU2VydmljZS5yZXBsYWNlVG9rZW4oaHRtbCwgdG9rZW4udmFsdWUsIHVzZXJUeXBlQ3JlZGl0U3R1ZHkpO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PSBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19CRU5fQ09ESUdPLnRvTG93ZXJDYXNlKClcclxuXHRcdCkge1xyXG5cdFx0XHR2YWx1ZVJlcGxhY2UgPSB0aGlzLmRhdGEuZGF0YUZvcm1BcHBsaWNhdGlvbi5iZW5Db2RpZ287XHJcblx0XHRcdGh0bWwgPSB0aGlzLnRva2VuU2VydmljZS5yZXBsYWNlVG9rZW4oXHJcblx0XHRcdFx0aHRtbCxcclxuXHRcdFx0XHR0b2tlbi52YWx1ZSxcclxuXHRcdFx0XHR0aGlzLmRhdGEuZGF0YUZvcm1BcHBsaWNhdGlvbi5iZW5Db2RpZ29cclxuXHRcdFx0KTtcclxuXHRcdH0gZWxzZSBpZiAoc3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PSBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOX1NVUk5BTUUudG9Mb3dlckNhc2UoKSkge1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0dGhpcy5kYXRhLmRhdGFGb3JtQXBwbGljYXRpb24udXNlcm5hbWUgJiZcclxuXHRcdFx0XHR0aGlzLmRhdGEuZGF0YUZvcm1BcHBsaWNhdGlvbi51c2VybmFtZSAhPT0gbnVsbFxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRhd2FpdCB0aGlzLmZpbmRTZXNpb25CeUxvZ2luKGh0bWwsIHRva2VuKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Ly8gRG9uJ3QgZmluZCB0aGUgdG9rZW5cclxuXHRcdFx0Y29uc29sZS5lcnJvcignTm8gc2UgZW5jb250cm8gZWwgdG9rZW4nLCB0b2tlbik7XHJcblx0XHRcdGh0bWwgPSB0aGlzLnRva2VuU2VydmljZS5yZXBsYWNlVG9rZW4oaHRtbCwgc3ViVG9rZW5bMV0sICcnKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB7XHJcblx0XHRcdGh0bWw6IGh0bWwsXHJcblx0XHRcdHZhbHVlOiB2YWx1ZVJlcGxhY2VcclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHRhc3luYyBmaW5kU2VzaW9uQnlMb2dpbihodG1sOiBzdHJpbmcsIHRva2VuOiBhbnkpIHtcclxuXHRcdHRyeSB7XHJcblx0XHRcdGNvbnN0IHNlc2lvbiA9IGF3YWl0IHRoaXMuc2VzaW9uU2VydmljZVxyXG5cdFx0XHRcdC5nZXRCeUxvZ2luKHRoaXMuZGF0YS5kYXRhRm9ybUFwcGxpY2F0aW9uLnVzZXJuYW1lKVxyXG5cdFx0XHRcdC50b1Byb21pc2UoKTtcclxuXHRcdFx0Y29uc3Qgc3VybmFtZXMgPVxyXG5cdFx0XHRcdHNlc2lvbi5zdXJuYW1lICE9PSAnJyAmJiBzZXNpb24uc3VybmFtZSAhPT0gbnVsbFxyXG5cdFx0XHRcdFx0PyBzZXNpb24uc3VybmFtZSArICcgJyArIHNlc2lvbi5sYXN0bmFtZVxyXG5cdFx0XHRcdFx0OiBzZXNpb24ubGFzdG5hbWU7XHJcblx0XHRcdGh0bWwgPSB0aGlzLnRva2VuU2VydmljZS5yZXBsYWNlVG9rZW4oaHRtbCwgdG9rZW4udmFsdWUsIHN1cm5hbWVzKTtcclxuXHRcdFx0Y29uc29sZS5sb2coJ3N1cm5hbWUnLCBzdXJuYW1lcyk7XHJcblx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHRjb25zb2xlLmVycm9yKCdFcnJvciBjb25zdWx0YW5kbyBlbCBsb2dpbiBlbiBQTElTLCBnZXRCeUxvZ2luJywgZXJyb3IpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRmluZCBhbGwgdGhlIHRva2VucyBwcmVzZW50IGluIHRoZSBIVE1MIHRleHQuIE9yZ2FuaXplIHRoaXMgdG9rZW5zIGluIGZvdXIgY2F0ZWdvcmllcy5cclxuXHQgKiBAcGFyYW0gaHRtbCBUZXh0IG9mIHRoZSBodG1sXHJcblx0ICovXHJcblx0Z2V0TGlzdFRva2VucyhodG1sOiBzdHJpbmcpOiBhbnlbXSB7XHJcblx0XHQvLyBsZXQgc3RyaW5nczogc3RyaW5nW10gPSBodG1sLnNwbGl0KFwiIFwiKTtcclxuXHRcdGxldCB0b2tlbnM6IGFueVtdID0gdGhpcy50b2tlblNlcnZpY2UuZ2V0TGlzdFRva2Vuc0J5U3RyaW5nKGh0bWwpO1xyXG5cdFx0bGV0IHRva2Vuc0NhdGVnb3J5OiBhbnlbXSA9IFtdO1xyXG5cdFx0Zm9yIChsZXQgaW5mb1Rva2VuIG9mIHRva2Vucykge1xyXG5cdFx0XHRpZiAoaW5mb1Rva2VuKSB7XHJcblx0XHRcdFx0Y29uc3Qga2V5VHlwZTogbnVtYmVyID0gVG9rZW5TZXJ2aWNlLmdldEtleVR5cGUoXHJcblx0XHRcdFx0XHRpbmZvVG9rZW4ua2V5LnJlcGxhY2UoJ3snLCAnJykucmVwbGFjZSgnfScsICcnKVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0aWYgKGtleVR5cGUpIHtcclxuXHRcdFx0XHRcdHN3aXRjaCAoa2V5VHlwZSkge1xyXG5cdFx0XHRcdFx0XHRjYXNlIDE6IC8vIEZvcm1cclxuXHRcdFx0XHRcdFx0XHRpZiAoIXRva2Vuc0NhdGVnb3J5W1Rva2VuU2VydmljZS5UT0tFTl9MQUJFTF9GT1JNXSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0dG9rZW5zQ2F0ZWdvcnlbVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0ZPUk1dID0gW107XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdHRva2Vuc0NhdGVnb3J5W1Rva2VuU2VydmljZS5UT0tFTl9MQUJFTF9GT1JNXS5wdXNoKGluZm9Ub2tlbik7XHJcblx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdGNhc2UgMjogLy9CdWRnZXRcclxuXHRcdFx0XHRcdFx0XHRpZiAoIXRva2Vuc0NhdGVnb3J5W1Rva2VuU2VydmljZS5UT0tFTl9MQUJFTF9CVURHRVRdKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0b2tlbnNDYXRlZ29yeVtUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQlVER0VUXSA9IFtdO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR0b2tlbnNDYXRlZ29yeVtUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQlVER0VUXS5wdXNoKGluZm9Ub2tlbik7XHJcblx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdGNhc2UgMzogLy9TdGF0aWNcclxuXHRcdFx0XHRcdFx0XHRpZiAoIXRva2Vuc0NhdGVnb3J5W1Rva2VuU2VydmljZS5UT0tFTl9MQUJFTF9TVEFUSUNdKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0b2tlbnNDYXRlZ29yeVtUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfU1RBVElDXSA9IFtdO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR0b2tlbnNDYXRlZ29yeVtUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfU1RBVElDXS5wdXNoKGluZm9Ub2tlbik7XHJcblx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdGNhc2UgNDogLy9DYWxjdWxhdGVkXHJcblx0XHRcdFx0XHRcdFx0aWYgKCF0b2tlbnNDYXRlZ29yeVtUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQ0FMQ1VMQVRFRF0pIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRva2Vuc0NhdGVnb3J5W1Rva2VuU2VydmljZS5UT0tFTl9MQUJFTF9DQUxDVUxBVEVEXSA9IFtdO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR0b2tlbnNDYXRlZ29yeVtUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQ0FMQ1VMQVRFRF0ucHVzaChpbmZvVG9rZW4pO1xyXG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRjYXNlIDU6IC8vVGFza1xyXG5cdFx0XHRcdFx0XHRcdGlmICghdG9rZW5zQ2F0ZWdvcnlbVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1RBU0tMXSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0dG9rZW5zQ2F0ZWdvcnlbVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1RBU0tMXSA9IFtdO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR0b2tlbnNDYXRlZ29yeVtUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfVEFTS0xdLnB1c2goaW5mb1Rva2VuKTtcclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiB0b2tlbnNDYXRlZ29yeTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEl0IHJlc29sdmVzIHRoZSBzdGF0aWMgdG9rZW4gZGVzdGluYXRpb25cclxuXHQgKiBAcGFyYW0gc3RyaW5nVGV4dFxyXG5cdCAqIEBwYXJhbSB0b2tlblxyXG5cdCAqIEBwYXJhbSBkYXRhVmFsdWVcclxuXHQgKi9cclxuXHRyZXNvbHZlU3RhdGljVG9rZW5zS2V5QVF1aWVuVmFEaXJpZ2lkbyhzdHJpbmdUZXh0OiBzdHJpbmcsIHRva2VuVmFsdWU6IGFueSk6IHN0cmluZyB7XHJcblx0XHQvLyBpZiAodGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbikge1xyXG5cdFx0dGhpcy5lbmFibGVEZXN0aW5hdGlvbiA9IHRydWU7XHJcblx0XHR0aGlzLmFkZEluZm9Ub2tlbkRlc3RpbmF0aW9uKCk7XHJcblx0XHRjb25zdCBwbGlUb2tlbkRlc3RpbmF0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsaS10b2tlbi1kZXN0aW5hdGlvbicpO1xyXG5cdFx0bGV0IGh0bWwgPSAnJztcclxuXHRcdGlmIChwbGlUb2tlbkRlc3RpbmF0aW9uICYmIHBsaVRva2VuRGVzdGluYXRpb24uaW5uZXJIVE1MLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0aHRtbCA9IHRoaXMucmVtb3ZlQ29tbWVudHNIdG1sKHBsaVRva2VuRGVzdGluYXRpb24uaW5uZXJIVE1MKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB0aGlzLnRva2VuU2VydmljZS5yZXBsYWNlVG9rZW4oc3RyaW5nVGV4dCwgdG9rZW5WYWx1ZSwgaHRtbCk7XHJcblx0XHQvLyB9XHJcblx0XHQvLyByZXR1cm4gc3RyaW5nVGV4dDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqXHJcblx0ICovXHJcblx0YWRkSW5mb1Rva2VuRGVzdGluYXRpb24oKSB7XHJcblx0XHRsZXQgcGxpVG9rZW5EZXN0aW5hdGlvbiA9ICQoJyNwbGktdG9rZW4tZGVzdGluYXRpb24nKTtcclxuXHRcdHBsaVRva2VuRGVzdGluYXRpb24uZW1wdHkoKTtcclxuXHRcdGlmICh0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uKSB7XHJcblx0XHRcdGxldCBkZXN0aW5hdGlvbkluZm8gPSAkKCc8ZGl2PjwvZGl2PicpO1xyXG5cdFx0XHRpZiAodGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi50ZXh0KSB7XHJcblx0XHRcdFx0bGV0IHZhbHVlSW5mbyA9ICQoJzxkaXY+PC9kaXY+JykudGV4dCh0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLnRleHQpO1xyXG5cdFx0XHRcdGRlc3RpbmF0aW9uSW5mby5hcHBlbmQodmFsdWVJbmZvKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAodGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi50aXRsZSkge1xyXG5cdFx0XHRcdGxldCB2YWx1ZUluZm8gPSAkKCc8ZGl2PjwvZGl2PicpLnRleHQodGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi50aXRsZSk7XHJcblx0XHRcdFx0ZGVzdGluYXRpb25JbmZvLmFwcGVuZCh2YWx1ZUluZm8pO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmICh0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLm5hbWUgfHwgdGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi5sYXN0TmFtZSkge1xyXG5cdFx0XHRcdGxldCB2YWx1ZUluZm9OYW1lID0gdGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi5uYW1lXHJcblx0XHRcdFx0XHQ/IHRoaXMuZGF0YS5kYXRhRGVzdGluYXRpb24ubmFtZSArICcgJ1xyXG5cdFx0XHRcdFx0OiAnJztcclxuXHRcdFx0XHR2YWx1ZUluZm9OYW1lICs9IHRoaXMuZGF0YS5kYXRhRGVzdGluYXRpb24ubGFzdE5hbWVcclxuXHRcdFx0XHRcdD8gdGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi5sYXN0TmFtZVxyXG5cdFx0XHRcdFx0OiAnJztcclxuXHRcdFx0XHRsZXQgdmFsdWVJbmZvID0gJCgnPGRpdj48L2Rpdj4nKS5hcHBlbmQoJzxzdHJvbmc+JyArIHZhbHVlSW5mb05hbWUgKyAnPC9zdHJvbmc+Jyk7XHJcblx0XHRcdFx0ZGVzdGluYXRpb25JbmZvLmFwcGVuZCh2YWx1ZUluZm8pO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmICh0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLmNhcmdvKSB7XHJcblx0XHRcdFx0bGV0IHZhbHVlSW5mbyA9ICQoJzxkaXY+PC9kaXY+JykudGV4dCh0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLmNhcmdvKTtcclxuXHRcdFx0XHRkZXN0aW5hdGlvbkluZm8uYXBwZW5kKHZhbHVlSW5mbyk7XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKHRoaXMuZGF0YS5kYXRhRGVzdGluYXRpb24ub2NjdXBhdGlvbikge1xyXG5cdFx0XHRcdGxldCB2YWx1ZUluZm8gPSAkKCc8ZGl2PjwvZGl2PicpLnRleHQodGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi5vY2N1cGF0aW9uKTtcclxuXHRcdFx0XHRkZXN0aW5hdGlvbkluZm8uYXBwZW5kKHZhbHVlSW5mbyk7XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKHRoaXMuZGF0YS5kYXRhRGVzdGluYXRpb24uY29tcGFueSkge1xyXG5cdFx0XHRcdGxldCB2YWx1ZUluZm8gPSAkKCc8ZGl2PjwvZGl2PicpLnRleHQodGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi5jb21wYW55KTtcclxuXHRcdFx0XHRkZXN0aW5hdGlvbkluZm8uYXBwZW5kKHZhbHVlSW5mbyk7XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKHRoaXMuZGF0YS5kYXRhRGVzdGluYXRpb24uYWRkcmVzcyB8fCB0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLmFkZHJlc3NEZXRhaWxzKSB7XHJcblx0XHRcdFx0bGV0IHZhbHVlSW5mb05hbWUgPSB0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLmFkZHJlc3NcclxuXHRcdFx0XHRcdD8gdGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi5hZGRyZXNzICsgJyAnXHJcblx0XHRcdFx0XHQ6ICcnO1xyXG5cdFx0XHRcdHZhbHVlSW5mb05hbWUgKz0gdGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi5hZGRyZXNzRGV0YWlsc1xyXG5cdFx0XHRcdFx0PyB0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLmFkZHJlc3NEZXRhaWxzXHJcblx0XHRcdFx0XHQ6ICcnO1xyXG5cdFx0XHRcdGxldCB2YWx1ZUluZm8gPSAkKCc8ZGl2PjwvZGl2PicpLnRleHQodmFsdWVJbmZvTmFtZSk7XHJcblx0XHRcdFx0ZGVzdGluYXRpb25JbmZvLmFwcGVuZCh2YWx1ZUluZm8pO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmICh0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLmNpdHkgfHwgdGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi5jb3VudHJ5KSB7XHJcblx0XHRcdFx0bGV0IHZhbHVlSW5mb05hbWUgPSB0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLmNpdHlcclxuXHRcdFx0XHRcdD8gdGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi5jaXR5XHJcblx0XHRcdFx0XHQ6ICcnO1xyXG5cdFx0XHRcdHZhbHVlSW5mb05hbWUgKz1cclxuXHRcdFx0XHRcdHRoaXMuZGF0YS5kYXRhRGVzdGluYXRpb24uY2l0eSAmJiB0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLmNvdW50cnkgPyAnLCAnIDogJyc7XHJcblx0XHRcdFx0dmFsdWVJbmZvTmFtZSArPSB0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLmNvdW50cnlcclxuXHRcdFx0XHRcdD8gdGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi5jb3VudHJ5XHJcblx0XHRcdFx0XHQ6ICcnO1xyXG5cdFx0XHRcdGxldCB2YWx1ZUluZm8gPSAkKCc8ZGl2PjwvZGl2PicpLnRleHQodmFsdWVJbmZvTmFtZSk7XHJcblx0XHRcdFx0ZGVzdGluYXRpb25JbmZvLmFwcGVuZCh2YWx1ZUluZm8pO1xyXG5cdFx0XHR9XHJcblx0XHRcdHBsaVRva2VuRGVzdGluYXRpb24uYXBwZW5kKGRlc3RpbmF0aW9uSW5mbyk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCByZXNvbHZlcyB0aGUgc3RhdGljIHRva2VuIGRlc3RpbmF0aW9uXHJcblx0ICogQHBhcmFtIHN0cmluZ1RleHRcclxuXHQgKiBAcGFyYW0gdG9rZW5cclxuXHQgKiBAcGFyYW0gZGF0YVZhbHVlXHJcblx0ICovXHJcblx0cmVzb2x2ZVN0YXRpY1Rva2Vuc0tleVNhbHVkb0NvbXBsZW1lbnRhcmlvKHN0cmluZ1RleHQ6IHN0cmluZywgdG9rZW5WYWx1ZTogYW55KTogc3RyaW5nIHtcclxuXHRcdC8vIGlmICh0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uKSB7XHJcblx0XHR0aGlzLmVuYWJsZURlc3RpbmF0aW9uID0gdHJ1ZTtcclxuXHRcdHRoaXMuYWRkSW5mb1Rva2VuU2FsdWRvQ29tcGxlbWVudGFyaW8oKTtcclxuXHRcdGNvbnN0IHBsaVRva2VuRGVzdGluYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGxpLXRva2VuLWNvbXBsZW1lbnRhcnktZ3JlZXRpbmcnKTtcclxuXHRcdGxldCBodG1sID0gJyc7XHJcblx0XHRpZiAocGxpVG9rZW5EZXN0aW5hdGlvbikge1xyXG5cdFx0XHRodG1sID0gdGhpcy5yZW1vdmVDb21tZW50c0h0bWwocGxpVG9rZW5EZXN0aW5hdGlvbi5pbm5lckhUTUwpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRoaXMudG9rZW5TZXJ2aWNlLnJlcGxhY2VUb2tlbihzdHJpbmdUZXh0LCB0b2tlblZhbHVlLCBodG1sKTtcclxuXHRcdC8vIH1cclxuXHRcdC8vIHJldHVybiBzdHJpbmdUZXh0O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICpcclxuXHQgKi9cclxuXHRhZGRJbmZvVG9rZW5TYWx1ZG9Db21wbGVtZW50YXJpbygpIHtcclxuXHRcdGxldCBwbGlUb2tlbkRlc3RpbmF0aW9uID0gJCgnI3BsaS10b2tlbi1jb21wbGVtZW50YXJ5LWdyZWV0aW5nJyk7XHJcblx0XHRwbGlUb2tlbkRlc3RpbmF0aW9uLmVtcHR5KCk7XHJcblx0XHRpZiAodGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbikge1xyXG5cdFx0XHRsZXQgZGVzdGluYXRpb25JbmZvID0gJCgnPGRpdj48L2Rpdj4nKTtcclxuXHRcdFx0aWYgKHRoaXMuZGF0YS5kYXRhRGVzdGluYXRpb24uZ3JlZXRpbmcpIHtcclxuXHRcdFx0XHRkZXN0aW5hdGlvbkluZm8uaHRtbCh0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLmdyZWV0aW5nKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAodGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi50aXRsZSkge1xyXG5cdFx0XHRcdGNvbnN0IHZhbHVlVGV4dCA9XHJcblx0XHRcdFx0XHQoZGVzdGluYXRpb25JbmZvLmh0bWwoKS5sZW5ndGggPT0gMCA/ICcnIDogJyAnKSArXHJcblx0XHRcdFx0XHR0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLnRpdGxlO1xyXG5cdFx0XHRcdGRlc3RpbmF0aW9uSW5mby5odG1sKGRlc3RpbmF0aW9uSW5mby5odG1sKCkgKyB2YWx1ZVRleHQpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmICh0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLmxhc3ROYW1lKSB7XHJcblx0XHRcdFx0bGV0IHZhbHVlSW5mb05hbWUgPSB0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLmxhc3ROYW1lXHJcblx0XHRcdFx0XHQ/IHRoaXMuZGF0YS5kYXRhRGVzdGluYXRpb24ubGFzdE5hbWVcclxuXHRcdFx0XHRcdDogJyc7XHJcblx0XHRcdFx0Y29uc3QgdmFsdWVUZXh0ID1cclxuXHRcdFx0XHRcdChkZXN0aW5hdGlvbkluZm8uaHRtbCgpLmxlbmd0aCA9PSAwID8gJycgOiAnICcpICtcclxuXHRcdFx0XHRcdCc8c3Ryb25nPicgK1xyXG5cdFx0XHRcdFx0dmFsdWVJbmZvTmFtZSArXHJcblx0XHRcdFx0XHQnPC9zdHJvbmc+JztcclxuXHRcdFx0XHRkZXN0aW5hdGlvbkluZm8uaHRtbChkZXN0aW5hdGlvbkluZm8uaHRtbCgpICsgdmFsdWVUZXh0KTtcclxuXHRcdFx0fVxyXG5cdFx0XHRwbGlUb2tlbkRlc3RpbmF0aW9uLmFwcGVuZChkZXN0aW5hdGlvbkluZm8pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSByZW1vdmVDb21tZW50c0h0bWwoaHRtbDogc3RyaW5nKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBodG1sID8gaHRtbC5yZXBsYWNlKC88IS0tW1xcc1xcU10qPy0tPi9nLCAnJykgOiBodG1sO1xyXG5cdH1cclxuXHJcblx0cmVzb2x2ZVN0YXRpY1Rva2Vuc0tleVNpZ24oaHRtbCwgdG9rZW5WYWx1ZTogYW55LCBzdWJUb2tlbjogc3RyaW5nW10pOiBzdHJpbmcge1xyXG5cdFx0bGV0IGNvbnRhaW5lciA9ICQoJzxkaXY+PC9kaXY+Jyk7XHJcblx0XHRsZXQgaW1nID0gJCgnPGltZyBpZD1cIicgKyBUb2tlblNlcnZpY2UuU0lHTl9MRVRURVJfVEFHX0lEICsgJ1wiPicpO1xyXG5cdFx0aW1nLmF0dHIoJ3NyYycsICcnKTtcclxuXHRcdGlmIChzdWJUb2tlbi5sZW5ndGggPiAyKSB7XHJcblx0XHRcdGltZy5hdHRyKCd3aWR0aCcsIHN1YlRva2VuWzJdLnRvU3RyaW5nKCkpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHN1YlRva2VuLmxlbmd0aCA+IDMpIHtcclxuXHRcdFx0aW1nLmF0dHIoJ2hlaWdodCcsIHN1YlRva2VuWzNdLnRvU3RyaW5nKCkpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHN1YlRva2VuLmxlbmd0aCA+IDQpIHtcclxuXHRcdFx0aW1nLmF0dHIoJ25hbWUnLCBzdWJUb2tlbls0XS50b1N0cmluZygpKTtcclxuXHRcdH1cclxuXHRcdGNvbnRhaW5lci5hcHBlbmQoaW1nKTtcclxuXHRcdC8vIHJldHVybiBjb250YWluZXIuaHRtbCgpO1xyXG5cdFx0cmV0dXJuIHRoaXMudG9rZW5TZXJ2aWNlLnJlcGxhY2VUb2tlbihodG1sLCB0b2tlblZhbHVlLCBjb250YWluZXIuaHRtbCgpKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZ2V0UnVicm9MYWJlbCgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMuZGF0YS5pZGlvbWEubG9jYWxlID09PSAnZXMnXHJcblx0XHRcdD8gJ1J1YnJvJ1xyXG5cdFx0XHQ6IHRoaXMuZGF0YS5pZGlvbWEubG9jYWxlID09PSAnZGUnXHJcblx0XHRcdD8gJ1Bvc3RlbidcclxuXHRcdFx0OiAnSXRlbSc7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGdldFRvdGFsTGFiZWwoKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiB0aGlzLmRhdGEuaWRpb21hLmxvY2FsZSA9PT0gJ2VzJ1xyXG5cdFx0XHQ/ICdUb3RhbCdcclxuXHRcdFx0OiB0aGlzLmRhdGEuaWRpb21hLmxvY2FsZSA9PT0gJ2RlJ1xyXG5cdFx0XHQ/ICdHZXNhbXQnXHJcblx0XHRcdDogdGhpcy5kYXRhLmlkaW9tYS5sb2NhbGUgPT09ICdmcidcclxuXHRcdFx0PyAnVG90YWwnXHJcblx0XHRcdDogdGhpcy5kYXRhLmlkaW9tYS5sb2NhbGUgPT09ICdpdCdcclxuXHRcdFx0PyAnVG90YWxlJ1xyXG5cdFx0XHQ6ICdJdGVtJztcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZ2V0WWVhckxhYmVsKCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gdGhpcy5kYXRhLmlkaW9tYS5sb2NhbGUgPT09ICdlcydcclxuXHRcdFx0PyAnQcOxbydcclxuXHRcdFx0OiB0aGlzLmRhdGEuaWRpb21hLmxvY2FsZSA9PT0gJ2RlJ1xyXG5cdFx0XHQ/ICdKYWhyJ1xyXG5cdFx0XHQ6IHRoaXMuZGF0YS5pZGlvbWEubG9jYWxlID09PSAnZnInXHJcblx0XHRcdD8gJ0FubsOpZSdcclxuXHRcdFx0OiB0aGlzLmRhdGEuaWRpb21hLmxvY2FsZSA9PT0gJ2l0J1xyXG5cdFx0XHQ/ICdBbm5vJ1xyXG5cdFx0XHQ6ICdZZWFyJztcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqXHJcblx0ICovXHJcblx0YWRkSW5mb1Rva2VuUmVzdW1lQ2F0ZWdvcnlZZWFyKFxyXG5cdFx0dHByZXNDb2RpZ286IG51bWJlcixcclxuXHRcdGlkVG90YWxCdWRnZXQ6IHN0cmluZyxcclxuXHRcdGJ1ZGdldER0bzogQnVkZ2V0RHRvXHJcblx0KSB7XHJcblx0XHRpZiAodHByZXNDb2RpZ28gPT0gRVRpcG9QcmVzdXB1ZXN0by5QUklNQVJZKSB7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0fVxyXG5cdFx0bGV0IHJlc3VtZUNhdGVnb3J5WWVhckNvbnRlbnQgPSAkKCcjJyArIGlkVG90YWxCdWRnZXQpO1xyXG5cdFx0cmVzdW1lQ2F0ZWdvcnlZZWFyQ29udGVudC5lbXB0eSgpO1xyXG5cdFx0aWYgKGJ1ZGdldER0byAmJiBidWRnZXREdG8uYnVkZ2V0ICYmIGJ1ZGdldER0by5idWRnZXQuc3VtbWFyeSkge1xyXG5cdFx0XHRjb25zdCBzdW1tYXJ5ID0gYnVkZ2V0RHRvLmJ1ZGdldC5zdW1tYXJ5O1xyXG5cdFx0XHRjb25zdCB0YWJsZSA9ICQoJzx0YWJsZT48L3RhYmxlPicpO1xyXG5cdFx0XHR0YWJsZS5jc3MoJ2JvcmRlci1zcGFjaW5nJywgJzJweCcpO1xyXG5cdFx0XHR0YWJsZS5jc3MoJ2JvcmRlci1jb2xsYXBzZScsICdjb2xsYXBzZScpO1xyXG5cdFx0XHQvL3RoZWFkXHJcblx0XHRcdGNvbnN0IHRoZWFkID0gJCgnPHRoZWFkPicpLmFwcGVuZFRvKHRhYmxlKTtcclxuXHRcdFx0Y29uc3QgdGhSdWJybyA9ICQoJzx0aD4nLCB7IGh0bWw6IHRoaXMuZ2V0UnVicm9MYWJlbCgpIH0pLmFwcGVuZFRvKHRoZWFkKTtcclxuXHRcdFx0dGhSdWJyby5jc3MoJ3RleHQtYWxpZ24nLCAnY2VudGVyJyk7XHJcblx0XHRcdHRoUnVicm8uY3NzKCdib3JkZXInLCAnMXB4IHNvbGlkIGJsYWNrJyk7XHJcblx0XHRcdHRoUnVicm8uY3NzKCdjb2xvcicsICd3aGl0ZScpO1xyXG5cdFx0XHR0aFJ1YnJvLmNzcygnYmFja2dyb3VuZC1jb2xvcicsICdncmV5Jyk7XHJcblx0XHRcdGxldCBpdGVyYWNpb25BbmlvID0gMDtcclxuXHRcdFx0Zm9yIChjb25zdCB5ZWFyIG9mIHN1bW1hcnkueWVhcnMpIHtcclxuXHRcdFx0XHRjb25zdCB0aFllYXIgPSAkKCc8dGg+JywgeyBodG1sOiB0aGlzLmdldFllYXJMYWJlbCgpICsgKytpdGVyYWNpb25BbmlvIH0pLmFwcGVuZFRvKFxyXG5cdFx0XHRcdFx0dGhlYWRcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHRcdHRoWWVhci5jc3MoJ3RleHQtYWxpZ24nLCAnY2VudGVyJyk7XHJcblx0XHRcdFx0dGhZZWFyLmNzcygnYm9yZGVyJywgJzFweCBzb2xpZCBibGFjaycpO1xyXG5cdFx0XHRcdHRoWWVhci5jc3MoJ2NvbG9yJywgJ3doaXRlJyk7XHJcblx0XHRcdFx0dGhZZWFyLmNzcygnYmFja2dyb3VuZC1jb2xvcicsICdncmV5Jyk7XHJcblx0XHRcdFx0dGhZZWFyLmNzcygnd2lkdGgnLCAnODBweCcpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGNvbnN0IHRvdGFsTGFiZWwgPSAnJm5ic3A7JyArIHRoaXMuZ2V0VG90YWxMYWJlbCgpICsgc3VtbWFyeS5iYXNlQ3VycmVuY3kgKyAnJm5ic3A7JztcclxuXHRcdFx0Y29uc3QgdGhUb3RhbCA9ICQoJzx0aD4nLCB7IGh0bWw6IHRvdGFsTGFiZWwgfSkuYXBwZW5kVG8odGhlYWQpO1xyXG5cdFx0XHR0aFRvdGFsLmNzcygndGV4dC1hbGlnbicsICdjZW50ZXInKTtcclxuXHRcdFx0dGhUb3RhbC5jc3MoJ2JvcmRlcicsICcxcHggc29saWQgYmxhY2snKTtcclxuXHRcdFx0dGhUb3RhbC5jc3MoJ2NvbG9yJywgJ3doaXRlJyk7XHJcblx0XHRcdHRoVG90YWwuY3NzKCdiYWNrZ3JvdW5kLWNvbG9yJywgJ2dyZXknKTtcclxuXHRcdFx0dGhUb3RhbC5jc3MoJ3dpZHRoJywgJzgwcHgnKTtcclxuXHRcdFx0Ly90Ym9keVxyXG5cdFx0XHRsZXQgdGJvZHkgPSAkKCc8dGJvZHk+JykuYXBwZW5kVG8odGFibGUpO1xyXG5cdFx0XHRmb3IgKGxldCBpQ2F0ID0gMDsgaUNhdCA8IHN1bW1hcnkuY2F0ZWdvcmllcy5sZW5ndGg7IGlDYXQrKykge1xyXG5cdFx0XHRcdGNvbnN0IHRyID0gJCgnPHRyPicpLmFwcGVuZFRvKHRib2R5KTtcclxuXHRcdFx0XHRjb25zdCBjYXRlZ29yeSA9IHN1bW1hcnkuY2F0ZWdvcmllc1tpQ2F0XTtcclxuXHRcdFx0XHRjb25zdCBydWJyb0xhYmVsID1cclxuXHRcdFx0XHRcdCcmbmJzcDsmbmJzcDsnICtcclxuXHRcdFx0XHRcdHRoaXMudHJhbnNsYXRlQ2F0ZWdvcnkoY2F0ZWdvcnkuY2F0ZWdvcnkpICtcclxuXHRcdFx0XHRcdCcmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsnO1xyXG5cdFx0XHRcdGNvbnN0IHRkUnVicm8gPSAkKCc8dGQ+JywgeyBodG1sOiBydWJyb0xhYmVsIH0pLmFwcGVuZFRvKHRyKTtcclxuXHRcdFx0XHR0ZFJ1YnJvLmNzcygndGV4dC1hbGlnbicsICdsZWZ0Jyk7XHJcblx0XHRcdFx0dGRSdWJyby5jc3MoJ2JvcmRlcicsICcxcHggc29saWQgYmxhY2snKTtcclxuXHRcdFx0XHR0ZFJ1YnJvLmNzcygnZm9udC13ZWlnaHQnLCAnYm9sZCcpO1xyXG5cdFx0XHRcdGZvciAoY29uc3QgeWVhciBvZiBjYXRlZ29yeS55ZWFycykge1xyXG5cdFx0XHRcdFx0Y29uc3QgeWVhclRvdGFsID1cclxuXHRcdFx0XHRcdFx0eWVhci50b3RhbCA9PSAwXHJcblx0XHRcdFx0XHRcdFx0PyAnLSdcclxuXHRcdFx0XHRcdFx0XHQ6IHRoaXMuY3VycmVuY3lQaXBlLnRyYW5zZm9ybSh5ZWFyLnRvdGFsLCAnZGVmYXVsdCcsICcnLCAnMS4wLTAnKTtcclxuXHRcdFx0XHRcdGNvbnN0IHllYXJMYWJlbFRvdGFsID0gJyZuYnNwOyZuYnNwOycgKyB5ZWFyVG90YWwgKyAnJm5ic3A7Jm5ic3A7JztcclxuXHRcdFx0XHRcdGNvbnN0IHRkWWVhciA9ICQoJzx0ZD4nLCB7IGh0bWw6IHllYXJMYWJlbFRvdGFsIH0pLmFwcGVuZFRvKHRyKTtcclxuXHRcdFx0XHRcdHRkWWVhci5jc3MoJ3RleHQtYWxpZ24nLCAncmlnaHQnKTtcclxuXHRcdFx0XHRcdHRkWWVhci5jc3MoJ2JvcmRlcicsICcxcHggc29saWQgYmxhY2snKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29uc3QgY2F0ZWdvcnlUb3RhbCA9XHJcblx0XHRcdFx0XHRjYXRlZ29yeS50b3RhbCA9PSAwXHJcblx0XHRcdFx0XHRcdD8gJy0nXHJcblx0XHRcdFx0XHRcdDogdGhpcy5jdXJyZW5jeVBpcGUudHJhbnNmb3JtKGNhdGVnb3J5LnRvdGFsLCAnZGVmYXVsdCcsICcnLCAnMS4wLTAnKTtcclxuXHRcdFx0XHRjb25zdCBjYXRlZ29yeUxhYmVsVG90YWwgPSAnJm5ic3A7Jm5ic3A7JyArIGNhdGVnb3J5VG90YWwgKyAnJm5ic3A7Jm5ic3A7JztcclxuXHRcdFx0XHRjb25zdCB0ZFRvdGFsID0gJCgnPHRkPicsIHsgaHRtbDogY2F0ZWdvcnlMYWJlbFRvdGFsIH0pLmFwcGVuZFRvKHRyKTtcclxuXHRcdFx0XHR0ZFRvdGFsLmNzcygndGV4dC1hbGlnbicsICdyaWdodCcpO1xyXG5cdFx0XHRcdHRkVG90YWwuY3NzKCdib3JkZXInLCAnMXB4IHNvbGlkIGJsYWNrJyk7XHJcblx0XHRcdFx0dGRUb3RhbC5jc3MoJ2ZvbnQtd2VpZ2h0JywgJ2JvbGQnKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRjb25zdCB0ckZpbmFsID0gJCgnPHRyPicpLmFwcGVuZFRvKHRib2R5KTtcclxuXHRcdFx0Y29uc3QgYmFzZUN1cnJlbmN5ID0gdGhpcy5nZXRUb3RhbExhYmVsKCkgKyAnICcgKyBzdW1tYXJ5LmJhc2VDdXJyZW5jeSArICcmbmJzcDsmbmJzcDsnO1xyXG5cdFx0XHRjb25zdCB0ZEZpbmFsVG90YWxCQyA9ICQoJzx0ZD4nLCB7IGh0bWw6IGJhc2VDdXJyZW5jeSB9KS5hcHBlbmRUbyh0ckZpbmFsKTtcclxuXHRcdFx0dGRGaW5hbFRvdGFsQkMuY3NzKCd0ZXh0LWFsaWduJywgJ3JpZ2h0Jyk7XHJcblx0XHRcdHRkRmluYWxUb3RhbEJDLmNzcygnYm9yZGVyJywgJzFweCBzb2xpZCBibGFjaycpO1xyXG5cdFx0XHR0ZEZpbmFsVG90YWxCQy5jc3MoJ2NvbG9yJywgJ3doaXRlJyk7XHJcblx0XHRcdHRkRmluYWxUb3RhbEJDLmNzcygnYmFja2dyb3VuZC1jb2xvcicsICdncmV5Jyk7XHJcblx0XHRcdGxldCBidWRnZXRUb3RhbCA9IDA7XHJcblx0XHRcdGZvciAoY29uc3QgeWVhciBvZiBzdW1tYXJ5LnllYXJzKSB7XHJcblx0XHRcdFx0Y29uc3QgeWVhclRvdGFsID1cclxuXHRcdFx0XHRcdHllYXIudG90YWwgPT0gMFxyXG5cdFx0XHRcdFx0XHQ/ICctJ1xyXG5cdFx0XHRcdFx0XHQ6IHRoaXMuY3VycmVuY3lQaXBlLnRyYW5zZm9ybSh5ZWFyLnRvdGFsLCAnZGVmYXVsdCcsICcnLCAnMS4wLTAnKTtcclxuXHRcdFx0XHRjb25zdCB5ZWFyTGFiZWxUb3RhbCA9IHllYXJUb3RhbCArICcmbmJzcDsmbmJzcDsnO1xyXG5cdFx0XHRcdGNvbnN0IHRkWWVhciA9ICQoJzx0ZD4nLCB7IGh0bWw6IHllYXJMYWJlbFRvdGFsIH0pLmFwcGVuZFRvKHRyRmluYWwpO1xyXG5cdFx0XHRcdHRkWWVhci5jc3MoJ3RleHQtYWxpZ24nLCAncmlnaHQnKTtcclxuXHRcdFx0XHR0ZFllYXIuY3NzKCdib3JkZXInLCAnMXB4IHNvbGlkIGJsYWNrJyk7XHJcblx0XHRcdFx0dGRZZWFyLmNzcygnY29sb3InLCAnd2hpdGUnKTtcclxuXHRcdFx0XHR0ZFllYXIuY3NzKCdiYWNrZ3JvdW5kLWNvbG9yJywgJ2dyZXknKTtcclxuXHRcdFx0XHRidWRnZXRUb3RhbCArPSB5ZWFyLnRvdGFsO1xyXG5cdFx0XHR9XHJcblx0XHRcdGNvbnN0IHRvdGFsQmFzZUN1cnJlbmN5ID1cclxuXHRcdFx0XHRidWRnZXRUb3RhbCA9PSAwXHJcblx0XHRcdFx0XHQ/ICctJ1xyXG5cdFx0XHRcdFx0OiB0aGlzLmN1cnJlbmN5UGlwZS50cmFuc2Zvcm0oYnVkZ2V0VG90YWwsICdkZWZhdWx0JywgJycsICcxLjAtMCcpO1xyXG5cdFx0XHRjb25zdCB0b3RhbExhYmVsQmFzZUN1cnJlbmN5ID0gJyZuYnNwOyZuYnNwOycgKyB0b3RhbEJhc2VDdXJyZW5jeSArICcmbmJzcDsmbmJzcDsnO1xyXG5cdFx0XHRjb25zdCB0ZEZpbmFsVG90YWwgPSAkKCc8dGQ+JywgeyBodG1sOiB0b3RhbExhYmVsQmFzZUN1cnJlbmN5IH0pLmFwcGVuZFRvKHRyRmluYWwpO1xyXG5cdFx0XHR0ZEZpbmFsVG90YWwuY3NzKCd0ZXh0LWFsaWduJywgJ3JpZ2h0Jyk7XHJcblx0XHRcdHRkRmluYWxUb3RhbC5jc3MoJ2JvcmRlcicsICcxcHggc29saWQgYmxhY2snKTtcclxuXHRcdFx0dGRGaW5hbFRvdGFsLmNzcygnY29sb3InLCAnd2hpdGUnKTtcclxuXHRcdFx0dGRGaW5hbFRvdGFsLmNzcygnYmFja2dyb3VuZC1jb2xvcicsICdncmV5Jyk7XHJcblx0XHRcdHJlc3VtZUNhdGVnb3J5WWVhckNvbnRlbnQuYXBwZW5kKHRhYmxlKTtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIiwiPGRpdiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgaWQ9XCJwbGktdG9rZW4tZGVzdGluYXRpb25cIj5cclxuXHQ8IS0tIDxkaXYgKm5nSWY9XCJkYXRhICE9IHVuZGVmaW5lZCAmJiBkYXRhLmRhdGFEZXN0aW5hdGlvbiAhPSB1bmRlZmluZWRcIj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImRhdGEuZGF0YURlc3RpbmF0aW9uLnRleHQgIT0gdW5kZWZpbmVkXCI+XHJcbiAgICAgICAgICAgIHt7ZGF0YS5kYXRhRGVzdGluYXRpb24udGV4dH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImRhdGEuZGF0YURlc3RpbmF0aW9uLnRpdGxlICE9IHVuZGVmaW5lZFwiPlxyXG4gICAgICAgICAgICB7e2RhdGEuZGF0YURlc3RpbmF0aW9uLnRpdGxlfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YS5kYXRhRGVzdGluYXRpb24ubmFtZSAhPSB1bmRlZmluZWQgfHwgZGF0YS5kYXRhRGVzdGluYXRpb24ubGFzdE5hbWUgIT0gdW5kZWZpbmVkXCI+XHJcbiAgICAgICAgICAgIDxzdHJvbmc+e3tkYXRhLmRhdGFEZXN0aW5hdGlvbi5uYW1lfX0ge3tkYXRhLmRhdGFEZXN0aW5hdGlvbi5sYXN0TmFtZX19PC9zdHJvbmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImRhdGEuZGF0YURlc3RpbmF0aW9uLmNhcmdvICE9IHVuZGVmaW5lZFwiPlxyXG4gICAgICAgICAgICB7e2RhdGEuZGF0YURlc3RpbmF0aW9uLmNhcmdvfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YS5kYXRhRGVzdGluYXRpb24ub2NjdXBhdGlvbiAhPSB1bmRlZmluZWRcIj5cclxuICAgICAgICAgICAge3tkYXRhLmRhdGFEZXN0aW5hdGlvbi5vY2N1cGF0aW9ufX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YS5kYXRhRGVzdGluYXRpb24uY29tcGFueSAhPSB1bmRlZmluZWRcIj5cclxuICAgICAgICAgICAge3tkYXRhLmRhdGFEZXN0aW5hdGlvbi5jb21wYW55fX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YS5kYXRhRGVzdGluYXRpb24uYWRkcmVzcyAhPSB1bmRlZmluZWQgfHwgZGF0YS5kYXRhRGVzdGluYXRpb24uYWRkcmVzc0RldGFpbHMgIT0gdW5kZWZpbmVkIFwiPlxyXG4gICAgICAgICAgICB7e2RhdGEuZGF0YURlc3RpbmF0aW9uLmFkZHJlc3N9fSB7e2RhdGEuZGF0YURlc3RpbmF0aW9uLmFkZHJlc3NEZXRhaWxzfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YS5kYXRhRGVzdGluYXRpb24uY2l0eSAhPSB1bmRlZmluZWQgfHwgZGF0YS5kYXRhRGVzdGluYXRpb24uY291bnRyeSAhPSB1bmRlZmluZWQgXCI+XHJcbiAgICAgICAgICAgIHt7ZGF0YS5kYXRhRGVzdGluYXRpb24uY2l0eX19PHNwYW4gKm5nSWY9XCJkYXRhLmRhdGFEZXN0aW5hdGlvbi5jaXR5ICE9IHVuZGVmaW5lZCAmJiBkYXRhLmRhdGFEZXN0aW5hdGlvbi5jb3VudHJ5ICE9IHVuZGVmaW5lZFwiPiw8L3NwYW4+e3tkYXRhLmRhdGFEZXN0aW5hdGlvbi5jb3VudHJ5fX1cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj4gLS0+XHJcbjwvZGl2PlxyXG48IS0tIENvbXBsZW1lbnRhcnkgZ3JlZXRpbmctLT5cclxuPGRpdiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgaWQ9XCJwbGktdG9rZW4tY29tcGxlbWVudGFyeS1ncmVldGluZ1wiPlxyXG5cdDwhLS0gPGRpdlxyXG5cdFx0Km5nSWY9XCJcclxuXHRcdFx0ZGF0YSAhPSB1bmRlZmluZWQgJiZcclxuXHRcdFx0ZGF0YS5kYXRhRGVzdGluYXRpb24gIT0gdW5kZWZpbmVkICYmXHJcblx0XHRcdGRhdGEuZGF0YURlc3RpbmF0aW9uLnRhcmdldElkID09IDIgJiZcclxuXHRcdFx0ZGF0YS5kYXRhRGVzdGluYXRpb24uZ3JlZXRpbmcgIT0gdW5kZWZpbmVkXHJcblx0XHRcIlxyXG5cdD5cclxuXHRcdHt7IGRhdGEuZGF0YURlc3RpbmF0aW9uLmdyZWV0aW5nXHJcblx0XHR9fTxzcGFuICpuZ0lmPVwiZGF0YS5kYXRhRGVzdGluYXRpb24udGl0bGUgIT0gdW5kZWZpbmVkXCJcclxuXHRcdFx0PiZuYnNwO3t7IGRhdGEuZGF0YURlc3RpbmF0aW9uLnRpdGxlIH19PC9zcGFuXHJcblx0XHQ+PHNwYW4gKm5nSWY9XCJkYXRhLmRhdGFEZXN0aW5hdGlvbi5sYXN0TmFtZSAhPSB1bmRlZmluZWRcIlxyXG5cdFx0XHQ+Jm5ic3A7e3sgZGF0YS5kYXRhRGVzdGluYXRpb24ubGFzdE5hbWUgfX08L3NwYW5cclxuXHRcdD46XHJcblx0PC9kaXY+LS0+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSBQcmltYXJ5IGJ1ZGdldCB0b3RhbCBzdW1tYXJ5ICR7cHJlc3VwdWVzdG9fMjg4X3Jlc3VtZUNhdGVnb3J5WWVhcn0gLS0+XHJcbjxkaXYgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIGlkPVwicGxpLXRva2VuLXByaW5jaXBhbC1idWRnZXQtdG90YWwtc3VtbWFyeVwiPlxyXG5cdDwhLS0gPGRpdj5cclxuXHRcdDx0YWJsZVxyXG5cdFx0XHQqbmdJZj1cIlxyXG5cdFx0XHRcdGJ1ZGdldER0b1ByaW1hcnkgIT09IG51bGwgJiZcclxuXHRcdFx0XHRidWRnZXREdG9QcmltYXJ5LmJ1ZGdldCAmJlxyXG5cdFx0XHRcdGJ1ZGdldER0b1ByaW1hcnkuYnVkZ2V0LnN1bW1hcnlcclxuXHRcdFx0XCJcclxuXHRcdFx0c3R5bGU9XCJib3JkZXItc3BhY2luZzogMnB4O2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XCJcclxuXHRcdD5cclxuXHRcdFx0PHRoZWFkPlxyXG5cdFx0XHRcdDx0ciBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkO1wiPlxyXG5cdFx0XHRcdFx0PHRkXHJcblx0XHRcdFx0XHRcdHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO2JvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBjb2xvcjogd2hpdGU7YmFja2dyb3VuZC1jb2xvcjogZ3JleTtcIlxyXG5cdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRSdWJyb1xyXG5cdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHRcdDx0ZFxyXG5cdFx0XHRcdFx0XHQqbmdGb3I9XCJsZXQgeWVhciBvZiBidWRnZXREdG9QcmltYXJ5LmJ1ZGdldC5zdW1tYXJ5LnllYXJzXCJcclxuXHRcdFx0XHRcdFx0c3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7IGNvbG9yOiB3aGl0ZTtiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OyB3aWR0aDo4MHB4O1wiXHJcblx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdHt7IHllYXIueWVhck51bWJlciB9fVxyXG5cdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHRcdDx0ZFxyXG5cdFx0XHRcdFx0XHRzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtib3JkZXI6IDFweCBzb2xpZCBibGFjazsgY29sb3I6IHdoaXRlO2JhY2tncm91bmQtY29sb3I6IGdyZXk7IHdpZHRoOiAxMTBweDtcIlxyXG5cdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRUb3RhbCAoe3sgYnVkZ2V0RHRvUHJpbWFyeS5idWRnZXQuc3VtbWFyeS5iYXNlQ3VycmVuY3kgfX0pXHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdDwvdHI+XHJcblx0XHRcdDwvdGhlYWQ+XHJcblx0XHRcdDx0Ym9keT5cclxuXHRcdFx0XHQ8dHJcclxuXHRcdFx0XHRcdCpuZ0Zvcj1cIlxyXG5cdFx0XHRcdFx0XHRsZXQgY2F0ZWdvcnkgb2YgYnVkZ2V0RHRvUHJpbWFyeS5idWRnZXQuc3VtbWFyeS5jYXRlZ29yaWVzO1xyXG5cdFx0XHRcdFx0XHRsZXQgaUNhdCA9IGluZGV4XHJcblx0XHRcdFx0XHRcIlxyXG5cdFx0XHRcdD5cclxuXHRcdFx0XHRcdDx0ZCBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkO3RleHQtYWxpZ246IGxlZnQ7Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7XCI+XHJcblx0XHRcdFx0XHRcdCZuYnNwOyZuYnNwO3t7XHJcblx0XHRcdFx0XHRcdFx0dHJhbnNsYXRlQ2F0ZWdvcnkoY2F0ZWdvcnkuY2F0ZWdvcnkpXHJcblx0XHRcdFx0XHRcdH19Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdFx0PHRkXHJcblx0XHRcdFx0XHRcdCpuZ0Zvcj1cImxldCB5ZWFyIG9mIGNhdGVnb3J5LnllYXJzXCJcclxuXHRcdFx0XHRcdFx0c3R5bGU9XCJ0ZXh0LWFsaWduOiByaWdodDtib3JkZXI6IDFweCBzb2xpZCBibGFjazsgXCJcclxuXHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0Jm5ic3A7Jm5ic3A7e3tcclxuXHRcdFx0XHRcdFx0XHR5ZWFyLnRvdGFsID09IDAgPyAnLScgOiAoeWVhci50b3RhbCB8IGN1cnJlbmN5OiAnZGVmYXVsdCc6Jyc6JzEuMC0wJylcclxuXHRcdFx0XHRcdFx0fX0mbmJzcDsmbmJzcDtcclxuXHRcdFx0XHRcdDwvdGQ+XHJcblx0XHRcdFx0XHQ8dGQgc3R5bGU9XCJmb250LXdlaWdodDogYm9sZDsgdGV4dC1hbGlnbjogcmlnaHQ7Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7XCI+XHJcblx0XHRcdFx0XHRcdCZuYnNwOyZuYnNwO3t7XHJcblx0XHRcdFx0XHRcdFx0Y2F0ZWdvcnkudG90YWwgPT0gMFxyXG5cdFx0XHRcdFx0XHRcdFx0PyAnLSdcclxuXHRcdFx0XHRcdFx0XHRcdDogKGNhdGVnb3J5LnRvdGFsIHwgY3VycmVuY3k6ICdkZWZhdWx0JzonJzonMS4wLTAnKVxyXG5cdFx0XHRcdFx0XHR9fSZuYnNwOyZuYnNwO1xyXG5cdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHQ8L3RyPlxyXG5cdFx0XHRcdDx0ciBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkO1wiPlxyXG5cdFx0XHRcdFx0PHRkXHJcblx0XHRcdFx0XHRcdHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHQ7Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7IGNvbG9yOiB3aGl0ZTtiYWNrZ3JvdW5kLWNvbG9yOiBncmV5O1wiXHJcblx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFRvdGFsICh7eyBidWRnZXREdG9QcmltYXJ5LmJ1ZGdldC5zdW1tYXJ5LmJhc2VDdXJyZW5jeSB9fSkmbmJzcDsmbmJzcDtcclxuXHRcdFx0XHRcdDwvdGQ+XHJcblx0XHRcdFx0XHQ8dGRcclxuXHRcdFx0XHRcdFx0Km5nRm9yPVwibGV0IHllYXIgb2YgYnVkZ2V0RHRvUHJpbWFyeS5idWRnZXQuc3VtbWFyeS55ZWFyc1wiXHJcblx0XHRcdFx0XHRcdHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHQ7Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7IGNvbG9yOiB3aGl0ZTtiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OyBcIlxyXG5cdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHR7e1xyXG5cdFx0XHRcdFx0XHRcdHllYXIudG90YWwgPT0gMCA/ICctJyA6ICh5ZWFyLnRvdGFsIHwgY3VycmVuY3k6ICdkZWZhdWx0JzonJzonMS4wLTAnKVxyXG5cdFx0XHRcdFx0XHR9fSZuYnNwOyZuYnNwO1xyXG5cdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHRcdDx0ZFxyXG5cdFx0XHRcdFx0XHRzdHlsZT1cInRleHQtYWxpZ246IHJpZ2h0O2JvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBjb2xvcjogd2hpdGU7YmFja2dyb3VuZC1jb2xvcjogZ3JleTtcIlxyXG5cdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHR7e1xyXG5cdFx0XHRcdFx0XHRcdGJ1ZGdldER0b1ByaW1hcnkuYnVkZ2V0LnN1bW1hcnkuYnVkZ2V0VG90YWwgPT0gMFxyXG5cdFx0XHRcdFx0XHRcdFx0PyAnLSdcclxuXHRcdFx0XHRcdFx0XHRcdDogKGJ1ZGdldER0b1ByaW1hcnkuYnVkZ2V0LnN1bW1hcnkuYnVkZ2V0VG90YWxcclxuXHRcdFx0XHRcdFx0XHRcdCAgfCBjdXJyZW5jeTogJ2RlZmF1bHQnOicnOicxLjAtMCcpXHJcblx0XHRcdFx0XHRcdH19Jm5ic3A7Jm5ic3A7XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdDwvdHI+XHJcblx0XHRcdDwvdGJvZHk+XHJcblx0XHQ8L3RhYmxlPlxyXG5cdDwvZGl2PiAtLT5cclxuPC9kaXY+XHJcbjwhLS0gU2VjdW5kYXJ5IGJ1ZGdldCB0b3RhbCBzdW1tYXJ5ICR7cHJlc3VwdWVzdG9fMjg4X3Jlc3VtZUNhdGVnb3J5WWVhcn0gLS0+XHJcbjxkaXYgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIGlkPVwicGxpLXRva2VuLXNlY3VuZGFyeS1idWRnZXQtdG90YWwtc3VtbWFyeVwiPlxyXG5cdDxkaXY+XHJcblx0XHQ8dGFibGVcclxuXHRcdFx0Km5nSWY9XCJcclxuXHRcdFx0XHRidWRnZXREdG9TZWN1bmRhcnkgIT09IG51bGwgJiZcclxuXHRcdFx0XHRidWRnZXREdG9TZWN1bmRhcnkuYnVkZ2V0ICYmXHJcblx0XHRcdFx0YnVkZ2V0RHRvU2VjdW5kYXJ5LmJ1ZGdldC5zdW1tYXJ5XHJcblx0XHRcdFwiXHJcblx0XHRcdHN0eWxlPVwiYm9yZGVyLXNwYWNpbmc6IDJweDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgd2lkdGg6IDEwMCU7XCJcclxuXHRcdD5cclxuXHRcdFx0PHRoZWFkPlxyXG5cdFx0XHRcdDx0ciBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkO1wiPlxyXG5cdFx0XHRcdFx0PHRkXHJcblx0XHRcdFx0XHRcdHN0eWxlPVwiXHJcblx0XHRcdFx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdFx0XHRcdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrO1xyXG5cdFx0XHRcdFx0XHRcdGNvbG9yOiB3aGl0ZTtcclxuXHRcdFx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBncmV5O1xyXG5cdFx0XHRcdFx0XHRcIlxyXG5cdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRSdWJyb1xyXG5cdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHRcdDx0ZFxyXG5cdFx0XHRcdFx0XHQqbmdGb3I9XCJsZXQgeWVhciBvZiBidWRnZXREdG9TZWN1bmRhcnkuYnVkZ2V0LnN1bW1hcnkueWVhcnNcIlxyXG5cdFx0XHRcdFx0XHRzdHlsZT1cIlxyXG5cdFx0XHRcdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdFx0XHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCBibGFjaztcclxuXHRcdFx0XHRcdFx0XHRjb2xvcjogd2hpdGU7XHJcblx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogZ3JleTtcclxuXHRcdFx0XHRcdFx0XHR3aWR0aDogODBweDtcclxuXHRcdFx0XHRcdFx0XCJcclxuXHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0e3sgeWVhci55ZWFyTnVtYmVyIH19XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdFx0PHRkXHJcblx0XHRcdFx0XHRcdHN0eWxlPVwiXHJcblx0XHRcdFx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdFx0XHRcdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrO1xyXG5cdFx0XHRcdFx0XHRcdGNvbG9yOiB3aGl0ZTtcclxuXHRcdFx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBncmV5O1xyXG5cdFx0XHRcdFx0XHRcdHdpZHRoOiAxMTBweDtcclxuXHRcdFx0XHRcdFx0XCJcclxuXHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0VG90YWwgKHt7IGJ1ZGdldER0b1NlY3VuZGFyeS5idWRnZXQuc3VtbWFyeS5iYXNlQ3VycmVuY3kgfX0pXHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdDwvdHI+XHJcblx0XHRcdDwvdGhlYWQ+XHJcblx0XHRcdDx0Ym9keT5cclxuXHRcdFx0XHQ8dHJcclxuXHRcdFx0XHRcdCpuZ0Zvcj1cIlxyXG5cdFx0XHRcdFx0XHRsZXQgY2F0ZWdvcnkgb2YgYnVkZ2V0RHRvU2VjdW5kYXJ5LmJ1ZGdldC5zdW1tYXJ5LmNhdGVnb3JpZXM7XHJcblx0XHRcdFx0XHRcdGxldCBpQ2F0ID0gaW5kZXhcclxuXHRcdFx0XHRcdFwiXHJcblx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0PHRkIHN0eWxlPVwiZm9udC13ZWlnaHQ6IGJvbGQ7IHRleHQtYWxpZ246IGxlZnQ7IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrO1wiPlxyXG5cdFx0XHRcdFx0XHQmbmJzcDsmbmJzcDt7e1xyXG5cdFx0XHRcdFx0XHRcdHRyYW5zbGF0ZUNhdGVnb3J5KGNhdGVnb3J5LmNhdGVnb3J5KVxyXG5cdFx0XHRcdFx0XHR9fSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1xyXG5cdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHRcdDx0ZFxyXG5cdFx0XHRcdFx0XHQqbmdGb3I9XCJsZXQgeWVhciBvZiBjYXRlZ29yeS55ZWFyc1wiXHJcblx0XHRcdFx0XHRcdHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHQ7IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrO1wiXHJcblx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdCZuYnNwOyZuYnNwO3t7XHJcblx0XHRcdFx0XHRcdFx0eWVhci50b3RhbCA9PSAwID8gJy0nIDogKHllYXIudG90YWwgfCBjdXJyZW5jeTogJ2RlZmF1bHQnOicnOicxLjAtMCcpXHJcblx0XHRcdFx0XHRcdH19Jm5ic3A7Jm5ic3A7XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdFx0PHRkIHN0eWxlPVwiZm9udC13ZWlnaHQ6IGJvbGQ7IHRleHQtYWxpZ246IHJpZ2h0OyBib3JkZXI6IDFweCBzb2xpZCBibGFjaztcIj5cclxuXHRcdFx0XHRcdFx0Jm5ic3A7Jm5ic3A7e3tcclxuXHRcdFx0XHRcdFx0XHRjYXRlZ29yeS50b3RhbCA9PSAwXHJcblx0XHRcdFx0XHRcdFx0XHQ/ICctJ1xyXG5cdFx0XHRcdFx0XHRcdFx0OiAoY2F0ZWdvcnkudG90YWwgfCBjdXJyZW5jeTogJ2RlZmF1bHQnOicnOicxLjAtMCcpXHJcblx0XHRcdFx0XHRcdH19Jm5ic3A7Jm5ic3A7XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdDwvdHI+XHJcblx0XHRcdFx0PHRyIHN0eWxlPVwiZm9udC13ZWlnaHQ6IGJvbGQ7XCI+XHJcblx0XHRcdFx0XHQ8dGRcclxuXHRcdFx0XHRcdFx0c3R5bGU9XCJcclxuXHRcdFx0XHRcdFx0XHR0ZXh0LWFsaWduOiByaWdodDtcclxuXHRcdFx0XHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCBibGFjaztcclxuXHRcdFx0XHRcdFx0XHRjb2xvcjogd2hpdGU7XHJcblx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogZ3JleTtcclxuXHRcdFx0XHRcdFx0XCJcclxuXHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0VG90YWwgKHt7IGJ1ZGdldER0b1NlY3VuZGFyeS5idWRnZXQuc3VtbWFyeS5iYXNlQ3VycmVuY3kgfX0pJm5ic3A7Jm5ic3A7XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdFx0PHRkXHJcblx0XHRcdFx0XHRcdCpuZ0Zvcj1cImxldCB5ZWFyIG9mIGJ1ZGdldER0b1NlY3VuZGFyeS5idWRnZXQuc3VtbWFyeS55ZWFyc1wiXHJcblx0XHRcdFx0XHRcdHN0eWxlPVwiXHJcblx0XHRcdFx0XHRcdFx0dGV4dC1hbGlnbjogcmlnaHQ7XHJcblx0XHRcdFx0XHRcdFx0Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7XHJcblx0XHRcdFx0XHRcdFx0Y29sb3I6IHdoaXRlO1xyXG5cdFx0XHRcdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IGdyZXk7XHJcblx0XHRcdFx0XHRcdFwiXHJcblx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdHt7XHJcblx0XHRcdFx0XHRcdFx0eWVhci50b3RhbCA9PSAwID8gJy0nIDogKHllYXIudG90YWwgfCBjdXJyZW5jeTogJ2RlZmF1bHQnOicnOicxLjAtMCcpXHJcblx0XHRcdFx0XHRcdH19Jm5ic3A7Jm5ic3A7XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdFx0PHRkXHJcblx0XHRcdFx0XHRcdHN0eWxlPVwiXHJcblx0XHRcdFx0XHRcdFx0dGV4dC1hbGlnbjogcmlnaHQ7XHJcblx0XHRcdFx0XHRcdFx0Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7XHJcblx0XHRcdFx0XHRcdFx0Y29sb3I6IHdoaXRlO1xyXG5cdFx0XHRcdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IGdyZXk7XHJcblx0XHRcdFx0XHRcdFwiXHJcblx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdHt7XHJcblx0XHRcdFx0XHRcdFx0YnVkZ2V0RHRvU2VjdW5kYXJ5LmJ1ZGdldC5zdW1tYXJ5LmJ1ZGdldFRvdGFsID09IDBcclxuXHRcdFx0XHRcdFx0XHRcdD8gJy0nXHJcblx0XHRcdFx0XHRcdFx0XHQ6IChidWRnZXREdG9TZWN1bmRhcnkuYnVkZ2V0LnN1bW1hcnkuYnVkZ2V0VG90YWxcclxuXHRcdFx0XHRcdFx0XHRcdCAgfCBjdXJyZW5jeTogJ2RlZmF1bHQnOicnOicxLjAtMCcpXHJcblx0XHRcdFx0XHRcdH19Jm5ic3A7Jm5ic3A7XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdDwvdHI+XHJcblx0XHRcdDwvdGJvZHk+XHJcblx0XHQ8L3RhYmxlPlxyXG5cdDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
1029
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcGxpLWNvbW1vbnMvc3JjL2xpYi9jb21wb25lbnRzL3Rva2VuL3Rva2VuLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy9saWIvY29tcG9uZW50cy90b2tlbi90b2tlbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUlaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTixVQUFVLEVBSVYsZ0JBQWdCLEVBQ2hCLFVBQVUsRUFFVixrQkFBa0IsRUFHbEIsUUFBUSxFQUVSLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUc1RCxPQUFPLFFBQVEsQ0FBQzs7Ozs7OztBQVFoQixNQUFNLE9BQU8sY0FBYztJQTZCMUIsWUFDUyxZQUEwQixFQUMxQixZQUEwQixFQUMxQixhQUE0QixFQUM1QixxQkFBNEMsRUFDNUMsYUFBNEI7UUFKNUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQTdCckMsdUNBQXVDO1FBQzdCLGVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUVsRSxrREFBa0Q7UUFDbEQsc0JBQWlCLEdBQVksS0FBSyxDQUFDO0lBMEJoQyxDQUFDO0lBRUosUUFBUTtRQUNQLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixH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K0JBQ0MsV0FBVzswTkFNWixRQUFRO3NCQUFoQixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuXHRDb21wb25lbnQsXHJcblx0T25Jbml0LFxyXG5cdElucHV0LFxyXG5cdE91dHB1dCxcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0T25DaGFuZ2VzLFxyXG5cdFNpbXBsZUNoYW5nZXMsXHJcblx0U2ltcGxlQ2hhbmdlXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcblx0VXRpbFN0cmluZyxcclxuXHREYXRhVG9UcmFuc2xhdGVUb2tlbixcclxuXHRUb2tlbixcclxuXHRCdWRnZXREdG8sXHJcblx0RVRpcG9QcmVzdXB1ZXN0byxcclxuXHRQbGlVc3VhcmlvLFxyXG5cdHNlc2lvbixcclxuXHRBdXRoZW50aWNhdGlvblV0aWwsXHJcblx0UGxpVXNlcixcclxuXHRBcHBsaWNhdGlvbkJ1ZGdldFRvdGFsLFxyXG5cdERhdGVVdGlsLFxyXG5cdEV2YWx1YXRpb25cclxufSBmcm9tICduZy1wbGktdXRpbCc7XHJcbmltcG9ydCB7IEN1cnJlbmN5UGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFRva2VuU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Rva2VuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgJ2pxdWVyeSc7XHJcbmltcG9ydCB7IFNlc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zZXNpb24uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ3BsaS10b2tlbicsXHJcblx0dGVtcGxhdGVVcmw6ICcuL3Rva2VuLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi90b2tlbi5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRva2VuQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG5cdC8qKiBJdCBjb250YWlucyB0aGUgdGVtcGxhdGUgaHRtbCB0byB0cmFuc2xhdGUgKi9cclxuXHRASW5wdXQoKSB0ZW1wbGF0ZTogc3RyaW5nO1xyXG5cdC8qKiBJdCBjb250YWlucyB0aGUgZGF0YSB0byBpbXBsZW1lbnQgKi9cclxuXHRASW5wdXQoKSBkYXRhOiBEYXRhVG9UcmFuc2xhdGVUb2tlbjtcclxuXHQvKiogSXQgbm90aWZpZXMgdGhlIGh0bWwgaXMgZ2VuZXJhdGVkKi9cclxuXHRAT3V0cHV0KCkgb25HZW5lcmF0ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqIEl0IGVuYWJsZXMgdGhlIHZpc3VhbGl6YXRpb24gb2YgZGVzdGluYXRpb24gKi9cclxuXHRlbmFibGVEZXN0aW5hdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKiogSXQgY29udGFpbnMgdGhlIHByb20gY29kZSAqL1xyXG5cdHByb21Db2RpZ286IG51bWJlcjtcclxuXHJcblx0LyoqICovXHJcblx0bFRva2VuQ2FsY3VsYXRlZDogVG9rZW5bXTtcclxuXHQvKiogKi9cclxuXHRsRm9ybUZpZWxkc1Rva2VuOiBhbnlbXTtcclxuXHQvKiogKi9cclxuXHR1bmlxdWVWZXJpZmljYXRpb25Db2RlOiBzdHJpbmc7XHJcblx0LyoqICovXHJcblx0YnVkZ2V0RHRvUHJpbWFyeTogQnVkZ2V0RHRvO1xyXG5cdC8qKiAqL1xyXG5cdGJ1ZGdldER0b1NlY3VuZGFyeTogQnVkZ2V0RHRvO1xyXG5cdC8qKiBBcyB0aGUgbGlzdCBvZiB0b2tlbiBhcmUgbG9hZGVkIGR5bmFtaWNhbGx5LCB0aGlzIG1hbmFnZSB0aGF0IG9ubHkgcmVwbGFjZSB0aGUgaW5mbyBvbmNlLiAqL1xyXG5cdGFscmVhZHlDYWxsUmVwbGFjZVRva2VuczogYm9vbGVhbjtcclxuXHJcblx0ZXZhbHVhdGlvbjogRXZhbHVhdGlvbjtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIGN1cnJlbmN5UGlwZTogQ3VycmVuY3lQaXBlLFxyXG5cdFx0cHJpdmF0ZSB0b2tlblNlcnZpY2U6IFRva2VuU2VydmljZSxcclxuXHRcdHByaXZhdGUgdG9hc3RyU2VydmljZTogVG9hc3RyU2VydmljZSxcclxuXHRcdHByaXZhdGUgYXV0aGVudGljYXRpb25TZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHNlc2lvblNlcnZpY2U6IFNlc2lvblNlcnZpY2VcclxuXHQpIHt9XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0dGhpcy5sVG9rZW5DYWxjdWxhdGVkID0gbnVsbDtcclxuXHRcdHRoaXMubEZvcm1GaWVsZHNUb2tlbiA9IG51bGw7XHJcblx0XHR0aGlzLmJ1ZGdldER0b1ByaW1hcnkgPSBudWxsO1xyXG5cdFx0dGhpcy5idWRnZXREdG9TZWN1bmRhcnkgPSBudWxsO1xyXG5cdFx0dGhpcy5ldmFsdWF0aW9uID0gbnVsbDtcclxuXHR9XHJcblxyXG5cdC8qKiBJdCBtYW5hZ2VzIHRoZSBjaGFuZ2Ugb2YgdGhlIGV2ZXJ5IEBJbnB1dCAqL1xyXG5cdG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuXHRcdC8vIEV2ZXJ5IHRpbWUgdGhhdCBpbnB1dCB2YWx1ZXMgY2hhbmdlLCBjYWxsIG5ldyB2ZXJpZmljYXRpb24gY29kZVxyXG5cdFx0dGhpcy51bmlxdWVWZXJpZmljYXRpb25Db2RlID0gbnVsbDtcclxuXHRcdGNvbnN0IHRlbXBsYXRlOiBTaW1wbGVDaGFuZ2UgPSBjaGFuZ2VzLnRlbXBsYXRlO1xyXG5cdFx0Y29uc3QgZGF0YTogU2ltcGxlQ2hhbmdlID0gY2hhbmdlcy5kYXRhO1xyXG5cclxuXHRcdGlmICh0ZW1wbGF0ZSAmJiB0ZW1wbGF0ZS5jdXJyZW50VmFsdWUpIHtcclxuXHRcdFx0dGhpcy50ZW1wbGF0ZSA9IHRlbXBsYXRlLmN1cnJlbnRWYWx1ZTtcclxuXHRcdH1cclxuXHRcdGlmIChkYXRhICYmIGRhdGEuY3VycmVudFZhbHVlKSB7XHJcblx0XHRcdHRoaXMuZGF0YSA9IGRhdGEuY3VycmVudFZhbHVlO1xyXG5cdFx0XHR0aGlzLnByb21Db2RpZ28gPSB0aGlzLmRhdGEucHJvbUNvZGlnbztcclxuXHRcdH1cclxuXHRcdGlmICh0aGlzLmRhdGEpIHtcclxuXHRcdFx0dGhpcy5idWRnZXREdG9QcmltYXJ5ID0gdGhpcy5kYXRhLmJ1ZGdldER0b1ByaW1hcnkgPyB0aGlzLmRhdGEuYnVkZ2V0RHRvUHJpbWFyeSA6IG51bGw7XHJcblx0XHRcdHRoaXMuYnVkZ2V0RHRvU2VjdW5kYXJ5ID0gdGhpcy5kYXRhLmJ1ZGdldER0b1NlY3VuZGFyeVxyXG5cdFx0XHRcdD8gdGhpcy5kYXRhLmJ1ZGdldER0b1NlY3VuZGFyeVxyXG5cdFx0XHRcdDogbnVsbDtcclxuXHRcdFx0dGhpcy5ldmFsdWF0aW9uID0gdGhpcy5kYXRhLmV2YWx1YXRpb247XHJcblx0XHR9XHJcblx0XHRpZiAodGhpcy5kYXRhICYmIHRoaXMudGVtcGxhdGUgJiYgdGhpcy5wcm9tQ29kaWdvKSB7XHJcblx0XHRcdGNvbnN0IHNlbGYgPSB0aGlzO1xyXG5cdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHRzZWxmLmluaXQoKTtcclxuXHRcdFx0fSwgMzAwKTtcclxuXHRcdH1cclxuXHR9XHJcblx0LyoqIEl0IGluaXRpYWxpemVzIHRoZSBwcm9jZXNzIG9mIHRyYW5zbGF0aW9uICovXHJcblx0cHJpdmF0ZSBpbml0KCkge1xyXG5cdFx0dGhpcy50cmFuc2xhdGVUb2tlbnModGhpcy50ZW1wbGF0ZSwgdGhpcy5kYXRhLmRhdGFGb3JtQnlGb3JtKTtcclxuXHR9XHJcblxyXG5cdHRyYW5zbGF0ZUNhdGVnb3J5KGNhdGVnb3J5TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuXHRcdGNvbnN0IGxhbmd1YWdlQnlEZWZhdWx0ID0gJ2VuJztcclxuXHRcdC8vIElmIGRvbid0IGZpbmQgdGhlIGxhbmcsIGdldCBpbiBlbi5cclxuXHRcdGxldCBjYXRlZ29yeU5hbWVCeURlZjogc3RyaW5nID0gY2F0ZWdvcnlOYW1lO1xyXG5cdFx0aWYgKGNhdGVnb3J5TmFtZSAmJiB0aGlzLmRhdGEuY2F0ZWdvcmllcyAmJiB0aGlzLmRhdGEuaWRpb21hKSB7XHJcblx0XHRcdC8vIElmIHRoZSBsb2NhbGUgc2VsZWN0IGlzIGVzLCB0aGlzIGlzIHRoZSBkYWZ1bHQgY2F0ZWdvcnkgbGFuZ3VhZ2VcclxuXHRcdFx0aWYgKHRoaXMuZGF0YS5pZGlvbWEubG9jYWxlID09PSAnZXMnKSB7XHJcblx0XHRcdFx0cmV0dXJuIGNhdGVnb3J5TmFtZTtcclxuXHRcdFx0fVxyXG5cdFx0XHRmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIHRoaXMuZGF0YS5jYXRlZ29yaWVzKSB7XHJcblx0XHRcdFx0aWYgKGNhdGVnb3J5Lmxpc3RhUnVicm9JZGlvbWEgJiYgY2F0ZWdvcnkucnViUnVicm8gPT09IGNhdGVnb3J5TmFtZSkge1xyXG5cdFx0XHRcdFx0Zm9yIChjb25zdCBsYW5ndWFnZSBvZiBjYXRlZ29yeS5saXN0YVJ1YnJvSWRpb21hKSB7XHJcblx0XHRcdFx0XHRcdGlmIChsYW5ndWFnZS5ydWJpSWRpb21hID09PSB0aGlzLmRhdGEuaWRpb21hLmxvY2FsZSkge1xyXG5cdFx0XHRcdFx0XHRcdHJldHVybiBsYW5ndWFnZS5ydWJpVHJhZHVjY2lvbjtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRpZiAobGFuZ3VhZ2UucnViaUlkaW9tYSA9PT0gbGFuZ3VhZ2VCeURlZmF1bHQpIHtcclxuXHRcdFx0XHRcdFx0XHRjYXRlZ29yeU5hbWVCeURlZiA9IGxhbmd1YWdlLnJ1YmlUcmFkdWNjaW9uO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBjYXRlZ29yeU5hbWVCeURlZjtcclxuXHR9XHJcblxyXG5cdHRyYW5zbGF0ZVRva2VucyhodG1sOiBzdHJpbmcsIGxpc3REYXRhOiBhbnkpIHtcclxuXHRcdHRoaXMuYWxyZWFkeUNhbGxSZXBsYWNlVG9rZW5zID0gZmFsc2U7XHJcblx0XHRjb25zdCBsVG9rZW5zOiBhbnlbXSA9IHRoaXMuZ2V0TGlzdFRva2VucyhodG1sKTtcclxuXHRcdGlmICghbFRva2VucyB8fCBPYmplY3Qua2V5cyhsVG9rZW5zKS5sZW5ndGggPT09IDApIHtcclxuXHRcdFx0dGhpcy50ZW1wbGF0ZSA9IGh0bWw7XHJcblx0XHR9XHJcblx0XHR0aGlzLmNhbGxMaXN0VG9rZW5zKGxUb2tlbnMsIGh0bWwsIGxpc3REYXRhKTtcclxuXHR9XHJcblxyXG5cdGNhbGxMaXN0VG9rZW5zKGxUb2tlbnM6IGFueVtdLCBodG1sOiBzdHJpbmcsIGxpc3REYXRhOiBhbnkpIHtcclxuXHRcdGlmIChcclxuXHRcdFx0bFRva2Vuc1tUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQ0FMQ1VMQVRFRF0gJiZcclxuXHRcdFx0T2JqZWN0LmtleXMobFRva2Vuc1tUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQ0FMQ1VMQVRFRF0pLmxlbmd0aCA+IDBcclxuXHRcdCkge1xyXG5cdFx0XHRpZiAodGhpcy5sVG9rZW5DYWxjdWxhdGVkKSB7XHJcblx0XHRcdFx0dGhpcy52YWxpZGF0ZUxpc3RUb2tlbnMobFRva2VucywgaHRtbCwgbGlzdERhdGEpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMudG9rZW5TZXJ2aWNlLmdldExpc3RCeVByb21Db2RpZ28odGhpcy5wcm9tQ29kaWdvKS5zdWJzY3JpYmUoXHJcblx0XHRcdFx0XHQobFRva2VuQ2FsY3VsYXRlZDogVG9rZW5bXSkgPT4ge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmxUb2tlbkNhbGN1bGF0ZWQgPSBsVG9rZW5DYWxjdWxhdGVkO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnZhbGlkYXRlTGlzdFRva2VucyhsVG9rZW5zLCBodG1sLCBsaXN0RGF0YSk7XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0KGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNhbGxMaXN0VG9rZW5zIC1nZXRMaXN0QnlQcm9tQ29kaWdvJywgZXJyb3IpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnRvYXN0clNlcnZpY2UuZXJyb3IoJ0Vycm9yIGdlbmVyYW5kbyBjYXJ0YScpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMudmFsaWRhdGVMaXN0VG9rZW5zKGxUb2tlbnMsIGh0bWwsIGxpc3REYXRhKTtcclxuXHRcdH1cclxuXHRcdGlmIChcclxuXHRcdFx0bFRva2Vuc1tUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfRk9STV0gJiZcclxuXHRcdFx0T2JqZWN0LmtleXMobFRva2Vuc1tUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfRk9STV0pLmxlbmd0aCA+IDBcclxuXHRcdCkge1xyXG5cdFx0XHRpZiAodGhpcy5sRm9ybUZpZWxkc1Rva2VuKSB7XHJcblx0XHRcdFx0dGhpcy52YWxpZGF0ZUxpc3RUb2tlbnMobFRva2VucywgaHRtbCwgbGlzdERhdGEpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMudG9rZW5TZXJ2aWNlLmdldEZvcm1GaWVsZHNCeVByb21Db2RlKHRoaXMucHJvbUNvZGlnbykudGhlbihcclxuXHRcdFx0XHRcdChsRm9ybUZpZWxkc1Rva2VuOiBhbnlbXSkgPT4ge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmxGb3JtRmllbGRzVG9rZW4gPSBsRm9ybUZpZWxkc1Rva2VuO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnZhbGlkYXRlTGlzdFRva2VucyhsVG9rZW5zLCBodG1sLCBsaXN0RGF0YSk7XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0KGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNhbGxMaXN0VG9rZW5zIC1nZXRGb3JtRmllbGRzQnlQcm9tQ29kZScsIGVycm9yKTtcclxuXHRcdFx0XHRcdFx0dGhpcy50b2FzdHJTZXJ2aWNlLmVycm9yKCdFcnJvciBnZW5lcmFuZG8gY2FydGEnKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQpO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLnZhbGlkYXRlTGlzdFRva2VucyhsVG9rZW5zLCBodG1sLCBsaXN0RGF0YSk7XHJcblx0XHR9XHJcblx0XHRpZiAoXHJcblx0XHRcdGxUb2tlbnNbVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1NUQVRJQ10gJiZcclxuXHRcdFx0T2JqZWN0LmtleXMobFRva2Vuc1tUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfU1RBVElDXSkubGVuZ3RoID4gMFxyXG5cdFx0KSB7XHJcblx0XHRcdGlmICh0aGlzLnVuaXF1ZVZlcmlmaWNhdGlvbkNvZGUgIT09IG51bGwpIHtcclxuXHRcdFx0XHR0aGlzLnZhbGlkYXRlTGlzdFRva2VucyhsVG9rZW5zLCBodG1sLCBsaXN0RGF0YSk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Y29uc3QgdG9rZW5WZXJpZmljYXRpb25Db2RlOiBhbnlbXSA9IGxUb2tlbnNbVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1NUQVRJQ10uZmluZChcclxuXHRcdFx0XHRcdCh0b2tlbikgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zdCBzdWJUb2tlbjogc3RyaW5nW10gPSB0b2tlbi5rZXlcclxuXHRcdFx0XHRcdFx0XHQucmVwbGFjZSgneycsICcnKVxyXG5cdFx0XHRcdFx0XHRcdC5yZXBsYWNlKCd9JywgJycpXHJcblx0XHRcdFx0XHRcdFx0LnNwbGl0KCdfJyk7XHJcblx0XHRcdFx0XHRcdHJldHVybiAoXHJcblx0XHRcdFx0XHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PVxyXG5cdFx0XHRcdFx0XHRcdFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9DT0RJR09fVkVSSUZJQ0FDSU9OLnRvTG93ZXJDYXNlKClcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQpO1xyXG5cdFx0XHRcdC8vIE9ubHkgaWYgdGhlIHN0YXRpYyB0b2tlbiBpcyB0aGUgdW5pcXVlIHZlcmlmaWNhdGlvbiBjb2RlXHJcblx0XHRcdFx0aWYgKHRva2VuVmVyaWZpY2F0aW9uQ29kZSAmJiBPYmplY3Qua2V5cyh0b2tlblZlcmlmaWNhdGlvbkNvZGUpLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdGxldCBwbGlVc3VhcmlvT2JqZWN0ID0gQXV0aGVudGljYXRpb25VdGlsLmdldFBsaVVzdWFyaW8oKTtcclxuXHRcdFx0XHRcdGlmICghcGxpVXN1YXJpb09iamVjdCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnVuaXF1ZVZlcmlmaWNhdGlvbkNvZGUgPSAnJztcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcihcclxuXHRcdFx0XHRcdFx0XHQnTm8gc2UgbG9ncm8gY29uc3VsdGFyIGVsIHVzdWFyaW8gcGFyYSBjb25zdWx0YXIgZWwgdG9rZW4nLFxyXG5cdFx0XHRcdFx0XHRcdHBsaVVzdWFyaW9PYmplY3RcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0dGhpcy52YWxpZGF0ZUxpc3RUb2tlbnMobFRva2VucywgaHRtbCwgbGlzdERhdGEpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0Y29uc3QgcGxpVXN1YXJpbzogUGxpVXN1YXJpbyA9IE9iamVjdC5hc3NpZ24oXHJcblx0XHRcdFx0XHRcdFx0bmV3IFBsaVVzdWFyaW8oKSxcclxuXHRcdFx0XHRcdFx0XHRKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHBsaVVzdWFyaW9PYmplY3QpKVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5nZXRUb2tlbkJ5TG9naW4ocGxpVXN1YXJpby51c3VMb2dpbikuc3Vic2NyaWJlKFxyXG5cdFx0XHRcdFx0XHRcdChzZXNpb246IHNlc2lvbikgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gVHJ5IHRvIGdldCB0aGUgdW5pcXVlIHZlcmlmaWNhdGlvbiBjb2RlIHdpdGggdGhlIGRlZmF1bHQgdmFsdWUgb2Ygc2VzaW9uIGlmIGlzIG5vdCBhIHZhbGlkIHZhbHVlXHJcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBzZXNpb25WYWx1ZSA9IHNlc2lvbiA/IHNlc2lvbi5zZXNpb24gOiAnMSc7XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdldFVuaXF1ZVZlcmlmaWNhdGlvbkNvZGUoXHJcblx0XHRcdFx0XHRcdFx0XHRcdHBsaVVzdWFyaW8udXN1TG9naW4sXHJcblx0XHRcdFx0XHRcdFx0XHRcdHNlc2lvblZhbHVlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRsVG9rZW5zLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRodG1sLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRsaXN0RGF0YVxyXG5cdFx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0J0Vycm9yIGNvbnN1bHRhbmRvIGVsIGxvZ2luIGVuIFBMSVMsIGdldFRva2VuQnlMb2dpbicsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGVycm9yXHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gVHJ5IHRvIGdldCB0aGUgdW5pcXVlIHZlcmlmaWNhdGlvbiBjb2RlIHdpdGggdGhlIGRlZmF1bHQgdmFsdWUgb2Ygc2VzaW9uXHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdldFVuaXF1ZVZlcmlmaWNhdGlvbkNvZGUoXHJcblx0XHRcdFx0XHRcdFx0XHRcdHBsaVVzdWFyaW8udXN1TG9naW4sXHJcblx0XHRcdFx0XHRcdFx0XHRcdCcxJyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0bFRva2VucyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0aHRtbCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0bGlzdERhdGFcclxuXHRcdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0XHQvL3RoaXMudG9hc3RyU2VydmljZS5lcnJvcihcIkVycm9yIGdlbmVyYW5kbyBjYXJ0YVwiKTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHRoaXMudW5pcXVlVmVyaWZpY2F0aW9uQ29kZSA9ICcnO1xyXG5cdFx0XHRcdFx0dGhpcy52YWxpZGF0ZUxpc3RUb2tlbnMobFRva2VucywgaHRtbCwgbGlzdERhdGEpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy52YWxpZGF0ZUxpc3RUb2tlbnMobFRva2VucywgaHRtbCwgbGlzdERhdGEpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0IHRoZSB1bmlxdWUgdmVyaWZpY2F0aW9uIGNvZGUgYW5kIGNhbGwgdmFsaWRhdGVMaXN0VG9rZW5zIG1ldGhvZFxyXG5cdCAqL1xyXG5cdGdldFVuaXF1ZVZlcmlmaWNhdGlvbkNvZGUoXHJcblx0XHR1c3VMb2dpbjogc3RyaW5nLFxyXG5cdFx0c2VzaW9uOiBzdHJpbmcsXHJcblx0XHRsVG9rZW5zOiBhbnlbXSxcclxuXHRcdGh0bWw6IHN0cmluZyxcclxuXHRcdGxpc3REYXRhOiBhbnlcclxuXHQpIHtcclxuXHRcdHRoaXMudG9rZW5TZXJ2aWNlLmdldFVuaXF1ZVZlcmlmaWNhdGlvbkNvZGUodXN1TG9naW4sIHNlc2lvbikuc3Vic2NyaWJlKFxyXG5cdFx0XHQodW5pcXVlQ29kZVZhbHVlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRjb25zdCB1bmlxdWVDb2RlOiBzdHJpbmcgPSB1bmlxdWVDb2RlVmFsdWUuY29kaWdvVW5pY287XHJcblx0XHRcdFx0dGhpcy51bmlxdWVWZXJpZmljYXRpb25Db2RlID1cclxuXHRcdFx0XHRcdHVuaXF1ZUNvZGUuc3Vic3RyaW5nKDAsIDQpICsgJyAnICsgdW5pcXVlQ29kZS5zdWJzdHJpbmcoNCwgOCk7XHJcblx0XHRcdFx0dGhpcy52YWxpZGF0ZUxpc3RUb2tlbnMobFRva2VucywgaHRtbCwgbGlzdERhdGEpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHQoZXJyb3IpID0+IHtcclxuXHRcdFx0XHRjb25zb2xlLmVycm9yKCdFcnJvciBjYWxsTGlzdFRva2VucyAtZ2V0TGlzdEJ5UHJvbUNvZGlnbycsIGVycm9yKTtcclxuXHRcdFx0XHR0aGlzLnRvYXN0clNlcnZpY2UuZXJyb3IoJ0Vycm9yIGdlbmVyYW5kbyBjYXJ0YScpO1xyXG5cdFx0XHR9XHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0dmFsaWRhdGVMaXN0VG9rZW5zKGxUb2tlbnM6IGFueVtdLCBodG1sOiBzdHJpbmcsIGxpc3REYXRhOiBhbnkpIHtcclxuXHRcdGxldCBmaW5pc2hMb2FkTGlzdEZvcm06IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRcdGxldCBmaW5pc2hMb2FkTGlzdENhbGN1bGF0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRcdGxldCBmaW5pc2hMb2FkTGlzdFN0YXRpYzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdFx0Y29uc3QgZmluaXNoTG9hZExpc3RCdWRnZXQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cdFx0aWYgKFxyXG5cdFx0XHRsVG9rZW5zW1Rva2VuU2VydmljZS5UT0tFTl9MQUJFTF9GT1JNXSAmJlxyXG5cdFx0XHRsVG9rZW5zW1Rva2VuU2VydmljZS5UT0tFTl9MQUJFTF9GT1JNXS5sZW5ndGggPiAwXHJcblx0XHQpIHtcclxuXHRcdFx0ZmluaXNoTG9hZExpc3RGb3JtID0gdGhpcy5sRm9ybUZpZWxkc1Rva2VuID8gdHJ1ZSA6IGZhbHNlO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0ZmluaXNoTG9hZExpc3RGb3JtID0gdHJ1ZTtcclxuXHRcdH1cclxuXHRcdGlmIChcclxuXHRcdFx0bFRva2Vuc1tUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQ0FMQ1VMQVRFRF0gJiZcclxuXHRcdFx0bFRva2Vuc1tUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQ0FMQ1VMQVRFRF0ubGVuZ3RoID4gMFxyXG5cdFx0KSB7XHJcblx0XHRcdGZpbmlzaExvYWRMaXN0Q2FsY3VsYXRlZCA9IHRoaXMubFRva2VuQ2FsY3VsYXRlZCA/IHRydWUgOiBmYWxzZTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGZpbmlzaExvYWRMaXN0Q2FsY3VsYXRlZCA9IHRydWU7XHJcblx0XHR9XHJcblx0XHRpZiAoXHJcblx0XHRcdGxUb2tlbnNbVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1NUQVRJQ10gJiZcclxuXHRcdFx0bFRva2Vuc1tUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfU1RBVElDXS5sZW5ndGggPiAwXHJcblx0XHQpIHtcclxuXHRcdFx0ZmluaXNoTG9hZExpc3RTdGF0aWMgPSB0aGlzLnVuaXF1ZVZlcmlmaWNhdGlvbkNvZGUgIT09IG51bGwgPyB0cnVlIDogZmFsc2U7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRmaW5pc2hMb2FkTGlzdFN0YXRpYyA9IHRydWU7XHJcblx0XHR9XHJcblx0XHRpZiAoXHJcblx0XHRcdGZpbmlzaExvYWRMaXN0Rm9ybSAmJlxyXG5cdFx0XHRmaW5pc2hMb2FkTGlzdEJ1ZGdldCAmJlxyXG5cdFx0XHRmaW5pc2hMb2FkTGlzdFN0YXRpYyAmJlxyXG5cdFx0XHRmaW5pc2hMb2FkTGlzdENhbGN1bGF0ZWQgJiZcclxuXHRcdFx0IXRoaXMuYWxyZWFkeUNhbGxSZXBsYWNlVG9rZW5zXHJcblx0XHQpIHtcclxuXHRcdFx0dGhpcy5hbHJlYWR5Q2FsbFJlcGxhY2VUb2tlbnMgPSB0cnVlO1xyXG5cdFx0XHR0aGlzLnJlcGxhY2VUb2tlbnNXaXRoRGF0YShsVG9rZW5zLCBodG1sLCBsaXN0RGF0YSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRhc3luYyByZXBsYWNlVG9rZW5zV2l0aERhdGEobFRva2VuczogYW55W10sIGh0bWw6IHN0cmluZywgbGlzdERhdGE6IGFueSkge1xyXG5cdFx0Y29uc3QgbERhdGFPcmc6IGFueVtdID0gW107XHJcblx0XHRjb25zdCBsRm9ybUZpZWxkc1Rva2VuT3JnOiBhbnlbXSA9IFtdO1xyXG5cdFx0aWYgKFxyXG5cdFx0XHQobFRva2Vuc1tUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfRk9STV0gfHxcclxuXHRcdFx0XHRsVG9rZW5zW1Rva2VuU2VydmljZS5UT0tFTl9MQUJFTF9DQUxDVUxBVEVEXSkgJiZcclxuXHRcdFx0bGlzdERhdGFcclxuXHRcdCkge1xyXG5cdFx0XHRmb3IgKGNvbnN0IGRhdGFGb3JtIGluIGxpc3REYXRhKSB7XHJcblx0XHRcdFx0bERhdGFPcmdbZGF0YUZvcm0udG9Mb3dlckNhc2UoKV0gPSBsaXN0RGF0YVtkYXRhRm9ybV07XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKHRoaXMubEZvcm1GaWVsZHNUb2tlbikge1xyXG5cdFx0XHRcdGZvciAoY29uc3QgZm9ybUZpZWxkVG9rZW4gb2YgdGhpcy5sRm9ybUZpZWxkc1Rva2VuKSB7XHJcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHZhbHVlc0ZpZWxkIG9mIGZvcm1GaWVsZFRva2VuLnZhbHVlKSB7XHJcblx0XHRcdFx0XHRcdGNvbnN0IGtleVRva2VuOiBzdHJpbmcgPVxyXG5cdFx0XHRcdFx0XHRcdCckeycgKyBmb3JtRmllbGRUb2tlbi50aXRsZS5rZXkgKyAnXycgKyB2YWx1ZXNGaWVsZC5rZXkgKyAnfSc7XHJcblx0XHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW5Pcmdba2V5VG9rZW5dID0gdmFsdWVzRmllbGQ7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRjb25zdCBsVG9rZW5zQ2FsY3VsYXRlZDogYW55W10gPSBbXTtcclxuXHRcdGlmIChsVG9rZW5zW1Rva2VuU2VydmljZS5UT0tFTl9MQUJFTF9DQUxDVUxBVEVEXSkge1xyXG5cdFx0XHRpZiAodGhpcy5sVG9rZW5DYWxjdWxhdGVkKSB7XHJcblx0XHRcdFx0Zm9yIChjb25zdCB0b2tlbkNhbCBvZiB0aGlzLmxUb2tlbkNhbGN1bGF0ZWQpIHtcclxuXHRcdFx0XHRcdGxUb2tlbnNDYWxjdWxhdGVkW1V0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyh0b2tlbkNhbC5uYW1lKV0gPVxyXG5cdFx0XHRcdFx0XHR0b2tlbkNhbDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGxldCB0eXBlVG9rZW46IGFueTtcclxuXHRcdGNvbnN0IHRva2VuVHlwZVRyYW5zbGF0ZWQ6IGFueSA9IFtdO1xyXG5cdFx0Zm9yICh0eXBlVG9rZW4gaW4gbFRva2Vucykge1xyXG5cdFx0XHRpZiAoIWxUb2tlbnNbdHlwZVRva2VuXSkge1xyXG5cdFx0XHRcdGNvbnRpbnVlO1xyXG5cdFx0XHR9XHJcblx0XHRcdGNvbnN0IHRva2Vuc1R5cGU6IGFueVtdID0gbFRva2Vuc1t0eXBlVG9rZW5dO1xyXG5cdFx0XHR0b2tlblR5cGVUcmFuc2xhdGVkW3R5cGVUb2tlbl0gPSBbXTtcclxuXHRcdFx0Zm9yIChjb25zdCB0b2tlbiBvZiB0b2tlbnNUeXBlKSB7XHJcblx0XHRcdFx0bGV0IHRva2VuVHJhbnNsYXRlZCA9IG51bGw7XHJcblx0XHRcdFx0Y29uc3Qgc3ViVG9rZW46IHN0cmluZ1tdID0gdG9rZW4ua2V5LnJlcGxhY2UoJ3snLCAnJykucmVwbGFjZSgnfScsICcnKS5zcGxpdCgnXycpO1xyXG5cdFx0XHRcdHN3aXRjaCAodHlwZVRva2VuKSB7XHJcblx0XHRcdFx0XHRjYXNlIFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9GT1JNOiAvLyBGb3JtXHJcblx0XHRcdFx0XHRcdGxldCB2YWx1ZURhdGEgPSBudWxsO1xyXG5cdFx0XHRcdFx0XHRjb25zdCBkYXRhT3JnS2V5ID0gc3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKTtcclxuXHRcdFx0XHRcdFx0Ly8gUHV0IHRoaXMga2V5IGJlY2F1c2UgdGhlcmUgbm8gb3RoZXIgd2F5IHRvIGRpZmZlcmVudGlhdGUgdGhlIHNhbWUga2V5IGluIGRpZmZlcmVudHMgZm9ybXNcclxuXHRcdFx0XHRcdFx0Y29uc3QgZGF0YU9yZ0tleUJ5Rm9ybSA9XHJcblx0XHRcdFx0XHRcdFx0c3ViVG9rZW5bMF0uc3Vic3RyaW5nKDEpICsgJ18nICsgc3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKTtcclxuXHRcdFx0XHRcdFx0Y29uc3QgZGF0YU9yZ1ZhbHVlID0gbERhdGFPcmcuaGFzT3duUHJvcGVydHkoZGF0YU9yZ0tleSlcclxuXHRcdFx0XHRcdFx0XHQ/IGxEYXRhT3JnW2RhdGFPcmdLZXldXHJcblx0XHRcdFx0XHRcdFx0OiBsRGF0YU9yZy5oYXNPd25Qcm9wZXJ0eShkYXRhT3JnS2V5QnlGb3JtKVxyXG5cdFx0XHRcdFx0XHRcdD8gbERhdGFPcmdbZGF0YU9yZ0tleUJ5Rm9ybV1cclxuXHRcdFx0XHRcdFx0XHQ6IG51bGw7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnN0IGRhdGFPcmdWYWx1ZUJ5Rm9ybSA9IGxEYXRhT3JnW2RhdGFPcmdLZXlCeUZvcm1dO1xyXG5cdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0c3ViVG9rZW4ubGVuZ3RoID09PSAzICYmXHJcblx0XHRcdFx0XHRcdFx0dHlwZW9mIGRhdGFPcmdWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiZcclxuXHRcdFx0XHRcdFx0XHRkYXRhT3JnVmFsdWUgIT09IG51bGwgJiZcclxuXHRcdFx0XHRcdFx0XHRkYXRhT3JnVmFsdWUuaGFzT3duUHJvcGVydHkoc3ViVG9rZW5bMl0pXHJcblx0XHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRcdHZhbHVlRGF0YSA9IGRhdGFPcmdWYWx1ZVtzdWJUb2tlblsyXV07XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdFx0XHRcdFx0c3ViVG9rZW4ubGVuZ3RoID09PSAyICYmXHJcblx0XHRcdFx0XHRcdFx0dHlwZW9mIGRhdGFPcmdWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiZcclxuXHRcdFx0XHRcdFx0XHRkYXRhT3JnVmFsdWUgIT09IG51bGxcclxuXHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0dmFsdWVEYXRhID0gZGF0YU9yZ1ZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChsRm9ybUZpZWxkc1Rva2VuT3JnW3Rva2VuLmtleV0pIHtcclxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlRGF0YSA9IHRoaXMudG9rZW5TZXJ2aWNlLmdldFZhbHVlRnJvbUZvcm1GaWVsZChcclxuXHRcdFx0XHRcdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbk9yZ1t0b2tlbi5rZXldLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZURhdGFcclxuXHRcdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdHZhbHVlRGF0YSA9IHZhbHVlRGF0YSA/IHZhbHVlRGF0YSA6ICcnO1xyXG5cdFx0XHRcdFx0XHR0b2tlblRyYW5zbGF0ZWQgPSB2YWx1ZURhdGE7XHJcblx0XHRcdFx0XHRcdGh0bWwgPSB0aGlzLnRva2VuU2VydmljZS5yZXBsYWNlVG9rZW4oaHRtbCwgdG9rZW4udmFsdWUsIHZhbHVlRGF0YSk7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSBUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQlVER0VUOiAvL0J1ZGdldFxyXG5cdFx0XHRcdFx0XHRjb25zdCBidWRnZXRSZXNvbHZlVG9rZW4gPSB0aGlzLnJlc29sdmVCdWRnZXRUb2tlbihodG1sLCB0b2tlbiwgc3ViVG9rZW4pO1xyXG5cdFx0XHRcdFx0XHRodG1sID0gYnVkZ2V0UmVzb2x2ZVRva2VuLmh0bWw7XHJcblx0XHRcdFx0XHRcdHRva2VuVHJhbnNsYXRlZCA9IGJ1ZGdldFJlc29sdmVUb2tlbi52YWx1ZTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9UQVNLTDogLy9UYXNrXHJcblx0XHRcdFx0XHRcdGNvbnN0IHRhc2tSZXNvbHZlVG9rZW4gPSB0aGlzLnJlc29sdmVUYXNrb2tlbihodG1sLCB0b2tlbiwgc3ViVG9rZW4pO1xyXG5cdFx0XHRcdFx0XHRodG1sID0gdGFza1Jlc29sdmVUb2tlbi5odG1sO1xyXG5cdFx0XHRcdFx0XHR0b2tlblRyYW5zbGF0ZWQgPSB0YXNrUmVzb2x2ZVRva2VuLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1NUQVRJQzogLy9TdGF0aWNcclxuXHRcdFx0XHRcdFx0Y29uc3Qgc3RhdGljUmVzb2x2ZVRva2VuID0gYXdhaXQgdGhpcy5yZXNvbHZlU3RhdGljVG9rZW4oXHJcblx0XHRcdFx0XHRcdFx0aHRtbCxcclxuXHRcdFx0XHRcdFx0XHR0b2tlbixcclxuXHRcdFx0XHRcdFx0XHRzdWJUb2tlblxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRodG1sID0gc3RhdGljUmVzb2x2ZVRva2VuLmh0bWw7XHJcblx0XHRcdFx0XHRcdHRva2VuVHJhbnNsYXRlZCA9IHN0YXRpY1Jlc29sdmVUb2tlbi52YWx1ZTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9DQUxDVUxBVEVEOiAvL0NhbGN1bGF0ZWRcclxuXHRcdFx0XHRcdFx0Ly8gUmVwbGFjZXMgZGUgdG9rZW5zIG9mIHRoZSBmb3JtdWxhXHJcblx0XHRcdFx0XHRcdGNvbnN0IHRva2VuTmFtZTogc3RyaW5nID0gbFRva2Vuc0NhbGN1bGF0ZWRbc3ViVG9rZW5bMV1dLm5hbWU7XHJcblx0XHRcdFx0XHRcdGxldCBmb3JtdWxhOiBzdHJpbmcgPSBsVG9rZW5zQ2FsY3VsYXRlZFtzdWJUb2tlblsxXV0uZm9ybXVsYTtcclxuXHRcdFx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdFx0XHQvL0FRVUlcclxuXHRcdFx0XHRcdFx0XHRmb3JtdWxhID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2Vuc0Zyb21MaXN0T2JqZWN0KFxyXG5cdFx0XHRcdFx0XHRcdFx0dG9rZW5OYW1lLFxyXG5cdFx0XHRcdFx0XHRcdFx0Zm9ybXVsYSxcclxuXHRcdFx0XHRcdFx0XHRcdGxEYXRhT3JnXHJcblx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcclxuXHRcdFx0XHRcdFx0XHRmb3JtdWxhID0gbnVsbDtcclxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKGVycm9yLmVycm9yID8gZXJyb3IuZXJyb3IgOiBlcnJvcik7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy50b2FzdHJTZXJ2aWNlLndhcm5pbmcoZXJyb3IubWVzc2FnZSwgZXJyb3IudGl0dGxlKTtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0Ly8gVHJ5IHRvIGV2YWx1YXRlIHRoZSBmb3JtdWxhXHJcblx0XHRcdFx0XHRcdGxldCByZXN1bHQ6IGFueSA9IG51bGw7XHJcblx0XHRcdFx0XHRcdGlmIChmb3JtdWxhICE9PSBudWxsKSB7XHJcblx0XHRcdFx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdFx0XHRcdHJlc3VsdCA9IGZvcm11bGEuc3RhcnRzV2l0aCgnZmlsZTovLycpXHJcblx0XHRcdFx0XHRcdFx0XHRcdD8gXCI8aW1nIHdpZHRoPScyNTBweCcgaGVpZ2h0PSdhdXRvJyBzcmM9J1wiICsgZm9ybXVsYSArIFwiJy8+XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0OiBldmFsKGZvcm11bGEpO1xyXG5cdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKGUpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoXHJcblx0XHRcdFx0XHRcdFx0XHRcdCdFcnJvciBldmFsdWF0aW5nIHRoZSBmb3JtdWxhLicsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGxUb2tlbnNDYWxjdWxhdGVkLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRzdWJUb2tlbixcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZVxyXG5cdFx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMudG9hc3RyU2VydmljZS5lcnJvcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0J05vIHNlIGxvZ3JvIGV2YWx1YXIgbGEgZm9ybXVsYXIgZGVsIHRva2VuICcgKyB0b2tlbk5hbWUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdCdFcnJvciEnXHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRpZiAocmVzdWx0ICE9PSBudWxsKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRodG1sID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2VuKGh0bWwsIHRva2VuLnZhbHVlLCByZXN1bHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0dG9rZW5UcmFuc2xhdGVkID0gcmVzdWx0O1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dG9rZW5UeXBlVHJhbnNsYXRlZFt0eXBlVG9rZW5dW3Rva2VuLmtleV0gPSB0b2tlblRyYW5zbGF0ZWQ7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHRoaXMub25HZW5lcmF0ZS5lbWl0KHtcclxuXHRcdFx0aHRtbDogaHRtbCxcclxuXHRcdFx0dG9rZW5UeXBlVHJhbnNsYXRlZDogdG9rZW5UeXBlVHJhbnNsYXRlZFxyXG5cdFx0fSk7XHJcblx0XHQvLyB9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUcnkgdG8gZmluZCB0aGUgYnVkZ2V0IGluZm8gdG8gdHJhbnNsYXRlIHRoZSB0b2tlbi5cclxuXHQgKiBAcGFyYW0gaHRtbFxyXG5cdCAqIEBwYXJhbSB0b2tlblxyXG5cdCAqIEBwYXJhbSBzdWJUb2tlblxyXG5cdCAqL1xyXG5cdHJlc29sdmVCdWRnZXRUb2tlbihodG1sOiBzdHJpbmcsIHRva2VuOiBhbnksIHN1YlRva2VuOiBzdHJpbmdbXSk6IGFueSB7XHJcblx0XHRsZXQgdHByZXNDb2RpZ286IG51bWJlciA9IE51bWJlcihzdWJUb2tlblsxXSk7XHJcblx0XHRsZXQgdG9rZW5WYWx1ZTogc3RyaW5nID0gc3ViVG9rZW5bMl07XHJcblx0XHRsZXQgYnVkZ2V0RHRvOiBCdWRnZXREdG8gPSBudWxsO1xyXG5cdFx0bGV0IGlkVG90YWxCdWRnZXQ6IHN0cmluZyA9IG51bGw7XHJcblx0XHRpZiAoXHJcblx0XHRcdHRoaXMuYnVkZ2V0RHRvUHJpbWFyeSAmJlxyXG5cdFx0XHR0aGlzLmJ1ZGdldER0b1ByaW1hcnkuYnVkZ2V0ICYmXHJcblx0XHRcdHRwcmVzQ29kaWdvID09IEVUaXBvUHJlc3VwdWVzdG8uUFJJTUFSWVxyXG5cdFx0KSB7XHJcblx0XHRcdGJ1ZGdldER0byA9IHRoaXMuYnVkZ2V0RHRvUHJpbWFyeTtcclxuXHRcdFx0aWRUb3RhbEJ1ZGdldCA9ICdwbGktdG9rZW4tcHJpbmNpcGFsLWJ1ZGdldC10b3RhbC1zdW1tYXJ5JztcclxuXHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdHRoaXMuYnVkZ2V0RHRvU2VjdW5kYXJ5ICYmXHJcblx0XHRcdHRoaXMuYnVkZ2V0RHRvU2VjdW5kYXJ5LmJ1ZGdldCAmJlxyXG5cdFx0XHR0cHJlc0NvZGlnbyA9PSBFVGlwb1ByZXN1cHVlc3RvLlNFQ09OREFSWVxyXG5cdFx0KSB7XHJcblx0XHRcdGJ1ZGdldER0byA9IHRoaXMuYnVkZ2V0RHRvU2VjdW5kYXJ5O1xyXG5cdFx0XHRpZFRvdGFsQnVkZ2V0ID0gJ3BsaS10b2tlbi1zZWN1bmRhcnktYnVkZ2V0LXRvdGFsLXN1bW1hcnknO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGJ1ZGdldER0byA9PT0gbnVsbCB8fCAhYnVkZ2V0RHRvLmJ1ZGdldCkge1xyXG5cdFx0XHRjb25zb2xlLmVycm9yKFxyXG5cdFx0XHRcdCdObyBzZSBsb2dybyBlbmNvbnRyYXIgZWwgcHJlc3VwdWVzdG8gZGVsIHRva2VuLicsXHJcblx0XHRcdFx0dG9rZW4sXHJcblx0XHRcdFx0dGhpcy5idWRnZXREdG9QcmltYXJ5LFxyXG5cdFx0XHRcdHRoaXMuYnVkZ2V0RHRvU2VjdW5kYXJ5XHJcblx0XHRcdCk7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0aHRtbDogaHRtbCxcclxuXHRcdFx0XHR2YWx1ZTogbnVsbFxyXG5cdFx0XHR9O1xyXG5cdFx0fVxyXG5cdFx0bGV0IHZhbHVlRGF0YSA9IG51bGw7XHJcblx0XHRjb25zdCBhcHBsaWNhdGlvblByb2Nlc3MgPVxyXG5cdFx0XHR0b2tlblZhbHVlID09IFRva2VuU2VydmljZS5CVURHRVRfVE9LRU5TX0tFWV9BUFBMSUNBVElPTl9QUk9DRVNTX1RPVEFMX0FNT1VOVCB8fFxyXG5cdFx0XHR0b2tlblZhbHVlID09IFRva2VuU2VydmljZS5CVURHRVRfVE9LRU5TX0tFWV9BUFBMSUNBVElPTl9QUk9DRVNTX1RPVEFMX09XTl9GT1VORFMgfHxcclxuXHRcdFx0dG9rZW5WYWx1ZSA9PSBUb2tlblNlcnZpY2UuQlVER0VUX1RPS0VOU19LRVlfQVBQTElDQVRJT05fUFJPQ0VTU19UT1RBTF9GSU5BTkNJTkc7XHJcblx0XHRjb25zdCBsZWdhbGl6YXRpb25Qcm9jZXNzID1cclxuXHRcdFx0dG9rZW5WYWx1ZSA9PSBUb2tlblNlcnZpY2UuQlVER0VUX1RPS0VOU19LRVlfTEVHQUxJWkFUSU9OX1BST0NFU1NfVE9UQUxfQU1PVU5UIHx8XHJcblx0XHRcdHRva2VuVmFsdWUgPT0gVG9rZW5TZXJ2aWNlLkJVREdFVF9UT0tFTlNfS0VZX0xFR0FMSVpBVElPTl9QUk9DRVNTX1RPVEFMX09XTl9GT1VORFMgfHxcclxuXHRcdFx0dG9rZW5WYWx1ZSA9PSBUb2tlblNlcnZpY2UuQlVER0VUX1RPS0VOU19LRVlfTEVHQUxJWkFUSU9OX1BST0NFU1NfVE9UQUxfRklOQU5DSU5HO1xyXG5cclxuXHRcdGlmICh0b2tlblZhbHVlID09IFRva2VuU2VydmljZS5CVURHRVRfVE9LRU5TX0tFWV9UT1RBTF9BTU9VTlQpIHtcclxuXHRcdFx0dmFsdWVEYXRhID1cclxuXHRcdFx0XHRidWRnZXREdG8uYnVkZ2V0ICYmIGJ1ZGdldER0by5idWRnZXQuc3VtbWFyeVxyXG5cdFx0XHRcdFx0PyB0aGlzLmN1cnJlbmN5UGlwZS50cmFuc2Zvcm0oXHJcblx0XHRcdFx0XHRcdFx0YnVkZ2V0RHRvLmJ1ZGdldC5zdW1tYXJ5LmJ1ZGdldFRvdGFsLFxyXG5cdFx0XHRcdFx0XHRcdCdkZWZhdWx0JyxcclxuXHRcdFx0XHRcdFx0XHQnJyxcclxuXHRcdFx0XHRcdFx0XHQnMS4wLTAnXHJcblx0XHRcdFx0XHQgIClcclxuXHRcdFx0XHRcdDogMDtcclxuXHRcdH0gZWxzZSBpZiAodG9rZW5WYWx1ZSA9PSBUb2tlblNlcnZpY2UuQlVER0VUX1RPS0VOU19LRVlfUkVTVU1FX0NBVEVHT1JZX1lFQVIpIHtcclxuXHRcdFx0Ly8gdGhpcy5hZGRJbmZvVG9rZW5SZXN1bWVDYXRlZ29yeVllYXIodHByZXNDb2RpZ28sIGlkVG90YWxCdWRnZXQsIGJ1ZGdldER0byk7XHJcblx0XHRcdHRoaXMuYWRkSW5mb1Rva2VuUmVzdW1lQ2F0ZWdvcnlZZWFyKHRwcmVzQ29kaWdvLCBpZFRvdGFsQnVkZ2V0LCBidWRnZXREdG8pO1xyXG5cdFx0XHRjb25zdCBwbGlUb2tlblRvdGFsQnVkZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWRUb3RhbEJ1ZGdldCk7XHJcblx0XHRcdGlmIChwbGlUb2tlblRvdGFsQnVkZ2V0KSB7XHJcblx0XHRcdFx0dmFsdWVEYXRhID0gdGhpcy5yZW1vdmVDb21tZW50c0h0bWwocGxpVG9rZW5Ub3RhbEJ1ZGdldC5pbm5lckhUTUwpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdwbGlUb2tlblRvdGFsQnVkZ2V0IC0gTlVMTCcsIHBsaVRva2VuVG90YWxCdWRnZXQpO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKHRva2VuVmFsdWUgPT0gVG9rZW5TZXJ2aWNlLkJVREdFVF9UT0tFTlNfS0VZX0ZFQ0hBX0ZJTkFOQ0lOR19TVEFSVCkge1xyXG5cdFx0XHR2YWx1ZURhdGEgPVxyXG5cdFx0XHRcdGJ1ZGdldER0by5idWRnZXQgJiYgYnVkZ2V0RHRvLmJ1ZGdldC5maW5hbmNpbmdTdGFydFxyXG5cdFx0XHRcdFx0PyBidWRnZXREdG8uYnVkZ2V0LmZpbmFuY2luZ1N0YXJ0XHJcblx0XHRcdFx0XHQ6ICcnO1xyXG5cclxuXHRcdFx0aHRtbCA9IHRoaXMudG9rZW5TZXJ2aWNlLnJlcGxhY2VUb2tlbihcclxuXHRcdFx0XHRodG1sLFxyXG5cdFx0XHRcdHRva2VuLnZhbHVlLFxyXG5cdFx0XHRcdHZhbHVlRGF0YSxcclxuXHRcdFx0XHR0aGlzLmRhdGE/LmlkaW9tYT8ubG9jYWxlXHJcblx0XHRcdCk7XHJcblx0XHR9IGVsc2UgaWYgKHRva2VuVmFsdWUgPT0gVG9rZW5TZXJ2aWNlLkJVREdFVF9UT0tFTlNfS0VZX0ZFQ0hBX0ZJTkFOQ0lOR19FTkQpIHtcclxuXHRcdFx0dmFsdWVEYXRhID1cclxuXHRcdFx0XHRidWRnZXREdG8uYnVkZ2V0ICYmIGJ1ZGdldER0by5idWRnZXQuZmluYW5jaW5nRW5kXHJcblx0XHRcdFx0XHQ/IGJ1ZGdldER0by5idWRnZXQuZmluYW5jaW5nRW5kXHJcblx0XHRcdFx0XHQ6ICcnO1xyXG5cclxuXHRcdFx0aHRtbCA9IHRoaXMudG9rZW5TZXJ2aWNlLnJlcGxhY2VUb2tlbihcclxuXHRcdFx0XHRodG1sLFxyXG5cdFx0XHRcdHRva2VuLnZhbHVlLFxyXG5cdFx0XHRcdHZhbHVlRGF0YSxcclxuXHRcdFx0XHR0aGlzLmRhdGE/LmlkaW9tYT8ubG9jYWxlXHJcblx0XHRcdCk7XHJcblx0XHR9IGVsc2UgaWYgKHRva2VuVmFsdWUgPT0gVG9rZW5TZXJ2aWNlLkJVREdFVF9UT0tFTlNfRFVSQVRJT05fU1RVRElFUykge1xyXG5cdFx0XHR2YWx1ZURhdGEgPVxyXG5cdFx0XHRcdGJ1ZGdldER0by5idWRnZXQgJiYgYnVkZ2V0RHRvLmJ1ZGdldC5zdHVkeVN0YXJ0ICYmIGJ1ZGdldER0by5idWRnZXQuc3R1ZHlFbmRcclxuXHRcdFx0XHRcdD8gRGF0ZVV0aWwuZWxhcHNlZE1vbnRocyhcclxuXHRcdFx0XHRcdFx0XHRidWRnZXREdG8uYnVkZ2V0LnN0dWR5U3RhcnQsXHJcblx0XHRcdFx0XHRcdFx0YnVkZ2V0RHRvLmJ1ZGdldC5zdHVkeUVuZFxyXG5cdFx0XHRcdFx0ICApICsgMVxyXG5cdFx0XHRcdFx0OiAnJztcclxuXHRcdH0gZWxzZSBpZiAodG9rZW5WYWx1ZSA9PSBUb2tlblNlcnZpY2UuQlVER0VUX1RPS0VOU19GSU5BTkNJTkdfRFVSQVRJT04pIHtcclxuXHRcdFx0dmFsdWVEYXRhID1cclxuXHRcdFx0XHRidWRnZXREdG8uYnVkZ2V0ICYmIGJ1ZGdldER0by5idWRnZXQuZmluYW5jaW5nRW5kICYmIGJ1ZGdldER0by5idWRnZXQuZmluYW5jaW5nU3RhcnRcclxuXHRcdFx0XHRcdD8gRGF0ZVV0aWwuZWxhcHNlZE1vbnRocyhcclxuXHRcdFx0XHRcdFx0XHRidWRnZXREdG8uYnVkZ2V0LmZpbmFuY2luZ1N0YXJ0LFxyXG5cdFx0XHRcdFx0XHRcdGJ1ZGdldER0by5idWRnZXQuZmluYW5jaW5nRW5kXHJcblx0XHRcdFx0XHQgICkgKyAxXHJcblx0XHRcdFx0XHQ6ICcnO1xyXG5cdFx0fSBlbHNlIGlmICh0b2tlblZhbHVlID09IFRva2VuU2VydmljZS5MRUdBTElaQVRJT05fT1JfQVBQTElDQVRJT05fVE9UQUxfRklOQU5DSU5HKSB7XHJcblx0XHRcdC8vIEpNUCAtIE1hbnRpcyA2Njc0IC0gQWRkIGxvZ2ljIHRvIGxlZ2FsaXphdGlvbiBvciBhcHBsaWNhdGlvbiB0b3RhbCBmaW5hbmNpbmdcclxuXHRcdFx0aWYgKFxyXG5cdFx0XHRcdHRoaXMuZGF0YSAmJlxyXG5cdFx0XHRcdHRoaXMuZGF0YS5kYXRhRm9ybUFwcGxpY2F0aW9uICYmXHJcblx0XHRcdFx0dGhpcy5kYXRhLmRhdGFGb3JtQXBwbGljYXRpb24uYnVkZ2V0XHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGNvbnN0IGJ1ZGdldCA9IHRoaXMuZGF0YS5kYXRhRm9ybUFwcGxpY2F0aW9uLmJ1ZGdldDtcclxuXHJcblx0XHRcdFx0aWYgKGJ1ZGdldC5sZWdhbGl6YXRpb25Qcm9jZXNzICYmIGJ1ZGdldC5sZWdhbGl6YXRpb25Qcm9jZXNzLnRvdGFsRmluYW5jaW5nKSB7XHJcblx0XHRcdFx0XHRjb25zdCB0b3RhbEZpbmFuY2luZyA9IE51bWJlcihidWRnZXQubGVnYWxpemF0aW9uUHJvY2Vzcy50b3RhbEZpbmFuY2luZyk7XHJcblx0XHRcdFx0XHR2YWx1ZURhdGEgPSB0b3RhbEZpbmFuY2luZyAqIDEuMDAzO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAoYnVkZ2V0LmFwcGxpY2F0aW9uUHJvY2VzcyAmJiBidWRnZXQuYXBwbGljYXRpb25Qcm9jZXNzLnRvdGFsRmluYW5jaW5nKSB7XHJcblx0XHRcdFx0XHR2YWx1ZURhdGEgPSBOdW1iZXIoYnVkZ2V0LmFwcGxpY2F0aW9uUHJvY2Vzcy50b3RhbEZpbmFuY2luZyk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHQoYXBwbGljYXRpb25Qcm9jZXNzIHx8IGxlZ2FsaXphdGlvblByb2Nlc3MpICYmXHJcblx0XHRcdHRoaXMuZGF0YSAmJlxyXG5cdFx0XHR0aGlzLmRhdGEuZGF0YUZvcm1BcHBsaWNhdGlvbiAmJlxyXG5cdFx0XHR0aGlzLmRhdGEuZGF0YUZvcm1BcHBsaWNhdGlvbi5idWRnZXRcclxuXHRcdCkge1xyXG5cdFx0XHQvLyBHZXQgdGhlIHRvdGFsIGJ1ZGdldCBhbW91bnQgZGVwZW5kIG9mIHRoZSBwcm9jZXNzXHJcblx0XHRcdGNvbnN0IGFwcEJ1ZGdldFRvdGFsOiBBcHBsaWNhdGlvbkJ1ZGdldFRvdGFsID0gYXBwbGljYXRpb25Qcm9jZXNzXHJcblx0XHRcdFx0PyB0aGlzLmRhdGEuZGF0YUZvcm1BcHBsaWNhdGlvbi5idWRnZXQuYXBwbGljYXRpb25Qcm9jZXNzXHJcblx0XHRcdFx0OiB0aGlzLmRhdGEuZGF0YUZvcm1BcHBsaWNhdGlvbi5idWRnZXQubGVnYWxpemF0aW9uUHJvY2VzcztcclxuXHRcdFx0aWYgKGFwcEJ1ZGdldFRvdGFsICE9IHVuZGVmaW5lZCAmJiBhcHBCdWRnZXRUb3RhbCAhPSBudWxsKSB7XHJcblx0XHRcdFx0Ly8gbm8gbWF0dGVyIHRoZSBwcm9jZXNzLCB0aGUgY2xhc3MgaXMgdGhlIHNhbWVcclxuXHRcdFx0XHRzd2l0Y2ggKHRva2VuVmFsdWUpIHtcclxuXHRcdFx0XHRcdGNhc2UgVG9rZW5TZXJ2aWNlLkJVREdFVF9UT0tFTlNfS0VZX0FQUExJQ0FUSU9OX1BST0NFU1NfVE9UQUxfQU1PVU5UOlxyXG5cdFx0XHRcdFx0Y2FzZSBUb2tlblNlcnZpY2UuQlVER0VUX1RPS0VOU19LRVlfTEVHQUxJWkFUSU9OX1BST0NFU1NfVE9UQUxfQU1PVU5UOlxyXG5cdFx0XHRcdFx0XHR2YWx1ZURhdGEgPSBhcHBCdWRnZXRUb3RhbC50b3RhbEFtb3VudDtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIFRva2VuU2VydmljZS5CVURHRVRfVE9LRU5TX0tFWV9BUFBMSUNBVElPTl9QUk9DRVNTX1RPVEFMX09XTl9GT1VORFM6XHJcblx0XHRcdFx0XHRjYXNlIFRva2VuU2VydmljZS5CVURHRVRfVE9LRU5TX0tFWV9MRUdBTElaQVRJT05fUFJPQ0VTU19UT1RBTF9PV05fRk9VTkRTOlxyXG5cdFx0XHRcdFx0XHR2YWx1ZURhdGEgPSBhcHBCdWRnZXRUb3RhbC50b3RhbE93bkZ1bmRzO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgVG9rZW5TZXJ2aWNlLkJVREdFVF9UT0tFTlNfS0VZX0FQUExJQ0FUSU9OX1BST0NFU1NfVE9UQUxfRklOQU5DSU5HOlxyXG5cdFx0XHRcdFx0Y2FzZSBUb2tlblNlcnZpY2UuQlVER0VUX1RPS0VOU19LRVlfTEVHQUxJWkFUSU9OX1BST0NFU1NfVE9UQUxfRklOQU5DSU5HOlxyXG5cdFx0XHRcdFx0XHR2YWx1ZURhdGEgPSBhcHBCdWRnZXRUb3RhbC50b3RhbEZpbmFuY2luZztcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKHRva2VuVmFsdWUgPT0gVG9rZW5TZXJ2aWNlLkJVREdFVF9UT0tFTlNfS0VZX0lOU1VSQU5DRV9BTU9VTlQpIHtcclxuXHRcdFx0bGV0IHRvdGFsRmluYW5jaW5nID1cclxuXHRcdFx0XHR0aGlzLmRhdGEuZGF0YUZvcm1BcHBsaWNhdGlvbi5idWRnZXQubGVnYWxpemF0aW9uUHJvY2VzcyAmJlxyXG5cdFx0XHRcdHRoaXMuZGF0YS5kYXRhRm9ybUFwcGxpY2F0aW9uLmJ1ZGdldC5sZWdhbGl6YXRpb25Qcm9jZXNzLnRvdGFsRmluYW5jaW5nO1xyXG5cdFx0XHR0b3RhbEZpbmFuY2luZyA9XHJcblx0XHRcdFx0dG90YWxGaW5hbmNpbmcgPT0gdW5kZWZpbmVkIHx8IHRvdGFsRmluYW5jaW5nID09IG51bGwgPyAwIDogTnVtYmVyKHRvdGFsRmluYW5jaW5nKTtcclxuXHRcdFx0Ly8gbGV0IHRvdGFsSW5zdXJhbmNlQW1vdW50ID0gdGhpcy5kYXRhLmRhdGFGb3JtQXBwbGljYXRpb24udG90YWxJbnN1cmFuY2VBbW91bnQ7XHJcblx0XHRcdC8vIHRvdGFsSW5zdXJhbmNlQW1vdW50ID1cclxuXHRcdFx0Ly8gXHR0b3RhbEluc3VyYW5jZUFtb3VudCA9PSB1bmRlZmluZWQgfHwgdG90YWxJbnN1cmFuY2VBbW91bnQgPT0gbnVsbFxyXG5cdFx0XHQvLyBcdFx0PyAwXHJcblx0XHRcdC8vIFx0XHQ6IE51bWJlcih0b3RhbEluc3VyYW5jZUFtb3VudCk7XHJcblx0XHRcdHZhbHVlRGF0YSA9IHRvdGFsRmluYW5jaW5nICogMS4wMDM7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHQvLyBXaGVuIHRoZSB0b2tlbiBjYW4ndCBiZSByZXNvbHZlXHJcblx0XHRcdGNvbnNvbGUuZXJyb3IoJ3Jlc29sdmVCdWRnZXRUb2tlbiAtTm8gc2UgbG9ncm8gcmVzb2x2ZXIgZWwgdG9rZW4gZGUgdGlwbyBwcmVzdXB1ZXN0bycpO1xyXG5cdFx0fVxyXG5cdFx0dmFsdWVEYXRhID0gdmFsdWVEYXRhID09PSBudWxsID8gJycgOiB2YWx1ZURhdGE7XHJcblx0XHRodG1sID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2VuKGh0bWwsIHRva2VuLnZhbHVlLCB2YWx1ZURhdGEpO1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0aHRtbDogaHRtbCxcclxuXHRcdFx0dmFsdWU6IHZhbHVlRGF0YVxyXG5cdFx0fTtcclxuXHR9XHJcblx0cmVzb2x2ZVRhc2tva2VuKGh0bWw6IHN0cmluZywgdG9rZW46IGFueSwgc3ViVG9rZW46IHN0cmluZ1tdKTogYW55IHtcclxuXHRcdGxldCB2YWx1ZVRhc2sgPSBudWxsO1xyXG5cdFx0aWYgKHN1YlRva2VuLmxlbmd0aCA+IDIpIHtcclxuXHRcdFx0bGV0IHRhc2tJZCA9IE51bWJlcihzdWJUb2tlblsyXSk7XHJcblx0XHRcdGxldCB0YXNrID0gdGhpcy5ldmFsdWF0aW9uLnRhc2tzLmZpbmQoKHQpID0+IHQuaWRUYXNrID09IHRhc2tJZCk7XHJcblx0XHRcdHZhbHVlVGFzayA9IHRhc2sucmVzdWx0O1xyXG5cdFx0fVxyXG5cdFx0aHRtbCA9IHRoaXMudG9rZW5TZXJ2aWNlLnJlcGxhY2VUb2tlbihodG1sLCB0b2tlbi52YWx1ZSwgdmFsdWVUYXNrKTtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdGh0bWw6IGh0bWwsXHJcblx0XHRcdHZhbHVlOiB2YWx1ZVRhc2tcclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHRhc3luYyByZXNvbHZlU3RhdGljVG9rZW4oaHRtbDogc3RyaW5nLCB0b2tlbjogYW55LCBzdWJUb2tlbjogc3RyaW5nW10pOiBQcm9taXNlPGFueT4ge1xyXG5cdFx0bGV0IHZhbHVlUmVwbGFjZTogYW55ID0gbnVsbDtcclxuXHRcdGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PVxyXG5cdFx0XHRUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfQ09ESUdPX1ZFUklGSUNBQ0lPTi50b0xvd2VyQ2FzZSgpXHJcblx0XHQpIHtcclxuXHRcdFx0dmFsdWVSZXBsYWNlID0gdGhpcy51bmlxdWVWZXJpZmljYXRpb25Db2RlO1xyXG5cdFx0XHRodG1sID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2VuKGh0bWwsIHRva2VuLnZhbHVlLCB0aGlzLnVuaXF1ZVZlcmlmaWNhdGlvbkNvZGUpO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PVxyXG5cdFx0XHRUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfQV9RVUlFTl9WQV9ESVJJR0lETy50b0xvd2VyQ2FzZSgpXHJcblx0XHQpIHtcclxuXHRcdFx0Ly8gaWYgKHRoaXMuZGF0YS5kYXRhRGVzdGluYXRpb24pIHtcclxuXHRcdFx0aHRtbCA9IHRoaXMucmVzb2x2ZVN0YXRpY1Rva2Vuc0tleUFRdWllblZhRGlyaWdpZG8oaHRtbCwgdG9rZW4udmFsdWUpO1xyXG5cdFx0XHR2YWx1ZVJlcGxhY2UgPSAnJztcclxuXHRcdFx0Ly8gfVxyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PSBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfTEVUVEVSX1NJR04udG9Mb3dlckNhc2UoKVxyXG5cdFx0KSB7XHJcblx0XHRcdGh0bWwgPSB0aGlzLnJlc29sdmVTdGF0aWNUb2tlbnNLZXlTaWduKGh0bWwsIHRva2VuLnZhbHVlLCBzdWJUb2tlbik7XHJcblx0XHRcdHZhbHVlUmVwbGFjZSA9ICcnO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PVxyXG5cdFx0XHRUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfU0FMVURPX0NPTVBMRU1FTlRBUklPLnRvTG93ZXJDYXNlKClcclxuXHRcdCkge1xyXG5cdFx0XHQvLyBpZiAodGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbikge1xyXG5cdFx0XHRodG1sID0gdGhpcy5yZXNvbHZlU3RhdGljVG9rZW5zS2V5U2FsdWRvQ29tcGxlbWVudGFyaW8oaHRtbCwgdG9rZW4udmFsdWUpO1xyXG5cdFx0XHR2YWx1ZVJlcGxhY2UgPSAnJztcclxuXHRcdFx0Ly8gfVxyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PSBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfRkVDSEFfQUNUVUFMLnRvTG93ZXJDYXNlKClcclxuXHRcdCkge1xyXG5cdFx0XHR2YWx1ZVJlcGxhY2UgPSBuZXcgRGF0ZSgpO1xyXG5cdFx0XHRodG1sID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2VuKGh0bWwsIHRva2VuLnZhbHVlLCBuZXcgRGF0ZSgpKTtcclxuXHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdHN1YlRva2VuWzFdLnRvTG93ZXJDYXNlKCkgPT0gVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX1BBVFJPQ0lOQURPUi50b0xvd2VyQ2FzZSgpXHJcblx0XHQpIHtcclxuXHRcdFx0Y29uc3QgcGF0Tm9tYnJlID1cclxuXHRcdFx0XHR0aGlzLmRhdGEucGxpUHJvbW9jaW9uICYmXHJcblx0XHRcdFx0dGhpcy5kYXRhLnBsaVByb21vY2lvbi5wbGlQcm9ncmFtYSAmJlxyXG5cdFx0XHRcdHRoaXMuZGF0YS5wbGlQcm9tb2Npb24ucGxpUHJvZ3JhbWEucGxpUGF0cm9jaW5hZG9yXHJcblx0XHRcdFx0XHQ/IHRoaXMuZGF0YS5wbGlQcm9tb2Npb24ucGxpUHJvZ3JhbWEucGxpUGF0cm9jaW5hZG9yLnBhdE5vbWJyZVxyXG5cdFx0XHRcdFx0OiAnJztcclxuXHRcdFx0dmFsdWVSZXBsYWNlID0gcGF0Tm9tYnJlO1xyXG5cdFx0XHRodG1sID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2VuKGh0bWwsIHRva2VuLnZhbHVlLCBwYXROb21icmUpO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PSBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfUFJPR1JBTUEudG9Mb3dlckNhc2UoKVxyXG5cdFx0KSB7XHJcblx0XHRcdGNvbnN0IHByb2dOb21icmUgPVxyXG5cdFx0XHRcdHRoaXMuZGF0YS5wbGlQcm9tb2Npb24gJiYgdGhpcy5kYXRhLnBsaVByb21vY2lvbi5wbGlQcm9ncmFtYVxyXG5cdFx0XHRcdFx0PyB0aGlzLmRhdGEucGxpUHJvbW9jaW9uLnBsaVByb2dyYW1hLnByb2dOb21icmVcclxuXHRcdFx0XHRcdDogJyc7XHJcblx0XHRcdHZhbHVlUmVwbGFjZSA9IHByb2dOb21icmU7XHJcblx0XHRcdGh0bWwgPSB0aGlzLnRva2VuU2VydmljZS5yZXBsYWNlVG9rZW4oaHRtbCwgdG9rZW4udmFsdWUsIHByb2dOb21icmUpO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PSBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfUFJPTU9DSU9OLnRvTG93ZXJDYXNlKClcclxuXHRcdCkge1xyXG5cdFx0XHRjb25zdCBwcm9tTm9tYnJlID0gdGhpcy5kYXRhLnBsaVByb21vY2lvbiA/IHRoaXMuZGF0YS5wbGlQcm9tb2Npb24ucHJvbU5vbWJyZSA6ICcnO1xyXG5cdFx0XHR2YWx1ZVJlcGxhY2UgPSBwcm9tTm9tYnJlO1xyXG5cdFx0XHRodG1sID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2VuKGh0bWwsIHRva2VuLnZhbHVlLCBwcm9tTm9tYnJlKTtcclxuXHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdHN1YlRva2VuWzFdLnRvTG93ZXJDYXNlKCkgPT0gVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX0FOSU9fUFJPTU9DSU9OLnRvTG93ZXJDYXNlKClcclxuXHRcdCkge1xyXG5cdFx0XHRjb25zdCBhbmlvUHJvbW9jaW9uID1cclxuXHRcdFx0XHR0aGlzLmRhdGEucGxpUHJvbW9jaW9uICYmIHRoaXMuZGF0YS5wbGlQcm9tb2Npb24ucHJvbUFuaW9cclxuXHRcdFx0XHRcdD8gdGhpcy5kYXRhLnBsaVByb21vY2lvbi5wcm9tQW5pb1xyXG5cdFx0XHRcdFx0OiAwO1xyXG5cdFx0XHR2YWx1ZVJlcGxhY2UgPSBhbmlvUHJvbW9jaW9uO1xyXG5cdFx0XHRodG1sID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2VuKGh0bWwsIHRva2VuLnZhbHVlLCBhbmlvUHJvbW9jaW9uKTtcclxuXHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdHN1YlRva2VuWzFdLnRvTG93ZXJDYXNlKCkgPT1cclxuXHRcdFx0VG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX0lTT19NT05FREFfQkFTRS50b0xvd2VyQ2FzZSgpXHJcblx0XHQpIHtcclxuXHRcdFx0Y29uc3QgYmFzZUN1cnJlbmN5ID1cclxuXHRcdFx0XHR0aGlzLmRhdGEuYnVkZ2V0RHRvUHJpbWFyeSAmJiB0aGlzLmRhdGEuYnVkZ2V0RHRvUHJpbWFyeS5idWRnZXRcclxuXHRcdFx0XHRcdD8gdGhpcy5kYXRhLmJ1ZGdldER0b1ByaW1hcnkuYnVkZ2V0LmJhc2VDdXJyZW5jeVxyXG5cdFx0XHRcdFx0OiB0aGlzLmRhdGEuYnVkZ2V0RHRvU2VjdW5kYXJ5ICYmIHRoaXMuZGF0YS5idWRnZXREdG9TZWN1bmRhcnkuYnVkZ2V0XHJcblx0XHRcdFx0XHQ/IHRoaXMuZGF0YS5idWRnZXREdG9TZWN1bmRhcnkuYnVkZ2V0LmJhc2VDdXJyZW5jeVxyXG5cdFx0XHRcdFx0OiAnJztcclxuXHRcdFx0dmFsdWVSZXBsYWNlID0gYmFzZUN1cnJlbmN5O1xyXG5cdFx0XHRodG1sID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2VuKGh0bWwsIHRva2VuLnZhbHVlLCBiYXNlQ3VycmVuY3kpO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PSBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfU1RBVFVTX05BTUUudG9Mb3dlckNhc2UoKVxyXG5cdFx0KSB7XHJcblx0XHRcdGNvbnN0IHN0YXR1c05hbWUgPVxyXG5cdFx0XHRcdHRoaXMuZGF0YS5kYXRhRm9ybUFwcGxpY2F0aW9uICYmXHJcblx0XHRcdFx0VXRpbFN0cmluZy5pc1ZhbGlkKHRoaXMuZGF0YS5kYXRhRm9ybUFwcGxpY2F0aW9uLnN0YXRlTmFtZSlcclxuXHRcdFx0XHRcdD8gdGhpcy5kYXRhLmRhdGFGb3JtQXBwbGljYXRpb24uc3RhdGVOYW1lXHJcblx0XHRcdFx0XHQ6ICcnO1xyXG5cdFx0XHR2YWx1ZVJlcGxhY2UgPSBzdGF0dXNOYW1lO1xyXG5cdFx0XHRodG1sID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2VuKGh0bWwsIHRva2VuLnZhbHVlLCBzdGF0dXNOYW1lKTtcclxuXHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdHN1YlRva2VuWzFdLnRvTG93ZXJDYXNlKCkgPT0gVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX1VTRVJfSU5JVElBTFMudG9Mb3dlckNhc2UoKVxyXG5cdFx0KSB7XHJcblx0XHRcdGNvbnN0IHBsaVVzZXI6IFBsaVVzZXIgPSBBdXRoZW50aWNhdGlvblV0aWwuZ2V0UGxpVXNlcigpO1xyXG5cdFx0XHR2YWx1ZVJlcGxhY2UgPSBVdGlsU3RyaW5nLmluaXRpYWxMZXR0ZXJzKHBsaVVzZXIuZmlyc3RuYW1lICsgJyAnICsgcGxpVXNlci5sYXN0bmFtZSk7XHJcblx0XHRcdGh0bWwgPSB0aGlzLnRva2VuU2VydmljZS5yZXBsYWNlVG9rZW4oaHRtbCwgdG9rZW4udmFsdWUsIHZhbHVlUmVwbGFjZSk7XHJcblx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRzdWJUb2tlblsxXS50b0xvd2VyQ2FzZSgpID09XHJcblx0XHRcdFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9OVU1CRVJfQVBQTElDQVRJT04udG9Mb3dlckNhc2UoKVxyXG5cdFx0KSB7XHJcblx0XHRcdGNvbnN0IG51bWJlciA9XHJcblx0XHRcdFx0dGhpcy5kYXRhLmRhdGFGb3JtQXBwbGljYXRpb24gJiYgdGhpcy5kYXRhLmRhdGFGb3JtQXBwbGljYXRpb24ubnVtYmVyXHJcblx0XHRcdFx0XHQ/IHRoaXMuZGF0YS5kYXRhRm9ybUFwcGxpY2F0aW9uLm51bWJlclxyXG5cdFx0XHRcdFx0OiBudWxsO1xyXG5cdFx0XHR2YWx1ZVJlcGxhY2UgPSBudW1iZXI7XHJcblx0XHRcdGh0bWwgPSB0aGlzLnRva2VuU2VydmljZS5yZXBsYWNlVG9rZW4oaHRtbCwgdG9rZW4udmFsdWUsIG51bWJlcik7XHJcblx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRzdWJUb2tlblsxXS50b0xvd2VyQ2FzZSgpID09IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9OQU1FLnRvTG93ZXJDYXNlKClcclxuXHRcdCkge1xyXG5cdFx0XHRjb25zdCBjb21pdGVOb21icmUgPVxyXG5cdFx0XHRcdHRoaXMuZGF0YS5kYXRhRm9ybUJ5Rm9ybSAmJiB0aGlzLmRhdGEuZGF0YUZvcm1CeUZvcm0uY29taXRlTm9tYnJlXHJcblx0XHRcdFx0XHQ/IHRoaXMuZGF0YS5kYXRhRm9ybUJ5Rm9ybS5jb21pdGVOb21icmVcclxuXHRcdFx0XHRcdDogbnVsbDtcclxuXHRcdFx0dmFsdWVSZXBsYWNlID0gY29taXRlTm9tYnJlO1xyXG5cdFx0XHRodG1sID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2VuKGh0bWwsIHRva2VuLnZhbHVlLCBjb21pdGVOb21icmUpO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PVxyXG5cdFx0XHRUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfU0VHTUVOVEFUSU9OLnRvTG93ZXJDYXNlKClcclxuXHRcdCkge1xyXG5cdFx0XHRjb25zdCBjb21pdGVTZWdtZW50YWNpb24gPVxyXG5cdFx0XHRcdHRoaXMuZGF0YS5kYXRhRm9ybUJ5Rm9ybSAmJlxyXG5cdFx0XHRcdHRoaXMuZGF0YS5kYXRhRm9ybUJ5Rm9ybVtUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfU0VHTUVOVEFUSU9OXVxyXG5cdFx0XHRcdFx0PyB0aGlzLmRhdGEuZGF0YUZvcm1CeUZvcm1bVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX1NFR01FTlRBVElPTl1cclxuXHRcdFx0XHRcdDogbnVsbDtcclxuXHRcdFx0dmFsdWVSZXBsYWNlID0gY29taXRlU2VnbWVudGFjaW9uO1xyXG5cdFx0XHRodG1sID0gdGhpcy50b2tlblNlcnZpY2UucmVwbGFjZVRva2VuKGh0bWwsIHRva2VuLnZhbHVlLCBjb21pdGVTZWdtZW50YWNpb24pO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PVxyXG5cdFx0XHRUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfQUdHUlVQQVRJT04udG9Mb3dlckNhc2UoKVxyXG5cdFx0KSB7XHJcblx0XHRcdGNvbnN0IGNvbWl0ZUFncnVwYWNpb24gPVxyXG5cdFx0XHRcdHRoaXMuZGF0YS5kYXRhRm9ybUJ5Rm9ybSAmJlxyXG5cdFx0XHRcdHRoaXMuZGF0YS5kYXRhRm9ybUJ5Rm9ybVtUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfQUdHUlVQQVRJT05dXHJcblx0XHRcdFx0XHQ/IHRoaXMuZGF0YS5kYXRhRm9ybUJ5Rm9ybVtUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfQUdHUlVQQVRJT05dXHJcblx0XHRcdFx0XHQ6IG51bGw7XHJcblx0XHRcdHZhbHVlUmVwbGFjZSA9IGNvbWl0ZUFncnVwYWNpb247XHJcblx0XHRcdGh0bWwgPSB0aGlzLnRva2VuU2VydmljZS5yZXBsYWNlVG9rZW4oaHRtbCwgdG9rZW4udmFsdWUsIGNvbWl0ZUFncnVwYWNpb24pO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PVxyXG5cdFx0XHRUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfQ1VUTElORV9EQVRFLnRvTG93ZXJDYXNlKClcclxuXHRcdCkge1xyXG5cdFx0XHRsZXQgY3V0TGluZURhdGUgPVxyXG5cdFx0XHRcdHRoaXMuZGF0YS5kYXRhRm9ybUJ5Rm9ybSAmJlxyXG5cdFx0XHRcdHRoaXMuZGF0YS5kYXRhRm9ybUJ5Rm9ybVtUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfQ1VUTElORV9EQVRFXVxyXG5cdFx0XHRcdFx0PyB0aGlzLmRhdGEuZGF0YUZvcm1CeUZvcm1bVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX0NVVExJTkVfREFURV1cclxuXHRcdFx0XHRcdDogbnVsbDtcclxuXHRcdFx0aWYgKGN1dExpbmVEYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xyXG5cdFx0XHRcdGN1dExpbmVEYXRlID0gY3V0TGluZURhdGUudG9TdHJpbmcoKTtcclxuXHRcdFx0fVxyXG5cdFx0XHR2YWx1ZVJlcGxhY2UgPSBjdXRMaW5lRGF0ZTtcclxuXHRcdFx0aHRtbCA9IHRoaXMudG9rZW5TZXJ2aWNlLnJlcGxhY2VUb2tlbihodG1sLCB0b2tlbi52YWx1ZSwgY3V0TGluZURhdGUpO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PSBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19UT1RBTF9XRUlHSFRFRC50b0xvd2VyQ2FzZSgpXHJcblx0XHQpIHtcclxuXHRcdFx0bGV0IGJlc3RTY2VuYXJpb1ZhbHVlOiBhbnkgPSAnJztcclxuXHRcdFx0aWYgKHRoaXMuZXZhbHVhdGlvbiAmJiB0aGlzLmV2YWx1YXRpb24uc2NlbmFyaW9zKSB7XHJcblx0XHRcdFx0bGV0IGJlc3RTY2VuYXJpbyA9IHRoaXMuZXZhbHVhdGlvbi5zY2VuYXJpb3MuZmlsdGVyKChzKSA9PiBzLmJlc3QpWzBdO1xyXG5cdFx0XHRcdGlmIChiZXN0U2NlbmFyaW8pIHtcclxuXHRcdFx0XHRcdGJlc3RTY2VuYXJpb1ZhbHVlID0gYmVzdFNjZW5hcmlvLnJlc3VsdDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0aHRtbCA9IHRoaXMudG9rZW5TZXJ2aWNlLnJlcGxhY2VUb2tlbihodG1sLCB0b2tlbi52YWx1ZSwgYmVzdFNjZW5hcmlvVmFsdWUpO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PVxyXG5cdFx0XHRUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19VU0VSX1RZUEVfQ1JFRElUX1NUVURZLnRvTG93ZXJDYXNlKClcclxuXHRcdCkge1xyXG5cdFx0XHRjb25zdCB1c2VyVHlwZUNyZWRpdFN0dWR5ID1cclxuXHRcdFx0XHR0aGlzLmRhdGEuZGF0YUZvcm1CeUZvcm0gJiZcclxuXHRcdFx0XHR0aGlzLmRhdGEuZGF0YUZvcm1CeUZvcm1bVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfVVNFUl9UWVBFX0NSRURJVF9TVFVEWV1cclxuXHRcdFx0XHRcdD8gdGhpcy5kYXRhLmRhdGFGb3JtQnlGb3JtW1Rva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1VTRVJfVFlQRV9DUkVESVRfU1RVRFldXHJcblx0XHRcdFx0XHQ6IG51bGw7XHJcblx0XHRcdHZhbHVlUmVwbGFjZSA9IHVzZXJUeXBlQ3JlZGl0U3R1ZHk7XHJcblx0XHRcdGh0bWwgPSB0aGlzLnRva2VuU2VydmljZS5yZXBsYWNlVG9rZW4oaHRtbCwgdG9rZW4udmFsdWUsIHVzZXJUeXBlQ3JlZGl0U3R1ZHkpO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PSBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19CRU5fQ09ESUdPLnRvTG93ZXJDYXNlKClcclxuXHRcdCkge1xyXG5cdFx0XHR2YWx1ZVJlcGxhY2UgPSB0aGlzLmRhdGEuZGF0YUZvcm1BcHBsaWNhdGlvbi5iZW5Db2RpZ287XHJcblx0XHRcdGh0bWwgPSB0aGlzLnRva2VuU2VydmljZS5yZXBsYWNlVG9rZW4oXHJcblx0XHRcdFx0aHRtbCxcclxuXHRcdFx0XHR0b2tlbi52YWx1ZSxcclxuXHRcdFx0XHR0aGlzLmRhdGEuZGF0YUZvcm1BcHBsaWNhdGlvbi5iZW5Db2RpZ29cclxuXHRcdFx0KTtcclxuXHRcdH0gZWxzZSBpZiAoc3ViVG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PSBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOX1NVUk5BTUUudG9Mb3dlckNhc2UoKSkge1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0dGhpcy5kYXRhLmRhdGFGb3JtQXBwbGljYXRpb24udXNlcm5hbWUgJiZcclxuXHRcdFx0XHR0aGlzLmRhdGEuZGF0YUZvcm1BcHBsaWNhdGlvbi51c2VybmFtZSAhPT0gbnVsbFxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRhd2FpdCB0aGlzLmZpbmRTZXNpb25CeUxvZ2luKGh0bWwsIHN1YlRva2VuWzFdKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Ly8gRG9uJ3QgZmluZCB0aGUgdG9rZW5cclxuXHRcdFx0Y29uc29sZS5lcnJvcignTm8gc2UgZW5jb250cm8gZWwgdG9rZW4nLCB0b2tlbik7XHJcblx0XHRcdGh0bWwgPSB0aGlzLnRva2VuU2VydmljZS5yZXBsYWNlVG9rZW4oaHRtbCwgdG9rZW4udmFsdWUsICcnKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB7XHJcblx0XHRcdGh0bWw6IGh0bWwsXHJcblx0XHRcdHZhbHVlOiB2YWx1ZVJlcGxhY2VcclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHRhc3luYyBmaW5kU2VzaW9uQnlMb2dpbihodG1sOiBzdHJpbmcsIHRva2VuOiBhbnkpIHtcclxuXHRcdHRyeSB7XHJcblx0XHRcdGNvbnN0IHNlc2lvbiA9IGF3YWl0IHRoaXMuc2VzaW9uU2VydmljZVxyXG5cdFx0XHRcdC5nZXRCeUxvZ2luKHRoaXMuZGF0YS5kYXRhRm9ybUFwcGxpY2F0aW9uLnVzZXJuYW1lKVxyXG5cdFx0XHRcdC50b1Byb21pc2UoKTtcclxuXHRcdFx0Y29uc3Qgc3VybmFtZXMgPVxyXG5cdFx0XHRcdHNlc2lvbi5zdXJuYW1lICE9PSAnJyAmJiBzZXNpb24uc3VybmFtZSAhPT0gbnVsbFxyXG5cdFx0XHRcdFx0PyBzZXNpb24uc3VybmFtZSArICcgJyArIHNlc2lvbi5sYXN0bmFtZVxyXG5cdFx0XHRcdFx0OiBzZXNpb24ubGFzdG5hbWU7XHJcblx0XHRcdGh0bWwgPSB0aGlzLnRva2VuU2VydmljZS5yZXBsYWNlVG9rZW4oaHRtbCwgdG9rZW4sIHN1cm5hbWVzKTtcclxuXHRcdFx0Y29uc29sZS5sb2coJ3N1cm5hbWUnLCBzdXJuYW1lcyk7XHJcblx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHRjb25zb2xlLmVycm9yKCdFcnJvciBjb25zdWx0YW5kbyBlbCBsb2dpbiBlbiBQTElTLCBnZXRCeUxvZ2luJywgZXJyb3IpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRmluZCBhbGwgdGhlIHRva2VucyBwcmVzZW50IGluIHRoZSBIVE1MIHRleHQuIE9yZ2FuaXplIHRoaXMgdG9rZW5zIGluIGZvdXIgY2F0ZWdvcmllcy5cclxuXHQgKiBAcGFyYW0gaHRtbCBUZXh0IG9mIHRoZSBodG1sXHJcblx0ICovXHJcblx0Z2V0TGlzdFRva2VucyhodG1sOiBzdHJpbmcpOiBhbnlbXSB7XHJcblx0XHQvLyBsZXQgc3RyaW5nczogc3RyaW5nW10gPSBodG1sLnNwbGl0KFwiIFwiKTtcclxuXHRcdGxldCB0b2tlbnM6IGFueVtdID0gdGhpcy50b2tlblNlcnZpY2UuZ2V0TGlzdFRva2Vuc0J5U3RyaW5nKGh0bWwpO1xyXG5cdFx0bGV0IHRva2Vuc0NhdGVnb3J5OiBhbnlbXSA9IFtdO1xyXG5cdFx0Zm9yIChsZXQgaW5mb1Rva2VuIG9mIHRva2Vucykge1xyXG5cdFx0XHRpZiAoaW5mb1Rva2VuKSB7XHJcblx0XHRcdFx0Y29uc3Qga2V5VHlwZTogbnVtYmVyID0gVG9rZW5TZXJ2aWNlLmdldEtleVR5cGUoXHJcblx0XHRcdFx0XHRpbmZvVG9rZW4ua2V5LnJlcGxhY2UoJ3snLCAnJykucmVwbGFjZSgnfScsICcnKVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0aWYgKGtleVR5cGUpIHtcclxuXHRcdFx0XHRcdHN3aXRjaCAoa2V5VHlwZSkge1xyXG5cdFx0XHRcdFx0XHRjYXNlIDE6IC8vIEZvcm1cclxuXHRcdFx0XHRcdFx0XHRpZiAoIXRva2Vuc0NhdGVnb3J5W1Rva2VuU2VydmljZS5UT0tFTl9MQUJFTF9GT1JNXSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0dG9rZW5zQ2F0ZWdvcnlbVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0ZPUk1dID0gW107XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdHRva2Vuc0NhdGVnb3J5W1Rva2VuU2VydmljZS5UT0tFTl9MQUJFTF9GT1JNXS5wdXNoKGluZm9Ub2tlbik7XHJcblx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdGNhc2UgMjogLy9CdWRnZXRcclxuXHRcdFx0XHRcdFx0XHRpZiAoIXRva2Vuc0NhdGVnb3J5W1Rva2VuU2VydmljZS5UT0tFTl9MQUJFTF9CVURHRVRdKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0b2tlbnNDYXRlZ29yeVtUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQlVER0VUXSA9IFtdO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR0b2tlbnNDYXRlZ29yeVtUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQlVER0VUXS5wdXNoKGluZm9Ub2tlbik7XHJcblx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdGNhc2UgMzogLy9TdGF0aWNcclxuXHRcdFx0XHRcdFx0XHRpZiAoIXRva2Vuc0NhdGVnb3J5W1Rva2VuU2VydmljZS5UT0tFTl9MQUJFTF9TVEFUSUNdKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0b2tlbnNDYXRlZ29yeVtUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfU1RBVElDXSA9IFtdO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR0b2tlbnNDYXRlZ29yeVtUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfU1RBVElDXS5wdXNoKGluZm9Ub2tlbik7XHJcblx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdGNhc2UgNDogLy9DYWxjdWxhdGVkXHJcblx0XHRcdFx0XHRcdFx0aWYgKCF0b2tlbnNDYXRlZ29yeVtUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQ0FMQ1VMQVRFRF0pIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRva2Vuc0NhdGVnb3J5W1Rva2VuU2VydmljZS5UT0tFTl9MQUJFTF9DQUxDVUxBVEVEXSA9IFtdO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR0b2tlbnNDYXRlZ29yeVtUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQ0FMQ1VMQVRFRF0ucHVzaChpbmZvVG9rZW4pO1xyXG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRjYXNlIDU6IC8vVGFza1xyXG5cdFx0XHRcdFx0XHRcdGlmICghdG9rZW5zQ2F0ZWdvcnlbVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1RBU0tMXSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0dG9rZW5zQ2F0ZWdvcnlbVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1RBU0tMXSA9IFtdO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR0b2tlbnNDYXRlZ29yeVtUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfVEFTS0xdLnB1c2goaW5mb1Rva2VuKTtcclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiB0b2tlbnNDYXRlZ29yeTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEl0IHJlc29sdmVzIHRoZSBzdGF0aWMgdG9rZW4gZGVzdGluYXRpb25cclxuXHQgKiBAcGFyYW0gc3RyaW5nVGV4dFxyXG5cdCAqIEBwYXJhbSB0b2tlblxyXG5cdCAqIEBwYXJhbSBkYXRhVmFsdWVcclxuXHQgKi9cclxuXHRyZXNvbHZlU3RhdGljVG9rZW5zS2V5QVF1aWVuVmFEaXJpZ2lkbyhzdHJpbmdUZXh0OiBzdHJpbmcsIHRva2VuVmFsdWU6IGFueSk6IHN0cmluZyB7XHJcblx0XHQvLyBpZiAodGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbikge1xyXG5cdFx0dGhpcy5lbmFibGVEZXN0aW5hdGlvbiA9IHRydWU7XHJcblx0XHR0aGlzLmFkZEluZm9Ub2tlbkRlc3RpbmF0aW9uKCk7XHJcblx0XHRjb25zdCBwbGlUb2tlbkRlc3RpbmF0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsaS10b2tlbi1kZXN0aW5hdGlvbicpO1xyXG5cdFx0bGV0IGh0bWwgPSAnJztcclxuXHRcdGlmIChwbGlUb2tlbkRlc3RpbmF0aW9uICYmIHBsaVRva2VuRGVzdGluYXRpb24uaW5uZXJIVE1MLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0aHRtbCA9IHRoaXMucmVtb3ZlQ29tbWVudHNIdG1sKHBsaVRva2VuRGVzdGluYXRpb24uaW5uZXJIVE1MKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB0aGlzLnRva2VuU2VydmljZS5yZXBsYWNlVG9rZW4oc3RyaW5nVGV4dCwgdG9rZW5WYWx1ZSwgaHRtbCk7XHJcblx0XHQvLyB9XHJcblx0XHQvLyByZXR1cm4gc3RyaW5nVGV4dDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqXHJcblx0ICovXHJcblx0YWRkSW5mb1Rva2VuRGVzdGluYXRpb24oKSB7XHJcblx0XHRsZXQgcGxpVG9rZW5EZXN0aW5hdGlvbiA9ICQoJyNwbGktdG9rZW4tZGVzdGluYXRpb24nKTtcclxuXHRcdHBsaVRva2VuRGVzdGluYXRpb24uZW1wdHkoKTtcclxuXHRcdGlmICh0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uKSB7XHJcblx0XHRcdGxldCBkZXN0aW5hdGlvbkluZm8gPSAkKCc8ZGl2PjwvZGl2PicpO1xyXG5cdFx0XHRpZiAodGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi50ZXh0KSB7XHJcblx0XHRcdFx0bGV0IHZhbHVlSW5mbyA9ICQoJzxkaXY+PC9kaXY+JykudGV4dCh0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLnRleHQpO1xyXG5cdFx0XHRcdGRlc3RpbmF0aW9uSW5mby5hcHBlbmQodmFsdWVJbmZvKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAodGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi50aXRsZSkge1xyXG5cdFx0XHRcdGxldCB2YWx1ZUluZm8gPSAkKCc8ZGl2PjwvZGl2PicpLnRleHQodGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi50aXRsZSk7XHJcblx0XHRcdFx0ZGVzdGluYXRpb25JbmZvLmFwcGVuZCh2YWx1ZUluZm8pO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmICh0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLm5hbWUgfHwgdGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi5sYXN0TmFtZSkge1xyXG5cdFx0XHRcdGxldCB2YWx1ZUluZm9OYW1lID0gdGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi5uYW1lXHJcblx0XHRcdFx0XHQ/IHRoaXMuZGF0YS5kYXRhRGVzdGluYXRpb24ubmFtZSArICcgJ1xyXG5cdFx0XHRcdFx0OiAnJztcclxuXHRcdFx0XHR2YWx1ZUluZm9OYW1lICs9IHRoaXMuZGF0YS5kYXRhRGVzdGluYXRpb24ubGFzdE5hbWVcclxuXHRcdFx0XHRcdD8gdGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi5sYXN0TmFtZVxyXG5cdFx0XHRcdFx0OiAnJztcclxuXHRcdFx0XHRsZXQgdmFsdWVJbmZvID0gJCgnPGRpdj48L2Rpdj4nKS5hcHBlbmQoJzxzdHJvbmc+JyArIHZhbHVlSW5mb05hbWUgKyAnPC9zdHJvbmc+Jyk7XHJcblx0XHRcdFx0ZGVzdGluYXRpb25JbmZvLmFwcGVuZCh2YWx1ZUluZm8pO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmICh0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLmNhcmdvKSB7XHJcblx0XHRcdFx0bGV0IHZhbHVlSW5mbyA9ICQoJzxkaXY+PC9kaXY+JykudGV4dCh0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLmNhcmdvKTtcclxuXHRcdFx0XHRkZXN0aW5hdGlvbkluZm8uYXBwZW5kKHZhbHVlSW5mbyk7XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKHRoaXMuZGF0YS5kYXRhRGVzdGluYXRpb24ub2NjdXBhdGlvbikge1xyXG5cdFx0XHRcdGxldCB2YWx1ZUluZm8gPSAkKCc8ZGl2PjwvZGl2PicpLnRleHQodGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi5vY2N1cGF0aW9uKTtcclxuXHRcdFx0XHRkZXN0aW5hdGlvbkluZm8uYXBwZW5kKHZhbHVlSW5mbyk7XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKHRoaXMuZGF0YS5kYXRhRGVzdGluYXRpb24uY29tcGFueSkge1xyXG5cdFx0XHRcdGxldCB2YWx1ZUluZm8gPSAkKCc8ZGl2PjwvZGl2PicpLnRleHQodGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi5jb21wYW55KTtcclxuXHRcdFx0XHRkZXN0aW5hdGlvbkluZm8uYXBwZW5kKHZhbHVlSW5mbyk7XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKHRoaXMuZGF0YS5kYXRhRGVzdGluYXRpb24uYWRkcmVzcyB8fCB0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLmFkZHJlc3NEZXRhaWxzKSB7XHJcblx0XHRcdFx0bGV0IHZhbHVlSW5mb05hbWUgPSB0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLmFkZHJlc3NcclxuXHRcdFx0XHRcdD8gdGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi5hZGRyZXNzICsgJyAnXHJcblx0XHRcdFx0XHQ6ICcnO1xyXG5cdFx0XHRcdHZhbHVlSW5mb05hbWUgKz0gdGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi5hZGRyZXNzRGV0YWlsc1xyXG5cdFx0XHRcdFx0PyB0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLmFkZHJlc3NEZXRhaWxzXHJcblx0XHRcdFx0XHQ6ICcnO1xyXG5cdFx0XHRcdGxldCB2YWx1ZUluZm8gPSAkKCc8ZGl2PjwvZGl2PicpLnRleHQodmFsdWVJbmZvTmFtZSk7XHJcblx0XHRcdFx0ZGVzdGluYXRpb25JbmZvLmFwcGVuZCh2YWx1ZUluZm8pO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmICh0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLmNpdHkgfHwgdGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi5jb3VudHJ5KSB7XHJcblx0XHRcdFx0bGV0IHZhbHVlSW5mb05hbWUgPSB0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLmNpdHlcclxuXHRcdFx0XHRcdD8gdGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi5jaXR5XHJcblx0XHRcdFx0XHQ6ICcnO1xyXG5cdFx0XHRcdHZhbHVlSW5mb05hbWUgKz1cclxuXHRcdFx0XHRcdHRoaXMuZGF0YS5kYXRhRGVzdGluYXRpb24uY2l0eSAmJiB0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLmNvdW50cnkgPyAnLCAnIDogJyc7XHJcblx0XHRcdFx0dmFsdWVJbmZvTmFtZSArPSB0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLmNvdW50cnlcclxuXHRcdFx0XHRcdD8gdGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi5jb3VudHJ5XHJcblx0XHRcdFx0XHQ6ICcnO1xyXG5cdFx0XHRcdGxldCB2YWx1ZUluZm8gPSAkKCc8ZGl2PjwvZGl2PicpLnRleHQodmFsdWVJbmZvTmFtZSk7XHJcblx0XHRcdFx0ZGVzdGluYXRpb25JbmZvLmFwcGVuZCh2YWx1ZUluZm8pO1xyXG5cdFx0XHR9XHJcblx0XHRcdHBsaVRva2VuRGVzdGluYXRpb24uYXBwZW5kKGRlc3RpbmF0aW9uSW5mbyk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCByZXNvbHZlcyB0aGUgc3RhdGljIHRva2VuIGRlc3RpbmF0aW9uXHJcblx0ICogQHBhcmFtIHN0cmluZ1RleHRcclxuXHQgKiBAcGFyYW0gdG9rZW5cclxuXHQgKiBAcGFyYW0gZGF0YVZhbHVlXHJcblx0ICovXHJcblx0cmVzb2x2ZVN0YXRpY1Rva2Vuc0tleVNhbHVkb0NvbXBsZW1lbnRhcmlvKHN0cmluZ1RleHQ6IHN0cmluZywgdG9rZW5WYWx1ZTogYW55KTogc3RyaW5nIHtcclxuXHRcdC8vIGlmICh0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uKSB7XHJcblx0XHR0aGlzLmVuYWJsZURlc3RpbmF0aW9uID0gdHJ1ZTtcclxuXHRcdHRoaXMuYWRkSW5mb1Rva2VuU2FsdWRvQ29tcGxlbWVudGFyaW8oKTtcclxuXHRcdGNvbnN0IHBsaVRva2VuRGVzdGluYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGxpLXRva2VuLWNvbXBsZW1lbnRhcnktZ3JlZXRpbmcnKTtcclxuXHRcdGxldCBodG1sID0gJyc7XHJcblx0XHRpZiAocGxpVG9rZW5EZXN0aW5hdGlvbikge1xyXG5cdFx0XHRodG1sID0gdGhpcy5yZW1vdmVDb21tZW50c0h0bWwocGxpVG9rZW5EZXN0aW5hdGlvbi5pbm5lckhUTUwpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRoaXMudG9rZW5TZXJ2aWNlLnJlcGxhY2VUb2tlbihzdHJpbmdUZXh0LCB0b2tlblZhbHVlLCBodG1sKTtcclxuXHRcdC8vIH1cclxuXHRcdC8vIHJldHVybiBzdHJpbmdUZXh0O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICpcclxuXHQgKi9cclxuXHRhZGRJbmZvVG9rZW5TYWx1ZG9Db21wbGVtZW50YXJpbygpIHtcclxuXHRcdGxldCBwbGlUb2tlbkRlc3RpbmF0aW9uID0gJCgnI3BsaS10b2tlbi1jb21wbGVtZW50YXJ5LWdyZWV0aW5nJyk7XHJcblx0XHRwbGlUb2tlbkRlc3RpbmF0aW9uLmVtcHR5KCk7XHJcblx0XHRpZiAodGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbikge1xyXG5cdFx0XHRsZXQgZGVzdGluYXRpb25JbmZvID0gJCgnPGRpdj48L2Rpdj4nKTtcclxuXHRcdFx0aWYgKHRoaXMuZGF0YS5kYXRhRGVzdGluYXRpb24uZ3JlZXRpbmcpIHtcclxuXHRcdFx0XHRkZXN0aW5hdGlvbkluZm8uaHRtbCh0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLmdyZWV0aW5nKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAodGhpcy5kYXRhLmRhdGFEZXN0aW5hdGlvbi50aXRsZSkge1xyXG5cdFx0XHRcdGNvbnN0IHZhbHVlVGV4dCA9XHJcblx0XHRcdFx0XHQoZGVzdGluYXRpb25JbmZvLmh0bWwoKS5sZW5ndGggPT0gMCA/ICcnIDogJyAnKSArXHJcblx0XHRcdFx0XHR0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLnRpdGxlO1xyXG5cdFx0XHRcdGRlc3RpbmF0aW9uSW5mby5odG1sKGRlc3RpbmF0aW9uSW5mby5odG1sKCkgKyB2YWx1ZVRleHQpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmICh0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLmxhc3ROYW1lKSB7XHJcblx0XHRcdFx0bGV0IHZhbHVlSW5mb05hbWUgPSB0aGlzLmRhdGEuZGF0YURlc3RpbmF0aW9uLmxhc3ROYW1lXHJcblx0XHRcdFx0XHQ/IHRoaXMuZGF0YS5kYXRhRGVzdGluYXRpb24ubGFzdE5hbWVcclxuXHRcdFx0XHRcdDogJyc7XHJcblx0XHRcdFx0Y29uc3QgdmFsdWVUZXh0ID1cclxuXHRcdFx0XHRcdChkZXN0aW5hdGlvbkluZm8uaHRtbCgpLmxlbmd0aCA9PSAwID8gJycgOiAnICcpICtcclxuXHRcdFx0XHRcdCc8c3Ryb25nPicgK1xyXG5cdFx0XHRcdFx0dmFsdWVJbmZvTmFtZSArXHJcblx0XHRcdFx0XHQnPC9zdHJvbmc+JztcclxuXHRcdFx0XHRkZXN0aW5hdGlvbkluZm8uaHRtbChkZXN0aW5hdGlvbkluZm8uaHRtbCgpICsgdmFsdWVUZXh0KTtcclxuXHRcdFx0fVxyXG5cdFx0XHRwbGlUb2tlbkRlc3RpbmF0aW9uLmFwcGVuZChkZXN0aW5hdGlvbkluZm8pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSByZW1vdmVDb21tZW50c0h0bWwoaHRtbDogc3RyaW5nKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBodG1sID8gaHRtbC5yZXBsYWNlKC88IS0tW1xcc1xcU10qPy0tPi9nLCAnJykgOiBodG1sO1xyXG5cdH1cclxuXHJcblx0cmVzb2x2ZVN0YXRpY1Rva2Vuc0tleVNpZ24oaHRtbCwgdG9rZW5WYWx1ZTogYW55LCBzdWJUb2tlbjogc3RyaW5nW10pOiBzdHJpbmcge1xyXG5cdFx0bGV0IGNvbnRhaW5lciA9ICQoJzxkaXY+PC9kaXY+Jyk7XHJcblx0XHRsZXQgaW1nID0gJCgnPGltZyBpZD1cIicgKyBUb2tlblNlcnZpY2UuU0lHTl9MRVRURVJfVEFHX0lEICsgJ1wiPicpO1xyXG5cdFx0aW1nLmF0dHIoJ3NyYycsICcnKTtcclxuXHRcdGlmIChzdWJUb2tlbi5sZW5ndGggPiAyKSB7XHJcblx0XHRcdGltZy5hdHRyKCd3aWR0aCcsIHN1YlRva2VuWzJdLnRvU3RyaW5nKCkpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHN1YlRva2VuLmxlbmd0aCA+IDMpIHtcclxuXHRcdFx0aW1nLmF0dHIoJ2hlaWdodCcsIHN1YlRva2VuWzNdLnRvU3RyaW5nKCkpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHN1YlRva2VuLmxlbmd0aCA+IDQpIHtcclxuXHRcdFx0aW1nLmF0dHIoJ25hbWUnLCBzdWJUb2tlbls0XS50b1N0cmluZygpKTtcclxuXHRcdH1cclxuXHRcdGNvbnRhaW5lci5hcHBlbmQoaW1nKTtcclxuXHRcdC8vIHJldHVybiBjb250YWluZXIuaHRtbCgpO1xyXG5cdFx0cmV0dXJuIHRoaXMudG9rZW5TZXJ2aWNlLnJlcGxhY2VUb2tlbihodG1sLCB0b2tlblZhbHVlLCBjb250YWluZXIuaHRtbCgpKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZ2V0UnVicm9MYWJlbCgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMuZGF0YS5pZGlvbWEubG9jYWxlID09PSAnZXMnXHJcblx0XHRcdD8gJ1J1YnJvJ1xyXG5cdFx0XHQ6IHRoaXMuZGF0YS5pZGlvbWEubG9jYWxlID09PSAnZGUnXHJcblx0XHRcdD8gJ1Bvc3RlbidcclxuXHRcdFx0OiAnSXRlbSc7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGdldFRvdGFsTGFiZWwoKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiB0aGlzLmRhdGEuaWRpb21hLmxvY2FsZSA9PT0gJ2VzJ1xyXG5cdFx0XHQ/ICdUb3RhbCdcclxuXHRcdFx0OiB0aGlzLmRhdGEuaWRpb21hLmxvY2FsZSA9PT0gJ2RlJ1xyXG5cdFx0XHQ/ICdHZXNhbXQnXHJcblx0XHRcdDogdGhpcy5kYXRhLmlkaW9tYS5sb2NhbGUgPT09ICdmcidcclxuXHRcdFx0PyAnVG90YWwnXHJcblx0XHRcdDogdGhpcy5kYXRhLmlkaW9tYS5sb2NhbGUgPT09ICdpdCdcclxuXHRcdFx0PyAnVG90YWxlJ1xyXG5cdFx0XHQ6ICdJdGVtJztcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZ2V0WWVhckxhYmVsKCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gdGhpcy5kYXRhLmlkaW9tYS5sb2NhbGUgPT09ICdlcydcclxuXHRcdFx0PyAnQcOxbydcclxuXHRcdFx0OiB0aGlzLmRhdGEuaWRpb21hLmxvY2FsZSA9PT0gJ2RlJ1xyXG5cdFx0XHQ/ICdKYWhyJ1xyXG5cdFx0XHQ6IHRoaXMuZGF0YS5pZGlvbWEubG9jYWxlID09PSAnZnInXHJcblx0XHRcdD8gJ0FubsOpZSdcclxuXHRcdFx0OiB0aGlzLmRhdGEuaWRpb21hLmxvY2FsZSA9PT0gJ2l0J1xyXG5cdFx0XHQ/ICdBbm5vJ1xyXG5cdFx0XHQ6ICdZZWFyJztcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqXHJcblx0ICovXHJcblx0YWRkSW5mb1Rva2VuUmVzdW1lQ2F0ZWdvcnlZZWFyKFxyXG5cdFx0dHByZXNDb2RpZ286IG51bWJlcixcclxuXHRcdGlkVG90YWxCdWRnZXQ6IHN0cmluZyxcclxuXHRcdGJ1ZGdldER0bzogQnVkZ2V0RHRvXHJcblx0KSB7XHJcblx0XHRpZiAodHByZXNDb2RpZ28gPT0gRVRpcG9QcmVzdXB1ZXN0by5QUklNQVJZKSB7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0fVxyXG5cdFx0bGV0IHJlc3VtZUNhdGVnb3J5WWVhckNvbnRlbnQgPSAkKCcjJyArIGlkVG90YWxCdWRnZXQpO1xyXG5cdFx0cmVzdW1lQ2F0ZWdvcnlZZWFyQ29udGVudC5lbXB0eSgpO1xyXG5cdFx0aWYgKGJ1ZGdldER0byAmJiBidWRnZXREdG8uYnVkZ2V0ICYmIGJ1ZGdldER0by5idWRnZXQuc3VtbWFyeSkge1xyXG5cdFx0XHRjb25zdCBzdW1tYXJ5ID0gYnVkZ2V0RHRvLmJ1ZGdldC5zdW1tYXJ5O1xyXG5cdFx0XHRjb25zdCB0YWJsZSA9ICQoJzx0YWJsZT48L3RhYmxlPicpO1xyXG5cdFx0XHR0YWJsZS5jc3MoJ2JvcmRlci1zcGFjaW5nJywgJzJweCcpO1xyXG5cdFx0XHR0YWJsZS5jc3MoJ2JvcmRlci1jb2xsYXBzZScsICdjb2xsYXBzZScpO1xyXG5cdFx0XHQvL3RoZWFkXHJcblx0XHRcdGNvbnN0IHRoZWFkID0gJCgnPHRoZWFkPicpLmFwcGVuZFRvKHRhYmxlKTtcclxuXHRcdFx0Y29uc3QgdGhSdWJybyA9ICQoJzx0aD4nLCB7IGh0bWw6IHRoaXMuZ2V0UnVicm9MYWJlbCgpIH0pLmFwcGVuZFRvKHRoZWFkKTtcclxuXHRcdFx0dGhSdWJyby5jc3MoJ3RleHQtYWxpZ24nLCAnY2VudGVyJyk7XHJcblx0XHRcdHRoUnVicm8uY3NzKCdib3JkZXInLCAnMXB4IHNvbGlkIGJsYWNrJyk7XHJcblx0XHRcdHRoUnVicm8uY3NzKCdjb2xvcicsICd3aGl0ZScpO1xyXG5cdFx0XHR0aFJ1YnJvLmNzcygnYmFja2dyb3VuZC1jb2xvcicsICdncmV5Jyk7XHJcblx0XHRcdGxldCBpdGVyYWNpb25BbmlvID0gMDtcclxuXHRcdFx0Zm9yIChjb25zdCB5ZWFyIG9mIHN1bW1hcnkueWVhcnMpIHtcclxuXHRcdFx0XHRjb25zdCB0aFllYXIgPSAkKCc8dGg+JywgeyBodG1sOiB0aGlzLmdldFllYXJMYWJlbCgpICsgKytpdGVyYWNpb25BbmlvIH0pLmFwcGVuZFRvKFxyXG5cdFx0XHRcdFx0dGhlYWRcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHRcdHRoWWVhci5jc3MoJ3RleHQtYWxpZ24nLCAnY2VudGVyJyk7XHJcblx0XHRcdFx0dGhZZWFyLmNzcygnYm9yZGVyJywgJzFweCBzb2xpZCBibGFjaycpO1xyXG5cdFx0XHRcdHRoWWVhci5jc3MoJ2NvbG9yJywgJ3doaXRlJyk7XHJcblx0XHRcdFx0dGhZZWFyLmNzcygnYmFja2dyb3VuZC1jb2xvcicsICdncmV5Jyk7XHJcblx0XHRcdFx0dGhZZWFyLmNzcygnd2lkdGgnLCAnODBweCcpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGNvbnN0IHRvdGFsTGFiZWwgPSAnJm5ic3A7JyArIHRoaXMuZ2V0VG90YWxMYWJlbCgpICsgc3VtbWFyeS5iYXNlQ3VycmVuY3kgKyAnJm5ic3A7JztcclxuXHRcdFx0Y29uc3QgdGhUb3RhbCA9ICQoJzx0aD4nLCB7IGh0bWw6IHRvdGFsTGFiZWwgfSkuYXBwZW5kVG8odGhlYWQpO1xyXG5cdFx0XHR0aFRvdGFsLmNzcygndGV4dC1hbGlnbicsICdjZW50ZXInKTtcclxuXHRcdFx0dGhUb3RhbC5jc3MoJ2JvcmRlcicsICcxcHggc29saWQgYmxhY2snKTtcclxuXHRcdFx0dGhUb3RhbC5jc3MoJ2NvbG9yJywgJ3doaXRlJyk7XHJcblx0XHRcdHRoVG90YWwuY3NzKCdiYWNrZ3JvdW5kLWNvbG9yJywgJ2dyZXknKTtcclxuXHRcdFx0dGhUb3RhbC5jc3MoJ3dpZHRoJywgJzgwcHgnKTtcclxuXHRcdFx0Ly90Ym9keVxyXG5cdFx0XHRsZXQgdGJvZHkgPSAkKCc8dGJvZHk+JykuYXBwZW5kVG8odGFibGUpO1xyXG5cdFx0XHRmb3IgKGxldCBpQ2F0ID0gMDsgaUNhdCA8IHN1bW1hcnkuY2F0ZWdvcmllcy5sZW5ndGg7IGlDYXQrKykge1xyXG5cdFx0XHRcdGNvbnN0IHRyID0gJCgnPHRyPicpLmFwcGVuZFRvKHRib2R5KTtcclxuXHRcdFx0XHRjb25zdCBjYXRlZ29yeSA9IHN1bW1hcnkuY2F0ZWdvcmllc1tpQ2F0XTtcclxuXHRcdFx0XHRjb25zdCBydWJyb0xhYmVsID1cclxuXHRcdFx0XHRcdCcmbmJzcDsmbmJzcDsnICtcclxuXHRcdFx0XHRcdHRoaXMudHJhbnNsYXRlQ2F0ZWdvcnkoY2F0ZWdvcnkuY2F0ZWdvcnkpICtcclxuXHRcdFx0XHRcdCcmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsnO1xyXG5cdFx0XHRcdGNvbnN0IHRkUnVicm8gPSAkKCc8dGQ+JywgeyBodG1sOiBydWJyb0xhYmVsIH0pLmFwcGVuZFRvKHRyKTtcclxuXHRcdFx0XHR0ZFJ1YnJvLmNzcygndGV4dC1hbGlnbicsICdsZWZ0Jyk7XHJcblx0XHRcdFx0dGRSdWJyby5jc3MoJ2JvcmRlcicsICcxcHggc29saWQgYmxhY2snKTtcclxuXHRcdFx0XHR0ZFJ1YnJvLmNzcygnZm9udC13ZWlnaHQnLCAnYm9sZCcpO1xyXG5cdFx0XHRcdGZvciAoY29uc3QgeWVhciBvZiBjYXRlZ29yeS55ZWFycykge1xyXG5cdFx0XHRcdFx0Y29uc3QgeWVhclRvdGFsID1cclxuXHRcdFx0XHRcdFx0eWVhci50b3RhbCA9PSAwXHJcblx0XHRcdFx0XHRcdFx0PyAnLSdcclxuXHRcdFx0XHRcdFx0XHQ6IHRoaXMuY3VycmVuY3lQaXBlLnRyYW5zZm9ybSh5ZWFyLnRvdGFsLCAnZGVmYXVsdCcsICcnLCAnMS4wLTAnKTtcclxuXHRcdFx0XHRcdGNvbnN0IHllYXJMYWJlbFRvdGFsID0gJyZuYnNwOyZuYnNwOycgKyB5ZWFyVG90YWwgKyAnJm5ic3A7Jm5ic3A7JztcclxuXHRcdFx0XHRcdGNvbnN0IHRkWWVhciA9ICQoJzx0ZD4nLCB7IGh0bWw6IHllYXJMYWJlbFRvdGFsIH0pLmFwcGVuZFRvKHRyKTtcclxuXHRcdFx0XHRcdHRkWWVhci5jc3MoJ3RleHQtYWxpZ24nLCAncmlnaHQnKTtcclxuXHRcdFx0XHRcdHRkWWVhci5jc3MoJ2JvcmRlcicsICcxcHggc29saWQgYmxhY2snKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29uc3QgY2F0ZWdvcnlUb3RhbCA9XHJcblx0XHRcdFx0XHRjYXRlZ29yeS50b3RhbCA9PSAwXHJcblx0XHRcdFx0XHRcdD8gJy0nXHJcblx0XHRcdFx0XHRcdDogdGhpcy5jdXJyZW5jeVBpcGUudHJhbnNmb3JtKGNhdGVnb3J5LnRvdGFsLCAnZGVmYXVsdCcsICcnLCAnMS4wLTAnKTtcclxuXHRcdFx0XHRjb25zdCBjYXRlZ29yeUxhYmVsVG90YWwgPSAnJm5ic3A7Jm5ic3A7JyArIGNhdGVnb3J5VG90YWwgKyAnJm5ic3A7Jm5ic3A7JztcclxuXHRcdFx0XHRjb25zdCB0ZFRvdGFsID0gJCgnPHRkPicsIHsgaHRtbDogY2F0ZWdvcnlMYWJlbFRvdGFsIH0pLmFwcGVuZFRvKHRyKTtcclxuXHRcdFx0XHR0ZFRvdGFsLmNzcygndGV4dC1hbGlnbicsICdyaWdodCcpO1xyXG5cdFx0XHRcdHRkVG90YWwuY3NzKCdib3JkZXInLCAnMXB4IHNvbGlkIGJsYWNrJyk7XHJcblx0XHRcdFx0dGRUb3RhbC5jc3MoJ2ZvbnQtd2VpZ2h0JywgJ2JvbGQnKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRjb25zdCB0ckZpbmFsID0gJCgnPHRyPicpLmFwcGVuZFRvKHRib2R5KTtcclxuXHRcdFx0Y29uc3QgYmFzZUN1cnJlbmN5ID0gdGhpcy5nZXRUb3RhbExhYmVsKCkgKyAnICcgKyBzdW1tYXJ5LmJhc2VDdXJyZW5jeSArICcmbmJzcDsmbmJzcDsnO1xyXG5cdFx0XHRjb25zdCB0ZEZpbmFsVG90YWxCQyA9ICQoJzx0ZD4nLCB7IGh0bWw6IGJhc2VDdXJyZW5jeSB9KS5hcHBlbmRUbyh0ckZpbmFsKTtcclxuXHRcdFx0dGRGaW5hbFRvdGFsQkMuY3NzKCd0ZXh0LWFsaWduJywgJ3JpZ2h0Jyk7XHJcblx0XHRcdHRkRmluYWxUb3RhbEJDLmNzcygnYm9yZGVyJywgJzFweCBzb2xpZCBibGFjaycpO1xyXG5cdFx0XHR0ZEZpbmFsVG90YWxCQy5jc3MoJ2NvbG9yJywgJ3doaXRlJyk7XHJcblx0XHRcdHRkRmluYWxUb3RhbEJDLmNzcygnYmFja2dyb3VuZC1jb2xvcicsICdncmV5Jyk7XHJcblx0XHRcdGxldCBidWRnZXRUb3RhbCA9IDA7XHJcblx0XHRcdGZvciAoY29uc3QgeWVhciBvZiBzdW1tYXJ5LnllYXJzKSB7XHJcblx0XHRcdFx0Y29uc3QgeWVhclRvdGFsID1cclxuXHRcdFx0XHRcdHllYXIudG90YWwgPT0gMFxyXG5cdFx0XHRcdFx0XHQ/ICctJ1xyXG5cdFx0XHRcdFx0XHQ6IHRoaXMuY3VycmVuY3lQaXBlLnRyYW5zZm9ybSh5ZWFyLnRvdGFsLCAnZGVmYXVsdCcsICcnLCAnMS4wLTAnKTtcclxuXHRcdFx0XHRjb25zdCB5ZWFyTGFiZWxUb3RhbCA9IHllYXJUb3RhbCArICcmbmJzcDsmbmJzcDsnO1xyXG5cdFx0XHRcdGNvbnN0IHRkWWVhciA9ICQoJzx0ZD4nLCB7IGh0bWw6IHllYXJMYWJlbFRvdGFsIH0pLmFwcGVuZFRvKHRyRmluYWwpO1xyXG5cdFx0XHRcdHRkWWVhci5jc3MoJ3RleHQtYWxpZ24nLCAncmlnaHQnKTtcclxuXHRcdFx0XHR0ZFllYXIuY3NzKCdib3JkZXInLCAnMXB4IHNvbGlkIGJsYWNrJyk7XHJcblx0XHRcdFx0dGRZZWFyLmNzcygnY29sb3InLCAnd2hpdGUnKTtcclxuXHRcdFx0XHR0ZFllYXIuY3NzKCdiYWNrZ3JvdW5kLWNvbG9yJywgJ2dyZXknKTtcclxuXHRcdFx0XHRidWRnZXRUb3RhbCArPSB5ZWFyLnRvdGFsO1xyXG5cdFx0XHR9XHJcblx0XHRcdGNvbnN0IHRvdGFsQmFzZUN1cnJlbmN5ID1cclxuXHRcdFx0XHRidWRnZXRUb3RhbCA9PSAwXHJcblx0XHRcdFx0XHQ/ICctJ1xyXG5cdFx0XHRcdFx0OiB0aGlzLmN1cnJlbmN5UGlwZS50cmFuc2Zvcm0oYnVkZ2V0VG90YWwsICdkZWZhdWx0JywgJycsICcxLjAtMCcpO1xyXG5cdFx0XHRjb25zdCB0b3RhbExhYmVsQmFzZUN1cnJlbmN5ID0gJyZuYnNwOyZuYnNwOycgKyB0b3RhbEJhc2VDdXJyZW5jeSArICcmbmJzcDsmbmJzcDsnO1xyXG5cdFx0XHRjb25zdCB0ZEZpbmFsVG90YWwgPSAkKCc8dGQ+JywgeyBodG1sOiB0b3RhbExhYmVsQmFzZUN1cnJlbmN5IH0pLmFwcGVuZFRvKHRyRmluYWwpO1xyXG5cdFx0XHR0ZEZpbmFsVG90YWwuY3NzKCd0ZXh0LWFsaWduJywgJ3JpZ2h0Jyk7XHJcblx0XHRcdHRkRmluYWxUb3RhbC5jc3MoJ2JvcmRlcicsICcxcHggc29saWQgYmxhY2snKTtcclxuXHRcdFx0dGRGaW5hbFRvdGFsLmNzcygnY29sb3InLCAnd2hpdGUnKTtcclxuXHRcdFx0dGRGaW5hbFRvdGFsLmNzcygnYmFja2dyb3VuZC1jb2xvcicsICdncmV5Jyk7XHJcblx0XHRcdHJlc3VtZUNhdGVnb3J5WWVhckNvbnRlbnQuYXBwZW5kKHRhYmxlKTtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIiwiPGRpdiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgaWQ9XCJwbGktdG9rZW4tZGVzdGluYXRpb25cIj5cclxuXHQ8IS0tIDxkaXYgKm5nSWY9XCJkYXRhICE9IHVuZGVmaW5lZCAmJiBkYXRhLmRhdGFEZXN0aW5hdGlvbiAhPSB1bmRlZmluZWRcIj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImRhdGEuZGF0YURlc3RpbmF0aW9uLnRleHQgIT0gdW5kZWZpbmVkXCI+XHJcbiAgICAgICAgICAgIHt7ZGF0YS5kYXRhRGVzdGluYXRpb24udGV4dH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImRhdGEuZGF0YURlc3RpbmF0aW9uLnRpdGxlICE9IHVuZGVmaW5lZFwiPlxyXG4gICAgICAgICAgICB7e2RhdGEuZGF0YURlc3RpbmF0aW9uLnRpdGxlfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YS5kYXRhRGVzdGluYXRpb24ubmFtZSAhPSB1bmRlZmluZWQgfHwgZGF0YS5kYXRhRGVzdGluYXRpb24ubGFzdE5hbWUgIT0gdW5kZWZpbmVkXCI+XHJcbiAgICAgICAgICAgIDxzdHJvbmc+e3tkYXRhLmRhdGFEZXN0aW5hdGlvbi5uYW1lfX0ge3tkYXRhLmRhdGFEZXN0aW5hdGlvbi5sYXN0TmFtZX19PC9zdHJvbmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImRhdGEuZGF0YURlc3RpbmF0aW9uLmNhcmdvICE9IHVuZGVmaW5lZFwiPlxyXG4gICAgICAgICAgICB7e2RhdGEuZGF0YURlc3RpbmF0aW9uLmNhcmdvfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YS5kYXRhRGVzdGluYXRpb24ub2NjdXBhdGlvbiAhPSB1bmRlZmluZWRcIj5cclxuICAgICAgICAgICAge3tkYXRhLmRhdGFEZXN0aW5hdGlvbi5vY2N1cGF0aW9ufX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YS5kYXRhRGVzdGluYXRpb24uY29tcGFueSAhPSB1bmRlZmluZWRcIj5cclxuICAgICAgICAgICAge3tkYXRhLmRhdGFEZXN0aW5hdGlvbi5jb21wYW55fX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YS5kYXRhRGVzdGluYXRpb24uYWRkcmVzcyAhPSB1bmRlZmluZWQgfHwgZGF0YS5kYXRhRGVzdGluYXRpb24uYWRkcmVzc0RldGFpbHMgIT0gdW5kZWZpbmVkIFwiPlxyXG4gICAgICAgICAgICB7e2RhdGEuZGF0YURlc3RpbmF0aW9uLmFkZHJlc3N9fSB7e2RhdGEuZGF0YURlc3RpbmF0aW9uLmFkZHJlc3NEZXRhaWxzfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YS5kYXRhRGVzdGluYXRpb24uY2l0eSAhPSB1bmRlZmluZWQgfHwgZGF0YS5kYXRhRGVzdGluYXRpb24uY291bnRyeSAhPSB1bmRlZmluZWQgXCI+XHJcbiAgICAgICAgICAgIHt7ZGF0YS5kYXRhRGVzdGluYXRpb24uY2l0eX19PHNwYW4gKm5nSWY9XCJkYXRhLmRhdGFEZXN0aW5hdGlvbi5jaXR5ICE9IHVuZGVmaW5lZCAmJiBkYXRhLmRhdGFEZXN0aW5hdGlvbi5jb3VudHJ5ICE9IHVuZGVmaW5lZFwiPiw8L3NwYW4+e3tkYXRhLmRhdGFEZXN0aW5hdGlvbi5jb3VudHJ5fX1cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj4gLS0+XHJcbjwvZGl2PlxyXG48IS0tIENvbXBsZW1lbnRhcnkgZ3JlZXRpbmctLT5cclxuPGRpdiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgaWQ9XCJwbGktdG9rZW4tY29tcGxlbWVudGFyeS1ncmVldGluZ1wiPlxyXG5cdDwhLS0gPGRpdlxyXG5cdFx0Km5nSWY9XCJcclxuXHRcdFx0ZGF0YSAhPSB1bmRlZmluZWQgJiZcclxuXHRcdFx0ZGF0YS5kYXRhRGVzdGluYXRpb24gIT0gdW5kZWZpbmVkICYmXHJcblx0XHRcdGRhdGEuZGF0YURlc3RpbmF0aW9uLnRhcmdldElkID09IDIgJiZcclxuXHRcdFx0ZGF0YS5kYXRhRGVzdGluYXRpb24uZ3JlZXRpbmcgIT0gdW5kZWZpbmVkXHJcblx0XHRcIlxyXG5cdD5cclxuXHRcdHt7IGRhdGEuZGF0YURlc3RpbmF0aW9uLmdyZWV0aW5nXHJcblx0XHR9fTxzcGFuICpuZ0lmPVwiZGF0YS5kYXRhRGVzdGluYXRpb24udGl0bGUgIT0gdW5kZWZpbmVkXCJcclxuXHRcdFx0PiZuYnNwO3t7IGRhdGEuZGF0YURlc3RpbmF0aW9uLnRpdGxlIH19PC9zcGFuXHJcblx0XHQ+PHNwYW4gKm5nSWY9XCJkYXRhLmRhdGFEZXN0aW5hdGlvbi5sYXN0TmFtZSAhPSB1bmRlZmluZWRcIlxyXG5cdFx0XHQ+Jm5ic3A7e3sgZGF0YS5kYXRhRGVzdGluYXRpb24ubGFzdE5hbWUgfX08L3NwYW5cclxuXHRcdD46XHJcblx0PC9kaXY+LS0+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSBQcmltYXJ5IGJ1ZGdldCB0b3RhbCBzdW1tYXJ5ICR7cHJlc3VwdWVzdG9fMjg4X3Jlc3VtZUNhdGVnb3J5WWVhcn0gLS0+XHJcbjxkaXYgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIGlkPVwicGxpLXRva2VuLXByaW5jaXBhbC1idWRnZXQtdG90YWwtc3VtbWFyeVwiPlxyXG5cdDwhLS0gPGRpdj5cclxuXHRcdDx0YWJsZVxyXG5cdFx0XHQqbmdJZj1cIlxyXG5cdFx0XHRcdGJ1ZGdldER0b1ByaW1hcnkgIT09IG51bGwgJiZcclxuXHRcdFx0XHRidWRnZXREdG9QcmltYXJ5LmJ1ZGdldCAmJlxyXG5cdFx0XHRcdGJ1ZGdldER0b1ByaW1hcnkuYnVkZ2V0LnN1bW1hcnlcclxuXHRcdFx0XCJcclxuXHRcdFx0c3R5bGU9XCJib3JkZXItc3BhY2luZzogMnB4O2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XCJcclxuXHRcdD5cclxuXHRcdFx0PHRoZWFkPlxyXG5cdFx0XHRcdDx0ciBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkO1wiPlxyXG5cdFx0XHRcdFx0PHRkXHJcblx0XHRcdFx0XHRcdHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO2JvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBjb2xvcjogd2hpdGU7YmFja2dyb3VuZC1jb2xvcjogZ3JleTtcIlxyXG5cdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRSdWJyb1xyXG5cdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHRcdDx0ZFxyXG5cdFx0XHRcdFx0XHQqbmdGb3I9XCJsZXQgeWVhciBvZiBidWRnZXREdG9QcmltYXJ5LmJ1ZGdldC5zdW1tYXJ5LnllYXJzXCJcclxuXHRcdFx0XHRcdFx0c3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7IGNvbG9yOiB3aGl0ZTtiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OyB3aWR0aDo4MHB4O1wiXHJcblx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdHt7IHllYXIueWVhck51bWJlciB9fVxyXG5cdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHRcdDx0ZFxyXG5cdFx0XHRcdFx0XHRzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtib3JkZXI6IDFweCBzb2xpZCBibGFjazsgY29sb3I6IHdoaXRlO2JhY2tncm91bmQtY29sb3I6IGdyZXk7IHdpZHRoOiAxMTBweDtcIlxyXG5cdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRUb3RhbCAoe3sgYnVkZ2V0RHRvUHJpbWFyeS5idWRnZXQuc3VtbWFyeS5iYXNlQ3VycmVuY3kgfX0pXHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdDwvdHI+XHJcblx0XHRcdDwvdGhlYWQ+XHJcblx0XHRcdDx0Ym9keT5cclxuXHRcdFx0XHQ8dHJcclxuXHRcdFx0XHRcdCpuZ0Zvcj1cIlxyXG5cdFx0XHRcdFx0XHRsZXQgY2F0ZWdvcnkgb2YgYnVkZ2V0RHRvUHJpbWFyeS5idWRnZXQuc3VtbWFyeS5jYXRlZ29yaWVzO1xyXG5cdFx0XHRcdFx0XHRsZXQgaUNhdCA9IGluZGV4XHJcblx0XHRcdFx0XHRcIlxyXG5cdFx0XHRcdD5cclxuXHRcdFx0XHRcdDx0ZCBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkO3RleHQtYWxpZ246IGxlZnQ7Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7XCI+XHJcblx0XHRcdFx0XHRcdCZuYnNwOyZuYnNwO3t7XHJcblx0XHRcdFx0XHRcdFx0dHJhbnNsYXRlQ2F0ZWdvcnkoY2F0ZWdvcnkuY2F0ZWdvcnkpXHJcblx0XHRcdFx0XHRcdH19Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdFx0PHRkXHJcblx0XHRcdFx0XHRcdCpuZ0Zvcj1cImxldCB5ZWFyIG9mIGNhdGVnb3J5LnllYXJzXCJcclxuXHRcdFx0XHRcdFx0c3R5bGU9XCJ0ZXh0LWFsaWduOiByaWdodDtib3JkZXI6IDFweCBzb2xpZCBibGFjazsgXCJcclxuXHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0Jm5ic3A7Jm5ic3A7e3tcclxuXHRcdFx0XHRcdFx0XHR5ZWFyLnRvdGFsID09IDAgPyAnLScgOiAoeWVhci50b3RhbCB8IGN1cnJlbmN5OiAnZGVmYXVsdCc6Jyc6JzEuMC0wJylcclxuXHRcdFx0XHRcdFx0fX0mbmJzcDsmbmJzcDtcclxuXHRcdFx0XHRcdDwvdGQ+XHJcblx0XHRcdFx0XHQ8dGQgc3R5bGU9XCJmb250LXdlaWdodDogYm9sZDsgdGV4dC1hbGlnbjogcmlnaHQ7Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7XCI+XHJcblx0XHRcdFx0XHRcdCZuYnNwOyZuYnNwO3t7XHJcblx0XHRcdFx0XHRcdFx0Y2F0ZWdvcnkudG90YWwgPT0gMFxyXG5cdFx0XHRcdFx0XHRcdFx0PyAnLSdcclxuXHRcdFx0XHRcdFx0XHRcdDogKGNhdGVnb3J5LnRvdGFsIHwgY3VycmVuY3k6ICdkZWZhdWx0JzonJzonMS4wLTAnKVxyXG5cdFx0XHRcdFx0XHR9fSZuYnNwOyZuYnNwO1xyXG5cdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHQ8L3RyPlxyXG5cdFx0XHRcdDx0ciBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkO1wiPlxyXG5cdFx0XHRcdFx0PHRkXHJcblx0XHRcdFx0XHRcdHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHQ7Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7IGNvbG9yOiB3aGl0ZTtiYWNrZ3JvdW5kLWNvbG9yOiBncmV5O1wiXHJcblx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFRvdGFsICh7eyBidWRnZXREdG9QcmltYXJ5LmJ1ZGdldC5zdW1tYXJ5LmJhc2VDdXJyZW5jeSB9fSkmbmJzcDsmbmJzcDtcclxuXHRcdFx0XHRcdDwvdGQ+XHJcblx0XHRcdFx0XHQ8dGRcclxuXHRcdFx0XHRcdFx0Km5nRm9yPVwibGV0IHllYXIgb2YgYnVkZ2V0RHRvUHJpbWFyeS5idWRnZXQuc3VtbWFyeS55ZWFyc1wiXHJcblx0XHRcdFx0XHRcdHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHQ7Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7IGNvbG9yOiB3aGl0ZTtiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OyBcIlxyXG5cdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHR7e1xyXG5cdFx0XHRcdFx0XHRcdHllYXIudG90YWwgPT0gMCA/ICctJyA6ICh5ZWFyLnRvdGFsIHwgY3VycmVuY3k6ICdkZWZhdWx0JzonJzonMS4wLTAnKVxyXG5cdFx0XHRcdFx0XHR9fSZuYnNwOyZuYnNwO1xyXG5cdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHRcdDx0ZFxyXG5cdFx0XHRcdFx0XHRzdHlsZT1cInRleHQtYWxpZ246IHJpZ2h0O2JvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBjb2xvcjogd2hpdGU7YmFja2dyb3VuZC1jb2xvcjogZ3JleTtcIlxyXG5cdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHR7e1xyXG5cdFx0XHRcdFx0XHRcdGJ1ZGdldER0b1ByaW1hcnkuYnVkZ2V0LnN1bW1hcnkuYnVkZ2V0VG90YWwgPT0gMFxyXG5cdFx0XHRcdFx0XHRcdFx0PyAnLSdcclxuXHRcdFx0XHRcdFx0XHRcdDogKGJ1ZGdldER0b1ByaW1hcnkuYnVkZ2V0LnN1bW1hcnkuYnVkZ2V0VG90YWxcclxuXHRcdFx0XHRcdFx0XHRcdCAgfCBjdXJyZW5jeTogJ2RlZmF1bHQnOicnOicxLjAtMCcpXHJcblx0XHRcdFx0XHRcdH19Jm5ic3A7Jm5ic3A7XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdDwvdHI+XHJcblx0XHRcdDwvdGJvZHk+XHJcblx0XHQ8L3RhYmxlPlxyXG5cdDwvZGl2PiAtLT5cclxuPC9kaXY+XHJcbjwhLS0gU2VjdW5kYXJ5IGJ1ZGdldCB0b3RhbCBzdW1tYXJ5ICR7cHJlc3VwdWVzdG9fMjg4X3Jlc3VtZUNhdGVnb3J5WWVhcn0gLS0+XHJcbjxkaXYgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIGlkPVwicGxpLXRva2VuLXNlY3VuZGFyeS1idWRnZXQtdG90YWwtc3VtbWFyeVwiPlxyXG5cdDxkaXY+XHJcblx0XHQ8dGFibGVcclxuXHRcdFx0Km5nSWY9XCJcclxuXHRcdFx0XHRidWRnZXREdG9TZWN1bmRhcnkgIT09IG51bGwgJiZcclxuXHRcdFx0XHRidWRnZXREdG9TZWN1bmRhcnkuYnVkZ2V0ICYmXHJcblx0XHRcdFx0YnVkZ2V0RHRvU2VjdW5kYXJ5LmJ1ZGdldC5zdW1tYXJ5XHJcblx0XHRcdFwiXHJcblx0XHRcdHN0eWxlPVwiYm9yZGVyLXNwYWNpbmc6IDJweDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgd2lkdGg6IDEwMCU7XCJcclxuXHRcdD5cclxuXHRcdFx0PHRoZWFkPlxyXG5cdFx0XHRcdDx0ciBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkO1wiPlxyXG5cdFx0XHRcdFx0PHRkXHJcblx0XHRcdFx0XHRcdHN0eWxlPVwiXHJcblx0XHRcdFx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdFx0XHRcdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrO1xyXG5cdFx0XHRcdFx0XHRcdGNvbG9yOiB3aGl0ZTtcclxuXHRcdFx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBncmV5O1xyXG5cdFx0XHRcdFx0XHRcIlxyXG5cdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRSdWJyb1xyXG5cdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHRcdDx0ZFxyXG5cdFx0XHRcdFx0XHQqbmdGb3I9XCJsZXQgeWVhciBvZiBidWRnZXREdG9TZWN1bmRhcnkuYnVkZ2V0LnN1bW1hcnkueWVhcnNcIlxyXG5cdFx0XHRcdFx0XHRzdHlsZT1cIlxyXG5cdFx0XHRcdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdFx0XHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCBibGFjaztcclxuXHRcdFx0XHRcdFx0XHRjb2xvcjogd2hpdGU7XHJcblx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogZ3JleTtcclxuXHRcdFx0XHRcdFx0XHR3aWR0aDogODBweDtcclxuXHRcdFx0XHRcdFx0XCJcclxuXHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0e3sgeWVhci55ZWFyTnVtYmVyIH19XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdFx0PHRkXHJcblx0XHRcdFx0XHRcdHN0eWxlPVwiXHJcblx0XHRcdFx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdFx0XHRcdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrO1xyXG5cdFx0XHRcdFx0XHRcdGNvbG9yOiB3aGl0ZTtcclxuXHRcdFx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBncmV5O1xyXG5cdFx0XHRcdFx0XHRcdHdpZHRoOiAxMTBweDtcclxuXHRcdFx0XHRcdFx0XCJcclxuXHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0VG90YWwgKHt7IGJ1ZGdldER0b1NlY3VuZGFyeS5idWRnZXQuc3VtbWFyeS5iYXNlQ3VycmVuY3kgfX0pXHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdDwvdHI+XHJcblx0XHRcdDwvdGhlYWQ+XHJcblx0XHRcdDx0Ym9keT5cclxuXHRcdFx0XHQ8dHJcclxuXHRcdFx0XHRcdCpuZ0Zvcj1cIlxyXG5cdFx0XHRcdFx0XHRsZXQgY2F0ZWdvcnkgb2YgYnVkZ2V0RHRvU2VjdW5kYXJ5LmJ1ZGdldC5zdW1tYXJ5LmNhdGVnb3JpZXM7XHJcblx0XHRcdFx0XHRcdGxldCBpQ2F0ID0gaW5kZXhcclxuXHRcdFx0XHRcdFwiXHJcblx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0PHRkIHN0eWxlPVwiZm9udC13ZWlnaHQ6IGJvbGQ7IHRleHQtYWxpZ246IGxlZnQ7IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrO1wiPlxyXG5cdFx0XHRcdFx0XHQmbmJzcDsmbmJzcDt7e1xyXG5cdFx0XHRcdFx0XHRcdHRyYW5zbGF0ZUNhdGVnb3J5KGNhdGVnb3J5LmNhdGVnb3J5KVxyXG5cdFx0XHRcdFx0XHR9fSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1xyXG5cdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHRcdDx0ZFxyXG5cdFx0XHRcdFx0XHQqbmdGb3I9XCJsZXQgeWVhciBvZiBjYXRlZ29yeS55ZWFyc1wiXHJcblx0XHRcdFx0XHRcdHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHQ7IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrO1wiXHJcblx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdCZuYnNwOyZuYnNwO3t7XHJcblx0XHRcdFx0XHRcdFx0eWVhci50b3RhbCA9PSAwID8gJy0nIDogKHllYXIudG90YWwgfCBjdXJyZW5jeTogJ2RlZmF1bHQnOicnOicxLjAtMCcpXHJcblx0XHRcdFx0XHRcdH19Jm5ic3A7Jm5ic3A7XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdFx0PHRkIHN0eWxlPVwiZm9udC13ZWlnaHQ6IGJvbGQ7IHRleHQtYWxpZ246IHJpZ2h0OyBib3JkZXI6IDFweCBzb2xpZCBibGFjaztcIj5cclxuXHRcdFx0XHRcdFx0Jm5ic3A7Jm5ic3A7e3tcclxuXHRcdFx0XHRcdFx0XHRjYXRlZ29yeS50b3RhbCA9PSAwXHJcblx0XHRcdFx0XHRcdFx0XHQ/ICctJ1xyXG5cdFx0XHRcdFx0XHRcdFx0OiAoY2F0ZWdvcnkudG90YWwgfCBjdXJyZW5jeTogJ2RlZmF1bHQnOicnOicxLjAtMCcpXHJcblx0XHRcdFx0XHRcdH19Jm5ic3A7Jm5ic3A7XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdDwvdHI+XHJcblx0XHRcdFx0PHRyIHN0eWxlPVwiZm9udC13ZWlnaHQ6IGJvbGQ7XCI+XHJcblx0XHRcdFx0XHQ8dGRcclxuXHRcdFx0XHRcdFx0c3R5bGU9XCJcclxuXHRcdFx0XHRcdFx0XHR0ZXh0LWFsaWduOiByaWdodDtcclxuXHRcdFx0XHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCBibGFjaztcclxuXHRcdFx0XHRcdFx0XHRjb2xvcjogd2hpdGU7XHJcblx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogZ3JleTtcclxuXHRcdFx0XHRcdFx0XCJcclxuXHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0VG90YWwgKHt7IGJ1ZGdldER0b1NlY3VuZGFyeS5idWRnZXQuc3VtbWFyeS5iYXNlQ3VycmVuY3kgfX0pJm5ic3A7Jm5ic3A7XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdFx0PHRkXHJcblx0XHRcdFx0XHRcdCpuZ0Zvcj1cImxldCB5ZWFyIG9mIGJ1ZGdldER0b1NlY3VuZGFyeS5idWRnZXQuc3VtbWFyeS55ZWFyc1wiXHJcblx0XHRcdFx0XHRcdHN0eWxlPVwiXHJcblx0XHRcdFx0XHRcdFx0dGV4dC1hbGlnbjogcmlnaHQ7XHJcblx0XHRcdFx0XHRcdFx0Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7XHJcblx0XHRcdFx0XHRcdFx0Y29sb3I6IHdoaXRlO1xyXG5cdFx0XHRcdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IGdyZXk7XHJcblx0XHRcdFx0XHRcdFwiXHJcblx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdHt7XHJcblx0XHRcdFx0XHRcdFx0eWVhci50b3RhbCA9PSAwID8gJy0nIDogKHllYXIudG90YWwgfCBjdXJyZW5jeTogJ2RlZmF1bHQnOicnOicxLjAtMCcpXHJcblx0XHRcdFx0XHRcdH19Jm5ic3A7Jm5ic3A7XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdFx0PHRkXHJcblx0XHRcdFx0XHRcdHN0eWxlPVwiXHJcblx0XHRcdFx0XHRcdFx0dGV4dC1hbGlnbjogcmlnaHQ7XHJcblx0XHRcdFx0XHRcdFx0Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7XHJcblx0XHRcdFx0XHRcdFx0Y29sb3I6IHdoaXRlO1xyXG5cdFx0XHRcdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IGdyZXk7XHJcblx0XHRcdFx0XHRcdFwiXHJcblx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdHt7XHJcblx0XHRcdFx0XHRcdFx0YnVkZ2V0RHRvU2VjdW5kYXJ5LmJ1ZGdldC5zdW1tYXJ5LmJ1ZGdldFRvdGFsID09IDBcclxuXHRcdFx0XHRcdFx0XHRcdD8gJy0nXHJcblx0XHRcdFx0XHRcdFx0XHQ6IChidWRnZXREdG9TZWN1bmRhcnkuYnVkZ2V0LnN1bW1hcnkuYnVkZ2V0VG90YWxcclxuXHRcdFx0XHRcdFx0XHRcdCAgfCBjdXJyZW5jeTogJ2RlZmF1bHQnOicnOicxLjAtMCcpXHJcblx0XHRcdFx0XHRcdH19Jm5ic3A7Jm5ic3A7XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdDwvdHI+XHJcblx0XHRcdDwvdGJvZHk+XHJcblx0XHQ8L3RhYmxlPlxyXG5cdDwvZGl2PlxyXG48L2Rpdj5cclxuIl19