@colijnit/sharedcomponents 1.0.57 → 1.0.58

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 (157) hide show
  1. package/bundles/colijnit-sharedcomponents.umd.js +3555 -6
  2. package/bundles/colijnit-sharedcomponents.umd.js.map +1 -1
  3. package/colijnit-sharedcomponents.d.ts +17 -0
  4. package/colijnit-sharedcomponents.metadata.json +1 -1
  5. package/esm2015/colijnit-sharedcomponents.js +18 -1
  6. package/esm2015/lib/businessobject/build-images-and-documentation-result.js +2 -0
  7. package/esm2015/lib/businessobject/co-document-right.bo.js +3 -0
  8. package/esm2015/lib/businessobject/drag-drop-container-element.js +2 -0
  9. package/esm2015/lib/businessobject/drag-drop-container.js +7 -0
  10. package/esm2015/lib/components/activity-list/activity-list.component.js +130 -0
  11. package/esm2015/lib/components/activity-list/activity-list.module.js +24 -0
  12. package/esm2015/lib/components/app-file-dropzone/app-file-dropzone.component.js +47 -0
  13. package/esm2015/lib/components/app-file-dropzone/app-file-dropzone.module.js +20 -0
  14. package/esm2015/lib/components/file-upload/file-upload.component.js +189 -0
  15. package/esm2015/lib/components/file-upload/file-upload.module.js +25 -0
  16. package/esm2015/lib/components/file-upload-popup/file-upload-popup.component.js +397 -0
  17. package/esm2015/lib/components/file-upload-popup/file-upload-popup.module.js +30 -0
  18. package/esm2015/lib/components/files-upload/components/base-file-upload.component.js +469 -0
  19. package/esm2015/lib/components/files-upload/components/drag-drop-container.component.js +115 -0
  20. package/esm2015/lib/components/files-upload/files-upload.component.js +131 -0
  21. package/esm2015/lib/components/files-upload/files-upload.module.js +47 -0
  22. package/esm2015/lib/components/image-display/image-display.component.js +36 -0
  23. package/esm2015/lib/components/image-display/image-display.module.js +23 -0
  24. package/esm2015/lib/components/multi-property-toggler/multiple-property-toggler.component.js +89 -0
  25. package/esm2015/lib/components/multi-property-toggler/multiple-property-toggler.module.js +21 -0
  26. package/esm2015/lib/components/tile-renderer/tile-render.component.js +80 -0
  27. package/esm2015/lib/components/tile-renderer/tile-render.module.js +26 -0
  28. package/esm2015/lib/decorator/input-boolean.decorator.js +34 -0
  29. package/esm2015/lib/enum/document-email-report.enum.js +18 -0
  30. package/esm2015/lib/enum/domain-multiple-name.enum.js +13 -0
  31. package/esm2015/lib/enum/file-type.js +14 -0
  32. package/esm2015/lib/enum/files-upload-config-objects.js +3 -0
  33. package/esm2015/lib/enum/icon.enum.js +7 -1
  34. package/esm2015/lib/enum/internal-param.enum.js +38 -0
  35. package/esm2015/lib/enum/read-write-access-config-names.enum.js +2 -0
  36. package/esm2015/lib/enum/table-name.enum.js +86 -0
  37. package/esm2015/lib/enum/tag-category.enum.js +22 -0
  38. package/esm2015/lib/enum/tags-component-config-names.js +2 -0
  39. package/esm2015/lib/enum/tile-size-type.js +7 -0
  40. package/esm2015/lib/event/co-drag-event.js +2 -0
  41. package/esm2015/lib/event/co-drop-event.js +2 -0
  42. package/esm2015/lib/interface/key-value-pair.js +2 -0
  43. package/esm2015/lib/interface/operation-callback-simple-function.js +4 -0
  44. package/esm2015/lib/model/icon-svg.js +7 -1
  45. package/esm2015/lib/model/tag-tree-item.bo.js +16 -0
  46. package/esm2015/lib/model/tree-object.js +15 -0
  47. package/esm2015/lib/pipe/file-type-image.pipe.js +51 -0
  48. package/esm2015/lib/pipe/master-pipes.js +4 -2
  49. package/esm2015/lib/service/drag-drop.service.js +365 -0
  50. package/esm2015/lib/service/shared-connector.service.js +10 -1
  51. package/esm2015/lib/service/shared.service.js +2 -2
  52. package/esm2015/lib/utils/array-utils.js +202 -0
  53. package/esm2015/lib/utils/check-precision-and-scale-result.js +2 -0
  54. package/esm2015/lib/utils/check-within-stepped-bounds-result.js +2 -0
  55. package/esm2015/lib/utils/co-document-shared-field-logic.js +50 -0
  56. package/esm2015/lib/utils/enum-utils.js +128 -0
  57. package/esm2015/lib/utils/is-nill.function.js +5 -0
  58. package/esm2015/lib/utils/number-utils.js +390 -0
  59. package/esm2015/lib/utils/object-utils.js +278 -0
  60. package/esm2015/lib/utils/ref-code-utils.js +49 -0
  61. package/esm2015/lib/utils/string-utils.js +30 -1
  62. package/esm2015/public-api.js +5 -1
  63. package/fesm2015/colijnit-sharedcomponents.js +3528 -6
  64. package/fesm2015/colijnit-sharedcomponents.js.map +1 -1
  65. package/lib/businessobject/build-images-and-documentation-result.d.ts +5 -0
  66. package/lib/businessobject/co-document-right.bo.d.ts +6 -0
  67. package/lib/businessobject/drag-drop-container-element.d.ts +6 -0
  68. package/lib/businessobject/drag-drop-container.d.ts +6 -0
  69. package/lib/components/access/read-write-access.scss +25 -0
  70. package/lib/components/access/style/_layout.scss +23 -0
  71. package/lib/components/access/style/_material-definition.scss +12 -0
  72. package/lib/components/access/style/_theme.scss +4 -0
  73. package/lib/components/access/style/material.scss +4 -0
  74. package/lib/components/activity-list/activity-list.component.d.ts +33 -0
  75. package/lib/components/activity-list/activity-list.module.d.ts +2 -0
  76. package/lib/components/activity-list/style/_layout.scss +68 -0
  77. package/lib/components/activity-list/style/_material-definition.scss +0 -0
  78. package/lib/components/activity-list/style/_theme.scss +4 -0
  79. package/lib/components/activity-list/style/material.scss +4 -0
  80. package/lib/components/app-file-dropzone/app-file-dropzone.component.d.ts +14 -0
  81. package/lib/components/app-file-dropzone/app-file-dropzone.module.d.ts +2 -0
  82. package/lib/components/app-file-dropzone/style/_layout.scss +61 -0
  83. package/lib/components/app-file-dropzone/style/_material-definition.scss +0 -0
  84. package/lib/components/app-file-dropzone/style/_theme.scss +4 -0
  85. package/lib/components/app-file-dropzone/style/material.scss +4 -0
  86. package/lib/components/file-upload/file-upload.component.d.ts +42 -0
  87. package/lib/components/file-upload/file-upload.module.d.ts +2 -0
  88. package/lib/components/file-upload/style/_layout.scss +59 -0
  89. package/lib/components/file-upload/style/_material-definition.scss +2 -0
  90. package/lib/components/file-upload/style/_theme.scss +4 -0
  91. package/lib/components/file-upload/style/material.scss +4 -0
  92. package/lib/components/file-upload-popup/file-upload-popup.component.d.ts +75 -0
  93. package/lib/components/file-upload-popup/file-upload-popup.module.d.ts +2 -0
  94. package/lib/components/file-upload-popup/style/_layout.scss +48 -0
  95. package/lib/components/file-upload-popup/style/_material-definition.scss +2 -0
  96. package/lib/components/file-upload-popup/style/_theme.scss +5 -0
  97. package/lib/components/file-upload-popup/style/material.scss +4 -0
  98. package/lib/components/files-upload/components/base-file-upload.component.d.ts +98 -0
  99. package/lib/components/files-upload/components/drag-drop-container.component.d.ts +34 -0
  100. package/lib/components/files-upload/files-upload.component.d.ts +32 -0
  101. package/lib/components/files-upload/files-upload.module.d.ts +2 -0
  102. package/lib/components/files-upload/style/_layout.scss +49 -0
  103. package/lib/components/files-upload/style/_material-definition.scss +0 -0
  104. package/lib/components/files-upload/style/_theme.scss +5 -0
  105. package/lib/components/files-upload/style/material.scss +4 -0
  106. package/lib/components/image-display/image-display.component.d.ts +14 -0
  107. package/lib/components/image-display/image-display.module.d.ts +2 -0
  108. package/lib/components/image-display/style/_layout.scss +56 -0
  109. package/lib/components/image-display/style/_material-definition.scss +4 -0
  110. package/lib/components/image-display/style/_theme.scss +6 -0
  111. package/lib/components/image-display/style/material.scss +3 -0
  112. package/lib/components/multi-property-toggler/multiple-property-toggler.component.d.ts +27 -0
  113. package/lib/components/multi-property-toggler/multiple-property-toggler.module.d.ts +2 -0
  114. package/lib/components/multi-property-toggler/style/_layout.scss +24 -0
  115. package/lib/components/multi-property-toggler/style/_material-definition.scss +0 -0
  116. package/lib/components/multi-property-toggler/style/_theme.scss +4 -0
  117. package/lib/components/multi-property-toggler/style/material.scss +4 -0
  118. package/lib/components/tile-renderer/style/_layout.scss +90 -0
  119. package/lib/components/tile-renderer/style/_material-definition.scss +0 -0
  120. package/lib/components/tile-renderer/style/_theme.scss +4 -0
  121. package/lib/components/tile-renderer/style/material.scss +4 -0
  122. package/lib/components/tile-renderer/tile-render.component.d.ts +31 -0
  123. package/lib/components/tile-renderer/tile-render.module.d.ts +2 -0
  124. package/lib/decorator/input-boolean.decorator.d.ts +8 -0
  125. package/lib/enum/document-email-report.enum.d.ts +15 -0
  126. package/lib/enum/domain-multiple-name.enum.d.ts +10 -0
  127. package/lib/enum/file-type.d.ts +7 -0
  128. package/lib/enum/files-upload-config-objects.d.ts +22 -0
  129. package/lib/enum/icon.enum.d.ts +6 -0
  130. package/lib/enum/internal-param.enum.d.ts +34 -0
  131. package/lib/enum/read-write-access-config-names.enum.d.ts +4 -0
  132. package/lib/enum/table-name.enum.d.ts +84 -0
  133. package/lib/enum/tag-category.enum.d.ts +19 -0
  134. package/lib/enum/tags-component-config-names.d.ts +4 -0
  135. package/lib/enum/tile-size-type.d.ts +4 -0
  136. package/lib/event/co-drag-event.d.ts +5 -0
  137. package/lib/event/co-drop-event.d.ts +8 -0
  138. package/lib/interface/key-value-pair.d.ts +4 -0
  139. package/lib/interface/operation-callback-simple-function.d.ts +4 -0
  140. package/lib/model/tag-tree-item.bo.d.ts +18 -0
  141. package/lib/model/tree-object.d.ts +8 -0
  142. package/lib/pipe/file-type-image.pipe.d.ts +12 -0
  143. package/lib/service/drag-drop.service.d.ts +86 -0
  144. package/lib/service/shared-connector.service.d.ts +2 -0
  145. package/lib/style/_variables.scss +1 -1
  146. package/lib/utils/array-utils.d.ts +63 -0
  147. package/lib/utils/check-precision-and-scale-result.d.ts +4 -0
  148. package/lib/utils/check-within-stepped-bounds-result.d.ts +8 -0
  149. package/lib/utils/co-document-shared-field-logic.d.ts +7 -0
  150. package/lib/utils/enum-utils.d.ts +31 -0
  151. package/lib/utils/is-nill.function.d.ts +1 -0
  152. package/lib/utils/number-utils.d.ts +125 -0
  153. package/lib/utils/object-utils.d.ts +40 -0
  154. package/lib/utils/ref-code-utils.d.ts +10 -0
  155. package/lib/utils/string-utils.d.ts +16 -0
  156. package/package.json +1 -1
  157. package/public-api.d.ts +4 -0
