@smartbit4all/ng-client 4.3.9 → 4.3.11

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 (94) hide show
  1. package/esm2022/lib/session/api/api/session.service.mjs +1 -1
  2. package/esm2022/lib/session/api/configuration.mjs +1 -1
  3. package/esm2022/lib/session/api/encoder.mjs +1 -1
  4. package/esm2022/lib/session/api/model/accountInfo.mjs +1 -1
  5. package/esm2022/lib/session/api/model/apiError.mjs +1 -1
  6. package/esm2022/lib/session/api/model/authenticationProviderData.mjs +1 -1
  7. package/esm2022/lib/session/api/model/getAuthenticationProvidersResponse.mjs +1 -1
  8. package/esm2022/lib/session/api/model/refreshSessionRequest.mjs +1 -1
  9. package/esm2022/lib/session/api/model/userActivityLog.mjs +1 -1
  10. package/esm2022/lib/session/api/param.mjs +1 -1
  11. package/esm2022/lib/session/api/variables.mjs +1 -1
  12. package/esm2022/lib/smart-component-layout/api/api/api.mjs +1 -1
  13. package/esm2022/lib/smart-component-layout/api/api/default.service.mjs +1 -1
  14. package/esm2022/lib/smart-component-layout/api/api.module.mjs +1 -1
  15. package/esm2022/lib/smart-component-layout/api/configuration.mjs +1 -1
  16. package/esm2022/lib/smart-component-layout/api/encoder.mjs +1 -1
  17. package/esm2022/lib/smart-component-layout/api/index.mjs +1 -1
  18. package/esm2022/lib/smart-component-layout/api/model/componentType.mjs +1 -1
  19. package/esm2022/lib/smart-component-layout/api/model/layoutDefinitionDescriptor.mjs +1 -1
  20. package/esm2022/lib/smart-component-layout/api/model/layoutDirection.mjs +1 -1
  21. package/esm2022/lib/smart-component-layout/api/model/models.mjs +1 -1
  22. package/esm2022/lib/smart-component-layout/api/model/smartComponentLayoutDefinition.mjs +1 -1
  23. package/esm2022/lib/smart-component-layout/api/model/smartComponentWidgetDefinition.mjs +1 -1
  24. package/esm2022/lib/smart-component-layout/api/model/toolbarProperties.mjs +1 -1
  25. package/esm2022/lib/smart-component-layout/api/param.mjs +1 -1
  26. package/esm2022/lib/smart-component-layout/api/variables.mjs +1 -1
  27. package/esm2022/lib/smart-diagram/api/api/api.mjs +1 -1
  28. package/esm2022/lib/smart-diagram/api/api/diagramService.service.mjs +1 -1
  29. package/esm2022/lib/smart-diagram/api/api.module.mjs +1 -1
  30. package/esm2022/lib/smart-diagram/api/configuration.mjs +1 -1
  31. package/esm2022/lib/smart-diagram/api/encoder.mjs +1 -1
  32. package/esm2022/lib/smart-diagram/api/index.mjs +1 -1
  33. package/esm2022/lib/smart-diagram/api/model/diagramColor.mjs +1 -1
  34. package/esm2022/lib/smart-diagram/api/model/diagramDataContainer.mjs +1 -1
  35. package/esm2022/lib/smart-diagram/api/model/diagramDataItem.mjs +1 -1
  36. package/esm2022/lib/smart-diagram/api/model/diagramDataSet.mjs +1 -1
  37. package/esm2022/lib/smart-diagram/api/model/diagramDescriptor.mjs +1 -1
  38. package/esm2022/lib/smart-diagram/api/model/diagramModel.mjs +1 -1
  39. package/esm2022/lib/smart-diagram/api/model/diagramShape.mjs +1 -1
  40. package/esm2022/lib/smart-diagram/api/model/drawTime.mjs +1 -1
  41. package/esm2022/lib/smart-diagram/api/model/labelText.mjs +1 -1
  42. package/esm2022/lib/smart-diagram/api/model/models.mjs +1 -1
  43. package/esm2022/lib/smart-diagram/api/param.mjs +1 -1
  44. package/esm2022/lib/smart-diagram/api/variables.mjs +1 -1
  45. package/esm2022/lib/smart-dialog/smartdialog.service.mjs +2 -1
  46. package/esm2022/lib/smart-form/api/model/dateFieldProperties.mjs +1 -1
  47. package/esm2022/lib/smart-form/api/model/models.mjs +1 -1
  48. package/esm2022/lib/smart-form/api/model/multiFileUploaderProperties.mjs +1 -1
  49. package/esm2022/lib/smart-form/api/model/selectionDefinition.mjs +1 -1
  50. package/esm2022/lib/smart-form/api/model/smartFormWidgetType.mjs +1 -1
  51. package/esm2022/lib/smart-form/api/model/smartWidgetDefinition.mjs +1 -1
  52. package/esm2022/lib/smart-form/api/model/textBoxProperties.mjs +1 -1
  53. package/esm2022/lib/smart-form/api/model/valueChangeMode.mjs +1 -1
  54. package/esm2022/lib/smart-form/smartfileuploader/smartfileuploader.component.mjs +3 -3
  55. package/esm2022/lib/smart-form/widgets/components/smart-file-editor/smart-file-editor.component.mjs +3 -3
  56. package/esm2022/lib/smart-form/widgets/components/smart-multi-file-editor/smart-multi-file-editor.component.mjs +3 -3
  57. package/esm2022/lib/smart-map/api/api/api.mjs +1 -1
  58. package/esm2022/lib/smart-map/api/api/geoMap.service.mjs +1 -1
  59. package/esm2022/lib/smart-map/api/api.module.mjs +1 -1
  60. package/esm2022/lib/smart-map/api/configuration.mjs +1 -1
  61. package/esm2022/lib/smart-map/api/encoder.mjs +1 -1
  62. package/esm2022/lib/smart-map/api/index.mjs +1 -1
  63. package/esm2022/lib/smart-map/api/model/gPSPosition.mjs +1 -1
  64. package/esm2022/lib/smart-map/api/model/gPSRoute.mjs +1 -1
  65. package/esm2022/lib/smart-map/api/model/geoMapChange.mjs +1 -1
  66. package/esm2022/lib/smart-map/api/model/geoMapDataLoadingMode.mjs +1 -1
  67. package/esm2022/lib/smart-map/api/model/geoMapDataSourceDescriptor.mjs +1 -1
  68. package/esm2022/lib/smart-map/api/model/geoMapDataSourceType.mjs +1 -1
  69. package/esm2022/lib/smart-map/api/model/geoMapEditingSession.mjs +1 -1
  70. package/esm2022/lib/smart-map/api/model/geoMapInteraction.mjs +1 -1
  71. package/esm2022/lib/smart-map/api/model/geoMapItem.mjs +1 -1
  72. package/esm2022/lib/smart-map/api/model/geoMapItemKind.mjs +1 -1
  73. package/esm2022/lib/smart-map/api/model/geoMapLayer.mjs +1 -1
  74. package/esm2022/lib/smart-map/api/model/geoMapLayerChange.mjs +1 -1
  75. package/esm2022/lib/smart-map/api/model/geoMapLayerDescriptor.mjs +1 -1
  76. package/esm2022/lib/smart-map/api/model/geoMapModel.mjs +1 -1
  77. package/esm2022/lib/smart-map/api/model/geoMapOperationMode.mjs +1 -1
  78. package/esm2022/lib/smart-map/api/model/geoMapSelectionMode.mjs +1 -1
  79. package/esm2022/lib/smart-map/api/model/geoMapServerModel.mjs +1 -1
  80. package/esm2022/lib/smart-map/api/model/geoMapTextType.mjs +1 -1
  81. package/esm2022/lib/smart-map/api/model/geoMapViewState.mjs +1 -1
  82. package/esm2022/lib/smart-map/api/model/geoMapViewport.mjs +1 -1
  83. package/esm2022/lib/smart-map/api/model/models.mjs +1 -1
  84. package/esm2022/lib/smart-map/api/param.mjs +1 -1
  85. package/esm2022/lib/smart-map/api/variables.mjs +1 -1
  86. package/esm2022/lib/view-context/api/model/uiActionInputType.mjs +1 -1
  87. package/esm2022/lib/view-context/api/model/uiActionUploadDescriptor.mjs +1 -1
  88. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/prime-file-uploader/prime-file-uploader.component.mjs +7 -8
  89. package/esm2022/lib/view-context/smart-view-context-dialog.service.mjs +2 -1
  90. package/fesm2022/smartbit4all-ng-client.mjs +38 -36
  91. package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
  92. package/package.json +1 -1
  93. package/smartbit4all-ng-client-4.3.11.tgz +0 -0
  94. package/smartbit4all-ng-client-4.3.9.tgz +0 -0
@@ -18,4 +18,4 @@ export var ValueChangeMode;
18
18
  ValueChangeMode["IMMEDIATE_ACTION"] = "IMMEDIATE_ACTION";
19
19
  ValueChangeMode["BLUR"] = "BLUR";
20
20
  })(ValueChangeMode || (ValueChangeMode = {}));
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWVDaGFuZ2VNb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZm9ybS9hcGkvbW9kZWwvdmFsdWVDaGFuZ2VNb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7O0dBVUc7QUFHSDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLGVBSVg7QUFKRCxXQUFZLGVBQWU7SUFDdkIsZ0NBQWEsQ0FBQTtJQUNiLHdEQUFxQyxDQUFBO0lBQ3JDLGdDQUFhLENBQUE7QUFDakIsQ0FBQyxFQUpXLGVBQWUsS0FBZixlQUFlLFFBSTFCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb3JtIGxheW91dCBkZWZpbml0aW9uXG4gKiBDb250YWlucyBmb3JtIGxheW91dCBkZWZpbml0aW9uIG9iamVjdHMuXG4gKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIE9wZW5BUEkgZG9jdW1lbnQ6IDEuMC4wXG4gKiBDb250YWN0OiBpbmZvQGl0NGFsbC5odVxuICpcbiAqIE5PVEU6IFRoaXMgY2xhc3MgaXMgYXV0byBnZW5lcmF0ZWQgYnkgT3BlbkFQSSBHZW5lcmF0b3IgKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaCkuXG4gKiBodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2hcbiAqIERvIG5vdCBlZGl0IHRoZSBjbGFzcyBtYW51YWxseS5cbiAqL1xuXG5cbi8qKlxuICogVGhpcyBlbnVtIGRlZmluZXMgdGhlIHZhbHVlIGNoYW5nZSBoYW5kbGluZyBzdHJhdGVneS4gSU1NRURJQVRFX0FDVElPTiB3aWxsIHRyaWdnZXIgYW4gZXhlY3V0ZVVpQWN0aW9uIHdoZW4gdGhlIHZhbHVlIGlzIGNoYW5nZWQuIEJMVVIgd2hpY2ggd2lsbCB0cmlnZ2VyIGFuIGV4ZWN1dGVVaUFjdGlvbiB3aGVuIHRoZSBmb2N1cyBpcyBsb3N0ZWQgZnJvbSB0aGUgaHRtbCBlbGVtZW50LiBcbiAqL1xuZXhwb3J0IGVudW0gVmFsdWVDaGFuZ2VNb2RlIHtcbiAgICBOT05FID0gJ05PTkUnLFxuICAgIElNTUVESUFURV9BQ1RJT04gPSAnSU1NRURJQVRFX0FDVElPTicsXG4gICAgQkxVUiA9ICdCTFVSJ1xufVxuXG4iXX0=
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWVDaGFuZ2VNb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZm9ybS9hcGkvbW9kZWwvdmFsdWVDaGFuZ2VNb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7O0dBVUc7QUFHSDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLGVBSVg7QUFKRCxXQUFZLGVBQWU7SUFDdkIsZ0NBQWEsQ0FBQTtJQUNiLHdEQUFxQyxDQUFBO0lBQ3JDLGdDQUFhLENBQUE7QUFDakIsQ0FBQyxFQUpXLGVBQWUsS0FBZixlQUFlLFFBSTFCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEZvcm0gbGF5b3V0IGRlZmluaXRpb25cclxuICogQ29udGFpbnMgZm9ybSBsYXlvdXQgZGVmaW5pdGlvbiBvYmplY3RzLlxyXG4gKlxyXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgT3BlbkFQSSBkb2N1bWVudDogMS4wLjBcclxuICogQ29udGFjdDogaW5mb0BpdDRhbGwuaHVcclxuICpcclxuICogTk9URTogVGhpcyBjbGFzcyBpcyBhdXRvIGdlbmVyYXRlZCBieSBPcGVuQVBJIEdlbmVyYXRvciAoaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoKS5cclxuICogaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoXHJcbiAqIERvIG5vdCBlZGl0IHRoZSBjbGFzcyBtYW51YWxseS5cclxuICovXHJcblxyXG5cclxuLyoqXHJcbiAqIFRoaXMgZW51bSBkZWZpbmVzIHRoZSB2YWx1ZSBjaGFuZ2UgaGFuZGxpbmcgc3RyYXRlZ3kuIElNTUVESUFURV9BQ1RJT04gd2lsbCB0cmlnZ2VyIGFuIGV4ZWN1dGVVaUFjdGlvbiB3aGVuIHRoZSB2YWx1ZSBpcyBjaGFuZ2VkLiBCTFVSIHdoaWNoIHdpbGwgdHJpZ2dlciBhbiBleGVjdXRlVWlBY3Rpb24gd2hlbiB0aGUgZm9jdXMgaXMgbG9zdGVkIGZyb20gdGhlIGh0bWwgZWxlbWVudC4gXHJcbiAqL1xyXG5leHBvcnQgZW51bSBWYWx1ZUNoYW5nZU1vZGUge1xyXG4gICAgTk9ORSA9ICdOT05FJyxcclxuICAgIElNTUVESUFURV9BQ1RJT04gPSAnSU1NRURJQVRFX0FDVElPTicsXHJcbiAgICBCTFVSID0gJ0JMVVInXHJcbn1cclxuXHJcbiJdfQ==
@@ -165,11 +165,11 @@ export class SmartfileuploaderComponent {
165
165
  };
166
166
  }
167
167
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartfileuploaderComponent, deps: [{ token: i1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
168
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartfileuploaderComponent, selector: "smartfileuploader", inputs: { uploadCallback: "uploadCallback", fileFormats: "fileFormats", maxSizeMb: "maxSizeMb", i18n: "i18n", useIconButton: "useIconButton", isMultiple: "isMultiple", autoUpload: "autoUpload", isDisabled: "isDisabled" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<div\r\n class=\"container\"\r\n [ngClass]=\"{ disabledWidget: isDisabled }\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\"\r\n [class.dragover]=\"isDragOver\"\r\n>\r\n <div class=\"fileContainer\" (click)=\"fileInput.click()\">\r\n <input\r\n #fileInput\r\n id=\"addFile\"\r\n placeholder=\"fileInput\"\r\n type=\"file\"\r\n (change)=\"getFile($event)\"\r\n class=\"file\"\r\n accept=\"{{ fileFormats?.join(', ') }}\"\r\n [size]=\"maxSizeMb\"\r\n [multiple]=\"isMultiple\"\r\n [disabled]=\"isDisabled\"\r\n style=\"display: none\"\r\n />\r\n <div class=\"fileUploadContentContainer\">\r\n <div class=\"icon\">\r\n <mat-label *ngIf=\"useIconButton\" class=\"addFileButton\">\r\n <mat-icon color=\"primary\" class=\"addCircle\">add_circle</mat-icon>\r\n </mat-label>\r\n <button *ngIf=\"!useIconButton\" mat-raised-button color=\"primary\" class=\"addFileButton\">\r\n {{ i18n!.addFile }}\r\n </button>\r\n </div>\r\n <div class=\"labels\">\r\n <mat-label *ngIf=\"useIconButton\" class=\"label primary title\">\r\n {{ i18n!.addFile }}\r\n </mat-label>\r\n <mat-label class=\"label secondary\"> {{ i18n!.browseOrDrag }} </mat-label>\r\n <mat-label class=\"subLabel primary\"> {{ i18n!.maxSize }} </mat-label>\r\n <mat-label class=\"subLabel primary\"> {{ i18n!.formats }} </mat-label>\r\n </div>\r\n <div class=\"uploadButton\" *ngIf=\"files.length\">\r\n <ui-action-button (actionClick)=\"uploadFile()\" [descriptor]=\"uploadButton\">\r\n </ui-action-button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"errors.length\" class=\"errorMessage\">\r\n <smart-icon [icon]=\"'error'\" [color]=\"'warn'\"></smart-icon>\r\n <div class=\"errors\">\r\n <span *ngFor=\"let error of errors\">{{ error }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"files.length\" class=\"uploadedFilesContainer\">\r\n <div *ngFor=\"let file of files; let i = index\" class=\"uploadedFile\">\r\n <ng-container *ngIf=\"filePreviewUrl(file); else fileIcon\">\r\n <img [src]=\"filePreviewUrl(file)\" [alt]=\"file.name\" width=\"50\" height=\"50\" />\r\n </ng-container>\r\n <ng-template #fileIcon>\r\n <smart-icon [icon]=\"'insert_drive_file'\"></smart-icon>\r\n </ng-template>\r\n\r\n <div class=\"fileData\">\r\n <div class=\"fileDataContainer\">\r\n <span class=\"fileName\">{{ file.name }}</span>\r\n <span class=\"fileSize\">{{ formatSize(file.size) }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"fileActions\">\r\n <ui-action-button (actionClick)=\"downloadFile(file)\" [descriptor]=\"downloadButton\">\r\n </ui-action-button>\r\n\r\n <ui-action-button class=\"removeIcon\" (actionClick)=\"remove(i)\" [descriptor]=\"removeButton\">\r\n </ui-action-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem}.container{display:flex;flex-direction:column;border:2px dashed var(--border-color);border-radius:var(--def-border-radius)}.fileContainer{cursor:pointer;padding:1rem;display:flex;flex-direction:column}.fileContainer:hover{background-color:rgb(from var(--border-color) r g b / .1)}.disabledWidget ::ng-deep .fileContainer:hover{background-color:unset;cursor:unset}.disabledWidget ::ng-deep *{opacity:.85}.dragover{background-color:rgb(from var(--border-color) r g b / .1)}.fileUploadContentContainer{display:flex;flex-direction:row;gap:1rem}.icon mat-icon{font-size:3rem;width:unset;height:unset}.icon{align-content:center}.labels{flex:1;display:flex;flex-direction:column;justify-content:center;width:fit-content}.uploadButton{align-content:center}.primary{color:var(--primary-color)}.secondary{color:var(--gray)}.label{margin:unset}.subLabel{font-size:smaller}.title{padding-bottom:.3rem}.errorMessage,.uploadedFilesContainer{border-top:2px solid var(--border-color)}.errorMessage{display:flex;flex-direction:row;align-items:center;color:var(--warninig-color);padding:.5rem 1rem;gap:1rem}.errorMessage ::ng-deep mat-icon{color:var(--warninig-color)}.errors{display:flex;flex-direction:column}.uploadedFile{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;padding:1rem;border-bottom:1px solid #e0e0e0;gap:1rem}.uploadedFile:last-child{border-bottom:none}.fileSize{display:flex;flex-direction:row;font-size:smaller}.fileData{flex:1;display:flex;flex-direction:column}.fileDataContainer{display:flex;flex-direction:column;justify-content:flex-end;width:fit-content}.fileActions{display:flex;flex-direction:row;justify-content:flex-end}.fileActions ::ng-deep button{border:unset}.fileActions ::ng-deep button:hover{border:unset}.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}smart-icon ::ng-deep mat-icon{font-size:3rem;width:unset;height:unset}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "component", type: i7.UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass", "addBasicClasses"], outputs: ["actionClick", "actionDoubleClick"] }] }); }
168
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartfileuploaderComponent, selector: "smartfileuploader", inputs: { uploadCallback: "uploadCallback", fileFormats: "fileFormats", maxSizeMb: "maxSizeMb", i18n: "i18n", useIconButton: "useIconButton", isMultiple: "isMultiple", autoUpload: "autoUpload", isDisabled: "isDisabled" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<div\r\n class=\"container\"\r\n [ngClass]=\"{ disabledWidget: isDisabled }\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\"\r\n [class.dragover]=\"isDragOver\"\r\n>\r\n <div class=\"fileContainer\" (click)=\"fileInput.click()\">\r\n <input\r\n #fileInput\r\n id=\"addFile\"\r\n placeholder=\"fileInput\"\r\n type=\"file\"\r\n (change)=\"getFile($event)\"\r\n class=\"file\"\r\n accept=\"{{ fileFormats?.join(', ') }}\"\r\n [size]=\"maxSizeMb\"\r\n [multiple]=\"isMultiple\"\r\n [disabled]=\"isDisabled\"\r\n style=\"display: none\"\r\n />\r\n <div class=\"fileUploadContentContainer\">\r\n <div class=\"icon\">\r\n <mat-label *ngIf=\"useIconButton\" class=\"addFileButton\">\r\n <mat-icon color=\"primary\" class=\"addCircle\">add_circle</mat-icon>\r\n </mat-label>\r\n <button *ngIf=\"!useIconButton\" mat-raised-button color=\"primary\" class=\"addFileButton\">\r\n {{ i18n!.addFile }}\r\n </button>\r\n </div>\r\n <div class=\"labels\">\r\n <mat-label *ngIf=\"useIconButton\" class=\"label primary title\">\r\n {{ i18n!.addFile }}\r\n </mat-label>\r\n <mat-label class=\"label secondary\"> {{ i18n!.browseOrDrag }} </mat-label>\r\n <mat-label class=\"subLabel primary\"> {{ i18n!.maxSize }} </mat-label>\r\n <mat-label class=\"subLabel primary\"> {{ i18n!.formats }} </mat-label>\r\n </div>\r\n <div class=\"uploadButton\" *ngIf=\"files.length\">\r\n <ui-action-button (actionClick)=\"uploadFile()\" [descriptor]=\"uploadButton\">\r\n </ui-action-button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"errors.length\" class=\"errorMessage\">\r\n <smart-icon [icon]=\"'error'\" [color]=\"'warn'\"></smart-icon>\r\n <div class=\"errors\">\r\n <span *ngFor=\"let error of errors\">{{ error }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"files.length\" class=\"uploadedFilesContainer\">\r\n <div *ngFor=\"let file of files; let i = index\" class=\"uploadedFile\">\r\n <ng-container *ngIf=\"filePreviewUrl(file); else fileIcon\">\r\n <img [src]=\"filePreviewUrl(file)\" [alt]=\"file.name\" width=\"50\" height=\"50\" />\r\n </ng-container>\r\n <ng-template #fileIcon>\r\n <smart-icon [icon]=\"'insert_drive_file'\"></smart-icon>\r\n </ng-template>\r\n\r\n <div class=\"fileData\">\r\n <div class=\"fileDataContainer\">\r\n <span class=\"fileName\">{{ file.name }}</span>\r\n <span class=\"fileSize\">{{ formatSize(file.size) }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"fileActions\">\r\n <smart-icon class=\"downloadIcon\" icon=\"download\" (click)=\"downloadFile(file)\"></smart-icon>\r\n <smart-icon class=\"removeIcon\" icon=\"delete\" (click)=\"remove(i)\"></smart-icon>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem}.container{display:flex;flex-direction:column;border:2px dashed var(--border-color);border-radius:var(--def-border-radius)}.fileContainer{cursor:pointer;padding:1rem;display:flex;flex-direction:column}.fileContainer:hover{background-color:rgb(from var(--border-color) r g b / .1)}.disabledWidget ::ng-deep .fileContainer:hover{background-color:unset;cursor:unset}.disabledWidget ::ng-deep *{opacity:.85}.dragover{background-color:rgb(from var(--border-color) r g b / .1)}.fileUploadContentContainer{display:flex;flex-direction:row;gap:1rem}.icon mat-icon{font-size:3rem;width:unset;height:unset}.icon{align-content:center}.labels{flex:1;display:flex;flex-direction:column;justify-content:center;width:fit-content}.uploadButton{align-content:center}.primary{color:var(--primary-color)}.secondary{color:var(--gray)}.label{margin:unset}.subLabel{font-size:smaller}.title{padding-bottom:.3rem}.errorMessage,.uploadedFilesContainer{border-top:2px solid var(--border-color)}.errorMessage{display:flex;flex-direction:row;align-items:center;color:var(--warninig-color);padding:.5rem 1rem;gap:1rem}.errorMessage ::ng-deep mat-icon{color:var(--warninig-color)}.errors{display:flex;flex-direction:column}.uploadedFile{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;padding:1rem;border-bottom:1px solid #e0e0e0;gap:1rem}.uploadedFile:last-child{border-bottom:none}.fileSize{display:flex;flex-direction:row;font-size:smaller}.fileData{flex:1;display:flex;flex-direction:column}.fileDataContainer{display:flex;flex-direction:column;justify-content:flex-end;width:fit-content}.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}smart-icon ::ng-deep mat-icon{font-size:3rem;width:unset;height:unset}.fileActions{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.fileActions ::ng-deep .pi{width:unset!important}.removeIcon ::ng-deep i,.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}.removeIcon ::ng-deep .pi,.downloadIcon ::ng-deep .pi{font-size:1.5rem!important}.removeIcon ::ng-deep mat-icon,.downloadIcon ::ng-deep mat-icon{font-size:2rem}.removeIcon:hover,.downloadIcon:hover{cursor:pointer}smart-icon{display:flex;align-items:center}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "component", type: i7.UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass", "addBasicClasses"], outputs: ["actionClick", "actionDoubleClick"] }] }); }
169
169
  }
