@sd-angular/core 1.3.239 → 1.3.240

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 (26) hide show
  1. package/bundles/sd-angular-core-export.umd.js +95 -88
  2. package/bundles/sd-angular-core-export.umd.js.map +1 -1
  3. package/bundles/sd-angular-core-export.umd.min.js +1 -1
  4. package/bundles/sd-angular-core-export.umd.min.js.map +1 -1
  5. package/bundles/sd-angular-core-table.umd.js +513 -89
  6. package/bundles/sd-angular-core-table.umd.js.map +1 -1
  7. package/bundles/sd-angular-core-table.umd.min.js +2 -2
  8. package/bundles/sd-angular-core-table.umd.min.js.map +1 -1
  9. package/esm2015/export/src/lib/export.service.js +93 -90
  10. package/esm2015/table/sd-angular-core-table.js +19 -18
  11. package/esm2015/table/src/lib/components/popup-export/popup-export.component.js +289 -0
  12. package/esm2015/table/src/lib/models/table-option-export.model.js +1 -1
  13. package/esm2015/table/src/lib/table.component.js +32 -16
  14. package/esm2015/table/src/lib/table.module.js +5 -1
  15. package/export/src/lib/export.service.d.ts +4 -0
  16. package/fesm2015/sd-angular-core-export.js +92 -89
  17. package/fesm2015/sd-angular-core-export.js.map +1 -1
  18. package/fesm2015/sd-angular-core-table.js +318 -17
  19. package/fesm2015/sd-angular-core-table.js.map +1 -1
  20. package/package.json +1 -1
  21. package/{sd-angular-core-1.3.239.tgz → sd-angular-core-1.3.240.tgz} +0 -0
  22. package/table/sd-angular-core-table.d.ts +18 -17
  23. package/table/sd-angular-core-table.metadata.json +1 -1
  24. package/table/src/lib/components/popup-export/popup-export.component.d.ts +56 -0
  25. package/table/src/lib/models/table-option-export.model.d.ts +7 -6
  26. package/table/src/lib/table.component.d.ts +8 -1
