UNPKG

survey-creator-angular

Version:

Use SurveyJS Creator to create or edit JSON for SurveyJS Form Library.

64 lines 17.3 kB
import { Component, ElementRef, Input, ViewChild } from "@angular/core"; import { AngularComponentFactory } from "survey-angular-ui"; import { ImageItemValueWrapperViewModel } from "survey-creator-core"; import { CreatorModelComponent } from "../creator-model.component"; import * as i0 from "@angular/core"; import * as i1 from "survey-angular-ui"; import * as i2 from "@angular/common"; export class ImageItemValueDesignerComponent extends CreatorModelComponent { get creator() { return this.componentData.data.creator; } get question() { return this.componentData.question; } get item() { return this.componentData.model; } createModel() { if (this.componentData) { this.adorner = new ImageItemValueWrapperViewModel(this.creator, this.question, this.item, null, null); } } getPropertiesToTrack() { return ["creator", "question", "item"]; } getModel() { return this.adorner; } get showDragDropGhostOnTop() { return this.adorner.ghostPosition === "top"; } get showDragDropGhostOnBottom() { return this.adorner.ghostPosition === "bottom"; } blockEvent(event) { event.stopPropagation(); } getNewItemStyle() { const needStyle = !this.adorner.getIsNewItemSingle(); return { width: needStyle ? this.question.renderedImageWidth + "px" : undefined, height: needStyle ? this.question.renderedImageHeight + "px" : undefined }; } ngAfterViewInit() { this.adorner.itemsRoot = this.container.nativeElement; } } ImageItemValueDesignerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ImageItemValueDesignerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); ImageItemValueDesignerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ImageItemValueDesignerComponent, selector: "svc-image-item-value", inputs: { componentName: "componentName", componentData: "componentData" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div (pointerdown)=\"adorner.onPointerDown($event)\" [class]=\"adorner.getRootCss()\"\n [attr.data-sv-drop-target-item-value]=\"adorner.isDraggable ? this.item.value : null\" #container>\n <div class=\"svc-image-item-value-wrapper__ghost\" [style]=\"getNewItemStyle()\"></div>\n\n <div class=\"svc-image-item-value-wrapper__content\">\n <input type=\"file\" aria-hidden=\"true\" tabindex=\"-1\" [accept]=\"adorner.acceptedTypes\"\n class=\"svc-choose-file-input\" />\n\n <ng-container *ngIf=\"!adorner.isNew && !adorner.isUploading\">\n <div *ngIf=\"!adorner.isNew\" class=\"svc-image-item-value__item\">\n <ng-template [component]=\"{ name: componentName, data: componentData }\"></ng-template>\n </div>\n <span *ngIf=\"adorner.isDraggable && adorner.canRenderControls\"\n class=\"svc-context-button svc-image-item-value-controls__drag-area-indicator\"\n (pointerdown)=\"adorner.onPointerDown($event)\" [attr.title]=\"undefined\" [attr.aria-label]=\"undefined\">\n <svg [iconName]=\"'icon-drag-24x24'\" [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </span>\n <div *ngIf=\"adorner.canRenderControls\" class=\"svc-context-container svc-image-item-value-controls\">\n <ng-container *ngIf=\"adorner.allowRemove && !adorner.isUploading\">\n <span class=\"svc-context-button\" (click)=\"adorner.chooseFile(adorner)\" [key2click] [attr.title]=\"undefined\"\n [attr.aria-label]=\"undefined\">\n <svg role=\"button\" [iconName]=\"'icon-choosefile'\" [size]=\"'auto'\" [title]=\"adorner.selectFileTitle\" sv-ng-svg-icon></svg>\n </span>\n <span class=\"svc-context-button svc-context-button--danger\" (click)=\"adorner.remove(adorner)\" [key2click]\n [attr.title]=\"undefined\" [attr.aria-label]=\"undefined\">\n <svg role=\"button\" [iconName]=\"'icon-delete'\" [size]=\"'auto'\" [title]=\"adorner.removeFileTitle\"\n sv-ng-svg-icon></svg>\n </span>\n </ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"adorner.isNew || adorner.isUploading\">\n <div class=\"svc-image-item-value__item\"\n data-bind=\"event: { dragover: dragover, drop: drop, dragleave: dragleave }\">\n <div class=\"sd-imagepicker__item sd-imagepicker__item--inline\">\n <label class=\"sd-imagepicker__label\">\n <div [style]=\"getNewItemStyle()\" class=\"sd-imagepicker__image\">\n <div class=\"svc-image-item-value__loading\" *ngIf=\"adorner.isUploading\">\n <sv-ng-loading-indicator></sv-ng-loading-indicator>\n </div>\n </div>\n </label>\n </div>\n </div>\n\n <div class=\"svc-image-item-value-controls\" data-bind=\"event: { pointerdown: blockEvent }\">\n <span class=\"svc-context-button svc-image-item-value-controls__add\"\n *ngIf=\"adorner.allowAdd && !adorner.isUploading\" [key2click] (click)=\"adorner.chooseNewFile(adorner)\"\n [attr.title]=\"undefined\" [attr.aria-label]=\"undefined\">\n <svg [iconName]=\"'icon-add-lg'\" [size]=\"'auto'\" sv-ng-svg-icon [title]=\"adorner.addFileTitle\"></svg>\n </span>\n </div>\n </ng-container>\n </div>\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"] }, { type: i1.LoadingIndicatorComponent, selector: "sv-ng-loading-indicator" }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.DynamicComponentDirective, selector: "[component]", inputs: ["component"] }, { type: i1.Key2ClickDirective, selector: "[key2click]", inputs: ["key2click"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ImageItemValueDesignerComponent, decorators: [{ type: Component, args: [{ selector: "svc-image-item-value", templateUrl: "./image-item-value.component.html", styles: [":host { display: none; }"] }] }], propDecorators: { componentName: [{ type: Input }], componentData: [{ type: Input }], container: [{ type: ViewChild, args: ["container", { read: ElementRef }] }] } }); AngularComponentFactory.Instance.registerComponent("svc-image-item-value", ImageItemValueDesignerComponent); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtaXRlbS12YWx1ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRvcm5lcnMvaW1hZ2UtaXRlbS12YWx1ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9zcmMvYWRvcm5lcnMvaW1hZ2UtaXRlbS12YWx1ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTVELE9BQU8sRUFBc0IsOEJBQThCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQU9uRSxNQUFNLE9BQU8sK0JBQWdDLFNBQVEscUJBQXFEO0lBS3hHLElBQVksT0FBTztRQUNqQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN6QyxDQUFDO0lBQ0QsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7SUFDckMsQ0FBQztJQUNELElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUNTLFdBQVc7UUFDbkIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBTyxJQUFJLEVBQU8sSUFBSSxDQUFDLENBQUM7U0FDakg7SUFDSCxDQUFDO0lBQ1Msb0JBQW9CO1FBQzVCLE9BQU8sQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDUyxRQUFRO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxzQkFBc0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsS0FBSyxLQUFLLENBQUM7SUFDOUMsQ0FBQztJQUNELElBQUkseUJBQXlCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEtBQUssUUFBUSxDQUFDO0lBQ2pELENBQUM7SUFDTSxVQUFVLENBQUMsS0FBaUI7UUFDakMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDckQsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzlKLENBQUM7SUFDTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDO0lBQ3hELENBQUM7OzZIQTFDVSwrQkFBK0I7aUhBQS9CLCtCQUErQiwyTkFHVixVQUFVLG9EQ2Y1QywyMkdBeURjOzRGRDdDRCwrQkFBK0I7a0JBTDNDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsV0FBVyxFQUFFLG1DQUFtQztvQkFDaEQsTUFBTSxFQUFFLENBQUMsMEJBQTBCLENBQUM7aUJBQ3JDOzhCQUVVLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDd0MsU0FBUztzQkFBdEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFOztBQTBDOUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixFQUFFLCtCQUErQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBbmd1bGFyQ29tcG9uZW50RmFjdG9yeSB9IGZyb20gXCJzdXJ2ZXktYW5ndWxhci11aVwiO1xuaW1wb3J0IHsgSW1hZ2VJdGVtVmFsdWUsIFF1ZXN0aW9uSW1hZ2VQaWNrZXJNb2RlbCB9IGZyb20gXCJzdXJ2ZXktY29yZVwiO1xuaW1wb3J0IHsgU3VydmV5Q3JlYXRvck1vZGVsLCBJbWFnZUl0ZW1WYWx1ZVdyYXBwZXJWaWV3TW9kZWwgfSBmcm9tIFwic3VydmV5LWNyZWF0b3ItY29yZVwiO1xuaW1wb3J0IHsgQ3JlYXRvck1vZGVsQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NyZWF0b3ItbW9kZWwuY29tcG9uZW50XCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJzdmMtaW1hZ2UtaXRlbS12YWx1ZVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2ltYWdlLWl0ZW0tdmFsdWUuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVzOiBbXCI6aG9zdCB7IGRpc3BsYXk6IG5vbmU7IH1cIl1cbn0pXG5leHBvcnQgY2xhc3MgSW1hZ2VJdGVtVmFsdWVEZXNpZ25lckNvbXBvbmVudCBleHRlbmRzIENyZWF0b3JNb2RlbENvbXBvbmVudDxJbWFnZUl0ZW1WYWx1ZVdyYXBwZXJWaWV3TW9kZWw+IHtcbiAgQElucHV0KCkgY29tcG9uZW50TmFtZSE6IHN0cmluZztcbiAgQElucHV0KCkgY29tcG9uZW50RGF0YSE6IGFueTtcbiAgQFZpZXdDaGlsZChcImNvbnRhaW5lclwiLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgY29udGFpbmVyITogRWxlbWVudFJlZjtcbiAgcHVibGljIGFkb3JuZXIhOiBJbWFnZUl0ZW1WYWx1ZVdyYXBwZXJWaWV3TW9kZWw7XG4gIHByaXZhdGUgZ2V0IGNyZWF0b3IoKTogU3VydmV5Q3JlYXRvck1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnREYXRhLmRhdGEuY3JlYXRvcjtcbiAgfVxuICBwdWJsaWMgZ2V0IHF1ZXN0aW9uKCk6IFF1ZXN0aW9uSW1hZ2VQaWNrZXJNb2RlbCB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50RGF0YS5xdWVzdGlvbjtcbiAgfVxuICBwdWJsaWMgZ2V0IGl0ZW0oKTogSW1hZ2VJdGVtVmFsdWUge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudERhdGEubW9kZWw7XG4gIH1cbiAgcHJvdGVjdGVkIGNyZWF0ZU1vZGVsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbXBvbmVudERhdGEpIHtcbiAgICAgIHRoaXMuYWRvcm5lciA9IG5ldyBJbWFnZUl0ZW1WYWx1ZVdyYXBwZXJWaWV3TW9kZWwodGhpcy5jcmVhdG9yLCB0aGlzLnF1ZXN0aW9uLCB0aGlzLml0ZW0sIDxhbnk+bnVsbCwgPGFueT5udWxsKTtcbiAgICB9XG4gIH1cbiAgcHJvdGVjdGVkIGdldFByb3BlcnRpZXNUb1RyYWNrKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1wiY3JlYXRvclwiLCBcInF1ZXN0aW9uXCIsIFwiaXRlbVwiXTtcbiAgfVxuICBwcm90ZWN0ZWQgZ2V0TW9kZWwoKTogSW1hZ2VJdGVtVmFsdWVXcmFwcGVyVmlld01vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5hZG9ybmVyO1xuICB9XG5cbiAgZ2V0IHNob3dEcmFnRHJvcEdob3N0T25Ub3AoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWRvcm5lci5naG9zdFBvc2l0aW9uID09PSBcInRvcFwiO1xuICB9XG4gIGdldCBzaG93RHJhZ0Ryb3BHaG9zdE9uQm90dG9tKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFkb3JuZXIuZ2hvc3RQb3NpdGlvbiA9PT0gXCJib3R0b21cIjtcbiAgfVxuICBwdWJsaWMgYmxvY2tFdmVudChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgZ2V0TmV3SXRlbVN0eWxlKCk6IGFueSB7XG4gICAgY29uc3QgbmVlZFN0eWxlID0gIXRoaXMuYWRvcm5lci5nZXRJc05ld0l0ZW1TaW5nbGUoKTtcbiAgICByZXR1cm4geyB3aWR0aDogbmVlZFN0eWxlID8gdGhpcy5xdWVzdGlvbi5yZW5kZXJlZEltYWdlV2lkdGggKyBcInB4XCIgOiB1bmRlZmluZWQsIGhlaWdodDogbmVlZFN0eWxlID8gdGhpcy5xdWVzdGlvbi5yZW5kZXJlZEltYWdlSGVpZ2h0ICsgXCJweFwiIDogdW5kZWZpbmVkIH07XG4gIH1cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmFkb3JuZXIuaXRlbXNSb290ID0gdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5Bbmd1bGFyQ29tcG9uZW50RmFjdG9yeS5JbnN0YW5jZS5yZWdpc3RlckNvbXBvbmVudChcInN2Yy1pbWFnZS1pdGVtLXZhbHVlXCIsIEltYWdlSXRlbVZhbHVlRGVzaWduZXJDb21wb25lbnQpO1xuIiwiPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZT5cbiAgPGRpdiAocG9pbnRlcmRvd24pPVwiYWRvcm5lci5vblBvaW50ZXJEb3duKCRldmVudClcIiBbY2xhc3NdPVwiYWRvcm5lci5nZXRSb290Q3NzKClcIlxuICAgIFthdHRyLmRhdGEtc3YtZHJvcC10YXJnZXQtaXRlbS12YWx1ZV09XCJhZG9ybmVyLmlzRHJhZ2dhYmxlID8gdGhpcy5pdGVtLnZhbHVlIDogbnVsbFwiICNjb250YWluZXI+XG4gICAgPGRpdiBjbGFzcz1cInN2Yy1pbWFnZS1pdGVtLXZhbHVlLXdyYXBwZXJfX2dob3N0XCIgW3N0eWxlXT1cImdldE5ld0l0ZW1TdHlsZSgpXCI+PC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwic3ZjLWltYWdlLWl0ZW0tdmFsdWUtd3JhcHBlcl9fY29udGVudFwiPlxuICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGFiaW5kZXg9XCItMVwiIFthY2NlcHRdPVwiYWRvcm5lci5hY2NlcHRlZFR5cGVzXCJcbiAgICAgICAgY2xhc3M9XCJzdmMtY2hvb3NlLWZpbGUtaW5wdXRcIiAvPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWFkb3JuZXIuaXNOZXcgJiYgIWFkb3JuZXIuaXNVcGxvYWRpbmdcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFhZG9ybmVyLmlzTmV3XCIgY2xhc3M9XCJzdmMtaW1hZ2UtaXRlbS12YWx1ZV9faXRlbVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbY29tcG9uZW50XT1cInsgbmFtZTogY29tcG9uZW50TmFtZSwgZGF0YTogY29tcG9uZW50RGF0YSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiYWRvcm5lci5pc0RyYWdnYWJsZSAmJiBhZG9ybmVyLmNhblJlbmRlckNvbnRyb2xzXCJcbiAgICAgICAgICBjbGFzcz1cInN2Yy1jb250ZXh0LWJ1dHRvbiBzdmMtaW1hZ2UtaXRlbS12YWx1ZS1jb250cm9sc19fZHJhZy1hcmVhLWluZGljYXRvclwiXG4gICAgICAgICAgKHBvaW50ZXJkb3duKT1cImFkb3JuZXIub25Qb2ludGVyRG93bigkZXZlbnQpXCIgW2F0dHIudGl0bGVdPVwidW5kZWZpbmVkXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ1bmRlZmluZWRcIj5cbiAgICAgICAgICA8c3ZnIFtpY29uTmFtZV09XCInaWNvbi1kcmFnLTI0eDI0J1wiIFtzaXplXT1cIidhdXRvJ1wiIHN2LW5nLXN2Zy1pY29uPjwvc3ZnPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJhZG9ybmVyLmNhblJlbmRlckNvbnRyb2xzXCIgY2xhc3M9XCJzdmMtY29udGV4dC1jb250YWluZXIgc3ZjLWltYWdlLWl0ZW0tdmFsdWUtY29udHJvbHNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWRvcm5lci5hbGxvd1JlbW92ZSAmJiAhYWRvcm5lci5pc1VwbG9hZGluZ1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmMtY29udGV4dC1idXR0b25cIiAoY2xpY2spPVwiYWRvcm5lci5jaG9vc2VGaWxlKGFkb3JuZXIpXCIgW2tleTJjbGlja10gW2F0dHIudGl0bGVdPVwidW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ1bmRlZmluZWRcIj5cbiAgICAgICAgICAgICAgPHN2ZyByb2xlPVwiYnV0dG9uXCIgW2ljb25OYW1lXT1cIidpY29uLWNob29zZWZpbGUnXCIgW3NpemVdPVwiJ2F1dG8nXCIgW3RpdGxlXT1cImFkb3JuZXIuc2VsZWN0RmlsZVRpdGxlXCIgc3Ytbmctc3ZnLWljb24+PC9zdmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Yy1jb250ZXh0LWJ1dHRvbiBzdmMtY29udGV4dC1idXR0b24tLWRhbmdlclwiIChjbGljayk9XCJhZG9ybmVyLnJlbW92ZShhZG9ybmVyKVwiIFtrZXkyY2xpY2tdXG4gICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cInVuZGVmaW5lZFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidW5kZWZpbmVkXCI+XG4gICAgICAgICAgICAgIDxzdmcgcm9sZT1cImJ1dHRvblwiIFtpY29uTmFtZV09XCInaWNvbi1kZWxldGUnXCIgW3NpemVdPVwiJ2F1dG8nXCIgW3RpdGxlXT1cImFkb3JuZXIucmVtb3ZlRmlsZVRpdGxlXCJcbiAgICAgICAgICAgICAgICBzdi1uZy1zdmctaWNvbj48L3N2Zz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFkb3JuZXIuaXNOZXcgfHwgYWRvcm5lci5pc1VwbG9hZGluZ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3ZjLWltYWdlLWl0ZW0tdmFsdWVfX2l0ZW1cIlxuICAgICAgICAgIGRhdGEtYmluZD1cImV2ZW50OiB7IGRyYWdvdmVyOiBkcmFnb3ZlciwgZHJvcDogZHJvcCwgZHJhZ2xlYXZlOiBkcmFnbGVhdmUgfVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZC1pbWFnZXBpY2tlcl9faXRlbSBzZC1pbWFnZXBpY2tlcl9faXRlbS0taW5saW5lXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzZC1pbWFnZXBpY2tlcl9fbGFiZWxcIj5cbiAgICAgICAgICAgICAgPGRpdiBbc3R5bGVdPVwiZ2V0TmV3SXRlbVN0eWxlKClcIiBjbGFzcz1cInNkLWltYWdlcGlja2VyX19pbWFnZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdmMtaW1hZ2UtaXRlbS12YWx1ZV9fbG9hZGluZ1wiICpuZ0lmPVwiYWRvcm5lci5pc1VwbG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgPHN2LW5nLWxvYWRpbmctaW5kaWNhdG9yPjwvc3YtbmctbG9hZGluZy1pbmRpY2F0b3I+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN2Yy1pbWFnZS1pdGVtLXZhbHVlLWNvbnRyb2xzXCIgZGF0YS1iaW5kPVwiZXZlbnQ6IHsgcG9pbnRlcmRvd246IGJsb2NrRXZlbnQgfVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZjLWNvbnRleHQtYnV0dG9uIHN2Yy1pbWFnZS1pdGVtLXZhbHVlLWNvbnRyb2xzX19hZGRcIlxuICAgICAgICAgICAgKm5nSWY9XCJhZG9ybmVyLmFsbG93QWRkICYmICFhZG9ybmVyLmlzVXBsb2FkaW5nXCIgW2tleTJjbGlja10gKGNsaWNrKT1cImFkb3JuZXIuY2hvb3NlTmV3RmlsZShhZG9ybmVyKVwiXG4gICAgICAgICAgICBbYXR0ci50aXRsZV09XCJ1bmRlZmluZWRcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInVuZGVmaW5lZFwiPlxuICAgICAgICAgICAgPHN2ZyBbaWNvbk5hbWVdPVwiJ2ljb24tYWRkLWxnJ1wiIFtzaXplXT1cIidhdXRvJ1wiIHN2LW5nLXN2Zy1pY29uIFt0aXRsZV09XCJhZG9ybmVyLmFkZEZpbGVUaXRsZVwiPjwvc3ZnPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==