@arsedizioni/ars-utils 18.4.102 → 18.4.104

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/clipper.common/common/definitions.d.ts +1 -0
  2. package/esm2022/clipper.common/common/common.module.mjs +5 -5
  3. package/esm2022/clipper.common/common/definitions.mjs +1 -1
  4. package/esm2022/clipper.common/common/interceptors/auth.interceptor.mjs +4 -4
  5. package/esm2022/clipper.common/common/services/clipper.service.mjs +4 -4
  6. package/esm2022/clipper.ui/ui/browser-dialog/browser-dialog.component.mjs +4 -4
  7. package/esm2022/clipper.ui/ui/document/document.component.mjs +4 -4
  8. package/esm2022/clipper.ui/ui/document-index/document-index.component.mjs +4 -4
  9. package/esm2022/clipper.ui/ui/document-manager/document-manager.mjs +4 -4
  10. package/esm2022/clipper.ui/ui/document-menu/document-menu.component.mjs +4 -4
  11. package/esm2022/clipper.ui/ui/references/references.component.mjs +4 -4
  12. package/esm2022/clipper.ui/ui/search-calendar/search-calendar.component.mjs +4 -4
  13. package/esm2022/clipper.ui/ui/search-dialog/search-dialog.component.mjs +4 -4
  14. package/esm2022/clipper.ui/ui/search-facets/search-facets.component.mjs +4 -4
  15. package/esm2022/clipper.ui/ui/search-free-text-help/search-free-text-help.component.mjs +4 -4
  16. package/esm2022/clipper.ui/ui/search-free-text-query-builder/search-free-text-query-builder.component.mjs +4 -4
  17. package/esm2022/clipper.ui/ui/search-result-item/search-result-item.component.mjs +4 -4
  18. package/esm2022/clipper.ui/ui/search-result-manager/search-result-manager.mjs +4 -4
  19. package/esm2022/core/core.module.mjs +9 -9
  20. package/esm2022/core/dateFnsAdapter.mjs +4 -4
  21. package/esm2022/core/directives/autoFocusDirective.mjs +4 -4
  22. package/esm2022/core/directives/changeDateIntervalDirective.mjs +4 -4
  23. package/esm2022/core/directives/copyClipboardDirective.mjs +5 -5
  24. package/esm2022/core/directives/validators.mjs +37 -37
  25. package/esm2022/core/pipes/format.pipe.mjs +5 -5
  26. package/esm2022/core/pipes/replace.pipe.mjs +5 -5
  27. package/esm2022/core/pipes/safe-html.pipe.mjs +5 -5
  28. package/esm2022/core/pipes/safe-url.pipe.mjs +5 -5
  29. package/esm2022/core/pipes/search-callback.pipe.mjs +4 -4
  30. package/esm2022/core/pipes/search-filter.pipe.mjs +5 -5
  31. package/esm2022/core/services/broadcast.service.mjs +4 -4
  32. package/esm2022/core/services/environment.service.mjs +4 -4
  33. package/esm2022/core/services/screen.service.mjs +4 -4
  34. package/esm2022/core/services/theme.service.mjs +4 -4
  35. package/esm2022/evolution.common/common/common.module.mjs +5 -5
  36. package/esm2022/evolution.common/common/interceptors/auth.interceptor.mjs +4 -4
  37. package/esm2022/evolution.common/common/services/evolution.service.mjs +4 -4
  38. package/esm2022/help/components/help-viewer/help-viewer.component.mjs +7 -7
  39. package/esm2022/help/help.module.mjs +5 -5
  40. package/esm2022/help/services/help.service.mjs +4 -4
  41. package/esm2022/support.common/common/common.module.mjs +5 -5
  42. package/esm2022/support.common/common/interceptors/auth.interceptor.mjs +4 -4
  43. package/esm2022/support.common/common/services/support.service.mjs +4 -4
  44. package/esm2022/support.ui/ui/notifications-browser/notification/notification.component.mjs +4 -4
  45. package/esm2022/support.ui/ui/notifications-browser/notifications-browser.component.mjs +4 -4
  46. package/esm2022/tinymce/full-screen-editor/full-screen-editor.component.mjs +4 -4
  47. package/esm2022/tinymce/tinymce.module.mjs +5 -5
  48. package/esm2022/ui/ui/dialogs/busy/busy-dialog.component.mjs +4 -4
  49. package/esm2022/ui/ui/dialogs/confirm/confirm-dialog.component.mjs +4 -4
  50. package/esm2022/ui/ui/dialogs/credentials/credentials-dialog.component.mjs +4 -4
  51. package/esm2022/ui/ui/dialogs/info/info-dialog.component.mjs +4 -4
  52. package/esm2022/ui/ui/dialogs/recover-password/recover-password-dialog.component.mjs +4 -4
  53. package/esm2022/ui/ui/dialogs/reset-password/reset-password-dialog.component.mjs +4 -4
  54. package/esm2022/ui/ui/dialogs/toast/toast.component.mjs +4 -4
  55. package/esm2022/ui/ui/paginatorIntl.mjs +4 -4
  56. package/esm2022/ui/ui/services/dialog.service.mjs +4 -4
  57. package/esm2022/ui/ui/services/ui.service.mjs +4 -4
  58. package/esm2022/ui/ui/ui.module.mjs +5 -5
  59. package/esm2022/ui.application/ui/components/button-selector/button-selector.component.mjs +4 -4
  60. package/esm2022/ui.application/ui/components/button-toggle/button-toggle.component.mjs +4 -4
  61. package/esm2022/ui.application/ui/components/calendar-empty-header/calendar-empy-header.component.mjs +4 -4
  62. package/esm2022/ui.application/ui/components/chips-selector/chips-selector.component.mjs +4 -4
  63. package/esm2022/ui.application/ui/components/file-input/file-input.component.mjs +4 -4
  64. package/esm2022/ui.application/ui/components/file-preview/file-preview.component.mjs +4 -4
  65. package/esm2022/ui.application/ui/components/filter-bar/filter-bar.component.mjs +4 -4
  66. package/esm2022/ui.application/ui/dialogs/prompt/prompt-dialog.component.mjs +4 -4
  67. package/esm2022/ui.application/ui/dialogs/prompt-date/prompt-date-dialog.component.mjs +4 -4
  68. package/esm2022/ui.application/ui/dialogs/prompt-time/prompt-time-dialog.component.mjs +4 -4
  69. package/esm2022/ui.application/ui/dialogs/select/select-dialog.component.mjs +4 -4
  70. package/esm2022/ui.application/ui/dialogs/select-file/select-file-dialog.component.mjs +4 -4
  71. package/esm2022/ui.application/ui/dialogs/select-picture/select-picture-dialog.component.mjs +4 -4
  72. package/esm2022/ui.application/ui/dialogs/select-tree/select-tree-dialog.component.mjs +7 -7
  73. package/esm2022/ui.application/ui/dialogs/send-to/send-to-dialog.component.mjs +4 -4
  74. package/esm2022/ui.application/ui/directives/resize-table-column.directive.mjs +4 -4
  75. package/esm2022/ui.application/ui/services/applicationDialog.service.mjs +4 -4
  76. package/esm2022/ui.application/ui/ui.module.mjs +5 -5
  77. package/esm2022/ui.oauth/ui/components/login/login-oauth.component.mjs +4 -4
  78. package/esm2022/ui.oauth/ui/ui.module.mjs +5 -5
  79. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs +10 -10
  80. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs.map +1 -1
  81. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +39 -39
  82. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs.map +1 -1
  83. package/fesm2022/arsedizioni-ars-utils-core.mjs +92 -92
  84. package/fesm2022/arsedizioni-ars-utils-core.mjs.map +1 -1
  85. package/fesm2022/arsedizioni-ars-utils-evolution.common.mjs +10 -10
  86. package/fesm2022/arsedizioni-ars-utils-evolution.common.mjs.map +1 -1
  87. package/fesm2022/arsedizioni-ars-utils-help.mjs +13 -13
  88. package/fesm2022/arsedizioni-ars-utils-help.mjs.map +1 -1
  89. package/fesm2022/arsedizioni-ars-utils-support.common.mjs +10 -10
  90. package/fesm2022/arsedizioni-ars-utils-support.common.mjs.map +1 -1
  91. package/fesm2022/arsedizioni-ars-utils-support.ui.mjs +6 -6
  92. package/fesm2022/arsedizioni-ars-utils-support.ui.mjs.map +1 -1
  93. package/fesm2022/arsedizioni-ars-utils-tinymce.mjs +7 -7
  94. package/fesm2022/arsedizioni-ars-utils-tinymce.mjs.map +1 -1
  95. package/fesm2022/arsedizioni-ars-utils-ui.application.mjs +58 -58
  96. package/fesm2022/arsedizioni-ars-utils-ui.application.mjs.map +1 -1
  97. package/fesm2022/arsedizioni-ars-utils-ui.mjs +34 -34
  98. package/fesm2022/arsedizioni-ars-utils-ui.mjs.map +1 -1
  99. package/fesm2022/arsedizioni-ars-utils-ui.oauth.mjs +7 -7
  100. package/fesm2022/arsedizioni-ars-utils-ui.oauth.mjs.map +1 -1
  101. package/package.json +11 -11
@@ -321,10 +321,10 @@ export class SelectDialogComponent {
321
321
  this.canDelete.set(false);
322
322
  this.canEdit.set(false);
323
323
  }