170
170
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartfileuploaderComponent, decorators: [{
171
171
  type: Component,
172
- args: [{ selector: 'smartfileuploader', template: "<div\r\n class=\"container\"\r\n [ngClass]=\"{ disabledWidget: isDisabled }\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\"\r\n [class.dragover]=\"isDragOver\"\r\n>\r\n <div class=\"fileContainer\" (click)=\"fileInput.click()\">\r\n <input\r\n #fileInput\r\n id=\"addFile\"\r\n placeholder=\"fileInput\"\r\n type=\"file\"\r\n (change)=\"getFile($event)\"\r\n class=\"file\"\r\n accept=\"{{ fileFormats?.join(', ') }}\"\r\n [size]=\"maxSizeMb\"\r\n [multiple]=\"isMultiple\"\r\n [disabled]=\"isDisabled\"\r\n style=\"display: none\"\r\n />\r\n <div class=\"fileUploadContentContainer\">\r\n <div class=\"icon\">\r\n <mat-label *ngIf=\"useIconButton\" class=\"addFileButton\">\r\n <mat-icon color=\"primary\" class=\"addCircle\">add_circle</mat-icon>\r\n </mat-label>\r\n <button *ngIf=\"!useIconButton\" mat-raised-button color=\"primary\" class=\"addFileButton\">\r\n {{ i18n!.addFile }}\r\n </button>\r\n </div>\r\n <div class=\"labels\">\r\n <mat-label *ngIf=\"useIconButton\" class=\"label primary title\">\r\n {{ i18n!.addFile }}\r\n </mat-label>\r\n <mat-label class=\"label secondary\"> {{ i18n!.browseOrDrag }} </mat-label>\r\n <mat-label class=\"subLabel primary\"> {{ i18n!.maxSize }} </mat-label>\r\n <mat-label class=\"subLabel primary\"> {{ i18n!.formats }} </mat-label>\r\n </div>\r\n <div class=\"uploadButton\" *ngIf=\"files.length\">\r\n <ui-action-button (actionClick)=\"uploadFile()\" [descriptor]=\"uploadButton\">\r\n </ui-action-button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"errors.length\" class=\"errorMessage\">\r\n <smart-icon [icon]=\"'error'\" [color]=\"'warn'\"></smart-icon>\r\n <div class=\"errors\">\r\n <span *ngFor=\"let error of errors\">{{ error }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"files.length\" class=\"uploadedFilesContainer\">\r\n <div *ngFor=\"let file of files; let i = index\" class=\"uploadedFile\">\r\n <ng-container *ngIf=\"filePreviewUrl(file); else fileIcon\">\r\n <img [src]=\"filePreviewUrl(file)\" [alt]=\"file.name\" width=\"50\" height=\"50\" />\r\n </ng-container>\r\n <ng-template #fileIcon>\r\n <smart-icon [icon]=\"'insert_drive_file'\"></smart-icon>\r\n </ng-template>\r\n\r\n <div class=\"fileData\">\r\n <div class=\"fileDataContainer\">\r\n <span class=\"fileName\">{{ file.name }}</span>\r\n <span class=\"fileSize\">{{ formatSize(file.size) }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"fileActions\">\r\n <ui-action-button (actionClick)=\"downloadFile(file)\" [descriptor]=\"downloadButton\">\r\n </ui-action-button>\r\n\r\n <ui-action-button class=\"removeIcon\" (actionClick)=\"remove(i)\" [descriptor]=\"removeButton\">\r\n </ui-action-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem}.container{display:flex;flex-direction:column;border:2px dashed var(--border-color);border-radius:var(--def-border-radius)}.fileContainer{cursor:pointer;padding:1rem;display:flex;flex-direction:column}.fileContainer:hover{background-color:rgb(from var(--border-color) r g b / .1)}.disabledWidget ::ng-deep .fileContainer:hover{background-color:unset;cursor:unset}.disabledWidget ::ng-deep *{opacity:.85}.dragover{background-color:rgb(from var(--border-color) r g b / .1)}.fileUploadContentContainer{display:flex;flex-direction:row;gap:1rem}.icon mat-icon{font-size:3rem;width:unset;height:unset}.icon{align-content:center}.labels{flex:1;display:flex;flex-direction:column;justify-content:center;width:fit-content}.uploadButton{align-content:center}.primary{color:var(--primary-color)}.secondary{color:var(--gray)}.label{margin:unset}.subLabel{font-size:smaller}.title{padding-bottom:.3rem}.errorMessage,.uploadedFilesContainer{border-top:2px solid var(--border-color)}.errorMessage{display:flex;flex-direction:row;align-items:center;color:var(--warninig-color);padding:.5rem 1rem;gap:1rem}.errorMessage ::ng-deep mat-icon{color:var(--warninig-color)}.errors{display:flex;flex-direction:column}.uploadedFile{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;padding:1rem;border-bottom:1px solid #e0e0e0;gap:1rem}.uploadedFile:last-child{border-bottom:none}.fileSize{display:flex;flex-direction:row;font-size:smaller}.fileData{flex:1;display:flex;flex-direction:column}.fileDataContainer{display:flex;flex-direction:column;justify-content:flex-end;width:fit-content}.fileActions{display:flex;flex-direction:row;justify-content:flex-end}.fileActions ::ng-deep button{border:unset}.fileActions ::ng-deep button:hover{border:unset}.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}smart-icon ::ng-deep mat-icon{font-size:3rem;width:unset;height:unset}\n"] }]
172
+ args: [{ selector: 'smartfileuploader', template: "<div\r\n class=\"container\"\r\n [ngClass]=\"{ disabledWidget: isDisabled }\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\"\r\n [class.dragover]=\"isDragOver\"\r\n>\r\n <div class=\"fileContainer\" (click)=\"fileInput.click()\">\r\n <input\r\n #fileInput\r\n id=\"addFile\"\r\n placeholder=\"fileInput\"\r\n type=\"file\"\r\n (change)=\"getFile($event)\"\r\n class=\"file\"\r\n accept=\"{{ fileFormats?.join(', ') }}\"\r\n [size]=\"maxSizeMb\"\r\n [multiple]=\"isMultiple\"\r\n [disabled]=\"isDisabled\"\r\n style=\"display: none\"\r\n />\r\n <div class=\"fileUploadContentContainer\">\r\n <div class=\"icon\">\r\n <mat-label *ngIf=\"useIconButton\" class=\"addFileButton\">\r\n <mat-icon color=\"primary\" class=\"addCircle\">add_circle</mat-icon>\r\n </mat-label>\r\n <button *ngIf=\"!useIconButton\" mat-raised-button color=\"primary\" class=\"addFileButton\">\r\n {{ i18n!.addFile }}\r\n </button>\r\n </div>\r\n <div class=\"labels\">\r\n <mat-label *ngIf=\"useIconButton\" class=\"label primary title\">\r\n {{ i18n!.addFile }}\r\n </mat-label>\r\n <mat-label class=\"label secondary\"> {{ i18n!.browseOrDrag }} </mat-label>\r\n <mat-label class=\"subLabel primary\"> {{ i18n!.maxSize }} </mat-label>\r\n <mat-label class=\"subLabel primary\"> {{ i18n!.formats }} </mat-label>\r\n </div>\r\n <div class=\"uploadButton\" *ngIf=\"files.length\">\r\n <ui-action-button (actionClick)=\"uploadFile()\" [descriptor]=\"uploadButton\">\r\n </ui-action-button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"errors.length\" class=\"errorMessage\">\r\n <smart-icon [icon]=\"'error'\" [color]=\"'warn'\"></smart-icon>\r\n <div class=\"errors\">\r\n <span *ngFor=\"let error of errors\">{{ error }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"files.length\" class=\"uploadedFilesContainer\">\r\n <div *ngFor=\"let file of files; let i = index\" class=\"uploadedFile\">\r\n <ng-container *ngIf=\"filePreviewUrl(file); else fileIcon\">\r\n <img [src]=\"filePreviewUrl(file)\" [alt]=\"file.name\" width=\"50\" height=\"50\" />\r\n </ng-container>\r\n <ng-template #fileIcon>\r\n <smart-icon [icon]=\"'insert_drive_file'\"></smart-icon>\r\n </ng-template>\r\n\r\n <div class=\"fileData\">\r\n <div class=\"fileDataContainer\">\r\n <span class=\"fileName\">{{ file.name }}</span>\r\n <span class=\"fileSize\">{{ formatSize(file.size) }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"fileActions\">\r\n <smart-icon class=\"downloadIcon\" icon=\"download\" (click)=\"downloadFile(file)\"></smart-icon>\r\n <smart-icon class=\"removeIcon\" icon=\"delete\" (click)=\"remove(i)\"></smart-icon>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem}.container{display:flex;flex-direction:column;border:2px dashed var(--border-color);border-radius:var(--def-border-radius)}.fileContainer{cursor:pointer;padding:1rem;display:flex;flex-direction:column}.fileContainer:hover{background-color:rgb(from var(--border-color) r g b / .1)}.disabledWidget ::ng-deep .fileContainer:hover{background-color:unset;cursor:unset}.disabledWidget ::ng-deep *{opacity:.85}.dragover{background-color:rgb(from var(--border-color) r g b / .1)}.fileUploadContentContainer{display:flex;flex-direction:row;gap:1rem}.icon mat-icon{font-size:3rem;width:unset;height:unset}.icon{align-content:center}.labels{flex:1;display:flex;flex-direction:column;justify-content:center;width:fit-content}.uploadButton{align-content:center}.primary{color:var(--primary-color)}.secondary{color:var(--gray)}.label{margin:unset}.subLabel{font-size:smaller}.title{padding-bottom:.3rem}.errorMessage,.uploadedFilesContainer{border-top:2px solid var(--border-color)}.errorMessage{display:flex;flex-direction:row;align-items:center;color:var(--warninig-color);padding:.5rem 1rem;gap:1rem}.errorMessage ::ng-deep mat-icon{color:var(--warninig-color)}.errors{display:flex;flex-direction:column}.uploadedFile{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;padding:1rem;border-bottom:1px solid #e0e0e0;gap:1rem}.uploadedFile:last-child{border-bottom:none}.fileSize{display:flex;flex-direction:row;font-size:smaller}.fileData{flex:1;display:flex;flex-direction:column}.fileDataContainer{display:flex;flex-direction:column;justify-content:flex-end;width:fit-content}.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}smart-icon ::ng-deep mat-icon{font-size:3rem;width:unset;height:unset}.fileActions{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.fileActions ::ng-deep .pi{width:unset!important}.removeIcon ::ng-deep i,.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}.removeIcon ::ng-deep .pi,.downloadIcon ::ng-deep .pi{font-size:1.5rem!important}.removeIcon ::ng-deep mat-icon,.downloadIcon ::ng-deep mat-icon{font-size:2rem}.removeIcon:hover,.downloadIcon:hover{cursor:pointer}smart-icon{display:flex;align-items:center}\n"] }]
173
173
  }], ctorParameters: () => [{ type: i1.MatSnackBar }], propDecorators: { fileInput: [{
174
174
  type: ViewChild,
175
175
  args: ['fileInput']
@@ -190,4 +190,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
190
190
  }], isDisabled: [{
191
191
  type: Input
192
192
  }] } });
