@mediusinc/mng-commons 3.6.0-rc.0 → 3.6.0-rc.2

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 (210) hide show
  1. package/assets/fonts/poppins-v20-latin-500.woff +0 -0
  2. package/assets/fonts/poppins-v20-latin-500.woff2 +0 -0
  3. package/assets/fonts/poppins-v20-latin-600.woff +0 -0
  4. package/assets/fonts/poppins-v20-latin-600.woff2 +0 -0
  5. package/assets/fonts/poppins-v20-latin-700.woff +0 -0
  6. package/assets/fonts/poppins-v20-latin-700.woff2 +0 -0
  7. package/assets/fonts/poppins-v20-latin-regular.woff +0 -0
  8. package/assets/fonts/poppins-v20-latin-regular.woff2 +0 -0
  9. package/esm2022/lib/components/action/action.component.mjs +3 -3
  10. package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +5 -5
  11. package/esm2022/lib/components/form/date-range/date-range.component.mjs +11 -6
  12. package/esm2022/lib/components/form/dropdown/dropdown.component.mjs +2 -2
  13. package/esm2022/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.mjs +2 -2
  14. package/esm2022/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +2 -2
  15. package/esm2022/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +2 -2
  16. package/esm2022/lib/components/layout/topbar.component.mjs +2 -2
  17. package/esm2022/lib/components/layoutV2/breadcrumb.component.mjs +30 -0
  18. package/esm2022/lib/components/layoutV2/footer.component.mjs +19 -0
  19. package/esm2022/lib/components/layoutV2/index.mjs +8 -0
  20. package/esm2022/lib/components/layoutV2/main-layout.component.mjs +89 -0
  21. package/esm2022/lib/components/layoutV2/menu-item.component.mjs +229 -0
  22. package/esm2022/lib/components/layoutV2/menu.component.mjs +31 -0
  23. package/esm2022/lib/components/layoutV2/model/index.mjs +3 -0
  24. package/esm2022/lib/components/layoutV2/model/layout-state.model.mjs +2 -0
  25. package/esm2022/lib/components/layoutV2/model/menu.model.mjs +2 -0
  26. package/esm2022/lib/components/layoutV2/services/index.mjs +3 -0
  27. package/esm2022/lib/components/layoutV2/services/main-layout.component.service.mjs +53 -0
  28. package/esm2022/lib/components/layoutV2/services/menu.service.mjs +122 -0
  29. package/esm2022/lib/components/layoutV2/sidebar.component.mjs +54 -0
  30. package/esm2022/lib/components/layoutV2/topbar-user.component.mjs +40 -0
  31. package/esm2022/lib/components/layoutV2/topbar.component.mjs +75 -0
  32. package/esm2022/lib/components/layoutV2/version.component.mjs +63 -0
  33. package/esm2022/lib/components/pages/error/error.page.component.mjs +3 -3
  34. package/esm2022/lib/components/pages/not-found/not-found.page.component.mjs +3 -3
  35. package/esm2022/lib/components/tableview/table/column-filter/column-filter.component.mjs +2 -2
  36. package/esm2022/lib/components/tableview/table/column-filter-full/column-filter-full.component.mjs +2 -2
  37. package/esm2022/lib/components/tableview/table/column-value/column-value.component.mjs +2 -2
  38. package/esm2022/lib/components/tableview/table/table.component.mjs +3 -3
  39. package/esm2022/lib/models/config.model.mjs +1 -1
  40. package/esm2022/lib/models/index.mjs +2 -1
  41. package/esm2022/lib/models/menu-config.model.mjs +2 -0
  42. package/esm2022/lib/models/menu.model.mjs +1 -1
  43. package/esm2022/lib/router/route-builder.mjs +14 -2
  44. package/esm2022/lib/router/routes-builder.mjs +9 -1
  45. package/esm2022/lib/services/action-executor.service.mjs +3 -4
  46. package/esm2022/lib/utils/route.util.mjs +25 -1
  47. package/fesm2022/mediusinc-mng-commons.mjs +831 -88
  48. package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
  49. package/lib/components/form/autocomplete/autocomplete.component.d.ts +4 -3
  50. package/lib/components/form/date-range/date-range.component.d.ts +2 -1
  51. package/lib/components/layoutV2/breadcrumb.component.d.ts +10 -0
  52. package/lib/components/layoutV2/footer.component.d.ts +8 -0
  53. package/lib/components/layoutV2/index.d.ts +7 -0
  54. package/lib/components/layoutV2/main-layout.component.d.ts +23 -0
  55. package/lib/components/layoutV2/menu-item.component.d.ts +38 -0
  56. package/lib/components/layoutV2/menu.component.d.ts +12 -0
  57. package/lib/components/layoutV2/model/index.d.ts +2 -0
  58. package/lib/components/layoutV2/model/layout-state.model.d.ts +11 -0
  59. package/lib/components/layoutV2/model/menu.model.d.ts +4 -0
  60. package/lib/components/layoutV2/services/index.d.ts +2 -0
  61. package/lib/components/layoutV2/services/main-layout.component.service.d.ts +14 -0
  62. package/lib/components/layoutV2/services/menu.service.d.ts +22 -0
  63. package/lib/components/layoutV2/sidebar.component.d.ts +19 -0
  64. package/lib/components/layoutV2/topbar-user.component.d.ts +16 -0
  65. package/lib/components/layoutV2/topbar.component.d.ts +23 -0
  66. package/lib/components/layoutV2/version.component.d.ts +19 -0
  67. package/lib/models/config.model.d.ts +9 -8
  68. package/lib/models/index.d.ts +1 -0
  69. package/lib/models/menu-config.model.d.ts +15 -0
  70. package/lib/models/menu.model.d.ts +2 -0
  71. package/lib/router/route-builder.d.ts +6 -1
  72. package/lib/router/routes-builder.d.ts +5 -0
  73. package/lib/utils/route.util.d.ts +19 -30
  74. package/package.json +2 -2
  75. package/scss/common/layout/_breadcrumb.scss +0 -1
  76. package/scss/mng-commons-dark-v2.scss +9 -0
  77. package/scss/mng-commons-light-v2.scss +9 -0
  78. package/scss/v2/layout/_animation.scss +53 -0
  79. package/scss/v2/layout/_breadcrumb.scss +97 -0
  80. package/scss/v2/layout/_config.scss +42 -0
  81. package/scss/v2/layout/_content.scss +3 -0
  82. package/scss/v2/layout/_fonts.scss +32 -0
  83. package/scss/v2/layout/_layout_dark.scss +12 -0
  84. package/scss/v2/layout/_layout_light.scss +12 -0
  85. package/scss/v2/layout/_main.scss +54 -0
  86. package/scss/v2/layout/_profile.scss +10 -0
  87. package/scss/v2/layout/_responsive.scss +131 -0
  88. package/scss/v2/layout/_sidebar_drawer.scss +283 -0
  89. package/scss/v2/layout/_sidebar_horizontal.scss +168 -0
  90. package/scss/v2/layout/_sidebar_reveal.scss +201 -0
  91. package/scss/v2/layout/_sidebar_slim.scss +157 -0
  92. package/scss/v2/layout/_sidebar_slim_plus.scss +167 -0
  93. package/scss/v2/layout/_sidebar_vertical.scss +176 -0
  94. package/scss/v2/layout/_topbar.scss +174 -0
  95. package/scss/v2/layout/_typography.scss +62 -0
  96. package/scss/v2/layout/_utils.scss +33 -0
  97. package/scss/v2/layout/layout.scss +24 -0
  98. package/scss/v2/layout/mng/_mng_layout_footer.scss +33 -0
  99. package/scss/v2/layout/mng/_mng_layout_menu.scss +10 -0
  100. package/scss/v2/layout/mng/_mng_layout_styles.scss +3 -0
  101. package/scss/v2/layout/mng/_mng_layout_topbar.scss +16 -0
  102. package/scss/v2/layout/preloading.scss +84 -0
  103. package/scss/v2/theme/theme-base/_colors.scss +18 -0
  104. package/scss/v2/theme/theme-base/_common.scss +73 -0
  105. package/scss/v2/theme/theme-base/_components.scss +106 -0
  106. package/scss/v2/theme/theme-base/_mixins.scss +203 -0
  107. package/scss/v2/theme/theme-base/components/button/_button.scss +564 -0
  108. package/scss/v2/theme/theme-base/components/button/_speeddial.scss +86 -0
  109. package/scss/v2/theme/theme-base/components/button/_splitbutton.scss +381 -0
  110. package/scss/v2/theme/theme-base/components/data/_carousel.scss +37 -0
  111. package/scss/v2/theme/theme-base/components/data/_datatable.scss +338 -0
  112. package/scss/v2/theme/theme-base/components/data/_dataview.scss +55 -0
  113. package/scss/v2/theme/theme-base/components/data/_filter.scss +138 -0
  114. package/scss/v2/theme/theme-base/components/data/_fullcalendar.scss +329 -0
  115. package/scss/v2/theme/theme-base/components/data/_orderlist.scss +103 -0
  116. package/scss/v2/theme/theme-base/components/data/_organizationchart.scss +50 -0
  117. package/scss/v2/theme/theme-base/components/data/_paginator.scss +92 -0
  118. package/scss/v2/theme/theme-base/components/data/_picklist.scss +103 -0
  119. package/scss/v2/theme/theme-base/components/data/_timeline.scss +38 -0
  120. package/scss/v2/theme/theme-base/components/data/_tree.scss +149 -0
  121. package/scss/v2/theme/theme-base/components/data/_treetable.scss +256 -0
  122. package/scss/v2/theme/theme-base/components/data/_virtualscroller.scss +28 -0
  123. package/scss/v2/theme/theme-base/components/file/_fileupload.scss +58 -0
  124. package/scss/v2/theme/theme-base/components/input/_autocomplete.scss +117 -0
  125. package/scss/v2/theme/theme-base/components/input/_calendar.scss +263 -0
  126. package/scss/v2/theme/theme-base/components/input/_cascadeselect.scss +130 -0
  127. package/scss/v2/theme/theme-base/components/input/_checkbox.scss +90 -0
  128. package/scss/v2/theme/theme-base/components/input/_chips.scss +54 -0
  129. package/scss/v2/theme/theme-base/components/input/_colorpicker.scss +19 -0
  130. package/scss/v2/theme/theme-base/components/input/_dropdown.scss +135 -0
  131. package/scss/v2/theme/theme-base/components/input/_editor.scss +122 -0
  132. package/scss/v2/theme/theme-base/components/input/_inputgroup.scss +75 -0
  133. package/scss/v2/theme/theme-base/components/input/_inputmask.scss +16 -0
  134. package/scss/v2/theme/theme-base/components/input/_inputnumber.scss +28 -0
  135. package/scss/v2/theme/theme-base/components/input/_inputswitch.scss +60 -0
  136. package/scss/v2/theme/theme-base/components/input/_inputtext.scss +99 -0
  137. package/scss/v2/theme/theme-base/components/input/_listbox.scss +82 -0
  138. package/scss/v2/theme/theme-base/components/input/_multiselect.scss +173 -0
  139. package/scss/v2/theme/theme-base/components/input/_password.scss +52 -0
  140. package/scss/v2/theme/theme-base/components/input/_radiobutton.scss +78 -0
  141. package/scss/v2/theme/theme-base/components/input/_rating.scss +55 -0
  142. package/scss/v2/theme/theme-base/components/input/_selectbutton.scss +50 -0
  143. package/scss/v2/theme/theme-base/components/input/_slider.scss +71 -0
  144. package/scss/v2/theme/theme-base/components/input/_togglebutton.scss +48 -0
  145. package/scss/v2/theme/theme-base/components/input/_treeselect.scss +139 -0
  146. package/scss/v2/theme/theme-base/components/menu/_breadcrumb.scss +42 -0
  147. package/scss/v2/theme/theme-base/components/menu/_contextmenu.scss +61 -0
  148. package/scss/v2/theme/theme-base/components/menu/_dock.scss +86 -0
  149. package/scss/v2/theme/theme-base/components/menu/_megamenu.scss +106 -0
  150. package/scss/v2/theme/theme-base/components/menu/_menu.scss +45 -0
  151. package/scss/v2/theme/theme-base/components/menu/_menubar.scss +188 -0
  152. package/scss/v2/theme/theme-base/components/menu/_panelmenu.scss +140 -0
  153. package/scss/v2/theme/theme-base/components/menu/_slidemenu.scss +64 -0
  154. package/scss/v2/theme/theme-base/components/menu/_steps.scss +56 -0
  155. package/scss/v2/theme/theme-base/components/menu/_tabmenu.scss +74 -0
  156. package/scss/v2/theme/theme-base/components/menu/_tieredmenu.scss +65 -0
  157. package/scss/v2/theme/theme-base/components/messages/_inlinemessage.scss +69 -0
  158. package/scss/v2/theme/theme-base/components/messages/_message.scss +107 -0
  159. package/scss/v2/theme/theme-base/components/messages/_toast.scss +100 -0
  160. package/scss/v2/theme/theme-base/components/misc/_avatar.scss +30 -0
  161. package/scss/v2/theme/theme-base/components/misc/_badge.scss +48 -0
  162. package/scss/v2/theme/theme-base/components/misc/_blockui.scss +0 -0
  163. package/scss/v2/theme/theme-base/components/misc/_chip.scss +38 -0
  164. package/scss/v2/theme/theme-base/components/misc/_inplace.scss +17 -0
  165. package/scss/v2/theme/theme-base/components/misc/_progressbar.scss +17 -0
  166. package/scss/v2/theme/theme-base/components/misc/_scrolltop.scss +25 -0
  167. package/scss/v2/theme/theme-base/components/misc/_skeleton.scss +8 -0
  168. package/scss/v2/theme/theme-base/components/misc/_tag.scss +40 -0
  169. package/scss/v2/theme/theme-base/components/misc/_terminal.scss +11 -0
  170. package/scss/v2/theme/theme-base/components/multimedia/_galleria.scss +149 -0
  171. package/scss/v2/theme/theme-base/components/multimedia/_image.scss +49 -0
  172. package/scss/v2/theme/theme-base/components/overlay/_confirmpopup.scss +72 -0
  173. package/scss/v2/theme/theme-base/components/overlay/_dialog.scss +69 -0
  174. package/scss/v2/theme/theme-base/components/overlay/_overlaypanel.scss +64 -0
  175. package/scss/v2/theme/theme-base/components/overlay/_sidebar.scss +27 -0
  176. package/scss/v2/theme/theme-base/components/overlay/_tooltip.scss +33 -0
  177. package/scss/v2/theme/theme-base/components/panel/_accordion.scss +119 -0
  178. package/scss/v2/theme/theme-base/components/panel/_card.scss +30 -0
  179. package/scss/v2/theme/theme-base/components/panel/_divider.scss +31 -0
  180. package/scss/v2/theme/theme-base/components/panel/_fieldset.scss +47 -0
  181. package/scss/v2/theme/theme-base/components/panel/_panel.scss +58 -0
  182. package/scss/v2/theme/theme-base/components/panel/_scrollpanel.scss +6 -0
  183. package/scss/v2/theme/theme-base/components/panel/_splitter.scss +19 -0
  184. package/scss/v2/theme/theme-base/components/panel/_tabview.scss +78 -0
  185. package/scss/v2/theme/theme-base/components/panel/_toolbar.scss +11 -0
  186. package/scss/v2/theme/theme-base/mng/_mng_mixins.scss +69 -0
  187. package/scss/v2/theme/theme-base/mng/_mng_theme_autocomplete.scss +34 -0
  188. package/scss/v2/theme/theme-base/mng/_mng_theme_button.scss +68 -0
  189. package/scss/v2/theme/theme-base/mng/_mng_theme_datatable.scss +146 -0
  190. package/scss/v2/theme/theme-base/mng/_mng_theme_datepicker.scss +21 -0
  191. package/scss/v2/theme/theme-base/mng/_mng_theme_dialog.scss +206 -0
  192. package/scss/v2/theme/theme-base/mng/_mng_theme_dropdown.scss +22 -0
  193. package/scss/v2/theme/theme-base/mng/_mng_theme_fileupload.scss +24 -0
  194. package/scss/v2/theme/theme-base/mng/_mng_theme_forms.scss +66 -0
  195. package/scss/v2/theme/theme-base/mng/_mng_theme_image.scss +27 -0
  196. package/scss/v2/theme/theme-base/mng/_mng_theme_input.scss +31 -0
  197. package/scss/v2/theme/theme-base/mng/_mng_theme_menu.scss +5 -0
  198. package/scss/v2/theme/theme-base/mng/_mng_theme_multiselect.scss +20 -0
  199. package/scss/v2/theme/theme-base/mng/_mng_theme_styles.scss +17 -0
  200. package/scss/v2/theme/theme-base/mng/_mng_theme_tableview.scss +97 -0
  201. package/scss/v2/theme/theme-base/mng/_mng_theme_tabview.scss +11 -0
  202. package/scss/v2/theme/theme-base/mng/_mng_theme_toast.scss +3 -0
  203. package/scss/v2/theme/theme-base/mng/_mng_theme_toolbar.scss +5 -0
  204. package/scss/v2/theme/theme-base/mng/_mng_variables.scss +15 -0
  205. package/scss/v2/theme/theme-dark/_extensions.scss +100 -0
  206. package/scss/v2/theme/theme-dark/_variables.scss +937 -0
  207. package/scss/v2/theme/theme-dark/blue/theme.scss +13 -0
  208. package/scss/v2/theme/theme-light/_extensions.scss +100 -0
  209. package/scss/v2/theme/theme-light/_variables.scss +937 -0
  210. package/scss/v2/theme/theme-light/blue/theme.scss +13 -0
@@ -189,7 +189,7 @@ export class MngFormlyFieldInputComponent extends FieldType {
189
189
  }
190
190
  }