324
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: SelectDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
325
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: SelectDialogComponent, isStandalone: true, selector: "ng-component", outputs: { done: "done", edit: "edit", view: "view", append: "append", delete: "delete", lookup: "lookup", lookupOptions: "lookupOptions", filter: "filter" }, host: { attributes: { "Bind": SystemUtils.generateUUID() } }, viewQueries: [{ propertyName: "paginator", first: true, predicate: ["paginator"], descendants: true }, { propertyName: "selection", first: true, predicate: ["selection"], descendants: true }], ngImport: i0, template: "<h2 mat-dialog-title>{{dialogData.title}}</h2>\r\n<div style=\"padding: 0 24px\">\r\n @if (dialogData.description) {\r\n <div class=\"selectfile-description\" [innerHtml]=\"dialogData.description | safeHtml\"></div>\r\n }\r\n <div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"20px\" fxFill>\r\n @if (!dialogData.canLookupWithOptions) {\r\n <div fxFlex=\"100\">\r\n <mat-form-field style='width:100%' [appearance]=\"dialogData.appearance\" subscriptSizing=\"dynamic\">\r\n <mat-label>Cerca...</mat-label>\r\n <input type=\"text\" cdkFocusInitial (keyup.Enter)=\"doFilter()\" matInput\r\n title=\"{{dialogData.canLookup ? 'Digita il testo e premi invio' : 'Digita il testo'}}\"\r\n [(ngModel)]=\"filterText\">\r\n @if (filterText) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"clearFilter()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n }\r\n @if (!dialogData.canLookupWithOptions && dialogData.canLookup && dialogData.lookupFields) {\r\n <div fxFlex=\"100\">\r\n <mat-form-field style='width:100%' [appearance]=\"dialogData.appearance\" subscriptSizing=\"dynamic\">\r\n <mat-label>Come...</mat-label>\r\n <mat-select [(value)]=\"lookupField\">\r\n @for (field of dialogData.lookupFields; track field) {\r\n <mat-option [value]=\"field.value\">\r\n {{field.name}}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n }\r\n @if (dialogData.canLookupWithOptions) {\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\">\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-button aria-label=\"Ricerca\" (click)=\"showFilterOptions()\">\r\n <mat-icon>search</mat-icon>Ricerca\r\n </button>\r\n </div>\r\n }\r\n @if (dialogData.canLookup && dialogData.canFilter) {\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" style=\"white-space:nowrap\">\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-button matTooltip=\"Filtra\" [attr.aria-label]=\"'Filtra'\"\r\n [matMenuTriggerFor]=\"menuFilter\" color=\"primary\">\r\n <mat-icon>filter_alt</mat-icon> {{filterOptionsInfo}} <mat-icon class=\"icon-menu-drop-down\">\r\n arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #menuFilter=\"matMenu\" class=\"mat-menu-300\">\r\n @for (f of filterOptions; track f) {\r\n\r\n @if (f.divider) {\r\n <mat-divider></mat-divider>\r\n }\r\n @if (f.groupName) {\r\n <span style='font-size:small; padding: 2px 4px;'><i><b>{{f.groupName}}</b></i></span>\r\n }\r\n @if (!f.groupName && !f.divider) {\r\n <button mat-menu-item (click)=\"doFilterByOptions(f)\" [attr.aria-label]=\"f.description\">\r\n @if (f.radio && f.value) {\r\n <span style=\"padding-left:40px\"></span>\r\n }\r\n <mat-icon>{{f.icon}}</mat-icon> {{f.title}}\r\n </button>\r\n }\r\n\r\n }\r\n </mat-menu>\r\n </div>\r\n }\r\n @if (canEdit() || canAppend() || canView() || canDelete()) {\r\n <div fxFlex=\"*\" fxLayoutAlign=\"end\" style=\"white-space:nowrap\">\r\n @if (canAppend()) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button (click)=\"doAppend()\">\r\n <mat-icon aria-label=\"Aggiungi\" matTooltip=\"Aggiungi\">add</mat-icon>\r\n </button>\r\n }\r\n @if (canEdit()) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button (click)=\"doEdit()\">\r\n <mat-icon aria-label=\"Modifica\" matTooltip=\"Modifica\">edit</mat-icon>\r\n </button>\r\n }\r\n @if (canView()) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button (click)=\"doView()\">\r\n <mat-icon aria-label=\"Mostra\" matTooltip=\"Mostra\">visibility</mat-icon>\r\n </button>\r\n }\r\n @if (canDelete()) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button (click)=\"doDelete()\">\r\n <mat-icon aria-label=\"Elimina\" matTooltip=\"Elimina\">delete</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n @if ((dialogData.multipleSelection || dialogData.header) && dialogData.items?.length > 0) {\r\n <div>\r\n <div fxLayout=\"row\" fxFalyoutGap=\"10px\" fxFill style=\"padding-top: 10px;\">\r\n @if (dialogData.multipleSelection) {\r\n <div fxFlex=\"72px\" fxFlexAlign=\"center\" style=\"padding-left: 8px;\">\r\n <mat-checkbox (change)=\"$event ? masterSelectionToggle($event) : null\"\r\n [indeterminate]=\"selectionMasterIndeterminate()\" [checked]=\"selectionMasterChecked()\"\r\n [attr.aria-label]=\"'Seleziona/deseleziona tutto'\" matTooltip=\"Seleziona/deseleziona tutto\">\r\n </mat-checkbox>\r\n </div>\r\n }\r\n <div fxFlex=\"100\" fxFlexAlign=\"center\">\r\n @if (dialogData.header) {\r\n <div [innerHtml]=\"dialogData.header | safeHtml\"></div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n<mat-dialog-content>\r\n <div fxLayout=\"column\" fxFill>\r\n @if (dialogData.canLookup && (!dialogData.items || dialogData.items.length == 0)) {\r\n <div class=\"message\"><i>\r\n @if (!dialogData.emptyMessage) {\r\n <span>Nessun elemento da visualizzare.<br>Esegui una nuova ricerca o modifica quella\r\n esistente.\r\n @if (dialogData.maxItems > 0) {\r\n <span>Saranno mostrati al massimo {{dialogData.maxItems}} elementi.</span>\r\n }\r\n </span>\r\n } @else {\r\n <span [innerHtml]=\"dialogData.emptyMessage | safeHtml\"></span>\r\n }\r\n </i>\r\n </div>\r\n }\r\n <mat-selection-list #selection (selectionChange)=\"select($event)\" dense hideSingleSelectionIndicator=\"true\"\r\n [multiple]=\"dialogData.multipleSelection\">\r\n @for (item of (dialogData.items | search: (!dialogData.canLookup ? filterText : '')); track item) {\r\n <mat-list-option [value]=\"item\" [selected]=\"item.selected\" checkboxPosition=\"before\">\r\n <div [innerHtml]=\"item.template | safeHtml\"></div>\r\n </mat-list-option>\r\n }\r\n </mat-selection-list>\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" fxLayoutGap=\"10px\" fxFill>\r\n <div style=\"padding-left:20px\">\r\n @if (selectionInfo()) {\r\n <span class=\"small\">selezione: &nbsp;</span><span class=\"bold\">{{selectionInfo()}}</span>\r\n }\r\n </div>\r\n <div fxFlexAlign=\"center\">\r\n @if (canPaginate()) {\r\n <mat-paginator #paginator [hidePageSize]=\"true\" [pageSize]=\"dialogData.pageSize\" [showFirstLastButtons]=\"true\"\r\n (page)=\"doLookupPage($event)\" [length]=\"dialogData.total ?? 0\"></mat-paginator>\r\n\r\n }\r\n </div>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button color=\"primary\" (click)=\"ok()\" [disabled]=\"okDisabled()\">\r\n <span>{{dialogData.mustSelect ? dialogData.okCaption : 'Chiudi'}}</span>\r\n </button>\r\n @if (dialogData.mustSelect) {\r\n <button mat-stroked-button mat-dialog-close cdkFocusInitial color=\"primary\">\r\n <span>Annulla</span>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</mat-dialog-actions>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.fill{min-width:100%!important;max-width:100%!important;width:100%!important;min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto;height:100%}.scroll-hidden{overflow:hidden;height:100%}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller}.small{font-size:small!important;line-height:16px}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}@supports (-webkit-line-clamp: 2){.truncated{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@supports (-webkit-line-clamp: 2){.truncated span,.truncated div{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-color-accent, #7894ae)!important}.primary{color:var(--ars-color-primary, #00a293)!important}.secondary{color:var(--ars-color-secondary, #4a635f)!important}.error{color:var(--ars-color-error, #ff5449)!important}.success{color:var(--ars-color-ok, #388E3C)!important}.warning{color:var(--ars-color-warning, #FFC107)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer .title-container,.drawer-small .title-container{padding:20px 5px 20px 0}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding:14px 5px 20px 0}.drawer .title,.drawer-small .title{font-size:1.2em;font-weight:600;padding-left:20px;min-width:150px;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:10px;padding-right:10px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-left:10px!important;padding-right:10px!important;padding-bottom:20px!important}@media screen and (min-width: 0px) and (max-width: 430px){.drawer,.drawer-small{border-radius:0!important;min-width:100%!important;max-width:100%!important}}@media screen and (min-width: 431px){.drawer{min-width:420px!important;max-width:420px!important}.drawer .title{min-width:200px}.drawer .mat-expansion-panel-body{padding-left:15px!important;padding-right:15px!important;padding-bottom:20px!important}.drawer-small{min-width:360px!important;max-width:360px!important}}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b{font-weight:600}}.message{color:var(--ars-color-secondary, #4a635f);padding:20px;text-align:center}::ng-deep .mdc-list-item__primary-text,.mdc-list-item__content{white-space:normal!important}::ng-deep .mdc-list-item.mdc-list-item--with-one-line{height:unset!important;min-height:48px!important}\n"], dependencies: [{ kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i1.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i11.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i12.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i13.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i13.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i14.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "pipe", type: SearchFilterPipe, name: "search" }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
324
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: SelectDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
325
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.10", type: SelectDialogComponent, isStandalone: true, selector: "ng-component", outputs: { done: "done", edit: "edit", view: "view", append: "append", delete: "delete", lookup: "lookup", lookupOptions: "lookupOptions", filter: "filter" }, host: { attributes: { "Bind": SystemUtils.generateUUID() } }, viewQueries: [{ propertyName: "paginator", first: true, predicate: ["paginator"], descendants: true }, { propertyName: "selection", first: true, predicate: ["selection"], descendants: true }], ngImport: i0, template: "<h2 mat-dialog-title>{{dialogData.title}}</h2>\r\n<div style=\"padding: 0 24px\">\r\n @if (dialogData.description) {\r\n <div class=\"selectfile-description\" [innerHtml]=\"dialogData.description | safeHtml\"></div>\r\n }\r\n <div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"20px\" fxFill>\r\n @if (!dialogData.canLookupWithOptions) {\r\n <div fxFlex=\"100\">\r\n <mat-form-field style='width:100%' [appearance]=\"dialogData.appearance\" subscriptSizing=\"dynamic\">\r\n <mat-label>Cerca...</mat-label>\r\n <input type=\"text\" cdkFocusInitial (keyup.Enter)=\"doFilter()\" matInput\r\n title=\"{{dialogData.canLookup ? 'Digita il testo e premi invio' : 'Digita il testo'}}\"\r\n [(ngModel)]=\"filterText\">\r\n @if (filterText) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"clearFilter()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n }\r\n @if (!dialogData.canLookupWithOptions && dialogData.canLookup && dialogData.lookupFields) {\r\n <div fxFlex=\"100\">\r\n <mat-form-field style='width:100%' [appearance]=\"dialogData.appearance\" subscriptSizing=\"dynamic\">\r\n <mat-label>Come...</mat-label>\r\n <mat-select [(value)]=\"lookupField\">\r\n @for (field of dialogData.lookupFields; track field) {\r\n <mat-option [value]=\"field.value\">\r\n {{field.name}}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n }\r\n @if (dialogData.canLookupWithOptions) {\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\">\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-button aria-label=\"Ricerca\" (click)=\"showFilterOptions()\">\r\n <mat-icon>search</mat-icon>Ricerca\r\n </button>\r\n </div>\r\n }\r\n @if (dialogData.canLookup && dialogData.canFilter) {\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" style=\"white-space:nowrap\">\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-button matTooltip=\"Filtra\" [attr.aria-label]=\"'Filtra'\"\r\n [matMenuTriggerFor]=\"menuFilter\" color=\"primary\">\r\n <mat-icon>filter_alt</mat-icon> {{filterOptionsInfo}} <mat-icon class=\"icon-menu-drop-down\">\r\n arrow_drop_down</mat-icon>\r\n </button>\r\n <mat-menu #menuFilter=\"matMenu\" class=\"mat-menu-300\">\r\n @for (f of filterOptions; track f) {\r\n\r\n @if (f.divider) {\r\n <mat-divider></mat-divider>\r\n }\r\n @if (f.groupName) {\r\n <span style='font-size:small; padding: 2px 4px;'><i><b>{{f.groupName}}</b></i></span>\r\n }\r\n @if (!f.groupName && !f.divider) {\r\n <button mat-menu-item (click)=\"doFilterByOptions(f)\" [attr.aria-label]=\"f.description\">\r\n @if (f.radio && f.value) {\r\n <span style=\"padding-left:40px\"></span>\r\n }\r\n <mat-icon>{{f.icon}}</mat-icon> {{f.title}}\r\n </button>\r\n }\r\n\r\n }\r\n </mat-menu>\r\n </div>\r\n }\r\n @if (canEdit() || canAppend() || canView() || canDelete()) {\r\n <div fxFlex=\"*\" fxLayoutAlign=\"end\" style=\"white-space:nowrap\">\r\n @if (canAppend()) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button (click)=\"doAppend()\">\r\n <mat-icon aria-label=\"Aggiungi\" matTooltip=\"Aggiungi\">add</mat-icon>\r\n </button>\r\n }\r\n @if (canEdit()) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button (click)=\"doEdit()\">\r\n <mat-icon aria-label=\"Modifica\" matTooltip=\"Modifica\">edit</mat-icon>\r\n </button>\r\n }\r\n @if (canView()) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button (click)=\"doView()\">\r\n <mat-icon aria-label=\"Mostra\" matTooltip=\"Mostra\">visibility</mat-icon>\r\n </button>\r\n }\r\n @if (canDelete()) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button (click)=\"doDelete()\">\r\n <mat-icon aria-label=\"Elimina\" matTooltip=\"Elimina\">delete</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n @if ((dialogData.multipleSelection || dialogData.header) && dialogData.items?.length > 0) {\r\n <div>\r\n <div fxLayout=\"row\" fxFalyoutGap=\"10px\" fxFill style=\"padding-top: 10px;\">\r\n @if (dialogData.multipleSelection) {\r\n <div fxFlex=\"72px\" fxFlexAlign=\"center\" style=\"padding-left: 8px;\">\r\n <mat-checkbox (change)=\"$event ? masterSelectionToggle($event) : null\"\r\n [indeterminate]=\"selectionMasterIndeterminate()\" [checked]=\"selectionMasterChecked()\"\r\n [attr.aria-label]=\"'Seleziona/deseleziona tutto'\" matTooltip=\"Seleziona/deseleziona tutto\">\r\n </mat-checkbox>\r\n </div>\r\n }\r\n <div fxFlex=\"100\" fxFlexAlign=\"center\">\r\n @if (dialogData.header) {\r\n <div [innerHtml]=\"dialogData.header | safeHtml\"></div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n<mat-dialog-content>\r\n <div fxLayout=\"column\" fxFill>\r\n @if (dialogData.canLookup && (!dialogData.items || dialogData.items.length == 0)) {\r\n <div class=\"message\"><i>\r\n @if (!dialogData.emptyMessage) {\r\n <span>Nessun elemento da visualizzare.<br>Esegui una nuova ricerca o modifica quella\r\n esistente.\r\n @if (dialogData.maxItems > 0) {\r\n <span>Saranno mostrati al massimo {{dialogData.maxItems}} elementi.</span>\r\n }\r\n </span>\r\n } @else {\r\n <span [innerHtml]=\"dialogData.emptyMessage | safeHtml\"></span>\r\n }\r\n </i>\r\n </div>\r\n }\r\n <mat-selection-list #selection (selectionChange)=\"select($event)\" dense hideSingleSelectionIndicator=\"true\"\r\n [multiple]=\"dialogData.multipleSelection\">\r\n @for (item of (dialogData.items | search: (!dialogData.canLookup ? filterText : '')); track item) {\r\n <mat-list-option [value]=\"item\" [selected]=\"item.selected\" checkboxPosition=\"before\">\r\n <div [innerHtml]=\"item.template | safeHtml\"></div>\r\n </mat-list-option>\r\n }\r\n </mat-selection-list>\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" fxLayoutGap=\"10px\" fxFill>\r\n <div style=\"padding-left:20px\">\r\n @if (selectionInfo()) {\r\n <span class=\"small\">selezione: &nbsp;</span><span class=\"bold\">{{selectionInfo()}}</span>\r\n }\r\n </div>\r\n <div fxFlexAlign=\"center\">\r\n @if (canPaginate()) {\r\n <mat-paginator #paginator [hidePageSize]=\"true\" [pageSize]=\"dialogData.pageSize\" [showFirstLastButtons]=\"true\"\r\n (page)=\"doLookupPage($event)\" [length]=\"dialogData.total ?? 0\"></mat-paginator>\r\n\r\n }\r\n </div>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button color=\"primary\" (click)=\"ok()\" [disabled]=\"okDisabled()\">\r\n <span>{{dialogData.mustSelect ? dialogData.okCaption : 'Chiudi'}}</span>\r\n </button>\r\n @if (dialogData.mustSelect) {\r\n <button mat-stroked-button mat-dialog-close cdkFocusInitial color=\"primary\">\r\n <span>Annulla</span>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</mat-dialog-actions>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.fill{min-width:100%!important;max-width:100%!important;width:100%!important;min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto;height:100%}.scroll-hidden{overflow:hidden;height:100%}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller}.small{font-size:small!important;line-height:16px}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}@supports (-webkit-line-clamp: 2){.truncated{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@supports (-webkit-line-clamp: 2){.truncated span,.truncated div{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-color-accent, #7894ae)!important}.primary{color:var(--ars-color-primary, #00a293)!important}.secondary{color:var(--ars-color-secondary, #4a635f)!important}.error{color:var(--ars-color-error, #ff5449)!important}.success{color:var(--ars-color-ok, #388E3C)!important}.warning{color:var(--ars-color-warning, #FFC107)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer .title-container,.drawer-small .title-container{padding:20px 5px 20px 0}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding:14px 5px 20px 0}.drawer .title,.drawer-small .title{font-size:1.2em;font-weight:600;padding-left:20px;min-width:150px;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:10px;padding-right:10px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-left:10px!important;padding-right:10px!important;padding-bottom:20px!important}@media screen and (min-width: 0px) and (max-width: 430px){.drawer,.drawer-small{border-radius:0!important;min-width:100%!important;max-width:100%!important}}@media screen and (min-width: 431px){.drawer{min-width:420px!important;max-width:420px!important}.drawer .title{min-width:200px}.drawer .mat-expansion-panel-body{padding-left:15px!important;padding-right:15px!important;padding-bottom:20px!important}.drawer-small{min-width:360px!important;max-width:360px!important}}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b{font-weight:600}}.message{color:var(--ars-color-secondary, #4a635f);padding:20px;text-align:center}::ng-deep .mdc-list-item__primary-text,.mdc-list-item__content{white-space:normal!important}::ng-deep .mdc-list-item.mdc-list-item--with-one-line{height:unset!important;min-height:48px!important}\n"], dependencies: [{ kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i1.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i11.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i12.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i13.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i13.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i14.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "pipe", type: SearchFilterPipe, name: "search" }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
326
326
  }