193
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmaWxldXBsb2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZm9ybS9zbWFydGZpbGV1cGxvYWRlci9zbWFydGZpbGV1cGxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1mb3JtL3NtYXJ0ZmlsZXVwbG9hZGVyL3NtYXJ0ZmlsZXVwbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdoRixPQUFPLEVBQ0wsWUFBWSxFQUNaLGtCQUFrQixHQUVuQixNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7QUFPN0MsTUFBTSxPQUFPLDBCQUEwQjtJQWdCckMsWUFBb0IsU0FBc0I7UUFBdEIsY0FBUyxHQUFULFNBQVMsQ0FBYTtRQWIxQyxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBRVYsZ0JBQVcsR0FBYyxFQUFFLENBQUM7UUFDNUIsY0FBUyxHQUFZLEVBQUUsQ0FBQztRQUV4QixrQkFBYSxHQUFZLElBQUksQ0FBQztRQUM5QixlQUFVLEdBQWEsSUFBSSxDQUFDO1FBQzVCLGVBQVUsR0FBYSxLQUFLLENBQUM7UUFDN0IsZUFBVSxHQUFhLEtBQUssQ0FBQztRQUV0QyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLFdBQU0sR0FBYSxFQUFFLENBQUM7UUFvSHRCLGdCQUFXLEdBQUcsSUFBSSxHQUFHLEVBQWdCLENBQUM7SUFsSE8sQ0FBQztJQUU5QyxRQUFRO1FBQ04sTUFBTSxXQUFXLEdBQUc7WUFDbEIsT0FBTyxFQUFFLHVCQUF1QjtZQUNoQyxZQUFZLEVBQUUsdUJBQXVCO1lBQ3JDLE9BQU8sRUFB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UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYTtRQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxLQUFLLEtBQUssQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNmLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUQsT0FBTyxHQUFHLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBSUQsY0FBYyxDQUFDLElBQVU7UUFDdkIsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDN0MsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQy9CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFFLENBQUM7UUFDckMsQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFVO1FBQ3JCLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDVixHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPO1lBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFLLENBQUMsTUFBTSxJQUFJLEVBQUU7WUFDOUIsS0FBSyxFQUFFLFNBQVM7WUFDaEIsSUFBSSxFQUFFLGtCQUFrQixDQUFDLE1BQU07WUFDL0IsSUFBSSxFQUFFLFFBQVE7WUFDZCxZQUFZLEVBQUUsWUFBWSxDQUFDLEdBQUc7U0FDL0IsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTztZQUNMLEtBQUssRUFBRSxFQUFFO1lBQ1QsS0FBSyxFQUFFLFNBQVM7WUFDaEIsSUFBSSxFQUFFLGtCQUFrQixDQUFDLElBQUk7WUFDN0IsSUFBSSxFQUFFLFVBQVU7WUFDaEIsWUFBWSxFQUFFLFlBQVksQ0FBQyxHQUFHO1NBQy9CLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTztZQUNMLEtBQUssRUFBRSxFQUFFO1lBQ1QsS0FBSyxFQUFFLFNBQVM7WUFDaEIsSUFBSSxFQUFFLGtCQUFrQixDQUFDLElBQUk7WUFDN0IsSUFBSSxFQUFFLE9BQU87WUFDYixTQUFTLEVBQUUsS0FBSztZQUNoQixZQUFZLEVBQUUsWUFBWSxDQUFDLEdBQUc7U0FDL0IsQ0FBQztJQUNKLENBQUM7K0dBeExVLDBCQUEwQjttR0FBMUIsMEJBQTBCLCtYQ2R2QyxtaUdBK0VBOzs0RkRqRWEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLG1CQUFtQjtnRkFLTCxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBR2IsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XHJcbmltcG9ydCB7IFNtYXJ0RmlsZVVwbG9hZGVySTE4biB9IGZyb20gJy4vc21hcnRmaWxldXBsb2FkZXIubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIEljb25Qb3NpdGlvbixcclxuICBVaUFjdGlvbkJ1dHRvblR5cGUsXHJcbiAgVWlBY3Rpb25EZXNjcmlwdG9yLFxyXG59IGZyb20gJy4uLy4uL3ZpZXctY29udGV4dC9hcGkvbW9kZWwvbW9kZWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc21hcnRmaWxldXBsb2FkZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydGZpbGV1cGxvYWRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc21hcnRmaWxldXBsb2FkZXIuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnRmaWxldXBsb2FkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XHJcblxyXG4gIGZpbGVzOiBGaWxlW10gPSBbXTtcclxuICBASW5wdXQoKSB1cGxvYWRDYWxsYmFjayE6IChmaWxlczogRmlsZVtdKSA9PiB2b2lkO1xyXG4gIEBJbnB1dCgpIGZpbGVGb3JtYXRzPzogc3RyaW5nW10gPSBbXTtcclxuICBASW5wdXQoKSBtYXhTaXplTWI/OiBudW1iZXIgPSAyNTtcclxuICBASW5wdXQoKSBpMThuPzogU21hcnRGaWxlVXBsb2FkZXJJMThuO1xyXG4gIEBJbnB1dCgpIHVzZUljb25CdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGlzTXVsdGlwbGU/OiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBhdXRvVXBsb2FkPzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzRGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGlzRHJhZ092ZXIgPSBmYWxzZTtcclxuICBlcnJvcnM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3NuYWNrQmFyOiBNYXRTbmFja0Jhcikge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBkZWZhdWx0STE4biA9IHtcclxuICAgICAgYWRkRmlsZTogJ2Rva3VtZW50dW0gaG96esOhYWTDoXNhJyxcclxuICAgICAgYnJvd3NlT3JEcmFnOiAndGFsbMOzesOhcyB2YWd5IGJlaMO6esOhcycsXHJcbiAgICAgIG1heFNpemU6IGBtYXguICR7dGhpcy5tYXhTaXplTWJ9IE1CYCxcclxuICAgICAgZm9ybWF0czogJ1BERiwgZG9jeCwgeGxzIGZvcm3DoXR1bScsXHJcbiAgICAgIHVwbG9hZDogJ0ZlbHTDtmx0w6lzJyxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5pMThuID0geyAuLi5kZWZhdWx0STE4biwgLi4udGhpcy5pMThuIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb2Nlc3NGaWxlcyhmaWxlTGlzdDogRmlsZVtdKTogdm9pZCB7XHJcbiAgICB0aGlzLmVycm9ycyA9IFtdO1xyXG4gICAgdmFyIHZhbGlkRmlsZXM6IEZpbGVbXSA9IFtdO1xyXG5cclxuICAgIGZpbGVMaXN0LmZvckVhY2goKGZpbGU6IEZpbGUpID0+IHtcclxuICAgICAgbGV0IGhhc0Vycm9yID0gZmFsc2U7XHJcblxyXG4gICAgICBpZiAodGhpcy5maWxlRm9ybWF0cz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgdmFyIGV4dCA9IGZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgICAgICB2YXIgdHJpbW1lZEZvcm1hdHMgPSAodGhpcy5maWxlRm9ybWF0cyB8fCBbXSlcclxuICAgICAgICAgIC5mbGF0TWFwKChmKSA9PiBmLnNwbGl0KCcsJykpXHJcbiAgICAgICAgICAubWFwKChmKSA9PiBmLnJlcGxhY2UoJy4nLCAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgIHZhciBpc0FsbG93ZWQgPSB0cmltbWVkRm9ybWF0cy5pbmNsdWRlcyhleHQhKTtcclxuXHJcbiAgICAgICAgaWYgKCFpc0FsbG93ZWQpIHtcclxuICAgICAgICAgIHRoaXMuZXJyb3JzLnB1c2goYFwiJHtmaWxlLm5hbWV9XCIgLSBuZW0gdMOhbW9nYXRvdHQgZm9ybcOhdHVtYCk7XHJcbiAgICAgICAgICBoYXNFcnJvciA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZmlsZS5zaXplID4gdGhpcy5tYXhTaXplTWIhICogMTAyNCAqIDEwMjQpIHtcclxuICAgICAgICB0aGlzLmVycm9ycy5wdXNoKGBcIiR7ZmlsZS5uYW1lfVwiIC0gdMO6bCBuYWd5IGbDoWpsIChtYXggJHt0aGlzLm1heFNpemVNYn0gTUIpYCk7XHJcbiAgICAgICAgaGFzRXJyb3IgPSB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIWhhc0Vycm9yKSB7XHJcbiAgICAgICAgdmFsaWRGaWxlcy5wdXNoKGZpbGUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAodGhpcy5pc011bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMuZmlsZXMgPSBbLi4udGhpcy5maWxlcywgLi4udmFsaWRGaWxlc107XHJcbiAgICB9IGVsc2UgaWYgKHZhbGlkRmlsZXMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZmlsZXMgPSBbdmFsaWRGaWxlc1swXV07XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hdXRvVXBsb2FkICYmIHRoaXMuZXJyb3JzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHRoaXMudXBsb2FkRmlsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RmlsZShldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmZpbGVzICYmIGV2ZW50LnRhcmdldC5maWxlcy5sZW5ndGgpIHtcclxuICAgICAgdmFyIGZpbGVMaXN0ID0gQXJyYXkuZnJvbShldmVudC50YXJnZXQuZmlsZXMpIGFzIEZpbGVbXTtcclxuICAgICAgdGhpcy5wcm9jZXNzRmlsZXMoZmlsZUxpc3QpO1xyXG4gICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuaXNEcmFnT3ZlciA9IGZhbHNlO1xyXG5cclxuICAgIGlmICghZXZlbnQuZGF0YVRyYW5zZmVyPy5maWxlcykgcmV0dXJuO1xyXG4gICAgY29uc3QgZmlsZUxpc3QgPSBBcnJheS5mcm9tKGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyk7XHJcbiAgICB0aGlzLnByb2Nlc3NGaWxlcyhmaWxlTGlzdCk7XHJcbiAgfVxyXG5cclxuICBvbkRyYWdPdmVyKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLmlzRHJhZ092ZXIgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgb25EcmFnTGVhdmUoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICBjb25zdCByZWxhdGVkID0gZXZlbnQucmVsYXRlZFRhcmdldCBhcyBIVE1MRWxlbWVudCB8IG51bGw7XHJcbiAgICBsZXQgc3RvcERyYWcgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAoIXJlbGF0ZWQpIHtcclxuICAgICAgc3RvcERyYWcgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgcGFyZW50RHJvcCA9IHJlbGF0ZWQuY2xvc2VzdCgnLmNvbnRhaW5lcicpO1xyXG4gICAgICBpZiAocmVsYXRlZCAhPT0gZXZlbnQuY3VycmVudFRhcmdldCAmJiAhcGFyZW50RHJvcCkge1xyXG4gICAgICAgIHN0b3BEcmFnID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdG9wRHJhZykge1xyXG4gICAgICB0aGlzLmlzRHJhZ092ZXIgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZShpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbGVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRGaWxlKCk6IHZvaWQge1xyXG4gICAgdGhpcy51cGxvYWRDYWxsYmFjayh0aGlzLmZpbGVzKTtcclxuICB9XHJcblxyXG4gIGZvcm1hdFNpemUoYnl0ZXM6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAoYnl0ZXMgPT09IDApIHJldHVybiAnMCBCJztcclxuICAgIGNvbnN0IGsgPSAxMDI0O1xyXG4gICAgY29uc3Qgc2l6ZXMgPSBbJ0InLCAnS0InLCAnTUInLCAnR0InLCAnVEInXTtcclxuICAgIGNvbnN0IGkgPSBNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKGspKTtcclxuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VGbG9hdCgoYnl0ZXMgLyBNYXRoLnBvdyhrLCBpKSkudG9GaXhlZCgxKSk7XHJcbiAgICByZXR1cm4gYCR7dmFsdWV9ICR7c2l6ZXNbaV19YDtcclxuICB9XHJcblxyXG4gIHByZXZpZXdVcmxzID0gbmV3IE1hcDxGaWxlLCBzdHJpbmc+KCk7XHJcblxyXG4gIGZpbGVQcmV2aWV3VXJsKGZpbGU6IEZpbGUpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGlmICghZmlsZSB8fCAhZmlsZS50eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnByZXZpZXdVcmxzLmhhcyhmaWxlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5wcmV2aWV3VXJscy5nZXQoZmlsZSkhO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XHJcbiAgICB0aGlzLnByZXZpZXdVcmxzLnNldChmaWxlLCB1cmwpO1xyXG4gICAgcmV0dXJuIHVybDtcclxuICB9XHJcblxyXG4gIGRvd25sb2FkRmlsZShmaWxlOiBGaWxlKTogdm9pZCB7XHJcbiAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpO1xyXG4gICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGEuaHJlZiA9IHVybDtcclxuICAgIGEuZG93bmxvYWQgPSBmaWxlLm5hbWU7XHJcbiAgICBhLmNsaWNrKCk7XHJcbiAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XHJcbiAgfVxyXG5cclxuICBnZXQgdXBsb2FkQnV0dG9uKCk6IFVpQWN0aW9uRGVzY3JpcHRvciB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0aXRsZTogdGhpcy5pMThuIS51cGxvYWQgPz8gJycsXHJcbiAgICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgICAgIHR5cGU6IFVpQWN0aW9uQnV0dG9uVHlwZS5SQUlTRUQsXHJcbiAgICAgIGljb246ICd1cGxvYWQnLFxyXG4gICAgICBpY29uUG9zaXRpb246IEljb25Qb3NpdGlvbi5QUkUsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRvd25sb2FkQnV0dG9uKCk6IFVpQWN0aW9uRGVzY3JpcHRvciB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0aXRsZTogJycsXHJcbiAgICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgICAgIHR5cGU6IFVpQWN0aW9uQnV0dG9uVHlwZS5JQ09OLFxyXG4gICAgICBpY29uOiAnZG93bmxvYWQnLFxyXG4gICAgICBpY29uUG9zaXRpb246IEljb25Qb3NpdGlvbi5QUkUsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJlbW92ZUJ1dHRvbigpOiBVaUFjdGlvbkRlc2NyaXB0b3Ige1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdGl0bGU6ICcnLFxyXG4gICAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gICAgICB0eXBlOiBVaUFjdGlvbkJ1dHRvblR5cGUuSUNPTixcclxuICAgICAgaWNvbjogJ2Nsb3NlJyxcclxuICAgICAgaWNvbkNvbG9yOiAncmVkJyxcclxuICAgICAgaWNvblBvc2l0aW9uOiBJY29uUG9zaXRpb24uUFJFLFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwiY29udGFpbmVyXCJcclxuICBbbmdDbGFzc109XCJ7IGRpc2FibGVkV2lkZ2V0OiBpc0Rpc2FibGVkIH1cIlxyXG4gIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIlxyXG4gIChkcmFnbGVhdmUpPVwib25EcmFnTGVhdmUoJGV2ZW50KVwiXHJcbiAgKGRyb3ApPVwib25Ecm9wKCRldmVudClcIlxyXG4gIFtjbGFzcy5kcmFnb3Zlcl09XCJpc0RyYWdPdmVyXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJmaWxlQ29udGFpbmVyXCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+XHJcbiAgICA8aW5wdXRcclxuICAgICAgI2ZpbGVJbnB1dFxyXG4gICAgICBpZD1cImFkZEZpbGVcIlxyXG4gICAgICBwbGFjZWhvbGRlcj1cImZpbGVJbnB1dFwiXHJcbiAgICAgIHR5cGU9XCJmaWxlXCJcclxuICAgICAgKGNoYW5nZSk9XCJnZXRGaWxlKCRldmVudClcIlxyXG4gICAgICBjbGFzcz1cImZpbGVcIlxyXG4gICAgICBhY2NlcHQ9XCJ7eyBmaWxlRm9ybWF0cz8uam9pbignLCAnKSB9fVwiXHJcbiAgICAgIFtzaXplXT1cIm1heFNpemVNYlwiXHJcbiAgICAgIFttdWx0aXBsZV09XCJpc011bHRpcGxlXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxyXG4gICAgICBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIlxyXG4gICAgLz5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWxlVXBsb2FkQ29udGVudENvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJ1c2VJY29uQnV0dG9uXCIgY2xhc3M9XCJhZGRGaWxlQnV0dG9uXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCIgY2xhc3M9XCJhZGRDaXJjbGVcIj5hZGRfY2lyY2xlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIXVzZUljb25CdXR0b25cIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImFkZEZpbGVCdXR0b25cIj5cclxuICAgICAgICAgIHt7IGkxOG4hLmFkZEZpbGUgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbHNcIj5cclxuICAgICAgICA8bWF0LWxhYmVsICpuZ0lmPVwidXNlSWNvbkJ1dHRvblwiIGNsYXNzPVwibGFiZWwgcHJpbWFyeSB0aXRsZVwiPlxyXG4gICAgICAgICAge3sgaTE4biEuYWRkRmlsZSB9fVxyXG4gICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJsYWJlbCBzZWNvbmRhcnlcIj4ge3sgaTE4biEuYnJvd3NlT3JEcmFnIH19IDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJzdWJMYWJlbCBwcmltYXJ5XCI+IHt7IGkxOG4hLm1heFNpemUgfX0gPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cInN1YkxhYmVsIHByaW1hcnlcIj4ge3sgaTE4biEuZm9ybWF0cyB9fSA8L21hdC1sYWJlbD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWRCdXR0b25cIiAqbmdJZj1cImZpbGVzLmxlbmd0aFwiPlxyXG4gICAgICAgIDx1aS1hY3Rpb24tYnV0dG9uIChhY3Rpb25DbGljayk9XCJ1cGxvYWRGaWxlKClcIiBbZGVzY3JpcHRvcl09XCJ1cGxvYWRCdXR0b25cIj5cclxuICAgICAgICA8L3VpLWFjdGlvbi1idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJlcnJvcnMubGVuZ3RoXCIgY2xhc3M9XCJlcnJvck1lc3NhZ2VcIj5cclxuICAgIDxzbWFydC1pY29uIFtpY29uXT1cIidlcnJvcidcIiBbY29sb3JdPVwiJ3dhcm4nXCI+PC9zbWFydC1pY29uPlxyXG4gICAgPGRpdiBjbGFzcz1cImVycm9yc1wiPlxyXG4gICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXJyb3JzXCI+e3sgZXJyb3IgfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiAqbmdJZj1cImZpbGVzLmxlbmd0aFwiIGNsYXNzPVwidXBsb2FkZWRGaWxlc0NvbnRhaW5lclwiPlxyXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgZmlsZSBvZiBmaWxlczsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwidXBsb2FkZWRGaWxlXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWxlUHJldmlld1VybChmaWxlKTsgZWxzZSBmaWxlSWNvblwiPlxyXG4gICAgICAgIDxpbWcgW3NyY109XCJmaWxlUHJldmlld1VybChmaWxlKVwiIFthbHRdPVwiZmlsZS5uYW1lXCIgd2lkdGg9XCI1MFwiIGhlaWdodD1cIjUwXCIgLz5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjZmlsZUljb24+XHJcbiAgICAgICAgPHNtYXJ0LWljb24gW2ljb25dPVwiJ2luc2VydF9kcml2ZV9maWxlJ1wiPjwvc21hcnQtaWNvbj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWxlRGF0YVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlRGF0YUNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlTmFtZVwiPnt7IGZpbGUubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZVNpemVcIj57eyBmb3JtYXRTaXplKGZpbGUuc2l6ZSkgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbGVBY3Rpb25zXCI+XHJcbiAgICAgICAgPHVpLWFjdGlvbi1idXR0b24gKGFjdGlvbkNsaWNrKT1cImRvd25sb2FkRmlsZShmaWxlKVwiIFtkZXNjcmlwdG9yXT1cImRvd25sb2FkQnV0dG9uXCI+XHJcbiAgICAgICAgPC91aS1hY3Rpb24tYnV0dG9uPlxyXG5cclxuICAgICAgICA8dWktYWN0aW9uLWJ1dHRvbiBjbGFzcz1cInJlbW92ZUljb25cIiAoYWN0aW9uQ2xpY2spPVwicmVtb3ZlKGkpXCIgW2Rlc2NyaXB0b3JdPVwicmVtb3ZlQnV0dG9uXCI+XHJcbiAgICAgICAgPC91aS1hY3Rpb24tYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmaWxldXBsb2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZm9ybS9zbWFydGZpbGV1cGxvYWRlci9zbWFydGZpbGV1cGxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1mb3JtL3NtYXJ0ZmlsZXVwbG9hZGVyL3NtYXJ0ZmlsZXVwbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdoRixPQUFPLEVBQ0wsWUFBWSxFQUNaLGtCQUFrQixHQUVuQixNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7QUFPN0MsTUFBTSxPQUFPLDBCQUEwQjtJQWdCckMsWUFBb0IsU0FBc0I7UUFBdEIsY0FBUyxHQUFULFNBQVMsQ0FBYTtRQWIxQyxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBRVYsZ0JBQVcsR0FBYyxFQUFFLENBQUM7UUFDNUIsY0FBUyxHQUFZLEVBQUUsQ0FBQztRQUV4QixrQkFBYSxHQUFZLElBQUksQ0FBQztRQUM5QixlQUFVLEdBQWEsSUFBSSxDQUFDO1FBQzVCLGVBQVUsR0FBYSxLQUFLLENBQUM7UUFDN0IsZUFBVSxHQUFhLEtBQUssQ0FBQztRQUV0QyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLFdBQU0sR0FBYSxFQUFFLENBQUM7UUFvSHRCLGdCQUFXLEdBQUcsSUFBSSxHQUFHLEVBQWdCLENBQUM7SUFsSE8sQ0FBQztJQUU5QyxRQUFRO1FBQ04sTUFBTSxXQUFXLEdBQUc7WUFDbEIsT0FBTyxFQUFFLHVCQUF1QjtZQUNoQyxZQUFZLEVBQUUsdUJBQXVCO1lBQ3JDLE9BQU8sRUFB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UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYTtRQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxLQUFLLEtBQUssQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNmLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUQsT0FBTyxHQUFHLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBSUQsY0FBYyxDQUFDLElBQVU7UUFDdkIsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDN0MsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQy9CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFFLENBQUM7UUFDckMsQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFVO1FBQ3JCLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDVixHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPO1lBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFLLENBQUMsTUFBTSxJQUFJLEVBQUU7WUFDOUIsS0FBSyxFQUFFLFNBQVM7WUFDaEIsSUFBSSxFQUFFLGtCQUFrQixDQUFDLE1BQU07WUFDL0IsSUFBSSxFQUFFLFFBQVE7WUFDZCxZQUFZLEVBQUUsWUFBWSxDQUFDLEdBQUc7U0FDL0IsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTztZQUNMLEtBQUssRUFBRSxFQUFFO1lBQ1QsS0FBSyxFQUFFLFNBQVM7WUFDaEIsSUFBSSxFQUFFLGtCQUFrQixDQUFDLElBQUk7WUFDN0IsSUFBSSxFQUFFLFVBQVU7WUFDaEIsWUFBWSxFQUFFLFlBQVksQ0FBQyxHQUFHO1NBQy9CLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTztZQUNMLEtBQUssRUFBRSxFQUFFO1lBQ1QsS0FBSyxFQUFFLFNBQVM7WUFDaEIsSUFBSSxFQUFFLGtCQUFrQixDQUFDLElBQUk7WUFDN0IsSUFBSSxFQUFFLE9BQU87WUFDYixTQUFTLEVBQUUsS0FBSztZQUNoQixZQUFZLEVBQUUsWUFBWSxDQUFDLEdBQUc7U0FDL0IsQ0FBQztJQUNKLENBQUM7K0dBeExVLDBCQUEwQjttR0FBMUIsMEJBQTBCLCtYQ2R2Qyw4OUZBNEVBOzs0RkQ5RGEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLG1CQUFtQjtnRkFLTCxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBR2IsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XHJcbmltcG9ydCB7IFNtYXJ0RmlsZVVwbG9hZGVySTE4biB9IGZyb20gJy4vc21hcnRmaWxldXBsb2FkZXIubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIEljb25Qb3NpdGlvbixcclxuICBVaUFjdGlvbkJ1dHRvblR5cGUsXHJcbiAgVWlBY3Rpb25EZXNjcmlwdG9yLFxyXG59IGZyb20gJy4uLy4uL3ZpZXctY29udGV4dC9hcGkvbW9kZWwvbW9kZWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc21hcnRmaWxldXBsb2FkZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydGZpbGV1cGxvYWRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc21hcnRmaWxldXBsb2FkZXIuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnRmaWxldXBsb2FkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XHJcblxyXG4gIGZpbGVzOiBGaWxlW10gPSBbXTtcclxuICBASW5wdXQoKSB1cGxvYWRDYWxsYmFjayE6IChmaWxlczogRmlsZVtdKSA9PiB2b2lkO1xyXG4gIEBJbnB1dCgpIGZpbGVGb3JtYXRzPzogc3RyaW5nW10gPSBbXTtcclxuICBASW5wdXQoKSBtYXhTaXplTWI/OiBudW1iZXIgPSAyNTtcclxuICBASW5wdXQoKSBpMThuPzogU21hcnRGaWxlVXBsb2FkZXJJMThuO1xyXG4gIEBJbnB1dCgpIHVzZUljb25CdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGlzTXVsdGlwbGU/OiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBhdXRvVXBsb2FkPzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzRGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGlzRHJhZ092ZXIgPSBmYWxzZTtcclxuICBlcnJvcnM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3NuYWNrQmFyOiBNYXRTbmFja0Jhcikge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBkZWZhdWx0STE4biA9IHtcclxuICAgICAgYWRkRmlsZTogJ2Rva3VtZW50dW0gaG96esOhYWTDoXNhJyxcclxuICAgICAgYnJvd3NlT3JEcmFnOiAndGFsbMOzesOhcyB2YWd5IGJlaMO6esOhcycsXHJcbiAgICAgIG1heFNpemU6IGBtYXguICR7dGhpcy5tYXhTaXplTWJ9IE1CYCxcclxuICAgICAgZm9ybWF0czogJ1BERiwgZG9jeCwgeGxzIGZvcm3DoXR1bScsXHJcbiAgICAgIHVwbG9hZDogJ0ZlbHTDtmx0w6lzJyxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5pMThuID0geyAuLi5kZWZhdWx0STE4biwgLi4udGhpcy5pMThuIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb2Nlc3NGaWxlcyhmaWxlTGlzdDogRmlsZVtdKTogdm9pZCB7XHJcbiAgICB0aGlzLmVycm9ycyA9IFtdO1xyXG4gICAgdmFyIHZhbGlkRmlsZXM6IEZpbGVbXSA9IFtdO1xyXG5cclxuICAgIGZpbGVMaXN0LmZvckVhY2goKGZpbGU6IEZpbGUpID0+IHtcclxuICAgICAgbGV0IGhhc0Vycm9yID0gZmFsc2U7XHJcblxyXG4gICAgICBpZiAodGhpcy5maWxlRm9ybWF0cz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgdmFyIGV4dCA9IGZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgICAgICB2YXIgdHJpbW1lZEZvcm1hdHMgPSAodGhpcy5maWxlRm9ybWF0cyB8fCBbXSlcclxuICAgICAgICAgIC5mbGF0TWFwKChmKSA9PiBmLnNwbGl0KCcsJykpXHJcbiAgICAgICAgICAubWFwKChmKSA9PiBmLnJlcGxhY2UoJy4nLCAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgIHZhciBpc0FsbG93ZWQgPSB0cmltbWVkRm9ybWF0cy5pbmNsdWRlcyhleHQhKTtcclxuXHJcbiAgICAgICAgaWYgKCFpc0FsbG93ZWQpIHtcclxuICAgICAgICAgIHRoaXMuZXJyb3JzLnB1c2goYFwiJHtmaWxlLm5hbWV9XCIgLSBuZW0gdMOhbW9nYXRvdHQgZm9ybcOhdHVtYCk7XHJcbiAgICAgICAgICBoYXNFcnJvciA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZmlsZS5zaXplID4gdGhpcy5tYXhTaXplTWIhICogMTAyNCAqIDEwMjQpIHtcclxuICAgICAgICB0aGlzLmVycm9ycy5wdXNoKGBcIiR7ZmlsZS5uYW1lfVwiIC0gdMO6bCBuYWd5IGbDoWpsIChtYXggJHt0aGlzLm1heFNpemVNYn0gTUIpYCk7XHJcbiAgICAgICAgaGFzRXJyb3IgPSB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIWhhc0Vycm9yKSB7XHJcbiAgICAgICAgdmFsaWRGaWxlcy5wdXNoKGZpbGUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAodGhpcy5pc011bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMuZmlsZXMgPSBbLi4udGhpcy5maWxlcywgLi4udmFsaWRGaWxlc107XHJcbiAgICB9IGVsc2UgaWYgKHZhbGlkRmlsZXMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZmlsZXMgPSBbdmFsaWRGaWxlc1swXV07XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hdXRvVXBsb2FkICYmIHRoaXMuZXJyb3JzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHRoaXMudXBsb2FkRmlsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RmlsZShldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmZpbGVzICYmIGV2ZW50LnRhcmdldC5maWxlcy5sZW5ndGgpIHtcclxuICAgICAgdmFyIGZpbGVMaXN0ID0gQXJyYXkuZnJvbShldmVudC50YXJnZXQuZmlsZXMpIGFzIEZpbGVbXTtcclxuICAgICAgdGhpcy5wcm9jZXNzRmlsZXMoZmlsZUxpc3QpO1xyXG4gICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuaXNEcmFnT3ZlciA9IGZhbHNlO1xyXG5cclxuICAgIGlmICghZXZlbnQuZGF0YVRyYW5zZmVyPy5maWxlcykgcmV0dXJuO1xyXG4gICAgY29uc3QgZmlsZUxpc3QgPSBBcnJheS5mcm9tKGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyk7XHJcbiAgICB0aGlzLnByb2Nlc3NGaWxlcyhmaWxlTGlzdCk7XHJcbiAgfVxyXG5cclxuICBvbkRyYWdPdmVyKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLmlzRHJhZ092ZXIgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgb25EcmFnTGVhdmUoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICBjb25zdCByZWxhdGVkID0gZXZlbnQucmVsYXRlZFRhcmdldCBhcyBIVE1MRWxlbWVudCB8IG51bGw7XHJcbiAgICBsZXQgc3RvcERyYWcgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAoIXJlbGF0ZWQpIHtcclxuICAgICAgc3RvcERyYWcgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgcGFyZW50RHJvcCA9IHJlbGF0ZWQuY2xvc2VzdCgnLmNvbnRhaW5lcicpO1xyXG4gICAgICBpZiAocmVsYXRlZCAhPT0gZXZlbnQuY3VycmVudFRhcmdldCAmJiAhcGFyZW50RHJvcCkge1xyXG4gICAgICAgIHN0b3BEcmFnID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdG9wRHJhZykge1xyXG4gICAgICB0aGlzLmlzRHJhZ092ZXIgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZShpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbGVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRGaWxlKCk6IHZvaWQge1xyXG4gICAgdGhpcy51cGxvYWRDYWxsYmFjayh0aGlzLmZpbGVzKTtcclxuICB9XHJcblxyXG4gIGZvcm1hdFNpemUoYnl0ZXM6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAoYnl0ZXMgPT09IDApIHJldHVybiAnMCBCJztcclxuICAgIGNvbnN0IGsgPSAxMDI0O1xyXG4gICAgY29uc3Qgc2l6ZXMgPSBbJ0InLCAnS0InLCAnTUInLCAnR0InLCAnVEInXTtcclxuICAgIGNvbnN0IGkgPSBNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKGspKTtcclxuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VGbG9hdCgoYnl0ZXMgLyBNYXRoLnBvdyhrLCBpKSkudG9GaXhlZCgxKSk7XHJcbiAgICByZXR1cm4gYCR7dmFsdWV9ICR7c2l6ZXNbaV19YDtcclxuICB9XHJcblxyXG4gIHByZXZpZXdVcmxzID0gbmV3IE1hcDxGaWxlLCBzdHJpbmc+KCk7XHJcblxyXG4gIGZpbGVQcmV2aWV3VXJsKGZpbGU6IEZpbGUpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGlmICghZmlsZSB8fCAhZmlsZS50eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnByZXZpZXdVcmxzLmhhcyhmaWxlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5wcmV2aWV3VXJscy5nZXQoZmlsZSkhO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XHJcbiAgICB0aGlzLnByZXZpZXdVcmxzLnNldChmaWxlLCB1cmwpO1xyXG4gICAgcmV0dXJuIHVybDtcclxuICB9XHJcblxyXG4gIGRvd25sb2FkRmlsZShmaWxlOiBGaWxlKTogdm9pZCB7XHJcbiAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpO1xyXG4gICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGEuaHJlZiA9IHVybDtcclxuICAgIGEuZG93bmxvYWQgPSBmaWxlLm5hbWU7XHJcbiAgICBhLmNsaWNrKCk7XHJcbiAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XHJcbiAgfVxyXG5cclxuICBnZXQgdXBsb2FkQnV0dG9uKCk6IFVpQWN0aW9uRGVzY3JpcHRvciB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0aXRsZTogdGhpcy5pMThuIS51cGxvYWQgPz8gJycsXHJcbiAgICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgICAgIHR5cGU6IFVpQWN0aW9uQnV0dG9uVHlwZS5SQUlTRUQsXHJcbiAgICAgIGljb246ICd1cGxvYWQnLFxyXG4gICAgICBpY29uUG9zaXRpb246IEljb25Qb3NpdGlvbi5QUkUsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRvd25sb2FkQnV0dG9uKCk6IFVpQWN0aW9uRGVzY3JpcHRvciB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0aXRsZTogJycsXHJcbiAgICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgICAgIHR5cGU6IFVpQWN0aW9uQnV0dG9uVHlwZS5JQ09OLFxyXG4gICAgICBpY29uOiAnZG93bmxvYWQnLFxyXG4gICAgICBpY29uUG9zaXRpb246IEljb25Qb3NpdGlvbi5QUkUsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJlbW92ZUJ1dHRvbigpOiBVaUFjdGlvbkRlc2NyaXB0b3Ige1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdGl0bGU6ICcnLFxyXG4gICAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gICAgICB0eXBlOiBVaUFjdGlvbkJ1dHRvblR5cGUuSUNPTixcclxuICAgICAgaWNvbjogJ2Nsb3NlJyxcclxuICAgICAgaWNvbkNvbG9yOiAncmVkJyxcclxuICAgICAgaWNvblBvc2l0aW9uOiBJY29uUG9zaXRpb24uUFJFLFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwiY29udGFpbmVyXCJcclxuICBbbmdDbGFzc109XCJ7IGRpc2FibGVkV2lkZ2V0OiBpc0Rpc2FibGVkIH1cIlxyXG4gIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIlxyXG4gIChkcmFnbGVhdmUpPVwib25EcmFnTGVhdmUoJGV2ZW50KVwiXHJcbiAgKGRyb3ApPVwib25Ecm9wKCRldmVudClcIlxyXG4gIFtjbGFzcy5kcmFnb3Zlcl09XCJpc0RyYWdPdmVyXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJmaWxlQ29udGFpbmVyXCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+XHJcbiAgICA8aW5wdXRcclxuICAgICAgI2ZpbGVJbnB1dFxyXG4gICAgICBpZD1cImFkZEZpbGVcIlxyXG4gICAgICBwbGFjZWhvbGRlcj1cImZpbGVJbnB1dFwiXHJcbiAgICAgIHR5cGU9XCJmaWxlXCJcclxuICAgICAgKGNoYW5nZSk9XCJnZXRGaWxlKCRldmVudClcIlxyXG4gICAgICBjbGFzcz1cImZpbGVcIlxyXG4gICAgICBhY2NlcHQ9XCJ7eyBmaWxlRm9ybWF0cz8uam9pbignLCAnKSB9fVwiXHJcbiAgICAgIFtzaXplXT1cIm1heFNpemVNYlwiXHJcbiAgICAgIFttdWx0aXBsZV09XCJpc011bHRpcGxlXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxyXG4gICAgICBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIlxyXG4gICAgLz5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWxlVXBsb2FkQ29udGVudENvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJ1c2VJY29uQnV0dG9uXCIgY2xhc3M9XCJhZGRGaWxlQnV0dG9uXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCIgY2xhc3M9XCJhZGRDaXJjbGVcIj5hZGRfY2lyY2xlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIXVzZUljb25CdXR0b25cIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImFkZEZpbGVCdXR0b25cIj5cclxuICAgICAgICAgIHt7IGkxOG4hLmFkZEZpbGUgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbHNcIj5cclxuICAgICAgICA8bWF0LWxhYmVsICpuZ0lmPVwidXNlSWNvbkJ1dHRvblwiIGNsYXNzPVwibGFiZWwgcHJpbWFyeSB0aXRsZVwiPlxyXG4gICAgICAgICAge3sgaTE4biEuYWRkRmlsZSB9fVxyXG4gICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJsYWJlbCBzZWNvbmRhcnlcIj4ge3sgaTE4biEuYnJvd3NlT3JEcmFnIH19IDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJzdWJMYWJlbCBwcmltYXJ5XCI+IHt7IGkxOG4hLm1heFNpemUgfX0gPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cInN1YkxhYmVsIHByaW1hcnlcIj4ge3sgaTE4biEuZm9ybWF0cyB9fSA8L21hdC1sYWJlbD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWRCdXR0b25cIiAqbmdJZj1cImZpbGVzLmxlbmd0aFwiPlxyXG4gICAgICAgIDx1aS1hY3Rpb24tYnV0dG9uIChhY3Rpb25DbGljayk9XCJ1cGxvYWRGaWxlKClcIiBbZGVzY3JpcHRvcl09XCJ1cGxvYWRCdXR0b25cIj5cclxuICAgICAgICA8L3VpLWFjdGlvbi1idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJlcnJvcnMubGVuZ3RoXCIgY2xhc3M9XCJlcnJvck1lc3NhZ2VcIj5cclxuICAgIDxzbWFydC1pY29uIFtpY29uXT1cIidlcnJvcidcIiBbY29sb3JdPVwiJ3dhcm4nXCI+PC9zbWFydC1pY29uPlxyXG4gICAgPGRpdiBjbGFzcz1cImVycm9yc1wiPlxyXG4gICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXJyb3JzXCI+e3sgZXJyb3IgfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiAqbmdJZj1cImZpbGVzLmxlbmd0aFwiIGNsYXNzPVwidXBsb2FkZWRGaWxlc0NvbnRhaW5lclwiPlxyXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgZmlsZSBvZiBmaWxlczsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwidXBsb2FkZWRGaWxlXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWxlUHJldmlld1VybChmaWxlKTsgZWxzZSBmaWxlSWNvblwiPlxyXG4gICAgICAgIDxpbWcgW3NyY109XCJmaWxlUHJldmlld1VybChmaWxlKVwiIFthbHRdPVwiZmlsZS5uYW1lXCIgd2lkdGg9XCI1MFwiIGhlaWdodD1cIjUwXCIgLz5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjZmlsZUljb24+XHJcbiAgICAgICAgPHNtYXJ0LWljb24gW2ljb25dPVwiJ2luc2VydF9kcml2ZV9maWxlJ1wiPjwvc21hcnQtaWNvbj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWxlRGF0YVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlRGF0YUNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlTmFtZVwiPnt7IGZpbGUubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZVNpemVcIj57eyBmb3JtYXRTaXplKGZpbGUuc2l6ZSkgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbGVBY3Rpb25zXCI+XHJcbiAgICAgICAgPHNtYXJ0LWljb24gY2xhc3M9XCJkb3dubG9hZEljb25cIiBpY29uPVwiZG93bmxvYWRcIiAoY2xpY2spPVwiZG93bmxvYWRGaWxlKGZpbGUpXCI+PC9zbWFydC1pY29uPlxyXG4gICAgICAgIDxzbWFydC1pY29uIGNsYXNzPVwicmVtb3ZlSWNvblwiIGljb249XCJkZWxldGVcIiAoY2xpY2spPVwicmVtb3ZlKGkpXCI+PC9zbWFydC1pY29uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -152,7 +152,7 @@ export class SmartFileEditorComponent {
152
152
  useExisting: forwardRef(() => SmartFileEditorComponent),
153
153
  multi: true,
154
154
  },