@@ -0,0 +1,189 @@
1
+ import { __awaiter, __decorate } from "tslib";
2
+ import { Component, EventEmitter, HostBinding, Input, Output, ViewChild, ViewEncapsulation } from "@angular/core";
3
+ import { FormComponent, PromptService } from "@colijnit/corecomponents_v12";
4
+ import { Icon } from "../../enum/icon.enum";
5
+ import { InputBoolean } from "../../decorator/input-boolean.decorator";
6
+ import { FileTypeImagePipe } from "../../pipe/file-type-image.pipe";
7
+ import { IconCacheService } from "../../service/icon-cache.service";
8
+ // The GUI part of the files-upload component. Not a standalone component.
9
+ export class FileUploadComponent {
10
+ constructor(_promptService, _fileTypeImgPipe, iconService) {
11
+ this._promptService = _promptService;
12
+ this._fileTypeImgPipe = _fileTypeImgPipe;
13
+ this.iconService = iconService;
14
+ this.icons = Icon;
15
+ // Element clickable
16
+ this.link = false;
17
+ this.readonly = false;
18
+ // Is tile an 'adding' tile
19
+ this.isAddingTile = false;
20
+ // Set this parameter to false if clicking ok on the document edit popup does not save the document
21
+ // so that refreshing of content on file open works correctly
22
+ this.fileSavesOnPopupOkClick = true;
23
+ this.isEditable = false;
24
+ // Show a trashcan icon
25
+ this.showTrashCan = false;
26
+ // Show an image as placeholder
27
+ this.showImage = false;
28
+ this.customImageClick = false;
29
+ this.deleteClick = new EventEmitter();
30
+ this.editClick = new EventEmitter();
31
+ this.imageClick = new EventEmitter();
32
+ this.previewImage = "";
33
+ this._label = "";
34
+ }
35
+ // Input file to upload.
36
+ set file(document) {
37
+ this._file = document;
38
+ this._updatePreviewImage();
39
+ // we should produce a preview image from given document, but its contents might not yet have been loaded:
40
+ this._listenForDocumentBodyChanges();
41
+ }
42
+ get file() {
43
+ return this._file;
44
+ }
45
+ set label(value) {
46
+ this._label = value;
47
+ }
48
+ get label() {
49
+ if (this._file && this._file.description) {
50
+ return this._file.description;
51
+ }
52
+ else {
53
+ return this._label;
54
+ }
55
+ }
56
+ showClass() {
57
+ return true;
58
+ }
59
+ get isLink() {
60
+ return this.link;
61
+ }
62
+ ngOnDestroy() {
63
+ if (this._docBodyChangeSub) {
64
+ this._docBodyChangeSub.unsubscribe();
65
+ }
66
+ }
67
+ onDeleteClick() {
68
+ this.deleteClick.emit();
69
+ }
70
+ onImageClick() {
71
+ return __awaiter(this, void 0, void 0, function* () {
72
+ if (this.isAddingTile) {
73
+ return;
74
+ }
75
+ if (this.customImageClick) {
76
+ this.imageClick.next(this._file);
77
+ return;
78
+ }
79
+ //todo fix methods
80
+ //first download document body if it is stored in a private cdn directory
81
+ if (!this._file.documentBody) {
82
+ //await this._generalDal.getDocumentContent(this._file).then(documentBody => this._file.documentBody = documentBody);
83
+ }
84
+ if (this._file.isImageDocument()) { //preview image
85
+ this._promptService.showImage(this.file.documentBodyAsDataUri, "Preview");
86
+ }
87
+ else { //download document
88
+ try {
89
+ //FileUtils.DownloadFromDataUri(this._file.bodyAsDataUri, this._file.fileName);
90
+ }
91
+ catch (e) {
92
+ }
93
+ }
94
+ });
95
+ }
96
+ onPencilClick() {
97
+ return __awaiter(this, void 0, void 0, function* () {
98
+ // refresh file content if files are saved individually
99
+ if (this._file.hasId() && this.fileSavesOnPopupOkClick) {
100
+ let idForLink;
101
+ if (this._file.idForLink) {
102
+ idForLink = this._file.idForLink;
103
+ }
104
+ // Get most recent version of this file if it has an id and therefore has been saved in the db
105
+ //TODO fix fetch
106
+ // this._file = await this._generalDal.getDocumentFromTable(this._file.documentId);
107
+ //this._file.idForLink = idForLink; // Restore the idForLink
108
+ }
109
+ this.editClick.emit(this._file);
110
+ });
111
+ }
112
+ // updates this.previewImage when doc body changes
113
+ _listenForDocumentBodyChanges() {
114
+ if (this._file) {
115
+ if (this._docBodyChangeSub) {
116
+ this._docBodyChangeSub.unsubscribe();
117
+ }
118
+ // @ts-ignore
119
+ this._docBodyChangeSub = this._file.documentBodyChange.subscribe(() => {
120
+ this._updatePreviewImage();
121
+ });
122
+ }
123
+ }
124
+ _updatePreviewImage() {
125
+ if (this._file) {
126
+ if (this._file.isImageDocument()) {
127
+ this.previewImage = this._file.documentBodyAsDataUri;
128
+ if (this.previewImage === "") {
129
+ //TODO fix fetch
130
+ //this._generalDal.getDocumentContent(this._file).then(documentBody => this._file.documentBody = documentBody);
131
+ //this.previewImage = this._file.documentBody;
132
+ }
133
+ }
134
+ else {
135
+ this.previewImage = this._fileTypeImgPipe.transform(this.file.fileTypeInternal);
136
+ }
137
+ }
138
+ }
139
+ }
140
+ FileUploadComponent.decorators = [
141
+ { type: Component, args: [{
142
+ selector: "co-file-upload",
143
+ template: `
144
+ <co-tile-render [hideImageDisplayWhenNoImage]="true" [imageDataUri]="previewImage" [description]="label" (imageClick)="onImageClick()">
145
+ <ng-template #infoTemplate>
146
+ <co-button *ngIf="isEditable && !readonly" class="edit-file" [iconData]="iconService.getIcon(icons.Account)"
147
+ (click)="onPencilClick()"></co-button>
148
+ </ng-template>
149
+ <co-icon *ngIf="showTrashCan && !readonly" [iconData]="iconService.getIcon(icons.Trashbin)" class="trash" (click)="onDeleteClick()"></co-icon>
150
+ <co-icon tile-render-image-content *ngIf="icon" class="dark add-button" [icon]="icon"></co-icon>
151
+ </co-tile-render>
152
+ `,
153
+ encapsulation: ViewEncapsulation.None
154
+ },] }
155
+ ];
156
+ FileUploadComponent.ctorParameters = () => [
157
+ { type: PromptService },
158
+ { type: FileTypeImagePipe },
159
+ { type: IconCacheService }
160
+ ];
161
+ FileUploadComponent.propDecorators = {
162
+ form: [{ type: ViewChild, args: [FormComponent,] }],
163
+ file: [{ type: Input }],
164
+ icon: [{ type: Input }],
165
+ link: [{ type: Input }],
166
+ readonly: [{ type: Input }],
167
+ isAddingTile: [{ type: Input }],
168
+ fileSavesOnPopupOkClick: [{ type: Input }],
169
+ isEditable: [{ type: Input }],
170
+ label: [{ type: Input }],
171
+ showTrashCan: [{ type: Input }],
172
+ showImage: [{ type: Input }],
173
+ customImageClick: [{ type: Input }],
174
+ deleteClick: [{ type: Output }],
175
+ editClick: [{ type: Output }],
176
+ imageClick: [{ type: Output }],
177
+ showClass: [{ type: HostBinding, args: ['class.co-file-upload',] }],
178
+ isLink: [{ type: HostBinding, args: ["class.link",] }]
179
+ };
180
+ __decorate([
181
+ InputBoolean()
182
+ ], FileUploadComponent.prototype, "isAddingTile", void 0);
183
+ __decorate([
184
+ InputBoolean()
185
+ ], FileUploadComponent.prototype, "fileSavesOnPopupOkClick", void 0);
186
+ __decorate([
187
+ InputBoolean()
188
+ ], FileUploadComponent.prototype, "isEditable", void 0);
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxhQUFhLEVBQUUsYUFBYSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFFMUUsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQWlCbEUsMEVBQTBFO0FBQzFFLE1BQU0sT0FBTyxtQkFBbUI7SUE4RjVCLFlBQ1ksY0FBNkIsRUFDN0IsZ0JBQW1DLEVBQ3BDLFdBQTZCO1FBRjVCLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7UUFDcEMsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBaEd4QixVQUFLLEdBQWdCLElBQUksQ0FBQztRQXNCMUMsb0JBQW9CO1FBRWIsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUd0QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBRWpDLDJCQUEyQjtRQUdwQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUVyQyxtR0FBbUc7UUFDbkcsNkRBQTZEO1FBR3RELDRCQUF1QixHQUFZLElBQUksQ0FBQztRQUl4QyxlQUFVLEdB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QVMsU0FBQyxhQUFhO21CQUl2QixLQUFLO21CQWFMLEtBQUs7bUJBSUwsS0FBSzt1QkFHTCxLQUFLOzJCQUlMLEtBQUs7c0NBTUwsS0FBSzt5QkFJTCxLQUFLO29CQUlMLEtBQUs7MkJBY0wsS0FBSzt3QkFJTCxLQUFLOytCQUdMLEtBQUs7MEJBR0wsTUFBTTt3QkFHTixNQUFNO3lCQUdOLE1BQU07d0JBR04sV0FBVyxTQUFDLHNCQUFzQjtxQkFLbEMsV0FBVyxTQUFDLFlBQVk7O0FBbER6QjtJQURDLFlBQVksRUFBRTt5REFDc0I7QUFNckM7SUFEQyxZQUFZLEVBQUU7b0VBQ2dDO0FBSS9DO0lBREMsWUFBWSxFQUFFO3VEQUNvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0QmluZGluZyxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7Rm9ybUNvbXBvbmVudCwgUHJvbXB0U2VydmljZX0gZnJvbSBcIkBjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTJcIjtcclxuaW1wb3J0IHtDb0RvY3VtZW50fSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvY28tZG9jdW1lbnRcIjtcclxuaW1wb3J0IHtJY29ufSBmcm9tIFwiLi4vLi4vZW51bS9pY29uLmVudW1cIjtcclxuaW1wb3J0IHtJbnB1dEJvb2xlYW59IGZyb20gXCIuLi8uLi9kZWNvcmF0b3IvaW5wdXQtYm9vbGVhbi5kZWNvcmF0b3JcIjtcclxuaW1wb3J0IHtGaWxlVHlwZUltYWdlUGlwZX0gZnJvbSBcIi4uLy4uL3BpcGUvZmlsZS10eXBlLWltYWdlLnBpcGVcIjtcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImNvLWZpbGUtdXBsb2FkXCIsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxjby10aWxlLXJlbmRlciBbaGlkZUltYWdlRGlzcGxheVdoZW5Ob0ltYWdlXT1cInRydWVcIiBbaW1hZ2VEYXRhVXJpXT1cInByZXZpZXdJbWFnZVwiIFtkZXNjcmlwdGlvbl09XCJsYWJlbFwiIChpbWFnZUNsaWNrKT1cIm9uSW1hZ2VDbGljaygpXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaW5mb1RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPGNvLWJ1dHRvbiAqbmdJZj1cImlzRWRpdGFibGUgJiYgIXJlYWRvbmx5XCIgY2xhc3M9XCJlZGl0LWZpbGVcIiBbaWNvbkRhdGFdPVwiaWNvblNlcnZpY2UuZ2V0SWNvbihpY29ucy5BY2NvdW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25QZW5jaWxDbGljaygpXCI+PC9jby1idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDxjby1pY29uICpuZ0lmPVwic2hvd1RyYXNoQ2FuICYmICFyZWFkb25seVwiIFtpY29uRGF0YV09XCJpY29uU2VydmljZS5nZXRJY29uKGljb25zLlRyYXNoYmluKVwiIGNsYXNzPVwidHJhc2hcIiAoY2xpY2spPVwib25EZWxldGVDbGljaygpXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICA8Y28taWNvbiB0aWxlLXJlbmRlci1pbWFnZS1jb250ZW50ICpuZ0lmPVwiaWNvblwiIGNsYXNzPVwiZGFyayBhZGQtYnV0dG9uXCIgW2ljb25dPVwiaWNvblwiPjwvY28taWNvbj5cclxuICAgICAgICA8L2NvLXRpbGUtcmVuZGVyPlxyXG4gICAgYCxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbi8vIFRoZSBHVUkgcGFydCBvZiB0aGUgZmlsZXMtdXBsb2FkIGNvbXBvbmVudC4gTm90IGEgc3RhbmRhbG9uZSBjb21wb25lbnQuXHJcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICAgIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoRm9ybUNvbXBvbmVudClcclxuICAgIHB1YmxpYyBmb3JtOiBGb3JtQ29tcG9uZW50O1xyXG5cclxuICAgIC8vIElucHV0IGZpbGUgdG8gdXBsb2FkLlxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgZmlsZShkb2N1bWVudDogQ29Eb2N1bWVudCkge1xyXG4gICAgICAgIHRoaXMuX2ZpbGUgPSBkb2N1bWVudDtcclxuICAgICAgICB0aGlzLl91cGRhdGVQcmV2aWV3SW1hZ2UoKTtcclxuICAgICAgICAvLyB3ZSBzaG91bGQgcHJvZHVjZSBhIHByZXZpZXcgaW1hZ2UgZnJvbSBnaXZlbiBkb2N1bWVudCwgYnV0IGl0cyBjb250ZW50cyBtaWdodCBub3QgeWV0IGhhdmUgYmVlbiBsb2FkZWQ6XHJcbiAgICAgICAgdGhpcy5fbGlzdGVuRm9yRG9jdW1lbnRCb2R5Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZmlsZSgpOiBDb0RvY3VtZW50IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZmlsZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTaG93IGljb24gYXMgcGxhY2Vob2xkZXJcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaWNvbjogSWNvbjtcclxuXHJcbiAgICAvLyBFbGVtZW50IGNsaWNrYWJsZVxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBsaW5rOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8vIElzIHRpbGUgYW4gJ2FkZGluZycgdGlsZVxyXG4gICAgQElucHV0KClcclxuICAgIEBJbnB1dEJvb2xlYW4oKVxyXG4gICAgcHVibGljIGlzQWRkaW5nVGlsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8vIFNldCB0aGlzIHBhcmFtZXRlciB0byBmYWxzZSBpZiBjbGlja2luZyBvayBvbiB0aGUgZG9jdW1lbnQgZWRpdCBwb3B1cCBkb2VzIG5vdCBzYXZlIHRoZSBkb2N1bWVudFxyXG4gICAgLy8gc28gdGhhdCByZWZyZXNoaW5nIG9mIGNvbnRlbnQgb24gZmlsZSBvcGVuIHdvcmtzIGNvcnJlY3RseVxyXG4gICAgQElucHV0KClcclxuICAgIEBJbnB1dEJvb2xlYW4oKVxyXG4gICAgcHVibGljIGZpbGVTYXZlc09uUG9wdXBPa0NsaWNrOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgQElucHV0Qm9vbGVhbigpXHJcbiAgICBwdWJsaWMgaXNFZGl0YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgbGFiZWwodmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX2xhYmVsID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGxhYmVsKCk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2ZpbGUgJiYgdGhpcy5fZmlsZS5kZXNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZmlsZS5kZXNjcmlwdGlvbjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbGFiZWw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFNob3cgYSB0cmFzaGNhbiBpY29uXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNob3dUcmFzaENhbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8vIFNob3cgYW4gaW1hZ2UgYXMgcGxhY2Vob2xkZXJcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2hvd0ltYWdlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjdXN0b21JbWFnZUNsaWNrOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgZGVsZXRlQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgZWRpdENsaWNrOiBFdmVudEVtaXR0ZXI8Q29Eb2N1bWVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPENvRG9jdW1lbnQ+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgaW1hZ2VDbGljazogRXZlbnRFbWl0dGVyPENvRG9jdW1lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxDb0RvY3VtZW50PigpO1xyXG5cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuY28tZmlsZS11cGxvYWQnKVxyXG4gICAgcHVibGljIHNob3dDbGFzcygpOiBib29sZWFuIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKFwiY2xhc3MubGlua1wiKVxyXG4gICAgcHVibGljIGdldCBpc0xpbmsoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubGluaztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcHJldmlld0ltYWdlOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAgIHByaXZhdGUgX2ZpbGU6IENvRG9jdW1lbnQ7XHJcbiAgICBwcml2YXRlIF9kb2NCb2R5Q2hhbmdlU3ViOiBTdWJzY3JpcHRpb247XHJcbiAgICBwcml2YXRlIF9sYWJlbDogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIF9wcm9tcHRTZXJ2aWNlOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2ZpbGVUeXBlSW1nUGlwZTogRmlsZVR5cGVJbWFnZVBpcGUsXHJcbiAgICAgICAgcHVibGljIGljb25TZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgICAgIC8vcHJpdmF0ZSBfZ2VuZXJhbERhbDogR2VuZXJhbERhbFJlcG9zaXRvcnlcclxuICAgICAgICApIHtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fZG9jQm9keUNoYW5nZVN1Yikge1xyXG4gICAgICAgICAgICB0aGlzLl9kb2NCb2R5Q2hhbmdlU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkRlbGV0ZUNsaWNrKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGVsZXRlQ2xpY2suZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyAgb25JbWFnZUNsaWNrKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlzQWRkaW5nVGlsZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmN1c3RvbUltYWdlQ2xpY2spIHtcclxuICAgICAgICAgICAgdGhpcy5pbWFnZUNsaWNrLm5leHQodGhpcy5fZmlsZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy90b2RvIGZpeCBtZXRob2RzXHJcbiAgICAgICAgLy9maXJzdCBkb3dubG9hZCBkb2N1bWVudCBib2R5IGlmIGl0IGlzIHN0b3JlZCBpbiBhIHByaXZhdGUgY2RuIGRpcmVjdG9yeVxyXG4gICAgICAgIGlmICghdGhpcy5fZmlsZS5kb2N1bWVudEJvZHkpIHtcclxuICAgICAgICAgICAgLy9hd2FpdCB0aGlzLl9nZW5lcmFsRGFsLmdldERvY3VtZW50Q29udGVudCh0aGlzLl9maWxlKS50aGVuKGRvY3VtZW50Qm9keSA9PiB0aGlzLl9maWxlLmRvY3VtZW50Qm9keSA9IGRvY3VtZW50Qm9keSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLl9maWxlLmlzSW1hZ2VEb2N1bWVudCgpKSB7IC8vcHJldmlldyBpbWFnZVxyXG4gICAgICAgICAgICB0aGlzLl9wcm9tcHRTZXJ2aWNlLnNob3dJbWFnZSh0aGlzLmZpbGUuZG9jdW1lbnRCb2R5QXNEYXRhVXJpLCBcIlByZXZpZXdcIik7XHJcbiAgICAgICAgfSBlbHNlIHsgLy9kb3dubG9hZCBkb2N1bWVudFxyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgLy9GaWxlVXRpbHMuRG93bmxvYWRGcm9tRGF0YVVyaSh0aGlzLl9maWxlLmJvZHlBc0RhdGFVcmksIHRoaXMuX2ZpbGUuZmlsZU5hbWUpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBvblBlbmNpbENsaWNrKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIC8vIHJlZnJlc2ggZmlsZSBjb250ZW50IGlmIGZpbGVzIGFyZSBzYXZlZCBpbmRpdmlkdWFsbHlcclxuICAgICAgICBpZiAodGhpcy5fZmlsZS5oYXNJZCgpICYmIHRoaXMuZmlsZVNhdmVzT25Qb3B1cE9rQ2xpY2spIHtcclxuICAgICAgICAgICAgbGV0IGlkRm9yTGluazogbnVtYmVyO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fZmlsZS5pZEZvckxpbmspIHtcclxuICAgICAgICAgICAgICAgIGlkRm9yTGluayA9IHRoaXMuX2ZpbGUuaWRGb3JMaW5rO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIEdldCBtb3N0IHJlY2VudCB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBpZiBpdCBoYXMgYW4gaWQgYW5kIHRoZXJlZm9yZSBoYXMgYmVlbiBzYXZlZCBpbiB0aGUgZGJcclxuICAgICAgICAgICAgLy9UT0RPIGZpeCBmZXRjaFxyXG4gICAgICAgICAgIC8vIHRoaXMuX2ZpbGUgPSBhd2FpdCB0aGlzLl9nZW5lcmFsRGFsLmdldERvY3VtZW50RnJvbVRhYmxlKHRoaXMuX2ZpbGUuZG9jdW1lbnRJZCk7XHJcbiAgICAgICAgICAgIC8vdGhpcy5fZmlsZS5pZEZvckxpbmsgPSBpZEZvckxpbms7IC8vIFJlc3RvcmUgdGhlIGlkRm9yTGlua1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5lZGl0Q2xpY2suZW1pdCh0aGlzLl9maWxlKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB1cGRhdGVzIHRoaXMucHJldmlld0ltYWdlIHdoZW4gZG9jIGJvZHkgY2hhbmdlc1xyXG4gICAgcHJpdmF0ZSBfbGlzdGVuRm9yRG9jdW1lbnRCb2R5Q2hhbmdlcygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fZmlsZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fZG9jQm9keUNoYW5nZVN1Yikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZG9jQm9keUNoYW5nZVN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICB0aGlzLl9kb2NCb2R5Q2hhbmdlU3ViID0gdGhpcy5fZmlsZS5kb2N1bWVudEJvZHlDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVByZXZpZXdJbWFnZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfdXBkYXRlUHJldmlld0ltYWdlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLl9maWxlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9maWxlLmlzSW1hZ2VEb2N1bWVudCgpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXdJbWFnZSA9IHRoaXMuX2ZpbGUuZG9jdW1lbnRCb2R5QXNEYXRhVXJpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucHJldmlld0ltYWdlID09PSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9UT0RPIGZpeCBmZXRjaFxyXG4gICAgICAgICAgICAgICAgICAgIC8vdGhpcy5fZ2VuZXJhbERhbC5nZXREb2N1bWVudENvbnRlbnQodGhpcy5fZmlsZSkudGhlbihkb2N1bWVudEJvZHkgPT4gdGhpcy5fZmlsZS5kb2N1bWVudEJvZHkgPSBkb2N1bWVudEJvZHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vdGhpcy5wcmV2aWV3SW1hZ2UgPSB0aGlzLl9maWxlLmRvY3VtZW50Qm9keTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJldmlld0ltYWdlID0gdGhpcy5fZmlsZVR5cGVJbWdQaXBlLnRyYW5zZm9ybSh0aGlzLmZpbGUuZmlsZVR5cGVJbnRlcm5hbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -0,0 +1,25 @@
1
+ import { NgModule } from "@angular/core";
2
+ import { FileUploadComponent } from "./file-upload.component";
3
+ import { ButtonModule, IconModule } from "@colijnit/corecomponents_v12";
4
+ import { TileRenderModule } from "../tile-renderer/tile-render.module";
5
+ import { CommonModule } from "@angular/common";
6
+ export class FileUploadModule {
7
+ }
8
+ FileUploadModule.decorators = [
9
+ { type: NgModule, args: [{
10
+ imports: [
11
+ IconModule,
12
+ TileRenderModule,
13
+ CommonModule,
14
+ ButtonModule
15
+ ],
16
+ declarations: [
17
+ FileUploadComponent
18
+ ],
19
+ exports: [
20
+ FileUploadComponent
21
+ ],
22
+ providers: []
23
+ },] }
24
+ ];
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFtQjdDLE1BQU0sT0FBTyxnQkFBZ0I7OztZQWhCNUIsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxVQUFVO29CQUNWLGdCQUFnQjtvQkFDaEIsWUFBWTtvQkFDWixZQUFZO2lCQUNiO2dCQUNELFlBQVksRUFBRTtvQkFDWixtQkFBbUI7aUJBQ3BCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxtQkFBbUI7aUJBQ3BCO2dCQUNELFNBQVMsRUFBRSxFQUNWO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0ZpbGVVcGxvYWRDb21wb25lbnR9IGZyb20gXCIuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0J1dHRvbk1vZHVsZSwgSWNvbk1vZHVsZX0gZnJvbSBcIkBjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTJcIjtcclxuaW1wb3J0IHtUaWxlUmVuZGVyTW9kdWxlfSBmcm9tIFwiLi4vdGlsZS1yZW5kZXJlci90aWxlLXJlbmRlci5tb2R1bGVcIjtcclxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIEljb25Nb2R1bGUsXHJcbiAgICBUaWxlUmVuZGVyTW9kdWxlLFxyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgQnV0dG9uTW9kdWxlXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRNb2R1bGUge1xyXG5cclxufVxyXG4iXX0=