valtech-components 2.0.908 → 2.0.911

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.
@@ -1,3 +1,4 @@
1
+ import Compressor from 'compressorjs';
1
2
  import { Component, computed, inject, input, output, signal } from '@angular/core';
2
3
  import { IonButton, IonIcon, IonNote, IonSpinner } from '@ionic/angular/standalone';
3
4
  import { addIcons } from 'ionicons';
@@ -45,9 +46,25 @@ export class AttachmentUploaderComponent {
45
46
  this.uploadFile(id, file);
46
47
  }
47
48
  }
49
+ compressImage(file) {
50
+ return new Promise((resolve, reject) => {
51
+ new Compressor(file, {
52
+ quality: 0.8,
53
+ maxWidth: 1920,
54
+ maxHeight: 1920,
55
+ convertSize: 2 * 1024 * 1024, // PNG > 2 MB → JPEG
56
+ success(result) {
57
+ resolve(new File([result], file.name, { type: result.type }));
58
+ },
59
+ error: reject,
60
+ });
61
+ });
62
+ }
48
63
  async uploadFile(id, file) {
49
64
  try {
50
- const url = await this.feedbackService.uploadAttachment(file);
65
+ const shouldCompress = this.props().compressImages !== false && file.type.startsWith('image/');
66
+ const fileToUpload = shouldCompress ? await this.compressImage(file) : file;
67
+ const url = await this.feedbackService.uploadAttachment(fileToUpload);
51
68
  this.attachments.update(list => list.map(a => (a.id === id ? { ...a, status: 'ready', url } : a)));
52
69
  }
53
70
  catch {
@@ -74,4 +91,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
74
91
  type: Component,
75
92
  args: [{ selector: 'val-attachment-uploader', standalone: true, imports: [IonButton, IonIcon, IonNote, IonSpinner], template: "<div class=\"attachment-uploader\">\n <input #filePicker type=\"file\" [accept]=\"accept()\" multiple class=\"hidden-input\" (change)=\"onFilesSelected($event)\" />\n\n <div class=\"attachment-actions\">\n <ion-button fill=\"outline\" size=\"small\" [disabled]=\"isDisabled()\" (click)=\"filePicker.click()\">\n <ion-icon slot=\"start\" name=\"attach-outline\"></ion-icon>\n {{ i18n.t('attachAdd') }}\n </ion-button>\n <!-- label trick: native browser gesture forwarding \u2192 iOS/PWA no bloquea el picker -->\n <label class=\"camera-label\" [class.camera-label--disabled]=\"isDisabled()\">\n <input\n type=\"file\"\n accept=\"image/*\"\n capture=\"environment\"\n class=\"hidden-input\"\n [disabled]=\"isDisabled()\"\n (change)=\"onFilesSelected($event)\"\n />\n <ion-icon name=\"camera-outline\"></ion-icon>\n {{ i18n.t('attachCamera') }}\n </label>\n </div>\n\n @if (maxReached()) {\n <ion-note color=\"warning\" class=\"max-note\">\n {{ i18n.t('attachMaxCount', '_global', { count: maxFiles().toString() }) }}\n </ion-note>\n } @if (attachments().length > 0) {\n <div class=\"attachment-list\">\n @for (item of attachments(); track item.id) {\n <div class=\"attachment-item\" [class]=\"'status-' + item.status\">\n <ion-icon\n class=\"file-icon\"\n [name]=\"item.file.type.startsWith('image/') ? 'image-outline' : 'document-outline'\"\n ></ion-icon>\n <div class=\"file-info\">\n <span class=\"file-name\">{{ item.file.name }}</span>\n <span class=\"file-size\">{{ formatSize(item.file.size) }}</span>\n </div>\n\n @if (item.status === 'uploading') {\n <ion-spinner class=\"status-icon\" name=\"circular\"></ion-spinner>\n } @else if (item.status === 'ready') {\n <ion-icon class=\"status-icon\" name=\"checkmark-circle-outline\" color=\"success\"></ion-icon>\n } @else if (item.status === 'error') {\n <ion-icon class=\"status-icon\" name=\"close-circle-outline\" color=\"danger\"></ion-icon>\n } @if (item.status !== 'uploading') {\n <ion-button fill=\"clear\" size=\"small\" color=\"medium\" (click)=\"remove(item.id)\">\n <ion-icon slot=\"icon-only\" name=\"trash-outline\"></ion-icon>\n </ion-button>\n } @if (item.status === 'error' && item.error) {\n <ion-note color=\"danger\" class=\"error-note\">{{ item.error }}</ion-note>\n }\n </div>\n }\n </div>\n }\n</div>\n", styles: [".hidden-input{display:none}.camera-label{display:inline-flex;align-items:center;gap:6px;padding:0 12px;height:32px;font-size:14px;font-weight:500;border-radius:4px;border:1px solid currentColor;color:var(--ion-color-dark);background:transparent;cursor:pointer;-webkit-user-select:none;user-select:none;transition:opacity .15s}.camera-label ion-icon{font-size:16px;flex-shrink:0}.camera-label--disabled{opacity:.4;pointer-events:none}.attachment-uploader{display:flex;flex-direction:column;gap:8px}.attachment-actions{display:flex;gap:8px;flex-wrap:wrap}.attachment-list{display:flex;flex-direction:column;gap:4px}.attachment-item{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:8px;background:var(--ion-color-light);flex-wrap:wrap}.attachment-item.status-error{background:var(--ion-color-danger-tint)}.attachment-item.status-ready{background:var(--ion-color-success-tint)}.file-icon{font-size:20px;flex-shrink:0}.file-info{flex:1;min-width:0;display:flex;flex-direction:column}.file-name{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-size{font-size:12px;color:var(--ion-color-medium)}.status-icon{font-size:20px;flex-shrink:0}.error-note{font-size:11px;width:100%}.max-note{font-size:12px}\n"] }]
76
93
  }], ctorParameters: () => [] });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC11cGxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2F0dGFjaG1lbnQtdXBsb2FkZXIvYXR0YWNobWVudC11cGxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2F0dGFjaG1lbnQtdXBsb2FkZXIvYXR0YWNobWVudC11cGxvYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUNMLGFBQWEsRUFDYixhQUFhLEVBQ2Isc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsWUFBWSxFQUNaLFlBQVksR0FDYixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBVXJELE1BQU0sT0FBTywyQkFBMkI7SUFnQnRDLElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRTthQUN0QixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLE9BQU8sQ0FBQzthQUNqQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMs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SUFBSTtZQUFFLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2pFLE9BQU8sR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3BELENBQUM7K0dBcEVVLDJCQUEyQjttR0FBM0IsMkJBQTJCLDRRQ3ZCeEMsMjhFQTBEQSx5eUNEdkNZLFNBQVMsb1BBQUUsT0FBTywySkFBRSxPQUFPLGdGQUFFLFVBQVU7OzRGQUl0QywyQkFBMkI7a0JBUHZDLFNBQVM7K0JBQ0UseUJBQXlCLGNBQ3ZCLElBQUksV0FDUCxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkljb24sIElvbk5vdGUsIElvblNwaW5uZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgYXR0YWNoT3V0bGluZSxcbiAgY2FtZXJhT3V0bGluZSxcbiAgY2hlY2ttYXJrQ2lyY2xlT3V0bGluZSxcbiAgY2xvc2VDaXJjbGVPdXRsaW5lLFxuICBkb2N1bWVudE91dGxpbmUsXG4gIGltYWdlT3V0bGluZSxcbiAgdHJhc2hPdXRsaW5lLFxufSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBGZWVkYmFja1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mZWVkYmFjayc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgQXR0YWNobWVudEl0ZW0sIEF0dGFjaG1lbnRVcGxvYWRlck1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1hdHRhY2htZW50LXVwbG9hZGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvbkJ1dHRvbiwgSW9uSWNvbiwgSW9uTm90ZSwgSW9uU3Bpbm5lcl0sXG4gIHRlbXBsYXRlVXJsOiAnLi9hdHRhY2htZW50LXVwbG9hZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2F0dGFjaG1lbnQtdXBsb2FkZXIuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBBdHRhY2htZW50VXBsb2FkZXJDb21wb25lbnQge1xuICBwcm9wcyA9IGlucHV0PEF0dGFjaG1lbnRVcGxvYWRlck1ldGFkYXRhPih7fSk7XG5cbiAgYXR0YWNobWVudHNDaGFuZ2UgPSBvdXRwdXQ8QXR0YWNobWVudEl0ZW1bXT4oKTtcblxuICBwcm90ZWN0ZWQgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgZmVlZGJhY2tTZXJ2aWNlID0gaW5qZWN0KEZlZWRiYWNrU2VydmljZSk7XG5cbiAgYXR0YWNobWVudHMgPSBzaWduYWw8QXR0YWNobWVudEl0ZW1bXT4oW10pO1xuXG4gIG1heEZpbGVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9wcygpLm1heEZpbGVzID8/IDUpO1xuICBhY2NlcHQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnByb3BzKCkuYWNjZXB0ID8/ICdpbWFnZS9qcGVnLGltYWdlL3BuZyxpbWFnZS93ZWJwLGFwcGxpY2F0aW9uL3BkZicpO1xuICBtYXhSZWFjaGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hdHRhY2htZW50cygpLmxlbmd0aCA+PSB0aGlzLm1heEZpbGVzKCkpO1xuICBpc0Rpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9wcygpLmRpc2FibGVkID09PSB0cnVlIHx8IHRoaXMubWF4UmVhY2hlZCgpKTtcbiAgaXNVcGxvYWRpbmcgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmF0dGFjaG1lbnRzKCkuc29tZShhID0+IGEuc3RhdHVzID09PSAndXBsb2FkaW5nJykpO1xuXG4gIGdldCByZWFkeVVybHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmF0dGFjaG1lbnRzKClcbiAgICAgIC5maWx0ZXIoYSA9PiBhLnN0YXR1cyA9PT0gJ3JlYWR5JylcbiAgICAgIC5tYXAoYSA9PiBhLnVybCEpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgYWRkSWNvbnMoe1xuICAgICAgYXR0YWNoT3V0bGluZSxcbiAgICAgIGNhbWVyYU91dGxpbmUsXG4gICAgICBjaGVja21hcmtDaXJjbGVPdXRsaW5lLFxuICAgICAgY2xvc2VDaXJjbGVPdXRsaW5lLFxuICAgICAgZG9jdW1lbnRPdXRsaW5lLFxuICAgICAgaW1hZ2VPdXRsaW5lLFxuICAgICAgdHJhc2hPdXRsaW5lLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgb25GaWxlc1NlbGVjdGVkKGV2ZW50OiBFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgZmlsZXMgPSBBcnJheS5mcm9tKGlucHV0LmZpbGVzID8/IFtdKTtcbiAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICAgIGNvbnN0IGF2YWlsYWJsZSA9IHRoaXMubWF4RmlsZXMoKSAtIHRoaXMuYXR0YWNobWVudHMoKS5sZW5ndGg7XG4gICAgY29uc3QgdG9Qcm9jZXNzID0gZmlsZXMuc2xpY2UoMCwgYXZhaWxhYmxlKTtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgdG9Qcm9jZXNzKSB7XG4gICAgICBjb25zdCBpZCA9IGNyeXB0by5yYW5kb21VVUlEKCk7XG4gICAgICB0aGlzLmF0dGFjaG1lbnRzLnVwZGF0ZShsaXN0ID0+IFsuLi5saXN0LCB7IGlkLCBmaWxlLCBzdGF0dXM6ICd1cGxvYWRpbmcnIH1dKTtcbiAgICAgIHRoaXMuYXR0YWNobWVudHNDaGFuZ2UuZW1pdCh0aGlzLmF0dGFjaG1lbnRzKCkpO1xuICAgICAgdGhpcy51cGxvYWRGaWxlKGlkLCBmaWxlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwbG9hZEZpbGUoaWQ6IHN0cmluZywgZmlsZTogRmlsZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cmwgPSBhd2FpdCB0aGlzLmZlZWRiYWNrU2VydmljZS51cGxvYWRBdHRhY2htZW50KGZpbGUpO1xuICAgICAgdGhpcy5hdHRhY2htZW50cy51cGRhdGUobGlzdCA9PiBsaXN0Lm1hcChhID0+IChhLmlkID09PSBpZCA/IHsgLi4uYSwgc3RhdHVzOiAncmVhZHknLCB1cmwgfSA6IGEpKSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICBjb25zdCBlcnJvciA9IHRoaXMuaTE4bi50KCdhdHRhY2hVcGxvYWRGYWlsZWQnKTtcbiAgICAgIHRoaXMuYXR0YWNobWVudHMudXBkYXRlKGxpc3QgPT4gbGlzdC5tYXAoYSA9PiAoYS5pZCA9PT0gaWQgPyB7IC4uLmEsIHN0YXR1czogJ2Vycm9yJywgZXJyb3IgfSA6IGEpKSk7XG4gICAgfVxuICAgIHRoaXMuYXR0YWNobWVudHNDaGFuZ2UuZW1pdCh0aGlzLmF0dGFjaG1lbnRzKCkpO1xuICB9XG5cbiAgcmVtb3ZlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmF0dGFjaG1lbnRzLnVwZGF0ZShsaXN0ID0+IGxpc3QuZmlsdGVyKGEgPT4gYS5pZCAhPT0gaWQpKTtcbiAgICB0aGlzLmF0dGFjaG1lbnRzQ2hhbmdlLmVtaXQodGhpcy5hdHRhY2htZW50cygpKTtcbiAgfVxuXG4gIGZvcm1hdFNpemUoYnl0ZXM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKGJ5dGVzIDwgMTAyNCkgcmV0dXJuIGAke2J5dGVzfSBCYDtcbiAgICBpZiAoYnl0ZXMgPCAxMDI0ICogMTAyNCkgcmV0dXJuIGAke01hdGgucm91bmQoYnl0ZXMgLyAxMDI0KX0gS0JgO1xuICAgIHJldHVybiBgJHsoYnl0ZXMgLyAoMTAyNCAqIDEwMjQpKS50b0ZpeGVkKDEpfSBNQmA7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhdHRhY2htZW50LXVwbG9hZGVyXCI+XG4gIDxpbnB1dCAjZmlsZVBpY2tlciB0eXBlPVwiZmlsZVwiIFthY2NlcHRdPVwiYWNjZXB0KClcIiBtdWx0aXBsZSBjbGFzcz1cImhpZGRlbi1pbnB1dFwiIChjaGFuZ2UpPVwib25GaWxlc1NlbGVjdGVkKCRldmVudClcIiAvPlxuXG4gIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50LWFjdGlvbnNcIj5cbiAgICA8aW9uLWJ1dHRvbiBmaWxsPVwib3V0bGluZVwiIHNpemU9XCJzbWFsbFwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkKClcIiAoY2xpY2spPVwiZmlsZVBpY2tlci5jbGljaygpXCI+XG4gICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgbmFtZT1cImF0dGFjaC1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgIHt7IGkxOG4udCgnYXR0YWNoQWRkJykgfX1cbiAgICA8L2lvbi1idXR0b24+XG4gICAgPCEtLSBsYWJlbCB0cmljazogbmF0aXZlIGJyb3dzZXIgZ2VzdHVyZSBmb3J3YXJkaW5nIOKGkiBpT1MvUFdBIG5vIGJsb3F1ZWEgZWwgcGlja2VyIC0tPlxuICAgIDxsYWJlbCBjbGFzcz1cImNhbWVyYS1sYWJlbFwiIFtjbGFzcy5jYW1lcmEtbGFiZWwtLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoKVwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgYWNjZXB0PVwiaW1hZ2UvKlwiXG4gICAgICAgIGNhcHR1cmU9XCJlbnZpcm9ubWVudFwiXG4gICAgICAgIGNsYXNzPVwiaGlkZGVuLWlucHV0XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWQoKVwiXG4gICAgICAgIChjaGFuZ2UpPVwib25GaWxlc1NlbGVjdGVkKCRldmVudClcIlxuICAgICAgLz5cbiAgICAgIDxpb24taWNvbiBuYW1lPVwiY2FtZXJhLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAge3sgaTE4bi50KCdhdHRhY2hDYW1lcmEnKSB9fVxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuXG4gIEBpZiAobWF4UmVhY2hlZCgpKSB7XG4gIDxpb24tbm90ZSBjb2xvcj1cIndhcm5pbmdcIiBjbGFzcz1cIm1heC1ub3RlXCI+XG4gICAge3sgaTE4bi50KCdhdHRhY2hNYXhDb3VudCcsICdfZ2xvYmFsJywgeyBjb3VudDogbWF4RmlsZXMoKS50b1N0cmluZygpIH0pIH19XG4gIDwvaW9uLW5vdGU+XG4gIH0gQGlmIChhdHRhY2htZW50cygpLmxlbmd0aCA+IDApIHtcbiAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnQtbGlzdFwiPlxuICAgIEBmb3IgKGl0ZW0gb2YgYXR0YWNobWVudHMoKTsgdHJhY2sgaXRlbS5pZCkge1xuICAgIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50LWl0ZW1cIiBbY2xhc3NdPVwiJ3N0YXR1cy0nICsgaXRlbS5zdGF0dXNcIj5cbiAgICAgIDxpb24taWNvblxuICAgICAgICBjbGFzcz1cImZpbGUtaWNvblwiXG4gICAgICAgIFtuYW1lXT1cIml0ZW0uZmlsZS50eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpID8gJ2ltYWdlLW91dGxpbmUnIDogJ2RvY3VtZW50LW91dGxpbmUnXCJcbiAgICAgID48L2lvbi1pY29uPlxuICAgICAgPGRpdiBjbGFzcz1cImZpbGUtaW5mb1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGUtbmFtZVwiPnt7IGl0ZW0uZmlsZS5uYW1lIH19PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGUtc2l6ZVwiPnt7IGZvcm1hdFNpemUoaXRlbS5maWxlLnNpemUpIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIEBpZiAoaXRlbS5zdGF0dXMgPT09ICd1cGxvYWRpbmcnKSB7XG4gICAgICA8aW9uLXNwaW5uZXIgY2xhc3M9XCJzdGF0dXMtaWNvblwiIG5hbWU9XCJjaXJjdWxhclwiPjwvaW9uLXNwaW5uZXI+XG4gICAgICB9IEBlbHNlIGlmIChpdGVtLnN0YXR1cyA9PT0gJ3JlYWR5Jykge1xuICAgICAgPGlvbi1pY29uIGNsYXNzPVwic3RhdHVzLWljb25cIiBuYW1lPVwiY2hlY2ttYXJrLWNpcmNsZS1vdXRsaW5lXCIgY29sb3I9XCJzdWNjZXNzXCI+PC9pb24taWNvbj5cbiAgICAgIH0gQGVsc2UgaWYgKGl0ZW0uc3RhdHVzID09PSAnZXJyb3InKSB7XG4gICAgICA8aW9uLWljb24gY2xhc3M9XCJzdGF0dXMtaWNvblwiIG5hbWU9XCJjbG9zZS1jaXJjbGUtb3V0bGluZVwiIGNvbG9yPVwiZGFuZ2VyXCI+PC9pb24taWNvbj5cbiAgICAgIH0gQGlmIChpdGVtLnN0YXR1cyAhPT0gJ3VwbG9hZGluZycpIHtcbiAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIHNpemU9XCJzbWFsbFwiIGNvbG9yPVwibWVkaXVtXCIgKGNsaWNrKT1cInJlbW92ZShpdGVtLmlkKVwiPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJ0cmFzaC1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIH0gQGlmIChpdGVtLnN0YXR1cyA9PT0gJ2Vycm9yJyAmJiBpdGVtLmVycm9yKSB7XG4gICAgICA8aW9uLW5vdGUgY29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cImVycm9yLW5vdGVcIj57eyBpdGVtLmVycm9yIH19PC9pb24tbm90ZT5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC11cGxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2F0dGFjaG1lbnQtdXBsb2FkZXIvYXR0YWNobWVudC11cGxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2F0dGFjaG1lbnQtdXBsb2FkZXIvYXR0YWNobWVudC11cGxvYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFVBQVUsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxhQUFhLEVBQ2IsYUFBYSxFQUNiLHNCQUFzQixFQUN0QixrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLFlBQVksRUFDWixZQUFZLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQVVyRCxNQUFNLE9BQU8sMkJBQTJCO0lBZ0J0QyxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUU7YUFDdEIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUM7YUFDakMsR0FBRyxDQUFD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LDI4RUEwREEseXlDRHRDWSxTQUFTLG9QQUFFLE9BQU8sMkpBQUUsT0FBTyxnRkFBRSxVQUFVOzs0RkFJdEMsMkJBQTJCO2tCQVB2QyxTQUFTOytCQUNFLHlCQUF5QixjQUN2QixJQUFJLFdBQ1AsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tcHJlc3NvciBmcm9tICdjb21wcmVzc29yanMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkJ1dHRvbiwgSW9uSWNvbiwgSW9uTm90ZSwgSW9uU3Bpbm5lciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQge1xuICBhdHRhY2hPdXRsaW5lLFxuICBjYW1lcmFPdXRsaW5lLFxuICBjaGVja21hcmtDaXJjbGVPdXRsaW5lLFxuICBjbG9zZUNpcmNsZU91dGxpbmUsXG4gIGRvY3VtZW50T3V0bGluZSxcbiAgaW1hZ2VPdXRsaW5lLFxuICB0cmFzaE91dGxpbmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7IEZlZWRiYWNrU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZlZWRiYWNrJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBBdHRhY2htZW50SXRlbSwgQXR0YWNobWVudFVwbG9hZGVyTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWF0dGFjaG1lbnQtdXBsb2FkZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbSW9uQnV0dG9uLCBJb25JY29uLCBJb25Ob3RlLCBJb25TcGlubmVyXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2F0dGFjaG1lbnQtdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYXR0YWNobWVudC11cGxvYWRlci5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIEF0dGFjaG1lbnRVcGxvYWRlckNvbXBvbmVudCB7XG4gIHByb3BzID0gaW5wdXQ8QXR0YWNobWVudFVwbG9hZGVyTWV0YWRhdGE+KHt9KTtcblxuICBhdHRhY2htZW50c0NoYW5nZSA9IG91dHB1dDxBdHRhY2htZW50SXRlbVtdPigpO1xuXG4gIHByb3RlY3RlZCBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBmZWVkYmFja1NlcnZpY2UgPSBpbmplY3QoRmVlZGJhY2tTZXJ2aWNlKTtcblxuICBhdHRhY2htZW50cyA9IHNpZ25hbDxBdHRhY2htZW50SXRlbVtdPihbXSk7XG5cbiAgbWF4RmlsZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnByb3BzKCkubWF4RmlsZXMgPz8gNSk7XG4gIGFjY2VwdCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucHJvcHMoKS5hY2NlcHQgPz8gJ2ltYWdlL2pwZWcsaW1hZ2UvcG5nLGltYWdlL3dlYnAsYXBwbGljYXRpb24vcGRmJyk7XG4gIG1heFJlYWNoZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmF0dGFjaG1lbnRzKCkubGVuZ3RoID49IHRoaXMubWF4RmlsZXMoKSk7XG4gIGlzRGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnByb3BzKCkuZGlzYWJsZWQgPT09IHRydWUgfHwgdGhpcy5tYXhSZWFjaGVkKCkpO1xuICBpc1VwbG9hZGluZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYXR0YWNobWVudHMoKS5zb21lKGEgPT4gYS5zdGF0dXMgPT09ICd1cGxvYWRpbmcnKSk7XG5cbiAgZ2V0IHJlYWR5VXJscygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuYXR0YWNobWVudHMoKVxuICAgICAgLmZpbHRlcihhID0+IGEuc3RhdHVzID09PSAncmVhZHknKVxuICAgICAgLm1hcChhID0+IGEudXJsISk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBhZGRJY29ucyh7XG4gICAgICBhdHRhY2hPdXRsaW5lLFxuICAgICAgY2FtZXJhT3V0bGluZSxcbiAgICAgIGNoZWNrbWFya0NpcmNsZU91dGxpbmUsXG4gICAgICBjbG9zZUNpcmNsZU91dGxpbmUsXG4gICAgICBkb2N1bWVudE91dGxpbmUsXG4gICAgICBpbWFnZU91dGxpbmUsXG4gICAgICB0cmFzaE91dGxpbmUsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBvbkZpbGVzU2VsZWN0ZWQoZXZlbnQ6IEV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCBmaWxlcyA9IEFycmF5LmZyb20oaW5wdXQuZmlsZXMgPz8gW10pO1xuICAgIGlucHV0LnZhbHVlID0gJyc7XG4gICAgY29uc3QgYXZhaWxhYmxlID0gdGhpcy5tYXhGaWxlcygpIC0gdGhpcy5hdHRhY2htZW50cygpLmxlbmd0aDtcbiAgICBjb25zdCB0b1Byb2Nlc3MgPSBmaWxlcy5zbGljZSgwLCBhdmFpbGFibGUpO1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiB0b1Byb2Nlc3MpIHtcbiAgICAgIGNvbnN0IGlkID0gY3J5cHRvLnJhbmRvbVVVSUQoKTtcbiAgICAgIHRoaXMuYXR0YWNobWVudHMudXBkYXRlKGxpc3QgPT4gWy4uLmxpc3QsIHsgaWQsIGZpbGUsIHN0YXR1czogJ3VwbG9hZGluZycgfV0pO1xuICAgICAgdGhpcy5hdHRhY2htZW50c0NoYW5nZS5lbWl0KHRoaXMuYXR0YWNobWVudHMoKSk7XG4gICAgICB0aGlzLnVwbG9hZEZpbGUoaWQsIGZpbGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29tcHJlc3NJbWFnZShmaWxlOiBGaWxlKTogUHJvbWlzZTxGaWxlPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIG5ldyBDb21wcmVzc29yKGZpbGUsIHtcbiAgICAgICAgcXVhbGl0eTogMC44LFxuICAgICAgICBtYXhXaWR0aDogMTkyMCxcbiAgICAgICAgbWF4SGVpZ2h0OiAxOTIwLFxuICAgICAgICBjb252ZXJ0U2l6ZTogMiAqIDEwMjQgKiAxMDI0LCAvLyBQTkcgPiAyIE1CIOKGkiBKUEVHXG4gICAgICAgIHN1Y2Nlc3MocmVzdWx0KSB7XG4gICAgICAgICAgcmVzb2x2ZShuZXcgRmlsZShbcmVzdWx0XSwgZmlsZS5uYW1lLCB7IHR5cGU6IHJlc3VsdC50eXBlIH0pKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IHJlamVjdCxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGxvYWRGaWxlKGlkOiBzdHJpbmcsIGZpbGU6IEZpbGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc2hvdWxkQ29tcHJlc3MgPSB0aGlzLnByb3BzKCkuY29tcHJlc3NJbWFnZXMgIT09IGZhbHNlICYmIGZpbGUudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKTtcbiAgICAgIGNvbnN0IGZpbGVUb1VwbG9hZCA9IHNob3VsZENvbXByZXNzID8gYXdhaXQgdGhpcy5jb21wcmVzc0ltYWdlKGZpbGUpIDogZmlsZTtcbiAgICAgIGNvbnN0IHVybCA9IGF3YWl0IHRoaXMuZmVlZGJhY2tTZXJ2aWNlLnVwbG9hZEF0dGFjaG1lbnQoZmlsZVRvVXBsb2FkKTtcbiAgICAgIHRoaXMuYXR0YWNobWVudHMudXBkYXRlKGxpc3QgPT4gbGlzdC5tYXAoYSA9PiAoYS5pZCA9PT0gaWQgPyB7IC4uLmEsIHN0YXR1czogJ3JlYWR5JywgdXJsIH0gOiBhKSkpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLmkxOG4udCgnYXR0YWNoVXBsb2FkRmFpbGVkJyk7XG4gICAgICB0aGlzLmF0dGFjaG1lbnRzLnVwZGF0ZShsaXN0ID0+IGxpc3QubWFwKGEgPT4gKGEuaWQgPT09IGlkID8geyAuLi5hLCBzdGF0dXM6ICdlcnJvcicsIGVycm9yIH0gOiBhKSkpO1xuICAgIH1cbiAgICB0aGlzLmF0dGFjaG1lbnRzQ2hhbmdlLmVtaXQodGhpcy5hdHRhY2htZW50cygpKTtcbiAgfVxuXG4gIHJlbW92ZShpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5hdHRhY2htZW50cy51cGRhdGUobGlzdCA9PiBsaXN0LmZpbHRlcihhID0+IGEuaWQgIT09IGlkKSk7XG4gICAgdGhpcy5hdHRhY2htZW50c0NoYW5nZS5lbWl0KHRoaXMuYXR0YWNobWVudHMoKSk7XG4gIH1cblxuICBmb3JtYXRTaXplKGJ5dGVzOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmIChieXRlcyA8IDEwMjQpIHJldHVybiBgJHtieXRlc30gQmA7XG4gICAgaWYgKGJ5dGVzIDwgMTAyNCAqIDEwMjQpIHJldHVybiBgJHtNYXRoLnJvdW5kKGJ5dGVzIC8gMTAyNCl9IEtCYDtcbiAgICByZXR1cm4gYCR7KGJ5dGVzIC8gKDEwMjQgKiAxMDI0KSkudG9GaXhlZCgxKX0gTUJgO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXR0YWNobWVudC11cGxvYWRlclwiPlxuICA8aW5wdXQgI2ZpbGVQaWNrZXIgdHlwZT1cImZpbGVcIiBbYWNjZXB0XT1cImFjY2VwdCgpXCIgbXVsdGlwbGUgY2xhc3M9XCJoaWRkZW4taW5wdXRcIiAoY2hhbmdlKT1cIm9uRmlsZXNTZWxlY3RlZCgkZXZlbnQpXCIgLz5cblxuICA8ZGl2IGNsYXNzPVwiYXR0YWNobWVudC1hY3Rpb25zXCI+XG4gICAgPGlvbi1idXR0b24gZmlsbD1cIm91dGxpbmVcIiBzaXplPVwic21hbGxcIiBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCgpXCIgKGNsaWNrKT1cImZpbGVQaWNrZXIuY2xpY2soKVwiPlxuICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJhdHRhY2gtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICB7eyBpMThuLnQoJ2F0dGFjaEFkZCcpIH19XG4gICAgPC9pb24tYnV0dG9uPlxuICAgIDwhLS0gbGFiZWwgdHJpY2s6IG5hdGl2ZSBicm93c2VyIGdlc3R1cmUgZm9yd2FyZGluZyDihpIgaU9TL1BXQSBubyBibG9xdWVhIGVsIHBpY2tlciAtLT5cbiAgICA8bGFiZWwgY2xhc3M9XCJjYW1lcmEtbGFiZWxcIiBbY2xhc3MuY2FtZXJhLWxhYmVsLS1kaXNhYmxlZF09XCJpc0Rpc2FibGVkKClcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgIGFjY2VwdD1cImltYWdlLypcIlxuICAgICAgICBjYXB0dXJlPVwiZW52aXJvbm1lbnRcIlxuICAgICAgICBjbGFzcz1cImhpZGRlbi1pbnB1dFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkKClcIlxuICAgICAgICAoY2hhbmdlKT1cIm9uRmlsZXNTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgIC8+XG4gICAgICA8aW9uLWljb24gbmFtZT1cImNhbWVyYS1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgIHt7IGkxOG4udCgnYXR0YWNoQ2FtZXJhJykgfX1cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cblxuICBAaWYgKG1heFJlYWNoZWQoKSkge1xuICA8aW9uLW5vdGUgY29sb3I9XCJ3YXJuaW5nXCIgY2xhc3M9XCJtYXgtbm90ZVwiPlxuICAgIHt7IGkxOG4udCgnYXR0YWNoTWF4Q291bnQnLCAnX2dsb2JhbCcsIHsgY291bnQ6IG1heEZpbGVzKCkudG9TdHJpbmcoKSB9KSB9fVxuICA8L2lvbi1ub3RlPlxuICB9IEBpZiAoYXR0YWNobWVudHMoKS5sZW5ndGggPiAwKSB7XG4gIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50LWxpc3RcIj5cbiAgICBAZm9yIChpdGVtIG9mIGF0dGFjaG1lbnRzKCk7IHRyYWNrIGl0ZW0uaWQpIHtcbiAgICA8ZGl2IGNsYXNzPVwiYXR0YWNobWVudC1pdGVtXCIgW2NsYXNzXT1cIidzdGF0dXMtJyArIGl0ZW0uc3RhdHVzXCI+XG4gICAgICA8aW9uLWljb25cbiAgICAgICAgY2xhc3M9XCJmaWxlLWljb25cIlxuICAgICAgICBbbmFtZV09XCJpdGVtLmZpbGUudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSA/ICdpbWFnZS1vdXRsaW5lJyA6ICdkb2N1bWVudC1vdXRsaW5lJ1wiXG4gICAgICA+PC9pb24taWNvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWluZm9cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlLW5hbWVcIj57eyBpdGVtLmZpbGUubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlLXNpemVcIj57eyBmb3JtYXRTaXplKGl0ZW0uZmlsZS5zaXplKSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICBAaWYgKGl0ZW0uc3RhdHVzID09PSAndXBsb2FkaW5nJykge1xuICAgICAgPGlvbi1zcGlubmVyIGNsYXNzPVwic3RhdHVzLWljb25cIiBuYW1lPVwiY2lyY3VsYXJcIj48L2lvbi1zcGlubmVyPlxuICAgICAgfSBAZWxzZSBpZiAoaXRlbS5zdGF0dXMgPT09ICdyZWFkeScpIHtcbiAgICAgIDxpb24taWNvbiBjbGFzcz1cInN0YXR1cy1pY29uXCIgbmFtZT1cImNoZWNrbWFyay1jaXJjbGUtb3V0bGluZVwiIGNvbG9yPVwic3VjY2Vzc1wiPjwvaW9uLWljb24+XG4gICAgICB9IEBlbHNlIGlmIChpdGVtLnN0YXR1cyA9PT0gJ2Vycm9yJykge1xuICAgICAgPGlvbi1pY29uIGNsYXNzPVwic3RhdHVzLWljb25cIiBuYW1lPVwiY2xvc2UtY2lyY2xlLW91dGxpbmVcIiBjb2xvcj1cImRhbmdlclwiPjwvaW9uLWljb24+XG4gICAgICB9IEBpZiAoaXRlbS5zdGF0dXMgIT09ICd1cGxvYWRpbmcnKSB7XG4gICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBzaXplPVwic21hbGxcIiBjb2xvcj1cIm1lZGl1bVwiIChjbGljayk9XCJyZW1vdmUoaXRlbS5pZClcIj5cbiAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwidHJhc2gtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgICB9IEBpZiAoaXRlbS5zdGF0dXMgPT09ICdlcnJvcicgJiYgaXRlbS5lcnJvcikge1xuICAgICAgPGlvbi1ub3RlIGNvbG9yPVwiZGFuZ2VyXCIgY2xhc3M9XCJlcnJvci1ub3RlXCI+e3sgaXRlbS5lcnJvciB9fTwvaW9uLW5vdGU+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2F0dGFjaG1lbnQtdXBsb2FkZXIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQXR0YWNobWVudEl0ZW0ge1xuICBpZDogc3RyaW5nO1xuICBmaWxlOiBGaWxlO1xuICBzdGF0dXM6ICd1cGxvYWRpbmcnIHwgJ3JlYWR5JyB8ICdlcnJvcic7XG4gIHVybD86IHN0cmluZztcbiAgZXJyb3I/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXR0YWNobWVudFVwbG9hZGVyTWV0YWRhdGEge1xuICBtYXhGaWxlcz86IG51bWJlcjtcbiAgYWNjZXB0Pzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2F0dGFjaG1lbnQtdXBsb2FkZXIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQXR0YWNobWVudEl0ZW0ge1xuICBpZDogc3RyaW5nO1xuICBmaWxlOiBGaWxlO1xuICBzdGF0dXM6ICd1cGxvYWRpbmcnIHwgJ3JlYWR5JyB8ICdlcnJvcic7XG4gIHVybD86IHN0cmluZztcbiAgZXJyb3I/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXR0YWNobWVudFVwbG9hZGVyTWV0YWRhdGEge1xuICBtYXhGaWxlcz86IG51bWJlcjtcbiAgYWNjZXB0Pzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIC8qKiBDb21wcmVzcyBpbWFnZXMgYmVmb3JlIHVwbG9hZCAoZGVmYXVsdDogdHJ1ZSkuIFBERnMgYXJlIG5ldmVyIGNvbXByZXNzZWQuICovXG4gIGNvbXByZXNzSW1hZ2VzPzogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { CommonModule } from '@angular/common';
