ctt-puro 0.46.18 → 0.46.19

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.
@@ -1,6 +1,7 @@
1
1
  import { CommonModule } from '@angular/common';
2
2
  import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
3
3
  import { PuroDynamicHeadingComponent } from '../../shared/puro-dynamic-heading';
4
+ import { PuroScriptDirective } from '../../directives';
4
5
  import * as i0 from "@angular/core";
5
6
  export class PuroFaqsComponent {
6
7
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroFaqsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
@@ -8,7 +9,7 @@ export class PuroFaqsComponent {
8
9
  }
9
10
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroFaqsComponent, decorators: [{
10
11
  type: Component,
11
- args: [{ selector: 'lib-puro-faqs', standalone: true, imports: [CommonModule, PuroDynamicHeadingComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"faq\">\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'span'\"\n cssClass=\"faq__title\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n <div class=\"faq__container\">\n @if (items?.length) {\n <div class=\"faq__list\">\n @for (item of items; track $index) {\n <div class=\"faq__item\">\n <div class=\"faq__heading js-accordion\" role=\"button\">\n @if (item.title) {\n <span>{{ item.title }}</span>\n }\n <span class=\"faq__icon\">\n <i class=\"icon-6\"></i>\n </span>\n </div>\n @if (item.content) {\n <div class=\"faq__content\">\n <p>\n {{ item.content }}\n </p>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n</section>\n" }]
12
+ args: [{ selector: 'lib-puro-faqs', standalone: true, imports: [CommonModule, PuroDynamicHeadingComponent, PuroScriptDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"faq\">\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'span'\"\n cssClass=\"faq__title\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n <div class=\"faq__container\">\n @if (items?.length) {\n <div class=\"faq__list\">\n @for (item of items; track $index) {\n <div class=\"faq__item\">\n <div class=\"faq__heading js-accordion\" role=\"button\">\n @if (item.title) {\n <span>{{ item.title }}</span>\n }\n <span class=\"faq__icon\">\n <i class=\"icon-6\"></i>\n </span>\n </div>\n @if (item.content) {\n <div class=\"faq__content\">\n <p>\n {{ item.content }}\n </p>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n</section>\n" }]
12
13
  }], propDecorators: { title: [{
13
14
  type: Input
14
15
  }], items: [{
@@ -18,4 +19,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
18
19
  }], textColors: [{
19
20
  type: Input
20
21
  }] } });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1mYXFzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3B1cm8vc3JjL2xpYi9jb21wb25lbnRzL3B1cm8tZmFxcy9wdXJvLWZhcXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1mYXFzL3B1cm8tZmFxcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0FBVWhGLE1BQU0sT0FBTyxpQkFBaUI7K0dBQWpCLGlCQUFpQjttR0FBakIsaUJBQWlCLDZKQ2I5QixteENBbUNBLHlERDNCYyxZQUFZLCtCQUFFLDJCQUEyQjs7NEZBSzFDLGlCQUFpQjtrQkFSN0IsU0FBUzsrQkFDSSxlQUFlLGNBQ2IsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLDJCQUEyQixDQUFDLG1CQUduQyx1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQdXJvVGFnc0ksIFB1cm9UZXh0c0NvbG9yc0kgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFB1cm9EeW5hbWljSGVhZGluZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL3NoYXJlZC9wdXJvLWR5bmFtaWMtaGVhZGluZyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLXB1cm8tZmFxcycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBQdXJvRHluYW1pY0hlYWRpbmdDb21wb25lbnRdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wdXJvLWZhcXMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9wdXJvLWZhcXMuY29tcG9uZW50LnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQdXJvRmFxc0NvbXBvbmVudCB7XG4gICAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgaXRlbXM/OiBQdXJvRmFxc0l0ZW1bXTtcbiAgICBASW5wdXQoKSB0YWdzPzogUHVyb1RhZ3NJO1xuICAgIEBJbnB1dCgpIHRleHRDb2xvcnM/OiBQdXJvVGV4dHNDb2xvcnNJO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1cm9GYXFzSXRlbSB7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgY29udGVudD86IHN0cmluZztcbn1cbiIsIjxzZWN0aW9uIGNsYXNzPVwiZmFxXCI+XG4gICAgQGlmICh0aXRsZSkge1xuICAgICAgICA8bGliLXB1cm8tZHluYW1pYy1oZWFkaW5nXG4gICAgICAgICAgICBbdGFnXT1cInRhZ3M/LnRpdGxlIHx8ICdzcGFuJ1wiXG4gICAgICAgICAgICBjc3NDbGFzcz1cImZhcV9fdGl0bGVcIlxuICAgICAgICAgICAgW2NvbG9yXT1cInRleHRDb2xvcnM/LnRpdGxlXCJcbiAgICAgICAgICAgIFtjb250ZW50XT1cInRpdGxlXCJcbiAgICAgICAgPjwvbGliLXB1cm8tZHluYW1pYy1oZWFkaW5nPlxuICAgIH1cbiAgICA8ZGl2IGNsYXNzPVwiZmFxX19jb250YWluZXJcIj5cbiAgICAgICAgQGlmIChpdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmFxX19saXN0XCI+XG4gICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBpdGVtczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmYXFfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmYXFfX2hlYWRpbmcganMtYWNjb3JkaW9uXCIgcm9sZT1cImJ1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBpdGVtLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhcV9faWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24tNlwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5jb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZhcV9fY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uY29udGVudCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9kaXY+XG48L3NlY3Rpb24+XG4iXX0=
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1mYXFzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3B1cm8vc3JjL2xpYi9jb21wb25lbnRzL3B1cm8tZmFxcy9wdXJvLWZhcXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1mYXFzL3B1cm8tZmFxcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBVXZELE1BQU0sT0FBTyxpQkFBaUI7K0dBQWpCLGlCQUFpQjttR0FBakIsaUJBQWlCLDZKQ2Q5QixteENBbUNBLHlERDFCYyxZQUFZLCtCQUFFLDJCQUEyQjs7NEZBSzFDLGlCQUFpQjtrQkFSN0IsU0FBUzsrQkFDSSxlQUFlLGNBQ2IsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLDJCQUEyQixFQUFFLG1CQUFtQixDQUFDLG1CQUd4RCx1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQdXJvVGFnc0ksIFB1cm9UZXh0c0NvbG9yc0kgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFB1cm9EeW5hbWljSGVhZGluZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL3NoYXJlZC9wdXJvLWR5bmFtaWMtaGVhZGluZyc7XG5pbXBvcnQgeyBQdXJvU2NyaXB0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLXB1cm8tZmFxcycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBQdXJvRHluYW1pY0hlYWRpbmdDb21wb25lbnQsIFB1cm9TY3JpcHREaXJlY3RpdmVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wdXJvLWZhcXMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9wdXJvLWZhcXMuY29tcG9uZW50LnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQdXJvRmFxc0NvbXBvbmVudCB7XG4gICAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgaXRlbXM/OiBQdXJvRmFxc0l0ZW1bXTtcbiAgICBASW5wdXQoKSB0YWdzPzogUHVyb1RhZ3NJO1xuICAgIEBJbnB1dCgpIHRleHRDb2xvcnM/OiBQdXJvVGV4dHNDb2xvcnNJO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1cm9GYXFzSXRlbSB7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgY29udGVudD86IHN0cmluZztcbn1cbiIsIjxzZWN0aW9uIGNsYXNzPVwiZmFxXCI+XG4gICAgQGlmICh0aXRsZSkge1xuICAgICAgICA8bGliLXB1cm8tZHluYW1pYy1oZWFkaW5nXG4gICAgICAgICAgICBbdGFnXT1cInRhZ3M/LnRpdGxlIHx8ICdzcGFuJ1wiXG4gICAgICAgICAgICBjc3NDbGFzcz1cImZhcV9fdGl0bGVcIlxuICAgICAgICAgICAgW2NvbG9yXT1cInRleHRDb2xvcnM/LnRpdGxlXCJcbiAgICAgICAgICAgIFtjb250ZW50XT1cInRpdGxlXCJcbiAgICAgICAgPjwvbGliLXB1cm8tZHluYW1pYy1oZWFkaW5nPlxuICAgIH1cbiAgICA8ZGl2IGNsYXNzPVwiZmFxX19jb250YWluZXJcIj5cbiAgICAgICAgQGlmIChpdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmFxX19saXN0XCI+XG4gICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBpdGVtczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmYXFfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmYXFfX2hlYWRpbmcganMtYWNjb3JkaW9uXCIgcm9sZT1cImJ1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBpdGVtLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhcV9faWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24tNlwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5jb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZhcV9fY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uY29udGVudCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9kaXY+XG48L3NlY3Rpb24+XG4iXX0=
@@ -76,12 +76,12 @@ export class PuroScriptDirective {
76
76
  /* --- Accordion --- */
77
77
  (function (a, $) {
78
78
  if (a.length) {
79
- $('.js-accordion')?.each(function () {
80
- var tab = $(this);
81
- tab.click(function () {
82
- tab.parents('.faq__item').toggleClass('active');
83
- tab.next('.faq__content').slideToggle();
84
- });
79
+ $('.js-accordion')
80
+ .off('click')
81
+ .on('click', function () {
82
+ const tab = $(this);
83
+ tab.parents('.faq__item').toggleClass('active');
84
+ tab.next('.faq__content').slideToggle();
85
85
  });
86
86
  }
87
87
  })(document.querySelectorAll('.js-accordion'), jQuery);
@@ -257,4 +257,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
257
257
  type: Inject,
258
258
  args: [PLATFORM_ID]
259
259
  }] }] });