155
- ], viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }], ngImport: i0, template: "@if (widgetInstance && widgetInstance.fileUploaderProperties) {\r\n<h4\r\n *ngIf=\"widgetInstance.showLabel\"\r\n class=\"labelContainer {{ widgetInstance.cssLabelClass ?? '' }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n>\r\n {{ widgetInstance.label }}\r\n</h4>\r\n\r\n<div class=\"fileEditorComponent\">\r\n @if (widgetInstance.value && !isTypeSupported(widgetInstance.value)) {\r\n <div class=\"errorMessage\">\r\n <smart-icon [icon]=\"errorIcon\" [color]=\"'var(--warninig-color)'\"></smart-icon>\r\n <span> Unsupported widgetInstance.value type for this widget.</span>\r\n </div>\r\n } @else if (!widgetInstance.value || fileToChange) {\r\n <smart-upload-widget\r\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n [uploadDescriptor]=\"widgetInstance.fileUploaderProperties.uploadDescriptor!\"\r\n [isMultiple]=\"false\"\r\n [isDisabled]=\"widgetInstance.isDisabled\"\r\n (uploadFilesEvent)=\"upload($event)\"\r\n />\r\n }\r\n\r\n <div\r\n [ngClass]=\"{ disabledWidget: widgetInstance.isDisabled }\"\r\n class=\"uploadedFileContainer\"\r\n [style.display]=\"\r\n widgetInstance.value && isTypeSupported(widgetInstance.value) ? 'block' : 'none'\r\n \"\r\n >\r\n <div class=\"uploadedFile\">\r\n <smart-icon class=\"uploadedFileIcon\" [icon]=\"fileIcon\"></smart-icon>\r\n\r\n <div class=\"fileData\">\r\n <div class=\"fileDataContainer\">\r\n <span class=\"fileName\">{{ widgetInstance.value?.fileName }}</span>\r\n <span class=\"fileSize\">{{ formatSize(widgetInstance.value?.size) }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"fileActions\">\r\n <smart-ui-action-toolbar [id]=\"widgetInstance.toolbarId\" #toolbar></smart-ui-action-toolbar>\r\n\r\n @if (!fileToChange) {\r\n <ui-action-button\r\n class=\"changeButton\"\r\n (actionClick)=\"change(widgetInstance.value)\"\r\n [disabled]=\"widgetInstance.isDisabled\"\r\n [descriptor]=\"changeButton\"\r\n >\r\n </ui-action-button>\r\n } @else {\r\n <ui-action-button\r\n class=\"removeIcon\"\r\n (actionClick)=\"cancelChange()\"\r\n [descriptor]=\"removeButton\"\r\n ></ui-action-button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem;width:100%}.fileEditorComponent{border:2px dashed var(--border-color);border-radius:var(--def-border-radius)}.fileEditorComponent ::ng-deep smartfileuploader ::ng-deep .container{border:unset;border-radius:unset}.uploadedFileContainer{display:flex;flex-direction:column}.uploadedFile{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;padding:1rem;gap:1rem}.fileEditorComponent:has(::ng-deep prime-file-uploader) ::ng-deep .uploadedFile,.fileEditorComponent:has(::ng-deep smartfileuploader) ::ng-deep .uploadedFile{border-top:1px solid #e0e0e0}.fileSize{display:flex;flex-direction:row;font-size:smaller}.fileData{flex:1;display:flex;flex-direction:column}.fileDataContainer{display:flex;flex-direction:column;justify-content:flex-end;width:fit-content}.fileActions{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.fileActions ::ng-deep button{border:unset}.fileActions ::ng-deep button:hover{border:unset}.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}smart-icon ::ng-deep mat-icon{font-size:3rem;width:unset;height:unset}.uploadedFileIcon{width:3rem;display:flex;justify-content:center}:host ::ng-deep .p-fileupload-content{border:unset;border-radius:var(--def-border-radius)}smart-icon ::ng-deep .pi{font-size:2rem!important}.fileEditorComponent:has(::ng-deep .errorMessage){border-color:var(--warninig-color)}.errorMessage{padding:1rem;font-size:1.5rem;color:var(--warninig-color);display:flex;flex-direction:row;align-items:center;gap:1rem}:host ::ng-deep .disabledWidget ::ng-deep .changeButton *,:host ::ng-deep .disabledWidget ::ng-deep .fileData *{opacity:.7}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i3.UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "scrollOnWrap", "toolbarPropertes"] }, { kind: "component", type: i4.UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass", "addBasicClasses"], outputs: ["actionClick", "actionDoubleClick"] }, { kind: "component", type: i5.UploadWidgetComponent, selector: "smart-upload-widget", inputs: ["uploadDescriptor", "isMultiple", "isDisabled"], outputs: ["uploadFilesEvent"] }] }); }
155
+ ], viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }], ngImport: i0, template: "@if (widgetInstance && widgetInstance.fileUploaderProperties) {\r\n <h4\r\n *ngIf=\"widgetInstance.showLabel\"\r\n class=\"labelContainer {{ widgetInstance.cssLabelClass ?? '' }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ widgetInstance.label }}\r\n </h4>\r\n\r\n <div class=\"fileEditorComponent\">\r\n @if (widgetInstance.value && !isTypeSupported(widgetInstance.value)) {\r\n <div class=\"errorMessage\">\r\n <smart-icon [icon]=\"errorIcon\" [color]=\"'var(--warninig-color)'\"></smart-icon>\r\n <span> Unsupported widgetInstance.value type for this widget.</span>\r\n </div>\r\n } @else if (!widgetInstance.value || fileToChange) {\r\n <smart-upload-widget\r\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n [uploadDescriptor]=\"widgetInstance.fileUploaderProperties.uploadDescriptor!\"\r\n [isMultiple]=\"false\"\r\n [isDisabled]=\"widgetInstance.isDisabled\"\r\n (uploadFilesEvent)=\"upload($event)\"\r\n />\r\n }\r\n\r\n <div\r\n [ngClass]=\"{ disabledWidget: widgetInstance.isDisabled }\"\r\n class=\"uploadedFileContainer\"\r\n [style.display]=\"\r\n widgetInstance.value && isTypeSupported(widgetInstance.value) ? 'block' : 'none'\r\n \"\r\n >\r\n <div class=\"uploadedFile\">\r\n <smart-icon class=\"uploadedFileIcon\" [icon]=\"fileIcon\"></smart-icon>\r\n\r\n <div class=\"fileData\">\r\n <div class=\"fileDataContainer\">\r\n <span class=\"fileName\">{{ widgetInstance.value?.fileName }}</span>\r\n <span class=\"fileSize\">{{ formatSize(widgetInstance.value?.size) }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"fileActions\">\r\n <smart-ui-action-toolbar\r\n [id]=\"widgetInstance.toolbarId\"\r\n #toolbar\r\n ></smart-ui-action-toolbar>\r\n\r\n @if (!fileToChange) {\r\n <ui-action-button\r\n class=\"changeButton\"\r\n (actionClick)=\"change(widgetInstance.value)\"\r\n [disabled]=\"widgetInstance.isDisabled\"\r\n [descriptor]=\"changeButton\"\r\n >\r\n </ui-action-button>\r\n } @else {\r\n <ui-action-button\r\n class=\"removeIcon\"\r\n (actionClick)=\"cancelChange()\"\r\n [descriptor]=\"removeButton\"\r\n ></ui-action-button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem;width:100%}.fileEditorComponent{border:2px dashed var(--border-color);border-radius:var(--def-border-radius)}.fileEditorComponent ::ng-deep smartfileuploader ::ng-deep .container{border:unset;border-radius:unset}.uploadedFileContainer{display:flex;flex-direction:column}.uploadedFile{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;padding:1rem;gap:1rem}.fileEditorComponent:has(::ng-deep prime-file-uploader) ::ng-deep .uploadedFile,.fileEditorComponent:has(::ng-deep smartfileuploader) ::ng-deep .uploadedFile{border-top:1px solid #e0e0e0}.fileSize{display:flex;flex-direction:row;font-size:smaller}.fileData{flex:1;display:flex;flex-direction:column}.fileDataContainer{display:flex;flex-direction:column;justify-content:flex-end;width:fit-content}.fileActions{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.fileActions ::ng-deep button{border:unset}.fileActions ::ng-deep button:hover{border:unset}.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}smart-icon ::ng-deep mat-icon{font-size:3rem;width:unset;height:unset}.uploadedFileIcon{width:3rem;display:flex;justify-content:center}:host ::ng-deep .p-fileupload-content{border:unset;border-radius:var(--def-border-radius)}smart-icon ::ng-deep .pi{font-size:2rem!important}.fileEditorComponent:has(::ng-deep .errorMessage){border-color:var(--warninig-color)}.errorMessage{padding:1rem;font-size:1.5rem;color:var(--warninig-color);display:flex;flex-direction:row;align-items:center;gap:1rem}:host ::ng-deep .disabledWidget ::ng-deep .changeButton *,:host ::ng-deep .disabledWidget ::ng-deep .fileData *{opacity:.7}:host ::ng-deep smartfileuploader ::ng-deep .uploadedFile,:host ::ng-deep .p-fileupload-file{background:repeating-linear-gradient(45deg,#fafafa,#fafafa 12px,#f1f1f1 12px 24px)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i3.UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "scrollOnWrap", "toolbarPropertes"] }, { kind: "component", type: i4.UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass", "addBasicClasses"], outputs: ["actionClick", "actionDoubleClick"] }, { kind: "component", type: i5.UploadWidgetComponent, selector: "smart-upload-widget", inputs: ["uploadDescriptor", "isMultiple", "isDisabled"], outputs: ["uploadFilesEvent"] }] }); }
156
156
  }