191
191
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngFormlyFieldInputComponent, deps: [{ token: LOCALE_ID }, { token: i1.FormBuilder }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
192
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: MngFormlyFieldInputComponent, isStandalone: true, selector: "mng-formly-field-input", usesInheritance: true, ngImport: i0, template: "<ng-container [ngSwitch]=\"props.type\">\n <p-inputNumber\n *ngSwitchCase=\"'number'\"\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [min]=\"descriptor.numberAutoCorrect ? descriptor.numberMin : undefined\"\n [max]=\"descriptor.numberAutoCorrect ? descriptor.numberMax : undefined\"\n [step]=\"$any(descriptor.numberStep)\"\n [useGrouping]=\"descriptor.numberUseGrouping\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits || 0\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits || 0\"\n [inputStyleClass]=\"descriptor.inputClassName\"\n [locale]=\"descriptor.locale ?? applicationLocale\"\n [mode]=\"numberFieldMode\"\n [currency]=\"currency\"\n [currencyDisplay]=\"descriptor.currencyDisplay\">\n </p-inputNumber>\n\n <div *ngSwitchCase=\"'switch'\" class=\"field flex flex-column\">\n <label [for]=\"key\" [class]=\"descriptor.labelClassName\">{{ props.label! | translate }} <span *ngIf=\"props.required && props['hideRequiredMarker'] !== true\">*</span></label>\n <p-inputSwitch [id]=\"$any(key)\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [styleClass]=\"descriptor.inputClassName\"></p-inputSwitch>\n <small *ngIf=\"showError\" class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n </div>\n\n <ng-container *ngSwitchCase=\"'radio'\">\n <div *ngFor=\"let option of descriptor.radioOptions\" [id]=\"$any(key)\" class=\"field-radiobutton\">\n <p-radioButton\n [name]=\"$any(key)\"\n [value]=\"option.value\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [styleClass]=\"descriptor.inputClassName\"></p-radioButton>\n <label [for]=\"option.value\" [class]=\"'mng-radio-button-label ' + descriptor.labelClassName\">{{ option.title | translate }}</label>\n </div>\n </ng-container>\n\n <textarea\n *ngSwitchCase=\"'textarea'\"\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [rows]=\"descriptor.rows ?? 3\"\n pInputTextarea\n [class]=\"descriptor.inputClassName\">\n </textarea>\n\n <p-calendar\n *ngSwitchCase=\"'datepicker'\"\n appendTo=\"body\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [minDate]=\"$any(descriptor.datePickerMin)\"\n [maxDate]=\"$any(descriptor.datePickerMax)\"\n [showTime]=\"descriptor.datePickerShowTime\"\n [showSeconds]=\"descriptor.datePickerShowSeconds\"\n [showIcon]=\"true\"\n [inputStyleClass]=\"descriptor.inputClassName\"\n [firstDayOfWeek]=\"1\">\n </p-calendar>\n\n <p-inputMask\n *ngSwitchCase=\"'mask'\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [mask]=\"descriptor.mask\"\n [placeholder]=\"descriptor.placeholder\"\n [slotChar]=\"$any(descriptor.slotChar)\"\n [styleClass]=\"descriptor.inputClassName\">\n </p-inputMask>\n\n <p-fileUpload\n #fileUploadInput\n *ngSwitchCase=\"'file'\"\n [disabled]=\"iFormControl.disabled\"\n [multiple]=\"descriptor.fileMultiple\"\n [accept]=\"descriptor.fileAccept\"\n [maxFileSize]=\"descriptor.fileMaxFileSize\"\n [showUploadButton]=\"false\"\n (onSelect)=\"onFileSelect($event)\"\n (onRemove)=\"onFileRemove($event)\"\n (onClear)=\"onFileClear($event)\">\n <ng-template let-file let-idx=\"index\" pTemplate=\"file\">\n <div class=\"p-fileupload-row\">\n <div>\n <ng-container *ngIf=\"fileUploadInput.isImage(file); else fileInputDocument\">\n <span *ngIf=\"isFileImageSvg(file); else fileInputImageDefault\" class=\"flex align-items-center justify-content-center\">\n <i class=\"pi pi-image text-2xl\"></i>\n </span>\n <ng-template #fileInputImageDefault>\n <img [src]=\"file.objectURL\" [width]=\"fileUploadInput.previewWidth\" (error)=\"fileUploadInput.imageError($event)\" />\n </ng-template>\n </ng-container>\n <ng-template #fileInputDocument>\n <span class=\"flex align-items-center justify-content-center\">\n <i [class]=\"'pi ' + getFileDocumentTypeIcon(file) + ' text-2xl'\"></i>\n </span>\n </ng-template>\n </div>\n <div class=\"p-fileupload-filename\">{{ file.name }}</div>\n <div>{{ fileUploadInput.formatSize(file.size) }}</div>\n <div>\n <button\n type=\"button\"\n pButton\n (click)=\"fileUploadInput.remove($event, idx)\"\n [disabled]=\"fileUploadInput.uploading\"\n class=\"p-button-icon-only\"\n [class]=\"fileUploadInput.removeStyleClass\">\n <TimesIcon *ngIf=\"!fileUploadInput.cancelIconTemplate\" />\n </button>\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"content\" let-files>\n <div *ngIf=\"files.length === 0\" class=\"text-gray-300 dropdown-area\">\n <span><i class=\"pi pi-file-import mr-2\"></i>{{ 'fileUpload.dragAndDrop' | translate }}</span>\n </div>\n </ng-template>\n </p-fileUpload>\n\n <div *ngSwitchCase=\"'imageUrl'\">\n <div *ngIf=\"descriptor.imagePreview\" class=\"flex flex-wrap justify-content-start\">\n <ng-container *ngFor=\"let image of imageFormArray.controls; let idx = index\">\n <p-image\n *ngIf=\"imageFormArray.at(idx).valid && imageFormArray.at(idx).value; else noImage\"\n [src]=\"imageFormArray.at(idx).value\"\n [preview]=\"true\"\n (onImageError)=\"onImageUrlLoadError()\"\n styleClass=\"mng-image m-2\"></p-image>\n </ng-container>\n <ng-template #noImage>\n <span class=\"mng-image m-2 p-image-preview-container no-image\">\n <div class=\"p-image-preview-indicator\">\n <i class=\"p-image-preview-icon pi pi-ban\"></i>\n </div>\n </span>\n </ng-template>\n </div>\n <ng-container *ngIf=\"!descriptor.imagePreview || descriptor.imageUrlInputVisibleOnDisabled || !iFormControl.disabled\">\n <div *ngFor=\"let imageCtrlName of imageFormArray.controls; let idx = index\" class=\"p-inputgroup mt-1\">\n <input\n pInputText\n [placeholder]=\"'mngEditor.imageUrlPlaceholder' | translate\"\n [id]=\"$any(key)\"\n type=\"text\"\n [formControl]=\"$any(imageFormArray.at(idx))\"\n [formlyAttributes]=\"field\" />\n <button *ngIf=\"descriptor.fileMultiple && !iFormControl.disabled\" type=\"button\" pButton pRipple icon=\"pi pi-minus\" (click)=\"removeImageUrlAt(idx)\"></button>\n </div>\n <button\n *ngIf=\"descriptor.fileMultiple && !iFormControl.disabled\"\n type=\"button\"\n pButton\n pRipple\n icon=\"pi pi-plus\"\n class=\"p-button-primary w-auto mt-1\"\n [label]=\"'mngEditor.imageUrlAdd' | translate\"\n (click)=\"addImageUrl()\"></button>\n </ng-container>\n </div>\n\n <input *ngSwitchDefault pInputText [id]=\"$any(key)\" [type]=\"props.type || 'text'\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" />\n</ng-container>\n", dependencies: [{ kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "ngmodule", type: InputNumberModule }, { kind: "component", type: i3.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i5.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "component", type: i5.ɵFormlyValidationMessage, selector: "formly-validation-message", inputs: ["field"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: InputSwitchModule }, { kind: "component", type: i6.InputSwitch, selector: "p-inputSwitch", inputs: ["style", "styleClass", "tabindex", "inputId", "name", "disabled", "readonly", "trueValue", "falseValue", "ariaLabel", "ariaLabelledBy"], outputs: ["onChange"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RadioButtonModule }, { kind: "component", type: i7.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: CalendarModule }, { kind: "component", type: i8.Calendar, selector: "p-calendar", inputs: ["style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "directive", type: i9.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "ngmodule", type: InputMaskModule }, { kind: "component", type: i10.InputMask, selector: "p-inputMask", inputs: ["type", "slotChar", "autoClear", "showClear", "style", "inputId", "styleClass", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "disabled", "readonly", "unmask", "name", "required", "characterPattern", "autoFocus", "autocomplete", "keepBuffer", "mask"], outputs: ["onComplete", "onFocus", "onBlur", "onInput", "onKeydown", "onClear"] }, { kind: "ngmodule", type: FileUploadModule }, { kind: "component", type: i11.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError"] }, { kind: "ngmodule", type: ImageModule }, { kind: "component", type: i12.Image, selector: "p-image", inputs: ["imageClass", "imageStyle", "styleClass", "style", "src", "srcSet", "sizes", "previewImageSrc", "previewImageSrcSet", "previewImageSizes", "alt", "width", "height", "appendTo", "preview", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide", "onImageError"] }, { kind: "directive", type: NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: InputTextareaModule }, { kind: "directive", type: i13.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize"], outputs: ["onResize"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i14.InputText, selector: "[pInputText]" }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i15.Ripple, selector: "[pRipple]" }, { kind: "component", type: TimesIcon, selector: "TimesIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
192
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: MngFormlyFieldInputComponent, isStandalone: true, selector: "mng-formly-field-input", usesInheritance: true, ngImport: i0, template: "<ng-container [ngSwitch]=\"props.type\">\n <p-inputNumber\n *ngSwitchCase=\"'number'\"\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [min]=\"descriptor.numberAutoCorrect ? descriptor.numberMin : undefined\"\n [max]=\"descriptor.numberAutoCorrect ? descriptor.numberMax : undefined\"\n [step]=\"$any(descriptor.numberStep)\"\n [useGrouping]=\"descriptor.numberUseGrouping\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits || 0\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits || 0\"\n [inputStyleClass]=\"descriptor.inputClassName\"\n [locale]=\"descriptor.locale ?? applicationLocale\"\n [mode]=\"numberFieldMode\"\n [currency]=\"currency\"\n [currencyDisplay]=\"descriptor.currencyDisplay\">\n </p-inputNumber>\n\n <div *ngSwitchCase=\"'switch'\" class=\"field flex flex-column\">\n <label [for]=\"key\" [class]=\"descriptor.labelClassName\">{{ props.label! | translate }} <span *ngIf=\"props.required && props['hideRequiredMarker'] !== true\">*</span></label>\n <p-inputSwitch [id]=\"$any(key)\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [styleClass]=\"descriptor.inputClassName\"></p-inputSwitch>\n <small *ngIf=\"showError\" class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n </div>\n\n <ng-container *ngSwitchCase=\"'radio'\">\n <div *ngFor=\"let option of descriptor.radioOptions\" [id]=\"$any(key)\" class=\"field-radiobutton\">\n <p-radioButton\n [name]=\"$any(key)\"\n [value]=\"option.value\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [styleClass]=\"descriptor.inputClassName\"></p-radioButton>\n <label [for]=\"option.value\" [class]=\"'mng-radio-button-label ' + descriptor.labelClassName\">{{ option.title | translate }}</label>\n </div>\n </ng-container>\n\n <textarea\n *ngSwitchCase=\"'textarea'\"\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [rows]=\"descriptor.rows ?? 3\"\n pInputTextarea\n [class]=\"descriptor.inputClassName\">\n </textarea>\n\n <p-calendar\n *ngSwitchCase=\"'datepicker'\"\n appendTo=\"body\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [minDate]=\"$any(descriptor.datePickerMin)\"\n [maxDate]=\"$any(descriptor.datePickerMax)\"\n [showTime]=\"descriptor.datePickerShowTime\"\n [showSeconds]=\"descriptor.datePickerShowSeconds\"\n [showIcon]=\"true\"\n [inputStyleClass]=\"descriptor.inputClassName\"\n [firstDayOfWeek]=\"1\">\n </p-calendar>\n\n <p-inputMask\n *ngSwitchCase=\"'mask'\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [mask]=\"descriptor.mask\"\n [placeholder]=\"descriptor.placeholder\"\n [slotChar]=\"$any(descriptor.slotChar)\"\n [styleClass]=\"descriptor.inputClassName\">\n </p-inputMask>\n\n <p-fileUpload\n #fileUploadInput\n *ngSwitchCase=\"'file'\"\n [disabled]=\"iFormControl.disabled\"\n [multiple]=\"descriptor.fileMultiple\"\n [accept]=\"descriptor.fileAccept\"\n [maxFileSize]=\"descriptor.fileMaxFileSize\"\n [showUploadButton]=\"false\"\n (onSelect)=\"onFileSelect($event)\"\n (onRemove)=\"onFileRemove($event)\"\n (onClear)=\"onFileClear($event)\">\n <ng-template let-file let-idx=\"index\" pTemplate=\"file\">\n <div class=\"p-fileupload-row\">\n <div>\n <ng-container *ngIf=\"fileUploadInput.isImage(file); else fileInputDocument\">\n <span *ngIf=\"isFileImageSvg(file); else fileInputImageDefault\" class=\"flex align-items-center justify-content-center\">\n <i class=\"pi pi-image text-2xl\"></i>\n </span>\n <ng-template #fileInputImageDefault>\n <img [src]=\"file.objectURL\" [width]=\"fileUploadInput.previewWidth\" (error)=\"fileUploadInput.imageError($event)\" />\n </ng-template>\n </ng-container>\n <ng-template #fileInputDocument>\n <span class=\"flex align-items-center justify-content-center\">\n <i [class]=\"'pi ' + getFileDocumentTypeIcon(file) + ' text-2xl'\"></i>\n </span>\n </ng-template>\n </div>\n <div class=\"p-fileupload-filename\">{{ file.name }}</div>\n <div>{{ fileUploadInput.formatSize(file.size) }}</div>\n <div>\n <button\n type=\"button\"\n pButton\n (click)=\"fileUploadInput.remove($event, idx)\"\n [disabled]=\"fileUploadInput.uploading\"\n class=\"p-button-icon-only\"\n [class]=\"fileUploadInput.removeStyleClass\">\n <TimesIcon *ngIf=\"!fileUploadInput.cancelIconTemplate\" />\n </button>\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"content\" let-files>\n <div *ngIf=\"files.length === 0\" class=\"text-gray-300 dropdown-area\">\n <span><i class=\"pi pi-file-import mr-2\"></i>{{ 'fileUpload.dragAndDrop' | translate }}</span>\n </div>\n </ng-template>\n </p-fileUpload>\n\n <div *ngSwitchCase=\"'imageUrl'\">\n <div *ngIf=\"descriptor.imagePreview\" class=\"flex flex-wrap justify-content-start\">\n <ng-container *ngFor=\"let image of imageFormArray.controls; let idx = index\">\n <p-image\n *ngIf=\"imageFormArray.at(idx).valid && imageFormArray.at(idx).value; else noImage\"\n [src]=\"imageFormArray.at(idx).value\"\n [preview]=\"true\"\n (onImageError)=\"onImageUrlLoadError()\"\n styleClass=\"mng-image m-2\"></p-image>\n </ng-container>\n <ng-template #noImage>\n <span class=\"mng-image m-2 p-image-preview-container no-image\">\n <div class=\"p-image-preview-indicator\">\n <i class=\"p-image-preview-icon pi pi-ban\"></i>\n </div>\n </span>\n </ng-template>\n </div>\n <ng-container *ngIf=\"!descriptor.imagePreview || descriptor.imageUrlInputVisibleOnDisabled || !iFormControl.disabled\">\n <div *ngFor=\"let imageCtrlName of imageFormArray.controls; let idx = index\" class=\"p-inputgroup mt-1\">\n <input\n pInputText\n [placeholder]=\"'mngEditor.imageUrlPlaceholder' | translate\"\n [id]=\"$any(key)\"\n type=\"text\"\n [formControl]=\"$any(imageFormArray.at(idx))\"\n [formlyAttributes]=\"field\" />\n <button *ngIf=\"descriptor.fileMultiple && !iFormControl.disabled\" type=\"button\" pButton pRipple icon=\"pi pi-minus\" (click)=\"removeImageUrlAt(idx)\"></button>\n </div>\n <button\n *ngIf=\"descriptor.fileMultiple && !iFormControl.disabled\"\n type=\"button\"\n pButton\n pRipple\n icon=\"pi pi-plus\"\n class=\"p-button-primary w-auto mt-1\"\n [label]=\"'mngEditor.imageUrlAdd' | translate\"\n (click)=\"addImageUrl()\"></button>\n </ng-container>\n </div>\n\n <input *ngSwitchDefault pInputText [id]=\"$any(key)\" [type]=\"props.type || 'text'\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" />\n</ng-container>\n", dependencies: [{ kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "ngmodule", type: InputNumberModule }, { kind: "component", type: i3.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i5.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "component", type: i5.ɵFormlyValidationMessage, selector: "formly-validation-message", inputs: ["field"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: InputSwitchModule }, { kind: "component", type: i6.InputSwitch, selector: "p-inputSwitch", inputs: ["style", "styleClass", "tabindex", "inputId", "name", "disabled", "readonly", "trueValue", "falseValue", "ariaLabel", "ariaLabelledBy"], outputs: ["onChange"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RadioButtonModule }, { kind: "component", type: i7.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: CalendarModule }, { kind: "component", type: i8.Calendar, selector: "p-calendar", inputs: ["style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "directive", type: i9.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "ngmodule", type: InputMaskModule }, { kind: "component", type: i10.InputMask, selector: "p-inputMask", inputs: ["type", "slotChar", "autoClear", "showClear", "style", "inputId", "styleClass", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaLabelledBy", "ariaRequired", "disabled", "readonly", "unmask", "name", "required", "characterPattern", "autoFocus", "autocomplete", "keepBuffer", "mask"], outputs: ["onComplete", "onFocus", "onBlur", "onInput", "onKeydown", "onClear"] }, { kind: "ngmodule", type: FileUploadModule }, { kind: "component", type: i11.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError"] }, { kind: "ngmodule", type: ImageModule }, { kind: "component", type: i12.Image, selector: "p-image", inputs: ["imageClass", "imageStyle", "styleClass", "style", "src", "srcSet", "sizes", "previewImageSrc", "previewImageSrcSet", "previewImageSizes", "alt", "width", "height", "loading", "appendTo", "preview", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide", "onImageError"] }, { kind: "directive", type: NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: InputTextareaModule }, { kind: "directive", type: i13.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize"], outputs: ["onResize"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i14.InputText, selector: "[pInputText]" }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i15.Ripple, selector: "[pRipple]" }, { kind: "component", type: TimesIcon, selector: "TimesIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
193
193
  }
194
194
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngFormlyFieldInputComponent, decorators: [{
195
195
  type: Component,
@@ -218,4 +218,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
218
218
  type: Inject,
219
219
  args: [LOCALE_ID]
220
220
  }] }, { type: i1.FormBuilder }, { type: i2.TranslateService }]; } });
