survey-creator-angular
Version:
Use SurveyJS Creator to create or edit JSON for SurveyJS Form Library.
62 lines • 18.7 kB
JavaScript
import { Component, Input } from "@angular/core";
import { CreatorModelComponent } from "../creator-model.component";
import { AngularComponentFactory } from "survey-angular-ui";
import { QuestionRatingAdornerViewModel } from "survey-creator-core";
import { QuestionDesignerComponent } from "../question.component";
import * as i0 from "@angular/core";
import * as i1 from "survey-angular-ui";
import * as i2 from "../question-element-content.component";
import * as i3 from "../question-banner.component";
import * as i4 from "@angular/common";
export class QuestionRatingDesignerComponent extends QuestionDesignerComponent {
constructor() {
super(...arguments);
this.adornerComponent = "";
}
}
QuestionRatingDesignerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionRatingDesignerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
QuestionRatingDesignerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: QuestionRatingDesignerComponent, selector: "svc-rating-question", usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div *ngIf=\"adorner\" class=\"svc-question__adorner\" [class]=\"adorner.rootCss()\" (dblclick)=\"adorner.dblclick($event)\"\n (mouseover)=\"adorner.hover($event, $event.currentTarget)\" (mouseleave)=\"adorner.hover($event, $event.currentTarget)\"\n [attr.data-sv-drop-target-survey-element]=\"adorner.element.name || null\" #container>\n <div *ngIf=\"adorner.showHiddenTitle\" [class]=\"adorner.cssCollapsedHiddenHeader\">\n <sv-ng-element-title *ngIf=\"!!model.hasTitle\" [element]=\"model\"></sv-ng-element-title>\n <div *ngIf=\"!model.hasTitle\" [class]=\"adorner.cssCollapsedHiddenTitle\">\n <span class=\"svc-fake-title\">{{model.name}}</span>\n </div>\n </div>\n <div [class]=\"adorner.css()\" [key2click]=\"{ disableTabStop: true }\" (click)=\"adorner.select(adorner, $event)\">\n <div class=\"svc-question__drop-indicator svc-question__drop-indicator--left\"></div>\n <div class=\"svc-question__drop-indicator svc-question__drop-indicator--right\"></div>\n <div class=\"svc-question__drop-indicator svc-question__drop-indicator--top\"></div>\n <div class=\"svc-question__drop-indicator svc-question__drop-indicator--bottom\"></div>\n <div *ngIf=\"adorner.allowDragging\" class=\"svc-question__drag-area\" (pointerdown)=\"adorner.onPointerDown($event)\">\n <svg class=\"svc-question__drag-element\" [iconName]=\"'icon-drag-area-indicator_24x16'\" [size]=\"'auto'\"\n sv-ng-svg-icon></svg>\n <div class=\"svc-question__top-actions\">\n <sv-action-bar [model]=\"adorner.topActionContainer\" [handleClick]=\"false\"></sv-action-bar>\n </div>\n </div>\n <ng-container *ngIf=\"adorner.needToRenderContent\">\n <svc-question-element-content \n [componentName]=\"componentName\" \n [componentData]=\"componentData\">\n </svc-question-element-content>\n <div *ngIf=\"adorner.isEmptyElement && !showPlaceholderComponent\" class=\"svc-panel__placeholder_frame-wrapper\">\n <div class=\"svc-panel__placeholder_frame\">\n <div class=\"svc-panel__placeholder\">{{ adorner.placeholderText }}</div>\n </div>\n </div>\n <ng-template *ngIf=\"adorner.isEmptyElement && !!showPlaceholderComponent\"\n [component]=\"{ name: placeholderComponent, data: placeholderComponentData }\">\n </ng-template>\n <ng-template *ngIf=\"adornerComponent\"\n [component]=\"{ name: adornerComponent, data: { adorner: adorner, question: model } }\">\n </ng-template>\n <svc-question-banner *ngIf=\"adorner.isBannerShowing\" [model]=\"adorner.createBannerParams()\">\n </svc-question-banner>\n <div class=\"svc-question__content-actions\" (focusin)=\"adorner.select(adorner, $event)\">\n <sv-action-bar [model]=\"adorner.actionContainer\" [handleClick]=\"false\"></sv-action-bar>\n </div>\n </ng-container>\n </div>\n </div>\n</ng-template>", styles: [":host { display: none; }"], components: [{ type: i1.ElementTitleComponent, selector: "sv-ng-element-title", inputs: ["element"] }, { type: i1.SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }, { type: i1.ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: ["model", "handleClick"] }, { type: i2.QuestionElementContentComponent, selector: "svc-question-element-content", inputs: ["componentName", "componentData"] }, { type: i3.QuestionBannerComponent, selector: "svc-question-banner", inputs: ["model"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.Key2ClickDirective, selector: "[key2click]", inputs: ["key2click"] }, { type: i1.DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionRatingDesignerComponent, decorators: [{
type: Component,
args: [{
selector: "svc-rating-question",
templateUrl: "../question.component.html",
styles: [":host { display: none; }"]
}]
}] });
AngularComponentFactory.Instance.registerComponent("svc-rating-question", QuestionRatingDesignerComponent);
export class QuestionRatingAdornerDesignerComponent extends CreatorModelComponent {
createModel() {
if (this.componentData) {
this.adorner = new QuestionRatingAdornerViewModel(this.componentData.data, this.componentData.model, null);
}
}
getPropertiesToTrack() {
return ["model", "creator"];
}
getModel() {
return this.adorner;
}
ngOnDestroy() {
super.ngOnDestroy();
this.adorner.dispose();
}
}
QuestionRatingAdornerDesignerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionRatingAdornerDesignerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
QuestionRatingAdornerDesignerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: QuestionRatingAdornerDesignerComponent, selector: "svc-rating-question-content", inputs: { componentName: "componentName", componentData: "componentData", contentTempl: "contentTempl" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div class=\"svc-rating-question-content\">\n <div [class]=\"adorner.controlsClassNames\">\n <span *ngIf=\"adorner.allowRemove\" [class]=\"adorner.removeClassNames\" [key2click] \n (click)=\"adorner.removeItem(adorner)\" role=\"button\" [attr.aria-label]=\"adorner.removeTooltip\">\n <svg [iconName]=\"'icon-remove_16x16'\" [size]=\"'auto'\" [attr.title]=\"adorner.removeTooltip\" sv-ng-svg-icon></svg>\n </span>\n <span *ngIf=\"adorner.allowAdd\" [class]=\"adorner.addClassNames\" [key2click]\n (click)=\"adorner.addItem(adorner)\" role=\"button\" [attr.aria-label]=\"adorner.addTooltip\">\n <svg [iconName]=\"'icon-add_16x16'\" [size]=\"'auto'\" [attr.title]=\"adorner.addTooltip\" sv-ng-svg-icon></svg>\n </span>\n </div>\n <ng-container *ngTemplateOutlet=\"contentTempl\"></ng-container>\n </div>\n</ng-template>", styles: [":host { display: none; }"], components: [{ type: i1.SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.Key2ClickDirective, selector: "[key2click]", inputs: ["key2click"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionRatingAdornerDesignerComponent, decorators: [{
type: Component,
args: [{
selector: "svc-rating-question-content",
templateUrl: "./question-rating.component.html",
styles: [":host { display: none; }"]
}]
}], propDecorators: { componentName: [{
type: Input
}], componentData: [{
type: Input
}], contentTempl: [{
type: Input
}] } });
AngularComponentFactory.Instance.registerComponent("svc-rating-question-content", QuestionRatingAdornerDesignerComponent);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24tcmF0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZG9ybmVycy9xdWVzdGlvbi1yYXRpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL3F1ZXN0aW9uLmNvbXBvbmVudC5odG1sIiwiLi4vLi4vLi4vc3JjL2Fkb3JuZXJzL3F1ZXN0aW9uLXJhdGluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxLQUFLLEVBQTBCLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSx1QkFBdUIsRUFBZ0MsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRixPQUFPLEVBQXNCLDhCQUE4QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQVFsRSxNQUFNLE9BQU8sK0JBQWdDLFNBQVEseUJBQXlCO0lBTDlFOztRQU1rQixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7S0FDdkM7OzZIQUZZLCtCQUErQjtpSEFBL0IsK0JBQStCLGtGQ1o1Qyw0OEZBOENjOzRGRGxDRCwrQkFBK0I7a0JBTDNDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsV0FBVyxFQUFFLDRCQUE0QjtvQkFDekMsTUFBTSxFQUFFLENBQUMsMEJBQTBCLENBQUM7aUJBQ3JDOztBQUtELHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsRUFBRSwrQkFBK0IsQ0FBQyxDQUFDO0FBTzNHLE1BQU0sT0FBTyxzQ0FBdUMsU0FBUSxxQkFBcUQ7SUFNckcsV0FBVztRQUNuQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLDhCQUE4QixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFPLElBQUksQ0FBQyxDQUFDO1NBQ2pIO0lBQ0gsQ0FBQztJQUNTLG9CQUFvQjtRQUM1QixPQUFPLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFDUyxRQUFRO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBQ1EsV0FBVztRQUNsQixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN6QixDQUFDOztvSUFwQlUsc0NBQXNDO3dIQUF0QyxzQ0FBc0Msb01FdkJuRCxtNEJBY2M7NEZGU0Qsc0NBQXNDO2tCQUxsRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLFdBQVcsRUFBRSxrQ0FBa0M7b0JBQy9DLE1BQU0sRUFBRSxDQUFDLDBCQUEwQixDQUFDO2lCQUNyQzs4QkFFVSxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSzs7QUFvQlIsdUJBQXVCLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLDZCQUE2QixFQUFFLHNDQUFzQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENyZWF0b3JNb2RlbENvbXBvbmVudCB9IGZyb20gXCIuLi9jcmVhdG9yLW1vZGVsLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQW5ndWxhckNvbXBvbmVudEZhY3RvcnksIEVtYmVkZGVkVmlld0NvbnRlbnRDb21wb25lbnQgfSBmcm9tIFwic3VydmV5LWFuZ3VsYXItdWlcIjtcbmltcG9ydCB7IFN1cnZleUNyZWF0b3JNb2RlbCwgUXVlc3Rpb25SYXRpbmdBZG9ybmVyVmlld01vZGVsIH0gZnJvbSBcInN1cnZleS1jcmVhdG9yLWNvcmVcIjtcbmltcG9ydCB7IFF1ZXN0aW9uRGVzaWduZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vcXVlc3Rpb24uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBRdWVzdGlvblJhdGluZ01vZGVsIH0gZnJvbSBcInN1cnZleS1jb3JlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJzdmMtcmF0aW5nLXF1ZXN0aW9uXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4uL3F1ZXN0aW9uLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlczogW1wiOmhvc3QgeyBkaXNwbGF5OiBub25lOyB9XCJdXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXN0aW9uUmF0aW5nRGVzaWduZXJDb21wb25lbnQgZXh0ZW5kcyBRdWVzdGlvbkRlc2lnbmVyQ29tcG9uZW50IHtcbiAgcHVibGljIG92ZXJyaWRlIGFkb3JuZXJDb21wb25lbnQgPSBcIlwiO1xufVxuXG5Bbmd1bGFyQ29tcG9uZW50RmFjdG9yeS5JbnN0YW5jZS5yZWdpc3RlckNvbXBvbmVudChcInN2Yy1yYXRpbmctcXVlc3Rpb25cIiwgUXVlc3Rpb25SYXRpbmdEZXNpZ25lckNvbXBvbmVudCk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJzdmMtcmF0aW5nLXF1ZXN0aW9uLWNvbnRlbnRcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9xdWVzdGlvbi1yYXRpbmcuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVzOiBbXCI6aG9zdCB7IGRpc3BsYXk6IG5vbmU7IH1cIl1cbn0pXG5leHBvcnQgY2xhc3MgUXVlc3Rpb25SYXRpbmdBZG9ybmVyRGVzaWduZXJDb21wb25lbnQgZXh0ZW5kcyBDcmVhdG9yTW9kZWxDb21wb25lbnQ8UXVlc3Rpb25SYXRpbmdBZG9ybmVyVmlld01vZGVsPiB7XG4gIEBJbnB1dCgpIGNvbXBvbmVudE5hbWUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNvbXBvbmVudERhdGEhOiBhbnk7XG4gIEBJbnB1dCgpIGNvbnRlbnRUZW1wbCE6IFRlbXBsYXRlUmVmPGFueT47XG4gIHB1YmxpYyBhZG9ybmVyITogUXVlc3Rpb25SYXRpbmdBZG9ybmVyVmlld01vZGVsO1xuXG4gIHByb3RlY3RlZCBjcmVhdGVNb2RlbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb21wb25lbnREYXRhKSB7XG4gICAgICB0aGlzLmFkb3JuZXIgPSBuZXcgUXVlc3Rpb25SYXRpbmdBZG9ybmVyVmlld01vZGVsKHRoaXMuY29tcG9uZW50RGF0YS5kYXRhLCB0aGlzLmNvbXBvbmVudERhdGEubW9kZWwsIDxhbnk+bnVsbCk7XG4gICAgfVxuICB9XG4gIHByb3RlY3RlZCBnZXRQcm9wZXJ0aWVzVG9UcmFjaygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcIm1vZGVsXCIsIFwiY3JlYXRvclwiXTtcbiAgfVxuICBwcm90ZWN0ZWQgZ2V0TW9kZWwoKTogUXVlc3Rpb25SYXRpbmdBZG9ybmVyVmlld01vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5hZG9ybmVyO1xuICB9XG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5hZG9ybmVyLmRpc3Bvc2UoKTtcbiAgfVxufVxuXG5Bbmd1bGFyQ29tcG9uZW50RmFjdG9yeS5JbnN0YW5jZS5yZWdpc3RlckNvbXBvbmVudChcInN2Yy1yYXRpbmctcXVlc3Rpb24tY29udGVudFwiLCBRdWVzdGlvblJhdGluZ0Fkb3JuZXJEZXNpZ25lckNvbXBvbmVudCk7XG5cbiIsIjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGU+XG4gIDxkaXYgKm5nSWY9XCJhZG9ybmVyXCIgY2xhc3M9XCJzdmMtcXVlc3Rpb25fX2Fkb3JuZXJcIiBbY2xhc3NdPVwiYWRvcm5lci5yb290Q3NzKClcIiAoZGJsY2xpY2spPVwiYWRvcm5lci5kYmxjbGljaygkZXZlbnQpXCJcbiAgICAobW91c2VvdmVyKT1cImFkb3JuZXIuaG92ZXIoJGV2ZW50LCAkZXZlbnQuY3VycmVudFRhcmdldClcIiAobW91c2VsZWF2ZSk9XCJhZG9ybmVyLmhvdmVyKCRldmVudCwgJGV2ZW50LmN1cnJlbnRUYXJnZXQpXCJcbiAgICBbYXR0ci5kYXRhLXN2LWRyb3AtdGFyZ2V0LXN1cnZleS1lbGVtZW50XT1cImFkb3JuZXIuZWxlbWVudC5uYW1lIHx8IG51bGxcIiAjY29udGFpbmVyPlxuICAgIDxkaXYgKm5nSWY9XCJhZG9ybmVyLnNob3dIaWRkZW5UaXRsZVwiIFtjbGFzc109XCJhZG9ybmVyLmNzc0NvbGxhcHNlZEhpZGRlbkhlYWRlclwiPlxuICAgICAgPHN2LW5nLWVsZW1lbnQtdGl0bGUgKm5nSWY9XCIhIW1vZGVsLmhhc1RpdGxlXCIgW2VsZW1lbnRdPVwibW9kZWxcIj48L3N2LW5nLWVsZW1lbnQtdGl0bGU+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhbW9kZWwuaGFzVGl0bGVcIiBbY2xhc3NdPVwiYWRvcm5lci5jc3NDb2xsYXBzZWRIaWRkZW5UaXRsZVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZjLWZha2UtdGl0bGVcIj57e21vZGVsLm5hbWV9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgW2NsYXNzXT1cImFkb3JuZXIuY3NzKClcIiBba2V5MmNsaWNrXT1cInsgZGlzYWJsZVRhYlN0b3A6IHRydWUgfVwiIChjbGljayk9XCJhZG9ybmVyLnNlbGVjdChhZG9ybmVyLCAkZXZlbnQpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3ZjLXF1ZXN0aW9uX19kcm9wLWluZGljYXRvciBzdmMtcXVlc3Rpb25fX2Ryb3AtaW5kaWNhdG9yLS1sZWZ0XCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic3ZjLXF1ZXN0aW9uX19kcm9wLWluZGljYXRvciBzdmMtcXVlc3Rpb25fX2Ryb3AtaW5kaWNhdG9yLS1yaWdodFwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInN2Yy1xdWVzdGlvbl9fZHJvcC1pbmRpY2F0b3Igc3ZjLXF1ZXN0aW9uX19kcm9wLWluZGljYXRvci0tdG9wXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic3ZjLXF1ZXN0aW9uX19kcm9wLWluZGljYXRvciBzdmMtcXVlc3Rpb25fX2Ryb3AtaW5kaWNhdG9yLS1ib3R0b21cIj48L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJhZG9ybmVyLmFsbG93RHJhZ2dpbmdcIiBjbGFzcz1cInN2Yy1xdWVzdGlvbl9fZHJhZy1hcmVhXCIgKHBvaW50ZXJkb3duKT1cImFkb3JuZXIub25Qb2ludGVyRG93bigkZXZlbnQpXCI+XG4gICAgICAgIDxzdmcgY2xhc3M9XCJzdmMtcXVlc3Rpb25fX2RyYWctZWxlbWVudFwiIFtpY29uTmFtZV09XCInaWNvbi1kcmFnLWFyZWEtaW5kaWNhdG9yXzI0eDE2J1wiIFtzaXplXT1cIidhdXRvJ1wiXG4gICAgICAgICAgc3Ytbmctc3ZnLWljb24+PC9zdmc+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdmMtcXVlc3Rpb25fX3RvcC1hY3Rpb25zXCI+XG4gICAgICAgICAgPHN2LWFjdGlvbi1iYXIgW21vZGVsXT1cImFkb3JuZXIudG9wQWN0aW9uQ29udGFpbmVyXCIgW2hhbmRsZUNsaWNrXT1cImZhbHNlXCI+PC9zdi1hY3Rpb24tYmFyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFkb3JuZXIubmVlZFRvUmVuZGVyQ29udGVudFwiPlxuICAgICAgICA8c3ZjLXF1ZXN0aW9uLWVsZW1lbnQtY29udGVudCBcbiAgICAgICAgICBbY29tcG9uZW50TmFtZV09XCJjb21wb25lbnROYW1lXCIgXG4gICAgICAgICAgW2NvbXBvbmVudERhdGFdPVwiY29tcG9uZW50RGF0YVwiPlxuICAgICAgICA8L3N2Yy1xdWVzdGlvbi1lbGVtZW50LWNvbnRlbnQ+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJhZG9ybmVyLmlzRW1wdHlFbGVtZW50ICYmICFzaG93UGxhY2Vob2xkZXJDb21wb25lbnRcIiBjbGFzcz1cInN2Yy1wYW5lbF9fcGxhY2Vob2xkZXJfZnJhbWUtd3JhcHBlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdmMtcGFuZWxfX3BsYWNlaG9sZGVyX2ZyYW1lXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ZjLXBhbmVsX19wbGFjZWhvbGRlclwiPnt7IGFkb3JuZXIucGxhY2Vob2xkZXJUZXh0IH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJhZG9ybmVyLmlzRW1wdHlFbGVtZW50ICYmICEhc2hvd1BsYWNlaG9sZGVyQ29tcG9uZW50XCJcbiAgICAgICAgICBbY29tcG9uZW50XT1cInsgbmFtZTogcGxhY2Vob2xkZXJDb21wb25lbnQsIGRhdGE6IHBsYWNlaG9sZGVyQ29tcG9uZW50RGF0YSB9XCI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImFkb3JuZXJDb21wb25lbnRcIlxuICAgICAgICAgIFtjb21wb25lbnRdPVwieyBuYW1lOiBhZG9ybmVyQ29tcG9uZW50LCBkYXRhOiB7IGFkb3JuZXI6IGFkb3JuZXIsIHF1ZXN0aW9uOiBtb2RlbCB9IH1cIj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPHN2Yy1xdWVzdGlvbi1iYW5uZXIgKm5nSWY9XCJhZG9ybmVyLmlzQmFubmVyU2hvd2luZ1wiIFttb2RlbF09XCJhZG9ybmVyLmNyZWF0ZUJhbm5lclBhcmFtcygpXCI+XG4gICAgICAgIDwvc3ZjLXF1ZXN0aW9uLWJhbm5lcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN2Yy1xdWVzdGlvbl9fY29udGVudC1hY3Rpb25zXCIgKGZvY3VzaW4pPVwiYWRvcm5lci5zZWxlY3QoYWRvcm5lciwgJGV2ZW50KVwiPlxuICAgICAgICAgIDxzdi1hY3Rpb24tYmFyIFttb2RlbF09XCJhZG9ybmVyLmFjdGlvbkNvbnRhaW5lclwiIFtoYW5kbGVDbGlja109XCJmYWxzZVwiPjwvc3YtYWN0aW9uLWJhcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiIsIjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJzdmMtcmF0aW5nLXF1ZXN0aW9uLWNvbnRlbnRcIj5cbiAgICA8ZGl2IFtjbGFzc109XCJhZG9ybmVyLmNvbnRyb2xzQ2xhc3NOYW1lc1wiPlxuICAgICAgPHNwYW4gKm5nSWY9XCJhZG9ybmVyLmFsbG93UmVtb3ZlXCIgW2NsYXNzXT1cImFkb3JuZXIucmVtb3ZlQ2xhc3NOYW1lc1wiIFtrZXkyY2xpY2tdIFxuICAgICAgKGNsaWNrKT1cImFkb3JuZXIucmVtb3ZlSXRlbShhZG9ybmVyKVwiIHJvbGU9XCJidXR0b25cIiBbYXR0ci5hcmlhLWxhYmVsXT1cImFkb3JuZXIucmVtb3ZlVG9vbHRpcFwiPlxuICAgICAgICA8c3ZnIFtpY29uTmFtZV09XCInaWNvbi1yZW1vdmVfMTZ4MTYnXCIgW3NpemVdPVwiJ2F1dG8nXCIgW2F0dHIudGl0bGVdPVwiYWRvcm5lci5yZW1vdmVUb29sdGlwXCIgc3Ytbmctc3ZnLWljb24+PC9zdmc+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cImFkb3JuZXIuYWxsb3dBZGRcIiBbY2xhc3NdPVwiYWRvcm5lci5hZGRDbGFzc05hbWVzXCIgW2tleTJjbGlja11cbiAgICAgIChjbGljayk9XCJhZG9ybmVyLmFkZEl0ZW0oYWRvcm5lcilcIiByb2xlPVwiYnV0dG9uXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhZG9ybmVyLmFkZFRvb2x0aXBcIj5cbiAgICAgICAgPHN2ZyBbaWNvbk5hbWVdPVwiJ2ljb24tYWRkXzE2eDE2J1wiIFtzaXplXT1cIidhdXRvJ1wiIFthdHRyLnRpdGxlXT1cImFkb3JuZXIuYWRkVG9vbHRpcFwiIHN2LW5nLXN2Zy1pY29uPjwvc3ZnPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==