ctt-puro 0.18.12 → 0.19.0

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.
@@ -546,7 +546,7 @@ export class MapperService {
546
546
  buttons: Utils.mapButtons(this.siteId(), item?.links),
547
547
  icon: '',
548
548
  img: this.getImageResponsive(hotelWithImg
549
- .find((itemImg) => item.id === itemImg.id)
549
+ .find((itemImg) => item?.id === itemImg?.id)
550
550
  ?.multimedia?.find((img) => img.cover)),
551
551
  };
552
552
  });
@@ -987,4 +987,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
987
987
  providedIn: 'root',
988
988
  }]
989
989
  }] });
990
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wdXJvL3NyYy9saWIvc2VydmljZXMvbWFwcGVyL21hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBMEU1QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBS25FLE1BQU0sT0FBTyxhQUFhO0lBSDFCO1FBSXFCLFlBQU8sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM1QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBSzFELGtCQUFhLEdBQUcsTUFBTSxDQUFxQyxTQUFTLENBQUMsQ0FBQztRQUV0RSxXQUFNLEdBQW1CLFFBQVEsQ0FDN0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQzlDLENBQUM7S0FreENMO0lBMXhDRyxJQUFJLHNCQUFzQjtRQUN0QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBUUQsa0JBQWtCLENBQ2QsS0FBZ0M7UUFFaEMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLE9BQU8sU0FBUyxDQUFDO1NBQ3BCO1FBQ0QsSUFBSSxhQUFhLENBQUM7UUFDbEIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQ3BDLGFBQWEs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QUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBpbmplY3QsIEluamVjdGFibGUsIFNpZ25hbCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgUHVybzQwNEksXHJcbiAgICBQdXJvQWR2YW50YWdlc0ksXHJcbiAgICBQdXJvQWR2YW50YWdlc0l0ZW0sXHJcbiAgICBQdXJvQWR2YW50YWdlc1NtYWxsSSxcclxuICAgIFB1cm9BZHZhbnRhZ2VzU21hbGxJdGVtLFxyXG4gICAgUHVyb0Jhbm5lcjRDb2xJLFxyXG4gICAgUHVyb0JyZWFkY3J1bWJJLFxyXG4gICAgUHVyb0NvbnRhY3RGb3JtSSxcclxuICAgIFB1cm9FbmdpbmVJLFxyXG4gICAgUHVyb0Zvb3RlckJlYWNoc0ksXHJcbiAgICBQdXJvRm9vdGVyQmVhY2hzSXRlbSxcclxuICAgIFB1cm9Gb290ZXJIb3RlbHNJLFxyXG4gICAgUHVyb0Zvb3RlckhvdGVsc0l0ZW0sXHJcbiAgICBQdXJvRm9vdGVySW5mb0ksXHJcbiAgICBQdXJvRm9vdGVySW5mb1NvY2lhbE1lZGlhSW5mbyxcclxuICAgIFB1cm9Gb290ZXJMaW5rc0ksXHJcbiAgICBQdXJvR2FsbGVyeUZpbHRlcixcclxuICAgIFB1cm9HYWxsZXJ5SSxcclxuICAgIFB1cm9HYWxsZXJ5SXRlbSxcclxuICAgIFB1cm9HcmlkM0NvbEZpbHRlckksXHJcbiAgICBQdXJvR3JpZDNDb2xGaWx0ZXJJdGVtLFxyXG4gICAgUHVyb0dyaWQzY29sU2xpZGVySSxcclxuICAgIFB1cm9HcmlkM2NvbFNsaWRlckl0ZW0sXHJcbiAgICBQdXJvR3JpZDRpdGVtc0ksXHJcbiAgICBQdXJvR3JpZDRpdGVtc0l0ZW0sXHJcbiAgICBQdXJvR3JpZDVpdGVtc0ksXHJcbiAgICBQdXJvR3JpZDVpdGVtc0l0ZW0sXHJcbiAgICBQdXJvR3JpZDZpdGVtc0ksXHJcbiAgICBQdXJvSGVhZGVySSxcclxuICAgIFB1cm9JbmZvQmFubmVySSxcclxuICAgIFB1cm9JbmZvQmFubmVySXRlbSxcclxuICAgIFB1cm9JbmZvQmlnSSxcclxuICAgIFB1cm9JbmZvR2FsbGVyeUksXHJcbiAgICBQdXJvSW5mb0ludHJvSSxcclxuICAgIFB1cm9JbmZvTGlzdEksXHJcbiAgICBQdXJvSW5mb1NlcnZpY2VzSSxcclxuICAgIFB1cm9JbmZvU2VydmljZXNJdGVtLFxyXG4gICAgUHVyb0luZm9TbGlkZXJJLFxyXG4gICAgUHVyb0luZm9TbGlkZXJJdGVtLFxyXG4gICAgUHVyb0luZm9WaWRlb0ksXHJcbiAgICBQdXJvTGFuZ3VhZ2VzTW9kYWxJLFxyXG4gICAgUHVyb0xhbmd1YWdlc01vZGFsSXRlbSxcclxuICAgIFB1cm9MaXN0R2VuZXJhbEksXHJcbiAgICBQdXJvTGlzdEdlbmVyYWxJdGVtLFxyXG4gICAgUHVyb01hcExpc3RJLFxyXG4gICAgUHVyb01hcExpc3RJdGVtLFxyXG4gICAgUHVyb09mZmVyLFxyXG4gICAgUHVyb09mZmVyQmFubmVySSxcclxuICAgIFB1cm9QaG90b1NsaWRlckksXHJcbiAgICBQdXJvU2NoZWR1bGVJLFxyXG4gICAgUHVyb1NjaGVkdWxlSXRlbSxcclxuICAgIFB1cm9TbGlkZXIxY29sSSxcclxuICAgIFB1cm9TbGlkZXIxY29sSXRlbSxcclxuICAgIFB1cm9TbGlkZXIyY29sSSxcclxuICAgIFB1cm9TbGlkZXIzY29sSSxcclxuICAgIFB1cm9TbGlkZXIzQ29sSXRlbSxcclxuICAgIFB1cm9TbGlkZXIzQ29sUm91bmRJLFxyXG4gICAgUHVyb1NsaWRlcjNDb2xSb3VuZEl0ZW0sXHJcbiAgICBQdXJvVGhhbmtzSSxcclxuICAgIFB1cm9Ub3BTbGlkZXJJLFxyXG4gICAgUHVyb1dlYm1hcEksXHJcbiAgICBQdXJvWmlnWmFnMmNvbEksXHJcbn0gZnJvbSAnLi4vLi4vY29tcG9uZW50cyc7XHJcbmltcG9ydCB7IFB1cm9JbmZvMkNvbEkgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3B1cm8taW5mbzJjb2wvcHVyby1pbmZvMmNvbC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge1xyXG4gICAgQm9keUNvbXBvbmVudCxcclxuICAgIFB1cm9CdXR0b25JLFxyXG4gICAgUHVyb0ltYWdlSSxcclxuICAgIFB1cm9JbnB1dEksXHJcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IERyb3Bkb3duT3B0aW9uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wdXJvLWRyb3Bkb3duLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbHMnO1xyXG5pbXBvcnQgeyBTY3JlZW5TaXplclNlcnZpY2UgfSBmcm9tICcuLi9zY3JlZW4tc2l6ZXInO1xyXG5pbXBvcnQgeyBTSVRFX0NPTkZJR19TRVJWSUNFX1RPS0VOIH0gZnJvbSAnLi9tYXBwZXIuc2VydmljZS50b2tlbic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXBwZXJTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2l0ZVN2YyA9IGluamVjdChTSVRFX0NPTkZJR19TRVJWSUNFX1RPS0VOKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2NyZWVuU2l6ZXIgPSBpbmplY3QoU2NyZWVuU2l6ZXJTZXJ2aWNlKTtcclxuICAgIGdldCBpc01pbkZ1bGxUYWJsZXRJbnN0YW50KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNjcmVlblNpemVyLm1pbkZ1bGxUYWJsZXRJbnN0YW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaGVhZGVyQnV0dG9ucyA9IHNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG5cclxuICAgIHNpdGVJZDogU2lnbmFsPG51bWJlcj4gPSBjb21wdXRlZChcclxuICAgICAgICAoKSA9PiB0aGlzLnNpdGVTdmMud2ViQ29uZmlnSW5zdGFudD8uc2l0ZUlEXHJcbiAgICApO1xyXG5cclxuICAgIGdldEltYWdlUmVzcG9uc2l2ZShcclxuICAgICAgICBpbWFnZTogSW1hZ2VSZXNwb25zZSB8IHVuZGVmaW5lZFxyXG4gICAgKTogUHVyb0ltYWdlSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgaWYgKCFpbWFnZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc2VsZWN0ZWRJbWFnZTtcclxuICAgICAgICBpZiAodGhpcy5zY3JlZW5TaXplci5pc01vYmlsZUluc3RhbnQoKSkge1xyXG4gICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/LlszNzVdPy53ZWJwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5pc1NtYWxsVGFibGV0SW5zdGFudCgpKSB7XHJcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzU0MF0/LndlYnA7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzTWVkaXVtVGFibGV0SW5zdGFudCgpKSB7XHJcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzc2OF0/LndlYnA7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzRnVsbFRhYmxldEluc3RhbnQoKSkge1xyXG4gICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/LlsxMDI0XT8ud2VicDtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuU2l6ZXIubWluRnVsbERlc2t0b3AoKSkge1xyXG4gICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnBhdGg/LndlYnA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bMTI4MF0/LndlYnA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHNyYzogYCR7dGhpcy5zaXRlU3ZjLmNkbkltYWdlc0luc3RhbnR9JHtzZWxlY3RlZEltYWdlfWAsXHJcbiAgICAgICAgICAgIGFsdDogaW1hZ2U/LmFsdCxcclxuICAgICAgICB9IGFzIFB1cm9JbWFnZUk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXHJcbiAgICAgICAgaW1hZ2VzOiBJbWFnZVJlc3BvbnNlW10gfCB1bmRlZmluZWRcclxuICAgICk6IFB1cm9JbWFnZUlbXSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIGltYWdlcz8uc29tZSgoaW1nKSA9PiBpbWcgIT09IHVuZGVmaW5lZCAmJiBpbWcgIT09IG51bGwpXHJcbiAgICAgICAgICAgID8gaW1hZ2VzPy5tYXAoKGltZykgPT4gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSEpXHJcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2VuZXJhdGVBZ2VzT3B0aW9ucyhtYXhMZW5ndGg6IG51bWJlciwgbWluTGVuZ3RoID0gMCk6IGFueVtdIHtcclxuICAgICAgICBjb25zdCBvcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSBtaW5MZW5ndGg7IGkgPD0gbWF4TGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgb3B0aW9ucy5wdXNoKHsgY29kZTogaSwgbmFtZTogaSA8IDEwID8gYDAke2l9YCA6IGAke2l9YCB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwQ29tcG9uZW50czxUPihcclxuICAgICAgICBib2R5OiBhbnlbXSxcclxuICAgICAgICBhZGRvbnM/OiBDb21wb25lbnRzQWRkb25zXHJcbiAgICApOiBCb2R5Q29tcG9uZW50PFQ+W10ge1xyXG4gICAgICAgIGNvbnN0IGJvZHlNYXBwZWQ6IEJvZHlDb21wb25lbnQ8VD5bXSA9IGJvZHkubWFwKChjb21wb25lbnQpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50TWFwcGVkOiBCb2R5Q29tcG9uZW50PFQ+ID0ge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogY29tcG9uZW50Py5uYW1lPy50b0xvd2VyQ2FzZSgpLFxyXG4gICAgICAgICAgICAgICAgb3JkZXI6IGNvbXBvbmVudD8ub3JkZXIsXHJcbiAgICAgICAgICAgICAgICBwcm9wczogY29tcG9uZW50Py5wcm9wcyxcclxuICAgICAgICAgICAgfSBhcyBCb2R5Q29tcG9uZW50PFQ+O1xyXG5cclxuICAgICAgICAgICAgaWYgKGNvbXBvbmVudCAmJiBjb21wb25lbnQ/Lm5hbWUgJiYgY29tcG9uZW50Py5wcm9wcykge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dhbGxlcnknOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHYWxsZXJ5KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWQzY29sZmlsdGVyJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDNjb2xGaWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2JpZyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9CaWcoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyMWNvbCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNsaWRlcjFjb2woXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyYmVhY2hzJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRm9vdGVyQmVhY2hzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3RlcmluZm8nOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJJbmZvKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3RlcmhvdGVscyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckhvdGVscyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJsaW5rcyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckxpbmtzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3dlYm1hcCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFdlYm1hcChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3BzbGlkZXInOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUb3BTbGlkZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyQnV0dG9ucygpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYWR2YW50YWdlc3NtYWxsJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQWR2YW50YWdlc1NtYWxsKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9saXN0JzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0xpc3QoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyM2NvbHJvdW5kJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM0NvbFJvdW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbnRybyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9JbnRybyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIzY29sJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM2NvbChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIyY29sJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyMmNvbChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkNWl0ZW1zJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDVpdGVtcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkNml0ZW1zJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDZpdGVtcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvdmlkZW9yaWdodCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm92aWRlb2xlZnQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvVmlkZW8oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdG9mZmVycyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RuZXdzJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdHJvb21zJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdHJlc3RhdXJhbnRzJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTGlzdEdlbmVyYWwoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnNDA0JzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwNDA0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RoYW5rcyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRoYW5rcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb250YWN0Zm9ybSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENvbnRhY3RGb3JtKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRvbnM/LmNvbnN1bHRUeXBlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb2ZmZXJzc2xpZGVyJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJzU2xpZGVyKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9zZXJ2aWNlcyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9TZXJ2aWNlcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvYmFubmVyJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0Jhbm5lcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzY2hlZHVsZSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNjaGVkdWxlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2FkdmFudGFnZXMnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBZHZhbnRhZ2VzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWQ0aXRlbXMnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHcmlkNGl0ZW1zKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ppZ3phZzJjb2wnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBaaWd6YWcyY29sKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWQzY29sc2xpZGVyJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDNjb2xTbGlkZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3NsaWRlcmxlZnQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvc2xpZGVycmlnaHQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvU2xpZGVyKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luZm9zbGlkZXJsZWZ0J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Bob3Rvc2xpZGVybGVmdCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Bob3Rvc2xpZGVycmlnaHQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBQaG90b1NsaWRlcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwaG90b3NsaWRlcnJpZ2h0J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jhbm5lcjRjb2wnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCYW5uZXI0Q29sKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9nYWxsZXJ5JzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0dhbGxlcnkoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzJjb2wnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvMkNvbChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtYXBsaXN0JzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTWFwTGlzdChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsYW5ndWFnZXNtb2RhbCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcExhbmd1YWdlc01vZGFsKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyYmFubmVyJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJCYW5uZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoY29tcG9uZW50TWFwcGVkLm5hbWUsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gY29tcG9uZW50TWFwcGVkO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gYm9keU1hcHBlZDtcclxuICAgIH1cclxuXHJcbiAgICBtYXBHcmlkM2NvbFNsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0dyaWQzY29sU2xpZGVySSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgeyBob3RlbHMgfSA9IHByb3BzO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGl0ZW1zOiBob3RlbHM/Lm1hcChcclxuICAgICAgICAgICAgICAgIChob3RlbDogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3RlbD8uYnV0dG9uc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICApWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaG90ZWwuaG90ZWxUcmFuc2xhdGlvbnM/LlswXT8ucHJldGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBob3RlbC5ob3RlbFRyYW5zbGF0aW9ucz8uWzBdPy50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdGVsLm11bHRpbWVkaWE/LmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT4gaW1nLmNvdmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0dyaWQzY29sU2xpZGVySXRlbVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIH0gYXMgUHVyb0dyaWQzY29sU2xpZGVySTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBHYWxsZXJ5KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR2FsbGVyeUkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMsIGZpbHRlcnMgfSA9IHByb3BzO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGZpbHRlcjoge1xyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRleHRzPy5uYW1lRmlsdGVyLFxyXG4gICAgICAgICAgICAgICAgb3B0aW9uczogZmlsdGVycz8ubWFwKFxyXG4gICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBpbmRleCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbDogaXRlbS5hbGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb29tOiBpdGVtLnJvb20sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb29tczogaXRlbS5yb29tcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0dhbGxlcnlGaWx0ZXJcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGUsXHJcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcclxuICAgICAgICAgICAgaXRlbXM6IGZpbHRlcnNcclxuICAgICAgICAgICAgICAgIC5yZWR1Y2UoXHJcbiAgICAgICAgICAgICAgICAgICAgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhY2M6IHsgbXVsdGltZWRpYTogYW55W107IGZpbHRlckluZGV4OiBudW1iZXIgfVtdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVySW5kZXg6IG51bWJlclxyXG4gICAgICAgICAgICAgICAgICAgICkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyLm11bHRpbWVkaWEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG11bHRpbWVkaWFXaXRoRmlsdGVyID0gZmlsdGVyLm11bHRpbWVkaWEubWFwKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZmlsdGVySW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFjYyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE6IG11bHRpbWVkaWFXaXRoRmlsdGVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJJbmRleCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgW11cclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIC5mbGF0TWFwKCh7IG11bHRpbWVkaWEgfTogYW55KSA9PiBtdWx0aW1lZGlhKVxyXG4gICAgICAgICAgICAgICAgLm1hcChcclxuICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBpbWc/LmZpbHRlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0dhbGxlcnlJdGVtXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgIH0gYXMgUHVyb0dhbGxlcnlJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcE1hcExpc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9NYXBMaXN0SSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgbXVsdGltZWRpYSwgaG90ZWxzIH0gPSBwcm9wcztcclxuICAgICAgICBsZXQgaXRlbXM6IFB1cm9NYXBMaXN0SXRlbVtdID0gW107XHJcbiAgICAgICAgaWYgKG11bHRpbWVkaWEpIHtcclxuICAgICAgICAgICAgaXRlbXMgPSBtdWx0aW1lZGlhPy5pbWFnZXM/Lm1hcChcclxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWc/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwSW1hZ2U6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvTWFwTGlzdEl0ZW1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGhvdGVscykge1xyXG4gICAgICAgICAgICBpdGVtcyA9IGhvdGVscz8ubWFwKFxyXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT4gaW1nPy5jb3ZlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXBJbWFnZTogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9NYXBMaXN0SXRlbVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlLFxyXG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBtYXBJbWFnZTogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICBpdGVtcyxcclxuICAgICAgICB9IGFzIFB1cm9NYXBMaXN0STtcclxuICAgIH1cclxuXHJcbiAgICBtYXBPZmZlckJhbm5lcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb09mZmVyQmFubmVySSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgaWYgKHByb3BzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMgfSA9IHByb3BzO1xyXG4gICAgICAgICAgICAvL1RPRE86YmFja1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxyXG4gICAgICAgICAgICAgICAgY3VycmVuY3k6ICcnLFxyXG4gICAgICAgICAgICAgICAgZnJvbTogdGV4dHM/LmZyb20sXHJcbiAgICAgICAgICAgICAgICBpbWFnZTogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgcHJpY2U6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIH0gYXMgUHVyb09mZmVyQmFubmVySTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwTGFuZ3VhZ2VzTW9kYWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9MYW5ndWFnZXNNb2RhbEkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGxhbmd1YWdlcyB9ID0gcHJvcHM7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaXRlbXM6IGxhbmd1YWdlcyBhcyBQdXJvTGFuZ3VhZ2VzTW9kYWxJdGVtW10sXHJcbiAgICAgICAgICAgIHNlbGVjdGVkOiBsYW5ndWFnZXMuZmluZChcclxuICAgICAgICAgICAgICAgIChpdGVtOiBQdXJvTGFuZ3VhZ2VzTW9kYWxJdGVtKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uaWQgPT09IHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8uaWRcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZSxcclxuICAgICAgICB9IGFzIFB1cm9MYW5ndWFnZXNNb2RhbEk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwSGVhZGVyKFxyXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXHJcbiAgICAgICAgbWVudTogYW55IHwgdW5kZWZpbmVkXHJcbiAgICApOiBQdXJvSGVhZGVySSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgeyBuYXYgfSA9IG1lbnU7XHJcbiAgICAgICAgY29uc3QgeyB0ZXh0cyB9ID0gcHJvcHM/LmhlYWRlckJ1dHRvbnM/LnByb3BzID8/IHt9O1xyXG4gICAgICAgIGNvbnN0IHsgYm90dG9tTGlua3MgfSA9IG1lbnU/LmxpbmtzID8/IHt9O1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlTWVudTogdGV4dHM/Lm1lbnUsXHJcbiAgICAgICAgICAgIHRpdGxlTGFuZzogdGV4dHM/Lmxhbmd1YWdlLFxyXG4gICAgICAgICAgICBidG5Cb29rOiB0ZXh0cz8uYm9va25vdyxcclxuICAgICAgICAgICAgbmF2TGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxyXG4gICAgICAgICAgICAgICAgbmF2XHJcbiAgICAgICAgICAgICAgICAgICAgPy5tYXAoKGxpbms6IGFueSkgPT4gKHsgLi4ubGluaywgbGFiZWw6IGxpbms/Lm5hbWUgfSkpXHJcbiAgICAgICAgICAgICAgICAgICAgPy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gYT8ub3JkZXIgLSBiPy5vcmRlcilcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgYm90dG9tTGlua3M6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYm90dG9tTGlua3MpLFxyXG4gICAgICAgIH0gYXMgUHVyb0hlYWRlckk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwSW5mb0JpZyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm9CaWdJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlLFxyXG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXHJcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2VzPy5bMF0pLFxyXG4gICAgICAgIH0gYXMgUHVyb0luZm9CaWdJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcFNsaWRlcjFjb2wocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9TbGlkZXIxY29sSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgeyBtdWx0aW1lZGlhLCBidXR0b25zLCB0ZXh0cyB9ID0gcHJvcHM7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxyXG4gICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxyXG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBpdGVtczogbXVsdGltZWRpYT8uaW1hZ2VzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1NsaWRlcjFjb2xJdGVtXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgfSBhcyBQdXJvU2xpZGVyMWNvbEk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwQWR2YW50YWdlcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0FkdmFudGFnZXNJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCB7IEFkdmFudGFnZXMgfSA9IHByb3BzO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGl0ZW1zOiBBZHZhbnRhZ2VzLm1hcChcclxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogaXRlbS5pY29uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvQWR2YW50YWdlc0l0ZW1cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICB9IGFzIFB1cm9BZHZhbnRhZ2VzSTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBaaWd6YWcyY29sKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvWmlnWmFnMmNvbEkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGlmIChwcm9wcykge1xyXG4gICAgICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICBuZFRpdGxlOiB0ZXh0cz8ubmRUaXRsZSxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXh0cz8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxyXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5bMF0pLFxyXG4gICAgICAgICAgICB9IGFzIFB1cm9aaWdaYWcyY29sSTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwR3JpZDRpdGVtcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0dyaWQ0aXRlbXNJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBpZiAoIXByb3BzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMsIG11bHRpbWVkaWEgfSA9IHByb3BzO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIGl0ZW1zOiAoQXJyYXkuaXNBcnJheShtdWx0aW1lZGlhKVxyXG4gICAgICAgICAgICAgICAgPyBtdWx0aW1lZGlhXHJcbiAgICAgICAgICAgICAgICA6IG11bHRpbWVkaWEubXVsdGltZWRpYVxyXG4gICAgICAgICAgICApPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWc/LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGltZz8ubGlua3MpWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nPy5zdWJ0aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9HcmlkNGl0ZW1zSXRlbVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXHJcbiAgICAgICAgfSBhcyBQdXJvR3JpZDRpdGVtc0k7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwSW5mb1ZpZGVvKFxyXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXHJcbiAgICAgICAgbmFtZTogJ2luZm92aWRlb3JpZ2h0JyB8ICdpbmZvdmlkZW9sZWZ0J1xyXG4gICAgKTogUHVyb0luZm9WaWRlb0kgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXHJcbiAgICAgICAgICAgIHJldmVyc2U6IG5hbWUuaW5jbHVkZXMoJ3JpZ2h0JyksXHJcbiAgICAgICAgICAgIHZpZGVvOiB7XHJcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHByb3BzLnZpZGVvPy5zcmMsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBwcm9wcy52aWRlbz8udHlwZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9IGFzIFB1cm9JbmZvVmlkZW9JO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEJyZWFkY3J1bWJzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQnJlYWRjcnVtYkkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGxpbmtzOiAocHJvcHM/Lml0ZW1zIGFzIGFueVtdKVxyXG4gICAgICAgICAgICAgICAgPy5zb3J0KChhLCBiKSA9PiBhIC0gYilcclxuICAgICAgICAgICAgICAgID8ubWFwKFxyXG4gICAgICAgICAgICAgICAgICAgIChpdGVtKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0/LmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0/LnVybFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbT8udXJsPy5jaGFyQXQoaXRlbT8udXJsPy5sZW5ndGggLSAxKSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW0/LnVybD8uc2xpY2UoMCwgLTEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbT8udXJsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9CdXR0b25JXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgIH0gYXMgUHVyb0JyZWFkY3J1bWJJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEZvb3RlckluZm8ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Gb290ZXJJbmZvSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgaWYgKHByb3BzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFkZHJlc3MgPSBwcm9wcz8uYWRkcmVzc1swXTtcclxuICAgICAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucywgbGlua3MsIHNvY2lhbE1lZGlhLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGFkZHJlc3NJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZUFkZHJlc3MsXHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogYCR7YWRkcmVzcz8uYWRkcmVzcyA/PyAnJ30sICR7YWRkcmVzcz8uY2l0eSA/PyAnJ30sICR7YWRkcmVzcz8uY3AgPz8gJyd9ICR7YWRkcmVzcy5wcm92aW5jZSA/PyAnJ31gLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcclxuICAgICAgICAgICAgICAgIGNvbnRhY3RJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzPy5jb250YWN0TGlua3M/LlswXVxyXG4gICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlQ29udGFjdCxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5sb2dvPy5bMF0pLFxyXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZT8uWzBdKSxcclxuICAgICAgICAgICAgICAgIG5ld3NsZXR0ZXJJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZU5ld3NsZXR0ZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9ucz8uWzFdXHJcbiAgICAgICAgICAgICAgICAgICAgKVswXSxcclxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25zTGluazogdGV4dHM/Lm5ld3NsZXR0ZXJDb25kaXRpb25zLFxyXG4gICAgICAgICAgICAgICAgICAgIGlucHV0UGxhY2Vob2xkZXI6IHRleHRzPy5uZXdzbGV0dGVyUGxhY2Vob2xkZXIsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc29jaWFsTWVkaWE6IHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlU29jaWFsTWVkaWEsXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IHNvY2lhbE1lZGlhPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IFV0aWxzLm1hcFNvY2lhbGNvbnMoaXRlbT8ubmFtZT8udG9Mb3dlckNhc2UoKSksXHJcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICAgICAgfSBhcyBQdXJvRm9vdGVySW5mb1NvY2lhbE1lZGlhSW5mbyxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIH0gYXMgUHVyb0Zvb3RlckluZm9JO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBtYXBTbGlkZXIzY29sKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvU2xpZGVyM2NvbEkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlcz8ubWFwKFxyXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8uYnV0dG9uc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICApWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaW1nPy5saW5rcylbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1NsaWRlcjNDb2xJdGVtXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXHJcbiAgICAgICAgfSBhcyBQdXJvU2xpZGVyM2NvbEk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwU2xpZGVyMmNvbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NsaWRlcjJjb2xJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5yb29tcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0ubXVsdGltZWRpYT8uWzBdKSxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRleHRzPy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0udGV4dHM/LmRlc2NyaXRpb24sXHJcbiAgICAgICAgICAgICAgICBidXR0b25zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5idXR0b25zKVswXSxcclxuICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKVswXSxcclxuICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIH0pKSxcclxuICAgICAgICB9IGFzIFB1cm9TbGlkZXIyY29sSTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBHcmlkNWl0ZW1zKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR3JpZDVpdGVtc0kgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IGNvbWJpbmVkSW1hZ2VzOiBJbWFnZVJlc3BvbnNlW10gPSBbXTtcclxuICAgICAgICBsZXQgaSA9IDA7XHJcbiAgICAgICAgbGV0IGogPSAwO1xyXG5cclxuICAgICAgICB3aGlsZSAoXHJcbiAgICAgICAgICAgIGkgPCBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VzPy5sZW5ndGggfHxcclxuICAgICAgICAgICAgaiA8IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXNzbWFsbD8ubGVuZ3RoXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGlmIChwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VzPy5baV0pIHtcclxuICAgICAgICAgICAgICAgIGNvbWJpbmVkSW1hZ2VzLnB1c2gocHJvcHMubXVsdGltZWRpYS5pbWFnZXNbaV0pO1xyXG4gICAgICAgICAgICAgICAgaSsrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2Vzc21hbGw/LltqXSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGogPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBjb21iaW5lZEltYWdlcy5wdXNoKHByb3BzLm11bHRpbWVkaWEuaW1hZ2Vzc21hbGxbal0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaisrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbWJpbmVkSW1hZ2VzLnB1c2gocHJvcHMubXVsdGltZWRpYS5pbWFnZXNzbWFsbFsxXSk7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBpdGVtczogY29tYmluZWRJbWFnZXM/Lm1hcChcclxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nLnN1YnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9HcmlkNWl0ZW1zSXRlbVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxyXG4gICAgICAgIH0gYXMgUHVyb0dyaWQ1aXRlbXNJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEdyaWQ2aXRlbXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9HcmlkNml0ZW1zSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIGl0ZW1zOiBbXSxcclxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcclxuICAgICAgICB9IGFzIFB1cm9HcmlkNml0ZW1zSTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBBZHZhbnRhZ2VzU21hbGwoXHJcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxyXG4gICAgKTogUHVyb0FkdmFudGFnZXNTbWFsbEkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGlmICghcHJvcHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaXRlbXM6IChwcm9wcy5zZXJ2aWNlc0FkdmFudGFnZXMgfHwgcHJvcHM/LkFkdmFudGFnZXMpPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUgfHwgaXRlbS50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIChpdGVtLmNsYXNzIHx8IGl0ZW0uaWNvbiksXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0FkdmFudGFnZXNTbWFsbEl0ZW1cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICB9IGFzIFB1cm9BZHZhbnRhZ2VzU21hbGxJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEdyaWQzY29sRmlsdGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR3JpZDNDb2xGaWx0ZXJJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCBkZXN0aW5hdGlvbnMgPSBwcm9wcz8uZGVzdGluYXRpb25zPy5mbGF0KCk7XHJcbiAgICAgICAgY29uc3QgZGVzdGluYXRpb25Db25jYXQgPSBkZXN0aW5hdGlvbnM/LmNvbmNhdChcclxuICAgICAgICAgICAgZGVzdGluYXRpb25zPy5yZWR1Y2UoKGFjYzogYW55W10sIGRlc3RpbmF0aW9uOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhY2MuY29uY2F0KGRlc3RpbmF0aW9uLmhvdGVscyk7XHJcbiAgICAgICAgICAgIH0sIFtdKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgaG90ZWxXaXRoSW1nID0gZGVzdGluYXRpb25zPy5yZWR1Y2UoXHJcbiAgICAgICAgICAgIChhY2M6IGFueVtdLCBkZXN0aW5hdGlvbjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjLmNvbmNhdChcclxuICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbj8uY2hpbGRyZW4/Lm1hcChcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLmhvdGVscz8uWzBdXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgW11cclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IGl0ZW1zID0gZGVzdGluYXRpb25zXHJcbiAgICAgICAgICAgID8ucmVkdWNlKChhY2M6IGFueVtdLCBkZXN0aW5hdGlvbjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjLmNvbmNhdChkZXN0aW5hdGlvbi5ob3RlbHMpO1xyXG4gICAgICAgICAgICB9LCBbXSlcclxuICAgICAgICAgICAgPy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coaXRlbSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3Qge1xyXG4gICAgICAgICAgICAgICAgICAgIGhvdGVsVHJhbnNsYXRpb25zOiBbdHJhbnNsYXRpb25dLFxyXG4gICAgICAgICAgICAgICAgICAgIHBpdm90OiB7IGRlc3RpbmF0aW9uSWQgfSxcclxuICAgICAgICAgICAgICAgIH0gPSBpdGVtO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdHJhbnNsYXRpb24/Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IHRyYW5zbGF0aW9uPy5hZGRpdGlvbmFsMixcclxuICAgICAgICAgICAgICAgICAgICBuZFRpdGxlOiB0cmFuc2xhdGlvbi5hZGRpdGlvbmFsMSxcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGl0ZW0uaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyZW50OiBkZXN0aW5hdGlvbklkLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGU6IG5ldyBEYXRlKHRyYW5zbGF0aW9uLmNyZWF0ZWRBdCkudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKSxcclxuICAgICAgICAgICAgICAgICAgICBpY29uOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBob3RlbFdpdGhJbWdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKChpdGVtSW1nOiBhbnkpID0+IGl0ZW0uaWQgPT09IGl0ZW1JbWcuaWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lm11bHRpbWVkaWE/LmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT4gaW1nLmNvdmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIH0gYXMgUHVyb0dyaWQzQ29sRmlsdGVySXRlbTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcclxuICAgICAgICAgICAgaXRlbXM6IGl0ZW1zIHx8IFtdLFxyXG4gICAgICAgICAgICBmaWx0ZXI6IHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbnM6XHJcbiAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25Db25jYXQ/Lm1hcChcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGRlc3Q6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogZGVzdC5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBkZXN0Lm5hbWUgfHwgZGVzdD8ubmFtZUlkZW50aWZpZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICkgfHwgW10sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpLFxyXG4gICAgICAgIH0gYXMgUHVyb0dyaWQzQ29sRmlsdGVySTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBGb290ZXJIb3RlbHMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Gb290ZXJIb3RlbHNJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/LmhvdGVscz8ubWFwKFxyXG4gICAgICAgICAgICAgICAgKGhvdGVsOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBob3RlbC5saW5rcylbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBob3RlbD8udGV4dHM/Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBob3RlbD8udGV4dHM/LmxvY2F0aW9uRGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0Zvb3RlckhvdGVsc0l0ZW1cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICB9IGFzIFB1cm9Gb290ZXJIb3RlbHNJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEZvb3RlckxpbmtzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRm9vdGVyTGlua3NJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBpZiAocHJvcHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGltZzoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzLm11bHRpbWVkaWE/LmltYWdlPy5bMF0pLFxyXG4gICAgICAgICAgICAgICAgICAgIGFsdDogcHJvcHM/LnRleHRzPy5pY29uLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcy50ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICBtZW1iZXJUaXRsZTogcHJvcHMudGV4dHM/Lm1lbWJlclRpdGxlLFxyXG4gICAgICAgICAgICAgICAgbWVtYmVyUHJldGl0bGU6IHByb3BzLnRleHRzPy5tZW1iZXJQcmV0aXRsZSxcclxuICAgICAgICAgICAgICAgIGNvcHlyaWdodDogcHJvcHMudGV4dHM/LmNvcHlyaWdodCxcclxuICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzLmxpbmtzKSxcclxuICAgICAgICAgICAgfSBhcyBQdXJvRm9vdGVyTGlua3NJO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBtYXBGb290ZXJCZWFjaHMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Gb290ZXJCZWFjaHNJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/LmhvdGVscz8ubWFwKFxyXG4gICAgICAgICAgICAgICAgKGhvdGVsOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucygnL3B1cm9iZWFjaCcsIGhvdGVsLmxpbmtzKVswXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGhvdGVsPy50ZXh0cz8ubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGhvdGVsPy50ZXh0cz8ubG9jYXRpb25EZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvRm9vdGVyQmVhY2hzSXRlbVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIH0gYXMgUHVyb0Zvb3RlckJlYWNoc0k7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwSW5mb0xpc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JbmZvTGlzdEkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIG11bHRpbWVkaWEsIEFkdmFudGFnZXMgfSA9IHByb3BzO1xyXG4gICAgICAgIGNvbnN0IHsgYmFja2dyb3VuZGltYWdlLCBpbWFnZSwgc21hbGxpbWFnZSB9ID0gbXVsdGltZWRpYTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICBpdGVtczogQXJyYXkoLi4uKEFkdmFudGFnZXMgfHwgW10pKT8ubWFwKFxyXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS50aXRsZSBhcyBzdHJpbmdcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWFnZT8uWzBdKSxcclxuICAgICAgICAgICAgc21hbGxJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHNtYWxsaW1hZ2U/LlswXSksXHJcbiAgICAgICAgICAgIGJhY2tncm91bmRJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGJhY2tncm91bmRpbWFnZT8uWzBdKSxcclxuICAgICAgICB9IGFzIFB1cm9JbmZvTGlzdEk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwU2xpZGVyM0NvbFJvdW5kKFxyXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcclxuICAgICk6IFB1cm9TbGlkZXIzQ29sUm91bmRJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxyXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXHJcbiAgICAgICAgICAgIGl0ZW1zOiBtdWx0aW1lZGlhPy5pbWFnZXM/Lm1hcChcclxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc/LmxpbmtzIHx8IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIClbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1NsaWRlcjNDb2xSb3VuZEl0ZW1cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICB9IGFzIFB1cm9TbGlkZXIzQ29sUm91bmRJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEluZm9JbnRybyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm9JbnRyb0kgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGlmIChwcm9wcykge1xyXG4gICAgICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zIH0gPSBwcm9wcztcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGUsXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRleHRzPy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcclxuICAgICAgICAgICAgfSBhcyBQdXJvSW5mb0ludHJvSTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBtYXBUb3BTbGlkZXIoXHJcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcclxuICAgICAgICBhY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkXHJcbiAgICApOiBQdXJvVG9wU2xpZGVySSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgbXVsdGltZWRpYSB9ID0gcHJvcHM7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZSxcclxuICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZSxcclxuICAgICAgICAgICAgc3BvdGlmeTogYWN0aW9ucz8uWydzcG90aWZ5J10sIC8vVE9ETzogY2hlY2sgZGF0YSBmcm9tIGJhY2ssIEl0IGlzIG5vdCBsZWZ0IGxpa2UgdGhhdCAnICcsIHRvIGd1YXJhbnRlZSBhbiBhcmVhLWxhYmVsIG9uIHRoZSBidXR0b25cclxuICAgICAgICAgICAgZmlkZWxpdHk6IGFjdGlvbnM/LlsnZmlkZWxpdHknXSxcclxuICAgICAgICAgICAgbmV3c2xldHRlcjogYWN0aW9ucz8uWyduZXdzbGV0dGVyJ10sXHJcbiAgICAgICAgICAgIGxhbmd1YWdlczogYWN0aW9ucz8uWydsYW5ndWFnZSddLFxyXG4gICAgICAgICAgICBzZWxlY3RlZExhbmd1YWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaXRlU3ZjLnNlbGVjdGVkTGFuZ3VhZ2VJbnN0YW50Py5sb2NhdGU/LnRvTG9jYWxlVXBwZXJDYXNlKCksXHJcbiAgICAgICAgICAgIHZpZGVvOiB1bmRlZmluZWQsIC8vVE9ETzogQkFDS1xyXG4gICAgICAgICAgICBtYWluVGl0bGU6IHRleHRzPy5tYWluVGl0bGUsIC8vVE9ETzogQkFDS1xyXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXHJcbiAgICAgICAgICAgICAgICBtdWx0aW1lZGlhPy5pbWFnZXMgfHwgbXVsdGltZWRpYT8ubXVsdGltZWRpYVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIH0gYXMgUHVyb1RvcFNsaWRlckk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwSW5mb0Jhbm5lcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm9CYW5uZXJJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBpZiAocHJvcHMpIHtcclxuICAgICAgICAgICAgY29uc3QgeyB0ZXh0cywgbXVsdGltZWRpYSB9ID0gcHJvcHM7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgaXRlbXM6IG11bHRpbWVkaWE/LmltYWdlPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZy5idXR0b25zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0luZm9CYW5uZXJJdGVtXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB9IGFzIFB1cm9JbmZvQmFubmVySTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBtYXBTY2hlZHVsZShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NjaGVkdWxlSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgaWYgKHByb3BzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgdGV4dHMsIEFkdmFudGFnZXMgfSA9IHByb3BzO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgICAgIGl0ZW1zOiBBcnJheSguLi4oQWR2YW50YWdlcyB8fCBbXSkpPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbT8uaWNvbn1gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LnRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TY2hlZHVsZUl0ZW1cclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIH0gYXMgUHVyb1NjaGVkdWxlSTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBtYXBJbmZvU2VydmljZXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JbmZvU2VydmljZXNJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCB7IHRleHRzLCBBZHZhbnRhZ2VzLCBtdWx0aW1lZGlhLCBidXR0b25zIH0gPSBwcm9wcztcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXHJcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZXMgfHwgW10pLFxyXG4gICAgICAgICAgICBpdGVtczogQWR2YW50YWdlcz8ubWFwKFxyXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy50ZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0/Lmljb259YCxcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvSW5mb1NlcnZpY2VzSXRlbVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIH0gYXMgUHVyb0luZm9TZXJ2aWNlc0k7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwTGlzdEdlbmVyYWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IGFueSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgaWYgKCFwcm9wcykge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgeyBvZmZlcnMsIHJvb21zLCBtdWx0aW1lZGlhLCBob3RlbHMsIHRleHRzLCBidXR0b25zIH0gPSBwcm9wcztcclxuICAgICAgICBsZXQgaXRlbXM6IFB1cm9MaXN0R2VuZXJhbEl0ZW1bXSA9IFtdO1xyXG5cclxuICAgICAgICBpZiAob2ZmZXJzKSB7XHJcbiAgICAgICAgICAgIGl0ZW1zID0gcHJvcHM/Lm9mZmVycz8ubWFwKFxyXG4gICAgICAgICAgICAgICAgKG9mZmVyOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG9mZmVyPy50ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvZmZlcj8udGV4dHM/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZlci5tdWx0aW1lZGlhIHx8IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgb2ZmZXI/LmxpbmtzKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgb2ZmZXI/LmJ1dHRvbnMpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9MaXN0R2VuZXJhbEl0ZW1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHJvb21zKSB7XHJcbiAgICAgICAgICAgIGl0ZW1zID0gcm9vbXM/Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IHRleHRzLCBlcXVpcG1lbnQsIG11bHRpbWVkaWEgfSA9IGl0ZW07XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8ubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiB0ZXh0cz8uc3VidGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICBlcXVpcG1lbnQ6IGVxdWlwbWVudD8ubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBpdGVtPy5jbGFzcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pKSxcclxuICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYSksXHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKVswXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5idXR0b25zKSxcclxuICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgfSBhcyBQdXJvTGlzdEdlbmVyYWxJdGVtO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2UgaWYgKGhvdGVscykge1xyXG4gICAgICAgICAgICBpdGVtcyA9IGhvdGVscz8ubWFwKFxyXG4gICAgICAgICAgICAgICAgKGhvdGVsOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGhvdGVsPy50ZXh0cz8ubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGhvdGVsPy50ZXh0cz8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBob3RlbD8udGV4dHM/LnN1YnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaG90ZWw/LnRleHRzPy5wcmV0aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKGhvdGVsPy5tdWx0aW1lZGlhKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBob3RlbD8ubGlua3MpWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBob3RlbD8uYnV0dG9ucyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0xpc3RHZW5lcmFsSXRlbVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobXVsdGltZWRpYSkge1xyXG4gICAgICAgICAgICBpdGVtcyA9IFtcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXh0cz8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhPy5pbWFnZXMgfHwgW11cclxuICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFsuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpXSxcclxuICAgICAgICAgICAgICAgIH0gYXMgUHVyb0xpc3RHZW5lcmFsSXRlbSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIGl0ZW1zLFxyXG4gICAgICAgIH0gYXMgUHVyb0xpc3RHZW5lcmFsSTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBFbmdpbmUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9FbmdpbmVJIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBidXR0b246IHsgbGFiZWw6IHByb3BzPy50ZXh0cz8ubW90b3JTdWJtaXQsIHVybDogcHJvcHM/LnVybCB9LFxyXG4gICAgICAgICAgICBkYXRlcGlja2VySW46IHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yRGF0ZVRpdGxlPy5zcGxpdCgnLScpPy5bMF0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGRhdGVwaWNrZXJPdXQ6IHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yRGF0ZVRpdGxlPy5zcGxpdCgnLScpPy5bMV0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGd1ZXN0c0lucHV0OiB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3Rvckd1ZXN0c0lucHV0SG9sZGVyLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBwcm9tb0lucHV0OiB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvclByb21vSG9sZGVyLFxyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgYnRuQXBwbHk6IHsgbGFiZWw6IHByb3BzPy50ZXh0cz8ubW90b3JBcHBseSB9LFxyXG4gICAgICAgICAgICBhZHVsdHNEcm9wZG93bjoge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JBZHVsdHNUaXRsZSxcclxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhwcm9wcz8ubWF4QWR1bHRzLCAxKSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAga2lkc0Ryb3Bkb3duOiB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvcktpZHNUaXRsZSxcclxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhwcm9wcz8ubWF4Q2hpbGRyZW4pLFxyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JUaXRsZSxcclxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JTdWJ0aXRsZSxcclxuICAgICAgICAgICAgdXJsOiBwcm9wcz8udXJsLFxyXG4gICAgICAgICAgICBob3RlbDogcHJvcHM/LmhvdGVscz8uWzBdLFxyXG4gICAgICAgIH0gYXMgUHVyb0VuZ2luZUk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwV2VibWFwKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvV2VibWFwSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbGlua3M6IHByb3BzPy5wYWdlc1xyXG4gICAgICAgICAgICAgICAgLmZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgICAobGluazogUHVyb0J1dHRvbkkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsudXJsPy5zcGxpdCgnLycpWzFdID09PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmxvY2F0ZVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFV0aWxzLnVybFZhbGlkYXRpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluay51cmwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVybmFsJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9CdXR0b25JXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcclxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdXHJcbiAgICAgICAgICAgICkgYXMgUHVyb0ltYWdlSSxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIG1hcFBob3RvU2xpZGVyKFxyXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXHJcbiAgICAgICAgcmV2ZXJzZTogYm9vbGVhblxyXG4gICAgKTogUHVyb1Bob3RvU2xpZGVySSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcclxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXMgfHwgW10pLFxyXG4gICAgICAgICAgICByZXZlcnNlLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgbWFwQmFubmVyNENvbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Jhbm5lcjRDb2xJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXHJcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcclxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXMgfHwgW11cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgYmlnYmFubmVyOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2ViaWdbMF0pLFxyXG4gICAgICAgICAgICBiaWd0aXRsZTogJycsXHJcbiAgICAgICAgfSBhcyBQdXJvQmFubmVyNENvbEk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwQ29udGFjdEZvcm0oXHJcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcclxuICAgICAgICBuZFByb3BzQ29uc3VsdDogYW55IHwgdW5kZWZpbmVkXHJcbiAgICApOiBQdXJvQ29udGFjdEZvcm1JIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXHJcbiAgICAgICAgICAgIGNvbmRpdGlvbnNMaW5rOiBwcm9wcz8udGV4dHM/LmNvbmRpdGlvbnNMaW5rLFxyXG4gICAgICAgICAgICByZXF1aXJlZExhYmVsOiBwcm9wcz8udGV4dHM/LnJlcXVpcmVkTGFiZWwsXHJcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF0pLFxyXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxyXG4gICAgICAgICAgICB0ZXh0YXJlYToge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRNZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRNZXNzYWdlUGxhY2VIb2xkZXIsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9ucyxcclxuICAgICAgICAgICAgcHJvbW90aW9uczogcHJvcHM/LnRleHRzPy5wcm9tb3Rpb25zLFxyXG4gICAgICAgICAgICBkcm9wZG93bjoge1xyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uZHJvcGRvd24sXHJcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uaG90ZWxzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG5kRHJvcGRvd246IHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm5kRHJvcGRvd24sXHJcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBuZFByb3BzQ29uc3VsdD8ubWFwKFxyXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBwcmVmaXg6IHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5wcmVmaXhlcz8ubWFwKFxyXG4gICAgICAgICAgICAgICAgICAgIChwcmVmaXg6IHN0cmluZykgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IEFycmF5KHByb3BzPy5wcmVmaXhlcykuaW5kZXhPZihwcmVmaXgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJlZml4LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGlucHV0czogW1xyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dE5hbWUpLFxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0TmFtZSxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yUmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dFN1cm5hbWVzLFxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dFN1cm5hbWVzKSxcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dFN1cm5hbWVzLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JSZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwsXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChwcm9wcz8udGV4dHM/LmlucHV0RW1haWwpLFxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvckVtYWlsLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSksXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yUnF1aXJlZCxcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBdIGFzIFB1cm9JbnB1dElbXSxcclxuICAgICAgICB9IGFzIFB1cm9Db250YWN0Rm9ybUk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwSW5mb1NsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkLCByZXZlcnNlOiBib29sZWFuKTogYW55IHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBpZiAoIXByb3BzKSByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIGNvbnN0IHsgbXVsdGltZWRpYSB9ID0gcHJvcHM7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaXRlbXM6IChtdWx0aW1lZGlhPy5pbWFnZXMgfHwgbXVsdGltZWRpYT8ubXVsdGltZWRpYSk/Lm1hcChcclxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpIGFzIFB1cm9JbWFnZUksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpbWcuc3VidGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWcuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaW1nLmJ1dHRvbnMpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaW1nLnByZXRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9JbmZvU2xpZGVySXRlbVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICByZXZlcnNlLFxyXG4gICAgICAgIH0gYXMgUHVyb0luZm9TbGlkZXJJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcE9mZmVyc1NsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogYW55IHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5vZmZlcnM/Lm1hcChcclxuICAgICAgICAgICAgICAgIChvZmZlcjogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBvZmZlcj8udGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogb2ZmZXI/LnRleHRzPy5zdWJ0aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwxLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIG9mZmVyPy5saW5rcyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIG9mZmVyPy5idXR0b25zKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShvZmZlci5tdWx0aW1lZGlhWzBdKSxcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvT2ZmZXJcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIG1hcFRoYW5rcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1RoYW5rc0kgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcclxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdXHJcbiAgICAgICAgICAgICkgYXMgUHVyb0ltYWdlSSxcclxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcclxuICAgICAgICB9IGFzIFB1cm9UaGFua3NJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcDQwNChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVybzQwNEkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IGFkZHJlc3MgPSBwcm9wcz8uYWRkcmVzcz8uWzBdO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcy50ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcy50ZXh0cz8uc3VidGl0bGUsXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy50ZXh0cz8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxyXG4gICAgICAgICAgICBhZGRyZXNzOiB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGUsXHJcbiAgICAgICAgICAgICAgICB0ZXh0OiBgJHthZGRyZXNzLmFkZHJlc3N9PC9icj4ke2FkZHJlc3MuY2l0eX0gLCR7YWRkcmVzcy5jcH0gJHthZGRyZXNzLnByb3ZpbmNlfWAsXHJcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcclxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubGlua3M/LmFkZHJlc3M/LlswXVxyXG4gICAgICAgICAgICAgICAgKVswXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY29udGFjdDoge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uY29udGFjdFRpdGxlLFxyXG4gICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcclxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubGlua3M/LkNvbnRhY3Q/LlswXVxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIGJ1dHRvbjoge30sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSBhcyBQdXJvNDA0STtcclxuICAgIH1cclxuXHJcbiAgICBtYXBJbmZvR2FsbGVyeShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogYW55IHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgIG1vcmVpbmZvOiBwcm9wcz8udGV4dHM/LmFkZGl0aW9uYWwxLFxyXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXHJcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VzIHx8IFtdXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpLFxyXG4gICAgICAgICAgICBhZHZhbnRhZ2VzOiBwcm9wcz8uQWR2YW50YWdlcz8ubWFwKFxyXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbT8uaWNvbn1gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8udGV4dCxcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU2NoZWR1bGVJdGVtXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgfSBhcyBQdXJvSW5mb0dhbGxlcnlJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEluZm8yQ29sKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mbzJDb2xJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5pdGVtcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcclxuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnN1YnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtLmxpbmspLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtLmJ1dHRvbnMpLFxyXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLmltYWdlKSxcclxuICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgIH0gYXMgUHVyb0luZm8yQ29sSTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJbWFnZVJlc3BvbnNlIHtcclxuICAgIHBhdGg6IEltYWdlUmVzcG9uc2VQYXRoO1xyXG4gICAgdGh1bWJuYWlsczoge1xyXG4gICAgICAgIDM3NTogSW1hZ2VSZXNwb25zZVBhdGg7XHJcbiAgICAgICAgNTQwOiBJbWFnZVJlc3BvbnNlUGF0aDtcclxuICAgICAgICA3Njg6IEltYWdlUmVzcG9uc2VQYXRoO1xyXG4gICAgICAgIDgwMDogSW1hZ2VSZXNwb25zZVBhdGg7XHJcbiAgICAgICAgMTAyNDogSW1hZ2VSZXNwb25zZVBhdGg7XHJcbiAgICAgICAgMTI4MDogSW1hZ2VSZXNwb25zZVBhdGg7XHJcbiAgICB9O1xyXG4gICAgY292ZXI6IG51bWJlcjtcclxuICAgIHRhZ3M/OiBhbnlbXTtcclxuICAgIHRpdGxlPzogc3RyaW5nO1xyXG4gICAgcHJldGl0bGU/OiBzdHJpbmc7XHJcbiAgICBzdWJ0aXRsZT86IHN0cmluZztcclxuICAgIG5kVGl0bGU/OiBzdHJpbmc7XHJcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcclxuICAgIGxpbmtzPzogYW55W107XHJcbiAgICBidXR0b25zPzogYW55W107XHJcbiAgICBhbHQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VSZXNwb25zZVBhdGgge1xyXG4gICAgb3JpZ2luYWw6IHN0cmluZztcclxuICAgIHdlYnA6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRzQWRkb25zIHtcclxuICAgIGNvbnRhY3RPZmZpY2U/OiBhbnk7XHJcbiAgICBjb25zdWx0VHlwZT86IENvbnN1bHRUeXBlO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlck9wdGlvbiB7XHJcbiAgICBpZD86IG51bWJlcjtcclxuICAgIG5hbWU/OiBzdHJpbmc7XHJcbiAgICBjaGlsZHJlbj86IEZpbHRlck9wdGlvbjtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIENvbnN1bHRUeXBlIHtcclxuICAgIGNvbnN1bHRUeXBlSWQ/OiBudW1iZXI7XHJcbiAgICBJZD86IG51bWJlcjtcclxuICAgIGxhbmd1YWdlSWQ/OiBudW1iZXI7XHJcbiAgICBuYW1lPzogc3RyaW5nO1xyXG59XHJcbiJdfQ==
990
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wdXJvL3NyYy9saWIvc2VydmljZXMvbWFwcGVyL21hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBMEU1QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBS25FLE1BQU0sT0FBTyxhQUFhO0lBSDFCO1FBSXFCLFlBQU8sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM1QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBSzFELGtCQUFhLEdBQUcsTUFBTSxDQUFxQyxTQUFTLENBQUMsQ0FBQztRQUV0RSxXQUFNLEdBQW1CLFFBQVEsQ0FDN0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQzlDLENBQUM7S0FreENMO0lBMXhDRyxJQUFJLHNCQUFzQjtRQUN0QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBUUQsa0JBQWtCLENBQ2QsS0FBZ0M7UUFFaEMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLE9BQU8sU0FBUyxDQUFDO1NBQ3BCO1FBQ0QsSUFBSSxhQUFhLENBQUM7UUFDbEIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQ3BDLGFBQWEs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QUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBpbmplY3QsIEluamVjdGFibGUsIFNpZ25hbCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgUHVybzQwNEksXHJcbiAgICBQdXJvQWR2YW50YWdlc0ksXHJcbiAgICBQdXJvQWR2YW50YWdlc0l0ZW0sXHJcbiAgICBQdXJvQWR2YW50YWdlc1NtYWxsSSxcclxuICAgIFB1cm9BZHZhbnRhZ2VzU21hbGxJdGVtLFxyXG4gICAgUHVyb0Jhbm5lcjRDb2xJLFxyXG4gICAgUHVyb0JyZWFkY3J1bWJJLFxyXG4gICAgUHVyb0NvbnRhY3RGb3JtSSxcclxuICAgIFB1cm9FbmdpbmVJLFxyXG4gICAgUHVyb0Zvb3RlckJlYWNoc0ksXHJcbiAgICBQdXJvRm9vdGVyQmVhY2hzSXRlbSxcclxuICAgIFB1cm9Gb290ZXJIb3RlbHNJLFxyXG4gICAgUHVyb0Zvb3RlckhvdGVsc0l0ZW0sXHJcbiAgICBQdXJvRm9vdGVySW5mb0ksXHJcbiAgICBQdXJvRm9vdGVySW5mb1NvY2lhbE1lZGlhSW5mbyxcclxuICAgIFB1cm9Gb290ZXJMaW5rc0ksXHJcbiAgICBQdXJvR2FsbGVyeUZpbHRlcixcclxuICAgIFB1cm9HYWxsZXJ5SSxcclxuICAgIFB1cm9HYWxsZXJ5SXRlbSxcclxuICAgIFB1cm9HcmlkM0NvbEZpbHRlckksXHJcbiAgICBQdXJvR3JpZDNDb2xGaWx0ZXJJdGVtLFxyXG4gICAgUHVyb0dyaWQzY29sU2xpZGVySSxcclxuICAgIFB1cm9HcmlkM2NvbFNsaWRlckl0ZW0sXHJcbiAgICBQdXJvR3JpZDRpdGVtc0ksXHJcbiAgICBQdXJvR3JpZDRpdGVtc0l0ZW0sXHJcbiAgICBQdXJvR3JpZDVpdGVtc0ksXHJcbiAgICBQdXJvR3JpZDVpdGVtc0l0ZW0sXHJcbiAgICBQdXJvR3JpZDZpdGVtc0ksXHJcbiAgICBQdXJvSGVhZGVySSxcclxuICAgIFB1cm9JbmZvQmFubmVySSxcclxuICAgIFB1cm9JbmZvQmFubmVySXRlbSxcclxuICAgIFB1cm9JbmZvQmlnSSxcclxuICAgIFB1cm9JbmZvR2FsbGVyeUksXHJcbiAgICBQdXJvSW5mb0ludHJvSSxcclxuICAgIFB1cm9JbmZvTGlzdEksXHJcbiAgICBQdXJvSW5mb1NlcnZpY2VzSSxcclxuICAgIFB1cm9JbmZvU2VydmljZXNJdGVtLFxyXG4gICAgUHVyb0luZm9TbGlkZXJJLFxyXG4gICAgUHVyb0luZm9TbGlkZXJJdGVtLFxyXG4gICAgUHVyb0luZm9WaWRlb0ksXHJcbiAgICBQdXJvTGFuZ3VhZ2VzTW9kYWxJLFxyXG4gICAgUHVyb0xhbmd1YWdlc01vZGFsSXRlbSxcclxuICAgIFB1cm9MaXN0R2VuZXJhbEksXHJcbiAgICBQdXJvTGlzdEdlbmVyYWxJdGVtLFxyXG4gICAgUHVyb01hcExpc3RJLFxyXG4gICAgUHVyb01hcExpc3RJdGVtLFxyXG4gICAgUHVyb09mZmVyLFxyXG4gICAgUHVyb09mZmVyQmFubmVySSxcclxuICAgIFB1cm9QaG90b1NsaWRlckksXHJcbiAgICBQdXJvU2NoZWR1bGVJLFxyXG4gICAgUHVyb1NjaGVkdWxlSXRlbSxcclxuICAgIFB1cm9TbGlkZXIxY29sSSxcclxuICAgIFB1cm9TbGlkZXIxY29sSXRlbSxcclxuICAgIFB1cm9TbGlkZXIyY29sSSxcclxuICAgIFB1cm9TbGlkZXIzY29sSSxcclxuICAgIFB1cm9TbGlkZXIzQ29sSXRlbSxcclxuICAgIFB1cm9TbGlkZXIzQ29sUm91bmRJLFxyXG4gICAgUHVyb1NsaWRlcjNDb2xSb3VuZEl0ZW0sXHJcbiAgICBQdXJvVGhhbmtzSSxcclxuICAgIFB1cm9Ub3BTbGlkZXJJLFxyXG4gICAgUHVyb1dlYm1hcEksXHJcbiAgICBQdXJvWmlnWmFnMmNvbEksXHJcbn0gZnJvbSAnLi4vLi4vY29tcG9uZW50cyc7XHJcbmltcG9ydCB7IFB1cm9JbmZvMkNvbEkgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3B1cm8taW5mbzJjb2wvcHVyby1pbmZvMmNvbC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge1xyXG4gICAgQm9keUNvbXBvbmVudCxcclxuICAgIFB1cm9CdXR0b25JLFxyXG4gICAgUHVyb0ltYWdlSSxcclxuICAgIFB1cm9JbnB1dEksXHJcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IERyb3Bkb3duT3B0aW9uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wdXJvLWRyb3Bkb3duLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbHMnO1xyXG5pbXBvcnQgeyBTY3JlZW5TaXplclNlcnZpY2UgfSBmcm9tICcuLi9zY3JlZW4tc2l6ZXInO1xyXG5pbXBvcnQgeyBTSVRFX0NPTkZJR19TRVJWSUNFX1RPS0VOIH0gZnJvbSAnLi9tYXBwZXIuc2VydmljZS50b2tlbic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXBwZXJTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2l0ZVN2YyA9IGluamVjdChTSVRFX0NPTkZJR19TRVJWSUNFX1RPS0VOKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2NyZWVuU2l6ZXIgPSBpbmplY3QoU2NyZWVuU2l6ZXJTZXJ2aWNlKTtcclxuICAgIGdldCBpc01pbkZ1bGxUYWJsZXRJbnN0YW50KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNjcmVlblNpemVyLm1pbkZ1bGxUYWJsZXRJbnN0YW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaGVhZGVyQnV0dG9ucyA9IHNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG5cclxuICAgIHNpdGVJZDogU2lnbmFsPG51bWJlcj4gPSBjb21wdXRlZChcclxuICAgICAgICAoKSA9PiB0aGlzLnNpdGVTdmMud2ViQ29uZmlnSW5zdGFudD8uc2l0ZUlEXHJcbiAgICApO1xyXG5cclxuICAgIGdldEltYWdlUmVzcG9uc2l2ZShcclxuICAgICAgICBpbWFnZTogSW1hZ2VSZXNwb25zZSB8IHVuZGVmaW5lZFxyXG4gICAgKTogUHVyb0ltYWdlSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgaWYgKCFpbWFnZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc2VsZWN0ZWRJbWFnZTtcclxuICAgICAgICBpZiAodGhpcy5zY3JlZW5TaXplci5pc01vYmlsZUluc3RhbnQoKSkge1xyXG4gICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/LlszNzVdPy53ZWJwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5pc1NtYWxsVGFibGV0SW5zdGFudCgpKSB7XHJcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzU0MF0/LndlYnA7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzTWVkaXVtVGFibGV0SW5zdGFudCgpKSB7XHJcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzc2OF0/LndlYnA7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzRnVsbFRhYmxldEluc3RhbnQoKSkge1xyXG4gICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/LlsxMDI0XT8ud2VicDtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuU2l6ZXIubWluRnVsbERlc2t0b3AoKSkge1xyXG4gICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnBhdGg/LndlYnA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bMTI4MF0/LndlYnA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHNyYzogYCR7dGhpcy5zaXRlU3ZjLmNkbkltYWdlc0luc3RhbnR9JHtzZWxlY3RlZEltYWdlfWAsXHJcbiAgICAgICAgICAgIGFsdDogaW1hZ2U/LmFsdCxcclxuICAgICAgICB9IGFzIFB1cm9JbWFnZUk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXHJcbiAgICAgICAgaW1hZ2VzOiBJbWFnZVJlc3BvbnNlW10gfCB1bmRlZmluZWRcclxuICAgICk6IFB1cm9JbWFnZUlbXSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIGltYWdlcz8uc29tZSgoaW1nKSA9PiBpbWcgIT09IHVuZGVmaW5lZCAmJiBpbWcgIT09IG51bGwpXHJcbiAgICAgICAgICAgID8gaW1hZ2VzPy5tYXAoKGltZykgPT4gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSEpXHJcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2VuZXJhdGVBZ2VzT3B0aW9ucyhtYXhMZW5ndGg6IG51bWJlciwgbWluTGVuZ3RoID0gMCk6IGFueVtdIHtcclxuICAgICAgICBjb25zdCBvcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSBtaW5MZW5ndGg7IGkgPD0gbWF4TGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgb3B0aW9ucy5wdXNoKHsgY29kZTogaSwgbmFtZTogaSA8IDEwID8gYDAke2l9YCA6IGAke2l9YCB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwQ29tcG9uZW50czxUPihcclxuICAgICAgICBib2R5OiBhbnlbXSxcclxuICAgICAgICBhZGRvbnM/OiBDb21wb25lbnRzQWRkb25zXHJcbiAgICApOiBCb2R5Q29tcG9uZW50PFQ+W10ge1xyXG4gICAgICAgIGNvbnN0IGJvZHlNYXBwZWQ6IEJvZHlDb21wb25lbnQ8VD5bXSA9IGJvZHkubWFwKChjb21wb25lbnQpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50TWFwcGVkOiBCb2R5Q29tcG9uZW50PFQ+ID0ge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogY29tcG9uZW50Py5uYW1lPy50b0xvd2VyQ2FzZSgpLFxyXG4gICAgICAgICAgICAgICAgb3JkZXI6IGNvbXBvbmVudD8ub3JkZXIsXHJcbiAgICAgICAgICAgICAgICBwcm9wczogY29tcG9uZW50Py5wcm9wcyxcclxuICAgICAgICAgICAgfSBhcyBCb2R5Q29tcG9uZW50PFQ+O1xyXG5cclxuICAgICAgICAgICAgaWYgKGNvbXBvbmVudCAmJiBjb21wb25lbnQ/Lm5hbWUgJiYgY29tcG9uZW50Py5wcm9wcykge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dhbGxlcnknOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHYWxsZXJ5KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWQzY29sZmlsdGVyJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDNjb2xGaWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2JpZyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9CaWcoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyMWNvbCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNsaWRlcjFjb2woXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyYmVhY2hzJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRm9vdGVyQmVhY2hzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3RlcmluZm8nOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJJbmZvKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3RlcmhvdGVscyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckhvdGVscyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJsaW5rcyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckxpbmtzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3dlYm1hcCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFdlYm1hcChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3BzbGlkZXInOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUb3BTbGlkZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyQnV0dG9ucygpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYWR2YW50YWdlc3NtYWxsJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQWR2YW50YWdlc1NtYWxsKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9saXN0JzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0xpc3QoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyM2NvbHJvdW5kJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM0NvbFJvdW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbnRybyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9JbnRybyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIzY29sJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM2NvbChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIyY29sJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyMmNvbChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkNWl0ZW1zJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDVpdGVtcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkNml0ZW1zJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDZpdGVtcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvdmlkZW9yaWdodCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm92aWRlb2xlZnQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvVmlkZW8oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdG9mZmVycyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RuZXdzJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdHJvb21zJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdHJlc3RhdXJhbnRzJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTGlzdEdlbmVyYWwoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnNDA0JzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwNDA0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RoYW5rcyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRoYW5rcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb250YWN0Zm9ybSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENvbnRhY3RGb3JtKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRvbnM/LmNvbnN1bHRUeXBlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb2ZmZXJzc2xpZGVyJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJzU2xpZGVyKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9zZXJ2aWNlcyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9TZXJ2aWNlcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvYmFubmVyJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0Jhbm5lcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzY2hlZHVsZSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNjaGVkdWxlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2FkdmFudGFnZXMnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBZHZhbnRhZ2VzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWQ0aXRlbXMnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHcmlkNGl0ZW1zKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ppZ3phZzJjb2wnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBaaWd6YWcyY29sKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWQzY29sc2xpZGVyJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDNjb2xTbGlkZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3NsaWRlcmxlZnQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvc2xpZGVycmlnaHQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvU2xpZGVyKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luZm9zbGlkZXJsZWZ0J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Bob3Rvc2xpZGVybGVmdCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Bob3Rvc2xpZGVycmlnaHQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBQaG90b1NsaWRlcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwaG90b3NsaWRlcnJpZ2h0J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jhbm5lcjRjb2wnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCYW5uZXI0Q29sKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9nYWxsZXJ5JzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0dhbGxlcnkoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzJjb2wnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvMkNvbChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtYXBsaXN0JzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTWFwTGlzdChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsYW5ndWFnZXNtb2RhbCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcExhbmd1YWdlc01vZGFsKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyYmFubmVyJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJCYW5uZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoY29tcG9uZW50TWFwcGVkLm5hbWUsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gY29tcG9uZW50TWFwcGVkO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gYm9keU1hcHBlZDtcclxuICAgIH1cclxuXHJcbiAgICBtYXBHcmlkM2NvbFNsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0dyaWQzY29sU2xpZGVySSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgeyBob3RlbHMgfSA9IHByb3BzO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGl0ZW1zOiBob3RlbHM/Lm1hcChcclxuICAgICAgICAgICAgICAgIChob3RlbDogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3RlbD8uYnV0dG9uc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICApWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaG90ZWwuaG90ZWxUcmFuc2xhdGlvbnM/LlswXT8ucHJldGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBob3RlbC5ob3RlbFRyYW5zbGF0aW9ucz8uWzBdPy50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdGVsLm11bHRpbWVkaWE/LmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT4gaW1nLmNvdmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0dyaWQzY29sU2xpZGVySXRlbVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIH0gYXMgUHVyb0dyaWQzY29sU2xpZGVySTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBHYWxsZXJ5KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR2FsbGVyeUkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMsIGZpbHRlcnMgfSA9IHByb3BzO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGZpbHRlcjoge1xyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRleHRzPy5uYW1lRmlsdGVyLFxyXG4gICAgICAgICAgICAgICAgb3B0aW9uczogZmlsdGVycz8ubWFwKFxyXG4gICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBpbmRleCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbDogaXRlbS5hbGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb29tOiBpdGVtLnJvb20sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb29tczogaXRlbS5yb29tcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0dhbGxlcnlGaWx0ZXJcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGUsXHJcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcclxuICAgICAgICAgICAgaXRlbXM6IGZpbHRlcnNcclxuICAgICAgICAgICAgICAgIC5yZWR1Y2UoXHJcbiAgICAgICAgICAgICAgICAgICAgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhY2M6IHsgbXVsdGltZWRpYTogYW55W107IGZpbHRlckluZGV4OiBudW1iZXIgfVtdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVySW5kZXg6IG51bWJlclxyXG4gICAgICAgICAgICAgICAgICAgICkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyLm11bHRpbWVkaWEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG11bHRpbWVkaWFXaXRoRmlsdGVyID0gZmlsdGVyLm11bHRpbWVkaWEubWFwKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZmlsdGVySW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFjYyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE6IG11bHRpbWVkaWFXaXRoRmlsdGVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJJbmRleCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgW11cclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIC5mbGF0TWFwKCh7IG11bHRpbWVkaWEgfTogYW55KSA9PiBtdWx0aW1lZGlhKVxyXG4gICAgICAgICAgICAgICAgLm1hcChcclxuICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBpbWc/LmZpbHRlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0dhbGxlcnlJdGVtXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgIH0gYXMgUHVyb0dhbGxlcnlJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcE1hcExpc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9NYXBMaXN0SSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgbXVsdGltZWRpYSwgaG90ZWxzIH0gPSBwcm9wcztcclxuICAgICAgICBsZXQgaXRlbXM6IFB1cm9NYXBMaXN0SXRlbVtdID0gW107XHJcbiAgICAgICAgaWYgKG11bHRpbWVkaWEpIHtcclxuICAgICAgICAgICAgaXRlbXMgPSBtdWx0aW1lZGlhPy5pbWFnZXM/Lm1hcChcclxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWc/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwSW1hZ2U6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvTWFwTGlzdEl0ZW1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGhvdGVscykge1xyXG4gICAgICAgICAgICBpdGVtcyA9IGhvdGVscz8ubWFwKFxyXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT4gaW1nPy5jb3ZlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXBJbWFnZTogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9NYXBMaXN0SXRlbVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlLFxyXG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBtYXBJbWFnZTogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICBpdGVtcyxcclxuICAgICAgICB9IGFzIFB1cm9NYXBMaXN0STtcclxuICAgIH1cclxuXHJcbiAgICBtYXBPZmZlckJhbm5lcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb09mZmVyQmFubmVySSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgaWYgKHByb3BzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMgfSA9IHByb3BzO1xyXG4gICAgICAgICAgICAvL1RPRE86YmFja1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxyXG4gICAgICAgICAgICAgICAgY3VycmVuY3k6ICcnLFxyXG4gICAgICAgICAgICAgICAgZnJvbTogdGV4dHM/LmZyb20sXHJcbiAgICAgICAgICAgICAgICBpbWFnZTogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgcHJpY2U6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIH0gYXMgUHVyb09mZmVyQmFubmVySTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwTGFuZ3VhZ2VzTW9kYWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9MYW5ndWFnZXNNb2RhbEkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGxhbmd1YWdlcyB9ID0gcHJvcHM7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaXRlbXM6IGxhbmd1YWdlcyBhcyBQdXJvTGFuZ3VhZ2VzTW9kYWxJdGVtW10sXHJcbiAgICAgICAgICAgIHNlbGVjdGVkOiBsYW5ndWFnZXMuZmluZChcclxuICAgICAgICAgICAgICAgIChpdGVtOiBQdXJvTGFuZ3VhZ2VzTW9kYWxJdGVtKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uaWQgPT09IHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8uaWRcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZSxcclxuICAgICAgICB9IGFzIFB1cm9MYW5ndWFnZXNNb2RhbEk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwSGVhZGVyKFxyXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXHJcbiAgICAgICAgbWVudTogYW55IHwgdW5kZWZpbmVkXHJcbiAgICApOiBQdXJvSGVhZGVySSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgeyBuYXYgfSA9IG1lbnU7XHJcbiAgICAgICAgY29uc3QgeyB0ZXh0cyB9ID0gcHJvcHM/LmhlYWRlckJ1dHRvbnM/LnByb3BzID8/IHt9O1xyXG4gICAgICAgIGNvbnN0IHsgYm90dG9tTGlua3MgfSA9IG1lbnU/LmxpbmtzID8/IHt9O1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlTWVudTogdGV4dHM/Lm1lbnUsXHJcbiAgICAgICAgICAgIHRpdGxlTGFuZzogdGV4dHM/Lmxhbmd1YWdlLFxyXG4gICAgICAgICAgICBidG5Cb29rOiB0ZXh0cz8uYm9va25vdyxcclxuICAgICAgICAgICAgbmF2TGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxyXG4gICAgICAgICAgICAgICAgbmF2XHJcbiAgICAgICAgICAgICAgICAgICAgPy5tYXAoKGxpbms6IGFueSkgPT4gKHsgLi4ubGluaywgbGFiZWw6IGxpbms/Lm5hbWUgfSkpXHJcbiAgICAgICAgICAgICAgICAgICAgPy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gYT8ub3JkZXIgLSBiPy5vcmRlcilcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgYm90dG9tTGlua3M6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYm90dG9tTGlua3MpLFxyXG4gICAgICAgIH0gYXMgUHVyb0hlYWRlckk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwSW5mb0JpZyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm9CaWdJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlLFxyXG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXHJcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2VzPy5bMF0pLFxyXG4gICAgICAgIH0gYXMgUHVyb0luZm9CaWdJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcFNsaWRlcjFjb2wocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9TbGlkZXIxY29sSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgeyBtdWx0aW1lZGlhLCBidXR0b25zLCB0ZXh0cyB9ID0gcHJvcHM7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxyXG4gICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxyXG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBpdGVtczogbXVsdGltZWRpYT8uaW1hZ2VzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1NsaWRlcjFjb2xJdGVtXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgfSBhcyBQdXJvU2xpZGVyMWNvbEk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwQWR2YW50YWdlcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0FkdmFudGFnZXNJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCB7IEFkdmFudGFnZXMgfSA9IHByb3BzO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGl0ZW1zOiBBZHZhbnRhZ2VzLm1hcChcclxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogaXRlbS5pY29uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvQWR2YW50YWdlc0l0ZW1cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICB9IGFzIFB1cm9BZHZhbnRhZ2VzSTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBaaWd6YWcyY29sKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvWmlnWmFnMmNvbEkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGlmIChwcm9wcykge1xyXG4gICAgICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICBuZFRpdGxlOiB0ZXh0cz8ubmRUaXRsZSxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXh0cz8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxyXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5bMF0pLFxyXG4gICAgICAgICAgICB9IGFzIFB1cm9aaWdaYWcyY29sSTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwR3JpZDRpdGVtcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0dyaWQ0aXRlbXNJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBpZiAoIXByb3BzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMsIG11bHRpbWVkaWEgfSA9IHByb3BzO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIGl0ZW1zOiAoQXJyYXkuaXNBcnJheShtdWx0aW1lZGlhKVxyXG4gICAgICAgICAgICAgICAgPyBtdWx0aW1lZGlhXHJcbiAgICAgICAgICAgICAgICA6IG11bHRpbWVkaWEubXVsdGltZWRpYVxyXG4gICAgICAgICAgICApPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWc/LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGltZz8ubGlua3MpWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nPy5zdWJ0aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9HcmlkNGl0ZW1zSXRlbVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXHJcbiAgICAgICAgfSBhcyBQdXJvR3JpZDRpdGVtc0k7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwSW5mb1ZpZGVvKFxyXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXHJcbiAgICAgICAgbmFtZTogJ2luZm92aWRlb3JpZ2h0JyB8ICdpbmZvdmlkZW9sZWZ0J1xyXG4gICAgKTogUHVyb0luZm9WaWRlb0kgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXHJcbiAgICAgICAgICAgIHJldmVyc2U6IG5hbWUuaW5jbHVkZXMoJ3JpZ2h0JyksXHJcbiAgICAgICAgICAgIHZpZGVvOiB7XHJcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHByb3BzLnZpZGVvPy5zcmMsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBwcm9wcy52aWRlbz8udHlwZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9IGFzIFB1cm9JbmZvVmlkZW9JO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEJyZWFkY3J1bWJzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQnJlYWRjcnVtYkkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGxpbmtzOiAocHJvcHM/Lml0ZW1zIGFzIGFueVtdKVxyXG4gICAgICAgICAgICAgICAgPy5zb3J0KChhLCBiKSA9PiBhIC0gYilcclxuICAgICAgICAgICAgICAgID8ubWFwKFxyXG4gICAgICAgICAgICAgICAgICAgIChpdGVtKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0/LmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0/LnVybFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbT8udXJsPy5jaGFyQXQoaXRlbT8udXJsPy5sZW5ndGggLSAxKSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW0/LnVybD8uc2xpY2UoMCwgLTEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbT8udXJsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9CdXR0b25JXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgIH0gYXMgUHVyb0JyZWFkY3J1bWJJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEZvb3RlckluZm8ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Gb290ZXJJbmZvSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgaWYgKHByb3BzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFkZHJlc3MgPSBwcm9wcz8uYWRkcmVzc1swXTtcclxuICAgICAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucywgbGlua3MsIHNvY2lhbE1lZGlhLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGFkZHJlc3NJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZUFkZHJlc3MsXHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogYCR7YWRkcmVzcz8uYWRkcmVzcyA/PyAnJ30sICR7YWRkcmVzcz8uY2l0eSA/PyAnJ30sICR7YWRkcmVzcz8uY3AgPz8gJyd9ICR7YWRkcmVzcy5wcm92aW5jZSA/PyAnJ31gLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcclxuICAgICAgICAgICAgICAgIGNvbnRhY3RJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzPy5jb250YWN0TGlua3M/LlswXVxyXG4gICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlQ29udGFjdCxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5sb2dvPy5bMF0pLFxyXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZT8uWzBdKSxcclxuICAgICAgICAgICAgICAgIG5ld3NsZXR0ZXJJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZU5ld3NsZXR0ZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9ucz8uWzFdXHJcbiAgICAgICAgICAgICAgICAgICAgKVswXSxcclxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25zTGluazogdGV4dHM/Lm5ld3NsZXR0ZXJDb25kaXRpb25zLFxyXG4gICAgICAgICAgICAgICAgICAgIGlucHV0UGxhY2Vob2xkZXI6IHRleHRzPy5uZXdzbGV0dGVyUGxhY2Vob2xkZXIsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc29jaWFsTWVkaWE6IHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlU29jaWFsTWVkaWEsXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IHNvY2lhbE1lZGlhPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IFV0aWxzLm1hcFNvY2lhbGNvbnMoaXRlbT8ubmFtZT8udG9Mb3dlckNhc2UoKSksXHJcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICAgICAgfSBhcyBQdXJvRm9vdGVySW5mb1NvY2lhbE1lZGlhSW5mbyxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIH0gYXMgUHVyb0Zvb3RlckluZm9JO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBtYXBTbGlkZXIzY29sKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvU2xpZGVyM2NvbEkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlcz8ubWFwKFxyXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8uYnV0dG9uc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICApWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaW1nPy5saW5rcylbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1NsaWRlcjNDb2xJdGVtXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXHJcbiAgICAgICAgfSBhcyBQdXJvU2xpZGVyM2NvbEk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwU2xpZGVyMmNvbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NsaWRlcjJjb2xJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5yb29tcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0ubXVsdGltZWRpYT8uWzBdKSxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRleHRzPy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0udGV4dHM/LmRlc2NyaXRpb24sXHJcbiAgICAgICAgICAgICAgICBidXR0b25zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5idXR0b25zKVswXSxcclxuICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKVswXSxcclxuICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIH0pKSxcclxuICAgICAgICB9IGFzIFB1cm9TbGlkZXIyY29sSTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBHcmlkNWl0ZW1zKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR3JpZDVpdGVtc0kgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IGNvbWJpbmVkSW1hZ2VzOiBJbWFnZVJlc3BvbnNlW10gPSBbXTtcclxuICAgICAgICBsZXQgaSA9IDA7XHJcbiAgICAgICAgbGV0IGogPSAwO1xyXG5cclxuICAgICAgICB3aGlsZSAoXHJcbiAgICAgICAgICAgIGkgPCBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VzPy5sZW5ndGggfHxcclxuICAgICAgICAgICAgaiA8IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXNzbWFsbD8ubGVuZ3RoXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGlmIChwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VzPy5baV0pIHtcclxuICAgICAgICAgICAgICAgIGNvbWJpbmVkSW1hZ2VzLnB1c2gocHJvcHMubXVsdGltZWRpYS5pbWFnZXNbaV0pO1xyXG4gICAgICAgICAgICAgICAgaSsrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2Vzc21hbGw/LltqXSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGogPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBjb21iaW5lZEltYWdlcy5wdXNoKHByb3BzLm11bHRpbWVkaWEuaW1hZ2Vzc21hbGxbal0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaisrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbWJpbmVkSW1hZ2VzLnB1c2gocHJvcHMubXVsdGltZWRpYS5pbWFnZXNzbWFsbFsxXSk7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBpdGVtczogY29tYmluZWRJbWFnZXM/Lm1hcChcclxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nLnN1YnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9HcmlkNWl0ZW1zSXRlbVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxyXG4gICAgICAgIH0gYXMgUHVyb0dyaWQ1aXRlbXNJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEdyaWQ2aXRlbXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9HcmlkNml0ZW1zSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIGl0ZW1zOiBbXSxcclxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcclxuICAgICAgICB9IGFzIFB1cm9HcmlkNml0ZW1zSTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBBZHZhbnRhZ2VzU21hbGwoXHJcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxyXG4gICAgKTogUHVyb0FkdmFudGFnZXNTbWFsbEkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGlmICghcHJvcHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaXRlbXM6IChwcm9wcy5zZXJ2aWNlc0FkdmFudGFnZXMgfHwgcHJvcHM/LkFkdmFudGFnZXMpPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUgfHwgaXRlbS50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIChpdGVtLmNsYXNzIHx8IGl0ZW0uaWNvbiksXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0FkdmFudGFnZXNTbWFsbEl0ZW1cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICB9IGFzIFB1cm9BZHZhbnRhZ2VzU21hbGxJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEdyaWQzY29sRmlsdGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR3JpZDNDb2xGaWx0ZXJJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCBkZXN0aW5hdGlvbnMgPSBwcm9wcz8uZGVzdGluYXRpb25zPy5mbGF0KCk7XHJcbiAgICAgICAgY29uc3QgZGVzdGluYXRpb25Db25jYXQgPSBkZXN0aW5hdGlvbnM/LmNvbmNhdChcclxuICAgICAgICAgICAgZGVzdGluYXRpb25zPy5yZWR1Y2UoKGFjYzogYW55W10sIGRlc3RpbmF0aW9uOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhY2MuY29uY2F0KGRlc3RpbmF0aW9uLmhvdGVscyk7XHJcbiAgICAgICAgICAgIH0sIFtdKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgaG90ZWxXaXRoSW1nID0gZGVzdGluYXRpb25zPy5yZWR1Y2UoXHJcbiAgICAgICAgICAgIChhY2M6IGFueVtdLCBkZXN0aW5hdGlvbjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjLmNvbmNhdChcclxuICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbj8uY2hpbGRyZW4/Lm1hcChcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLmhvdGVscz8uWzBdXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgW11cclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IGl0ZW1zID0gZGVzdGluYXRpb25zXHJcbiAgICAgICAgICAgID8ucmVkdWNlKChhY2M6IGFueVtdLCBkZXN0aW5hdGlvbjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjLmNvbmNhdChkZXN0aW5hdGlvbi5ob3RlbHMpO1xyXG4gICAgICAgICAgICB9LCBbXSlcclxuICAgICAgICAgICAgPy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coaXRlbSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3Qge1xyXG4gICAgICAgICAgICAgICAgICAgIGhvdGVsVHJhbnNsYXRpb25zOiBbdHJhbnNsYXRpb25dLFxyXG4gICAgICAgICAgICAgICAgICAgIHBpdm90OiB7IGRlc3RpbmF0aW9uSWQgfSxcclxuICAgICAgICAgICAgICAgIH0gPSBpdGVtO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdHJhbnNsYXRpb24/Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IHRyYW5zbGF0aW9uPy5hZGRpdGlvbmFsMixcclxuICAgICAgICAgICAgICAgICAgICBuZFRpdGxlOiB0cmFuc2xhdGlvbi5hZGRpdGlvbmFsMSxcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGl0ZW0uaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyZW50OiBkZXN0aW5hdGlvbklkLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGU6IG5ldyBEYXRlKHRyYW5zbGF0aW9uLmNyZWF0ZWRBdCkudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKSxcclxuICAgICAgICAgICAgICAgICAgICBpY29uOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBob3RlbFdpdGhJbWdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKChpdGVtSW1nOiBhbnkpID0+IGl0ZW0/LmlkID09PSBpdGVtSW1nPy5pZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubXVsdGltZWRpYT8uZmluZChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PiBpbWcuY292ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgfSBhcyBQdXJvR3JpZDNDb2xGaWx0ZXJJdGVtO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxyXG4gICAgICAgICAgICBpdGVtczogaXRlbXMgfHwgW10sXHJcbiAgICAgICAgICAgIGZpbHRlcjoge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9uczpcclxuICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbkNvbmNhdD8ubWFwKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGVzdDogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBkZXN0LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGRlc3QubmFtZSB8fCBkZXN0Py5uYW1lSWRlbnRpZmllcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgKSB8fCBbXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucyksXHJcbiAgICAgICAgfSBhcyBQdXJvR3JpZDNDb2xGaWx0ZXJJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEZvb3RlckhvdGVscyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Zvb3RlckhvdGVsc0kgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaG90ZWxzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGhvdGVsLmxpbmtzKVswXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGhvdGVsPy50ZXh0cz8ubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGhvdGVsPy50ZXh0cz8ubG9jYXRpb25EZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvRm9vdGVySG90ZWxzSXRlbVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIH0gYXMgUHVyb0Zvb3RlckhvdGVsc0k7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwRm9vdGVyTGlua3MocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Gb290ZXJMaW5rc0kgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGlmIChwcm9wcykge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgaW1nOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHMubXVsdGltZWRpYT8uaW1hZ2U/LlswXSksXHJcbiAgICAgICAgICAgICAgICAgICAgYWx0OiBwcm9wcz8udGV4dHM/Lmljb24sXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzLnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgICAgIG1lbWJlclRpdGxlOiBwcm9wcy50ZXh0cz8ubWVtYmVyVGl0bGUsXHJcbiAgICAgICAgICAgICAgICBtZW1iZXJQcmV0aXRsZTogcHJvcHMudGV4dHM/Lm1lbWJlclByZXRpdGxlLFxyXG4gICAgICAgICAgICAgICAgY29weXJpZ2h0OiBwcm9wcy50ZXh0cz8uY29weXJpZ2h0LFxyXG4gICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHMubGlua3MpLFxyXG4gICAgICAgICAgICB9IGFzIFB1cm9Gb290ZXJMaW5rc0k7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEZvb3RlckJlYWNocyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Zvb3RlckJlYWNoc0kgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaG90ZWxzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKCcvcHVyb2JlYWNoJywgaG90ZWwubGlua3MpWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaG90ZWw/LnRleHRzPy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaG90ZWw/LnRleHRzPy5sb2NhdGlvbkRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9Gb290ZXJCZWFjaHNJdGVtXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgfSBhcyBQdXJvRm9vdGVyQmVhY2hzSTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBJbmZvTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm9MaXN0SSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgbXVsdGltZWRpYSwgQWR2YW50YWdlcyB9ID0gcHJvcHM7XHJcbiAgICAgICAgY29uc3QgeyBiYWNrZ3JvdW5kaW1hZ2UsIGltYWdlLCBzbWFsbGltYWdlIH0gPSBtdWx0aW1lZGlhO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXh0cz8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgIGl0ZW1zOiBBcnJheSguLi4oQWR2YW50YWdlcyB8fCBbXSkpPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnRpdGxlIGFzIHN0cmluZ1xyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltYWdlPy5bMF0pLFxyXG4gICAgICAgICAgICBzbWFsbEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoc21hbGxpbWFnZT8uWzBdKSxcclxuICAgICAgICAgICAgYmFja2dyb3VuZEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoYmFja2dyb3VuZGltYWdlPy5bMF0pLFxyXG4gICAgICAgIH0gYXMgUHVyb0luZm9MaXN0STtcclxuICAgIH1cclxuXHJcbiAgICBtYXBTbGlkZXIzQ29sUm91bmQoXHJcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxyXG4gICAgKTogUHVyb1NsaWRlcjNDb2xSb3VuZEkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMsIG11bHRpbWVkaWEgfSA9IHByb3BzO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIHN1YnRpdGxlOiB0ZXh0cz8uc3VidGl0bGUsXHJcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcclxuICAgICAgICAgICAgaXRlbXM6IG11bHRpbWVkaWE/LmltYWdlcz8ubWFwKFxyXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nPy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8ubGlua3MgfHwgW11cclxuICAgICAgICAgICAgICAgICAgICAgICAgKVswXSxcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU2xpZGVyM0NvbFJvdW5kSXRlbVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjNDb2xSb3VuZEk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwSW5mb0ludHJvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mb0ludHJvSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgaWYgKHByb3BzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMgfSA9IHByb3BzO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZSxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxyXG4gICAgICAgICAgICB9IGFzIFB1cm9JbmZvSW50cm9JO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcFRvcFNsaWRlcihcclxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxyXG4gICAgICAgIGFjdGlvbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWRcclxuICAgICk6IFB1cm9Ub3BTbGlkZXJJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxyXG4gICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlLFxyXG4gICAgICAgICAgICBzcG90aWZ5OiBhY3Rpb25zPy5bJ3Nwb3RpZnknXSwgLy9UT0RPOiBjaGVjayBkYXRhIGZyb20gYmFjaywgSXQgaXMgbm90IGxlZnQgbGlrZSB0aGF0ICcgJywgdG8gZ3VhcmFudGVlIGFuIGFyZWEtbGFiZWwgb24gdGhlIGJ1dHRvblxyXG4gICAgICAgICAgICBmaWRlbGl0eTogYWN0aW9ucz8uWydmaWRlbGl0eSddLFxyXG4gICAgICAgICAgICBuZXdzbGV0dGVyOiBhY3Rpb25zPy5bJ25ld3NsZXR0ZXInXSxcclxuICAgICAgICAgICAgbGFuZ3VhZ2VzOiBhY3Rpb25zPy5bJ2xhbmd1YWdlJ10sXHJcbiAgICAgICAgICAgIHNlbGVjdGVkTGFuZ3VhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmxvY2F0ZT8udG9Mb2NhbGVVcHBlckNhc2UoKSxcclxuICAgICAgICAgICAgdmlkZW86IHVuZGVmaW5lZCwgLy9UT0RPOiBCQUNLXHJcbiAgICAgICAgICAgIG1haW5UaXRsZTogdGV4dHM/Lm1haW5UaXRsZSwgLy9UT0RPOiBCQUNLXHJcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcclxuICAgICAgICAgICAgICAgIG11bHRpbWVkaWE/LmltYWdlcyB8fCBtdWx0aW1lZGlhPy5tdWx0aW1lZGlhXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgfSBhcyBQdXJvVG9wU2xpZGVySTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBJbmZvQmFubmVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mb0Jhbm5lckkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGlmIChwcm9wcykge1xyXG4gICAgICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICBpdGVtczogbXVsdGltZWRpYT8uaW1hZ2U/Lm1hcChcclxuICAgICAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nLmJ1dHRvbnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nPy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWc/LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvSW5mb0Jhbm5lckl0ZW1cclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIH0gYXMgUHVyb0luZm9CYW5uZXJJO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcFNjaGVkdWxlKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvU2NoZWR1bGVJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBpZiAocHJvcHMpIHtcclxuICAgICAgICAgICAgY29uc3QgeyB0ZXh0cywgQWR2YW50YWdlcyB9ID0gcHJvcHM7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgaXRlbXM6IEFycmF5KC4uLihBZHZhbnRhZ2VzIHx8IFtdKSk/Lm1hcChcclxuICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtPy5pY29ufWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8udGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1NjaGVkdWxlSXRlbVxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgfSBhcyBQdXJvU2NoZWR1bGVJO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEluZm9TZXJ2aWNlcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm9TZXJ2aWNlc0kgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIEFkdmFudGFnZXMsIG11bHRpbWVkaWEsIGJ1dHRvbnMgfSA9IHByb3BzO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcclxuICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LmltYWdlcyB8fCBbXSksXHJcbiAgICAgICAgICAgIGl0ZW1zOiBBZHZhbnRhZ2VzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbT8uaWNvbn1gLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9JbmZvU2VydmljZXNJdGVtXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgfSBhcyBQdXJvSW5mb1NlcnZpY2VzSTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBMaXN0R2VuZXJhbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogYW55IHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBpZiAoIXByb3BzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB7IG9mZmVycywgcm9vbXMsIG11bHRpbWVkaWEsIGhvdGVscywgdGV4dHMsIGJ1dHRvbnMgfSA9IHByb3BzO1xyXG4gICAgICAgIGxldCBpdGVtczogUHVyb0xpc3RHZW5lcmFsSXRlbVtdID0gW107XHJcblxyXG4gICAgICAgIGlmIChvZmZlcnMpIHtcclxuICAgICAgICAgICAgaXRlbXMgPSBwcm9wcz8ub2ZmZXJzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAob2ZmZXI6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogb2ZmZXI/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG9mZmVyPy50ZXh0cz8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZmVyLm11bHRpbWVkaWEgfHwgW11cclxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBvZmZlcj8ubGlua3MpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBvZmZlcj8uYnV0dG9ucyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0xpc3RHZW5lcmFsSXRlbVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocm9vbXMpIHtcclxuICAgICAgICAgICAgaXRlbXMgPSByb29tcz8ubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgdGV4dHMsIGVxdWlwbWVudCwgbXVsdGltZWRpYSB9ID0gaXRlbTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXh0cz8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgIGVxdWlwbWVudDogZXF1aXBtZW50Py5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIGl0ZW0/LmNsYXNzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhKSxcclxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaXRlbT8ubGlua3MpWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmJ1dHRvbnMpLFxyXG4gICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICB9IGFzIFB1cm9MaXN0R2VuZXJhbEl0ZW07XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaG90ZWxzKSB7XHJcbiAgICAgICAgICAgIGl0ZW1zID0gaG90ZWxzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaG90ZWw/LnRleHRzPy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaG90ZWw/LnRleHRzPy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGhvdGVsPy50ZXh0cz8uc3VidGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBob3RlbD8udGV4dHM/LnByZXRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoaG90ZWw/Lm11bHRpbWVkaWEpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGhvdGVsPy5saW5rcylbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGhvdGVsPy5idXR0b25zKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvTGlzdEdlbmVyYWxJdGVtXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChtdWx0aW1lZGlhKSB7XHJcbiAgICAgICAgICAgIGl0ZW1zID0gW1xyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRleHRzPy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE/LmltYWdlcyB8fCBbXVxyXG4gICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogWy4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucyldLFxyXG4gICAgICAgICAgICAgICAgfSBhcyBQdXJvTGlzdEdlbmVyYWxJdGVtLFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgaXRlbXMsXHJcbiAgICAgICAgfSBhcyBQdXJvTGlzdEdlbmVyYWxJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEVuZ2luZShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0VuZ2luZUkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGJ1dHRvbjogeyBsYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvclN1Ym1pdCwgdXJsOiBwcm9wcz8udXJsIH0sXHJcbiAgICAgICAgICAgIGRhdGVwaWNrZXJJbjoge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JEYXRlVGl0bGU/LnNwbGl0KCctJyk/LlswXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGF0ZXBpY2tlck91dDoge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JEYXRlVGl0bGU/LnNwbGl0KCctJyk/LlsxXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZ3Vlc3RzSW5wdXQ6IHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yR3Vlc3RzSW5wdXRIb2xkZXIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHByb21vSW5wdXQ6IHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yUHJvbW9Ib2xkZXIsXHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBidG5BcHBseTogeyBsYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvckFwcGx5IH0sXHJcbiAgICAgICAgICAgIGFkdWx0c0Ryb3Bkb3duOiB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckFkdWx0c1RpdGxlLFxyXG4gICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKHByb3BzPy5tYXhBZHVsdHMsIDEpLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBraWRzRHJvcGRvd246IHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yS2lkc1RpdGxlLFxyXG4gICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKHByb3BzPy5tYXhDaGlsZHJlbiksXHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvclRpdGxlLFxyXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvclN1YnRpdGxlLFxyXG4gICAgICAgICAgICB1cmw6IHByb3BzPy51cmwsXHJcbiAgICAgICAgICAgIGhvdGVsOiBwcm9wcz8uaG90ZWxzPy5bMF0sXHJcbiAgICAgICAgfSBhcyBQdXJvRW5naW5lSTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBXZWJtYXAocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9XZWJtYXBJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBsaW5rczogcHJvcHM/LnBhZ2VzXHJcbiAgICAgICAgICAgICAgICAuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAgIChsaW5rOiBQdXJvQnV0dG9uSSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGluay51cmw/LnNwbGl0KCcvJylbMV0gPT09XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8ubG9jYXRlXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICA/Lm1hcChcclxuICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbmsubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogVXRpbHMudXJsVmFsaWRhdGlvbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLnVybCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZXJuYWwnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2ludGVybmFsJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0J1dHRvbklcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxyXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF1cclxuICAgICAgICAgICAgKSBhcyBQdXJvSW1hZ2VJLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgbWFwUGhvdG9TbGlkZXIoXHJcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcclxuICAgICAgICByZXZlcnNlOiBib29sZWFuXHJcbiAgICApOiBQdXJvUGhvdG9TbGlkZXJJIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxyXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlcyB8fCBbXSksXHJcbiAgICAgICAgICAgIHJldmVyc2UsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBCYW5uZXI0Q29sKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQmFubmVyNENvbEkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcclxuICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxyXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlcyB8fCBbXVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICBiaWdiYW5uZXI6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZWJpZ1swXSksXHJcbiAgICAgICAgICAgIGJpZ3RpdGxlOiAnJyxcclxuICAgICAgICB9IGFzIFB1cm9CYW5uZXI0Q29sSTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBDb250YWN0Rm9ybShcclxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxyXG4gICAgICAgIG5kUHJvcHNDb25zdWx0OiBhbnkgfCB1bmRlZmluZWRcclxuICAgICk6IFB1cm9Db250YWN0Rm9ybUkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcclxuICAgICAgICAgICAgY29uZGl0aW9uc0xpbms6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9uc0xpbmssXHJcbiAgICAgICAgICAgIHJlcXVpcmVkTGFiZWw6IHByb3BzPy50ZXh0cz8ucmVxdWlyZWRMYWJlbCxcclxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2U/LlswXSksXHJcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXHJcbiAgICAgICAgICAgIHRleHRhcmVhOiB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dE1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dE1lc3NhZ2VQbGFjZUhvbGRlcixcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY29uZGl0aW9uczogcHJvcHM/LnRleHRzPy5jb25kaXRpb25zLFxyXG4gICAgICAgICAgICBwcm9tb3Rpb25zOiBwcm9wcz8udGV4dHM/LnByb21vdGlvbnMsXHJcbiAgICAgICAgICAgIGRyb3Bkb3duOiB7XHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5kcm9wZG93bixcclxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5ob3RlbHM/Lm1hcChcclxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbmREcm9wZG93bjoge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubmREcm9wZG93bixcclxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IG5kUHJvcHNDb25zdWx0Py5tYXAoXHJcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHByZWZpeDoge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LnByZWZpeGVzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAgICAgKHByZWZpeDogc3RyaW5nKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogQXJyYXkocHJvcHM/LnByZWZpeGVzKS5pbmRleE9mKHByZWZpeCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcmVmaXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgaW5wdXRzOiBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChwcm9wcz8udGV4dHM/LmlucHV0TmFtZSksXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXROYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JSZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0U3VybmFtZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChwcm9wcz8udGV4dHM/LmlucHV0U3VybmFtZXMpLFxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0U3VybmFtZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCksXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yRW1haWwsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dFBob25lKSxcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JScXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIF0gYXMgUHVyb0lucHV0SVtdLFxyXG4gICAgICAgIH0gYXMgUHVyb0NvbnRhY3RGb3JtSTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBJbmZvU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQsIHJldmVyc2U6IGJvb2xlYW4pOiBhbnkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGlmICghcHJvcHMpIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgY29uc3QgeyBtdWx0aW1lZGlhIH0gPSBwcm9wcztcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpdGVtczogKG11bHRpbWVkaWE/LmltYWdlcyB8fCBtdWx0aW1lZGlhPy5tdWx0aW1lZGlhKT8ubWFwKFxyXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZykgYXMgUHVyb0ltYWdlSSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGltZy5zdWJ0aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpbWcuYnV0dG9ucyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpbWcucHJldGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0luZm9TbGlkZXJJdGVtXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHJldmVyc2UsXHJcbiAgICAgICAgfSBhcyBQdXJvSW5mb1NsaWRlckk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwT2ZmZXJzU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBhbnkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm9mZmVycz8ubWFwKFxyXG4gICAgICAgICAgICAgICAgKG9mZmVyOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG9mZmVyPy50ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBvZmZlcj8udGV4dHM/LnN1YnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWc6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgb2ZmZXI/LmxpbmtzKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgb2ZmZXI/LmJ1dHRvbnMpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG9mZmVyLm11bHRpbWVkaWFbMF0pLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9PZmZlclxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgbWFwVGhhbmtzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvVGhhbmtzSSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxyXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF1cclxuICAgICAgICAgICAgKSBhcyBQdXJvSW1hZ2VJLFxyXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxyXG4gICAgICAgIH0gYXMgUHVyb1RoYW5rc0k7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwNDA0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvNDA0SSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgYWRkcmVzcyA9IHByb3BzPy5hZGRyZXNzPy5bMF07XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGl0bGU6IHByb3BzLnRleHRzPy50aXRsZSxcclxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzLnRleHRzPy5zdWJ0aXRsZSxcclxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzLnRleHRzPy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXHJcbiAgICAgICAgICAgIGFkZHJlc3M6IHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZSxcclxuICAgICAgICAgICAgICAgIHRleHQ6IGAke2FkZHJlc3MuYWRkcmVzc308L2JyPiR7YWRkcmVzcy5jaXR5fSAsJHthZGRyZXNzLmNwfSAke2FkZHJlc3MucHJvdmluY2V9YCxcclxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5saW5rcz8uYWRkcmVzcz8uWzBdXHJcbiAgICAgICAgICAgICAgICApWzBdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjb250YWN0OiB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5jb250YWN0VGl0bGUsXHJcbiAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5saW5rcz8uQ29udGFjdD8uWzBdXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uOiB7fSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9IGFzIFB1cm80MDRJO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcEluZm9HYWxsZXJ5KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBhbnkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgbW9yZWluZm86IHByb3BzPy50ZXh0cz8uYWRkaXRpb25hbDEsXHJcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcclxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXMgfHwgW11cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucyksXHJcbiAgICAgICAgICAgIGFkdmFudGFnZXM6IHByb3BzPy5BZHZhbnRhZ2VzPy5tYXAoXHJcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtPy5pY29ufWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy50ZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TY2hlZHVsZUl0ZW1cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICB9IGFzIFB1cm9JbmZvR2FsbGVyeUk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwSW5mbzJDb2wocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JbmZvMkNvbEkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxyXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lml0ZW1zPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0uc3VidGl0bGUsXHJcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0ubGluayksXHJcbiAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0uYnV0dG9ucyksXHJcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0uaW1hZ2UpLFxyXG4gICAgICAgICAgICB9KSksXHJcbiAgICAgICAgfSBhcyBQdXJvSW5mbzJDb2xJO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlUmVzcG9uc2Uge1xyXG4gICAgcGF0aDogSW1hZ2VSZXNwb25zZVBhdGg7XHJcbiAgICB0aHVtYm5haWxzOiB7XHJcbiAgICAgICAgMzc1OiBJbWFnZVJlc3BvbnNlUGF0aDtcclxuICAgICAgICA1NDA6IEltYWdlUmVzcG9uc2VQYXRoO1xyXG4gICAgICAgIDc2ODogSW1hZ2VSZXNwb25zZVBhdGg7XHJcbiAgICAgICAgODAwOiBJbWFnZVJlc3BvbnNlUGF0aDtcclxuICAgICAgICAxMDI0OiBJbWFnZVJlc3BvbnNlUGF0aDtcclxuICAgICAgICAxMjgwOiBJbWFnZVJlc3BvbnNlUGF0aDtcclxuICAgIH07XHJcbiAgICBjb3ZlcjogbnVtYmVyO1xyXG4gICAgdGFncz86IGFueVtdO1xyXG4gICAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgICBwcmV0aXRsZT86IHN0cmluZztcclxuICAgIHN1YnRpdGxlPzogc3RyaW5nO1xyXG4gICAgbmRUaXRsZT86IHN0cmluZztcclxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xyXG4gICAgbGlua3M/OiBhbnlbXTtcclxuICAgIGJ1dHRvbnM/OiBhbnlbXTtcclxuICAgIGFsdD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJbWFnZVJlc3BvbnNlUGF0aCB7XHJcbiAgICBvcmlnaW5hbDogc3RyaW5nO1xyXG4gICAgd2VicDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudHNBZGRvbnMge1xyXG4gICAgY29udGFjdE9mZmljZT86IGFueTtcclxuICAgIGNvbnN1bHRUeXBlPzogQ29uc3VsdFR5cGU7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyT3B0aW9uIHtcclxuICAgIGlkPzogbnVtYmVyO1xyXG4gICAgbmFtZT86IHN0cmluZztcclxuICAgIGNoaWxkcmVuPzogRmlsdGVyT3B0aW9uO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3VsdFR5cGUge1xyXG4gICAgY29uc3VsdFR5cGVJZD86IG51bWJlcjtcclxuICAgIElkPzogbnVtYmVyO1xyXG4gICAgbGFuZ3VhZ2VJZD86IG51bWJlcjtcclxuICAgIG5hbWU/OiBzdHJpbmc7XHJcbn1cclxuIl19
@@ -2844,7 +2844,7 @@ class MapperService {
2844
2844
  buttons: Utils.mapButtons(this.siteId(), item?.links),
2845
2845
  icon: '',
2846
2846
  img: this.getImageResponsive(hotelWithImg
2847
- .find((itemImg) => item.id === itemImg.id)
2847
+ .find((itemImg) => item?.id === itemImg?.id)
2848
2848
  ?.multimedia?.find((img) => img.cover)),
2849
2849
  };
2850
2850
  });