221
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2Zvcm1seS9maWVsZHMvZm9ybWx5LWZpZWxkLWlucHV0L2Zvcm1seS1maWVsZC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1pbnB1dC9mb3JtbHktZmllbGQtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RixPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZHLE9BQU8sRUFBWSxXQUFXLEVBQWUsbUJBQW1CLEVBQWUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFakgsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RCxPQUFPLEVBQUMsZUFBZSxFQUFFLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsaUJB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QUFjLDYxQ0FDZCxlQUFlLGllQUNmLGdCQUFnQix3MUJBQ2hCLFdBQVcsbVlBQ1gsZUFBZSw2REFDZixtQkFBbUIsMkpBQ25CLGVBQWUsb0dBQ2YsWUFBWSwrRkFDWixTQUFTOzsyRkFJSiw0QkFBNEI7a0JBM0J4QyxTQUFTO2lDQUNNLElBQUksWUFDTix3QkFBd0IsV0FFekI7d0JBQ0wsUUFBUTt3QkFDUixpQkFBaUI7d0JBQ2pCLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixJQUFJO3dCQUNKLGlCQUFpQjt3QkFDakIsT0FBTzt3QkFDUCxjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLFlBQVk7d0JBQ1osU0FBUztxQkFDWixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTs7MEJBY2xDLE1BQU07MkJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdGb3JPZiwgTmdJZiwgTmdTd2l0Y2gsIE5nU3dpdGNoQ2FzZSwgTmdTd2l0Y2hEZWZhdWx0fSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3QsIExPQ0FMRV9JRCwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtGaWVsZFR5cGUsIEZvcm1seU1vZHVsZX0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0NhbGVuZGFyTW9kdWxlfSBmcm9tICdwcmltZW5nL2NhbGVuZGFyJztcbmltcG9ydCB7RmlsZVVwbG9hZE1vZHVsZX0gZnJvbSAncHJpbWVuZy9maWxldXBsb2FkJztcbmltcG9ydCB7VGltZXNJY29ufSBmcm9tICdwcmltZW5nL2ljb25zL3RpbWVzJztcbmltcG9ydCB7SW1hZ2VNb2R1bGV9IGZyb20gJ3ByaW1lbmcvaW1hZ2UnO1xuaW1wb3J0IHtJbnB1dE1hc2tNb2R1bGV9IGZyb20gJ3ByaW1lbmcvaW5wdXRtYXNrJztcbmltcG9ydCB7SW5wdXROdW1iZXJNb2R1bGV9IGZyb20gJ3ByaW1lbmcvaW5wdXRudW1iZXInO1xuaW1wb3J0IHtJbnB1dFN3aXRjaE1vZHVsZX0gZnJvbSAncHJpbWVuZy9pbnB1dHN3aXRjaCc7XG5pbXBvcnQge0lucHV0VGV4dE1vZHVsZX0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuaW1wb3J0IHtJbnB1dFRleHRhcmVhTW9kdWxlfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dGFyZWEnO1xuaW1wb3J0IHtSYWRpb0J1dHRvbk1vZHVsZX0gZnJvbSAncHJpbWVuZy9yYWRpb2J1dHRvbic7XG5pbXBvcnQge1JpcHBsZU1vZHVsZX0gZnJvbSAncHJpbWVuZy9yaXBwbGUnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb24sIGRpc3RpbmN0VW50aWxDaGFuZ2VkfSBmcm9tICdyeGpzJztcbmltcG9ydCB7c3RhcnRXaXRofSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7RmllbGRJbnB1dERlc2NyaXB0b3J9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2Rlc2NyaXB0b3JzL2VkaXRvcic7XG5pbXBvcnQge0ZpZWxkSW5wdXRUeXBlRW51bX0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGVzY3JpcHRvcnMvdHlwZXMnO1xuaW1wb3J0IHtOb3RpZmljYXRpb25VdGlsfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlscyc7XG5pbXBvcnQge01uZ0Zvcm1FZGl0b3JDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uL2VkaXRvci9mb3JtLWVkaXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHtNbmdGb3JtRmllbGRFdmVudENvbXBvbmVudFN1YnR5cGUsIE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW19IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQge01uZ0Zvcm1seUZpZWxkQ29uZmlnfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLWZvcm1seS1maWVsZC1pbnB1dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Zvcm1seS1maWVsZC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ1N3aXRjaCxcbiAgICAgICAgSW5wdXROdW1iZXJNb2R1bGUsXG4gICAgICAgIE5nU3dpdGNoQ2FzZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgRm9ybWx5TW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgICAgIElucHV0U3dpdGNoTW9kdWxlLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBSYWRpb0J1dHRvbk1vZHVsZSxcbiAgICAgICAgTmdGb3JPZixcbiAgICAgICAgQ2FsZW5kYXJNb2R1bGUsXG4gICAgICAgIElucHV0TWFza01vZHVsZSxcbiAgICAgICAgRmlsZVVwbG9hZE1vZHVsZSxcbiAgICAgICAgSW1hZ2VNb2R1bGUsXG4gICAgICAgIE5nU3dpdGNoRGVmYXVsdCxcbiAgICAgICAgSW5wdXRUZXh0YXJlYU1vZHVsZSxcbiAgICAgICAgSW5wdXRUZXh0TW9kdWxlLFxuICAgICAgICBSaXBwbGVNb2R1bGUsXG4gICAgICAgIFRpbWVzSWNvblxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTW5nRm9ybWx5RmllbGRJbnB1dENvbXBvbmVudDxFVD4gZXh0ZW5kcyBGaWVsZFR5cGU8TW5nRm9ybWx5RmllbGRDb25maWc+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHB1YmxpYyBpRm9ybUNvbnRyb2whOiBGb3JtQ29udHJvbDtcbiAgICBwdWJsaWMgZGVzY3JpcHRvciE6IEZpZWxkSW5wdXREZXNjcmlwdG9yPEVUPjtcbiAgICBwdWJsaWMgbnVtYmVyRmllbGRNb2RlOiAnZGVjaW1hbCcgfCAnY3VycmVuY3knID0gJ2RlY2ltYWwnO1xuICAgIHB1YmxpYyBjdXJyZW5jeT86IHN0cmluZztcblxuICAgIHByaXZhdGUgZmlsZXM6IEZpbGVbXSA9IFtdO1xuICAgIHB1YmxpYyBpbWFnZUZvcm1BcnJheSE6IEZvcm1BcnJheTtcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgICBwdWJsaWMgZm9ybUVkaXRvckNvbXBvbmVudD86IE1uZ0Zvcm1FZGl0b3JDb21wb25lbnQ8dW5rbm93bj47XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KExPQ0FMRV9JRCkgcHVibGljIGFwcGxpY2F0aW9uTG9jYWxlOiBzdHJpbmcsIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pRm9ybUNvbnRyb2wgPSB0aGlzLmZvcm1Db250cm9sIGFzIEZvcm1Db250cm9sO1xuICAgICAgICB0aGlzLmRlc2NyaXB0b3IgPSB0aGlzLnByb3BzLmRlc2NyaXB0b3IgYXMgRmllbGRJbnB1dERlc2NyaXB0b3I8RVQ+O1xuICAgICAgICB0aGlzLnByb3BzLmZpZWxkQ29tcG9uZW50ID0gdGhpcztcbiAgICAgICAgdGhpcy5mb3JtRWRpdG9yQ29tcG9uZW50ID0gdGhpcy5wcm9wcy5mb3JtRWRpdG9yQ29tcG9uZW50IGFzIE1uZ0Zvcm1FZGl0b3JDb21wb25lbnQ8dW5rbm93bj47XG5cbiAgICAgICAgdGhpcy5pbWFnZUZvcm1BcnJheSA9IHRoaXMuZm9ybUJ1aWxkZXIuYXJyYXkoW10pO1xuXG4gICAgICAgIGlmICh0aGlzLmRlc2NyaXB0b3IuZmllbGRUeXBlID09PSBGaWVsZElucHV0VHlwZUVudW0uQ3VycmVuY3kpIHtcbiAgICAgICAgICAgIHRoaXMubnVtYmVyRmllbGRNb2RlID0gJ2N1cnJlbmN5JztcblxuICAgICAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvci5jdXJyZW5jeUZyb21Qcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbmN5RnJvbVByb3BTdWJzY3JpcHRpb24gPSB0aGlzLmlGb3JtQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAuZ2V0KHRoaXMuZGVzY3JpcHRvci5jdXJyZW5jeUZyb21Qcm9wZXJ0eSkhXG4gICAgICAgICAgICAgICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5tb2RlbFt0aGlzLmRlc2NyaXB0b3IuY3VycmVuY3lGcm9tUHJvcGVydHldKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShjID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVuY3kgPSBjO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChjdXJyZW5jeUZyb21Qcm9wU3Vic2NyaXB0aW9uKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW5jeSA9IHRoaXMuZGVzY3JpcHRvci5jdXJyZW5jeSA/PyAnRVVSJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVtaXQgbGlmZWN5Y2xlIGV2ZW50XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5Db21wb25lbnRMaWZlY3ljbGUsIE1uZ0Zvcm1seUZpZWxkSW5wdXRDb21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogTW5nRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLk9OX0lOSVRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gaW5pdCB2YWx1ZXNcbiAgICAgICAgaWYgKHRoaXMucHJvcHMudHlwZSA9PT0gJ2RhdGVwaWNrZXInICYmIHR5cGVvZiB0aGlzLmlGb3JtQ29udHJvbC52YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGVPYmplY3QgPSBuZXcgRGF0ZSh0aGlzLmlGb3JtQ29udHJvbC52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmlGb3JtQ29udHJvbC5zZXRWYWx1ZShkYXRlT2JqZWN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMuZm9ybUNvbnRyb2whLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLmZvcm1Db250cm9sIS52YWx1ZSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZSh2ID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5WYWx1ZUNoYW5nZSwgTW5nRm9ybWx5RmllbGRJbnB1dENvbXBvbmVudCwgdGhpcywge1xuICAgICAgICAgICAgICAgIHZhbHVlOiB2XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMucHJvcHNbJ29uVmFsdWVDaGFuZ2UnXSkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvcHNbJ29uVmFsdWVDaGFuZ2UnXSh0aGlzLmZpZWxkLCB2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XG5cbiAgICAgICAgaWYgKHRoaXMucHJvcHMudHlwZSA9PT0gJ2ltYWdlVXJsJykge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRWYWx1ZSA9IHRoaXMuaUZvcm1Db250cm9sLnZhbHVlO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvci5maWxlTXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzdGFydFZhbHVlKSAmJiBzdGFydFZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRWYWx1ZS5mb3JFYWNoKHYgPT4gdGhpcy5hZGRJbWFnZVVybCh2KSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygc3RhcnRWYWx1ZSA9PT0gJ3N0cmluZycgJiYgc3RhcnRWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkSW1hZ2VVcmwoc3RhcnRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRJbWFnZVVybCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzdGFydFZhbHVlID09PSAnc3RyaW5nJyAmJiBzdGFydFZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRJbWFnZVVybChzdGFydFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEltYWdlVXJsKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLmltYWdlRm9ybUFycmF5IS52YWx1ZUNoYW5nZXMucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUodiA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmN2ID0gdi5maWx0ZXIoKGk6IHN0cmluZykgPT4gISFpICYmIHR5cGVvZiBpID09PSAnc3RyaW5nJyAmJiBpLmxlbmd0aCA+IDApO1xuICAgICAgICAgICAgICAgIHRoaXMuaUZvcm1Db250cm9sLnNldFZhbHVlKGZjdi5sZW5ndGggPiAwID8gKHRoaXMuZGVzY3JpcHRvci5maWxlTXVsdGlwbGUgPyBmY3YgOiBmY3ZbMF0pIDogdW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gd2FybmluZzogZm9ybWx5IGNhbGxzIG9uIGRlc3Ryb3kgYmVmb3JlIG9uIGluaXRcblxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG5cbiAgICAgICAgLy8gZW1pdCBsaWZlY3ljbGUgZXZlbnRcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yPy5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5Db21wb25lbnRMaWZlY3ljbGUsIE1uZ0Zvcm1seUZpZWxkSW5wdXRDb21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogTW5nRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLk9OX0RFU1RST1lcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRmlsZVNlbGVjdChldmVudDogYW55KSB7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gZXZlbnQuZmlsZXMgYXMgRmlsZVtdO1xuICAgICAgICBpZiAodGhpcy5kZXNjcmlwdG9yLmZpbGVNdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5maWxlcyA9IFsuLi50aGlzLmZpbGVzLCAuLi5maWxlc107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVzID0gWy4uLmZpbGVzXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUZpbGVGb3JtQ29udHJvbCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkZpbGVSZW1vdmUoZXZlbnQ6IGFueSkge1xuICAgICAgICBjb25zdCBmaWxlID0gZXZlbnQuZmlsZSBhcyBGaWxlO1xuICAgICAgICB0aGlzLmZpbGVzID0gdGhpcy5maWxlcy5maWx0ZXIoZiA9PiBmICE9PSBmaWxlKTtcbiAgICAgICAgdGhpcy51cGRhdGVGaWxlRm9ybUNvbnRyb2woKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHVibGljIG9uRmlsZUNsZWFyKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLmZpbGVzID0gW107XG4gICAgICAgIHRoaXMudXBkYXRlRmlsZUZvcm1Db250cm9sKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEltYWdlVXJsKHZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgICAgICBjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4oL14oaHR0cHxodHRwcyk6XFwvXFwvW14gXCJdKyQvKSk7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCgxKSk7XG4gICAgICAgIHRoaXMuaW1hZ2VGb3JtQXJyYXkucHVzaCh0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wodmFsdWUsIHZhbGlkYXRvcnMpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlSW1hZ2VVcmxBdChpZHg6IG51bWJlcikge1xuICAgICAgICB0aGlzLmltYWdlRm9ybUFycmF5LnJlbW92ZUF0KGlkeCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uSW1hZ2VVcmxMb2FkRXJyb3IoKSB7XG4gICAgICAgIGlmICh0aGlzLmZvcm1FZGl0b3JDb21wb25lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBOb3RpZmljYXRpb25VdGlsLmdldEZvcm1FZGl0b3JXYXJuaW5nTWVzc2FnZSh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UsICdnZW5lcmFsLmVycm9yJywgJ21uZ0VkaXRvci5pbWFnZUxvYWRFcnJvcicpO1xuICAgICAgICAgICAgdGhpcy5mb3JtRWRpdG9yQ29tcG9uZW50LmZvcm1NZXNzYWdlcyA9IFsuLi50aGlzLmZvcm1FZGl0b3JDb21wb25lbnQuZm9ybU1lc3NhZ2VzLCBtZXNzYWdlXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlRmlsZUZvcm1Db250cm9sKCkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZmlsZXMubGVuZ3RoID4gMCA/IFsuLi50aGlzLmZpbGVzXSA6IG51bGw7XG4gICAgICAgIHRoaXMuaUZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRlc2NyaXB0b3IuZmlsZU9uU2VsZWN0SGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5kZXNjcmlwdG9yLmZpbGVPblNlbGVjdEhhbmRsZXIodmFsdWUsIHRoaXMuaUZvcm1Db250cm9sKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpc0ZpbGVJbWFnZVN2ZyhmaWxlOiBGaWxlKSB7XG4gICAgICAgIHJldHVybiAvXmltYWdlXFwvc3ZnLy50ZXN0KGZpbGUudHlwZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZpbGVEb2N1bWVudFR5cGVJY29uKGZpbGU6IEZpbGUpIHtcbiAgICAgICAgaWYgKC9edmlkZW9cXC8vLnRlc3QoZmlsZS50eXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuICdwaS12aWRlbyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKC9eYXVkaW9cXC8vLnRlc3QoZmlsZS50eXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuICdwaS12b2x1bWUtdXAnO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoZmlsZS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdhcHBsaWNhdGlvbi9wZGYnOlxuICAgICAgICAgICAgICAgIHJldHVybiAncGktZmlsZS1wZGYnO1xuICAgICAgICAgICAgY2FzZSAnYXBwbGljYXRpb24vbXN3b3JkJzpcbiAgICAgICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3BpLWZpbGUtd29yZCc7XG4gICAgICAgICAgICBjYXNlICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0JzpcbiAgICAgICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCc6XG4gICAgICAgICAgICBjYXNlICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwaS1maWxlLWV4Y2VsJztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwaS1maWxlJztcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInByb3BzLnR5cGVcIj5cbiAgICA8cC1pbnB1dE51bWJlclxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIlxuICAgICAgICBbaWRdPVwiJGFueShrZXkpXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImlGb3JtQ29udHJvbFwiXG4gICAgICAgIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCJcbiAgICAgICAgW21pbl09XCJkZXNjcmlwdG9yLm51bWJlckF1dG9Db3JyZWN0ID8gZGVzY3JpcHRvci5udW1iZXJNaW4gOiB1bmRlZmluZWRcIlxuICAgICAgICBbbWF4XT1cImRlc2NyaXB0b3IubnVtYmVyQXV0b0NvcnJlY3QgPyBkZXNjcmlwdG9yLm51bWJlck1heCA6IHVuZGVmaW5lZFwiXG4gICAgICAgIFtzdGVwXT1cIiRhbnkoZGVzY3JpcHRvci5udW1iZXJTdGVwKVwiXG4gICAgICAgIFt1c2VHcm91cGluZ109XCJkZXNjcmlwdG9yLm51bWJlclVzZUdyb3VwaW5nXCJcbiAgICAgICAgW21pbkZyYWN0aW9uRGlnaXRzXT1cImRlc2NyaXB0b3IubnVtYmVyTWluRnJhY3Rpb25EaWdpdHMgfHwgMFwiXG4gICAgICAgIFttYXhGcmFjdGlvbkRpZ2l0c109XCJkZXNjcmlwdG9yLm51bWJlck1heEZyYWN0aW9uRGlnaXRzIHx8IDBcIlxuICAgICAgICBbaW5wdXRTdHlsZUNsYXNzXT1cImRlc2NyaXB0b3IuaW5wdXRDbGFzc05hbWVcIlxuICAgICAgICBbbG9jYWxlXT1cImRlc2NyaXB0b3IubG9jYWxlID8/IGFwcGxpY2F0aW9uTG9jYWxlXCJcbiAgICAgICAgW21vZGVdPVwibnVtYmVyRmllbGRNb2RlXCJcbiAgICAgICAgW2N1cnJlbmN5XT1cImN1cnJlbmN5XCJcbiAgICAgICAgW2N1cnJlbmN5RGlzcGxheV09XCJkZXNjcmlwdG9yLmN1cnJlbmN5RGlzcGxheVwiPlxuICAgIDwvcC1pbnB1dE51bWJlcj5cblxuICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidzd2l0Y2gnXCIgY2xhc3M9XCJmaWVsZCBmbGV4IGZsZXgtY29sdW1uXCI+XG4gICAgICAgIDxsYWJlbCBbZm9yXT1cImtleVwiIFtjbGFzc109XCJkZXNjcmlwdG9yLmxhYmVsQ2xhc3NOYW1lXCI+e3sgcHJvcHMubGFiZWwhIHwgdHJhbnNsYXRlIH19IDxzcGFuICpuZ0lmPVwicHJvcHMucmVxdWlyZWQgJiYgcHJvcHNbJ2hpZGVSZXF1aXJlZE1hcmtlciddICE9PSB0cnVlXCI+Kjwvc3Bhbj48L2xhYmVsPlxuICAgICAgICA8cC1pbnB1dFN3aXRjaCBbaWRdPVwiJGFueShrZXkpXCIgW2Zvcm1Db250cm9sXT1cImlGb3JtQ29udHJvbFwiIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCIgW3N0eWxlQ2xhc3NdPVwiZGVzY3JpcHRvci5pbnB1dENsYXNzTmFtZVwiPjwvcC1pbnB1dFN3aXRjaD5cbiAgICAgICAgPHNtYWxsICpuZ0lmPVwic2hvd0Vycm9yXCIgY2xhc3M9XCJwLWVycm9yXCI+XG4gICAgICAgICAgICA8Zm9ybWx5LXZhbGlkYXRpb24tbWVzc2FnZSBbZmllbGRdPVwiZmllbGRcIj48L2Zvcm1seS12YWxpZGF0aW9uLW1lc3NhZ2U+XG4gICAgICAgIDwvc21hbGw+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncmFkaW8nXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBkZXNjcmlwdG9yLnJhZGlvT3B0aW9uc1wiIFtpZF09XCIkYW55KGtleSlcIiBjbGFzcz1cImZpZWxkLXJhZGlvYnV0dG9uXCI+XG4gICAgICAgICAgICA8cC1yYWRpb0J1dHRvblxuICAgICAgICAgICAgICAgIFtuYW1lXT1cIiRhbnkoa2V5KVwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImlGb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiZmllbGRcIlxuICAgICAgICAgICAgICAgIFtzdHlsZUNsYXNzXT1cImRlc2NyaXB0b3IuaW5wdXRDbGFzc05hbWVcIj48L3AtcmFkaW9CdXR0b24+XG4gICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJvcHRpb24udmFsdWVcIiBbY2xhc3NdPVwiJ21uZy1yYWRpby1idXR0b24tbGFiZWwgJyArIGRlc2NyaXB0b3IubGFiZWxDbGFzc05hbWVcIj57eyBvcHRpb24udGl0bGUgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDx0ZXh0YXJlYVxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ3RleHRhcmVhJ1wiXG4gICAgICAgIFtpZF09XCIkYW55KGtleSlcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaUZvcm1Db250cm9sXCJcbiAgICAgICAgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiZmllbGRcIlxuICAgICAgICBbcm93c109XCJkZXNjcmlwdG9yLnJvd3MgPz8gM1wiXG4gICAgICAgIHBJbnB1dFRleHRhcmVhXG4gICAgICAgIFtjbGFzc109XCJkZXNjcmlwdG9yLmlucHV0Q2xhc3NOYW1lXCI+XG4gICAgPC90ZXh0YXJlYT5cblxuICAgIDxwLWNhbGVuZGFyXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInZGF0ZXBpY2tlcidcIlxuICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaUZvcm1Db250cm9sXCJcbiAgICAgICAgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiZmllbGRcIlxuICAgICAgICBbZGF0ZUZvcm1hdF09XCJkZXNjcmlwdG9yLmRhdGVQaWNrZXJGb3JtYXQgPz8gJ2RkLm1tLnl5J1wiXG4gICAgICAgIFttaW5EYXRlXT1cIiRhbnkoZGVzY3JpcHRvci5kYXRlUGlja2VyTWluKVwiXG4gICAgICAgIFttYXhEYXRlXT1cIiRhbnkoZGVzY3JpcHRvci5kYXRlUGlja2VyTWF4KVwiXG4gICAgICAgIFtzaG93VGltZV09XCJkZXNjcmlwdG9yLmRhdGVQaWNrZXJTaG93VGltZVwiXG4gICAgICAgIFtzaG93U2Vjb25kc109XCJkZXNjcmlwdG9yLmRhdGVQaWNrZXJTaG93U2Vjb25kc1wiXG4gICAgICAgIFtzaG93SWNvbl09XCJ0cnVlXCJcbiAgICAgICAgW2lucHV0U3R5bGVDbGFzc109XCJkZXNjcmlwdG9yLmlucHV0Q2xhc3NOYW1lXCJcbiAgICAgICAgW2ZpcnN0RGF5T2ZXZWVrXT1cIjFcIj5cbiAgICA8L3AtY2FsZW5kYXI+XG5cbiAgICA8cC1pbnB1dE1hc2tcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidtYXNrJ1wiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJpRm9ybUNvbnRyb2xcIlxuICAgICAgICBbZm9ybWx5QXR0cmlidXRlc109XCJmaWVsZFwiXG4gICAgICAgIFttYXNrXT1cImRlc2NyaXB0b3IubWFza1wiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJkZXNjcmlwdG9yLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3Nsb3RDaGFyXT1cIiRhbnkoZGVzY3JpcHRvci5zbG90Q2hhcilcIlxuICAgICAgICBbc3R5bGVDbGFzc109XCJkZXNjcmlwdG9yLmlucHV0Q2xhc3NOYW1lXCI+XG4gICAgPC9wLWlucHV0TWFzaz5cblxuICAgIDxwLWZpbGVVcGxvYWRcbiAgICAgICAgI2ZpbGVVcGxvYWRJbnB1dFxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbGUnXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlGb3JtQ29udHJvbC5kaXNhYmxlZFwiXG4gICAgICAgIFttdWx0aXBsZV09XCJkZXNjcmlwdG9yLmZpbGVNdWx0aXBsZVwiXG4gICAgICAgIFthY2NlcHRdPVwiZGVzY3JpcHRvci5maWxlQWNjZXB0XCJcbiAgICAgICAgW21heEZpbGVTaXplXT1cImRlc2NyaXB0b3IuZmlsZU1heEZpbGVTaXplXCJcbiAgICAgICAgW3Nob3dVcGxvYWRCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgICAob25TZWxlY3QpPVwib25GaWxlU2VsZWN0KCRldmVudClcIlxuICAgICAgICAob25SZW1vdmUpPVwib25GaWxlUmVtb3ZlKCRldmVudClcIlxuICAgICAgICAob25DbGVhcik9XCJvbkZpbGVDbGVhcigkZXZlbnQpXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtZmlsZSBsZXQtaWR4PVwiaW5kZXhcIiBwVGVtcGxhdGU9XCJmaWxlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1maWxldXBsb2FkLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWxlVXBsb2FkSW5wdXQuaXNJbWFnZShmaWxlKTsgZWxzZSBmaWxlSW5wdXREb2N1bWVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc0ZpbGVJbWFnZVN2ZyhmaWxlKTsgZWxzZSBmaWxlSW5wdXRJbWFnZURlZmF1bHRcIiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWltYWdlIHRleHQtMnhsXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNmaWxlSW5wdXRJbWFnZURlZmF1bHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImZpbGUub2JqZWN0VVJMXCIgW3dpZHRoXT1cImZpbGVVcGxvYWRJbnB1dC5wcmV2aWV3V2lkdGhcIiAoZXJyb3IpPVwiZmlsZVVwbG9hZElucHV0LmltYWdlRXJyb3IoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNmaWxlSW5wdXREb2N1bWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCIncGkgJyArIGdldEZpbGVEb2N1bWVudFR5cGVJY29uKGZpbGUpICsgJyB0ZXh0LTJ4bCdcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmlsZXVwbG9hZC1maWxlbmFtZVwiPnt7IGZpbGUubmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+e3sgZmlsZVVwbG9hZElucHV0LmZvcm1hdFNpemUoZmlsZS5zaXplKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZpbGVVcGxvYWRJbnB1dC5yZW1vdmUoJGV2ZW50LCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWxlVXBsb2FkSW5wdXQudXBsb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24taWNvbi1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJmaWxlVXBsb2FkSW5wdXQucmVtb3ZlU3R5bGVDbGFzc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFRpbWVzSWNvbiAqbmdJZj1cIiFmaWxlVXBsb2FkSW5wdXQuY2FuY2VsSWNvblRlbXBsYXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNvbnRlbnRcIiBsZXQtZmlsZXM+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsZXMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJ0ZXh0LWdyYXktMzAwIGRyb3Bkb3duLWFyZWFcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz1cInBpIHBpLWZpbGUtaW1wb3J0IG1yLTJcIj48L2k+e3sgJ2ZpbGVVcGxvYWQuZHJhZ0FuZERyb3AnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9wLWZpbGVVcGxvYWQ+XG5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInaW1hZ2VVcmwnXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJkZXNjcmlwdG9yLmltYWdlUHJldmlld1wiIGNsYXNzPVwiZmxleCBmbGV4LXdyYXAganVzdGlmeS1jb250ZW50LXN0YXJ0XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpbWFnZSBvZiBpbWFnZUZvcm1BcnJheS5jb250cm9sczsgbGV0IGlkeCA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgPHAtaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpbWFnZUZvcm1BcnJheS5hdChpZHgpLnZhbGlkICYmIGltYWdlRm9ybUFycmF5LmF0KGlkeCkudmFsdWU7IGVsc2Ugbm9JbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW1hZ2VGb3JtQXJyYXkuYXQoaWR4KS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtwcmV2aWV3XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAob25JbWFnZUVycm9yKT1cIm9uSW1hZ2VVcmxMb2FkRXJyb3IoKVwiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJtbmctaW1hZ2UgbS0yXCI+PC9wLWltYWdlPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vSW1hZ2U+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtbmctaW1hZ2UgbS0yIHAtaW1hZ2UtcHJldmlldy1jb250YWluZXIgbm8taW1hZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtaW1hZ2UtcHJldmlldy1pbmRpY2F0b3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicC1pbWFnZS1wcmV2aWV3LWljb24gcGkgcGktYmFuXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkZXNjcmlwdG9yLmltYWdlUHJldmlldyB8fCBkZXNjcmlwdG9yLmltYWdlVXJsSW5wdXRWaXNpYmxlT25EaXNhYmxlZCB8fCAhaUZvcm1Db250cm9sLmRpc2FibGVkXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpbWFnZUN0cmxOYW1lIG9mIGltYWdlRm9ybUFycmF5LmNvbnRyb2xzOyBsZXQgaWR4ID0gaW5kZXhcIiBjbGFzcz1cInAtaW5wdXRncm91cCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidtbmdFZGl0b3IuaW1hZ2VVcmxQbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJGFueShrZXkpXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiJGFueShpbWFnZUZvcm1BcnJheS5hdChpZHgpKVwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCIgLz5cbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZGVzY3JpcHRvci5maWxlTXVsdGlwbGUgJiYgIWlGb3JtQ29udHJvbC5kaXNhYmxlZFwiIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIHBSaXBwbGUgaWNvbj1cInBpIHBpLW1pbnVzXCIgKGNsaWNrKT1cInJlbW92ZUltYWdlVXJsQXQoaWR4KVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJkZXNjcmlwdG9yLmZpbGVNdWx0aXBsZSAmJiAhaUZvcm1Db250cm9sLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgIGljb249XCJwaSBwaS1wbHVzXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXByaW1hcnkgdy1hdXRvIG10LTFcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCInbW5nRWRpdG9yLmltYWdlVXJsQWRkJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZEltYWdlVXJsKClcIj48L2J1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8aW5wdXQgKm5nU3dpdGNoRGVmYXVsdCBwSW5wdXRUZXh0IFtpZF09XCIkYW55KGtleSlcIiBbdHlwZV09XCJwcm9wcy50eXBlIHx8ICd0ZXh0J1wiIFtmb3JtQ29udHJvbF09XCJpRm9ybUNvbnRyb2xcIiBbZm9ybWx5QXR0cmlidXRlc109XCJmaWVsZFwiIC8+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
221
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2Zvcm1seS9maWVsZHMvZm9ybWx5LWZpZWxkLWlucHV0L2Zvcm1seS1maWVsZC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1pbnB1dC9mb3JtbHktZmllbGQtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RixPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZHLE9BQU8sRUFBWSxXQUFXLEVBQWUsbUJBQW1CLEVBQWUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFakgsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RCxPQUFPLEVBQUMsZUFBZSxFQUFFLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsaUJB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QUFjLDAyQ0FDZCxlQUFlLG1mQUNmLGdCQUFnQix3MUJBQ2hCLFdBQVcsOFlBQ1gsZUFBZSw2REFDZixtQkFBbUIsMkpBQ25CLGVBQWUsb0dBQ2YsWUFBWSwrRkFDWixTQUFTOzsyRkFJSiw0QkFBNEI7a0JBM0J4QyxTQUFTO2lDQUNNLElBQUksWUFDTix3QkFBd0IsV0FFekI7d0JBQ0wsUUFBUTt3QkFDUixpQkFBaUI7d0JBQ2pCLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixJQUFJO3dCQUNKLGlCQUFpQjt3QkFDakIsT0FBTzt3QkFDUCxjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLFlBQVk7d0JBQ1osU0FBUztxQkFDWixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTs7MEJBY2xDLE1BQU07MkJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdGb3JPZiwgTmdJZiwgTmdTd2l0Y2gsIE5nU3dpdGNoQ2FzZSwgTmdTd2l0Y2hEZWZhdWx0fSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3QsIExPQ0FMRV9JRCwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtGaWVsZFR5cGUsIEZvcm1seU1vZHVsZX0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0NhbGVuZGFyTW9kdWxlfSBmcm9tICdwcmltZW5nL2NhbGVuZGFyJztcbmltcG9ydCB7RmlsZVVwbG9hZE1vZHVsZX0gZnJvbSAncHJpbWVuZy9maWxldXBsb2FkJztcbmltcG9ydCB7VGltZXNJY29ufSBmcm9tICdwcmltZW5nL2ljb25zL3RpbWVzJztcbmltcG9ydCB7SW1hZ2VNb2R1bGV9IGZyb20gJ3ByaW1lbmcvaW1hZ2UnO1xuaW1wb3J0IHtJbnB1dE1hc2tNb2R1bGV9IGZyb20gJ3ByaW1lbmcvaW5wdXRtYXNrJztcbmltcG9ydCB7SW5wdXROdW1iZXJNb2R1bGV9IGZyb20gJ3ByaW1lbmcvaW5wdXRudW1iZXInO1xuaW1wb3J0IHtJbnB1dFN3aXRjaE1vZHVsZX0gZnJvbSAncHJpbWVuZy9pbnB1dHN3aXRjaCc7XG5pbXBvcnQge0lucHV0VGV4dE1vZHVsZX0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuaW1wb3J0IHtJbnB1dFRleHRhcmVhTW9kdWxlfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dGFyZWEnO1xuaW1wb3J0IHtSYWRpb0J1dHRvbk1vZHVsZX0gZnJvbSAncHJpbWVuZy9yYWRpb2J1dHRvbic7XG5pbXBvcnQge1JpcHBsZU1vZHVsZX0gZnJvbSAncHJpbWVuZy9yaXBwbGUnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb24sIGRpc3RpbmN0VW50aWxDaGFuZ2VkfSBmcm9tICdyeGpzJztcbmltcG9ydCB7c3RhcnRXaXRofSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7RmllbGRJbnB1dERlc2NyaXB0b3J9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2Rlc2NyaXB0b3JzL2VkaXRvcic7XG5pbXBvcnQge0ZpZWxkSW5wdXRUeXBlRW51bX0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGVzY3JpcHRvcnMvdHlwZXMnO1xuaW1wb3J0IHtOb3RpZmljYXRpb25VdGlsfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlscyc7XG5pbXBvcnQge01uZ0Zvcm1FZGl0b3JDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uL2VkaXRvci9mb3JtLWVkaXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHtNbmdGb3JtRmllbGRFdmVudENvbXBvbmVudFN1YnR5cGUsIE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW19IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQge01uZ0Zvcm1seUZpZWxkQ29uZmlnfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLWZvcm1seS1maWVsZC1pbnB1dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Zvcm1seS1maWVsZC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ1N3aXRjaCxcbiAgICAgICAgSW5wdXROdW1iZXJNb2R1bGUsXG4gICAgICAgIE5nU3dpdGNoQ2FzZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgRm9ybWx5TW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgICAgIElucHV0U3dpdGNoTW9kdWxlLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBSYWRpb0J1dHRvbk1vZHVsZSxcbiAgICAgICAgTmdGb3JPZixcbiAgICAgICAgQ2FsZW5kYXJNb2R1bGUsXG4gICAgICAgIElucHV0TWFza01vZHVsZSxcbiAgICAgICAgRmlsZVVwbG9hZE1vZHVsZSxcbiAgICAgICAgSW1hZ2VNb2R1bGUsXG4gICAgICAgIE5nU3dpdGNoRGVmYXVsdCxcbiAgICAgICAgSW5wdXRUZXh0YXJlYU1vZHVsZSxcbiAgICAgICAgSW5wdXRUZXh0TW9kdWxlLFxuICAgICAgICBSaXBwbGVNb2R1bGUsXG4gICAgICAgIFRpbWVzSWNvblxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTW5nRm9ybWx5RmllbGRJbnB1dENvbXBvbmVudDxFVD4gZXh0ZW5kcyBGaWVsZFR5cGU8TW5nRm9ybWx5RmllbGRDb25maWc+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHB1YmxpYyBpRm9ybUNvbnRyb2whOiBGb3JtQ29udHJvbDtcbiAgICBwdWJsaWMgZGVzY3JpcHRvciE6IEZpZWxkSW5wdXREZXNjcmlwdG9yPEVUPjtcbiAgICBwdWJsaWMgbnVtYmVyRmllbGRNb2RlOiAnZGVjaW1hbCcgfCAnY3VycmVuY3knID0gJ2RlY2ltYWwnO1xuICAgIHB1YmxpYyBjdXJyZW5jeT86IHN0cmluZztcblxuICAgIHByaXZhdGUgZmlsZXM6IEZpbGVbXSA9IFtdO1xuICAgIHB1YmxpYyBpbWFnZUZvcm1BcnJheSE6IEZvcm1BcnJheTtcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgICBwdWJsaWMgZm9ybUVkaXRvckNvbXBvbmVudD86IE1uZ0Zvcm1FZGl0b3JDb21wb25lbnQ8dW5rbm93bj47XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KExPQ0FMRV9JRCkgcHVibGljIGFwcGxpY2F0aW9uTG9jYWxlOiBzdHJpbmcsIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pRm9ybUNvbnRyb2wgPSB0aGlzLmZvcm1Db250cm9sIGFzIEZvcm1Db250cm9sO1xuICAgICAgICB0aGlzLmRlc2NyaXB0b3IgPSB0aGlzLnByb3BzLmRlc2NyaXB0b3IgYXMgRmllbGRJbnB1dERlc2NyaXB0b3I8RVQ+O1xuICAgICAgICB0aGlzLnByb3BzLmZpZWxkQ29tcG9uZW50ID0gdGhpcztcbiAgICAgICAgdGhpcy5mb3JtRWRpdG9yQ29tcG9uZW50ID0gdGhpcy5wcm9wcy5mb3JtRWRpdG9yQ29tcG9uZW50IGFzIE1uZ0Zvcm1FZGl0b3JDb21wb25lbnQ8dW5rbm93bj47XG5cbiAgICAgICAgdGhpcy5pbWFnZUZvcm1BcnJheSA9IHRoaXMuZm9ybUJ1aWxkZXIuYXJyYXkoW10pO1xuXG4gICAgICAgIGlmICh0aGlzLmRlc2NyaXB0b3IuZmllbGRUeXBlID09PSBGaWVsZElucHV0VHlwZUVudW0uQ3VycmVuY3kpIHtcbiAgICAgICAgICAgIHRoaXMubnVtYmVyRmllbGRNb2RlID0gJ2N1cnJlbmN5JztcblxuICAgICAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvci5jdXJyZW5jeUZyb21Qcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbmN5RnJvbVByb3BTdWJzY3JpcHRpb24gPSB0aGlzLmlGb3JtQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAuZ2V0KHRoaXMuZGVzY3JpcHRvci5jdXJyZW5jeUZyb21Qcm9wZXJ0eSkhXG4gICAgICAgICAgICAgICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5tb2RlbFt0aGlzLmRlc2NyaXB0b3IuY3VycmVuY3lGcm9tUHJvcGVydHldKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShjID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVuY3kgPSBjO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChjdXJyZW5jeUZyb21Qcm9wU3Vic2NyaXB0aW9uKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW5jeSA9IHRoaXMuZGVzY3JpcHRvci5jdXJyZW5jeSA/PyAnRVVSJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVtaXQgbGlmZWN5Y2xlIGV2ZW50XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5Db21wb25lbnRMaWZlY3ljbGUsIE1uZ0Zvcm1seUZpZWxkSW5wdXRDb21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogTW5nRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLk9OX0lOSVRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gaW5pdCB2YWx1ZXNcbiAgICAgICAgaWYgKHRoaXMucHJvcHMudHlwZSA9PT0gJ2RhdGVwaWNrZXInICYmIHR5cGVvZiB0aGlzLmlGb3JtQ29udHJvbC52YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGVPYmplY3QgPSBuZXcgRGF0ZSh0aGlzLmlGb3JtQ29udHJvbC52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmlGb3JtQ29udHJvbC5zZXRWYWx1ZShkYXRlT2JqZWN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMuZm9ybUNvbnRyb2whLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLmZvcm1Db250cm9sIS52YWx1ZSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZSh2ID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5WYWx1ZUNoYW5nZSwgTW5nRm9ybWx5RmllbGRJbnB1dENvbXBvbmVudCwgdGhpcywge1xuICAgICAgICAgICAgICAgIHZhbHVlOiB2XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMucHJvcHNbJ29uVmFsdWVDaGFuZ2UnXSkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvcHNbJ29uVmFsdWVDaGFuZ2UnXSh0aGlzLmZpZWxkLCB2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XG5cbiAgICAgICAgaWYgKHRoaXMucHJvcHMudHlwZSA9PT0gJ2ltYWdlVXJsJykge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRWYWx1ZSA9IHRoaXMuaUZvcm1Db250cm9sLnZhbHVlO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvci5maWxlTXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzdGFydFZhbHVlKSAmJiBzdGFydFZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRWYWx1ZS5mb3JFYWNoKHYgPT4gdGhpcy5hZGRJbWFnZVVybCh2KSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygc3RhcnRWYWx1ZSA9PT0gJ3N0cmluZycgJiYgc3RhcnRWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkSW1hZ2VVcmwoc3RhcnRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRJbWFnZVVybCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzdGFydFZhbHVlID09PSAnc3RyaW5nJyAmJiBzdGFydFZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRJbWFnZVVybChzdGFydFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEltYWdlVXJsKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLmltYWdlRm9ybUFycmF5IS52YWx1ZUNoYW5nZXMucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUodiA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmN2ID0gdi5maWx0ZXIoKGk6IHN0cmluZykgPT4gISFpICYmIHR5cGVvZiBpID09PSAnc3RyaW5nJyAmJiBpLmxlbmd0aCA+IDApO1xuICAgICAgICAgICAgICAgIHRoaXMuaUZvcm1Db250cm9sLnNldFZhbHVlKGZjdi5sZW5ndGggPiAwID8gKHRoaXMuZGVzY3JpcHRvci5maWxlTXVsdGlwbGUgPyBmY3YgOiBmY3ZbMF0pIDogdW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gd2FybmluZzogZm9ybWx5IGNhbGxzIG9uIGRlc3Ryb3kgYmVmb3JlIG9uIGluaXRcblxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG5cbiAgICAgICAgLy8gZW1pdCBsaWZlY3ljbGUgZXZlbnRcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yPy5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5Db21wb25lbnRMaWZlY3ljbGUsIE1uZ0Zvcm1seUZpZWxkSW5wdXRDb21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogTW5nRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLk9OX0RFU1RST1lcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRmlsZVNlbGVjdChldmVudDogYW55KSB7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gZXZlbnQuZmlsZXMgYXMgRmlsZVtdO1xuICAgICAgICBpZiAodGhpcy5kZXNjcmlwdG9yLmZpbGVNdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5maWxlcyA9IFsuLi50aGlzLmZpbGVzLCAuLi5maWxlc107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVzID0gWy4uLmZpbGVzXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUZpbGVGb3JtQ29udHJvbCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkZpbGVSZW1vdmUoZXZlbnQ6IGFueSkge1xuICAgICAgICBjb25zdCBmaWxlID0gZXZlbnQuZmlsZSBhcyBGaWxlO1xuICAgICAgICB0aGlzLmZpbGVzID0gdGhpcy5maWxlcy5maWx0ZXIoZiA9PiBmICE9PSBmaWxlKTtcbiAgICAgICAgdGhpcy51cGRhdGVGaWxlRm9ybUNvbnRyb2woKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHVibGljIG9uRmlsZUNsZWFyKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLmZpbGVzID0gW107XG4gICAgICAgIHRoaXMudXBkYXRlRmlsZUZvcm1Db250cm9sKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEltYWdlVXJsKHZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgICAgICBjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4oL14oaHR0cHxodHRwcyk6XFwvXFwvW14gXCJdKyQvKSk7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCgxKSk7XG4gICAgICAgIHRoaXMuaW1hZ2VGb3JtQXJyYXkucHVzaCh0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wodmFsdWUsIHZhbGlkYXRvcnMpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlSW1hZ2VVcmxBdChpZHg6IG51bWJlcikge1xuICAgICAgICB0aGlzLmltYWdlRm9ybUFycmF5LnJlbW92ZUF0KGlkeCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uSW1hZ2VVcmxMb2FkRXJyb3IoKSB7XG4gICAgICAgIGlmICh0aGlzLmZvcm1FZGl0b3JDb21wb25lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBOb3RpZmljYXRpb25VdGlsLmdldEZvcm1FZGl0b3JXYXJuaW5nTWVzc2FnZSh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UsICdnZW5lcmFsLmVycm9yJywgJ21uZ0VkaXRvci5pbWFnZUxvYWRFcnJvcicpO1xuICAgICAgICAgICAgdGhpcy5mb3JtRWRpdG9yQ29tcG9uZW50LmZvcm1NZXNzYWdlcyA9IFsuLi50aGlzLmZvcm1FZGl0b3JDb21wb25lbnQuZm9ybU1lc3NhZ2VzLCBtZXNzYWdlXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlRmlsZUZvcm1Db250cm9sKCkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZmlsZXMubGVuZ3RoID4gMCA/IFsuLi50aGlzLmZpbGVzXSA6IG51bGw7XG4gICAgICAgIHRoaXMuaUZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRlc2NyaXB0b3IuZmlsZU9uU2VsZWN0SGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5kZXNjcmlwdG9yLmZpbGVPblNlbGVjdEhhbmRsZXIodmFsdWUsIHRoaXMuaUZvcm1Db250cm9sKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpc0ZpbGVJbWFnZVN2ZyhmaWxlOiBGaWxlKSB7XG4gICAgICAgIHJldHVybiAvXmltYWdlXFwvc3ZnLy50ZXN0KGZpbGUudHlwZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZpbGVEb2N1bWVudFR5cGVJY29uKGZpbGU6IEZpbGUpIHtcbiAgICAgICAgaWYgKC9edmlkZW9cXC8vLnRlc3QoZmlsZS50eXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuICdwaS12aWRlbyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKC9eYXVkaW9cXC8vLnRlc3QoZmlsZS50eXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuICdwaS12b2x1bWUtdXAnO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoZmlsZS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdhcHBsaWNhdGlvbi9wZGYnOlxuICAgICAgICAgICAgICAgIHJldHVybiAncGktZmlsZS1wZGYnO1xuICAgICAgICAgICAgY2FzZSAnYXBwbGljYXRpb24vbXN3b3JkJzpcbiAgICAgICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3BpLWZpbGUtd29yZCc7XG4gICAgICAgICAgICBjYXNlICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0JzpcbiAgICAgICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCc6XG4gICAgICAgICAgICBjYXNlICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwaS1maWxlLWV4Y2VsJztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwaS1maWxlJztcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInByb3BzLnR5cGVcIj5cbiAgICA8cC1pbnB1dE51bWJlclxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIlxuICAgICAgICBbaWRdPVwiJGFueShrZXkpXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImlGb3JtQ29udHJvbFwiXG4gICAgICAgIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCJcbiAgICAgICAgW21pbl09XCJkZXNjcmlwdG9yLm51bWJlckF1dG9Db3JyZWN0ID8gZGVzY3JpcHRvci5udW1iZXJNaW4gOiB1bmRlZmluZWRcIlxuICAgICAgICBbbWF4XT1cImRlc2NyaXB0b3IubnVtYmVyQXV0b0NvcnJlY3QgPyBkZXNjcmlwdG9yLm51bWJlck1heCA6IHVuZGVmaW5lZFwiXG4gICAgICAgIFtzdGVwXT1cIiRhbnkoZGVzY3JpcHRvci5udW1iZXJTdGVwKVwiXG4gICAgICAgIFt1c2VHcm91cGluZ109XCJkZXNjcmlwdG9yLm51bWJlclVzZUdyb3VwaW5nXCJcbiAgICAgICAgW21pbkZyYWN0aW9uRGlnaXRzXT1cImRlc2NyaXB0b3IubnVtYmVyTWluRnJhY3Rpb25EaWdpdHMgfHwgMFwiXG4gICAgICAgIFttYXhGcmFjdGlvbkRpZ2l0c109XCJkZXNjcmlwdG9yLm51bWJlck1heEZyYWN0aW9uRGlnaXRzIHx8IDBcIlxuICAgICAgICBbaW5wdXRTdHlsZUNsYXNzXT1cImRlc2NyaXB0b3IuaW5wdXRDbGFzc05hbWVcIlxuICAgICAgICBbbG9jYWxlXT1cImRlc2NyaXB0b3IubG9jYWxlID8/IGFwcGxpY2F0aW9uTG9jYWxlXCJcbiAgICAgICAgW21vZGVdPVwibnVtYmVyRmllbGRNb2RlXCJcbiAgICAgICAgW2N1cnJlbmN5XT1cImN1cnJlbmN5XCJcbiAgICAgICAgW2N1cnJlbmN5RGlzcGxheV09XCJkZXNjcmlwdG9yLmN1cnJlbmN5RGlzcGxheVwiPlxuICAgIDwvcC1pbnB1dE51bWJlcj5cblxuICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidzd2l0Y2gnXCIgY2xhc3M9XCJmaWVsZCBmbGV4IGZsZXgtY29sdW1uXCI+XG4gICAgICAgIDxsYWJlbCBbZm9yXT1cImtleVwiIFtjbGFzc109XCJkZXNjcmlwdG9yLmxhYmVsQ2xhc3NOYW1lXCI+e3sgcHJvcHMubGFiZWwhIHwgdHJhbnNsYXRlIH19IDxzcGFuICpuZ0lmPVwicHJvcHMucmVxdWlyZWQgJiYgcHJvcHNbJ2hpZGVSZXF1aXJlZE1hcmtlciddICE9PSB0cnVlXCI+Kjwvc3Bhbj48L2xhYmVsPlxuICAgICAgICA8cC1pbnB1dFN3aXRjaCBbaWRdPVwiJGFueShrZXkpXCIgW2Zvcm1Db250cm9sXT1cImlGb3JtQ29udHJvbFwiIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCIgW3N0eWxlQ2xhc3NdPVwiZGVzY3JpcHRvci5pbnB1dENsYXNzTmFtZVwiPjwvcC1pbnB1dFN3aXRjaD5cbiAgICAgICAgPHNtYWxsICpuZ0lmPVwic2hvd0Vycm9yXCIgY2xhc3M9XCJwLWVycm9yXCI+XG4gICAgICAgICAgICA8Zm9ybWx5LXZhbGlkYXRpb24tbWVzc2FnZSBbZmllbGRdPVwiZmllbGRcIj48L2Zvcm1seS12YWxpZGF0aW9uLW1lc3NhZ2U+XG4gICAgICAgIDwvc21hbGw+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncmFkaW8nXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBkZXNjcmlwdG9yLnJhZGlvT3B0aW9uc1wiIFtpZF09XCIkYW55KGtleSlcIiBjbGFzcz1cImZpZWxkLXJhZGlvYnV0dG9uXCI+XG4gICAgICAgICAgICA8cC1yYWRpb0J1dHRvblxuICAgICAgICAgICAgICAgIFtuYW1lXT1cIiRhbnkoa2V5KVwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImlGb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiZmllbGRcIlxuICAgICAgICAgICAgICAgIFtzdHlsZUNsYXNzXT1cImRlc2NyaXB0b3IuaW5wdXRDbGFzc05hbWVcIj48L3AtcmFkaW9CdXR0b24+XG4gICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJvcHRpb24udmFsdWVcIiBbY2xhc3NdPVwiJ21uZy1yYWRpby1idXR0b24tbGFiZWwgJyArIGRlc2NyaXB0b3IubGFiZWxDbGFzc05hbWVcIj57eyBvcHRpb24udGl0bGUgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDx0ZXh0YXJlYVxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ3RleHRhcmVhJ1wiXG4gICAgICAgIFtpZF09XCIkYW55KGtleSlcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaUZvcm1Db250cm9sXCJcbiAgICAgICAgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiZmllbGRcIlxuICAgICAgICBbcm93c109XCJkZXNjcmlwdG9yLnJvd3MgPz8gM1wiXG4gICAgICAgIHBJbnB1dFRleHRhcmVhXG4gICAgICAgIFtjbGFzc109XCJkZXNjcmlwdG9yLmlucHV0Q2xhc3NOYW1lXCI+XG4gICAgPC90ZXh0YXJlYT5cblxuICAgIDxwLWNhbGVuZGFyXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInZGF0ZXBpY2tlcidcIlxuICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaUZvcm1Db250cm9sXCJcbiAgICAgICAgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiZmllbGRcIlxuICAgICAgICBbZGF0ZUZvcm1hdF09XCJkZXNjcmlwdG9yLmRhdGVQaWNrZXJGb3JtYXQgPz8gJ2RkLm1tLnl5J1wiXG4gICAgICAgIFttaW5EYXRlXT1cIiRhbnkoZGVzY3JpcHRvci5kYXRlUGlja2VyTWluKVwiXG4gICAgICAgIFttYXhEYXRlXT1cIiRhbnkoZGVzY3JpcHRvci5kYXRlUGlja2VyTWF4KVwiXG4gICAgICAgIFtzaG93VGltZV09XCJkZXNjcmlwdG9yLmRhdGVQaWNrZXJTaG93VGltZVwiXG4gICAgICAgIFtzaG93U2Vjb25kc109XCJkZXNjcmlwdG9yLmRhdGVQaWNrZXJTaG93U2Vjb25kc1wiXG4gICAgICAgIFtzaG93SWNvbl09XCJ0cnVlXCJcbiAgICAgICAgW2lucHV0U3R5bGVDbGFzc109XCJkZXNjcmlwdG9yLmlucHV0Q2xhc3NOYW1lXCJcbiAgICAgICAgW2ZpcnN0RGF5T2ZXZWVrXT1cIjFcIj5cbiAgICA8L3AtY2FsZW5kYXI+XG5cbiAgICA8cC1pbnB1dE1hc2tcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidtYXNrJ1wiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJpRm9ybUNvbnRyb2xcIlxuICAgICAgICBbZm9ybWx5QXR0cmlidXRlc109XCJmaWVsZFwiXG4gICAgICAgIFttYXNrXT1cImRlc2NyaXB0b3IubWFza1wiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJkZXNjcmlwdG9yLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3Nsb3RDaGFyXT1cIiRhbnkoZGVzY3JpcHRvci5zbG90Q2hhcilcIlxuICAgICAgICBbc3R5bGVDbGFzc109XCJkZXNjcmlwdG9yLmlucHV0Q2xhc3NOYW1lXCI+XG4gICAgPC9wLWlucHV0TWFzaz5cblxuICAgIDxwLWZpbGVVcGxvYWRcbiAgICAgICAgI2ZpbGVVcGxvYWRJbnB1dFxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbGUnXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlGb3JtQ29udHJvbC5kaXNhYmxlZFwiXG4gICAgICAgIFttdWx0aXBsZV09XCJkZXNjcmlwdG9yLmZpbGVNdWx0aXBsZVwiXG4gICAgICAgIFthY2NlcHRdPVwiZGVzY3JpcHRvci5maWxlQWNjZXB0XCJcbiAgICAgICAgW21heEZpbGVTaXplXT1cImRlc2NyaXB0b3IuZmlsZU1heEZpbGVTaXplXCJcbiAgICAgICAgW3Nob3dVcGxvYWRCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgICAob25TZWxlY3QpPVwib25GaWxlU2VsZWN0KCRldmVudClcIlxuICAgICAgICAob25SZW1vdmUpPVwib25GaWxlUmVtb3ZlKCRldmVudClcIlxuICAgICAgICAob25DbGVhcik9XCJvbkZpbGVDbGVhcigkZXZlbnQpXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtZmlsZSBsZXQtaWR4PVwiaW5kZXhcIiBwVGVtcGxhdGU9XCJmaWxlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1maWxldXBsb2FkLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWxlVXBsb2FkSW5wdXQuaXNJbWFnZShmaWxlKTsgZWxzZSBmaWxlSW5wdXREb2N1bWVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc0ZpbGVJbWFnZVN2ZyhmaWxlKTsgZWxzZSBmaWxlSW5wdXRJbWFnZURlZmF1bHRcIiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWltYWdlIHRleHQtMnhsXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNmaWxlSW5wdXRJbWFnZURlZmF1bHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImZpbGUub2JqZWN0VVJMXCIgW3dpZHRoXT1cImZpbGVVcGxvYWRJbnB1dC5wcmV2aWV3V2lkdGhcIiAoZXJyb3IpPVwiZmlsZVVwbG9hZElucHV0LmltYWdlRXJyb3IoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNmaWxlSW5wdXREb2N1bWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCIncGkgJyArIGdldEZpbGVEb2N1bWVudFR5cGVJY29uKGZpbGUpICsgJyB0ZXh0LTJ4bCdcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmlsZXVwbG9hZC1maWxlbmFtZVwiPnt7IGZpbGUubmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+e3sgZmlsZVVwbG9hZElucHV0LmZvcm1hdFNpemUoZmlsZS5zaXplKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZpbGVVcGxvYWRJbnB1dC5yZW1vdmUoJGV2ZW50LCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWxlVXBsb2FkSW5wdXQudXBsb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24taWNvbi1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJmaWxlVXBsb2FkSW5wdXQucmVtb3ZlU3R5bGVDbGFzc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFRpbWVzSWNvbiAqbmdJZj1cIiFmaWxlVXBsb2FkSW5wdXQuY2FuY2VsSWNvblRlbXBsYXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNvbnRlbnRcIiBsZXQtZmlsZXM+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsZXMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJ0ZXh0LWdyYXktMzAwIGRyb3Bkb3duLWFyZWFcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz1cInBpIHBpLWZpbGUtaW1wb3J0IG1yLTJcIj48L2k+e3sgJ2ZpbGVVcGxvYWQuZHJhZ0FuZERyb3AnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9wLWZpbGVVcGxvYWQ+XG5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInaW1hZ2VVcmwnXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJkZXNjcmlwdG9yLmltYWdlUHJldmlld1wiIGNsYXNzPVwiZmxleCBmbGV4LXdyYXAganVzdGlmeS1jb250ZW50LXN0YXJ0XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpbWFnZSBvZiBpbWFnZUZvcm1BcnJheS5jb250cm9sczsgbGV0IGlkeCA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgPHAtaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpbWFnZUZvcm1BcnJheS5hdChpZHgpLnZhbGlkICYmIGltYWdlRm9ybUFycmF5LmF0KGlkeCkudmFsdWU7IGVsc2Ugbm9JbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW1hZ2VGb3JtQXJyYXkuYXQoaWR4KS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtwcmV2aWV3XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAob25JbWFnZUVycm9yKT1cIm9uSW1hZ2VVcmxMb2FkRXJyb3IoKVwiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJtbmctaW1hZ2UgbS0yXCI+PC9wLWltYWdlPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vSW1hZ2U+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtbmctaW1hZ2UgbS0yIHAtaW1hZ2UtcHJldmlldy1jb250YWluZXIgbm8taW1hZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtaW1hZ2UtcHJldmlldy1pbmRpY2F0b3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicC1pbWFnZS1wcmV2aWV3LWljb24gcGkgcGktYmFuXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkZXNjcmlwdG9yLmltYWdlUHJldmlldyB8fCBkZXNjcmlwdG9yLmltYWdlVXJsSW5wdXRWaXNpYmxlT25EaXNhYmxlZCB8fCAhaUZvcm1Db250cm9sLmRpc2FibGVkXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpbWFnZUN0cmxOYW1lIG9mIGltYWdlRm9ybUFycmF5LmNvbnRyb2xzOyBsZXQgaWR4ID0gaW5kZXhcIiBjbGFzcz1cInAtaW5wdXRncm91cCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidtbmdFZGl0b3IuaW1hZ2VVcmxQbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJGFueShrZXkpXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiJGFueShpbWFnZUZvcm1BcnJheS5hdChpZHgpKVwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCIgLz5cbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZGVzY3JpcHRvci5maWxlTXVsdGlwbGUgJiYgIWlGb3JtQ29udHJvbC5kaXNhYmxlZFwiIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIHBSaXBwbGUgaWNvbj1cInBpIHBpLW1pbnVzXCIgKGNsaWNrKT1cInJlbW92ZUltYWdlVXJsQXQoaWR4KVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJkZXNjcmlwdG9yLmZpbGVNdWx0aXBsZSAmJiAhaUZvcm1Db250cm9sLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgIGljb249XCJwaSBwaS1wbHVzXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXByaW1hcnkgdy1hdXRvIG10LTFcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCInbW5nRWRpdG9yLmltYWdlVXJsQWRkJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZEltYWdlVXJsKClcIj48L2J1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8aW5wdXQgKm5nU3dpdGNoRGVmYXVsdCBwSW5wdXRUZXh0IFtpZF09XCIkYW55KGtleSlcIiBbdHlwZV09XCJwcm9wcy50eXBlIHx8ICd0ZXh0J1wiIFtmb3JtQ29udHJvbF09XCJpRm9ybUNvbnRyb2xcIiBbZm9ybWx5QXR0cmlidXRlc109XCJmaWVsZFwiIC8+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -10,10 +10,10 @@ import * as i3 from "@ngx-translate/core";
10
10
  import * as i4 from "@ngx-formly/core";