327
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: SelectDialogComponent, decorators: [{
327
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: SelectDialogComponent, decorators: [{
328
328
  type: Component,
329
329
  args: [{ host: { 'Bind': SystemUtils.generateUUID() }, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
330
330
  FlexLayoutModule,
@@ -371,4 +371,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
371
371
  }], filter: [{
372
372
  type: Output
373
373
  }] } });
374
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkuYXBwbGljYXRpb24vdWkvZGlhbG9ncy9zZWxlY3Qvc2VsZWN0LWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkuYXBwbGljYXRpb24vdWkvZGlhbG9ncy9zZWxlY3Qvc2VsZWN0LWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBcUIsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdJLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBNEMsTUFB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QUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIGluamVjdCxcclxuICBzaWduYWxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94Q2hhbmdlLCBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveFwiO1xyXG5pbXBvcnQgeyBNYXRPcHRpb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ0FjdGlvbnMsIE1hdERpYWxvZ0Nsb3NlLCBNYXREaWFsb2dDb250ZW50LCBNYXREaWFsb2dSZWYsIE1hdERpYWxvZ1RpdGxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXJcIjtcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XHJcbmltcG9ydCB7IE1hdExpc3RNb2R1bGUsIE1hdFNlbGVjdGlvbkxpc3QsIE1hdFNlbGVjdGlvbkxpc3RDaGFuZ2UgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdFwiO1xyXG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL21lbnVcIjtcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yLCBNYXRQYWdpbmF0b3JNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0XCI7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcFwiO1xyXG5pbXBvcnQgeyBTYWZlSHRtbFBpcGUsIFNlYXJjaEZpbHRlclBpcGUsIFN5c3RlbVV0aWxzIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHtcclxuICBTZWxlY3REaWFsb2dBcHBlbmQsXHJcbiAgU2VsZWN0RGlhbG9nRGF0YSxcclxuICBTZWxlY3REaWFsb2dEZWxldGUsXHJcbiAgU2VsZWN0RGlhbG9nRmlsdGVyLFxyXG4gIFNlbGVjdERpYWxvZ0xvb2t1cCxcclxuICBTZWxlY3REaWFsb2dSZXN1bHQsXHJcbiAgU2VsZWN0YWJsZUl0ZW0sXHJcbn0gZnJvbSBcIi4uLy4uL2RlZmluaXRpb25zXCI7XHJcbmltcG9ydCB7IEZsZXhMYXlvdXRNb2R1bGUgfSBmcm9tICdAbmdicmFja2V0L25neC1sYXlvdXQnO1xyXG5cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBob3N0OiB7ICdCaW5kJzogU3lzdGVtVXRpbHMuZ2VuZXJhdGVVVUlEKCkgfSxcclxuICB0ZW1wbGF0ZVVybDogXCIuL3NlbGVjdC1kaWFsb2cuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vc2VsZWN0LWRpYWxvZy5jb21wb25lbnQuc2Nzc1wiXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEZsZXhMYXlvdXRNb2R1bGUsXHJcbiAgICBNYXREaWFsb2dUaXRsZSxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxyXG4gICAgTWF0T3B0aW9uTW9kdWxlLFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICAgIE1hdE1lbnVNb2R1bGUsXHJcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxyXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXHJcbiAgICBNYXREaWFsb2dDb250ZW50LFxyXG4gICAgTWF0TGlzdE1vZHVsZSxcclxuICAgIE1hdERpYWxvZ0FjdGlvbnMsXHJcbiAgICBNYXREaWFsb2dDbG9zZSxcclxuICAgIE1hdFBhZ2luYXRvck1vZHVsZSxcclxuICAgIFNlYXJjaEZpbHRlclBpcGUsXHJcbiAgICBTYWZlSHRtbFBpcGVcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VsZWN0RGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKCdwYWdpbmF0b3InKSBwYWdpbmF0b3IhOiBNYXRQYWdpbmF0b3I7XHJcbiAgQFZpZXdDaGlsZChcInNlbGVjdGlvblwiKSBzZWxlY3Rpb24hOiBNYXRTZWxlY3Rpb25MaXN0O1xyXG5cclxuICBwcml2YXRlIGNoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuICBwcml2YXRlIGRpYWxvZ1JlZiA9IGluamVjdChNYXREaWFsb2dSZWY8U2VsZWN0RGlhbG9nQ29tcG9uZW50Pik7XHJcbiAgcHJvdGVjdGVkIGRpYWxvZ0RhdGE6IFNlbGVjdERpYWxvZ0RhdGEgPSBpbmplY3QoTUFUX0RJQUxPR19EQVRBKSA/PyB7IGFwcGVhcmFuY2U6ICdvdXRsaW5lJywgdGl0bGU6ICdTZWxlemlvbmEnIH07XHJcblxyXG4gIEBPdXRwdXQoKSBkb25lID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3REaWFsb2dSZXN1bHQ+KCk7XHJcbiAgQE91dHB1dCgpIGVkaXQgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGFibGVJdGVtPigpO1xyXG4gIEBPdXRwdXQoKSB2aWV3ID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3RhYmxlSXRlbT4oKTtcclxuICBAT3V0cHV0KCkgYXBwZW5kID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3REaWFsb2dBcHBlbmQ+KCk7XHJcbiAgQE91dHB1dCgpIGRlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0RGlhbG9nRGVsZXRlPigpO1xyXG4gIEBPdXRwdXQoKSBsb29rdXAgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdERpYWxvZ0xvb2t1cD4oKTtcclxuICBAT3V0cHV0KCkgbG9va3VwT3B0aW9ucyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3REaWFsb2dGaWx0ZXI+KCk7XHJcblxyXG4gIHByb3RlY3RlZCBjYW5FZGl0ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcm90ZWN0ZWQgY2FuVmlldyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHJvdGVjdGVkIGNhbkFwcGVuZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHJvdGVjdGVkIGNhbkRlbGV0ZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHJvdGVjdGVkIGNhblBhZ2luYXRlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgLy8gSGFuZGxlIHN1Ym1pdCBidXR0b24gYWN0aXZpdHlcclxuICBwcm90ZWN0ZWQgb2tEaXNhYmxlZCA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcclxuXHJcbiAgLy8gVXNlZCBmb3IgYXJyYXkgZmlsdGVyaW5nXHJcbiAgcHJvdGVjdGVkIGZpbHRlclRleHQ6IHN0cmluZyA9IFwiXCI7XHJcbiAgcHJvdGVjdGVkIGZpbHRlck9wdGlvbnM6IGFueSA9IFtdO1xyXG4gIHByb3RlY3RlZCBmaWx0ZXJPcHRpb25zSW5mbzogc3RyaW5nID0gXCJUdXR0b1wiO1xyXG5cclxuICAvLyBVc2VkIHRvIHNpbmNyb25pemUgbG9va3VwIGZpZWxkcyBhbmQgcGFyYW1zXHJcbiAgcHJvdGVjdGVkIGxvb2t1cEZpZWxkOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHByaXZhdGUgbG9va3VwUGFyYW1zOiBhbnkgfCBudWxsO1xyXG5cclxuXHJcbiAgLy8gVXNlZCB0byBkaXNwbGF5IHNlbGVjdGVkIGVsZW1lbnRzXHJcbiAgcHJvdGVjdGVkIHNlbGVjdGlvbkluZm8gPSBzaWduYWw8c3RyaW5nPihudWxsKTtcclxuICBwcm90ZWN0ZWQgc2VsZWN0aW9uTWFzdGVySW5kZXRlcm1pbmF0ZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHJvdGVjdGVkIHNlbGVjdGlvbk1hc3RlckNoZWNrZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICghdGhpcy5kaWFsb2dEYXRhLmFwcGVhcmFuY2UpIHtcclxuICAgICAgdGhpcy5kaWFsb2dEYXRhLmFwcGVhcmFuY2UgPSAnb3V0bGluZSc7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuZGlhbG9nRGF0YS50aXRsZSkge1xyXG4gICAgICB0aGlzLmRpYWxvZ0RhdGEudGl0bGUgPSAnU2VsZXppb25hJztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEubXVsdGlwbGVTZWxlY3Rpb24gJiYgIXRoaXMuZGlhbG9nRGF0YS5pdGVtcykge1xyXG4gICAgICB0aGlzLmRpYWxvZ0RhdGEubXVsdGlwbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmRpYWxvZ0RhdGEub2tDYXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nRGF0YS5va0NhcHRpb24gPSBcIk9rXCI7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNhbkFwcGVuZC5zZXQodGhpcy5kaWFsb2dEYXRhLmNhbkFwcGVuZCk7XHJcbiAgICBpZiAodGhpcy5kaWFsb2dEYXRhLmNhbkxvb2t1cCkge1xyXG4gICAgICB0aGlzLmRpYWxvZ0RhdGEuaXRlbXMgPSBbXTtcclxuICAgICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5sb29rdXBGaWVsZHMgJiYgdGhpcy5kaWFsb2dEYXRhLmxvb2t1cEZpZWxkcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5sb29rdXBGaWVsZCA9IHRoaXMuZGlhbG9nRGF0YS5sb29rdXBGaWVsZHNbMF0udmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5jYW5GaWx0ZXIpIHtcclxuICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMgPSB0aGlzLmRpYWxvZ0RhdGEuZmlsdGVycztcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5kaWFsb2dEYXRhLmNhblBhZ2luYXRlKSB7XHJcbiAgICAgICAgdGhpcy5jYW5QYWdpbmF0ZS5zZXQodGhpcy5kaWFsb2dEYXRhLmNhblBhZ2luYXRlKTtcclxuICAgICAgICBpZiAoIXRoaXMuZGlhbG9nRGF0YS5wYWdlU2l6ZSkge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dEYXRhLnBhZ2VTaXplID0gMTAwXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLm9rRGlzYWJsZWQuc2V0KHRoaXMuZGlhbG9nRGF0YS5tdXN0U2VsZWN0KTtcclxuXHJcbiAgICAvLyBBcHBseSBmaWx0ZXIgaWYgZXhpc3RzXHJcbiAgICBpZiAodGhpcy5kaWFsb2dEYXRhLmZpbHRlciB8fCB0aGlzLmRpYWxvZ0RhdGEubG9va3VwT25Jbml0KSB7XHJcbiAgICAgIHRoaXMuZG9GaWx0ZXIodGhpcy5kaWFsb2dEYXRhLmZpbHRlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNYXJrIGZvciBjaGVja1xyXG4gICAqIEBwYXJhbSBuZXdUb3RhbDogdGhlIG9wdGlvbmFsIG5ldyB0b3RhbFxyXG4gICAqL1xyXG4gIG5vdGlmeUNoYW5nZXMobmV3VG90YWw6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQgPSAwKSB7XHJcbiAgICB0aGlzLmRpYWxvZ0RhdGEudG90YWwgPSBuZXdUb3RhbDtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGV2ZXJ5IGVsZW1lbnQgYXJlIHNlbGVjdGVkXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpc0FsbFNlbGVjdGVkKCkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5zZWxlY3Rpb24gJiZcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZCAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQubGVuZ3RoID09PSB0aGlzLmRpYWxvZ0RhdGEuaXRlbXMubGVuZ3RoXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2tzIGlmIGV4aXN0cyBhIHNlbGVjdGlvblxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFzU2VsZWN0aW9uKCkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5zZWxlY3Rpb24gJiZcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZCAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQubGVuZ3RoID4gMFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1hc3RlciBzZWxlY3Rpb24gdG9nZ2xlXHJcbiAgICogQHBhcmFtIGU6IHRoZSBldmVudFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBtYXN0ZXJTZWxlY3Rpb25Ub2dnbGUoZTogTWF0Q2hlY2tib3hDaGFuZ2UpIHtcclxuICAgIGlmIChlLmNoZWNrZWQpXHJcbiAgICAgIC8vIERlc2VsZWN0IGlmIG5vdCBhbGxzZWxlY3RlZCBzbyB0aGF0IHRvZ2dsZSBtYWtlcyB0aGUgcmlnaHQgY2hvaWNlXHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdEFsbCgpO1xyXG4gICAgZWxzZSB0aGlzLnNlbGVjdGlvbi5kZXNlbGVjdEFsbCgpO1xyXG4gICAgdGhpcy5zZWxlY3Rpb25NYXN0ZXJJbmRldGVybWluYXRlLnNldChmYWxzZSk7XHJcbiAgICB0aGlzLnNlbGVjdGlvbk1hc3RlckNoZWNrZWQuc2V0KGUuY2hlY2tlZCk7XHJcbiAgICB0aGlzLm9rRGlzYWJsZWQuc2V0KFxyXG4gICAgICB0aGlzLmRpYWxvZ0RhdGEubXVzdFNlbGVjdCAmJlxyXG4gICAgICAoIXRoaXMuc2VsZWN0aW9uIHx8IHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5sZW5ndGggPT09IDApKTtcclxuICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uSW5mbygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIHNlbGVjdGlvbi9kZXNlbGVjdGlvbiBvZiBhbiBpdGVtXHJcbiAgICogQHBhcmFtIGU6IHRoZSBldmVudFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBzZWxlY3QoZTogTWF0U2VsZWN0aW9uTGlzdENoYW5nZSkge1xyXG4gICAgaWYgKCF0aGlzLmRpYWxvZ0RhdGEubXVsdGlwbGVTZWxlY3Rpb24pIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uZGVzZWxlY3RBbGwoKTtcclxuICAgICAgaWYgKGUub3B0aW9ucz8ubGVuZ3RoID4gMClcclxuICAgICAgICBlLm9wdGlvbnNbMF0uc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLm9rRGlzYWJsZWQuc2V0KGZhbHNlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub2tEaXNhYmxlZC5zZXQoXHJcbiAgICAgICAgdGhpcy5kaWFsb2dEYXRhLm11c3RTZWxlY3QgJiZcclxuICAgICAgICAoIXRoaXMuc2VsZWN0aW9uIHx8XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQubGVuZ3RoID09PSAwKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVXBkYXRlIGVkaXRvcnNcclxuICAgIHRoaXMuY2FuQXBwZW5kLnNldCh0aGlzLmRpYWxvZ0RhdGEuY2FuQXBwZW5kKTtcclxuICAgIHRoaXMuY2FuRWRpdC5zZXQoXHJcbiAgICAgIHRoaXMuZGlhbG9nRGF0YS5jYW5FZGl0ICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5sZW5ndGggPT09IDEpO1xyXG4gICAgdGhpcy5jYW5WaWV3LnNldChcclxuICAgICAgdGhpcy5kaWFsb2dEYXRhLmNhblZpZXcgJiZcclxuICAgICAgdGhpcy5zZWxlY3Rpb24gJiZcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmxlbmd0aCA9PT0gMSk7XHJcbiAgICB0aGlzLmNhbkRlbGV0ZS5zZXQoXHJcbiAgICAgIHRoaXMuZGlhbG9nRGF0YS5jYW5EZWxldGUgJiZcclxuICAgICAgdGhpcy5zZWxlY3Rpb24gJiZcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmxlbmd0aCA+IDApO1xyXG4gICAgdGhpcy5zZWxlY3Rpb25NYXN0ZXJJbmRldGVybWluYXRlLnNldChcclxuICAgICAgIXRoaXMuaXNBbGxTZWxlY3RlZCgpICYmIHRoaXMuaGFzU2VsZWN0aW9uKCkpO1xyXG4gICAgdGhpcy5zZWxlY3Rpb25NYXN0ZXJDaGVja2VkLnNldCh0aGlzLmhhc1NlbGVjdGlvbigpKTtcclxuICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uSW5mbygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHNlbGVjdGlvbiBpbmZvXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1cGRhdGVTZWxlY3Rpb25JbmZvKCkge1xyXG4gICAgLy8gVXBkYXRlIHNlbGVjdGlvbiBpbmZvXHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24gJiYgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmxlbmd0aCA+IDAgJiYgdGhpcy5kaWFsb2dEYXRhLm11bHRpcGxlU2VsZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uSW5mby5zZXQoXHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmxlbmd0aCArXHJcbiAgICAgICAgXCIgLyBcIiArXHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24ub3B0aW9ucy5sZW5ndGgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb25JbmZvLnNldChudWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyIGN1cnJlbnQgc2VsZWN0aW9uXHJcbiAgICovXHJcbiAgY2xlYXJTZWxlY3Rpb24oKSB7XHJcbiAgICB0aGlzLnNlbGVjdGlvbk1hc3RlckluZGV0ZXJtaW5hdGUuc2V0KGZhbHNlKTtcclxuICAgIHRoaXMuc2VsZWN0aW9uTWFzdGVyQ2hlY2tlZC5zZXQoZmFsc2UpO1xyXG4gICAgdGhpcy5zZWxlY3Rpb24uZGVzZWxlY3RBbGwoKTtcclxuICAgIHRoaXMuc2VsZWN0aW9uSW5mby5zZXQobnVsbCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdWJtaXQgc2VsZWN0aW9uXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIG9rKCkge1xyXG4gICAgaWYgKCF0aGlzLm9rRGlzYWJsZWQoKSkge1xyXG4gICAgICAvLyBNdWx0aSBzZWxlY3Rpb25cclxuICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtczogYW55ID0gW107XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgc2VsZWN0ZWRJdGVtcy5wdXNoKGVsZW1lbnQudmFsdWUpO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kb25lLmVtaXQoeyBzZWxlY3RlZEl0ZW1zOiBzZWxlY3RlZEl0ZW1zIH0pO1xyXG4gICAgICB9LCA1MDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgZmlsdGVyXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGNsZWFyRmlsdGVyKCkge1xyXG4gICAgdGhpcy5maWx0ZXJUZXh0ID0gXCJcIjtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBTaG93IGZpbHRlciBvcHRpb25zXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHNob3dGaWx0ZXJPcHRpb25zKCkge1xyXG4gICAgaWYgKHRoaXMubG9va3VwT3B0aW9ucykge1xyXG4gICAgICB0aGlzLmxvb2t1cE9wdGlvbnMuZW1pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQXBwbHkgZmlsdGVyXHJcbiAgICogQHBhcmFtIHRleHQgOiB0aGUgc3RyaW5nIHRvIGZpbHRlciB0b1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBkb0ZpbHRlcih0ZXh0OiBzdHJpbmcgPSBudWxsLCBlOiBhbnkgPSBudWxsKSB7XHJcbiAgICBpZiAodGV4dCkge1xyXG4gICAgICB0aGlzLmZpbHRlclRleHQgPSB0ZXh0O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5jYW5Mb29rdXApIHtcclxuICAgICAgaWYgKCFlIHx8IGUua2V5Q29kZSA9PT0gMTMpIHtcclxuICAgICAgICB0aGlzLmxvb2t1cC5lbWl0KHsgaXRlbXM6IHRoaXMuZGlhbG9nRGF0YS5pdGVtcywgZmlsdGVyOiB0aGlzLmZpbHRlclRleHQsIG93bmVyOiB0aGlzIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBseSBmaWx0ZXIgdXNpbmcgZmlsdGVyIG9wdGlvbnNcclxuICAgKiBAcGFyYW0gZmlsdGVyT3B0aW9uIDogdGhlIGN1cnJlbnQgZmlsdGVyIG9wdGlvblxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBkb0ZpbHRlckJ5T3B0aW9ucyhmaWx0ZXJPcHRpb246IGFueSkge1xyXG4gICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5jYW5Mb29rdXAgJiYgdGhpcy5kaWFsb2dEYXRhLmNhbkZpbHRlcikge1xyXG4gICAgICB0aGlzLmZpbHRlci5lbWl0KHtcclxuICAgICAgICBpdGVtczogdGhpcy5kaWFsb2dEYXRhLml0ZW1zLFxyXG4gICAgICAgIGZpbHRlcjogdGhpcy5maWx0ZXJUZXh0LFxyXG4gICAgICAgIGZpbHRlck9wdGlvbjogZmlsdGVyT3B0aW9uLFxyXG4gICAgICAgIG93bmVyOiB0aGlzLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFwcGx5IGZpbHRlci4gVGhpcyBpcyBhY2Nlc3NpYmxlIGZyb20gcHVibGljXHJcbiAgICogQHBhcmFtIHBhcmFtcyA6IHRoZSBvYmplY3Qgd2l0aCBjdXJyZW50IHBhcmFtZXRlcnNcclxuICAgKi9cclxuICBkb0xvb2t1cChwYXJhbXM6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5jYW5Mb29rdXApIHtcclxuICAgICAgdGhpcy5sb29rdXBQYXJhbXMgPSBwYXJhbXM7XHJcbiAgICAgIHRoaXMubG9va3VwUGFyYW1zLmZpcnN0ID0gMDtcclxuICAgICAgdGhpcy5sb29rdXAuZW1pdCh7IGl0ZW1zOiB0aGlzLmRpYWxvZ0RhdGEuaXRlbXMsIHBhcmFtczogdGhpcy5sb29rdXBQYXJhbXMsIG93bmVyOiB0aGlzIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGxvb2t1cCBwYWdpbmF0cm9cclxuICAgKiBAcGFyYW0gdG90YWwgOiB0aGUgbmV3IHRvdGFsIGl0ZW1zXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHVwZGF0ZUxvb2t1cFBhZ2luYXRvcih0b3RhbDogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5jYW5QYWdpbmF0ZSgpKSB7XHJcbiAgICAgIGlmICh0aGlzLnBhZ2luYXRvcikge1xyXG4gICAgICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA9IDA7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0b3IubGVuZ3RoID0gdG90YWwgPz8gMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBBcHBseSBmaWx0ZXJcclxuICAqIEBwYXJhbSBlIDogdGhlIE1hdFBhZ2luYXRvciBQYWdlRXZlbnQgZGF0YVxyXG4gICovXHJcbiAgcHJvdGVjdGVkIGRvTG9va3VwUGFnZShlOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEuY2FuTG9va3VwICYmIHRoaXMuZGlhbG9nRGF0YS5jYW5QYWdpbmF0ZSkge1xyXG4gICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XHJcbiAgICAgIHRoaXMubG9va3VwUGFyYW1zLmZpcnN0ID0gZS5wYWdlSW5kZXggKiAodGhpcy5kaWFsb2dEYXRhLnBhZ2VTaXplID8/IDApO1xyXG4gICAgICB0aGlzLmxvb2t1cC5lbWl0KHsgaXRlbXM6IHRoaXMuZGlhbG9nRGF0YS5pdGVtcywgcGFyYW1zOiB0aGlzLmxvb2t1cFBhcmFtcywgb3duZXI6IHRoaXMgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBlbmRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZG9BcHBlbmQoKSB7XHJcbiAgICB0aGlzLmFwcGVuZC5lbWl0KHsgaXRlbXM6IHRoaXMuZGlhbG9nRGF0YS5pdGVtcywgb3duZXI6IHRoaXMgfSBhcyBTZWxlY3REaWFsb2dBcHBlbmQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRWRpdFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBkb0VkaXQoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZWRpdC5lbWl0KHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZFswXS52YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBWaWV3XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGRvVmlldygpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQ/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy52aWV3LmVtaXQodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkWzBdLnZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBkb0RlbGV0ZSgpIHtcclxuICAgIGxldCBzZWxlY3RlZEl0ZW1zOiBhbnkgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgIHNlbGVjdGVkSXRlbXMucHVzaChlbGVtZW50LnZhbHVlKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kZWxldGUuZW1pdCh7XHJcbiAgICAgIGl0ZW1zOiB0aGlzLmRpYWxvZ0RhdGEuaXRlbXMsXHJcbiAgICAgIHNlbGVjdGVkSXRlbXM6IHNlbGVjdGVkSXRlbXMsXHJcbiAgICB9IGFzIFNlbGVjdERpYWxvZ0RlbGV0ZSk7XHJcbiAgICB0aGlzLmNhbkRlbGV0ZS5zZXQoZmFsc2UpO1xyXG4gICAgdGhpcy5jYW5FZGl0LnNldChmYWxzZSk7XHJcblxyXG4gIH1cclxufVxyXG4iLCI8aDIgbWF0LWRpYWxvZy10aXRsZT57e2RpYWxvZ0RhdGEudGl0bGV9fTwvaDI+XHJcbjxkaXYgc3R5bGU9XCJwYWRkaW5nOiAwIDI0cHhcIj5cclxuICBAaWYgKGRpYWxvZ0RhdGEuZGVzY3JpcHRpb24pIHtcclxuICA8ZGl2IGNsYXNzPVwic2VsZWN0ZmlsZS1kZXNjcmlwdGlvblwiIFtpbm5lckh0bWxdPVwiZGlhbG9nRGF0YS5kZXNjcmlwdGlvbiB8IHNhZmVIdG1sXCI+PC9kaXY+XHJcbiAgfVxyXG4gIDxkaXY+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIyMHB4XCIgZnhGaWxsPlxyXG4gICAgICBAaWYgKCFkaWFsb2dEYXRhLmNhbkxvb2t1cFdpdGhPcHRpb25zKSB7XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiMTAwXCI+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIHN0eWxlPSd3aWR0aDoxMDAlJyBbYXBwZWFyYW5jZV09XCJkaWFsb2dEYXRhLmFwcGVhcmFuY2VcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsPkNlcmNhLi4uPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjZGtGb2N1c0luaXRpYWwgKGtleXVwLkVudGVyKT1cImRvRmlsdGVyKClcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICB0aXRsZT1cInt7ZGlhbG9nRGF0YS5jYW5Mb29rdXAgPyAnRGlnaXRhIGlsIHRlc3RvIGUgcHJlbWkgaW52aW8nIDogJ0RpZ2l0YSBpbCB0ZXN0byd9fVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsdGVyVGV4dFwiPlxyXG4gICAgICAgICAgQGlmIChmaWx0ZXJUZXh0KSB7XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIi0xXCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiQ2xlYXJcIiAoY2xpY2spPVwiY2xlYXJGaWx0ZXIoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgQGlmICghZGlhbG9nRGF0YS5jYW5Mb29rdXBXaXRoT3B0aW9ucyAmJiBkaWFsb2dEYXRhLmNhbkxvb2t1cCAmJiBkaWFsb2dEYXRhLmxvb2t1cEZpZWxkcykge1xyXG4gICAgICA8ZGl2IGZ4RmxleD1cIjEwMFwiPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBzdHlsZT0nd2lkdGg6MTAwJScgW2FwcGVhcmFuY2VdPVwiZGlhbG9nRGF0YS5hcHBlYXJhbmNlXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5Db21lLi4uPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8bWF0LXNlbGVjdCBbKHZhbHVlKV09XCJsb29rdXBGaWVsZFwiPlxyXG4gICAgICAgICAgICBAZm9yIChmaWVsZCBvZiBkaWFsb2dEYXRhLmxvb2t1cEZpZWxkczsgdHJhY2sgZmllbGQpIHtcclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cImZpZWxkLnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAge3tmaWVsZC5uYW1lfX1cclxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgQGlmIChkaWFsb2dEYXRhLmNhbkxvb2t1cFdpdGhPcHRpb25zKSB7XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiKlwiIGZ4RmxleEFsaWduPVwiY2VudGVyXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIGFyaWEtbGFiZWw9XCJSaWNlcmNhXCIgKGNsaWNrKT1cInNob3dGaWx0ZXJPcHRpb25zKClcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbj5zZWFyY2g8L21hdC1pY29uPlJpY2VyY2FcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgQGlmIChkaWFsb2dEYXRhLmNhbkxvb2t1cCAmJiBkaWFsb2dEYXRhLmNhbkZpbHRlcikge1xyXG4gICAgICA8ZGl2IGZ4RmxleD1cIipcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHN0eWxlPVwid2hpdGUtc3BhY2U6bm93cmFwXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIG1hdFRvb2x0aXA9XCJGaWx0cmFcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidGaWx0cmEnXCJcclxuICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51RmlsdGVyXCIgY29sb3I9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICA8bWF0LWljb24+ZmlsdGVyX2FsdDwvbWF0LWljb24+IHt7ZmlsdGVyT3B0aW9uc0luZm99fSA8bWF0LWljb24gY2xhc3M9XCJpY29uLW1lbnUtZHJvcC1kb3duXCI+XHJcbiAgICAgICAgICAgIGFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPG1hdC1tZW51ICNtZW51RmlsdGVyPVwibWF0TWVudVwiIGNsYXNzPVwibWF0LW1lbnUtMzAwXCI+XHJcbiAgICAgICAgICBAZm9yIChmIG9mIGZpbHRlck9wdGlvbnM7IHRyYWNrIGYpIHtcclxuXHJcbiAgICAgICAgICBAaWYgKGYuZGl2aWRlcikge1xyXG4gICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKGYuZ3JvdXBOYW1lKSB7XHJcbiAgICAgICAgICA8c3BhbiBzdHlsZT0nZm9udC1zaXplOnNtYWxsOyBwYWRkaW5nOiAycHggNHB4Oyc+PGk+PGI+e3tmLmdyb3VwTmFtZX19PC9iPjwvaT48L3NwYW4+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKCFmLmdyb3VwTmFtZSAmJiAhZi5kaXZpZGVyKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImRvRmlsdGVyQnlPcHRpb25zKGYpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJmLmRlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICAgIEBpZiAoZi5yYWRpbyAmJiBmLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwicGFkZGluZy1sZWZ0OjQwcHhcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPG1hdC1pY29uPnt7Zi5pY29ufX08L21hdC1pY29uPiB7e2YudGl0bGV9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoY2FuRWRpdCgpIHx8IGNhbkFwcGVuZCgpIHx8IGNhblZpZXcoKSB8fCBjYW5EZWxldGUoKSkge1xyXG4gICAgICA8ZGl2IGZ4RmxleD1cIipcIiBmeExheW91dEFsaWduPVwiZW5kXCIgc3R5bGU9XCJ3aGl0ZS1zcGFjZTpub3dyYXBcIj5cclxuICAgICAgICBAaWYgKGNhbkFwcGVuZCgpKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImRvQXBwZW5kKClcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBhcmlhLWxhYmVsPVwiQWdnaXVuZ2lcIiBtYXRUb29sdGlwPVwiQWdnaXVuZ2lcIj5hZGQ8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGNhbkVkaXQoKSkge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJkb0VkaXQoKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGFyaWEtbGFiZWw9XCJNb2RpZmljYVwiIG1hdFRvb2x0aXA9XCJNb2RpZmljYVwiPmVkaXQ8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGNhblZpZXcoKSkge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJkb1ZpZXcoKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGFyaWEtbGFiZWw9XCJNb3N0cmFcIiBtYXRUb29sdGlwPVwiTW9zdHJhXCI+dmlzaWJpbGl0eTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoY2FuRGVsZXRlKCkpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZG9EZWxldGUoKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGFyaWEtbGFiZWw9XCJFbGltaW5hXCIgbWF0VG9vbHRpcD1cIkVsaW1pbmFcIj5kZWxldGU8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIEBpZiAoKGRpYWxvZ0RhdGEubXVsdGlwbGVTZWxlY3Rpb24gfHwgZGlhbG9nRGF0YS5oZWFkZXIpICYmIGRpYWxvZ0RhdGEuaXRlbXM/Lmxlbmd0aCA+IDApIHtcclxuICA8ZGl2PlxyXG4gICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4RmFseW91dEdhcD1cIjEwcHhcIiBmeEZpbGwgc3R5bGU9XCJwYWRkaW5nLXRvcDogMTBweDtcIj5cclxuICAgICAgQGlmIChkaWFsb2dEYXRhLm11bHRpcGxlU2VsZWN0aW9uKSB7XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiNzJweFwiIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDhweDtcIj5cclxuICAgICAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwiJGV2ZW50ID8gbWFzdGVyU2VsZWN0aW9uVG9nZ2xlKCRldmVudCkgOiBudWxsXCJcclxuICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGlvbk1hc3RlckluZGV0ZXJtaW5hdGUoKVwiIFtjaGVja2VkXT1cInNlbGVjdGlvbk1hc3RlckNoZWNrZWQoKVwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidTZWxlemlvbmEvZGVzZWxlemlvbmEgdHV0dG8nXCIgbWF0VG9vbHRpcD1cIlNlbGV6aW9uYS9kZXNlbGV6aW9uYSB0dXR0b1wiPlxyXG4gICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICA8ZGl2IGZ4RmxleD1cIjEwMFwiIGZ4RmxleEFsaWduPVwiY2VudGVyXCI+XHJcbiAgICAgICAgQGlmIChkaWFsb2dEYXRhLmhlYWRlcikge1xyXG4gICAgICAgIDxkaXYgW2lubmVySHRtbF09XCJkaWFsb2dEYXRhLmhlYWRlciB8IHNhZmVIdG1sXCI+PC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIH1cclxuPC9kaXY+XHJcbjxtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4RmlsbD5cclxuICAgIEBpZiAoZGlhbG9nRGF0YS5jYW5Mb29rdXAgJiYgKCFkaWFsb2dEYXRhLml0ZW1zIHx8IGRpYWxvZ0RhdGEuaXRlbXMubGVuZ3RoID09IDApKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZVwiPjxpPlxyXG4gICAgICAgIEBpZiAoIWRpYWxvZ0RhdGEuZW1wdHlNZXNzYWdlKSB7XHJcbiAgICAgICAgPHNwYW4+TmVzc3VuIGVsZW1lbnRvIGRhIHZpc3VhbGl6emFyZS48YnI+RXNlZ3VpIHVuYSBudW92YSByaWNlcmNhIG8gbW9kaWZpY2EgcXVlbGxhXHJcbiAgICAgICAgICBlc2lzdGVudGUuXHJcbiAgICAgICAgICBAaWYgKGRpYWxvZ0RhdGEubWF4SXRlbXMgPiAwKSB7XHJcbiAgICAgICAgICA8c3Bhbj5TYXJhbm5vIG1vc3RyYXRpIGFsIG1hc3NpbW8ge3tkaWFsb2dEYXRhLm1heEl0ZW1zfX0gZWxlbWVudGkuPC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImRpYWxvZ0RhdGEuZW1wdHlNZXNzYWdlIHwgc2FmZUh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2k+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIDxtYXQtc2VsZWN0aW9uLWxpc3QgI3NlbGVjdGlvbiAoc2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdCgkZXZlbnQpXCIgZGVuc2UgaGlkZVNpbmdsZVNlbGVjdGlvbkluZGljYXRvcj1cInRydWVcIlxyXG4gICAgICBbbXVsdGlwbGVdPVwiZGlhbG9nRGF0YS5tdWx0aXBsZVNlbGVjdGlvblwiPlxyXG4gICAgICBAZm9yIChpdGVtIG9mIChkaWFsb2dEYXRhLml0ZW1zIHwgc2VhcmNoOiAoIWRpYWxvZ0RhdGEuY2FuTG9va3VwID8gZmlsdGVyVGV4dCA6ICcnKSk7IHRyYWNrIGl0ZW0pIHtcclxuICAgICAgPG1hdC1saXN0LW9wdGlvbiBbdmFsdWVdPVwiaXRlbVwiIFtzZWxlY3RlZF09XCJpdGVtLnNlbGVjdGVkXCIgY2hlY2tib3hQb3NpdGlvbj1cImJlZm9yZVwiPlxyXG4gICAgICAgIDxkaXYgW2lubmVySHRtbF09XCJpdGVtLnRlbXBsYXRlIHwgc2FmZUh0bWxcIj48L2Rpdj5cclxuICAgICAgPC9tYXQtbGlzdC1vcHRpb24+XHJcbiAgICAgIH1cclxuICAgIDwvbWF0LXNlbGVjdGlvbi1saXN0PlxyXG4gIDwvZGl2PlxyXG48L21hdC1kaWFsb2ctY29udGVudD5cclxuPG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGaWxsPlxyXG4gICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIGNlbnRlclwiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4RmlsbD5cclxuICAgICAgPGRpdiBzdHlsZT1cInBhZGRpbmctbGVmdDoyMHB4XCI+XHJcbiAgICAgICAgQGlmIChzZWxlY3Rpb25JbmZvKCkpIHtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cInNtYWxsXCI+c2VsZXppb25lOiAmbmJzcDs8L3NwYW4+PHNwYW4gY2xhc3M9XCJib2xkXCI+e3tzZWxlY3Rpb25JbmZvKCl9fTwvc3Bhbj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGZ4RmxleEFsaWduPVwiY2VudGVyXCI+XHJcbiAgICAgICAgQGlmIChjYW5QYWdpbmF0ZSgpKSB7XHJcbiAgICAgICAgPG1hdC1wYWdpbmF0b3IgI3BhZ2luYXRvciBbaGlkZVBhZ2VTaXplXT1cInRydWVcIiBbcGFnZVNpemVdPVwiZGlhbG9nRGF0YS5wYWdlU2l6ZVwiIFtzaG93Rmlyc3RMYXN0QnV0dG9uc109XCJ0cnVlXCJcclxuICAgICAgICAgIChwYWdlKT1cImRvTG9va3VwUGFnZSgkZXZlbnQpXCIgW2xlbmd0aF09XCJkaWFsb2dEYXRhLnRvdGFsID8/IDBcIj48L21hdC1wYWdpbmF0b3I+XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwiZW5kXCIgZnhGaWxsPlxyXG4gICAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib2soKVwiIFtkaXNhYmxlZF09XCJva0Rpc2FibGVkKClcIj5cclxuICAgICAgICA8c3Bhbj57e2RpYWxvZ0RhdGEubXVzdFNlbGVjdCA/IGRpYWxvZ0RhdGEub2tDYXB0aW9uIDogJ0NoaXVkaSd9fTwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIEBpZiAoZGlhbG9nRGF0YS5tdXN0U2VsZWN0KSB7XHJcbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIG1hdC1kaWFsb2ctY2xvc2UgY2RrRm9jdXNJbml0aWFsIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICAgIDxzcGFuPkFubnVsbGE8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+Il19
374
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkuYXBwbGljYXRpb24vdWkvZGlhbG9ncy9zZWxlY3Qvc2VsZWN0LWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkuYXBwbGljYXRpb24vdWkvZGlhbG9ncy9zZWxlY3Qvc2VsZWN0LWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBcUIsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdJLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBNEMsTUFB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QUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIGluamVjdCxcclxuICBzaWduYWxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94Q2hhbmdlLCBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveFwiO1xyXG5pbXBvcnQgeyBNYXRPcHRpb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ0FjdGlvbnMsIE1hdERpYWxvZ0Nsb3NlLCBNYXREaWFsb2dDb250ZW50LCBNYXREaWFsb2dSZWYsIE1hdERpYWxvZ1RpdGxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXJcIjtcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XHJcbmltcG9ydCB7IE1hdExpc3RNb2R1bGUsIE1hdFNlbGVjdGlvbkxpc3QsIE1hdFNlbGVjdGlvbkxpc3RDaGFuZ2UgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdFwiO1xyXG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL21lbnVcIjtcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yLCBNYXRQYWdpbmF0b3JNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0XCI7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcFwiO1xyXG5pbXBvcnQgeyBTYWZlSHRtbFBpcGUsIFNlYXJjaEZpbHRlclBpcGUsIFN5c3RlbVV0aWxzIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHtcclxuICBTZWxlY3REaWFsb2dBcHBlbmQsXHJcbiAgU2VsZWN0RGlhbG9nRGF0YSxcclxuICBTZWxlY3REaWFsb2dEZWxldGUsXHJcbiAgU2VsZWN0RGlhbG9nRmlsdGVyLFxyXG4gIFNlbGVjdERpYWxvZ0xvb2t1cCxcclxuICBTZWxlY3REaWFsb2dSZXN1bHQsXHJcbiAgU2VsZWN0YWJsZUl0ZW0sXHJcbn0gZnJvbSBcIi4uLy4uL2RlZmluaXRpb25zXCI7XHJcbmltcG9ydCB7IEZsZXhMYXlvdXRNb2R1bGUgfSBmcm9tICdAbmdicmFja2V0L25neC1sYXlvdXQnO1xyXG5cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBob3N0OiB7ICdCaW5kJzogU3lzdGVtVXRpbHMuZ2VuZXJhdGVVVUlEKCkgfSxcclxuICB0ZW1wbGF0ZVVybDogXCIuL3NlbGVjdC1kaWFsb2cuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vc2VsZWN0LWRpYWxvZy5jb21wb25lbnQuc2Nzc1wiXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEZsZXhMYXlvdXRNb2R1bGUsXHJcbiAgICBNYXREaWFsb2dUaXRsZSxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxyXG4gICAgTWF0T3B0aW9uTW9kdWxlLFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICAgIE1hdE1lbnVNb2R1bGUsXHJcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxyXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXHJcbiAgICBNYXREaWFsb2dDb250ZW50LFxyXG4gICAgTWF0TGlzdE1vZHVsZSxcclxuICAgIE1hdERpYWxvZ0FjdGlvbnMsXHJcbiAgICBNYXREaWFsb2dDbG9zZSxcclxuICAgIE1hdFBhZ2luYXRvck1vZHVsZSxcclxuICAgIFNlYXJjaEZpbHRlclBpcGUsXHJcbiAgICBTYWZlSHRtbFBpcGVcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VsZWN0RGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKCdwYWdpbmF0b3InKSBwYWdpbmF0b3IhOiBNYXRQYWdpbmF0b3I7XHJcbiAgQFZpZXdDaGlsZChcInNlbGVjdGlvblwiKSBzZWxlY3Rpb24hOiBNYXRTZWxlY3Rpb25MaXN0O1xyXG5cclxuICBwcml2YXRlIGNoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuICBwcml2YXRlIGRpYWxvZ1JlZiA9IGluamVjdChNYXREaWFsb2dSZWY8U2VsZWN0RGlhbG9nQ29tcG9uZW50Pik7XHJcbiAgcHJvdGVjdGVkIGRpYWxvZ0RhdGE6IFNlbGVjdERpYWxvZ0RhdGEgPSBpbmplY3QoTUFUX0RJQUxPR19EQVRBKSA/PyB7IGFwcGVhcmFuY2U6ICdvdXRsaW5lJywgdGl0bGU6ICdTZWxlemlvbmEnIH07XHJcblxyXG4gIEBPdXRwdXQoKSBkb25lID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3REaWFsb2dSZXN1bHQ+KCk7XHJcbiAgQE91dHB1dCgpIGVkaXQgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGFibGVJdGVtPigpO1xyXG4gIEBPdXRwdXQoKSB2aWV3ID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3RhYmxlSXRlbT4oKTtcclxuICBAT3V0cHV0KCkgYXBwZW5kID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3REaWFsb2dBcHBlbmQ+KCk7XHJcbiAgQE91dHB1dCgpIGRlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0RGlhbG9nRGVsZXRlPigpO1xyXG4gIEBPdXRwdXQoKSBsb29rdXAgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdERpYWxvZ0xvb2t1cD4oKTtcclxuICBAT3V0cHV0KCkgbG9va3VwT3B0aW9ucyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3REaWFsb2dGaWx0ZXI+KCk7XHJcblxyXG4gIHByb3RlY3RlZCBjYW5FZGl0ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcm90ZWN0ZWQgY2FuVmlldyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHJvdGVjdGVkIGNhbkFwcGVuZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHJvdGVjdGVkIGNhbkRlbGV0ZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHJvdGVjdGVkIGNhblBhZ2luYXRlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgLy8gSGFuZGxlIHN1Ym1pdCBidXR0b24gYWN0aXZpdHlcclxuICBwcm90ZWN0ZWQgb2tEaXNhYmxlZCA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcclxuXHJcbiAgLy8gVXNlZCBmb3IgYXJyYXkgZmlsdGVyaW5nXHJcbiAgcHJvdGVjdGVkIGZpbHRlclRleHQ6IHN0cmluZyA9IFwiXCI7XHJcbiAgcHJvdGVjdGVkIGZpbHRlck9wdGlvbnM6IGFueSA9IFtdO1xyXG4gIHByb3RlY3RlZCBmaWx0ZXJPcHRpb25zSW5mbzogc3RyaW5nID0gXCJUdXR0b1wiO1xyXG5cclxuICAvLyBVc2VkIHRvIHNpbmNyb25pemUgbG9va3VwIGZpZWxkcyBhbmQgcGFyYW1zXHJcbiAgcHJvdGVjdGVkIGxvb2t1cEZpZWxkOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHByaXZhdGUgbG9va3VwUGFyYW1zOiBhbnkgfCBudWxsO1xyXG5cclxuXHJcbiAgLy8gVXNlZCB0byBkaXNwbGF5IHNlbGVjdGVkIGVsZW1lbnRzXHJcbiAgcHJvdGVjdGVkIHNlbGVjdGlvbkluZm8gPSBzaWduYWw8c3RyaW5nPihudWxsKTtcclxuICBwcm90ZWN0ZWQgc2VsZWN0aW9uTWFzdGVySW5kZXRlcm1pbmF0ZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHJvdGVjdGVkIHNlbGVjdGlvbk1hc3RlckNoZWNrZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICghdGhpcy5kaWFsb2dEYXRhLmFwcGVhcmFuY2UpIHtcclxuICAgICAgdGhpcy5kaWFsb2dEYXRhLmFwcGVhcmFuY2UgPSAnb3V0bGluZSc7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuZGlhbG9nRGF0YS50aXRsZSkge1xyXG4gICAgICB0aGlzLmRpYWxvZ0RhdGEudGl0bGUgPSAnU2VsZXppb25hJztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEubXVsdGlwbGVTZWxlY3Rpb24gJiYgIXRoaXMuZGlhbG9nRGF0YS5pdGVtcykge1xyXG4gICAgICB0aGlzLmRpYWxvZ0RhdGEubXVsdGlwbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmRpYWxvZ0RhdGEub2tDYXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nRGF0YS5va0NhcHRpb24gPSBcIk9rXCI7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNhbkFwcGVuZC5zZXQodGhpcy5kaWFsb2dEYXRhLmNhbkFwcGVuZCk7XHJcbiAgICBpZiAodGhpcy5kaWFsb2dEYXRhLmNhbkxvb2t1cCkge1xyXG4gICAgICB0aGlzLmRpYWxvZ0RhdGEuaXRlbXMgPSBbXTtcclxuICAgICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5sb29rdXBGaWVsZHMgJiYgdGhpcy5kaWFsb2dEYXRhLmxvb2t1cEZpZWxkcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5sb29rdXBGaWVsZCA9IHRoaXMuZGlhbG9nRGF0YS5sb29rdXBGaWVsZHNbMF0udmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5jYW5GaWx0ZXIpIHtcclxuICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMgPSB0aGlzLmRpYWxvZ0RhdGEuZmlsdGVycztcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5kaWFsb2dEYXRhLmNhblBhZ2luYXRlKSB7XHJcbiAgICAgICAgdGhpcy5jYW5QYWdpbmF0ZS5zZXQodGhpcy5kaWFsb2dEYXRhLmNhblBhZ2luYXRlKTtcclxuICAgICAgICBpZiAoIXRoaXMuZGlhbG9nRGF0YS5wYWdlU2l6ZSkge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dEYXRhLnBhZ2VTaXplID0gMTAwXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLm9rRGlzYWJsZWQuc2V0KHRoaXMuZGlhbG9nRGF0YS5tdXN0U2VsZWN0KTtcclxuXHJcbiAgICAvLyBBcHBseSBmaWx0ZXIgaWYgZXhpc3RzXHJcbiAgICBpZiAodGhpcy5kaWFsb2dEYXRhLmZpbHRlciB8fCB0aGlzLmRpYWxvZ0RhdGEubG9va3VwT25Jbml0KSB7XHJcbiAgICAgIHRoaXMuZG9GaWx0ZXIodGhpcy5kaWFsb2dEYXRhLmZpbHRlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNYXJrIGZvciBjaGVja1xyXG4gICAqIEBwYXJhbSBuZXdUb3RhbDogdGhlIG9wdGlvbmFsIG5ldyB0b3RhbFxyXG4gICAqL1xyXG4gIG5vdGlmeUNoYW5nZXMobmV3VG90YWw6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQgPSAwKSB7XHJcbiAgICB0aGlzLmRpYWxvZ0RhdGEudG90YWwgPSBuZXdUb3RhbDtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGV2ZXJ5IGVsZW1lbnQgYXJlIHNlbGVjdGVkXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpc0FsbFNlbGVjdGVkKCkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5zZWxlY3Rpb24gJiZcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZCAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQubGVuZ3RoID09PSB0aGlzLmRpYWxvZ0RhdGEuaXRlbXMubGVuZ3RoXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2tzIGlmIGV4aXN0cyBhIHNlbGVjdGlvblxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFzU2VsZWN0aW9uKCkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5zZWxlY3Rpb24gJiZcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZCAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQubGVuZ3RoID4gMFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1hc3RlciBzZWxlY3Rpb24gdG9nZ2xlXHJcbiAgICogQHBhcmFtIGU6IHRoZSBldmVudFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBtYXN0ZXJTZWxlY3Rpb25Ub2dnbGUoZTogTWF0Q2hlY2tib3hDaGFuZ2UpIHtcclxuICAgIGlmIChlLmNoZWNrZWQpXHJcbiAgICAgIC8vIERlc2VsZWN0IGlmIG5vdCBhbGxzZWxlY3RlZCBzbyB0aGF0IHRvZ2dsZSBtYWtlcyB0aGUgcmlnaHQgY2hvaWNlXHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdEFsbCgpO1xyXG4gICAgZWxzZSB0aGlzLnNlbGVjdGlvbi5kZXNlbGVjdEFsbCgpO1xyXG4gICAgdGhpcy5zZWxlY3Rpb25NYXN0ZXJJbmRldGVybWluYXRlLnNldChmYWxzZSk7XHJcbiAgICB0aGlzLnNlbGVjdGlvbk1hc3RlckNoZWNrZWQuc2V0KGUuY2hlY2tlZCk7XHJcbiAgICB0aGlzLm9rRGlzYWJsZWQuc2V0KFxyXG4gICAgICB0aGlzLmRpYWxvZ0RhdGEubXVzdFNlbGVjdCAmJlxyXG4gICAgICAoIXRoaXMuc2VsZWN0aW9uIHx8IHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5sZW5ndGggPT09IDApKTtcclxuICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uSW5mbygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIHNlbGVjdGlvbi9kZXNlbGVjdGlvbiBvZiBhbiBpdGVtXHJcbiAgICogQHBhcmFtIGU6IHRoZSBldmVudFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBzZWxlY3QoZTogTWF0U2VsZWN0aW9uTGlzdENoYW5nZSkge1xyXG4gICAgaWYgKCF0aGlzLmRpYWxvZ0RhdGEubXVsdGlwbGVTZWxlY3Rpb24pIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uZGVzZWxlY3RBbGwoKTtcclxuICAgICAgaWYgKGUub3B0aW9ucz8ubGVuZ3RoID4gMClcclxuICAgICAgICBlLm9wdGlvbnNbMF0uc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLm9rRGlzYWJsZWQuc2V0KGZhbHNlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub2tEaXNhYmxlZC5zZXQoXHJcbiAgICAgICAgdGhpcy5kaWFsb2dEYXRhLm11c3RTZWxlY3QgJiZcclxuICAgICAgICAoIXRoaXMuc2VsZWN0aW9uIHx8XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQubGVuZ3RoID09PSAwKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVXBkYXRlIGVkaXRvcnNcclxuICAgIHRoaXMuY2FuQXBwZW5kLnNldCh0aGlzLmRpYWxvZ0RhdGEuY2FuQXBwZW5kKTtcclxuICAgIHRoaXMuY2FuRWRpdC5zZXQoXHJcbiAgICAgIHRoaXMuZGlhbG9nRGF0YS5jYW5FZGl0ICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5sZW5ndGggPT09IDEpO1xyXG4gICAgdGhpcy5jYW5WaWV3LnNldChcclxuICAgICAgdGhpcy5kaWFsb2dEYXRhLmNhblZpZXcgJiZcclxuICAgICAgdGhpcy5zZWxlY3Rpb24gJiZcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmxlbmd0aCA9PT0gMSk7XHJcbiAgICB0aGlzLmNhbkRlbGV0ZS5zZXQoXHJcbiAgICAgIHRoaXMuZGlhbG9nRGF0YS5jYW5EZWxldGUgJiZcclxuICAgICAgdGhpcy5zZWxlY3Rpb24gJiZcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmxlbmd0aCA+IDApO1xyXG4gICAgdGhpcy5zZWxlY3Rpb25NYXN0ZXJJbmRldGVybWluYXRlLnNldChcclxuICAgICAgIXRoaXMuaXNBbGxTZWxlY3RlZCgpICYmIHRoaXMuaGFzU2VsZWN0aW9uKCkpO1xyXG4gICAgdGhpcy5zZWxlY3Rpb25NYXN0ZXJDaGVja2VkLnNldCh0aGlzLmhhc1NlbGVjdGlvbigpKTtcclxuICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uSW5mbygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHNlbGVjdGlvbiBpbmZvXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1cGRhdGVTZWxlY3Rpb25JbmZvKCkge1xyXG4gICAgLy8gVXBkYXRlIHNlbGVjdGlvbiBpbmZvXHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24gJiYgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmxlbmd0aCA+IDAgJiYgdGhpcy5kaWFsb2dEYXRhLm11bHRpcGxlU2VsZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uSW5mby5zZXQoXHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmxlbmd0aCArXHJcbiAgICAgICAgXCIgLyBcIiArXHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24ub3B0aW9ucy5sZW5ndGgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb25JbmZvLnNldChudWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyIGN1cnJlbnQgc2VsZWN0aW9uXHJcbiAgICovXHJcbiAgY2xlYXJTZWxlY3Rpb24oKSB7XHJcbiAgICB0aGlzLnNlbGVjdGlvbk1hc3RlckluZGV0ZXJtaW5hdGUuc2V0KGZhbHNlKTtcclxuICAgIHRoaXMuc2VsZWN0aW9uTWFzdGVyQ2hlY2tlZC5zZXQoZmFsc2UpO1xyXG4gICAgdGhpcy5zZWxlY3Rpb24uZGVzZWxlY3RBbGwoKTtcclxuICAgIHRoaXMuc2VsZWN0aW9uSW5mby5zZXQobnVsbCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdWJtaXQgc2VsZWN0aW9uXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIG9rKCkge1xyXG4gICAgaWYgKCF0aGlzLm9rRGlzYWJsZWQoKSkge1xyXG4gICAgICAvLyBNdWx0aSBzZWxlY3Rpb25cclxuICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtczogYW55ID0gW107XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgc2VsZWN0ZWRJdGVtcy5wdXNoKGVsZW1lbnQudmFsdWUpO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kb25lLmVtaXQoeyBzZWxlY3RlZEl0ZW1zOiBzZWxlY3RlZEl0ZW1zIH0pO1xyXG4gICAgICB9LCA1MDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgZmlsdGVyXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGNsZWFyRmlsdGVyKCkge1xyXG4gICAgdGhpcy5maWx0ZXJUZXh0ID0gXCJcIjtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBTaG93IGZpbHRlciBvcHRpb25zXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHNob3dGaWx0ZXJPcHRpb25zKCkge1xyXG4gICAgaWYgKHRoaXMubG9va3VwT3B0aW9ucykge1xyXG4gICAgICB0aGlzLmxvb2t1cE9wdGlvbnMuZW1pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQXBwbHkgZmlsdGVyXHJcbiAgICogQHBhcmFtIHRleHQgOiB0aGUgc3RyaW5nIHRvIGZpbHRlciB0b1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBkb0ZpbHRlcih0ZXh0OiBzdHJpbmcgPSBudWxsLCBlOiBhbnkgPSBudWxsKSB7XHJcbiAgICBpZiAodGV4dCkge1xyXG4gICAgICB0aGlzLmZpbHRlclRleHQgPSB0ZXh0O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5jYW5Mb29rdXApIHtcclxuICAgICAgaWYgKCFlIHx8IGUua2V5Q29kZSA9PT0gMTMpIHtcclxuICAgICAgICB0aGlzLmxvb2t1cC5lbWl0KHsgaXRlbXM6IHRoaXMuZGlhbG9nRGF0YS5pdGVtcywgZmlsdGVyOiB0aGlzLmZpbHRlclRleHQsIG93bmVyOiB0aGlzIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBseSBmaWx0ZXIgdXNpbmcgZmlsdGVyIG9wdGlvbnNcclxuICAgKiBAcGFyYW0gZmlsdGVyT3B0aW9uIDogdGhlIGN1cnJlbnQgZmlsdGVyIG9wdGlvblxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBkb0ZpbHRlckJ5T3B0aW9ucyhmaWx0ZXJPcHRpb246IGFueSkge1xyXG4gICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5jYW5Mb29rdXAgJiYgdGhpcy5kaWFsb2dEYXRhLmNhbkZpbHRlcikge1xyXG4gICAgICB0aGlzLmZpbHRlci5lbWl0KHtcclxuICAgICAgICBpdGVtczogdGhpcy5kaWFsb2dEYXRhLml0ZW1zLFxyXG4gICAgICAgIGZpbHRlcjogdGhpcy5maWx0ZXJUZXh0LFxyXG4gICAgICAgIGZpbHRlck9wdGlvbjogZmlsdGVyT3B0aW9uLFxyXG4gICAgICAgIG93bmVyOiB0aGlzLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFwcGx5IGZpbHRlci4gVGhpcyBpcyBhY2Nlc3NpYmxlIGZyb20gcHVibGljXHJcbiAgICogQHBhcmFtIHBhcmFtcyA6IHRoZSBvYmplY3Qgd2l0aCBjdXJyZW50IHBhcmFtZXRlcnNcclxuICAgKi9cclxuICBkb0xvb2t1cChwYXJhbXM6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5jYW5Mb29rdXApIHtcclxuICAgICAgdGhpcy5sb29rdXBQYXJhbXMgPSBwYXJhbXM7XHJcbiAgICAgIHRoaXMubG9va3VwUGFyYW1zLmZpcnN0ID0gMDtcclxuICAgICAgdGhpcy5sb29rdXAuZW1pdCh7IGl0ZW1zOiB0aGlzLmRpYWxvZ0RhdGEuaXRlbXMsIHBhcmFtczogdGhpcy5sb29rdXBQYXJhbXMsIG93bmVyOiB0aGlzIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGxvb2t1cCBwYWdpbmF0cm9cclxuICAgKiBAcGFyYW0gdG90YWwgOiB0aGUgbmV3IHRvdGFsIGl0ZW1zXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHVwZGF0ZUxvb2t1cFBhZ2luYXRvcih0b3RhbDogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5jYW5QYWdpbmF0ZSgpKSB7XHJcbiAgICAgIGlmICh0aGlzLnBhZ2luYXRvcikge1xyXG4gICAgICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA9IDA7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0b3IubGVuZ3RoID0gdG90YWwgPz8gMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBBcHBseSBmaWx0ZXJcclxuICAqIEBwYXJhbSBlIDogdGhlIE1hdFBhZ2luYXRvciBQYWdlRXZlbnQgZGF0YVxyXG4gICovXHJcbiAgcHJvdGVjdGVkIGRvTG9va3VwUGFnZShlOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEuY2FuTG9va3VwICYmIHRoaXMuZGlhbG9nRGF0YS5jYW5QYWdpbmF0ZSkge1xyXG4gICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XHJcbiAgICAgIHRoaXMubG9va3VwUGFyYW1zLmZpcnN0ID0gZS5wYWdlSW5kZXggKiAodGhpcy5kaWFsb2dEYXRhLnBhZ2VTaXplID8/IDApO1xyXG4gICAgICB0aGlzLmxvb2t1cC5lbWl0KHsgaXRlbXM6IHRoaXMuZGlhbG9nRGF0YS5pdGVtcywgcGFyYW1zOiB0aGlzLmxvb2t1cFBhcmFtcywgb3duZXI6IHRoaXMgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBlbmRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZG9BcHBlbmQoKSB7XHJcbiAgICB0aGlzLmFwcGVuZC5lbWl0KHsgaXRlbXM6IHRoaXMuZGlhbG9nRGF0YS5pdGVtcywgb3duZXI6IHRoaXMgfSBhcyBTZWxlY3REaWFsb2dBcHBlbmQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRWRpdFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBkb0VkaXQoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZWRpdC5lbWl0KHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZFswXS52YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBWaWV3XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGRvVmlldygpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQ/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy52aWV3LmVtaXQodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkWzBdLnZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBkb0RlbGV0ZSgpIHtcclxuICAgIGxldCBzZWxlY3RlZEl0ZW1zOiBhbnkgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgIHNlbGVjdGVkSXRlbXMucHVzaChlbGVtZW50LnZhbHVlKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kZWxldGUuZW1pdCh7XHJcbiAgICAgIGl0ZW1zOiB0aGlzLmRpYWxvZ0RhdGEuaXRlbXMsXHJcbiAgICAgIHNlbGVjdGVkSXRlbXM6IHNlbGVjdGVkSXRlbXMsXHJcbiAgICB9IGFzIFNlbGVjdERpYWxvZ0RlbGV0ZSk7XHJcbiAgICB0aGlzLmNhbkRlbGV0ZS5zZXQoZmFsc2UpO1xyXG4gICAgdGhpcy5jYW5FZGl0LnNldChmYWxzZSk7XHJcblxyXG4gIH1cclxufVxyXG4iLCI8aDIgbWF0LWRpYWxvZy10aXRsZT57e2RpYWxvZ0RhdGEudGl0bGV9fTwvaDI+XHJcbjxkaXYgc3R5bGU9XCJwYWRkaW5nOiAwIDI0cHhcIj5cclxuICBAaWYgKGRpYWxvZ0RhdGEuZGVzY3JpcHRpb24pIHtcclxuICA8ZGl2IGNsYXNzPVwic2VsZWN0ZmlsZS1kZXNjcmlwdGlvblwiIFtpbm5lckh0bWxdPVwiZGlhbG9nRGF0YS5kZXNjcmlwdGlvbiB8IHNhZmVIdG1sXCI+PC9kaXY+XHJcbiAgfVxyXG4gIDxkaXY+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIyMHB4XCIgZnhGaWxsPlxyXG4gICAgICBAaWYgKCFkaWFsb2dEYXRhLmNhbkxvb2t1cFdpdGhPcHRpb25zKSB7XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiMTAwXCI+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIHN0eWxlPSd3aWR0aDoxMDAlJyBbYXBwZWFyYW5jZV09XCJkaWFsb2dEYXRhLmFwcGVhcmFuY2VcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsPkNlcmNhLi4uPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjZGtGb2N1c0luaXRpYWwgKGtleXVwLkVudGVyKT1cImRvRmlsdGVyKClcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICB0aXRsZT1cInt7ZGlhbG9nRGF0YS5jYW5Mb29rdXAgPyAnRGlnaXRhIGlsIHRlc3RvIGUgcHJlbWkgaW52aW8nIDogJ0RpZ2l0YSBpbCB0ZXN0byd9fVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsdGVyVGV4dFwiPlxyXG4gICAgICAgICAgQGlmIChmaWx0ZXJUZXh0KSB7XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIi0xXCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiQ2xlYXJcIiAoY2xpY2spPVwiY2xlYXJGaWx0ZXIoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgQGlmICghZGlhbG9nRGF0YS5jYW5Mb29rdXBXaXRoT3B0aW9ucyAmJiBkaWFsb2dEYXRhLmNhbkxvb2t1cCAmJiBkaWFsb2dEYXRhLmxvb2t1cEZpZWxkcykge1xyXG4gICAgICA8ZGl2IGZ4RmxleD1cIjEwMFwiPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBzdHlsZT0nd2lkdGg6MTAwJScgW2FwcGVhcmFuY2VdPVwiZGlhbG9nRGF0YS5hcHBlYXJhbmNlXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5Db21lLi4uPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8bWF0LXNlbGVjdCBbKHZhbHVlKV09XCJsb29rdXBGaWVsZFwiPlxyXG4gICAgICAgICAgICBAZm9yIChmaWVsZCBvZiBkaWFsb2dEYXRhLmxvb2t1cEZpZWxkczsgdHJhY2sgZmllbGQpIHtcclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cImZpZWxkLnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAge3tmaWVsZC5uYW1lfX1cclxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgQGlmIChkaWFsb2dEYXRhLmNhbkxvb2t1cFdpdGhPcHRpb25zKSB7XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiKlwiIGZ4RmxleEFsaWduPVwiY2VudGVyXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIGFyaWEtbGFiZWw9XCJSaWNlcmNhXCIgKGNsaWNrKT1cInNob3dGaWx0ZXJPcHRpb25zKClcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbj5zZWFyY2g8L21hdC1pY29uPlJpY2VyY2FcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgQGlmIChkaWFsb2dEYXRhLmNhbkxvb2t1cCAmJiBkaWFsb2dEYXRhLmNhbkZpbHRlcikge1xyXG4gICAgICA8ZGl2IGZ4RmxleD1cIipcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHN0eWxlPVwid2hpdGUtc3BhY2U6bm93cmFwXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIG1hdFRvb2x0aXA9XCJGaWx0cmFcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidGaWx0cmEnXCJcclxuICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51RmlsdGVyXCIgY29sb3I9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICA8bWF0LWljb24+ZmlsdGVyX2FsdDwvbWF0LWljb24+IHt7ZmlsdGVyT3B0aW9uc0luZm99fSA8bWF0LWljb24gY2xhc3M9XCJpY29uLW1lbnUtZHJvcC1kb3duXCI+XHJcbiAgICAgICAgICAgIGFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPG1hdC1tZW51ICNtZW51RmlsdGVyPVwibWF0TWVudVwiIGNsYXNzPVwibWF0LW1lbnUtMzAwXCI+XHJcbiAgICAgICAgICBAZm9yIChmIG9mIGZpbHRlck9wdGlvbnM7IHRyYWNrIGYpIHtcclxuXHJcbiAgICAgICAgICBAaWYgKGYuZGl2aWRlcikge1xyXG4gICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKGYuZ3JvdXBOYW1lKSB7XHJcbiAgICAgICAgICA8c3BhbiBzdHlsZT0nZm9udC1zaXplOnNtYWxsOyBwYWRkaW5nOiAycHggNHB4Oyc+PGk+PGI+e3tmLmdyb3VwTmFtZX19PC9iPjwvaT48L3NwYW4+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKCFmLmdyb3VwTmFtZSAmJiAhZi5kaXZpZGVyKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImRvRmlsdGVyQnlPcHRpb25zKGYpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJmLmRlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICAgIEBpZiAoZi5yYWRpbyAmJiBmLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwicGFkZGluZy1sZWZ0OjQwcHhcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPG1hdC1pY29uPnt7Zi5pY29ufX08L21hdC1pY29uPiB7e2YudGl0bGV9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoY2FuRWRpdCgpIHx8IGNhbkFwcGVuZCgpIHx8IGNhblZpZXcoKSB8fCBjYW5EZWxldGUoKSkge1xyXG4gICAgICA8ZGl2IGZ4RmxleD1cIipcIiBmeExheW91dEFsaWduPVwiZW5kXCIgc3R5bGU9XCJ3aGl0ZS1zcGFjZTpub3dyYXBcIj5cclxuICAgICAgICBAaWYgKGNhbkFwcGVuZCgpKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImRvQXBwZW5kKClcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBhcmlhLWxhYmVsPVwiQWdnaXVuZ2lcIiBtYXRUb29sdGlwPVwiQWdnaXVuZ2lcIj5hZGQ8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGNhbkVkaXQoKSkge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJkb0VkaXQoKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGFyaWEtbGFiZWw9XCJNb2RpZmljYVwiIG1hdFRvb2x0aXA9XCJNb2RpZmljYVwiPmVkaXQ8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGNhblZpZXcoKSkge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJkb1ZpZXcoKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGFyaWEtbGFiZWw9XCJNb3N0cmFcIiBtYXRUb29sdGlwPVwiTW9zdHJhXCI+dmlzaWJpbGl0eTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoY2FuRGVsZXRlKCkpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZG9EZWxldGUoKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGFyaWEtbGFiZWw9XCJFbGltaW5hXCIgbWF0VG9vbHRpcD1cIkVsaW1pbmFcIj5kZWxldGU8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIEBpZiAoKGRpYWxvZ0RhdGEubXVsdGlwbGVTZWxlY3Rpb24gfHwgZGlhbG9nRGF0YS5oZWFkZXIpICYmIGRpYWxvZ0RhdGEuaXRlbXM/Lmxlbmd0aCA+IDApIHtcclxuICA8ZGl2PlxyXG4gICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4RmFseW91dEdhcD1cIjEwcHhcIiBmeEZpbGwgc3R5bGU9XCJwYWRkaW5nLXRvcDogMTBweDtcIj5cclxuICAgICAgQGlmIChkaWFsb2dEYXRhLm11bHRpcGxlU2VsZWN0aW9uKSB7XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiNzJweFwiIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDhweDtcIj5cclxuICAgICAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwiJGV2ZW50ID8gbWFzdGVyU2VsZWN0aW9uVG9nZ2xlKCRldmVudCkgOiBudWxsXCJcclxuICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGlvbk1hc3RlckluZGV0ZXJtaW5hdGUoKVwiIFtjaGVja2VkXT1cInNlbGVjdGlvbk1hc3RlckNoZWNrZWQoKVwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidTZWxlemlvbmEvZGVzZWxlemlvbmEgdHV0dG8nXCIgbWF0VG9vbHRpcD1cIlNlbGV6aW9uYS9kZXNlbGV6aW9uYSB0dXR0b1wiPlxyXG4gICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICA8ZGl2IGZ4RmxleD1cIjEwMFwiIGZ4RmxleEFsaWduPVwiY2VudGVyXCI+XHJcbiAgICAgICAgQGlmIChkaWFsb2dEYXRhLmhlYWRlcikge1xyXG4gICAgICAgIDxkaXYgW2lubmVySHRtbF09XCJkaWFsb2dEYXRhLmhlYWRlciB8IHNhZmVIdG1sXCI+PC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIH1cclxuPC9kaXY+XHJcbjxtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4RmlsbD5cclxuICAgIEBpZiAoZGlhbG9nRGF0YS5jYW5Mb29rdXAgJiYgKCFkaWFsb2dEYXRhLml0ZW1zIHx8IGRpYWxvZ0RhdGEuaXRlbXMubGVuZ3RoID09IDApKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZVwiPjxpPlxyXG4gICAgICAgIEBpZiAoIWRpYWxvZ0RhdGEuZW1wdHlNZXNzYWdlKSB7XHJcbiAgICAgICAgPHNwYW4+TmVzc3VuIGVsZW1lbnRvIGRhIHZpc3VhbGl6emFyZS48YnI+RXNlZ3VpIHVuYSBudW92YSByaWNlcmNhIG8gbW9kaWZpY2EgcXVlbGxhXHJcbiAgICAgICAgICBlc2lzdGVudGUuXHJcbiAgICAgICAgICBAaWYgKGRpYWxvZ0RhdGEubWF4SXRlbXMgPiAwKSB7XHJcbiAgICAgICAgICA8c3Bhbj5TYXJhbm5vIG1vc3RyYXRpIGFsIG1hc3NpbW8ge3tkaWFsb2dEYXRhLm1heEl0ZW1zfX0gZWxlbWVudGkuPC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImRpYWxvZ0RhdGEuZW1wdHlNZXNzYWdlIHwgc2FmZUh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2k+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIDxtYXQtc2VsZWN0aW9uLWxpc3QgI3NlbGVjdGlvbiAoc2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdCgkZXZlbnQpXCIgZGVuc2UgaGlkZVNpbmdsZVNlbGVjdGlvbkluZGljYXRvcj1cInRydWVcIlxyXG4gICAgICBbbXVsdGlwbGVdPVwiZGlhbG9nRGF0YS5tdWx0aXBsZVNlbGVjdGlvblwiPlxyXG4gICAgICBAZm9yIChpdGVtIG9mIChkaWFsb2dEYXRhLml0ZW1zIHwgc2VhcmNoOiAoIWRpYWxvZ0RhdGEuY2FuTG9va3VwID8gZmlsdGVyVGV4dCA6ICcnKSk7IHRyYWNrIGl0ZW0pIHtcclxuICAgICAgPG1hdC1saXN0LW9wdGlvbiBbdmFsdWVdPVwiaXRlbVwiIFtzZWxlY3RlZF09XCJpdGVtLnNlbGVjdGVkXCIgY2hlY2tib3hQb3NpdGlvbj1cImJlZm9yZVwiPlxyXG4gICAgICAgIDxkaXYgW2lubmVySHRtbF09XCJpdGVtLnRlbXBsYXRlIHwgc2FmZUh0bWxcIj48L2Rpdj5cclxuICAgICAgPC9tYXQtbGlzdC1vcHRpb24+XHJcbiAgICAgIH1cclxuICAgIDwvbWF0LXNlbGVjdGlvbi1saXN0PlxyXG4gIDwvZGl2PlxyXG48L21hdC1kaWFsb2ctY29udGVudD5cclxuPG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGaWxsPlxyXG4gICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIGNlbnRlclwiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4RmlsbD5cclxuICAgICAgPGRpdiBzdHlsZT1cInBhZGRpbmctbGVmdDoyMHB4XCI+XHJcbiAgICAgICAgQGlmIChzZWxlY3Rpb25JbmZvKCkpIHtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cInNtYWxsXCI+c2VsZXppb25lOiAmbmJzcDs8L3NwYW4+PHNwYW4gY2xhc3M9XCJib2xkXCI+e3tzZWxlY3Rpb25JbmZvKCl9fTwvc3Bhbj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGZ4RmxleEFsaWduPVwiY2VudGVyXCI+XHJcbiAgICAgICAgQGlmIChjYW5QYWdpbmF0ZSgpKSB7XHJcbiAgICAgICAgPG1hdC1wYWdpbmF0b3IgI3BhZ2luYXRvciBbaGlkZVBhZ2VTaXplXT1cInRydWVcIiBbcGFnZVNpemVdPVwiZGlhbG9nRGF0YS5wYWdlU2l6ZVwiIFtzaG93Rmlyc3RMYXN0QnV0dG9uc109XCJ0cnVlXCJcclxuICAgICAgICAgIChwYWdlKT1cImRvTG9va3VwUGFnZSgkZXZlbnQpXCIgW2xlbmd0aF09XCJkaWFsb2dEYXRhLnRvdGFsID8/IDBcIj48L21hdC1wYWdpbmF0b3I+XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwiZW5kXCIgZnhGaWxsPlxyXG4gICAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib2soKVwiIFtkaXNhYmxlZF09XCJva0Rpc2FibGVkKClcIj5cclxuICAgICAgICA8c3Bhbj57e2RpYWxvZ0RhdGEubXVzdFNlbGVjdCA/IGRpYWxvZ0RhdGEub2tDYXB0aW9uIDogJ0NoaXVkaSd9fTwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIEBpZiAoZGlhbG9nRGF0YS5tdXN0U2VsZWN0KSB7XHJcbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIG1hdC1kaWFsb2ctY2xvc2UgY2RrRm9jdXNJbml0aWFsIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICAgIDxzcGFuPkFubnVsbGE8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+Il19
@@ -78,10 +78,10 @@ export class SelectFileDialogComponent {
78
78
  this.file = files[0];
79
79
  }
80
80
  }
