barsa-develop-components 2.2.2 → 2.2.4

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 (75) hide show
  1. package/esm2022/barsa-develop-components.mjs +5 -0
  2. package/esm2022/lib/accept-reject/accept-reject.component.mjs +68 -0
  3. package/esm2022/lib/avatar/avatar.component.mjs +29 -0
  4. package/esm2022/lib/barcode-format-pipe.mjs +25 -0
  5. package/esm2022/lib/barcode-reader/barcode-reader.component.mjs +62 -0
  6. package/esm2022/lib/barcode-reader-dialog/barcode-reader-dialog.component.mjs +82 -0
  7. package/esm2022/lib/barcode-reader-video/barcode-reader-video.component.mjs +66 -0
  8. package/esm2022/lib/barcode.service.mjs +330 -0
  9. package/esm2022/lib/barsa-develop-components.module.mjs +292 -0
  10. package/esm2022/lib/barsa-document-list-item/barsa-document-list-item.component.mjs +104 -0
  11. package/esm2022/lib/barsa-documents/barsa-documents.component.mjs +159 -0
  12. package/esm2022/lib/barsa-geographic-location/barsa-geographic-location.component.mjs +173 -0
  13. package/esm2022/lib/card-content-image-and-title/card-content-image-and-title.component.mjs +50 -0
  14. package/esm2022/lib/card-content-line-chart/card-content-line-chart.component.mjs +36 -0
  15. package/esm2022/lib/card-header-big-image-title-and-subtitle/card-header-big-image-title-and-subtitle.component.mjs +19 -0
  16. package/esm2022/lib/card-header-kpi/card-header-kpi.component.mjs +40 -0
  17. package/esm2022/lib/card-header-logo-title-subtitle/card-header-logo-title-subtitle.component.mjs +45 -0
  18. package/esm2022/lib/checkbox-button/checkbox-button.component.mjs +23 -0
  19. package/esm2022/lib/column-chip/column-chip.component.mjs +44 -0
  20. package/esm2022/lib/column-form-viewer/column-form-viewer.component.mjs +88 -0
  21. package/esm2022/lib/column-progressbar/column-progressbar.component.mjs +87 -0
  22. package/esm2022/lib/enum-info-micro-proccess-flow/enum-info-micro-proccess-flow.component.mjs +18 -0
  23. package/esm2022/lib/footer/footer.component.mjs +43 -0
  24. package/esm2022/lib/form-card/form-card.component.mjs +17 -0
  25. package/esm2022/lib/form-chart-content/form-chart-content.component.mjs +36 -0
  26. package/esm2022/lib/form-content-quick-view/form-content-quick-view.component.mjs +102 -0
  27. package/esm2022/lib/form-report-view/form-report-view.component.mjs +25 -0
  28. package/esm2022/lib/form-report-view-item/form-report-view-item.component.mjs +45 -0
  29. package/esm2022/lib/g4b-details/g4b-details.component.mjs +28 -0
  30. package/esm2022/lib/g4b-estelam/g4b-estelam.component.mjs +30 -0
  31. package/esm2022/lib/geographic-location/geographic-location.component.mjs +88 -0
  32. package/esm2022/lib/login-form/login-form.component.mjs +55 -0
  33. package/esm2022/lib/login-social-conncetions/login-social-conncetions.component.mjs +30 -0
  34. package/esm2022/lib/master-detail-card-form/master-detail-card-form.component.mjs +17 -0
  35. package/esm2022/lib/media-file-uploader/media-file-uploader.component.mjs +238 -0
  36. package/esm2022/lib/micro-proccess-flow/micro-proccess-flow.component.mjs +52 -0
  37. package/esm2022/lib/micro-process-flow-view/micro-process-flow-view.component.mjs +24 -0
  38. package/esm2022/lib/mo-info-micro-proccess-flow/mo-info-micro-proccess-flow.component.mjs +23 -0
  39. package/esm2022/lib/models/document-item.mjs +2 -0
  40. package/esm2022/lib/models/documents-setting.mjs +2 -0
  41. package/esm2022/lib/models/form-report-view-setting.mjs +2 -0
  42. package/esm2022/lib/models/index.mjs +8 -0
  43. package/esm2022/lib/models/micro-process-flow-view-setting.mjs +2 -0
  44. package/esm2022/lib/models/person.mjs +2 -0
  45. package/esm2022/lib/models/service-desk-view-of-services-setting.mjs +2 -0
  46. package/esm2022/lib/models/tab-process-view-setting.mjs +2 -0
  47. package/esm2022/lib/pipes/datasource-to-flow-item.mjs +23 -0
  48. package/esm2022/lib/pipes/index.mjs +3 -0
  49. package/esm2022/lib/pipes/mo-list-to-flow-item.pipe.mjs +23 -0
  50. package/esm2022/lib/query-string-form-observable/query-string-form-observable.component.mjs +37 -0
  51. package/esm2022/lib/query-string-observable/query-string-observable.component.mjs +22 -0
  52. package/esm2022/lib/report-button-view/report-button-view.component.mjs +37 -0
  53. package/esm2022/lib/report-line-chart-view/report-line-chart-view.component.mjs +12 -0
  54. package/esm2022/lib/report-tab-view/report-tab-view.component.mjs +27 -0
  55. package/esm2022/lib/resend-verification-code/resend-verification-code.component.mjs +62 -0
  56. package/esm2022/lib/service-desk-card-content-mojavezhay-akhz-shode/service-desk-card-content-mojavezhay-akhz-shode.component.mjs +28 -0
  57. package/esm2022/lib/service-desk-form-layout-content-mojavez/service-desk-form-layout-content-mojavez.component.mjs +110 -0
  58. package/esm2022/lib/service-desk-header/service-desk-header.component.mjs +238 -0
  59. package/esm2022/lib/service-desk-servcie-detail/service-desk-servcie-detail.component.mjs +142 -0
  60. package/esm2022/lib/service-desk-view-of-services/service-desk-view-of-services.component.mjs +37 -0
  61. package/esm2022/lib/setting-form/setting-form.component.mjs +64 -0
  62. package/esm2022/lib/subform-in-row-report/subform-in-row-report.component.mjs +73 -0
  63. package/esm2022/lib/tab-process-view/tab-process-view.component.mjs +48 -0
  64. package/esm2022/lib/table-view-vertical-columns/table-view-vertical-columns.component.mjs +16 -0
  65. package/esm2022/lib/timer-count-down/timer-count-down.component.mjs +104 -0
  66. package/esm2022/lib/token-report-view/token-report-view.component.mjs +27 -0
  67. package/esm2022/lib/ui-enum-segmented-button/ui-enum-segmented-button.component.mjs +25 -0
  68. package/esm2022/lib/ui-num-rate/ui-num-rate.component.mjs +29 -0
  69. package/esm2022/lib/ui-person/ui-person.component.mjs +160 -0
  70. package/esm2022/lib/ui-person/ui-person.pipe.mjs +41 -0
  71. package/esm2022/lib/ui-pictures-carousel/ui-pictures-carousel.component.mjs +17 -0
  72. package/esm2022/lib/ui-text-field-search/ui-text-field-search.component.mjs +42 -0
  73. package/esm2022/lib/ulv-context-menu-item-show-file-content/ulv-context-menu-item-show-file-content.component.mjs +69 -0
  74. package/esm2022/public-api.mjs +64 -0
  75. package/package.json +3 -1
