survey-angular-ui 1.9.105 → 1.9.107

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.
Files changed (36) hide show
  1. package/angular-ui.d.ts +3 -1
  2. package/angular-ui.module.d.ts +5 -3
  3. package/base-angular.d.ts +1 -1
  4. package/bundles/survey-angular-ui.umd.js +138 -43
  5. package/bundles/survey-angular-ui.umd.js.map +1 -1
  6. package/components/list/list.component.d.ts +1 -0
  7. package/components/loading-indicator/loading-indicator.component.d.ts +6 -0
  8. package/components/popup/popup-container.component.d.ts +2 -1
  9. package/components/popup/popup.component.d.ts +1 -0
  10. package/components/progress/default/progress.component.d.ts +2 -1
  11. package/errors.component.d.ts +2 -8
  12. package/esm2015/angular-ui.js +4 -2
  13. package/esm2015/angular-ui.module.js +7 -5
  14. package/esm2015/base-angular.js +4 -3
  15. package/esm2015/components/list/list.component.js +5 -1
  16. package/esm2015/components/loading-indicator/loading-indicator.component.js +17 -0
  17. package/esm2015/components/popup/modal-container.component.js +4 -1
  18. package/esm2015/components/popup/popup-container.component.js +13 -8
  19. package/esm2015/components/popup/popup.component.js +10 -1
  20. package/esm2015/components/progress/default/progress.component.js +5 -3
  21. package/esm2015/components-container.component.js +2 -2
  22. package/esm2015/errors.component.js +6 -22
  23. package/esm2015/popup.survey.component.js +5 -1
  24. package/esm2015/question.component.js +2 -2
  25. package/esm2015/questions/file.component.js +9 -8
  26. package/esm2015/questions/multipletext.component.js +3 -6
  27. package/esm2015/questions/multipletextitem.component.js +28 -5
  28. package/esm2015/questions/multipletextrow.component.js +28 -0
  29. package/esm2015/survey-content.component.js +4 -2
  30. package/fesm2015/survey-angular-ui.js +117 -46
  31. package/fesm2015/survey-angular-ui.js.map +1 -1
  32. package/package.json +1 -1
  33. package/popup.survey.component.d.ts +1 -0
  34. package/questions/multipletext.component.d.ts +1 -2
  35. package/questions/multipletextitem.component.d.ts +8 -3
  36. package/questions/multipletextrow.component.d.ts +11 -0
@@ -2,16 +2,39 @@ import { Component, Input } from "@angular/core";
2
2
  import { BaseAngular } from "../base-angular";
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "../survey-string.component";
5
- import * as i2 from "../errors.component";
6
- import * as i3 from "./text.component";
5
+ import * as i2 from "./text.component";
6
+ import * as i3 from "../errors.component";
7
7
  import * as i4 from "@angular/common";
8
8
  export class MultipleTextItemComponent extends BaseAngular {
9
9
  getModel() {
10
- return this.model.editor;
10
+ if (!this.model.isErrorsCell) {
11
+ return this.model.item.editor;
12
+ }
13
+ return null;
14
+ }
15
+ get item() {
16
+ return this.model.item;
17
+ }
18
+ get editor() {
19
+ return this.model.item.editor;
20
+ }
21
+ ngDoCheck() {
22
+ super.ngDoCheck();
23
+ if (this.model.isErrorsCell) {
24
+ this.editor.registerFunctionOnPropertyValueChanged("errors", () => {
25
+ this.update();
26
+ }, "__ngSubscription");
27
+ }
28
+ }
29
+ ngOnDestroy() {
30
+ super.ngOnDestroy();
31
+ if (this.model.isErrorsCell) {
32
+ this.editor.unRegisterFunctionOnPropertyValueChanged("errors", "__ngSubscription");
33
+ }
11
34
  }
12
35
  }
13
36
  MultipleTextItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MultipleTextItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
