UNPKG

survey-angular-ui

Version:

survey.js is a JavaScript Survey Library. It is a modern way to add a survey to your website. It uses JSON for survey metadata and results.

75 lines 17.9 kB
import { Component } from "@angular/core"; import { QuestionAngular } from "../question"; import { AngularComponentFactory } from "../component-factory"; import * as i0 from "@angular/core"; import * as i1 from "../components/action-bar/action-bar.component"; import * as i2 from "../survey-string.component"; import * as i3 from "../components/paneldynamic-actions/paneldynamic-add-btn.component"; import * as i4 from "../components/paneldynamic-actions/paneldynamic-prev-btn.component"; import * as i5 from "../components/paneldynamic-actions/paneldynamic-next-btn.component"; import * as i6 from "../components/paneldynamic-actions/paneldynamic-progress-text.component"; import * as i7 from "@angular/common"; import * as i8 from "../utils/dynamic.directive"; export class PanelDynamicQuestionComponent extends QuestionAngular { trackPanelBy(_, panel) { return panel.id; } onModelChanged() { super.onModelChanged(); this.model.panelCountChangedCallback = () => { this.update(); }; this.model.currentIndexChangedCallback = () => { this.update(); }; this.model.renderModeChangedCallback = () => { this.update(); }; } get progressCssClass() { return this.model.isProgressTopShowing ? this.model.cssClasses.progressTop : this.model.cssClasses.progressBottom; } ngOnDestroy() { this.model.panelCountChangedCallback = () => { }; this.model.currentIndexChangedCallback = () => { }; this.model.renderModeChangedCallback = () => { }; super.ngOnDestroy(); } getPanelComponentName(panel) { const survey = this.surveyModel; if (!!survey) { const name = survey.getElementWrapperComponentName(panel); if (!!name) { return name; } } return "panel"; } getPanelComponentData(panel) { const survey = this.surveyModel; let data; if (!!survey) { data = survey.getElementWrapperComponentData(panel); } return { componentName: "panel", componentData: { model: panel, data: data } }; } } PanelDynamicQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PanelDynamicQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); PanelDynamicQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: PanelDynamicQuestionComponent, selector: "sv-ng-paneldynamic-question", usesInheritance: true, ngImport: i0, template: "<div [class]=\"model.cssClasses.root\" #contentElement>\n <div *ngIf=\"model.hasTabbedMenu\" [class]=\"model.getTabsContainerCss()\">\n <sv-action-bar [model]=\"model.tabbedMenu\"></sv-action-bar>\n </div>\n <div *ngIf=\"model.getShowNoEntriesPlaceholder()\" [class]=\"model.cssClasses.noEntriesPlaceholder\">\n <span [model]=\"model.locNoEntriesText\" sv-ng-string></span>\n <sv-ng-paneldynamic-add-btn *ngIf=\"model.canAddPanel\" [data]=\"{ question: model }\"></sv-ng-paneldynamic-add-btn>\n </div>\n <div [class]=\"model.cssClasses.progress\"\n *ngIf=\"!model.showLegacyNavigation && model.isProgressTopShowing && model.isRangeShowing\">\n <div [class]=\"model.cssClasses.progressBar\" [style]=\"{ width: model.progress }\" role=\"progressbar\"></div>\n </div>\n <ng-container [ngTemplateOutlet]=\"progress\"\n *ngIf=\"model.showLegacyNavigation && model.isProgressTopShowing\"></ng-container>\n <div [class]=\"model.cssClasses.panelsContainer\">\n <ng-container *ngFor=\"let panel of model.renderedPanels; index as index; trackBy: trackPanelBy\">\n <div [class]=\"model.getPanelWrapperCss(panel)\">\n <ng-template\n [component]=\"{ name: getPanelComponentName(panel), data: getPanelComponentData(panel) }\"></ng-template>\n <ng-container *ngIf=\"model.canRenderRemovePanelOnRight(panel)\">\n <ng-template\n [component]=\"{ name: 'sv-paneldynamic-remove-btn', data: { data: { panel, question: model }}}\"></ng-template>\n </ng-container>\n </div>\n <hr [class]=\"model.cssClasses.separator\" *ngIf=\"model.showSeparator(index)\" />\n </ng-container>\n </div>\n <ng-container [ngTemplateOutlet]=\"progress\"\n *ngIf=\"model.showLegacyNavigation && model.isProgressBottomShowing\"></ng-container>\n <sv-ng-paneldynamic-add-btn *ngIf=\"model.showLegacyNavigation && model.isRenderModeList\"\n [data]=\"{ question: model }\"></sv-ng-paneldynamic-add-btn>\n <ng-container [ngTemplateOutlet]=\"progressV2\" *ngIf=\"model.showNavigation\"></ng-container>\n</div>\n\n<ng-template #progressV2>\n <div [class]=\"model.cssClasses.footer\" *ngIf=\"!!model.cssClasses.footer\">\n <hr [class]=\"model.cssClasses.separator\" />\n <div [class]=\"model.cssClasses.progress\" *ngIf=\"model.isRangeShowing && model.isProgressBottomShowing\">\n <div [class]=\"model.cssClasses.progressBar\" [style]=\"{ width: model.progress }\" role=\"progressbar\"></div>\n </div>\n <div *ngIf=\"model.footerToolbar.visibleActions.length\" [class]=\"model.cssClasses.footerButtonsContainer\">\n <sv-ng-action-bar [model]=\"model.footerToolbar\"></sv-ng-action-bar>\n </div>\n </div>\n</ng-template>\n<ng-template #progress>\n <div [class]=\"this.progressCssClass\">\n <div style=\"clear: both\" [class]=\"this.progressCssClass\">\n <div [class]=\"model.cssClasses.progressContainer\">\n <sv-ng-paneldynamic-prev-btn [data]=\"{ question: model }\"></sv-ng-paneldynamic-prev-btn>\n <div [class]=\"model.cssClasses.progress\" *ngIf=\"model.isRangeShowing\">\n <div [class]=\"model.cssClasses.progressBar\" [style]=\"{ width: model.progress }\" role=\"progressbar\"></div>\n </div>\n <sv-ng-paneldynamic-next-btn [data]=\"{ question: model }\"></sv-ng-paneldynamic-next-btn>\n </div>\n <sv-ng-paneldynamic-add-btn [data]=\"{ question: model }\"></sv-ng-paneldynamic-add-btn>\n <sv-ng-paneldynamic-progress-text [data]=\"{ question: model }\"></sv-ng-paneldynamic-progress-text>\n </div>\n </div>\n</ng-template>", components: [{ type: i1.ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: ["model", "handleClick"] }, { type: i2.SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }, { type: i3.PanelDynamicAddBtn, selector: "sv-ng-paneldynamic-add-btn" }, { type: i4.PanelDynamicPrevBtn, selector: "sv-ng-paneldynamic-prev-btn" }, { type: i5.PanelDynamicNextBtn, selector: "sv-ng-paneldynamic-next-btn" }, { type: i6.PanelDynamicProgressText, selector: "sv-ng-paneldynamic-progress-text" }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PanelDynamicQuestionComponent, decorators: [{ type: Component, args: [{ selector: "sv-ng-paneldynamic-question", templateUrl: "./paneldynamic.component.html" }] }] }); AngularComponentFactory.Instance.registerComponent("paneldynamic-question", PanelDynamicQuestionComponent); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuZWxkeW5hbWljLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9xdWVzdGlvbnMvcGFuZWxkeW5hbWljLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9xdWVzdGlvbnMvcGFuZWxkeW5hbWljLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7OztBQU0vRCxNQUFNLE9BQU8sNkJBQThCLFNBQVEsZUFBZ0Q7SUFDMUYsWUFBWSxDQUFDLENBQVMsRUFBRSxLQUFpQjtRQUM5QyxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUNrQixjQUFjO1FBQy9CLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLHlCQUF5QixHQUFHLEdBQUcsRUFBRTtZQUMxQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEIsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQywyQkFBMkIsR0FBRyxHQUFHLEVBQUU7WUFDNUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQ2YsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsR0FBRyxHQUFHLEVBQUU7WUFDMUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CO1lBQ3BDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXO1lBQ25DLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUM7SUFDM0MsQ0FBQztJQUNRLFdBQVc7UUFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQywyQkFBMkIsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDaEQsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFDTSxxQkFBcUIsQ0FBQyxLQUFpQjtRQUM1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBMEIsQ0FBQztRQUMvQyxJQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUU7WUFDWCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsOEJBQThCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUQsSUFBRyxDQUFDLENBQUMsSUFBSSxFQUFFO2dCQUNULE9BQU8sSUFBSSxDQUFDO2FBQ2I7U0FDRjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFDTSxxQkFBcUIsQ0FBQyxLQUFpQjtRQUM1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBMEIsQ0FBQztRQUMvQyxJQUFJLElBQVMsQ0FBQztRQUNkLElBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRTtZQUNYLElBQUksR0FBRyxNQUFNLENBQUMsOEJBQThCLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDckQ7UUFDRCxPQUFPO1lBQ0wsYUFBYSxFQUFFLE9BQU87WUFDdEIsYUFBYSxFQUFFO2dCQUNiLEtBQUssRUFBRSxLQUFLO2dCQUNaLElBQUksRUFBRSxJQUFJO2FBQ1g7U0FDRixDQUFDO0lBQ0osQ0FBQzs7MkhBbERVLDZCQUE2QjsrR0FBN0IsNkJBQTZCLDBGQ1QxQyx5L0dBMkRjOzRGRGxERCw2QkFBNkI7a0JBSnpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDZCQUE2QjtvQkFDdkMsV0FBVyxFQUFFLCtCQUErQjtpQkFDN0M7O0FBc0RELHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyx1QkFBdUIsRUFBRSw2QkFBNkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgUXVlc3Rpb25Bbmd1bGFyIH0gZnJvbSBcIi4uL3F1ZXN0aW9uXCI7XG5pbXBvcnQgeyBQYW5lbE1vZGVsLCBRdWVzdGlvblBhbmVsRHluYW1pY01vZGVsLCBTdXJ2ZXlNb2RlbCB9IGZyb20gXCJzdXJ2ZXktY29yZVwiO1xuaW1wb3J0IHsgQW5ndWxhckNvbXBvbmVudEZhY3RvcnkgfSBmcm9tIFwiLi4vY29tcG9uZW50LWZhY3RvcnlcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcInN2LW5nLXBhbmVsZHluYW1pYy1xdWVzdGlvblwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3BhbmVsZHluYW1pYy5jb21wb25lbnQuaHRtbFwiXG59KVxuZXhwb3J0IGNsYXNzIFBhbmVsRHluYW1pY1F1ZXN0aW9uQ29tcG9uZW50IGV4dGVuZHMgUXVlc3Rpb25Bbmd1bGFyPFF1ZXN0aW9uUGFuZWxEeW5hbWljTW9kZWwgfCBhbnk+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIHRyYWNrUGFuZWxCeShfOiBudW1iZXIsIHBhbmVsOiBQYW5lbE1vZGVsKSB7XG4gICAgcmV0dXJuIHBhbmVsLmlkO1xuICB9XG4gIHByb3RlY3RlZCBvdmVycmlkZSBvbk1vZGVsQ2hhbmdlZCgpOiB2b2lkIHtcbiAgICBzdXBlci5vbk1vZGVsQ2hhbmdlZCgpO1xuICAgIHRoaXMubW9kZWwucGFuZWxDb3VudENoYW5nZWRDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgfTtcbiAgICB0aGlzLm1vZGVsLmN1cnJlbnRJbmRleENoYW5nZWRDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlKClcbiAgICB9O1xuICAgIHRoaXMubW9kZWwucmVuZGVyTW9kZUNoYW5nZWRDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgfTtcbiAgfVxuICBnZXQgcHJvZ3Jlc3NDc3NDbGFzcygpIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlbC5pc1Byb2dyZXNzVG9wU2hvd2luZ1xuICAgICAgPyB0aGlzLm1vZGVsLmNzc0NsYXNzZXMucHJvZ3Jlc3NUb3BcbiAgICAgIDogdGhpcy5tb2RlbC5jc3NDbGFzc2VzLnByb2dyZXNzQm90dG9tO1xuICB9XG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubW9kZWwucGFuZWxDb3VudENoYW5nZWRDYWxsYmFjayA9ICgpID0+IHt9O1xuICAgIHRoaXMubW9kZWwuY3VycmVudEluZGV4Q2hhbmdlZENhbGxiYWNrID0gKCkgPT4ge307XG4gICAgdGhpcy5tb2RlbC5yZW5kZXJNb2RlQ2hhbmdlZENhbGxiYWNrID0gKCkgPT4ge307XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgfVxuICBwdWJsaWMgZ2V0UGFuZWxDb21wb25lbnROYW1lKHBhbmVsOiBQYW5lbE1vZGVsKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdXJ2ZXkgPSB0aGlzLnN1cnZleU1vZGVsIGFzIFN1cnZleU1vZGVsO1xuICAgIGlmKCEhc3VydmV5KSB7XG4gICAgICBjb25zdCBuYW1lID0gc3VydmV5LmdldEVsZW1lbnRXcmFwcGVyQ29tcG9uZW50TmFtZShwYW5lbCk7XG4gICAgICBpZighIW5hbWUpIHtcbiAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBcInBhbmVsXCI7XG4gIH1cbiAgcHVibGljIGdldFBhbmVsQ29tcG9uZW50RGF0YShwYW5lbDogUGFuZWxNb2RlbCk6IGFueSB7XG4gICAgY29uc3Qgc3VydmV5ID0gdGhpcy5zdXJ2ZXlNb2RlbCBhcyBTdXJ2ZXlNb2RlbDtcbiAgICBsZXQgZGF0YTogYW55O1xuICAgIGlmKCEhc3VydmV5KSB7XG4gICAgICBkYXRhID0gc3VydmV5LmdldEVsZW1lbnRXcmFwcGVyQ29tcG9uZW50RGF0YShwYW5lbCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBjb21wb25lbnROYW1lOiBcInBhbmVsXCIsXG4gICAgICBjb21wb25lbnREYXRhOiB7XG4gICAgICAgIG1vZGVsOiBwYW5lbCxcbiAgICAgICAgZGF0YTogZGF0YVxuICAgICAgfVxuICAgIH07XG4gIH1cbn1cblxuQW5ndWxhckNvbXBvbmVudEZhY3RvcnkuSW5zdGFuY2UucmVnaXN0ZXJDb21wb25lbnQoXCJwYW5lbGR5bmFtaWMtcXVlc3Rpb25cIiwgUGFuZWxEeW5hbWljUXVlc3Rpb25Db21wb25lbnQpOyIsIjxkaXYgW2NsYXNzXT1cIm1vZGVsLmNzc0NsYXNzZXMucm9vdFwiICNjb250ZW50RWxlbWVudD5cbiAgPGRpdiAqbmdJZj1cIm1vZGVsLmhhc1RhYmJlZE1lbnVcIiBbY2xhc3NdPVwibW9kZWwuZ2V0VGFic0NvbnRhaW5lckNzcygpXCI+XG4gICAgPHN2LWFjdGlvbi1iYXIgW21vZGVsXT1cIm1vZGVsLnRhYmJlZE1lbnVcIj48L3N2LWFjdGlvbi1iYXI+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwibW9kZWwuZ2V0U2hvd05vRW50cmllc1BsYWNlaG9sZGVyKClcIiBbY2xhc3NdPVwibW9kZWwuY3NzQ2xhc3Nlcy5ub0VudHJpZXNQbGFjZWhvbGRlclwiPlxuICAgIDxzcGFuIFttb2RlbF09XCJtb2RlbC5sb2NOb0VudHJpZXNUZXh0XCIgc3Ytbmctc3RyaW5nPjwvc3Bhbj5cbiAgICA8c3YtbmctcGFuZWxkeW5hbWljLWFkZC1idG4gKm5nSWY9XCJtb2RlbC5jYW5BZGRQYW5lbFwiIFtkYXRhXT1cInsgcXVlc3Rpb246IG1vZGVsIH1cIj48L3N2LW5nLXBhbmVsZHluYW1pYy1hZGQtYnRuPlxuICA8L2Rpdj5cbiAgPGRpdiBbY2xhc3NdPVwibW9kZWwuY3NzQ2xhc3Nlcy5wcm9ncmVzc1wiXG4gICAgKm5nSWY9XCIhbW9kZWwuc2hvd0xlZ2FjeU5hdmlnYXRpb24gJiYgbW9kZWwuaXNQcm9ncmVzc1RvcFNob3dpbmcgJiYgbW9kZWwuaXNSYW5nZVNob3dpbmdcIj5cbiAgICA8ZGl2IFtjbGFzc109XCJtb2RlbC5jc3NDbGFzc2VzLnByb2dyZXNzQmFyXCIgW3N0eWxlXT1cInsgd2lkdGg6IG1vZGVsLnByb2dyZXNzIH1cIiByb2xlPVwicHJvZ3Jlc3NiYXJcIj48L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwicHJvZ3Jlc3NcIlxuICAgICpuZ0lmPVwibW9kZWwuc2hvd0xlZ2FjeU5hdmlnYXRpb24gJiYgbW9kZWwuaXNQcm9ncmVzc1RvcFNob3dpbmdcIj48L25nLWNvbnRhaW5lcj5cbiAgPGRpdiBbY2xhc3NdPVwibW9kZWwuY3NzQ2xhc3Nlcy5wYW5lbHNDb250YWluZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwYW5lbCBvZiBtb2RlbC5yZW5kZXJlZFBhbmVsczsgaW5kZXggYXMgaW5kZXg7IHRyYWNrQnk6IHRyYWNrUGFuZWxCeVwiPlxuICAgICAgPGRpdiBbY2xhc3NdPVwibW9kZWwuZ2V0UGFuZWxXcmFwcGVyQ3NzKHBhbmVsKVwiPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICBbY29tcG9uZW50XT1cInsgbmFtZTogZ2V0UGFuZWxDb21wb25lbnROYW1lKHBhbmVsKSwgZGF0YTogZ2V0UGFuZWxDb21wb25lbnREYXRhKHBhbmVsKSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGVsLmNhblJlbmRlclJlbW92ZVBhbmVsT25SaWdodChwYW5lbClcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIFtjb21wb25lbnRdPVwieyBuYW1lOiAnc3YtcGFuZWxkeW5hbWljLXJlbW92ZS1idG4nLCBkYXRhOiB7IGRhdGE6IHsgcGFuZWwsIHF1ZXN0aW9uOiBtb2RlbCB9fX1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGhyIFtjbGFzc109XCJtb2RlbC5jc3NDbGFzc2VzLnNlcGFyYXRvclwiICpuZ0lmPVwibW9kZWwuc2hvd1NlcGFyYXRvcihpbmRleClcIiAvPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJwcm9ncmVzc1wiXG4gICAgKm5nSWY9XCJtb2RlbC5zaG93TGVnYWN5TmF2aWdhdGlvbiAmJiBtb2RlbC5pc1Byb2dyZXNzQm90dG9tU2hvd2luZ1wiPjwvbmctY29udGFpbmVyPlxuICA8c3YtbmctcGFuZWxkeW5hbWljLWFkZC1idG4gKm5nSWY9XCJtb2RlbC5zaG93TGVnYWN5TmF2aWdhdGlvbiAmJiBtb2RlbC5pc1JlbmRlck1vZGVMaXN0XCJcbiAgICBbZGF0YV09XCJ7IHF1ZXN0aW9uOiBtb2RlbCB9XCI+PC9zdi1uZy1wYW5lbGR5bmFtaWMtYWRkLWJ0bj5cbiAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJwcm9ncmVzc1YyXCIgKm5nSWY9XCJtb2RlbC5zaG93TmF2aWdhdGlvblwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjcHJvZ3Jlc3NWMj5cbiAgPGRpdiBbY2xhc3NdPVwibW9kZWwuY3NzQ2xhc3Nlcy5mb290ZXJcIiAqbmdJZj1cIiEhbW9kZWwuY3NzQ2xhc3Nlcy5mb290ZXJcIj5cbiAgICA8aHIgW2NsYXNzXT1cIm1vZGVsLmNzc0NsYXNzZXMuc2VwYXJhdG9yXCIgLz5cbiAgICA8ZGl2IFtjbGFzc109XCJtb2RlbC5jc3NDbGFzc2VzLnByb2dyZXNzXCIgKm5nSWY9XCJtb2RlbC5pc1JhbmdlU2hvd2luZyAmJiBtb2RlbC5pc1Byb2dyZXNzQm90dG9tU2hvd2luZ1wiPlxuICAgICAgPGRpdiBbY2xhc3NdPVwibW9kZWwuY3NzQ2xhc3Nlcy5wcm9ncmVzc0JhclwiIFtzdHlsZV09XCJ7IHdpZHRoOiBtb2RlbC5wcm9ncmVzcyB9XCIgcm9sZT1cInByb2dyZXNzYmFyXCI+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIm1vZGVsLmZvb3RlclRvb2xiYXIudmlzaWJsZUFjdGlvbnMubGVuZ3RoXCIgW2NsYXNzXT1cIm1vZGVsLmNzc0NsYXNzZXMuZm9vdGVyQnV0dG9uc0NvbnRhaW5lclwiPlxuICAgICAgPHN2LW5nLWFjdGlvbi1iYXIgW21vZGVsXT1cIm1vZGVsLmZvb3RlclRvb2xiYXJcIj48L3N2LW5nLWFjdGlvbi1iYXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjcHJvZ3Jlc3M+XG4gIDxkaXYgW2NsYXNzXT1cInRoaXMucHJvZ3Jlc3NDc3NDbGFzc1wiPlxuICAgIDxkaXYgc3R5bGU9XCJjbGVhcjogYm90aFwiIFtjbGFzc109XCJ0aGlzLnByb2dyZXNzQ3NzQ2xhc3NcIj5cbiAgICAgIDxkaXYgW2NsYXNzXT1cIm1vZGVsLmNzc0NsYXNzZXMucHJvZ3Jlc3NDb250YWluZXJcIj5cbiAgICAgICAgPHN2LW5nLXBhbmVsZHluYW1pYy1wcmV2LWJ0biBbZGF0YV09XCJ7IHF1ZXN0aW9uOiBtb2RlbCB9XCI+PC9zdi1uZy1wYW5lbGR5bmFtaWMtcHJldi1idG4+XG4gICAgICAgIDxkaXYgW2NsYXNzXT1cIm1vZGVsLmNzc0NsYXNzZXMucHJvZ3Jlc3NcIiAqbmdJZj1cIm1vZGVsLmlzUmFuZ2VTaG93aW5nXCI+XG4gICAgICAgICAgPGRpdiBbY2xhc3NdPVwibW9kZWwuY3NzQ2xhc3Nlcy5wcm9ncmVzc0JhclwiIFtzdHlsZV09XCJ7IHdpZHRoOiBtb2RlbC5wcm9ncmVzcyB9XCIgcm9sZT1cInByb2dyZXNzYmFyXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3YtbmctcGFuZWxkeW5hbWljLW5leHQtYnRuIFtkYXRhXT1cInsgcXVlc3Rpb246IG1vZGVsIH1cIj48L3N2LW5nLXBhbmVsZHluYW1pYy1uZXh0LWJ0bj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHN2LW5nLXBhbmVsZHluYW1pYy1hZGQtYnRuIFtkYXRhXT1cInsgcXVlc3Rpb246IG1vZGVsIH1cIj48L3N2LW5nLXBhbmVsZHluYW1pYy1hZGQtYnRuPlxuICAgICAgPHN2LW5nLXBhbmVsZHluYW1pYy1wcm9ncmVzcy10ZXh0IFtkYXRhXT1cInsgcXVlc3Rpb246IG1vZGVsIH1cIj48L3N2LW5nLXBhbmVsZHluYW1pYy1wcm9ncmVzcy10ZXh0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19