@@ -0,0 +1,292 @@
1
+ import { CUSTOM_ELEMENTS_SCHEMA, NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
+ import { FundamentalNgxCoreModule } from '@fundamental-ngx/core';
5
+ import { BarsaNovinRayCoreModule, BaseModule } from 'barsa-novin-ray-core';
6
+ import { BarsaSapUiModule } from 'barsa-sap-ui';
7
+ import { BarsaTilesModule } from 'barsa-tiles';
8
+ import { BarsaEchartsModule } from 'barsa-echarts';
9
+ import { LoginFormComponent } from './login-form/login-form.component';
10
+ import { LoginSocialConncetionsComponent } from './login-social-conncetions/login-social-conncetions.component';
11
+ import { UiPersonComponent } from './ui-person/ui-person.component';
12
+ import { UiPersonPipe } from './ui-person/ui-person.pipe';
13
+ import { BarcodeReaderComponent } from './barcode-reader/barcode-reader.component';
14
+ import { BarcodeReaderDialogComponent } from './barcode-reader-dialog/barcode-reader-dialog.component';
15
+ import { BarcodeReaderVideoComponent } from './barcode-reader-video/barcode-reader-video.component';
16
+ import { UserMediaBaseService, WebBarcodeService } from './barcode.service';
17
+ import { SettingFormComponent } from './setting-form/setting-form.component';
18
+ import { MicroProcessFlowViewComponent } from './micro-process-flow-view/micro-process-flow-view.component';
19
+ import { UiEnumSegmentedButtonComponent } from './ui-enum-segmented-button/ui-enum-segmented-button.component';
20
+ import { TabProcessViewComponent } from './tab-process-view/tab-process-view.component';
21
+ import { UiTextFieldSearchComponent } from './ui-text-field-search/ui-text-field-search.component';
22
+ import { BarcodeFormatPipe } from './barcode-format-pipe';
23
+ import { ServiceDeskHeaderComponent } from './service-desk-header/service-desk-header.component';
24
+ import { CardContentImageAndTitleComponent } from './card-content-image-and-title/card-content-image-and-title.component';
25
+ import { CardHeaderLogoTitleSubtitleComponent } from './card-header-logo-title-subtitle/card-header-logo-title-subtitle.component';
26
+ import { FormContentQuickViewComponent } from './form-content-quick-view/form-content-quick-view.component';
27
+ import { ServiceDeskServcieDetailComponent } from './service-desk-servcie-detail/service-desk-servcie-detail.component';
28
+ import { ServiceDeskViewOfServicesComponent } from './service-desk-view-of-services/service-desk-view-of-services.component';
29
+ import { ServiceDeskCardContentMojavezhayAkhzShodeComponent } from './service-desk-card-content-mojavezhay-akhz-shode/service-desk-card-content-mojavezhay-akhz-shode.component';
30
+ import { CardHeaderBigImageTitleAndSubtitleComponent } from './card-header-big-image-title-and-subtitle/card-header-big-image-title-and-subtitle.component';
31
+ import { ServiceDeskFormLayoutContentMojavezComponent } from './service-desk-form-layout-content-mojavez/service-desk-form-layout-content-mojavez.component';
32
+ import { UlvContextMenuItemShowFileContentComponent } from './ulv-context-menu-item-show-file-content/ulv-context-menu-item-show-file-content.component';
33
+ import { ResendVerificationCodeComponent } from './resend-verification-code/resend-verification-code.component';
34
+ import { CheckboxButtonComponent } from './checkbox-button/checkbox-button.component';
35
+ import { ReportTabViewComponent } from './report-tab-view/report-tab-view.component';
36
+ import { ReportLineChartViewComponent } from './report-line-chart-view/report-line-chart-view.component';
37
+ import { CardHeaderKpiComponent } from './card-header-kpi/card-header-kpi.component';
38
+ import { CardContentLineChartComponent } from './card-content-line-chart/card-content-line-chart.component';
39
+ import { FormChartContentComponent } from './form-chart-content/form-chart-content.component';
40
+ import { TableViewVerticalColumnsComponent } from './table-view-vertical-columns/table-view-vertical-columns.component';
41
+ import { QueryStringObservableComponent } from './query-string-observable/query-string-observable.component';
42
+ import { QueryStringFormObservableComponent } from './query-string-form-observable/query-string-form-observable.component';
43
+ import { G4bDetailsComponent } from './g4b-details/g4b-details.component';
44
+ import { AvatarComponent } from './avatar/avatar.component';
45
+ import { G4bEstelamComponent } from './g4b-estelam/g4b-estelam.component';
46
+ import { TimerCountDownComponent } from './timer-count-down/timer-count-down.component';
47
+ import { MoInfoMicroProccessFlowComponent } from './mo-info-micro-proccess-flow/mo-info-micro-proccess-flow.component';
48
+ import { MicroProccessFlowComponent } from './micro-proccess-flow/micro-proccess-flow.component';
49
+ import { EnumInfoMicroProccessFlowComponent } from './enum-info-micro-proccess-flow/enum-info-micro-proccess-flow.component';
50
+ import { DataSourceToFlowItemPipe, MoListToFlowItemPipe } from './pipes';
51
+ import { UiPicturesCarouselComponent } from './ui-pictures-carousel/ui-pictures-carousel.component';
52
+ import { UiNumRateComponent } from './ui-num-rate/ui-num-rate.component';
53
+ import { MediaFileUploaderComponent } from './media-file-uploader/media-file-uploader.component';
54
+ import { SubformInRowReportComponent } from './subform-in-row-report/subform-in-row-report.component';
55
+ import { MasterDetailCardFormComponent } from './master-detail-card-form/master-detail-card-form.component';
56
+ import { ReportButtonViewComponent } from './report-button-view/report-button-view.component';
57
+ import { BarsaDocumentsComponent } from './barsa-documents/barsa-documents.component';
58
+ import { BarsaDocumentListItemComponent } from './barsa-document-list-item/barsa-document-list-item.component';
59
+ import { AcceptRejectComponent } from './accept-reject/accept-reject.component';
60
+ import { FooterComponent } from './footer/footer.component';
61
+ import { GeographicLocationComponent } from './geographic-location/geographic-location.component';
62
+ import { BarsaGeographicLocationComponent } from './barsa-geographic-location/barsa-geographic-location.component';
63
+ import { TokenReportViewComponent } from './token-report-view/token-report-view.component';
64
+ import { ColumnFormViewerComponent } from './column-form-viewer/column-form-viewer.component';
65
+ import { PlatformInputGroupModule } from '@fundamental-ngx/platform';
66
+ import { FormReportViewComponent } from './form-report-view/form-report-view.component';
67
+ import { FormReportViewItemComponent } from './form-report-view-item/form-report-view-item.component';
68
+ import { FormCardComponent } from './form-card/form-card.component';
69
+ import { ColumnProgressbarComponent } from './column-progressbar/column-progressbar.component';
70
+ import { ColumnChipComponent } from '../public-api';
71
+ import * as i0 from "@angular/core";
72
+ import * as i1 from "barsa-novin-ray-core";
73
+ const components = [
74
+ LoginFormComponent,
75
+ LoginSocialConncetionsComponent,
76
+ UiPersonComponent,
77
+ BarcodeReaderComponent,
78
+ BarcodeReaderDialogComponent,
79
+ BarcodeReaderVideoComponent,
80
+ SettingFormComponent,
81
+ MicroProcessFlowViewComponent,
82
+ UiEnumSegmentedButtonComponent,
83
+ TabProcessViewComponent,
84
+ UiTextFieldSearchComponent,
85
+ ServiceDeskHeaderComponent,
86
+ CardContentImageAndTitleComponent,
87
+ CardHeaderLogoTitleSubtitleComponent,
88
+ FormContentQuickViewComponent,
89
+ ServiceDeskServcieDetailComponent,
90
+ ServiceDeskViewOfServicesComponent,
91
+ ServiceDeskCardContentMojavezhayAkhzShodeComponent,
92
+ CardHeaderBigImageTitleAndSubtitleComponent,
93
+ ServiceDeskFormLayoutContentMojavezComponent,
94
+ UlvContextMenuItemShowFileContentComponent,
95
+ ResendVerificationCodeComponent,
96
+ CheckboxButtonComponent,
97
+ ReportTabViewComponent,
98
+ ReportLineChartViewComponent,
99
+ CardHeaderKpiComponent,
100
+ CardContentLineChartComponent,
101
+ FormChartContentComponent,
102
+ TableViewVerticalColumnsComponent,
103
+ QueryStringObservableComponent,
104
+ QueryStringFormObservableComponent,
105
+ G4bDetailsComponent,
106
+ AvatarComponent,
107
+ G4bEstelamComponent,
108
+ TimerCountDownComponent,
109
+ MoInfoMicroProccessFlowComponent,
110
+ MicroProccessFlowComponent,
111
+ EnumInfoMicroProccessFlowComponent,
112
+ UiPicturesCarouselComponent,
113
+ UiNumRateComponent,
114
+ MediaFileUploaderComponent,
115
+ SubformInRowReportComponent,
116
+ MasterDetailCardFormComponent,
117
+ ReportButtonViewComponent,
118
+ BarsaDocumentsComponent,
119
+ BarsaDocumentListItemComponent,
120
+ AcceptRejectComponent,
121
+ FooterComponent,
122
+ GeographicLocationComponent,
123
+ BarsaGeographicLocationComponent,
124
+ TokenReportViewComponent,
125
+ ColumnFormViewerComponent,
126
+ FormReportViewComponent,
127
+ FormReportViewItemComponent,
128
+ FormCardComponent,
129
+ ColumnProgressbarComponent,
130
+ ColumnChipComponent
131
+ ];
132
+ const pipes = [UiPersonPipe, BarcodeFormatPipe, MoListToFlowItemPipe, DataSourceToFlowItemPipe];
133
+ export class BarsaDevelopComponentsModule extends BaseModule {
134
+ constructor(dcm, cfr) {
135
+ super(dcm, cfr, 'BarsaDevelopComponentsModule');
136
+ this.dcm = dcm;
137
+ this.cfr = cfr;
138
+ this.dynamicComponents = [...components];
139
+ }
140
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaDevelopComponentsModule, deps: [{ token: i1.DynamicComponentService }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.NgModule }); }
141
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: BarsaDevelopComponentsModule, declarations: [LoginFormComponent,
142
+ LoginSocialConncetionsComponent,
143
+ UiPersonComponent,
144
+ BarcodeReaderComponent,
145
+ BarcodeReaderDialogComponent,
146
+ BarcodeReaderVideoComponent,
147
+ SettingFormComponent,
148
+ MicroProcessFlowViewComponent,
149
+ UiEnumSegmentedButtonComponent,
150
+ TabProcessViewComponent,
151
+ UiTextFieldSearchComponent,
152
+ ServiceDeskHeaderComponent,
153
+ CardContentImageAndTitleComponent,
154
+ CardHeaderLogoTitleSubtitleComponent,
155
+ FormContentQuickViewComponent,
156
+ ServiceDeskServcieDetailComponent,
157
+ ServiceDeskViewOfServicesComponent,
158
+ ServiceDeskCardContentMojavezhayAkhzShodeComponent,
159
+ CardHeaderBigImageTitleAndSubtitleComponent,
160
+ ServiceDeskFormLayoutContentMojavezComponent,
161
+ UlvContextMenuItemShowFileContentComponent,
162
+ ResendVerificationCodeComponent,
163
+ CheckboxButtonComponent,
164
+ ReportTabViewComponent,
165
+ ReportLineChartViewComponent,
166
+ CardHeaderKpiComponent,
167
+ CardContentLineChartComponent,
168
+ FormChartContentComponent,
169
+ TableViewVerticalColumnsComponent,
170
+ QueryStringObservableComponent,
171
+ QueryStringFormObservableComponent,
172
+ G4bDetailsComponent,
173
+ AvatarComponent,
174
+ G4bEstelamComponent,
175
+ TimerCountDownComponent,
176
+ MoInfoMicroProccessFlowComponent,
177
+ MicroProccessFlowComponent,
178
+ EnumInfoMicroProccessFlowComponent,
179
+ UiPicturesCarouselComponent,
180
+ UiNumRateComponent,
181
+ MediaFileUploaderComponent,
182
+ SubformInRowReportComponent,
183
+ MasterDetailCardFormComponent,
184
+ ReportButtonViewComponent,
185
+ BarsaDocumentsComponent,
186
+ BarsaDocumentListItemComponent,
187
+ AcceptRejectComponent,
188
+ FooterComponent,
189
+ GeographicLocationComponent,
190
+ BarsaGeographicLocationComponent,
191
+ TokenReportViewComponent,
192
+ ColumnFormViewerComponent,
193
+ FormReportViewComponent,
194
+ FormReportViewItemComponent,
195
+ FormCardComponent,
196
+ ColumnProgressbarComponent,
197
+ ColumnChipComponent, UiPersonPipe, BarcodeFormatPipe, MoListToFlowItemPipe, DataSourceToFlowItemPipe], imports: [CommonModule,
198
+ BarsaNovinRayCoreModule,
199
+ ReactiveFormsModule,
200
+ BarsaSapUiModule,
201
+ BarsaEchartsModule,
202
+ BarsaTilesModule,
203
+ FundamentalNgxCoreModule,
204
+ PlatformInputGroupModule,
205
+ FormsModule], exports: [LoginFormComponent,
206
+ LoginSocialConncetionsComponent,
207
+ UiPersonComponent,
208
+ BarcodeReaderComponent,
209
+ BarcodeReaderDialogComponent,
210
+ BarcodeReaderVideoComponent,
211
+ SettingFormComponent,
212
+ MicroProcessFlowViewComponent,
213
+ UiEnumSegmentedButtonComponent,
214
+ TabProcessViewComponent,
215
+ UiTextFieldSearchComponent,
216
+ ServiceDeskHeaderComponent,
217
+ CardContentImageAndTitleComponent,
218
+ CardHeaderLogoTitleSubtitleComponent,
219
+ FormContentQuickViewComponent,
220
+ ServiceDeskServcieDetailComponent,
221
+ ServiceDeskViewOfServicesComponent,
222
+ ServiceDeskCardContentMojavezhayAkhzShodeComponent,
223
+ CardHeaderBigImageTitleAndSubtitleComponent,
224
+ ServiceDeskFormLayoutContentMojavezComponent,
225
+ UlvContextMenuItemShowFileContentComponent,
226
+ ResendVerificationCodeComponent,
227
+ CheckboxButtonComponent,
228
+ ReportTabViewComponent,
229
+ ReportLineChartViewComponent,
230
+ CardHeaderKpiComponent,
231
+ CardContentLineChartComponent,
232
+ FormChartContentComponent,
233
+ TableViewVerticalColumnsComponent,
234
+ QueryStringObservableComponent,
235
+ QueryStringFormObservableComponent,
236
+ G4bDetailsComponent,
237
+ AvatarComponent,
238
+ G4bEstelamComponent,
239
+ TimerCountDownComponent,
240
+ MoInfoMicroProccessFlowComponent,
241
+ MicroProccessFlowComponent,
242
+ EnumInfoMicroProccessFlowComponent,
243
+ UiPicturesCarouselComponent,
244
+ UiNumRateComponent,
245
+ MediaFileUploaderComponent,
246
+ SubformInRowReportComponent,
247
+ MasterDetailCardFormComponent,
248
+ ReportButtonViewComponent,
249
+ BarsaDocumentsComponent,
250
+ BarsaDocumentListItemComponent,
251
+ AcceptRejectComponent,
252
+ FooterComponent,
253
+ GeographicLocationComponent,
254
+ BarsaGeographicLocationComponent,
255
+ TokenReportViewComponent,
256
+ ColumnFormViewerComponent,
257
+ FormReportViewComponent,
258
+ FormReportViewItemComponent,
259
+ FormCardComponent,
260
+ ColumnProgressbarComponent,
261
+ ColumnChipComponent] }); }
262
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaDevelopComponentsModule, providers: [UserMediaBaseService, WebBarcodeService], imports: [CommonModule,
263
+ BarsaNovinRayCoreModule,
264
+ ReactiveFormsModule,
265
+ BarsaSapUiModule,
266
+ BarsaEchartsModule,
267
+ BarsaTilesModule,
268
+ FundamentalNgxCoreModule,
269
+ PlatformInputGroupModule,
270
+ FormsModule] }); }
271
+ }
272
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaDevelopComponentsModule, decorators: [{
273
+ type: NgModule,
274
+ args: [{
275
+ declarations: [...components, ...pipes],
276
+ schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],
277
+ imports: [
278
+ CommonModule,
279
+ BarsaNovinRayCoreModule,
280
+ ReactiveFormsModule,
281
+ BarsaSapUiModule,
282
+ BarsaEchartsModule,
283
+ BarsaTilesModule,
284
+ FundamentalNgxCoreModule,
285
+ PlatformInputGroupModule,
286
+ FormsModule
287
+ ],
288
+ providers: [UserMediaBaseService, WebBarcodeService],
289
+ exports: [...components]
290
+ }]
291
+ }], ctorParameters: () => [{ type: i1.DynamicComponentService }, { type: i0.ComponentFactoryResolver }] });
292
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtZGV2ZWxvcC1jb21wb25lbnRzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLWRldmVsb3AtY29tcG9uZW50cy9zcmMvbGliL2JhcnNhLWRldmVsb3AtY29tcG9uZW50cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE0QixzQkFBc0IsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsVUFBVSxFQUEyQixNQUFNLHNCQUFzQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQ2hILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1REFBdUQs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eEMsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUUsQ0FBQyxHQUFHLFVBQVUsRUFBRSxHQUFHLEtBQUssQ0FBQztvQkFDdkMsT0FBTyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsZ0JBQWdCLENBQUM7b0JBQ25ELE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLHVCQUF1Qjt3QkFDdkIsbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQix3QkFBd0I7d0JBQ3hCLHdCQUF3Qjt3QkFDeEIsV0FBVztxQkFDZDtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxpQkFBaUIsQ0FBQztvQkFDcEQsT0FBTyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7aUJBQzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBOZ01vZHVsZSwgTk9fRVJST1JTX1NDSEVNQSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRnVuZGFtZW50YWxOZ3hDb3JlTW9kdWxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlJztcclxuXHJcbmltcG9ydCB7IEJhcnNhTm92aW5SYXlDb3JlTW9kdWxlLCBCYXNlTW9kdWxlLCBEeW5hbWljQ29tcG9uZW50U2VydmljZSB9IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuaW1wb3J0IHsgQmFyc2FTYXBVaU1vZHVsZSB9IGZyb20gJ2JhcnNhLXNhcC11aSc7XHJcbmltcG9ydCB7IEJhcnNhVGlsZXNNb2R1bGUgfSBmcm9tICdiYXJzYS10aWxlcyc7XHJcbmltcG9ydCB7IEJhcnNhRWNoYXJ0c01vZHVsZSB9IGZyb20gJ2JhcnNhLWVjaGFydHMnO1xyXG5cclxuaW1wb3J0IHsgTG9naW5Gb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9sb2dpbi1mb3JtL2xvZ2luLWZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgTG9naW5Tb2NpYWxDb25uY2V0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4vbG9naW4tc29jaWFsLWNvbm5jZXRpb25zL2xvZ2luLXNvY2lhbC1jb25uY2V0aW9ucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVaVBlcnNvbkNvbXBvbmVudCB9IGZyb20gJy4vdWktcGVyc29uL3VpLXBlcnNvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVaVBlcnNvblBpcGUgfSBmcm9tICcuL3VpLXBlcnNvbi91aS1wZXJzb24ucGlwZSc7XHJcbmltcG9ydCB7IEJhcmNvZGVSZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2JhcmNvZGUtcmVhZGVyL2JhcmNvZGUtcmVhZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJhcmNvZGVSZWFkZXJEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2JhcmNvZGUtcmVhZGVyLWRpYWxvZy9iYXJjb2RlLXJlYWRlci1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmFyY29kZVJlYWRlclZpZGVvQ29tcG9uZW50IH0gZnJvbSAnLi9iYXJjb2RlLXJlYWRlci12aWRlby9iYXJjb2RlLXJlYWRlci12aWRlby5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVc2VyTWVkaWFCYXNlU2VydmljZSwgV2ViQmFyY29kZVNlcnZpY2UgfSBmcm9tICcuL2JhcmNvZGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFNldHRpbmdGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5nLWZvcm0vc2V0dGluZy1mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1pY3JvUHJvY2Vzc0Zsb3dWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9taWNyby1wcm9jZXNzLWZsb3ctdmlldy9taWNyby1wcm9jZXNzLWZsb3ctdmlldy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVaUVudW1TZWdtZW50ZWRCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL3VpLWVudW0tc2VnbWVudGVkLWJ1dHRvbi91aS1lbnVtLXNlZ21lbnRlZC1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFiUHJvY2Vzc1ZpZXdDb21wb25lbnQgfSBmcm9tICcuL3RhYi1wcm9jZXNzLXZpZXcvdGFiLXByb2Nlc3Mtdmlldy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVaVRleHRGaWVsZFNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4vdWktdGV4dC1maWVsZC1zZWFyY2gvdWktdGV4dC1maWVsZC1zZWFyY2guY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmFyY29kZUZvcm1hdFBpcGUgfSBmcm9tICcuL2JhcmNvZGUtZm9ybWF0LXBpcGUnO1xyXG5pbXBvcnQgeyBTZXJ2aWNlRGVza0hlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vc2VydmljZS1kZXNrLWhlYWRlci9zZXJ2aWNlLWRlc2staGVhZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENhcmRDb250ZW50SW1hZ2VBbmRUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4vY2FyZC1jb250ZW50LWltYWdlLWFuZC10aXRsZS9jYXJkLWNvbnRlbnQtaW1hZ2UtYW5kLXRpdGxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENhcmRIZWFkZXJMb2dvVGl0bGVTdWJ0aXRsZUNvbXBvbmVudCB9IGZyb20gJy4vY2FyZC1oZWFkZXItbG9nby10aXRsZS1zdWJ0aXRsZS9jYXJkLWhlYWRlci1sb2dvLXRpdGxlLXN1YnRpdGxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1Db250ZW50UXVpY2tWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWNvbnRlbnQtcXVpY2stdmlldy9mb3JtLWNvbnRlbnQtcXVpY2stdmlldy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZXJ2aWNlRGVza1NlcnZjaWVEZXRhaWxDb21wb25lbnQgfSBmcm9tICcuL3NlcnZpY2UtZGVzay1zZXJ2Y2llLWRldGFpbC9zZXJ2aWNlLWRlc2stc2VydmNpZS1kZXRhaWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2VydmljZURlc2tWaWV3T2ZTZXJ2aWNlc0NvbXBvbmVudCB9IGZyb20gJy4vc2VydmljZS1kZXNrLXZpZXctb2Ytc2VydmljZXMvc2VydmljZS1kZXNrLXZpZXctb2Ytc2VydmljZXMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2VydmljZURlc2tDYXJkQ29udGVudE1vamF2ZXpoYXlBa2h6U2hvZGVDb21wb25lbnQgfSBmcm9tICcuL3NlcnZpY2UtZGVzay1jYXJkLWNvbnRlbnQtbW9qYXZlemhheS1ha2h6LXNob2RlL3NlcnZpY2UtZGVzay1jYXJkLWNvbnRlbnQtbW9qYXZlemhheS1ha2h6LXNob2RlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENhcmRIZWFkZXJCaWdJbWFnZVRpdGxlQW5kU3VidGl0bGVDb21wb25lbnQgfSBmcm9tICcuL2NhcmQtaGVhZGVyLWJpZy1pbWFnZS10aXRsZS1hbmQtc3VidGl0bGUvY2FyZC1oZWFkZXItYmlnLWltYWdlLXRpdGxlLWFuZC1zdWJ0aXRsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZXJ2aWNlRGVza0Zvcm1MYXlvdXRDb250ZW50TW9qYXZlekNvbXBvbmVudCB9IGZyb20gJy4vc2VydmljZS1kZXNrLWZvcm0tbGF5b3V0LWNvbnRlbnQtbW9qYXZlei9zZXJ2aWNlLWRlc2stZm9ybS1sYXlvdXQtY29udGVudC1tb2phdmV6LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVsdkNvbnRleHRNZW51SXRlbVNob3dGaWxlQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4vdWx2LWNvbnRleHQtbWVudS1pdGVtLXNob3ctZmlsZS1jb250ZW50L3Vsdi1jb250ZXh0LW1lbnUtaXRlbS1zaG93LWZpbGUtY29udGVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXNlbmRWZXJpZmljYXRpb25Db2RlQ29tcG9uZW50IH0gZnJvbSAnLi9yZXNlbmQtdmVyaWZpY2F0aW9uLWNvZGUvcmVzZW5kLXZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENoZWNrYm94QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9jaGVja2JveC1idXR0b24vY2hlY2tib3gtYnV0dG9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlcG9ydFRhYlZpZXdDb21wb25lbnQgfSBmcm9tICcuL3JlcG9ydC10YWItdmlldy9yZXBvcnQtdGFiLXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVwb3J0TGluZUNoYXJ0Vmlld0NvbXBvbmVudCB9IGZyb20gJy4vcmVwb3J0LWxpbmUtY2hhcnQtdmlldy9yZXBvcnQtbGluZS1jaGFydC12aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENhcmRIZWFkZXJLcGlDb21wb25lbnQgfSBmcm9tICcuL2NhcmQtaGVhZGVyLWtwaS9jYXJkLWhlYWRlci1rcGkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2FyZENvbnRlbnRMaW5lQ2hhcnRDb21wb25lbnQgfSBmcm9tICcuL2NhcmQtY29udGVudC1saW5lLWNoYXJ0L2NhcmQtY29udGVudC1saW5lLWNoYXJ0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1DaGFydENvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0tY2hhcnQtY29udGVudC9mb3JtLWNoYXJ0LWNvbnRlbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVWaWV3VmVydGljYWxDb2x1bW5zQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS12aWV3LXZlcnRpY2FsLWNvbHVtbnMvdGFibGUtdmlldy12ZXJ0aWNhbC1jb2x1bW5zLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFF1ZXJ5U3RyaW5nT2JzZXJ2YWJsZUNvbXBvbmVudCB9IGZyb20gJy4vcXVlcnktc3RyaW5nLW9ic2VydmFibGUvcXVlcnktc3RyaW5nLW9ic2VydmFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUXVlcnlTdHJpbmdGb3JtT2JzZXJ2YWJsZUNvbXBvbmVudCB9IGZyb20gJy4vcXVlcnktc3RyaW5nLWZvcm0tb2JzZXJ2YWJsZS9xdWVyeS1zdHJpbmctZm9ybS1vYnNlcnZhYmxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEc0YkRldGFpbHNDb21wb25lbnQgfSBmcm9tICcuL2c0Yi1kZXRhaWxzL2c0Yi1kZXRhaWxzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4vYXZhdGFyL2F2YXRhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBHNGJFc3RlbGFtQ29tcG9uZW50IH0gZnJvbSAnLi9nNGItZXN0ZWxhbS9nNGItZXN0ZWxhbS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUaW1lckNvdW50RG93bkNvbXBvbmVudCB9IGZyb20gJy4vdGltZXItY291bnQtZG93bi90aW1lci1jb3VudC1kb3duLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1vSW5mb01pY3JvUHJvY2Nlc3NGbG93Q29tcG9uZW50IH0gZnJvbSAnLi9tby1pbmZvLW1pY3JvLXByb2NjZXNzLWZsb3cvbW8taW5mby1taWNyby1wcm9jY2Vzcy1mbG93LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1pY3JvUHJvY2Nlc3NGbG93Q29tcG9uZW50IH0gZnJvbSAnLi9taWNyby1wcm9jY2Vzcy1mbG93L21pY3JvLXByb2NjZXNzLWZsb3cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRW51bUluZm9NaWNyb1Byb2NjZXNzRmxvd0NvbXBvbmVudCB9IGZyb20gJy4vZW51bS1pbmZvLW1pY3JvLXByb2NjZXNzLWZsb3cvZW51bS1pbmZvLW1pY3JvLXByb2NjZXNzLWZsb3cuY29tcG9uZW50JztcclxuXHJcbmltcG9ydCB7IERhdGFTb3VyY2VUb0Zsb3dJdGVtUGlwZSwgTW9MaXN0VG9GbG93SXRlbVBpcGUgfSBmcm9tICcuL3BpcGVzJztcclxuaW1wb3J0IHsgVWlQaWN0dXJlc0Nhcm91c2VsQ29tcG9uZW50IH0gZnJvbSAnLi91aS1waWN0dXJlcy1jYXJvdXNlbC91aS1waWN0dXJlcy1jYXJvdXNlbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVaU51bVJhdGVDb21wb25lbnQgfSBmcm9tICcuL3VpLW51bS1yYXRlL3VpLW51bS1yYXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1lZGlhRmlsZVVwbG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9tZWRpYS1maWxlLXVwbG9hZGVyL21lZGlhLWZpbGUtdXBsb2FkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3ViZm9ybUluUm93UmVwb3J0Q29tcG9uZW50IH0gZnJvbSAnLi9zdWJmb3JtLWluLXJvdy1yZXBvcnQvc3ViZm9ybS1pbi1yb3ctcmVwb3J0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hc3RlckRldGFpbENhcmRGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9tYXN0ZXItZGV0YWlsLWNhcmQtZm9ybS9tYXN0ZXItZGV0YWlsLWNhcmQtZm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXBvcnRCdXR0b25WaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9yZXBvcnQtYnV0dG9uLXZpZXcvcmVwb3J0LWJ1dHRvbi12aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJhcnNhRG9jdW1lbnRzQ29tcG9uZW50IH0gZnJvbSAnLi9iYXJzYS1kb2N1bWVudHMvYmFyc2EtZG9jdW1lbnRzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJhcnNhRG9jdW1lbnRMaXN0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vYmFyc2EtZG9jdW1lbnQtbGlzdC1pdGVtL2JhcnNhLWRvY3VtZW50LWxpc3QtaXRlbS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBY2NlcHRSZWplY3RDb21wb25lbnQgfSBmcm9tICcuL2FjY2VwdC1yZWplY3QvYWNjZXB0LXJlamVjdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb290ZXJDb21wb25lbnQgfSBmcm9tICcuL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgR2VvZ3JhcGhpY0xvY2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9nZW9ncmFwaGljLWxvY2F0aW9uL2dlb2dyYXBoaWMtbG9jYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmFyc2FHZW9ncmFwaGljTG9jYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2JhcnNhLWdlb2dyYXBoaWMtbG9jYXRpb24vYmFyc2EtZ2VvZ3JhcGhpYy1sb2NhdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb2tlblJlcG9ydFZpZXdDb21wb25lbnQgfSBmcm9tICcuL3Rva2VuLXJlcG9ydC12aWV3L3Rva2VuLXJlcG9ydC12aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbHVtbkZvcm1WaWV3ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbHVtbi1mb3JtLXZpZXdlci9jb2x1bW4tZm9ybS12aWV3ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGxhdGZvcm1JbnB1dEdyb3VwTW9kdWxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybSc7XHJcbmltcG9ydCB7IEZvcm1SZXBvcnRWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLXJlcG9ydC12aWV3L2Zvcm0tcmVwb3J0LXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybVJlcG9ydFZpZXdJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLXJlcG9ydC12aWV3LWl0ZW0vZm9ybS1yZXBvcnQtdmlldy1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1DYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWNhcmQvZm9ybS1jYXJkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbHVtblByb2dyZXNzYmFyQ29tcG9uZW50IH0gZnJvbSAnLi9jb2x1bW4tcHJvZ3Jlc3NiYXIvY29sdW1uLXByb2dyZXNzYmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbHVtbkNoaXBDb21wb25lbnQgfSBmcm9tICcuLi9wdWJsaWMtYXBpJztcclxuXHJcbmNvbnN0IGNvbXBvbmVudHMgPSBbXHJcbiAgICBMb2dpbkZvcm1Db21wb25lbnQsXHJcbiAgICBMb2dpblNvY2lhbENvbm5jZXRpb25zQ29tcG9uZW50LFxyXG4gICAgVWlQZXJzb25Db21wb25lbnQsXHJcbiAgICBCYXJjb2RlUmVhZGVyQ29tcG9uZW50LFxyXG4gICAgQmFyY29kZVJlYWRlckRpYWxvZ0NvbXBvbmVudCxcclxuICAgIEJhcmNvZGVSZWFkZXJWaWRlb0NvbXBvbmVudCxcclxuICAgIFNldHRpbmdGb3JtQ29tcG9uZW50LFxyXG4gICAgTWljcm9Qcm9jZXNzRmxvd1ZpZXdDb21wb25lbnQsXHJcbiAgICBVaUVudW1TZWdtZW50ZWRCdXR0b25Db21wb25lbnQsXHJcbiAgICBUYWJQcm9jZXNzVmlld0NvbXBvbmVudCxcclxuICAgIFVpVGV4dEZpZWxkU2VhcmNoQ29tcG9uZW50LFxyXG4gICAgU2VydmljZURlc2tIZWFkZXJDb21wb25lbnQsXHJcbiAgICBDYXJkQ29udGVudEltYWdlQW5kVGl0bGVDb21wb25lbnQsXHJcbiAgICBDYXJkSGVhZGVyTG9nb1RpdGxlU3VidGl0bGVDb21wb25lbnQsXHJcbiAgICBGb3JtQ29udGVudFF1aWNrVmlld0NvbXBvbmVudCxcclxuICAgIFNlcnZpY2VEZXNrU2VydmNpZURldGFpbENvbXBvbmVudCxcclxuICAgIFNlcnZpY2VEZXNrVmlld09mU2VydmljZXNDb21wb25lbnQsXHJcbiAgICBTZXJ2aWNlRGVza0NhcmRDb250ZW50TW9qYXZlemhheUFraHpTaG9kZUNvbXBvbmVudCxcclxuICAgIENhcmRIZWFkZXJCaWdJbWFnZVRpdGxlQW5kU3VidGl0bGVDb21wb25lbnQsXHJcbiAgICBTZXJ2aWNlRGVza0Zvcm1MYXlvdXRDb250ZW50TW9qYXZlekNvbXBvbmVudCxcclxuICAgIFVsdkNvbnRleHRNZW51SXRlbVNob3dGaWxlQ29udGVudENvbXBvbmVudCxcclxuICAgIFJlc2VuZFZlcmlmaWNhdGlvbkNvZGVDb21wb25lbnQsXHJcbiAgICBDaGVja2JveEJ1dHRvbkNvbXBvbmVudCxcclxuICAgIFJlcG9ydFRhYlZpZXdDb21wb25lbnQsXHJcbiAgICBSZXBvcnRMaW5lQ2hhcnRWaWV3Q29tcG9uZW50LFxyXG4gICAgQ2FyZEhlYWRlcktwaUNvbXBvbmVudCxcclxuICAgIENhcmRDb250ZW50TGluZUNoYXJ0Q29tcG9uZW50LFxyXG4gICAgRm9ybUNoYXJ0Q29udGVudENvbXBvbmVudCxcclxuICAgIFRhYmxlVmlld1ZlcnRpY2FsQ29sdW1uc0NvbXBvbmVudCxcclxuICAgIFF1ZXJ5U3RyaW5nT2JzZXJ2YWJsZUNvbXBvbmVudCxcclxuICAgIFF1ZXJ5U3RyaW5nRm9ybU9ic2VydmFibGVDb21wb25lbnQsXHJcbiAgICBHNGJEZXRhaWxzQ29tcG9uZW50LFxyXG4gICAgQXZhdGFyQ29tcG9uZW50LFxyXG4gICAgRzRiRXN0ZWxhbUNvbXBvbmVudCxcclxuICAgIFRpbWVyQ291bnREb3duQ29tcG9uZW50LFxyXG4gICAgTW9JbmZvTWljcm9Qcm9jY2Vzc0Zsb3dDb21wb25lbnQsXHJcbiAgICBNaWNyb1Byb2NjZXNzRmxvd0NvbXBvbmVudCxcclxuICAgIEVudW1JbmZvTWljcm9Qcm9jY2Vzc0Zsb3dDb21wb25lbnQsXHJcbiAgICBVaVBpY3R1cmVzQ2Fyb3VzZWxDb21wb25lbnQsXHJcbiAgICBVaU51bVJhdGVDb21wb25lbnQsXHJcbiAgICBNZWRpYUZpbGVVcGxvYWRlckNvbXBvbmVudCxcclxuICAgIFN1YmZvcm1JblJvd1JlcG9ydENvbXBvbmVudCxcclxuICAgIE1hc3RlckRldGFpbENhcmRGb3JtQ29tcG9uZW50LFxyXG4gICAgUmVwb3J0QnV0dG9uVmlld0NvbXBvbmVudCxcclxuICAgIEJhcnNhRG9jdW1lbnRzQ29tcG9uZW50LFxyXG4gICAgQmFyc2FEb2N1bWVudExpc3RJdGVtQ29tcG9uZW50LFxyXG4gICAgQWNjZXB0UmVqZWN0Q29tcG9uZW50LFxyXG4gICAgRm9vdGVyQ29tcG9uZW50LFxyXG4gICAgR2VvZ3JhcGhpY0xvY2F0aW9uQ29tcG9uZW50LFxyXG4gICAgQmFyc2FHZW9ncmFwaGljTG9jYXRpb25Db21wb25lbnQsXHJcbiAgICBUb2tlblJlcG9ydFZpZXdDb21wb25lbnQsXHJcbiAgICBDb2x1bW5Gb3JtVmlld2VyQ29tcG9uZW50LFxyXG4gICAgRm9ybVJlcG9ydFZpZXdDb21wb25lbnQsXHJcbiAgICBGb3JtUmVwb3J0Vmlld0l0ZW1Db21wb25lbnQsXHJcbiAgICBGb3JtQ2FyZENvbXBvbmVudCxcclxuICAgIENvbHVtblByb2dyZXNzYmFyQ29tcG9uZW50LFxyXG4gICAgQ29sdW1uQ2hpcENvbXBvbmVudFxyXG5dO1xyXG5jb25zdCBwaXBlcyA9IFtVaVBlcnNvblBpcGUsIEJhcmNvZGVGb3JtYXRQaXBlLCBNb0xpc3RUb0Zsb3dJdGVtUGlwZSwgRGF0YVNvdXJjZVRvRmxvd0l0ZW1QaXBlXTtcclxuQE5nTW9kdWxlKHtcclxuICAgIGRlY2xhcmF0aW9uczogWy4uLmNvbXBvbmVudHMsIC4uLnBpcGVzXSxcclxuICAgIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBOT19FUlJPUlNfU0NIRU1BXSxcclxuICAgIGltcG9ydHM6IFtcclxuICAgICAgICBDb21tb25Nb2R1bGUsXHJcbiAgICAgICAgQmFyc2FOb3ZpblJheUNvcmVNb2R1bGUsXHJcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgICAgICBCYXJzYVNhcFVpTW9kdWxlLFxyXG4gICAgICAgIEJhcnNhRWNoYXJ0c01vZHVsZSxcclxuICAgICAgICBCYXJzYVRpbGVzTW9kdWxlLFxyXG4gICAgICAgIEZ1bmRhbWVudGFsTmd4Q29yZU1vZHVsZSxcclxuICAgICAgICBQbGF0Zm9ybUlucHV0R3JvdXBNb2R1bGUsXHJcbiAgICAgICAgRm9ybXNNb2R1bGVcclxuICAgIF0sXHJcbiAgICBwcm92aWRlcnM6IFtVc2VyTWVkaWFCYXNlU2VydmljZSwgV2ViQmFyY29kZVNlcnZpY2VdLFxyXG4gICAgZXhwb3J0czogWy4uLmNvbXBvbmVudHNdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYXJzYURldmVsb3BDb21wb25lbnRzTW9kdWxlIGV4dGVuZHMgQmFzZU1vZHVsZSB7XHJcbiAgICBwcm90ZWN0ZWQgZHluYW1pY0NvbXBvbmVudHMgPSBbLi4uY29tcG9uZW50c107XHJcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZGNtOiBEeW5hbWljQ29tcG9uZW50U2VydmljZSwgcHJvdGVjdGVkIGNmcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyKSB7XHJcbiAgICAgICAgc3VwZXIoZGNtLCBjZnIsICdCYXJzYURldmVsb3BDb21wb25lbnRzTW9kdWxlJyk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,104 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { AudioMimeType, BaseComponent, ImageMimeType, PreventDefaulEvent, VideoMimeType, AllFilesMimeType, isImage, getIcon } from 'barsa-novin-ray-core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "barsa-novin-ray-core";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "barsa-sap-ui";
7
+ import * as i4 from "@fundamental-ngx/core/action-sheet";
8
+ import * as i5 from "@fundamental-ngx/core/avatar";
9
+ import * as i6 from "@fundamental-ngx/core/button";
10
+ import * as i7 from "@fundamental-ngx/core/file-uploader";
11
+ import * as i8 from "@fundamental-ngx/core/form";
12
+ import * as i9 from "@fundamental-ngx/core/inline-help";
13
+ import * as i10 from "@fundamental-ngx/core/object-status";
14
+ import * as i11 from "@fundamental-ngx/core/table";
15
+ import * as i12 from "@fundamental-ngx/core/toolbar";
16
+ export class BarsaDocumentListItemComponent extends BaseComponent {
17
+ constructor(_cdr, _picFieldSrc) {
18
+ super();
19
+ this._cdr = _cdr;
20
+ this._picFieldSrc = _picFieldSrc;
21
+ this.statusChanged = new EventEmitter();
22
+ this.rejectTextChange = new EventEmitter();
23
+ this.fileSelectionChange = new EventEmitter();
24
+ this.removeFile = new EventEmitter();
25
+ this.fullscreen = new EventEmitter();
26
+ this.download = new EventEmitter();
27
+ this.downloadAll = new EventEmitter();
28
+ this.hasFiles = false;
29
+ }
30
+ ngOnInit() {
31
+ super.ngOnInit();
32
+ const documentItem = this.documentItem;
33
+ documentItem.$ValidExtensions = `
34
+ ${documentItem.SupportImage ? ImageMimeType : ''},
35
+ ${documentItem.SupportAudio ? AudioMimeType : ''},
36
+ ${documentItem.SupportVideo ? VideoMimeType : ''},
37
+ ${documentItem.SupportFile ? AllFilesMimeType : ''}
38
+ `;
39
+ }
40
+ ngOnChanges(changes) {
41
+ super.ngOnChanges(changes);
42
+ const { files } = changes;
43
+ files && Array.isArray(files.currentValue) && this._setFirstImage(files.currentValue);
44
+ this._detectChanges();
45
+ }
46
+ onReject(e) {
47
+ this.statusChanged.emit({ value: e, rejectedText: e === 2 ? '' : this.rejectedReason });
48
+ }
49
+ onRejectedTextChange(e) {
50
+ this.rejectTextChange.emit(e.target.value);
51
+ }
52
+ onPreventClick(e) {
53
+ PreventDefaulEvent(e);
54
+ }
55
+ onFileSelection(files) {
56
+ this.fileSelectionChange.emit(files);
57
+ }
58
+ _setFirstImage(files) {
59
+ files.length &&
60
+ (this.firstImageUrl = isImage(files[0].Type)
61
+ ? this._picFieldSrc.transform(files[0].Id, 'ID', null, '', 120, 120)
62
+ : getIcon(files[0].Type));
63
+ }
64
+ _detectChanges() {
65
+ this._cdr.detectChanges();
66
+ }
67
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaDocumentListItemComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.PictureFieldSourcePipe }], target: i0.ɵɵFactoryTarget.Component }); }
68
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BarsaDocumentListItemComponent, selector: "bdc-barsa-document-list-item", inputs: { documentItem: "documentItem", deviceSize: "deviceSize", files: "files", accepted: "accepted", rejectedReason: "rejectedReason", readonly: "readonly", status: "status", uploadingState: "uploadingState" }, outputs: { statusChanged: "statusChanged", rejectTextChange: "rejectTextChange", fileSelectionChange: "fileSelectionChange", removeFile: "removeFile", fullscreen: "fullscreen", download: "download", downloadAll: "downloadAll" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- <li fd-list-item style=\"padding: 0.5rem 1rem\">\r\n<span fd-list-thumbnail>\r\n <fd-icon *ngIf=\"documentItem.FontIcon\" [glyph]=\"documentItem.FontIcon\"></fd-icon>\r\n <fd-avatar\r\n *ngIf=\"documentItem.Avatar\"\r\n size=\"s\"\r\n [image]=\"documentItem.Avatar.FileId | picFieldSrc: 'ID':null:''\"\r\n [clickable]=\"true\"\r\n ></fd-avatar\r\n ></span>\r\n\r\n <div fd-list-content>\r\n <div fd-list-title>\r\n <div style=\"display: flex; column-gap: 3px\">\r\n <strong\r\n >{{ documentItem.Title }}\r\n <span fd-object-status status=\"negative\" *ngIf=\"documentItem.IsRequired\"\r\n >*({{ '\u0627\u062C\u0628\u0627\u0631\u06CC' | bbbTranslate }})\r\n </span>\r\n </strong>\r\n <div\r\n *ngIf=\"documentItem.$Accepted === false || documentItem.$Accepted === true\"\r\n style=\"display: flex; column-gap: 3px; flex-wrap: wrap; align-items: center\"\r\n >\r\n <span\r\n fd-object-status\r\n [status]=\"accepted ? 'positive' : 'negative'\"\r\n [label]=\"accepted ? acceptedText : rejectedText\"\r\n [clickable]=\"true\"\r\n [inverted]=\"true\"\r\n [aria-label]=\"accepted ? acceptedText : rejectedText\"\r\n ></span>\r\n <fd-popover title=\"Rejected document\" *ngIf=\"rejectedReason && !accepted\">\r\n <fd-popover-control>\r\n <span\r\n fd-object-status\r\n status=\"negative\"\r\n glyph=\"question-mark\"\r\n glyphAriaLabel=\"Negative\"\r\n title=\"Rejected document\"\r\n ></span>\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n <fd-message-strip type=\"error\" [dismissible]=\"false\">\r\n {{ rejectedReason }}\r\n </fd-message-strip>\r\n </fd-popover-body>\r\n </fd-popover>\r\n </div>\r\n </div>\r\n </div>\r\n <div fd-list-byline [twoCol]=\"true\" [class.smallSize]=\"deviceSize === 's'\">\r\n <div fd-list-byline-left>\r\n <div style=\"display: flex; flex-direction: column; row-gap: 5px; flex-wrap: wrap\">\r\n <span>\r\n {{ documentItem.Description }}\r\n </span>\r\n <div style=\"display: flex; flex-wrap: wrap; column-gap: 3px; align-items: center\">\r\n <ng-container *ngIf=\"hasFiles\">\r\n <button fd-button [fdType]=\"'transparent'\" glyph=\"show\" (click)=\"onFullscreen()\"></button>\r\n <ng-container *ngFor=\"let file of files\">\r\n <fd-token\r\n [readOnly]=\"readonly\"\r\n *ngIf=\"!file.IsDeleted\"\r\n (onCloseClick)=\"onRemoveFile(file)\"\r\n >{{ file.FileName }}</fd-token\r\n >\r\n </ng-container>\r\n </ng-container>\r\n <button\r\n fd-button\r\n *ngIf=\"documentItem.MaxFileCount && !readonly\"\r\n glyph=\"attachment\"\r\n [label]=\"'AttachFile' | bbbTranslate\"\r\n (click)=\"!readonly && uploader.open()\"\r\n ></button>\r\n <fd-file-uploader\r\n #uploader\r\n [style.display]=\"'none'\"\r\n fd-toolbar-item\r\n [id]=\"documentItem.ItemKey\"\r\n [name]=\"'pictures_' + documentItem.ItemKey\"\r\n [accept]=\"documentItem.$ValidExtensions\"\r\n [fileLimit]=\"documentItem.MaxFileCount\"\r\n [multiple]=\"documentItem.MaxFileCount > 0\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n ></fd-file-uploader>\r\n </div>\r\n </div>\r\n </div>\r\n <div fd-list-byline-right *ngIf=\"documentItem.CanAccept\">\r\n <bdc-accept-reject\r\n [rejectedReason]=\"rejectedReason\"\r\n [positiveText]=\"acceptedText\"\r\n [negativeText]=\"rejectedText\"\r\n [deviceSize]=\"deviceSize\"\r\n [readonly]=\"readonly\"\r\n ></bdc-accept-reject>\r\n </div>\r\n </div>\r\n </div>\r\n </li> -->\r\n\r\n<tr fd-table-row>\r\n <td fd-table-cell>\r\n @if (documentItem.Avatar && !files.length) {\r\n <fd-avatar\r\n size=\"s\"\r\n [image]=\"documentItem.Avatar.FileId | picFieldSrc: 'ID':null:'':64:64\"\r\n [clickable]=\"true\"\r\n [transparent]=\"true\"\r\n ></fd-avatar>\r\n } @else { @if (files.length) {\r\n <fd-avatar [transparent]=\"true\" size=\"s\" [image]=\"firstImageUrl\" [clickable]=\"true\"></fd-avatar>\r\n } @if (!files.length) {\r\n <fd-avatar [transparent]=\"true\" size=\"s\" [glyph]=\"documentItem.FontIcon\" [clickable]=\"true\"></fd-avatar>\r\n } }\r\n </td>\r\n <td fd-table-cell style=\"min-width: 140px\">\r\n <p fd-table-text>\r\n <strong\r\n >{{ documentItem.Title }}\r\n @if (documentItem.IsRequired) {\r\n <span fd-object-status status=\"negative\">*({{ '\u0627\u062C\u0628\u0627\u0631\u06CC' | bbbTranslate }}) </span>\r\n }\r\n </strong>\r\n </p>\r\n <div>\r\n <span>\r\n {{ documentItem.Description }}\r\n </span>\r\n </div>\r\n </td>\r\n\r\n <td fd-table-cell>\r\n <ng-container>\r\n <!-- <ul fd-list>\r\n <li fd-list-item *ngFor=\"let file of files; let ind = index\">\r\n <span fd-list-title>\r\n {{ file.FileName }}\r\n </span>\r\n <span fd-list-secondary>\r\n <button ariaLabel=\"Remove\" title=\"Remove\" fd-button glyph=\"delete\" ></button>\r\n </span>\r\n </li>\r\n </ul> -->\r\n <div style=\"display: flex; align-items: flex-start; column-gap: 3px; row-gap: 3px; flex-direction: column\">\r\n @for (file of files; track file) {\r\n <!-- <span><fd-icon glyph=\"attachment\"></fd-icon><a fd-link>{{file.FileName}}</a></span> -->\r\n @if (!file.IsDeleted) {\r\n <bsu-file-viewer-popover\r\n [file]=\"file\"\r\n [deviceSize]=\"deviceSize\"\r\n [canDownload]=\"true\"\r\n (remove)=\"removeFile.emit(file)\"\r\n ></bsu-file-viewer-popover>\r\n } }\r\n <!-- <button\r\n fd-button\r\n *ngIf=\"+documentItem.MaxFileCount && !readonly\"\r\n glyph=\"add\"\r\n (click)=\"!readonly && uploader.open()\"\r\n ></button> -->\r\n </div>\r\n <!-- <p *ngFor=\"let file of files\" fd-table-text>\r\n <fd-action-sheet >\r\n <fd-action-sheet-control>\r\n <button\r\n fd-button\r\n glyph=\"settings\"\r\n title=\"Open Action Sheet Mobile\"\r\n id=\"fd-action-sheet-mobile-control\"\r\n aria-haspopup=\"menu\"\r\n [label]=\"file.FileName ||''\"\r\n aria-controls=\"fd-action-sheet-mobile-body\"\r\n ></button>\r\n </fd-action-sheet-control>\r\n\r\n <fd-action-sheet-body\r\n actionSheetBodyId=\"fd-action-sheet-mobile-body\"\r\n ariaLabelledBy=\"fd-action-sheet-mobile-control\"\r\n >\r\n <li fd-action-sheet-item label=\"Search\" glyph=\"search\"></li>\r\n <li fd-action-sheet-item label=\"Download\" glyph=\"download\" ></li>\r\n <li fd-action-sheet-item label=\"Accept\" glyph=\"accept\" ></li>\r\n <li fd-action-sheet-item label=\"Reject\" glyph=\"cancel\" ></li>\r\n <li fd-action-sheet-item label=\"Decide Later\" [isCloseButton]=\"true\"></li>\r\n <li fd-action-sheet-item label=\"Cancel\" [negative]=\"true\" [isCloseButton]=\"true\"></li>\r\n </fd-action-sheet-body>\r\n </fd-action-sheet>\r\n </p> -->\r\n </ng-container>\r\n </td>\r\n <td fd-table-cell>\r\n <div class=\"status\" style=\"position: relative\">\r\n @if (+documentItem.MaxFileCount && !readonly) {\r\n <button\r\n fd-button\r\n glyph=\"attachment\"\r\n [label]=\"'AttachFile' | bbbTranslate\"\r\n [disabled]=\"uploadingState?.key === documentItem.Title && uploadingState?.uploading\"\r\n (click)=\"!readonly && uploader.open()\"\r\n >\r\n @if (uploadingState?.key === documentItem.Title && uploadingState?.uploading) {\r\n <bsu-mask [marginTop]=\"'3px'\"></bsu-mask>\r\n }\r\n </button>\r\n }\r\n <button\r\n fd-button\r\n glyph=\"show\"\r\n fullscreenFiles\r\n [files]=\"files\"\r\n [title]=\"documentItem.Title\"\r\n [fd-inline-help]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\r\n [aria-describedby]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\r\n [ariaLabel]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\r\n fullscreenFiles\r\n [disabled]=\"!files.length\"\r\n [files]=\"files\"\r\n ></button>\r\n <button\r\n fd-button\r\n glyph=\"download\"\r\n [fd-inline-help]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\r\n [aria-describedby]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\r\n [ariaLabel]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\r\n downloadFiles\r\n [disabled]=\"!files.length\"\r\n [files]=\"files\"\r\n (click)=\"downloadAll.emit()\"\r\n ></button>\r\n </div>\r\n </td>\r\n <td fd-table-cell>\r\n <fd-action-sheet #actionSheet>\r\n <fd-action-sheet-control>\r\n <ng-container *ngTemplateOutlet=\"statusTpl\"></ng-container>\r\n </fd-action-sheet-control>\r\n <fd-action-sheet-body>\r\n <li\r\n fd-action-sheet-item\r\n [label]=\"'Accept' | bbbTranslate\"\r\n glyph=\"accept\"\r\n (click)=\"actionSheet.close(); onReject(2)\"\r\n ></li>\r\n <li\r\n fd-action-sheet-item\r\n [label]=\"'Reject' | bbbTranslate\"\r\n glyph=\"cancel\"\r\n (click)=\"actionSheet.close(); onReject(3)\"\r\n ></li>\r\n </fd-action-sheet-body>\r\n </fd-action-sheet>\r\n\r\n @if (status === 3) {\r\n <p fd-table-text maxWidth=\"400px\">\r\n @if (readonly && rejectedReason) {\r\n <span> {{ rejectedReason | bbbTranslate }} </span>\r\n } @if (!readonly) {\r\n <input\r\n fd-form-control\r\n [value]=\"rejectedReason | bbbTranslate\"\r\n [placeholder]=\"'\u062F\u0644\u0627\u06CC\u0644 \u0631\u062F \u0645\u062F\u0631\u06A9' | bbbTranslate\"\r\n />\r\n }\r\n </p>\r\n }\r\n </td>\r\n</tr>\r\n\r\n<fd-file-uploader\r\n #uploader\r\n [style.display]=\"'none'\"\r\n fd-toolbar-item\r\n [id]=\"documentItem.ItemKey\"\r\n [name]=\"'pictures_' + documentItem.ItemKey\"\r\n [accept]=\"documentItem.$ValidExtensions\"\r\n [fileLimit]=\"documentItem.MaxFileCount\"\r\n [multiple]=\"documentItem.MaxFileCount > 0\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n></fd-file-uploader>\r\n<ng-template #statusTpl>\r\n <div class=\"status\">\r\n <button fd-button fdType=\"transparent\">\r\n @if (status === 1) {\r\n <span\r\n fd-object-status\r\n [label]=\"'[\u067E\u06CC\u0648\u0633\u062A \u0645\u062F\u0627\u0631\u06A9]' | bbbTranslate\"\r\n [aria-label]=\"'[\u067E\u06CC\u0648\u0633\u062A \u0645\u062F\u0627\u0631\u06A9]' | bbbTranslate\"\r\n ></span>\r\n } @if (status === 2) {\r\n <span\r\n fd-object-status\r\n glyph=\"message-success\"\r\n status=\"positive\"\r\n [label]=\"'Accepted' | bbbTranslate\"\r\n [label]=\"'Accepted' | bbbTranslate\"\r\n ></span>\r\n } @if (status === 3) {\r\n <span\r\n fd-object-status\r\n glyph=\"cancel\"\r\n status=\"negative\"\r\n [label]=\"'Rejected' | bbbTranslate\"\r\n [aria-label]=\"'Rejected' | bbbTranslate\"\r\n ></span>\r\n }\r\n </button>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:contents}::ng-deep .fd-list--byline .fd-list__byline-left,::ng-deep .fd-list--byline .fd-list__byline-right{line-height:1.1rem!important}.fd-list__byline.smallSize{flex-direction:column;row-gap:5px}.fd-list__byline.smallSize div{width:100%}td{white-space:nowrap;padding:.5rem}fd-avatar ::ng-deep i{font-size:2.3rem!important}.status{display:flex;align-items:center;column-gap:3px;row-gap:3px}.status span.fd-object-status{font-size:var(--sapFontSize)!important;font-weight:700!important}.status span.fd-object-status ::ng-deep fd-icon{font-size:var(--sapFontSize);font-weight:700}\n"], dependencies: [{ kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i3.FileViewerPopoverComponent, selector: "bsu-file-viewer-popover", inputs: ["files", "file", "deviceSize", "canDownload", "disableRemove", "fdType"], outputs: ["remove"] }, { kind: "directive", type: i3.FullscreenFilesDirective, selector: "[fullscreenFiles]", inputs: ["files", "title", "deviceSize", "isImageGallery", "component"] }, { kind: "directive", type: i3.DownloadFilesDirective, selector: "[downloadFiles]", inputs: ["files"] }, { kind: "component", type: i4.ActionSheetComponent, selector: "fd-action-sheet", inputs: ["mobile", "placement", "noArrow", "isOpen", "keyboardSupport", "triggers"], outputs: ["focusEscapeList", "isOpenChange"] }, { kind: "component", type: i4.ActionSheetControlComponent, selector: "fd-action-sheet-control", outputs: ["clicked"] }, { kind: "component", type: i4.ActionSheetItemComponent, selector: "[fd-action-sheet-item]", inputs: ["label", "glyph", "glyphFont", "negative", "isCloseButton", "disabled"], outputs: ["keyDown"] }, { kind: "component", type: i4.ActionSheetBodyComponent, selector: "fd-action-sheet-body", inputs: ["actionSheetBodyId", "mobile", "ariaLabel", "ariaLabelledby"] }, { kind: "component", type: i5.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "colorIndication", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.FileUploaderComponent, selector: "fd-file-uploader", inputs: ["disabled", "required", "multiple", "accept", "dragndrop", "maxFileSize", "minFileSize", "id", "ariaLabel", "ariaLabelledBy", "placeholder", "buttonLabel", "buttonAriaLabel", "state", "fileLimit", "inputHidden", "width"], outputs: ["selectedFilesChanged", "selectedInvalidFiles", "onDragEnter", "onDragLeave"] }, { kind: "component", type: i8.FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i9.InlineHelpDirective, selector: "[fd-inline-help]:not([fd-inline-help-template]), [fd-inline-help-template]:not([fd-inline-help])", inputs: ["triggers", "noArrow", "closeOnEscapeKey", "closeOnOutsideClick", "fd-inline-help"] }, { kind: "component", type: i10.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "glyphFont", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large", "secondaryIndication", "textTemplate"] }, { kind: "directive", type: i11.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i11.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "nonInteractive", "key"] }, { kind: "directive", type: i11.TableTextDirective, selector: "[fdTableText], [fd-table-text]", inputs: ["fdTableTextClass", "noWrap", "title", "maxWidth"] }, { kind: "directive", type: i12.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
69
+ }
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaDocumentListItemComponent, decorators: [{
71
+ type: Component,
72
+ args: [{ selector: 'bdc-barsa-document-list-item', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<!-- <li fd-list-item style=\"padding: 0.5rem 1rem\">\r\n<span fd-list-thumbnail>\r\n <fd-icon *ngIf=\"documentItem.FontIcon\" [glyph]=\"documentItem.FontIcon\"></fd-icon>\r\n <fd-avatar\r\n *ngIf=\"documentItem.Avatar\"\r\n size=\"s\"\r\n [image]=\"documentItem.Avatar.FileId | picFieldSrc: 'ID':null:''\"\r\n [clickable]=\"true\"\r\n ></fd-avatar\r\n ></span>\r\n\r\n <div fd-list-content>\r\n <div fd-list-title>\r\n <div style=\"display: flex; column-gap: 3px\">\r\n <strong\r\n >{{ documentItem.Title }}\r\n <span fd-object-status status=\"negative\" *ngIf=\"documentItem.IsRequired\"\r\n >*({{ '\u0627\u062C\u0628\u0627\u0631\u06CC' | bbbTranslate }})\r\n </span>\r\n </strong>\r\n <div\r\n *ngIf=\"documentItem.$Accepted === false || documentItem.$Accepted === true\"\r\n style=\"display: flex; column-gap: 3px; flex-wrap: wrap; align-items: center\"\r\n >\r\n <span\r\n fd-object-status\r\n [status]=\"accepted ? 'positive' : 'negative'\"\r\n [label]=\"accepted ? acceptedText : rejectedText\"\r\n [clickable]=\"true\"\r\n [inverted]=\"true\"\r\n [aria-label]=\"accepted ? acceptedText : rejectedText\"\r\n ></span>\r\n <fd-popover title=\"Rejected document\" *ngIf=\"rejectedReason && !accepted\">\r\n <fd-popover-control>\r\n <span\r\n fd-object-status\r\n status=\"negative\"\r\n glyph=\"question-mark\"\r\n glyphAriaLabel=\"Negative\"\r\n title=\"Rejected document\"\r\n ></span>\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n <fd-message-strip type=\"error\" [dismissible]=\"false\">\r\n {{ rejectedReason }}\r\n </fd-message-strip>\r\n </fd-popover-body>\r\n </fd-popover>\r\n </div>\r\n </div>\r\n </div>\r\n <div fd-list-byline [twoCol]=\"true\" [class.smallSize]=\"deviceSize === 's'\">\r\n <div fd-list-byline-left>\r\n <div style=\"display: flex; flex-direction: column; row-gap: 5px; flex-wrap: wrap\">\r\n <span>\r\n {{ documentItem.Description }}\r\n </span>\r\n <div style=\"display: flex; flex-wrap: wrap; column-gap: 3px; align-items: center\">\r\n <ng-container *ngIf=\"hasFiles\">\r\n <button fd-button [fdType]=\"'transparent'\" glyph=\"show\" (click)=\"onFullscreen()\"></button>\r\n <ng-container *ngFor=\"let file of files\">\r\n <fd-token\r\n [readOnly]=\"readonly\"\r\n *ngIf=\"!file.IsDeleted\"\r\n (onCloseClick)=\"onRemoveFile(file)\"\r\n >{{ file.FileName }}</fd-token\r\n >\r\n </ng-container>\r\n </ng-container>\r\n <button\r\n fd-button\r\n *ngIf=\"documentItem.MaxFileCount && !readonly\"\r\n glyph=\"attachment\"\r\n [label]=\"'AttachFile' | bbbTranslate\"\r\n (click)=\"!readonly && uploader.open()\"\r\n ></button>\r\n <fd-file-uploader\r\n #uploader\r\n [style.display]=\"'none'\"\r\n fd-toolbar-item\r\n [id]=\"documentItem.ItemKey\"\r\n [name]=\"'pictures_' + documentItem.ItemKey\"\r\n [accept]=\"documentItem.$ValidExtensions\"\r\n [fileLimit]=\"documentItem.MaxFileCount\"\r\n [multiple]=\"documentItem.MaxFileCount > 0\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n ></fd-file-uploader>\r\n </div>\r\n </div>\r\n </div>\r\n <div fd-list-byline-right *ngIf=\"documentItem.CanAccept\">\r\n <bdc-accept-reject\r\n [rejectedReason]=\"rejectedReason\"\r\n [positiveText]=\"acceptedText\"\r\n [negativeText]=\"rejectedText\"\r\n [deviceSize]=\"deviceSize\"\r\n [readonly]=\"readonly\"\r\n ></bdc-accept-reject>\r\n </div>\r\n </div>\r\n </div>\r\n </li> -->\r\n\r\n<tr fd-table-row>\r\n <td fd-table-cell>\r\n @if (documentItem.Avatar && !files.length) {\r\n <fd-avatar\r\n size=\"s\"\r\n [image]=\"documentItem.Avatar.FileId | picFieldSrc: 'ID':null:'':64:64\"\r\n [clickable]=\"true\"\r\n [transparent]=\"true\"\r\n ></fd-avatar>\r\n } @else { @if (files.length) {\r\n <fd-avatar [transparent]=\"true\" size=\"s\" [image]=\"firstImageUrl\" [clickable]=\"true\"></fd-avatar>\r\n } @if (!files.length) {\r\n <fd-avatar [transparent]=\"true\" size=\"s\" [glyph]=\"documentItem.FontIcon\" [clickable]=\"true\"></fd-avatar>\r\n } }\r\n </td>\r\n <td fd-table-cell style=\"min-width: 140px\">\r\n <p fd-table-text>\r\n <strong\r\n >{{ documentItem.Title }}\r\n @if (documentItem.IsRequired) {\r\n <span fd-object-status status=\"negative\">*({{ '\u0627\u062C\u0628\u0627\u0631\u06CC' | bbbTranslate }}) </span>\r\n }\r\n </strong>\r\n </p>\r\n <div>\r\n <span>\r\n {{ documentItem.Description }}\r\n </span>\r\n </div>\r\n </td>\r\n\r\n <td fd-table-cell>\r\n <ng-container>\r\n <!-- <ul fd-list>\r\n <li fd-list-item *ngFor=\"let file of files; let ind = index\">\r\n <span fd-list-title>\r\n {{ file.FileName }}\r\n </span>\r\n <span fd-list-secondary>\r\n <button ariaLabel=\"Remove\" title=\"Remove\" fd-button glyph=\"delete\" ></button>\r\n </span>\r\n </li>\r\n </ul> -->\r\n <div style=\"display: flex; align-items: flex-start; column-gap: 3px; row-gap: 3px; flex-direction: column\">\r\n @for (file of files; track file) {\r\n <!-- <span><fd-icon glyph=\"attachment\"></fd-icon><a fd-link>{{file.FileName}}</a></span> -->\r\n @if (!file.IsDeleted) {\r\n <bsu-file-viewer-popover\r\n [file]=\"file\"\r\n [deviceSize]=\"deviceSize\"\r\n [canDownload]=\"true\"\r\n (remove)=\"removeFile.emit(file)\"\r\n ></bsu-file-viewer-popover>\r\n } }\r\n <!-- <button\r\n fd-button\r\n *ngIf=\"+documentItem.MaxFileCount && !readonly\"\r\n glyph=\"add\"\r\n (click)=\"!readonly && uploader.open()\"\r\n ></button> -->\r\n </div>\r\n <!-- <p *ngFor=\"let file of files\" fd-table-text>\r\n <fd-action-sheet >\r\n <fd-action-sheet-control>\r\n <button\r\n fd-button\r\n glyph=\"settings\"\r\n title=\"Open Action Sheet Mobile\"\r\n id=\"fd-action-sheet-mobile-control\"\r\n aria-haspopup=\"menu\"\r\n [label]=\"file.FileName ||''\"\r\n aria-controls=\"fd-action-sheet-mobile-body\"\r\n ></button>\r\n </fd-action-sheet-control>\r\n\r\n <fd-action-sheet-body\r\n actionSheetBodyId=\"fd-action-sheet-mobile-body\"\r\n ariaLabelledBy=\"fd-action-sheet-mobile-control\"\r\n >\r\n <li fd-action-sheet-item label=\"Search\" glyph=\"search\"></li>\r\n <li fd-action-sheet-item label=\"Download\" glyph=\"download\" ></li>\r\n <li fd-action-sheet-item label=\"Accept\" glyph=\"accept\" ></li>\r\n <li fd-action-sheet-item label=\"Reject\" glyph=\"cancel\" ></li>\r\n <li fd-action-sheet-item label=\"Decide Later\" [isCloseButton]=\"true\"></li>\r\n <li fd-action-sheet-item label=\"Cancel\" [negative]=\"true\" [isCloseButton]=\"true\"></li>\r\n </fd-action-sheet-body>\r\n </fd-action-sheet>\r\n </p> -->\r\n </ng-container>\r\n </td>\r\n <td fd-table-cell>\r\n <div class=\"status\" style=\"position: relative\">\r\n @if (+documentItem.MaxFileCount && !readonly) {\r\n <button\r\n fd-button\r\n glyph=\"attachment\"\r\n [label]=\"'AttachFile' | bbbTranslate\"\r\n [disabled]=\"uploadingState?.key === documentItem.Title && uploadingState?.uploading\"\r\n (click)=\"!readonly && uploader.open()\"\r\n >\r\n @if (uploadingState?.key === documentItem.Title && uploadingState?.uploading) {\r\n <bsu-mask [marginTop]=\"'3px'\"></bsu-mask>\r\n }\r\n </button>\r\n }\r\n <button\r\n fd-button\r\n glyph=\"show\"\r\n fullscreenFiles\r\n [files]=\"files\"\r\n [title]=\"documentItem.Title\"\r\n [fd-inline-help]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\r\n [aria-describedby]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\r\n [ariaLabel]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\r\n fullscreenFiles\r\n [disabled]=\"!files.length\"\r\n [files]=\"files\"\r\n ></button>\r\n <button\r\n fd-button\r\n glyph=\"download\"\r\n [fd-inline-help]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\r\n [aria-describedby]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\r\n [ariaLabel]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\r\n downloadFiles\r\n [disabled]=\"!files.length\"\r\n [files]=\"files\"\r\n (click)=\"downloadAll.emit()\"\r\n ></button>\r\n </div>\r\n </td>\r\n <td fd-table-cell>\r\n <fd-action-sheet #actionSheet>\r\n <fd-action-sheet-control>\r\n <ng-container *ngTemplateOutlet=\"statusTpl\"></ng-container>\r\n </fd-action-sheet-control>\r\n <fd-action-sheet-body>\r\n <li\r\n fd-action-sheet-item\r\n [label]=\"'Accept' | bbbTranslate\"\r\n glyph=\"accept\"\r\n (click)=\"actionSheet.close(); onReject(2)\"\r\n ></li>\r\n <li\r\n fd-action-sheet-item\r\n [label]=\"'Reject' | bbbTranslate\"\r\n glyph=\"cancel\"\r\n (click)=\"actionSheet.close(); onReject(3)\"\r\n ></li>\r\n </fd-action-sheet-body>\r\n </fd-action-sheet>\r\n\r\n @if (status === 3) {\r\n <p fd-table-text maxWidth=\"400px\">\r\n @if (readonly && rejectedReason) {\r\n <span> {{ rejectedReason | bbbTranslate }} </span>\r\n } @if (!readonly) {\r\n <input\r\n fd-form-control\r\n [value]=\"rejectedReason | bbbTranslate\"\r\n [placeholder]=\"'\u062F\u0644\u0627\u06CC\u0644 \u0631\u062F \u0645\u062F\u0631\u06A9' | bbbTranslate\"\r\n />\r\n }\r\n </p>\r\n }\r\n </td>\r\n</tr>\r\n\r\n<fd-file-uploader\r\n #uploader\r\n [style.display]=\"'none'\"\r\n fd-toolbar-item\r\n [id]=\"documentItem.ItemKey\"\r\n [name]=\"'pictures_' + documentItem.ItemKey\"\r\n [accept]=\"documentItem.$ValidExtensions\"\r\n [fileLimit]=\"documentItem.MaxFileCount\"\r\n [multiple]=\"documentItem.MaxFileCount > 0\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n></fd-file-uploader>\r\n<ng-template #statusTpl>\r\n <div class=\"status\">\r\n <button fd-button fdType=\"transparent\">\r\n @if (status === 1) {\r\n <span\r\n fd-object-status\r\n [label]=\"'[\u067E\u06CC\u0648\u0633\u062A \u0645\u062F\u0627\u0631\u06A9]' | bbbTranslate\"\r\n [aria-label]=\"'[\u067E\u06CC\u0648\u0633\u062A \u0645\u062F\u0627\u0631\u06A9]' | bbbTranslate\"\r\n ></span>\r\n } @if (status === 2) {\r\n <span\r\n fd-object-status\r\n glyph=\"message-success\"\r\n status=\"positive\"\r\n [label]=\"'Accepted' | bbbTranslate\"\r\n [label]=\"'Accepted' | bbbTranslate\"\r\n ></span>\r\n } @if (status === 3) {\r\n <span\r\n fd-object-status\r\n glyph=\"cancel\"\r\n status=\"negative\"\r\n [label]=\"'Rejected' | bbbTranslate\"\r\n [aria-label]=\"'Rejected' | bbbTranslate\"\r\n ></span>\r\n }\r\n </button>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:contents}::ng-deep .fd-list--byline .fd-list__byline-left,::ng-deep .fd-list--byline .fd-list__byline-right{line-height:1.1rem!important}.fd-list__byline.smallSize{flex-direction:column;row-gap:5px}.fd-list__byline.smallSize div{width:100%}td{white-space:nowrap;padding:.5rem}fd-avatar ::ng-deep i{font-size:2.3rem!important}.status{display:flex;align-items:center;column-gap:3px;row-gap:3px}.status span.fd-object-status{font-size:var(--sapFontSize)!important;font-weight:700!important}.status span.fd-object-status ::ng-deep fd-icon{font-size:var(--sapFontSize);font-weight:700}\n"] }]
73
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.PictureFieldSourcePipe }], propDecorators: { documentItem: [{
74
+ type: Input
75
+ }], deviceSize: [{
76
+ type: Input
77
+ }], files: [{
78
+ type: Input
79
+ }], accepted: [{
80
+ type: Input
81
+ }], rejectedReason: [{
82
+ type: Input
83
+ }], readonly: [{
84
+ type: Input
85
+ }], status: [{
86
+ type: Input
87
+ }], uploadingState: [{
88
+ type: Input
89
+ }], statusChanged: [{
90
+ type: Output
91
+ }], rejectTextChange: [{
92
+ type: Output
93
+ }], fileSelectionChange: [{
94
+ type: Output
95
+ }], removeFile: [{
96
+ type: Output
97
+ }], fullscreen: [{
98
+ type: Output
99
+ }], download: [{
100
+ type: Output
101
+ }], downloadAll: [{
102
+ type: Output
103
+ }] } });
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtZG9jdW1lbnQtbGlzdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLWRldmVsb3AtY29tcG9uZW50cy9zcmMvbGliL2JhcnNhLWRvY3VtZW50LWxpc3QtaXRlbS9iYXJzYS1kb2N1bWVudC1saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtZGV2ZWxvcC1jb21wb25lbnRzL3NyYy9saWIvYmFyc2EtZG9jdW1lbnQtbGlzdC1pdGVtL2JhcnNhLWRvY3VtZW50LWxpc3QtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUgsYUFBYSxFQUNiLGFBQWEsRUFFYixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixnQkFBZ0IsRUFFaEIsT0FBTyxFQUNQLE9BQU8sRUFFVixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQVU5QixNQUFNLE9BQU8sOEJBQStCLFNBQVEsYUFBYTtJQXFCN0QsWUFBb0IsSUFBdUIsRUFBVSxZQUFvQztRQUNyRixLQUFLLEVBQUUsQ0FBQztRQURRLFNBQUksR0FBSixJQUFJLENBQW1CO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQXdCO1FBVi9FLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQTJDLENBQUM7UUFDNUUscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUM5Qyx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ2pELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQUNwRCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQTZCLENBQUM7UUFD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Q0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBTaW1wbGVDaGFuZ2VzXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgICBBYmJyZXZhdGlvbkRldmljZVNpemUsXHJcbiAgICBBdWRpb01pbWVUeXBlLFxyXG4gICAgQmFzZUNvbXBvbmVudCxcclxuICAgIEZpbGVBdHRhY2htZW50SW5mbyxcclxuICAgIEltYWdlTWltZVR5cGUsXHJcbiAgICBQcmV2ZW50RGVmYXVsRXZlbnQsXHJcbiAgICBWaWRlb01pbWVUeXBlLFxyXG4gICAgQWxsRmlsZXNNaW1lVHlwZSxcclxuICAgIFBpY3R1cmVGaWVsZFNvdXJjZVBpcGUsXHJcbiAgICBpc0ltYWdlLFxyXG4gICAgZ2V0SWNvbixcclxuICAgIElVcGxvYWRpbmdTdGF0ZVxyXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuaW1wb3J0IHsgRG9jdW1lbnRJdGVtIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdiZGMtYmFyc2EtZG9jdW1lbnQtbGlzdC1pdGVtJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS1kb2N1bWVudC1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vYmFyc2EtZG9jdW1lbnQtbGlzdC1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYXJzYURvY3VtZW50TGlzdEl0ZW1Db21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICAgIEBJbnB1dCgpIGRvY3VtZW50SXRlbTogRG9jdW1lbnRJdGVtO1xyXG5cclxuICAgIEBJbnB1dCgpIGRldmljZVNpemU6IEFiYnJldmF0aW9uRGV2aWNlU2l6ZTtcclxuICAgIEBJbnB1dCgpIGZpbGVzOiBGaWxlQXR0YWNobWVudEluZm9bXTtcclxuICAgIEBJbnB1dCgpIGFjY2VwdGVkOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgcmVqZWN0ZWRSZWFzb246IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgc3RhdHVzOiBudW1iZXI7XHJcbiAgICBASW5wdXQoKSB1cGxvYWRpbmdTdGF0ZTogSVVwbG9hZGluZ1N0YXRlO1xyXG5cclxuICAgIEBPdXRwdXQoKSBzdGF0dXNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx7IHZhbHVlOiBudW1iZXI7IHJlamVjdGVkVGV4dDogc3RyaW5nIH0+KCk7XHJcbiAgICBAT3V0cHV0KCkgcmVqZWN0VGV4dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gICAgQE91dHB1dCgpIGZpbGVTZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVbXT4oKTtcclxuICAgIEBPdXRwdXQoKSByZW1vdmVGaWxlID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlQXR0YWNobWVudEluZm8+KCk7XHJcbiAgICBAT3V0cHV0KCkgZnVsbHNjcmVlbiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVsbCB8IEZpbGVBdHRhY2htZW50SW5mbz4oKTtcclxuICAgIEBPdXRwdXQoKSBkb3dubG9hZCA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZUF0dGFjaG1lbnRJbmZvPigpO1xyXG4gICAgQE91dHB1dCgpIGRvd25sb2FkQWxsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIGhhc0ZpbGVzID0gZmFsc2U7XHJcbiAgICBmaXJzdEltYWdlVXJsOiBhbnk7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIF9waWNGaWVsZFNyYzogUGljdHVyZUZpZWxkU291cmNlUGlwZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIGNvbnN0IGRvY3VtZW50SXRlbSA9IHRoaXMuZG9jdW1lbnRJdGVtO1xyXG4gICAgICAgIGRvY3VtZW50SXRlbS4kVmFsaWRFeHRlbnNpb25zID0gYCAgICAgICAgICAgIFxyXG4gICAgICAgICR7ZG9jdW1lbnRJdGVtLlN1cHBvcnRJbWFnZSA/IEltYWdlTWltZVR5cGUgOiAnJ30sXHJcbiAgICAgICAgJHtkb2N1bWVudEl0ZW0uU3VwcG9ydEF1ZGlvID8gQXVkaW9NaW1lVHlwZSA6ICcnfSxcclxuICAgICAgICAke2RvY3VtZW50SXRlbS5TdXBwb3J0VmlkZW8gPyBWaWRlb01pbWVUeXBlIDogJyd9LFxyXG4gICAgICAgICR7ZG9jdW1lbnRJdGVtLlN1cHBvcnRGaWxlID8gQWxsRmlsZXNNaW1lVHlwZSA6ICcnfVxyXG4gICAgICAgIGA7XHJcbiAgICB9XHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgICAgICAgY29uc3QgeyBmaWxlcyB9ID0gY2hhbmdlcztcclxuICAgICAgICBmaWxlcyAmJiBBcnJheS5pc0FycmF5KGZpbGVzLmN1cnJlbnRWYWx1ZSkgJiYgdGhpcy5fc2V0Rmlyc3RJbWFnZShmaWxlcy5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIG9uUmVqZWN0KGU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc3RhdHVzQ2hhbmdlZC5lbWl0KHsgdmFsdWU6IGUsIHJlamVjdGVkVGV4dDogZSA9PT0gMiA/ICcnIDogdGhpcy5yZWplY3RlZFJlYXNvbiB9KTtcclxuICAgIH1cclxuICAgIG9uUmVqZWN0ZWRUZXh0Q2hhbmdlKGUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnJlamVjdFRleHRDaGFuZ2UuZW1pdChlLnRhcmdldC52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBvblByZXZlbnRDbGljayhlKTogdm9pZCB7XHJcbiAgICAgICAgUHJldmVudERlZmF1bEV2ZW50KGUpO1xyXG4gICAgfVxyXG4gICAgb25GaWxlU2VsZWN0aW9uKGZpbGVzOiBGaWxlW10pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZpbGVTZWxlY3Rpb25DaGFuZ2UuZW1pdChmaWxlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9zZXRGaXJzdEltYWdlKGZpbGVzOiBGaWxlQXR0YWNobWVudEluZm9bXSk6IHZvaWQge1xyXG4gICAgICAgIGZpbGVzLmxlbmd0aCAmJlxyXG4gICAgICAgICAgICAodGhpcy5maXJzdEltYWdlVXJsID0gaXNJbWFnZShmaWxlc1swXS5UeXBlKVxyXG4gICAgICAgICAgICAgICAgPyB0aGlzLl9waWNGaWVsZFNyYy50cmFuc2Zvcm0oZmlsZXNbMF0uSWQsICdJRCcsIG51bGwsICcnLCAxMjAsIDEyMClcclxuICAgICAgICAgICAgICAgIDogZ2V0SWNvbihmaWxlc1swXS5UeXBlKSk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2RldGVjdENoYW5nZXMoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxufVxyXG4iLCI8IS0tIDxsaSBmZC1saXN0LWl0ZW0gc3R5bGU9XCJwYWRkaW5nOiAwLjVyZW0gMXJlbVwiPlxyXG48c3BhbiBmZC1saXN0LXRodW1ibmFpbD5cclxuICA8ZmQtaWNvbiAqbmdJZj1cImRvY3VtZW50SXRlbS5Gb250SWNvblwiIFtnbHlwaF09XCJkb2N1bWVudEl0ZW0uRm9udEljb25cIj48L2ZkLWljb24+XHJcbiAgPGZkLWF2YXRhclxyXG4gICAgKm5nSWY9XCJkb2N1bWVudEl0ZW0uQXZhdGFyXCJcclxuICAgIHNpemU9XCJzXCJcclxuICAgIFtpbWFnZV09XCJkb2N1bWVudEl0ZW0uQXZhdGFyLkZpbGVJZCB8IHBpY0ZpZWxkU3JjOiAnSUQnOm51bGw6JydcIlxyXG4gICAgW2NsaWNrYWJsZV09XCJ0cnVlXCJcclxuICAgID48L2ZkLWF2YXRhclxyXG4gID48L3NwYW4+XHJcblxyXG4gIDxkaXYgZmQtbGlzdC1jb250ZW50PlxyXG4gICAgPGRpdiBmZC1saXN0LXRpdGxlPlxyXG4gICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgY29sdW1uLWdhcDogM3B4XCI+XHJcbiAgICAgICAgPHN0cm9uZ1xyXG4gICAgICAgICAgPnt7IGRvY3VtZW50SXRlbS5UaXRsZSB9fVxyXG4gICAgICAgICAgPHNwYW4gZmQtb2JqZWN0LXN0YXR1cyBzdGF0dXM9XCJuZWdhdGl2ZVwiICpuZ0lmPVwiZG9jdW1lbnRJdGVtLklzUmVxdWlyZWRcIlxyXG4gICAgICAgICAgICA+Kih7eyAn2KfYrNio2KfYsduMJyB8IGJiYlRyYW5zbGF0ZSB9fSlcclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L3N0cm9uZz5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cImRvY3VtZW50SXRlbS4kQWNjZXB0ZWQgPT09IGZhbHNlIHx8IGRvY3VtZW50SXRlbS4kQWNjZXB0ZWQgPT09IHRydWVcIlxyXG4gICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBjb2x1bW4tZ2FwOiAzcHg7IGZsZXgtd3JhcDogd3JhcDsgYWxpZ24taXRlbXM6IGNlbnRlclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBmZC1vYmplY3Qtc3RhdHVzXHJcbiAgICAgICAgICAgIFtzdGF0dXNdPVwiYWNjZXB0ZWQgPyAncG9zaXRpdmUnIDogJ25lZ2F0aXZlJ1wiXHJcbiAgICAgICAgICAgIFtsYWJlbF09XCJhY2NlcHRlZCA/IGFjY2VwdGVkVGV4dCA6IHJlamVjdGVkVGV4dFwiXHJcbiAgICAgICAgICAgIFtjbGlja2FibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFtpbnZlcnRlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2FyaWEtbGFiZWxdPVwiYWNjZXB0ZWQgPyBhY2NlcHRlZFRleHQgOiByZWplY3RlZFRleHRcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgIDxmZC1wb3BvdmVyIHRpdGxlPVwiUmVqZWN0ZWQgZG9jdW1lbnRcIiAqbmdJZj1cInJlamVjdGVkUmVhc29uICYmICFhY2NlcHRlZFwiPlxyXG4gICAgICAgICAgICA8ZmQtcG9wb3Zlci1jb250cm9sPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBmZC1vYmplY3Qtc3RhdHVzXHJcbiAgICAgICAgICAgICAgICBzdGF0dXM9XCJuZWdhdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICBnbHlwaD1cInF1ZXN0aW9uLW1hcmtcIlxyXG4gICAgICAgICAgICAgICAgZ2x5cGhBcmlhTGFiZWw9XCJOZWdhdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICB0aXRsZT1cIlJlamVjdGVkIGRvY3VtZW50XCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2ZkLXBvcG92ZXItY29udHJvbD5cclxuICAgICAgICAgICAgPGZkLXBvcG92ZXItYm9keT5cclxuICAgICAgICAgICAgICA8ZmQtbWVzc2FnZS1zdHJpcCB0eXBlPVwiZXJyb3JcIiBbZGlzbWlzc2libGVdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgIHt7IHJlamVjdGVkUmVhc29uIH19XHJcbiAgICAgICAgICAgICAgPC9mZC1tZXNzYWdlLXN0cmlwPlxyXG4gICAgICAgICAgICA8L2ZkLXBvcG92ZXItYm9keT5cclxuICAgICAgICAgIDwvZmQtcG9wb3Zlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgZmQtbGlzdC1ieWxpbmUgW3R3b0NvbF09XCJ0cnVlXCIgW2NsYXNzLnNtYWxsU2l6ZV09XCJkZXZpY2VTaXplID09PSAncydcIj5cclxuICAgICAgPGRpdiBmZC1saXN0LWJ5bGluZS1sZWZ0PlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyByb3ctZ2FwOiA1cHg7IGZsZXgtd3JhcDogd3JhcFwiPlxyXG4gICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgIHt7IGRvY3VtZW50SXRlbS5EZXNjcmlwdGlvbiB9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgY29sdW1uLWdhcDogM3B4OyBhbGlnbi1pdGVtczogY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNGaWxlc1wiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gZmQtYnV0dG9uIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiIGdseXBoPVwic2hvd1wiIChjbGljayk9XCJvbkZ1bGxzY3JlZW4oKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZXNcIj5cclxuICAgICAgICAgICAgICAgIDxmZC10b2tlblxyXG4gICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIiFmaWxlLklzRGVsZXRlZFwiXHJcbiAgICAgICAgICAgICAgICAgIChvbkNsb3NlQ2xpY2spPVwib25SZW1vdmVGaWxlKGZpbGUpXCJcclxuICAgICAgICAgICAgICAgICAgPnt7IGZpbGUuRmlsZU5hbWUgfX08L2ZkLXRva2VuXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJkb2N1bWVudEl0ZW0uTWF4RmlsZUNvdW50ICYmICFyZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICBnbHlwaD1cImF0dGFjaG1lbnRcIlxyXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidBdHRhY2hGaWxlJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiIXJlYWRvbmx5ICYmIHVwbG9hZGVyLm9wZW4oKVwiXHJcbiAgICAgICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxmZC1maWxlLXVwbG9hZGVyXHJcbiAgICAgICAgICAgICAgICAjdXBsb2FkZXJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cIidub25lJ1wiXHJcbiAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgICAgIFtpZF09XCJkb2N1bWVudEl0ZW0uSXRlbUtleVwiXHJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCIncGljdHVyZXNfJyArIGRvY3VtZW50SXRlbS5JdGVtS2V5XCJcclxuICAgICAgICAgICAgICAgIFthY2NlcHRdPVwiZG9jdW1lbnRJdGVtLiRWYWxpZEV4dGVuc2lvbnNcIlxyXG4gICAgICAgICAgICAgICAgW2ZpbGVMaW1pdF09XCJkb2N1bWVudEl0ZW0uTWF4RmlsZUNvdW50XCJcclxuICAgICAgICAgICAgICAgIFttdWx0aXBsZV09XCJkb2N1bWVudEl0ZW0uTWF4RmlsZUNvdW50ID4gMFwiXHJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWRGaWxlc0NoYW5nZWQpPVwib25GaWxlU2VsZWN0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgICAgID48L2ZkLWZpbGUtdXBsb2FkZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBmZC1saXN0LWJ5bGluZS1yaWdodCAqbmdJZj1cImRvY3VtZW50SXRlbS5DYW5BY2NlcHRcIj5cclxuICAgICAgICAgIDxiZGMtYWNjZXB0LXJlamVjdFxyXG4gICAgICAgICAgICBbcmVqZWN0ZWRSZWFzb25dPVwicmVqZWN0ZWRSZWFzb25cIlxyXG4gICAgICAgICAgICBbcG9zaXRpdmVUZXh0XT1cImFjY2VwdGVkVGV4dFwiXHJcbiAgICAgICAgICAgIFtuZWdhdGl2ZVRleHRdPVwicmVqZWN0ZWRUZXh0XCJcclxuICAgICAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXHJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICA+PC9iZGMtYWNjZXB0LXJlamVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2xpPiAtLT5cclxuXHJcbjx0ciBmZC10YWJsZS1yb3c+XHJcbiAgICA8dGQgZmQtdGFibGUtY2VsbD5cclxuICAgICAgICBAaWYgKGRvY3VtZW50SXRlbS5BdmF0YXIgJiYgIWZpbGVzLmxlbmd0aCkge1xyXG4gICAgICAgIDxmZC1hdmF0YXJcclxuICAgICAgICAgICAgc2l6ZT1cInNcIlxyXG4gICAgICAgICAgICBbaW1hZ2VdPVwiZG9jdW1lbnRJdGVtLkF2YXRhci5GaWxlSWQgfCBwaWNGaWVsZFNyYzogJ0lEJzpudWxsOicnOjY0OjY0XCJcclxuICAgICAgICAgICAgW2NsaWNrYWJsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW3RyYW5zcGFyZW50XT1cInRydWVcIlxyXG4gICAgICAgID48L2ZkLWF2YXRhcj5cclxuICAgICAgICB9IEBlbHNlIHsgQGlmIChmaWxlcy5sZW5ndGgpIHtcclxuICAgICAgICA8ZmQtYXZhdGFyIFt0cmFuc3BhcmVudF09XCJ0cnVlXCIgc2l6ZT1cInNcIiBbaW1hZ2VdPVwiZmlyc3RJbWFnZVVybFwiIFtjbGlja2FibGVdPVwidHJ1ZVwiPjwvZmQtYXZhdGFyPlxyXG4gICAgICAgIH0gQGlmICghZmlsZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgPGZkLWF2YXRhciBbdHJhbnNwYXJlbnRdPVwidHJ1ZVwiIHNpemU9XCJzXCIgW2dseXBoXT1cImRvY3VtZW50SXRlbS5Gb250SWNvblwiIFtjbGlja2FibGVdPVwidHJ1ZVwiPjwvZmQtYXZhdGFyPlxyXG4gICAgICAgIH0gfVxyXG4gICAgPC90ZD5cclxuICAgIDx0ZCBmZC10YWJsZS1jZWxsIHN0eWxlPVwibWluLXdpZHRoOiAxNDBweFwiPlxyXG4gICAgICAgIDxwIGZkLXRhYmxlLXRleHQ+XHJcbiAgICAgICAgICAgIDxzdHJvbmdcclxuICAgICAgICAgICAgICAgID57eyBkb2N1bWVudEl0ZW0uVGl0bGUgfX1cclxuICAgICAgICAgICAgICAgIEBpZiAoZG9jdW1lbnRJdGVtLklzUmVxdWlyZWQpIHtcclxuICAgICAgICAgICAgICAgIDxzcGFuIGZkLW9iamVjdC1zdGF0dXMgc3RhdHVzPVwibmVnYXRpdmVcIj4qKHt7ICfYp9is2KjYp9ix24wnIHwgYmJiVHJhbnNsYXRlIH19KSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvc3Ryb25nPlxyXG4gICAgICAgIDwvcD5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgIHt7IGRvY3VtZW50SXRlbS5EZXNjcmlwdGlvbiB9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L3RkPlxyXG5cclxuICAgIDx0ZCBmZC10YWJsZS1jZWxsPlxyXG4gICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwhLS0gPHVsIGZkLWxpc3Q+XHJcbiAgICAgICAgPGxpIGZkLWxpc3QtaXRlbSAqbmdGb3I9XCJsZXQgZmlsZSBvZiBmaWxlczsgbGV0IGluZCA9IGluZGV4XCI+XHJcbiAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPlxyXG4gICAgICAgICAgICB7eyBmaWxlLkZpbGVOYW1lIH19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBmZC1saXN0LXNlY29uZGFyeT5cclxuICAgICAgICAgICAgPGJ1dHRvbiBhcmlhTGFiZWw9XCJSZW1vdmVcIiB0aXRsZT1cIlJlbW92ZVwiIGZkLWJ1dHRvbiBnbHlwaD1cImRlbGV0ZVwiID48L2J1dHRvbj5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L3VsPiAtLT5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBjb2x1bW4tZ2FwOiAzcHg7IHJvdy1nYXA6IDNweDsgZmxleC1kaXJlY3Rpb246IGNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgQGZvciAoZmlsZSBvZiBmaWxlczsgdHJhY2sgZmlsZSkge1xyXG4gICAgICAgICAgICAgICAgPCEtLSA8c3Bhbj48ZmQtaWNvbiBnbHlwaD1cImF0dGFjaG1lbnRcIj48L2ZkLWljb24+PGEgZmQtbGluaz57e2ZpbGUuRmlsZU5hbWV9fTwvYT48L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICAgICAgQGlmICghZmlsZS5Jc0RlbGV0ZWQpIHtcclxuICAgICAgICAgICAgICAgIDxic3UtZmlsZS12aWV3ZXItcG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICAgIFtmaWxlXT1cImZpbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjYW5Eb3dubG9hZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAocmVtb3ZlKT1cInJlbW92ZUZpbGUuZW1pdChmaWxlKVwiXHJcbiAgICAgICAgICAgICAgICA+PC9ic3UtZmlsZS12aWV3ZXItcG9wb3Zlcj5cclxuICAgICAgICAgICAgICAgIH0gfVxyXG4gICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uXHJcbiAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCIrZG9jdW1lbnRJdGVtLk1heEZpbGVDb3VudCAmJiAhcmVhZG9ubHlcIlxyXG4gICAgICAgIGdseXBoPVwiYWRkXCJcclxuICAgICAgICAoY2xpY2spPVwiIXJlYWRvbmx5ICYmIHVwbG9hZGVyLm9wZW4oKVwiXHJcbiAgICAgID48L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIDxwICpuZ0Zvcj1cImxldCBmaWxlIG9mIGZpbGVzXCIgZmQtdGFibGUtdGV4dD5cclxuICAgIDxmZC1hY3Rpb24tc2hlZXQgID5cclxuICAgICAgPGZkLWFjdGlvbi1zaGVldC1jb250cm9sPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgZ2x5cGg9XCJzZXR0aW5nc1wiXHJcbiAgICAgICAgICB0aXRsZT1cIk9wZW4gQWN0aW9uIFNoZWV0IE1vYmlsZVwiXHJcbiAgICAgICAgICBpZD1cImZkLWFjdGlvbi1zaGVldC1tb2JpbGUtY29udHJvbFwiXHJcbiAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwibWVudVwiXHJcbiAgICAgICAgICBbbGFiZWxdPVwiZmlsZS5GaWxlTmFtZSB8fCcnXCJcclxuICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJmZC1hY3Rpb24tc2hlZXQtbW9iaWxlLWJvZHlcIlxyXG4gICAgICAgID48L2J1dHRvbj5cclxuICAgICAgPC9mZC1hY3Rpb24tc2hlZXQtY29udHJvbD5cclxuXHJcbiAgICAgIDxmZC1hY3Rpb24tc2hlZXQtYm9keVxyXG4gICAgICAgIGFjdGlvblNoZWV0Qm9keUlkPVwiZmQtYWN0aW9uLXNoZWV0LW1vYmlsZS1ib2R5XCJcclxuICAgICAgICBhcmlhTGFiZWxsZWRCeT1cImZkLWFjdGlvbi1zaGVldC1tb2JpbGUtY29udHJvbFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDxsaSBmZC1hY3Rpb24tc2hlZXQtaXRlbSBsYWJlbD1cIlNlYXJjaFwiIGdseXBoPVwic2VhcmNoXCI+PC9saT5cclxuICAgICAgICA8bGkgZmQtYWN0aW9uLXNoZWV0LWl0ZW0gbGFiZWw9XCJEb3dubG9hZFwiIGdseXBoPVwiZG93bmxvYWRcIiA+PC9saT5cclxuICAgICAgICA8bGkgZmQtYWN0aW9uLXNoZWV0LWl0ZW0gbGFiZWw9XCJBY2NlcHRcIiBnbHlwaD1cImFjY2VwdFwiID48L2xpPlxyXG4gICAgICAgIDxsaSBmZC1hY3Rpb24tc2hlZXQtaXRlbSBsYWJlbD1cIlJlamVjdFwiIGdseXBoPVwiY2FuY2VsXCIgPjwvbGk+XHJcbiAgICAgICAgPGxpIGZkLWFjdGlvbi1zaGVldC1pdGVtIGxhYmVsPVwiRGVjaWRlIExhdGVyXCIgW2lzQ2xvc2VCdXR0b25dPVwidHJ1ZVwiPjwvbGk+XHJcbiAgICAgICAgPGxpIGZkLWFjdGlvbi1zaGVldC1pdGVtIGxhYmVsPVwiQ2FuY2VsXCIgW25lZ2F0aXZlXT1cInRydWVcIiBbaXNDbG9zZUJ1dHRvbl09XCJ0cnVlXCI+PC9saT5cclxuICAgICAgPC9mZC1hY3Rpb24tc2hlZXQtYm9keT5cclxuICAgIDwvZmQtYWN0aW9uLXNoZWV0PlxyXG4gIDwvcD4gLS0+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3RkPlxyXG4gICAgPHRkIGZkLXRhYmxlLWNlbGw+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0YXR1c1wiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgIEBpZiAoK2RvY3VtZW50SXRlbS5NYXhGaWxlQ291bnQgJiYgIXJlYWRvbmx5KSB7XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgZ2x5cGg9XCJhdHRhY2htZW50XCJcclxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQXR0YWNoRmlsZScgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInVwbG9hZGluZ1N0YXRlPy5rZXkgPT09IGRvY3VtZW50SXRlbS5UaXRsZSAmJiB1cGxvYWRpbmdTdGF0ZT8udXBsb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCIhcmVhZG9ubHkgJiYgdXBsb2FkZXIub3BlbigpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgQGlmICh1cGxvYWRpbmdTdGF0ZT8ua2V5ID09PSBkb2N1bWVudEl0ZW0uVGl0bGUgJiYgdXBsb2FkaW5nU3RhdGU/LnVwbG9hZGluZykge1xyXG4gICAgICAgICAgICAgICAgPGJzdS1tYXNrIFttYXJnaW5Ub3BdPVwiJzNweCdcIj48L2JzdS1tYXNrPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgICAgIGdseXBoPVwic2hvd1wiXHJcbiAgICAgICAgICAgICAgICBmdWxsc2NyZWVuRmlsZXNcclxuICAgICAgICAgICAgICAgIFtmaWxlc109XCJmaWxlc1wiXHJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZG9jdW1lbnRJdGVtLlRpdGxlXCJcclxuICAgICAgICAgICAgICAgIFtmZC1pbmxpbmUtaGVscF09XCIn2YXYtNin2YfYr9mHINmH2YXZhycgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgW2FyaWEtZGVzY3JpYmVkYnldPVwiJ9mF2LTYp9mH2K/ZhyDZh9mF2YcnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiJ9mF2LTYp9mH2K/ZhyDZh9mF2YcnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgIGZ1bGxzY3JlZW5GaWxlc1xyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFmaWxlcy5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgW2ZpbGVzXT1cImZpbGVzXCJcclxuICAgICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgICAgIGdseXBoPVwiZG93bmxvYWRcIlxyXG4gICAgICAgICAgICAgICAgW2ZkLWlubGluZS1oZWxwXT1cIifYr9in2YbZhNmI2K8g2YfZhdmHJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbYXJpYS1kZXNjcmliZWRieV09XCIn2K/Yp9mG2YTZiNivINmH2YXZhycgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCIn2K/Yp9mG2YTZiNivINmH2YXZhycgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgZG93bmxvYWRGaWxlc1xyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFmaWxlcy5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgW2ZpbGVzXT1cImZpbGVzXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZEFsbC5lbWl0KClcIlxyXG4gICAgICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L3RkPlxyXG4gICAgPHRkIGZkLXRhYmxlLWNlbGw+XHJcbiAgICAgICAgPGZkLWFjdGlvbi1zaGVldCAjYWN0aW9uU2hlZXQ+XHJcbiAgICAgICAgICAgIDxmZC1hY3Rpb24tc2hlZXQtY29udHJvbD5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdGF0dXNUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9mZC1hY3Rpb24tc2hlZXQtY29udHJvbD5cclxuICAgICAgICAgICAgPGZkLWFjdGlvbi1zaGVldC1ib2R5PlxyXG4gICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICAgZmQtYWN0aW9uLXNoZWV0LWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0FjY2VwdCcgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIGdseXBoPVwiYWNjZXB0XCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uU2hlZXQuY2xvc2UoKTsgb25SZWplY3QoMilcIlxyXG4gICAgICAgICAgICAgICAgPjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICBmZC1hY3Rpb24tc2hlZXQtaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInUmVqZWN0JyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZ2x5cGg9XCJjYW5jZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3Rpb25TaGVldC5jbG9zZSgpOyBvblJlamVjdCgzKVwiXHJcbiAgICAgICAgICAgICAgICA+PC9saT5cclxuICAgICAgICAgICAgPC9mZC1hY3Rpb24tc2hlZXQtYm9keT5cclxuICAgICAgICA8L2ZkLWFjdGlvbi1zaGVldD5cclxuXHJcbiAgICAgICAgQGlmIChzdGF0dXMgPT09IDMpIHtcclxuICAgICAgICA8cCBmZC10YWJsZS10ZXh0IG1heFdpZHRoPVwiNDAwcHhcIj5cclxuICAgICAgICAgICAgQGlmIChyZWFkb25seSAmJiByZWplY3RlZFJlYXNvbikge1xyXG4gICAgICAgICAgICA8c3Bhbj4ge3sgcmVqZWN0ZWRSZWFzb24gfCBiYmJUcmFuc2xhdGUgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICB9IEBpZiAoIXJlYWRvbmx5KSB7XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgZmQtZm9ybS1jb250cm9sXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwicmVqZWN0ZWRSZWFzb24gfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIifYr9mE2KfbjNmEINix2K8g2YXYr9ix2qknIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvcD5cclxuICAgICAgICB9XHJcbiAgICA8L3RkPlxyXG48L3RyPlxyXG5cclxuPGZkLWZpbGUtdXBsb2FkZXJcclxuICAgICN1cGxvYWRlclxyXG4gICAgW3N0eWxlLmRpc3BsYXldPVwiJ25vbmUnXCJcclxuICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgW2lkXT1cImRvY3VtZW50SXRlbS5JdGVtS2V5XCJcclxuICAgIFtuYW1lXT1cIidwaWN0dXJlc18nICsgZG9jdW1lbnRJdGVtLkl0ZW1LZXlcIlxyXG4gICAgW2FjY2VwdF09XCJkb2N1bWVudEl0ZW0uJFZhbGlkRXh0ZW5zaW9uc1wiXHJcbiAgICBbZmlsZUxpbWl0XT1cImRvY3VtZW50SXRlbS5NYXhGaWxlQ291bnRcIlxyXG4gICAgW211bHRpcGxlXT1cImRvY3VtZW50SXRlbS5NYXhGaWxlQ291bnQgPiAwXCJcclxuICAgIChzZWxlY3RlZEZpbGVzQ2hhbmdlZCk9XCJvbkZpbGVTZWxlY3Rpb24oJGV2ZW50KVwiXHJcbj48L2ZkLWZpbGUtdXBsb2FkZXI+XHJcbjxuZy10ZW1wbGF0ZSAjc3RhdHVzVHBsPlxyXG4gICAgPGRpdiBjbGFzcz1cInN0YXR1c1wiPlxyXG4gICAgICAgIDxidXR0b24gZmQtYnV0dG9uIGZkVHlwZT1cInRyYW5zcGFyZW50XCI+XHJcbiAgICAgICAgICAgIEBpZiAoc3RhdHVzID09PSAxKSB7XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBmZC1vYmplY3Qtc3RhdHVzXHJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1vZvtuM2YjYs9iqINmF2K/Yp9ix2qldJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbYXJpYS1sYWJlbF09XCInW9m+24zZiNiz2Kog2YXYr9in2LHaqV0nIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgfSBAaWYgKHN0YXR1cyA9PT0gMikge1xyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgZmQtb2JqZWN0LXN0YXR1c1xyXG4gICAgICAgICAgICAgICAgZ2x5cGg9XCJtZXNzYWdlLXN1Y2Nlc3NcIlxyXG4gICAgICAgICAgICAgICAgc3RhdHVzPVwicG9zaXRpdmVcIlxyXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidBY2NlcHRlZCcgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidBY2NlcHRlZCcgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICB9IEBpZiAoc3RhdHVzID09PSAzKSB7XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBmZC1vYmplY3Qtc3RhdHVzXHJcbiAgICAgICAgICAgICAgICBnbHlwaD1cImNhbmNlbFwiXHJcbiAgICAgICAgICAgICAgICBzdGF0dXM9XCJuZWdhdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1JlamVjdGVkJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbYXJpYS1sYWJlbF09XCInUmVqZWN0ZWQnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==