157
157
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFileEditorComponent, decorators: [{
158
158
  type: Component,
@@ -162,7 +162,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
162
162
  useExisting: forwardRef(() => SmartFileEditorComponent),
163
163
  multi: true,
164
164
  },
165
- ], template: "@if (widgetInstance && widgetInstance.fileUploaderProperties) {\r\n<h4\r\n *ngIf=\"widgetInstance.showLabel\"\r\n class=\"labelContainer {{ widgetInstance.cssLabelClass ?? '' }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n>\r\n {{ widgetInstance.label }}\r\n</h4>\r\n\r\n<div class=\"fileEditorComponent\">\r\n @if (widgetInstance.value && !isTypeSupported(widgetInstance.value)) {\r\n <div class=\"errorMessage\">\r\n <smart-icon [icon]=\"errorIcon\" [color]=\"'var(--warninig-color)'\"></smart-icon>\r\n <span> Unsupported widgetInstance.value type for this widget.</span>\r\n </div>\r\n } @else if (!widgetInstance.value || fileToChange) {\r\n <smart-upload-widget\r\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n [uploadDescriptor]=\"widgetInstance.fileUploaderProperties.uploadDescriptor!\"\r\n [isMultiple]=\"false\"\r\n [isDisabled]=\"widgetInstance.isDisabled\"\r\n (uploadFilesEvent)=\"upload($event)\"\r\n />\r\n }\r\n\r\n <div\r\n [ngClass]=\"{ disabledWidget: widgetInstance.isDisabled }\"\r\n class=\"uploadedFileContainer\"\r\n [style.display]=\"\r\n widgetInstance.value && isTypeSupported(widgetInstance.value) ? 'block' : 'none'\r\n \"\r\n >\r\n <div class=\"uploadedFile\">\r\n <smart-icon class=\"uploadedFileIcon\" [icon]=\"fileIcon\"></smart-icon>\r\n\r\n <div class=\"fileData\">\r\n <div class=\"fileDataContainer\">\r\n <span class=\"fileName\">{{ widgetInstance.value?.fileName }}</span>\r\n <span class=\"fileSize\">{{ formatSize(widgetInstance.value?.size) }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"fileActions\">\r\n <smart-ui-action-toolbar [id]=\"widgetInstance.toolbarId\" #toolbar></smart-ui-action-toolbar>\r\n\r\n @if (!fileToChange) {\r\n <ui-action-button\r\n class=\"changeButton\"\r\n (actionClick)=\"change(widgetInstance.value)\"\r\n [disabled]=\"widgetInstance.isDisabled\"\r\n [descriptor]=\"changeButton\"\r\n >\r\n </ui-action-button>\r\n } @else {\r\n <ui-action-button\r\n class=\"removeIcon\"\r\n (actionClick)=\"cancelChange()\"\r\n [descriptor]=\"removeButton\"\r\n ></ui-action-button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem;width:100%}.fileEditorComponent{border:2px dashed var(--border-color);border-radius:var(--def-border-radius)}.fileEditorComponent ::ng-deep smartfileuploader ::ng-deep .container{border:unset;border-radius:unset}.uploadedFileContainer{display:flex;flex-direction:column}.uploadedFile{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;padding:1rem;gap:1rem}.fileEditorComponent:has(::ng-deep prime-file-uploader) ::ng-deep .uploadedFile,.fileEditorComponent:has(::ng-deep smartfileuploader) ::ng-deep .uploadedFile{border-top:1px solid #e0e0e0}.fileSize{display:flex;flex-direction:row;font-size:smaller}.fileData{flex:1;display:flex;flex-direction:column}.fileDataContainer{display:flex;flex-direction:column;justify-content:flex-end;width:fit-content}.fileActions{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.fileActions ::ng-deep button{border:unset}.fileActions ::ng-deep button:hover{border:unset}.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}smart-icon ::ng-deep mat-icon{font-size:3rem;width:unset;height:unset}.uploadedFileIcon{width:3rem;display:flex;justify-content:center}:host ::ng-deep .p-fileupload-content{border:unset;border-radius:var(--def-border-radius)}smart-icon ::ng-deep .pi{font-size:2rem!important}.fileEditorComponent:has(::ng-deep .errorMessage){border-color:var(--warninig-color)}.errorMessage{padding:1rem;font-size:1.5rem;color:var(--warninig-color);display:flex;flex-direction:row;align-items:center;gap:1rem}:host ::ng-deep .disabledWidget ::ng-deep .changeButton *,:host ::ng-deep .disabledWidget ::ng-deep .fileData *{opacity:.7}\n"] }]
165
+ ], template: "@if (widgetInstance && widgetInstance.fileUploaderProperties) {\r\n <h4\r\n *ngIf=\"widgetInstance.showLabel\"\r\n class=\"labelContainer {{ widgetInstance.cssLabelClass ?? '' }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ widgetInstance.label }}\r\n </h4>\r\n\r\n <div class=\"fileEditorComponent\">\r\n @if (widgetInstance.value && !isTypeSupported(widgetInstance.value)) {\r\n <div class=\"errorMessage\">\r\n <smart-icon [icon]=\"errorIcon\" [color]=\"'var(--warninig-color)'\"></smart-icon>\r\n <span> Unsupported widgetInstance.value type for this widget.</span>\r\n </div>\r\n } @else if (!widgetInstance.value || fileToChange) {\r\n <smart-upload-widget\r\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n [uploadDescriptor]=\"widgetInstance.fileUploaderProperties.uploadDescriptor!\"\r\n [isMultiple]=\"false\"\r\n [isDisabled]=\"widgetInstance.isDisabled\"\r\n (uploadFilesEvent)=\"upload($event)\"\r\n />\r\n }\r\n\r\n <div\r\n [ngClass]=\"{ disabledWidget: widgetInstance.isDisabled }\"\r\n class=\"uploadedFileContainer\"\r\n [style.display]=\"\r\n widgetInstance.value && isTypeSupported(widgetInstance.value) ? 'block' : 'none'\r\n \"\r\n >\r\n <div class=\"uploadedFile\">\r\n <smart-icon class=\"uploadedFileIcon\" [icon]=\"fileIcon\"></smart-icon>\r\n\r\n <div class=\"fileData\">\r\n <div class=\"fileDataContainer\">\r\n <span class=\"fileName\">{{ widgetInstance.value?.fileName }}</span>\r\n <span class=\"fileSize\">{{ formatSize(widgetInstance.value?.size) }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"fileActions\">\r\n <smart-ui-action-toolbar\r\n [id]=\"widgetInstance.toolbarId\"\r\n #toolbar\r\n ></smart-ui-action-toolbar>\r\n\r\n @if (!fileToChange) {\r\n <ui-action-button\r\n class=\"changeButton\"\r\n (actionClick)=\"change(widgetInstance.value)\"\r\n [disabled]=\"widgetInstance.isDisabled\"\r\n [descriptor]=\"changeButton\"\r\n >\r\n </ui-action-button>\r\n } @else {\r\n <ui-action-button\r\n class=\"removeIcon\"\r\n (actionClick)=\"cancelChange()\"\r\n [descriptor]=\"removeButton\"\r\n ></ui-action-button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem;width:100%}.fileEditorComponent{border:2px dashed var(--border-color);border-radius:var(--def-border-radius)}.fileEditorComponent ::ng-deep smartfileuploader ::ng-deep .container{border:unset;border-radius:unset}.uploadedFileContainer{display:flex;flex-direction:column}.uploadedFile{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;padding:1rem;gap:1rem}.fileEditorComponent:has(::ng-deep prime-file-uploader) ::ng-deep .uploadedFile,.fileEditorComponent:has(::ng-deep smartfileuploader) ::ng-deep .uploadedFile{border-top:1px solid #e0e0e0}.fileSize{display:flex;flex-direction:row;font-size:smaller}.fileData{flex:1;display:flex;flex-direction:column}.fileDataContainer{display:flex;flex-direction:column;justify-content:flex-end;width:fit-content}.fileActions{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.fileActions ::ng-deep button{border:unset}.fileActions ::ng-deep button:hover{border:unset}.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}smart-icon ::ng-deep mat-icon{font-size:3rem;width:unset;height:unset}.uploadedFileIcon{width:3rem;display:flex;justify-content:center}:host ::ng-deep .p-fileupload-content{border:unset;border-radius:var(--def-border-radius)}smart-icon ::ng-deep .pi{font-size:2rem!important}.fileEditorComponent:has(::ng-deep .errorMessage){border-color:var(--warninig-color)}.errorMessage{padding:1rem;font-size:1.5rem;color:var(--warninig-color);display:flex;flex-direction:row;align-items:center;gap:1rem}:host ::ng-deep .disabledWidget ::ng-deep .changeButton *,:host ::ng-deep .disabledWidget ::ng-deep .fileData *{opacity:.7}:host ::ng-deep smartfileuploader ::ng-deep .uploadedFile,:host ::ng-deep .p-fileupload-file{background:repeating-linear-gradient(45deg,#fafafa,#fafafa 12px,#f1f1f1 12px 24px)}\n"] }]
166
166
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i6.ComponentLibrary, decorators: [{
167
167
  type: Inject,
168
168
  args: [COMPONENT_LIBRARY]
@@ -176,4 +176,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
176
176
  }], uploadFilesEvent: [{
177
177
  type: Output
178
178
  }] } });
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZmlsZS1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZm9ybS93aWRnZXRzL2NvbXBvbmVudHMvc21hcnQtZmlsZS1lZGl0b3Ivc21hcnQtZmlsZS1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZm9ybS93aWRnZXRzL2NvbXBvbmVudHMvc21hcnQtZmlsZS1lZGl0b3Ivc21hcnQtZmlsZS1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDekYsT0FBTyxFQUNMLFlBQVksRUFFWixrQkFBa0IsR0FHbkIsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGdCQUFnQixHQUNqQixNQUFNLG1EQUFtRCxDQUFDO0FBRTNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVGQUF1RixDQUFDO0FBQzFILE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7QUFjekUsTUFBTSxPQUFPLHdCQUF3QjtJQUtuQyxJQUNJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFDRCxJQUFJLGNBQWMsQ0FBQyxLQUF3QjtRQUN6QyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQVVELFlBQ1UsR0FBc0IsRUFDZ0IsT0FBMEI7UUFEaEUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDZ0IsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFWaEUscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBSXpDLENBQUM7UUE4RkwsZ0RBQWdEO1FBRWhELGFBQVEsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQzlCLGNBQVMsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDckIsZUFBVSxHQUFHLEtBQUssQ0FBQztJQTNGaEIsQ0FBQztJQUVJLEtBQUssQ0FBQyxLQUF3QjtRQUNwQyxJQUFJLENBQUMsZUFBZTtZQUNsQixPQUFPLGVBQWUsS0FBSyxVQUFVO2dCQUNuQyxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztnQkFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRXhDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxDQUFDO1lBQzNELElBQUksQ0FBQyxlQUFlLENBQUMsc0JBQXNCLEdBQUc7Z0JBQzVDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLHNCQUFzQixJQUFJLEVBQUUsQ0FBQztnQkFDdEQsUUFBUSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTthQUNqQyxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFVO1FBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDNUMsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLHNCQUF1QixDQUFDO1FBQzNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZO1lBQ2hDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQyxZQUFZO1lBQzFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBRXZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7WUFDekIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2xCLFFBQVEsRUFBRSxRQUFTO1lBQ25CLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7U0FDekMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBUztRQUNkLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7SUFDaEMsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFVO1FBQ3hCLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFTLElBQUksS0FBSyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFhO1FBQ3RCLE9BQU8saUJBQWlCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCx3Q0FBd0M7SUFDeEMsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxVQUFVO1lBQ3JDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUM7WUFDakUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNULENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLFVBQVU7WUFDckMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQztZQUNoRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1QsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEdBQUc7Z0JBQzNCLFlBQVksRUFBRSxFQUFFO2dCQUNoQixlQUFlLEVBQUUsRUFBRTtnQkFDbkIsS0FBSyxFQUFFLEVBQUU7YUFDVixDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pGLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxJQUFJLENBQUM7UUFDbkYsQ0FBQztRQUVELE9BQU8saUJBQWlCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQVFELFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBRSxVQUFtQjtRQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQsdUJBQXVCO0lBRXZCLElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUM7SUFDakYsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsc0JBQXVCLENBQUM7UUFDekQsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUMsWUFBYSxDQUFDO1FBRTNELElBQUksZ0JBQWdCLEdBQUc7WUFDckIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1lBQ2hDLEtBQUssRUFBRSxFQUFFO1lBQ1QsS0FBSyxFQUFFLFNBQVM7WUFDaEIsSUFBSSxFQUFFLGtCQUFrQixDQUFDLElBQUk7WUFDN0IsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEtBQUssZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVU7WUFDckUsWUFBWSxFQUFFLFlBQVksQ0FBQyxHQUFHO1NBQy9CLENBQUM7UUFFRixPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBRXJDLE9BQU87WUFDTCxLQUFLLEVBQUUsRUFBRTtZQUNULEtBQUssRUFBRSxZQUFZLENBQUMsS0FBSztZQUN6QixJQUFJLEVBQUUsWUFBWSxDQUFDLElBQUk7WUFDdkIsWUFBWSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsc0JBQXVCLENBQUMsUUFBUTtZQUNuRSxZQUFZLEVBQUUsWUFBWSxDQUFDLEdBQUc7U0FDL0IsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ25GLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQzsrR0FsTFUsd0JBQXdCLG1EQXlCekIsaUJBQWlCO21HQXpCaEIsd0JBQXdCLDZJQVJ4QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUM7Z0JBQ3ZELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRiw4SEN0Q0gsZzZFQW9FQTs7NEZENUJhLHdCQUF3QjtrQkFacEMsU0FBUzsrQkFDRSxtQkFBbUIsYUFHbEI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUM7NEJBQ3ZELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzswQkEyQkUsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUFHLFFBQVE7eUNBeEJoQixPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBS2hCLGNBQWM7c0JBRGpCLEtBQUs7Z0JBVUksZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNtYXJ0RmlsZVVwbG9hZGVyIH0gZnJvbSAnLi4vLi4vLi4vc21hcnRmb3JtLmZvcm0tbW9kZWwnO1xyXG5pbXBvcnQgeyBTbWFydFN0eWxlVXRpbGl0eSB9IGZyb20gJy4uLy4uLy4uLy4uL3ZpZXctY29udGV4dC91dGlsaXR5L3NtYXJ0LXN0eWxlLXV0aWxpdHknO1xyXG5pbXBvcnQge1xyXG4gIEljb25Qb3NpdGlvbixcclxuICBVaUFjdGlvbixcclxuICBVaUFjdGlvbkJ1dHRvblR5cGUsXHJcbiAgVWlBY3Rpb25EZXNjcmlwdG9yLFxyXG4gIFVpQWN0aW9uVXBsb2FkRGVzY3JpcHRvcixcclxufSBmcm9tICcuLi8uLi8uLi8uLi92aWV3LWNvbnRleHQvYXBpL21vZGVsL21vZGVscyc7XHJcbmltcG9ydCB7XHJcbiAgQ09NUE9ORU5UX0xJQlJBUlksXHJcbiAgQ29tcG9uZW50TGlicmFyeSxcclxufSBmcm9tICcuLi8uLi8uLi8uLi92aWV3LWNvbnRleHQvdXRpbGl0eS9jb21wb25lbnRMaWJyYXJ5JztcclxuaW1wb3J0IHsgVWlBY3Rpb25Ub29sYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vdmlldy1jb250ZXh0L3NtYXJ0LXVpLWFjdGlvbi91aS1hY3Rpb24tdG9vbGJhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVcGxvYWRXaWRnZXRVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uL3ZpZXctY29udGV4dC9zbWFydC11aS1hY3Rpb24vY29tcG9uZW50cy91cGxvYWQtd2lkZ2V0L3VwbG9hZC13aWRnZXQudXRpbHMnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NtYXJ0LWZpbGUtZWRpdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc21hcnQtZmlsZS1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9zbWFydC1maWxlLWVkaXRvci5jb21wb25lbnQuY3NzJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNtYXJ0RmlsZUVkaXRvckNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnRGaWxlRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIEBWaWV3Q2hpbGQoJ3Rvb2xiYXInKSB0b29sYmFyITogVWlBY3Rpb25Ub29sYmFyQ29tcG9uZW50O1xyXG5cclxuICBwcml2YXRlIF93aWRnZXRJbnN0YW5jZSE6IFNtYXJ0RmlsZVVwbG9hZGVyO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCB3aWRnZXRJbnN0YW5jZSgpOiBTbWFydEZpbGVVcGxvYWRlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fd2lkZ2V0SW5zdGFuY2U7XHJcbiAgfVxyXG4gIHNldCB3aWRnZXRJbnN0YW5jZSh2YWx1ZTogU21hcnRGaWxlVXBsb2FkZXIpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLmNsb25lKHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSB1cGxvYWRGaWxlc0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBmaWxlczogYW55W107XHJcbiAgICB1aUFjdGlvbjogVWlBY3Rpb247XHJcbiAgICB1cGxvYWREZXNjcmlwdG9yPzogVWlBY3Rpb25VcGxvYWREZXNjcmlwdG9yO1xyXG4gIH0+KCk7XHJcblxyXG4gIGZpbGVUb0NoYW5nZT86IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBASW5qZWN0KENPTVBPTkVOVF9MSUJSQVJZKSBAT3B0aW9uYWwoKSBwdWJsaWMgY29tcExpYj86IENvbXBvbmVudExpYnJhcnlcclxuICApIHt9XHJcblxyXG4gIHByaXZhdGUgY2xvbmUodmFsdWU6IFNtYXJ0RmlsZVVwbG9hZGVyKSB7XHJcbiAgICB0aGlzLl93aWRnZXRJbnN0YW5jZSA9XHJcbiAgICAgIHR5cGVvZiBzdHJ1Y3R1cmVkQ2xvbmUgPT09ICdmdW5jdGlvbidcclxuICAgICAgICA/IHN0cnVjdHVyZWRDbG9uZSh2YWx1ZSlcclxuICAgICAgICA6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuX3dpZGdldEluc3RhbmNlLmZpbGVVcGxvYWRlclByb3BlcnRpZXM/LnVuZG9JY29uKSB7XHJcbiAgICAgIHRoaXMuX3dpZGdldEluc3RhbmNlLmZpbGVVcGxvYWRlclByb3BlcnRpZXMgPSB7XHJcbiAgICAgICAgLi4uKHRoaXMuX3dpZGdldEluc3RhbmNlLmZpbGVVcGxvYWRlclByb3BlcnRpZXMgPz8ge30pLFxyXG4gICAgICAgIHVuZG9JY29uOiB7IGlkZW50aWZpZXI6ICd1bmRvJyB9LFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghZXZlbnQuZmlsZXMgfHwgZXZlbnQuZmlsZXMubGVuZ3RoID09IDApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHByb3BzID0gdGhpcy5fd2lkZ2V0SW5zdGFuY2UuZmlsZVVwbG9hZGVyUHJvcGVydGllcyE7XHJcbiAgICBjb25zdCB1aUFjdGlvbiA9IHRoaXMuZmlsZVRvQ2hhbmdlXHJcbiAgICAgID8gcHJvcHMuY2hhbmdlQWN0aW9uID8/IHByb3BzLnVwbG9hZEFjdGlvblxyXG4gICAgICA6IHByb3BzLnVwbG9hZEFjdGlvbjtcclxuXHJcbiAgICB0aGlzLnVwbG9hZEZpbGVzRXZlbnQuZW1pdCh7XHJcbiAgICAgIGZpbGVzOiBldmVudC5maWxlcyxcclxuICAgICAgdWlBY3Rpb246IHVpQWN0aW9uISxcclxuICAgICAgdXBsb2FkRGVzY3JpcHRvcjogZXZlbnQudXBsb2FkRGVzY3JpcHRvcixcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5fd2lkZ2V0SW5zdGFuY2UudmFsdWUpO1xyXG4gICAgdGhpcy5maWxlVG9DaGFuZ2UgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2UoZmlsZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbGVUb0NoYW5nZSA9IGZpbGU7XHJcbiAgfVxyXG5cclxuICBjYW5jZWxDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbGVUb0NoYW5nZSA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGlzVHlwZVN1cHBvcnRlZCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISEodmFsdWUgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpICYmICdkYXRhVXJpJyBpbiB2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBmb3JtYXRTaXplKGJ5dGVzOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIFVwbG9hZFdpZGdldFV0aWxzLmZvcm1hdFNpemUoYnl0ZXMpO1xyXG4gIH1cclxuXHJcbiAgLy8gLS0tLSBTbWFydCBmb3JtIHdpZGdldCBmdW5jdGlvbnMgLS0tLVxyXG4gIGdldExhYmVsTmdDbGFzcygpOiB7IFtjbGFzc05hbWU6IHN0cmluZ106IGJvb2xlYW4gfSB7XHJcbiAgICByZXR1cm4gdGhpcy5fd2lkZ2V0SW5zdGFuY2U/LmxhYmVsU3R5bGVcclxuICAgICAgPyBTbWFydFN0eWxlVXRpbGl0eS5nZXROZ0NsYXNzZXModGhpcy5fd2lkZ2V0SW5zdGFuY2UubGFiZWxTdHlsZSlcclxuICAgICAgOiB7fTtcclxuICB9XHJcblxyXG4gIGdldExhYmVsU3R5bGUoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfSB7XHJcbiAgICByZXR1cm4gdGhpcy5fd2lkZ2V0SW5zdGFuY2U/LmxhYmVsU3R5bGVcclxuICAgICAgPyBTbWFydFN0eWxlVXRpbGl0eS5nZXROZ1N0eWxlcyh0aGlzLl93aWRnZXRJbnN0YW5jZS5sYWJlbFN0eWxlKVxyXG4gICAgICA6IHt9O1xyXG4gIH1cclxuXHJcbiAgZ2V0TmdDbGFzcygpOiB7IFtjbGFzc05hbWU6IHN0cmluZ106IGJvb2xlYW4gfSB7XHJcbiAgICByZXR1cm4gU21hcnRTdHlsZVV0aWxpdHkuZ2V0TmdDbGFzc2VzKHRoaXMuX3dpZGdldEluc3RhbmNlPy5zdHlsZSk7XHJcbiAgfVxyXG5cclxuICBnZXRTdHlsZSgpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB9IHtcclxuICAgIGlmICghdGhpcy5fd2lkZ2V0SW5zdGFuY2Uuc3R5bGUpIHtcclxuICAgICAgdGhpcy5fd2lkZ2V0SW5zdGFuY2Uuc3R5bGUgPSB7XHJcbiAgICAgICAgY2xhc3Nlc1RvQWRkOiBbXSxcclxuICAgICAgICBjbGFzc2VzVG9SZW1vdmU6IFtdLFxyXG4gICAgICAgIHN0eWxlOiB7fSxcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoISgnd2lkdGgnIGluIHRoaXMuX3dpZGdldEluc3RhbmNlLnN0eWxlLnN0eWxlKSAmJiAnbWluV2lkdGgnIGluIHRoaXMuX3dpZGdldEluc3RhbmNlKSB7XHJcbiAgICAgIHRoaXMuX3dpZGdldEluc3RhbmNlLnN0eWxlLnN0eWxlWyd3aWR0aCddID0gYCR7dGhpcy5fd2lkZ2V0SW5zdGFuY2UubWluV2lkdGh9cHhgO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBTbWFydFN0eWxlVXRpbGl0eS5nZXROZ1N0eWxlcyh0aGlzLl93aWRnZXRJbnN0YW5jZS5zdHlsZSk7XHJcbiAgfVxyXG5cclxuICAvLyAtLS0tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGltcGxlbWVudGF0aW9uIC0tLS1cclxuXHJcbiAgb25DaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge307XHJcbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XHJcbiAgaXNEaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX3dpZGdldEluc3RhbmNlKSB7XHJcbiAgICAgIHRoaXMuX3dpZGdldEluc3RhbmNlLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc0Rpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIC8vIC0tLS0gVUkgZ2V0dGVycyAtLS0tXHJcblxyXG4gIGdldCBmaWxlSWNvbigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tcExpYiA9PSBDb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcgPyAnZmlsZScgOiAnaW5zZXJ0X2RyaXZlX2ZpbGUnO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNoYW5nZUJ1dHRvbigpOiBVaUFjdGlvbkRlc2NyaXB0b3Ige1xyXG4gICAgdmFyIHByb3BzID0gdGhpcy5fd2lkZ2V0SW5zdGFuY2UuZmlsZVVwbG9hZGVyUHJvcGVydGllcyE7XHJcbiAgICB2YXIgYmFzZUFjdGlvbiA9IHByb3BzLmNoYW5nZUFjdGlvbiA/PyBwcm9wcy51cGxvYWRBY3Rpb24hO1xyXG5cclxuICAgIHZhciBjaGFuZ2VEZXNjcmlwdG9yID0ge1xyXG4gICAgICAuLi4oYmFzZUFjdGlvbi5kZXNjcmlwdG9yID8/IHt9KSxcclxuICAgICAgdGl0bGU6ICcnLFxyXG4gICAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gICAgICB0eXBlOiBVaUFjdGlvbkJ1dHRvblR5cGUuSUNPTixcclxuICAgICAgaWNvbjogdGhpcy5jb21wTGliID09PSBDb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcgPyAnc3luYycgOiAnc3luY19hbHQnLFxyXG4gICAgICBpY29uUG9zaXRpb246IEljb25Qb3NpdGlvbi5QUkUsXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBjaGFuZ2VEZXNjcmlwdG9yO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJlbW92ZUJ1dHRvbigpOiBVaUFjdGlvbkRlc2NyaXB0b3Ige1xyXG4gICAgdmFyIGNoYW5nZUJ1dHRvbiA9IHRoaXMuY2hhbmdlQnV0dG9uO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHRpdGxlOiAnJyxcclxuICAgICAgY29sb3I6IGNoYW5nZUJ1dHRvbi5jb2xvcixcclxuICAgICAgdHlwZTogY2hhbmdlQnV0dG9uLnR5cGUsXHJcbiAgICAgIGljb25SZXNvdXJjZTogdGhpcy5fd2lkZ2V0SW5zdGFuY2UuZmlsZVVwbG9hZGVyUHJvcGVydGllcyEudW5kb0ljb24sXHJcbiAgICAgIGljb25Qb3NpdGlvbjogSWNvblBvc2l0aW9uLlBSRSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBnZXQgZXJyb3JJY29uKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wTGliID09IENvbXBvbmVudExpYnJhcnkuUFJJTUVORyA/ICdleGNsYW1hdGlvbi1jaXJjbGUnIDogJ2Vycm9yJztcclxuICB9XHJcblxyXG4gIGdldCB0b29sYmFyQ29tcG9uZW50KCk6IFVpQWN0aW9uVG9vbGJhckNvbXBvbmVudCB7XHJcbiAgICByZXR1cm4gdGhpcy50b29sYmFyO1xyXG4gIH1cclxufVxyXG4iLCJAaWYgKHdpZGdldEluc3RhbmNlICYmIHdpZGdldEluc3RhbmNlLmZpbGVVcGxvYWRlclByb3BlcnRpZXMpIHtcclxuPGg0XHJcbiAgKm5nSWY9XCJ3aWRnZXRJbnN0YW5jZS5zaG93TGFiZWxcIlxyXG4gIGNsYXNzPVwibGFiZWxDb250YWluZXIge3sgd2lkZ2V0SW5zdGFuY2UuY3NzTGFiZWxDbGFzcyA/PyAnJyB9fVwiXHJcbiAgW25nQ2xhc3NdPVwiZ2V0TGFiZWxOZ0NsYXNzKClcIlxyXG4gIFtuZ1N0eWxlXT1cImdldExhYmVsU3R5bGUoKVwiXHJcbj5cclxuICB7eyB3aWRnZXRJbnN0YW5jZS5sYWJlbCB9fVxyXG48L2g0PlxyXG5cclxuPGRpdiBjbGFzcz1cImZpbGVFZGl0b3JDb21wb25lbnRcIj5cclxuICBAaWYgKHdpZGdldEluc3RhbmNlLnZhbHVlICYmICFpc1R5cGVTdXBwb3J0ZWQod2lkZ2V0SW5zdGFuY2UudmFsdWUpKSB7XHJcbiAgPGRpdiBjbGFzcz1cImVycm9yTWVzc2FnZVwiPlxyXG4gICAgPHNtYXJ0LWljb24gW2ljb25dPVwiZXJyb3JJY29uXCIgW2NvbG9yXT1cIid2YXIoLS13YXJuaW5pZy1jb2xvciknXCI+PC9zbWFydC1pY29uPlxyXG4gICAgPHNwYW4+IFVuc3VwcG9ydGVkIHdpZGdldEluc3RhbmNlLnZhbHVlIHR5cGUgZm9yIHRoaXMgd2lkZ2V0Ljwvc3Bhbj5cclxuICA8L2Rpdj5cclxuICB9IEBlbHNlIGlmICghd2lkZ2V0SW5zdGFuY2UudmFsdWUgfHwgZmlsZVRvQ2hhbmdlKSB7XHJcbiAgPHNtYXJ0LXVwbG9hZC13aWRnZXRcclxuICAgIGNsYXNzPVwid2lkZ2V0Q29udGVudCB7eyB3aWRnZXRJbnN0YW5jZS5jc3NDbGFzcyA/PyAnJyB9fVwiXHJcbiAgICBbbmdDbGFzc109XCJnZXROZ0NsYXNzKClcIlxyXG4gICAgW25nU3R5bGVdPVwiZ2V0U3R5bGUoKVwiXHJcbiAgICBbdXBsb2FkRGVzY3JpcHRvcl09XCJ3aWRnZXRJbnN0YW5jZS5maWxlVXBsb2FkZXJQcm9wZXJ0aWVzLnVwbG9hZERlc2NyaXB0b3IhXCJcclxuICAgIFtpc011bHRpcGxlXT1cImZhbHNlXCJcclxuICAgIFtpc0Rpc2FibGVkXT1cIndpZGdldEluc3RhbmNlLmlzRGlzYWJsZWRcIlxyXG4gICAgKHVwbG9hZEZpbGVzRXZlbnQpPVwidXBsb2FkKCRldmVudClcIlxyXG4gIC8+XHJcbiAgfVxyXG5cclxuICA8ZGl2XHJcbiAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkV2lkZ2V0OiB3aWRnZXRJbnN0YW5jZS5pc0Rpc2FibGVkIH1cIlxyXG4gICAgY2xhc3M9XCJ1cGxvYWRlZEZpbGVDb250YWluZXJcIlxyXG4gICAgW3N0eWxlLmRpc3BsYXldPVwiXHJcbiAgICAgIHdpZGdldEluc3RhbmNlLnZhbHVlICYmIGlzVHlwZVN1cHBvcnRlZCh3aWRnZXRJbnN0YW5jZS52YWx1ZSkgPyAnYmxvY2snIDogJ25vbmUnXHJcbiAgICBcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWRlZEZpbGVcIj5cclxuICAgICAgPHNtYXJ0LWljb24gY2xhc3M9XCJ1cGxvYWRlZEZpbGVJY29uXCIgW2ljb25dPVwiZmlsZUljb25cIj48L3NtYXJ0LWljb24+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsZURhdGFcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZURhdGFDb250YWluZXJcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZU5hbWVcIj57eyB3aWRnZXRJbnN0YW5jZS52YWx1ZT8uZmlsZU5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGVTaXplXCI+e3sgZm9ybWF0U2l6ZSh3aWRnZXRJbnN0YW5jZS52YWx1ZT8uc2l6ZSkgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbGVBY3Rpb25zXCI+XHJcbiAgICAgICAgPHNtYXJ0LXVpLWFjdGlvbi10b29sYmFyIFtpZF09XCJ3aWRnZXRJbnN0YW5jZS50b29sYmFySWRcIiAjdG9vbGJhcj48L3NtYXJ0LXVpLWFjdGlvbi10b29sYmFyPlxyXG5cclxuICAgICAgICBAaWYgKCFmaWxlVG9DaGFuZ2UpIHtcclxuICAgICAgICA8dWktYWN0aW9uLWJ1dHRvblxyXG4gICAgICAgICAgY2xhc3M9XCJjaGFuZ2VCdXR0b25cIlxyXG4gICAgICAgICAgKGFjdGlvbkNsaWNrKT1cImNoYW5nZSh3aWRnZXRJbnN0YW5jZS52YWx1ZSlcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIndpZGdldEluc3RhbmNlLmlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgW2Rlc2NyaXB0b3JdPVwiY2hhbmdlQnV0dG9uXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC91aS1hY3Rpb24tYnV0dG9uPlxyXG4gICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDx1aS1hY3Rpb24tYnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cInJlbW92ZUljb25cIlxyXG4gICAgICAgICAgKGFjdGlvbkNsaWNrKT1cImNhbmNlbENoYW5nZSgpXCJcclxuICAgICAgICAgIFtkZXNjcmlwdG9yXT1cInJlbW92ZUJ1dHRvblwiXHJcbiAgICAgICAgPjwvdWktYWN0aW9uLWJ1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG59XHJcbiJdfQ==
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZmlsZS1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZm9ybS93aWRnZXRzL2NvbXBvbmVudHMvc21hcnQtZmlsZS1lZGl0b3Ivc21hcnQtZmlsZS1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZm9ybS93aWRnZXRzL2NvbXBvbmVudHMvc21hcnQtZmlsZS1lZGl0b3Ivc21hcnQtZmlsZS1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDekYsT0FBTyxFQUNMLFlBQVksRUFFWixrQkFBa0IsR0FHbkIsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGdCQUFnQixHQUNqQixNQUFNLG1EQUFtRCxDQUFDO0FBRTNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVGQUF1RixDQUFDO0FBQzFILE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7QUFjekUsTUFBTSxPQUFPLHdCQUF3QjtJQUtuQyxJQUNJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFDRCxJQUFJLGNBQWMsQ0FBQyxLQUF3QjtRQUN6QyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQVVELFlBQ1UsR0FBc0IsRUFDZ0IsT0FBMEI7UUFEaEUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDZ0IsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFWaEUscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBSXpDLENBQUM7UUE4RkwsZ0RBQWdEO1FBRWhELGFBQVEsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQzlCLGNBQVMsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDckIsZUFBVSxHQUFHLEtBQUssQ0FBQztJQTNGaEIsQ0FBQztJQUVJLEtBQUssQ0FBQyxLQUF3QjtRQUNwQyxJQUFJLENBQUMsZUFBZTtZQUNsQixPQUFPLGVBQWUsS0FBSyxVQUFVO2dCQUNuQyxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztnQkFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRXhDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxDQUFDO1lBQzNELElBQUksQ0FBQyxlQUFlLENBQUMsc0JBQXNCLEdBQUc7Z0JBQzVDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLHNCQUFzQixJQUFJLEVBQUUsQ0FBQztnQkFDdEQsUUFBUSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTthQUNqQyxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFVO1FBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDNUMsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLHNCQUF1QixDQUFDO1FBQzNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZO1lBQ2hDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQyxZQUFZO1lBQzFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBRXZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7WUFDekIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2xCLFFBQVEsRUFBRSxRQUFTO1lBQ25CLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7U0FDekMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBUztRQUNkLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7SUFDaEMsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFVO1FBQ3hCLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFTLElBQUksS0FBSyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFhO1FBQ3RCLE9BQU8saUJBQWlCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCx3Q0FBd0M7SUFDeEMsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxVQUFVO1lBQ3JDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUM7WUFDakUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNULENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLFVBQVU7WUFDckMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQztZQUNoRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1QsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEdBQUc7Z0JBQzNCLFlBQVksRUFBRSxFQUFFO2dCQUNoQixlQUFlLEVBQUUsRUFBRTtnQkFDbkIsS0FBSyxFQUFFLEVBQUU7YUFDVixDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pGLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxJQUFJLENBQUM7UUFDbkYsQ0FBQztRQUVELE9BQU8saUJBQWlCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQVFELFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBRSxVQUFtQjtRQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQsdUJBQXVCO0lBRXZCLElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUM7SUFDakYsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsc0JBQXVCLENBQUM7UUFDekQsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUMsWUFBYSxDQUFDO1FBRTNELElBQUksZ0JBQWdCLEdBQUc7WUFDckIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1lBQ2hDLEtBQUssRUFBRSxFQUFFO1lBQ1QsS0FBSyxFQUFFLFNBQVM7WUFDaEIsSUFBSSxFQUFFLGtCQUFrQixDQUFDLElBQUk7WUFDN0IsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEtBQUssZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVU7WUFDckUsWUFBWSxFQUFFLFlBQVksQ0FBQyxHQUFHO1NBQy9CLENBQUM7UUFFRixPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBRXJDLE9BQU87WUFDTCxLQUFLLEVBQUUsRUFBRTtZQUNULEtBQUssRUFBRSxZQUFZLENBQUMsS0FBSztZQUN6QixJQUFJLEVBQUUsWUFBWSxDQUFDLElBQUk7WUFDdkIsWUFBWSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsc0JBQXVCLENBQUMsUUFBUTtZQUNuRSxZQUFZLEVBQUUsWUFBWSxDQUFDLEdBQUc7U0FDL0IsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ25GLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQzsrR0FsTFUsd0JBQXdCLG1EQXlCekIsaUJBQWlCO21HQXpCaEIsd0JBQXdCLDZJQVJ4QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUM7Z0JBQ3ZELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRiw4SEN0Q0gsd25GQXVFQTs7NEZEL0JhLHdCQUF3QjtrQkFacEMsU0FBUzsrQkFDRSxtQkFBbUIsYUFHbEI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUM7NEJBQ3ZELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzswQkEyQkUsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUFHLFFBQVE7eUNBeEJoQixPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBS2hCLGNBQWM7c0JBRGpCLEtBQUs7Z0JBVUksZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNtYXJ0RmlsZVVwbG9hZGVyIH0gZnJvbSAnLi4vLi4vLi4vc21hcnRmb3JtLmZvcm0tbW9kZWwnO1xyXG5pbXBvcnQgeyBTbWFydFN0eWxlVXRpbGl0eSB9IGZyb20gJy4uLy4uLy4uLy4uL3ZpZXctY29udGV4dC91dGlsaXR5L3NtYXJ0LXN0eWxlLXV0aWxpdHknO1xyXG5pbXBvcnQge1xyXG4gIEljb25Qb3NpdGlvbixcclxuICBVaUFjdGlvbixcclxuICBVaUFjdGlvbkJ1dHRvblR5cGUsXHJcbiAgVWlBY3Rpb25EZXNjcmlwdG9yLFxyXG4gIFVpQWN0aW9uVXBsb2FkRGVzY3JpcHRvcixcclxufSBmcm9tICcuLi8uLi8uLi8uLi92aWV3LWNvbnRleHQvYXBpL21vZGVsL21vZGVscyc7XHJcbmltcG9ydCB7XHJcbiAgQ09NUE9ORU5UX0xJQlJBUlksXHJcbiAgQ29tcG9uZW50TGlicmFyeSxcclxufSBmcm9tICcuLi8uLi8uLi8uLi92aWV3LWNvbnRleHQvdXRpbGl0eS9jb21wb25lbnRMaWJyYXJ5JztcclxuaW1wb3J0IHsgVWlBY3Rpb25Ub29sYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vdmlldy1jb250ZXh0L3NtYXJ0LXVpLWFjdGlvbi91aS1hY3Rpb24tdG9vbGJhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVcGxvYWRXaWRnZXRVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uL3ZpZXctY29udGV4dC9zbWFydC11aS1hY3Rpb24vY29tcG9uZW50cy91cGxvYWQtd2lkZ2V0L3VwbG9hZC13aWRnZXQudXRpbHMnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NtYXJ0LWZpbGUtZWRpdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc21hcnQtZmlsZS1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9zbWFydC1maWxlLWVkaXRvci5jb21wb25lbnQuY3NzJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNtYXJ0RmlsZUVkaXRvckNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnRGaWxlRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIEBWaWV3Q2hpbGQoJ3Rvb2xiYXInKSB0b29sYmFyITogVWlBY3Rpb25Ub29sYmFyQ29tcG9uZW50O1xyXG5cclxuICBwcml2YXRlIF93aWRnZXRJbnN0YW5jZSE6IFNtYXJ0RmlsZVVwbG9hZGVyO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCB3aWRnZXRJbnN0YW5jZSgpOiBTbWFydEZpbGVVcGxvYWRlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fd2lkZ2V0SW5zdGFuY2U7XHJcbiAgfVxyXG4gIHNldCB3aWRnZXRJbnN0YW5jZSh2YWx1ZTogU21hcnRGaWxlVXBsb2FkZXIpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLmNsb25lKHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSB1cGxvYWRGaWxlc0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBmaWxlczogYW55W107XHJcbiAgICB1aUFjdGlvbjogVWlBY3Rpb247XHJcbiAgICB1cGxvYWREZXNjcmlwdG9yPzogVWlBY3Rpb25VcGxvYWREZXNjcmlwdG9yO1xyXG4gIH0+KCk7XHJcblxyXG4gIGZpbGVUb0NoYW5nZT86IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBASW5qZWN0KENPTVBPTkVOVF9MSUJSQVJZKSBAT3B0aW9uYWwoKSBwdWJsaWMgY29tcExpYj86IENvbXBvbmVudExpYnJhcnlcclxuICApIHt9XHJcblxyXG4gIHByaXZhdGUgY2xvbmUodmFsdWU6IFNtYXJ0RmlsZVVwbG9hZGVyKSB7XHJcbiAgICB0aGlzLl93aWRnZXRJbnN0YW5jZSA9XHJcbiAgICAgIHR5cGVvZiBzdHJ1Y3R1cmVkQ2xvbmUgPT09ICdmdW5jdGlvbidcclxuICAgICAgICA/IHN0cnVjdHVyZWRDbG9uZSh2YWx1ZSlcclxuICAgICAgICA6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuX3dpZGdldEluc3RhbmNlLmZpbGVVcGxvYWRlclByb3BlcnRpZXM/LnVuZG9JY29uKSB7XHJcbiAgICAgIHRoaXMuX3dpZGdldEluc3RhbmNlLmZpbGVVcGxvYWRlclByb3BlcnRpZXMgPSB7XHJcbiAgICAgICAgLi4uKHRoaXMuX3dpZGdldEluc3RhbmNlLmZpbGVVcGxvYWRlclByb3BlcnRpZXMgPz8ge30pLFxyXG4gICAgICAgIHVuZG9JY29uOiB7IGlkZW50aWZpZXI6ICd1bmRvJyB9LFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghZXZlbnQuZmlsZXMgfHwgZXZlbnQuZmlsZXMubGVuZ3RoID09IDApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHByb3BzID0gdGhpcy5fd2lkZ2V0SW5zdGFuY2UuZmlsZVVwbG9hZGVyUHJvcGVydGllcyE7XHJcbiAgICBjb25zdCB1aUFjdGlvbiA9IHRoaXMuZmlsZVRvQ2hhbmdlXHJcbiAgICAgID8gcHJvcHMuY2hhbmdlQWN0aW9uID8/IHByb3BzLnVwbG9hZEFjdGlvblxyXG4gICAgICA6IHByb3BzLnVwbG9hZEFjdGlvbjtcclxuXHJcbiAgICB0aGlzLnVwbG9hZEZpbGVzRXZlbnQuZW1pdCh7XHJcbiAgICAgIGZpbGVzOiBldmVudC5maWxlcyxcclxuICAgICAgdWlBY3Rpb246IHVpQWN0aW9uISxcclxuICAgICAgdXBsb2FkRGVzY3JpcHRvcjogZXZlbnQudXBsb2FkRGVzY3JpcHRvcixcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5fd2lkZ2V0SW5zdGFuY2UudmFsdWUpO1xyXG4gICAgdGhpcy5maWxlVG9DaGFuZ2UgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2UoZmlsZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbGVUb0NoYW5nZSA9IGZpbGU7XHJcbiAgfVxyXG5cclxuICBjYW5jZWxDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbGVUb0NoYW5nZSA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGlzVHlwZVN1cHBvcnRlZCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISEodmFsdWUgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpICYmICdkYXRhVXJpJyBpbiB2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBmb3JtYXRTaXplKGJ5dGVzOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIFVwbG9hZFdpZGdldFV0aWxzLmZvcm1hdFNpemUoYnl0ZXMpO1xyXG4gIH1cclxuXHJcbiAgLy8gLS0tLSBTbWFydCBmb3JtIHdpZGdldCBmdW5jdGlvbnMgLS0tLVxyXG4gIGdldExhYmVsTmdDbGFzcygpOiB7IFtjbGFzc05hbWU6IHN0cmluZ106IGJvb2xlYW4gfSB7XHJcbiAgICByZXR1cm4gdGhpcy5fd2lkZ2V0SW5zdGFuY2U/LmxhYmVsU3R5bGVcclxuICAgICAgPyBTbWFydFN0eWxlVXRpbGl0eS5nZXROZ0NsYXNzZXModGhpcy5fd2lkZ2V0SW5zdGFuY2UubGFiZWxTdHlsZSlcclxuICAgICAgOiB7fTtcclxuICB9XHJcblxyXG4gIGdldExhYmVsU3R5bGUoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfSB7XHJcbiAgICByZXR1cm4gdGhpcy5fd2lkZ2V0SW5zdGFuY2U/LmxhYmVsU3R5bGVcclxuICAgICAgPyBTbWFydFN0eWxlVXRpbGl0eS5nZXROZ1N0eWxlcyh0aGlzLl93aWRnZXRJbnN0YW5jZS5sYWJlbFN0eWxlKVxyXG4gICAgICA6IHt9O1xyXG4gIH1cclxuXHJcbiAgZ2V0TmdDbGFzcygpOiB7IFtjbGFzc05hbWU6IHN0cmluZ106IGJvb2xlYW4gfSB7XHJcbiAgICByZXR1cm4gU21hcnRTdHlsZVV0aWxpdHkuZ2V0TmdDbGFzc2VzKHRoaXMuX3dpZGdldEluc3RhbmNlPy5zdHlsZSk7XHJcbiAgfVxyXG5cclxuICBnZXRTdHlsZSgpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB9IHtcclxuICAgIGlmICghdGhpcy5fd2lkZ2V0SW5zdGFuY2Uuc3R5bGUpIHtcclxuICAgICAgdGhpcy5fd2lkZ2V0SW5zdGFuY2Uuc3R5bGUgPSB7XHJcbiAgICAgICAgY2xhc3Nlc1RvQWRkOiBbXSxcclxuICAgICAgICBjbGFzc2VzVG9SZW1vdmU6IFtdLFxyXG4gICAgICAgIHN0eWxlOiB7fSxcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoISgnd2lkdGgnIGluIHRoaXMuX3dpZGdldEluc3RhbmNlLnN0eWxlLnN0eWxlKSAmJiAnbWluV2lkdGgnIGluIHRoaXMuX3dpZGdldEluc3RhbmNlKSB7XHJcbiAgICAgIHRoaXMuX3dpZGdldEluc3RhbmNlLnN0eWxlLnN0eWxlWyd3aWR0aCddID0gYCR7dGhpcy5fd2lkZ2V0SW5zdGFuY2UubWluV2lkdGh9cHhgO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBTbWFydFN0eWxlVXRpbGl0eS5nZXROZ1N0eWxlcyh0aGlzLl93aWRnZXRJbnN0YW5jZS5zdHlsZSk7XHJcbiAgfVxyXG5cclxuICAvLyAtLS0tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGltcGxlbWVudGF0aW9uIC0tLS1cclxuXHJcbiAgb25DaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge307XHJcbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XHJcbiAgaXNEaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX3dpZGdldEluc3RhbmNlKSB7XHJcbiAgICAgIHRoaXMuX3dpZGdldEluc3RhbmNlLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc0Rpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIC8vIC0tLS0gVUkgZ2V0dGVycyAtLS0tXHJcblxyXG4gIGdldCBmaWxlSWNvbigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tcExpYiA9PSBDb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcgPyAnZmlsZScgOiAnaW5zZXJ0X2RyaXZlX2ZpbGUnO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNoYW5nZUJ1dHRvbigpOiBVaUFjdGlvbkRlc2NyaXB0b3Ige1xyXG4gICAgdmFyIHByb3BzID0gdGhpcy5fd2lkZ2V0SW5zdGFuY2UuZmlsZVVwbG9hZGVyUHJvcGVydGllcyE7XHJcbiAgICB2YXIgYmFzZUFjdGlvbiA9IHByb3BzLmNoYW5nZUFjdGlvbiA/PyBwcm9wcy51cGxvYWRBY3Rpb24hO1xyXG5cclxuICAgIHZhciBjaGFuZ2VEZXNjcmlwdG9yID0ge1xyXG4gICAgICAuLi4oYmFzZUFjdGlvbi5kZXNjcmlwdG9yID8/IHt9KSxcclxuICAgICAgdGl0bGU6ICcnLFxyXG4gICAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gICAgICB0eXBlOiBVaUFjdGlvbkJ1dHRvblR5cGUuSUNPTixcclxuICAgICAgaWNvbjogdGhpcy5jb21wTGliID09PSBDb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcgPyAnc3luYycgOiAnc3luY19hbHQnLFxyXG4gICAgICBpY29uUG9zaXRpb246IEljb25Qb3NpdGlvbi5QUkUsXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBjaGFuZ2VEZXNjcmlwdG9yO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJlbW92ZUJ1dHRvbigpOiBVaUFjdGlvbkRlc2NyaXB0b3Ige1xyXG4gICAgdmFyIGNoYW5nZUJ1dHRvbiA9IHRoaXMuY2hhbmdlQnV0dG9uO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHRpdGxlOiAnJyxcclxuICAgICAgY29sb3I6IGNoYW5nZUJ1dHRvbi5jb2xvcixcclxuICAgICAgdHlwZTogY2hhbmdlQnV0dG9uLnR5cGUsXHJcbiAgICAgIGljb25SZXNvdXJjZTogdGhpcy5fd2lkZ2V0SW5zdGFuY2UuZmlsZVVwbG9hZGVyUHJvcGVydGllcyEudW5kb0ljb24sXHJcbiAgICAgIGljb25Qb3NpdGlvbjogSWNvblBvc2l0aW9uLlBSRSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBnZXQgZXJyb3JJY29uKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wTGliID09IENvbXBvbmVudExpYnJhcnkuUFJJTUVORyA/ICdleGNsYW1hdGlvbi1jaXJjbGUnIDogJ2Vycm9yJztcclxuICB9XHJcblxyXG4gIGdldCB0b29sYmFyQ29tcG9uZW50KCk6IFVpQWN0aW9uVG9vbGJhckNvbXBvbmVudCB7XHJcbiAgICByZXR1cm4gdGhpcy50b29sYmFyO1xyXG4gIH1cclxufVxyXG4iLCJAaWYgKHdpZGdldEluc3RhbmNlICYmIHdpZGdldEluc3RhbmNlLmZpbGVVcGxvYWRlclByb3BlcnRpZXMpIHtcclxuICA8aDRcclxuICAgICpuZ0lmPVwid2lkZ2V0SW5zdGFuY2Uuc2hvd0xhYmVsXCJcclxuICAgIGNsYXNzPVwibGFiZWxDb250YWluZXIge3sgd2lkZ2V0SW5zdGFuY2UuY3NzTGFiZWxDbGFzcyA/PyAnJyB9fVwiXHJcbiAgICBbbmdDbGFzc109XCJnZXRMYWJlbE5nQ2xhc3MoKVwiXHJcbiAgICBbbmdTdHlsZV09XCJnZXRMYWJlbFN0eWxlKClcIlxyXG4gID5cclxuICAgIHt7IHdpZGdldEluc3RhbmNlLmxhYmVsIH19XHJcbiAgPC9oND5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImZpbGVFZGl0b3JDb21wb25lbnRcIj5cclxuICAgIEBpZiAod2lkZ2V0SW5zdGFuY2UudmFsdWUgJiYgIWlzVHlwZVN1cHBvcnRlZCh3aWRnZXRJbnN0YW5jZS52YWx1ZSkpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImVycm9yTWVzc2FnZVwiPlxyXG4gICAgICAgIDxzbWFydC1pY29uIFtpY29uXT1cImVycm9ySWNvblwiIFtjb2xvcl09XCIndmFyKC0td2FybmluaWctY29sb3IpJ1wiPjwvc21hcnQtaWNvbj5cclxuICAgICAgICA8c3Bhbj4gVW5zdXBwb3J0ZWQgd2lkZ2V0SW5zdGFuY2UudmFsdWUgdHlwZSBmb3IgdGhpcyB3aWRnZXQuPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH0gQGVsc2UgaWYgKCF3aWRnZXRJbnN0YW5jZS52YWx1ZSB8fCBmaWxlVG9DaGFuZ2UpIHtcclxuICAgICAgPHNtYXJ0LXVwbG9hZC13aWRnZXRcclxuICAgICAgICBjbGFzcz1cIndpZGdldENvbnRlbnQge3sgd2lkZ2V0SW5zdGFuY2UuY3NzQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldE5nQ2xhc3MoKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0U3R5bGUoKVwiXHJcbiAgICAgICAgW3VwbG9hZERlc2NyaXB0b3JdPVwid2lkZ2V0SW5zdGFuY2UuZmlsZVVwbG9hZGVyUHJvcGVydGllcy51cGxvYWREZXNjcmlwdG9yIVwiXHJcbiAgICAgICAgW2lzTXVsdGlwbGVdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtpc0Rpc2FibGVkXT1cIndpZGdldEluc3RhbmNlLmlzRGlzYWJsZWRcIlxyXG4gICAgICAgICh1cGxvYWRGaWxlc0V2ZW50KT1cInVwbG9hZCgkZXZlbnQpXCJcclxuICAgICAgLz5cclxuICAgIH1cclxuXHJcbiAgICA8ZGl2XHJcbiAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWRXaWRnZXQ6IHdpZGdldEluc3RhbmNlLmlzRGlzYWJsZWQgfVwiXHJcbiAgICAgIGNsYXNzPVwidXBsb2FkZWRGaWxlQ29udGFpbmVyXCJcclxuICAgICAgW3N0eWxlLmRpc3BsYXldPVwiXHJcbiAgICAgICAgd2lkZ2V0SW5zdGFuY2UudmFsdWUgJiYgaXNUeXBlU3VwcG9ydGVkKHdpZGdldEluc3RhbmNlLnZhbHVlKSA/ICdibG9jaycgOiAnbm9uZSdcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZGVkRmlsZVwiPlxyXG4gICAgICAgIDxzbWFydC1pY29uIGNsYXNzPVwidXBsb2FkZWRGaWxlSWNvblwiIFtpY29uXT1cImZpbGVJY29uXCI+PC9zbWFydC1pY29uPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZURhdGFcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlRGF0YUNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGVOYW1lXCI+e3sgd2lkZ2V0SW5zdGFuY2UudmFsdWU/LmZpbGVOYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGVTaXplXCI+e3sgZm9ybWF0U2l6ZSh3aWRnZXRJbnN0YW5jZS52YWx1ZT8uc2l6ZSkgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbGVBY3Rpb25zXCI+XHJcbiAgICAgICAgICA8c21hcnQtdWktYWN0aW9uLXRvb2xiYXJcclxuICAgICAgICAgICAgW2lkXT1cIndpZGdldEluc3RhbmNlLnRvb2xiYXJJZFwiXHJcbiAgICAgICAgICAgICN0b29sYmFyXHJcbiAgICAgICAgICA+PC9zbWFydC11aS1hY3Rpb24tdG9vbGJhcj5cclxuXHJcbiAgICAgICAgICBAaWYgKCFmaWxlVG9DaGFuZ2UpIHtcclxuICAgICAgICAgICAgPHVpLWFjdGlvbi1idXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImNoYW5nZUJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgKGFjdGlvbkNsaWNrKT1cImNoYW5nZSh3aWRnZXRJbnN0YW5jZS52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ3aWRnZXRJbnN0YW5jZS5pc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgICBbZGVzY3JpcHRvcl09XCJjaGFuZ2VCdXR0b25cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvdWktYWN0aW9uLWJ1dHRvbj5cclxuICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICA8dWktYWN0aW9uLWJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicmVtb3ZlSWNvblwiXHJcbiAgICAgICAgICAgICAgKGFjdGlvbkNsaWNrKT1cImNhbmNlbENoYW5nZSgpXCJcclxuICAgICAgICAgICAgICBbZGVzY3JpcHRvcl09XCJyZW1vdmVCdXR0b25cIlxyXG4gICAgICAgICAgICA+PC91aS1hY3Rpb24tYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG59XHJcbiJdfQ==
@@ -141,7 +141,7 @@ export class SmartMultiFileEditorComponent {
141
141
  useExisting: forwardRef(() => SmartMultiFileEditorComponent),
142
142
  multi: true,
143
143
  },