81
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: SelectFileDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
82
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: SelectFileDialogComponent, isStandalone: true, selector: "ng-component", outputs: { done: "done" }, host: { attributes: { "Bind": SystemUtils.generateUUID() }, listeners: { "dragover": "onDragOver($event)", "dragenter": "onDragEnter($event)", "dragend": "onDragEnd($event)", "dragleave": "onDragLeave($event)", "drop": "onDrop($event)" } }, ngImport: i0, template: "<h2 mat-dialog-title>{{dialogData.title}}</h2>\r\n@if (dialogData.description) {\r\n<div style=\"padding: 0 24px 24px 24px\" [innerHtml]=\"dialogData.description | safeHtml\"></div>\r\n}\r\n<mat-dialog-content>\r\n <div fxLayout=\"column\" fxLayoutGap=\"32px\" fxFill>\r\n <div draggable=\"true\" [ngClass]=\"fileClass\" fxFlexAlign=\"center\">\r\n <div style=\"text-align: center\">\r\n <input #_file type=\"file\" [hidden]=\"true\" (change)=\"update($event)\" />\r\n <button type=\"button\" mat-stroked-button color=\"primary\" (click)=\"_file.click()\">Seleziona file...</button>\r\n </div>\r\n @if (file) {\r\n <div class=\"selectfile-info\">\r\n <div class=\"small\"><i>{{file.name}}</i></div>\r\n <div class=\"small\">Dimensioni: <i>{{size(file.size)}}</i></div>\r\n </div>\r\n }\r\n </div>\r\n @if (dialogData.options) {\r\n <div style=\"padding-bottom: 24px;\">\r\n @for (o of dialogData.options; track $index; let i = $index) {\r\n <div>\r\n <mat-checkbox [(ngModel)]=\"o.value\" name=\"opt_{{i}}\">\r\n {{o.description}}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"50\">\r\n @if (dialogData.helpLink) {\r\n <a mat-button href=\"{{dialogData.helpLink}}\" target=\"_blank\" color=\"primary\">{{dialogData.helpCaption}}</a>\r\n }\r\n </div>\r\n <div fxFlex=\"50\" fxLayoutAlign=\"end\">\r\n <button mat-flat-button color=\"primary\" (click)=\"ok()\" [disabled]=\"!file\">{{dialogData.okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\" color=\"primary\">Annulla</button>\r\n </div>\r\n </div>\r\n</mat-dialog-actions>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.fill{min-width:100%!important;max-width:100%!important;width:100%!important;min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto;height:100%}.scroll-hidden{overflow:hidden;height:100%}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller}.small{font-size:small!important;line-height:16px}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}@supports (-webkit-line-clamp: 2){.truncated{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@supports (-webkit-line-clamp: 2){.truncated span,.truncated div{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-color-accent, #7894ae)!important}.primary{color:var(--ars-color-primary, #00a293)!important}.secondary{color:var(--ars-color-secondary, #4a635f)!important}.error{color:var(--ars-color-error, #ff5449)!important}.success{color:var(--ars-color-ok, #388E3C)!important}.warning{color:var(--ars-color-warning, #FFC107)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer .title-container,.drawer-small .title-container{padding:20px 5px 20px 0}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding:14px 5px 20px 0}.drawer .title,.drawer-small .title{font-size:1.2em;font-weight:600;padding-left:20px;min-width:150px;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:10px;padding-right:10px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-left:10px!important;padding-right:10px!important;padding-bottom:20px!important}@media screen and (min-width: 0px) and (max-width: 430px){.drawer,.drawer-small{border-radius:0!important;min-width:100%!important;max-width:100%!important}}@media screen and (min-width: 431px){.drawer{min-width:420px!important;max-width:420px!important}.drawer .title{min-width:200px}.drawer .mat-expansion-panel-body{padding-left:15px!important;padding-right:15px!important;padding-bottom:20px!important}.drawer-small{min-width:360px!important;max-width:360px!important}}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b{font-weight:600}}.selectfile-file,.selectfile-file-drop{padding:24px;width:100%;max-width:320px;border:5px dotted var(--ars-color-divider, #757d87);margin-top:24px}.selectfile-file-drop{border:5px dotted var(--ars-color-accent, #adcae6)}.selectfile-info{width:100%;margin-top:24px;text-align:center}.selectfile-description{padding:0 24px 24px}\n"], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i1.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "ngmodule", type: ArsCoreModule }, { kind: "pipe", type: i5.SafeHtmlPipe, name: "safeHtml" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
81
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: SelectFileDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
82
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.10", type: SelectFileDialogComponent, isStandalone: true, selector: "ng-component", outputs: { done: "done" }, host: { attributes: { "Bind": SystemUtils.generateUUID() }, listeners: { "dragover": "onDragOver($event)", "dragenter": "onDragEnter($event)", "dragend": "onDragEnd($event)", "dragleave": "onDragLeave($event)", "drop": "onDrop($event)" } }, ngImport: i0, template: "<h2 mat-dialog-title>{{dialogData.title}}</h2>\r\n@if (dialogData.description) {\r\n<div style=\"padding: 0 24px 24px 24px\" [innerHtml]=\"dialogData.description | safeHtml\"></div>\r\n}\r\n<mat-dialog-content>\r\n <div fxLayout=\"column\" fxLayoutGap=\"32px\" fxFill>\r\n <div draggable=\"true\" [ngClass]=\"fileClass\" fxFlexAlign=\"center\">\r\n <div style=\"text-align: center\">\r\n <input #_file type=\"file\" [hidden]=\"true\" (change)=\"update($event)\" />\r\n <button type=\"button\" mat-stroked-button color=\"primary\" (click)=\"_file.click()\">Seleziona file...</button>\r\n </div>\r\n @if (file) {\r\n <div class=\"selectfile-info\">\r\n <div class=\"small\"><i>{{file.name}}</i></div>\r\n <div class=\"small\">Dimensioni: <i>{{size(file.size)}}</i></div>\r\n </div>\r\n }\r\n </div>\r\n @if (dialogData.options) {\r\n <div style=\"padding-bottom: 24px;\">\r\n @for (o of dialogData.options; track $index; let i = $index) {\r\n <div>\r\n <mat-checkbox [(ngModel)]=\"o.value\" name=\"opt_{{i}}\">\r\n {{o.description}}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"50\">\r\n @if (dialogData.helpLink) {\r\n <a mat-button href=\"{{dialogData.helpLink}}\" target=\"_blank\" color=\"primary\">{{dialogData.helpCaption}}</a>\r\n }\r\n </div>\r\n <div fxFlex=\"50\" fxLayoutAlign=\"end\">\r\n <button mat-flat-button color=\"primary\" (click)=\"ok()\" [disabled]=\"!file\">{{dialogData.okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\" color=\"primary\">Annulla</button>\r\n </div>\r\n </div>\r\n</mat-dialog-actions>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.fill{min-width:100%!important;max-width:100%!important;width:100%!important;min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto;height:100%}.scroll-hidden{overflow:hidden;height:100%}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller}.small{font-size:small!important;line-height:16px}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}@supports (-webkit-line-clamp: 2){.truncated{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@supports (-webkit-line-clamp: 2){.truncated span,.truncated div{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-color-accent, #7894ae)!important}.primary{color:var(--ars-color-primary, #00a293)!important}.secondary{color:var(--ars-color-secondary, #4a635f)!important}.error{color:var(--ars-color-error, #ff5449)!important}.success{color:var(--ars-color-ok, #388E3C)!important}.warning{color:var(--ars-color-warning, #FFC107)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer .title-container,.drawer-small .title-container{padding:20px 5px 20px 0}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding:14px 5px 20px 0}.drawer .title,.drawer-small .title{font-size:1.2em;font-weight:600;padding-left:20px;min-width:150px;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:10px;padding-right:10px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-left:10px!important;padding-right:10px!important;padding-bottom:20px!important}@media screen and (min-width: 0px) and (max-width: 430px){.drawer,.drawer-small{border-radius:0!important;min-width:100%!important;max-width:100%!important}}@media screen and (min-width: 431px){.drawer{min-width:420px!important;max-width:420px!important}.drawer .title{min-width:200px}.drawer .mat-expansion-panel-body{padding-left:15px!important;padding-right:15px!important;padding-bottom:20px!important}.drawer-small{min-width:360px!important;max-width:360px!important}}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b{font-weight:600}}.selectfile-file,.selectfile-file-drop{padding:24px;width:100%;max-width:320px;border:5px dotted var(--ars-color-divider, #757d87);margin-top:24px}.selectfile-file-drop{border:5px dotted var(--ars-color-accent, #adcae6)}.selectfile-info{width:100%;margin-top:24px;text-align:center}.selectfile-description{padding:0 24px 24px}\n"], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i1.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "ngmodule", type: ArsCoreModule }, { kind: "pipe", type: i5.SafeHtmlPipe, name: "safeHtml" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
83
83
  }
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: SelectFileDialogComponent, decorators: [{
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: SelectFileDialogComponent, decorators: [{
85
85
  type: Component,
86
86
  args: [{ host: { 'Bind': SystemUtils.generateUUID() }, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatDialogTitle, MatDialogContent, FlexModule, MatButtonModule, MatCheckboxModule, FormsModule,
87
87
  MatDialogActions, MatDialogClose, ArsCoreModule, SafeHtmlPipe, NgClass], template: "<h2 mat-dialog-title>{{dialogData.title}}</h2>\r\n@if (dialogData.description) {\r\n<div style=\"padding: 0 24px 24px 24px\" [innerHtml]=\"dialogData.description | safeHtml\"></div>\r\n}\r\n<mat-dialog-content>\r\n <div fxLayout=\"column\" fxLayoutGap=\"32px\" fxFill>\r\n <div draggable=\"true\" [ngClass]=\"fileClass\" fxFlexAlign=\"center\">\r\n <div style=\"text-align: center\">\r\n <input #_file type=\"file\" [hidden]=\"true\" (change)=\"update($event)\" />\r\n <button type=\"button\" mat-stroked-button color=\"primary\" (click)=\"_file.click()\">Seleziona file...</button>\r\n </div>\r\n @if (file) {\r\n <div class=\"selectfile-info\">\r\n <div class=\"small\"><i>{{file.name}}</i></div>\r\n <div class=\"small\">Dimensioni: <i>{{size(file.size)}}</i></div>\r\n </div>\r\n }\r\n </div>\r\n @if (dialogData.options) {\r\n <div style=\"padding-bottom: 24px;\">\r\n @for (o of dialogData.options; track $index; let i = $index) {\r\n <div>\r\n <mat-checkbox [(ngModel)]=\"o.value\" name=\"opt_{{i}}\">\r\n {{o.description}}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"50\">\r\n @if (dialogData.helpLink) {\r\n <a mat-button href=\"{{dialogData.helpLink}}\" target=\"_blank\" color=\"primary\">{{dialogData.helpCaption}}</a>\r\n }\r\n </div>\r\n <div fxFlex=\"50\" fxLayoutAlign=\"end\">\r\n <button mat-flat-button color=\"primary\" (click)=\"ok()\" [disabled]=\"!file\">{{dialogData.okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\" color=\"primary\">Annulla</button>\r\n </div>\r\n </div>\r\n</mat-dialog-actions>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.fill{min-width:100%!important;max-width:100%!important;width:100%!important;min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto;height:100%}.scroll-hidden{overflow:hidden;height:100%}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller}.small{font-size:small!important;line-height:16px}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}@supports (-webkit-line-clamp: 2){.truncated{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@supports (-webkit-line-clamp: 2){.truncated span,.truncated div{overflow:hidden;text-overflow:ellipsis;white-space:initial;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-color-accent, #7894ae)!important}.primary{color:var(--ars-color-primary, #00a293)!important}.secondary{color:var(--ars-color-secondary, #4a635f)!important}.error{color:var(--ars-color-error, #ff5449)!important}.success{color:var(--ars-color-ok, #388E3C)!important}.warning{color:var(--ars-color-warning, #FFC107)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer .title-container,.drawer-small .title-container{padding:20px 5px 20px 0}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding:14px 5px 20px 0}.drawer .title,.drawer-small .title{font-size:1.2em;font-weight:600;padding-left:20px;min-width:150px;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:10px;padding-right:10px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-left:10px!important;padding-right:10px!important;padding-bottom:20px!important}@media screen and (min-width: 0px) and (max-width: 430px){.drawer,.drawer-small{border-radius:0!important;min-width:100%!important;max-width:100%!important}}@media screen and (min-width: 431px){.drawer{min-width:420px!important;max-width:420px!important}.drawer .title{min-width:200px}.drawer .mat-expansion-panel-body{padding-left:15px!important;padding-right:15px!important;padding-bottom:20px!important}.drawer-small{min-width:360px!important;max-width:360px!important}}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b{font-weight:600}}.selectfile-file,.selectfile-file-drop{padding:24px;width:100%;max-width:320px;border:5px dotted var(--ars-color-divider, #757d87);margin-top:24px}.selectfile-file-drop{border:5px dotted var(--ars-color-accent, #adcae6)}.selectfile-info{width:100%;margin-top:24px;text-align:center}.selectfile-description{padding:0 24px 24px}\n"] }]
@@ -103,4 +103,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
103
103
  type: HostListener,
104
104
  args: ["drop", ["$event"]]
105
105
  }] } });
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWZpbGUtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy91aS5hcHBsaWNhdGlvbi91aS9kaWFsb2dzL3NlbGVjdC1maWxlL3NlbGVjdC1maWxlLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkuYXBwbGljYXRpb24vdWkvZGlhbG9ncy9zZWxlY3QtZmlsZS9zZWxlY3QtZmlsZS1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdJLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7QUFXMUMsTUFBTSxPQUFPLHlCQUF5QjtJQVR0QztRQVVZLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBQ3hDLGNBQVMsR0FBRyxNQUFN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QUUsY0FHaEMsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsY0FBYyxFQUFHLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUcsaUJBQWlCLEVBQUUsV0FBVzt3QkFDdkcsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDOzhCQUcvRCxJQUFJO3NCQUFiLE1BQU07Z0JBb0MrQixVQUFVO3NCQUEvQyxZQUFZO3VCQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFJRyxXQUFXO3NCQUFqRCxZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFJQSxTQUFTO3NCQUE3QyxZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFJSSxXQUFXO3NCQUFqRCxZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFJSCxNQUFNO3NCQUF2QyxZQUFZO3VCQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBPdXRwdXQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dBY3Rpb25zLCBNYXREaWFsb2dDbG9zZSwgTWF0RGlhbG9nQ29udGVudCwgTWF0RGlhbG9nUmVmLCBNYXREaWFsb2dUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEFyc0NvcmVNb2R1bGUsIFNhZmVIdG1sUGlwZSwgU3lzdGVtVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBGbGV4TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0L2ZsZXgnO1xyXG5pbXBvcnQgeyBTZWxlY3RGaWxlLCBTZWxlY3RGaWxlRGlhbG9nRGF0YSB9IGZyb20gJy4uLy4uL2RlZmluaXRpb25zJztcclxuaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBob3N0OiB7ICdCaW5kJzogU3lzdGVtVXRpbHMuZ2VuZXJhdGVVVUlEKCkgfSxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LWZpbGUtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QtZmlsZS1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGltcG9ydHM6IFtNYXREaWFsb2dUaXRsZSwgIE1hdERpYWxvZ0NvbnRlbnQsIEZsZXhNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgIE1hdENoZWNrYm94TW9kdWxlLCBGb3Jtc01vZHVsZSwgXHJcbiAgICBNYXREaWFsb2dBY3Rpb25zLCBNYXREaWFsb2dDbG9zZSwgQXJzQ29yZU1vZHVsZSwgU2FmZUh0bWxQaXBlLCBOZ0NsYXNzXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VsZWN0RmlsZURpYWxvZ0NvbXBvbmVudCB7XHJcbiAgQE91dHB1dCgpIGRvbmUgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdEZpbGU+KCk7XHJcbiAgcHJpdmF0ZSBkaWFsb2dSZWYgPSBpbmplY3QoTWF0RGlhbG9nUmVmPFNlbGVjdEZpbGVEaWFsb2dDb21wb25lbnQ+KTtcclxuICBwcm90ZWN0ZWQgZGlhbG9nRGF0YSA6IFNlbGVjdEZpbGVEaWFsb2dEYXRhID0gaW5qZWN0KE1BVF9ESUFMT0dfREFUQSk7IFxyXG4gIFxyXG4gIHByb3RlY3RlZCBmaWxlOiBGaWxlIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJvdGVjdGVkIGZpbGVDbGFzcyA9IHNpZ25hbDwnc2VsZWN0ZmlsZS1maWxlJyB8ICdzZWxlY3RmaWxlLWZpbGUtZHJvcCc+KCdzZWxlY3RmaWxlLWZpbGUnKTtcclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSBwcmV2aWV3XHJcbiAgICogQHBhcmFtIGUgOiB0aGUgZXZlbnRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgdXBkYXRlKGU6IGFueSkge1xyXG4gICAgaWYgKGUudGFyZ2V0LmZpbGVzKSB7XHJcbiAgICAgIHRoaXMuZmlsZSA9IGUudGFyZ2V0LmZpbGVzWzBdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybWF0IHNpemVcclxuICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHNpemUoc2l6ZTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gU3lzdGVtVXRpbHMuZm9ybWF0RmlsZVNpemUoc2l6ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdWJtaXQgc2VsZWN0aW9uXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIG9rKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmRvbmUuZW1pdCh7IGZpbGU6IHRoaXMuZmlsZSwgb3B0aW9uczogdGhpcy5kaWFsb2dEYXRhLm9wdGlvbnMgfSk7XHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcihcImRyYWdvdmVyXCIsIFtcIiRldmVudFwiXSkgb25EcmFnT3ZlcihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmZpbGVDbGFzcy5zZXQoXCJzZWxlY3RmaWxlLWZpbGUtZHJvcFwiKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoXCJkcmFnZW50ZXJcIiwgW1wiJGV2ZW50XCJdKSBvbkRyYWdFbnRlcihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmZpbGVDbGFzcy5zZXQoXCJzZWxlY3RmaWxlLWZpbGUtZHJvcFwiKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoXCJkcmFnZW5kXCIsIFtcIiRldmVudFwiXSkgb25EcmFnRW5kKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuZmlsZUNsYXNzLnNldChcInNlbGVjdGZpbGUtZmlsZVwiKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoXCJkcmFnbGVhdmVcIiwgW1wiJGV2ZW50XCJdKSBvbkRyYWdMZWF2ZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmZpbGVDbGFzcy5zZXQoXCJzZWxlY3RmaWxlLWZpbGVcIik7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKFwiZHJvcFwiLCBbXCIkZXZlbnRcIl0pIG9uRHJvcChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmZpbGVDbGFzcy5zZXQoXCJzZWxlY3RmaWxlLWZpbGVcIik7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKSB7XHJcbiAgICAgIHRoaXMuYWRkRmlsZXMoZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBmaWxlc1xyXG4gICAqIEBwYXJhbSBmaWxlcyA6IHRoZSBmaWxlcyB0byBhZGRcclxuICAgKi9cclxuICBwcml2YXRlIGFkZEZpbGVzKGZpbGVzOiBGaWxlTGlzdCkge1xyXG4gICAgaWYgKGZpbGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5maWxlID0gZmlsZXNbMF07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4iLCI8aDIgbWF0LWRpYWxvZy10aXRsZT57e2RpYWxvZ0RhdGEudGl0bGV9fTwvaDI+XHJcbkBpZiAoZGlhbG9nRGF0YS5kZXNjcmlwdGlvbikge1xyXG48ZGl2IHN0eWxlPVwicGFkZGluZzogMCAyNHB4IDI0cHggMjRweFwiIFtpbm5lckh0bWxdPVwiZGlhbG9nRGF0YS5kZXNjcmlwdGlvbiB8IHNhZmVIdG1sXCI+PC9kaXY+XHJcbn1cclxuPG1hdC1kaWFsb2ctY29udGVudD5cclxuICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRHYXA9XCIzMnB4XCIgZnhGaWxsPlxyXG4gICAgPGRpdiBkcmFnZ2FibGU9XCJ0cnVlXCIgW25nQ2xhc3NdPVwiZmlsZUNsYXNzXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgPGRpdiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlclwiPlxyXG4gICAgICAgIDxpbnB1dCAjX2ZpbGUgdHlwZT1cImZpbGVcIiBbaGlkZGVuXT1cInRydWVcIiAoY2hhbmdlKT1cInVwZGF0ZSgkZXZlbnQpXCIgLz5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIl9maWxlLmNsaWNrKClcIj5TZWxlemlvbmEgZmlsZS4uLjwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgQGlmIChmaWxlKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RmaWxlLWluZm9cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic21hbGxcIj48aT57e2ZpbGUubmFtZX19PC9pPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbFwiPkRpbWVuc2lvbmk6IDxpPnt7c2l6ZShmaWxlLnNpemUpfX08L2k+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIEBpZiAoZGlhbG9nRGF0YS5vcHRpb25zKSB7XHJcbiAgICA8ZGl2IHN0eWxlPVwicGFkZGluZy1ib3R0b206IDI0cHg7XCI+XHJcbiAgICAgIEBmb3IgKG8gb2YgZGlhbG9nRGF0YS5vcHRpb25zOyB0cmFjayAkaW5kZXg7IGxldCBpID0gJGluZGV4KSB7XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPG1hdC1jaGVja2JveCBbKG5nTW9kZWwpXT1cIm8udmFsdWVcIiBuYW1lPVwib3B0X3t7aX19XCI+XHJcbiAgICAgICAgICB7e28uZGVzY3JpcHRpb259fVxyXG4gICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbjwvbWF0LWRpYWxvZy1jb250ZW50PlxyXG48bWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4gIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGw+XHJcbiAgICA8ZGl2IGZ4RmxleD1cIjUwXCI+XHJcbiAgICAgIEBpZiAoZGlhbG9nRGF0YS5oZWxwTGluaykge1xyXG4gICAgICA8YSBtYXQtYnV0dG9uIGhyZWY9XCJ7e2RpYWxvZ0RhdGEuaGVscExpbmt9fVwiIHRhcmdldD1cIl9ibGFua1wiIGNvbG9yPVwicHJpbWFyeVwiPnt7ZGlhbG9nRGF0YS5oZWxwQ2FwdGlvbn19PC9hPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgZnhGbGV4PVwiNTBcIiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJvaygpXCIgW2Rpc2FibGVkXT1cIiFmaWxlXCI+e3tkaWFsb2dEYXRhLm9rQ2FwdGlvbn19PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIFttYXQtZGlhbG9nLWNsb3NlXT1cInRydWVcIiBjb2xvcj1cInByaW1hcnlcIj5Bbm51bGxhPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+Il19
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWZpbGUtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy91aS5hcHBsaWNhdGlvbi91aS9kaWFsb2dzL3NlbGVjdC1maWxlL3NlbGVjdC1maWxlLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkuYXBwbGljYXRpb24vdWkvZGlhbG9ncy9zZWxlY3QtZmlsZS9zZWxlY3QtZmlsZS1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdJLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7QUFXMUMsTUFBTSxPQUFPLHlCQUF5QjtJQVR0QztRQVVZLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBQ3hDLGNBQVMsR0FBRyxNQUFN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QUUsY0FHaEMsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsY0FBYyxFQUFHLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUcsaUJBQWlCLEVBQUUsV0FBVzt3QkFDdkcsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDOzhCQUcvRCxJQUFJO3NCQUFiLE1BQU07Z0JBb0MrQixVQUFVO3NCQUEvQyxZQUFZO3VCQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFJRyxXQUFXO3NCQUFqRCxZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFJQSxTQUFTO3NCQUE3QyxZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFJSSxXQUFXO3NCQUFqRCxZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFJSCxNQUFNO3NCQUF2QyxZQUFZO3VCQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBPdXRwdXQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dBY3Rpb25zLCBNYXREaWFsb2dDbG9zZSwgTWF0RGlhbG9nQ29udGVudCwgTWF0RGlhbG9nUmVmLCBNYXREaWFsb2dUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEFyc0NvcmVNb2R1bGUsIFNhZmVIdG1sUGlwZSwgU3lzdGVtVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBGbGV4TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0L2ZsZXgnO1xyXG5pbXBvcnQgeyBTZWxlY3RGaWxlLCBTZWxlY3RGaWxlRGlhbG9nRGF0YSB9IGZyb20gJy4uLy4uL2RlZmluaXRpb25zJztcclxuaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBob3N0OiB7ICdCaW5kJzogU3lzdGVtVXRpbHMuZ2VuZXJhdGVVVUlEKCkgfSxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LWZpbGUtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QtZmlsZS1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGltcG9ydHM6IFtNYXREaWFsb2dUaXRsZSwgIE1hdERpYWxvZ0NvbnRlbnQsIEZsZXhNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgIE1hdENoZWNrYm94TW9kdWxlLCBGb3Jtc01vZHVsZSwgXHJcbiAgICBNYXREaWFsb2dBY3Rpb25zLCBNYXREaWFsb2dDbG9zZSwgQXJzQ29yZU1vZHVsZSwgU2FmZUh0bWxQaXBlLCBOZ0NsYXNzXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VsZWN0RmlsZURpYWxvZ0NvbXBvbmVudCB7XHJcbiAgQE91dHB1dCgpIGRvbmUgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdEZpbGU+KCk7XHJcbiAgcHJpdmF0ZSBkaWFsb2dSZWYgPSBpbmplY3QoTWF0RGlhbG9nUmVmPFNlbGVjdEZpbGVEaWFsb2dDb21wb25lbnQ+KTtcclxuICBwcm90ZWN0ZWQgZGlhbG9nRGF0YSA6IFNlbGVjdEZpbGVEaWFsb2dEYXRhID0gaW5qZWN0KE1BVF9ESUFMT0dfREFUQSk7IFxyXG4gIFxyXG4gIHByb3RlY3RlZCBmaWxlOiBGaWxlIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJvdGVjdGVkIGZpbGVDbGFzcyA9IHNpZ25hbDwnc2VsZWN0ZmlsZS1maWxlJyB8ICdzZWxlY3RmaWxlLWZpbGUtZHJvcCc+KCdzZWxlY3RmaWxlLWZpbGUnKTtcclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSBwcmV2aWV3XHJcbiAgICogQHBhcmFtIGUgOiB0aGUgZXZlbnRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgdXBkYXRlKGU6IGFueSkge1xyXG4gICAgaWYgKGUudGFyZ2V0LmZpbGVzKSB7XHJcbiAgICAgIHRoaXMuZmlsZSA9IGUudGFyZ2V0LmZpbGVzWzBdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybWF0IHNpemVcclxuICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHNpemUoc2l6ZTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gU3lzdGVtVXRpbHMuZm9ybWF0RmlsZVNpemUoc2l6ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdWJtaXQgc2VsZWN0aW9uXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIG9rKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmRvbmUuZW1pdCh7IGZpbGU6IHRoaXMuZmlsZSwgb3B0aW9uczogdGhpcy5kaWFsb2dEYXRhLm9wdGlvbnMgfSk7XHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcihcImRyYWdvdmVyXCIsIFtcIiRldmVudFwiXSkgb25EcmFnT3ZlcihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmZpbGVDbGFzcy5zZXQoXCJzZWxlY3RmaWxlLWZpbGUtZHJvcFwiKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoXCJkcmFnZW50ZXJcIiwgW1wiJGV2ZW50XCJdKSBvbkRyYWdFbnRlcihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmZpbGVDbGFzcy5zZXQoXCJzZWxlY3RmaWxlLWZpbGUtZHJvcFwiKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoXCJkcmFnZW5kXCIsIFtcIiRldmVudFwiXSkgb25EcmFnRW5kKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuZmlsZUNsYXNzLnNldChcInNlbGVjdGZpbGUtZmlsZVwiKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoXCJkcmFnbGVhdmVcIiwgW1wiJGV2ZW50XCJdKSBvbkRyYWdMZWF2ZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmZpbGVDbGFzcy5zZXQoXCJzZWxlY3RmaWxlLWZpbGVcIik7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKFwiZHJvcFwiLCBbXCIkZXZlbnRcIl0pIG9uRHJvcChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmZpbGVDbGFzcy5zZXQoXCJzZWxlY3RmaWxlLWZpbGVcIik7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKSB7XHJcbiAgICAgIHRoaXMuYWRkRmlsZXMoZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBmaWxlc1xyXG4gICAqIEBwYXJhbSBmaWxlcyA6IHRoZSBmaWxlcyB0byBhZGRcclxuICAgKi9cclxuICBwcml2YXRlIGFkZEZpbGVzKGZpbGVzOiBGaWxlTGlzdCkge1xyXG4gICAgaWYgKGZpbGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5maWxlID0gZmlsZXNbMF07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4iLCI8aDIgbWF0LWRpYWxvZy10aXRsZT57e2RpYWxvZ0RhdGEudGl0bGV9fTwvaDI+XHJcbkBpZiAoZGlhbG9nRGF0YS5kZXNjcmlwdGlvbikge1xyXG48ZGl2IHN0eWxlPVwicGFkZGluZzogMCAyNHB4IDI0cHggMjRweFwiIFtpbm5lckh0bWxdPVwiZGlhbG9nRGF0YS5kZXNjcmlwdGlvbiB8IHNhZmVIdG1sXCI+PC9kaXY+XHJcbn1cclxuPG1hdC1kaWFsb2ctY29udGVudD5cclxuICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRHYXA9XCIzMnB4XCIgZnhGaWxsPlxyXG4gICAgPGRpdiBkcmFnZ2FibGU9XCJ0cnVlXCIgW25nQ2xhc3NdPVwiZmlsZUNsYXNzXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgPGRpdiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlclwiPlxyXG4gICAgICAgIDxpbnB1dCAjX2ZpbGUgdHlwZT1cImZpbGVcIiBbaGlkZGVuXT1cInRydWVcIiAoY2hhbmdlKT1cInVwZGF0ZSgkZXZlbnQpXCIgLz5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIl9maWxlLmNsaWNrKClcIj5TZWxlemlvbmEgZmlsZS4uLjwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgQGlmIChmaWxlKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RmaWxlLWluZm9cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic21hbGxcIj48aT57e2ZpbGUubmFtZX19PC9pPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbFwiPkRpbWVuc2lvbmk6IDxpPnt7c2l6ZShmaWxlLnNpemUpfX08L2k+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIEBpZiAoZGlhbG9nRGF0YS5vcHRpb25zKSB7XHJcbiAgICA8ZGl2IHN0eWxlPVwicGFkZGluZy1ib3R0b206IDI0cHg7XCI+XHJcbiAgICAgIEBmb3IgKG8gb2YgZGlhbG9nRGF0YS5vcHRpb25zOyB0cmFjayAkaW5kZXg7IGxldCBpID0gJGluZGV4KSB7XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPG1hdC1jaGVja2JveCBbKG5nTW9kZWwpXT1cIm8udmFsdWVcIiBuYW1lPVwib3B0X3t7aX19XCI+XHJcbiAgICAgICAgICB7e28uZGVzY3JpcHRpb259fVxyXG4gICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbjwvbWF0LWRpYWxvZy1jb250ZW50PlxyXG48bWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4gIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGw+XHJcbiAgICA8ZGl2IGZ4RmxleD1cIjUwXCI+XHJcbiAgICAgIEBpZiAoZGlhbG9nRGF0YS5oZWxwTGluaykge1xyXG4gICAgICA8YSBtYXQtYnV0dG9uIGhyZWY9XCJ7e2RpYWxvZ0RhdGEuaGVscExpbmt9fVwiIHRhcmdldD1cIl9ibGFua1wiIGNvbG9yPVwicHJpbWFyeVwiPnt7ZGlhbG9nRGF0YS5oZWxwQ2FwdGlvbn19PC9hPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgZnhGbGV4PVwiNTBcIiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJvaygpXCIgW2Rpc2FibGVkXT1cIiFmaWxlXCI+e3tkaWFsb2dEYXRhLm9rQ2FwdGlvbn19PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIFttYXQtZGlhbG9nLWNsb3NlXT1cInRydWVcIiBjb2xvcj1cInByaW1hcnlcIj5Bbm51bGxhPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+Il19