bpm-core 0.0.90 → 0.0.92

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.
@@ -408,7 +408,7 @@ export class DocsUploaderComponent extends ControlValueAccessorDirective {
408
408
  }
409
409
  }
410
410
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: DocsUploaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
411
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: DocsUploaderComponent, isStandalone: true, selector: "app-file-uploader", inputs: { useCrop: "useCrop", formKey: "formKey", showLabel: "showLabel", downloadLink: "downloadLink", showActions: "showActions", styleHeight: "styleHeight", fileInputHeight: "fileInputHeight", styleWidth: "styleWidth", hints: "hints", allowedExtensions: "allowedExtensions", callApi: "callApi", display: "display", attachType: "attachType", error: "error", displayedFiles: "displayedFiles", getDataFromTemplate: "getDataFromTemplate", allowFileContentsWithMultiAttachments: "allowFileContentsWithMultiAttachments", accept: "accept", signType: "signType", customDownload: "customDownload", showSignButton: "showSignButton", printType: "printType", showPrintButton: "showPrintButton", downloadType: "downloadType", showDownloadButton: "showDownloadButton", preventFileContents: "preventFileContents", maxSize: "maxSize" }, outputs: { selectedTemplateAttachment: "selectedTemplateAttachment", addSignatureClicked: "addSignatureClicked", printActionClicked: "printActionClicked", emitedValue: "emitedValue", downloadActionClicked: "downloadActionClicked" }, providers: [
411
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: DocsUploaderComponent, isStandalone: true, selector: "app-file-uploader", inputs: { useCrop: "useCrop", formKey: "formKey", showLabel: "showLabel", downloadLink: "downloadLink", showActions: "showActions", styleHeight: "styleHeight", fileInputHeight: "fileInputHeight", styleWidth: "styleWidth", hints: "hints", allowedExtensions: "allowedExtensions", callApi: "callApi", display: "display", attachType: "attachType", error: "error", displayedFiles: "displayedFiles", getDataFromTemplate: "getDataFromTemplate", allowFileContentsWithMultiAttachments: "allowFileContentsWithMultiAttachments", accept: "accept", allAttachments: "allAttachments", signType: "signType", customDownload: "customDownload", showSignButton: "showSignButton", printType: "printType", showPrintButton: "showPrintButton", downloadType: "downloadType", showDownloadButton: "showDownloadButton", preventFileContents: "preventFileContents", maxSize: "maxSize" }, outputs: { selectedTemplateAttachment: "selectedTemplateAttachment", addSignatureClicked: "addSignatureClicked", printActionClicked: "printActionClicked", emitedValue: "emitedValue", downloadActionClicked: "downloadActionClicked" }, providers: [
412
412
  {
413
413
  provide: NG_VALUE_ACCESSOR,
414
414
  useExisting: forwardRef(() => DocsUploaderComponent),
@@ -471,6 +471,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
471
471
  type: Input
472
472
  }], accept: [{
473
473
  type: Input
474
+ }], allAttachments: [{
475
+ type: Input
474
476
  }], signType: [{
475
477
  type: Input
476
478
  }], customDownload: [{
@@ -515,4 +517,4 @@ class FileInfo {
515
517
  this.filesize = filesize;
516
518
  }
517
519
  }
518
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jcy11cGxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC9kb2MtdXBsb2FkZXIvZG9jcy11cGxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC9kb2MtdXBsb2FkZXIvZG9jcy11cGxvYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxxREFBcUQsQ0FBQztBQUMxRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQ0wsU0FBUyxFQUNULHNCQUFzQixFQUN0QixVQUFVLEVBRVYsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFFeEMsT0FBTyxFQUFZLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFBQyxRQUFRLEVBQUUsT0FBTyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDbEYsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztB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QXBCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDSSxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNO2dCQUNFLE9BQU87c0JBQWYsS0FBSztnQkFDa0IsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXOztBQTJYeEIsTUFBTSxRQUFRO0lBRUg7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUxULFlBQ1MsUUFBZ0IsRUFDaEIsSUFBWSxFQUNaLFFBQWdCLEVBQ2hCLFlBQW9CLEVBQ3BCLFFBQWdCO1FBSmhCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsaUJBQVksR0FBWixZQUFZLENBQVE7UUFDcEIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtJQUNyQixDQUFDO0NBQ04iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RlbGV0ZURpYWxvZ0NvbXBvbmVudH0gZnJvbSAnLi4vLi4vZGlhbG9ncy9kZWxldGUtZGlhbG9nL2RlbGV0ZS1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHtOb29wU2Nyb2xsU3RyYXRlZ3l9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcclxuICBEZXN0cm95UmVmLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgaW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIEZpbGVTYXZlciBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHtEb2N1bWVudEZpbGV9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQge0Zvcm1Hcm91cCwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0fSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7TWF0RXJyb3IsIE1hdEhpbnR9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XHJcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmV9IGZyb20gJy4uL2NvbnRyb2wtdmFsdWUtYWNjZXNzb3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHtNYXREaWFsb2d9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7TWF0VG9vbHRpcH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXBcIjtcclxuaW1wb3J0IHtGb3JtTGFiZWxDb21wb25lbnR9IGZyb20gJy4uL2Zvcm0tbGFiZWwvZm9ybS1sYWJlbC5jb21wb25lbnQnO1xyXG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5pbXBvcnQge1RyYW5zbGF0ZVBpcGV9IGZyb20gXCIuLi8uLi8uLi8uLi9waXBlcy90cmFuc2xhdGUucGlwZVwiO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWZpbGUtdXBsb2FkZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kb2NzLXVwbG9hZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kb2NzLXVwbG9hZGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTmdDbGFzcyxcclxuICAgIE1hdEVycm9yLFxyXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcclxuICAgIE1hdEhpbnQsXHJcbiAgICBNYXRUb29sdGlwLFxyXG4gICAgRm9ybUxhYmVsQ29tcG9uZW50LFxyXG4gICAgVHJhbnNsYXRlUGlwZVxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEb2NzVXBsb2FkZXJDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRG9jc1VwbG9hZGVyQ29tcG9uZW50PFR5cGU+IGV4dGVuZHMgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmU8VHlwZT4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgbWF4U2l6ZUZsYWcgPSB0cnVlO1xyXG4gIG1heFNpemVWYWx1ZTogYW55O1xyXG4gIHdyb25nRXh0ZW5zaW9uRmxhZyA9IHRydWU7XHJcbiAgQElucHV0KCkgdXNlQ3JvcDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBmb3JtS2V5ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNob3dMYWJlbCA9IHRydWU7XHJcbiAgQElucHV0KCkgZG93bmxvYWRMaW5rID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd0FjdGlvbnMgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHN0eWxlSGVpZ2h0ID0gJyc7IC8vIG1lZGl1bSwgbWluaVxyXG4gIEBJbnB1dCgpIGZpbGVJbnB1dEhlaWdodCA9ICcnOyAvLyBtZWRpdW0sIG1pbmlcclxuICBASW5wdXQoKSBzdHlsZVdpZHRoID0gJzYnO1xyXG4gIEBJbnB1dCgpIGhpbnRzITogYW55O1xyXG4gIEBJbnB1dCgpIGFsbG93ZWRFeHRlbnNpb25zID0gJyc7XHJcbiAgQElucHV0KCkgY2FsbEFwaTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgZGlzcGxheSA9ICcnO1xyXG4gIHZhbGlkRXh0ZW5zaW9uID0gdHJ1ZTtcclxuICBASW5wdXQoKSBhdHRhY2hUeXBlID0gJyc7XHJcbiAgQElucHV0KCkgZXJyb3IhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZGlzcGxheWVkRmlsZXM6IERvY3VtZW50RmlsZVtdID0gW107XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkVGVtcGxhdGVBdHRhY2htZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGZpbGVOb3REdXBsaWNhdGVkID0gdHJ1ZTtcclxuICBhbGxvd2VkRmlsZVNpemUgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGdldERhdGFGcm9tVGVtcGxhdGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBhbGxvd0ZpbGVDb250ZW50c1dpdGhNdWx0aUF0dGFjaG1lbnRzID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYWNjZXB0OiBzdHJpbmdbXTtcclxuICBmaWxlc2l6ZTogc3RyaW5nO1xyXG4gIHdyb25nRmlsZSA9IHtcclxuICAgIG1pbWVUeXBlOiBcIlwiLFxyXG4gICAgZmlsZUNvbnRlbnRzOiBcIlwiLFxyXG4gICAgZmlsZU5hbWU6IHRoaXMuaTE4bi5sYW5ndWFnZSA9PSAnYXInID8gXCLYp9mF2KrYr9in2K8g2KfZhNmF2YTZgSDYrtin2LfZidihXCIgOiBcIldyb25nIEZpbGUgRXh0ZW5zaW9uXCIsXHJcbiAgICBuYW1lOiB0aGlzLmkxOG4ubGFuZ3VhZ2UgPT0gJ2FyJyA/IFwi2KfZhdiq2K/Yp9ivINin2YTZhdmE2YEg2K7Yp9i32YnYoVwiIDogXCJXcm9uZyBGaWxlIEV4dGVuc2lvblwiXHJcbiAgfVxyXG4gIGFsbEF0dGFjaG1lbnRzID0gW107XHJcblxyXG4gIHVwbG9hZEZvcm06IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBzaWduVHlwZSA9ICdTaWduJztcclxuICBASW5wdXQoKSBjdXN0b21Eb3dubG9hZDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzaG93U2lnbkJ1dHRvbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHByaW50VHlwZSA9ICdQcmludCc7XHJcbiAgQElucHV0KCkgc2hvd1ByaW50QnV0dG9uID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZG93bmxvYWRUeXBlID0gJ0Rvd25sb2FkJztcclxuICBASW5wdXQoKSBzaG93RG93bmxvYWRCdXR0b24gPSBmYWxzZTtcclxuICBASW5wdXQoKSBwcmV2ZW50RmlsZUNvbnRlbnRzID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIGFkZFNpZ25hdHVyZUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHByaW50QWN0aW9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZW1pdGVkVmFsdWUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRvd25sb2FkQWN0aW9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBtYXhTaXplID0gJzEwJztcclxuICBAVmlld0NoaWxkKCdpbnB1dEZpbGUnKSBpbnB1dEZpbGU6IEVsZW1lbnRSZWY7XHJcbiAgZGlhbG9nOiBNYXREaWFsb2cgPSBpbmplY3QoTWF0RGlhbG9nKVxyXG4gIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XHJcblxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IHZhbGlkSW1hZ2VUeXBlcyA9IHtcclxuICAgIGpwZzogWydpbWFnZS9qcGVnJywgJ2ltYWdlL3BqcGVnJ10sXHJcbiAgICBKUEc6IFsnaW1hZ2UvanBlZycsICdpbWFnZS9wanBlZyddLFxyXG4gICAganBlZzogWydpbWFnZS9qcGVnJywgJ2ltYWdlL3BqcGVnJ10sXHJcbiAgICBwbmc6IFsnaW1hZ2UvcG5nJ11cclxuICB9XHJcblxyXG4gIHZhbGlkSW1nUGRmVHlwZXMgPSB7XHJcbiAgICBwZGY6IFsnYXBwbGljYXRpb24vcGRmJ10sXHJcbiAgICBqcGc6IFsnaW1hZ2UvanBlZycsICdpbWFnZS9wanBlZyddLFxyXG4gICAgSlBHOiBbJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvcGpwZWcnXSxcclxuICAgIGpwZWc6IFsnaW1hZ2UvanBlZycsICdpbWFnZS9wanBlZyddLFxyXG4gICAgYm1wOiBbJ2ltYWdlL2JtcCcsICdpbWFnZS94LXdpbmRvd3MtYm1wJ10sXHJcbiAgICBwbmc6IFsnaW1hZ2UvcG5nJ11cclxuICB9XHJcblxyXG4gIHZhbGlkRmlsZVR5cGVzID0ge1xyXG4gICAgJ3BkZic6IFsnYXBwbGljYXRpb24vcGRmJ10sXHJcbiAgICAnZG9jJzogWydhcHBsaWNhdGlvbi9tc3dvcmQnXSxcclxuICAgICdkb2N4JzogWydhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCddLFxyXG4gICAgJ3BwdCc6IFsnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQnXSxcclxuICAgICdwcHR4JzogWydhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uJ10sXHJcbiAgICAncHBzJzogWydhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCddLFxyXG4gICAgJ3Bwc3gnOiBbJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZXNob3cnXSxcclxuICAgICdvZHQnOiBbJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dCddLFxyXG4gICAgJ3hscyc6IFsnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJ10sXHJcbiAgICAneGxzeCc6IFsnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnXSxcclxuICAgICd6aXAnOiBbJ2FwcGxpY2F0aW9uL3ppcCcsICdhcHBsaWNhdGlvbi94LXppcC1jb21wcmVzc2VkJywgJ211bHRpcGFydC94LXppcCcsICdhcHBsaWNhdGlvbi96aXAnXSxcclxuICAgICdtc2cnOiBbJ2FwcGxpY2F0aW9uL3ZuZC5tcy1vdXRsb29rJywgJ2FwcGxpY2F0aW9uL21zZyddLFxyXG4gICAgJ2Nzdic6IFsndGV4dC9jc3YnXSxcclxuICAgICd0eHQnOiBbJ3RleHQvcGxhaW4nXSxcclxuICAgICdydGYnOiBbJ2FwcGxpY2F0aW9uL3J0ZicsICdhcHBsaWNhdGlvbi94LXJ0ZicsICd0ZXh0L3JpY2h0ZXh0J10sXHJcbiAgICAnaHRtbCc6IFsndGV4dC9odG1sJ10sXHJcbiAgICAvLyAnbXA0JzogWyd2aWRlby9tcDQnXSxcclxuICAgIC8vICdtNHYnOiBbJ3ZpZGVvL21wNCddLFxyXG4gICAgJ21vdic6IFsndmlkZW8vcXVpY2t0aW1lJ10sXHJcbiAgICAnd212JzogWyd2aWRlby94LW1zLXdtdiddLFxyXG4gICAgLy8gJ2F2aSc6IFsndmlkZW8veC1tc3ZpZGVvJ10sXHJcbiAgICAnbXBnJzogWydtcGcnXSxcclxuICAgICdybXZiJzogWydybXZiJ10sXHJcbiAgICAvLyAnb2d2JzogWyd2aWRlby9vZ2cnXSxcclxuICAgIC8vICczZ3AnOiBbJ3ZpZGVvLzNncHAnLCAnYXVkaW8vM2dwcCddLFxyXG4gICAgLy8gJzNnMic6IFsndmlkZW8vM2dwcDInLCAnYXVkaW8vM2dwcCddLFxyXG4gICAgJ2pwZyc6IFsnaW1hZ2UvanBlZycsICdpbWFnZS9wanBlZyddLFxyXG4gICAgJ2pwZWcnOiBbJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvcGpwZWcnXSxcclxuICAgICdwbmcnOiBbJ2ltYWdlL3BuZyddLFxyXG4gICAgJ2dpZic6IFsnaW1hZ2UvZ2lmJ10sXHJcbiAgICAnYm1wJzogWydpbWFnZS9ibXAnLCAnaW1hZ2UveC13aW5kb3dzLWJtcCddXHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSB2YWxpZFBkZlR5cGVzID0ge1xyXG4gICAgJ3BkZic6IFsnYXBwbGljYXRpb24vcGRmJ10sXHJcbiAgfVxyXG4gIHVwbG9hZGluZzogYm9vbGVhbjtcclxuICBsZW5ndGhFcnJvcjogYm9vbGVhbjtcclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYXR0YWNobWVudHM/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmFsbEF0dGFjaG1lbnRzID0gWy4uLnRoaXMuYXR0YWNobWVudHNdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy5hY3Rpb25TdGF0ZVNlcnZpY2UucmVzZXRBY3Rpb24kXHJcbiAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcclxuICAgIC5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmlzUmVhZE9ubHkgJiYgdGhpcy5jb250cm9sLmVuYWJsZWQpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2wucmVzZXQoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRGaWxlVHlwZShhdHRhY2htZW50OiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFhdHRhY2htZW50LmZpbGVOYW1lPy5pbmNsdWRlcygnLicpICYmIGF0dGFjaG1lbnQubWltZVR5cGUuaW5jbHVkZXMoJy4nKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jaGVja0ZpbGVUeXBlKGF0dGFjaG1lbnQubWltZVR5cGUpO1xyXG4gICAgfSBlbHNlIGlmIChhdHRhY2htZW50LmZpbGVOYW1lKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNoZWNrRmlsZVR5cGUoYXR0YWNobWVudC5maWxlTmFtZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gYXR0YWNobWVudC5taW1lVHlwZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tGaWxlVHlwZShhdHRhY2htZW50RGF0YTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChhdHRhY2htZW50RGF0YS5zcGxpdCgnLicpLnBvcCgpID09ICdtc2cnKSB7XHJcbiAgICAgIHJldHVybiAnZW1haWwtaWNvbidcclxuICAgIH0gZWxzZSBpZiAoYXR0YWNobWVudERhdGEuc3BsaXQoJy4nKS5wb3AoKSA9PSAnanBlZycpIHtcclxuICAgICAgcmV0dXJuICdqcGcnXHJcbiAgICB9IGVsc2UgaWYgKGF0dGFjaG1lbnREYXRhLnNwbGl0KCcuJykucG9wKCkgPT0gJ3hsc3gnIHx8IGF0dGFjaG1lbnREYXRhLnNwbGl0KCcuJykucG9wKCkgPT0gJ3hscycpIHtcclxuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWw7Y2hhcnNldD11dGYtOCc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXR0YWNobWVudERhdGEuc3BsaXQoJy4nKS5wb3AoKTtcclxuICB9XHJcblxyXG4gIGF0dGFjaG1lbnRBY3Rpb24odHlwZTogYW55LCBpbmRleDogbnVtYmVyLCBmaWVsZDogYW55KSB7XHJcbiAgICBpZiAodHlwZSA9PSBcImRvd25sb2FkXCIpIHtcclxuICAgICAgaWYgKHRoaXMuZG93bmxvYWRMaW5rKSB7XHJcbiAgICAgICAgd2luZG93Lm9wZW4oZmllbGQ/LmF0dGFjaG1lbnRJZCwgJ19ibGFuaycsICd0b3A9MCxsZWZ0PTAsaGVpZ2h0PWF1dG8sd2lkdGg9YXV0bycpO1xyXG4gICAgICB9IGVsc2UgaWYgKGZpZWxkPy5hdHRhY2htZW50SWQpIHtcclxuICAgICAgICB0aGlzLmRvd25sb2FkRmlsZSh0eXBlLCBmaWVsZCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZmllbGQ/LmZpbGVDb250ZW50cykge1xyXG4gICAgICAgIHRoaXMuZG93bmxvYWRGaWxlTmV3KGZpZWxkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHR5cGUgPT0gXCJkZWxldGVcIikge1xyXG4gICAgICBpZiAodGhpcy52YWxpZEV4dGVuc2lvbikge1xyXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpcm1EZWxldGUoaW5kZXgpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlQXR0YWNoZWRGaWxlKClcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy52YWxpZEV4dGVuc2lvbiA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbmZpcm1EZWxldGUoaW5kZXg6IG51bWJlcikge1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihEZWxldGVEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgcGFuZWxDbGFzczogWydtYWluLXBvcHVwJywgJ2NvbmZpcm0tZGlhbG9nJ10sXHJcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiBuZXcgTm9vcFNjcm9sbFN0cmF0ZWd5KCksXHJcbiAgICB9KTtcclxuXHJcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJldHVyblZhbHVlKSA9PiB7XHJcbiAgICAgIGlmIChyZXR1cm5WYWx1ZSA9PSAneWVzJykge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlTXVsdGkoaW5kZXgpXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlTXVsdGkoaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5kaXNwbGF5ZWRGaWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgdGhpcy5hbGxBdHRhY2htZW50cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRGaWxlTmV3KGZpbGVEYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IGZpbGVUeXBlID0gdGhpcy5nZXRGaWxlVHlwZShmaWxlRGF0YSk7XHJcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2ZpbGVEYXRhLmZpbGVDb250ZW50c10sIHt0eXBlOiBmaWxlVHlwZX0pO1xyXG4gICAgRmlsZVNhdmVyLnNhdmVBcyhibG9iLCBgJHtmaWxlRGF0YS5maWxlTmFtZX1gKTtcclxuICB9XHJcblxyXG4gIG9uVmFsdWVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQ7XHJcbiAgICB0aGlzLmNvbnRyb2wucmVzZXQoKVxyXG4gICAgaWYgKGlucHV0Py5maWxlcz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmhhbmRsZUZpbGVJbnB1dChpbnB1dCk7XHJcbiAgICAgIHRoaXMucHJvY2Vzc1VwbG9hZGVkRmlsZShpbnB1dCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUZpbGVJbnB1dChpbnB1dDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoaW5wdXQuZmlsZXMgJiYgdGhpcy5mb3JtS2V5ID09PSAnVFNWJykge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVGVtcGxhdGVBdHRhY2htZW50LmVtaXQoaW5wdXQuZmlsZXNbMF0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBpbnB1dC5maWxlc1swXTtcclxuICAgIGxldCBmaWxlVHlwZSA9IGZpbGUubmFtZT8uZW5kc1dpdGgoXCIubXNnXCIpID8gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1vdXRsb29rJyA6IGZpbGUudHlwZTtcclxuXHJcbiAgICBpZiAodGhpcy5hY2NlcHQ/Lmxlbmd0aCAmJiAhdGhpcy5hY2NlcHQuaW5jbHVkZXMoZmlsZVR5cGUpKSB7XHJcbiAgICAgIGFsZXJ0KHRoaXMuaTE4bi50cmFuc2xhdGUoJ3RoaXNJc0ludmFsaWRGaWxlJykpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51cGxvYWRGb3JtPy5nZXQoJ2ZpbGUnKT8uc2V0VmFsdWUoZmlsZSk7XHJcbiAgICB0aGlzLnVwbG9hZEZvcm0/LmdldCgnbmFtZScpPy5zZXRWYWx1ZShmaWxlPy5uYW1lKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvY2Vzc1VwbG9hZGVkRmlsZShpbnB1dDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMudXBsb2FkaW5nKSB7XHJcbiAgICAgIGNvbnN0IGZpbGVEYXRhID0gbmV3IEZpbGVJbmZvKFxyXG4gICAgICAgIGlucHV0LmZpbGVzWzBdLm5hbWUsXHJcbiAgICAgICAgaW5wdXQuZmlsZXNbMF0ubmFtZSxcclxuICAgICAgICBpbnB1dC5maWxlc1swXS50eXBlLFxyXG4gICAgICAgICcnLFxyXG4gICAgICAgIHRoaXMuZmlsZXNpemVcclxuICAgICAgKTtcclxuICAgICAgdGhpcy51cGRhdGVGaWxlUHJvcGVydGllcyhpbnB1dCwgZmlsZURhdGEpO1xyXG4gICAgICBpZiAoIXRoaXMubGVuZ3RoRXJyb3IgJiYgK3RoaXMuZmlsZXNpemUgPCArdGhpcy5tYXhTaXplKSB7XHJcbiAgICAgICAgdGhpcy5hbGxvd2VkRmlsZVNpemUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudXBsb2FkVmFsaWRBbmROb25EdXBsaWNhdGVGaWxlKGlucHV0LCBmaWxlRGF0YSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hbGxvd2VkRmlsZVNpemUgPSBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaW5wdXQudmFsdWUgPSAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRmlsZVByb3BlcnRpZXMoaW5wdXQ6IGFueSwgZmlsZUluZm86IEZpbGVJbmZvKTogdm9pZCB7XHJcbiAgICB0aGlzLm1heFNpemVWYWx1ZSA9IHRoaXMubWF4U2l6ZSA/IHRoaXMubWF4U2l6ZSA6IDE7XHJcbiAgICB0aGlzLmZpbGVzaXplID0gKChpbnB1dC5maWxlc1swXS5zaXplIC8gMTAyNCkgLyAxMDI0KS50b0ZpeGVkKDQpO1xyXG4gICAgdGhpcy5tYXhTaXplRmxhZyA9ICt0aGlzLmZpbGVzaXplIDwgK3RoaXMubWF4U2l6ZTtcclxuICAgIHRoaXMubGVuZ3RoRXJyb3IgPSB0aGlzLmRpc3BsYXllZEZpbGVzPy5sZW5ndGggPj0gK3RoaXMubWF4TGVuZ3RoO1xyXG4gICAgdGhpcy53cm9uZ0V4dGVuc2lvbkZsYWcgPSB0aGlzLmlzVmFsaWRNaW1lVHlwZShpbnB1dC5maWxlc1swXS50eXBlKTtcclxuICAgIHRoaXMudmFsaWRFeHRlbnNpb24gPSB0aGlzLmlzVmFsaWRFeHRlbnNpb24oaW5wdXQuZmlsZXNbMF0ubmFtZS5zcGxpdCgnLicpLnBvcCgpLCB0aGlzLnR5cGUpO1xyXG4gICAgdGhpcy52YWx1ZSA9IGZpbGVJbmZvO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGxvYWRWYWxpZEFuZE5vbkR1cGxpY2F0ZUZpbGUoaW5wdXQ6IGFueSwgZmlsZURhdGE6IEZpbGVJbmZvKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy52YWxpZEV4dGVuc2lvbikge1xyXG4gICAgICBpZiAodGhpcy5nZXREYXRhRnJvbVRlbXBsYXRlKSB0aGlzLnNlbGVjdGVkVGVtcGxhdGVBdHRhY2htZW50LmVtaXQoaW5wdXQpO1xyXG4gICAgICB0aGlzLnJlYWRGaWxlQW5kVXBsb2FkKGlucHV0LmZpbGVzWzBdLCBmaWxlRGF0YSk7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMuZW1pdEVtcHR5RmlsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkRmlsZUFuZFVwbG9hZChmaWxlOiBGaWxlLCBmaWxlSW5mbzogRmlsZUluZm8pOiB2b2lkIHtcclxuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICBjb25zdCBmaWxlQ29udGVudHMgPSAocmVhZGVyLnJlc3VsdCBhcyBzdHJpbmcpLnNwbGl0KCcsJylbMV07XHJcbiAgICAgIGZpbGVJbmZvLmZpbGVDb250ZW50cyA9IGZpbGVDb250ZW50cztcclxuICAgICAgZmlsZUluZm8uZmlsZXNpemUgPSB0aGlzLmZpbGVzaXplO1xyXG4gICAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgICB0aGlzLnVwbG9hZFNpbmdsZUZpbGUoZmlsZUNvbnRlbnRzLCBmaWxlSW5mbyk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0ZpbGVOb3REdXBsaWNhdGUoZmlsZUluZm8pKSB7XHJcbiAgICAgICAgdGhpcy5hZGRNdWx0aUF0dGFjaG1lbnRzKGZpbGVJbmZvKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGxvYWRTaW5nbGVGaWxlKGZpbGVDb250ZW50czogc3RyaW5nLCBmaWxlSW5mbzogRmlsZUluZm8pOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsZU5vdER1cGxpY2F0ZWQgPSB0aGlzLmlzRmlsZU5vdER1cGxpY2F0ZShmaWxlSW5mbyk7XHJcbiAgICBpZiAoIXRoaXMuZmlsZU5vdER1cGxpY2F0ZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy52YWx1ZS5maWxlQ29udGVudHMgPSBmaWxlQ29udGVudHM7XHJcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodGhpcy52YWx1ZSlcclxuICAgIHRoaXMuZW1pdGVkVmFsdWUuZW1pdCh0aGlzLnZhbHVlKVxyXG4gICAgaWYgKHRoaXMuY2FsbEFwaSkge1xyXG4gICAgICB0aGlzLmFkZEF0dGFjaG1lbnRzKClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZUF0dGFjaG1lbnQuZW1pdCh0aGlzLnZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdEVtcHR5RmlsZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVtcHR5T2JqID0ge1xyXG4gICAgICBtaW1lVHlwZTogXCJcIixcclxuICAgICAgZmlsZUNvbnRlbnRzOiBcIlwiLFxyXG4gICAgICBmaWxlTmFtZTogXCJcIixcclxuICAgIH1cclxuICAgIHRoaXMuZW1pdChlbXB0eU9iailcclxuICAgIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZUF0dGFjaG1lbnQuZW1pdChudWxsKTtcclxuICB9XHJcblxyXG4gIHByb2Nlc3NBdHRhY2htZW50cyhmaWVsZDogYW55LCBhbGxvd011bHRpQXR0YWNobWVudHM6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIFwiZmlsZURlc2NyaXB0aW9uXCI6IFwiXCIsXHJcbiAgICAgIFwiYXR0YWNobWVudGNvbW1lbnRcIjogXCJcIixcclxuICAgICAgXCJmaWxlTmFtZVwiOiBmaWVsZC5maWxlTmFtZSxcclxuICAgICAgXCJtaW1lVHlwZVwiOiBmaWVsZC5taW1lVHlwZSxcclxuICAgICAgXCJmaWxlQ29udGVudHNcIjogZmllbGQuZmlsZUNvbnRlbnRzLFxyXG4gICAgfVxyXG4gICAgdGhpcy51cGxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5jb3JlU2VydmljZS5nZXRBdHRhY2htZW50cyhkYXRhKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxyXG4gICAgKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoZm9ybTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3T2JqID0ge1xyXG4gICAgICAgICAgXCJmaWxlTmFtZVwiOiBmaWVsZC5maWxlTmFtZSxcclxuICAgICAgICAgIFwiYXR0YWNobWVudElkXCI6IGZvcm0uYXR0YWNobWVudC5hdHRhY2htZW50SWQsXHJcbiAgICAgICAgICBcIm1pbWVUeXBlXCI6IGZvcm0uYXR0YWNobWVudC5taW1lVHlwZSxcclxuICAgICAgICAgIFwiZmlsZUNvbnRlbnRzXCI6IGZpZWxkLmZpbGVDb250ZW50c1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYWxsb3dNdWx0aUF0dGFjaG1lbnRzKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5hbGxvd0ZpbGVDb250ZW50c1dpdGhNdWx0aUF0dGFjaG1lbnRzKSBuZXdPYmpbJ2ZpbGVDb250ZW50cyddID0gZmllbGQuZmlsZUNvbnRlbnRzO1xyXG4gICAgICAgICAgdGhpcy5kaXNwbGF5ZWRGaWxlcyA9IHRoaXMuZGlzcGxheWVkRmlsZXM/Lmxlbmd0aCA/IHRoaXMuZGlzcGxheWVkRmlsZXMgOiBbXVxyXG4gICAgICAgICAgdGhpcy5kaXNwbGF5ZWRGaWxlcy5wdXNoKG5ld09iaik7XHJcbiAgICAgICAgICB0aGlzLmFsbEF0dGFjaG1lbnRzLnB1c2gobmV3T2JqKTtcclxuICAgICAgICAgIHRoaXMuZW1pdCh0aGlzLmRpc3BsYXllZEZpbGVzKTtcclxuICAgICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSh0aGlzLmRpc3BsYXllZEZpbGVzKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUobmV3T2JqKVxyXG4gICAgICAgICAgdGhpcy5lbWl0ZWRWYWx1ZS5lbWl0KG5ld09iailcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51cGxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGVycj8uZXJyb3I/Lm1ldGE/Lm1lc3NhZ2VzPy5mb3JFYWNoKChtc2cpID0+IHtcclxuICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IobXNnLm1lc3NhZ2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFkZEF0dGFjaG1lbnRzKCkge1xyXG4gICAgdGhpcy5wcm9jZXNzQXR0YWNobWVudHModGhpcy5jb250cm9sLnZhbHVlLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBhZGRNdWx0aUF0dGFjaG1lbnRzKGZpZWxkOiBhbnkpIHtcclxuICAgIHRoaXMucHJvY2Vzc0F0dGFjaG1lbnRzKGZpZWxkLCB0cnVlKTtcclxuICB9XHJcblxyXG5cclxuICBpc0ZpbGVOb3REdXBsaWNhdGUoZmlsZTogRmlsZUluZm8pOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmFsbEF0dGFjaG1lbnRzPy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYWxsQXR0YWNobWVudHM/LmZpbmRJbmRleCgoJGZpbGUpID0+IChmaWxlLmZpbGVOYW1lID09PSAkZmlsZS5maWxlTmFtZSkpID09PSAtMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGlzVmFsaWRNaW1lVHlwZSh2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5hdHRhY2hUeXBlID09ICdwZGYnKSB7XHJcbiAgICAgIHJldHVybiAoW10gYXMgc3RyaW5nW10pLmNvbmNhdCguLi5PYmplY3QudmFsdWVzKHRoaXMudmFsaWRQZGZUeXBlcykpLmluY2x1ZGVzKHZhbHVlKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5hdHRhY2hUeXBlID09ICdpbWFnZScpIHtcclxuICAgICAgcmV0dXJuIChbXSBhcyBzdHJpbmdbXSkuY29uY2F0KC4uLk9iamVjdC52YWx1ZXModGhpcy52YWxpZEltYWdlVHlwZXMpKS5pbmNsdWRlcyh2YWx1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNWYWxpZEV4dGVuc2lvbih2YWx1ZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpIHtcclxuICAgIGlmICh0eXBlID09ICdpbWFnZScpIHtcclxuICAgICAgcmV0dXJuIFtdLmNvbmNhdCguLi5PYmplY3Qua2V5cyh0aGlzLnZhbGlkSW1hZ2VUeXBlcykpLmluY2x1ZGVzKHZhbHVlLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09IFwiaW1hZ2VQZGZcIikge1xyXG4gICAgICByZXR1cm4gW10uY29uY2F0KC4uLk9iamVjdC5rZXlzKHRoaXMudmFsaWRJbWdQZGZUeXBlcykpLmluY2x1ZGVzKHZhbHVlLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSBcInBkZlwiKSB7XHJcbiAgICAgIHJldHVybiBbXS5jb25jYXQoLi4uT2JqZWN0LmtleXModGhpcy52YWxpZFBkZlR5cGVzKSkuaW5jbHVkZXModmFsdWUudG9Mb3dlckNhc2UoKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gW10uY29uY2F0KC4uLk9iamVjdC5rZXlzKHRoaXMudmFsaWRGaWxlVHlwZXMpKS5pbmNsdWRlcyh2YWx1ZS50b0xvd2VyQ2FzZSgpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUF0dGFjaGVkRmlsZSgpIHtcclxuICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShuZXcgRmlsZUluZm8obnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCkpXHJcbiAgICBpZiAodGhpcy5pbnB1dEZpbGUpIHtcclxuICAgICAgdGhpcy5pbnB1dEZpbGUubmF0aXZlRWxlbWVudC52YWx1ZSA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLmVtaXQodGhpcy52YWx1ZSlcclxuICAgIHRoaXMuY29udHJvbC5yZXNldCgpXHJcbiAgICB0aGlzLnNlbGVjdGVkVGVtcGxhdGVBdHRhY2htZW50LmVtaXQobnVsbCk7XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZEZpbGUoZXZlbnQsIGZpZWxkKSB7XHJcbiAgICBpZiAodGhpcy5jdXN0b21Eb3dubG9hZCkge1xyXG4gICAgICB0aGlzLmRvd25sb2FkQWN0aW9uQ2xpY2tlZC5lbWl0KGZpZWxkKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb3JlU2VydmljZS5sb2FkRmlsZShmaWVsZC5hdHRhY2htZW50SWQpLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcclxuICAgICAgKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlc3BvbnNlT2JqZWN0OiB7IGJvZHk6IGFueTsgfSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZmlsZUluZm9ybWF0aW9uID0gcmVzcG9uc2VPYmplY3QuYm9keTtcclxuICAgICAgICAgIHRoaXMuY29yZVNlcnZpY2Uuc2F2ZUZpbGUoZmlsZUluZm9ybWF0aW9uKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihlcnJvci5lcnJvcj8uWydtZXNzYWdlJ10pXHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdDxUPih2YWx1ZTogVCB8IFRbXSkge1xyXG4gICAgaWYgKHRoaXMucHJldmVudEZpbGVDb250ZW50cykge1xyXG4gICAgICB2YWx1ZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcclxuICAgICAgdGhpcy5kZWxldGVGaWxlQ29udGVudHModmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZWxldGVGaWxlQ29udGVudHMoZGF0YTogYW55KSB7XHJcbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmICdmaWxlQ29udGVudHMnIGluIGRhdGEpIHtcclxuICAgICAgZGVsZXRlIGRhdGEuZmlsZUNvbnRlbnRzO1xyXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XHJcbiAgICAgIGRhdGEuZm9yRWFjaChlbGVtID0+IHRoaXMuZGVsZXRlRmlsZUNvbnRlbnRzKGVsZW0pKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmNsYXNzIEZpbGVJbmZvIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBmaWxlTmFtZTogc3RyaW5nLFxyXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyxcclxuICAgIHB1YmxpYyBtaW1lVHlwZTogc3RyaW5nLFxyXG4gICAgcHVibGljIGZpbGVDb250ZW50czogc3RyaW5nLFxyXG4gICAgcHVibGljIGZpbGVzaXplOiBzdHJpbmdcclxuICApIHsgfVxyXG59XHJcbiIsIkBpZiAoIWlzUmVhZE9ubHkpIHtcclxuICA8bmctY29udGFpbmVyPlxyXG4gICAgQGlmKGxhYmVsKSB7XHJcbiAgICAgIDxhcHAtZm9ybS1sYWJlbCBbbGFiZWxdPVwibGFiZWxcIiBbb3B0aW9uYWxdPVwiIWNvbnRyb2w/Lmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzWydyZXF1aXJlZCddKVwiIFt0b29sdGlwXT1cInRvb2x0aXBcIj48L2FwcC1mb3JtLWxhYmVsPlxyXG4gICAgfVxyXG4gICAgPHNlY3Rpb25cclxuICAgIChjbGljayk9XCJmaWxlQXR0YWNoZWQuY2xpY2soKVwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cImluc2lkZVRhYmxlID8gJ2ZpbGUtdXBsb2FkZXItdGFibGUnIDogJ2ZpbGUtdXBsb2FkZXInXCIgY2xhc3M9XCIgbWItMlwiXHJcbiAgICAgIFtjbGFzcy5pbnNpZGVUYWJsZVN0eWxlXT1cImluc2lkZVRhYmxlXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBbbmdDbGFzc109XCJpbnNpZGVUYWJsZSA/ICdmaWxlLXVwbG9hZGVyLXRhYmxlLWRldicgOiAnJ1wiIGNsYXNzPVwiZmlsZS11cGxvYWRlci1pbnB1dFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIEBpZiAoIXVwbG9hZGluZykge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImljb24gbWItMVwiPlxyXG4gICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaW5zaWRlVGFibGUgPyAnZmlsZS11cGxvYWRlci10YWJsZS1zdmcnIDogJydcIiB3aWR0aD1cIjQxXCIgaGVpZ2h0PVwiMzhcIiB2aWV3Qm94PVwiMCAwIDQxIDM4XCJcclxuICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgZD1cIk0wIDIyLjE5NDdWMjAuNjczNkMwLjA5NzEzMDMgMjAuMTAxOSAwLjA3MDA5NCAxOS41MTQxIDAuMjc2MzcxIDE4Ljk1MzNDMS4yODM3MiAxNi4yMDg2IDMuMjEyMzEgMTQuNTAyMyA2LjA0MjEgMTMuODA5NEM2LjcwNDk5IDEzLjY0NzIgNi42ODQ5NyAxMy42NjMyIDYuNjk4OTkgMTIuOTg0M0M2LjczMjAzIDExLjMzMjEgNi45OTgzOSA5LjcxOTkyIDcuNjI0MjMgOC4xNzk4NkM4Ljg2Mjg5IDUuMTM2NzggMTAuOTQ2NyAyLjgzOTY5IDEzLjg4MTYgMS4zOTE3NUMxNy4xNjggLTAuMjMwNDI0IDIwLjU5NTYgLTAuNDUwNzE5IDI0LjA1NTMgMC44MTU5OEMyNy40OTI5IDIuMDc0NjcgMjkuOTYyMiA0LjQxNTgxIDMxLjQ4MDIgNy43NDgyOEMzMS43Nzg2IDguNDAzMTYgMzIuMDI3IDkuMDgzMDcgMzIuMTcxMiA5Ljc5MjAyQzMyLjI0MDIgMTAuMTMxNSAzMi40MDM1IDEwLjI1NjYgMzIuNzUyOSAxMC4zMTA3QzM2LjcwMTIgMTAuOTE2NSAzOS4zMzU4IDEzLjEyNTUgNDAuNjk0NiAxNi44NzM1QzQwLjkwNjkgMTcuNDYwMyA0MC45MTk5IDE4LjA3MzEgNDAuOTU5OSAxOC42ODI5QzQwLjk2NDkgMTguNzYwMSA0MC45Mzg5IDE4Ljg0NDIgNDEgMTguOTExM1YyMC41MTI0QzQwLjkxMDkgMjAuOTk1IDQwLjk2OSAyMS40OTM3IDQwLjg2MDggMjEuOTczNEM0MC41MjQ0IDIzLjQ2MTQgMzkuODQ1NCAyNC43ODIxIDM4Ljg1MDEgMjUuOTI5N0MzNy40NTIyIDI3LjU0MTggMzUuNzA1OSAyOC41ODgyIDMzLjYxNjEgMjkuMDUxOUMzMi43OTEgMjkuMjM1MSAzMS45NDk5IDI5LjI1MjEgMzEuMTExNyAyOS4yOTIyQzMwLjY1NzEgMjkuMzE0MiAzMC41ODQgMjkuMTkzIDMwLjU5MiAyOC43NDg0QzMwLjY0NTEgMjUuODQ0NiAyOS44MDIgMjMuMjU3MSAyNy44NjI0IDIxLjA1OTFDMjUuOTk3OSAxOC45NDYzIDIzLjY1OTcgMTcuNzE2NyAyMC44NjcgMTcuNDAxMkMxOC44NTUzIDE3LjE3MzkgMTYuOTA1NyAxNy40NTkzIDE1LjA2MTIgMTguMzM5NUMxMS44MzE5IDE5Ljg4MTYgOS44MTQxNiAyMi40MDY5IDguOTYxMDIgMjUuODY5NkM4Ljc0MjczIDI2Ljc1MzggOC42ODI2NSAyNy42NTggOC43MDU2OCAyOC41NzAyQzguNzIxNyAyOS4yMTExIDguNjAyNTQgMjkuMzEyMiA3Ljk1OTY4IDI5LjI5NzJDNS45NTA5OCAyOS4yNTExIDQuMTA1NTEgMjguNzIzNCAyLjU4MTQ2IDI3LjM1OTZDMS4wNzY0NCAyNi4wMTY4IDAuMDY4MDkxMyAyNC4zOTk2IDAuMDQwMDUzNyAyMi4zMDI4QzAuMDQwMDUzNyAyMi4yNjA3IDAuMDI1MDMzNiAyMi4yMjU3IDAgMjIuMTkzN1YyMi4xOTQ3WlwiXHJcbiAgICAgICAgICAgICAgICBmaWxsPVwiI0RFRTBFMlwiLz5cclxuICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgZD1cIk0yOS4wMzAzIDI4LjI2MzJDMjkuMDYwNCAzMy40MDMxIDI0Ljg2NTcgMzcuNjE4NyAxOS42ODM4IDM3LjY1NDhDMTQuNTE2OSAzNy42OTA4IDEwLjI4NTIgMzMuNDk1MiAxMC4yNTIxIDI4LjMwNDJDMTAuMjIwMSAyMy4xNDAzIDE0LjQyOTcgMTguOTEyNiAxOS42MjI3IDE4Ljg5NDZDMjQuODAzNyAxOC44NzY2IDI4Ljk5OTMgMjMuMDU0MiAyOS4wMzAzIDI4LjI2MzJaXCJcclxuICAgICAgICAgICAgICAgIGZpbGw9XCIjOEU5QUEwXCIvPlxyXG4gICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICBkPVwiTTIwLjU1NzMgMjUuMjY0NEMyMC40NjIyIDI1LjQ0NzcgMjAuNTAxMiAyNS41OTM5IDIwLjUwMTIgMjUuNzM0QzIwLjQ5ODIgMjguMjE1NCAyMC41MDAyIDMwLjY5NTcgMjAuNDk4MiAzMy4xNzdDMjAuNDk4MiAzMy44MDk5IDIwLjIzMzkgMzQuMTcwNCAxOS43NDYyIDM0LjIyMzRDMTkuMjY0NSAzNC4yNzY1IDE4Ljg4IDMzLjk4MzEgMTguODE2OSAzMy41MDI1QzE4Ljc5NTkgMzMuMzQ0MyAxOC43OTY5IDMzLjE4MyAxOC43OTY5IDMzLjAyMzhDMTguNzk1OSAzMC41ODI2IDE4Ljc5NjkgMjguMTQyMyAxOC43OTY5IDI1LjcwMUMxOC43OTY5IDI1LjU3MjggMTguNzk2OSAyNS40NDQ3IDE4Ljc5NjkgMjUuMjAwM0MxOC4xOTcxIDI1LjgwMzEgMTcuNjc3NCAyNi4zMjg4IDE3LjE1MjcgMjYuODUwNUMxNy4wMTE1IDI2Ljk5MDcgMTYuODY4MyAyNy4xMzQ5IDE2LjcwNjEgMjcuMjQ3MUMxNi4zNTY2IDI3LjQ4NjQgMTUuOTM0MSAyNy40NDEzIDE1LjY0NTcgMjcuMTU0QzE1LjM2NDMgMjYuODc0NiAxNS4zMjAzIDI2LjQ0MiAxNS41NDg2IDI2LjA5MjVDMTUuNjIwNyAyNS45ODI0IDE1LjcxMjggMjUuODgzMiAxNS44MDY5IDI1Ljc4OTFDMTYuODYxMyAyNC43MzA3IDE3LjkxNjcgMjMuNjczMyAxOC45NzMyIDIyLjYxNzlDMTkuNDAxNyAyMi4xODkzIDE5Ljg3ODQgMjIuMTc2MyAyMC4zMDM5IDIyLjU5ODhDMjEuMzkxNCAyMy42ODAzIDIyLjQ3MzkgMjQuNzY2NyAyMy41NTMzIDI1Ljg1NzJDMjMuOTgwOSAyNi4yODk4IDI0LjAxMjkgMjYuODA2NSAyMy42NTM0IDI3LjE2N0MyMy4yOTkgMjcuNTIxNCAyMi43NzUzIDI3LjQ4NDQgMjIuMzQzNyAyNy4wNTY4QzIxLjc0OTkgMjYuNDcgMjEuMTY2MSAyNS44NzMyIDIwLjU2MDMgMjUuMjY0NEgyMC41NTczWlwiXHJcbiAgICAgICAgICAgICAgICBmaWxsPVwiI0Y5RjlGOVwiLz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmICh1cGxvYWRpbmcpIHtcclxuICAgICAgICAgIDxkcy1pY29uIGNsYXNzPVwic2ZpIHNmaS1zcGlubmVyIGQtaW5saW5lLWJsb2NrIHNwaW4gZmMtY29yYWwgZnMtMzAtaW1wXCI+PC9kcy1pY29uPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImYtMTQgZmMtYmxhY2sgZnctbm9ybWFsXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZjLWNvcmFsIGZ3LW1lZGl1bVwiPnt7ICdicm93c2UnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcy0xMCBmYy1kYXJrLWdyYXlcIj5cclxuICAgICAgICAgIHt7IGFsbG93ZWRFeHRlbnNpb25zID8gYWxsb3dlZEV4dGVuc2lvbnMgOiAnJyB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiAjaW5wdXRGaWxlIFthY2NlcHRdPVwiYWNjZXB0XCIgY2xhc3M9XCJkLW5vbmVcIiAjZmlsZUF0dGFjaGVkIChjaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9zZWN0aW9uPlxyXG5cclxuICAgIEBpZiAoaGludHMpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTMgbWItM1wiPlxyXG4gICAgICAgIEBmb3IgKGhpbnQgb2YgaGludHM7IHRyYWNrIGhpbnQpIHtcclxuICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xIGZzLTEyXCI+XHJcbiAgICAgICAgICAgICAgPGRzLWljb25cclxuICAgICAgICAgICAgICAgIGljb249XCJ7eyBoaW50LnZhbGlkID8gJ2NoZWNrLWNpcmNsZS1mJyA6ICdjaGVjay1jaXJjbGUtbycgfX1cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmcy0yNCB7eyBoaW50LnZhbGlkID8gJ2ZjLWdyZWVuJyA6ICdmYy1kYXJrLWdyYXknIH19XCI+PC9kcy1pY29uPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwie3sgaGludC52YWxpZCA/ICdmYy1ibGFjaycgOiAnZmMtZGFyay1ncmF5JyB9fVwiPnt7IGhpbnQubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuXHJcbiAgICBAaWYgKGhpbnQpIHtcclxuICAgICAgPG1hdC1oaW50IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiPlxyXG4gICAgICAgIDxkcy1pY29uIGljb249XCJpbmZvXCIgY2xhc3M9XCJmcy0xNyBmYy1kYXJrLWdyYXlcIj48L2RzLWljb24+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xMiBmYy1ibGFjayBsaW5lLWhlaWdodC0xXCI+e3sgaGludCB9fTwvc3Bhbj5cclxuICAgICAgPC9tYXQtaGludD5cclxuICAgIH1cclxuXHJcbiAgICBAaWYgKG11bHRpcGxlKSB7XHJcbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwiZmlsZXMtbGlzdFwiPlxyXG4gICAgICAgIEBmb3IgKGZpbGUgb2YgZGlzcGxheWVkRmlsZXM7IHRyYWNrIGZpbGU7IGxldCBpID0gJGluZGV4KSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1pdGVtLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8ZHMtYXR0YWNobWVudHNcclxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJmaWxlPy5maWxlTmFtZVwiXHJcbiAgICAgICAgICAgICAgW2ZpbGVdPVwieyBuYW1lOiBmaWxlLmZpbGVOYW1lIH1cIlxyXG4gICAgICAgICAgICAgIChkb3dubG9hZEV2ZW50KT1cImF0dGFjaG1lbnRBY3Rpb24oJ2Rvd25sb2FkJywgaSwgZmlsZSlcIlxyXG4gICAgICAgICAgICAgIChkZWxldGVFdmVudCk9XCJhdHRhY2htZW50QWN0aW9uKCdkZWxldGUnLCBpLCBmaWxlKVwiXHJcbiAgICAgICAgICAgICAgW3Nob3dBY3Rpb25zXT1cInNob3dBY3Rpb25zXCI+XHJcbiAgICAgICAgICAgIDwvZHMtYXR0YWNobWVudHM+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvc2VjdGlvbj5cclxuICAgIH1cclxuXHJcbiAgICBAaWYgKCFtdWx0aXBsZSAmJiAoY29udHJvbD8udmFsdWU/LmZpbGVDb250ZW50cyB8fCBjb250cm9sPy52YWx1ZT8uYXR0YWNobWVudElkKSkge1xyXG4gICAgICA8c2VjdGlvbiBjbGFzcz1cImZpbGVzLWxpc3RcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1pdGVtLWNvbnRhaW5lciBmaWxlLWl0ZW0tY29udGFpbmVyLWFjdGlvbnNcIj5cclxuICAgICAgICAgIDxkcy1hdHRhY2htZW50c1xyXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJjb250cm9sPy52YWx1ZT8uZmlsZU5hbWVcIlxyXG4gICAgICAgICAgICBbZmlsZV09XCJ7IG5hbWU6IGNvbnRyb2w/LnZhbHVlLmZpbGVOYW1lIH1cIlxyXG4gICAgICAgICAgICAoZG93bmxvYWRFdmVudCk9XCJhdHRhY2htZW50QWN0aW9uKCdkb3dubG9hZCcsIG51bGwsIGNvbnRyb2w/LnZhbHVlKVwiXHJcbiAgICAgICAgICAgIChkZWxldGVFdmVudCk9XCJhdHRhY2htZW50QWN0aW9uKCdkZWxldGUnLCBudWxsLCBjb250cm9sPy52YWx1ZSlcIlxyXG4gICAgICAgICAgICBbc2hvd0FjdGlvbnNdPVwic2hvd0FjdGlvbnNcIj5cclxuICAgICAgICAgIDwvZHMtYXR0YWNobWVudHM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvc2VjdGlvbj5cclxuICAgIH1cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYXR0YWNobWVudHMtZXJyb3JcIj5cclxuICAgICAgQGlmICghdmFsaWRFeHRlbnNpb24pIHtcclxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImZpbGVzLWxpc3QgbXQtMlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtaXRlbS1jb250YWluZXIgXCI+XHJcbiAgICAgICAgICAgIDxkcy1hdHRhY2htZW50c1xyXG4gICAgICAgICAgICAgIFtmaWxlXT1cIndyb25nRmlsZVwiIGVycm9yIFtzaG93QWN0aW9uc109XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICA8L2RzLWF0dGFjaG1lbnRzPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICB9XHJcblxyXG4gICAgICBAaWYgKCFhbGxvd2VkRmlsZVNpemUpIHtcclxuICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwiZnMtMTIgbXktMlwiPlxyXG4gICAgICAgICAge3sgbWF4U2l6ZSA9PT0gXCIwLjNcIiA/ICgnc3VwcG9ydDMnIHwgdHJhbnNsYXRlICk6ICgnc3VwcG9ydDInIHwgdHJhbnNsYXRlKSArIG1heFNpemUgKyAoJ21iJyB8IHRyYW5zbGF0ZSkgfX1cclxuICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgfVxyXG5cclxuICAgICAgQGlmICghZmlsZU5vdER1cGxpY2F0ZWQpIHtcclxuICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwiZnMtMTIgbXktMlwiPnt7ICdkdXBsaWNhdGVkLWVycm9yJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWVycm9yPlxyXG4gICAgICB9XHJcblxyXG4gICAgICBAaWYgKGxlbmd0aEVycm9yKSB7XHJcbiAgICAgICAgPG1hdC1lcnJvciBjbGFzcz1cImZzLTEyXCI+e3sgJ2xlbmd0aEVycm9yJyB8IHRyYW5zbGF0ZSB9fSA6e3sgbWF4TGVuZ3RoIH19PC9tYXQtZXJyb3I+XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBpZiAoc2hvd0Vycm9yTWVzc2FnZSkge1xyXG4gICAgICAgIDwhLS0gPG1hdC1lcnJvciBjbGFzcz1cImZzLTEyXCI+e3tlcnJvck1lc3NhZ2V9fSA8L21hdC1lcnJvcj4gLS0+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG59XHJcblxyXG5AaWYgKGlzUmVhZE9ubHkpIHtcclxuICA8bmctY29udGFpbmVyPlxyXG4gICAgQGlmIChtdWx0aXBsZSAmJiBkaXNwbGF5ZWRGaWxlcykge1xyXG4gICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIj5cclxuICAgICAgICAgIEBpZiAobGFiZWwpIHtcclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYW1lXCI+e3sgbGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKGRpc3BsYXllZEZpbGVzPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgQGZvciAoZmlsZSBvZiBkaXNwbGF5ZWRGaWxlczsgdHJhY2sgZmlsZTsgbGV0IGkgPSAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWl0ZW0tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkcy1hdHRhY2htZW50c1xyXG4gICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImZpbGU/LmZpbGVOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm15LTJcIiBbZmlsZV09XCJ7IG5hbWU6IGZpbGUuZmlsZU5hbWUgfVwiIHJlYWRPbmx5IChkb3dubG9hZEV2ZW50KT1cImRvd25sb2FkRmlsZSgkZXZlbnQsIGZpbGUpXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2hvd0FjdGlvbnNdPVwic2hvd0FjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgPC9kcy1hdHRhY2htZW50cz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmICghZGlzcGxheWVkRmlsZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpc2NcIj5cclxuICAgICAgICAgICAgICB7eyAnTm9BdHRhY2htZW50cycgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIH1cclxuXHJcbiAgICBAaWYgKCFtdWx0aXBsZSAmJiAoY29udHJvbD8udmFsdWU/LlsnYXR0YWNobWVudElkJ10gfHwgY29udHJvbD8udmFsdWU/LlsnZmlsZUNvbnRlbnRzJ10pKSB7XHJcbiAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiPlxyXG4gICAgICAgICAgQGlmIChsYWJlbCkge1xyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hbWVcIj57eyBsYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXNjIGZpbGUtaXRlbS1jb250YWluZXIgZmlsZS1pdGVtLWNvbnRhaW5lci1hY3Rpb25zXCIgW25nQ2xhc3NdPVwieydpbnNpZGVUYWJsZVdpZHRoJzogaW5zaWRlVGFibGV9XCI+XHJcbiAgICAgICAgICAgIEBpZiAoY29udHJvbD8udmFsdWU/LlsnYXR0YWNobWVudElkJ10gfHwgY29udHJvbD8udmFsdWU/LlsnZmlsZUNvbnRlbnRzJ10pIHtcclxuICAgICAgICAgICAgICA8ZHMtYXR0YWNobWVudHNcclxuICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImNvbnRyb2w/LnZhbHVlPy5maWxlTmFtZVwiIFtmaWxlXT1cInsgbmFtZTogY29udHJvbD8udmFsdWUuZmlsZU5hbWUgfVwiIFtzaG93QWN0aW9uc109XCJzaG93QWN0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAoZG93bmxvYWRFdmVudCk9XCJhdHRhY2htZW50QWN0aW9uKCdkb3dubG9hZCcsIG51bGwsIGNvbnRyb2w/LnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAoZGVsZXRlRXZlbnQpPVwiYXR0YWNobWVudEFjdGlvbignZGVsZXRlJywgbnVsbCwgY29udHJvbD8udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgIHJlYWRPbmx5PlxyXG4gICAgICAgICAgICAgIDwvZHMtYXR0YWNobWVudHM+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIH1cclxuICA8L25nLWNvbnRhaW5lcj5cclxufSJdfQ==
520
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jcy11cGxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC9kb2MtdXBsb2FkZXIvZG9jcy11cGxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC9kb2MtdXBsb2FkZXIvZG9jcy11cGxvYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxxREFBcUQsQ0FBQztBQUMxRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQ0wsU0FBUyxFQUNULHNCQUFzQixFQUN0QixVQUFVLEVBRVYsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFFeEMsT0FBTyxFQUFZLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFBQyxRQUFRLEVBQUUsT0FBTyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDbEYsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztB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QXZCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNJLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBQ0UsT0FBTztzQkFBZixLQUFLO2dCQUNrQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7O0FBMlh4QixNQUFNLFFBQVE7SUFFSDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBTFQsWUFDUyxRQUFnQixFQUNoQixJQUFZLEVBQ1osUUFBZ0IsRUFDaEIsWUFBb0IsRUFDcEIsUUFBZ0I7UUFKaEIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUNwQixhQUFRLEdBQVIsUUFBUSxDQUFRO0lBQ3JCLENBQUM7Q0FDTiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGVsZXRlRGlhbG9nQ29tcG9uZW50fSBmcm9tICcuLi8uLi9kaWFsb2dzL2RlbGV0ZS1kaWFsb2cvZGVsZXRlLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQge05vb3BTY3JvbGxTdHJhdGVneX0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxyXG4gIERlc3Ryb3lSZWYsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBpbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgRmlsZVNhdmVyIGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG5pbXBvcnQge0RvY3VtZW50RmlsZX0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7Rm9ybUdyb3VwLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge05nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXR9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtNYXRFcnJvciwgTWF0SGludH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcclxuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZX0gZnJvbSAnLi4vY29udHJvbC12YWx1ZS1hY2Nlc3Nvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQge01hdERpYWxvZ30gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHtNYXRUb29sdGlwfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcFwiO1xyXG5pbXBvcnQge0Zvcm1MYWJlbENvbXBvbmVudH0gZnJvbSAnLi4vZm9ybS1sYWJlbC9mb3JtLWxhYmVsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7VHJhbnNsYXRlUGlwZX0gZnJvbSBcIi4uLy4uLy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlXCI7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZmlsZS11cGxvYWRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RvY3MtdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RvY3MtdXBsb2FkZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgTWF0RXJyb3IsXHJcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxyXG4gICAgTWF0SGludCxcclxuICAgIE1hdFRvb2x0aXAsXHJcbiAgICBGb3JtTGFiZWxDb21wb25lbnQsXHJcbiAgICBUcmFuc2xhdGVQaXBlXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERvY3NVcGxvYWRlckNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEb2NzVXBsb2FkZXJDb21wb25lbnQ8VHlwZT4gZXh0ZW5kcyBDb250cm9sVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZTxUeXBlPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBtYXhTaXplRmxhZyA9IHRydWU7XHJcbiAgbWF4U2l6ZVZhbHVlOiBhbnk7XHJcbiAgd3JvbmdFeHRlbnNpb25GbGFnID0gdHJ1ZTtcclxuICBASW5wdXQoKSB1c2VDcm9wOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGZvcm1LZXkhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2hvd0xhYmVsID0gdHJ1ZTtcclxuICBASW5wdXQoKSBkb3dubG9hZExpbmsgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93QWN0aW9ucyA9IHRydWU7XHJcbiAgQElucHV0KCkgc3R5bGVIZWlnaHQgPSAnJzsgLy8gbWVkaXVtLCBtaW5pXHJcbiAgQElucHV0KCkgZmlsZUlucHV0SGVpZ2h0ID0gJyc7IC8vIG1lZGl1bSwgbWluaVxyXG4gIEBJbnB1dCgpIHN0eWxlV2lkdGggPSAnNic7XHJcbiAgQElucHV0KCkgaGludHMhOiBhbnk7XHJcbiAgQElucHV0KCkgYWxsb3dlZEV4dGVuc2lvbnMgPSAnJztcclxuICBASW5wdXQoKSBjYWxsQXBpOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBkaXNwbGF5ID0gJyc7XHJcbiAgdmFsaWRFeHRlbnNpb24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGF0dGFjaFR5cGUgPSAnJztcclxuICBASW5wdXQoKSBlcnJvciE6IHN0cmluZztcclxuICBASW5wdXQoKSBkaXNwbGF5ZWRGaWxlczogRG9jdW1lbnRGaWxlW10gPSBbXTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRUZW1wbGF0ZUF0dGFjaG1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgZmlsZU5vdER1cGxpY2F0ZWQgPSB0cnVlO1xyXG4gIGFsbG93ZWRGaWxlU2l6ZSA9IHRydWU7XHJcbiAgQElucHV0KCkgZ2V0RGF0YUZyb21UZW1wbGF0ZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGFsbG93RmlsZUNvbnRlbnRzV2l0aE11bHRpQXR0YWNobWVudHMgPSBmYWxzZTtcclxuICBASW5wdXQoKSBhY2NlcHQ6IHN0cmluZ1tdO1xyXG4gIGZpbGVzaXplOiBzdHJpbmc7XHJcbiAgd3JvbmdGaWxlID0ge1xyXG4gICAgbWltZVR5cGU6IFwiXCIsXHJcbiAgICBmaWxlQ29udGVudHM6IFwiXCIsXHJcbiAgICBmaWxlTmFtZTogdGhpcy5pMThuLmxhbmd1YWdlID09ICdhcicgPyBcItin2YXYqtiv2KfYryDYp9mE2YXZhNmBINiu2KfYt9mJ2KFcIiA6IFwiV3JvbmcgRmlsZSBFeHRlbnNpb25cIixcclxuICAgIG5hbWU6IHRoaXMuaTE4bi5sYW5ndWFnZSA9PSAnYXInID8gXCLYp9mF2KrYr9in2K8g2KfZhNmF2YTZgSDYrtin2LfZidihXCIgOiBcIldyb25nIEZpbGUgRXh0ZW5zaW9uXCJcclxuICB9XHJcbiAgQElucHV0KCkgYWxsQXR0YWNobWVudHMgPSBbXTtcclxuXHJcbiAgdXBsb2FkRm9ybTogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIHNpZ25UeXBlID0gJ1NpZ24nO1xyXG4gIEBJbnB1dCgpIGN1c3RvbURvd25sb2FkOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNob3dTaWduQnV0dG9uID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHJpbnRUeXBlID0gJ1ByaW50JztcclxuICBASW5wdXQoKSBzaG93UHJpbnRCdXR0b24gPSBmYWxzZTtcclxuICBASW5wdXQoKSBkb3dubG9hZFR5cGUgPSAnRG93bmxvYWQnO1xyXG4gIEBJbnB1dCgpIHNob3dEb3dubG9hZEJ1dHRvbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHByZXZlbnRGaWxlQ29udGVudHMgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgYWRkU2lnbmF0dXJlQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcHJpbnRBY3Rpb25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBlbWl0ZWRWYWx1ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZG93bmxvYWRBY3Rpb25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIG1heFNpemUgPSAnMTAnO1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0RmlsZScpIGlucHV0RmlsZTogRWxlbWVudFJlZjtcclxuICBkaWFsb2c6IE1hdERpYWxvZyA9IGluamVjdChNYXREaWFsb2cpXHJcbiAgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcclxuXHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgdmFsaWRJbWFnZVR5cGVzID0ge1xyXG4gICAganBnOiBbJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvcGpwZWcnXSxcclxuICAgIEpQRzogWydpbWFnZS9qcGVnJywgJ2ltYWdlL3BqcGVnJ10sXHJcbiAgICBqcGVnOiBbJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvcGpwZWcnXSxcclxuICAgIHBuZzogWydpbWFnZS9wbmcnXVxyXG4gIH1cclxuXHJcbiAgdmFsaWRJbWdQZGZUeXBlcyA9IHtcclxuICAgIHBkZjogWydhcHBsaWNhdGlvbi9wZGYnXSxcclxuICAgIGpwZzogWydpbWFnZS9qcGVnJywgJ2ltYWdlL3BqcGVnJ10sXHJcbiAgICBKUEc6IFsnaW1hZ2UvanBlZycsICdpbWFnZS9wanBlZyddLFxyXG4gICAganBlZzogWydpbWFnZS9qcGVnJywgJ2ltYWdlL3BqcGVnJ10sXHJcbiAgICBibXA6IFsnaW1hZ2UvYm1wJywgJ2ltYWdlL3gtd2luZG93cy1ibXAnXSxcclxuICAgIHBuZzogWydpbWFnZS9wbmcnXVxyXG4gIH1cclxuXHJcbiAgdmFsaWRGaWxlVHlwZXMgPSB7XHJcbiAgICAncGRmJzogWydhcHBsaWNhdGlvbi9wZGYnXSxcclxuICAgICdkb2MnOiBbJ2FwcGxpY2F0aW9uL21zd29yZCddLFxyXG4gICAgJ2RvY3gnOiBbJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50J10sXHJcbiAgICAncHB0JzogWydhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCddLFxyXG4gICAgJ3BwdHgnOiBbJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb24nXSxcclxuICAgICdwcHMnOiBbJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50J10sXHJcbiAgICAncHBzeCc6IFsnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlc2hvdyddLFxyXG4gICAgJ29kdCc6IFsnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0J10sXHJcbiAgICAneGxzJzogWydhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnXSxcclxuICAgICd4bHN4JzogWydhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCddLFxyXG4gICAgJ3ppcCc6IFsnYXBwbGljYXRpb24vemlwJywgJ2FwcGxpY2F0aW9uL3gtemlwLWNvbXByZXNzZWQnLCAnbXVsdGlwYXJ0L3gtemlwJywgJ2FwcGxpY2F0aW9uL3ppcCddLFxyXG4gICAgJ21zZyc6IFsnYXBwbGljYXRpb24vdm5kLm1zLW91dGxvb2snLCAnYXBwbGljYXRpb24vbXNnJ10sXHJcbiAgICAnY3N2JzogWyd0ZXh0L2NzdiddLFxyXG4gICAgJ3R4dCc6IFsndGV4dC9wbGFpbiddLFxyXG4gICAgJ3J0Zic6IFsnYXBwbGljYXRpb24vcnRmJywgJ2FwcGxpY2F0aW9uL3gtcnRmJywgJ3RleHQvcmljaHRleHQnXSxcclxuICAgICdodG1sJzogWyd0ZXh0L2h0bWwnXSxcclxuICAgIC8vICdtcDQnOiBbJ3ZpZGVvL21wNCddLFxyXG4gICAgLy8gJ200dic6IFsndmlkZW8vbXA0J10sXHJcbiAgICAnbW92JzogWyd2aWRlby9xdWlja3RpbWUnXSxcclxuICAgICd3bXYnOiBbJ3ZpZGVvL3gtbXMtd212J10sXHJcbiAgICAvLyAnYXZpJzogWyd2aWRlby94LW1zdmlkZW8nXSxcclxuICAgICdtcGcnOiBbJ21wZyddLFxyXG4gICAgJ3JtdmInOiBbJ3JtdmInXSxcclxuICAgIC8vICdvZ3YnOiBbJ3ZpZGVvL29nZyddLFxyXG4gICAgLy8gJzNncCc6IFsndmlkZW8vM2dwcCcsICdhdWRpby8zZ3BwJ10sXHJcbiAgICAvLyAnM2cyJzogWyd2aWRlby8zZ3BwMicsICdhdWRpby8zZ3BwJ10sXHJcbiAgICAnanBnJzogWydpbWFnZS9qcGVnJywgJ2ltYWdlL3BqcGVnJ10sXHJcbiAgICAnanBlZyc6IFsnaW1hZ2UvanBlZycsICdpbWFnZS9wanBlZyddLFxyXG4gICAgJ3BuZyc6IFsnaW1hZ2UvcG5nJ10sXHJcbiAgICAnZ2lmJzogWydpbWFnZS9naWYnXSxcclxuICAgICdibXAnOiBbJ2ltYWdlL2JtcCcsICdpbWFnZS94LXdpbmRvd3MtYm1wJ11cclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IHZhbGlkUGRmVHlwZXMgPSB7XHJcbiAgICAncGRmJzogWydhcHBsaWNhdGlvbi9wZGYnXSxcclxuICB9XHJcbiAgdXBsb2FkaW5nOiBib29sZWFuO1xyXG4gIGxlbmd0aEVycm9yOiBib29sZWFuO1xyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5hdHRhY2htZW50cz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuYWxsQXR0YWNobWVudHMgPSBbLi4udGhpcy5hdHRhY2htZW50c107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLmFjdGlvblN0YXRlU2VydmljZS5yZXNldEFjdGlvbiRcclxuICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxyXG4gICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuaXNSZWFkT25seSAmJiB0aGlzLmNvbnRyb2wuZW5hYmxlZCkge1xyXG4gICAgICAgIHRoaXMuY29udHJvbC5yZXNldCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEZpbGVUeXBlKGF0dGFjaG1lbnQ6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAoIWF0dGFjaG1lbnQuZmlsZU5hbWU/LmluY2x1ZGVzKCcuJykgJiYgYXR0YWNobWVudC5taW1lVHlwZS5pbmNsdWRlcygnLicpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNoZWNrRmlsZVR5cGUoYXR0YWNobWVudC5taW1lVHlwZSk7XHJcbiAgICB9IGVsc2UgaWYgKGF0dGFjaG1lbnQuZmlsZU5hbWUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY2hlY2tGaWxlVHlwZShhdHRhY2htZW50LmZpbGVOYW1lKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBhdHRhY2htZW50Lm1pbWVUeXBlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0ZpbGVUeXBlKGF0dGFjaG1lbnREYXRhOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKGF0dGFjaG1lbnREYXRhLnNwbGl0KCcuJykucG9wKCkgPT0gJ21zZycpIHtcclxuICAgICAgcmV0dXJuICdlbWFpbC1pY29uJ1xyXG4gICAgfSBlbHNlIGlmIChhdHRhY2htZW50RGF0YS5zcGxpdCgnLicpLnBvcCgpID09ICdqcGVnJykge1xyXG4gICAgICByZXR1cm4gJ2pwZydcclxuICAgIH0gZWxzZSBpZiAoYXR0YWNobWVudERhdGEuc3BsaXQoJy4nKS5wb3AoKSA9PSAneGxzeCcgfHwgYXR0YWNobWVudERhdGEuc3BsaXQoJy4nKS5wb3AoKSA9PSAneGxzJykge1xyXG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbDtjaGFyc2V0PXV0Zi04JztcclxuICAgIH1cclxuICAgIHJldHVybiBhdHRhY2htZW50RGF0YS5zcGxpdCgnLicpLnBvcCgpO1xyXG4gIH1cclxuXHJcbiAgYXR0YWNobWVudEFjdGlvbih0eXBlOiBhbnksIGluZGV4OiBudW1iZXIsIGZpZWxkOiBhbnkpIHtcclxuICAgIGlmICh0eXBlID09IFwiZG93bmxvYWRcIikge1xyXG4gICAgICBpZiAodGhpcy5kb3dubG9hZExpbmspIHtcclxuICAgICAgICB3aW5kb3cub3BlbihmaWVsZD8uYXR0YWNobWVudElkLCAnX2JsYW5rJywgJ3RvcD0wLGxlZnQ9MCxoZWlnaHQ9YXV0byx3aWR0aD1hdXRvJyk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZmllbGQ/LmF0dGFjaG1lbnRJZCkge1xyXG4gICAgICAgIHRoaXMuZG93bmxvYWRGaWxlKHR5cGUsIGZpZWxkKTtcclxuICAgICAgfSBlbHNlIGlmIChmaWVsZD8uZmlsZUNvbnRlbnRzKSB7XHJcbiAgICAgICAgdGhpcy5kb3dubG9hZEZpbGVOZXcoZmllbGQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZSA9PSBcImRlbGV0ZVwiKSB7XHJcbiAgICAgIGlmICh0aGlzLnZhbGlkRXh0ZW5zaW9uKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgICAgIHRoaXMuY29uZmlybURlbGV0ZShpbmRleClcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVBdHRhY2hlZEZpbGUoKVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnZhbGlkRXh0ZW5zaW9uID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uZmlybURlbGV0ZShpbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKERlbGV0ZURpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBwYW5lbENsYXNzOiBbJ21haW4tcG9wdXAnLCAnY29uZmlybS1kaWFsb2cnXSxcclxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IG5ldyBOb29wU2Nyb2xsU3RyYXRlZ3koKSxcclxuICAgIH0pO1xyXG5cclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmV0dXJuVmFsdWUpID0+IHtcclxuICAgICAgaWYgKHJldHVyblZhbHVlID09ICd5ZXMnKSB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVNdWx0aShpbmRleClcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVNdWx0aShpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmRpc3BsYXllZEZpbGVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB0aGlzLmFsbEF0dGFjaG1lbnRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZEZpbGVOZXcoZmlsZURhdGE6IGFueSkge1xyXG4gICAgY29uc3QgZmlsZVR5cGUgPSB0aGlzLmdldEZpbGVUeXBlKGZpbGVEYXRhKTtcclxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbZmlsZURhdGEuZmlsZUNvbnRlbnRzXSwge3R5cGU6IGZpbGVUeXBlfSk7XHJcbiAgICBGaWxlU2F2ZXIuc2F2ZUFzKGJsb2IsIGAke2ZpbGVEYXRhLmZpbGVOYW1lfWApO1xyXG4gIH1cclxuXHJcbiAgb25WYWx1ZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldDtcclxuICAgIHRoaXMuY29udHJvbC5yZXNldCgpXHJcbiAgICBpZiAoaW5wdXQ/LmZpbGVzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRmlsZUlucHV0KGlucHV0KTtcclxuICAgICAgdGhpcy5wcm9jZXNzVXBsb2FkZWRGaWxlKGlucHV0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlRmlsZUlucHV0KGlucHV0OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChpbnB1dC5maWxlcyAmJiB0aGlzLmZvcm1LZXkgPT09ICdUU1YnKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZUF0dGFjaG1lbnQuZW1pdChpbnB1dC5maWxlc1swXSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZmlsZTogRmlsZSA9IGlucHV0LmZpbGVzWzBdO1xyXG4gICAgbGV0IGZpbGVUeXBlID0gZmlsZS5uYW1lPy5lbmRzV2l0aChcIi5tc2dcIikgPyAnYXBwbGljYXRpb24vdm5kLm1zLW91dGxvb2snIDogZmlsZS50eXBlO1xyXG5cclxuICAgIGlmICh0aGlzLmFjY2VwdD8ubGVuZ3RoICYmICF0aGlzLmFjY2VwdC5pbmNsdWRlcyhmaWxlVHlwZSkpIHtcclxuICAgICAgYWxlcnQodGhpcy5pMThuLnRyYW5zbGF0ZSgndGhpc0lzSW52YWxpZEZpbGUnKSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnVwbG9hZEZvcm0/LmdldCgnZmlsZScpPy5zZXRWYWx1ZShmaWxlKTtcclxuICAgIHRoaXMudXBsb2FkRm9ybT8uZ2V0KCduYW1lJyk/LnNldFZhbHVlKGZpbGU/Lm5hbWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcm9jZXNzVXBsb2FkZWRGaWxlKGlucHV0OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy51cGxvYWRpbmcpIHtcclxuICAgICAgY29uc3QgZmlsZURhdGEgPSBuZXcgRmlsZUluZm8oXHJcbiAgICAgICAgaW5wdXQuZmlsZXNbMF0ubmFtZSxcclxuICAgICAgICBpbnB1dC5maWxlc1swXS5uYW1lLFxyXG4gICAgICAgIGlucHV0LmZpbGVzWzBdLnR5cGUsXHJcbiAgICAgICAgJycsXHJcbiAgICAgICAgdGhpcy5maWxlc2l6ZVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnVwZGF0ZUZpbGVQcm9wZXJ0aWVzKGlucHV0LCBmaWxlRGF0YSk7XHJcbiAgICAgIGlmICghdGhpcy5sZW5ndGhFcnJvciAmJiArdGhpcy5maWxlc2l6ZSA8ICt0aGlzLm1heFNpemUpIHtcclxuICAgICAgICB0aGlzLmFsbG93ZWRGaWxlU2l6ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy51cGxvYWRWYWxpZEFuZE5vbkR1cGxpY2F0ZUZpbGUoaW5wdXQsIGZpbGVEYXRhKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmFsbG93ZWRGaWxlU2l6ZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpbnB1dC52YWx1ZSA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVGaWxlUHJvcGVydGllcyhpbnB1dDogYW55LCBmaWxlSW5mbzogRmlsZUluZm8pOiB2b2lkIHtcclxuICAgIHRoaXMubWF4U2l6ZVZhbHVlID0gdGhpcy5tYXhTaXplID8gdGhpcy5tYXhTaXplIDogMTtcclxuICAgIHRoaXMuZmlsZXNpemUgPSAoKGlucHV0LmZpbGVzWzBdLnNpemUgLyAxMDI0KSAvIDEwMjQpLnRvRml4ZWQoNCk7XHJcbiAgICB0aGlzLm1heFNpemVGbGFnID0gK3RoaXMuZmlsZXNpemUgPCArdGhpcy5tYXhTaXplO1xyXG4gICAgdGhpcy5sZW5ndGhFcnJvciA9IHRoaXMuZGlzcGxheWVkRmlsZXM/Lmxlbmd0aCA+PSArdGhpcy5tYXhMZW5ndGg7XHJcbiAgICB0aGlzLndyb25nRXh0ZW5zaW9uRmxhZyA9IHRoaXMuaXNWYWxpZE1pbWVUeXBlKGlucHV0LmZpbGVzWzBdLnR5cGUpO1xyXG4gICAgdGhpcy52YWxpZEV4dGVuc2lvbiA9IHRoaXMuaXNWYWxpZEV4dGVuc2lvbihpbnB1dC5maWxlc1swXS5uYW1lLnNwbGl0KCcuJykucG9wKCksIHRoaXMudHlwZSk7XHJcbiAgICB0aGlzLnZhbHVlID0gZmlsZUluZm87XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwbG9hZFZhbGlkQW5kTm9uRHVwbGljYXRlRmlsZShpbnB1dDogYW55LCBmaWxlRGF0YTogRmlsZUluZm8pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnZhbGlkRXh0ZW5zaW9uKSB7XHJcbiAgICAgIGlmICh0aGlzLmdldERhdGFGcm9tVGVtcGxhdGUpIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZUF0dGFjaG1lbnQuZW1pdChpbnB1dCk7XHJcbiAgICAgIHRoaXMucmVhZEZpbGVBbmRVcGxvYWQoaW5wdXQuZmlsZXNbMF0sIGZpbGVEYXRhKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgdGhpcy5lbWl0RW1wdHlGaWxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRGaWxlQW5kVXBsb2FkKGZpbGU6IEZpbGUsIGZpbGVJbmZvOiBGaWxlSW5mbyk6IHZvaWQge1xyXG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbGVDb250ZW50cyA9IChyZWFkZXIucmVzdWx0IGFzIHN0cmluZykuc3BsaXQoJywnKVsxXTtcclxuICAgICAgZmlsZUluZm8uZmlsZUNvbnRlbnRzID0gZmlsZUNvbnRlbnRzO1xyXG4gICAgICBmaWxlSW5mby5maWxlc2l6ZSA9IHRoaXMuZmlsZXNpemU7XHJcbiAgICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICAgIHRoaXMudXBsb2FkU2luZ2xlRmlsZShmaWxlQ29udGVudHMsIGZpbGVJbmZvKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzRmlsZU5vdER1cGxpY2F0ZShmaWxlSW5mbykpIHtcclxuICAgICAgICB0aGlzLmFkZE11bHRpQXR0YWNobWVudHMoZmlsZUluZm8pO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwbG9hZFNpbmdsZUZpbGUoZmlsZUNvbnRlbnRzOiBzdHJpbmcsIGZpbGVJbmZvOiBGaWxlSW5mbyk6IHZvaWQge1xyXG4gICAgdGhpcy5maWxlTm90RHVwbGljYXRlZCA9IHRoaXMuaXNGaWxlTm90RHVwbGljYXRlKGZpbGVJbmZvKTtcclxuICAgIGlmICghdGhpcy5maWxlTm90RHVwbGljYXRlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnZhbHVlLmZpbGVDb250ZW50cyA9IGZpbGVDb250ZW50cztcclxuICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSh0aGlzLnZhbHVlKVxyXG4gICAgdGhpcy5lbWl0ZWRWYWx1ZS5lbWl0KHRoaXMudmFsdWUpXHJcbiAgICBpZiAodGhpcy5jYWxsQXBpKSB7XHJcbiAgICAgIHRoaXMuYWRkQXR0YWNobWVudHMoKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRlbXBsYXRlQXR0YWNobWVudC5lbWl0KHRoaXMudmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0RW1wdHlGaWxlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZW1wdHlPYmogPSB7XHJcbiAgICAgIG1pbWVUeXBlOiBcIlwiLFxyXG4gICAgICBmaWxlQ29udGVudHM6IFwiXCIsXHJcbiAgICAgIGZpbGVOYW1lOiBcIlwiLFxyXG4gICAgfVxyXG4gICAgdGhpcy5lbWl0KGVtcHR5T2JqKVxyXG4gICAgdGhpcy5zZWxlY3RlZFRlbXBsYXRlQXR0YWNobWVudC5lbWl0KG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHJvY2Vzc0F0dGFjaG1lbnRzKGZpZWxkOiBhbnksIGFsbG93TXVsdGlBdHRhY2htZW50czogYm9vbGVhbikge1xyXG4gICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgXCJmaWxlRGVzY3JpcHRpb25cIjogXCJcIixcclxuICAgICAgXCJhdHRhY2htZW50Y29tbWVudFwiOiBcIlwiLFxyXG4gICAgICBcImZpbGVOYW1lXCI6IGZpZWxkLmZpbGVOYW1lLFxyXG4gICAgICBcIm1pbWVUeXBlXCI6IGZpZWxkLm1pbWVUeXBlLFxyXG4gICAgICBcImZpbGVDb250ZW50c1wiOiBmaWVsZC5maWxlQ29udGVudHMsXHJcbiAgICB9XHJcbiAgICB0aGlzLnVwbG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmNvcmVTZXJ2aWNlLmdldEF0dGFjaG1lbnRzKGRhdGEpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXHJcbiAgICApLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChmb3JtOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBuZXdPYmogPSB7XHJcbiAgICAgICAgICBcImZpbGVOYW1lXCI6IGZpZWxkLmZpbGVOYW1lLFxyXG4gICAgICAgICAgXCJhdHRhY2htZW50SWRcIjogZm9ybS5hdHRhY2htZW50LmF0dGFjaG1lbnRJZCxcclxuICAgICAgICAgIFwibWltZVR5cGVcIjogZm9ybS5hdHRhY2htZW50Lm1pbWVUeXBlLFxyXG4gICAgICAgICAgXCJmaWxlQ29udGVudHNcIjogZmllbGQuZmlsZUNvbnRlbnRzXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChhbGxvd011bHRpQXR0YWNobWVudHMpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmFsbG93RmlsZUNvbnRlbnRzV2l0aE11bHRpQXR0YWNobWVudHMpIG5ld09ialsnZmlsZUNvbnRlbnRzJ10gPSBmaWVsZC5maWxlQ29udGVudHM7XHJcbiAgICAgICAgICB0aGlzLmRpc3BsYXllZEZpbGVzID0gdGhpcy5kaXNwbGF5ZWRGaWxlcz8ubGVuZ3RoID8gdGhpcy5kaXNwbGF5ZWRGaWxlcyA6IFtdXHJcbiAgICAgICAgICB0aGlzLmRpc3BsYXllZEZpbGVzLnB1c2gobmV3T2JqKTtcclxuICAgICAgICAgIHRoaXMuYWxsQXR0YWNobWVudHMucHVzaChuZXdPYmopO1xyXG4gICAgICAgICAgdGhpcy5lbWl0KHRoaXMuZGlzcGxheWVkRmlsZXMpO1xyXG4gICAgICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHRoaXMuZGlzcGxheWVkRmlsZXMpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShuZXdPYmopXHJcbiAgICAgICAgICB0aGlzLmVtaXRlZFZhbHVlLmVtaXQobmV3T2JqKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMudXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgZXJyPy5lcnJvcj8ubWV0YT8ubWVzc2FnZXM/LmZvckVhY2goKG1zZykgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihtc2cubWVzc2FnZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYWRkQXR0YWNobWVudHMoKSB7XHJcbiAgICB0aGlzLnByb2Nlc3NBdHRhY2htZW50cyh0aGlzLmNvbnRyb2wudmFsdWUsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGFkZE11bHRpQXR0YWNobWVudHMoZmllbGQ6IGFueSkge1xyXG4gICAgdGhpcy5wcm9jZXNzQXR0YWNobWVudHMoZmllbGQsIHRydWUpO1xyXG4gIH1cclxuXHJcblxyXG4gIGlzRmlsZU5vdER1cGxpY2F0ZShmaWxlOiBGaWxlSW5mbyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuYWxsQXR0YWNobWVudHM/Lmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5hbGxBdHRhY2htZW50cz8uZmluZEluZGV4KCgkZmlsZSkgPT4gKGZpbGUuZmlsZU5hbWUgPT09ICRmaWxlLmZpbGVOYW1lKSkgPT09IC0xO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgaXNWYWxpZE1pbWVUeXBlKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmF0dGFjaFR5cGUgPT0gJ3BkZicpIHtcclxuICAgICAgcmV0dXJuIChbXSBhcyBzdHJpbmdbXSkuY29uY2F0KC4uLk9iamVjdC52YWx1ZXModGhpcy52YWxpZFBkZlR5cGVzKSkuaW5jbHVkZXModmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmF0dGFjaFR5cGUgPT0gJ2ltYWdlJykge1xyXG4gICAgICByZXR1cm4gKFtdIGFzIHN0cmluZ1tdKS5jb25jYXQoLi4uT2JqZWN0LnZhbHVlcyh0aGlzLnZhbGlkSW1hZ2VUeXBlcykpLmluY2x1ZGVzKHZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc1ZhbGlkRXh0ZW5zaW9uKHZhbHVlOiBzdHJpbmcsIHR5cGU6IHN0cmluZykge1xyXG4gICAgaWYgKHR5cGUgPT0gJ2ltYWdlJykge1xyXG4gICAgICByZXR1cm4gW10uY29uY2F0KC4uLk9iamVjdC5rZXlzKHRoaXMudmFsaWRJbWFnZVR5cGVzKSkuaW5jbHVkZXModmFsdWUudG9Mb3dlckNhc2UoKSk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJpbWFnZVBkZlwiKSB7XHJcbiAgICAgIHJldHVybiBbXS5jb25jYXQoLi4uT2JqZWN0LmtleXModGhpcy52YWxpZEltZ1BkZlR5cGVzKSkuaW5jbHVkZXModmFsdWUudG9Mb3dlckNhc2UoKSk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwicGRmXCIpIHtcclxuICAgICAgcmV0dXJuIFtdLmNvbmNhdCguLi5PYmplY3Qua2V5cyh0aGlzLnZhbGlkUGRmVHlwZXMpKS5pbmNsdWRlcyh2YWx1ZS50b0xvd2VyQ2FzZSgpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBbXS5jb25jYXQoLi4uT2JqZWN0LmtleXModGhpcy52YWxpZEZpbGVUeXBlcykpLmluY2x1ZGVzKHZhbHVlLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQXR0YWNoZWRGaWxlKCkge1xyXG4gICAgdGhpcy5jb250cm9sLnNldFZhbHVlKG5ldyBGaWxlSW5mbyhudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsKSlcclxuICAgIGlmICh0aGlzLmlucHV0RmlsZSkge1xyXG4gICAgICB0aGlzLmlucHV0RmlsZS5uYXRpdmVFbGVtZW50LnZhbHVlID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuZW1pdCh0aGlzLnZhbHVlKVxyXG4gICAgdGhpcy5jb250cm9sLnJlc2V0KClcclxuICAgIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZUF0dGFjaG1lbnQuZW1pdChudWxsKTtcclxuICB9XHJcblxyXG4gIGRvd25sb2FkRmlsZShldmVudCwgZmllbGQpIHtcclxuICAgIGlmICh0aGlzLmN1c3RvbURvd25sb2FkKSB7XHJcbiAgICAgIHRoaXMuZG93bmxvYWRBY3Rpb25DbGlja2VkLmVtaXQoZmllbGQpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNvcmVTZXJ2aWNlLmxvYWRGaWxlKGZpZWxkLmF0dGFjaG1lbnRJZCkucGlwZShcclxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxyXG4gICAgICApLnN1YnNjcmliZShcclxuICAgICAgICAocmVzcG9uc2VPYmplY3Q6IHsgYm9keTogYW55OyB9KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBmaWxlSW5mb3JtYXRpb24gPSByZXNwb25zZU9iamVjdC5ib2R5O1xyXG4gICAgICAgICAgdGhpcy5jb3JlU2VydmljZS5zYXZlRmlsZShmaWxlSW5mb3JtYXRpb24pXHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKGVycm9yLmVycm9yPy5bJ21lc3NhZ2UnXSlcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0PFQ+KHZhbHVlOiBUIHwgVFtdKSB7XHJcbiAgICBpZiAodGhpcy5wcmV2ZW50RmlsZUNvbnRlbnRzKSB7XHJcbiAgICAgIHZhbHVlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xyXG4gICAgICB0aGlzLmRlbGV0ZUZpbGVDb250ZW50cyh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRlbGV0ZUZpbGVDb250ZW50cyhkYXRhOiBhbnkpIHtcclxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiYgJ2ZpbGVDb250ZW50cycgaW4gZGF0YSkge1xyXG4gICAgICBkZWxldGUgZGF0YS5maWxlQ29udGVudHM7XHJcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcclxuICAgICAgZGF0YS5mb3JFYWNoKGVsZW0gPT4gdGhpcy5kZWxldGVGaWxlQ29udGVudHMoZWxlbSkpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuY2xhc3MgRmlsZUluZm8ge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGZpbGVOYW1lOiBzdHJpbmcsXHJcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nLFxyXG4gICAgcHVibGljIG1pbWVUeXBlOiBzdHJpbmcsXHJcbiAgICBwdWJsaWMgZmlsZUNvbnRlbnRzOiBzdHJpbmcsXHJcbiAgICBwdWJsaWMgZmlsZXNpemU6IHN0cmluZ1xyXG4gICkgeyB9XHJcbn1cclxuIiwiQGlmICghaXNSZWFkT25seSkge1xyXG4gIDxuZy1jb250YWluZXI+XHJcbiAgICBAaWYobGFiZWwpIHtcclxuICAgICAgPGFwcC1mb3JtLWxhYmVsIFtsYWJlbF09XCJsYWJlbFwiIFtvcHRpb25hbF09XCIhY29udHJvbD8uaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnNbJ3JlcXVpcmVkJ10pXCIgW3Rvb2x0aXBdPVwidG9vbHRpcFwiPjwvYXBwLWZvcm0tbGFiZWw+XHJcbiAgICB9XHJcbiAgICA8c2VjdGlvblxyXG4gICAgKGNsaWNrKT1cImZpbGVBdHRhY2hlZC5jbGljaygpXCJcclxuICAgICAgW25nQ2xhc3NdPVwiaW5zaWRlVGFibGUgPyAnZmlsZS11cGxvYWRlci10YWJsZScgOiAnZmlsZS11cGxvYWRlcidcIiBjbGFzcz1cIiBtYi0yXCJcclxuICAgICAgW2NsYXNzLmluc2lkZVRhYmxlU3R5bGVdPVwiaW5zaWRlVGFibGVcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImluc2lkZVRhYmxlID8gJ2ZpbGUtdXBsb2FkZXItdGFibGUtZGV2JyA6ICcnXCIgY2xhc3M9XCJmaWxlLXVwbG9hZGVyLWlucHV0XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgQGlmICghdXBsb2FkaW5nKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbiBtYi0xXCI+XHJcbiAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJpbnNpZGVUYWJsZSA/ICdmaWxlLXVwbG9hZGVyLXRhYmxlLXN2ZycgOiAnJ1wiIHdpZHRoPVwiNDFcIiBoZWlnaHQ9XCIzOFwiIHZpZXdCb3g9XCIwIDAgNDEgMzhcIlxyXG4gICAgICAgICAgICAgIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICBkPVwiTTAgMjIuMTk0N1YyMC42NzM2QzAuMDk3MTMwMyAyMC4xMDE5IDAuMDcwMDk0IDE5LjUxNDEgMC4yNzYzNzEgMTguOTUzM0MxLjI4MzcyIDE2LjIwODYgMy4yMTIzMSAxNC41MDIzIDYuMDQyMSAxMy44MDk0QzYuNzA0OTkgMTMuNjQ3MiA2LjY4NDk3IDEzLjY2MzIgNi42OTg5OSAxMi45ODQzQzYuNzMyMDMgMTEuMzMyMSA2Ljk5ODM5IDkuNzE5OTIgNy42MjQyMyA4LjE3OTg2QzguODYyODkgNS4xMzY3OCAxMC45NDY3IDIuODM5NjkgMTMuODgxNiAxLjM5MTc1QzE3LjE2OCAtMC4yMzA0MjQgMjAuNTk1NiAtMC40NTA3MTkgMjQuMDU1MyAwLjgxNTk4QzI3LjQ5MjkgMi4wNzQ2NyAyOS45NjIyIDQuNDE1ODEgMzEuNDgwMiA3Ljc0ODI4QzMxLjc3ODYgOC40MDMxNiAzMi4wMjcgOS4wODMwNyAzMi4xNzEyIDkuNzkyMDJDMzIuMjQwMiAxMC4xMzE1IDMyLjQwMzUgMTAuMjU2NiAzMi43NTI5IDEwLjMxMDdDMzYuNzAxMiAxMC45MTY1IDM5LjMzNTggMTMuMTI1NSA0MC42OTQ2IDE2Ljg3MzVDNDAuOTA2OSAxNy40NjAzIDQwLjkxOTkgMTguMDczMSA0MC45NTk5IDE4LjY4MjlDNDAuOTY0OSAxOC43NjAxIDQwLjkzODkgMTguODQ0MiA0MSAxOC45MTEzVjIwLjUxMjRDNDAuOTEwOSAyMC45OTUgNDAuOTY5IDIxLjQ5MzcgNDAuODYwOCAyMS45NzM0QzQwLjUyNDQgMjMuNDYxNCAzOS44NDU0IDI0Ljc4MjEgMzguODUwMSAyNS45Mjk3QzM3LjQ1MjIgMjcuNTQxOCAzNS43MDU5IDI4LjU4ODIgMzMuNjE2MSAyOS4wNTE5QzMyLjc5MSAyOS4yMzUxIDMxLjk0OTkgMjkuMjUyMSAzMS4xMTE3IDI5LjI5MjJDMzAuNjU3MSAyOS4zMTQyIDMwLjU4NCAyOS4xOTMgMzAuNTkyIDI4Ljc0ODRDMzAuNjQ1MSAyNS44NDQ2IDI5LjgwMiAyMy4yNTcxIDI3Ljg2MjQgMjEuMDU5MUMyNS45OTc5IDE4Ljk0NjMgMjMuNjU5NyAxNy43MTY3IDIwLjg2NyAxNy40MDEyQzE4Ljg1NTMgMTcuMTczOSAxNi45MDU3IDE3LjQ1OTMgMTUuMDYxMiAxOC4zMzk1QzExLjgzMTkgMTkuODgxNiA5LjgxNDE2IDIyLjQwNjkgOC45NjEwMiAyNS44Njk2QzguNzQyNzMgMjYuNzUzOCA4LjY4MjY1IDI3LjY1OCA4LjcwNTY4IDI4LjU3MDJDOC43MjE3IDI5LjIxMTEgOC42MDI1NCAyOS4zMTIyIDcuOTU5NjggMjkuMjk3MkM1Ljk1MDk4IDI5LjI1MTEgNC4xMDU1MSAyOC43MjM0IDIuNTgxNDYgMjcuMzU5NkMxLjA3NjQ0IDI2LjAxNjggMC4wNjgwOTEzIDI0LjM5OTYgMC4wNDAwNTM3IDIyLjMwMjhDMC4wNDAwNTM3IDIyLjI2MDcgMC4wMjUwMzM2IDIyLjIyNTcgMCAyMi4xOTM3VjIyLjE5NDdaXCJcclxuICAgICAgICAgICAgICAgIGZpbGw9XCIjREVFMEUyXCIvPlxyXG4gICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICBkPVwiTTI5LjAzMDMgMjguMjYzMkMyOS4wNjA0IDMzLjQwMzEgMjQuODY1NyAzNy42MTg3IDE5LjY4MzggMzcuNjU0OEMxNC41MTY5IDM3LjY5MDggMTAuMjg1MiAzMy40OTUyIDEwLjI1MjEgMjguMzA0MkMxMC4yMjAxIDIzLjE0MDMgMTQuNDI5NyAxOC45MTI2IDE5LjYyMjcgMTguODk0NkMyNC44MDM3IDE4Ljg3NjYgMjguOTk5MyAyMy4wNTQyIDI5LjAzMDMgMjguMjYzMlpcIlxyXG4gICAgICAgICAgICAgICAgZmlsbD1cIiM4RTlBQTBcIi8+XHJcbiAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgIGQ9XCJNMjAuNTU3MyAyNS4yNjQ0QzIwLjQ2MjIgMjUuNDQ3NyAyMC41MDEyIDI1LjU5MzkgMjAuNTAxMiAyNS43MzRDMjAuNDk4MiAyOC4yMTU0IDIwLjUwMDIgMzAuNjk1NyAyMC40OTgyIDMzLjE3N0MyMC40OTgyIDMzLjgwOTkgMjAuMjMzOSAzNC4xNzA0IDE5Ljc0NjIgMzQuMjIzNEMxOS4yNjQ1IDM0LjI3NjUgMTguODggMzMuOTgzMSAxOC44MTY5IDMzLjUwMjVDMTguNzk1OSAzMy4zNDQzIDE4Ljc5NjkgMzMuMTgzIDE4Ljc5NjkgMzMuMDIzOEMxOC43OTU5IDMwLjU4MjYgMTguNzk2OSAyOC4xNDIzIDE4Ljc5NjkgMjUuNzAxQzE4Ljc5NjkgMjUuNTcyOCAxOC43OTY5IDI1LjQ0NDcgMTguNzk2OSAyNS4yMDAzQzE4LjE5NzEgMjUuODAzMSAxNy42Nzc0IDI2LjMyODggMTcuMTUyNyAyNi44NTA1QzE3LjAxMTUgMjYuOTkwNyAxNi44NjgzIDI3LjEzNDkgMTYuNzA2MSAyNy4yNDcxQzE2LjM1NjYgMjcuNDg2NCAxNS45MzQxIDI3LjQ0MTMgMTUuNjQ1NyAyNy4xNTRDMTUuMzY0MyAyNi44NzQ2IDE1LjMyMDMgMjYuNDQyIDE1LjU0ODYgMjYuMDkyNUMxNS42MjA3IDI1Ljk4MjQgMTUuNzEyOCAyNS44ODMyIDE1LjgwNjkgMjUuNzg5MUMxNi44NjEzIDI0LjczMDcgMTcuOTE2NyAyMy42NzMzIDE4Ljk3MzIgMjIuNjE3OUMxOS40MDE3IDIyLjE4OTMgMTkuODc4NCAyMi4xNzYzIDIwLjMwMzkgMjIuNTk4OEMyMS4zOTE0IDIzLjY4MDMgMjIuNDczOSAyNC43NjY3IDIzLjU1MzMgMjUuODU3MkMyMy45ODA5IDI2LjI4OTggMjQuMDEyOSAyNi44MDY1IDIzLjY1MzQgMjcuMTY3QzIzLjI5OSAyNy41MjE0IDIyLjc3NTMgMjcuNDg0NCAyMi4zNDM3IDI3LjA1NjhDMjEuNzQ5OSAyNi40NyAyMS4xNjYxIDI1Ljg3MzIgMjAuNTYwMyAyNS4yNjQ0SDIwLjU1NzNaXCJcclxuICAgICAgICAgICAgICAgIGZpbGw9XCIjRjlGOUY5XCIvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKHVwbG9hZGluZykge1xyXG4gICAgICAgICAgPGRzLWljb24gY2xhc3M9XCJzZmkgc2ZpLXNwaW5uZXIgZC1pbmxpbmUtYmxvY2sgc3BpbiBmYy1jb3JhbCBmcy0zMC1pbXBcIj48L2RzLWljb24+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZi0xNCBmYy1ibGFjayBmdy1ub3JtYWxcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmMtY29yYWwgZnctbWVkaXVtXCI+e3sgJ2Jyb3dzZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLTEwIGZjLWRhcmstZ3JheVwiPlxyXG4gICAgICAgICAge3sgYWxsb3dlZEV4dGVuc2lvbnMgPyBhbGxvd2VkRXh0ZW5zaW9ucyA6ICcnIH19XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiICNpbnB1dEZpbGUgW2FjY2VwdF09XCJhY2NlcHRcIiBjbGFzcz1cImQtbm9uZVwiICNmaWxlQXR0YWNoZWQgKGNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3NlY3Rpb24+XHJcblxyXG4gICAgQGlmIChoaW50cykge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMyBtYi0zXCI+XHJcbiAgICAgICAgQGZvciAoaGludCBvZiBoaW50czsgdHJhY2sgaGludCkge1xyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTEgZnMtMTJcIj5cclxuICAgICAgICAgICAgICA8ZHMtaWNvblxyXG4gICAgICAgICAgICAgICAgaWNvbj1cInt7IGhpbnQudmFsaWQgPyAnY2hlY2stY2lyY2xlLWYnIDogJ2NoZWNrLWNpcmNsZS1vJyB9fVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZzLTI0IHt7IGhpbnQudmFsaWQgPyAnZmMtZ3JlZW4nIDogJ2ZjLWRhcmstZ3JheScgfX1cIj48L2RzLWljb24+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ7eyBoaW50LnZhbGlkID8gJ2ZjLWJsYWNrJyA6ICdmYy1kYXJrLWdyYXknIH19XCI+e3sgaGludC5sYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG5cclxuICAgIEBpZiAoaGludCkge1xyXG4gICAgICA8bWF0LWhpbnQgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCI+XHJcbiAgICAgICAgPGRzLWljb24gaWNvbj1cImluZm9cIiBjbGFzcz1cImZzLTE3IGZjLWRhcmstZ3JheVwiPjwvZHMtaWNvbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTEyIGZjLWJsYWNrIGxpbmUtaGVpZ2h0LTFcIj57eyBoaW50IH19PC9zcGFuPlxyXG4gICAgICA8L21hdC1oaW50PlxyXG4gICAgfVxyXG5cclxuICAgIEBpZiAobXVsdGlwbGUpIHtcclxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJmaWxlcy1saXN0XCI+XHJcbiAgICAgICAgQGZvciAoZmlsZSBvZiBkaXNwbGF5ZWRGaWxlczsgdHJhY2sgZmlsZTsgbGV0IGkgPSAkaW5kZXgpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWl0ZW0tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxkcy1hdHRhY2htZW50c1xyXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImZpbGU/LmZpbGVOYW1lXCJcclxuICAgICAgICAgICAgICBbZmlsZV09XCJ7IG5hbWU6IGZpbGUuZmlsZU5hbWUgfVwiXHJcbiAgICAgICAgICAgICAgKGRvd25sb2FkRXZlbnQpPVwiYXR0YWNobWVudEFjdGlvbignZG93bmxvYWQnLCBpLCBmaWxlKVwiXHJcbiAgICAgICAgICAgICAgKGRlbGV0ZUV2ZW50KT1cImF0dGFjaG1lbnRBY3Rpb24oJ2RlbGV0ZScsIGksIGZpbGUpXCJcclxuICAgICAgICAgICAgICBbc2hvd0FjdGlvbnNdPVwic2hvd0FjdGlvbnNcIj5cclxuICAgICAgICAgICAgPC9kcy1hdHRhY2htZW50cz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgPC9zZWN0aW9uPlxyXG4gICAgfVxyXG5cclxuICAgIEBpZiAoIW11bHRpcGxlICYmIChjb250cm9sPy52YWx1ZT8uZmlsZUNvbnRlbnRzIHx8IGNvbnRyb2w/LnZhbHVlPy5hdHRhY2htZW50SWQpKSB7XHJcbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwiZmlsZXMtbGlzdFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWl0ZW0tY29udGFpbmVyIGZpbGUtaXRlbS1jb250YWluZXItYWN0aW9uc1wiPlxyXG4gICAgICAgICAgPGRzLWF0dGFjaG1lbnRzXHJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImNvbnRyb2w/LnZhbHVlPy5maWxlTmFtZVwiXHJcbiAgICAgICAgICAgIFtmaWxlXT1cInsgbmFtZTogY29udHJvbD8udmFsdWUuZmlsZU5hbWUgfVwiXHJcbiAgICAgICAgICAgIChkb3dubG9hZEV2ZW50KT1cImF0dGFjaG1lbnRBY3Rpb24oJ2Rvd25sb2FkJywgbnVsbCwgY29udHJvbD8udmFsdWUpXCJcclxuICAgICAgICAgICAgKGRlbGV0ZUV2ZW50KT1cImF0dGFjaG1lbnRBY3Rpb24oJ2RlbGV0ZScsIG51bGwsIGNvbnRyb2w/LnZhbHVlKVwiXHJcbiAgICAgICAgICAgIFtzaG93QWN0aW9uc109XCJzaG93QWN0aW9uc1wiPlxyXG4gICAgICAgICAgPC9kcy1hdHRhY2htZW50cz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9zZWN0aW9uPlxyXG4gICAgfVxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50cy1lcnJvclwiPlxyXG4gICAgICBAaWYgKCF2YWxpZEV4dGVuc2lvbikge1xyXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiZmlsZXMtbGlzdCBtdC0yXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1pdGVtLWNvbnRhaW5lciBcIj5cclxuICAgICAgICAgICAgPGRzLWF0dGFjaG1lbnRzXHJcbiAgICAgICAgICAgICAgW2ZpbGVdPVwid3JvbmdGaWxlXCIgZXJyb3IgW3Nob3dBY3Rpb25zXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgIDwvZHMtYXR0YWNobWVudHM+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBpZiAoIWFsbG93ZWRGaWxlU2l6ZSkge1xyXG4gICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJmcy0xMiBteS0yXCI+XHJcbiAgICAgICAgICB7eyBtYXhTaXplID09PSBcIjAuM1wiID8gKCdzdXBwb3J0MycgfCB0cmFuc2xhdGUgKTogKCdzdXBwb3J0MicgfCB0cmFuc2xhdGUpICsgbWF4U2l6ZSArICgnbWInIHwgdHJhbnNsYXRlKSB9fVxyXG4gICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICB9XHJcblxyXG4gICAgICBAaWYgKCFmaWxlTm90RHVwbGljYXRlZCkge1xyXG4gICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJmcy0xMiBteS0yXCI+e3sgJ2R1cGxpY2F0ZWQtZXJyb3InIHwgdHJhbnNsYXRlIH19PC9tYXQtZXJyb3I+XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBpZiAobGVuZ3RoRXJyb3IpIHtcclxuICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwiZnMtMTJcIj57eyAnbGVuZ3RoRXJyb3InIHwgdHJhbnNsYXRlIH19IDp7eyBtYXhMZW5ndGggfX08L21hdC1lcnJvcj5cclxuICAgICAgfVxyXG5cclxuICAgICAgQGlmIChzaG93RXJyb3JNZXNzYWdlKSB7XHJcbiAgICAgICAgPCEtLSA8bWF0LWVycm9yIGNsYXNzPVwiZnMtMTJcIj57e2Vycm9yTWVzc2FnZX19IDwvbWF0LWVycm9yPiAtLT5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbn1cclxuXHJcbkBpZiAoaXNSZWFkT25seSkge1xyXG4gIDxuZy1jb250YWluZXI+XHJcbiAgICBAaWYgKG11bHRpcGxlICYmIGRpc3BsYXllZEZpbGVzKSB7XHJcbiAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiPlxyXG4gICAgICAgICAgQGlmIChsYWJlbCkge1xyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hbWVcIj57eyBsYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAoZGlzcGxheWVkRmlsZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICBAZm9yIChmaWxlIG9mIGRpc3BsYXllZEZpbGVzOyB0cmFjayBmaWxlOyBsZXQgaSA9ICRpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtaXRlbS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRzLWF0dGFjaG1lbnRzXHJcbiAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiZmlsZT8uZmlsZU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXktMlwiIFtmaWxlXT1cInsgbmFtZTogZmlsZS5maWxlTmFtZSB9XCIgcmVhZE9ubHkgKGRvd25sb2FkRXZlbnQpPVwiZG93bmxvYWRGaWxlKCRldmVudCwgZmlsZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93QWN0aW9uc109XCJzaG93QWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8L2RzLWF0dGFjaG1lbnRzPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKCFkaXNwbGF5ZWRGaWxlcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGlzY1wiPlxyXG4gICAgICAgICAgICAgIHt7ICdOb0F0dGFjaG1lbnRzJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgfVxyXG5cclxuICAgIEBpZiAoIW11bHRpcGxlICYmIChjb250cm9sPy52YWx1ZT8uWydhdHRhY2htZW50SWQnXSB8fCBjb250cm9sPy52YWx1ZT8uWydmaWxlQ29udGVudHMnXSkpIHtcclxuICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCI+XHJcbiAgICAgICAgICBAaWYgKGxhYmVsKSB7XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmFtZVwiPnt7IGxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRpc2MgZmlsZS1pdGVtLWNvbnRhaW5lciBmaWxlLWl0ZW0tY29udGFpbmVyLWFjdGlvbnNcIiBbbmdDbGFzc109XCJ7J2luc2lkZVRhYmxlV2lkdGgnOiBpbnNpZGVUYWJsZX1cIj5cclxuICAgICAgICAgICAgQGlmIChjb250cm9sPy52YWx1ZT8uWydhdHRhY2htZW50SWQnXSB8fCBjb250cm9sPy52YWx1ZT8uWydmaWxlQ29udGVudHMnXSkge1xyXG4gICAgICAgICAgICAgIDxkcy1hdHRhY2htZW50c1xyXG4gICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiY29udHJvbD8udmFsdWU/LmZpbGVOYW1lXCIgW2ZpbGVdPVwieyBuYW1lOiBjb250cm9sPy52YWx1ZS5maWxlTmFtZSB9XCIgW3Nob3dBY3Rpb25zXT1cInNob3dBY3Rpb25zXCJcclxuICAgICAgICAgICAgICAgIChkb3dubG9hZEV2ZW50KT1cImF0dGFjaG1lbnRBY3Rpb24oJ2Rvd25sb2FkJywgbnVsbCwgY29udHJvbD8udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgIChkZWxldGVFdmVudCk9XCJhdHRhY2htZW50QWN0aW9uKCdkZWxldGUnLCBudWxsLCBjb250cm9sPy52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgcmVhZE9ubHk+XHJcbiAgICAgICAgICAgICAgPC9kcy1hdHRhY2htZW50cz5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgfVxyXG4gIDwvbmctY29udGFpbmVyPlxyXG59Il19
@@ -2,6 +2,7 @@ import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
2
2
  import { MatSlideToggle } from '@angular/material/slide-toggle';
3
3
  import { DatePipe, DecimalPipe, NgClass, NgSwitch, NgSwitchCase, NgSwitchDefault } from '@angular/common';
4
4
  import { TranslatePipe } from "../../../../pipes/translate.pipe";
5
+ import { format } from 'date-fns';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "../../../../services";
7
8
  export class InfoItemComponent {
@@ -31,8 +32,11 @@ export class InfoItemComponent {
31
32
  getImage(email) {
32
33
  return '/group/i-gate/wm-bpm/forms/-/proxy/portrait?email=' + email;
33
34
  }
35
+ getDate(date) {
36
+ return format(new Date(date), "dd/MM/yyyy");
37
+ }
34
38
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InfoItemComponent, deps: [{ token: i1.CoreI18nService }], target: i0.ɵɵFactoryTarget.Component });
35
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: InfoItemComponent, isStandalone: true, selector: "app-info-item", inputs: { label: "label", value: "value", name: "name", type: "type", dateType: "dateType", multiple: "multiple", insideTable: "insideTable", hasLabel: "hasLabel", arrayList: "arrayList", actionType: "actionType", download: "download" }, ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\r\n @if(label){\r\n <span class=\"name \">{{ label }}</span>\r\n }\r\n\r\n <!-- class=\"disc\" -->\r\n <span *ngSwitchCase=\"'attach'\">\r\n<!-- <app-docs-uploader [field]=\"value\" styleHeight=\"mini\" display=\"only-files\"></app-docs-uploader>-->\r\n </span>\r\n <span class=\"disc mt-2 \" *ngSwitchCase=\"'user-picker'\">\r\n @if(!multiple){\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"img-card circled-img small\">\r\n <img [src]=\"getImage(value)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </div>\r\n <div class=\"line-height-1 mx-2\" [ngClass]=\"{'flex-grow-1': actionType === 'delete'}\">\r\n <h6 class=\"fs-14 fw-bold fc-onyx mb-0\">{{name}}</h6>\r\n <span class=\"fs-12 fc-dark-gray\">{{value}}</span>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if(multiple){\r\n @if(multiple){\r\n <ng-container>\r\n @for (emails of arrayList; track $index; let ind = $index) {\r\n <div class=\"d-flex flex-wrap\">\r\n <ng-container>\r\n <div class=\"img-card circled-img small mb-3\">\r\n <img [src]=\"getImage(value)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </div>\r\n <div class=\"line-height-1 mx-2 mb-3\" [ngClass]=\"{'flex-grow-1': actionType === 'delete'}\">\r\n <h6 class=\"fs-14 fw-bold fc-onyx mb-0\"> {{(emails?.['personName'])}}</h6>\r\n <span class=\"fs-12 fc-dark-gray\"> {{emails?.['personEmail']}}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n }\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'toggle'\">\r\n <mat-slide-toggle [checked]=\"value\"></mat-slide-toggle>\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'toggleBtn'\">\r\n <span>{{value}}</span>\r\n </span>\r\n <span class=\"disc\" *ngSwitchCase=\"'telephone'\">\r\n <div class=\"d-flex align-items-center\">\r\n <bdi>{{ value }}</bdi>\r\n </div>\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'currency'\">\r\n <span>{{value | number:'1.2-2'}}</span>\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'date'\">\r\n @if(dateType === 'hijri'){\r\n <span>\r\n {{ value }}\r\n </span>\r\n }\r\n @if(dateType === 'yearOnly'){\r\n <span>\r\n {{ value }}\r\n </span>\r\n }\r\n@if(dateType !== 'hijri' && dateType !== 'yearOnly' && !value?.startDate){\r\n <span>\r\n {{value | date :'dd/MM/yyyy'}}\r\n </span>\r\n}\r\n @if(dateType !== 'hijri' && dateType !== 'yearOnly' && value?.startDate){\r\n <span>\r\n {{value?.['startDate'] | date :'dd/MM/yyyy'}}\r\n -\r\n {{value?.['endDate'] | date :'dd/MM/yyyy'}}\r\n </span>\r\n }\r\n\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'dateHijri'\">\r\n {{ value }}\r\n </span>\r\n\r\n <span class=\"disc breakLine fc-coral cursor-pointer\" *ngSwitchCase=\"'link'\">\r\n <a [href]=\"value\" target=\"_blank\">{{'View' | translate}} {{ label }} </a>\r\n </span>\r\n <span class=\"disc breakLine\" *ngSwitchCase=\"'formIdLink'\">\r\n <a (click)=\"viewForm(value)\">{{ value }} </a>\r\n </span>\r\n <span [ngClass]=\"{'breakLine': !insideTable}\" class=\"disc \" *ngSwitchCase=\"'text'\">\r\n {{ value }}\r\n </span>\r\n <span [ngClass]=\"{'breakLine': !insideTable}\" class=\"disc \" *ngSwitchCase=\"'multipleSelect'\">\r\n @for(item of value; track $index; let i =$index){\r\n <span>{{item.value}}\r\n @if(!(i === value.length-1)){\r\n <span>, </span>\r\n }\r\n </span>\r\n }\r\n\r\n </span>\r\n <span [ngClass]=\"{'breakLine': !insideTable}\" class=\"disc \" [innerHTML]=\"value\" *ngSwitchDefault>\r\n </span>\r\n</ng-container>\r\n", styles: [":host.slide-end .disc{text-align:end}:host.user-picker{border-radius:4px;padding:1rem;background-color:var(--light-gray);max-width:320px;width:100%}:host.user-picker .name{display:none}:host.user-picker .disc{width:100%}.name{width:270px;font-size:.875rem;font-weight:var(--font-medium);color:var(--dark-gray);margin-bottom:0;display:inline-block}.disc{width:calc(100% - 270px);font-size:.875rem;font-weight:var(--font-regular);color:var(--black);display:inline-block}@media (max-width: 768px){.name,.disc{width:100%!important}}.breakLine{line-break:anywhere}a{color:#0d6efd!important}a:hover{cursor:pointer}\n"], dependencies: [{ kind: "component", type: MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: DecimalPipe, name: "number" }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
39
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: InfoItemComponent, isStandalone: true, selector: "app-info-item", inputs: { label: "label", value: "value", name: "name", type: "type", dateType: "dateType", multiple: "multiple", insideTable: "insideTable", hasLabel: "hasLabel", arrayList: "arrayList", actionType: "actionType", download: "download" }, ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\r\n @if(label){\r\n <span class=\"name \">{{ label }}</span>\r\n }\r\n\r\n <!-- class=\"disc\" -->\r\n <span *ngSwitchCase=\"'attach'\">\r\n<!-- <app-docs-uploader [field]=\"value\" styleHeight=\"mini\" display=\"only-files\"></app-docs-uploader>-->\r\n </span>\r\n <span class=\"disc mt-2 \" *ngSwitchCase=\"'user-picker'\">\r\n @if(!multiple){\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"img-card circled-img small\">\r\n <img [src]=\"getImage(value)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </div>\r\n <div class=\"line-height-1 mx-2\" [ngClass]=\"{'flex-grow-1': actionType === 'delete'}\">\r\n <h6 class=\"fs-14 fw-bold fc-onyx mb-0\">{{name}}</h6>\r\n <span class=\"fs-12 fc-dark-gray\">{{value}}</span>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if(multiple){\r\n @if(multiple){\r\n <ng-container>\r\n @for (emails of arrayList; track $index; let ind = $index) {\r\n <div class=\"d-flex flex-wrap\">\r\n <ng-container>\r\n <div class=\"img-card circled-img small mb-3\">\r\n <img [src]=\"getImage(value)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </div>\r\n <div class=\"line-height-1 mx-2 mb-3\" [ngClass]=\"{'flex-grow-1': actionType === 'delete'}\">\r\n <h6 class=\"fs-14 fw-bold fc-onyx mb-0\"> {{(emails?.['personName'])}}</h6>\r\n <span class=\"fs-12 fc-dark-gray\"> {{emails?.['personEmail']}}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n }\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'toggle'\">\r\n <mat-slide-toggle [checked]=\"value\"></mat-slide-toggle>\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'toggleBtn'\">\r\n <span>{{value}}</span>\r\n </span>\r\n <span class=\"disc\" *ngSwitchCase=\"'telephone'\">\r\n <div class=\"d-flex align-items-center\">\r\n <bdi>{{ value }}</bdi>\r\n </div>\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'currency'\">\r\n <span>{{value | number:'1.2-2'}}</span>\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'date'\">\r\n @if(dateType === 'hijri'){\r\n <span>\r\n {{ value }}\r\n </span>\r\n }\r\n @if(dateType === 'yearOnly'){\r\n <span>\r\n {{ value }}\r\n </span>\r\n }\r\n@if(dateType !== 'hijri' && dateType !== 'yearOnly' && !value?.startDate){\r\n <span>\r\n {{value | date :'dd/MM/yyyy' : 'GMT+3'}}\r\n<!-- {{ getDate(value) }}-->\r\n </span>\r\n}\r\n @if(dateType !== 'hijri' && dateType !== 'yearOnly' && value?.startDate){\r\n <span>\r\n {{value?.['startDate'] | date :'dd/MM/yyyy'}}\r\n -\r\n {{value?.['endDate'] | date :'dd/MM/yyyy'}}\r\n </span>\r\n }\r\n\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'dateHijri'\">\r\n {{ value }}\r\n </span>\r\n\r\n <span class=\"disc breakLine fc-coral cursor-pointer\" *ngSwitchCase=\"'link'\">\r\n <a [href]=\"value\" target=\"_blank\">{{'View' | translate}} {{ label }} </a>\r\n </span>\r\n <span class=\"disc breakLine\" *ngSwitchCase=\"'formIdLink'\">\r\n <a (click)=\"viewForm(value)\">{{ value }} </a>\r\n </span>\r\n <span [ngClass]=\"{'breakLine': !insideTable}\" class=\"disc \" *ngSwitchCase=\"'text'\">\r\n {{ value }}\r\n </span>\r\n <span [ngClass]=\"{'breakLine': !insideTable}\" class=\"disc \" *ngSwitchCase=\"'multipleSelect'\">\r\n @for(item of value; track $index; let i =$index){\r\n <span>{{item.value}}\r\n @if(!(i === value.length-1)){\r\n <span>, </span>\r\n }\r\n </span>\r\n }\r\n\r\n </span>\r\n <span [ngClass]=\"{'breakLine': !insideTable}\" class=\"disc \" [innerHTML]=\"value\" *ngSwitchDefault>\r\n </span>\r\n</ng-container>\r\n", styles: [":host.slide-end .disc{text-align:end}:host.user-picker{border-radius:4px;padding:1rem;background-color:var(--light-gray);max-width:320px;width:100%}:host.user-picker .name{display:none}:host.user-picker .disc{width:100%}.name{width:270px;font-size:.875rem;font-weight:var(--font-medium);color:var(--dark-gray);margin-bottom:0;display:inline-block}.disc{width:calc(100% - 270px);font-size:.875rem;font-weight:var(--font-regular);color:var(--black);display:inline-block}@media (max-width: 768px){.name,.disc{width:100%!important}}.breakLine{line-break:anywhere}a{color:#0d6efd!important}a:hover{cursor:pointer}\n"], dependencies: [{ kind: "component", type: MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: DecimalPipe, name: "number" }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
36
40
  }
37
41
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InfoItemComponent, decorators: [{
38
42
  type: Component,
@@ -45,7 +49,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
45
49
  NgSwitchDefault,
46
50
  NgSwitch,
47
51
  TranslatePipe
48
- ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<ng-container [ngSwitch]=\"type\">\r\n @if(label){\r\n <span class=\"name \">{{ label }}</span>\r\n }\r\n\r\n <!-- class=\"disc\" -->\r\n <span *ngSwitchCase=\"'attach'\">\r\n<!-- <app-docs-uploader [field]=\"value\" styleHeight=\"mini\" display=\"only-files\"></app-docs-uploader>-->\r\n </span>\r\n <span class=\"disc mt-2 \" *ngSwitchCase=\"'user-picker'\">\r\n @if(!multiple){\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"img-card circled-img small\">\r\n <img [src]=\"getImage(value)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </div>\r\n <div class=\"line-height-1 mx-2\" [ngClass]=\"{'flex-grow-1': actionType === 'delete'}\">\r\n <h6 class=\"fs-14 fw-bold fc-onyx mb-0\">{{name}}</h6>\r\n <span class=\"fs-12 fc-dark-gray\">{{value}}</span>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if(multiple){\r\n @if(multiple){\r\n <ng-container>\r\n @for (emails of arrayList; track $index; let ind = $index) {\r\n <div class=\"d-flex flex-wrap\">\r\n <ng-container>\r\n <div class=\"img-card circled-img small mb-3\">\r\n <img [src]=\"getImage(value)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </div>\r\n <div class=\"line-height-1 mx-2 mb-3\" [ngClass]=\"{'flex-grow-1': actionType === 'delete'}\">\r\n <h6 class=\"fs-14 fw-bold fc-onyx mb-0\"> {{(emails?.['personName'])}}</h6>\r\n <span class=\"fs-12 fc-dark-gray\"> {{emails?.['personEmail']}}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n }\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'toggle'\">\r\n <mat-slide-toggle [checked]=\"value\"></mat-slide-toggle>\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'toggleBtn'\">\r\n <span>{{value}}</span>\r\n </span>\r\n <span class=\"disc\" *ngSwitchCase=\"'telephone'\">\r\n <div class=\"d-flex align-items-center\">\r\n <bdi>{{ value }}</bdi>\r\n </div>\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'currency'\">\r\n <span>{{value | number:'1.2-2'}}</span>\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'date'\">\r\n @if(dateType === 'hijri'){\r\n <span>\r\n {{ value }}\r\n </span>\r\n }\r\n @if(dateType === 'yearOnly'){\r\n <span>\r\n {{ value }}\r\n </span>\r\n }\r\n@if(dateType !== 'hijri' && dateType !== 'yearOnly' && !value?.startDate){\r\n <span>\r\n {{value | date :'dd/MM/yyyy'}}\r\n </span>\r\n}\r\n @if(dateType !== 'hijri' && dateType !== 'yearOnly' && value?.startDate){\r\n <span>\r\n {{value?.['startDate'] | date :'dd/MM/yyyy'}}\r\n -\r\n {{value?.['endDate'] | date :'dd/MM/yyyy'}}\r\n </span>\r\n }\r\n\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'dateHijri'\">\r\n {{ value }}\r\n </span>\r\n\r\n <span class=\"disc breakLine fc-coral cursor-pointer\" *ngSwitchCase=\"'link'\">\r\n <a [href]=\"value\" target=\"_blank\">{{'View' | translate}} {{ label }} </a>\r\n </span>\r\n <span class=\"disc breakLine\" *ngSwitchCase=\"'formIdLink'\">\r\n <a (click)=\"viewForm(value)\">{{ value }} </a>\r\n </span>\r\n <span [ngClass]=\"{'breakLine': !insideTable}\" class=\"disc \" *ngSwitchCase=\"'text'\">\r\n {{ value }}\r\n </span>\r\n <span [ngClass]=\"{'breakLine': !insideTable}\" class=\"disc \" *ngSwitchCase=\"'multipleSelect'\">\r\n @for(item of value; track $index; let i =$index){\r\n <span>{{item.value}}\r\n @if(!(i === value.length-1)){\r\n <span>, </span>\r\n }\r\n </span>\r\n }\r\n\r\n </span>\r\n <span [ngClass]=\"{'breakLine': !insideTable}\" class=\"disc \" [innerHTML]=\"value\" *ngSwitchDefault>\r\n </span>\r\n</ng-container>\r\n", styles: [":host.slide-end .disc{text-align:end}:host.user-picker{border-radius:4px;padding:1rem;background-color:var(--light-gray);max-width:320px;width:100%}:host.user-picker .name{display:none}:host.user-picker .disc{width:100%}.name{width:270px;font-size:.875rem;font-weight:var(--font-medium);color:var(--dark-gray);margin-bottom:0;display:inline-block}.disc{width:calc(100% - 270px);font-size:.875rem;font-weight:var(--font-regular);color:var(--black);display:inline-block}@media (max-width: 768px){.name,.disc{width:100%!important}}.breakLine{line-break:anywhere}a{color:#0d6efd!important}a:hover{cursor:pointer}\n"] }]
52
+ ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<ng-container [ngSwitch]=\"type\">\r\n @if(label){\r\n <span class=\"name \">{{ label }}</span>\r\n }\r\n\r\n <!-- class=\"disc\" -->\r\n <span *ngSwitchCase=\"'attach'\">\r\n<!-- <app-docs-uploader [field]=\"value\" styleHeight=\"mini\" display=\"only-files\"></app-docs-uploader>-->\r\n </span>\r\n <span class=\"disc mt-2 \" *ngSwitchCase=\"'user-picker'\">\r\n @if(!multiple){\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"img-card circled-img small\">\r\n <img [src]=\"getImage(value)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </div>\r\n <div class=\"line-height-1 mx-2\" [ngClass]=\"{'flex-grow-1': actionType === 'delete'}\">\r\n <h6 class=\"fs-14 fw-bold fc-onyx mb-0\">{{name}}</h6>\r\n <span class=\"fs-12 fc-dark-gray\">{{value}}</span>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if(multiple){\r\n @if(multiple){\r\n <ng-container>\r\n @for (emails of arrayList; track $index; let ind = $index) {\r\n <div class=\"d-flex flex-wrap\">\r\n <ng-container>\r\n <div class=\"img-card circled-img small mb-3\">\r\n <img [src]=\"getImage(value)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </div>\r\n <div class=\"line-height-1 mx-2 mb-3\" [ngClass]=\"{'flex-grow-1': actionType === 'delete'}\">\r\n <h6 class=\"fs-14 fw-bold fc-onyx mb-0\"> {{(emails?.['personName'])}}</h6>\r\n <span class=\"fs-12 fc-dark-gray\"> {{emails?.['personEmail']}}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n }\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'toggle'\">\r\n <mat-slide-toggle [checked]=\"value\"></mat-slide-toggle>\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'toggleBtn'\">\r\n <span>{{value}}</span>\r\n </span>\r\n <span class=\"disc\" *ngSwitchCase=\"'telephone'\">\r\n <div class=\"d-flex align-items-center\">\r\n <bdi>{{ value }}</bdi>\r\n </div>\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'currency'\">\r\n <span>{{value | number:'1.2-2'}}</span>\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'date'\">\r\n @if(dateType === 'hijri'){\r\n <span>\r\n {{ value }}\r\n </span>\r\n }\r\n @if(dateType === 'yearOnly'){\r\n <span>\r\n {{ value }}\r\n </span>\r\n }\r\n@if(dateType !== 'hijri' && dateType !== 'yearOnly' && !value?.startDate){\r\n <span>\r\n {{value | date :'dd/MM/yyyy' : 'GMT+3'}}\r\n<!-- {{ getDate(value) }}-->\r\n </span>\r\n}\r\n @if(dateType !== 'hijri' && dateType !== 'yearOnly' && value?.startDate){\r\n <span>\r\n {{value?.['startDate'] | date :'dd/MM/yyyy'}}\r\n -\r\n {{value?.['endDate'] | date :'dd/MM/yyyy'}}\r\n </span>\r\n }\r\n\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'dateHijri'\">\r\n {{ value }}\r\n </span>\r\n\r\n <span class=\"disc breakLine fc-coral cursor-pointer\" *ngSwitchCase=\"'link'\">\r\n <a [href]=\"value\" target=\"_blank\">{{'View' | translate}} {{ label }} </a>\r\n </span>\r\n <span class=\"disc breakLine\" *ngSwitchCase=\"'formIdLink'\">\r\n <a (click)=\"viewForm(value)\">{{ value }} </a>\r\n </span>\r\n <span [ngClass]=\"{'breakLine': !insideTable}\" class=\"disc \" *ngSwitchCase=\"'text'\">\r\n {{ value }}\r\n </span>\r\n <span [ngClass]=\"{'breakLine': !insideTable}\" class=\"disc \" *ngSwitchCase=\"'multipleSelect'\">\r\n @for(item of value; track $index; let i =$index){\r\n <span>{{item.value}}\r\n @if(!(i === value.length-1)){\r\n <span>, </span>\r\n }\r\n </span>\r\n }\r\n\r\n </span>\r\n <span [ngClass]=\"{'breakLine': !insideTable}\" class=\"disc \" [innerHTML]=\"value\" *ngSwitchDefault>\r\n </span>\r\n</ng-container>\r\n", styles: [":host.slide-end .disc{text-align:end}:host.user-picker{border-radius:4px;padding:1rem;background-color:var(--light-gray);max-width:320px;width:100%}:host.user-picker .name{display:none}:host.user-picker .disc{width:100%}.name{width:270px;font-size:.875rem;font-weight:var(--font-medium);color:var(--dark-gray);margin-bottom:0;display:inline-block}.disc{width:calc(100% - 270px);font-size:.875rem;font-weight:var(--font-regular);color:var(--black);display:inline-block}@media (max-width: 768px){.name,.disc{width:100%!important}}.breakLine{line-break:anywhere}a{color:#0d6efd!important}a:hover{cursor:pointer}\n"] }]
49
53
  }], ctorParameters: () => [{ type: i1.CoreI18nService }], propDecorators: { label: [{
50
54
  type: Input
51
55
  }], value: [{
@@ -69,4 +73,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
69
73
  }], download: [{
70
74
  type: Input
71
75
  }] } });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9zaGFyZWQtY29tcG9uZW50cy9mb3JtLWZpZWxkL2luZm8taXRlbS9pbmZvLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvaW5mby1pdGVtL2luZm8taXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFpQixRQUFRLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pILE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQzs7O0FBbUIvRCxNQUFNLE9BQU8saUJBQWlCO0lBYVQ7SUFaVixLQUFLLENBQVU7SUFDZixLQUFLLENBQU87SUFDWixJQUFJLENBQU87SUFDWCxJQUFJLEdBQUcsTUFBTSxDQUFDO0lBQ2QsUUFBUSxDQUFVO0lBQ2xCLFFBQVEsQ0FBVztJQUNuQixXQUFXLENBQVc7SUFDdEIsUUFBUSxHQUFHLElBQUksQ0FBQztJQUNoQixTQUFTLENBQVM7SUFDbEIsVUFBVSxDQUFVO0lBQ3BCLFFBQVEsQ0FBVztJQUU1QixZQUFtQixJQUFxQjtRQUFyQixTQUFJLEdBQUosSUFBSSxDQUFpQjtJQUFJLENBQUM7SUFFN0MsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUFXO1FBQ2xCLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0NBQW9DLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhO1FBQ3BCLE9BQU8sb0RBQW9ELEdBQUcsS0FBSyxDQUFDO0lBQ3RFLENBQUM7dUdBM0JVLGlCQUFpQjsyRkFBakIsaUJBQWlCLHVUQ3ZCOUIsczZIQWdIQSw0cEJEcEdJLGNBQWMsMFVBQ2QsWUFBWSxnRkFDWixXQUFXLDBDQUNYLFFBQVEsNkNBQ1IsT0FBTyxvRkFDUCxlQUFlLDhEQUNmLFFBQVEsd0VBQ1IsYUFBYTs7MkZBSUosaUJBQWlCO2tCQWpCN0IsU0FBUzsrQkFDRSxlQUFlLGNBR2IsSUFBSSxXQUNQO3dCQUNQLGNBQWM7d0JBQ2QsWUFBWTt3QkFDWixXQUFXO3dCQUNYLFFBQVE7d0JBQ1IsT0FBTzt3QkFDUCxlQUFlO3dCQUNmLFFBQVE7d0JBQ1IsYUFBYTtxQkFDZCxXQUNRLENBQUMsc0JBQXNCLENBQUM7b0ZBR3hCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvcmVJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSwgRGVjaW1hbFBpcGUsIE5nQ2xhc3MsIE5nRm9yT2YsIE5nSWYsIE5nU3dpdGNoLCBOZ1N3aXRjaENhc2UsIE5nU3dpdGNoRGVmYXVsdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7VHJhbnNsYXRlUGlwZX0gZnJvbSBcIi4uLy4uLy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1pbmZvLWl0ZW0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbmZvLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2luZm8taXRlbS5jb21wb25lbnQuc2NzcyddLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTWF0U2xpZGVUb2dnbGUsXHJcbiAgICBOZ1N3aXRjaENhc2UsXHJcbiAgICBEZWNpbWFsUGlwZSxcclxuICAgIERhdGVQaXBlLFxyXG4gICAgTmdDbGFzcyxcclxuICAgIE5nU3dpdGNoRGVmYXVsdCxcclxuICAgIE5nU3dpdGNoLFxyXG4gICAgVHJhbnNsYXRlUGlwZVxyXG4gIF0sXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbmZvSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgbGFiZWwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdmFsdWUhOiBhbnk7XHJcbiAgQElucHV0KCkgbmFtZSE6IGFueTtcclxuICBASW5wdXQoKSB0eXBlID0gJ3RleHQnO1xyXG4gIEBJbnB1dCgpIGRhdGVUeXBlITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG11bHRpcGxlITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBpbnNpZGVUYWJsZSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaGFzTGFiZWwgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGFycmF5TGlzdCE6IGFueVtdO1xyXG4gIEBJbnB1dCgpIGFjdGlvblR5cGUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZG93bmxvYWQhOiBib29sZWFuO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaTE4bjogQ29yZUkxOG5TZXJ2aWNlKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy50eXBlID09ICdjdXJyZW5jeScpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUucmVwbGFjZUFsbCgnLCcsICcnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZpZXdGb3JtKHVybDogc3RyaW5nKSB7XHJcbiAgICB3aW5kb3cub3BlbignL2dyb3VwL2ktZ2F0ZS93bS1icG0vZm9ybXM/Zm9ybUlkPScgKyB1cmwpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW1hZ2UoZW1haWw6IHN0cmluZykge1xyXG4gICAgcmV0dXJuICcvZ3JvdXAvaS1nYXRlL3dtLWJwbS9mb3Jtcy8tL3Byb3h5L3BvcnRyYWl0P2VtYWlsPScgKyBlbWFpbDtcclxuICB9XHJcblxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInR5cGVcIj5cclxuICBAaWYobGFiZWwpe1xyXG4gICAgPHNwYW4gY2xhc3M9XCJuYW1lIFwiPnt7IGxhYmVsIH19PC9zcGFuPlxyXG4gIH1cclxuXHJcbiAgPCEtLSBjbGFzcz1cImRpc2NcIiAtLT5cclxuICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2F0dGFjaCdcIj5cclxuPCEtLSAgICA8YXBwLWRvY3MtdXBsb2FkZXIgW2ZpZWxkXT1cInZhbHVlXCIgc3R5bGVIZWlnaHQ9XCJtaW5pXCIgZGlzcGxheT1cIm9ubHktZmlsZXNcIj48L2FwcC1kb2NzLXVwbG9hZGVyPi0tPlxyXG4gIDwvc3Bhbj5cclxuICA8c3BhbiBjbGFzcz1cImRpc2MgbXQtMiBcIiAqbmdTd2l0Y2hDYXNlPVwiJ3VzZXItcGlja2VyJ1wiPlxyXG4gICAgQGlmKCFtdWx0aXBsZSl7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImltZy1jYXJkIGNpcmNsZWQtaW1nIHNtYWxsXCI+XHJcbiAgICAgICAgICA8aW1nIFtzcmNdPVwiZ2V0SW1hZ2UodmFsdWUpXCIgb25lcnJvcj1cInRoaXMub25lcnJvcj1udWxsO3RoaXMuc3JjPSdhc3NldHMvaW1hZ2VzL3VzZXIuc3ZnJztcIiBhbHQ9XCJcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGluZS1oZWlnaHQtMSBteC0yXCIgW25nQ2xhc3NdPVwieydmbGV4LWdyb3ctMSc6IGFjdGlvblR5cGUgPT09ICdkZWxldGUnfVwiPlxyXG4gICAgICAgICAgPGg2IGNsYXNzPVwiZnMtMTQgZnctYm9sZCBmYy1vbnl4IG1iLTBcIj57e25hbWV9fTwvaDY+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTEyIGZjLWRhcmstZ3JheVwiPnt7dmFsdWV9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcblxyXG4gICAgQGlmKG11bHRpcGxlKXtcclxuICAgICAgQGlmKG11bHRpcGxlKXtcclxuICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICBAZm9yIChlbWFpbHMgb2YgYXJyYXlMaXN0OyB0cmFjayAkaW5kZXg7IGxldCBpbmQgPSAkaW5kZXgpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWctY2FyZCBjaXJjbGVkLWltZyBzbWFsbCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJnZXRJbWFnZSh2YWx1ZSlcIiBvbmVycm9yPVwidGhpcy5vbmVycm9yPW51bGw7dGhpcy5zcmM9J2Fzc2V0cy9pbWFnZXMvdXNlci5zdmcnO1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGluZS1oZWlnaHQtMSBteC0yIG1iLTNcIiBbbmdDbGFzc109XCJ7J2ZsZXgtZ3Jvdy0xJzogYWN0aW9uVHlwZSA9PT0gJ2RlbGV0ZSd9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxoNiBjbGFzcz1cImZzLTE0IGZ3LWJvbGQgZmMtb255eCBtYi0wXCI+IHt7KGVtYWlscz8uWydwZXJzb25OYW1lJ10pfX08L2g2PlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTEyIGZjLWRhcmstZ3JheVwiPiB7e2VtYWlscz8uWydwZXJzb25FbWFpbCddfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIH1cclxuICAgIH1cclxuICA8L3NwYW4+XHJcblxyXG4gIDxzcGFuIGNsYXNzPVwiZGlzY1wiICpuZ1N3aXRjaENhc2U9XCIndG9nZ2xlJ1wiPlxyXG4gICAgPG1hdC1zbGlkZS10b2dnbGUgW2NoZWNrZWRdPVwidmFsdWVcIj48L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgPC9zcGFuPlxyXG5cclxuICA8c3BhbiBjbGFzcz1cImRpc2NcIiAqbmdTd2l0Y2hDYXNlPVwiJ3RvZ2dsZUJ0bidcIj5cclxuICAgIDxzcGFuPnt7dmFsdWV9fTwvc3Bhbj5cclxuICA8L3NwYW4+XHJcbiAgPHNwYW4gY2xhc3M9XCJkaXNjXCIgKm5nU3dpdGNoQ2FzZT1cIid0ZWxlcGhvbmUnXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICA8YmRpPnt7IHZhbHVlIH19PC9iZGk+XHJcbiAgICA8L2Rpdj5cclxuICA8L3NwYW4+XHJcblxyXG4gIDxzcGFuIGNsYXNzPVwiZGlzY1wiICpuZ1N3aXRjaENhc2U9XCInY3VycmVuY3knXCI+XHJcbiAgICA8c3Bhbj57e3ZhbHVlICB8IG51bWJlcjonMS4yLTInfX08L3NwYW4+XHJcbiAgPC9zcGFuPlxyXG5cclxuICA8c3BhbiBjbGFzcz1cImRpc2NcIiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCI+XHJcbiAgICBAaWYoZGF0ZVR5cGUgPT09ICdoaWpyaScpe1xyXG4gICAgICA8c3Bhbj5cclxuICAgICAgICB7eyB2YWx1ZSB9fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICB9XHJcbiAgIEBpZihkYXRlVHlwZSA9PT0gJ3llYXJPbmx5Jyl7XHJcbiAgICA8c3Bhbj5cclxuICAgICAge3sgdmFsdWUgfX1cclxuICAgIDwvc3Bhbj5cclxuICAgfVxyXG5AaWYoZGF0ZVR5cGUgIT09ICdoaWpyaScgJiYgZGF0ZVR5cGUgIT09ICd5ZWFyT25seScgJiYgIXZhbHVlPy5zdGFydERhdGUpe1xyXG4gIDxzcGFuPlxyXG4gICAge3t2YWx1ZSAgfCBkYXRlIDonZGQvTU0veXl5eSd9fVxyXG4gIDwvc3Bhbj5cclxufVxyXG4gIEBpZihkYXRlVHlwZSAhPT0gJ2hpanJpJyAmJiBkYXRlVHlwZSAhPT0gJ3llYXJPbmx5JyAmJiB2YWx1ZT8uc3RhcnREYXRlKXtcclxuICAgIDxzcGFuPlxyXG4gICAgICB7e3ZhbHVlPy5bJ3N0YXJ0RGF0ZSddICB8IGRhdGUgOidkZC9NTS95eXl5J319XHJcbiAgICAgIC1cclxuICAgICAge3t2YWx1ZT8uWydlbmREYXRlJ10gIHwgZGF0ZSA6J2RkL01NL3l5eXknfX1cclxuICAgIDwvc3Bhbj5cclxuICB9XHJcblxyXG4gIDwvc3Bhbj5cclxuXHJcbiAgPHNwYW4gY2xhc3M9XCJkaXNjXCIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlSGlqcmknXCI+XHJcbiAgICB7eyB2YWx1ZSB9fVxyXG4gIDwvc3Bhbj5cclxuXHJcbiAgPHNwYW4gY2xhc3M9XCJkaXNjIGJyZWFrTGluZSBmYy1jb3JhbCBjdXJzb3ItcG9pbnRlclwiICpuZ1N3aXRjaENhc2U9XCInbGluaydcIj5cclxuICAgIDxhIFtocmVmXT1cInZhbHVlXCIgdGFyZ2V0PVwiX2JsYW5rXCI+e3snVmlldycgfCB0cmFuc2xhdGV9fSB7eyBsYWJlbCB9fSA8L2E+XHJcbiAgPC9zcGFuPlxyXG4gIDxzcGFuIGNsYXNzPVwiZGlzYyBicmVha0xpbmVcIiAqbmdTd2l0Y2hDYXNlPVwiJ2Zvcm1JZExpbmsnXCI+XHJcbiAgICA8YSAoY2xpY2spPVwidmlld0Zvcm0odmFsdWUpXCI+e3sgdmFsdWUgfX0gPC9hPlxyXG4gIDwvc3Bhbj5cclxuICA8c3BhbiBbbmdDbGFzc109XCJ7J2JyZWFrTGluZSc6ICFpbnNpZGVUYWJsZX1cIiBjbGFzcz1cImRpc2MgXCIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiPlxyXG4gICAge3sgdmFsdWUgfX1cclxuICA8L3NwYW4+XHJcbiAgPHNwYW4gW25nQ2xhc3NdPVwieydicmVha0xpbmUnOiAhaW5zaWRlVGFibGV9XCIgY2xhc3M9XCJkaXNjIFwiICAqbmdTd2l0Y2hDYXNlPVwiJ211bHRpcGxlU2VsZWN0J1wiPlxyXG4gICAgQGZvcihpdGVtIG9mIHZhbHVlOyB0cmFjayAkaW5kZXg7IGxldCBpID0kaW5kZXgpe1xyXG4gICAgICA8c3Bhbj57e2l0ZW0udmFsdWV9fVxyXG4gICAgICAgIEBpZighKGkgPT09IHZhbHVlLmxlbmd0aC0xKSl7XHJcbiAgICAgICAgICA8c3Bhbj4sIDwvc3Bhbj5cclxuICAgICAgICB9XHJcbiAgICA8L3NwYW4+XHJcbiAgICB9XHJcblxyXG4gIDwvc3Bhbj5cclxuICA8c3BhbiBbbmdDbGFzc109XCJ7J2JyZWFrTGluZSc6ICFpbnNpZGVUYWJsZX1cIiBjbGFzcz1cImRpc2MgXCIgW2lubmVySFRNTF09XCJ2YWx1ZVwiICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgPC9zcGFuPlxyXG48L25nLWNvbnRhaW5lcj5cclxuIl19
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9zaGFyZWQtY29tcG9uZW50cy9mb3JtLWZpZWxkL2luZm8taXRlbS9pbmZvLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvaW5mby1pdGVtL2luZm8taXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUcsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQW1CbEMsTUFBTSxPQUFPLGlCQUFpQjtJQWFUO0lBWlYsS0FBSyxDQUFVO0lBQ2YsS0FBSyxDQUFPO0lBQ1osSUFBSSxDQUFPO0lBQ1gsSUFBSSxHQUFHLE1BQU0sQ0FBQztJQUNkLFFBQVEsQ0FBVTtJQUNsQixRQUFRLENBQVc7SUFDbkIsV0FBVyxDQUFXO0lBQ3RCLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDaEIsU0FBUyxDQUFTO0lBQ2xCLFVBQVUsQ0FBVTtJQUNwQixRQUFRLENBQVc7SUFFNUIsWUFBbUIsSUFBcUI7UUFBckIsU0FBSSxHQUFKLElBQUksQ0FBaUI7SUFBSSxDQUFDO0lBRTdDLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksVUFBVSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUMsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRLENBQUMsR0FBVztRQUNsQixNQUFNLENBQUMsSUFBSSxDQUFDLG9DQUFvQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxRQUFRLENBQUMsS0FBYTtRQUNwQixPQUFPLG9EQUFvRCxHQUFHLEtBQUssQ0FBQztJQUN0RSxDQUFDO0lBRUQsT0FBTyxDQUFDLElBQUk7UUFDVixPQUFPLE1BQU0sQ0FDVCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDZCxZQUFZLENBQ2IsQ0FBQztJQUNOLENBQUM7dUdBbENVLGlCQUFpQjsyRkFBakIsaUJBQWlCLHVUQ3hCOUIsbTlIQWlIQSw0cEJEcEdJLGNBQWMsMFVBQ2QsWUFBWSxnRkFDWixXQUFXLDBDQUNYLFFBQVEsNkNBQ1IsT0FBTyxvRkFDUCxlQUFlLDhEQUNmLFFBQVEsd0VBQ1IsYUFBYTs7MkZBSUosaUJBQWlCO2tCQWpCN0IsU0FBUzsrQkFDRSxlQUFlLGNBR2IsSUFBSSxXQUNQO3dCQUNQLGNBQWM7d0JBQ2QsWUFBWTt3QkFDWixXQUFXO3dCQUNYLFFBQVE7d0JBQ1IsT0FBTzt3QkFDUCxlQUFlO3dCQUNmLFFBQVE7d0JBQ1IsYUFBYTtxQkFDZCxXQUNRLENBQUMsc0JBQXNCLENBQUM7b0ZBR3hCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvcmVJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSwgRGVjaW1hbFBpcGUsIE5nQ2xhc3MsIE5nU3dpdGNoLCBOZ1N3aXRjaENhc2UsIE5nU3dpdGNoRGVmYXVsdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7VHJhbnNsYXRlUGlwZX0gZnJvbSBcIi4uLy4uLy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlXCI7XHJcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ2RhdGUtZm5zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWluZm8taXRlbScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2luZm8taXRlbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5mby1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXRTbGlkZVRvZ2dsZSxcclxuICAgIE5nU3dpdGNoQ2FzZSxcclxuICAgIERlY2ltYWxQaXBlLFxyXG4gICAgRGF0ZVBpcGUsXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgTmdTd2l0Y2hEZWZhdWx0LFxyXG4gICAgTmdTd2l0Y2gsXHJcbiAgICBUcmFuc2xhdGVQaXBlXHJcbiAgXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEluZm9JdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBsYWJlbCE6IHN0cmluZztcclxuICBASW5wdXQoKSB2YWx1ZSE6IGFueTtcclxuICBASW5wdXQoKSBuYW1lITogYW55O1xyXG4gIEBJbnB1dCgpIHR5cGUgPSAndGV4dCc7XHJcbiAgQElucHV0KCkgZGF0ZVR5cGUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbXVsdGlwbGUhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGluc2lkZVRhYmxlITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBoYXNMYWJlbCA9IHRydWU7XHJcbiAgQElucHV0KCkgYXJyYXlMaXN0ITogYW55W107XHJcbiAgQElucHV0KCkgYWN0aW9uVHlwZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBkb3dubG9hZCE6IGJvb2xlYW47XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpMThuOiBDb3JlSTE4blNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLnR5cGUgPT0gJ2N1cnJlbmN5Jykge1xyXG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5yZXBsYWNlQWxsKCcsJywgJycpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmlld0Zvcm0odXJsOiBzdHJpbmcpIHtcclxuICAgIHdpbmRvdy5vcGVuKCcvZ3JvdXAvaS1nYXRlL3dtLWJwbS9mb3Jtcz9mb3JtSWQ9JyArIHVybCk7XHJcbiAgfVxyXG5cclxuICBnZXRJbWFnZShlbWFpbDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gJy9ncm91cC9pLWdhdGUvd20tYnBtL2Zvcm1zLy0vcHJveHkvcG9ydHJhaXQ/ZW1haWw9JyArIGVtYWlsO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGF0ZShkYXRlKXtcclxuICAgIHJldHVybiBmb3JtYXQoXHJcbiAgICAgICAgbmV3IERhdGUoZGF0ZSksXHJcbiAgICAgICAgXCJkZC9NTS95eXl5XCJcclxuICAgICAgKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInR5cGVcIj5cclxuICBAaWYobGFiZWwpe1xyXG4gICAgPHNwYW4gY2xhc3M9XCJuYW1lIFwiPnt7IGxhYmVsIH19PC9zcGFuPlxyXG4gIH1cclxuXHJcbiAgPCEtLSBjbGFzcz1cImRpc2NcIiAtLT5cclxuICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2F0dGFjaCdcIj5cclxuPCEtLSAgICA8YXBwLWRvY3MtdXBsb2FkZXIgW2ZpZWxkXT1cInZhbHVlXCIgc3R5bGVIZWlnaHQ9XCJtaW5pXCIgZGlzcGxheT1cIm9ubHktZmlsZXNcIj48L2FwcC1kb2NzLXVwbG9hZGVyPi0tPlxyXG4gIDwvc3Bhbj5cclxuICA8c3BhbiBjbGFzcz1cImRpc2MgbXQtMiBcIiAqbmdTd2l0Y2hDYXNlPVwiJ3VzZXItcGlja2VyJ1wiPlxyXG4gICAgQGlmKCFtdWx0aXBsZSl7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImltZy1jYXJkIGNpcmNsZWQtaW1nIHNtYWxsXCI+XHJcbiAgICAgICAgICA8aW1nIFtzcmNdPVwiZ2V0SW1hZ2UodmFsdWUpXCIgb25lcnJvcj1cInRoaXMub25lcnJvcj1udWxsO3RoaXMuc3JjPSdhc3NldHMvaW1hZ2VzL3VzZXIuc3ZnJztcIiBhbHQ9XCJcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGluZS1oZWlnaHQtMSBteC0yXCIgW25nQ2xhc3NdPVwieydmbGV4LWdyb3ctMSc6IGFjdGlvblR5cGUgPT09ICdkZWxldGUnfVwiPlxyXG4gICAgICAgICAgPGg2IGNsYXNzPVwiZnMtMTQgZnctYm9sZCBmYy1vbnl4IG1iLTBcIj57e25hbWV9fTwvaDY+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTEyIGZjLWRhcmstZ3JheVwiPnt7dmFsdWV9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcblxyXG4gICAgQGlmKG11bHRpcGxlKXtcclxuICAgICAgQGlmKG11bHRpcGxlKXtcclxuICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICBAZm9yIChlbWFpbHMgb2YgYXJyYXlMaXN0OyB0cmFjayAkaW5kZXg7IGxldCBpbmQgPSAkaW5kZXgpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWctY2FyZCBjaXJjbGVkLWltZyBzbWFsbCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJnZXRJbWFnZSh2YWx1ZSlcIiBvbmVycm9yPVwidGhpcy5vbmVycm9yPW51bGw7dGhpcy5zcmM9J2Fzc2V0cy9pbWFnZXMvdXNlci5zdmcnO1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGluZS1oZWlnaHQtMSBteC0yIG1iLTNcIiBbbmdDbGFzc109XCJ7J2ZsZXgtZ3Jvdy0xJzogYWN0aW9uVHlwZSA9PT0gJ2RlbGV0ZSd9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxoNiBjbGFzcz1cImZzLTE0IGZ3LWJvbGQgZmMtb255eCBtYi0wXCI+IHt7KGVtYWlscz8uWydwZXJzb25OYW1lJ10pfX08L2g2PlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTEyIGZjLWRhcmstZ3JheVwiPiB7e2VtYWlscz8uWydwZXJzb25FbWFpbCddfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIH1cclxuICAgIH1cclxuICA8L3NwYW4+XHJcblxyXG4gIDxzcGFuIGNsYXNzPVwiZGlzY1wiICpuZ1N3aXRjaENhc2U9XCIndG9nZ2xlJ1wiPlxyXG4gICAgPG1hdC1zbGlkZS10b2dnbGUgW2NoZWNrZWRdPVwidmFsdWVcIj48L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgPC9zcGFuPlxyXG5cclxuICA8c3BhbiBjbGFzcz1cImRpc2NcIiAqbmdTd2l0Y2hDYXNlPVwiJ3RvZ2dsZUJ0bidcIj5cclxuICAgIDxzcGFuPnt7dmFsdWV9fTwvc3Bhbj5cclxuICA8L3NwYW4+XHJcbiAgPHNwYW4gY2xhc3M9XCJkaXNjXCIgKm5nU3dpdGNoQ2FzZT1cIid0ZWxlcGhvbmUnXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICA8YmRpPnt7IHZhbHVlIH19PC9iZGk+XHJcbiAgICA8L2Rpdj5cclxuICA8L3NwYW4+XHJcblxyXG4gIDxzcGFuIGNsYXNzPVwiZGlzY1wiICpuZ1N3aXRjaENhc2U9XCInY3VycmVuY3knXCI+XHJcbiAgICA8c3Bhbj57e3ZhbHVlICB8IG51bWJlcjonMS4yLTInfX08L3NwYW4+XHJcbiAgPC9zcGFuPlxyXG5cclxuICA8c3BhbiBjbGFzcz1cImRpc2NcIiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCI+XHJcbiAgICBAaWYoZGF0ZVR5cGUgPT09ICdoaWpyaScpe1xyXG4gICAgICA8c3Bhbj5cclxuICAgICAgICB7eyB2YWx1ZSB9fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICB9XHJcbiAgIEBpZihkYXRlVHlwZSA9PT0gJ3llYXJPbmx5Jyl7XHJcbiAgICA8c3Bhbj5cclxuICAgICAge3sgdmFsdWUgfX1cclxuICAgIDwvc3Bhbj5cclxuICAgfVxyXG5AaWYoZGF0ZVR5cGUgIT09ICdoaWpyaScgJiYgZGF0ZVR5cGUgIT09ICd5ZWFyT25seScgJiYgIXZhbHVlPy5zdGFydERhdGUpe1xyXG4gIDxzcGFuPlxyXG4gICAge3t2YWx1ZSAgfCBkYXRlIDonZGQvTU0veXl5eScgOiAnR01UKzMnfX1cclxuPCEtLSAgICB7eyBnZXREYXRlKHZhbHVlKSB9fS0tPlxyXG4gIDwvc3Bhbj5cclxufVxyXG4gIEBpZihkYXRlVHlwZSAhPT0gJ2hpanJpJyAmJiBkYXRlVHlwZSAhPT0gJ3llYXJPbmx5JyAmJiB2YWx1ZT8uc3RhcnREYXRlKXtcclxuICAgIDxzcGFuPlxyXG4gICAgICB7e3ZhbHVlPy5bJ3N0YXJ0RGF0ZSddICB8IGRhdGUgOidkZC9NTS95eXl5J319XHJcbiAgICAgIC1cclxuICAgICAge3t2YWx1ZT8uWydlbmREYXRlJ10gIHwgZGF0ZSA6J2RkL01NL3l5eXknfX1cclxuICAgIDwvc3Bhbj5cclxuICB9XHJcblxyXG4gIDwvc3Bhbj5cclxuXHJcbiAgPHNwYW4gY2xhc3M9XCJkaXNjXCIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlSGlqcmknXCI+XHJcbiAgICB7eyB2YWx1ZSB9fVxyXG4gIDwvc3Bhbj5cclxuXHJcbiAgPHNwYW4gY2xhc3M9XCJkaXNjIGJyZWFrTGluZSBmYy1jb3JhbCBjdXJzb3ItcG9pbnRlclwiICpuZ1N3aXRjaENhc2U9XCInbGluaydcIj5cclxuICAgIDxhIFtocmVmXT1cInZhbHVlXCIgdGFyZ2V0PVwiX2JsYW5rXCI+e3snVmlldycgfCB0cmFuc2xhdGV9fSB7eyBsYWJlbCB9fSA8L2E+XHJcbiAgPC9zcGFuPlxyXG4gIDxzcGFuIGNsYXNzPVwiZGlzYyBicmVha0xpbmVcIiAqbmdTd2l0Y2hDYXNlPVwiJ2Zvcm1JZExpbmsnXCI+XHJcbiAgICA8YSAoY2xpY2spPVwidmlld0Zvcm0odmFsdWUpXCI+e3sgdmFsdWUgfX0gPC9hPlxyXG4gIDwvc3Bhbj5cclxuICA8c3BhbiBbbmdDbGFzc109XCJ7J2JyZWFrTGluZSc6ICFpbnNpZGVUYWJsZX1cIiBjbGFzcz1cImRpc2MgXCIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiPlxyXG4gICAge3sgdmFsdWUgfX1cclxuICA8L3NwYW4+XHJcbiAgPHNwYW4gW25nQ2xhc3NdPVwieydicmVha0xpbmUnOiAhaW5zaWRlVGFibGV9XCIgY2xhc3M9XCJkaXNjIFwiICAqbmdTd2l0Y2hDYXNlPVwiJ211bHRpcGxlU2VsZWN0J1wiPlxyXG4gICAgQGZvcihpdGVtIG9mIHZhbHVlOyB0cmFjayAkaW5kZXg7IGxldCBpID0kaW5kZXgpe1xyXG4gICAgICA8c3Bhbj57e2l0ZW0udmFsdWV9fVxyXG4gICAgICAgIEBpZighKGkgPT09IHZhbHVlLmxlbmd0aC0xKSl7XHJcbiAgICAgICAgICA8c3Bhbj4sIDwvc3Bhbj5cclxuICAgICAgICB9XHJcbiAgICA8L3NwYW4+XHJcbiAgICB9XHJcblxyXG4gIDwvc3Bhbj5cclxuICA8c3BhbiBbbmdDbGFzc109XCJ7J2JyZWFrTGluZSc6ICFpbnNpZGVUYWJsZX1cIiBjbGFzcz1cImRpc2MgXCIgW2lubmVySFRNTF09XCJ2YWx1ZVwiICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgPC9zcGFuPlxyXG48L25nLWNvbnRhaW5lcj5cclxuIl19