144
- ], viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }], ngImport: i0, template: "@if (widgetInstance && widgetInstance.multiFileUploaderProperties) {\r\n <h4\r\n *ngIf=\"widgetInstance.showLabel\"\r\n class=\"labelContainer {{ widgetInstance.cssLabelClass ?? '' }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ widgetInstance.label }}\r\n </h4>\r\n <smart-ui-action-toolbar\r\n [id]=\"widgetInstance.toolbarId\"\r\n #toolbar\r\n [style]=\"{ display: 'none' }\"\r\n ></smart-ui-action-toolbar>\r\n\r\n <div class=\"fileEditorComponent\">\r\n @if (widgetInstance.value && !isTypeSupported(widgetInstance.value)) {\r\n <div class=\"errorMessage\">\r\n <smart-icon [icon]=\"errorIcon\" [color]=\"'var(--warninig-color)'\"></smart-icon>\r\n <span> Unsupported widgetInstance.value type for this widget.</span>\r\n </div>\r\n } @else {\r\n <smart-upload-widget\r\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n [uploadDescriptor]=\"widgetInstance.multiFileUploaderProperties.uploadDescriptor!\"\r\n [isMultiple]=\"true\"\r\n [isDisabled]=\"widgetInstance.isDisabled\"\r\n (uploadFilesEvent)=\"upload($event)\"\r\n />\r\n }\r\n\r\n <div\r\n [ngClass]=\"{ disabledWidget: widgetInstance.isDisabled }\"\r\n class=\"uploadedFileContainer\"\r\n [style.display]=\"\r\n widgetInstance.value && isTypeSupported(widgetInstance.value) ? 'block' : 'none'\r\n \"\r\n >\r\n <div class=\"scrollable\">\r\n <div class=\"uploadedFile\" *ngFor=\"let file of widgetInstance.value; let i = index\">\r\n <smart-icon class=\"uploadedFileIcon\" [icon]=\"fileIcon\"></smart-icon>\r\n\r\n <div class=\"fileData\">\r\n <div class=\"fileDataContainer\">\r\n <span class=\"fileName\">{{ file?.fileName }}</span>\r\n <span class=\"fileSize\">{{ formatSize(file?.size) }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"fileActions\">\r\n @if (toolbarComponent && toolbarComponent.uiActionModels) {\r\n <file-editor-toolbar\r\n [id]=\"widgetInstance.toolbarId\"\r\n [dataUri]=\"file.dataUri\"\r\n [uiActionModels]=\"toolbarComponent.uiActionModels\"\r\n ></file-editor-toolbar>\r\n }\r\n <smart-icon\r\n class=\"downloadIcon\"\r\n icon=\"download\"\r\n (click)=\"downloadFile(file.dataUri)\"\r\n ></smart-icon>\r\n <smart-icon\r\n class=\"removeIcon\"\r\n [icon]=\"removeIcon\"\r\n (click)=\"deleteFile(file.dataUri)\"\r\n ></smart-icon>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem;width:100%}.fileEditorComponent{border:2px dashed var(--border-color);border-radius:var(--def-border-radius);overflow:hidden}.fileEditorComponent ::ng-deep smartfileuploader ::ng-deep .container{border:unset;border-radius:unset}.uploadedFileContainer{display:flex;flex-direction:column;border-top:1px solid #e0e0e0}.uploadedFile{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;padding:1rem;gap:1rem}.scrollable{max-height:30vh;overflow-y:auto}.scrollable>div:not(:last-child){border-bottom:1px solid #e0e0e0}.fileSize{display:flex;flex-direction:row;font-size:smaller}.fileData{flex:1;display:flex;flex-direction:column}.fileDataContainer{display:flex;flex-direction:column;justify-content:flex-end;width:fit-content}.fileActions{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.fileActions ::ng-deep button{border:unset}.fileActions ::ng-deep button:hover{border:unset}.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}.removeIcon ::ng-deep mat-icon,.downloadIcon ::ng-deep mat-icon{font-size:2rem}.removeIcon ::ng-deep mat-icon:hover,.downloadIcon ::ng-deep mat-icon:hover{cursor:pointer}smart-icon{display:flex}smart-icon ::ng-deep mat-icon{font-size:3rem;width:unset;height:unset}.uploadedFileIcon{width:3rem;display:flex;justify-content:center}:host ::ng-deep .p-fileupload-content{border:unset;border-radius:var(--def-border-radius)}smart-icon ::ng-deep .pi{font-size:2rem!important}.fileEditorComponent:has(::ng-deep .errorMessage){border-color:var(--warninig-color)}.errorMessage{padding:1rem;font-size:1.5rem;color:var(--warninig-color);display:flex;flex-direction:row;align-items:center;gap:1rem}:host ::ng-deep .disabledWidget ::ng-deep .changeButton *,:host ::ng-deep .disabledWidget ::ng-deep .fileData *{opacity:.7}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i3.UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "scrollOnWrap", "toolbarPropertes"] }, { kind: "component", type: i4.FileEditorToolbarComponent, selector: "file-editor-toolbar", inputs: ["dataUri"], outputs: ["actionEvent"] }, { kind: "component", type: i5.UploadWidgetComponent, selector: "smart-upload-widget", inputs: ["uploadDescriptor", "isMultiple", "isDisabled"], outputs: ["uploadFilesEvent"] }] }); }
144
+ ], viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }], ngImport: i0, template: "@if (widgetInstance && widgetInstance.multiFileUploaderProperties) {\r\n <h4\r\n *ngIf=\"widgetInstance.showLabel\"\r\n class=\"labelContainer {{ widgetInstance.cssLabelClass ?? '' }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ widgetInstance.label }}\r\n </h4>\r\n <smart-ui-action-toolbar\r\n [id]=\"widgetInstance.toolbarId\"\r\n #toolbar\r\n [style]=\"{ display: 'none' }\"\r\n ></smart-ui-action-toolbar>\r\n\r\n <div class=\"fileEditorComponent\">\r\n @if (widgetInstance.value && !isTypeSupported(widgetInstance.value)) {\r\n <div class=\"errorMessage\">\r\n <smart-icon [icon]=\"errorIcon\" [color]=\"'var(--warninig-color)'\"></smart-icon>\r\n <span> Unsupported widgetInstance.value type for this widget.</span>\r\n </div>\r\n } @else {\r\n <smart-upload-widget\r\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n [uploadDescriptor]=\"widgetInstance.multiFileUploaderProperties.uploadDescriptor!\"\r\n [isMultiple]=\"true\"\r\n [isDisabled]=\"widgetInstance.isDisabled\"\r\n (uploadFilesEvent)=\"upload($event)\"\r\n />\r\n }\r\n\r\n <div\r\n [ngClass]=\"{ disabledWidget: widgetInstance.isDisabled }\"\r\n class=\"uploadedFileContainer\"\r\n [style.display]=\"\r\n widgetInstance.value && isTypeSupported(widgetInstance.value) ? 'block' : 'none'\r\n \"\r\n >\r\n <div class=\"scrollable\">\r\n <div class=\"uploadedFile\" *ngFor=\"let file of widgetInstance.value; let i = index\">\r\n <smart-icon class=\"uploadedFileIcon\" [icon]=\"fileIcon\"></smart-icon>\r\n\r\n <div class=\"fileData\">\r\n <div class=\"fileDataContainer\">\r\n <span class=\"fileName\">{{ file?.fileName }}</span>\r\n <span class=\"fileSize\">{{ formatSize(file?.size) }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"fileActions\">\r\n @if (toolbarComponent && toolbarComponent.uiActionModels) {\r\n <file-editor-toolbar\r\n [id]=\"widgetInstance.toolbarId\"\r\n [dataUri]=\"file.dataUri\"\r\n [uiActionModels]=\"toolbarComponent.uiActionModels\"\r\n ></file-editor-toolbar>\r\n }\r\n <smart-icon\r\n class=\"downloadIcon\"\r\n icon=\"download\"\r\n (click)=\"downloadFile(file.dataUri)\"\r\n ></smart-icon>\r\n <smart-icon\r\n class=\"removeIcon\"\r\n [icon]=\"removeIcon\"\r\n (click)=\"!isDisabled && deleteFile(file.dataUri)\"\r\n ></smart-icon>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem;width:100%}.fileEditorComponent{border:2px dashed var(--border-color);border-radius:var(--def-border-radius);overflow:hidden}.fileEditorComponent ::ng-deep smartfileuploader ::ng-deep .container{border:unset;border-radius:unset}.uploadedFileContainer{display:flex;flex-direction:column;border-top:1px solid #e0e0e0}.uploadedFile{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;padding:1rem;gap:1rem}.scrollable{max-height:30vh;overflow-y:auto}.scrollable>div:not(:last-child){border-bottom:1px solid #e0e0e0}.fileSize{display:flex;flex-direction:row;font-size:smaller}.fileData{flex:1;display:flex;flex-direction:column}.fileDataContainer{display:flex;flex-direction:column;justify-content:flex-end;width:fit-content}.fileActions{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.fileActions ::ng-deep button{border:unset}.fileActions ::ng-deep button:hover{border:unset}.removeIcon ::ng-deep i,.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}.removeIcon ::ng-deep .pi,.downloadIcon ::ng-deep .pi{font-size:1.5rem!important}.removeIcon ::ng-deep mat-icon,.downloadIcon ::ng-deep mat-icon{font-size:2rem}.removeIcon:hover,.downloadIcon:hover{cursor:pointer}smart-icon{display:flex;align-items:center}smart-icon ::ng-deep mat-icon{font-size:3rem;width:unset;height:unset}.uploadedFileIcon{width:3rem;display:flex;justify-content:center}:host ::ng-deep .p-fileupload-content{border:unset;border-radius:var(--def-border-radius)}smart-icon ::ng-deep .pi{font-size:2rem!important}.fileEditorComponent:has(::ng-deep .errorMessage){border-color:var(--warninig-color)}.errorMessage{padding:1rem;font-size:1.5rem;color:var(--warninig-color);display:flex;flex-direction:row;align-items:center;gap:1rem}:host ::ng-deep .disabledWidget ::ng-deep .changeButton *,:host ::ng-deep .disabledWidget ::ng-deep .removeIcon *{opacity:.4!important;pointer-events:none!important}:host ::ng-deep .disabledWidget ::ng-deep .changeButton:hover,:host ::ng-deep .disabledWidget ::ng-deep .removeIcon:hover{cursor:not-allowed}:host ::ng-deep smartfileuploader ::ng-deep .uploadedFile,:host ::ng-deep .p-fileupload-file{background:repeating-linear-gradient(45deg,#fafafa,#fafafa 6px,#f1f1f1 6px 12px)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i3.UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "scrollOnWrap", "toolbarPropertes"] }, { kind: "component", type: i4.FileEditorToolbarComponent, selector: "file-editor-toolbar", inputs: ["dataUri"], outputs: ["actionEvent"] }, { kind: "component", type: i5.UploadWidgetComponent, selector: "smart-upload-widget", inputs: ["uploadDescriptor", "isMultiple", "isDisabled"], outputs: ["uploadFilesEvent"] }] }); }
145
145
  }