@@ -0,0 +1,289 @@
1
+ var _getExportableColumns, _getExportColumns, _initTemplate;
2
+ import { __awaiter, __classPrivateFieldGet } from "tslib";
3
+ import { Component, ViewChild, Output, EventEmitter, Input, ChangeDetectorRef, ChangeDetectionStrategy, } from '@angular/core';
4
+ import { SdNotifyService } from '@sd-angular/core/notify';
5
+ import { SdLoadingService } from '@sd-angular/core/loading';
6
+ import { SdTranslateService } from '@sd-angular/core/translate';
7
+ import hash from 'object-hash';
8
+ import { SdExportService } from '@sd-angular/core/export';
9
+ import { FormGroup } from '@angular/forms';
10
+ export class SdPopupExport {
11
+ constructor(ref, loadingService, exportService, notifyService, translateService) {
12
+ this.ref = ref;
13
+ this.loadingService = loadingService;
14
+ this.exportService = exportService;
15
+ this.notifyService = notifyService;
16
+ this.translateService = translateService;
17
+ this.columns = [];
18
+ this.enableCreating = false;
19
+ this.selected = {};
20
+ this.files = [];
21
+ this.export = new EventEmitter();
22
+ this.form = new FormGroup({});
23
+ _getExportableColumns.set(this, () => {
24
+ return [...this.tableColumns, ...this.additionalColumns];
25
+ });
26
+ this.open = () => __awaiter(this, void 0, void 0, function* () {
27
+ if (!this.key) {
28
+ this.exportDefault();
29
+ return;
30
+ }
31
+ this.loadFiles(null);
32
+ this.selected = {};
33
+ this.modal.open();
34
+ this.ref.detectChanges();
35
+ });
36
+ _getExportColumns.set(this, () => {
37
+ if (this.configuration) {
38
+ const columns = [...this.tableColumns];
39
+ const { firstColumns, secondColumns } = this.configuration;
40
+ const displayColumns = [...firstColumns, ...secondColumns].reduce((first, next) => {
41
+ const column = this.tableOption.columns.find(e => e.field === next.field);
42
+ if (!column) {
43
+ return first;
44
+ }
45
+ if (column.type !== 'children') {
46
+ return [...first, column];
47
+ }
48
+ return [...first, ...column.children];
49
+ }, []);
50
+ const results = displayColumns
51
+ .map(e => (Object.assign(Object.assign({}, e), { data: columns.find(e1 => e1.field === e.field) })))
52
+ .filter(e => !!e.data)
53
+ .map(e => e.data);
54
+ return [...results, ...this.additionalColumns];
55
+ }
56
+ else {
57
+ return this.columns;
58
+ }
59
+ });
60
+ this.exportDefault = () => {
61
+ this.export.emit({
62
+ file: null,
63
+ columns: __classPrivateFieldGet(this, _getExportColumns).call(this),
64
+ isCSV: false,
65
+ });
66
+ };
67
+ this.exportCSV = () => {
68
+ this.export.emit({
69
+ file: null,
70
+ columns: __classPrivateFieldGet(this, _getExportColumns).call(this),
71
+ isCSV: true,
72
+ });
73
+ };
74
+ this.loadFiles = (group = null) => __awaiter(this, void 0, void 0, function* () {
75
+ this.files = yield this.exportService.filesInFolder({
76
+ key: this.key,
77
+ group,
78
+ });
79
+ this.ref.markForCheck();
80
+ });
81
+ _initTemplate.set(this, (fileName) => __awaiter(this, void 0, void 0, function* () {
82
+ var _a, _b, _c, _d;
83
+ const sheets = [];
84
+ if (Array.isArray((_b = (_a = this.tableOption) === null || _a === void 0 ? void 0 : _a.export) === null || _b === void 0 ? void 0 : _b.sheets)) {
85
+ for (const sheet of this.tableOption.export.sheets) {
86
+ if (sheet.name && sheet.items && sheet.fields) {
87
+ if (Array.isArray(sheet.items)) {
88
+ sheets.push({
89
+ name: sheet.name,
90
+ items: sheet.items,
91
+ fields: sheet.fields,
92
+ });
93
+ }
94
+ else {
95
+ sheets.push({
96
+ name: sheet.name,
97
+ items: yield sheet.items(),
98
+ fields: sheet.fields,
99
+ });
100
+ }
101
+ }
102
+ }
103
+ }
104
+ return yield this.exportService.generateTemplate({
105
+ fileName: fileName || ((_d = (_c = this.tableOption) === null || _c === void 0 ? void 0 : _c.export) === null || _d === void 0 ? void 0 : _d.fileName),
106
+ columns: this.columns,
107
+ sheets,
108
+ });
109
+ }));
110
+ this.generateTemplate = () => __awaiter(this, void 0, void 0, function* () {
111
+ this.loadingService.start();
112
+ yield __classPrivateFieldGet(this, _initTemplate).call(this).finally(this.loadingService.stop);
113
+ });
114
+ this.generateAndUploadTemplate = (fileName) => __awaiter(this, void 0, void 0, function* () {
115
+ var _e, _f, _g, _h, _j, _k;
116
+ const sheets = [];
117
+ if (Array.isArray((_f = (_e = this.tableOption) === null || _e === void 0 ? void 0 : _e.export) === null || _f === void 0 ? void 0 : _f.sheets)) {
118
+ for (const sheet of (_h = (_g = this.tableOption) === null || _g === void 0 ? void 0 : _g.export) === null || _h === void 0 ? void 0 : _h.sheets) {
119
+ if (sheet.name && sheet.items && sheet.fields) {
120
+ if (Array.isArray(sheet.items)) {
121
+ sheets.push({
122
+ name: sheet.name,
123
+ items: sheet.items,
124
+ fields: sheet.fields,
125
+ });
126
+ }
127
+ else {
128
+ sheets.push({
129
+ name: sheet.name,
130
+ items: yield sheet.items(),
131
+ fields: sheet.fields,
132
+ });
133
+ }
134
+ }
135
+ }
136
+ }
137
+ return yield this.exportService.generateUploadTemplate({
138
+ key: this.key,
139
+ template: {
140
+ fileName: fileName || ((_k = (_j = this.tableOption) === null || _j === void 0 ? void 0 : _j.export) === null || _k === void 0 ? void 0 : _k.fileName),
141
+ columns: this.columns.filter(e => this.selected[e.field]),
142
+ sheets,
143
+ },
144
+ });
145
+ });
146
+ this.onExport = (file) => {
147
+ this.export.emit({
148
+ file,
149
+ columns: this.columns,
150
+ });
151
+ this.ref.detectChanges();
152
+ };
153
+ this.uploadTemplate = () => __awaiter(this, void 0, void 0, function* () {
154
+ const file = yield this.exportService.uploadTemplate({
155
+ key: this.key,
156
+ });
157
+ if (file) {
158
+ this.files = [...this.files, file];
159
+ this.ref.detectChanges();
160
+ }
161
+ });
162
+ this.removeFile = (file) => {
163
+ this.notifyService.confirm(this.translateService.translate('Remove template')).then(() => {
164
+ this.exportService.removeFile({
165
+ key: this.key,
166
+ fileName: file.fileName,
167
+ });
168
+ const idx = this.files.indexOf(file);
169
+ this.files.splice(idx, 1);
170
+ this.files = [...this.files];
171
+ this.ref.detectChanges();
172
+ });
173
+ };
174
+ this.createTemplate = () => __awaiter(this, void 0, void 0, function* () {
175
+ if (this.form.invalid) {
176
+ this.form.markAllAsTouched();
177
+ return;
178
+ }
179
+ if (!this.columns.some(e => this.selected[e.field])) {
180
+ this.notifyService.notify.warning(`Vui lòng chọn cột dữ liệu để xuất`);
181
+ return;
182
+ }
183
+ this.loadingService.start();
184
+ const fileName = this.templateName + '.xlsx';
185
+ try {
186
+ const result = yield this.generateAndUploadTemplate(fileName);
187
+ if (result === null || result === void 0 ? void 0 : result.filePath) {
188
+ const file = {
189
+ filePath: result.filePath,
190
+ fileName: result.fileName,
191
+ };
192
+ this.onExport(file);
193
+ this.templateName = null;
194
+ this.enableCreating = false;
195
+ this.files = [...this.files, file];
196
+ this.ref.detectChanges();
197
+ }
198
+ }
199
+ finally {
200
+ this.loadingService.stop();
201
+ }
202
+ });
203
+ this.templateNameValidator = (val) => {
204
+ const { translate } = this.translateService;
205
+ const regex = /^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/;
206
+ if (!val) {
207
+ return translate('Please enter your template name');
208
+ }
209
+ if (val.length > 50) {
210
+ return translate('Template name is too long');
211
+ }
212
+ if (!regex.test(val)) {
213
+ return translate('Template name only contains letters, numbers and spaces');
214
+ }
215
+ return null;
216
+ };
217
+ }
218
+ set _tableOption(option) {
219
+ this.tableOption = option;
220
+ this.columns = __classPrivateFieldGet(this, _getExportableColumns).call(this);
221
+ }
222
+ get key() {
223
+ var _a, _b, _c, _d;
224
+ const prefix = '93889e78-f971-4a1d-8c73-fe2321af9233';
225
+ if (!((_b = (_a = this.tableOption) === null || _a === void 0 ? void 0 : _a.export) === null || _b === void 0 ? void 0 : _b.key)) {
226
+ return null;
227
+ }
228
+ return hash({
229
+ prefix,
230
+ key: (_d = (_c = this.tableOption) === null || _c === void 0 ? void 0 : _c.export) === null || _d === void 0 ? void 0 : _d.key,
231
+ });
232
+ }
233
+ get tableColumns() {
234
+ const columns = [];
235
+ this.tableOption.columns
236
+ .filter(e => { var _a; return !((_a = e.export) === null || _a === void 0 ? void 0 : _a.disabled); })
237
+ .forEach(column => {
238
+ var _a;
239
+ if (column.type === 'children') {
240
+ (_a = column.children) === null || _a === void 0 ? void 0 : _a.filter(e => { var _a; return !((_a = e.export) === null || _a === void 0 ? void 0 : _a.disabled); }).forEach(childColumn => {
241
+ columns.push(childColumn);
242
+ });
243
+ return;
244
+ }
245
+ columns.push(column);
246
+ });
247
+ return columns.map(e => ({
248
+ field: e.field,
249
+ title: e.title,
250
+ description: e.description,
251
+ width: e.width,
252
+ }));
253
+ }
254
+ get additionalColumns() {
255
+ var _a, _b;
256
+ return (((_b = (_a = this.tableOption.export) === null || _a === void 0 ? void 0 : _a.columns) === null || _b === void 0 ? void 0 : _b.filter(e => { var _a; return !((_a = e.export) === null || _a === void 0 ? void 0 : _a.disabled); })) || []).map(e => ({
257
+ field: e.field,
258
+ title: e.title,
259
+ description: e.description,
260
+ width: e.width,
261
+ }));
262
+ }
263
+ ngOnInit() { }
264
+ ngAfterViewInit() { }
265
+ }
266
+ _getExportableColumns = new WeakMap(), _getExportColumns = new WeakMap(), _initTemplate = new WeakMap();
267
+ SdPopupExport.decorators = [
268
+ { type: Component, args: [{
269
+ selector: 'sd-popup-export',
270
+ template: "<sd-modal width=\"907px\" [title]=\"'Exported template' | sdTranslate\" #modal>\r\n <sd-modal-body>\r\n <div class=\"row\">\r\n <ng-template #noSelection>\r\n <div class=\"col-12\">\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n </div>\r\n </ng-template>\r\n <ng-template #content>\r\n <div class=\"row\">\r\n <div *ngIf=\"!files?.length\" class=\"col-12\">\r\n <div class=\"c-empty\">\r\n <img class=\"c-empty-image\" />\r\n <div class=\"T14R\">{{ 'There are no exported templates' | sdTranslate }}</div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"files?.length\">\r\n <div class=\"col-12\">\r\n <div class=\"c-table\" style=\"max-height: 50vh\">\r\n <table mat-table [dataSource]=\"files\">\r\n <ng-container matColumnDef=\"stt\">\r\n <th mat-header-cell class=\"c-th text-center px-5\" *matHeaderCellDef style=\"width: 50px\">#</th>\r\n <td class=\"text-center px-5\" mat-cell *matCellDef=\"let item; let idx = index\">\r\n {{ idx + 1 }}\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"fileName\">\r\n <th mat-header-cell class=\"c-th px-5\" *matHeaderCellDef>{{ 'File name' | sdTranslate }}</th>\r\n <td class=\"px-5\" mat-cell *matCellDef=\"let item\">\r\n {{ item.fileName }}\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"action\">\r\n <th mat-header-cell class=\"c-th px-5\" *matHeaderCellDef style=\"width: 80px\"></th>\r\n <td class=\"px-5\" mat-cell *matCellDef=\"let item\">\r\n <div class=\"d-flex\">\r\n <button mat-icon-button aria-label=\"delete\" (click)=\"removeFile(item)\">\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n <button mat-icon-button aria-label=\"download\" (click)=\"onExport(item)\">\r\n <mat-icon>download</mat-icon>\r\n </button>\r\n </div>\r\n </td>\r\n </ng-container>\r\n <tr mat-header-row *matHeaderRowDef=\"['stt', 'fileName', 'action']; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: ['stt', 'fileName', 'action']\"></tr>\r\n </table>\r\n </div>\r\n </div>\r\n <div *ngIf=\"files.length < 5\" class=\"col-12 mt-10\">\r\n <sd-button\r\n class=\"mr-5\"\r\n [title]=\"'New template' | sdTranslate\"\r\n (action)=\"enableCreating = true\"\r\n color=\"info\"\r\n [disabled]=\"enableCreating\">\r\n </sd-button>\r\n <sd-button\r\n *ngIf=\"tableOption?.export?.enableUpload\"\r\n [title]=\"'Upload template' | sdTranslate\"\r\n (action)=\"uploadTemplate()\"\r\n type=\"outline\">\r\n </sd-button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"enableCreating || !files?.length\">\r\n <div class=\"col-12 mt-20\">\r\n <div class=\"T14R\">{{ 'Select columns for creating template' | sdTranslate }}:</div>\r\n </div>\r\n <div class=\"col-12\">\r\n <mat-chip-list selectable=\"true\" multiple=\"true\">\r\n <ng-container *ngFor=\"let column of columns\">\r\n <mat-chip [selected]=\"selected[column.field]\" (click)=\"selected[column.field] = !selected[column.field]\">\r\n {{ column.title }}\r\n </mat-chip>\r\n </ng-container>\r\n </mat-chip-list>\r\n </div>\r\n <div class=\"col-12 row\">\r\n <div class=\"col-10\">\r\n <sd-input\r\n [form]=\"form\"\r\n [label]=\"'Template name' | sdTranslate\"\r\n [(model)]=\"templateName\"\r\n [validator]=\"templateNameValidator\"></sd-input>\r\n </div>\r\n <div class=\"col-2 mt-8\">\r\n <sd-button width=\"100%\" [title]=\"'Save' | sdTranslate\" color=\"info\" (action)=\"createTemplate()\"> </sd-button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </sd-modal-body>\r\n</sd-modal>\r\n",
271
+ changeDetection: ChangeDetectionStrategy.OnPush,
272
+ styles: [".c-radio-group{display:flex;flex-direction:column;margin:15px 0}.c-radio-button{margin:5px}.c-empty{align-items:center;background:#f6f6f6;border-radius:4px;display:flex;flex-direction:column;height:116px;justify-content:center;position:static}.c-empty .c-empty-image{content:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD8AAAA6CAYAAAAHkoFsAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAABCiSURBVHgB7VtLj2VVFV5rn0tXJ902ktjppgEJ0iRAGgUsiQk/wJGPhBgxxJg4ZqYDRjqXmSMTTRyYGGYOYODE+AiI4RFaIDSgNII8BIzBQDdQdc/eru/71j637IKuOt0VGegJ1H2cffbda+31+Na3dpv9D18+Z/BzL/ztgeJezVrlw+6ju7XW8J21Ev/74GNreF+ae6utlFpiiHsZMRLj4k8tHvcLn6uYI2aL9xXjqtX4HA+55q14P8Rv4YePHL7sB7ZHV5k1urVSaxtClKFhyRYSNPOQqcQfzOUhSugHklSv8eq1hjSx8rEOLcfEg6XGBFAN1sA5+B7ThK4KNyVkj9fCNeZvzFzvngoP4WgrDYvighqFxTZCiFbGWHwbsVESqPK1lgKVSIgh9FZiOBRQugI0c0tB43PlZ/d8vmqtsyx1p2sxZ3CV9p37CxXQnOObkBsbWmH1xt2yOjbIi+3HomND427RW6v42nkDCqBjwNLhH6HPQv+pUFAMbXARTApr2tOdnyW8aefhudxFp7O6XDoExcqrVDMaNELDraM83cpQESwaNtPo5iWUJl+GKcQOx/8GN+dGw/fxeaB6EGagoT28ZmkSPie/azTxlr6o19ji2GvohP6JjY3Fj3ABbiq3daDS4vka30FYrzLnUBGMJuag2dM9sPvQUxgNrKqEWe2p2c8Sfuw+Df+GAuCvGayoBAaxSj+t8dpk2V6pkDpIga7flE+UDJaDy6ocOoxnOabRZaDHSkVWxYePR/jC5TnN03KxtgpEIQOc06kU7DwUYHSPVIBTKORCOLAr8EthfL5qp+M/KcD73IXPtmofn89nqsrYBi/gZ4bkBveGsTZleVf+dqXAijAHJw/rQS432QNiABwizCJdpUIBYfs1LWTU9wwEggJ7eM3SZO15GoENPtlo/hBZPmraTZ/SYCtENyMDuLcRO+9KX9BgSxwAK2lKldzlWrs7wVUKf0dZ4+NLdZYBzpiQw3rh1Q05nvmvNQXDZkJ0RjeA7RcMcw0IU5aVM9lVWAQxY9FfGk7MVQb4PIBCGldBuPHy6t//+U0bI5kMgfowehzasC/ySHxVLsFr7ELce9vG315z2WVv753wkJWmzhjN5Cw7Z9av2lG8tUHhypnFYgeZ+Og4sf3IgM3p7EiN0AJArf6LXF7g8sQJSvNIngOgBTa/1i8KW0SCGDHY2rhc1sEXdbm5iYfquLT6yYWdjJXsnfAnbrjm9o+6d+rUi1+Kff0uBG7KxonYGoVrehmRtgaaiQXSa2NxVQCNtUBtiWAz3zvDQ5q9AR0ZjQQ6M6ZFwYJwrbaEvTTrGGIX11yzP+9MLr81bbFkQPBHmuPeKlUQAQ0DANvkAo0WAMkR81AWuaocai1HxLeR6xn1VAtI1tAJiyT4T1yqBj74wHeMD3uWOkbspqv4YLbi3C1jBHe+EMgA9FIjLA9dGUFZP9MEdr3AdbdiBSbaQtDU06B3HCDADaeIaYZMw2s7r5k7/+ifnr9jKHas5X5RpQXRB3Vc/K0joSj8C86r71W2ItIUjBn9OBbBHI6QlTYsw6XDwk0htECq2+99sfhj24y3i/Kt2LHDwv0AzBjIsFmqfIJRsbE8gOw95aJm0HjgAMKAZYxZxI3Y+l0JH0PviJ+9DUiiCWHTbyu3I0EoLJkbUSs3DWuB7rU+eaSxXqnafcQ9onMnOHGG7FGI3n9x/Nor7tuyjkdffOn178fENwApsRqkAvhf7HNTUQhRWSF2nTR9QA5GRoEXML/A9PbvJHtGFxN0JH7OnGsTblfJyZRGM1bezRInc7PL+1jPZzmjWrynRiE4Exw+eHC4/9yFbLy//BWiP/ACY0cFlHYWC6I7BIUrEWRVOazwD+MqQp1V6HOXMJiDaiPoSojKEFJyAgkkNMfXSSkt8f2U+5172zokxULHRgJD5EWCnmZnjx49embbQvYvzoypKMQOhf3qElKECHF+romvtAzGhMKCqKr2xRo2fJdm/4Wbr7/zw24+/uRzP4+XdbmoiJUqLTBvmTSHH2PC0VMZ5wV7K7muFUQFkj10nvUwwEFiU+mL6E7YI0KjCGOTPfAqXsW6myjNoK4IlaztIuLtkOpo5hmdhc6xtCw89F4hjfVqU2nGIM7B2nU5g1xli5L+84qAe6BWoZia2YLQP+gvHxD8iYURiSsTuog/mBPrBlQD/Mx44GVj3LjYVMfbg2I7zTEBCbF5WZWySFFczfR58nU9W7zHivjuqdOnj5z7S3X0g5ZulySPu3d+IPg/YyxiLcD3I0KiqkE+z7K4V4O7Y3zOu/MBx34dOPVVMUgByYahMhu3JcGLq7r7chMMk2lzh13oQ0rBnhC+qQD4cIWP4xKIBgLTymhPoL4Y44HwQ1jWC8Iywr5GkNfEmvK3m4kls7WLNPvbbr7+Z7bDdfLpP38VLpkpZqBCalJ6hPp671vK4QN2YNs8IcKRpMSg3crYJkUxpIDjCBRfwgfAi4ESQ5ir4PVKYmH+Qk2mdxd5fg8Qnq8Y1/yiqTpzxQxXJphcoJXNzTNHz52lKnoTzeIZlcONmJjIMZFgY5wrSYsrtYrybtAKMwvl2gXCu3jhnWGu1+ODan4WsBTUJrzgSqOx2E3fjrtDqoNSFOBqh68r/6+ir8UbgNCFKZDhxe+OA+MBUmOmQd/YGdsv/vDY0/fHsKtcPHRVR0bbkGlbqE2lEv28JWifIKx4nJqkvq/YXWYmRm68xsAxarrim+3y+O7k1oXEHh9so6XiVAor6QFMZoLn91n1YUlJ65Y2+RYCBuolkoI7Ch+ruzqevKqJYBO8laMKhUfZ2Yi5CaWIevN+5fuqGOwENy4YwNRHNm6UBVgnbrBLiYPOMaBkaPkuKbLUYFM9LCuoYjcR/xDaWlNJS+RLnkThx5CkdhReCEwkBcGMfoZKSG6CqdSFL1pidu6tLN6yAccFqvuWnkiUqCissqwogFfb/MS5C4l21uUmEzcyQ6KHxI2QBof+AzIOnJx231haBQzO4sZVBWA/2rLsnOcj2pcHYqGHsgYXiaQqBZ5Fc2aGZpFlX7dONIq3ZLGuDcoGjGeN2RIMc1uFUJCbaSXDsE141SQZqQkjgOqiBHYVS5a1vXBAIw9QiuU6eEfFkGjvmG7fTrLb4vbbTtxju7weeeLUNxKlJd6nZFRR5y9SMUo6GpP5vxbhAlrD9skVQFwZrhVtv2pHcj/UkIhBlQrNROwwR0hgkmAqh31jVzs/42IxTm7WBKwoLxk6RSBx71tr+aaWnhAvZWSf79h24e1yuEkwB9huo9sRtNAmGYCtyCssLW2UGRDzTqoRDbQrjntWqmuryk8VXa8AFR3RVioKGFwAU4WnwpLe7qnvim1z13aI3UimjTZVjknJ4b1gNudadYY8sUDOOzBFRGj4sHR67jWvaYFNqdNhAsQHILrRlMeFwtMpO0RNX9YDMgJY5fpTz7x45003XnPfgw8++4lLP7X2nZD+UFOl1oVF7TJ2qtyI3RIoSeqsElV9gQNk5TSORJn7bPj86dMvH14sIqYPi3h+E+LS+t56ffnE+voVZ3eRDVfXw48/8yYZSBL2wleyUJKNLTGCgqQoCAhDfKNqT2mU6QuLLcO/FDD9oEpeYQcJRrWNptzZdF/PMQiqN9DH1twJzp8ltubSWhq6QPLbAu3ce+WVh5+ftfPMbuzHtSxNyTB7hmntBCkNyyRoQ0sqjDFA5JYWKNR2qYIg7cV6m1suLYvKcjixj2hsdsfUKMweHwBRtr+b+ELSf+L8yTq2mmxA6GBjY+Smz2xXRe+AdJKL3sruaptaTQxrGROMWASfGQOyHFZDw89sbtj3Pnvjteub7218zW34yRZKLPF9L4lZJbpgbOvtsdLHk8z0zjoJGtYV1+H9iIwSr2Dc2prS4IXw9lidNlboTTuWJ4kUryxrfiYAQmYOK9r30MK96zdf9xtMduut178WLz998tQL6zHvLdluyCRBMxtJJzeb4HTr7LC4MyFLKaTyOEgDgbv2ww/2LV/aXw9wynf55x1O/o93Ns7OF55mbIC7QbwgGKmfLOrIhQOT3LLOffEgQuJCpiOva4vxsW0aNXsg/tyqeCkd51EMlmyijUnSjr1uVyJI2iz5gsq1lGCuz7533aevfut84syv6trq0JAnm5tdSgKQ1qaSdlXVCaeL7Y3Fvbe8ZHuqMzsk8kNjV6xwm5hhmhGrutZPb6ha3DJe5wPCzPftAuHZjItaVTBr7DWJtMnslqQqF0SezbrAxoajD3qWTNDdMfjbfd5nn3352Pvjxl1qy7RsSfI8nwm7svE5kaJlRZnBFB4KP363yapiKDqcUdVVO7OTPLNS3UOPPHkmC5XVAcJeAdLsVAxNZS8/l57ueuqr2a1+Jeb4ZXwO7s6/EvcP9BppSmtEjyhcfUqDlu1x08A6LvbfddNnjrxhF3DNPIqm4tEY9FzkqXIubrvQ15SYkn3uZaqAUPbVoKirIvvc7dmSYDoUkNEeKp8zixoPPqA8ZkIDjixZWbqfnYdVLlj4rNOKyljV6TRjVsS8WbNXHynRxuz+qANWehZQ4ZOEY2+KmKCwdGwKdROaEx+g0po/Amhbyjjxgv8N4bPaShJWS9bBLBZUJfnmmpmQqYcmnvW4MoJqfMSPPHZpyR2YpfX0EO4EOCqhPeHxxA6nhYUE95x67q/o2SEOTa6ByQa1xVmBiOgY2QxCxh2GxTsXcAhRHRpXAKviywVlmYoyBzMgdfJWPt97dWQgkzBJgpNrhdmjTzcqbppMW2rPAichtXgVnVFzuwXfLRWNx3ym6fgeTURssDNtVHFMESvq8o3ZB5JUybXs8WUPPg8NaXfYRBy2NC4S7ZlITu9HCnqzg4C4HyoW38fU2KZGaaa1KWXKwwRmeppzz9jAA495zndilvMV+LrqwCRMbT62Fz8HUmmQGRPDVnHuHKOgZRJKNE+b/DurPzUfkqdSuuQW9XYW6STP4BIvr8Wsr/qAI72eZ12kGZrAwDjCswTOiMiQRO2RjZJVWslCTAGlvjlPeB2uLy3VbHmKyjM6p2JIPIhl6s0KT2ImfXdCcbKAPHuraC7UUFdpHcPK/Z87ce2PbY+vuYcQk05KvxdVCdOrna7KbncR9d3HswK0pLLp8+w2KrwL7QdfF9oaOU6dX0v0XPPgzp5fcwNep5BobVXAg7Ekd6tMMVlMpmVWaKvEnGnCLOtYpbgkUFOBxMia01YNgb2+Zk36u4dPtu0zuFAb9zfRH4ELdZPkg6KvkCpeV0jQtvwzE5XrBAFj8tdVvL29Ek70ik+nllipM21ZnvLhOR4SfUoUPix/dOL48b+cT56LP4omn83jVMQB6fsANiXJTXUUrBMevSTN/n3juTpGdbIwaHjCBTxpz/j6yrh/DIQCMbPpdI6zR6HUVdnBUHBzxeODOy19VqrzZGC72NP3mQXykFDJlgboE36u6vErU/QssOXcDxWoNEgyZCJI4rlsgGbj0voZoTyZrfP7OceQVSZ1ttzcawJzatgkLN2iF5PatfuyXxmEmnRjVny975b4RznReBZDViLBrJOiSVpSK/zHFkxbaowk2LEt1T8tjuTRJbvw6Hlm77a1D6OFKwAKbabdmdJ9dl5cDKzUlv8mR2J0lKas0HRnalqo6dfzRcg75leyPxVMiZrZuWHATbbHl9ELtv9fH339G/7DwlISq4BTAAAAAElFTkSuQmCC\")}.c-table{overflow:auto;position:relative}.c-table table{width:100%}.c-table .c-th{color:#000;font-size:14px;font-weight:500;line-height:20px}"]
273
+ },] }
274
+ ];
275
+ SdPopupExport.ctorParameters = () => [
276
+ { type: ChangeDetectorRef },
277
+ { type: SdLoadingService },
278
+ { type: SdExportService },
279
+ { type: SdNotifyService },
280
+ { type: SdTranslateService }
281
+ ];
282
+ SdPopupExport.propDecorators = {
283
+ modal: [{ type: ViewChild, args: ['modal',] }],
284
+ listGroups: [{ type: ViewChild, args: ['listGroups',] }],
285
+ export: [{ type: Output }],
286
+ _tableOption: [{ type: Input, args: ['tableOption',] }],
287
+ configuration: [{ type: Input }]
288
+ };
289
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wdXAtZXhwb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvdGFibGUvIiwic291cmNlcyI6WyJzcmMvbGliL2NvbXBvbmVudHMvcG9wdXAtZXhwb3J0L3BvcHVwLWV4cG9ydC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUdULFNBQVMsRUFDVCxNQUFNLEVBQ04sWUFBWSxFQUNaLEtBQUssRUFDTCxpQkFBaUIsRUFDakIsdUJBQXVCLEdBQ3hCLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFHL0IsT0FBTyxFQUFnQixlQUFlLEVBQWtCLE1BQU0seUJBQXlCLENBQUM7QUFDeEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBVTNDLE1BQU0sT0FBTyxhQUFhO0lBbUV4QixZQUNVLEdBQXNCLEVBQ3RCLGNBQWdDLEVBQ2hDLGFBQThCLEVBQzlCLGFBQThCLEVBQzlCLGdCQUFvQztRQUpwQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixtQkFBYyxHQUFkLGNBQWMsQ0FBa0I7UUFDaEMsa0JBQWEsR0FBYixhQUFhLENBQWlCO1FBQzlCLGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtRQUM5QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBdEU5QyxZQUFPLEdBQXFCLEVBQUUsQ0FBQztRQUUvQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUl2QixhQUFRLEdBRUosRUFBRSxD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Z0JBQzNCLDR0SkFBNEM7Z0JBRTVDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNoRDs7O1lBeEJDLGlCQUFpQjtZQVFWLGdCQUFnQjtZQU1GLGVBQWU7WUFSN0IsZUFBZTtZQUlmLGtCQUFrQjs7O29CQW9CeEIsU0FBUyxTQUFDLE9BQU87eUJBQ2pCLFNBQVMsU0FBQyxZQUFZO3FCQU90QixNQUFNOzJCQUdOLEtBQUssU0FBQyxhQUFhOzRCQUluQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5cclxuaW1wb3J0IHsgU2ROb3RpZnlTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9ub3RpZnknO1xyXG5cclxuaW1wb3J0IHsgU2RMb2FkaW5nU2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvbG9hZGluZyc7XHJcblxyXG5pbXBvcnQgeyBTZFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL3RyYW5zbGF0ZSc7XHJcbmltcG9ydCBoYXNoIGZyb20gJ29iamVjdC1oYXNoJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0aW9uTGlzdCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xyXG5pbXBvcnQgeyBTZE1vZGFsIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9tb2RhbCc7XHJcbmltcG9ydCB7IFNkRXhwb3J0RmlsZSwgU2RFeHBvcnRTZXJ2aWNlLCBTZEV4cG9ydENvbHVtbiB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvZXhwb3J0JztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTZFRhYmxlQ29sdW1uLCBTZFRhYmxlT3B0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgU2RUYWJsZUNvbmZpZ3VyYXRpb25SZXN1bHQgfSBmcm9tICcuLi8uLi9tb2RlbHMvdGFibGUtb3B0aW9uLWNvbmZpZy5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLXBvcHVwLWV4cG9ydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3BvcHVwLWV4cG9ydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcG9wdXAtZXhwb3J0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZFBvcHVwRXhwb3J0IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICB0YWJsZU9wdGlvbjogU2RUYWJsZU9wdGlvbjtcclxuICBjb2x1bW5zOiBTZEV4cG9ydENvbHVtbltdID0gW107XHJcbiAgdGVtcGxhdGVOYW1lOiBzdHJpbmc7XHJcbiAgZW5hYmxlQ3JlYXRpbmcgPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdtb2RhbCcpIG1vZGFsOiBTZE1vZGFsO1xyXG4gIEBWaWV3Q2hpbGQoJ2xpc3RHcm91cHMnKSBsaXN0R3JvdXBzOiBNYXRTZWxlY3Rpb25MaXN0O1xyXG5cclxuICBzZWxlY3RlZDoge1xyXG4gICAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcclxuICB9ID0ge307XHJcbiAgZmlsZXM6IFNkRXhwb3J0RmlsZVtdID0gW107XHJcblxyXG4gIEBPdXRwdXQoKSBleHBvcnQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmlsZTogU2RFeHBvcnRGaWxlOyBjb2x1bW5zOiBTZEV4cG9ydENvbHVtbltdOyBpc0NTVj86IGJvb2xlYW4gfT4oKTtcclxuICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcblxyXG4gIEBJbnB1dCgndGFibGVPcHRpb24nKSBzZXQgX3RhYmxlT3B0aW9uKG9wdGlvbjogU2RUYWJsZU9wdGlvbikge1xyXG4gICAgdGhpcy50YWJsZU9wdGlvbiA9IG9wdGlvbjtcclxuICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuI2dldEV4cG9ydGFibGVDb2x1bW5zKCk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGNvbmZpZ3VyYXRpb246IFNkVGFibGVDb25maWd1cmF0aW9uUmVzdWx0O1xyXG4gIHByaXZhdGUgZ2V0IGtleSgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcHJlZml4ID0gJzkzODg5ZTc4LWY5NzEtNGExZC04YzczLWZlMjMyMWFmOTIzMyc7XHJcbiAgICBpZiAoIXRoaXMudGFibGVPcHRpb24/LmV4cG9ydD8ua2V5KSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGhhc2goe1xyXG4gICAgICBwcmVmaXgsXHJcbiAgICAgIGtleTogdGhpcy50YWJsZU9wdGlvbj8uZXhwb3J0Py5rZXksXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IHRhYmxlQ29sdW1ucygpIHtcclxuICAgIGNvbnN0IGNvbHVtbnM6IFNkRXhwb3J0Q29sdW1uW10gPSBbXTtcclxuICAgIHRoaXMudGFibGVPcHRpb24uY29sdW1uc1xyXG4gICAgICAuZmlsdGVyKGUgPT4gIWUuZXhwb3J0Py5kaXNhYmxlZClcclxuICAgICAgLmZvckVhY2goY29sdW1uID0+IHtcclxuICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdjaGlsZHJlbicpIHtcclxuICAgICAgICAgIGNvbHVtbi5jaGlsZHJlblxyXG4gICAgICAgICAgICA/LmZpbHRlcihlID0+ICFlLmV4cG9ydD8uZGlzYWJsZWQpXHJcbiAgICAgICAgICAgIC5mb3JFYWNoKGNoaWxkQ29sdW1uID0+IHtcclxuICAgICAgICAgICAgICBjb2x1bW5zLnB1c2goY2hpbGRDb2x1bW4pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29sdW1ucy5wdXNoKGNvbHVtbik7XHJcbiAgICAgIH0pO1xyXG4gICAgcmV0dXJuIGNvbHVtbnMubWFwKGUgPT4gKHtcclxuICAgICAgZmllbGQ6IGUuZmllbGQsXHJcbiAgICAgIHRpdGxlOiBlLnRpdGxlLFxyXG4gICAgICBkZXNjcmlwdGlvbjogZS5kZXNjcmlwdGlvbixcclxuICAgICAgd2lkdGg6IGUud2lkdGgsXHJcbiAgICB9KSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgZ2V0IGFkZGl0aW9uYWxDb2x1bW5zKCkge1xyXG4gICAgcmV0dXJuICh0aGlzLnRhYmxlT3B0aW9uLmV4cG9ydD8uY29sdW1ucz8uZmlsdGVyKGUgPT4gIWUuZXhwb3J0Py5kaXNhYmxlZCkgfHwgW10pLm1hcChlID0+ICh7XHJcbiAgICAgIGZpZWxkOiBlLmZpZWxkLFxyXG4gICAgICB0aXRsZTogZS50aXRsZSxcclxuICAgICAgZGVzY3JpcHRpb246IGUuZGVzY3JpcHRpb24sXHJcbiAgICAgIHdpZHRoOiBlLndpZHRoLFxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgI2dldEV4cG9ydGFibGVDb2x1bW5zID0gKCk6IFNkRXhwb3J0Q29sdW1uW10gPT4ge1xyXG4gICAgcmV0dXJuIFsuLi50aGlzLnRhYmxlQ29sdW1ucywgLi4udGhpcy5hZGRpdGlvbmFsQ29sdW1uc107XHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGxvYWRpbmdTZXJ2aWNlOiBTZExvYWRpbmdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBleHBvcnRTZXJ2aWNlOiBTZEV4cG9ydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmeVNlcnZpY2U6IFNkTm90aWZ5U2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogU2RUcmFuc2xhdGVTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHt9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHt9XHJcblxyXG4gIG9wZW4gPSBhc3luYyAoKSA9PiB7XHJcbiAgICBpZiAoIXRoaXMua2V5KSB7XHJcbiAgICAgIHRoaXMuZXhwb3J0RGVmYXVsdCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmxvYWRGaWxlcyhudWxsKTtcclxuICAgIHRoaXMuc2VsZWN0ZWQgPSB7fTtcclxuICAgIHRoaXMubW9kYWwub3BlbigpO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH07XHJcblxyXG4gICNnZXRFeHBvcnRDb2x1bW5zID0gKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbikge1xyXG4gICAgICBjb25zdCBjb2x1bW5zID0gWy4uLnRoaXMudGFibGVDb2x1bW5zXTtcclxuICAgICAgY29uc3QgeyBmaXJzdENvbHVtbnMsIHNlY29uZENvbHVtbnMgfSA9IHRoaXMuY29uZmlndXJhdGlvbjtcclxuICAgICAgY29uc3QgZGlzcGxheUNvbHVtbnM6IFNkVGFibGVDb2x1bW5bXSA9IFsuLi5maXJzdENvbHVtbnMsIC4uLnNlY29uZENvbHVtbnNdLnJlZHVjZSgoZmlyc3QsIG5leHQpID0+IHtcclxuICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLnRhYmxlT3B0aW9uLmNvbHVtbnMuZmluZChlID0+IGUuZmllbGQgPT09IG5leHQuZmllbGQpO1xyXG4gICAgICAgIGlmICghY29sdW1uKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmlyc3Q7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb2x1bW4udHlwZSAhPT0gJ2NoaWxkcmVuJykge1xyXG4gICAgICAgICAgcmV0dXJuIFsuLi5maXJzdCwgY29sdW1uXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFsuLi5maXJzdCwgLi4uY29sdW1uLmNoaWxkcmVuXTtcclxuICAgICAgfSwgW10pO1xyXG4gICAgICBjb25zdCByZXN1bHRzID0gZGlzcGxheUNvbHVtbnNcclxuICAgICAgICAubWFwKGUgPT4gKHtcclxuICAgICAgICAgIC4uLmUsXHJcbiAgICAgICAgICBkYXRhOiBjb2x1bW5zLmZpbmQoZTEgPT4gZTEuZmllbGQgPT09IGUuZmllbGQpLFxyXG4gICAgICAgIH0pKVxyXG4gICAgICAgIC5maWx0ZXIoZSA9PiAhIWUuZGF0YSlcclxuICAgICAgICAubWFwKGUgPT4gZS5kYXRhKTtcclxuICAgICAgcmV0dXJuIFsuLi5yZXN1bHRzLCAuLi50aGlzLmFkZGl0aW9uYWxDb2x1bW5zXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNvbHVtbnM7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgZXhwb3J0RGVmYXVsdCA9ICgpID0+IHtcclxuICAgIHRoaXMuZXhwb3J0LmVtaXQoe1xyXG4gICAgICBmaWxlOiBudWxsLFxyXG4gICAgICBjb2x1bW5zOiB0aGlzLiNnZXRFeHBvcnRDb2x1bW5zKCksXHJcbiAgICAgIGlzQ1NWOiBmYWxzZSxcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIGV4cG9ydENTViA9ICgpID0+IHtcclxuICAgIHRoaXMuZXhwb3J0LmVtaXQoe1xyXG4gICAgICBmaWxlOiBudWxsLFxyXG4gICAgICBjb2x1bW5zOiB0aGlzLiNnZXRFeHBvcnRDb2x1bW5zKCksXHJcbiAgICAgIGlzQ1NWOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgbG9hZEZpbGVzID0gYXN5bmMgKGdyb3VwOiBzdHJpbmcgPSBudWxsKSA9PiB7XHJcbiAgICB0aGlzLmZpbGVzID0gYXdhaXQgdGhpcy5leHBvcnRTZXJ2aWNlLmZpbGVzSW5Gb2xkZXIoe1xyXG4gICAgICBrZXk6IHRoaXMua2V5LFxyXG4gICAgICBncm91cCxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfTtcclxuXHJcbiAgI2luaXRUZW1wbGF0ZSA9IGFzeW5jIChmaWxlTmFtZT86IHN0cmluZykgPT4ge1xyXG4gICAgY29uc3Qgc2hlZXRzOiB7XHJcbiAgICAgIG5hbWU6IHN0cmluZztcclxuICAgICAgaXRlbXM6IGFueVtdO1xyXG4gICAgICBmaWVsZHM6IHN0cmluZ1tdO1xyXG4gICAgfVtdID0gW107XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnRhYmxlT3B0aW9uPy5leHBvcnQ/LnNoZWV0cykpIHtcclxuICAgICAgZm9yIChjb25zdCBzaGVldCBvZiB0aGlzLnRhYmxlT3B0aW9uLmV4cG9ydC5zaGVldHMpIHtcclxuICAgICAgICBpZiAoc2hlZXQubmFtZSAmJiBzaGVldC5pdGVtcyAmJiBzaGVldC5maWVsZHMpIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNoZWV0Lml0ZW1zKSkge1xyXG4gICAgICAgICAgICBzaGVldHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogc2hlZXQubmFtZSxcclxuICAgICAgICAgICAgICBpdGVtczogc2hlZXQuaXRlbXMsXHJcbiAgICAgICAgICAgICAgZmllbGRzOiBzaGVldC5maWVsZHMsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc2hlZXRzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6IHNoZWV0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgaXRlbXM6IGF3YWl0IHNoZWV0Lml0ZW1zKCksXHJcbiAgICAgICAgICAgICAgZmllbGRzOiBzaGVldC5maWVsZHMsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhwb3J0U2VydmljZS5nZW5lcmF0ZVRlbXBsYXRlKHtcclxuICAgICAgZmlsZU5hbWU6IGZpbGVOYW1lIHx8IHRoaXMudGFibGVPcHRpb24/LmV4cG9ydD8uZmlsZU5hbWUsXHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY29sdW1ucyxcclxuICAgICAgc2hlZXRzLFxyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgZ2VuZXJhdGVUZW1wbGF0ZSA9IGFzeW5jICgpID0+IHtcclxuICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RhcnQoKTtcclxuICAgIGF3YWl0IHRoaXMuI2luaXRUZW1wbGF0ZSgpLmZpbmFsbHkodGhpcy5sb2FkaW5nU2VydmljZS5zdG9wKTtcclxuICB9O1xyXG5cclxuICBnZW5lcmF0ZUFuZFVwbG9hZFRlbXBsYXRlID0gYXN5bmMgKGZpbGVOYW1lPzogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCBzaGVldHM6IHtcclxuICAgICAgbmFtZTogc3RyaW5nO1xyXG4gICAgICBpdGVtczogYW55W107XHJcbiAgICAgIGZpZWxkczogc3RyaW5nW107XHJcbiAgICB9W10gPSBbXTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMudGFibGVPcHRpb24/LmV4cG9ydD8uc2hlZXRzKSkge1xyXG4gICAgICBmb3IgKGNvbnN0IHNoZWV0IG9mIHRoaXMudGFibGVPcHRpb24/LmV4cG9ydD8uc2hlZXRzKSB7XHJcbiAgICAgICAgaWYgKHNoZWV0Lm5hbWUgJiYgc2hlZXQuaXRlbXMgJiYgc2hlZXQuZmllbGRzKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzaGVldC5pdGVtcykpIHtcclxuICAgICAgICAgICAgc2hlZXRzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6IHNoZWV0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgaXRlbXM6IHNoZWV0Lml0ZW1zLFxyXG4gICAgICAgICAgICAgIGZpZWxkczogc2hlZXQuZmllbGRzLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHNoZWV0cy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiBzaGVldC5uYW1lLFxyXG4gICAgICAgICAgICAgIGl0ZW1zOiBhd2FpdCBzaGVldC5pdGVtcygpLFxyXG4gICAgICAgICAgICAgIGZpZWxkczogc2hlZXQuZmllbGRzLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4cG9ydFNlcnZpY2UuZ2VuZXJhdGVVcGxvYWRUZW1wbGF0ZSh7XHJcbiAgICAgIGtleTogdGhpcy5rZXksXHJcbiAgICAgIHRlbXBsYXRlOiB7XHJcbiAgICAgICAgZmlsZU5hbWU6IGZpbGVOYW1lIHx8IHRoaXMudGFibGVPcHRpb24/LmV4cG9ydD8uZmlsZU5hbWUsXHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zLmZpbHRlcihlID0+IHRoaXMuc2VsZWN0ZWRbZS5maWVsZF0pLFxyXG4gICAgICAgIHNoZWV0cyxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIG9uRXhwb3J0ID0gKGZpbGU6IFNkRXhwb3J0RmlsZSkgPT4ge1xyXG4gICAgdGhpcy5leHBvcnQuZW1pdCh7XHJcbiAgICAgIGZpbGUsXHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY29sdW1ucyxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH07XHJcblxyXG4gIHVwbG9hZFRlbXBsYXRlID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgZmlsZSA9IGF3YWl0IHRoaXMuZXhwb3J0U2VydmljZS51cGxvYWRUZW1wbGF0ZSh7XHJcbiAgICAgIGtleTogdGhpcy5rZXksXHJcbiAgICB9KTtcclxuICAgIGlmIChmaWxlKSB7XHJcbiAgICAgIHRoaXMuZmlsZXMgPSBbLi4udGhpcy5maWxlcywgZmlsZV07XHJcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICByZW1vdmVGaWxlID0gKGZpbGU6IFNkRXhwb3J0RmlsZSkgPT4ge1xyXG4gICAgdGhpcy5ub3RpZnlTZXJ2aWNlLmNvbmZpcm0odGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnUmVtb3ZlIHRlbXBsYXRlJykpLnRoZW4oKCkgPT4ge1xyXG4gICAgICB0aGlzLmV4cG9ydFNlcnZpY2UucmVtb3ZlRmlsZSh7XHJcbiAgICAgICAga2V5OiB0aGlzLmtleSxcclxuICAgICAgICBmaWxlTmFtZTogZmlsZS5maWxlTmFtZSxcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnN0IGlkeCA9IHRoaXMuZmlsZXMuaW5kZXhPZihmaWxlKTtcclxuICAgICAgdGhpcy5maWxlcy5zcGxpY2UoaWR4LCAxKTtcclxuICAgICAgdGhpcy5maWxlcyA9IFsuLi50aGlzLmZpbGVzXTtcclxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgY3JlYXRlVGVtcGxhdGUgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmNvbHVtbnMuc29tZShlID0+IHRoaXMuc2VsZWN0ZWRbZS5maWVsZF0pKSB7XHJcbiAgICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZyhgVnVpIGzDsm5nIGNo4buNbiBj4buZdCBk4buvIGxp4buHdSDEkeG7gyB4deG6pXRgKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdGFydCgpO1xyXG4gICAgY29uc3QgZmlsZU5hbWUgPSB0aGlzLnRlbXBsYXRlTmFtZSArICcueGxzeCc7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmdlbmVyYXRlQW5kVXBsb2FkVGVtcGxhdGUoZmlsZU5hbWUpO1xyXG4gICAgICBpZiAocmVzdWx0Py5maWxlUGF0aCkge1xyXG4gICAgICAgIGNvbnN0IGZpbGU6IFNkRXhwb3J0RmlsZSA9IHtcclxuICAgICAgICAgIGZpbGVQYXRoOiByZXN1bHQuZmlsZVBhdGgsXHJcbiAgICAgICAgICBmaWxlTmFtZTogcmVzdWx0LmZpbGVOYW1lLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5vbkV4cG9ydChmaWxlKTtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlTmFtZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5lbmFibGVDcmVhdGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZmlsZXMgPSBbLi4udGhpcy5maWxlcywgZmlsZV07XHJcbiAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9IGZpbmFsbHkge1xyXG4gICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnN0b3AoKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICB0ZW1wbGF0ZU5hbWVWYWxpZGF0b3IgPSAodmFsOiBzdHJpbmcpID0+IHtcclxuICAgIGNvbnN0IHsgdHJhbnNsYXRlIH0gPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2U7XHJcbiAgICBjb25zdCByZWdleCA9IC9eW0EtWmEtejAtOSBfXSpbQS1aYS16MC05XVtBLVphLXowLTkgX10qJC87XHJcbiAgICBpZiAoIXZhbCkge1xyXG4gICAgICByZXR1cm4gdHJhbnNsYXRlKCdQbGVhc2UgZW50ZXIgeW91ciB0ZW1wbGF0ZSBuYW1lJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodmFsLmxlbmd0aCA+IDUwKSB7XHJcbiAgICAgIHJldHVybiB0cmFuc2xhdGUoJ1RlbXBsYXRlIG5hbWUgaXMgdG9vIGxvbmcnKTtcclxuICAgIH1cclxuICAgIGlmICghcmVnZXgudGVzdCh2YWwpKSB7XHJcbiAgICAgIHJldHVybiB0cmFuc2xhdGUoJ1RlbXBsYXRlIG5hbWUgb25seSBjb250YWlucyBsZXR0ZXJzLCBudW1iZXJzIGFuZCBzcGFjZXMnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH07XHJcbn1cclxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtb3B0aW9uLWV4cG9ydC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvdGFibGUvIiwic291cmNlcyI6WyJzcmMvbGliL21vZGVscy90YWJsZS1vcHRpb24tZXhwb3J0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZFRhYmxlRmlsdGVyUmVxdWVzdCB9IGZyb20gJy4uL3NlcnZpY2VzL3RhYmxlLWZpbHRlci90YWJsZS1maWx0ZXIubW9kZWwnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZFRhYmxlT3B0aW9uRXhwb3J0PFQgPSBhbnk+IHtcclxuICBrZXk/OiBzdHJpbmc7XHJcbiAgdmlzaWJsZT86ICdBTEwnIHwgJ0VYQ0VMJyB8ICdDU1YnO1xyXG4gIGVuYWJsZVVwbG9hZD86IGJvb2xlYW47XHJcbiAgZmlsZU5hbWU/OiBzdHJpbmc7XHJcbiAgbWF4PzogbnVtYmVyOyAvLyBT4buRIGTDsm5nIGThu68gbGnhu4d1IHThu5FpIMSRYSBjaG8gcGjDqXAgZXhwb3J0XHJcbiAgbWF4SXRlbXNQZXJSZXF1ZXN0PzogbnVtYmVyOyAvLyBQYWdlIHNpemUsIGRlZmF1bHQ6IDEwMDBcclxuICBiYXRjaD86IG51bWJlcjsgLy8gU+G7kSBsxrDhu6NuZyByZXF1ZXN0IG3hu5dpIGzhuqduIGfhu41pLCBkZWZhdWx0OiAxXHJcbiAgaXRlbXM/OiAoZmlsdGVyUmVxdWVzdDogU2RUYWJsZUZpbHRlclJlcXVlc3QpID0+IFRbXSB8IFByb21pc2U8VFtdPiB8IFByb21pc2U8eyBpdGVtczogYW55W107IHRvdGFsOiBudW1iZXIgfT47XHJcbiAgLy8gVHJvbmcgdHLGsOG7nW5nIGjhu6NwIGPDsyB44butIGzDvSBsb2dpYyB2w6Agc+G7kSBkw7JuZyByZW5kZXIgPD4gc+G7kSBkw7JuZyB0cuG6oyB24buBXHJcbiAgbWFwcGluZz86IChpdGVtczogVFtdLCBmaWxlTmFtZT86IHN0cmluZykgPT4gVFtdIHwgUHJvbWlzZTxUW10+O1xyXG4gIGNvbHVtbnM/OiBTZFRhYmxlT3B0aW9uRXhwb3J0Q29sdW1uPFQ+W107XHJcbiAgc2hlZXRzPzoge1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgaXRlbXM6IGFueVtdIHwgKChpdGVtcz86IGFueVtdKSA9PiBhbnlbXSB8IFByb21pc2U8YW55W10+KTtcclxuICAgIGZpZWxkczogc3RyaW5nW107XHJcbiAgfVtdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNkVGFibGVPcHRpb25FeHBvcnRDb2x1bW48VCA9IGFueT4ge1xyXG4gIGZpZWxkOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBkZXNjcmlwdGlvbj86IHN0cmluZztcclxuICB3aWR0aD86IHN0cmluZztcclxuICB0cmFuc2Zvcm0/OiAodmFsdWU6IGFueSwgcm93RGF0YTogVCkgPT4gc3RyaW5nO1xyXG4gIGV4cG9ydD86IHtcclxuICAgIGRpc2FibGVkOiBib29sZWFuO1xyXG4gIH07XHJcbn1cclxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtb3B0aW9uLWV4cG9ydC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvdGFibGUvIiwic291cmNlcyI6WyJzcmMvbGliL21vZGVscy90YWJsZS1vcHRpb24tZXhwb3J0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZFRhYmxlRmlsdGVyUmVxdWVzdCB9IGZyb20gJy4uL3NlcnZpY2VzL3RhYmxlLWZpbHRlci90YWJsZS1maWx0ZXIubW9kZWwnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZFRhYmxlT3B0aW9uRXhwb3J0PFQgPSBhbnk+IHtcclxuICBrZXk/OiBzdHJpbmc7XHJcbiAgdmlzaWJsZT86ICdBTEwnIHwgJ0VYQ0VMJyB8ICdDU1YnO1xyXG4gIGVuYWJsZVVwbG9hZD86IGJvb2xlYW47XHJcbiAgZmlsZU5hbWU/OiBzdHJpbmc7XHJcbiAgbWF4PzogbnVtYmVyOyAvLyBT4buRIGTDsm5nIGThu68gbGnhu4d1IHThu5FpIMSRYSBjaG8gcGjDqXAgZXhwb3J0XHJcbiAgbWF4SXRlbXNQZXJSZXF1ZXN0PzogbnVtYmVyOyAvLyBQYWdlIHNpemUsIGRlZmF1bHQ6IDEwMDBcclxuICBiYXRjaD86IG51bWJlcjsgLy8gU+G7kSBsxrDhu6NuZyByZXF1ZXN0IG3hu5dpIGzhuqduIGfhu41pLCBkZWZhdWx0OiAxXHJcbiAgaXRlbXM/OiAoZmlsdGVyUmVxdWVzdDogU2RUYWJsZUZpbHRlclJlcXVlc3QpID0+IFRbXSB8IFByb21pc2U8VFtdPiB8IFByb21pc2U8eyBpdGVtczogYW55W107IHRvdGFsOiBudW1iZXIgfT47XHJcbiAgLy8gVHJvbmcgdHLGsOG7nW5nIGjhu6NwIGPDsyB44butIGzDvSBsb2dpYyB2w6Agc+G7kSBkw7JuZyByZW5kZXIgPD4gc+G7kSBkw7JuZyB0cuG6oyB24buBXHJcbiAgbWFwcGluZz86IChpdGVtczogVFtdLCBmaWxlTmFtZT86IHN0cmluZykgPT4gVFtdIHwgUHJvbWlzZTxUW10+O1xyXG4gIGNvbHVtbnM/OiBTZFRhYmxlT3B0aW9uRXhwb3J0Q29sdW1uPFQ+W107XHJcbiAgc2hlZXRzPzogU2RUYWJsZU9wdGlvbkV4cG9ydFNoZWV0W107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2RUYWJsZU9wdGlvbkV4cG9ydENvbHVtbjxUID0gYW55PiB7XHJcbiAgZmllbGQ6IEV4dHJhY3Q8a2V5b2YgVCwgc3RyaW5nPjtcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xyXG4gIHdpZHRoPzogc3RyaW5nO1xyXG4gIHRyYW5zZm9ybT86ICh2YWx1ZTogYW55LCByb3dEYXRhOiBUKSA9PiBzdHJpbmc7XHJcbiAgZXhwb3J0Pzoge1xyXG4gICAgZGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZFRhYmxlT3B0aW9uRXhwb3J0U2hlZXQ8VCA9IGFueT4ge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBpdGVtczogVFtdIHwgKCgpID0+IFRbXSB8IFByb21pc2U8VFtdPik7XHJcbiAgZmllbGRzOiAoRXh0cmFjdDxrZXlvZiBULCBzdHJpbmc+KVtdO1xyXG59XHJcbiJdfQ==