2
2
  import { Component, computed, EventEmitter, inject, input, Output, signal, ViewChild } from '@angular/core';
3
- import { IonIcon, IonModal, IonSpinner } from '@ionic/angular/standalone';
3
+ import { IonButton, IonButtons, IonContent, IonHeader, IonIcon, IonModal, IonSpinner, IonTitle, IonToolbar, } from '@ionic/angular/standalone';
4
4
  import { addIcons } from 'ionicons';
5
5
  import { cameraOutline } from 'ionicons/icons';
6
6
  import { firstValueFrom } from 'rxjs';
@@ -52,6 +52,7 @@ export class AvatarUploadComponent {
52
52
  // Internal state
53
53
  this.loading = signal(false);
54
54
  this.showCropModal = signal(false);
55
+ this.showViewModal = signal(false);
55
56
  this.selectedFile = signal(null);
56
57
  this.previewUrl = signal(null);
57
58
  this.imageLoadError = signal(false);
@@ -71,6 +72,16 @@ export class AvatarUploadComponent {
71
72
  this.i18n.lang();
72
73
  return this.i18n.t('changePhoto', this.config().i18nNamespace) || 'Cambiar foto';
73
74
  });
75
+ /** Label for view photo button */
76
+ this.viewPhotoLabel = computed(() => {
77
+ this.i18n.lang();
78
+ return this.i18n.t('viewPhoto', this.config().i18nNamespace) || 'Ver foto';
79
+ });
80
+ /** Label for close button inside photo viewer */
81
+ this.closePhotoLabel = computed(() => {
82
+ this.i18n.lang();
83
+ return this.i18n.t('closePhoto', this.config().i18nNamespace) || 'Cerrar';
84
+ });
74
85
  }