260
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1zY3JpcHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2RpcmVjdGl2ZXMvcHVyby1zY3JpcHQvcHVyby1zY3JpcHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQVMxRSxNQUFNLE9BQU8sbUJBQW1CO0lBRzVCLFlBQXlDLFVBQWtCO1FBQWxCLGVBQVUsR0FBVixVQUFVLENBQVE7UUFGM0QsZUFBVSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVcsQ0FBQztRQUduQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1IsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUNyQjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFVBQVU7UUFDTixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU87UUFDaEQsSUFBSSxPQUFPLENBQUMsS0FBSyxXQUFXO1lBQUUsT0FBTztRQUVyQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osK0JBQStCO1lBQy9CLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQztZQUN2QixJQUFJO2dCQUNBLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO2dCQUMvQyxJQUFJLFFBQVE7b0JBQUUsV0FBVyxHQUFHLFFBQVEsQ0FBQztxQkFDaEMsSUFBSSxZQUFZLENBQUMs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QztJQUNaLENBQUM7K0dBaFJRLG1CQUFtQixrQkFHUixXQUFXO21HQUh0QixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsVUFBVSxFQUFFLElBQUk7aUJBQ25COzswQkFJZ0IsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBlZmZlY3QsIGlucHV0LCBJbmplY3QsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEYXRlcGlja2VyTG9jYWxlVXRpbCB9IGZyb20gJy4uLy4uL3V0aWxzL2RhdGVwaWNrZXItbG9jYWxlLnV0aWwnO1xuXG5kZWNsYXJlIHZhciAkOiBhbnk7XG5kZWNsYXJlIHZhciBqUXVlcnk6IGFueTtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbc2NyaXB0TG9hZGVyXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgUHVyb1NjcmlwdERpcmVjdGl2ZSB7XG4gICAgZGF0YUxvYWRlZCA9IGlucHV0LnJlcXVpcmVkPGJvb2xlYW4+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCkge1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YUxvYWRlZCgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkU2NyaXB0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGxvYWRTY3JpcHQoKSB7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuICAgICAgICBpZiAodHlwZW9mICQgPT09ICd1bmRlZmluZWQnKSByZXR1cm47XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAvKiDwn4yQIERldGVjdGFyIGlkaW9tYSBhY3Rpdm8gKi9cbiAgICAgICAgICAgIGxldCBjdXJyZW50TGFuZyA9ICdlcyc7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhbmdBdHRyID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lmxhbmc7XG4gICAgICAgICAgICAgICAgaWYgKGxhbmdBdHRyKSBjdXJyZW50TGFuZyA9IGxhbmdBdHRyO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhbmdPYmogPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpISk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsYW5nT2JqLmxvY2F0ZSkgY3VycmVudExhbmcgPSBsYW5nT2JqLmxvY2F0ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHt9XG5cbiAgICAgICAgICAgIC8vIPCflKQgTm9ybWFsaXphciBjw7NkaWdvIGRlIGlkaW9tYSAoc29wb3J0ZSBlcy1FUywgZW4tR0IsIGRlLURFKVxuICAgICAgICAgICAgY3VycmVudExhbmcgPSAoY3VycmVudExhbmcuc3BsaXQoJy0nKVswXSB8fCAnZXMnKSBhcyAnZXMnIHwgJ2VuJyB8ICdkZSc7XG5cbiAgICAgICAgICAgIC8vIPCfl5PvuI8gUmVnaXN0cmFyIGxvY2FsZXMgeSBhcGxpY2FyIGlkaW9tYVxuICAgICAgICAgICAgRGF0ZXBpY2tlckxvY2FsZVV0aWwuc2V0TG9jYWxlKERhdGVwaWNrZXJMb2NhbGVVdGlsLmRldGVjdExhbmd1YWdlKCkpO1xuXG4gICAgICAgICAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAgICAgICogICAgIEzDk0dJQ0EgUFJJTkNJUEFMIERFIFNDUklQVFNcbiAgICAgICAgICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgICAgICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAvKiAtLS0gQXJyb3dzIFBvc2l0aW9uIEZpeCAtLS0gKi9cbiAgICAgICAgICAgICAgICAoZnVuY3Rpb24gKGEsICQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGEubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkKCcuanMtc2xpZGVyX2ZpeC1hcnJvd3MnKT8uZWFjaChmdW5jdGlvbiAodGhpczogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2xpZGVyID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXJyb3dzID0gc2xpZGVyLnNpYmxpbmdzKCcuanMtc2xpZGVyLWFycm93cycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNhbGNfcG9zaXRpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHRfc2VsZWN0b3I7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmluZCgnLmpzLXNsaWRlcl9maXgtYXJyb3dzLXpvbmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uaGFzQ2xhc3MoJ21vYmlsZScpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuaW5uZXJXaWR0aCA8PSAxMjc5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0X3NlbGVjdG9yID0gc2xpZGVyLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy5qcy1zbGlkZXJfZml4LWFycm93cy16b25lLm1vYmlsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbmQoJy5qcy1zbGlkZXJfZml4LWFycm93cy16b25lJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lmhhc0NsYXNzKCdkZXNrdG9wJykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5pbm5lcldpZHRoID49IDEyODBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHRfc2VsZWN0b3IgPSBzbGlkZXI/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy5qcy1zbGlkZXJfZml4LWFycm93cy16b25lLmRlc2t0b3AnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0X3NlbGVjdG9yID0gc2xpZGVyPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuanMtc2xpZGVyX2ZpeC1hcnJvd3Mtem9uZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhlaWdodCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHRfc2VsZWN0b3I/Lm9mZnNldCgpPy50b3AgLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0X3NlbGVjdG9yLnBhcmVudHMoJy5yZWxhdGl2ZScpLm9mZnNldCgpPy50b3AgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0X3NlbGVjdG9yLm91dGVySGVpZ2h0KCkgLyAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJvd3MuY3NzKCd0b3AnLCBoZWlnaHQgKyAncHgnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY19wb3NpdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoY2FsY19wb3NpdGlvbiwgNTAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHdpbmRvdykuc2Nyb2xsKGNhbGNfcG9zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuanMtc2xpZGVyX2ZpeC1hcnJvd3MnKSwgalF1ZXJ5KTtcblxuICAgICAgICAgICAgICAgIC8qIC0tLSBBY2NvcmRpb24gLS0tICovXG4gICAgICAgICAgICAgICAgKGZ1bmN0aW9uIChhLCAkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmpzLWFjY29yZGlvbicpPy5lYWNoKGZ1bmN0aW9uICh0aGlzOiBIVE1MRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0YWIgPSAkKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYi5jbGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYi5wYXJlbnRzKCcuZmFxX19pdGVtJykudG9nZ2xlQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWIubmV4dCgnLmZhcV9fY29udGVudCcpLnNsaWRlVG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5qcy1hY2NvcmRpb24nKSwgalF1ZXJ5KTtcblxuICAgICAgICAgICAgICAgIC8qIC0tLSBCb3RvbmVzIFwiVmVyIG3DoXMgLyBtZW5vc1wiIC0tLSAqL1xuICAgICAgICAgICAgICAgIChmdW5jdGlvbiAoYSwgJCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQoJy5idG5fX21vcmVMZXNzJyk/Lm9uKCdjbGljaycsIGZ1bmN0aW9uICh0aGlzOiBIVE1MRWxlbWVudCwgZTogRXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1dHRvbiA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGJ1dHRvbj8uY2xvc2VzdCgnc2VjdGlvbicpPy5maW5kKCcubW9yZS1jb250ZW50Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VjdGlvbiA9IGJ1dHRvbj8uY2xvc2VzdCgnc2VjdGlvbicpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC5zbGlkZVRvZ2dsZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzSGlkZGVuID0gY29udGVudC5pcygnOmhpZGRlbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLnRvZ2dsZUNsYXNzKCdtb3JlTGVzcy0tYWN0aXZlJywgIWlzSGlkZGVuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSkoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmJ0bl9fbW9yZUxlc3MnKSwgalF1ZXJ5KTtcblxuICAgICAgICAgICAgICAgIC8qIC0tLSBPY3VsdGFyIHRvYXN0IGFsIGhhY2VyIHNjcm9sbCAtLS0gKi9cbiAgICAgICAgICAgICAgICAoZnVuY3Rpb24gKCQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgJGJhbm5lciA9ICQoJy5iYW5uZXInKTtcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tCYW5uZXJWaXNpYmlsaXR5KCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFubmVyVG9wID0gJGJhbm5lci5vZmZzZXQoKT8udG9wID8/IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYW5uZXJCb3R0b20gPSBiYW5uZXJUb3AgKyAoJGJhbm5lci5vdXRlckhlaWdodCgpIGFzIG51bWJlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2aWV3cG9ydFRvcCA9ICQod2luZG93KS5zY3JvbGxUb3AoKSA/PyAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdmlld3BvcnRCb3R0b20gPSB2aWV3cG9ydFRvcCArICQod2luZG93KS5oZWlnaHQoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhbm5lckJvdHRvbSA8PSB2aWV3cG9ydFRvcCB8fCBiYW5uZXJUb3AgPj0gdmlld3BvcnRCb3R0b20pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCdib2R5JykucmVtb3ZlQ2xhc3MoJ3Qtb2ZmZXJzIHRvYXN0cy0tb3BlbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICQod2luZG93KS5vbignc2Nyb2xsIHJlc2l6ZScsIGNoZWNrQmFubmVyVmlzaWJpbGl0eSk7XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrQmFubmVyVmlzaWJpbGl0eSgpO1xuICAgICAgICAgICAgICAgIH0pKGpRdWVyeSk7XG5cbiAgICAgICAgICAgICAgICAvKiAtLS0gU3ViY2FtcG9zIGh1w6lzcGVkZXMgLS0tICovXG4gICAgICAgICAgICAgICAgJCgnLmpzLXBlcnNvbmFzLXN1YmZpZWxkcycpLm9mZignY2xpY2snKS5jbGljayhmdW5jdGlvbiAodGhpczogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5uZXh0KCcuanMtZmllbGRTdWInKS5zbGlkZVRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgJCgnLmpzLWFwcGx5LWd1ZXN0cycpLm9mZignY2xpY2snKS5jbGljayhmdW5jdGlvbiAodGhpczogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9ICQodGhpcykucGFyZW50cygnLmJhbm5lcl9fZmllbGRTdWInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBwYXJzZUludCgkKCcjYWR1bHQnKS52YWwoKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBwYXJzZUludCgkKCcjY2hpbGQnKS52YWwoKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSByICsgYTtcbiAgICAgICAgICAgICAgICAgICAgZS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGUuc2libGluZ3MoJy5qcy1wZXJzb25hcy1zdWJmaWVsZHMnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5iYW5uZXJfX2ZpZWxkQ29udHJvbCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAudGV4dChuIDw9IDkgPyAnMCcgKyBuIDogbik7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAkKCcuanMtYXBwbHktZ3Vlc3RzMScpLm9mZignY2xpY2snKS5jbGljayhmdW5jdGlvbiAodGhpczogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9ICQodGhpcykucGFyZW50cygnLmJvb2tpbmdfX2ZpZWxkU3ViJyksXG4gICAgICAgICAgICAgICAgICAgICAgICByID0gcGFyc2VJbnQoJCgnI2FkdWx0MScpLnZhbCgpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IHBhcnNlSW50KCQoJyNjaGlsZDEnKS52YWwoKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSByICsgYTtcbiAgICAgICAgICAgICAgICAgICAgZS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGUuc2libGluZ3MoJy5qcy1wZXJzb25hcy1zdWJmaWVsZHMnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5ib29raW5nX19maWVsZENvbnRyb2wnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRleHQobiA8PSA5ID8gJzAnICsgbiA6IG4pO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgLyogLS0tIEFjdHVhbGl6YWNpw7NuIGRpbsOhbWljYSBkZSBsYWJlbHMgLS0tICovXG4gICAgICAgICAgICAgICAgJCgnLmJvb2tpbmdfX2ZpZWxkQ29udHJvbFt0eXBlPVwidGV4dFwiXScpLmVhY2goZnVuY3Rpb24gKHRoaXM6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkZWZhdWx0dmFsdWU6IGFueTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgJGZpZWxkSW5uZXIgPSAkKHRoaXMpLnBhcmVudHMoJy5ib29raW5nX19maWVsZElubmVyJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGVmYXVsdHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0dmFsdWUgPSAkZmllbGRJbm5lci5hdHRyKCdzdHlsZScpIHx8ICcnO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5vbigna2V5dXAnLCBmdW5jdGlvbiAodGhpczogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHRMZW5ndGggPSAkKHRoaXMpLnZhbCgpLmxlbmd0aCAqIDEuMztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXh0TGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmllbGRJbm5lci5hdHRyKCdzdHlsZScsIGRlZmF1bHR2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWVsZElubmVyLmNzcygnLS1sYWJlbExlZnRQb3NpdGlvbicsIHRleHRMZW5ndGggKyAncmVtJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgICAgICAgICAgKiAgICAgICAgICBEQVRFUElDS0VSXG4gICAgICAgICAgICAgICAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiAgICAgICAgICAgICAgICBjb25zdCBpbml0RGF0ZXBpY2tlciA9IChzZWxlY3Rvcjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICQoc2VsZWN0b3IpLmVhY2goZnVuY3Rpb24gKHRoaXM6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBcGxpY2FyIGlkaW9tYSBhbnRlcyBkZSBpbmljaWFsaXphcsOnXG4gICAgICAgICAgICAgICAgICAgICAgICBEYXRlcGlja2VyTG9jYWxlVXRpbC5zZXRMb2NhbGUoRGF0ZXBpY2tlckxvY2FsZVV0aWwuZGV0ZWN0TGFuZ3VhZ2UoKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlc3RydWlyIGFudGVyaW9yIHNpIHlhIGV4aXN0w61hXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnaGFzRGF0ZXBpY2tlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5kYXRlcGlja2VyKCdkZXN0cm95Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluaWNpYWxpemFyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmRhdGVwaWNrZXIoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dBbmltOiAnZmFkZUluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VNb250aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VZZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dPdGhlck1vbnRoczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RPdGhlck1vbnRoczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmVTaG93OiBmdW5jdGlvbiAoaW5wdXQ6IEhUTUxFbGVtZW50LCBpbnN0OiBhbnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCAkaW5wdXQgPSAkKGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0T2Zmc2V0ID0gJGlucHV0Lm9mZnNldCgpITtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0SGVpZ2h0ID0gJGlucHV0Lm91dGVySGVpZ2h0KCkhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgJGRwRGl2ID0gaW5zdC5kcERpdjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZHBIZWlnaHQgPSAkZHBEaXYub3V0ZXJIZWlnaHQoKSB8fCAyNjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2aWV3cG9ydFRvcCA9ICQod2luZG93KS5zY3JvbGxUb3AoKSE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9ICQod2luZG93KS5oZWlnaHQoKSE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGFjZUFib3ZlID0gaW5wdXRPZmZzZXQudG9wIC0gdmlld3BvcnRUb3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGFjZUJlbG93ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3cG9ydEhlaWdodCAtIChzcGFjZUFib3ZlICsgaW5wdXRIZWlnaHQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG93QWJvdmUgPSBzcGFjZUFib3ZlID4gc3BhY2VCZWxvdztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRwRGl2LmNzcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBzaG93QWJvdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbnB1dE9mZnNldC50b3AgLSBkcEhlaWdodCAtIDggKyAncHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRPZmZzZXQudG9wICsgaW5wdXRIZWlnaHQgKyA4ICsgJ3B4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBpbnB1dE9mZnNldC5sZWZ0ICsgJ3B4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDk5OTk5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAvLyBJbmljaWFsaXphciBkYXRlcGlja2Vyc1xuICAgICAgICAgICAgICAgIGluaXREYXRlcGlja2VyKCdbZGF0YS10b2dnbGU9XCJkYXRlcGlja2VyXCJdJyk7XG4gICAgICAgICAgICAgICAgaW5pdERhdGVwaWNrZXIoJ1tkYXRhLXRvZ2dsZT1cImRhdGVwaWNrZXIxXCJdJyk7XG5cbiAgICAgICAgICAgICAgICAvLyDwn5SBIFJlYXBsaWNhciBpZGlvbWEgY3VhbmRvIGNhbWJpZSBlbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc3RvcmFnZScsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnbGFuZ3VhZ2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGFuZyA9ICdlcyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2JqID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKSEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqLmxvY2F0ZSkgbGFuZyA9IG9iai5sb2NhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmcgPSAobGFuZy5zcGxpdCgnLScpWzBdIHx8ICdlcycpIGFzICdlcycgfCAnZW4nIHwgJ2RlJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRlcGlja2VyTG9jYWxlVXRpbC5zZXRMb2NhbGUoRGF0ZXBpY2tlckxvY2FsZVV0aWwuZGV0ZWN0TGFuZ3VhZ2UoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdERhdGVwaWNrZXIoJ1tkYXRhLXRvZ2dsZT1cImRhdGVwaWNrZXJcIl0nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0RGF0ZXBpY2tlcignW2RhdGEtdG9nZ2xlPVwiZGF0ZXBpY2tlcjFcIl0nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDMwMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvKiAtLS0gU3BvdGlmeSBQbGF5ZXIgLS0tICovXG4gICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc3BvdGlmeVBsYXllcl9fYWxidW0nKS5mb3JFYWNoKChjb250YWluZXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhdWRpbyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcuc3BvdGlmeVBsYXllcl9fbXAzJykgYXMgYW55O1xuICAgICAgICAgICAgICAgIGNvbnN0IHBsYXlQYXVzZUJ1dHRvbiA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICAgICAnLnNwb3RpZnlQbGF5ZXJfX2FsYnVtUGxheVBhdXNlJ1xuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBwbGF5UGF1c2VCdXR0b24/LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXVkaW8/LnBhdXNlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnNwb3RpZnlQbGF5ZXJfX21wMycpLmZvckVhY2goKG90aGVyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXIgIT09IGF1ZGlvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLnBhdXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG90aGVyQnV0dG9uID0gb3RoZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuc3BvdGlmeVBsYXllcl9fYWxidW0nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJy5zcG90aWZ5UGxheWVyX19hbGJ1bVBsYXlQYXVzZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlckJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCdwbGF5Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wbGF5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwbGF5UGF1c2VCdXR0b24uY2xhc3NMaXN0LmFkZCgncGxheScpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYXlQYXVzZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCdwbGF5Jyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCAxMDApO1xuICAgIH1cbn1cbiJdfQ==
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1zY3JpcHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2RpcmVjdGl2ZXMvcHVyby1zY3JpcHQvcHVyby1zY3JpcHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQVMxRSxNQUFNLE9BQU8sbUJBQW1CO0lBRzVCLFlBQXlDLFVBQWtCO1FBQWxCLGVBQVUsR0FBVixVQUFVLENBQVE7UUFGM0QsZUFBVSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVcsQ0FBQztRQUduQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1IsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUNyQjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFVBQVU7UUFDTixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU87UUFDaEQsSUFBSSxPQUFPLENBQUMsS0FBSyxXQUFXO1lBQUUsT0FBTztRQUVyQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osK0JBQStCO1lBQy9CLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQztZQUN2QixJQUFJO2dCQUNBLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO2dCQUMvQyxJQUFJLFFBQVE7b0JBQUUsV0FBVyxHQUFHLFFBQVEsQ0FBQztxQkFDaEMsSUFBSSxZQUFZLENBQUMs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OytHQWpSUSxtQkFBbUIsa0JBR1IsV0FBVzttR0FIdEIsbUJBQW1COzs0RkFBbkIsbUJBQW1CO2tCQUovQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs7MEJBSWdCLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgZWZmZWN0LCBpbnB1dCwgSW5qZWN0LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGF0ZXBpY2tlckxvY2FsZVV0aWwgfSBmcm9tICcuLi8uLi91dGlscy9kYXRlcGlja2VyLWxvY2FsZS51dGlsJztcblxuZGVjbGFyZSB2YXIgJDogYW55O1xuZGVjbGFyZSB2YXIgalF1ZXJ5OiBhbnk7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3NjcmlwdExvYWRlcl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFB1cm9TY3JpcHREaXJlY3RpdmUge1xuICAgIGRhdGFMb2FkZWQgPSBpbnB1dC5yZXF1aXJlZDxib29sZWFuPigpO1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3QpIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGFMb2FkZWQoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZFNjcmlwdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBsb2FkU2NyaXB0KCkge1xuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcbiAgICAgICAgaWYgKHR5cGVvZiAkID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgLyog8J+MkCBEZXRlY3RhciBpZGlvbWEgYWN0aXZvICovXG4gICAgICAgICAgICBsZXQgY3VycmVudExhbmcgPSAnZXMnO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYW5nQXR0ciA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nO1xuICAgICAgICAgICAgICAgIGlmIChsYW5nQXR0cikgY3VycmVudExhbmcgPSBsYW5nQXR0cjtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsYW5nT2JqID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKSEpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobGFuZ09iai5sb2NhdGUpIGN1cnJlbnRMYW5nID0gbGFuZ09iai5sb2NhdGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7fVxuXG4gICAgICAgICAgICAvLyDwn5SkIE5vcm1hbGl6YXIgY8OzZGlnbyBkZSBpZGlvbWEgKHNvcG9ydGUgZXMtRVMsIGVuLUdCLCBkZS1ERSlcbiAgICAgICAgICAgIGN1cnJlbnRMYW5nID0gKGN1cnJlbnRMYW5nLnNwbGl0KCctJylbMF0gfHwgJ2VzJykgYXMgJ2VzJyB8ICdlbicgfCAnZGUnO1xuXG4gICAgICAgICAgICAvLyDwn5eT77iPIFJlZ2lzdHJhciBsb2NhbGVzIHkgYXBsaWNhciBpZGlvbWFcbiAgICAgICAgICAgIERhdGVwaWNrZXJMb2NhbGVVdGlsLnNldExvY2FsZShEYXRlcGlja2VyTG9jYWxlVXRpbC5kZXRlY3RMYW5ndWFnZSgpKTtcblxuICAgICAgICAgICAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgICAgICAqICAgICBMw5NHSUNBIFBSSU5DSVBBTCBERSBTQ1JJUFRTXG4gICAgICAgICAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gICAgICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgLyogLS0tIEFycm93cyBQb3NpdGlvbiBGaXggLS0tICovXG4gICAgICAgICAgICAgICAgKGZ1bmN0aW9uIChhLCAkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmpzLXNsaWRlcl9maXgtYXJyb3dzJyk/LmVhY2goZnVuY3Rpb24gKHRoaXM6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNsaWRlciA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFycm93cyA9IHNsaWRlci5zaWJsaW5ncygnLmpzLXNsaWRlci1hcnJvd3MnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjYWxjX3Bvc2l0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0X3NlbGVjdG9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbmQoJy5qcy1zbGlkZXJfZml4LWFycm93cy16b25lJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lmhhc0NsYXNzKCdtb2JpbGUnKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmlubmVyV2lkdGggPD0gMTI3OVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodF9zZWxlY3RvciA9IHNsaWRlci5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuanMtc2xpZGVyX2ZpeC1hcnJvd3Mtem9uZS5tb2JpbGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maW5kKCcuanMtc2xpZGVyX2ZpeC1hcnJvd3Mtem9uZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5oYXNDbGFzcygnZGVza3RvcCcpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuaW5uZXJXaWR0aCA+PSAxMjgwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0X3NlbGVjdG9yID0gc2xpZGVyPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuanMtc2xpZGVyX2ZpeC1hcnJvd3Mtem9uZS5kZXNrdG9wJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodF9zZWxlY3RvciA9IHNsaWRlcj8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLmpzLXNsaWRlcl9maXgtYXJyb3dzLXpvbmUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0X3NlbGVjdG9yPy5vZmZzZXQoKT8udG9wIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodF9zZWxlY3Rvci5wYXJlbnRzKCcucmVsYXRpdmUnKS5vZmZzZXQoKT8udG9wICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodF9zZWxlY3Rvci5vdXRlckhlaWdodCgpIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3dzLmNzcygndG9wJywgaGVpZ2h0ICsgJ3B4Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGNfcG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGNhbGNfcG9zaXRpb24sIDUwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh3aW5kb3cpLnNjcm9sbChjYWxjX3Bvc2l0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSkoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmpzLXNsaWRlcl9maXgtYXJyb3dzJyksIGpRdWVyeSk7XG5cbiAgICAgICAgICAgICAgICAvKiAtLS0gQWNjb3JkaW9uIC0tLSAqL1xuICAgICAgICAgICAgICAgIChmdW5jdGlvbiAoYSwgJCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQoJy5qcy1hY2NvcmRpb24nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vZmYoJ2NsaWNrJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAub24oJ2NsaWNrJywgZnVuY3Rpb24gKHRoaXM6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhYiA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYi5wYXJlbnRzKCcuZmFxX19pdGVtJykudG9nZ2xlQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWIubmV4dCgnLmZhcV9fY29udGVudCcpLnNsaWRlVG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuanMtYWNjb3JkaW9uJyksIGpRdWVyeSk7XG5cblxuICAgICAgICAgICAgICAgIC8qIC0tLSBCb3RvbmVzIFwiVmVyIG3DoXMgLyBtZW5vc1wiIC0tLSAqL1xuICAgICAgICAgICAgICAgIChmdW5jdGlvbiAoYSwgJCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQoJy5idG5fX21vcmVMZXNzJyk/Lm9uKCdjbGljaycsIGZ1bmN0aW9uICh0aGlzOiBIVE1MRWxlbWVudCwgZTogRXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1dHRvbiA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGJ1dHRvbj8uY2xvc2VzdCgnc2VjdGlvbicpPy5maW5kKCcubW9yZS1jb250ZW50Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VjdGlvbiA9IGJ1dHRvbj8uY2xvc2VzdCgnc2VjdGlvbicpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC5zbGlkZVRvZ2dsZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzSGlkZGVuID0gY29udGVudC5pcygnOmhpZGRlbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLnRvZ2dsZUNsYXNzKCdtb3JlTGVzcy0tYWN0aXZlJywgIWlzSGlkZGVuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSkoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmJ0bl9fbW9yZUxlc3MnKSwgalF1ZXJ5KTtcblxuICAgICAgICAgICAgICAgIC8qIC0tLSBPY3VsdGFyIHRvYXN0IGFsIGhhY2VyIHNjcm9sbCAtLS0gKi9cbiAgICAgICAgICAgICAgICAoZnVuY3Rpb24gKCQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgJGJhbm5lciA9ICQoJy5iYW5uZXInKTtcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tCYW5uZXJWaXNpYmlsaXR5KCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFubmVyVG9wID0gJGJhbm5lci5vZmZzZXQoKT8udG9wID8/IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYW5uZXJCb3R0b20gPSBiYW5uZXJUb3AgKyAoJGJhbm5lci5vdXRlckhlaWdodCgpIGFzIG51bWJlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2aWV3cG9ydFRvcCA9ICQod2luZG93KS5zY3JvbGxUb3AoKSA/PyAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdmlld3BvcnRCb3R0b20gPSB2aWV3cG9ydFRvcCArICQod2luZG93KS5oZWlnaHQoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhbm5lckJvdHRvbSA8PSB2aWV3cG9ydFRvcCB8fCBiYW5uZXJUb3AgPj0gdmlld3BvcnRCb3R0b20pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCdib2R5JykucmVtb3ZlQ2xhc3MoJ3Qtb2ZmZXJzIHRvYXN0cy0tb3BlbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICQod2luZG93KS5vbignc2Nyb2xsIHJlc2l6ZScsIGNoZWNrQmFubmVyVmlzaWJpbGl0eSk7XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrQmFubmVyVmlzaWJpbGl0eSgpO1xuICAgICAgICAgICAgICAgIH0pKGpRdWVyeSk7XG5cbiAgICAgICAgICAgICAgICAvKiAtLS0gU3ViY2FtcG9zIGh1w6lzcGVkZXMgLS0tICovXG4gICAgICAgICAgICAgICAgJCgnLmpzLXBlcnNvbmFzLXN1YmZpZWxkcycpLm9mZignY2xpY2snKS5jbGljayhmdW5jdGlvbiAodGhpczogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5uZXh0KCcuanMtZmllbGRTdWInKS5zbGlkZVRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgJCgnLmpzLWFwcGx5LWd1ZXN0cycpLm9mZignY2xpY2snKS5jbGljayhmdW5jdGlvbiAodGhpczogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9ICQodGhpcykucGFyZW50cygnLmJhbm5lcl9fZmllbGRTdWInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBwYXJzZUludCgkKCcjYWR1bHQnKS52YWwoKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBwYXJzZUludCgkKCcjY2hpbGQnKS52YWwoKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSByICsgYTtcbiAgICAgICAgICAgICAgICAgICAgZS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGUuc2libGluZ3MoJy5qcy1wZXJzb25hcy1zdWJmaWVsZHMnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5iYW5uZXJfX2ZpZWxkQ29udHJvbCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAudGV4dChuIDw9IDkgPyAnMCcgKyBuIDogbik7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAkKCcuanMtYXBwbHktZ3Vlc3RzMScpLm9mZignY2xpY2snKS5jbGljayhmdW5jdGlvbiAodGhpczogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9ICQodGhpcykucGFyZW50cygnLmJvb2tpbmdfX2ZpZWxkU3ViJyksXG4gICAgICAgICAgICAgICAgICAgICAgICByID0gcGFyc2VJbnQoJCgnI2FkdWx0MScpLnZhbCgpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IHBhcnNlSW50KCQoJyNjaGlsZDEnKS52YWwoKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSByICsgYTtcbiAgICAgICAgICAgICAgICAgICAgZS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGUuc2libGluZ3MoJy5qcy1wZXJzb25hcy1zdWJmaWVsZHMnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5ib29raW5nX19maWVsZENvbnRyb2wnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRleHQobiA8PSA5ID8gJzAnICsgbiA6IG4pO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgLyogLS0tIEFjdHVhbGl6YWNpw7NuIGRpbsOhbWljYSBkZSBsYWJlbHMgLS0tICovXG4gICAgICAgICAgICAgICAgJCgnLmJvb2tpbmdfX2ZpZWxkQ29udHJvbFt0eXBlPVwidGV4dFwiXScpLmVhY2goZnVuY3Rpb24gKHRoaXM6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkZWZhdWx0dmFsdWU6IGFueTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgJGZpZWxkSW5uZXIgPSAkKHRoaXMpLnBhcmVudHMoJy5ib29raW5nX19maWVsZElubmVyJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGVmYXVsdHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0dmFsdWUgPSAkZmllbGRJbm5lci5hdHRyKCdzdHlsZScpIHx8ICcnO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5vbigna2V5dXAnLCBmdW5jdGlvbiAodGhpczogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHRMZW5ndGggPSAkKHRoaXMpLnZhbCgpLmxlbmd0aCAqIDEuMztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXh0TGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmllbGRJbm5lci5hdHRyKCdzdHlsZScsIGRlZmF1bHR2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWVsZElubmVyLmNzcygnLS1sYWJlbExlZnRQb3NpdGlvbicsIHRleHRMZW5ndGggKyAncmVtJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgICAgICAgICAgKiAgICAgICAgICBEQVRFUElDS0VSXG4gICAgICAgICAgICAgICAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiAgICAgICAgICAgICAgICBjb25zdCBpbml0RGF0ZXBpY2tlciA9IChzZWxlY3Rvcjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICQoc2VsZWN0b3IpLmVhY2goZnVuY3Rpb24gKHRoaXM6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBcGxpY2FyIGlkaW9tYSBhbnRlcyBkZSBpbmljaWFsaXphcsOnXG4gICAgICAgICAgICAgICAgICAgICAgICBEYXRlcGlja2VyTG9jYWxlVXRpbC5zZXRMb2NhbGUoRGF0ZXBpY2tlckxvY2FsZVV0aWwuZGV0ZWN0TGFuZ3VhZ2UoKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlc3RydWlyIGFudGVyaW9yIHNpIHlhIGV4aXN0w61hXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnaGFzRGF0ZXBpY2tlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5kYXRlcGlja2VyKCdkZXN0cm95Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluaWNpYWxpemFyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmRhdGVwaWNrZXIoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dBbmltOiAnZmFkZUluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VNb250aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VZZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dPdGhlck1vbnRoczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RPdGhlck1vbnRoczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmVTaG93OiBmdW5jdGlvbiAoaW5wdXQ6IEhUTUxFbGVtZW50LCBpbnN0OiBhbnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCAkaW5wdXQgPSAkKGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0T2Zmc2V0ID0gJGlucHV0Lm9mZnNldCgpITtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0SGVpZ2h0ID0gJGlucHV0Lm91dGVySGVpZ2h0KCkhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgJGRwRGl2ID0gaW5zdC5kcERpdjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZHBIZWlnaHQgPSAkZHBEaXYub3V0ZXJIZWlnaHQoKSB8fCAyNjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2aWV3cG9ydFRvcCA9ICQod2luZG93KS5zY3JvbGxUb3AoKSE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9ICQod2luZG93KS5oZWlnaHQoKSE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGFjZUFib3ZlID0gaW5wdXRPZmZzZXQudG9wIC0gdmlld3BvcnRUb3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGFjZUJlbG93ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3cG9ydEhlaWdodCAtIChzcGFjZUFib3ZlICsgaW5wdXRIZWlnaHQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG93QWJvdmUgPSBzcGFjZUFib3ZlID4gc3BhY2VCZWxvdztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRwRGl2LmNzcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBzaG93QWJvdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbnB1dE9mZnNldC50b3AgLSBkcEhlaWdodCAtIDggKyAncHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRPZmZzZXQudG9wICsgaW5wdXRIZWlnaHQgKyA4ICsgJ3B4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBpbnB1dE9mZnNldC5sZWZ0ICsgJ3B4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDk5OTk5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAvLyBJbmljaWFsaXphciBkYXRlcGlja2Vyc1xuICAgICAgICAgICAgICAgIGluaXREYXRlcGlja2VyKCdbZGF0YS10b2dnbGU9XCJkYXRlcGlja2VyXCJdJyk7XG4gICAgICAgICAgICAgICAgaW5pdERhdGVwaWNrZXIoJ1tkYXRhLXRvZ2dsZT1cImRhdGVwaWNrZXIxXCJdJyk7XG5cbiAgICAgICAgICAgICAgICAvLyDwn5SBIFJlYXBsaWNhciBpZGlvbWEgY3VhbmRvIGNhbWJpZSBlbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc3RvcmFnZScsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnbGFuZ3VhZ2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGFuZyA9ICdlcyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2JqID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKSEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqLmxvY2F0ZSkgbGFuZyA9IG9iai5sb2NhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmcgPSAobGFuZy5zcGxpdCgnLScpWzBdIHx8ICdlcycpIGFzICdlcycgfCAnZW4nIHwgJ2RlJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRlcGlja2VyTG9jYWxlVXRpbC5zZXRMb2NhbGUoRGF0ZXBpY2tlckxvY2FsZVV0aWwuZGV0ZWN0TGFuZ3VhZ2UoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdERhdGVwaWNrZXIoJ1tkYXRhLXRvZ2dsZT1cImRhdGVwaWNrZXJcIl0nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0RGF0ZXBpY2tlcignW2RhdGEtdG9nZ2xlPVwiZGF0ZXBpY2tlcjFcIl0nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDMwMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvKiAtLS0gU3BvdGlmeSBQbGF5ZXIgLS0tICovXG4gICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc3BvdGlmeVBsYXllcl9fYWxidW0nKS5mb3JFYWNoKChjb250YWluZXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhdWRpbyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcuc3BvdGlmeVBsYXllcl9fbXAzJykgYXMgYW55O1xuICAgICAgICAgICAgICAgIGNvbnN0IHBsYXlQYXVzZUJ1dHRvbiA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICAgICAnLnNwb3RpZnlQbGF5ZXJfX2FsYnVtUGxheVBhdXNlJ1xuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBwbGF5UGF1c2VCdXR0b24/LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXVkaW8/LnBhdXNlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnNwb3RpZnlQbGF5ZXJfX21wMycpLmZvckVhY2goKG90aGVyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXIgIT09IGF1ZGlvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLnBhdXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG90aGVyQnV0dG9uID0gb3RoZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuc3BvdGlmeVBsYXllcl9fYWxidW0nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJy5zcG90aWZ5UGxheWVyX19hbGJ1bVBsYXlQYXVzZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlckJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCdwbGF5Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wbGF5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwbGF5UGF1c2VCdXR0b24uY2xhc3NMaXN0LmFkZCgncGxheScpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYXlQYXVzZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCdwbGF5Jyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCAxMDApO1xuICAgIH1cbn1cbiJdfQ==