11
11
  export class MngFormlyFieldTabsComponent extends FieldType {
12
12
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngFormlyFieldTabsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
13
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: MngFormlyFieldTabsComponent, isStandalone: true, selector: "mng-formly-field-tabs", usesInheritance: true, ngImport: i0, template: "<p-tabView [scrollable]=\"true\">\n <p-tabPanel\n *ngFor=\"let tab of field.fieldGroup; let i = index; let last = last\"\n [header]=\"tab.props?.label! | translate\"\n [headerStyleClass]=\"formControl!.valid ? 'p-tabview-title' : undefined\">\n <ng-template pTemplate=\"header\">\n <span class=\"p-tabview-title\" [class.p-tabview-title-error]=\"formState.submittedOn && formState['tab_' + (tab.id ? tab.id : tab.props?.label!) + '_invalid']\">{{\n tab.props?.label! | translate\n }}</span>\n </ng-template>\n <formly-field [field]=\"tab\"></formly-field>\n </p-tabPanel>\n</p-tabView>\n", dependencies: [{ kind: "ngmodule", type: TabViewModule }, { kind: "component", type: i1.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i1.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i4.FormlyField, selector: "formly-field", inputs: ["field"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: MngFormlyFieldTabsComponent, isStandalone: true, selector: "mng-formly-field-tabs", usesInheritance: true, ngImport: i0, template: "<p-tabView [scrollable]=\"true\">\n <p-tabPanel\n *ngFor=\"let tab of field.fieldGroup; let i = index; let last = last\"\n [header]=\"tab.props?.label! | translate\"\n [headerStyleClass]=\"formControl!.valid ? 'p-tabview-title' : undefined\">\n <ng-template pTemplate=\"header\">\n <span class=\"p-tabview-title\" [class.p-tabview-title-error]=\"formState.submittedOn && formState['tab_' + (tab.id ? tab.id : tab.props?.label!) + '_invalid']\">{{\n tab.props?.label! | translate\n }}</span>\n </ng-template>\n <formly-field [field]=\"tab\"></formly-field>\n </p-tabPanel>\n</p-tabView>\n", dependencies: [{ kind: "ngmodule", type: TabViewModule }, { kind: "component", type: i1.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i1.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i4.FormlyField, selector: "formly-field", inputs: ["field"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
14
14
  }
15
15
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngFormlyFieldTabsComponent, decorators: [{
16
16
  type: Component,
17
17
  args: [{ standalone: true, selector: 'mng-formly-field-tabs', imports: [TabViewModule, NgForOf, TranslateModule, FormlyModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<p-tabView [scrollable]=\"true\">\n <p-tabPanel\n *ngFor=\"let tab of field.fieldGroup; let i = index; let last = last\"\n [header]=\"tab.props?.label! | translate\"\n [headerStyleClass]=\"formControl!.valid ? 'p-tabview-title' : undefined\">\n <ng-template pTemplate=\"header\">\n <span class=\"p-tabview-title\" [class.p-tabview-title-error]=\"formState.submittedOn && formState['tab_' + (tab.id ? tab.id : tab.props?.label!) + '_invalid']\">{{\n tab.props?.label! | translate\n }}</span>\n </ng-template>\n <formly-field [field]=\"tab\"></formly-field>\n </p-tabPanel>\n</p-tabView>\n" }]
18
18
  }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtdGFicy9mb3JtbHktZmllbGQtdGFicy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC10YWJzL2Zvcm1seS1maWVsZC10YWJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN4QyxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWpFLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDekQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBVzlDLE1BQU0sT0FBTywyQkFBNEIsU0FBUSxTQUErQjs4R0FBbkUsMkJBQTJCO2tHQUEzQiwyQkFBMkIsd0dDaEJ4QyxrcUJBYUEsMkNEQWMsYUFBYSxrbkJBQUUsT0FBTyxrSEFBRSxlQUFlLDJGQUFFLFlBQVk7OzJGQUd0RCwyQkFBMkI7a0JBUHZDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLHVCQUF1QixXQUV4QixDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksQ0FBQyxtQkFDL0MsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdGb3JPZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7RmllbGRUeXBlLCBGb3JtbHlNb2R1bGV9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtUYWJWaWV3TW9kdWxlfSBmcm9tICdwcmltZW5nL3RhYnZpZXcnO1xuXG5pbXBvcnQge01uZ0Zvcm1seUZpZWxkQ29uZmlnfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLWZvcm1seS1maWVsZC10YWJzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9ybWx5LWZpZWxkLXRhYnMuY29tcG9uZW50Lmh0bWwnLFxuICAgIGltcG9ydHM6IFtUYWJWaWV3TW9kdWxlLCBOZ0Zvck9mLCBUcmFuc2xhdGVNb2R1bGUsIEZvcm1seU1vZHVsZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTW5nRm9ybWx5RmllbGRUYWJzQ29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlPE1uZ0Zvcm1seUZpZWxkQ29uZmlnPiB7fVxuIiwiPHAtdGFiVmlldyBbc2Nyb2xsYWJsZV09XCJ0cnVlXCI+XG4gICAgPHAtdGFiUGFuZWxcbiAgICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiBmaWVsZC5maWVsZEdyb3VwOyBsZXQgaSA9IGluZGV4OyBsZXQgbGFzdCA9IGxhc3RcIlxuICAgICAgICBbaGVhZGVyXT1cInRhYi5wcm9wcz8ubGFiZWwhIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2hlYWRlclN0eWxlQ2xhc3NdPVwiZm9ybUNvbnRyb2whLnZhbGlkID8gJ3AtdGFidmlldy10aXRsZScgOiB1bmRlZmluZWRcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLXRhYnZpZXctdGl0bGVcIiBbY2xhc3MucC10YWJ2aWV3LXRpdGxlLWVycm9yXT1cImZvcm1TdGF0ZS5zdWJtaXR0ZWRPbiAmJiBmb3JtU3RhdGVbJ3RhYl8nICsgKHRhYi5pZCA/IHRhYi5pZCA6IHRhYi5wcm9wcz8ubGFiZWwhKSArICdfaW52YWxpZCddXCI+e3tcbiAgICAgICAgICAgICAgICB0YWIucHJvcHM/LmxhYmVsISB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxmb3JtbHktZmllbGQgW2ZpZWxkXT1cInRhYlwiPjwvZm9ybWx5LWZpZWxkPlxuICAgIDwvcC10YWJQYW5lbD5cbjwvcC10YWJWaWV3PlxuIl19
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtdGFicy9mb3JtbHktZmllbGQtdGFicy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC10YWJzL2Zvcm1seS1maWVsZC10YWJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN4QyxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWpFLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDekQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBVzlDLE1BQU0sT0FBTywyQkFBNEIsU0FBUSxTQUErQjs4R0FBbkUsMkJBQTJCO2tHQUEzQiwyQkFBMkIsd0dDaEJ4QyxrcUJBYUEsMkNEQWMsYUFBYSxtckJBQUUsT0FBTyxrSEFBRSxlQUFlLDJGQUFFLFlBQVk7OzJGQUd0RCwyQkFBMkI7a0JBUHZDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLHVCQUF1QixXQUV4QixDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksQ0FBQyxtQkFDL0MsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdGb3JPZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7RmllbGRUeXBlLCBGb3JtbHlNb2R1bGV9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtUYWJWaWV3TW9kdWxlfSBmcm9tICdwcmltZW5nL3RhYnZpZXcnO1xuXG5pbXBvcnQge01uZ0Zvcm1seUZpZWxkQ29uZmlnfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLWZvcm1seS1maWVsZC10YWJzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9ybWx5LWZpZWxkLXRhYnMuY29tcG9uZW50Lmh0bWwnLFxuICAgIGltcG9ydHM6IFtUYWJWaWV3TW9kdWxlLCBOZ0Zvck9mLCBUcmFuc2xhdGVNb2R1bGUsIEZvcm1seU1vZHVsZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTW5nRm9ybWx5RmllbGRUYWJzQ29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlPE1uZ0Zvcm1seUZpZWxkQ29uZmlnPiB7fVxuIiwiPHAtdGFiVmlldyBbc2Nyb2xsYWJsZV09XCJ0cnVlXCI+XG4gICAgPHAtdGFiUGFuZWxcbiAgICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiBmaWVsZC5maWVsZEdyb3VwOyBsZXQgaSA9IGluZGV4OyBsZXQgbGFzdCA9IGxhc3RcIlxuICAgICAgICBbaGVhZGVyXT1cInRhYi5wcm9wcz8ubGFiZWwhIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2hlYWRlclN0eWxlQ2xhc3NdPVwiZm9ybUNvbnRyb2whLnZhbGlkID8gJ3AtdGFidmlldy10aXRsZScgOiB1bmRlZmluZWRcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLXRhYnZpZXctdGl0bGVcIiBbY2xhc3MucC10YWJ2aWV3LXRpdGxlLWVycm9yXT1cImZvcm1TdGF0ZS5zdWJtaXR0ZWRPbiAmJiBmb3JtU3RhdGVbJ3RhYl8nICsgKHRhYi5pZCA/IHRhYi5pZCA6IHRhYi5wcm9wcz8ubGFiZWwhKSArICdfaW52YWxpZCddXCI+e3tcbiAgICAgICAgICAgICAgICB0YWIucHJvcHM/LmxhYmVsISB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxmb3JtbHktZmllbGQgW2ZpZWxkXT1cInRhYlwiPjwvZm9ybWx5LWZpZWxkPlxuICAgIDwvcC10YWJQYW5lbD5cbjwvcC10YWJWaWV3PlxuIl19
@@ -48,7 +48,7 @@ export class MngTopbarComponent {
48
48
  this.mngCommons.appLanguage = language;
49
49
  }
50
50
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngTopbarComponent, deps: [{ token: i0.ApplicationRef }, { token: i1.ActivatedRoute }, { token: i2.MngCommonsService }, { token: i3.MngMainLayoutComponentService }, { token: MNG_MODULE_CONFIG_IT }], target: i0.ɵɵFactoryTarget.Component }); }
51
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: MngTopbarComponent, isStandalone: true, selector: "mng-topbar", viewQueries: [{ propertyName: "topbarInjectionRef", first: true, predicate: ["userMenuItem"], descendants: true }, { propertyName: "templates", predicate: MngTemplateDirective, descendants: true }], ngImport: i0, template: "<div class=\"layout-topbar\">\n <div class=\"layout-topbar-left\">\n <a\n href=\"#\"\n class=\"topbar-menu-button\"\n (click)=\"mainLayoutService.onMenuButtonClick($event)\"\n *ngIf=\"(mngCommons.menuModeIsOverlay$ | async) || (mainLayoutService.isMobile$ | async)\">\n <i class=\"pi pi-bars\"></i>\n </a>\n\n <ng-container [mngComponent]=\"breadcrumbComponent\"></ng-container>\n </div>\n\n <ng-container [mngComponent]=\"menuComponent\"></ng-container>\n\n <div class=\"layout-topbar-right\">\n <ul class=\"layout-topbar-right-items\">\n <li\n #userMenuItem\n class=\"profile-item profile-item-extended\"\n [ngClass]=\"{'active-topmenuitem': (mainLayoutService.activeTopbarItem$ | async) === userMenuItem}\"\n [mngComponent]=\"topbarUserComponent\"\n [attachToHost]=\"true\"></li>\n <li *ngIf=\"languages.length > 1\" class=\"profile-item\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-dropdown [ngModel]=\"selectedLanguage\" [options]=\"languages\" (onChange)=\"switchLanguage($event.value)\"></p-dropdown>\n </li>\n </ul>\n </div>\n</div>\n", dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: MngComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "inputs", "attachToHost"], outputs: ["instanceCreated"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i4.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: RouterModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
51
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: MngTopbarComponent, isStandalone: true, selector: "mng-topbar", viewQueries: [{ propertyName: "topbarInjectionRef", first: true, predicate: ["userMenuItem"], descendants: true }, { propertyName: "templates", predicate: MngTemplateDirective, descendants: true }], ngImport: i0, template: "<div class=\"layout-topbar\">\n <div class=\"layout-topbar-left\">\n <a\n href=\"#\"\n class=\"topbar-menu-button\"\n (click)=\"mainLayoutService.onMenuButtonClick($event)\"\n *ngIf=\"(mngCommons.menuModeIsOverlay$ | async) || (mainLayoutService.isMobile$ | async)\">\n <i class=\"pi pi-bars\"></i>\n </a>\n\n <ng-container [mngComponent]=\"breadcrumbComponent\"></ng-container>\n </div>\n\n <ng-container [mngComponent]=\"menuComponent\"></ng-container>\n\n <div class=\"layout-topbar-right\">\n <ul class=\"layout-topbar-right-items\">\n <li\n #userMenuItem\n class=\"profile-item profile-item-extended\"\n [ngClass]=\"{'active-topmenuitem': (mainLayoutService.activeTopbarItem$ | async) === userMenuItem}\"\n [mngComponent]=\"topbarUserComponent\"\n [attachToHost]=\"true\"></li>\n <li *ngIf=\"languages.length > 1\" class=\"profile-item\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-dropdown [ngModel]=\"selectedLanguage\" [options]=\"languages\" (onChange)=\"switchLanguage($event.value)\"></p-dropdown>\n </li>\n </ul>\n </div>\n</div>\n", dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: MngComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "inputs", "attachToHost"], outputs: ["instanceCreated"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i4.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: RouterModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
52
52
  }
53
53
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngTopbarComponent, decorators: [{
54
54
  type: Component,
@@ -63,4 +63,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
63
63
  type: ViewChild,
64
64
  args: ['userMenuItem']
65
65
  }] } });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9sYXlvdXQvdG9wYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9sYXlvdXQvdG9wYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxjQUFjLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQVUsU0FBUyxFQUFRLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkosT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxjQUFjLEVBQUUsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFN0QsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUMscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUU3RSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDbEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDOUQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQ3pELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7O0FBUy9ELE1BQU0sT0FBTyxrQkFBa0I7SUFXM0IsWUFDWSxjQUE4QixFQUM5QixLQUFxQixFQUN0QixVQUE2QixFQUM3QixpQkFBZ0QsRUFDakIsTUFBdUI7UUFKckQsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3RCLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQzdCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBK0I7UUFDakIsV0FBTSxHQUFOLE1BQU0sQ0FBaUI7UUFaMUQsd0JBQW1CLEdBQWMsc0JBQXNCLENBQUM7UUFDeEQsa0JBQWEsR0FBYyxnQkFBZ0IsQ0FBQztRQUM1Qyx3QkFBbUIsR0FBYyxzQkFBc0IsQ0FBQztRQUV4RCxjQUFTLEdBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMscUJBQWdCLEdBQUcsSUFBSSxDQUFDO0lBUTVCLENBQUM7SUFFSixRQUFRO1FBQ0osSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFO1lBQzVDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1NBQ3ZFO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFO1lBQzVDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1NBQ3ZFO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQ3RDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztTQUMzRDtRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUM7UUFDOUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNoRSxDQUFDO0lBRU0sY0FBYyxDQUFDLFFBQWdCO1FBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQztJQUMzQyxDQUFDOzhHQXBDUSxrQkFBa0IsNEpBZ0JmLG9CQUFvQjtrR0FoQnZCLGtCQUFrQix5TUFDYixvQkFBb0IsZ0RDMUJ0Qyx3d0NBOEJBLHVDRFJjLFNBQVMsOENBQUUsT0FBTyxtRkFBRSxlQUFlLCtCQUFFLElBQUksNkZBQUUscUJBQXFCLDRJQUF5QixjQUFjLCtpQ0FBRSxXQUFXLDhWQUFFLFlBQVk7OzJGQUduSSxrQkFBa0I7a0JBUDlCLFNBQVM7aUNBQ00sSUFBSSxZQUNOLFlBQVksV0FFYixDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxtQkFDNUgsdUJBQXVCLENBQUMsTUFBTTs7MEJBa0IxQyxNQUFNOzJCQUFDLG9CQUFvQjs0Q0FmSSxTQUFTO3NCQUE1QyxZQUFZO3VCQUFDLG9CQUFvQjtnQkFDUCxrQkFBa0I7c0JBQTVDLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ0lmfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtBcHBsaWNhdGlvblJlZiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0LCBPbkluaXQsIFF1ZXJ5TGlzdCwgVHlwZSwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0Ryb3Bkb3duTW9kdWxlfSBmcm9tICdwcmltZW5nL2Ryb3Bkb3duJztcblxuaW1wb3J0IHtNbmdDb21wb25lbnREaXJlY3RpdmUsIE1uZ1RlbXBsYXRlRGlyZWN0aXZlfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7TW5nTW9kdWxlQ29uZmlnfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtNbmdFbnVtZXJhdGVBc3luY1BpcGV9IGZyb20gJy4uLy4uL3BpcGVzJztcbmltcG9ydCB7TW5nQ29tbW9uc1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7TU5HX01PRFVMRV9DT05GSUdfSVR9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Rva2Vucyc7XG5pbXBvcnQge01uZ0JyZWFkY3J1bWJDb21wb25lbnR9IGZyb20gJy4vYnJlYWRjcnVtYi5jb21wb25lbnQnO1xuaW1wb3J0IHtNbmdNZW51Q29tcG9uZW50fSBmcm9tICcuL21lbnUuY29tcG9uZW50JztcbmltcG9ydCB7TW5nTWFpbkxheW91dENvbXBvbmVudFNlcnZpY2V9IGZyb20gJy4vc2VydmljZXMnO1xuaW1wb3J0IHtNbmdUb3BiYXJVc2VyQ29tcG9uZW50fSBmcm9tICcuL3RvcGJhci11c2VyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdtbmctdG9wYmFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdG9wYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbQXN5bmNQaXBlLCBOZ0NsYXNzLCBUcmFuc2xhdGVNb2R1bGUsIE5nSWYsIE1uZ0NvbXBvbmVudERpcmVjdGl2ZSwgTW5nRW51bWVyYXRlQXN5bmNQaXBlLCBEcm9wZG93bk1vZHVsZSwgRm9ybXNNb2R1bGUsIFJvdXRlck1vZHVsZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTW5nVG9wYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAVmlld0NoaWxkcmVuKE1uZ1RlbXBsYXRlRGlyZWN0aXZlKSB0ZW1wbGF0ZXMhOiBRdWVyeUxpc3Q8TW5nVGVtcGxhdGVEaXJlY3RpdmU+O1xuICAgIEBWaWV3Q2hpbGQoJ3VzZXJNZW51SXRlbScpIHRvcGJhckluamVjdGlvblJlZiE6IEVsZW1lbnRSZWY7XG5cbiAgICBwdWJsaWMgYnJlYWRjcnVtYkNvbXBvbmVudDogVHlwZTxhbnk+ID0gTW5nQnJlYWRjcnVtYkNvbXBvbmVudDtcbiAgICBwdWJsaWMgbWVudUNvbXBvbmVudDogVHlwZTxhbnk+ID0gTW5nTWVudUNvbXBvbmVudDtcbiAgICBwdWJsaWMgdG9wYmFyVXNlckNvbXBvbmVudDogVHlwZTxhbnk+ID0gTW5nVG9wYmFyVXNlckNvbXBvbmVudDtcblxuICAgIHB1YmxpYyBsYW5ndWFnZXM6IEFycmF5PHN0cmluZz4gPSBbJ2VuJ107XG4gICAgcHVibGljIHNlbGVjdGVkTGFuZ3VhZ2UgPSAnZW4nO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgICAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHVibGljIG1uZ0NvbW1vbnM6IE1uZ0NvbW1vbnNTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgbWFpbkxheW91dFNlcnZpY2U6IE1uZ01haW5MYXlvdXRDb21wb25lbnRTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KE1OR19NT0RVTEVfQ09ORklHX0lUKSBwcml2YXRlIGNvbmZpZzogTW5nTW9kdWxlQ29uZmlnXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5jb21wb25lbnRzPy5sYXlvdXQ/LnRvcGJhclVzZXIpIHtcbiAgICAgICAgICAgIHRoaXMudG9wYmFyVXNlckNvbXBvbmVudCA9IHRoaXMuY29uZmlnLmNvbXBvbmVudHMubGF5b3V0LnRvcGJhclVzZXI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmNvbXBvbmVudHM/LmxheW91dD8uYnJlYWRjcnVtYikge1xuICAgICAgICAgICAgdGhpcy5icmVhZGNydW1iQ29tcG9uZW50ID0gdGhpcy5jb25maWcuY29tcG9uZW50cy5sYXlvdXQuYnJlYWRjcnVtYjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb25maWcuY29tcG9uZW50cz8ubGF5b3V0Py5tZW51KSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVDb21wb25lbnQgPSB0aGlzLmNvbmZpZy5jb21wb25lbnRzLmxheW91dC5tZW51O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sYW5ndWFnZXMgPSB0aGlzLm1uZ0NvbW1vbnMuYXBwTGFuZ3VhZ2VzO1xuICAgICAgICB0aGlzLnNlbGVjdGVkTGFuZ3VhZ2UgPSB0aGlzLm1uZ0NvbW1vbnMuZ2V0T3JJbml0TGFuZ3VhZ2UoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3dpdGNoTGFuZ3VhZ2UobGFuZ3VhZ2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLm1uZ0NvbW1vbnMuYXBwTGFuZ3VhZ2UgPSBsYW5ndWFnZTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibGF5b3V0LXRvcGJhclwiPlxuICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtdG9wYmFyLWxlZnRcIj5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCIjXCJcbiAgICAgICAgICAgIGNsYXNzPVwidG9wYmFyLW1lbnUtYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJtYWluTGF5b3V0U2VydmljZS5vbk1lbnVCdXR0b25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICpuZ0lmPVwiKG1uZ0NvbW1vbnMubWVudU1vZGVJc092ZXJsYXkkIHwgYXN5bmMpIHx8IChtYWluTGF5b3V0U2VydmljZS5pc01vYmlsZSQgfCBhc3luYylcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktYmFyc1wiPjwvaT5cbiAgICAgICAgPC9hPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgW21uZ0NvbXBvbmVudF09XCJicmVhZGNydW1iQ29tcG9uZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyIFttbmdDb21wb25lbnRdPVwibWVudUNvbXBvbmVudFwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiBjbGFzcz1cImxheW91dC10b3BiYXItcmlnaHRcIj5cbiAgICAgICAgPHVsIGNsYXNzPVwibGF5b3V0LXRvcGJhci1yaWdodC1pdGVtc1wiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgI3VzZXJNZW51SXRlbVxuICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZmlsZS1pdGVtIHByb2ZpbGUtaXRlbS1leHRlbmRlZFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydhY3RpdmUtdG9wbWVudWl0ZW0nOiAobWFpbkxheW91dFNlcnZpY2UuYWN0aXZlVG9wYmFySXRlbSQgfCBhc3luYykgPT09IHVzZXJNZW51SXRlbX1cIlxuICAgICAgICAgICAgICAgIFttbmdDb21wb25lbnRdPVwidG9wYmFyVXNlckNvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgW2F0dGFjaFRvSG9zdF09XCJ0cnVlXCI+PC9saT5cbiAgICAgICAgICAgIDxsaSAqbmdJZj1cImxhbmd1YWdlcy5sZW5ndGggPiAxXCIgY2xhc3M9XCJwcm9maWxlLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWZ3IHBpLWdsb2JlXCI+PC9pPlxuICAgICAgICAgICAgICAgIDxwLWRyb3Bkb3duIFtuZ01vZGVsXT1cInNlbGVjdGVkTGFuZ3VhZ2VcIiBbb3B0aW9uc109XCJsYW5ndWFnZXNcIiAob25DaGFuZ2UpPVwic3dpdGNoTGFuZ3VhZ2UoJGV2ZW50LnZhbHVlKVwiPjwvcC1kcm9wZG93bj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9sYXlvdXQvdG9wYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9sYXlvdXQvdG9wYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxjQUFjLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQVUsU0FBUyxFQUFRLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkosT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxjQUFjLEVBQUUsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFN0QsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUMscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUU3RSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDbEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDOUQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQ3pELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7O0FBUy9ELE1BQU0sT0FBTyxrQkFBa0I7SUFXM0IsWUFDWSxjQUE4QixFQUM5QixLQUFxQixFQUN0QixVQUE2QixFQUM3QixpQkFBZ0QsRUFDakIsTUFBdUI7UUFKckQsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3RCLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQzdCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBK0I7UUFDakIsV0FBTSxHQUFOLE1BQU0sQ0FBaUI7UUFaMUQsd0JBQW1CLEdBQWMsc0JBQXNCLENBQUM7UUFDeEQsa0JBQWEsR0FBYyxnQkFBZ0IsQ0FBQztRQUM1Qyx3QkFBbUIsR0FBYyxzQkFBc0IsQ0FBQztRQUV4RCxjQUFTLEdBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMscUJBQWdCLEdBQUcsSUFBSSxDQUFDO0lBUTVCLENBQUM7SUFFSixRQUFRO1FBQ0osSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFO1lBQzVDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1NBQ3ZFO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFO1lBQzVDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1NBQ3ZFO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQ3RDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztTQUMzRDtRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUM7UUFDOUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNoRSxDQUFDO0lBRU0sY0FBYyxDQUFDLFFBQWdCO1FBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQztJQUMzQyxDQUFDOzhHQXBDUSxrQkFBa0IsNEpBZ0JmLG9CQUFvQjtrR0FoQnZCLGtCQUFrQix5TUFDYixvQkFBb0IsZ0RDMUJ0Qyx3d0NBOEJBLHVDRFJjLFNBQVMsOENBQUUsT0FBTyxtRkFBRSxlQUFlLCtCQUFFLElBQUksNkZBQUUscUJBQXFCLDRJQUF5QixjQUFjLHluQ0FBRSxXQUFXLDhWQUFFLFlBQVk7OzJGQUduSSxrQkFBa0I7a0JBUDlCLFNBQVM7aUNBQ00sSUFBSSxZQUNOLFlBQVksV0FFYixDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxtQkFDNUgsdUJBQXVCLENBQUMsTUFBTTs7MEJBa0IxQyxNQUFNOzJCQUFDLG9CQUFvQjs0Q0FmSSxTQUFTO3NCQUE1QyxZQUFZO3VCQUFDLG9CQUFvQjtnQkFDUCxrQkFBa0I7c0JBQTVDLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ0lmfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtBcHBsaWNhdGlvblJlZiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0LCBPbkluaXQsIFF1ZXJ5TGlzdCwgVHlwZSwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0Ryb3Bkb3duTW9kdWxlfSBmcm9tICdwcmltZW5nL2Ryb3Bkb3duJztcblxuaW1wb3J0IHtNbmdDb21wb25lbnREaXJlY3RpdmUsIE1uZ1RlbXBsYXRlRGlyZWN0aXZlfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7TW5nTW9kdWxlQ29uZmlnfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtNbmdFbnVtZXJhdGVBc3luY1BpcGV9IGZyb20gJy4uLy4uL3BpcGVzJztcbmltcG9ydCB7TW5nQ29tbW9uc1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7TU5HX01PRFVMRV9DT05GSUdfSVR9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Rva2Vucyc7XG5pbXBvcnQge01uZ0JyZWFkY3J1bWJDb21wb25lbnR9IGZyb20gJy4vYnJlYWRjcnVtYi5jb21wb25lbnQnO1xuaW1wb3J0IHtNbmdNZW51Q29tcG9uZW50fSBmcm9tICcuL21lbnUuY29tcG9uZW50JztcbmltcG9ydCB7TW5nTWFpbkxheW91dENvbXBvbmVudFNlcnZpY2V9IGZyb20gJy4vc2VydmljZXMnO1xuaW1wb3J0IHtNbmdUb3BiYXJVc2VyQ29tcG9uZW50fSBmcm9tICcuL3RvcGJhci11c2VyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdtbmctdG9wYmFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdG9wYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbQXN5bmNQaXBlLCBOZ0NsYXNzLCBUcmFuc2xhdGVNb2R1bGUsIE5nSWYsIE1uZ0NvbXBvbmVudERpcmVjdGl2ZSwgTW5nRW51bWVyYXRlQXN5bmNQaXBlLCBEcm9wZG93bk1vZHVsZSwgRm9ybXNNb2R1bGUsIFJvdXRlck1vZHVsZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTW5nVG9wYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAVmlld0NoaWxkcmVuKE1uZ1RlbXBsYXRlRGlyZWN0aXZlKSB0ZW1wbGF0ZXMhOiBRdWVyeUxpc3Q8TW5nVGVtcGxhdGVEaXJlY3RpdmU+O1xuICAgIEBWaWV3Q2hpbGQoJ3VzZXJNZW51SXRlbScpIHRvcGJhckluamVjdGlvblJlZiE6IEVsZW1lbnRSZWY7XG5cbiAgICBwdWJsaWMgYnJlYWRjcnVtYkNvbXBvbmVudDogVHlwZTxhbnk+ID0gTW5nQnJlYWRjcnVtYkNvbXBvbmVudDtcbiAgICBwdWJsaWMgbWVudUNvbXBvbmVudDogVHlwZTxhbnk+ID0gTW5nTWVudUNvbXBvbmVudDtcbiAgICBwdWJsaWMgdG9wYmFyVXNlckNvbXBvbmVudDogVHlwZTxhbnk+ID0gTW5nVG9wYmFyVXNlckNvbXBvbmVudDtcblxuICAgIHB1YmxpYyBsYW5ndWFnZXM6IEFycmF5PHN0cmluZz4gPSBbJ2VuJ107XG4gICAgcHVibGljIHNlbGVjdGVkTGFuZ3VhZ2UgPSAnZW4nO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgICAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHVibGljIG1uZ0NvbW1vbnM6IE1uZ0NvbW1vbnNTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgbWFpbkxheW91dFNlcnZpY2U6IE1uZ01haW5MYXlvdXRDb21wb25lbnRTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KE1OR19NT0RVTEVfQ09ORklHX0lUKSBwcml2YXRlIGNvbmZpZzogTW5nTW9kdWxlQ29uZmlnXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5jb21wb25lbnRzPy5sYXlvdXQ/LnRvcGJhclVzZXIpIHtcbiAgICAgICAgICAgIHRoaXMudG9wYmFyVXNlckNvbXBvbmVudCA9IHRoaXMuY29uZmlnLmNvbXBvbmVudHMubGF5b3V0LnRvcGJhclVzZXI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmNvbXBvbmVudHM/LmxheW91dD8uYnJlYWRjcnVtYikge1xuICAgICAgICAgICAgdGhpcy5icmVhZGNydW1iQ29tcG9uZW50ID0gdGhpcy5jb25maWcuY29tcG9uZW50cy5sYXlvdXQuYnJlYWRjcnVtYjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb25maWcuY29tcG9uZW50cz8ubGF5b3V0Py5tZW51KSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVDb21wb25lbnQgPSB0aGlzLmNvbmZpZy5jb21wb25lbnRzLmxheW91dC5tZW51O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sYW5ndWFnZXMgPSB0aGlzLm1uZ0NvbW1vbnMuYXBwTGFuZ3VhZ2VzO1xuICAgICAgICB0aGlzLnNlbGVjdGVkTGFuZ3VhZ2UgPSB0aGlzLm1uZ0NvbW1vbnMuZ2V0T3JJbml0TGFuZ3VhZ2UoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3dpdGNoTGFuZ3VhZ2UobGFuZ3VhZ2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLm1uZ0NvbW1vbnMuYXBwTGFuZ3VhZ2UgPSBsYW5ndWFnZTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibGF5b3V0LXRvcGJhclwiPlxuICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtdG9wYmFyLWxlZnRcIj5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCIjXCJcbiAgICAgICAgICAgIGNsYXNzPVwidG9wYmFyLW1lbnUtYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJtYWluTGF5b3V0U2VydmljZS5vbk1lbnVCdXR0b25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICpuZ0lmPVwiKG1uZ0NvbW1vbnMubWVudU1vZGVJc092ZXJsYXkkIHwgYXN5bmMpIHx8IChtYWluTGF5b3V0U2VydmljZS5pc01vYmlsZSQgfCBhc3luYylcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktYmFyc1wiPjwvaT5cbiAgICAgICAgPC9hPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgW21uZ0NvbXBvbmVudF09XCJicmVhZGNydW1iQ29tcG9uZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyIFttbmdDb21wb25lbnRdPVwibWVudUNvbXBvbmVudFwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiBjbGFzcz1cImxheW91dC10b3BiYXItcmlnaHRcIj5cbiAgICAgICAgPHVsIGNsYXNzPVwibGF5b3V0LXRvcGJhci1yaWdodC1pdGVtc1wiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgI3VzZXJNZW51SXRlbVxuICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZmlsZS1pdGVtIHByb2ZpbGUtaXRlbS1leHRlbmRlZFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydhY3RpdmUtdG9wbWVudWl0ZW0nOiAobWFpbkxheW91dFNlcnZpY2UuYWN0aXZlVG9wYmFySXRlbSQgfCBhc3luYykgPT09IHVzZXJNZW51SXRlbX1cIlxuICAgICAgICAgICAgICAgIFttbmdDb21wb25lbnRdPVwidG9wYmFyVXNlckNvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgW2F0dGFjaFRvSG9zdF09XCJ0cnVlXCI+PC9saT5cbiAgICAgICAgICAgIDxsaSAqbmdJZj1cImxhbmd1YWdlcy5sZW5ndGggPiAxXCIgY2xhc3M9XCJwcm9maWxlLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWZ3IHBpLWdsb2JlXCI+PC9pPlxuICAgICAgICAgICAgICAgIDxwLWRyb3Bkb3duIFtuZ01vZGVsXT1cInNlbGVjdGVkTGFuZ3VhZ2VcIiBbb3B0aW9uc109XCJsYW5ndWFnZXNcIiAob25DaGFuZ2UpPVwic3dpdGNoTGFuZ3VhZ2UoJGV2ZW50LnZhbHVlKVwiPjwvcC1kcm9wZG93bj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,30 @@
1
+ import { AsyncPipe, NgClass, NgForOf, NgIf } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
3
+ import { TranslateModule } from '@ngx-translate/core';
4
+ import { ButtonModule } from 'primeng/button';
5
+ import { InputTextModule } from 'primeng/inputtext';
6
+ import { map } from 'rxjs/operators';
7
+ import { MngCommonsService } from '../../services';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@ngx-translate/core";
10
+ export class MngBreadcrumbComponent {
11
+ constructor() {
12
+ this.mngCommons = inject(MngCommonsService);
13
+ this.mappedBreadcrumbs$ = this.mngCommons.breadcrumbs$.pipe(map((items) => items.map(el => this.mapMngMenuItem(el))));
14
+ }
15
+ mapMngMenuItem(item) {
16
+ return {
17
+ ...item,
18
+ url: item.href,
19
+ badgeStyleClass: item.badgeClassName,
20
+ styleClass: item.className
21
+ };
22
+ }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngBreadcrumbComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: MngBreadcrumbComponent, isStandalone: true, selector: "mng-breadcrumb-v2", ngImport: i0, template: "<div class=\"layout-breadcrumb flex align-items-center relative h-3rem\">\n <nav>\n <ol class=\"relative z-2\">\n <ng-template ngFor let-item let-last=\"last\" [ngForOf]=\"mappedBreadcrumbs$ | async\">\n <li>{{ item.label! | translate }}</li>\n <li *ngIf=\"!last\" class=\"layout-breadcrumb-chevron\">/</li>\n </ng-template>\n </ol>\n </nav>\n</div>\n", dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25
+ }
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngBreadcrumbComponent, decorators: [{
27
+ type: Component,
28
+ args: [{ standalone: true, selector: 'mng-breadcrumb-v2', imports: [NgForOf, NgClass, InputTextModule, ButtonModule, AsyncPipe, NgIf, TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-breadcrumb flex align-items-center relative h-3rem\">\n <nav>\n <ol class=\"relative z-2\">\n <ng-template ngFor let-item let-last=\"last\" [ngForOf]=\"mappedBreadcrumbs$ | async\">\n <li>{{ item.label! | translate }}</li>\n <li *ngIf=\"!last\" class=\"layout-breadcrumb-chevron\">/</li>\n </ng-template>\n </ol>\n </nav>\n</div>\n" }]
29
+ }] });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbGF5b3V0VjIvYnJlYWRjcnVtYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbGF5b3V0VjIvYnJlYWRjcnVtYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRXBELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFFbEQsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBR25DLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7QUFTakQsTUFBTSxPQUFPLHNCQUFzQjtJQVBuQztRQVFZLGVBQVUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUV4Qyx1QkFBa0IsR0FBMkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQW9CLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBVWxLO0lBUlcsY0FBYyxDQUFDLElBQWlCO1FBQ3BDLE9BQU87WUFDSCxHQUFHLElBQUk7WUFDUCxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZCxlQUFlLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDcEMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQ2pCLENBQUM7SUFDbEIsQ0FBQzs4R0FaUSxzQkFBc0I7a0dBQXRCLHNCQUFzQiw2RUNwQm5DLHlhQVVBLDRDRE1jLE9BQU8sa0hBQVcsZUFBZSw4QkFBRSxZQUFZLDBCQUFFLFNBQVMsOENBQUUsSUFBSSw0RkFBRSxlQUFlOzsyRkFJbEYsc0JBQXNCO2tCQVBsQyxTQUFTO2lDQUNNLElBQUksWUFDTixtQkFBbUIsV0FDcEIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxlQUFlLENBQUMsbUJBRTNFLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FzeW5jUGlwZSwgTmdDbGFzcywgTmdGb3JPZiwgTmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtNZW51SXRlbX0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtCdXR0b25Nb2R1bGV9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7SW5wdXRUZXh0TW9kdWxlfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dCc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtNbmdNZW51SXRlbX0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7TW5nQ29tbW9uc1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ21uZy1icmVhZGNydW1iLXYyJyxcbiAgICBpbXBvcnRzOiBbTmdGb3JPZiwgTmdDbGFzcywgSW5wdXRUZXh0TW9kdWxlLCBCdXR0b25Nb2R1bGUsIEFzeW5jUGlwZSwgTmdJZiwgVHJhbnNsYXRlTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYnJlYWRjcnVtYi5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTW5nQnJlYWRjcnVtYkNvbXBvbmVudCB7XG4gICAgcHJpdmF0ZSBtbmdDb21tb25zID0gaW5qZWN0KE1uZ0NvbW1vbnNTZXJ2aWNlKTtcblxuICAgIHB1YmxpYyBtYXBwZWRCcmVhZGNydW1icyQ6IE9ic2VydmFibGU8TWVudUl0ZW1bXT4gPSB0aGlzLm1uZ0NvbW1vbnMuYnJlYWRjcnVtYnMkLnBpcGUobWFwKChpdGVtczogTW5nTWVudUl0ZW1bXSkgPT4gaXRlbXMubWFwKGVsID0+IHRoaXMubWFwTW5nTWVudUl0ZW0oZWwpKSkpO1xuXG4gICAgcHJpdmF0ZSBtYXBNbmdNZW51SXRlbShpdGVtOiBNbmdNZW51SXRlbSk6IE1lbnVJdGVtIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICB1cmw6IGl0ZW0uaHJlZixcbiAgICAgICAgICAgIGJhZGdlU3R5bGVDbGFzczogaXRlbS5iYWRnZUNsYXNzTmFtZSxcbiAgICAgICAgICAgIHN0eWxlQ2xhc3M6IGl0ZW0uY2xhc3NOYW1lXG4gICAgICAgIH0gYXMgTWVudUl0ZW07XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImxheW91dC1icmVhZGNydW1iIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIHJlbGF0aXZlIGgtM3JlbVwiPlxuICAgIDxuYXY+XG4gICAgICAgIDxvbCBjbGFzcz1cInJlbGF0aXZlIHotMlwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1pdGVtIGxldC1sYXN0PVwibGFzdFwiIFtuZ0Zvck9mXT1cIm1hcHBlZEJyZWFkY3J1bWJzJCB8IGFzeW5jXCI+XG4gICAgICAgICAgICAgICAgPGxpPnt7IGl0ZW0ubGFiZWwhIHwgdHJhbnNsYXRlIH19PC9saT5cbiAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCIhbGFzdFwiIGNsYXNzPVwibGF5b3V0LWJyZWFkY3J1bWItY2hldnJvblwiPi88L2xpPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9vbD5cbiAgICA8L25hdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,19 @@
1
+ import { NgOptimizedImage } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
3
+ import { TranslateModule } from '@ngx-translate/core';
4
+ import { MngCommonsService } from '../../services';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@ngx-translate/core";
7
+ export class MngFooterComponent {
8
+ constructor() {
9
+ this.mngCommons = inject(MngCommonsService);
10
+ this.currentYear = new Date().getFullYear();
11
+ }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: MngFooterComponent, isStandalone: true, selector: "mng-footer-v2", ngImport: i0, template: "<div class=\"layout-footer\">\n <div class=\"footer-logo-container\">\n <img id=\"footer-logo\" [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoDark : mngCommons.appLogoLight\" alt=\"atlantis-layout\" />\n <span class=\"app-name\">{{ mngCommons.appName | translate }}</span>\n </div>\n <span class=\"copyright\">&#169; {{ mngCommons.appOwner | translate }} - {{ currentYear }}</span>\n</div>\n", dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
14
+ }
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngFooterComponent, decorators: [{
16
+ type: Component,
17
+ args: [{ standalone: true, selector: 'mng-footer-v2', imports: [TranslateModule, NgOptimizedImage], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-footer\">\n <div class=\"footer-logo-container\">\n <img id=\"footer-logo\" [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoDark : mngCommons.appLogoLight\" alt=\"atlantis-layout\" />\n <span class=\"app-name\">{{ mngCommons.appName | translate }}</span>\n </div>\n <span class=\"copyright\">&#169; {{ mngCommons.appOwner | translate }} - {{ currentYear }}</span>\n</div>\n" }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9sYXlvdXRWMi9mb290ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2xheW91dFYyL2Zvb3Rlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6RSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFcEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7OztBQVNqRCxNQUFNLE9BQU8sa0JBQWtCO0lBUC9CO1FBUVcsZUFBVSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRXZDLGdCQUFXLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztLQUNqRDs4R0FKWSxrQkFBa0I7a0dBQWxCLGtCQUFrQix5RUNkL0IsNGFBT0EsMkNESWMsZUFBZTs7MkZBR2hCLGtCQUFrQjtrQkFQOUIsU0FBUztpQ0FDTSxJQUFJLFlBQ04sZUFBZSxXQUVoQixDQUFDLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQyxtQkFDM0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdPcHRpbWl6ZWRJbWFnZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQge01uZ0NvbW1vbnNTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdtbmctZm9vdGVyLXYyJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2Zvb3Rlci5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW1RyYW5zbGF0ZU1vZHVsZSwgTmdPcHRpbWl6ZWRJbWFnZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTW5nRm9vdGVyQ29tcG9uZW50IHtcbiAgICBwdWJsaWMgbW5nQ29tbW9ucyA9IGluamVjdChNbmdDb21tb25zU2VydmljZSk7XG5cbiAgICBwdWJsaWMgY3VycmVudFllYXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XG59XG4iLCI8ZGl2IGNsYXNzPVwibGF5b3V0LWZvb3RlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb290ZXItbG9nby1jb250YWluZXJcIj5cbiAgICAgICAgPGltZyBpZD1cImZvb3Rlci1sb2dvXCIgW3NyY109XCJtbmdDb21tb25zLmNvbG9yU2NoZW1lSXNMaWdodCA/IG1uZ0NvbW1vbnMuYXBwTG9nb0RhcmsgOiBtbmdDb21tb25zLmFwcExvZ29MaWdodFwiIGFsdD1cImF0bGFudGlzLWxheW91dFwiIC8+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYXBwLW5hbWVcIj57eyBtbmdDb21tb25zLmFwcE5hbWUgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPHNwYW4gY2xhc3M9XCJjb3B5cmlnaHRcIj4mIzE2OTsge3sgbW5nQ29tbW9ucy5hcHBPd25lciB8IHRyYW5zbGF0ZSB9fSAtIHt7IGN1cnJlbnRZZWFyIH19PC9zcGFuPlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,8 @@
1
+ export * from './main-layout.component';
2
+ export * from './breadcrumb.component';
3
+ export * from './menu.component';
4
+ export * from './menu-item.component';
5
+ export * from './sidebar.component';
6
+ export * from './topbar.component';
7
+ export * from './topbar-user.component';
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbGF5b3V0VjIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbWFpbi1sYXlvdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYnJlYWRjcnVtYi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9tZW51LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL21lbnUtaXRlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zaWRlYmFyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3RvcGJhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90b3BiYXItdXNlci5jb21wb25lbnQnO1xuIl19
@@ -0,0 +1,89 @@
1
+ import { AsyncPipe, NgClass, NgIf } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, ElementRef, Renderer2, ViewChild, inject } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import { RouterModule } from '@angular/router';
5
+ import { MngComponentDirective } from '../../directives';
6
+ import { MNG_MODULE_CONFIG_IT } from '../../services/tokens';
7
+ import { MngBreadcrumbComponent } from './breadcrumb.component';
8
+ import { MngFooterComponent } from './footer.component';
9
+ import { MenuService, MngMainLayoutComponentV2Service } from './services';
10
+ import { MngTopbarComponent } from './topbar.component';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@angular/router";
13
+ export class MngMainLayoutV2Component {
14
+ constructor() {
15
+ this.config = inject(MNG_MODULE_CONFIG_IT);
16
+ this.layoutService = inject(MngMainLayoutComponentV2Service);
17
+ this.menuService = inject(MenuService);
18
+ this.renderer = inject(Renderer2);
19
+ this.topbarComponent = MngTopbarComponent;
20
+ this.breadcrumbsComponent = MngBreadcrumbComponent;
21
+ this.footerComponent = MngFooterComponent;
22
+ this.layoutService.overlayOpen$.pipe(takeUntilDestroyed()).subscribe(() => {
23
+ if (!this.menuOutsideClickListener) {
24
+ this.menuOutsideClickListener = this.renderer.listen('document', 'click', event => {
25
+ const isOutsideClicked = !(this.appTopbar?.nativeElement.isSameNode(event.target) || this.appTopbar?.nativeElement.contains(event.target));
26
+ if (isOutsideClicked) {
27
+ this.hideMenu();
28
+ }
29
+ });
30
+ }
31
+ if (this.layoutService.state.staticMenuMobileActive$.value) {
32
+ this.blockBodyScroll();
33
+ }
34
+ });
35
+ }
36
+ ngOnInit() {
37
+ if (this.config.components?.layout?.topbar) {
38
+ this.topbarComponent = this.config.components.layout.topbar;
39
+ }
40
+ if (this.config.components?.layout?.breadcrumb) {
41
+ this.breadcrumbsComponent = this.config.components.layout.breadcrumb;
42
+ }
43
+ if (this.config.components?.layout?.footer) {
44
+ this.footerComponent = this.config.components.layout.footer;
45
+ }
46
+ }
47
+ blockBodyScroll() {
48
+ if (document.body.classList) {
49
+ document.body.classList.add('blocked-scroll');
50
+ }
51
+ else {
52
+ document.body.className += ' blocked-scroll';
53
+ }
54
+ }
55
+ unblockBodyScroll() {
56
+ if (document.body.classList) {
57
+ document.body.classList.remove('blocked-scroll');
58
+ }
59
+ else {
60
+ document.body.className = document.body.className.replace(new RegExp('(^|\\b)' + 'blocked-scroll'.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');
61
+ }
62
+ }
63
+ hideMenu() {
64
+ this.layoutService.state.overlayMenuActive$.next(false);
65
+ this.layoutService.state.staticMenuMobileActive$.next(false);
66
+ this.layoutService.state.menuHoverActive$.next(false);
67
+ this.menuService.reset();
68
+ if (this.menuOutsideClickListener) {
69
+ this.menuOutsideClickListener();
70
+ this.menuOutsideClickListener = null;
71
+ }
72
+ this.unblockBodyScroll();
73
+ }
74
+ ngOnDestroy() {
75
+ if (this.menuOutsideClickListener) {
76
+ this.menuOutsideClickListener();
77
+ }
78
+ }
79
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngMainLayoutV2Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
80
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: MngMainLayoutV2Component, isStandalone: true, selector: "mng-main-layout-v2", providers: [MngMainLayoutComponentV2Service], viewQueries: [{ propertyName: "appTopbar", first: true, predicate: ["topbarCmp"], descendants: true }], ngImport: i0, template: "<div\n class=\"layout-container\"\n [ngClass]=\"{\n 'layout-light': config.app?.colorScheme === 'light',\n 'layout-dark': config.app?.colorScheme === 'dark',\n 'layout-overlay': config.menuV2?.mode === 'overlay',\n 'layout-static': config.menuV2?.mode === 'static',\n 'layout-reveal': config.menuV2?.mode === 'reveal',\n 'layout-drawer': config.menuV2?.mode === 'drawer',\n 'layout-static-inactive': (layoutService.state.staticMenuDesktopInactive$ | async) && config.menuV2?.mode === 'static',\n 'layout-overlay-active': layoutService.state.overlayMenuActive$ | async,\n 'layout-mobile-active': layoutService.state.staticMenuMobileActive$ | async,\n 'p-ripple-disabled': !config.menuV2?.ripple,\n 'layout-sidebar-active': layoutService.state.sidebarActive$ | async,\n 'layout-sidebar-anchored': layoutService.state.anchored$ | async\n }\">\n <div class=\"layout-content-wrapper\">\n <div #topbarCmp class=\"layout-topbar-wrapper\" [mngComponent]=\"topbarComponent\" [attachToHost]=\"true\"></div>\n <div class=\"content-breadcrumb\">\n <div [mngComponent]=\"breadcrumbsComponent\" [attachToHost]=\"true\"></div>\n </div>\n <div class=\"layout-content\">\n <router-outlet></router-outlet>\n </div>\n <div class=\"layout-mask\"></div>\n <div [mngComponent]=\"footerComponent\" [attachToHost]=\"true\"></div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: MngComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "inputs", "attachToHost"], outputs: ["instanceCreated"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
81
+ }
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngMainLayoutV2Component, decorators: [{
83
+ type: Component,
84
+ args: [{ standalone: true, selector: 'mng-main-layout-v2', imports: [NgClass, RouterModule, MngTopbarComponent, MngBreadcrumbComponent, MngComponentDirective, NgIf, AsyncPipe], providers: [MngMainLayoutComponentV2Service], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"layout-container\"\n [ngClass]=\"{\n 'layout-light': config.app?.colorScheme === 'light',\n 'layout-dark': config.app?.colorScheme === 'dark',\n 'layout-overlay': config.menuV2?.mode === 'overlay',\n 'layout-static': config.menuV2?.mode === 'static',\n 'layout-reveal': config.menuV2?.mode === 'reveal',\n 'layout-drawer': config.menuV2?.mode === 'drawer',\n 'layout-static-inactive': (layoutService.state.staticMenuDesktopInactive$ | async) && config.menuV2?.mode === 'static',\n 'layout-overlay-active': layoutService.state.overlayMenuActive$ | async,\n 'layout-mobile-active': layoutService.state.staticMenuMobileActive$ | async,\n 'p-ripple-disabled': !config.menuV2?.ripple,\n 'layout-sidebar-active': layoutService.state.sidebarActive$ | async,\n 'layout-sidebar-anchored': layoutService.state.anchored$ | async\n }\">\n <div class=\"layout-content-wrapper\">\n <div #topbarCmp class=\"layout-topbar-wrapper\" [mngComponent]=\"topbarComponent\" [attachToHost]=\"true\"></div>\n <div class=\"content-breadcrumb\">\n <div [mngComponent]=\"breadcrumbsComponent\" [attachToHost]=\"true\"></div>\n </div>\n <div class=\"layout-content\">\n <router-outlet></router-outlet>\n </div>\n <div class=\"layout-mask\"></div>\n <div [mngComponent]=\"footerComponent\" [attachToHost]=\"true\"></div>\n </div>\n</div>\n" }]
85
+ }], ctorParameters: function () { return []; }, propDecorators: { appTopbar: [{
86
+ type: ViewChild,
87
+ args: ['topbarCmp']
88
+ }] } });
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2xheW91dFYyL21haW4tbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9sYXlvdXRWMi9tYWluLWxheW91dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBcUIsU0FBUyxFQUFRLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDcEksT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRXZELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxXQUFXLEVBQUUsK0JBQStCLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDeEUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7OztBQVV0RCxNQUFNLE9BQU8sd0JBQXdCO0lBY2pDO1FBYmdCLFdBQU0sR0FBb0IsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDdkQsa0JBQWEsR0FBRyxNQUFNLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUN2RCxnQkFBVyxHQUFHLE1B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LENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFO1lBQy9CLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7U0FDeEM7UUFDRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFO1lBQy9CLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1NBQ25DO0lBQ0wsQ0FBQzs4R0ExRVEsd0JBQXdCO2tHQUF4Qix3QkFBd0IsaUVBSHRCLENBQUMsK0JBQStCLENBQUMsa0lDbEJoRCx3OUNBNEJBLDRDRFpjLE9BQU8sbUZBQUUsWUFBWSx5TUFBOEMscUJBQXFCLHdJQUFRLFNBQVM7OzJGQUsxRyx3QkFBd0I7a0JBUnBDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLG9CQUFvQixXQUNyQixDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxhQUV6RyxDQUFDLCtCQUErQixDQUFDLG1CQUMzQix1QkFBdUIsQ0FBQyxNQUFNOzBFQVF2QixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FzeW5jUGlwZSwgTmdDbGFzcywgTmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBPbkluaXQsIFJlbmRlcmVyMiwgVHlwZSwgVmlld0NoaWxkLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7Um91dGVyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge01uZ0NvbXBvbmVudERpcmVjdGl2ZX0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQge01uZ01vZHVsZUNvbmZpZ30gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7TU5HX01PRFVMRV9DT05GSUdfSVR9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Rva2Vucyc7XG5pbXBvcnQge01uZ0JyZWFkY3J1bWJDb21wb25lbnR9IGZyb20gJy4vYnJlYWRjcnVtYi5jb21wb25lbnQnO1xuaW1wb3J0IHtNbmdGb290ZXJDb21wb25lbnR9IGZyb20gJy4vZm9vdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge01lbnVTZXJ2aWNlLCBNbmdNYWluTGF5b3V0Q29tcG9uZW50VjJTZXJ2aWNlfSBmcm9tICcuL3NlcnZpY2VzJztcbmltcG9ydCB7TW5nVG9wYmFyQ29tcG9uZW50fSBmcm9tICcuL3RvcGJhci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLW1haW4tbGF5b3V0LXYyJyxcbiAgICBpbXBvcnRzOiBbTmdDbGFzcywgUm91dGVyTW9kdWxlLCBNbmdUb3BiYXJDb21wb25lbnQsIE1uZ0JyZWFkY3J1bWJDb21wb25lbnQsIE1uZ0NvbXBvbmVudERpcmVjdGl2ZSwgTmdJZiwgQXN5bmNQaXBlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWFpbi1sYXlvdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW01uZ01haW5MYXlvdXRDb21wb25lbnRWMlNlcnZpY2VdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1uZ01haW5MYXlvdXRWMkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29uZmlnOiBNbmdNb2R1bGVDb25maWcgPSBpbmplY3QoTU5HX01PRFVMRV9DT05GSUdfSVQpO1xuICAgIHB1YmxpYyByZWFkb25seSBsYXlvdXRTZXJ2aWNlID0gaW5qZWN0KE1uZ01haW5MYXlvdXRDb21wb25lbnRWMlNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVudVNlcnZpY2UgPSBpbmplY3QoTWVudVNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuICAgIEBWaWV3Q2hpbGQoJ3RvcGJhckNtcCcpIGFwcFRvcGJhcj86IEVsZW1lbnRSZWY7XG5cbiAgICBwcml2YXRlIG1lbnVPdXRzaWRlQ2xpY2tMaXN0ZW5lcjogYW55O1xuXG4gICAgcHVibGljIHRvcGJhckNvbXBvbmVudDogVHlwZTxhbnk+ID0gTW5nVG9wYmFyQ29tcG9uZW50O1xuICAgIHB1YmxpYyBicmVhZGNydW1ic0NvbXBvbmVudDogVHlwZTxhbnk+ID0gTW5nQnJlYWRjcnVtYkNvbXBvbmVudDtcbiAgICBwdWJsaWMgZm9vdGVyQ29tcG9uZW50OiBUeXBlPGFueT4gPSBNbmdGb290ZXJDb21wb25lbnQ7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLm92ZXJsYXlPcGVuJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLm1lbnVPdXRzaWRlQ2xpY2tMaXN0ZW5lcikge1xuICAgICAgICAgICAgICAgIHRoaXMubWVudU91dHNpZGVDbGlja0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2NsaWNrJywgZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc091dHNpZGVDbGlja2VkID0gISh0aGlzLmFwcFRvcGJhcj8ubmF0aXZlRWxlbWVudC5pc1NhbWVOb2RlKGV2ZW50LnRhcmdldCkgfHwgdGhpcy5hcHBUb3BiYXI/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc091dHNpZGVDbGlja2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVNZW51KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJsb2NrQm9keVNjcm9sbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmNvbXBvbmVudHM/LmxheW91dD8udG9wYmFyKSB7XG4gICAgICAgICAgICB0aGlzLnRvcGJhckNvbXBvbmVudCA9IHRoaXMuY29uZmlnLmNvbXBvbmVudHMubGF5b3V0LnRvcGJhcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb25maWcuY29tcG9uZW50cz8ubGF5b3V0Py5icmVhZGNydW1iKSB7XG4gICAgICAgICAgICB0aGlzLmJyZWFkY3J1bWJzQ29tcG9uZW50ID0gdGhpcy5jb25maWcuY29tcG9uZW50cy5sYXlvdXQuYnJlYWRjcnVtYjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb25maWcuY29tcG9uZW50cz8ubGF5b3V0Py5mb290ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZm9vdGVyQ29tcG9uZW50ID0gdGhpcy5jb25maWcuY29tcG9uZW50cy5sYXlvdXQuZm9vdGVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmxvY2tCb2R5U2Nyb2xsKCk6IHZvaWQge1xuICAgICAgICBpZiAoZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnYmxvY2tlZC1zY3JvbGwnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lICs9ICcgYmxvY2tlZC1zY3JvbGwnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5ibG9ja0JvZHlTY3JvbGwoKTogdm9pZCB7XG4gICAgICAgIGlmIChkb2N1bWVudC5ib2R5LmNsYXNzTGlzdCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdibG9ja2VkLXNjcm9sbCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZS5yZXBsYWNlKG5ldyBSZWdFeHAoJyhefFxcXFxiKScgKyAnYmxvY2tlZC1zY3JvbGwnLnNwbGl0KCcgJykuam9pbignfCcpICsgJyhcXFxcYnwkKScsICdnaScpLCAnICcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGlkZU1lbnUoKSB7XG4gICAgICAgIHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5vdmVybGF5TWVudUFjdGl2ZSQubmV4dChmYWxzZSk7XG4gICAgICAgIHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5zdGF0aWNNZW51TW9iaWxlQWN0aXZlJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLm1lbnVIb3ZlckFjdGl2ZSQubmV4dChmYWxzZSk7XG4gICAgICAgIHRoaXMubWVudVNlcnZpY2UucmVzZXQoKTtcbiAgICAgICAgaWYgKHRoaXMubWVudU91dHNpZGVDbGlja0xpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy5tZW51T3V0c2lkZUNsaWNrTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudW5ibG9ja0JvZHlTY3JvbGwoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudU91dHNpZGVDbGlja0xpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwibGF5b3V0LWNvbnRhaW5lclwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnbGF5b3V0LWxpZ2h0JzogY29uZmlnLmFwcD8uY29sb3JTY2hlbWUgPT09ICdsaWdodCcsXG4gICAgICAgICdsYXlvdXQtZGFyayc6IGNvbmZpZy5hcHA/LmNvbG9yU2NoZW1lID09PSAnZGFyaycsXG4gICAgICAgICdsYXlvdXQtb3ZlcmxheSc6IGNvbmZpZy5tZW51VjI/Lm1vZGUgPT09ICdvdmVybGF5JyxcbiAgICAgICAgJ2xheW91dC1zdGF0aWMnOiBjb25maWcubWVudVYyPy5tb2RlID09PSAnc3RhdGljJyxcbiAgICAgICAgJ2xheW91dC1yZXZlYWwnOiBjb25maWcubWVudVYyPy5tb2RlID09PSAncmV2ZWFsJyxcbiAgICAgICAgJ2xheW91dC1kcmF3ZXInOiBjb25maWcubWVudVYyPy5tb2RlID09PSAnZHJhd2VyJyxcbiAgICAgICAgJ2xheW91dC1zdGF0aWMtaW5hY3RpdmUnOiAobGF5b3V0U2VydmljZS5zdGF0ZS5zdGF0aWNNZW51RGVza3RvcEluYWN0aXZlJCB8IGFzeW5jKSAmJiBjb25maWcubWVudVYyPy5tb2RlID09PSAnc3RhdGljJyxcbiAgICAgICAgJ2xheW91dC1vdmVybGF5LWFjdGl2ZSc6IGxheW91dFNlcnZpY2Uuc3RhdGUub3ZlcmxheU1lbnVBY3RpdmUkIHwgYXN5bmMsXG4gICAgICAgICdsYXlvdXQtbW9iaWxlLWFjdGl2ZSc6IGxheW91dFNlcnZpY2Uuc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSQgfCBhc3luYyxcbiAgICAgICAgJ3AtcmlwcGxlLWRpc2FibGVkJzogIWNvbmZpZy5tZW51VjI/LnJpcHBsZSxcbiAgICAgICAgJ2xheW91dC1zaWRlYmFyLWFjdGl2ZSc6IGxheW91dFNlcnZpY2Uuc3RhdGUuc2lkZWJhckFjdGl2ZSQgfCBhc3luYyxcbiAgICAgICAgJ2xheW91dC1zaWRlYmFyLWFuY2hvcmVkJzogbGF5b3V0U2VydmljZS5zdGF0ZS5hbmNob3JlZCQgfCBhc3luY1xuICAgIH1cIj5cbiAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LWNvbnRlbnQtd3JhcHBlclwiPlxuICAgICAgICA8ZGl2ICN0b3BiYXJDbXAgY2xhc3M9XCJsYXlvdXQtdG9wYmFyLXdyYXBwZXJcIiBbbW5nQ29tcG9uZW50XT1cInRvcGJhckNvbXBvbmVudFwiIFthdHRhY2hUb0hvc3RdPVwidHJ1ZVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1icmVhZGNydW1iXCI+XG4gICAgICAgICAgICA8ZGl2IFttbmdDb21wb25lbnRdPVwiYnJlYWRjcnVtYnNDb21wb25lbnRcIiBbYXR0YWNoVG9Ib3N0XT1cInRydWVcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29udGVudFwiPlxuICAgICAgICAgICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1tYXNrXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgW21uZ0NvbXBvbmVudF09XCJmb290ZXJDb21wb25lbnRcIiBbYXR0YWNoVG9Ib3N0XT1cInRydWVcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19