75
86
  /** Open file picker dialog */
76
87
  openFilePicker() {
@@ -240,6 +251,13 @@ export class AvatarUploadComponent {
240
251
  hidden
241
252
  />
242
253
 
254
+ <!-- View Photo Button -->
255
+ @if (config().showViewButton && displayUrl()) {
256
+ <button class="view-photo-btn" type="button" (click)="showViewModal.set(true)">
257
+ {{ viewPhotoLabel() }}
258
+ </button>
259
+ }
260
+
243
261
  <!-- Crop Modal -->
244
262
  <ion-modal
245
263
  [isOpen]="showCropModal()"
@@ -261,12 +279,51 @@ export class AvatarUploadComponent {
261
279
  }
262
280
  </ng-template>
263
281
  </ion-modal>
282
+
283
+ <!-- Photo Viewer Modal -->
284
+ <ion-modal
285
+ [isOpen]="showViewModal()"
286
+ (didDismiss)="showViewModal.set(false)"
287
+ [breakpoints]="[0, 0.55]"
288
+ [initialBreakpoint]="0.55"
289
+ [handle]="true"
290
+ >
291
+ <ng-template>
292
+ <ion-header [translucent]="true">
293
+ <ion-toolbar>
294
+ <ion-title>{{ viewPhotoLabel() }}</ion-title>
295
+ <ion-buttons slot="end">
296
+ <ion-button fill="clear" color="dark" (click)="showViewModal.set(false)">
297
+ {{ closePhotoLabel() }}
298
+ </ion-button>
299
+ </ion-buttons>
300
+ </ion-toolbar>
301
+ </ion-header>
302
+ <ion-content>
303
+ <div class="photo-viewer">
304
+ <img class="photo-viewer__img" [src]="displayUrl()" alt="Photo" />
305
+ </div>
306
+ </ion-content>
307
+ </ng-template>
308
+ </ion-modal>
264
309
  </div>
265
- `, isInline: true, styles: [".avatar-upload{--avatar-size: 100px;--edit-button-size: 32px;--edit-button-offset: 4px;display:inline-block}.avatar-container{position:relative;width:var(--avatar-size);height:var(--avatar-size);border-radius:50%;overflow:visible}.avatar-image{width:100%;height:100%;border-radius:50%;object-fit:cover;background-color:var(--ion-color-light)}.avatar-initials{width:100%;height:100%;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:calc(var(--avatar-size) * .4);font-weight:600;color:#fff;text-transform:uppercase;-webkit-user-select:none;user-select:none}.edit-button{position:absolute;bottom:var(--edit-button-offset);right:var(--edit-button-offset);width:var(--edit-button-size);height:var(--edit-button-size);border-radius:50%;border:2px solid white;background:var(--ion-color-primary);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .2s ease,background-color .2s ease;box-shadow:0 2px 8px #00000026}.edit-button ion-icon{font-size:calc(var(--edit-button-size) * .5)}.edit-button:hover{transform:scale(1.1);background:var(--ion-color-primary-shade)}.edit-button:active{transform:scale(.95)}.edit-button:focus-visible{outline:2px solid var(--ion-color-primary);outline-offset:2px}.loading-overlay{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:50%;background:#00000080;display:flex;align-items:center;justify-content:center}.loading-overlay ion-spinner{--color: white;width:calc(var(--avatar-size) * .4);height:calc(var(--avatar-size) * .4)}.avatar-upload--loading .edit-button{display:none}.avatar-upload--loading .avatar-image,.avatar-upload--loading .avatar-initials{filter:brightness(.7)}@container (max-width: 60px){.edit-button{--edit-button-size: 24px;--edit-button-offset: 0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: ImageCropComponent, selector: "val-image-crop", inputs: ["image", "aspectRatio", "roundCropper", "resizeToWidth", "i18nNamespace"], outputs: ["cropComplete", "cancel", "loadFailed"] }] }); }
310
+ `, isInline: true, styles: [".avatar-upload{--avatar-size: 100px;--edit-button-size: 32px;--edit-button-offset: 4px;display:inline-block}.avatar-container{position:relative;width:var(--avatar-size);height:var(--avatar-size);border-radius:50%;overflow:visible}.avatar-image{width:100%;height:100%;border-radius:50%;object-fit:cover;background-color:var(--ion-color-light)}.avatar-initials{width:100%;height:100%;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:calc(var(--avatar-size) * .4);font-weight:600;color:#fff;text-transform:uppercase;-webkit-user-select:none;user-select:none}.edit-button{position:absolute;bottom:var(--edit-button-offset);right:var(--edit-button-offset);width:var(--edit-button-size);height:var(--edit-button-size);border-radius:50%;border:2px solid white;background:var(--ion-color-primary);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .2s ease,background-color .2s ease;box-shadow:0 2px 8px #00000026}.edit-button ion-icon{font-size:calc(var(--edit-button-size) * .5)}.edit-button:hover{transform:scale(1.1);background:var(--ion-color-primary-shade)}.edit-button:active{transform:scale(.95)}.edit-button:focus-visible{outline:2px solid var(--ion-color-primary);outline-offset:2px}.loading-overlay{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:50%;background:#00000080;display:flex;align-items:center;justify-content:center}.loading-overlay ion-spinner{--color: white;width:calc(var(--avatar-size) * .4);height:calc(var(--avatar-size) * .4)}.avatar-upload--loading .edit-button{display:none}.avatar-upload--loading .avatar-image,.avatar-upload--loading .avatar-initials{filter:brightness(.7)}.view-photo-btn{display:block;background:none;border:none;padding:0;margin-top:6px;font-size:.8rem;color:var(--ion-color-primary);cursor:pointer;font-family:inherit;text-decoration:underline;text-underline-offset:2px;text-align:center;width:var(--avatar-size)}.view-photo-btn:active{opacity:.7}.photo-viewer{display:flex;align-items:center;justify-content:center;padding:20px 24px 28px}.photo-viewer__img{width:min(72vw,280px);height:min(72vw,280px);border-radius:20px;object-fit:cover;box-shadow:0 8px 32px #0000002e}@container (max-width: 60px){.edit-button{--edit-button-size: 24px;--edit-button-offset: 0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: ImageCropComponent, selector: "val-image-crop", inputs: ["image", "aspectRatio", "roundCropper", "resizeToWidth", "i18nNamespace"], outputs: ["cropComplete", "cancel", "loadFailed"] }] }); }
266
311
  }
267
312
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AvatarUploadComponent, decorators: [{
268
313
  type: Component,
269
- args: [{ selector: 'val-avatar-upload', standalone: true, imports: [CommonModule, IonIcon, IonSpinner, IonModal, ImageCropComponent], template: `
314
+ args: [{ selector: 'val-avatar-upload', standalone: true, imports: [
315
+ CommonModule,
316
+ IonIcon,
317
+ IonSpinner,
318
+ IonModal,
319
+ IonContent,
320
+ IonHeader,
321
+ IonToolbar,
322
+ IonTitle,
323
+ IonButtons,
324
+ IonButton,
325
+ ImageCropComponent,
326
+ ], template: `
270
327
  <div class="avatar-upload" [style.--avatar-size.px]="config().size" [class.avatar-upload--loading]="loading()">
271
328
  <div class="avatar-container">
272
329
  <!-- Avatar Image or Initials -->
@@ -303,6 +360,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
303
360
  hidden
304
361
  />
305
362
 
363
+ <!-- View Photo Button -->
364
+ @if (config().showViewButton && displayUrl()) {
365
+ <button class="view-photo-btn" type="button" (click)="showViewModal.set(true)">
366
+ {{ viewPhotoLabel() }}
367
+ </button>
368
+ }
369
+
306
370
  <!-- Crop Modal -->
307
371
  <ion-modal
308
372
  [isOpen]="showCropModal()"
@@ -324,8 +388,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
324
388
  }
325
389
  </ng-template>
326
390
  </ion-modal>
391
+
392
+ <!-- Photo Viewer Modal -->
393
+ <ion-modal
394
+ [isOpen]="showViewModal()"
395
+ (didDismiss)="showViewModal.set(false)"
396
+ [breakpoints]="[0, 0.55]"
397
+ [initialBreakpoint]="0.55"
398
+ [handle]="true"
399
+ >
400
+ <ng-template>
401
+ <ion-header [translucent]="true">
402
+ <ion-toolbar>
403
+ <ion-title>{{ viewPhotoLabel() }}</ion-title>
404
+ <ion-buttons slot="end">
405
+ <ion-button fill="clear" color="dark" (click)="showViewModal.set(false)">
406
+ {{ closePhotoLabel() }}
407
+ </ion-button>
408
+ </ion-buttons>
409
+ </ion-toolbar>
410
+ </ion-header>
411
+ <ion-content>
412
+ <div class="photo-viewer">
413
+ <img class="photo-viewer__img" [src]="displayUrl()" alt="Photo" />
414
+ </div>
415
+ </ion-content>
416
+ </ng-template>
417
+ </ion-modal>
327
418
  </div>
328
- `, styles: [".avatar-upload{--avatar-size: 100px;--edit-button-size: 32px;--edit-button-offset: 4px;display:inline-block}.avatar-container{position:relative;width:var(--avatar-size);height:var(--avatar-size);border-radius:50%;overflow:visible}.avatar-image{width:100%;height:100%;border-radius:50%;object-fit:cover;background-color:var(--ion-color-light)}.avatar-initials{width:100%;height:100%;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:calc(var(--avatar-size) * .4);font-weight:600;color:#fff;text-transform:uppercase;-webkit-user-select:none;user-select:none}.edit-button{position:absolute;bottom:var(--edit-button-offset);right:var(--edit-button-offset);width:var(--edit-button-size);height:var(--edit-button-size);border-radius:50%;border:2px solid white;background:var(--ion-color-primary);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .2s ease,background-color .2s ease;box-shadow:0 2px 8px #00000026}.edit-button ion-icon{font-size:calc(var(--edit-button-size) * .5)}.edit-button:hover{transform:scale(1.1);background:var(--ion-color-primary-shade)}.edit-button:active{transform:scale(.95)}.edit-button:focus-visible{outline:2px solid var(--ion-color-primary);outline-offset:2px}.loading-overlay{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:50%;background:#00000080;display:flex;align-items:center;justify-content:center}.loading-overlay ion-spinner{--color: white;width:calc(var(--avatar-size) * .4);height:calc(var(--avatar-size) * .4)}.avatar-upload--loading .edit-button{display:none}.avatar-upload--loading .avatar-image,.avatar-upload--loading .avatar-initials{filter:brightness(.7)}@container (max-width: 60px){.edit-button{--edit-button-size: 24px;--edit-button-offset: 0}}\n"] }]
419
+ `, styles: [".avatar-upload{--avatar-size: 100px;--edit-button-size: 32px;--edit-button-offset: 4px;display:inline-block}.avatar-container{position:relative;width:var(--avatar-size);height:var(--avatar-size);border-radius:50%;overflow:visible}.avatar-image{width:100%;height:100%;border-radius:50%;object-fit:cover;background-color:var(--ion-color-light)}.avatar-initials{width:100%;height:100%;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:calc(var(--avatar-size) * .4);font-weight:600;color:#fff;text-transform:uppercase;-webkit-user-select:none;user-select:none}.edit-button{position:absolute;bottom:var(--edit-button-offset);right:var(--edit-button-offset);width:var(--edit-button-size);height:var(--edit-button-size);border-radius:50%;border:2px solid white;background:var(--ion-color-primary);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .2s ease,background-color .2s ease;box-shadow:0 2px 8px #00000026}.edit-button ion-icon{font-size:calc(var(--edit-button-size) * .5)}.edit-button:hover{transform:scale(1.1);background:var(--ion-color-primary-shade)}.edit-button:active{transform:scale(.95)}.edit-button:focus-visible{outline:2px solid var(--ion-color-primary);outline-offset:2px}.loading-overlay{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:50%;background:#00000080;display:flex;align-items:center;justify-content:center}.loading-overlay ion-spinner{--color: white;width:calc(var(--avatar-size) * .4);height:calc(var(--avatar-size) * .4)}.avatar-upload--loading .edit-button{display:none}.avatar-upload--loading .avatar-image,.avatar-upload--loading .avatar-initials{filter:brightness(.7)}.view-photo-btn{display:block;background:none;border:none;padding:0;margin-top:6px;font-size:.8rem;color:var(--ion-color-primary);cursor:pointer;font-family:inherit;text-decoration:underline;text-underline-offset:2px;text-align:center;width:var(--avatar-size)}.view-photo-btn:active{opacity:.7}.photo-viewer{display:flex;align-items:center;justify-content:center;padding:20px 24px 28px}.photo-viewer__img{width:min(72vw,280px);height:min(72vw,280px);border-radius:20px;object-fit:cover;box-shadow:0 8px 32px #0000002e}@container (max-width: 60px){.edit-button{--edit-button-size: 24px;--edit-button-offset: 0}}\n"] }]
329
420
  }], propDecorators: { fileInput: [{
330
421
  type: ViewChild,
331
422
  args: ['fileInput']
@@ -336,4 +427,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
336
427
  }], uploadStart: [{
337
428
  type: Output
338
429
  }] } });