146
146
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartMultiFileEditorComponent, decorators: [{
147
147
  type: Component,
@@ -151,7 +151,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
151
151
  useExisting: forwardRef(() => SmartMultiFileEditorComponent),
152
152
  multi: true,
153
153
  },
154
- ], template: "@if (widgetInstance && widgetInstance.multiFileUploaderProperties) {\r\n <h4\r\n *ngIf=\"widgetInstance.showLabel\"\r\n class=\"labelContainer {{ widgetInstance.cssLabelClass ?? '' }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ widgetInstance.label }}\r\n </h4>\r\n <smart-ui-action-toolbar\r\n [id]=\"widgetInstance.toolbarId\"\r\n #toolbar\r\n [style]=\"{ display: 'none' }\"\r\n ></smart-ui-action-toolbar>\r\n\r\n <div class=\"fileEditorComponent\">\r\n @if (widgetInstance.value && !isTypeSupported(widgetInstance.value)) {\r\n <div class=\"errorMessage\">\r\n <smart-icon [icon]=\"errorIcon\" [color]=\"'var(--warninig-color)'\"></smart-icon>\r\n <span> Unsupported widgetInstance.value type for this widget.</span>\r\n </div>\r\n } @else {\r\n <smart-upload-widget\r\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n [uploadDescriptor]=\"widgetInstance.multiFileUploaderProperties.uploadDescriptor!\"\r\n [isMultiple]=\"true\"\r\n [isDisabled]=\"widgetInstance.isDisabled\"\r\n (uploadFilesEvent)=\"upload($event)\"\r\n />\r\n }\r\n\r\n <div\r\n [ngClass]=\"{ disabledWidget: widgetInstance.isDisabled }\"\r\n class=\"uploadedFileContainer\"\r\n [style.display]=\"\r\n widgetInstance.value && isTypeSupported(widgetInstance.value) ? 'block' : 'none'\r\n \"\r\n >\r\n <div class=\"scrollable\">\r\n <div class=\"uploadedFile\" *ngFor=\"let file of widgetInstance.value; let i = index\">\r\n <smart-icon class=\"uploadedFileIcon\" [icon]=\"fileIcon\"></smart-icon>\r\n\r\n <div class=\"fileData\">\r\n <div class=\"fileDataContainer\">\r\n <span class=\"fileName\">{{ file?.fileName }}</span>\r\n <span class=\"fileSize\">{{ formatSize(file?.size) }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"fileActions\">\r\n @if (toolbarComponent && toolbarComponent.uiActionModels) {\r\n <file-editor-toolbar\r\n [id]=\"widgetInstance.toolbarId\"\r\n [dataUri]=\"file.dataUri\"\r\n [uiActionModels]=\"toolbarComponent.uiActionModels\"\r\n ></file-editor-toolbar>\r\n }\r\n <smart-icon\r\n class=\"downloadIcon\"\r\n icon=\"download\"\r\n (click)=\"downloadFile(file.dataUri)\"\r\n ></smart-icon>\r\n <smart-icon\r\n class=\"removeIcon\"\r\n [icon]=\"removeIcon\"\r\n (click)=\"deleteFile(file.dataUri)\"\r\n ></smart-icon>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem;width:100%}.fileEditorComponent{border:2px dashed var(--border-color);border-radius:var(--def-border-radius);overflow:hidden}.fileEditorComponent ::ng-deep smartfileuploader ::ng-deep .container{border:unset;border-radius:unset}.uploadedFileContainer{display:flex;flex-direction:column;border-top:1px solid #e0e0e0}.uploadedFile{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;padding:1rem;gap:1rem}.scrollable{max-height:30vh;overflow-y:auto}.scrollable>div:not(:last-child){border-bottom:1px solid #e0e0e0}.fileSize{display:flex;flex-direction:row;font-size:smaller}.fileData{flex:1;display:flex;flex-direction:column}.fileDataContainer{display:flex;flex-direction:column;justify-content:flex-end;width:fit-content}.fileActions{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.fileActions ::ng-deep button{border:unset}.fileActions ::ng-deep button:hover{border:unset}.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}.removeIcon ::ng-deep mat-icon,.downloadIcon ::ng-deep mat-icon{font-size:2rem}.removeIcon ::ng-deep mat-icon:hover,.downloadIcon ::ng-deep mat-icon:hover{cursor:pointer}smart-icon{display:flex}smart-icon ::ng-deep mat-icon{font-size:3rem;width:unset;height:unset}.uploadedFileIcon{width:3rem;display:flex;justify-content:center}:host ::ng-deep .p-fileupload-content{border:unset;border-radius:var(--def-border-radius)}smart-icon ::ng-deep .pi{font-size:2rem!important}.fileEditorComponent:has(::ng-deep .errorMessage){border-color:var(--warninig-color)}.errorMessage{padding:1rem;font-size:1.5rem;color:var(--warninig-color);display:flex;flex-direction:row;align-items:center;gap:1rem}:host ::ng-deep .disabledWidget ::ng-deep .changeButton *,:host ::ng-deep .disabledWidget ::ng-deep .fileData *{opacity:.7}\n"] }]
154
+ ], template: "@if (widgetInstance && widgetInstance.multiFileUploaderProperties) {\r\n <h4\r\n *ngIf=\"widgetInstance.showLabel\"\r\n class=\"labelContainer {{ widgetInstance.cssLabelClass ?? '' }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ widgetInstance.label }}\r\n </h4>\r\n <smart-ui-action-toolbar\r\n [id]=\"widgetInstance.toolbarId\"\r\n #toolbar\r\n [style]=\"{ display: 'none' }\"\r\n ></smart-ui-action-toolbar>\r\n\r\n <div class=\"fileEditorComponent\">\r\n @if (widgetInstance.value && !isTypeSupported(widgetInstance.value)) {\r\n <div class=\"errorMessage\">\r\n <smart-icon [icon]=\"errorIcon\" [color]=\"'var(--warninig-color)'\"></smart-icon>\r\n <span> Unsupported widgetInstance.value type for this widget.</span>\r\n </div>\r\n } @else {\r\n <smart-upload-widget\r\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n [uploadDescriptor]=\"widgetInstance.multiFileUploaderProperties.uploadDescriptor!\"\r\n [isMultiple]=\"true\"\r\n [isDisabled]=\"widgetInstance.isDisabled\"\r\n (uploadFilesEvent)=\"upload($event)\"\r\n />\r\n }\r\n\r\n <div\r\n [ngClass]=\"{ disabledWidget: widgetInstance.isDisabled }\"\r\n class=\"uploadedFileContainer\"\r\n [style.display]=\"\r\n widgetInstance.value && isTypeSupported(widgetInstance.value) ? 'block' : 'none'\r\n \"\r\n >\r\n <div class=\"scrollable\">\r\n <div class=\"uploadedFile\" *ngFor=\"let file of widgetInstance.value; let i = index\">\r\n <smart-icon class=\"uploadedFileIcon\" [icon]=\"fileIcon\"></smart-icon>\r\n\r\n <div class=\"fileData\">\r\n <div class=\"fileDataContainer\">\r\n <span class=\"fileName\">{{ file?.fileName }}</span>\r\n <span class=\"fileSize\">{{ formatSize(file?.size) }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"fileActions\">\r\n @if (toolbarComponent && toolbarComponent.uiActionModels) {\r\n <file-editor-toolbar\r\n [id]=\"widgetInstance.toolbarId\"\r\n [dataUri]=\"file.dataUri\"\r\n [uiActionModels]=\"toolbarComponent.uiActionModels\"\r\n ></file-editor-toolbar>\r\n }\r\n <smart-icon\r\n class=\"downloadIcon\"\r\n icon=\"download\"\r\n (click)=\"downloadFile(file.dataUri)\"\r\n ></smart-icon>\r\n <smart-icon\r\n class=\"removeIcon\"\r\n [icon]=\"removeIcon\"\r\n (click)=\"!isDisabled && deleteFile(file.dataUri)\"\r\n ></smart-icon>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem;width:100%}.fileEditorComponent{border:2px dashed var(--border-color);border-radius:var(--def-border-radius);overflow:hidden}.fileEditorComponent ::ng-deep smartfileuploader ::ng-deep .container{border:unset;border-radius:unset}.uploadedFileContainer{display:flex;flex-direction:column;border-top:1px solid #e0e0e0}.uploadedFile{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;padding:1rem;gap:1rem}.scrollable{max-height:30vh;overflow-y:auto}.scrollable>div:not(:last-child){border-bottom:1px solid #e0e0e0}.fileSize{display:flex;flex-direction:row;font-size:smaller}.fileData{flex:1;display:flex;flex-direction:column}.fileDataContainer{display:flex;flex-direction:column;justify-content:flex-end;width:fit-content}.fileActions{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.fileActions ::ng-deep button{border:unset}.fileActions ::ng-deep button:hover{border:unset}.removeIcon ::ng-deep i,.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}.removeIcon ::ng-deep .pi,.downloadIcon ::ng-deep .pi{font-size:1.5rem!important}.removeIcon ::ng-deep mat-icon,.downloadIcon ::ng-deep mat-icon{font-size:2rem}.removeIcon:hover,.downloadIcon:hover{cursor:pointer}smart-icon{display:flex;align-items:center}smart-icon ::ng-deep mat-icon{font-size:3rem;width:unset;height:unset}.uploadedFileIcon{width:3rem;display:flex;justify-content:center}:host ::ng-deep .p-fileupload-content{border:unset;border-radius:var(--def-border-radius)}smart-icon ::ng-deep .pi{font-size:2rem!important}.fileEditorComponent:has(::ng-deep .errorMessage){border-color:var(--warninig-color)}.errorMessage{padding:1rem;font-size:1.5rem;color:var(--warninig-color);display:flex;flex-direction:row;align-items:center;gap:1rem}:host ::ng-deep .disabledWidget ::ng-deep .changeButton *,:host ::ng-deep .disabledWidget ::ng-deep .removeIcon *{opacity:.4!important;pointer-events:none!important}:host ::ng-deep .disabledWidget ::ng-deep .changeButton:hover,:host ::ng-deep .disabledWidget ::ng-deep .removeIcon:hover{cursor:not-allowed}:host ::ng-deep smartfileuploader ::ng-deep .uploadedFile,:host ::ng-deep .p-fileupload-file{background:repeating-linear-gradient(45deg,#fafafa,#fafafa 6px,#f1f1f1 6px 12px)}\n"] }]
155
155
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i6.ComponentLibrary, decorators: [{
156
156
  type: Inject,
157
157
  args: [COMPONENT_LIBRARY]
@@ -167,4 +167,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
167
167
  }], fileEvent: [{
168
168
  type: Output
169
169
  }] } });
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtbXVsdGktZmlsZS1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZm9ybS93aWRnZXRzL2NvbXBvbmVudHMvc21hcnQtbXVsdGktZmlsZS1lZGl0b3Ivc21hcnQtbXVsdGktZmlsZS1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZm9ybS93aWRnZXRzL2NvbXBvbmVudHMvc21hcnQtbXVsdGktZmlsZS1lZGl0b3Ivc21hcnQtbXVsdGktZmlsZS1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFFTixTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFRekYsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixnQkFBZ0IsR0FDakIsTUFBTSxtREFBbUQsQ0FBQztBQUUzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1RkFBdUYsQ0FBQztBQUMxSCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBY3pFLE1BQU0sT0FBTyw2QkFBNkI7SUFLeEMsSUFDSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBQ0QsSUFBSSxjQUFjLENBQUMsS0FBNkI7UUFDOUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFD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QUFvQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDbkYsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDOytHQWpMVSw2QkFBNkIsbURBNEI5QixpQkFBaUI7bUdBNUJoQiw2QkFBNkIsMktBUjdCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztnQkFDNUQsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLDhIQ3hDSCxpMUZBMkVBOzs0RkRqQ2EsNkJBQTZCO2tCQVp6QyxTQUFTOytCQUNFLHlCQUF5QixhQUd4Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSw4QkFBOEIsQ0FBQzs0QkFDNUQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OzBCQThCRSxNQUFNOzJCQUFDLGlCQUFpQjs7MEJBQUcsUUFBUTt5Q0EzQmhCLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFLaEIsY0FBYztzQkFEakIsS0FBSztnQkFVSSxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBTUcsU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPcHRpb25hbCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNtYXJ0TXVsdGlGaWxlVXBsb2FkZXIgfSBmcm9tICcuLi8uLi8uLi9zbWFydGZvcm0uZm9ybS1tb2RlbCc7XHJcbmltcG9ydCB7IFNtYXJ0U3R5bGVVdGlsaXR5IH0gZnJvbSAnLi4vLi4vLi4vLi4vdmlldy1jb250ZXh0L3V0aWxpdHkvc21hcnQtc3R5bGUtdXRpbGl0eSc7XHJcbmltcG9ydCB7XHJcbiAgSWNvblBvc2l0aW9uLFxyXG4gIFVpQWN0aW9uLFxyXG4gIFVpQWN0aW9uQnV0dG9uVHlwZSxcclxuICBVaUFjdGlvbkRlc2NyaXB0b3IsXHJcbiAgVWlBY3Rpb25VcGxvYWREZXNjcmlwdG9yLFxyXG59IGZyb20gJy4uLy4uLy4uLy4uL3ZpZXctY29udGV4dC9hcGkvbW9kZWwvbW9kZWxzJztcclxuaW1wb3J0IHtcclxuICBDT01QT05FTlRfTElCUkFSWSxcclxuICBDb21wb25lbnRMaWJyYXJ5LFxyXG59IGZyb20gJy4uLy4uLy4uLy4uL3ZpZXctY29udGV4dC91dGlsaXR5L2NvbXBvbmVudExpYnJhcnknO1xyXG5pbXBvcnQgeyBVaUFjdGlvblRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL3VpLWFjdGlvbi10b29sYmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVwbG9hZFdpZGdldFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vLi4vdmlldy1jb250ZXh0L3NtYXJ0LXVpLWFjdGlvbi9jb21wb25lbnRzL3VwbG9hZC13aWRnZXQvdXBsb2FkLXdpZGdldC51dGlscyc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc21hcnQtbXVsdGktZmlsZS1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1tdWx0aS1maWxlLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3NtYXJ0LW11bHRpLWZpbGUtZWRpdG9yLmNvbXBvbmVudC5jc3MnLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU21hcnRNdWx0aUZpbGVFZGl0b3JDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0TXVsdGlGaWxlRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIEBWaWV3Q2hpbGQoJ3Rvb2xiYXInKSB0b29sYmFyITogVWlBY3Rpb25Ub29sYmFyQ29tcG9uZW50O1xyXG5cclxuICBwcml2YXRlIF93aWRnZXRJbnN0YW5jZSE6IFNtYXJ0TXVsdGlGaWxlVXBsb2FkZXI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHdpZGdldEluc3RhbmNlKCk6IFNtYXJ0TXVsdGlGaWxlVXBsb2FkZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dpZGdldEluc3RhbmNlO1xyXG4gIH1cclxuICBzZXQgd2lkZ2V0SW5zdGFuY2UodmFsdWU6IFNtYXJ0TXVsdGlGaWxlVXBsb2FkZXIpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLmNsb25lKHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSB1cGxvYWRGaWxlc0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBmaWxlczogYW55W107XHJcbiAgICB1aUFjdGlvbjogVWlBY3Rpb247XHJcbiAgICB1cGxvYWREZXNjcmlwdG9yPzogVWlBY3Rpb25VcGxvYWREZXNjcmlwdG9yO1xyXG4gIH0+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBmaWxlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIHVpQWN0aW9uOiBVaUFjdGlvbjtcclxuICAgIHVwbG9hZERlc2NyaXB0b3I/OiBVaUFjdGlvblVwbG9hZERlc2NyaXB0b3I7XHJcbiAgfT4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBASW5qZWN0KENPTVBPTkVOVF9MSUJSQVJZKSBAT3B0aW9uYWwoKSBwdWJsaWMgY29tcExpYj86IENvbXBvbmVudExpYnJhcnlcclxuICApIHt9XHJcblxyXG4gIHByaXZhdGUgY2xvbmUodmFsdWU6IFNtYXJ0TXVsdGlGaWxlVXBsb2FkZXIpIHtcclxuICAgIHRoaXMuX3dpZGdldEluc3RhbmNlID1cclxuICAgICAgdHlwZW9mIHN0cnVjdHVyZWRDbG9uZSA9PT0gJ2Z1bmN0aW9uJ1xyXG4gICAgICAgID8gc3RydWN0dXJlZENsb25lKHZhbHVlKVxyXG4gICAgICAgIDogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xyXG5cclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghZXZlbnQuZmlsZXMgfHwgZXZlbnQuZmlsZXMubGVuZ3RoID09IDApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBwcm9wcyA9IHRoaXMuX3dpZGdldEluc3RhbmNlLm11bHRpRmlsZVVwbG9hZGVyUHJvcGVydGllcyE7XHJcbiAgICBsZXQgdWlBY3Rpb24gPSBwcm9wcy51cGxvYWRBY3Rpb24hO1xyXG5cclxuICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgIC4uLnVpQWN0aW9uLnBhcmFtcyxcclxuICAgICAgaXNNdWx0aXBsZTogdHJ1ZSxcclxuICAgIH07XHJcbiAgICB1aUFjdGlvbi5wYXJhbXMgPSBwYXJhbXM7XHJcblxyXG4gICAgdGhpcy51cGxvYWRGaWxlc0V2ZW50LmVtaXQoe1xyXG4gICAgICBmaWxlczogZXZlbnQuZmlsZXMsXHJcbiAgICAgIHVpQWN0aW9uOiB1aUFjdGlvbixcclxuICAgICAgdXBsb2FkRGVzY3JpcHRvcjogZXZlbnQudXBsb2FkRGVzY3JpcHRvcixcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5fd2lkZ2V0SW5zdGFuY2UudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0RmlsZUFjdGlvbihhY3Rpb25Db2RlOiBzdHJpbmcgfCB1bmRlZmluZWQsIGRhdGFVcmk6IHN0cmluZykge1xyXG4gICAgY29uc3QgdWlBY3Rpb24gPSB7XHJcbiAgICAgIGNvZGU6IGFjdGlvbkNvZGUsXHJcbiAgICAgIG1vZGVsOiB0cnVlLFxyXG4gICAgICBwYXRoOiB0aGlzLl93aWRnZXRJbnN0YW5jZS5rZXksXHJcbiAgICAgIHBhcmFtczogeyBfZGF0YVVyaTogZGF0YVVyaSB9LFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmZpbGVFdmVudC5lbWl0KHtcclxuICAgICAgdWlBY3Rpb24sXHJcbiAgICAgIHVwbG9hZERlc2NyaXB0b3I6IHRoaXMuX3dpZGdldEluc3RhbmNlLm11bHRpRmlsZVVwbG9hZGVyUHJvcGVydGllcz8udXBsb2FkRGVzY3JpcHRvcixcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5fd2lkZ2V0SW5zdGFuY2UudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlRmlsZShkYXRhVXJpOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZW1pdEZpbGVBY3Rpb24oXHJcbiAgICAgIHRoaXMuX3dpZGdldEluc3RhbmNlLm11bHRpRmlsZVVwbG9hZGVyUHJvcGVydGllcz8ucmVtb3ZlQWN0aW9uQ29kZSA/PyAnZGVmYXVsdFJlbW92ZScsXHJcbiAgICAgIGRhdGFVcmlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZEZpbGUoZGF0YVVyaTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmVtaXRGaWxlQWN0aW9uKFxyXG4gICAgICB0aGlzLl93aWRnZXRJbnN0YW5jZS5tdWx0aUZpbGVVcGxvYWRlclByb3BlcnRpZXM/LmRvd25sb2FkQWN0aW9uQ29kZSA/PyAnZGVmYXVsdERvd25sb2FkJyxcclxuICAgICAgZGF0YVVyaVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlzVHlwZVN1cHBvcnRlZCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB2YWx1ZSA9PSBudWxsIHx8IChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5ldmVyeSgoaXRlbSkgPT4gaXRlbSAmJiAnZGF0YVVyaScgaW4gaXRlbSkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0U2l6ZShieXRlczogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBVcGxvYWRXaWRnZXRVdGlscy5mb3JtYXRTaXplKGJ5dGVzKTtcclxuICB9XHJcblxyXG4gIC8vIC0tLS0gU21hcnQgZm9ybSB3aWRnZXQgZnVuY3Rpb25zIC0tLS1cclxuICBnZXRMYWJlbE5nQ2xhc3MoKTogeyBbY2xhc3NOYW1lOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dpZGdldEluc3RhbmNlPy5sYWJlbFN0eWxlXHJcbiAgICAgID8gU21hcnRTdHlsZVV0aWxpdHkuZ2V0TmdDbGFzc2VzKHRoaXMuX3dpZGdldEluc3RhbmNlLmxhYmVsU3R5bGUpXHJcbiAgICAgIDoge307XHJcbiAgfVxyXG5cclxuICBnZXRMYWJlbFN0eWxlKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIH0ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dpZGdldEluc3RhbmNlPy5sYWJlbFN0eWxlXHJcbiAgICAgID8gU21hcnRTdHlsZVV0aWxpdHkuZ2V0TmdTdHlsZXModGhpcy5fd2lkZ2V0SW5zdGFuY2UubGFiZWxTdHlsZSlcclxuICAgICAgOiB7fTtcclxuICB9XHJcblxyXG4gIGdldE5nQ2xhc3MoKTogeyBbY2xhc3NOYW1lOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgcmV0dXJuIFNtYXJ0U3R5bGVVdGlsaXR5LmdldE5nQ2xhc3Nlcyh0aGlzLl93aWRnZXRJbnN0YW5jZT8uc3R5bGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3R5bGUoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfSB7XHJcbiAgICBpZiAoIXRoaXMuX3dpZGdldEluc3RhbmNlLnN0eWxlKSB7XHJcbiAgICAgIHRoaXMuX3dpZGdldEluc3RhbmNlLnN0eWxlID0ge1xyXG4gICAgICAgIGNsYXNzZXNUb0FkZDogW10sXHJcbiAgICAgICAgY2xhc3Nlc1RvUmVtb3ZlOiBbXSxcclxuICAgICAgICBzdHlsZToge30sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCEoJ3dpZHRoJyBpbiB0aGlzLl93aWRnZXRJbnN0YW5jZS5zdHlsZS5zdHlsZSkgJiYgJ21pbldpZHRoJyBpbiB0aGlzLl93aWRnZXRJbnN0YW5jZSkge1xyXG4gICAgICB0aGlzLl93aWRnZXRJbnN0YW5jZS5zdHlsZS5zdHlsZVsnd2lkdGgnXSA9IGAke3RoaXMuX3dpZGdldEluc3RhbmNlLm1pbldpZHRofXB4YDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gU21hcnRTdHlsZVV0aWxpdHkuZ2V0TmdTdHlsZXModGhpcy5fd2lkZ2V0SW5zdGFuY2Uuc3R5bGUpO1xyXG4gIH1cclxuXHJcbiAgLy8gLS0tLSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRhdGlvbiAtLS0tXHJcblxyXG4gIG9uQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHt9O1xyXG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xyXG4gIGlzRGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLl93aWRnZXRJbnN0YW5jZSkge1xyXG4gICAgICB0aGlzLl93aWRnZXRJbnN0YW5jZS52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuaXNEaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICAvLyAtLS0tIFVJIGdldHRlcnMgLS0tLVxyXG5cclxuICBnZXQgcmVtb3ZlSWNvbigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tcExpYiA9PSBDb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcgPyAndHJhc2gnIDogJ2RlbGV0ZSc7XHJcbiAgfVxyXG5cclxuICBnZXQgZmlsZUljb24oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNvbXBMaWIgPT0gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HID8gJ2ZpbGUnIDogJ2luc2VydF9kcml2ZV9maWxlJztcclxuICB9XHJcblxyXG4gIGdldCBlcnJvckljb24oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNvbXBMaWIgPT0gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HID8gJ2V4Y2xhbWF0aW9uLWNpcmNsZScgOiAnZXJyb3InO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRvb2xiYXJDb21wb25lbnQoKTogVWlBY3Rpb25Ub29sYmFyQ29tcG9uZW50IHtcclxuICAgIHJldHVybiB0aGlzLnRvb2xiYXI7XHJcbiAgfVxyXG59XHJcbiIsIkBpZiAod2lkZ2V0SW5zdGFuY2UgJiYgd2lkZ2V0SW5zdGFuY2UubXVsdGlGaWxlVXBsb2FkZXJQcm9wZXJ0aWVzKSB7XHJcbiAgPGg0XHJcbiAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiXHJcbiAgICBjbGFzcz1cImxhYmVsQ29udGFpbmVyIHt7IHdpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgW25nQ2xhc3NdPVwiZ2V0TGFiZWxOZ0NsYXNzKClcIlxyXG4gICAgW25nU3R5bGVdPVwiZ2V0TGFiZWxTdHlsZSgpXCJcclxuICA+XHJcbiAgICB7eyB3aWRnZXRJbnN0YW5jZS5sYWJlbCB9fVxyXG4gIDwvaDQ+XHJcbiAgPHNtYXJ0LXVpLWFjdGlvbi10b29sYmFyXHJcbiAgICBbaWRdPVwid2lkZ2V0SW5zdGFuY2UudG9vbGJhcklkXCJcclxuICAgICN0b29sYmFyXHJcbiAgICBbc3R5bGVdPVwieyBkaXNwbGF5OiAnbm9uZScgfVwiXHJcbiAgPjwvc21hcnQtdWktYWN0aW9uLXRvb2xiYXI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJmaWxlRWRpdG9yQ29tcG9uZW50XCI+XHJcbiAgICBAaWYgKHdpZGdldEluc3RhbmNlLnZhbHVlICYmICFpc1R5cGVTdXBwb3J0ZWQod2lkZ2V0SW5zdGFuY2UudmFsdWUpKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJlcnJvck1lc3NhZ2VcIj5cclxuICAgICAgICA8c21hcnQtaWNvbiBbaWNvbl09XCJlcnJvckljb25cIiBbY29sb3JdPVwiJ3ZhcigtLXdhcm5pbmlnLWNvbG9yKSdcIj48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgPHNwYW4+IFVuc3VwcG9ydGVkIHdpZGdldEluc3RhbmNlLnZhbHVlIHR5cGUgZm9yIHRoaXMgd2lkZ2V0Ljwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9IEBlbHNlIHtcclxuICAgICAgPHNtYXJ0LXVwbG9hZC13aWRnZXRcclxuICAgICAgICBjbGFzcz1cIndpZGdldENvbnRlbnQge3sgd2lkZ2V0SW5zdGFuY2UuY3NzQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldE5nQ2xhc3MoKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0U3R5bGUoKVwiXHJcbiAgICAgICAgW3VwbG9hZERlc2NyaXB0b3JdPVwid2lkZ2V0SW5zdGFuY2UubXVsdGlGaWxlVXBsb2FkZXJQcm9wZXJ0aWVzLnVwbG9hZERlc2NyaXB0b3IhXCJcclxuICAgICAgICBbaXNNdWx0aXBsZV09XCJ0cnVlXCJcclxuICAgICAgICBbaXNEaXNhYmxlZF09XCJ3aWRnZXRJbnN0YW5jZS5pc0Rpc2FibGVkXCJcclxuICAgICAgICAodXBsb2FkRmlsZXNFdmVudCk9XCJ1cGxvYWQoJGV2ZW50KVwiXHJcbiAgICAgIC8+XHJcbiAgICB9XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkV2lkZ2V0OiB3aWRnZXRJbnN0YW5jZS5pc0Rpc2FibGVkIH1cIlxyXG4gICAgICBjbGFzcz1cInVwbG9hZGVkRmlsZUNvbnRhaW5lclwiXHJcbiAgICAgIFtzdHlsZS5kaXNwbGF5XT1cIlxyXG4gICAgICAgIHdpZGdldEluc3RhbmNlLnZhbHVlICYmIGlzVHlwZVN1cHBvcnRlZCh3aWRnZXRJbnN0YW5jZS52YWx1ZSkgPyAnYmxvY2snIDogJ25vbmUnXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxhYmxlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZGVkRmlsZVwiICpuZ0Zvcj1cImxldCBmaWxlIG9mIHdpZGdldEluc3RhbmNlLnZhbHVlOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICA8c21hcnQtaWNvbiBjbGFzcz1cInVwbG9hZGVkRmlsZUljb25cIiBbaWNvbl09XCJmaWxlSWNvblwiPjwvc21hcnQtaWNvbj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZURhdGFcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGVEYXRhQ29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlTmFtZVwiPnt7IGZpbGU/LmZpbGVOYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZVNpemVcIj57eyBmb3JtYXRTaXplKGZpbGU/LnNpemUpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlQWN0aW9uc1wiPlxyXG4gICAgICAgICAgICBAaWYgKHRvb2xiYXJDb21wb25lbnQgJiYgdG9vbGJhckNvbXBvbmVudC51aUFjdGlvbk1vZGVscykge1xyXG4gICAgICAgICAgICAgIDxmaWxlLWVkaXRvci10b29sYmFyXHJcbiAgICAgICAgICAgICAgICBbaWRdPVwid2lkZ2V0SW5zdGFuY2UudG9vbGJhcklkXCJcclxuICAgICAgICAgICAgICAgIFtkYXRhVXJpXT1cImZpbGUuZGF0YVVyaVwiXHJcbiAgICAgICAgICAgICAgICBbdWlBY3Rpb25Nb2RlbHNdPVwidG9vbGJhckNvbXBvbmVudC51aUFjdGlvbk1vZGVsc1wiXHJcbiAgICAgICAgICAgICAgPjwvZmlsZS1lZGl0b3ItdG9vbGJhcj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8c21hcnQtaWNvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZG93bmxvYWRJY29uXCJcclxuICAgICAgICAgICAgICBpY29uPVwiZG93bmxvYWRcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZEZpbGUoZmlsZS5kYXRhVXJpKVwiXHJcbiAgICAgICAgICAgID48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJyZW1vdmVJY29uXCJcclxuICAgICAgICAgICAgICBbaWNvbl09XCJyZW1vdmVJY29uXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlRmlsZShmaWxlLmRhdGFVcmkpXCJcclxuICAgICAgICAgICAgPjwvc21hcnQtaWNvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG59XHJcbiJdfQ==
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtbXVsdGktZmlsZS1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZm9ybS93aWRnZXRzL2NvbXBvbmVudHMvc21hcnQtbXVsdGktZmlsZS1lZGl0b3Ivc21hcnQtbXVsdGktZmlsZS1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZm9ybS93aWRnZXRzL2NvbXBvbmVudHMvc21hcnQtbXVsdGktZmlsZS1lZGl0b3Ivc21hcnQtbXVsdGktZmlsZS1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFFTixTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFRekYsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixnQkFBZ0IsR0FDakIsTUFBTSxtREFBbUQsQ0FBQztBQUUzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1RkFBdUYsQ0FBQztBQUMxSCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBY3pFLE1BQU0sT0FBTyw2QkFBNkI7SUFLeEMsSUFDSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBQ0QsSUFBSSxjQUFjLENBQUMsS0FBNkI7UUFDOUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFhRCxZQUNVLEdBQXNCLEVBQ2dCLE9BQTBCO1FBRGhFLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ2dCLFlBQU8sR0FBUCxPQUFPLENBQW1CO1FBYmhFLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUl6QyxDQUFDO1FBRUssY0FBUyxHQUFHLElBQUksWUFBWSxFQUdsQyxDQUFDO1FBZ0hMLGdEQUFnRDtRQUVoRCxhQUFRLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUM5QixjQUFTLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQ3JCLGVBQVUsR0FBRyxLQUFLLENBQUM7SUEvR2hCLENBQUM7SUFFSSxLQUFLLENBQUMsS0FBNkI7UUFDekMsSUFBSSxDQUFDLGVBQWU7WUFDbEIsT0FBTyxlQUFlLEtBQUssVUFBVTtnQkFDbkMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUM7Z0JBQ3hCLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUV4QyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBVTtRQUNmLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzVDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQywyQkFBNEIsQ0FBQztRQUM5RCxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsWUFBYSxDQUFDO1FBRW5DLElBQUksTUFBTSxHQUFHO1lBQ1gsR0FBRyxRQUFRLENBQUMsTUFBTTtZQUNsQixVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDO1FBQ0YsUUFBUSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFFekIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztZQUN6QixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7WUFDbEIsUUFBUSxFQUFFLFFBQVE7WUFDbEIsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtTQUN6QyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVPLGNBQWMsQ0FBQyxVQUE4QixFQUFFLE9BQWU7UUFDcEUsTUFBTSxRQUFRLEdBQUc7WUFDZixJQUFJLEVBQUUsVUFBVTtZQUNoQixLQUFLLEVBQUUsSUFBSTtZQUNYLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUc7WUFDOUIsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRTtTQUM5QixDQUFDO1FBRUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDbEIsUUFBUTtZQUNSLGdCQUFnQixFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsMkJBQTJCLEVBQUUsZ0JBQWdCO1NBQ3JGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWU7UUFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FDakIsSUFBSSxDQUFDLGVBQWUsQ0FBQywyQkFBMkIsRUFBRSxnQkFBZ0IsSUFBSSxlQUFlLEVBQ3JGLE9BQU8sQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVksQ0FBQyxPQUFlO1FBQzFCLElBQUksQ0FBQyxjQUFjLENBQ2pCLElBQUksQ0FBQyxlQUFlLENBQUMsMkJBQTJCLEVBQUUsa0JBQWtCLElBQUksaUJBQWlCLEVBQ3pGLE9BQU8sQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFVO1FBQ3hCLE9BQU8sQ0FDTCxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQzVGLENBQUM7SUFDSixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWE7UUFDdEIsT0FBTyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLFVBQVU7WUFDckMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQztZQUNqRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1QsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsVUFBVTtZQUNyQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDO1lBQ2hFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDVCxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8saUJBQWlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssR0FBRztnQkFDM0IsWUFBWSxFQUFFLEVBQUU7Z0JBQ2hCLGVBQWUsRUFBRSxFQUFFO2dCQUNuQixLQUFLLEVBQUUsRUFBRTthQUNWLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLElBQUksQ0FBQztRQUNuRixDQUFDO1FBRUQsT0FBTyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBUUQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGdCQUFnQixDQUFFLFVBQW1CO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRCx1QkFBdUI7SUFFdkIsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDdkUsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUM7SUFDakYsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDbkYsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDOytHQWpMVSw2QkFBNkIsbURBNEI5QixpQkFBaUI7bUdBNUJoQiw2QkFBNkIsMktBUjdCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztnQkFDNUQsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLDhIQ3hDSCxnMkZBMkVBOzs0RkRqQ2EsNkJBQTZCO2tCQVp6QyxTQUFTOytCQUNFLHlCQUF5QixhQUd4Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSw4QkFBOEIsQ0FBQzs0QkFDNUQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OzBCQThCRSxNQUFNOzJCQUFDLGlCQUFpQjs7MEJBQUcsUUFBUTt5Q0EzQmhCLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFLaEIsY0FBYztzQkFEakIsS0FBSztnQkFVSSxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBTUcsU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPcHRpb25hbCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNtYXJ0TXVsdGlGaWxlVXBsb2FkZXIgfSBmcm9tICcuLi8uLi8uLi9zbWFydGZvcm0uZm9ybS1tb2RlbCc7XHJcbmltcG9ydCB7IFNtYXJ0U3R5bGVVdGlsaXR5IH0gZnJvbSAnLi4vLi4vLi4vLi4vdmlldy1jb250ZXh0L3V0aWxpdHkvc21hcnQtc3R5bGUtdXRpbGl0eSc7XHJcbmltcG9ydCB7XHJcbiAgSWNvblBvc2l0aW9uLFxyXG4gIFVpQWN0aW9uLFxyXG4gIFVpQWN0aW9uQnV0dG9uVHlwZSxcclxuICBVaUFjdGlvbkRlc2NyaXB0b3IsXHJcbiAgVWlBY3Rpb25VcGxvYWREZXNjcmlwdG9yLFxyXG59IGZyb20gJy4uLy4uLy4uLy4uL3ZpZXctY29udGV4dC9hcGkvbW9kZWwvbW9kZWxzJztcclxuaW1wb3J0IHtcclxuICBDT01QT05FTlRfTElCUkFSWSxcclxuICBDb21wb25lbnRMaWJyYXJ5LFxyXG59IGZyb20gJy4uLy4uLy4uLy4uL3ZpZXctY29udGV4dC91dGlsaXR5L2NvbXBvbmVudExpYnJhcnknO1xyXG5pbXBvcnQgeyBVaUFjdGlvblRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL3VpLWFjdGlvbi10b29sYmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVwbG9hZFdpZGdldFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vLi4vdmlldy1jb250ZXh0L3NtYXJ0LXVpLWFjdGlvbi9jb21wb25lbnRzL3VwbG9hZC13aWRnZXQvdXBsb2FkLXdpZGdldC51dGlscyc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc21hcnQtbXVsdGktZmlsZS1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1tdWx0aS1maWxlLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3NtYXJ0LW11bHRpLWZpbGUtZWRpdG9yLmNvbXBvbmVudC5jc3MnLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU21hcnRNdWx0aUZpbGVFZGl0b3JDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0TXVsdGlGaWxlRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIEBWaWV3Q2hpbGQoJ3Rvb2xiYXInKSB0b29sYmFyITogVWlBY3Rpb25Ub29sYmFyQ29tcG9uZW50O1xyXG5cclxuICBwcml2YXRlIF93aWRnZXRJbnN0YW5jZSE6IFNtYXJ0TXVsdGlGaWxlVXBsb2FkZXI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHdpZGdldEluc3RhbmNlKCk6IFNtYXJ0TXVsdGlGaWxlVXBsb2FkZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dpZGdldEluc3RhbmNlO1xyXG4gIH1cclxuICBzZXQgd2lkZ2V0SW5zdGFuY2UodmFsdWU6IFNtYXJ0TXVsdGlGaWxlVXBsb2FkZXIpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLmNsb25lKHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSB1cGxvYWRGaWxlc0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBmaWxlczogYW55W107XHJcbiAgICB1aUFjdGlvbjogVWlBY3Rpb247XHJcbiAgICB1cGxvYWREZXNjcmlwdG9yPzogVWlBY3Rpb25VcGxvYWREZXNjcmlwdG9yO1xyXG4gIH0+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBmaWxlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIHVpQWN0aW9uOiBVaUFjdGlvbjtcclxuICAgIHVwbG9hZERlc2NyaXB0b3I/OiBVaUFjdGlvblVwbG9hZERlc2NyaXB0b3I7XHJcbiAgfT4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBASW5qZWN0KENPTVBPTkVOVF9MSUJSQVJZKSBAT3B0aW9uYWwoKSBwdWJsaWMgY29tcExpYj86IENvbXBvbmVudExpYnJhcnlcclxuICApIHt9XHJcblxyXG4gIHByaXZhdGUgY2xvbmUodmFsdWU6IFNtYXJ0TXVsdGlGaWxlVXBsb2FkZXIpIHtcclxuICAgIHRoaXMuX3dpZGdldEluc3RhbmNlID1cclxuICAgICAgdHlwZW9mIHN0cnVjdHVyZWRDbG9uZSA9PT0gJ2Z1bmN0aW9uJ1xyXG4gICAgICAgID8gc3RydWN0dXJlZENsb25lKHZhbHVlKVxyXG4gICAgICAgIDogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xyXG5cclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghZXZlbnQuZmlsZXMgfHwgZXZlbnQuZmlsZXMubGVuZ3RoID09IDApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBwcm9wcyA9IHRoaXMuX3dpZGdldEluc3RhbmNlLm11bHRpRmlsZVVwbG9hZGVyUHJvcGVydGllcyE7XHJcbiAgICBsZXQgdWlBY3Rpb24gPSBwcm9wcy51cGxvYWRBY3Rpb24hO1xyXG5cclxuICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgIC4uLnVpQWN0aW9uLnBhcmFtcyxcclxuICAgICAgaXNNdWx0aXBsZTogdHJ1ZSxcclxuICAgIH07XHJcbiAgICB1aUFjdGlvbi5wYXJhbXMgPSBwYXJhbXM7XHJcblxyXG4gICAgdGhpcy51cGxvYWRGaWxlc0V2ZW50LmVtaXQoe1xyXG4gICAgICBmaWxlczogZXZlbnQuZmlsZXMsXHJcbiAgICAgIHVpQWN0aW9uOiB1aUFjdGlvbixcclxuICAgICAgdXBsb2FkRGVzY3JpcHRvcjogZXZlbnQudXBsb2FkRGVzY3JpcHRvcixcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5fd2lkZ2V0SW5zdGFuY2UudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0RmlsZUFjdGlvbihhY3Rpb25Db2RlOiBzdHJpbmcgfCB1bmRlZmluZWQsIGRhdGFVcmk6IHN0cmluZykge1xyXG4gICAgY29uc3QgdWlBY3Rpb24gPSB7XHJcbiAgICAgIGNvZGU6IGFjdGlvbkNvZGUsXHJcbiAgICAgIG1vZGVsOiB0cnVlLFxyXG4gICAgICBwYXRoOiB0aGlzLl93aWRnZXRJbnN0YW5jZS5rZXksXHJcbiAgICAgIHBhcmFtczogeyBfZGF0YVVyaTogZGF0YVVyaSB9LFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmZpbGVFdmVudC5lbWl0KHtcclxuICAgICAgdWlBY3Rpb24sXHJcbiAgICAgIHVwbG9hZERlc2NyaXB0b3I6IHRoaXMuX3dpZGdldEluc3RhbmNlLm11bHRpRmlsZVVwbG9hZGVyUHJvcGVydGllcz8udXBsb2FkRGVzY3JpcHRvcixcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5fd2lkZ2V0SW5zdGFuY2UudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlRmlsZShkYXRhVXJpOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZW1pdEZpbGVBY3Rpb24oXHJcbiAgICAgIHRoaXMuX3dpZGdldEluc3RhbmNlLm11bHRpRmlsZVVwbG9hZGVyUHJvcGVydGllcz8ucmVtb3ZlQWN0aW9uQ29kZSA/PyAnZGVmYXVsdFJlbW92ZScsXHJcbiAgICAgIGRhdGFVcmlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZEZpbGUoZGF0YVVyaTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmVtaXRGaWxlQWN0aW9uKFxyXG4gICAgICB0aGlzLl93aWRnZXRJbnN0YW5jZS5tdWx0aUZpbGVVcGxvYWRlclByb3BlcnRpZXM/LmRvd25sb2FkQWN0aW9uQ29kZSA/PyAnZGVmYXVsdERvd25sb2FkJyxcclxuICAgICAgZGF0YVVyaVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlzVHlwZVN1cHBvcnRlZCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB2YWx1ZSA9PSBudWxsIHx8IChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5ldmVyeSgoaXRlbSkgPT4gaXRlbSAmJiAnZGF0YVVyaScgaW4gaXRlbSkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0U2l6ZShieXRlczogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBVcGxvYWRXaWRnZXRVdGlscy5mb3JtYXRTaXplKGJ5dGVzKTtcclxuICB9XHJcblxyXG4gIC8vIC0tLS0gU21hcnQgZm9ybSB3aWRnZXQgZnVuY3Rpb25zIC0tLS1cclxuICBnZXRMYWJlbE5nQ2xhc3MoKTogeyBbY2xhc3NOYW1lOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dpZGdldEluc3RhbmNlPy5sYWJlbFN0eWxlXHJcbiAgICAgID8gU21hcnRTdHlsZVV0aWxpdHkuZ2V0TmdDbGFzc2VzKHRoaXMuX3dpZGdldEluc3RhbmNlLmxhYmVsU3R5bGUpXHJcbiAgICAgIDoge307XHJcbiAgfVxyXG5cclxuICBnZXRMYWJlbFN0eWxlKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIH0ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dpZGdldEluc3RhbmNlPy5sYWJlbFN0eWxlXHJcbiAgICAgID8gU21hcnRTdHlsZVV0aWxpdHkuZ2V0TmdTdHlsZXModGhpcy5fd2lkZ2V0SW5zdGFuY2UubGFiZWxTdHlsZSlcclxuICAgICAgOiB7fTtcclxuICB9XHJcblxyXG4gIGdldE5nQ2xhc3MoKTogeyBbY2xhc3NOYW1lOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgcmV0dXJuIFNtYXJ0U3R5bGVVdGlsaXR5LmdldE5nQ2xhc3Nlcyh0aGlzLl93aWRnZXRJbnN0YW5jZT8uc3R5bGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3R5bGUoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfSB7XHJcbiAgICBpZiAoIXRoaXMuX3dpZGdldEluc3RhbmNlLnN0eWxlKSB7XHJcbiAgICAgIHRoaXMuX3dpZGdldEluc3RhbmNlLnN0eWxlID0ge1xyXG4gICAgICAgIGNsYXNzZXNUb0FkZDogW10sXHJcbiAgICAgICAgY2xhc3Nlc1RvUmVtb3ZlOiBbXSxcclxuICAgICAgICBzdHlsZToge30sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCEoJ3dpZHRoJyBpbiB0aGlzLl93aWRnZXRJbnN0YW5jZS5zdHlsZS5zdHlsZSkgJiYgJ21pbldpZHRoJyBpbiB0aGlzLl93aWRnZXRJbnN0YW5jZSkge1xyXG4gICAgICB0aGlzLl93aWRnZXRJbnN0YW5jZS5zdHlsZS5zdHlsZVsnd2lkdGgnXSA9IGAke3RoaXMuX3dpZGdldEluc3RhbmNlLm1pbldpZHRofXB4YDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gU21hcnRTdHlsZVV0aWxpdHkuZ2V0TmdTdHlsZXModGhpcy5fd2lkZ2V0SW5zdGFuY2Uuc3R5bGUpO1xyXG4gIH1cclxuXHJcbiAgLy8gLS0tLSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRhdGlvbiAtLS0tXHJcblxyXG4gIG9uQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHt9O1xyXG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xyXG4gIGlzRGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLl93aWRnZXRJbnN0YW5jZSkge1xyXG4gICAgICB0aGlzLl93aWRnZXRJbnN0YW5jZS52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuaXNEaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICAvLyAtLS0tIFVJIGdldHRlcnMgLS0tLVxyXG5cclxuICBnZXQgcmVtb3ZlSWNvbigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tcExpYiA9PSBDb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcgPyAndHJhc2gnIDogJ2RlbGV0ZSc7XHJcbiAgfVxyXG5cclxuICBnZXQgZmlsZUljb24oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNvbXBMaWIgPT0gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HID8gJ2ZpbGUnIDogJ2luc2VydF9kcml2ZV9maWxlJztcclxuICB9XHJcblxyXG4gIGdldCBlcnJvckljb24oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNvbXBMaWIgPT0gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HID8gJ2V4Y2xhbWF0aW9uLWNpcmNsZScgOiAnZXJyb3InO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRvb2xiYXJDb21wb25lbnQoKTogVWlBY3Rpb25Ub29sYmFyQ29tcG9uZW50IHtcclxuICAgIHJldHVybiB0aGlzLnRvb2xiYXI7XHJcbiAgfVxyXG59XHJcbiIsIkBpZiAod2lkZ2V0SW5zdGFuY2UgJiYgd2lkZ2V0SW5zdGFuY2UubXVsdGlGaWxlVXBsb2FkZXJQcm9wZXJ0aWVzKSB7XHJcbiAgPGg0XHJcbiAgICAqbmdJZj1cIndpZGdldEluc3RhbmNlLnNob3dMYWJlbFwiXHJcbiAgICBjbGFzcz1cImxhYmVsQ29udGFpbmVyIHt7IHdpZGdldEluc3RhbmNlLmNzc0xhYmVsQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgW25nQ2xhc3NdPVwiZ2V0TGFiZWxOZ0NsYXNzKClcIlxyXG4gICAgW25nU3R5bGVdPVwiZ2V0TGFiZWxTdHlsZSgpXCJcclxuICA+XHJcbiAgICB7eyB3aWRnZXRJbnN0YW5jZS5sYWJlbCB9fVxyXG4gIDwvaDQ+XHJcbiAgPHNtYXJ0LXVpLWFjdGlvbi10b29sYmFyXHJcbiAgICBbaWRdPVwid2lkZ2V0SW5zdGFuY2UudG9vbGJhcklkXCJcclxuICAgICN0b29sYmFyXHJcbiAgICBbc3R5bGVdPVwieyBkaXNwbGF5OiAnbm9uZScgfVwiXHJcbiAgPjwvc21hcnQtdWktYWN0aW9uLXRvb2xiYXI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJmaWxlRWRpdG9yQ29tcG9uZW50XCI+XHJcbiAgICBAaWYgKHdpZGdldEluc3RhbmNlLnZhbHVlICYmICFpc1R5cGVTdXBwb3J0ZWQod2lkZ2V0SW5zdGFuY2UudmFsdWUpKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJlcnJvck1lc3NhZ2VcIj5cclxuICAgICAgICA8c21hcnQtaWNvbiBbaWNvbl09XCJlcnJvckljb25cIiBbY29sb3JdPVwiJ3ZhcigtLXdhcm5pbmlnLWNvbG9yKSdcIj48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgPHNwYW4+IFVuc3VwcG9ydGVkIHdpZGdldEluc3RhbmNlLnZhbHVlIHR5cGUgZm9yIHRoaXMgd2lkZ2V0Ljwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9IEBlbHNlIHtcclxuICAgICAgPHNtYXJ0LXVwbG9hZC13aWRnZXRcclxuICAgICAgICBjbGFzcz1cIndpZGdldENvbnRlbnQge3sgd2lkZ2V0SW5zdGFuY2UuY3NzQ2xhc3MgPz8gJycgfX1cIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldE5nQ2xhc3MoKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0U3R5bGUoKVwiXHJcbiAgICAgICAgW3VwbG9hZERlc2NyaXB0b3JdPVwid2lkZ2V0SW5zdGFuY2UubXVsdGlGaWxlVXBsb2FkZXJQcm9wZXJ0aWVzLnVwbG9hZERlc2NyaXB0b3IhXCJcclxuICAgICAgICBbaXNNdWx0aXBsZV09XCJ0cnVlXCJcclxuICAgICAgICBbaXNEaXNhYmxlZF09XCJ3aWRnZXRJbnN0YW5jZS5pc0Rpc2FibGVkXCJcclxuICAgICAgICAodXBsb2FkRmlsZXNFdmVudCk9XCJ1cGxvYWQoJGV2ZW50KVwiXHJcbiAgICAgIC8+XHJcbiAgICB9XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkV2lkZ2V0OiB3aWRnZXRJbnN0YW5jZS5pc0Rpc2FibGVkIH1cIlxyXG4gICAgICBjbGFzcz1cInVwbG9hZGVkRmlsZUNvbnRhaW5lclwiXHJcbiAgICAgIFtzdHlsZS5kaXNwbGF5XT1cIlxyXG4gICAgICAgIHdpZGdldEluc3RhbmNlLnZhbHVlICYmIGlzVHlwZVN1cHBvcnRlZCh3aWRnZXRJbnN0YW5jZS52YWx1ZSkgPyAnYmxvY2snIDogJ25vbmUnXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxhYmxlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZGVkRmlsZVwiICpuZ0Zvcj1cImxldCBmaWxlIG9mIHdpZGdldEluc3RhbmNlLnZhbHVlOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICA8c21hcnQtaWNvbiBjbGFzcz1cInVwbG9hZGVkRmlsZUljb25cIiBbaWNvbl09XCJmaWxlSWNvblwiPjwvc21hcnQtaWNvbj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZURhdGFcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGVEYXRhQ29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlTmFtZVwiPnt7IGZpbGU/LmZpbGVOYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZVNpemVcIj57eyBmb3JtYXRTaXplKGZpbGU/LnNpemUpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlQWN0aW9uc1wiPlxyXG4gICAgICAgICAgICBAaWYgKHRvb2xiYXJDb21wb25lbnQgJiYgdG9vbGJhckNvbXBvbmVudC51aUFjdGlvbk1vZGVscykge1xyXG4gICAgICAgICAgICAgIDxmaWxlLWVkaXRvci10b29sYmFyXHJcbiAgICAgICAgICAgICAgICBbaWRdPVwid2lkZ2V0SW5zdGFuY2UudG9vbGJhcklkXCJcclxuICAgICAgICAgICAgICAgIFtkYXRhVXJpXT1cImZpbGUuZGF0YVVyaVwiXHJcbiAgICAgICAgICAgICAgICBbdWlBY3Rpb25Nb2RlbHNdPVwidG9vbGJhckNvbXBvbmVudC51aUFjdGlvbk1vZGVsc1wiXHJcbiAgICAgICAgICAgICAgPjwvZmlsZS1lZGl0b3ItdG9vbGJhcj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8c21hcnQtaWNvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZG93bmxvYWRJY29uXCJcclxuICAgICAgICAgICAgICBpY29uPVwiZG93bmxvYWRcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZEZpbGUoZmlsZS5kYXRhVXJpKVwiXHJcbiAgICAgICAgICAgID48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJyZW1vdmVJY29uXCJcclxuICAgICAgICAgICAgICBbaWNvbl09XCJyZW1vdmVJY29uXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiIWlzRGlzYWJsZWQgJiYgZGVsZXRlRmlsZShmaWxlLmRhdGFVcmkpXCJcclxuICAgICAgICAgICAgPjwvc21hcnQtaWNvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG59XHJcbiJdfQ==
@@ -1,4 +1,4 @@
1
1
  export * from './geoMap.service';
2
2
  import { GeoMapService } from './geoMap.service';
3
3
  export const APIS = [GeoMapService];
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtbWFwL2FwaS9hcGkvYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9nZW9NYXAuc2VydmljZSc7XG5pbXBvcnQgeyBHZW9NYXBTZXJ2aWNlIH0gZnJvbSAnLi9nZW9NYXAuc2VydmljZSc7XG5leHBvcnQgY29uc3QgQVBJUyA9IFtHZW9NYXBTZXJ2aWNlXTtcbiJdfQ==
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtbWFwL2FwaS9hcGkvYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9nZW9NYXAuc2VydmljZSc7XHJcbmltcG9ydCB7IEdlb01hcFNlcnZpY2UgfSBmcm9tICcuL2dlb01hcC5zZXJ2aWNlJztcclxuZXhwb3J0IGNvbnN0IEFQSVMgPSBbR2VvTWFwU2VydmljZV07XHJcbiJdfQ==