UNPKG

@pepperi/lib

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.0.1.

412 lines 48.9 kB
import { Component, Injectable, Input, Output, EventEmitter, ViewChild, ChangeDetectionStrategy } from '@angular/core'; import { FileUploader } from 'ng2-file-upload'; import { LAYOUT_TYPE } from '@pepperi/lib'; import { DialogData, DialogDataType } from '@pepperi/lib/dialog'; import * as i0 from "@angular/core"; import * as i1 from "@ngx-translate/core"; import * as i2 from "@pepperi/lib/dialog"; import * as i3 from "@pepperi/lib"; import * as i4 from "@angular/common"; import * as i5 from "@angular/material/form-field"; import * as i6 from "@angular/forms"; import * as i7 from "@angular/material/input"; import * as i8 from "@angular/material/button"; import * as i9 from "@angular/material/icon"; import * as i10 from "@pepperi/lib/icon"; import * as i11 from "ng2-file-upload"; const _c0 = ["fileInput"]; const _c1 = ["imagePreview"]; function FilesUploaderComponent_ng_template_0_ng_container_3_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainer(0); } } const _c2 = function (a0) { return { "right-alignment": a0 }; }; function FilesUploaderComponent_ng_template_0_ng_template_4_button_0_Template(rf, ctx) { if (rf & 1) { const _r14 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "button", 14); i0.ɵɵlistener("click", function FilesUploaderComponent_ng_template_0_ng_template_4_button_0_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r13 = i0.ɵɵnextContext(3); return ctx_r13.deleteFile(); }); i0.ɵɵelementStart(1, "mat-icon"); i0.ɵɵelement(2, "pep-icon", 15); i0.ɵɵelementEnd(); i0.ɵɵelementEnd(); } if (rf & 2) { const ctx_r10 = i0.ɵɵnextContext(3); i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(1, _c2, ctx_r10.xAlignment == "2")); } } const _c3 = function (a0) { return [a0]; }; function FilesUploaderComponent_ng_template_0_ng_template_4_img_2_Template(rf, ctx) { if (rf & 1) { const _r17 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "img", 16, 17); i0.ɵɵlistener("error", function FilesUploaderComponent_ng_template_0_ng_template_4_img_2_Template_img_error_0_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r16 = i0.ɵɵnextContext(3); return ctx_r16.errorHandler($event); }); i0.ɵɵelementEnd(); } if (rf & 2) { const ctx_r11 = i0.ɵɵnextContext(3); i0.ɵɵstyleProp("max-height", ctx_r11.fieldHeight); i0.ɵɵproperty("src", ctx_r11.src, i0.ɵɵsanitizeUrl)("alt", ctx_r11.label)("ngClass", i0.ɵɵpureFunction1(5, _c3, "text-align-" + ctx_r11.xAlignment)); } } function FilesUploaderComponent_ng_template_0_ng_template_4_div_3_a_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "a", 20); i0.ɵɵelement(1, "pep-icon", 21); i0.ɵɵelementStart(2, "span", 22); i0.ɵɵtext(3); i0.ɵɵpipe(4, "translate"); i0.ɵɵelementEnd(); i0.ɵɵelementEnd(); } if (rf & 2) { i0.ɵɵadvance(3); i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 1, "FilesUploader_SeeOriginal")); } } function FilesUploaderComponent_ng_template_0_ng_template_4_div_3_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div", 18); i0.ɵɵtemplate(1, FilesUploaderComponent_ng_template_0_ng_template_4_div_3_a_1_Template, 5, 3, "a", 19); i0.ɵɵelementEnd(); } if (rf & 2) { const ctx_r12 = i0.ɵɵnextContext(3); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", ctx_r12.src != ""); } } function FilesUploaderComponent_ng_template_0_ng_template_4_Template(rf, ctx) { if (rf & 1) { const _r20 = i0.ɵɵgetCurrentView(); i0.ɵɵtemplate(0, FilesUploaderComponent_ng_template_0_ng_template_4_button_0_Template, 3, 3, "button", 10); i0.ɵɵelementStart(1, "div", 11); i0.ɵɵlistener("click", function FilesUploaderComponent_ng_template_0_ng_template_4_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r19 = i0.ɵɵnextContext(2); return ctx_r19.onElementClicked($event); }); i0.ɵɵtemplate(2, FilesUploaderComponent_ng_template_0_ng_template_4_img_2_Template, 2, 7, "img", 12); i0.ɵɵtemplate(3, FilesUploaderComponent_ng_template_0_ng_template_4_div_3_Template, 2, 1, "div", 13); i0.ɵɵelementEnd(); } if (rf & 2) { const ctx_r7 = i0.ɵɵnextContext(2); i0.ɵɵproperty("ngIf", !ctx_r7.disabled); i0.ɵɵadvance(2); i0.ɵɵproperty("ngIf", ctx_r7.controlType === "image"); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", ctx_r7.controlType === "attachment"); } } function FilesUploaderComponent_ng_template_0_ng_template_6_pep_icon_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelement(0, "pep-icon", 21); } } function FilesUploaderComponent_ng_template_0_ng_template_6_pep_icon_2_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelement(0, "pep-icon", 26); } } function FilesUploaderComponent_ng_template_0_ng_template_6_span_3_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "span", 22); i0.ɵɵtext(1); i0.ɵɵpipe(2, "translate"); i0.ɵɵelementEnd(); } if (rf & 2) { const ctx_r23 = i0.ɵɵnextContext(3); i0.ɵɵadvance(1); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, ctx_r23.disabled ? ctx_r23.controlType === "image" ? "FilesUploader_MissingImageMsg" : "FilesUploader_MissingFileMsg" : "FilesUploader_DragDropMsg"), " "); } } function FilesUploaderComponent_ng_template_0_ng_template_6_ng_container_4_button_3_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "button", 30); i0.ɵɵelementStart(1, "mat-icon"); i0.ɵɵelement(2, "pep-icon", 31); i0.ɵɵelementEnd(); i0.ɵɵelementEnd(); } if (rf & 2) { const ctx_r26 = i0.ɵɵnextContext(4); i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(1, _c2, ctx_r26.xAlignment == "2")); } } function FilesUploaderComponent_ng_template_0_ng_template_6_ng_container_4_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵelement(1, "input", 27, 28); i0.ɵɵtemplate(3, FilesUploaderComponent_ng_template_0_ng_template_6_ng_container_4_button_3_Template, 3, 3, "button", 29); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const ctx_r24 = i0.ɵɵnextContext(3); i0.ɵɵadvance(1); i0.ɵɵpropertyInterpolate1("id", "pepperi-file-", ctx_r24.key, ""); i0.ɵɵproperty("uploader", ctx_r24.uploader); i0.ɵɵadvance(2); i0.ɵɵproperty("ngIf", ctx_r24.progress != 0); } } function FilesUploaderComponent_ng_template_0_ng_template_6_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div", 18); i0.ɵɵtemplate(1, FilesUploaderComponent_ng_template_0_ng_template_6_pep_icon_1_Template, 1, 0, "pep-icon", 23); i0.ɵɵtemplate(2, FilesUploaderComponent_ng_template_0_ng_template_6_pep_icon_2_Template, 1, 0, "pep-icon", 24); i0.ɵɵtemplate(3, FilesUploaderComponent_ng_template_0_ng_template_6_span_3_Template, 3, 3, "span", 25); i0.ɵɵelementEnd(); i0.ɵɵtemplate(4, FilesUploaderComponent_ng_template_0_ng_template_6_ng_container_4_Template, 4, 3, "ng-container", 1); } if (rf & 2) { const ctx_r9 = i0.ɵɵnextContext(2); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", ctx_r9.controlType === "attachment"); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", ctx_r9.controlType === "image"); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", ctx_r9.progress == 0); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", !ctx_r9.disabled); } } const _c4 = function (a0, a1) { return { "one-row": a0, disable: a1 }; }; const _c5 = function (a0) { return { field: a0 }; }; function FilesUploaderComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) { const _r28 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "mat-form-field", 2); i0.ɵɵelementStart(1, "div", 3); i0.ɵɵelementStart(2, "div", 4); i0.ɵɵtemplate(3, FilesUploaderComponent_ng_template_0_ng_container_3_Template, 1, 0, "ng-container", 5); i0.ɵɵtemplate(4, FilesUploaderComponent_ng_template_0_ng_template_4_Template, 4, 3, "ng-template", null, 6, i0.ɵɵtemplateRefExtractor); i0.ɵɵtemplate(6, FilesUploaderComponent_ng_template_0_ng_template_6_Template, 5, 4, "ng-template", null, 7, i0.ɵɵtemplateRefExtractor); i0.ɵɵelementEnd(); i0.ɵɵelementStart(8, "input", 8); i0.ɵɵlistener("click", function FilesUploaderComponent_ng_template_0_Template_input_click_8_listener($event) { i0.ɵɵrestoreView(_r28); const ctx_r27 = i0.ɵɵnextContext(); return ctx_r27.onClick_ChooseFile($event); })("keypress", function FilesUploaderComponent_ng_template_0_Template_input_keypress_8_listener($event) { i0.ɵɵrestoreView(_r28); const ctx_r29 = i0.ɵɵnextContext(); return ctx_r29.onKeyPress_ChooseFile($event); }); i0.ɵɵelementEnd(); i0.ɵɵelementEnd(); i0.ɵɵelementStart(9, "mat-error"); i0.ɵɵelement(10, "span", 9); i0.ɵɵpipe(11, "translate"); i0.ɵɵpipe(12, "translate"); i0.ɵɵpipe(13, "translate"); i0.ɵɵpipe(14, "translate"); i0.ɵɵelementEnd(); i0.ɵɵelementEnd(); } if (rf & 2) { const _r6 = i0.ɵɵreference(5); const _r8 = i0.ɵɵreference(7); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵproperty("formGroup", ctx_r1.form); i0.ɵɵadvance(2); i0.ɵɵstyleProp("height", ctx_r1.fieldHeight); i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(26, _c4, ctx_r1.rowSpan == 1, ctx_r1.disabled)); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", ctx_r1.src != "")("ngIfThen", _r6)("ngIfElse", _r8); i0.ɵɵadvance(5); i0.ɵɵproperty("id", ctx_r1.key)("name", ctx_r1.key)("formControlName", ctx_r1.key)("value", ctx_r1.src)("disabled", ctx_r1.disabled); i0.ɵɵadvance(2); i0.ɵɵproperty("title", ctx_r1.required && ctx_r1.src.length == 0 ? i0.ɵɵpipeBind2(11, 14, "Msg_Is_Required", i0.ɵɵpureFunction1(29, _c5, ctx_r1.label)) : i0.ɵɵpipeBind2(12, 17, "Msg_Is_Not_Valid", i0.ɵɵpureFunction1(31, _c5, ctx_r1.label)))("innerText", ctx_r1.required && ctx_r1.src.length == 0 ? i0.ɵɵpipeBind2(13, 20, "Msg_Is_Required", i0.ɵɵpureFunction1(33, _c5, ctx_r1.label)) : i0.ɵɵpipeBind2(14, 23, "Msg_Is_Not_Valid", i0.ɵɵpureFunction1(35, _c5, ctx_r1.label))); } } function FilesUploaderComponent_ng_container_2_ng_container_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainer(0); } } function FilesUploaderComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵtemplate(1, FilesUploaderComponent_ng_container_2_ng_container_1_Template, 1, 0, "ng-container", 32); i0.ɵɵelementContainerEnd(); } if (rf & 2) { i0.ɵɵnextContext(); const _r0 = i0.ɵɵreference(1); i0.ɵɵadvance(1); i0.ɵɵproperty("ngTemplateOutlet", _r0); } } function FilesUploaderComponent_ng_container_3_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainer(0); } } function FilesUploaderComponent_ng_container_4_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainer(0); } } export class FilesUploaderComponent { constructor(translate, dialogService, customizationService, fileService) { this.translate = translate; this.dialogService = dialogService; this.customizationService = customizationService; this.fileService = fileService; this.key = ''; this.src = ''; this.label = ''; this.required = false; this.disabled = false; this.xAlignment = '0'; this.rowSpan = 1; this.controlType = ''; this.sizeLimitMB = 5; this.standAlone = false; this.acceptedExtensions = 'bmp,jpg,jpeg,png,gif,ico,svg,html,css'; this.layoutType = LAYOUT_TYPE.PepperiForm; this.fileChanged = new EventEmitter(); this.elementClicked = new EventEmitter(); this.LAYOUT_TYPE = LAYOUT_TYPE; this.fieldHeight = ''; this.progress = 0; // response: string; this.intervalID = null; const self = this; this.uploader = new FileUploader({ removeAfterUpload: true }); this.uploader.onAfterAddingFile = (item) => { var _a; if ((_a = self.fileInput) === null || _a === void 0 ? void 0 : _a.nativeElement) { self.fileInput.nativeElement.value = ''; } const reader = new FileReader(); reader.onload = (event) => { const fileExt = item._file.name.split('.').pop(); const target = event.target || event.srcElement; const fileStr = target.result; const errorMsg = self.isValidFile(fileStr, fileExt, self.acceptedExtensions, self.sizeLimitMB); if (errorMsg === '') { self.src = fileStr; self.setIntervalX(25, 75); self.setProgress(5); self.fileChanged.emit(JSON.stringify({ acceptedExtensions: self.acceptedExtensions, fileStr, fileExt, })); } else { const title = self.translate.instant('Msg_Notice_Title'); const data = new DialogData({ title, content: errorMsg, contentType: DialogDataType.Html }); self.dialogService.openDefaultDialog(data); } }; reader.readAsDataURL(item._file); }; } ngOnInit() { this.fieldHeight = this.customizationService.calculateFieldHeight(this.layoutType, this.rowSpan, this.standAlone); /*this.uploader.onCompleteAll = () => { this.fileInput.nativeElement.value = ''; }*/ } isValidFile(fileStr, fileExtension, acceptedExtensions, sizeLimitMB = 5) { const file = fileStr; let fileSize = 0; let content = ''; // check if got file as Base64 if (typeof fileStr === 'string' && fileStr.indexOf('data:') > -1) { fileSize = this.getBase64FileSize(fileStr); } else { fileSize = file.size; } // check the size and the extension const sizeOK = fileSize !== -1 && file != null && fileSize < sizeLimitMB * (1048576); const extensionOK = acceptedExtensions === '' || acceptedExtensions.indexOf(fileExtension.toLowerCase()) !== -1; if (!extensionOK) { content = this.translate.instant('FaildToLoadImageExtension', { fileExtension: '<label class=\'upperCaseBold\'>' + fileExtension + '</label>' }); } else if (!sizeOK) { content = this.translate.instant('FaildToLoadImageSize', { fileSize: '<label class=\'upperCaseBold\'>' + (sizeLimitMB).toString() + '</label>' }); } return content; } getBase64FileSize(base64String) { let fileSize; try { base64String = base64String.substr(base64String.indexOf(',') + 1); fileSize = atob(base64String).length; } catch (e) { fileSize = -1; } return fileSize; // return size in bytes; } setIntervalX(delay, repetitions) { const self = this; let x = 0; this.intervalID = window.setInterval(() => { // self.setProgress(self.progress + 5); if (++x === repetitions || self.uploader.progress >= 100) { window.clearInterval(self.intervalID); } }, delay); } errorHandler(event) { event.target.src = this.fileService.getNoImagePath(); event.target.title = this.translate.instant('NoImage'); } setProgress(progress) { this.progress = progress; this.uploader.progress = progress; } deleteFile() { this.uploader.clearQueue(); window.clearInterval(this.intervalID); this.setProgress(0); const value = ''; this.src = value; this.fileChanged.emit(value); } onElementClicked(event) { this.elementClicked.emit({ apiName: this.key, event }); } onClick_ChooseFile(event) { var _a; if ((_a = this.fileInput) === null || _a === void 0 ? void 0 : _a.nativeElement) { this.fileInput.nativeElement.click(); } } onKeyPress_ChooseFile(event) { var _a; const e = event; if ([13, 32].indexOf(e.which) !== -1) { if ((_a = this.fileInput) === null || _a === void 0 ? void 0 : _a.nativeElement) { this.fileInput.nativeElement.click(); } } e.preventDefault(); } } FilesUploaderComponent.ɵfac = function FilesUploaderComponent_Factory(t) { return new (t || FilesUploaderComponent)(i0.ɵɵdirectiveInject(i1.TranslateService), i0.ɵɵdirectiveInject(i2.DialogService), i0.ɵɵdirectiveInject(i3.CustomizationService), i0.ɵɵdirectiveInject(i3.FileService)); }; FilesUploaderComponent.ɵcmp = i0.ɵɵdefineComponent({ type: FilesUploaderComponent, selectors: [["files-uploader"]], viewQuery: function FilesUploaderComponent_Query(rf, ctx) { if (rf & 1) { i0.ɵɵviewQuery(_c0, true); i0.ɵɵviewQuery(_c1, true); } if (rf & 2) { var _t; i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.fileInput = _t.first); i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.imagePreview = _t.first); } }, inputs: { key: "key", src: "src", label: "label", required: "required", disabled: "disabled", xAlignment: "xAlignment", rowSpan: "rowSpan", controlType: "controlType", sizeLimitMB: "sizeLimitMB", form: "form", standAlone: "standAlone", acceptedExtensions: "acceptedExtensions", layoutType: "layoutType" }, outputs: { fileChanged: "fileChanged", elementClicked: "elementClicked" }, decls: 5, vars: 3, consts: [["pepperiTemplate", ""], [4, "ngIf"], ["appearance", "outline", 3, "formGroup"], [1, "pepperi-file-wrapper"], [1, "pepperi-file", "body-sm", 3, "ngClass"], [4, "ngIf", "ngIfThen", "ngIfElse"], ["withImg", ""], ["noImg", ""], ["matInput", "", "type", "text", "autocomplete", "off", 1, "hidden-input", 3, "id", "name", "formControlName", "value", "disabled", "click", "keypress"], [1, "body-xs", 3, "title", "innerText"], ["mat-button", "", "class", "pepperi-button icon-button weak md delete", "tabindex", "-1", 3, "ngClass", "click", 4, "ngIf"], [1, "pepperi-file-preview", 3, "click"], ["class", "pepperi-file-preview-img", 3, "src", "max-height", "alt", "ngClass", "error", 4, "ngIf"], ["class", "ellipsis pepperi-file-message", 4, "ngIf"], ["mat-button", "", "tabindex", "-1", 1, "pepperi-button", "icon-button", "weak", "md", "delete", 3, "ngClass", "click"], ["name", "system_bin"], [1, "pepperi-file-preview-img", 3, "src", "alt", "ngClass", "error"], ["imagePreview", ""], [1, "ellipsis", "pepperi-file-message"], ["href", "javascript:void(0)", 4, "ngIf"], ["href", "javascript:void(0)"], ["name", "system_attach"], [1, "body-sm", "ellipsis"], ["name", "system_attach", 4, "ngIf"], ["name", "system_file_upload_cloud", 4, "ngIf"], ["class", "body-sm ellipsis", 4, "ngIf"], ["name", "system_file_upload_cloud"], ["tabindex", "-1", "type", "file", "accept", "acceptedExtensions", "ng2FileSelect", "", "autocomplete", "off", 3, "id", "uploader"], ["fileInput", ""], ["mat-button", "", "class", "pepperi-button icon-button weak md delete", 3, "ngClass", 4, "ngIf"], ["mat-button", "", 1, "pepperi-button", "icon-button", "weak", "md", "delete", 3, "ngClass"], ["name", "system_processing", 1, "spin-icon"], [4, "ngTemplateOutlet"]], template: function FilesUploaderComponent_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtemplate(0, FilesUploaderComponent_ng_template_0_Template, 15, 37, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor); i0.ɵɵtemplate(2, FilesUploaderComponent_ng_container_2_Template, 2, 1, "ng-container", 1); i0.ɵɵtemplate(3, FilesUploaderComponent_ng_container_3_Template, 1, 0, "ng-container", 1); i0.ɵɵtemplate(4, FilesUploaderComponent_ng_container_4_Template, 1, 0, "ng-container", 1); } if (rf & 2) { i0.ɵɵadvance(2); i0.ɵɵproperty("ngIf", ctx.layoutType === ctx.LAYOUT_TYPE.PepperiForm); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", ctx.layoutType === ctx.LAYOUT_TYPE.PepperiCard); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", ctx.layoutType === ctx.LAYOUT_TYPE.PepperiTable); } }, directives: [i4.NgIf, i5.MatFormField, i6.NgControlStatusGroup, i6.FormGroupDirective, i4.NgClass, i7.MatInput, i6.DefaultValueAccessor, i6.NgControlStatus, i6.FormControlName, i5.MatError, i8.MatButton, i9.MatIcon, i10.PepperiIconComponent, i11.FileSelectDirective, i4.NgTemplateOutlet], pipes: [i1.TranslatePipe], styles: ["[_nghost-%COMP%]{display:-ms-grid;display:grid;height:inherit}"], changeDetection: 0 }); FilesUploaderComponent.ɵprov = i0.ɵɵdefineInjectable({ token: FilesUploaderComponent, factory: FilesUploaderComponent.ɵfac }); /*@__PURE__*/ (function () { i0.ɵsetClassMetadata(FilesUploaderComponent, [{ type: Component, args: [{ selector: 'files-uploader', templateUrl: './files-uploader.component.html', styleUrls: ['./files-uploader.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush }] }, { type: Injectable }], function () { return [{ type: i1.TranslateService }, { type: i2.DialogService }, { type: i3.CustomizationService }, { type: i3.FileService }]; }, { key: [{ type: Input }], src: [{ type: Input }], label: [{ type: Input }], required: [{ type: Input }], disabled: [{ type: Input }], xAlignment: [{ type: Input }], rowSpan: [{ type: Input }], controlType: [{ type: Input }], sizeLimitMB: [{ type: Input }], form: [{ type: Input }], standAlone: [{ type: Input }], acceptedExtensions: [{ type: Input }], layoutType: [{ type: Input }], fileChanged: [{ type: Output }], elementClicked: [{ type: Output }], fileInput: [{ type: ViewChild, args: ['fileInput'] }], imagePreview: [{ type: ViewChild, args: ['imagePreview'] }] }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtdXBsb2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcGVwcGVyaS1saWIvZmlsZXMtdXBsb2FkZXIvZmlsZXMtdXBsb2FkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvcGVwcGVyaS1saWIvZmlsZXMtdXBsb2FkZXIvZmlsZXMtdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBVSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFxQix1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsSixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFlLFdBQVcsRUFBd0IsTUFBTSxjQUFjLENBQUM7QUFDOUUsT0FBTyxFQUFpQixVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUNFaEUsd0JBQXlFOzs7OztJQUVyRSxrQ0FHSTtJQUhpQyw2TkFBc0I7SUFHdkQsZ0NBQ0k7SUFBQSwrQkFDVztJQUNmLGlCQUFXO0lBQ2YsaUJBQVM7OztJQUxMLCtFQUFvRDs7Ozs7SUFPcEQsbUNBR0E7SUFGcUMscU9BQThCO0lBRG5FLGlCQUdBOzs7SUFGSSxpREFBZ0M7SUFEZSxtREFBVyxzQkFBQSwyRUFBQTs7O0lBSTFELDZCQUNJO0lBQUEsK0JBQ1c7SUFDWCxnQ0FBK0I7SUFBQSxZQUE2Qzs7SUFBQSxpQkFBTztJQUN2RixpQkFBSTs7SUFEK0IsZUFBNkM7SUFBN0MsdUVBQTZDOzs7SUFKcEYsK0JBQ0k7SUFBQSxzR0FDSTtJQUlSLGlCQUFNOzs7SUFMQyxlQUFpQjtJQUFqQix3Q0FBaUI7Ozs7SUFiNUIsMEdBR0k7SUFLSiwrQkFDSTtJQUQ4QixtT0FBa0M7SUFDaEUs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UTtrQkFBaEIsS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxPQUFPO2tCQUFmLEtBQUs7WUFDRyxXQUFXO2tCQUFuQixLQUFLO1lBQ0csV0FBVztrQkFBbkIsS0FBSztZQUVHLElBQUk7a0JBQVosS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxrQkFBa0I7a0JBQTFCLEtBQUs7WUFDRyxVQUFVO2tCQUFsQixLQUFLO1lBRUksV0FBVztrQkFBcEIsTUFBTTtZQUNHLGNBQWM7a0JBQXZCLE1BQU07WUFFaUIsU0FBUztrQkFBaEMsU0FBUzttQkFBQyxXQUFXO1lBQ0ssWUFBWTtrQkFBdEMsU0FBUzttQkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0YWJsZSwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIENoYW5nZURldGVjdG9yUmVmLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRlciB9IGZyb20gJ25nMi1maWxlLXVwbG9hZCc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRmlsZVNlcnZpY2UsIExBWU9VVF9UWVBFLCBDdXN0b21pemF0aW9uU2VydmljZSB9IGZyb20gJ0BwZXBwZXJpL2xpYic7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UsIERpYWxvZ0RhdGEsIERpYWxvZ0RhdGFUeXBlIH0gZnJvbSAnQHBlcHBlcmkvbGliL2RpYWxvZyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnZmlsZXMtdXBsb2FkZXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbGVzLXVwbG9hZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2ZpbGVzLXVwbG9hZGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBGaWxlc1VwbG9hZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIEBJbnB1dCgpIGtleSA9ICcnO1xyXG4gICAgQElucHV0KCkgc3JjID0gJyc7XHJcbiAgICBASW5wdXQoKSBsYWJlbCA9ICcnO1xyXG4gICAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSB4QWxpZ25tZW50ID0gJzAnO1xyXG4gICAgQElucHV0KCkgcm93U3BhbiA9IDE7XHJcbiAgICBASW5wdXQoKSBjb250cm9sVHlwZSA9ICcnO1xyXG4gICAgQElucHV0KCkgc2l6ZUxpbWl0TUIgPSA1O1xyXG5cclxuICAgIEBJbnB1dCgpIGZvcm06IEZvcm1Hcm91cDtcclxuICAgIEBJbnB1dCgpIHN0YW5kQWxvbmUgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGFjY2VwdGVkRXh0ZW5zaW9ucyA9ICdibXAsanBnLGpwZWcscG5nLGdpZixpY28sc3ZnLGh0bWwsY3NzJztcclxuICAgIEBJbnB1dCgpIGxheW91dFR5cGU6IExBWU9VVF9UWVBFID0gTEFZT1VUX1RZUEUuUGVwcGVyaUZvcm07XHJcblxyXG4gICAgQE91dHB1dCgpIGZpbGVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIGVsZW1lbnRDbGlja2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dDogYW55O1xyXG4gICAgQFZpZXdDaGlsZCgnaW1hZ2VQcmV2aWV3JykgaW1hZ2VQcmV2aWV3OiBhbnk7XHJcblxyXG4gICAgTEFZT1VUX1RZUEUgPSBMQVlPVVRfVFlQRTtcclxuICAgIGZpZWxkSGVpZ2h0ID0gJyc7XHJcblxyXG4gICAgLy8gbXVsdGlwbGUgPSBmYWxzZTtcclxuICAgIHVwbG9hZGVyOiBGaWxlVXBsb2FkZXI7XHJcbiAgICBwcm9ncmVzcyA9IDA7XHJcbiAgICAvLyByZXNwb25zZTogc3RyaW5nO1xyXG4gICAgaW50ZXJ2YWxJRDogYW55ID0gbnVsbDtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBjdXN0b21pemF0aW9uU2VydmljZTogQ3VzdG9taXphdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBmaWxlU2VydmljZTogRmlsZVNlcnZpY2UpXHJcbiAgICB7XHJcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy51cGxvYWRlciA9IG5ldyBGaWxlVXBsb2FkZXIoeyByZW1vdmVBZnRlclVwbG9hZDogdHJ1ZSB9KTtcclxuXHJcbiAgICAgICAgdGhpcy51cGxvYWRlci5vbkFmdGVyQWRkaW5nRmlsZSA9IChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzZWxmLmZpbGVJbnB1dD8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgc2VsZi5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcblxyXG4gICAgICAgICAgICByZWFkZXIub25sb2FkID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVFeHQgPSBpdGVtLl9maWxlLm5hbWUuc3BsaXQoJy4nKS5wb3AoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCB8fCBldmVudC5zcmNFbGVtZW50O1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZVN0ciA9IHRhcmdldC5yZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvck1zZyA9IHNlbGYuaXNWYWxpZEZpbGUoZmlsZVN0ciwgZmlsZUV4dCwgc2VsZi5hY2NlcHRlZEV4dGVuc2lvbnMsIHNlbGYuc2l6ZUxpbWl0TUIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yTXNnID09PSAnJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc3JjID0gZmlsZVN0cjtcclxuICAgICAgICAgICAgICAgICAgICBzZWxmLnNldEludGVydmFsWCgyNSwgNzUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0UHJvZ3Jlc3MoNSk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5maWxlQ2hhbmdlZC5lbWl0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHRlZEV4dGVuc2lvbnM6IHNlbGYuYWNjZXB0ZWRFeHRlbnNpb25zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZVN0cixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVFeHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gc2VsZi50cmFuc2xhdGUuaW5zdGFudCgnTXNnX05vdGljZV9UaXRsZScpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBuZXcgRGlhbG9nRGF0YSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBlcnJvck1zZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFR5cGU6IERpYWxvZ0RhdGFUeXBlLkh0bWx9KTtcclxuICAgICAgICAgICAgICAgICAgICBzZWxmLmRpYWxvZ1NlcnZpY2Uub3BlbkRlZmF1bHREaWFsb2coZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChpdGVtLl9maWxlKTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZmllbGRIZWlnaHQgPSB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLmNhbGN1bGF0ZUZpZWxkSGVpZ2h0KHRoaXMubGF5b3V0VHlwZSwgdGhpcy5yb3dTcGFuLCB0aGlzLnN0YW5kQWxvbmUpO1xyXG5cclxuICAgICAgICAvKnRoaXMudXBsb2FkZXIub25Db21wbGV0ZUFsbCA9ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgIH0qL1xyXG4gICAgfVxyXG5cclxuICAgIGlzVmFsaWRGaWxlKGZpbGVTdHIsIGZpbGVFeHRlbnNpb24sIGFjY2VwdGVkRXh0ZW5zaW9ucywgc2l6ZUxpbWl0TUIgPSA1KTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBmaWxlOiBhbnkgPSBmaWxlU3RyO1xyXG4gICAgICAgIGxldCBmaWxlU2l6ZSA9IDA7XHJcbiAgICAgICAgbGV0IGNvbnRlbnQgPSAnJztcclxuICAgICAgICAvLyBjaGVjayBpZiBnb3QgZmlsZSBhcyBCYXNlNjRcclxuICAgICAgICBpZiAodHlwZW9mIGZpbGVTdHIgPT09ICdzdHJpbmcnICYmIGZpbGVTdHIuaW5kZXhPZignZGF0YTonKSA+IC0xKSB7XHJcbiAgICAgICAgICAgIGZpbGVTaXplID0gdGhpcy5nZXRCYXNlNjRGaWxlU2l6ZShmaWxlU3RyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmaWxlU2l6ZSA9IGZpbGUuc2l6ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY2hlY2sgdGhlIHNpemUgYW5kIHRoZSBleHRlbnNpb25cclxuICAgICAgICBjb25zdCBzaXplT0s6IGJvb2xlYW4gPSBmaWxlU2l6ZSAhPT0gLTEgJiYgZmlsZSAhPSBudWxsICYmIGZpbGVTaXplIDwgc2l6ZUxpbWl0TUIgKiAoMTA0ODU3Nik7XHJcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uT0sgPSBhY2NlcHRlZEV4dGVuc2lvbnMgPT09ICcnIHx8IGFjY2VwdGVkRXh0ZW5zaW9ucy5pbmRleE9mKGZpbGVFeHRlbnNpb24udG9Mb3dlckNhc2UoKSkgIT09IC0xO1xyXG4gICAgICAgIGlmICghZXh0ZW5zaW9uT0spIHtcclxuICAgICAgICAgICAgY29udGVudCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0ZhaWxkVG9Mb2FkSW1hZ2VFeHRlbnNpb24nLFxyXG4gICAgICAgICAgICAgICAgeyBmaWxlRXh0ZW5zaW9uOiAnPGxhYmVsIGNsYXNzPVxcJ3VwcGVyQ2FzZUJvbGRcXCc+JyArIGZpbGVFeHRlbnNpb24gKyAnPC9sYWJlbD4nIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoIXNpemVPSykge1xyXG4gICAgICAgICAgICBjb250ZW50ID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnRmFpbGRUb0xvYWRJbWFnZVNpemUnLFxyXG4gICAgICAgICAgICAgICAgeyBmaWxlU2l6ZTogJzxsYWJlbCBjbGFzcz1cXCd1cHBlckNhc2VCb2xkXFwnPicgKyAoc2l6ZUxpbWl0TUIpLnRvU3RyaW5nKCkgKyAnPC9sYWJlbD4nIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY29udGVudDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRCYXNlNjRGaWxlU2l6ZShiYXNlNjRTdHJpbmc6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICAgICAgbGV0IGZpbGVTaXplOiBudW1iZXI7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGJhc2U2NFN0cmluZyA9IGJhc2U2NFN0cmluZy5zdWJzdHIoYmFzZTY0U3RyaW5nLmluZGV4T2YoJywnKSArIDEpO1xyXG4gICAgICAgICAgICBmaWxlU2l6ZSA9IGF0b2IoYmFzZTY0U3RyaW5nKS5sZW5ndGg7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBmaWxlU2l6ZSA9IC0xO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZpbGVTaXplOyAvLyByZXR1cm4gc2l6ZSBpbiBieXRlcztcclxuICAgIH1cclxuXHJcbiAgICBzZXRJbnRlcnZhbFgoZGVsYXksIHJlcGV0aXRpb25zKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgbGV0IHggPSAwO1xyXG4gICAgICAgIHRoaXMuaW50ZXJ2YWxJRCA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIHNlbGYuc2V0UHJvZ3Jlc3Moc2VsZi5wcm9ncmVzcyArIDUpO1xyXG4gICAgICAgICAgICBpZiAoKyt4ID09PSByZXBldGl0aW9ucyB8fCBzZWxmLnVwbG9hZGVyLnByb2dyZXNzID49IDEwMCkge1xyXG4gICAgICAgICAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoc2VsZi5pbnRlcnZhbElEKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIGRlbGF5KTtcclxuICAgIH1cclxuXHJcbiAgICBlcnJvckhhbmRsZXIoZXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBldmVudC50YXJnZXQuc3JjID0gdGhpcy5maWxlU2VydmljZS5nZXROb0ltYWdlUGF0aCgpO1xyXG4gICAgICAgIGV2ZW50LnRhcmdldC50aXRsZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ05vSW1hZ2UnKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldFByb2dyZXNzKHByb2dyZXNzKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5wcm9ncmVzcyA9IHByb2dyZXNzO1xyXG4gICAgICAgIHRoaXMudXBsb2FkZXIucHJvZ3Jlc3MgPSBwcm9ncmVzcztcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVGaWxlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudXBsb2FkZXIuY2xlYXJRdWV1ZSgpO1xyXG4gICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWxJRCk7XHJcbiAgICAgICAgdGhpcy5zZXRQcm9ncmVzcygwKTtcclxuXHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSAnJztcclxuICAgICAgICB0aGlzLnNyYyA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuZmlsZUNoYW5nZWQuZW1pdCh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25FbGVtZW50Q2xpY2tlZChldmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZWxlbWVudENsaWNrZWQuZW1pdCh7IGFwaU5hbWU6IHRoaXMua2V5LCBldmVudCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNsaWNrX0Nob29zZUZpbGUoZXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5maWxlSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbktleVByZXNzX0Nob29zZUZpbGUoZXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBlID0gZXZlbnQgYXMgS2V5Ym9hcmRFdmVudDtcclxuXHJcbiAgICAgICAgaWYgKFsxMywgMzJdLmluZGV4T2YoZS53aGljaCkgIT09IC0xKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZpbGVJbnB1dD8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxufVxyXG4iLCI8IS0tIE5ldyBjb2RlIC0tPlxyXG48bmctdGVtcGxhdGUgI3BlcHBlcmlUZW1wbGF0ZT5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBbZm9ybUdyb3VwXT1cImZvcm1cIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwZXBwZXJpLWZpbGUtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVwcGVyaS1maWxlIGJvZHktc21cIiBbc3R5bGUuaGVpZ2h0XT1cImZpZWxkSGVpZ2h0XCIgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICdvbmUtcm93Jzogcm93U3BhbiA9PSAxLFxyXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGU6IGRpc2FibGVkXHJcbiAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3JjICE9ICcnOyB0aGVuIHdpdGhJbWc7IGVsc2Ugbm9JbWdcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjd2l0aEltZz5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWRpc2FibGVkXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlRmlsZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwZXBwZXJpLWJ1dHRvbiBpY29uLWJ1dHRvbiB3ZWFrIG1kIGRlbGV0ZVwiIHRhYmluZGV4PVwiLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdyaWdodC1hbGlnbm1lbnQnOiB4QWxpZ25tZW50ID09ICcyJyB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwZXAtaWNvbiBuYW1lPVwic3lzdGVtX2JpblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wZXAtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVwcGVyaS1maWxlLXByZXZpZXdcIiAoY2xpY2spPVwib25FbGVtZW50Q2xpY2tlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJjb250cm9sVHlwZSA9PT0gJ2ltYWdlJ1wiICNpbWFnZVByZXZpZXcgW3NyY109XCJzcmNcIiBjbGFzcz1cInBlcHBlcmktZmlsZS1wcmV2aWV3LWltZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodF09XCJmaWVsZEhlaWdodFwiIChlcnJvcik9XCJlcnJvckhhbmRsZXIoJGV2ZW50KVwiIFthbHRdPVwibGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiWyd0ZXh0LWFsaWduLScgKyB4QWxpZ25tZW50XVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb250cm9sVHlwZSA9PT0gJ2F0dGFjaG1lbnQnXCIgY2xhc3M9XCJlbGxpcHNpcyBwZXBwZXJpLWZpbGUtbWVzc2FnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJzcmMgIT0gJydcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBlcC1pY29uIG5hbWU9XCJzeXN0ZW1fYXR0YWNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wZXAtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvZHktc20gZWxsaXBzaXNcIj57eyAnRmlsZXNVcGxvYWRlcl9TZWVPcmlnaW5hbCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9JbWc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVsbGlwc2lzIHBlcHBlcmktZmlsZS1tZXNzYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwZXAtaWNvbiAqbmdJZj1cImNvbnRyb2xUeXBlID09PSAnYXR0YWNobWVudCdcIiBuYW1lPVwic3lzdGVtX2F0dGFjaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3BlcC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGVwLWljb24gKm5nSWY9XCJjb250cm9sVHlwZSA9PT0gJ2ltYWdlJ1wiIG5hbWU9XCJzeXN0ZW1fZmlsZV91cGxvYWRfY2xvdWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wZXAtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJib2R5LXNtIGVsbGlwc2lzXCIgKm5nSWY9XCJwcm9ncmVzcyA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAoZGlzYWJsZWQgPyAoY29udHJvbFR5cGUgPT09ICdpbWFnZScgPyAnRmlsZXNVcGxvYWRlcl9NaXNzaW5nSW1hZ2VNc2cnIDogJ0ZpbGVzVXBsb2FkZXJfTWlzc2luZ0ZpbGVNc2cnKSA6ICdGaWxlc1VwbG9hZGVyX0RyYWdEcm9wTXNnJykgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICNmaWxlSW5wdXQgaWQ9XCJwZXBwZXJpLWZpbGUte3sga2V5IH19XCIgdGFiaW5kZXg9XCItMVwiIHR5cGU9XCJmaWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdD1cImFjY2VwdGVkRXh0ZW5zaW9uc1wiIG5nMkZpbGVTZWxlY3QgW3VwbG9hZGVyXT1cInVwbG9hZGVyXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInByb2dyZXNzICE9IDBcIiBtYXQtYnV0dG9uIGNsYXNzPVwicGVwcGVyaS1idXR0b24gaWNvbi1idXR0b24gd2VhayBtZCBkZWxldGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncmlnaHQtYWxpZ25tZW50JzogeEFsaWdubWVudCA9PSAnMicgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwZXAtaWNvbiBuYW1lPVwic3lzdGVtX3Byb2Nlc3NpbmdcIiBjbGFzcz1cInNwaW4taWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGVwLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8aW5wdXQgW2lkXT1cImtleVwiIG1hdElucHV0IFtuYW1lXT1cImtleVwiIFtmb3JtQ29udHJvbE5hbWVdPVwia2V5XCIgY2xhc3M9XCJoaWRkZW4taW5wdXRcIiB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwic3JjXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgKGNsaWNrKT1cIm9uQ2xpY2tfQ2hvb3NlRmlsZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbktleVByZXNzX0Nob29zZUZpbGUoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxtYXQtZXJyb3I+PHNwYW4gY2xhc3M9XCJib2R5LXhzXCJcclxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJyZXF1aXJlZCAmJiBzcmMubGVuZ3RoID09IDAgPyAoJ01zZ19Jc19SZXF1aXJlZCcgfCB0cmFuc2xhdGU6IHsgZmllbGQ6IGxhYmVsIH0pIDogKCdNc2dfSXNfTm90X1ZhbGlkJyB8IHRyYW5zbGF0ZTogeyBmaWVsZDogbGFiZWwgfSlcIlxyXG4gICAgICAgICAgICAgICAgW2lubmVyVGV4dF09XCJyZXF1aXJlZCAmJiBzcmMubGVuZ3RoID09IDAgPyAoJ01zZ19Jc19SZXF1aXJlZCcgfCB0cmFuc2xhdGU6IHsgZmllbGQ6IGxhYmVsIH0pIDogKCdNc2dfSXNfTm90X1ZhbGlkJyB8IHRyYW5zbGF0ZTogeyBmaWVsZDogbGFiZWwgfSlcIj48L3NwYW4+XHJcbiAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImxheW91dFR5cGUgPT09IExBWU9VVF9UWVBFLlBlcHBlcmlGb3JtXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGVwcGVyaVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImxheW91dFR5cGUgPT09IExBWU9VVF9UWVBFLlBlcHBlcmlDYXJkXCI+XHJcbiAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwZXBwZXJpVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj4gLS0+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImxheW91dFR5cGUgPT09IExBWU9VVF9UWVBFLlBlcHBlcmlUYWJsZVwiPlxyXG4gICAgPCEtLSA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGVwcGVyaVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+IC0tPlxyXG48L25nLWNvbnRhaW5lcj5cclxuIl19