339
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLXVwbG9hZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2F2YXRhci11cGxvYWQvYXZhdGFyLXVwbG9hZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBK0QsTUFBTSxTQUFTLENBQUM7O0FBRTlHLFFBQVEsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7QUFFNUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFtRUgsTUFBTSxPQUFPLHFCQUFxQjtJQWxFbEM7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QUFPLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDOytHQTVNVSxxQkFBcUI7bUdBQXJCLHFCQUFxQix3WUE5RHRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJEVCw4MERBNURTLFlBQVksK0JBQUUsT0FBTywySkFBRSxVQUFVLHlHQUFFLFFBQVEsc0RBQUUsa0JBQWtCOzs0RkErRDlELHFCQUFxQjtrQkFsRWpDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxZQUNoRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyRFQ7OEJBU3VCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFNWixRQUFRO3NCQUFqQixNQUFNO2dCQUdHLEtBQUs7c0JBQWQsTUFBTTtnQkFHRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBpbnB1dCwgT3V0cHV0LCBzaWduYWwsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uSWNvbiwgSW9uTW9kYWwsIElvblNwaW5uZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgY2FtZXJhT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgnO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9maXJlYmFzZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgSW1hZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaW1hZ2UnO1xuaW1wb3J0IHsgSW1hZ2VDcm9wQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2ltYWdlLWNyb3AnO1xuaW1wb3J0IHsgQVZBVEFSX1VQTE9BRF9ERUZBVUxUUywgQXZhdGFyVXBsb2FkRXJyb3IsIEF2YXRhclVwbG9hZE1ldGFkYXRhLCBBdmF0YXJVcGxvYWRSZXN1bHQgfSBmcm9tICcuL3R5cGVzJztcblxuYWRkSWNvbnMoeyBjYW1lcmFPdXRsaW5lIH0pO1xuXG4vKipcbiAqIEF2YXRhclVwbG9hZENvbXBvbmVudFxuICpcbiAqIEEgY29tcGxldGUgYXZhdGFyIHVwbG9hZCBzb2x1dGlvbiB3aXRoOlxuICogLSBJbWFnZSBzZWxlY3Rpb24gZnJvbSBkZXZpY2VcbiAqIC0gQ3JvcCBtb2RhbCB3aXRoIHJvdW5kIHByZXZpZXdcbiAqIC0gQXV0b21hdGljIGNvbXByZXNzaW9uIGFuZCB0aHVtYm5haWwgZ2VuZXJhdGlvblxuICogLSBVcGxvYWQgdG8gRmlyZWJhc2UgU3RvcmFnZVxuICogLSBCYWNrZW5kIHN5bmMgdmlhIEF1dGhTZXJ2aWNlXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2VcbiAqIGBgYGh0bWxcbiAqIDx2YWwtYXZhdGFyLXVwbG9hZFxuICogICBbcHJvcHNdPVwie1xuICogICAgIGN1cnJlbnRVcmw6IHVzZXIoKT8uYXZhdGFyVXJsLFxuICogICAgIGluaXRpYWxzOiAnSkQnLFxuICogICAgIHNpemU6IDEyMFxuICogICB9XCJcbiAqICAgKHVwbG9hZGVkKT1cIm9uQXZhdGFyVXBsb2FkZWQoJGV2ZW50KVwiXG4gKiAgIChlcnJvcik9XCJvbkVycm9yKCRldmVudClcIlxuICogLz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtYXZhdGFyLXVwbG9hZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbkljb24sIElvblNwaW5uZXIsIElvbk1vZGFsLCBJbWFnZUNyb3BDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItdXBsb2FkXCIgW3N0eWxlLi0tYXZhdGFyLXNpemUucHhdPVwiY29uZmlnKCkuc2l6ZVwiIFtjbGFzcy5hdmF0YXItdXBsb2FkLS1sb2FkaW5nXT1cImxvYWRpbmcoKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jb250YWluZXJcIj5cbiAgICAgICAgPCEtLSBBdmF0YXIgSW1hZ2Ugb3IgSW5pdGlhbHMgLS0+XG4gICAgICAgIEBpZiAoZGlzcGxheVVybCgpKSB7XG4gICAgICAgICAgPGltZyBjbGFzcz1cImF2YXRhci1pbWFnZVwiIFtzcmNdPVwiZGlzcGxheVVybCgpXCIgYWx0PVwiQXZhdGFyXCIgKGVycm9yKT1cIm9uSW1hZ2VFcnJvcigpXCIgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1pbml0aWFsc1wiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImNvbmZpZygpLmJhY2tncm91bmRDb2xvclwiPlxuICAgICAgICAgICAge3sgY29uZmlnKCkuaW5pdGlhbHMgfHwgJz8nIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIEVkaXQgQnV0dG9uIC0tPlxuICAgICAgICBAaWYgKGNvbmZpZygpLmVkaXRhYmxlICYmICFsb2FkaW5nKCkpIHtcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZWRpdC1idXR0b25cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5GaWxlUGlja2VyKClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImVkaXRCdXR0b25MYWJlbCgpXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNhbWVyYS1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gTG9hZGluZyBPdmVybGF5IC0tPlxuICAgICAgICBAaWYgKGxvYWRpbmcoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkaW5nLW92ZXJsYXlcIj5cbiAgICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY2lyY3VsYXJcIj48L2lvbi1zcGlubmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBIaWRkZW4gRmlsZSBJbnB1dCAtLT5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjZmlsZUlucHV0XG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgYWNjZXB0PVwiaW1hZ2UvanBlZyxpbWFnZS9wbmcsaW1hZ2Uvd2VicFwiXG4gICAgICAgIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiYXZhdGFyLXVwbG9hZC1pbnB1dFwiXG4gICAgICAgIGhpZGRlblxuICAgICAgLz5cblxuICAgICAgPCEtLSBDcm9wIE1vZGFsIC0tPlxuICAgICAgPGlvbi1tb2RhbFxuICAgICAgICBbaXNPcGVuXT1cInNob3dDcm9wTW9kYWwoKVwiXG4gICAgICAgIChkaWREaXNtaXNzKT1cIm9uQ3JvcENhbmNlbCgpXCJcbiAgICAgICAgW2JyZWFrcG9pbnRzXT1cIlswLCAxXVwiXG4gICAgICAgIFtpbml0aWFsQnJlYWtwb2ludF09XCIxXCJcbiAgICAgID5cbiAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgIEBpZiAoc2VsZWN0ZWRGaWxlKCkpIHtcbiAgICAgICAgICAgIDx2YWwtaW1hZ2UtY3JvcFxuICAgICAgICAgICAgICBbaW1hZ2VdPVwic2VsZWN0ZWRGaWxlKCkhXCJcbiAgICAgICAgICAgICAgW2FzcGVjdFJhdGlvXT1cIjFcIlxuICAgICAgICAgICAgICBbcm91bmRDcm9wcGVyXT1cInRydWVcIlxuICAgICAgICAgICAgICBbaTE4bk5hbWVzcGFjZV09XCJjb25maWcoKS5pMThuTmFtZXNwYWNlXCJcbiAgICAgICAgICAgICAgKGNyb3BDb21wbGV0ZSk9XCJvbkNyb3BDb21wbGV0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKGNhbmNlbCk9XCJvbkNyb3BDYW5jZWwoKVwiXG4gICAgICAgICAgICAgIChsb2FkRmFpbGVkKT1cIm9uQ3JvcExvYWRGYWlsZWQoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvaW9uLW1vZGFsPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9hdmF0YXItdXBsb2FkLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEF2YXRhclVwbG9hZENvbXBvbmVudCB7XG4gIHByaXZhdGUgaW1hZ2VTZXJ2aWNlID0gaW5qZWN0KEltYWdlU2VydmljZSk7XG4gIHByaXZhdGUgc3RvcmFnZVNlcnZpY2UgPSBpbmplY3QoU3RvcmFnZVNlcnZpY2UpO1xuICBwcml2YXRlIGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBmaWxlSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIC8qKiBDb21wb25lbnQgY29uZmlndXJhdGlvbiAqL1xuICByZWFkb25seSBwcm9wcyA9IGlucHV0PEF2YXRhclVwbG9hZE1ldGFkYXRhPih7fSk7XG5cbiAgLyoqIEVtaXR0ZWQgYWZ0ZXIgc3VjY2Vzc2Z1bCB1cGxvYWQgYW5kIGJhY2tlbmQgc3luYyAqL1xuICBAT3V0cHV0KCkgdXBsb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEF2YXRhclVwbG9hZFJlc3VsdD4oKTtcblxuICAvKiogRW1pdHRlZCBvbiBhbnkgZXJyb3IgZHVyaW5nIHRoZSBwcm9jZXNzICovXG4gIEBPdXRwdXQoKSBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8QXZhdGFyVXBsb2FkRXJyb3I+KCk7XG5cbiAgLyoqIEVtaXR0ZWQgd2hlbiB1cGxvYWQgc3RhcnRzICovXG4gIEBPdXRwdXQoKSB1cGxvYWRTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvLyBJbnRlcm5hbCBzdGF0ZVxuICBwcm90ZWN0ZWQgbG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCBzaG93Q3JvcE1vZGFsID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkRmlsZSA9IHNpZ25hbDxGaWxlIHwgbnVsbD4obnVsbCk7XG4gIHByb3RlY3RlZCBwcmV2aWV3VXJsID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgaW1hZ2VMb2FkRXJyb3IgPSBzaWduYWwoZmFsc2UpO1xuXG4gIC8qKiBNZXJnZWQgY29uZmlnIHdpdGggZGVmYXVsdHMgKi9cbiAgcHJvdGVjdGVkIGNvbmZpZyA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgLi4uQVZBVEFSX1VQTE9BRF9ERUZBVUxUUyxcbiAgICAuLi50aGlzLnByb3BzKCksXG4gIH0pKTtcblxuICAvKiogVVJMIHRvIGRpc3BsYXkgKHByZXZpZXcgdGFrZXMgcHJpb3JpdHkgb3ZlciBjdXJyZW50KSAqL1xuICBwcm90ZWN0ZWQgZGlzcGxheVVybCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5pbWFnZUxvYWRFcnJvcigpKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5wcmV2aWV3VXJsKCkgfHwgdGhpcy5jb25maWcoKS5jdXJyZW50VXJsIHx8IG51bGw7XG4gIH0pO1xuXG4gIC8qKiBBcmlhIGxhYmVsIGZvciBlZGl0IGJ1dHRvbiAqL1xuICBwcm90ZWN0ZWQgZWRpdEJ1dHRvbkxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KCdjaGFuZ2VQaG90bycsIHRoaXMuY29uZmlnKCkuaTE4bk5hbWVzcGFjZSkgfHwgJ0NhbWJpYXIgZm90byc7XG4gIH0pO1xuXG4gIC8qKiBPcGVuIGZpbGUgcGlja2VyIGRpYWxvZyAqL1xuICBvcGVuRmlsZVBpY2tlcigpOiB2b2lkIHtcbiAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gIH1cblxuICAvKiogSGFuZGxlIGZpbGUgc2VsZWN0aW9uICovXG4gIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgZmlsZSA9IGlucHV0LmZpbGVzPy5bMF07XG5cbiAgICBpZiAoIWZpbGUpIHJldHVybjtcblxuICAgIC8vIFJlc2V0IGlucHV0IGZvciBzYW1lIGZpbGUgc2VsZWN0aW9uXG4gICAgaW5wdXQudmFsdWUgPSAnJztcblxuICAgIC8vIFZhbGlkYXRlIGZpbGVcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdGhpcy5pbWFnZVNlcnZpY2UudmFsaWRhdGUoZmlsZSwge1xuICAgICAgbWF4U2l6ZTogdGhpcy5jb25maWcoKS5tYXhGaWxlU2l6ZSxcbiAgICAgIGFsbG93ZWRUeXBlczogWydpbWFnZS9qcGVnJywgJ2ltYWdlL3BuZycsICdpbWFnZS93ZWJwJ10sXG4gICAgfSk7XG5cbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHRoaXMuZW1pdEVycm9yKHZhbGlkYXRpb24uZXJyb3IgYXMgQXZhdGFyVXBsb2FkRXJyb3JbJ3R5cGUnXSwgdmFsaWRhdGlvbi5tZXNzYWdlISk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gT3BlbiBjcm9wIG1vZGFsXG4gICAgdGhpcy5zZWxlY3RlZEZpbGUuc2V0KGZpbGUpO1xuICAgIHRoaXMuc2hvd0Nyb3BNb2RhbC5zZXQodHJ1ZSk7XG4gIH1cblxuICAvKiogSGFuZGxlIGNyb3AgY29tcGxldGlvbiAqL1xuICBhc3luYyBvbkNyb3BDb21wbGV0ZShjcm9wcGVkQmxvYjogQmxvYik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc2hvd0Nyb3BNb2RhbC5zZXQoZmFsc2UpO1xuICAgIHRoaXMuc2VsZWN0ZWRGaWxlLnNldChudWxsKTtcblxuICAgIGF3YWl0IHRoaXMucHJvY2Vzc0FuZFVwbG9hZChjcm9wcGVkQmxvYik7XG4gIH1cblxuICAvKiogSGFuZGxlIGNyb3AgY2FuY2VsICovXG4gIG9uQ3JvcENhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dDcm9wTW9kYWwuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnNlbGVjdGVkRmlsZS5zZXQobnVsbCk7XG4gIH1cblxuICAvKiogSGFuZGxlIGNyb3AgbG9hZCBmYWlsdXJlICovXG4gIG9uQ3JvcExvYWRGYWlsZWQoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93Q3JvcE1vZGFsLnNldChmYWxzZSk7XG4gICAgdGhpcy5zZWxlY3RlZEZpbGUuc2V0KG51bGwpO1xuICAgIHRoaXMuZW1pdEVycm9yKFxuICAgICAgJ2ludmFsaWRUeXBlJyxcbiAgICAgIHRoaXMuaTE4bi50KCdsb2FkRmFpbGVkJywgdGhpcy5jb25maWcoKS5pMThuTmFtZXNwYWNlKSB8fCAnTm8gc2UgcHVkbyBjYXJnYXIgbGEgaW1hZ2VuJ1xuICAgICk7XG4gIH1cblxuICAvKiogSGFuZGxlIGltYWdlIGxvYWQgZXJyb3IgKi9cbiAgb25JbWFnZUVycm9yKCk6IHZvaWQge1xuICAgIHRoaXMuaW1hZ2VMb2FkRXJyb3Iuc2V0KHRydWUpO1xuICB9XG5cbiAgLyoqIFRpbWVvdXQgZm9yIHVwbG9hZCBvcGVyYXRpb25zICgzMCBzZWNvbmRzKSAqL1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBVUExPQURfVElNRU9VVF9NUyA9IDMwMDAwO1xuXG4gIC8qKiBQcm9jZXNzIGNyb3BwZWQgaW1hZ2UgYW5kIHVwbG9hZCAqL1xuICBwcml2YXRlIGFzeW5jIHByb2Nlc3NBbmRVcGxvYWQoY3JvcHBlZEJsb2I6IEJsb2IpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMudXBsb2FkU3RhcnQuZW1pdCgpO1xuXG4gICAgLy8gVGltZW91dCBwcm9taXNlIHRvIHByZXZlbnQgaW5maW5pdGUgbG9hZGluZ1xuICAgIGNvbnN0IHVwbG9hZFRpbWVvdXQgPSBuZXcgUHJvbWlzZTxuZXZlcj4oKF8sIHJlamVjdCkgPT5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignVXBsb2FkIHRpbWVvdXQnKSksIEF2YXRhclVwbG9hZENvbXBvbmVudC5VUExPQURfVElNRU9VVF9NUylcbiAgICApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnKCk7XG5cbiAgICAgIC8vIDEuIENvbXByZXNzIGltYWdlXG4gICAgICBjb25zdCBjb21wcmVzc2VkID0gYXdhaXQgdGhpcy5pbWFnZVNlcnZpY2UuY29tcHJlc3MoY3JvcHBlZEJsb2IsIHtcbiAgICAgICAgbWF4V2lkdGg6IGNvbmZpZy5tYXhXaWR0aCxcbiAgICAgICAgbWF4SGVpZ2h0OiBjb25maWcubWF4V2lkdGgsXG4gICAgICAgIHF1YWxpdHk6IGNvbmZpZy5jb21wcmVzc1F1YWxpdHksXG4gICAgICB9KTtcblxuICAgICAgLy8gMi4gR2VuZXJhdGUgdGh1bWJuYWlsXG4gICAgICBjb25zdCB0aHVtYm5haWwgPSBhd2FpdCB0aGlzLmltYWdlU2VydmljZS50aHVtYm5haWwoY29tcHJlc3NlZC5ibG9iLCBjb25maWcudGh1bWJuYWlsU2l6ZSk7XG5cbiAgICAgIC8vIDMuIFNldCBwcmV2aWV3IGltbWVkaWF0ZWx5XG4gICAgICB0aGlzLnByZXZpZXdVcmwuc2V0KGNvbXByZXNzZWQuZGF0YVVybCk7XG4gICAgICB0aGlzLmltYWdlTG9hZEVycm9yLnNldChmYWxzZSk7XG5cbiAgICAgIC8vIDQuIEdldCB1c2VyIElEIGZvciBzdG9yYWdlIHBhdGhcbiAgICAgIGNvbnN0IHVzZXJJZCA9IHRoaXMuYXV0aFNlcnZpY2UudXNlcigpPy51c2VySWQ7XG4gICAgICBpZiAoIXVzZXJJZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VzZXIgbm90IGF1dGhlbnRpY2F0ZWQnKTtcbiAgICAgIH1cblxuICAgICAgLy8gNS4gVXBsb2FkIHRvIEZpcmViYXNlIFN0b3JhZ2Ugd2l0aCBwcmVkaWN0YWJsZSBwYXRoc1xuICAgICAgLy8gUGF0aDogdXNlcnMve3VzZXJJZH0vYXZhdGFyLmpwZyAtIGFsbG93cyBhbnkgYXBwIHRvIGNvbnN0cnVjdCBVUkwgd2l0aCBqdXN0IHVzZXJJZFxuICAgICAgLy8gc2tpcFByZWZpeDogdHJ1ZSAtIGJ5cGFzc2VzIGFwcElkIHByZWZpeCBmb3Igc2hhcmVkL2Nyb3NzLWFwcCBwYXRoc1xuICAgICAgY29uc3QgYXZhdGFyUGF0aCA9IGB1c2Vycy8ke3VzZXJJZH0vYXZhdGFyLmpwZ2A7XG4gICAgICBjb25zdCB0aHVtYlBhdGggPSBgdXNlcnMvJHt1c2VySWR9L3RodW1iLmpwZ2A7XG4gICAgICBjb25zdCB1cGxvYWRNZXRhZGF0YSA9IHsgc2tpcFByZWZpeDogdHJ1ZSwgY29udGVudFR5cGU6ICdpbWFnZS9qcGVnJyB9O1xuXG4gICAgICAvLyBSYWNlIGFnYWluc3QgdGltZW91dCB0byBwcmV2ZW50IGluZmluaXRlIGxvYWRpbmdcbiAgICAgIGNvbnN0IFthdmF0YXJSZXN1bHQsIHRodW1iUmVzdWx0XSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIFByb21pc2UuYWxsKFtcbiAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnVwbG9hZEFuZEdldFVybChhdmF0YXJQYXRoLCBjb21wcmVzc2VkLmJsb2IsIHVwbG9hZE1ldGFkYXRhKSxcbiAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnVwbG9hZEFuZEdldFVybCh0aHVtYlBhdGgsIHRodW1ibmFpbC5ibG9iLCB1cGxvYWRNZXRhZGF0YSksXG4gICAgICAgIF0pLFxuICAgICAgICB1cGxvYWRUaW1lb3V0LFxuICAgICAgXSk7XG5cbiAgICAgIC8vIDYuIFVwZGF0ZSBiYWNrZW5kIHdpdGggVVJMc1xuICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UudXBkYXRlQXZhdGFyKHtcbiAgICAgICAgICBhdmF0YXJVcmw6IGF2YXRhclJlc3VsdC5kb3dubG9hZFVybCxcbiAgICAgICAgICBhdmF0YXJUaHVtYm5haWw6IHRodW1iUmVzdWx0LmRvd25sb2FkVXJsLFxuICAgICAgICB9KVxuICAgICAgKTtcblxuICAgICAgLy8gNy4gVXBkYXRlIHByZXZpZXcgd2l0aCBjYWNoZS1idXN0aW5nIHRvIGZvcmNlIHJlZnJlc2hcbiAgICAgIGNvbnN0IGNhY2hlQnVzdGVyID0gYD90PSR7RGF0ZS5ub3coKX1gO1xuICAgICAgdGhpcy5wcmV2aWV3VXJsLnNldChhdmF0YXJSZXN1bHQuZG93bmxvYWRVcmwgKyBjYWNoZUJ1c3Rlcik7XG5cbiAgICAgIC8vIDguIEVtaXQgc3VjY2Vzc1xuICAgICAgY29uc3QgcmVzdWx0OiBBdmF0YXJVcGxvYWRSZXN1bHQgPSB7XG4gICAgICAgIGF2YXRhclVybDogYXZhdGFyUmVzdWx0LmRvd25sb2FkVXJsLFxuICAgICAgICB0aHVtYm5haWxVcmw6IHRodW1iUmVzdWx0LmRvd25sb2FkVXJsLFxuICAgICAgfTtcblxuICAgICAgdGhpcy51cGxvYWRlZC5lbWl0KHJlc3VsdCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbQXZhdGFyVXBsb2FkXSBwcm9jZXNzQW5kVXBsb2FkIGZhaWxlZDonLCBlcnIpO1xuICAgICAgLy8gUmV2ZXJ0IHByZXZpZXcgb24gZXJyb3JcbiAgICAgIHRoaXMucHJldmlld1VybC5zZXQobnVsbCk7XG5cbiAgICAgIC8vIERldGVybWluZSBlcnJvciBtZXNzYWdlIGJhc2VkIG9uIGVycm9yIHR5cGVcbiAgICAgIGxldCBtZXNzYWdlOiBzdHJpbmc7XG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgaWYgKGVyci5tZXNzYWdlID09PSAnVXBsb2FkIHRpbWVvdXQnKSB7XG4gICAgICAgICAgbWVzc2FnZSA9XG4gICAgICAgICAgICB0aGlzLmkxOG4udCgndXBsb2FkVGltZW91dCcsIHRoaXMuY29uZmlnKCkuaTE4bk5hbWVzcGFjZSkgfHxcbiAgICAgICAgICAgICdMYSBzdWJpZGEgdGFyZMOzIGRlbWFzaWFkby4gVmVyaWZpY2EgdHUgY29uZXhpw7NuLic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbWVzc2FnZSA9IGVyci5tZXNzYWdlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZXNzYWdlID0gdGhpcy5pMThuLnQoJ3VwbG9hZEVycm9yJywgdGhpcy5jb25maWcoKS5pMThuTmFtZXNwYWNlKSB8fCAnRXJyb3IgYWwgc3ViaXIgbGEgaW1hZ2VuJztcbiAgICAgIH1cblxuICAgICAgdGhpcy5lbWl0RXJyb3IoJ3VwbG9hZEZhaWxlZCcsIG1lc3NhZ2UsIGVycik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBFbWl0IGVycm9yIGV2ZW50ICovXG4gIHByaXZhdGUgZW1pdEVycm9yKHR5cGU6IEF2YXRhclVwbG9hZEVycm9yWyd0eXBlJ10sIG1lc3NhZ2U6IHN0cmluZywgb3JpZ2luYWxFcnJvcj86IHVua25vd24pOiB2b2lkIHtcbiAgICB0aGlzLmVycm9yLmVtaXQoeyB0eXBlLCBtZXNzYWdlLCBvcmlnaW5hbEVycm9yIH0pO1xuICB9XG59XG4iXX0=
430
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLXVwbG9hZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2F2YXRhci11cGxvYWQvYXZhdGFyLXVwbG9hZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixTQUFTLEVBQ1QsT0FBTyxFQUNQLFFBQVEsRUFDUixVQUFVLEVBQ1YsUUFBUSxFQUNSLFVBQVUsR0FDWCxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBK0QsTUFBTSxTQUFTLENBQUM7O0FBRTlHLFFBQVEsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7QUFFNUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFpSEgsTUFBTSxPQUFPLHFCQUFxQjtJQWhIbEM7UUFpSFUsaUJBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEMsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDeEMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUluQyw4QkFBOEI7UUFDckIsVUFBSyxHQUFHLEtBQUssQ0FBdUIsRUFBRSxDQUFDLENBQUM7UUFFakQsdURBQXVEO1FBQzdDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQUU1RCw4Q0FBOEM7UUFDcEMsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBRXhELGlDQUFpQztRQUN2QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFakQsaUJBQWlCO1FBQ1AsWUFBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixpQkFBWSxHQUFHLE1BQU0sQ0FBYyxJQUFJLENBQUMsQ0FBQztRQUN6QyxlQUFVLEdBQUcsTUFBTSxDQUFnQixJQUFJLENBQUMsQ0FBQztRQUN6QyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV6QyxrQ0FBa0M7UUFDeEIsV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLEdBQUcsc0JBQXNCO1lBQ3pCLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRTtTQUNoQixDQUFDLENBQUMsQ0FBQztRQUVKLDJEQUEyRDtRQUNqRCxlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNuQyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDdkMsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUM7UUFFSCxpQ0FBaUM7UUFDdkIsb0JBQWUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLGNBQWMsQ0FBQztRQUNuRixDQUFDLENBQUMsQ0FBQztRQUVILGtDQUFrQztRQUN4QixtQkFBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNqQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksVUFBVSxDQUFDO1FBQzdFLENBQUMsQ0FBQyxDQUFDO1FBRUgsaURBQWlEO1FBQ3ZDLG9CQUFlLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxRQUFRLENBQUM7UUFDNUUsQ0FBQyxDQUFDLENBQUM7S0FrS0o7SUFoS0MsOEJBQThCO0lBQzlCLGNBQWM7UUFDWixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsNEJBQTRCO0lBQzVCLGNBQWMsQ0FBQyxLQUFZO1FBQ3pCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUEwQixDQUFDO1FBQy9DLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU5QixJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU87UUFFbEIsc0NBQXNDO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBRWpCLGdCQUFnQjtRQUNoQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDbEQsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxXQUFXO1lBQ2xDLFlBQVksRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDO1NBQ3hELENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBa0MsRUFBRSxVQUFVLENBQUMsT0FBUSxDQUFDLENBQUM7WUFDbkYsT0FBTztRQUNULENBQUM7UUFFRCxrQkFBa0I7UUFDbEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELDZCQUE2QjtJQUM3QixLQUFLLENBQUMsY0FBYyxDQUFDLFdBQWlCO1FBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCx5QkFBeUI7SUFDekIsWUFBWTtRQUNWLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCwrQkFBK0I7SUFDL0IsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FDWixhQUFhLEVBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSw2QkFBNkIsQ0FDeEYsQ0FBQztJQUNKLENBQUM7SUFFRCw4QkFBOEI7SUFDOUIsWUFBWTtRQUNWLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxpREFBaUQ7YUFDekIsc0JBQWlCLEdBQUcsS0FBSyxBQUFSLENBQVM7SUFFbEQsdUNBQXVDO0lBQy9CLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFpQjtRQUM5QyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXhCLDhDQUE4QztRQUM5QyxNQUFNLGFBQWEsR0FBRyxJQUFJLE9BQU8sQ0FBUSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUNyRCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUMvRixDQUFDO1FBRUYsSUFBSSxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBRTdCLG9CQUFvQjtZQUNwQixNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRTtnQkFDL0QsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO2dCQUN6QixTQUFTLEVBQUUsTUFBTSxDQUFDLFFBQVE7Z0JBQzFCLE9BQU8sRUFBRSxNQUFNLENBQUMsZUFBZTthQUNoQyxDQUFDLENBQUM7WUFFSCx3QkFBd0I7WUFDeEIsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUUzRiw2QkFBNkI7WUFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRS9CLGtDQUFrQztZQUNsQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sQ0FBQztZQUMvQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1lBQzVDLENBQUM7WUFFRCx1REFBdUQ7WUFDdkQscUZBQXFGO1lBQ3JGLHNFQUFzRTtZQUN0RSxNQUFNLFVBQVUsR0FBRyxTQUFTLE1BQU0sYUFBYSxDQUFDO1lBQ2hELE1BQU0sU0FBUyxHQUFHLFNBQVMsTUFBTSxZQUFZLENBQUM7WUFDOUMsTUFBTSxjQUFjLEdBQUcsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsQ0FBQztZQUV2RSxtREFBbUQ7WUFDbkQsTUFBTSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ3JELE9BQU8sQ0FBQyxHQUFHLENBQUM7b0JBQ1YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDO29CQUNoRixJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLElBQUksRUFBRSxjQUFjLENBQUM7aUJBQy9FLENBQUM7Z0JBQ0YsYUFBYTthQUNkLENBQUMsQ0FBQztZQUVILDhCQUE4QjtZQUM5QixNQUFNLGNBQWMsQ0FDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUM7Z0JBQzVCLFNBQVMsRUFBRSxZQUFZLENBQUMsV0FBVztnQkFDbkMsZUFBZSxFQUFFLFdBQVcsQ0FBQyxXQUFXO2FBQ3pDLENBQUMsQ0FDSCxDQUFDO1lBRUYsd0RBQXdEO1lBQ3hELE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMsQ0FBQztZQUU1RCxrQkFBa0I7WUFDbEIsTUFBTSxNQUFNLEdBQXVCO2dCQUNqQyxTQUFTLEVBQUUsWUFBWSxDQUFDLFdBQVc7Z0JBQ25DLFlBQVksRUFBRSxXQUFXLENBQUMsV0FBVzthQUN0QyxDQUFDO1lBRUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLHlDQUF5QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzlELDBCQUEwQjtZQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUUxQiw4Q0FBOEM7WUFDOUMsSUFBSSxPQUFlLENBQUM7WUFDcEIsSUFBSSxHQUFHLFlBQVksS0FBSyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksR0FBRyxDQUFDLE9BQU8sS0FBSyxnQkFBZ0IsRUFBRSxDQUFDO29CQUNyQyxPQUFPO3dCQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsYUFBYSxDQUFDOzRCQUN6RCxrREFBa0QsQ0FBQztnQkFDdkQsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO2dCQUN4QixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLDBCQUEwQixDQUFDO1lBQ2xHLENBQUM7WUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDL0MsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRCx1QkFBdUI7SUFDZixTQUFTLENBQUMsSUFBK0IsRUFBRSxPQUFlLEVBQUUsYUFBdUI7UUFDekYsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQzsrR0F6TlUscUJBQXFCO21HQUFyQixxQkFBcUIsd1lBaEd0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkZULG8xRUF6R0MsWUFBWSwrQkFDWixPQUFPLDJKQUNQLFVBQVUseUdBQ1YsUUFBUSxzREFDUixVQUFVLHdLQUNWLFNBQVMsb0dBQ1QsVUFBVSxtRkFDVixRQUFRLGlGQUNSLFVBQVUsOEVBQ1YsU0FBUyxvUEFDVCxrQkFBa0I7OzRGQWtHVCxxQkFBcUI7a0JBaEhqQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixPQUFPO3dCQUNQLFVBQVU7d0JBQ1YsUUFBUTt3QkFDUixVQUFVO3dCQUNWLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixRQUFRO3dCQUNSLFVBQVU7d0JBQ1YsU0FBUzt3QkFDVCxrQkFBa0I7cUJBQ25CLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZGVDs4QkFTdUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQU1aLFFBQVE7c0JBQWpCLE1BQU07Z0JBR0csS0FBSztzQkFBZCxNQUFNO2dCQUdHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIGlucHV0LCBPdXRwdXQsIHNpZ25hbCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBJb25CdXR0b24sXG4gIElvbkJ1dHRvbnMsXG4gIElvbkNvbnRlbnQsXG4gIElvbkhlYWRlcixcbiAgSW9uSWNvbixcbiAgSW9uTW9kYWwsXG4gIElvblNwaW5uZXIsXG4gIElvblRpdGxlLFxuICBJb25Ub29sYmFyLFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgY2FtZXJhT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgnO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9maXJlYmFzZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgSW1hZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaW1hZ2UnO1xuaW1wb3J0IHsgSW1hZ2VDcm9wQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2ltYWdlLWNyb3AnO1xuaW1wb3J0IHsgQVZBVEFSX1VQTE9BRF9ERUZBVUxUUywgQXZhdGFyVXBsb2FkRXJyb3IsIEF2YXRhclVwbG9hZE1ldGFkYXRhLCBBdmF0YXJVcGxvYWRSZXN1bHQgfSBmcm9tICcuL3R5cGVzJztcblxuYWRkSWNvbnMoeyBjYW1lcmFPdXRsaW5lIH0pO1xuXG4vKipcbiAqIEF2YXRhclVwbG9hZENvbXBvbmVudFxuICpcbiAqIEEgY29tcGxldGUgYXZhdGFyIHVwbG9hZCBzb2x1dGlvbiB3aXRoOlxuICogLSBJbWFnZSBzZWxlY3Rpb24gZnJvbSBkZXZpY2VcbiAqIC0gQ3JvcCBtb2RhbCB3aXRoIHJvdW5kIHByZXZpZXdcbiAqIC0gQXV0b21hdGljIGNvbXByZXNzaW9uIGFuZCB0aHVtYm5haWwgZ2VuZXJhdGlvblxuICogLSBVcGxvYWQgdG8gRmlyZWJhc2UgU3RvcmFnZVxuICogLSBCYWNrZW5kIHN5bmMgdmlhIEF1dGhTZXJ2aWNlXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2VcbiAqIGBgYGh0bWxcbiAqIDx2YWwtYXZhdGFyLXVwbG9hZFxuICogICBbcHJvcHNdPVwie1xuICogICAgIGN1cnJlbnRVcmw6IHVzZXIoKT8uYXZhdGFyVXJsLFxuICogICAgIGluaXRpYWxzOiAnSkQnLFxuICogICAgIHNpemU6IDEyMFxuICogICB9XCJcbiAqICAgKHVwbG9hZGVkKT1cIm9uQXZhdGFyVXBsb2FkZWQoJGV2ZW50KVwiXG4gKiAgIChlcnJvcik9XCJvbkVycm9yKCRldmVudClcIlxuICogLz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtYXZhdGFyLXVwbG9hZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSW9uSWNvbixcbiAgICBJb25TcGlubmVyLFxuICAgIElvbk1vZGFsLFxuICAgIElvbkNvbnRlbnQsXG4gICAgSW9uSGVhZGVyLFxuICAgIElvblRvb2xiYXIsXG4gICAgSW9uVGl0bGUsXG4gICAgSW9uQnV0dG9ucyxcbiAgICBJb25CdXR0b24sXG4gICAgSW1hZ2VDcm9wQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItdXBsb2FkXCIgW3N0eWxlLi0tYXZhdGFyLXNpemUucHhdPVwiY29uZmlnKCkuc2l6ZVwiIFtjbGFzcy5hdmF0YXItdXBsb2FkLS1sb2FkaW5nXT1cImxvYWRpbmcoKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jb250YWluZXJcIj5cbiAgICAgICAgPCEtLSBBdmF0YXIgSW1hZ2Ugb3IgSW5pdGlhbHMgLS0+XG4gICAgICAgIEBpZiAoZGlzcGxheVVybCgpKSB7XG4gICAgICAgICAgPGltZyBjbGFzcz1cImF2YXRhci1pbWFnZVwiIFtzcmNdPVwiZGlzcGxheVVybCgpXCIgYWx0PVwiQXZhdGFyXCIgKGVycm9yKT1cIm9uSW1hZ2VFcnJvcigpXCIgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1pbml0aWFsc1wiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImNvbmZpZygpLmJhY2tncm91bmRDb2xvclwiPlxuICAgICAgICAgICAge3sgY29uZmlnKCkuaW5pdGlhbHMgfHwgJz8nIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIEVkaXQgQnV0dG9uIC0tPlxuICAgICAgICBAaWYgKGNvbmZpZygpLmVkaXRhYmxlICYmICFsb2FkaW5nKCkpIHtcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZWRpdC1idXR0b25cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5GaWxlUGlja2VyKClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImVkaXRCdXR0b25MYWJlbCgpXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNhbWVyYS1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gTG9hZGluZyBPdmVybGF5IC0tPlxuICAgICAgICBAaWYgKGxvYWRpbmcoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkaW5nLW92ZXJsYXlcIj5cbiAgICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY2lyY3VsYXJcIj48L2lvbi1zcGlubmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBIaWRkZW4gRmlsZSBJbnB1dCAtLT5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjZmlsZUlucHV0XG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgYWNjZXB0PVwiaW1hZ2UvanBlZyxpbWFnZS9wbmcsaW1hZ2Uvd2VicFwiXG4gICAgICAgIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiYXZhdGFyLXVwbG9hZC1pbnB1dFwiXG4gICAgICAgIGhpZGRlblxuICAgICAgLz5cblxuICAgICAgPCEtLSBWaWV3IFBob3RvIEJ1dHRvbiAtLT5cbiAgICAgIEBpZiAoY29uZmlnKCkuc2hvd1ZpZXdCdXR0b24gJiYgZGlzcGxheVVybCgpKSB7XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJ2aWV3LXBob3RvLWJ0blwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2hvd1ZpZXdNb2RhbC5zZXQodHJ1ZSlcIj5cbiAgICAgICAgICB7eyB2aWV3UGhvdG9MYWJlbCgpIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgfVxuXG4gICAgICA8IS0tIENyb3AgTW9kYWwgLS0+XG4gICAgICA8aW9uLW1vZGFsXG4gICAgICAgIFtpc09wZW5dPVwic2hvd0Nyb3BNb2RhbCgpXCJcbiAgICAgICAgKGRpZERpc21pc3MpPVwib25Dcm9wQ2FuY2VsKClcIlxuICAgICAgICBbYnJlYWtwb2ludHNdPVwiWzAsIDFdXCJcbiAgICAgICAgW2luaXRpYWxCcmVha3BvaW50XT1cIjFcIlxuICAgICAgPlxuICAgICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgICAgQGlmIChzZWxlY3RlZEZpbGUoKSkge1xuICAgICAgICAgICAgPHZhbC1pbWFnZS1jcm9wXG4gICAgICAgICAgICAgIFtpbWFnZV09XCJzZWxlY3RlZEZpbGUoKSFcIlxuICAgICAgICAgICAgICBbYXNwZWN0UmF0aW9dPVwiMVwiXG4gICAgICAgICAgICAgIFtyb3VuZENyb3BwZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtpMThuTmFtZXNwYWNlXT1cImNvbmZpZygpLmkxOG5OYW1lc3BhY2VcIlxuICAgICAgICAgICAgICAoY3JvcENvbXBsZXRlKT1cIm9uQ3JvcENvbXBsZXRlKCRldmVudClcIlxuICAgICAgICAgICAgICAoY2FuY2VsKT1cIm9uQ3JvcENhbmNlbCgpXCJcbiAgICAgICAgICAgICAgKGxvYWRGYWlsZWQpPVwib25Dcm9wTG9hZEZhaWxlZCgpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9pb24tbW9kYWw+XG5cbiAgICAgIDwhLS0gUGhvdG8gVmlld2VyIE1vZGFsIC0tPlxuICAgICAgPGlvbi1tb2RhbFxuICAgICAgICBbaXNPcGVuXT1cInNob3dWaWV3TW9kYWwoKVwiXG4gICAgICAgIChkaWREaXNtaXNzKT1cInNob3dWaWV3TW9kYWwuc2V0KGZhbHNlKVwiXG4gICAgICAgIFticmVha3BvaW50c109XCJbMCwgMC41NV1cIlxuICAgICAgICBbaW5pdGlhbEJyZWFrcG9pbnRdPVwiMC41NVwiXG4gICAgICAgIFtoYW5kbGVdPVwidHJ1ZVwiXG4gICAgICA+XG4gICAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8aW9uLWhlYWRlciBbdHJhbnNsdWNlbnRdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICAgICAgICA8aW9uLXRpdGxlPnt7IHZpZXdQaG90b0xhYmVsKCkgfX08L2lvbi10aXRsZT5cbiAgICAgICAgICAgICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cImRhcmtcIiAoY2xpY2spPVwic2hvd1ZpZXdNb2RhbC5zZXQoZmFsc2UpXCI+XG4gICAgICAgICAgICAgICAgICB7eyBjbG9zZVBob3RvTGFiZWwoKSB9fVxuICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgICAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgICAgICAgPC9pb24taGVhZGVyPlxuICAgICAgICAgIDxpb24tY29udGVudD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaG90by12aWV3ZXJcIj5cbiAgICAgICAgICAgICAgPGltZyBjbGFzcz1cInBob3RvLXZpZXdlcl9faW1nXCIgW3NyY109XCJkaXNwbGF5VXJsKClcIiBhbHQ9XCJQaG90b1wiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2lvbi1jb250ZW50PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9pb24tbW9kYWw+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2F2YXRhci11cGxvYWQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQXZhdGFyVXBsb2FkQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBpbWFnZVNlcnZpY2UgPSBpbmplY3QoSW1hZ2VTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZSA9IGluamVjdChTdG9yYWdlU2VydmljZSk7XG4gIHByaXZhdGUgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgLyoqIENvbXBvbmVudCBjb25maWd1cmF0aW9uICovXG4gIHJlYWRvbmx5IHByb3BzID0gaW5wdXQ8QXZhdGFyVXBsb2FkTWV0YWRhdGE+KHt9KTtcblxuICAvKiogRW1pdHRlZCBhZnRlciBzdWNjZXNzZnVsIHVwbG9hZCBhbmQgYmFja2VuZCBzeW5jICovXG4gIEBPdXRwdXQoKSB1cGxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QXZhdGFyVXBsb2FkUmVzdWx0PigpO1xuXG4gIC8qKiBFbWl0dGVkIG9uIGFueSBlcnJvciBkdXJpbmcgdGhlIHByb2Nlc3MgKi9cbiAgQE91dHB1dCgpIGVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxBdmF0YXJVcGxvYWRFcnJvcj4oKTtcblxuICAvKiogRW1pdHRlZCB3aGVuIHVwbG9hZCBzdGFydHMgKi9cbiAgQE91dHB1dCgpIHVwbG9hZFN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8vIEludGVybmFsIHN0YXRlXG4gIHByb3RlY3RlZCBsb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHNob3dDcm9wTW9kYWwgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgc2hvd1ZpZXdNb2RhbCA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCBzZWxlY3RlZEZpbGUgPSBzaWduYWw8RmlsZSB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgcHJldmlld1VybCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIGltYWdlTG9hZEVycm9yID0gc2lnbmFsKGZhbHNlKTtcblxuICAvKiogTWVyZ2VkIGNvbmZpZyB3aXRoIGRlZmF1bHRzICovXG4gIHByb3RlY3RlZCBjb25maWcgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgIC4uLkFWQVRBUl9VUExPQURfREVGQVVMVFMsXG4gICAgLi4udGhpcy5wcm9wcygpLFxuICB9KSk7XG5cbiAgLyoqIFVSTCB0byBkaXNwbGF5IChwcmV2aWV3IHRha2VzIHByaW9yaXR5IG92ZXIgY3VycmVudCkgKi9cbiAgcHJvdGVjdGVkIGRpc3BsYXlVcmwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuaW1hZ2VMb2FkRXJyb3IoKSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHRoaXMucHJldmlld1VybCgpIHx8IHRoaXMuY29uZmlnKCkuY3VycmVudFVybCB8fCBudWxsO1xuICB9KTtcblxuICAvKiogQXJpYSBsYWJlbCBmb3IgZWRpdCBidXR0b24gKi9cbiAgcHJvdGVjdGVkIGVkaXRCdXR0b25MYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB0aGlzLmkxOG4udCgnY2hhbmdlUGhvdG8nLCB0aGlzLmNvbmZpZygpLmkxOG5OYW1lc3BhY2UpIHx8ICdDYW1iaWFyIGZvdG8nO1xuICB9KTtcblxuICAvKiogTGFiZWwgZm9yIHZpZXcgcGhvdG8gYnV0dG9uICovXG4gIHByb3RlY3RlZCB2aWV3UGhvdG9MYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB0aGlzLmkxOG4udCgndmlld1Bob3RvJywgdGhpcy5jb25maWcoKS5pMThuTmFtZXNwYWNlKSB8fCAnVmVyIGZvdG8nO1xuICB9KTtcblxuICAvKiogTGFiZWwgZm9yIGNsb3NlIGJ1dHRvbiBpbnNpZGUgcGhvdG8gdmlld2VyICovXG4gIHByb3RlY3RlZCBjbG9zZVBob3RvTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoJ2Nsb3NlUGhvdG8nLCB0aGlzLmNvbmZpZygpLmkxOG5OYW1lc3BhY2UpIHx8ICdDZXJyYXInO1xuICB9KTtcblxuICAvKiogT3BlbiBmaWxlIHBpY2tlciBkaWFsb2cgKi9cbiAgb3BlbkZpbGVQaWNrZXIoKTogdm9pZCB7XG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICB9XG5cbiAgLyoqIEhhbmRsZSBmaWxlIHNlbGVjdGlvbiAqL1xuICBvbkZpbGVTZWxlY3RlZChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGNvbnN0IGZpbGUgPSBpbnB1dC5maWxlcz8uWzBdO1xuXG4gICAgaWYgKCFmaWxlKSByZXR1cm47XG5cbiAgICAvLyBSZXNldCBpbnB1dCBmb3Igc2FtZSBmaWxlIHNlbGVjdGlvblxuICAgIGlucHV0LnZhbHVlID0gJyc7XG5cbiAgICAvLyBWYWxpZGF0ZSBmaWxlXG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHRoaXMuaW1hZ2VTZXJ2aWNlLnZhbGlkYXRlKGZpbGUsIHtcbiAgICAgIG1heFNpemU6IHRoaXMuY29uZmlnKCkubWF4RmlsZVNpemUsXG4gICAgICBhbGxvd2VkVHlwZXM6IFsnaW1hZ2UvanBlZycsICdpbWFnZS9wbmcnLCAnaW1hZ2Uvd2VicCddLFxuICAgIH0pO1xuXG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICB0aGlzLmVtaXRFcnJvcih2YWxpZGF0aW9uLmVycm9yIGFzIEF2YXRhclVwbG9hZEVycm9yWyd0eXBlJ10sIHZhbGlkYXRpb24ubWVzc2FnZSEpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIE9wZW4gY3JvcCBtb2RhbFxuICAgIHRoaXMuc2VsZWN0ZWRGaWxlLnNldChmaWxlKTtcbiAgICB0aGlzLnNob3dDcm9wTW9kYWwuc2V0KHRydWUpO1xuICB9XG5cbiAgLyoqIEhhbmRsZSBjcm9wIGNvbXBsZXRpb24gKi9cbiAgYXN5bmMgb25Dcm9wQ29tcGxldGUoY3JvcHBlZEJsb2I6IEJsb2IpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnNob3dDcm9wTW9kYWwuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnNlbGVjdGVkRmlsZS5zZXQobnVsbCk7XG5cbiAgICBhd2FpdCB0aGlzLnByb2Nlc3NBbmRVcGxvYWQoY3JvcHBlZEJsb2IpO1xuICB9XG5cbiAgLyoqIEhhbmRsZSBjcm9wIGNhbmNlbCAqL1xuICBvbkNyb3BDYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93Q3JvcE1vZGFsLnNldChmYWxzZSk7XG4gICAgdGhpcy5zZWxlY3RlZEZpbGUuc2V0KG51bGwpO1xuICB9XG5cbiAgLyoqIEhhbmRsZSBjcm9wIGxvYWQgZmFpbHVyZSAqL1xuICBvbkNyb3BMb2FkRmFpbGVkKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0Nyb3BNb2RhbC5zZXQoZmFsc2UpO1xuICAgIHRoaXMuc2VsZWN0ZWRGaWxlLnNldChudWxsKTtcbiAgICB0aGlzLmVtaXRFcnJvcihcbiAgICAgICdpbnZhbGlkVHlwZScsXG4gICAgICB0aGlzLmkxOG4udCgnbG9hZEZhaWxlZCcsIHRoaXMuY29uZmlnKCkuaTE4bk5hbWVzcGFjZSkgfHwgJ05vIHNlIHB1ZG8gY2FyZ2FyIGxhIGltYWdlbidcbiAgICApO1xuICB9XG5cbiAgLyoqIEhhbmRsZSBpbWFnZSBsb2FkIGVycm9yICovXG4gIG9uSW1hZ2VFcnJvcigpOiB2b2lkIHtcbiAgICB0aGlzLmltYWdlTG9hZEVycm9yLnNldCh0cnVlKTtcbiAgfVxuXG4gIC8qKiBUaW1lb3V0IGZvciB1cGxvYWQgb3BlcmF0aW9ucyAoMzAgc2Vjb25kcykgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVVBMT0FEX1RJTUVPVVRfTVMgPSAzMDAwMDtcblxuICAvKiogUHJvY2VzcyBjcm9wcGVkIGltYWdlIGFuZCB1cGxvYWQgKi9cbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzQW5kVXBsb2FkKGNyb3BwZWRCbG9iOiBCbG9iKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLnVwbG9hZFN0YXJ0LmVtaXQoKTtcblxuICAgIC8vIFRpbWVvdXQgcHJvbWlzZSB0byBwcmV2ZW50IGluZmluaXRlIGxvYWRpbmdcbiAgICBjb25zdCB1cGxvYWRUaW1lb3V0ID0gbmV3IFByb21pc2U8bmV2ZXI+KChfLCByZWplY3QpID0+XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoJ1VwbG9hZCB0aW1lb3V0JykpLCBBdmF0YXJVcGxvYWRDb21wb25lbnQuVVBMT0FEX1RJTUVPVVRfTVMpXG4gICAgKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZygpO1xuXG4gICAgICAvLyAxLiBDb21wcmVzcyBpbWFnZVxuICAgICAgY29uc3QgY29tcHJlc3NlZCA9IGF3YWl0IHRoaXMuaW1hZ2VTZXJ2aWNlLmNvbXByZXNzKGNyb3BwZWRCbG9iLCB7XG4gICAgICAgIG1heFdpZHRoOiBjb25maWcubWF4V2lkdGgsXG4gICAgICAgIG1heEhlaWdodDogY29uZmlnLm1heFdpZHRoLFxuICAgICAgICBxdWFsaXR5OiBjb25maWcuY29tcHJlc3NRdWFsaXR5LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIDIuIEdlbmVyYXRlIHRodW1ibmFpbFxuICAgICAgY29uc3QgdGh1bWJuYWlsID0gYXdhaXQgdGhpcy5pbWFnZVNlcnZpY2UudGh1bWJuYWlsKGNvbXByZXNzZWQuYmxvYiwgY29uZmlnLnRodW1ibmFpbFNpemUpO1xuXG4gICAgICAvLyAzLiBTZXQgcHJldmlldyBpbW1lZGlhdGVseVxuICAgICAgdGhpcy5wcmV2aWV3VXJsLnNldChjb21wcmVzc2VkLmRhdGFVcmwpO1xuICAgICAgdGhpcy5pbWFnZUxvYWRFcnJvci5zZXQoZmFsc2UpO1xuXG4gICAgICAvLyA0LiBHZXQgdXNlciBJRCBmb3Igc3RvcmFnZSBwYXRoXG4gICAgICBjb25zdCB1c2VySWQgPSB0aGlzLmF1dGhTZXJ2aWNlLnVzZXIoKT8udXNlcklkO1xuICAgICAgaWYgKCF1c2VySWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVc2VyIG5vdCBhdXRoZW50aWNhdGVkJyk7XG4gICAgICB9XG5cbiAgICAgIC8vIDUuIFVwbG9hZCB0byBGaXJlYmFzZSBTdG9yYWdlIHdpdGggcHJlZGljdGFibGUgcGF0aHNcbiAgICAgIC8vIFBhdGg6IHVzZXJzL3t1c2VySWR9L2F2YXRhci5qcGcgLSBhbGxvd3MgYW55IGFwcCB0byBjb25zdHJ1Y3QgVVJMIHdpdGgganVzdCB1c2VySWRcbiAgICAgIC8vIHNraXBQcmVmaXg6IHRydWUgLSBieXBhc3NlcyBhcHBJZCBwcmVmaXggZm9yIHNoYXJlZC9jcm9zcy1hcHAgcGF0aHNcbiAgICAgIGNvbnN0IGF2YXRhclBhdGggPSBgdXNlcnMvJHt1c2VySWR9L2F2YXRhci5qcGdgO1xuICAgICAgY29uc3QgdGh1bWJQYXRoID0gYHVzZXJzLyR7dXNlcklkfS90aHVtYi5qcGdgO1xuICAgICAgY29uc3QgdXBsb2FkTWV0YWRhdGEgPSB7IHNraXBQcmVmaXg6IHRydWUsIGNvbnRlbnRUeXBlOiAnaW1hZ2UvanBlZycgfTtcblxuICAgICAgLy8gUmFjZSBhZ2FpbnN0IHRpbWVvdXQgdG8gcHJldmVudCBpbmZpbml0ZSBsb2FkaW5nXG4gICAgICBjb25zdCBbYXZhdGFyUmVzdWx0LCB0aHVtYlJlc3VsdF0gPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBQcm9taXNlLmFsbChbXG4gICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS51cGxvYWRBbmRHZXRVcmwoYXZhdGFyUGF0aCwgY29tcHJlc3NlZC5ibG9iLCB1cGxvYWRNZXRhZGF0YSksXG4gICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS51cGxvYWRBbmRHZXRVcmwodGh1bWJQYXRoLCB0aHVtYm5haWwuYmxvYiwgdXBsb2FkTWV0YWRhdGEpLFxuICAgICAgICBdKSxcbiAgICAgICAgdXBsb2FkVGltZW91dCxcbiAgICAgIF0pO1xuXG4gICAgICAvLyA2LiBVcGRhdGUgYmFja2VuZCB3aXRoIFVSTHNcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnVwZGF0ZUF2YXRhcih7XG4gICAgICAgICAgYXZhdGFyVXJsOiBhdmF0YXJSZXN1bHQuZG93bmxvYWRVcmwsXG4gICAgICAgICAgYXZhdGFyVGh1bWJuYWlsOiB0aHVtYlJlc3VsdC5kb3dubG9hZFVybCxcbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICAgIC8vIDcuIFVwZGF0ZSBwcmV2aWV3IHdpdGggY2FjaGUtYnVzdGluZyB0byBmb3JjZSByZWZyZXNoXG4gICAgICBjb25zdCBjYWNoZUJ1c3RlciA9IGA/dD0ke0RhdGUubm93KCl9YDtcbiAgICAgIHRoaXMucHJldmlld1VybC5zZXQoYXZhdGFyUmVzdWx0LmRvd25sb2FkVXJsICsgY2FjaGVCdXN0ZXIpO1xuXG4gICAgICAvLyA4LiBFbWl0IHN1Y2Nlc3NcbiAgICAgIGNvbnN0IHJlc3VsdDogQXZhdGFyVXBsb2FkUmVzdWx0ID0ge1xuICAgICAgICBhdmF0YXJVcmw6IGF2YXRhclJlc3VsdC5kb3dubG9hZFVybCxcbiAgICAgICAgdGh1bWJuYWlsVXJsOiB0aHVtYlJlc3VsdC5kb3dubG9hZFVybCxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMudXBsb2FkZWQuZW1pdChyZXN1bHQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignW0F2YXRhclVwbG9hZF0gcHJvY2Vzc0FuZFVwbG9hZCBmYWlsZWQ6JywgZXJyKTtcbiAgICAgIC8vIFJldmVydCBwcmV2aWV3IG9uIGVycm9yXG4gICAgICB0aGlzLnByZXZpZXdVcmwuc2V0KG51bGwpO1xuXG4gICAgICAvLyBEZXRlcm1pbmUgZXJyb3IgbWVzc2FnZSBiYXNlZCBvbiBlcnJvciB0eXBlXG4gICAgICBsZXQgbWVzc2FnZTogc3RyaW5nO1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIGlmIChlcnIubWVzc2FnZSA9PT0gJ1VwbG9hZCB0aW1lb3V0Jykge1xuICAgICAgICAgIG1lc3NhZ2UgPVxuICAgICAgICAgICAgdGhpcy5pMThuLnQoJ3VwbG9hZFRpbWVvdXQnLCB0aGlzLmNvbmZpZygpLmkxOG5OYW1lc3BhY2UpIHx8XG4gICAgICAgICAgICAnTGEgc3ViaWRhIHRhcmTDsyBkZW1hc2lhZG8uIFZlcmlmaWNhIHR1IGNvbmV4acOzbi4nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVzc2FnZSA9IHRoaXMuaTE4bi50KCd1cGxvYWRFcnJvcicsIHRoaXMuY29uZmlnKCkuaTE4bk5hbWVzcGFjZSkgfHwgJ0Vycm9yIGFsIHN1YmlyIGxhIGltYWdlbic7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZW1pdEVycm9yKCd1cGxvYWRGYWlsZWQnLCBtZXNzYWdlLCBlcnIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvKiogRW1pdCBlcnJvciBldmVudCAqL1xuICBwcml2YXRlIGVtaXRFcnJvcih0eXBlOiBBdmF0YXJVcGxvYWRFcnJvclsndHlwZSddLCBtZXNzYWdlOiBzdHJpbmcsIG9yaWdpbmFsRXJyb3I/OiB1bmtub3duKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvci5lbWl0KHsgdHlwZSwgbWVzc2FnZSwgb3JpZ2luYWxFcnJvciB9KTtcbiAgfVxufVxuIl19
@@ -11,5 +11,6 @@ export const AVATAR_UPLOAD_DEFAULTS = {
11
11
  maxWidth: 800,
12
12
  thumbnailSize: 150,
13
13
  backgroundColor: '#6366f1', // Indigo
14
+ showViewButton: false,
14
15
  };
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2F2YXRhci11cGxvYWQvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeURBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7SUFDcEMsSUFBSSxFQUFFLEdBQUc7SUFDVCxRQUFRLEVBQUUsSUFBSTtJQUNkLFdBQVcsRUFBRSxTQUFTO0lBQ3RCLGFBQWEsRUFBRSxjQUFjO0lBQzdCLFdBQVcsRUFBRSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksRUFBRSxPQUFPO0lBQ3RDLGVBQWUsRUFBRSxHQUFHO0lBQ3BCLFFBQVEsRUFBRSxHQUFHO0lBQ2IsYUFBYSxFQUFFLEdBQUc7SUFDbEIsZUFBZSxFQUFFLFNBQVMsRUFBRSxTQUFTO0NBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIEF2YXRhclVwbG9hZENvbXBvbmVudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF2YXRhclVwbG9hZE1ldGFkYXRhIHtcbiAgLyoqIEN1cnJlbnQgYXZhdGFyIFVSTCAqL1xuICBjdXJyZW50VXJsPzogc3RyaW5nO1xuICAvKiogSW5pdGlhbHMgdG8gc2hvdyB3aGVuIG5vIGF2YXRhciAoZS5nLiwgXCJKRFwiIGZvciBKb2huIERvZSkgKi9cbiAgaW5pdGlhbHM/OiBzdHJpbmc7XG4gIC8qKiBCYWNrZ3JvdW5kIGNvbG9yIGZvciBpbml0aWFscyBhdmF0YXIgKi9cbiAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICAvKiogQXZhdGFyIHNpemUgaW4gcGl4ZWxzIChkZWZhdWx0OiAxMDApICovXG4gIHNpemU/OiBudW1iZXI7XG4gIC8qKiBTaG93IGVkaXQgYnV0dG9uIChkZWZhdWx0OiB0cnVlKSAqL1xuICBlZGl0YWJsZT86IGJvb2xlYW47XG4gIC8qKiBTdG9yYWdlIHBhdGggcHJlZml4IHdpdGhvdXQgdXNlcklkIChkZWZhdWx0OiAnYXZhdGFycycpICovXG4gIHN0b3JhZ2VQYXRoPzogc3RyaW5nO1xuICAvKiogaTE4biBuYW1lc3BhY2UgZm9yIGxhYmVscyAoZGVmYXVsdDogJ0F2YXRhclVwbG9hZCcpICovXG4gIGkxOG5OYW1lc3BhY2U/OiBzdHJpbmc7XG4gIC8qKiBNYXggZmlsZSBzaXplIGluIGJ5dGVzIChkZWZhdWx0OiAxME1CKSAqL1xuICBtYXhGaWxlU2l6ZT86IG51bWJlcjtcbiAgLyoqIFF1YWxpdHkgZm9yIGNvbXByZXNzZWQgaW1hZ2UgMC0xIChkZWZhdWx0OiAwLjgpICovXG4gIGNvbXByZXNzUXVhbGl0eT86IG51bWJlcjtcbiAgLyoqIE1heCB3aWR0aCBmb3IgYXZhdGFyIChkZWZhdWx0OiA4MDApICovXG4gIG1heFdpZHRoPzogbnVtYmVyO1xuICAvKiogVGh1bWJuYWlsIHNpemUgKGRlZmF1bHQ6IDE1MCkgKi9cbiAgdGh1bWJuYWlsU2l6ZT86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBSZXN1bHQgZW1pdHRlZCBhZnRlciBzdWNjZXNzZnVsIHVwbG9hZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF2YXRhclVwbG9hZFJlc3VsdCB7XG4gIC8qKiBGdWxsLXNpemUgYXZhdGFyIFVSTCAqL1xuICBhdmF0YXJVcmw6IHN0cmluZztcbiAgLyoqIFRodW1ibmFpbCBVUkwgKi9cbiAgdGh1bWJuYWlsVXJsOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRXJyb3IgdHlwZXMgdGhhdCBjYW4gb2NjdXIgZHVyaW5nIHVwbG9hZFxuICovXG5leHBvcnQgdHlwZSBBdmF0YXJVcGxvYWRFcnJvclR5cGUgPVxuICB8ICdpbnZhbGlkVHlwZSdcbiAgfCAnZmlsZVRvb0xhcmdlJ1xuICB8ICd1cGxvYWRGYWlsZWQnXG4gIHwgJ2JhY2tlbmRGYWlsZWQnXG4gIHwgJ2NhbmNlbGxlZCc7XG5cbi8qKlxuICogRXJyb3Igb2JqZWN0IGVtaXR0ZWQgb24gZmFpbHVyZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF2YXRhclVwbG9hZEVycm9yIHtcbiAgdHlwZTogQXZhdGFyVXBsb2FkRXJyb3JUeXBlO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIG9yaWdpbmFsRXJyb3I/OiB1bmtub3duO1xufVxuXG4vKipcbiAqIERlZmF1bHQgdmFsdWVzXG4gKi9cbmV4cG9ydCBjb25zdCBBVkFUQVJfVVBMT0FEX0RFRkFVTFRTID0ge1xuICBzaXplOiAxMDAsXG4gIGVkaXRhYmxlOiB0cnVlLFxuICBzdG9yYWdlUGF0aDogJ2F2YXRhcnMnLFxuICBpMThuTmFtZXNwYWNlOiAnQXZhdGFyVXBsb2FkJyxcbiAgbWF4RmlsZVNpemU6IDEwICogMTAyNCAqIDEwMjQsIC8vIDEwTUJcbiAgY29tcHJlc3NRdWFsaXR5OiAwLjgsXG4gIG1heFdpZHRoOiA4MDAsXG4gIHRodW1ibmFpbFNpemU6IDE1MCxcbiAgYmFja2dyb3VuZENvbG9yOiAnIzYzNjZmMScsIC8vIEluZGlnb1xufTtcbiJdfQ==
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2F2YXRhci11cGxvYWQvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMkRBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7SUFDcEMsSUFBSSxFQUFFLEdBQUc7SUFDVCxRQUFRLEVBQUUsSUFBSTtJQUNkLFdBQVcsRUFBRSxTQUFTO0lBQ3RCLGFBQWEsRUFBRSxjQUFjO0lBQzdCLFdBQVcsRUFBRSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksRUFBRSxPQUFPO0lBQ3RDLGVBQWUsRUFBRSxHQUFHO0lBQ3BCLFFBQVEsRUFBRSxHQUFHO0lBQ2IsYUFBYSxFQUFFLEdBQUc7SUFDbEIsZUFBZSxFQUFFLFNBQVMsRUFBRSxTQUFTO0lBQ3JDLGNBQWMsRUFBRSxLQUFLO0NBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIEF2YXRhclVwbG9hZENvbXBvbmVudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF2YXRhclVwbG9hZE1ldGFkYXRhIHtcbiAgLyoqIEN1cnJlbnQgYXZhdGFyIFVSTCAqL1xuICBjdXJyZW50VXJsPzogc3RyaW5nO1xuICAvKiogSW5pdGlhbHMgdG8gc2hvdyB3aGVuIG5vIGF2YXRhciAoZS5nLiwgXCJKRFwiIGZvciBKb2huIERvZSkgKi9cbiAgaW5pdGlhbHM/OiBzdHJpbmc7XG4gIC8qKiBCYWNrZ3JvdW5kIGNvbG9yIGZvciBpbml0aWFscyBhdmF0YXIgKi9cbiAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICAvKiogQXZhdGFyIHNpemUgaW4gcGl4ZWxzIChkZWZhdWx0OiAxMDApICovXG4gIHNpemU/OiBudW1iZXI7XG4gIC8qKiBTaG93IGVkaXQgYnV0dG9uIChkZWZhdWx0OiB0cnVlKSAqL1xuICBlZGl0YWJsZT86IGJvb2xlYW47XG4gIC8qKiBTdG9yYWdlIHBhdGggcHJlZml4IHdpdGhvdXQgdXNlcklkIChkZWZhdWx0OiAnYXZhdGFycycpICovXG4gIHN0b3JhZ2VQYXRoPzogc3RyaW5nO1xuICAvKiogaTE4biBuYW1lc3BhY2UgZm9yIGxhYmVscyAoZGVmYXVsdDogJ0F2YXRhclVwbG9hZCcpICovXG4gIGkxOG5OYW1lc3BhY2U/OiBzdHJpbmc7XG4gIC8qKiBNYXggZmlsZSBzaXplIGluIGJ5dGVzIChkZWZhdWx0OiAxME1CKSAqL1xuICBtYXhGaWxlU2l6ZT86IG51bWJlcjtcbiAgLyoqIFF1YWxpdHkgZm9yIGNvbXByZXNzZWQgaW1hZ2UgMC0xIChkZWZhdWx0OiAwLjgpICovXG4gIGNvbXByZXNzUXVhbGl0eT86IG51bWJlcjtcbiAgLyoqIE1heCB3aWR0aCBmb3IgYXZhdGFyIChkZWZhdWx0OiA4MDApICovXG4gIG1heFdpZHRoPzogbnVtYmVyO1xuICAvKiogVGh1bWJuYWlsIHNpemUgKGRlZmF1bHQ6IDE1MCkgKi9cbiAgdGh1bWJuYWlsU2l6ZT86IG51bWJlcjtcbiAgLyoqIFNob3cgXCJ2ZXIgZm90b1wiIGJ1dHRvbiB0byBvcGVuIHBob3RvIHZpZXdlciBtb2RhbCAoZGVmYXVsdDogZmFsc2UpICovXG4gIHNob3dWaWV3QnV0dG9uPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXN1bHQgZW1pdHRlZCBhZnRlciBzdWNjZXNzZnVsIHVwbG9hZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF2YXRhclVwbG9hZFJlc3VsdCB7XG4gIC8qKiBGdWxsLXNpemUgYXZhdGFyIFVSTCAqL1xuICBhdmF0YXJVcmw6IHN0cmluZztcbiAgLyoqIFRodW1ibmFpbCBVUkwgKi9cbiAgdGh1bWJuYWlsVXJsOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRXJyb3IgdHlwZXMgdGhhdCBjYW4gb2NjdXIgZHVyaW5nIHVwbG9hZFxuICovXG5leHBvcnQgdHlwZSBBdmF0YXJVcGxvYWRFcnJvclR5cGUgPVxuICB8ICdpbnZhbGlkVHlwZSdcbiAgfCAnZmlsZVRvb0xhcmdlJ1xuICB8ICd1cGxvYWRGYWlsZWQnXG4gIHwgJ2JhY2tlbmRGYWlsZWQnXG4gIHwgJ2NhbmNlbGxlZCc7XG5cbi8qKlxuICogRXJyb3Igb2JqZWN0IGVtaXR0ZWQgb24gZmFpbHVyZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF2YXRhclVwbG9hZEVycm9yIHtcbiAgdHlwZTogQXZhdGFyVXBsb2FkRXJyb3JUeXBlO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIG9yaWdpbmFsRXJyb3I/OiB1bmtub3duO1xufVxuXG4vKipcbiAqIERlZmF1bHQgdmFsdWVzXG4gKi9cbmV4cG9ydCBjb25zdCBBVkFUQVJfVVBMT0FEX0RFRkFVTFRTID0ge1xuICBzaXplOiAxMDAsXG4gIGVkaXRhYmxlOiB0cnVlLFxuICBzdG9yYWdlUGF0aDogJ2F2YXRhcnMnLFxuICBpMThuTmFtZXNwYWNlOiAnQXZhdGFyVXBsb2FkJyxcbiAgbWF4RmlsZVNpemU6IDEwICogMTAyNCAqIDEwMjQsIC8vIDEwTUJcbiAgY29tcHJlc3NRdWFsaXR5OiAwLjgsXG4gIG1heFdpZHRoOiA4MDAsXG4gIHRodW1ibmFpbFNpemU6IDE1MCxcbiAgYmFja2dyb3VuZENvbG9yOiAnIzYzNjZmMScsIC8vIEluZGlnb1xuICBzaG93Vmlld0J1dHRvbjogZmFsc2UsXG59O1xuIl19
@@ -2,5 +2,5 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export const VERSION = '2.0.908';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMC45MDgnO1xuIl19
5
+ export const VERSION = '2.0.911';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMC45MTEnO1xuIl19