14
- MultipleTextItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: MultipleTextItemComponent, selector: "'[sv-ng-multipletext-item]'", inputs: { question: "question", model: "model" }, usesInheritance: true, ngImport: i0, template: "<label [class]=\"question.getItemLabelCss(model)\">\n <span [class]=\"question.getItemTitleCss()\">\n <span *ngIf=\" model.editor.isRequireTextBeforeTitle || model.editor.isRequireTextOnStart\"\n [class]=\"question.cssClasses.requiredText\">{{ model.editor.requiredText }}</span>\n <sv-ng-string [model]=\"model.locTitle\"></sv-ng-string>\n <span\n *ngIf=\"model.editor.isRequireTextAfterTitle\"\n [class]=\"question.cssClasses.requiredText\"\n >{{ model.editor.requiredText }}</span\n >\n </span>\n <div [class]=\"question.getItemCss()\" (focusin)=\"model.focusIn()\">\n <div *ngIf=\"model.editor.showErrorOnTop && model.editor.hasVisibleErrors\" [element]=\"model.editor\" sv-ng-errors></div>\n <sv-ng-text-question [model]=\"model.editor\"></sv-ng-text-question>\n <div *ngIf=\"model.editor.showErrorOnBottom && model.editor.hasVisibleErrors\" [element]=\"model.editor\" sv-ng-errors></div>\n </div>\n <div *ngIf=\"model.editor.isErrorsModeTooltip && model.editor.hasVisibleErrors\" [element]=\"model.editor\" [location]=\"'tooltip'\" sv-ng-errors></div>\n</label>", components: [{ type: i1.SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }, { type: i2.ErrorsComponent, selector: "'[sv-ng-errors]'", inputs: ["element", "location"] }, { type: i3.TextQuestionComponent, selector: "sv-ng-text-question" }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
37
+ MultipleTextItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: MultipleTextItemComponent, selector: "'[sv-ng-multipletext-item]'", inputs: { question: "question", model: "model" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"!model.isErrorsCell\">\n <label [class]=\"question.getItemLabelCss(item)\">\n <span [class]=\"question.getItemTitleCss()\">\n <span *ngIf=\" item.editor.isRequireTextBeforeTitle || item.editor.isRequireTextOnStart\"\n [class]=\"question.cssClasses.requiredText\">{{ item.editor.requiredText }}</span>\n <sv-ng-string [model]=\"item.locTitle\"></sv-ng-string>\n <span *ngIf=\"item.editor.isRequireTextAfterTitle\">&nbsp;</span>\n <span *ngIf=\"item.editor.isRequireTextAfterTitle\" [class]=\"question.cssClasses.requiredText\" aria-hidden=\"true\">{{\n item.editor.requiredText }}</span>\n </span>\n <div [class]=\"question.getItemCss()\" (focusin)=\"item.focusIn()\">\n <sv-ng-text-question [model]=\"item.editor\"></sv-ng-text-question>\n </div>\n </label>\n</ng-container>\n<ng-container *ngIf=\"model.isErrorsCell\">\n <div *ngIf=\"item.editor.hasVisibleErrors\" [element]=\"item.editor\" sv-ng-errors></div>\n</ng-container>", components: [{ type: i1.SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }, { type: i2.TextQuestionComponent, selector: "sv-ng-text-question" }, { type: i3.ErrorsComponent, selector: "'[sv-ng-errors]'", inputs: ["element", "location"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
15
38
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MultipleTextItemComponent, decorators: [{
16
39
  type: Component,
17
40
  args: [{
@@ -23,4 +46,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
23
46
  }], model: [{
24
47
  type: Input
25
48
  }] } });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlwbGV0ZXh0aXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcXVlc3Rpb25zL211bHRpcGxldGV4dGl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL3F1ZXN0aW9ucy9tdXRsaXBsZXRleHRpdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBTTlDLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxXQUE4QjtJQUdqRSxRQUFRO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDM0IsQ0FBQzs7dUhBTFUseUJBQXlCOzJHQUF6Qix5QkFBeUIsNElDUnRDLDJsQ0FpQlE7NEZEVEsseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLFdBQVcsRUFBRSxtQ0FBbUM7aUJBQ2pEOzhCQUVVLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTXVsdGlwbGVUZXh0SXRlbU1vZGVsLCBRdWVzdGlvbk11bHRpcGxlVGV4dE1vZGVsLCBRdWVzdGlvblRleHRNb2RlbCB9IGZyb20gXCJzdXJ2ZXktY29yZVwiO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBCYXNlQW5ndWxhciB9IGZyb20gXCIuLi9iYXNlLWFuZ3VsYXJcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIidbc3YtbmctbXVsdGlwbGV0ZXh0LWl0ZW1dJ1wiLFxuICB0ZW1wbGF0ZVVybDogXCIuL211dGxpcGxldGV4dGl0ZW0uY29tcG9uZW50Lmh0bWxcIlxufSlcbmV4cG9ydCBjbGFzcyBNdWx0aXBsZVRleHRJdGVtQ29tcG9uZW50IGV4dGVuZHMgQmFzZUFuZ3VsYXI8UXVlc3Rpb25UZXh0TW9kZWw+IHtcbiAgQElucHV0KCkgcXVlc3Rpb24hOiBRdWVzdGlvbk11bHRpcGxlVGV4dE1vZGVsO1xuICBASW5wdXQoKSBtb2RlbCE6IE11bHRpcGxlVGV4dEl0ZW1Nb2RlbDtcbiAgcHJvdGVjdGVkIGdldE1vZGVsKCk6IFF1ZXN0aW9uVGV4dE1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlbC5lZGl0b3I7XG4gIH1cbn1cbiIsIjxsYWJlbCBbY2xhc3NdPVwicXVlc3Rpb24uZ2V0SXRlbUxhYmVsQ3NzKG1vZGVsKVwiPlxuICA8c3BhbiBbY2xhc3NdPVwicXVlc3Rpb24uZ2V0SXRlbVRpdGxlQ3NzKClcIj5cbiAgICA8c3BhbiAqbmdJZj1cIiBtb2RlbC5lZGl0b3IuaXNSZXF1aXJlVGV4dEJlZm9yZVRpdGxlIHx8IG1vZGVsLmVkaXRvci5pc1JlcXVpcmVUZXh0T25TdGFydFwiXG4gICAgICBbY2xhc3NdPVwicXVlc3Rpb24uY3NzQ2xhc3Nlcy5yZXF1aXJlZFRleHRcIj57eyBtb2RlbC5lZGl0b3IucmVxdWlyZWRUZXh0IH19PC9zcGFuPlxuICAgIDxzdi1uZy1zdHJpbmcgW21vZGVsXT1cIm1vZGVsLmxvY1RpdGxlXCI+PC9zdi1uZy1zdHJpbmc+XG4gICAgPHNwYW5cbiAgICAgICpuZ0lmPVwibW9kZWwuZWRpdG9yLmlzUmVxdWlyZVRleHRBZnRlclRpdGxlXCJcbiAgICAgIFtjbGFzc109XCJxdWVzdGlvbi5jc3NDbGFzc2VzLnJlcXVpcmVkVGV4dFwiXG4gICAgICA+e3sgbW9kZWwuZWRpdG9yLnJlcXVpcmVkVGV4dCB9fTwvc3BhblxuICAgID5cbiAgPC9zcGFuPlxuICA8ZGl2IFtjbGFzc109XCJxdWVzdGlvbi5nZXRJdGVtQ3NzKClcIiAoZm9jdXNpbik9XCJtb2RlbC5mb2N1c0luKClcIj5cbiAgICA8ZGl2ICpuZ0lmPVwibW9kZWwuZWRpdG9yLnNob3dFcnJvck9uVG9wICYmIG1vZGVsLmVkaXRvci5oYXNWaXNpYmxlRXJyb3JzXCIgW2VsZW1lbnRdPVwibW9kZWwuZWRpdG9yXCIgc3YtbmctZXJyb3JzPjwvZGl2PlxuICAgIDxzdi1uZy10ZXh0LXF1ZXN0aW9uIFttb2RlbF09XCJtb2RlbC5lZGl0b3JcIj48L3N2LW5nLXRleHQtcXVlc3Rpb24+XG4gICAgPGRpdiAqbmdJZj1cIm1vZGVsLmVkaXRvci5zaG93RXJyb3JPbkJvdHRvbSAmJiBtb2RlbC5lZGl0b3IuaGFzVmlzaWJsZUVycm9yc1wiIFtlbGVtZW50XT1cIm1vZGVsLmVkaXRvclwiIHN2LW5nLWVycm9ycz48L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJtb2RlbC5lZGl0b3IuaXNFcnJvcnNNb2RlVG9vbHRpcCAmJiBtb2RlbC5lZGl0b3IuaGFzVmlzaWJsZUVycm9yc1wiIFtlbGVtZW50XT1cIm1vZGVsLmVkaXRvclwiIFtsb2NhdGlvbl09XCIndG9vbHRpcCdcIiBzdi1uZy1lcnJvcnM+PC9kaXY+XG48L2xhYmVsPiJdfQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlwbGV0ZXh0aXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcXVlc3Rpb25zL211bHRpcGxldGV4dGl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL3F1ZXN0aW9ucy9tdXRsaXBsZXRleHRpdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQVcsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBTTlDLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxXQUE4QjtJQUdqRSxRQUFRO1FBQ2hCLElBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRTtZQUMzQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUMvQjtRQUNELE9BQU8sSUFBVyxDQUFDO0lBQ3JCLENBQUM7SUFDRCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNoQyxDQUFDO0lBQ1EsU0FBUztRQUNoQixLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbEIsSUFBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRTtZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLHNDQUFzQyxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0JBQ2hFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixDQUFDLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTtTQUN2QjtJQUNILENBQUM7SUFDUSxXQUFXO1FBQ2xCLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQixJQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFO1lBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsd0NBQXdDLENBQUMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLENBQUE7U0FDbkY7SUFDSCxDQUFDOzt1SEE1QlUseUJBQXlCOzJHQUF6Qix5QkFBeUIsNElDUnRDLDgrQkFpQmU7NEZEVEYseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLFdBQVcsRUFBRSxtQ0FBbUM7aUJBQ2pEOzhCQUVVLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTXVsdGlwbGVUZXh0Q2VsbCwgTXVsdGlwbGVUZXh0SXRlbU1vZGVsLCBRdWVzdGlvbk11bHRpcGxlVGV4dE1vZGVsLCBRdWVzdGlvblRleHRNb2RlbCB9IGZyb20gXCJzdXJ2ZXktY29yZVwiO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBEb0NoZWNrLCBJbnB1dCwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEJhc2VBbmd1bGFyIH0gZnJvbSBcIi4uL2Jhc2UtYW5ndWxhclwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiJ1tzdi1uZy1tdWx0aXBsZXRleHQtaXRlbV0nXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vbXV0bGlwbGV0ZXh0aXRlbS5jb21wb25lbnQuaHRtbFwiXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpcGxlVGV4dEl0ZW1Db21wb25lbnQgZXh0ZW5kcyBCYXNlQW5ndWxhcjxRdWVzdGlvblRleHRNb2RlbD4gaW1wbGVtZW50cyBEb0NoZWNrLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBxdWVzdGlvbiE6IFF1ZXN0aW9uTXVsdGlwbGVUZXh0TW9kZWw7XG4gIEBJbnB1dCgpIG1vZGVsITogTXVsdGlwbGVUZXh0Q2VsbDtcbiAgcHJvdGVjdGVkIGdldE1vZGVsKCk6IFF1ZXN0aW9uVGV4dE1vZGVsIHtcbiAgICBpZighdGhpcy5tb2RlbC5pc0Vycm9yc0NlbGwpIHtcbiAgICAgIHJldHVybiB0aGlzLm1vZGVsLml0ZW0uZWRpdG9yO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbCBhcyBhbnk7XG4gIH1cbiAgcHVibGljIGdldCBpdGVtKCk6IE11bHRpcGxlVGV4dEl0ZW1Nb2RlbCB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWwuaXRlbTtcbiAgfVxuICBwdWJsaWMgZ2V0IGVkaXRvcigpOiBRdWVzdGlvblRleHRNb2RlbCB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWwuaXRlbS5lZGl0b3I7XG4gIH1cbiAgb3ZlcnJpZGUgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLm5nRG9DaGVjaygpO1xuICAgIGlmKHRoaXMubW9kZWwuaXNFcnJvcnNDZWxsKSB7XG4gICAgICB0aGlzLmVkaXRvci5yZWdpc3RlckZ1bmN0aW9uT25Qcm9wZXJ0eVZhbHVlQ2hhbmdlZChcImVycm9yc1wiLCAoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgICB9LCBcIl9fbmdTdWJzY3JpcHRpb25cIilcbiAgICB9XG4gIH1cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICBpZih0aGlzLm1vZGVsLmlzRXJyb3JzQ2VsbCkge1xuICAgICAgdGhpcy5lZGl0b3IudW5SZWdpc3RlckZ1bmN0aW9uT25Qcm9wZXJ0eVZhbHVlQ2hhbmdlZChcImVycm9yc1wiLCBcIl9fbmdTdWJzY3JpcHRpb25cIikgICAgXG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIW1vZGVsLmlzRXJyb3JzQ2VsbFwiPlxuICA8bGFiZWwgW2NsYXNzXT1cInF1ZXN0aW9uLmdldEl0ZW1MYWJlbENzcyhpdGVtKVwiPlxuICAgIDxzcGFuIFtjbGFzc109XCJxdWVzdGlvbi5nZXRJdGVtVGl0bGVDc3MoKVwiPlxuICAgICAgPHNwYW4gKm5nSWY9XCIgaXRlbS5lZGl0b3IuaXNSZXF1aXJlVGV4dEJlZm9yZVRpdGxlIHx8IGl0ZW0uZWRpdG9yLmlzUmVxdWlyZVRleHRPblN0YXJ0XCJcbiAgICAgICAgW2NsYXNzXT1cInF1ZXN0aW9uLmNzc0NsYXNzZXMucmVxdWlyZWRUZXh0XCI+e3sgaXRlbS5lZGl0b3IucmVxdWlyZWRUZXh0IH19PC9zcGFuPlxuICAgICAgPHN2LW5nLXN0cmluZyBbbW9kZWxdPVwiaXRlbS5sb2NUaXRsZVwiPjwvc3Ytbmctc3RyaW5nPlxuICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLmVkaXRvci5pc1JlcXVpcmVUZXh0QWZ0ZXJUaXRsZVwiPiZuYnNwOzwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5lZGl0b3IuaXNSZXF1aXJlVGV4dEFmdGVyVGl0bGVcIiBbY2xhc3NdPVwicXVlc3Rpb24uY3NzQ2xhc3Nlcy5yZXF1aXJlZFRleHRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj57e1xuICAgICAgICBpdGVtLmVkaXRvci5yZXF1aXJlZFRleHQgfX08L3NwYW4+XG4gICAgPC9zcGFuPlxuICAgIDxkaXYgW2NsYXNzXT1cInF1ZXN0aW9uLmdldEl0ZW1Dc3MoKVwiIChmb2N1c2luKT1cIml0ZW0uZm9jdXNJbigpXCI+XG4gICAgICA8c3YtbmctdGV4dC1xdWVzdGlvbiBbbW9kZWxdPVwiaXRlbS5lZGl0b3JcIj48L3N2LW5nLXRleHQtcXVlc3Rpb24+XG4gICAgPC9kaXY+XG4gIDwvbGFiZWw+XG48L25nLWNvbnRhaW5lcj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlbC5pc0Vycm9yc0NlbGxcIj5cbiAgPGRpdiAqbmdJZj1cIml0ZW0uZWRpdG9yLmhhc1Zpc2libGVFcnJvcnNcIiBbZWxlbWVudF09XCJpdGVtLmVkaXRvclwiIHN2LW5nLWVycm9ycz48L2Rpdj5cbjwvbmctY29udGFpbmVyPiJdfQ==
@@ -0,0 +1,28 @@
1
+ import { Component, Input } from "@angular/core";
2
+ import { BaseAngular } from "../base-angular";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./multipletextitem.component";
5
+ import * as i2 from "@angular/common";
6
+ export class MultipleTextRowComponent extends BaseAngular {
7
+ getModel() {
8
+ return this.model;
9
+ }
10
+ trackItemBy(_, cell) {
11
+ return "item" + cell.item.editor.id;
12
+ }
13
+ }
14
+ MultipleTextRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MultipleTextRowComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
15
+ MultipleTextRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: MultipleTextRowComponent, selector: "sv-ng-multipletext-row", inputs: { question: "question", model: "model" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <tr [class]=\"question.cssClasses.row\" *ngIf=\"model.isVisible\">\n <ng-container *ngFor=\"let cell of model.cells; trackBy: trackItemBy\">\n <td [class]=\"cell.className\" [question]=\"question\" [model]=\"cell\" sv-ng-multipletext-item></td>\n </ng-container>\n </tr>\n</ng-template>", styles: [":host{display:none}\n"], components: [{ type: i1.MultipleTextItemComponent, selector: "'[sv-ng-multipletext-item]'", inputs: ["question", "model"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MultipleTextRowComponent, decorators: [{
17
+ type: Component,
18
+ args: [{
19
+ selector: "sv-ng-multipletext-row",
20
+ templateUrl: "./multipletextrow.component.html",
21
+ styleUrls: ["../hide-host.scss"]
22
+ }]
23
+ }], propDecorators: { question: [{
24
+ type: Input
25
+ }], model: [{
26
+ type: Input
27
+ }] } });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlwbGV0ZXh0cm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9xdWVzdGlvbnMvbXVsdGlwbGV0ZXh0cm93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9xdWVzdGlvbnMvbXVsdGlwbGV0ZXh0cm93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQU85QyxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsV0FBNEI7SUFHOUQsUUFBUTtRQUNoQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUNELFdBQVcsQ0FBRSxDQUFTLEVBQUUsSUFBc0I7UUFDNUMsT0FBTyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO0lBQ3RDLENBQUM7O3NIQVJVLHdCQUF3QjswR0FBeEIsd0JBQXdCLHVJQ1RyQyx5VkFNYzs0RkRHRCx3QkFBd0I7a0JBTHBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsV0FBVyxFQUFFLGtDQUFrQztvQkFDL0MsU0FBUyxFQUFFLENBQUMsbUJBQW1CLENBQUM7aUJBQ2pDOzhCQUVVLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTXVsdGlwbGVUZXh0Q2VsbCwgTXVsdGlwbGVUZXh0SXRlbU1vZGVsLCBNdXRsaXBsZVRleHRSb3csIFF1ZXN0aW9uTXVsdGlwbGVUZXh0TW9kZWwsIFF1ZXN0aW9uVGV4dE1vZGVsIH0gZnJvbSBcInN1cnZleS1jb3JlXCI7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEJhc2VBbmd1bGFyIH0gZnJvbSBcIi4uL2Jhc2UtYW5ndWxhclwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwic3YtbmctbXVsdGlwbGV0ZXh0LXJvd1wiLFxuICB0ZW1wbGF0ZVVybDogXCIuL211bHRpcGxldGV4dHJvdy5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4uL2hpZGUtaG9zdC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpcGxlVGV4dFJvd0NvbXBvbmVudCBleHRlbmRzIEJhc2VBbmd1bGFyPE11dGxpcGxlVGV4dFJvdz4ge1xuICBASW5wdXQoKSBxdWVzdGlvbiE6IFF1ZXN0aW9uTXVsdGlwbGVUZXh0TW9kZWw7XG4gIEBJbnB1dCgpIG1vZGVsITogTXV0bGlwbGVUZXh0Um93O1xuICBwcm90ZWN0ZWQgZ2V0TW9kZWwoKTogTXV0bGlwbGVUZXh0Um93IHtcbiAgICByZXR1cm4gdGhpcy5tb2RlbDtcbiAgfVxuICB0cmFja0l0ZW1CeSAoXzogbnVtYmVyLCBjZWxsOiBNdWx0aXBsZVRleHRDZWxsKTogc3RyaW5nIHtcbiAgICByZXR1cm4gXCJpdGVtXCIgKyBjZWxsLml0ZW0uZWRpdG9yLmlkO1xuICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI3RlbXBsYXRlPlxuICAgIDx0ciBbY2xhc3NdPVwicXVlc3Rpb24uY3NzQ2xhc3Nlcy5yb3dcIiAqbmdJZj1cIm1vZGVsLmlzVmlzaWJsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjZWxsIG9mIG1vZGVsLmNlbGxzOyB0cmFja0J5OiB0cmFja0l0ZW1CeVwiPlxuICAgICAgICAgICAgPHRkIFtjbGFzc109XCJjZWxsLmNsYXNzTmFtZVwiIFtxdWVzdGlvbl09XCJxdWVzdGlvblwiIFttb2RlbF09XCJjZWxsXCIgc3YtbmctbXVsdGlwbGV0ZXh0LWl0ZW0+PC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC90cj5cbjwvbmctdGVtcGxhdGU+Il19
@@ -39,6 +39,8 @@ export class SurveyContentComponent extends BaseAngular {
39
39
  ngOnDestroy() {
40
40
  super.ngOnDestroy();
41
41
  if (!!this.model) {
42
+ this.model.rootElement = undefined;
43
+ this.model.destroyResizeObserver();
42
44
  this.model.renderCallback = undefined;
43
45
  }
44
46
  }
@@ -54,7 +56,7 @@ export class SurveyContentComponent extends BaseAngular {
54
56
  }
55
57
  }
56
58
  SurveyContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyContentComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
57
- SurveyContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SurveyContentComponent, selector: "survey-content", inputs: { model: "model" }, viewQueries: [{ propertyName: "rootEl", first: true, predicate: ["surveyContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div #surveyContainer *ngIf=\"!!model\" [class]=\"model.getRootCss()\" [style]=\"model.themeVariables\">\n <div *ngIf=\"!!model.renderBackgroundImage\" [class]=\"model.css.rootBackgroundImage\" [style]=\"model.backgroundImageStyle\"></div>\n <form onsubmit=\"return false;\">\n <div class=\"sv_custom_header\" [hidden]=\"model.hasLogo\"></div>\n <div [class]=\"model.css.container\">\n <div *ngIf=\"model.renderedHasHeader\" [class]=\"model.css.header\" [survey]=\"model\" sv-ng-survey-header></div>\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'header', needRenderWrapper: false } }\"></ng-template>\n <div *ngIf=\"model.isShowingPage\" [class]=\"model.bodyContainerCss\">\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'left' } }\"></ng-template>\n <div [class]=\"model.bodyCss\" [style.maxWidth]=\"model.renderedWidth\" [id]=\"model.activePage ? model.activePage.id : ''\">\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'contentTop' } }\"></ng-template>\n <!-- ko if: activePage -->\n <ng-container *ngIf=\"model.activePage\">\n <sv-ng-page [model]=\"model.activePage\" [survey]=\"model\"></sv-ng-page>\n </ng-container>\n <!-- ko if: activePage.rows.length == 0 && $data.emptyPageTemplate -->\n <!-- ko template: { name: emptyPageTemplate, data: $data.emptyPageTemplateData || $data } -->\n <!-- /ko -->\n <!-- /ko -->\n <!-- /ko -->\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'contentBottom' } }\"></ng-template>\n </div>\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'right' } }\"></ng-template>\n </div>\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'footer', needRenderWrapper: false } }\"></ng-template>\n <div *ngIf=\"model.state === 'completed' && model.showCompletedPage\" [class]=\"model.completedCss\"\n [innerHtml]=\"model.processedCompletedHtml\"></div>\n <div *ngIf=\"model.state === 'completedbefore'\" [class]=\"model.css.body\"\n [innerHtml]=\"model.processedCompletedBeforeHtml\"></div>\n <div *ngIf=\"model.state === 'loading'\" [class]=\"model.css.body\" [innerHtml]=\"model.processedLoadingHtml\"></div>\n <div *ngIf=\"model.state === 'empty'\" [class]=\"model.css.bodyEmpty\">{{model.emptySurveyText}}</div>\n </div>\n </form>\n <sv-brand-info *ngIf=\"model.showBrandInfo\"></sv-brand-info>\n <sv-notifier [notifier]=\"model.notifier\"></sv-notifier>\n </div>\n</ng-template>", components: [{ type: i1.SurveyHeaderComponent, selector: "'[sv-ng-survey-header]'", inputs: ["survey"] }, { type: i2.PageComponent, selector: "page, sv-ng-page", inputs: ["model", "survey"] }, { type: i3.BrandInfoComponent, selector: "sv-brand-info" }, { type: i4.NotifierComponent, selector: "sv-notifier", inputs: ["notifier"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
59
+ SurveyContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SurveyContentComponent, selector: "survey-content", inputs: { model: "model" }, viewQueries: [{ propertyName: "rootEl", first: true, predicate: ["surveyContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div #surveyContainer *ngIf=\"!!model\" [class]=\"model.getRootCss()\" [style]=\"model.themeVariables\">\n <div *ngIf=\"!!model.renderBackgroundImage\" [class]=\"model.css.rootBackgroundImage\" [style]=\"model.backgroundImageStyle\"></div>\n <form onsubmit=\"return false;\">\n <div class=\"sv_custom_header\" [hidden]=\"model.hasLogo\"></div>\n <div [class]=\"model.css.container\">\n <div *ngIf=\"model.renderedHasHeader\" [class]=\"model.css.header\" [survey]=\"model\" sv-ng-survey-header></div>\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'header', needRenderWrapper: false } }\"></ng-template>\n <div *ngIf=\"model.isShowingPage\" [class]=\"model.bodyContainerCss\">\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'left' } }\"></ng-template>\n <div [class]=\"model.bodyCss\" [style.maxWidth]=\"model.renderedWidth\" [id]=\"model.activePage ? model.activePage.id : ''\">\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'contentTop' } }\"></ng-template>\n <!-- ko if: activePage -->\n <ng-container *ngIf=\"model.activePage\">\n <sv-ng-page [model]=\"model.activePage\" [survey]=\"model\"></sv-ng-page>\n </ng-container>\n <!-- ko if: activePage.rows.length == 0 && $data.emptyPageTemplate -->\n <!-- ko template: { name: emptyPageTemplate, data: $data.emptyPageTemplateData || $data } -->\n <!-- /ko -->\n <!-- /ko -->\n <!-- /ko -->\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'contentBottom' } }\"></ng-template>\n </div>\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'right' } }\"></ng-template>\n </div>\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'footer', needRenderWrapper: false } }\"></ng-template>\n <div *ngIf=\"model.state === 'completed' && model.showCompletedPage\" [class]=\"model.completedCss\"\n [innerHtml]=\"model.processedCompletedHtml\"></div>\n <div *ngIf=\"model.state === 'completedbefore'\" [class]=\"model.completedBeforeCss\"\n [innerHtml]=\"model.processedCompletedBeforeHtml\"></div>\n <div *ngIf=\"model.state === 'loading'\" [class]=\"model.loadingBodyCss\" [innerHtml]=\"model.processedLoadingHtml\"></div>\n <div *ngIf=\"model.state === 'empty'\" [class]=\"model.css.bodyEmpty\">{{model.emptySurveyText}}</div>\n </div>\n </form>\n <sv-brand-info *ngIf=\"model.showBrandInfo\"></sv-brand-info>\n <sv-notifier [notifier]=\"model.notifier\"></sv-notifier>\n </div>\n</ng-template>", components: [{ type: i1.SurveyHeaderComponent, selector: "'[sv-ng-survey-header]'", inputs: ["survey"] }, { type: i2.PageComponent, selector: "page, sv-ng-page", inputs: ["model", "survey"] }, { type: i3.BrandInfoComponent, selector: "sv-brand-info" }, { type: i4.NotifierComponent, selector: "sv-notifier", inputs: ["notifier"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
58
60
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyContentComponent, decorators: [{
59
61
  type: Component,
60
62
  args: [{
@@ -68,4 +70,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
68
70
  args: ["surveyContainer", { static: false }]
69
71
  }] } });
70
72
  AngularComponentFactory.Instance.registerComponent("survey", SurveyContentComponent);
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VydmV5LWNvbnRlbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N1cnZleS1jb250ZW50LmNvbXBvbmVudC50cyIsIi4uLy4uL3NyYy9zdXJ2ZXktY29udGVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBZSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7QUFLOUQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFdBQXdCO0lBSnBFOztRQU9VLG9CQUFlLEdBQVksS0FBSyxDQUFDO0tBc0MxQztJQXJDVyxRQUFRO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ2tCLGNBQWM7UUFDL0IsSUFBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEdBQVEsU0FBUyxDQUFDO1NBQ3BEO1FBQ0QsSUFBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLEdBQUcsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLENBQUMsQ0FBQztTQUNIO1FBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUNRLFFBQVE7UUFDZixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUU7WUFDaEQsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUNRLFdBQVc7UUFDbEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLElBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBUSxTQUFTLENBQUM7U0FDNUM7SUFDSCxDQUFDO0lBQ0QsZUFBZTtRQUNiLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFDUSxrQkFBa0I7UUFDekIsSUFBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDL0I7UUFDRCxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM3QixDQUFDOztvSEF4Q1Usc0JBQXNCO3dHQUF0QixzQkFBc0Isb05DVG5DLG0zRkFxQ2M7NEZENUJELHNCQUFzQjtrQkFKbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixXQUFXLEVBQUUsaUNBQWlDO2lCQUM3Qzs4QkFFUSxLQUFLO3NCQUFiLEtBQUs7Z0JBQzJDLE1BQU07c0JBQXRELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOztBQXlDakQsdUJBQXVCLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBTdXJ2ZXlNb2RlbCwgU3ZnUmVnaXN0cnkgfSBmcm9tIFwic3VydmV5LWNvcmVcIjtcbmltcG9ydCB7IEJhc2VBbmd1bGFyIH0gZnJvbSBcIi4vYmFzZS1hbmd1bGFyXCI7XG5pbXBvcnQgeyBBbmd1bGFyQ29tcG9uZW50RmFjdG9yeSB9IGZyb20gXCIuL2NvbXBvbmVudC1mYWN0b3J5XCI7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwic3VydmV5LWNvbnRlbnRcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9zdXJ2ZXktY29udGVudC5jb21wb25lbnQuaHRtbFwiXG4gIH0pXG5leHBvcnQgY2xhc3MgU3VydmV5Q29udGVudENvbXBvbmVudCBleHRlbmRzIEJhc2VBbmd1bGFyPFN1cnZleU1vZGVsPiBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIG1vZGVsITogU3VydmV5TW9kZWw7XG4gIEBWaWV3Q2hpbGQoXCJzdXJ2ZXlDb250YWluZXJcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIHJvb3RFbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBwcml2YXRlIGlzU3VydmV5VXBkYXRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgZ2V0TW9kZWwoKTogU3VydmV5TW9kZWwge1xuICAgIHJldHVybiB0aGlzLm1vZGVsO1xuICB9XG4gIHByb3RlY3RlZCBvdmVycmlkZSBvbk1vZGVsQ2hhbmdlZCgpOiB2b2lkIHtcbiAgICBpZighIXRoaXMucHJldmlvdXNNb2RlbCkge1xuICAgICAgdGhpcy5wcmV2aW91c01vZGVsLmRlc3Ryb3lSZXNpemVPYnNlcnZlcigpO1xuICAgICAgdGhpcy5wcmV2aW91c01vZGVsLnJlbmRlckNhbGxiYWNrID0gPGFueT51bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmKCEhdGhpcy5tb2RlbCkge1xuICAgICAgdGhpcy5tb2RlbC5yZW5kZXJDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9O1xuICAgIH1cbiAgICB0aGlzLmlzU3VydmV5VXBkYXRlZCA9IHRydWU7XG4gIH1cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICBpZighIXRoaXMubW9kZWwgJiYgdGhpcy5tb2RlbFtcIm5lZWRSZW5kZXJJY29uc1wiXSkge1xuICAgICAgU3ZnUmVnaXN0cnkucmVuZGVySWNvbnMoKTtcbiAgICB9XG4gIH1cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICBpZighIXRoaXMubW9kZWwpIHtcbiAgICAgIHRoaXMubW9kZWwucmVuZGVyQ2FsbGJhY2sgPSA8YW55PnVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNTdXJ2ZXlVcGRhdGVkID0gdHJ1ZTtcbiAgfVxuICBvdmVycmlkZSBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgaWYoISF0aGlzLm1vZGVsICYmIHRoaXMuaXNTdXJ2ZXlVcGRhdGVkKSB7XG4gICAgICB0aGlzLm1vZGVsLmFmdGVyUmVuZGVyU3VydmV5KHRoaXMucm9vdEVsLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgdGhpcy5tb2RlbC5zdGFydFRpbWVyRnJvbVVJKCk7XG4gICAgfVxuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3Q2hlY2tlZCgpO1xuICB9XG59XG5cbkFuZ3VsYXJDb21wb25lbnRGYWN0b3J5Lkluc3RhbmNlLnJlZ2lzdGVyQ29tcG9uZW50KFwic3VydmV5XCIsIFN1cnZleUNvbnRlbnRDb21wb25lbnQpOyIsIjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGU+XG4gIDxkaXYgI3N1cnZleUNvbnRhaW5lciAqbmdJZj1cIiEhbW9kZWxcIiBbY2xhc3NdPVwibW9kZWwuZ2V0Um9vdENzcygpXCIgW3N0eWxlXT1cIm1vZGVsLnRoZW1lVmFyaWFibGVzXCI+XG4gICAgPGRpdiAqbmdJZj1cIiEhbW9kZWwucmVuZGVyQmFja2dyb3VuZEltYWdlXCIgW2NsYXNzXT1cIm1vZGVsLmNzcy5yb290QmFja2dyb3VuZEltYWdlXCIgW3N0eWxlXT1cIm1vZGVsLmJhY2tncm91bmRJbWFnZVN0eWxlXCI+PC9kaXY+XG4gICAgPGZvcm0gb25zdWJtaXQ9XCJyZXR1cm4gZmFsc2U7XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3ZfY3VzdG9tX2hlYWRlclwiIFtoaWRkZW5dPVwibW9kZWwuaGFzTG9nb1wiPjwvZGl2PlxuICAgICAgPGRpdiBbY2xhc3NdPVwibW9kZWwuY3NzLmNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwibW9kZWwucmVuZGVyZWRIYXNIZWFkZXJcIiBbY2xhc3NdPVwibW9kZWwuY3NzLmhlYWRlclwiIFtzdXJ2ZXldPVwibW9kZWxcIiBzdi1uZy1zdXJ2ZXktaGVhZGVyPjwvZGl2PlxuICAgICAgICA8bmctdGVtcGxhdGUgW2NvbXBvbmVudF09XCJ7IG5hbWU6ICdzdi1jb21wb25lbnRzLWNvbnRhaW5lcicsIGRhdGE6IHsgc3VydmV5OiBtb2RlbCwgY29udGFpbmVyOiAnaGVhZGVyJywgbmVlZFJlbmRlcldyYXBwZXI6IGZhbHNlIH0gfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJtb2RlbC5pc1Nob3dpbmdQYWdlXCIgW2NsYXNzXT1cIm1vZGVsLmJvZHlDb250YWluZXJDc3NcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW2NvbXBvbmVudF09XCJ7IG5hbWU6ICdzdi1jb21wb25lbnRzLWNvbnRhaW5lcicsIGRhdGE6IHsgc3VydmV5OiBtb2RlbCwgY29udGFpbmVyOiAnbGVmdCcgfSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8ZGl2IFtjbGFzc109XCJtb2RlbC5ib2R5Q3NzXCIgW3N0eWxlLm1heFdpZHRoXT1cIm1vZGVsLnJlbmRlcmVkV2lkdGhcIiBbaWRdPVwibW9kZWwuYWN0aXZlUGFnZSA/IG1vZGVsLmFjdGl2ZVBhZ2UuaWQgOiAnJ1wiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtjb21wb25lbnRdPVwieyBuYW1lOiAnc3YtY29tcG9uZW50cy1jb250YWluZXInLCBkYXRhOiB7IHN1cnZleTogbW9kZWwsIGNvbnRhaW5lcjogJ2NvbnRlbnRUb3AnIH0gfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8IS0tIGtvIGlmOiBhY3RpdmVQYWdlIC0tPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZWwuYWN0aXZlUGFnZVwiPlxuICAgICAgICAgICAgICAgICAgPHN2LW5nLXBhZ2UgW21vZGVsXT1cIm1vZGVsLmFjdGl2ZVBhZ2VcIiBbc3VydmV5XT1cIm1vZGVsXCI+PC9zdi1uZy1wYWdlPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPCEtLSBrbyBpZjogYWN0aXZlUGFnZS5yb3dzLmxlbmd0aCA9PSAwICYmICRkYXRhLmVtcHR5UGFnZVRlbXBsYXRlIC0tPlxuICAgICAgICAgICAgICA8IS0tIGtvIHRlbXBsYXRlOiB7IG5hbWU6IGVtcHR5UGFnZVRlbXBsYXRlLCBkYXRhOiAkZGF0YS5lbXB0eVBhZ2VUZW1wbGF0ZURhdGEgfHwgJGRhdGEgfSAtLT5cbiAgICAgICAgICAgICAgPCEtLSAva28gLS0+XG4gICAgICAgICAgICAgIDwhLS0gL2tvIC0tPlxuICAgICAgICAgICAgPCEtLSAva28gLS0+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW2NvbXBvbmVudF09XCJ7IG5hbWU6ICdzdi1jb21wb25lbnRzLWNvbnRhaW5lcicsIGRhdGE6IHsgc3VydmV5OiBtb2RlbCwgY29udGFpbmVyOiAnY29udGVudEJvdHRvbScgfSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW2NvbXBvbmVudF09XCJ7IG5hbWU6ICdzdi1jb21wb25lbnRzLWNvbnRhaW5lcicsIGRhdGE6IHsgc3VydmV5OiBtb2RlbCwgY29udGFpbmVyOiAncmlnaHQnIH0gfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctdGVtcGxhdGUgW2NvbXBvbmVudF09XCJ7IG5hbWU6ICdzdi1jb21wb25lbnRzLWNvbnRhaW5lcicsIGRhdGE6IHsgc3VydmV5OiBtb2RlbCwgY29udGFpbmVyOiAnZm9vdGVyJywgbmVlZFJlbmRlcldyYXBwZXI6IGZhbHNlIH0gfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJtb2RlbC5zdGF0ZSA9PT0gJ2NvbXBsZXRlZCcgJiYgbW9kZWwuc2hvd0NvbXBsZXRlZFBhZ2VcIiBbY2xhc3NdPVwibW9kZWwuY29tcGxldGVkQ3NzXCJcbiAgICAgICAgICBbaW5uZXJIdG1sXT1cIm1vZGVsLnByb2Nlc3NlZENvbXBsZXRlZEh0bWxcIj48L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm1vZGVsLnN0YXRlID09PSAnY29tcGxldGVkYmVmb3JlJ1wiIFtjbGFzc109XCJtb2RlbC5jc3MuYm9keVwiXG4gICAgICAgICAgW2lubmVySHRtbF09XCJtb2RlbC5wcm9jZXNzZWRDb21wbGV0ZWRCZWZvcmVIdG1sXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJtb2RlbC5zdGF0ZSA9PT0gJ2xvYWRpbmcnXCIgW2NsYXNzXT1cIm1vZGVsLmNzcy5ib2R5XCIgW2lubmVySHRtbF09XCJtb2RlbC5wcm9jZXNzZWRMb2FkaW5nSHRtbFwiPjwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwibW9kZWwuc3RhdGUgPT09ICdlbXB0eSdcIiBbY2xhc3NdPVwibW9kZWwuY3NzLmJvZHlFbXB0eVwiPnt7bW9kZWwuZW1wdHlTdXJ2ZXlUZXh0fX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgICA8c3YtYnJhbmQtaW5mbyAqbmdJZj1cIm1vZGVsLnNob3dCcmFuZEluZm9cIj48L3N2LWJyYW5kLWluZm8+XG4gICAgPHN2LW5vdGlmaWVyIFtub3RpZmllcl09XCJtb2RlbC5ub3RpZmllclwiPjwvc3Ytbm90aWZpZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VydmV5LWNvbnRlbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N1cnZleS1jb250ZW50LmNvbXBvbmVudC50cyIsIi4uLy4uL3NyYy9zdXJ2ZXktY29udGVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBZSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7QUFLOUQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFdBQXdCO0lBSnBFOztRQU9VLG9CQUFlLEdBQVksS0FBSyxDQUFDO0tBd0MxQztJQXZDVyxRQUFRO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ2tCLGNBQWM7UUFDL0IsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEdBQVEsU0FBUyxDQUFDO1NBQ3BEO1FBQ0QsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxHQUFHLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixDQUFDLENBQUM7U0FDSDtRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFDUSxRQUFRO1FBQ2YsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQ2pELFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUMzQjtJQUNILENBQUM7SUFDUSxXQUFXO1FBQ2xCLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLFNBQWdCLENBQUM7WUFDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFRLFNBQVMsQ0FBQztTQUM1QztJQUNILENBQUM7SUFDRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUNRLGtCQUFrQjtRQUN6QixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUMvQjtRQUNELEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzdCLENBQUM7O29IQTFDVSxzQkFBc0I7d0dBQXRCLHNCQUFzQixvTkNUbkMsbTRGQXFDYzs0RkQ1QkQsc0JBQXNCO2tCQUpsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFdBQVcsRUFBRSxpQ0FBaUM7aUJBQy9DOzhCQUVVLEtBQUs7c0JBQWIsS0FBSztnQkFDMkMsTUFBTTtzQkFBdEQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7O0FBMkNqRCx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLHNCQUFzQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFN1cnZleU1vZGVsLCBTdmdSZWdpc3RyeSB9IGZyb20gXCJzdXJ2ZXktY29yZVwiO1xuaW1wb3J0IHsgQmFzZUFuZ3VsYXIgfSBmcm9tIFwiLi9iYXNlLWFuZ3VsYXJcIjtcbmltcG9ydCB7IEFuZ3VsYXJDb21wb25lbnRGYWN0b3J5IH0gZnJvbSBcIi4vY29tcG9uZW50LWZhY3RvcnlcIjtcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJzdXJ2ZXktY29udGVudFwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3N1cnZleS1jb250ZW50LmNvbXBvbmVudC5odG1sXCJcbn0pXG5leHBvcnQgY2xhc3MgU3VydmV5Q29udGVudENvbXBvbmVudCBleHRlbmRzIEJhc2VBbmd1bGFyPFN1cnZleU1vZGVsPiBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIG1vZGVsITogU3VydmV5TW9kZWw7XG4gIEBWaWV3Q2hpbGQoXCJzdXJ2ZXlDb250YWluZXJcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIHJvb3RFbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBwcml2YXRlIGlzU3VydmV5VXBkYXRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgZ2V0TW9kZWwoKTogU3VydmV5TW9kZWwge1xuICAgIHJldHVybiB0aGlzLm1vZGVsO1xuICB9XG4gIHByb3RlY3RlZCBvdmVycmlkZSBvbk1vZGVsQ2hhbmdlZCgpOiB2b2lkIHtcbiAgICBpZiAoISF0aGlzLnByZXZpb3VzTW9kZWwpIHtcbiAgICAgIHRoaXMucHJldmlvdXNNb2RlbC5kZXN0cm95UmVzaXplT2JzZXJ2ZXIoKTtcbiAgICAgIHRoaXMucHJldmlvdXNNb2RlbC5yZW5kZXJDYWxsYmFjayA9IDxhbnk+dW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAoISF0aGlzLm1vZGVsKSB7XG4gICAgICB0aGlzLm1vZGVsLnJlbmRlckNhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH07XG4gICAgfVxuICAgIHRoaXMuaXNTdXJ2ZXlVcGRhdGVkID0gdHJ1ZTtcbiAgfVxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIGlmICghIXRoaXMubW9kZWwgJiYgdGhpcy5tb2RlbFtcIm5lZWRSZW5kZXJJY29uc1wiXSkge1xuICAgICAgU3ZnUmVnaXN0cnkucmVuZGVySWNvbnMoKTtcbiAgICB9XG4gIH1cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICBpZiAoISF0aGlzLm1vZGVsKSB7XG4gICAgICB0aGlzLm1vZGVsLnJvb3RFbGVtZW50ID0gdW5kZWZpbmVkIGFzIGFueTtcbiAgICAgIHRoaXMubW9kZWwuZGVzdHJveVJlc2l6ZU9ic2VydmVyKCk7XG4gICAgICB0aGlzLm1vZGVsLnJlbmRlckNhbGxiYWNrID0gPGFueT51bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzU3VydmV5VXBkYXRlZCA9IHRydWU7XG4gIH1cbiAgb3ZlcnJpZGUgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIGlmICghIXRoaXMubW9kZWwgJiYgdGhpcy5pc1N1cnZleVVwZGF0ZWQpIHtcbiAgICAgIHRoaXMubW9kZWwuYWZ0ZXJSZW5kZXJTdXJ2ZXkodGhpcy5yb290RWwubmF0aXZlRWxlbWVudCk7XG4gICAgICB0aGlzLm1vZGVsLnN0YXJ0VGltZXJGcm9tVUkoKTtcbiAgICB9XG4gICAgc3VwZXIubmdBZnRlclZpZXdDaGVja2VkKCk7XG4gIH1cbn1cblxuQW5ndWxhckNvbXBvbmVudEZhY3RvcnkuSW5zdGFuY2UucmVnaXN0ZXJDb21wb25lbnQoXCJzdXJ2ZXlcIiwgU3VydmV5Q29udGVudENvbXBvbmVudCk7IiwiPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZT5cbiAgPGRpdiAjc3VydmV5Q29udGFpbmVyICpuZ0lmPVwiISFtb2RlbFwiIFtjbGFzc109XCJtb2RlbC5nZXRSb290Q3NzKClcIiBbc3R5bGVdPVwibW9kZWwudGhlbWVWYXJpYWJsZXNcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiISFtb2RlbC5yZW5kZXJCYWNrZ3JvdW5kSW1hZ2VcIiBbY2xhc3NdPVwibW9kZWwuY3NzLnJvb3RCYWNrZ3JvdW5kSW1hZ2VcIiBbc3R5bGVdPVwibW9kZWwuYmFja2dyb3VuZEltYWdlU3R5bGVcIj48L2Rpdj5cbiAgICA8Zm9ybSBvbnN1Ym1pdD1cInJldHVybiBmYWxzZTtcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdl9jdXN0b21faGVhZGVyXCIgW2hpZGRlbl09XCJtb2RlbC5oYXNMb2dvXCI+PC9kaXY+XG4gICAgICA8ZGl2IFtjbGFzc109XCJtb2RlbC5jc3MuY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJtb2RlbC5yZW5kZXJlZEhhc0hlYWRlclwiIFtjbGFzc109XCJtb2RlbC5jc3MuaGVhZGVyXCIgW3N1cnZleV09XCJtb2RlbFwiIHN2LW5nLXN1cnZleS1oZWFkZXI+PC9kaXY+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbY29tcG9uZW50XT1cInsgbmFtZTogJ3N2LWNvbXBvbmVudHMtY29udGFpbmVyJywgZGF0YTogeyBzdXJ2ZXk6IG1vZGVsLCBjb250YWluZXI6ICdoZWFkZXInLCBuZWVkUmVuZGVyV3JhcHBlcjogZmFsc2UgfSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm1vZGVsLmlzU2hvd2luZ1BhZ2VcIiBbY2xhc3NdPVwibW9kZWwuYm9keUNvbnRhaW5lckNzc1wiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbY29tcG9uZW50XT1cInsgbmFtZTogJ3N2LWNvbXBvbmVudHMtY29udGFpbmVyJywgZGF0YTogeyBzdXJ2ZXk6IG1vZGVsLCBjb250YWluZXI6ICdsZWZ0JyB9IH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIm1vZGVsLmJvZHlDc3NcIiBbc3R5bGUubWF4V2lkdGhdPVwibW9kZWwucmVuZGVyZWRXaWR0aFwiIFtpZF09XCJtb2RlbC5hY3RpdmVQYWdlID8gbW9kZWwuYWN0aXZlUGFnZS5pZCA6ICcnXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW2NvbXBvbmVudF09XCJ7IG5hbWU6ICdzdi1jb21wb25lbnRzLWNvbnRhaW5lcicsIGRhdGE6IHsgc3VydmV5OiBtb2RlbCwgY29udGFpbmVyOiAnY29udGVudFRvcCcgfSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwhLS0ga28gaWY6IGFjdGl2ZVBhZ2UgLS0+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlbC5hY3RpdmVQYWdlXCI+XG4gICAgICAgICAgICAgICAgICA8c3YtbmctcGFnZSBbbW9kZWxdPVwibW9kZWwuYWN0aXZlUGFnZVwiIFtzdXJ2ZXldPVwibW9kZWxcIj48L3N2LW5nLXBhZ2U+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8IS0tIGtvIGlmOiBhY3RpdmVQYWdlLnJvd3MubGVuZ3RoID09IDAgJiYgJGRhdGEuZW1wdHlQYWdlVGVtcGxhdGUgLS0+XG4gICAgICAgICAgICAgIDwhLS0ga28gdGVtcGxhdGU6IHsgbmFtZTogZW1wdHlQYWdlVGVtcGxhdGUsIGRhdGE6ICRkYXRhLmVtcHR5UGFnZVRlbXBsYXRlRGF0YSB8fCAkZGF0YSB9IC0tPlxuICAgICAgICAgICAgICA8IS0tIC9rbyAtLT5cbiAgICAgICAgICAgICAgPCEtLSAva28gLS0+XG4gICAgICAgICAgICA8IS0tIC9rbyAtLT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbY29tcG9uZW50XT1cInsgbmFtZTogJ3N2LWNvbXBvbmVudHMtY29udGFpbmVyJywgZGF0YTogeyBzdXJ2ZXk6IG1vZGVsLCBjb250YWluZXI6ICdjb250ZW50Qm90dG9tJyB9IH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbY29tcG9uZW50XT1cInsgbmFtZTogJ3N2LWNvbXBvbmVudHMtY29udGFpbmVyJywgZGF0YTogeyBzdXJ2ZXk6IG1vZGVsLCBjb250YWluZXI6ICdyaWdodCcgfSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbY29tcG9uZW50XT1cInsgbmFtZTogJ3N2LWNvbXBvbmVudHMtY29udGFpbmVyJywgZGF0YTogeyBzdXJ2ZXk6IG1vZGVsLCBjb250YWluZXI6ICdmb290ZXInLCBuZWVkUmVuZGVyV3JhcHBlcjogZmFsc2UgfSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm1vZGVsLnN0YXRlID09PSAnY29tcGxldGVkJyAmJiBtb2RlbC5zaG93Q29tcGxldGVkUGFnZVwiIFtjbGFzc109XCJtb2RlbC5jb21wbGV0ZWRDc3NcIlxuICAgICAgICAgIFtpbm5lckh0bWxdPVwibW9kZWwucHJvY2Vzc2VkQ29tcGxldGVkSHRtbFwiPjwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwibW9kZWwuc3RhdGUgPT09ICdjb21wbGV0ZWRiZWZvcmUnXCIgW2NsYXNzXT1cIm1vZGVsLmNvbXBsZXRlZEJlZm9yZUNzc1wiXG4gICAgICAgICAgW2lubmVySHRtbF09XCJtb2RlbC5wcm9jZXNzZWRDb21wbGV0ZWRCZWZvcmVIdG1sXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJtb2RlbC5zdGF0ZSA9PT0gJ2xvYWRpbmcnXCIgW2NsYXNzXT1cIm1vZGVsLmxvYWRpbmdCb2R5Q3NzXCIgW2lubmVySHRtbF09XCJtb2RlbC5wcm9jZXNzZWRMb2FkaW5nSHRtbFwiPjwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwibW9kZWwuc3RhdGUgPT09ICdlbXB0eSdcIiBbY2xhc3NdPVwibW9kZWwuY3NzLmJvZHlFbXB0eVwiPnt7bW9kZWwuZW1wdHlTdXJ2ZXlUZXh0fX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgICA8c3YtYnJhbmQtaW5mbyAqbmdJZj1cIm1vZGVsLnNob3dCcmFuZEluZm9cIj48L3N2LWJyYW5kLWluZm8+XG4gICAgPHN2LW5vdGlmaWVyIFtub3RpZmllcl09XCJtb2RlbC5ub3RpZmllclwiPjwvc3Ytbm90aWZpZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=