@c8y/ngx-components 1021.13.3 → 1021.22.0

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 (432) hide show
  1. package/alarms/alarm-details.component.d.ts +1 -3
  2. package/alarms/alarm-details.component.d.ts.map +1 -1
  3. package/alarms/alarm-info.component.d.ts +9 -14
  4. package/alarms/alarm-info.component.d.ts.map +1 -1
  5. package/alarms/alarms-list.component.d.ts +2 -17
  6. package/alarms/alarms-list.component.d.ts.map +1 -1
  7. package/alarms/alarms-view.service.d.ts +1 -0
  8. package/alarms/alarms-view.service.d.ts.map +1 -1
  9. package/alarms/alarms.component.d.ts.map +1 -1
  10. package/alarms/alarms.helper.d.ts +5 -0
  11. package/alarms/alarms.helper.d.ts.map +1 -0
  12. package/alarms/alarms.model.d.ts +30 -0
  13. package/alarms/alarms.model.d.ts.map +1 -1
  14. package/alarms/alarms.module.d.ts.map +1 -1
  15. package/alarms/cockpit/index.d.ts.map +1 -1
  16. package/alarms/devicemanagement/index.d.ts.map +1 -1
  17. package/alarms/index.d.ts +5 -4
  18. package/alarms/index.d.ts.map +1 -1
  19. package/context-dashboard/context-dashboard.model.d.ts +1 -0
  20. package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
  21. package/context-dashboard/context-dashboard.service.d.ts +7 -5
  22. package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
  23. package/context-dashboard/dashboard-detail.component.d.ts +4 -7
  24. package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
  25. package/context-dashboard/dashboard-detail.service.d.ts +4 -4
  26. package/context-dashboard/dashboard-detail.service.d.ts.map +1 -1
  27. package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts +2 -2
  28. package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts.map +1 -1
  29. package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts +19 -6
  30. package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts.map +1 -1
  31. package/core/action-bar/action-bar-item.component.d.ts +1 -1
  32. package/core/action-bar/action-bar-item.component.d.ts.map +1 -1
  33. package/core/action-bar/action-bar.module.d.ts +6 -6
  34. package/core/action-bar/action-bar.module.d.ts.map +1 -1
  35. package/core/bootstrap/bootstrap.component.d.ts +3 -1
  36. package/core/bootstrap/bootstrap.component.d.ts.map +1 -1
  37. package/core/common/aggregation/aggregation.model.d.ts +39 -0
  38. package/core/common/aggregation/aggregation.model.d.ts.map +1 -0
  39. package/core/common/aggregation/aggregation.service.d.ts +17 -0
  40. package/core/common/aggregation/aggregation.service.d.ts.map +1 -0
  41. package/core/common/index.d.ts +4 -0
  42. package/core/common/index.d.ts.map +1 -1
  43. package/core/common/inter-app.service.d.ts +48 -0
  44. package/core/common/inter-app.service.d.ts.map +1 -0
  45. package/core/common/interval-based-reload.abstract.d.ts +120 -0
  46. package/core/common/interval-based-reload.abstract.d.ts.map +1 -0
  47. package/core/dashboard/dashboard.module.d.ts +24 -18
  48. package/core/dashboard/dashboard.module.d.ts.map +1 -1
  49. package/core/dashboard/index.d.ts +3 -0
  50. package/core/dashboard/index.d.ts.map +1 -1
  51. package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts +31 -0
  52. package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts.map +1 -0
  53. package/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.d.ts +17 -0
  54. package/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.d.ts.map +1 -0
  55. package/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.d.ts +4 -0
  56. package/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.d.ts.map +1 -0
  57. package/core/dashboard/widget-auto-refresh-context/index.d.ts +8 -0
  58. package/core/dashboard/widget-auto-refresh-context/index.d.ts.map +1 -0
  59. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.d.ts +7 -0
  60. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.d.ts.map +1 -0
  61. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts +29 -0
  62. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts.map +1 -0
  63. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.d.ts +15 -0
  64. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.d.ts.map +1 -0
  65. package/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.d.ts +169 -0
  66. package/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.d.ts.map +1 -0
  67. package/core/dashboard/widgets-dashboard.component.d.ts +6 -3
  68. package/core/dashboard/widgets-dashboard.component.d.ts.map +1 -1
  69. package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts +2 -2
  70. package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts.map +1 -1
  71. package/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.d.ts +1 -1
  72. package/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.d.ts.map +1 -1
  73. package/core/dashboard/wiget-time-context/widget-time-context-query.service.d.ts.map +1 -1
  74. package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts +11 -8
  75. package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts.map +1 -1
  76. package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts +6 -12
  77. package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts.map +1 -1
  78. package/core/header/header.module.d.ts +18 -18
  79. package/core/header/header.module.d.ts.map +1 -1
  80. package/core/header/title/title.component.d.ts +1 -1
  81. package/core/header/title/title.component.d.ts.map +1 -1
  82. package/core/i18n/cached-locale-dictionary.service.d.ts +5 -1
  83. package/core/i18n/cached-locale-dictionary.service.d.ts.map +1 -1
  84. package/core/i18n/i18n.module.d.ts +0 -4
  85. package/core/i18n/i18n.module.d.ts.map +1 -1
  86. package/core/i18n/index.d.ts +2 -1
  87. package/core/i18n/index.d.ts.map +1 -1
  88. package/core/i18n/translation-loader.service.d.ts +50 -0
  89. package/core/i18n/translation-loader.service.d.ts.map +1 -0
  90. package/core/i18n/translation-utils.d.ts +14 -0
  91. package/core/i18n/translation-utils.d.ts.map +1 -0
  92. package/core/plugins/plugins-resolve.service.d.ts +7 -10
  93. package/core/plugins/plugins-resolve.service.d.ts.map +1 -1
  94. package/core/router/context-route.component.d.ts +8 -3
  95. package/core/router/context-route.component.d.ts.map +1 -1
  96. package/core/router/context-route.service.d.ts +29 -3
  97. package/core/router/context-route.service.d.ts.map +1 -1
  98. package/core/router/router-tabs.resolver.d.ts +4 -1
  99. package/core/router/router-tabs.resolver.d.ts.map +1 -1
  100. package/core/router/router.model.d.ts +40 -3
  101. package/core/router/router.model.d.ts.map +1 -1
  102. package/core/router/router.module.d.ts +2 -1
  103. package/core/router/router.module.d.ts.map +1 -1
  104. package/core/router/router.service.d.ts +5 -4
  105. package/core/router/router.service.d.ts.map +1 -1
  106. package/core/router/scoped-context-route.service.d.ts +57 -0
  107. package/core/router/scoped-context-route.service.d.ts.map +1 -0
  108. package/core/router/view-context.service.d.ts +8 -18
  109. package/core/router/view-context.service.d.ts.map +1 -1
  110. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts +2 -1
  111. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts.map +1 -1
  112. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts +11 -2
  113. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts.map +1 -1
  114. package/datapoint-selector/datapoint-selection.model.d.ts +6 -0
  115. package/datapoint-selector/datapoint-selection.model.d.ts.map +1 -1
  116. package/datapoints-export-selector/c8y-ngx-components-datapoints-export-selector.d.ts.map +1 -0
  117. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts +117 -0
  118. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -0
  119. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.d.ts +90 -0
  120. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.d.ts.map +1 -0
  121. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts +160 -0
  122. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts.map +1 -0
  123. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts +89 -0
  124. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts.map +1 -0
  125. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component.d.ts +11 -0
  126. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component.d.ts.map +1 -0
  127. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.d.ts +27 -0
  128. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.d.ts.map +1 -0
  129. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component.d.ts +12 -0
  130. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component.d.ts.map +1 -0
  131. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.d.ts +22 -0
  132. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.d.ts.map +1 -0
  133. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.d.ts +3 -0
  134. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.d.ts.map +1 -0
  135. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.d.ts +9 -0
  136. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.d.ts.map +1 -0
  137. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.d.ts +56 -0
  138. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.d.ts.map +1 -0
  139. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts +21 -0
  140. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts.map +1 -0
  141. package/datapoints-export-selector/datapoints-export-selector.component.d.ts +14 -0
  142. package/datapoints-export-selector/datapoints-export-selector.component.d.ts.map +1 -0
  143. package/datapoints-export-selector/datapoints-export-selector.model.d.ts +232 -0
  144. package/datapoints-export-selector/datapoints-export-selector.model.d.ts.map +1 -0
  145. package/datapoints-export-selector/index.d.ts +15 -0
  146. package/datapoints-export-selector/index.d.ts.map +1 -0
  147. package/device-list/device-list.module.d.ts +4 -2
  148. package/device-list/device-list.module.d.ts.map +1 -1
  149. package/esm2022/alarms/alarm-details.component.mjs +7 -9
  150. package/esm2022/alarms/alarm-info.component.mjs +23 -33
  151. package/esm2022/alarms/alarms-list.component.mjs +5 -16
  152. package/esm2022/alarms/alarms-view.service.mjs +3 -2
  153. package/esm2022/alarms/alarms.component.mjs +10 -3
  154. package/esm2022/alarms/alarms.helper.mjs +32 -0
  155. package/esm2022/alarms/alarms.model.mjs +1 -1
  156. package/esm2022/alarms/alarms.module.mjs +5 -5
  157. package/esm2022/alarms/cockpit/index.mjs +13 -17
  158. package/esm2022/alarms/devicemanagement/index.mjs +15 -18
  159. package/esm2022/alarms/index.mjs +6 -5
  160. package/esm2022/context-dashboard/context-dashboard.component.mjs +4 -4
  161. package/esm2022/context-dashboard/context-dashboard.model.mjs +1 -1
  162. package/esm2022/context-dashboard/context-dashboard.service.mjs +47 -21
  163. package/esm2022/context-dashboard/dashboard-detail.component.mjs +8 -16
  164. package/esm2022/context-dashboard/dashboard-detail.service.mjs +13 -6
  165. package/esm2022/context-dashboard/dashboard-settings/dashboard-general-settings.component.mjs +3 -3
  166. package/esm2022/context-dashboard/dashboard-settings/typed-dashboard-settings.component.mjs +32 -11
  167. package/esm2022/core/action-bar/action-bar-item.component.mjs +3 -3
  168. package/esm2022/core/action-bar/action-bar.module.mjs +16 -5
  169. package/esm2022/core/bootstrap/bootstrap.component.mjs +21 -16
  170. package/esm2022/core/common/aggregation/aggregation.model.mjs +46 -0
  171. package/esm2022/core/common/aggregation/aggregation.service.mjs +34 -0
  172. package/esm2022/core/common/humanize-app-name.model.mjs +2 -2
  173. package/esm2022/core/common/humanize-app-name.pipe.mjs +2 -2
  174. package/esm2022/core/common/index.mjs +5 -1
  175. package/esm2022/core/common/inter-app.service.mjs +76 -0
  176. package/esm2022/core/common/interval-based-reload.abstract.mjs +110 -0
  177. package/esm2022/core/countdown-interval/countdown-interval.component.mjs +3 -3
  178. package/esm2022/core/dashboard/dashboard-child.component.mjs +6 -5
  179. package/esm2022/core/dashboard/dashboard.module.mjs +18 -1
  180. package/esm2022/core/dashboard/index.mjs +4 -1
  181. package/esm2022/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.mjs +101 -0
  182. package/esm2022/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.mjs +50 -0
  183. package/esm2022/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.mjs +7 -0
  184. package/esm2022/core/dashboard/widget-auto-refresh-context/index.mjs +8 -0
  185. package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.mjs +18 -0
  186. package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.mjs +127 -0
  187. package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.mjs +5 -0
  188. package/esm2022/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.mjs +233 -0
  189. package/esm2022/core/dashboard/widgets-dashboard.component.mjs +35 -30
  190. package/esm2022/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.mjs +4 -4
  191. package/esm2022/core/dashboard/wiget-time-context/realtime-control/realtime-control.component.mjs +2 -2
  192. package/esm2022/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.mjs +5 -5
  193. package/esm2022/core/dashboard/wiget-time-context/widget-time-context-query.service.mjs +7 -4
  194. package/esm2022/core/dashboard/wiget-time-context/widget-time-context.component.mjs +37 -37
  195. package/esm2022/core/dashboard/wiget-time-context/widget-time-context.model.mjs +1 -28
  196. package/esm2022/core/date-time-picker/date-time-picker.component.mjs +3 -3
  197. package/esm2022/core/header/header.module.mjs +7 -5
  198. package/esm2022/core/header/title/title.component.mjs +3 -3
  199. package/esm2022/core/i18n/cached-locale-dictionary.service.mjs +1 -1
  200. package/esm2022/core/i18n/i18n.module.mjs +7 -14
  201. package/esm2022/core/i18n/index.mjs +3 -2
  202. package/esm2022/core/i18n/translate.parser.mjs +2 -2
  203. package/esm2022/core/i18n/translation-loader.service.mjs +132 -0
  204. package/esm2022/core/i18n/translation-utils.mjs +24 -0
  205. package/esm2022/core/plugins/plugins-resolve.service.mjs +12 -37
  206. package/esm2022/core/router/context-route.component.mjs +23 -13
  207. package/esm2022/core/router/context-route.service.mjs +37 -5
  208. package/esm2022/core/router/router-tabs.resolver.mjs +46 -15
  209. package/esm2022/core/router/router.model.mjs +6 -1
  210. package/esm2022/core/router/router.module.mjs +20 -13
  211. package/esm2022/core/router/router.service.mjs +24 -10
  212. package/esm2022/core/router/scoped-context-route.service.mjs +152 -0
  213. package/esm2022/core/router/view-context.service.mjs +59 -16
  214. package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.mjs +13 -6
  215. package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.mjs +22 -5
  216. package/esm2022/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.mjs +3 -3
  217. package/esm2022/datapoint-selector/datapoint-selection.model.mjs +1 -1
  218. package/esm2022/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.mjs +3 -3
  219. package/esm2022/datapoints-export-selector/c8y-ngx-components-datapoints-export-selector.mjs +5 -0
  220. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.mjs +407 -0
  221. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.mjs +207 -0
  222. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.mjs +467 -0
  223. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.mjs +187 -0
  224. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component.mjs +27 -0
  225. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.mjs +41 -0
  226. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component.mjs +23 -0
  227. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.mjs +42 -0
  228. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.mjs +120 -0
  229. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.mjs +282 -0
  230. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.mjs +76 -0
  231. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.mjs +46 -0
  232. package/esm2022/datapoints-export-selector/datapoints-export-selector.component.mjs +42 -0
  233. package/esm2022/datapoints-export-selector/datapoints-export-selector.model.mjs +43 -0
  234. package/esm2022/datapoints-export-selector/index.mjs +15 -0
  235. package/esm2022/device-list/add-smart-group.component.mjs +4 -3
  236. package/esm2022/device-list/device-list.module.mjs +22 -4
  237. package/esm2022/map/cluster-map.component.mjs +41 -13
  238. package/esm2022/map/map-status.component.mjs +6 -5
  239. package/esm2022/map/map.component.mjs +9 -5
  240. package/esm2022/map/map.model.mjs +1 -1
  241. package/esm2022/translation-editor/c8y-ngx-components-translation-editor.mjs +5 -0
  242. package/esm2022/translation-editor/data/c8y-ngx-components-translation-editor-data.mjs +5 -0
  243. package/esm2022/translation-editor/data/index.mjs +2 -0
  244. package/esm2022/translation-editor/data/translation-store.service.mjs +175 -0
  245. package/esm2022/translation-editor/index.mjs +10 -0
  246. package/esm2022/translation-editor/lazy/add-translation-modal/add-translation-modal.component.mjs +70 -0
  247. package/esm2022/translation-editor/lazy/c8y-ngx-components-translation-editor-lazy.mjs +5 -0
  248. package/esm2022/translation-editor/lazy/index.mjs +2 -0
  249. package/esm2022/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.mjs +53 -0
  250. package/esm2022/translation-editor/lazy/translation-editor/translation-editor.component.mjs +124 -0
  251. package/esm2022/translation-editor/translation-editor-naviagtor-factory.service.mjs +31 -0
  252. package/esm2022/widgets/cockpit/index.mjs +4 -2
  253. package/esm2022/widgets/cockpit-exports/index.mjs +8 -1
  254. package/esm2022/widgets/definitions/alarms/alarm-list/index.mjs +6 -2
  255. package/esm2022/widgets/definitions/alarms/all-critical-alarms/index.mjs +6 -2
  256. package/esm2022/widgets/definitions/alarms/recent-alarms/index.mjs +6 -2
  257. package/esm2022/widgets/definitions/datapoints-table/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +5 -0
  258. package/esm2022/widgets/definitions/datapoints-table/index.mjs +34 -0
  259. package/esm2022/widgets/definitions/index.mjs +2 -1
  260. package/esm2022/widgets/definitions/map/index.mjs +4 -2
  261. package/esm2022/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.mjs +29 -15
  262. package/esm2022/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.mjs +57 -25
  263. package/esm2022/widgets/implementations/alarms/alarm-list-widget.model.mjs +2 -1
  264. package/esm2022/widgets/implementations/alarms/alarm-widget-alarms-reload.component.mjs +19 -21
  265. package/esm2022/widgets/implementations/datapoints-table/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +5 -0
  266. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.mjs +383 -0
  267. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.mjs +124 -0
  268. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.mjs +191 -0
  269. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.mjs +36 -0
  270. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.mjs +45 -0
  271. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.mjs +116 -0
  272. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.mjs +116 -0
  273. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.mjs +43 -0
  274. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.mjs +282 -0
  275. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.mjs +430 -0
  276. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.mjs +75 -0
  277. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-widget.model.mjs +76 -0
  278. package/esm2022/widgets/implementations/datapoints-table/datapoints-table.service.mjs +52 -0
  279. package/esm2022/widgets/implementations/datapoints-table/date-range-picker.component.mjs +68 -0
  280. package/esm2022/widgets/implementations/datapoints-table/index.mjs +10 -0
  281. package/esm2022/widgets/implementations/map/map-widget-config.component.mjs +19 -11
  282. package/esm2022/widgets/implementations/map/map-widget.component.mjs +20 -2
  283. package/esm2022/widgets/implementations/map/map-widget.model.mjs +1 -1
  284. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +12 -16
  285. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs.map +1 -1
  286. package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs +14 -17
  287. package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs.map +1 -1
  288. package/fesm2022/c8y-ngx-components-alarms.mjs +203 -185
  289. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  290. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +135 -91
  291. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  292. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +37 -13
  293. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  294. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +1928 -0
  295. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -0
  296. package/fesm2022/c8y-ngx-components-device-list.mjs +24 -5
  297. package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
  298. package/fesm2022/c8y-ngx-components-map.mjs +52 -19
  299. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  300. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +181 -0
  301. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -0
  302. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +236 -0
  303. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -0
  304. package/fesm2022/c8y-ngx-components-translation-editor.mjs +46 -0
  305. package/fesm2022/c8y-ngx-components-translation-editor.mjs.map +1 -0
  306. package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs +7 -0
  307. package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs.map +1 -1
  308. package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs +3 -1
  309. package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
  310. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +5 -1
  311. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
  312. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs +5 -1
  313. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
  314. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs +5 -1
  315. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
  316. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +41 -0
  317. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -0
  318. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs +3 -1
  319. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
  320. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs +1 -0
  321. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
  322. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +101 -58
  323. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  324. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +1967 -0
  325. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -0
  326. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +37 -11
  327. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  328. package/fesm2022/c8y-ngx-components.mjs +5476 -4396
  329. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  330. package/locales/de.po +289 -18
  331. package/locales/en.po +12 -0
  332. package/locales/en_US.po +3 -0
  333. package/locales/es.po +253 -18
  334. package/locales/fr.po +253 -18
  335. package/locales/ja_JP.po +282 -18
  336. package/locales/locales.pot +257 -18
  337. package/locales/nl.po +253 -18
  338. package/locales/pl.po +253 -18
  339. package/locales/pt_BR.po +253 -18
  340. package/map/cluster-map.component.d.ts +8 -3
  341. package/map/cluster-map.component.d.ts.map +1 -1
  342. package/map/map-status.component.d.ts +0 -3
  343. package/map/map-status.component.d.ts.map +1 -1
  344. package/map/map.component.d.ts +4 -2
  345. package/map/map.component.d.ts.map +1 -1
  346. package/map/map.model.d.ts +2 -1
  347. package/map/map.model.d.ts.map +1 -1
  348. package/package.json +1 -1
  349. package/translation-editor/c8y-ngx-components-translation-editor.d.ts.map +1 -0
  350. package/translation-editor/data/c8y-ngx-components-translation-editor-data.d.ts.map +1 -0
  351. package/translation-editor/data/index.d.ts +2 -0
  352. package/translation-editor/data/index.d.ts.map +1 -0
  353. package/translation-editor/data/translation-store.service.d.ts +61 -0
  354. package/translation-editor/data/translation-store.service.d.ts.map +1 -0
  355. package/translation-editor/index.d.ts +2 -0
  356. package/translation-editor/index.d.ts.map +1 -0
  357. package/translation-editor/lazy/add-translation-modal/add-translation-modal.component.d.ts +30 -0
  358. package/translation-editor/lazy/add-translation-modal/add-translation-modal.component.d.ts.map +1 -0
  359. package/translation-editor/lazy/c8y-ngx-components-translation-editor-lazy.d.ts.map +1 -0
  360. package/translation-editor/lazy/index.d.ts +2 -0
  361. package/translation-editor/lazy/index.d.ts.map +1 -0
  362. package/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.d.ts +22 -0
  363. package/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.d.ts.map +1 -0
  364. package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts +34 -0
  365. package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts.map +1 -0
  366. package/translation-editor/translation-editor-naviagtor-factory.service.d.ts +11 -0
  367. package/translation-editor/translation-editor-naviagtor-factory.service.d.ts.map +1 -0
  368. package/widgets/cockpit/index.d.ts +13 -0
  369. package/widgets/cockpit/index.d.ts.map +1 -1
  370. package/widgets/cockpit-exports/index.d.ts +6 -0
  371. package/widgets/cockpit-exports/index.d.ts.map +1 -1
  372. package/widgets/definitions/alarms/alarm-list/index.d.ts +2 -0
  373. package/widgets/definitions/alarms/alarm-list/index.d.ts.map +1 -1
  374. package/widgets/definitions/alarms/all-critical-alarms/index.d.ts +2 -0
  375. package/widgets/definitions/alarms/all-critical-alarms/index.d.ts.map +1 -1
  376. package/widgets/definitions/alarms/recent-alarms/index.d.ts +2 -0
  377. package/widgets/definitions/alarms/recent-alarms/index.d.ts.map +1 -1
  378. package/widgets/definitions/datapoints-table/c8y-ngx-components-widgets-definitions-datapoints-table.d.ts.map +1 -0
  379. package/widgets/definitions/datapoints-table/index.d.ts +14 -0
  380. package/widgets/definitions/datapoints-table/index.d.ts.map +1 -0
  381. package/widgets/definitions/index.d.ts +1 -0
  382. package/widgets/definitions/index.d.ts.map +1 -1
  383. package/widgets/definitions/map/index.d.ts +2 -1
  384. package/widgets/definitions/map/index.d.ts.map +1 -1
  385. package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts +5 -9
  386. package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts.map +1 -1
  387. package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts +17 -10
  388. package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts.map +1 -1
  389. package/widgets/implementations/alarms/alarm-list-widget.model.d.ts +5 -1
  390. package/widgets/implementations/alarms/alarm-list-widget.model.d.ts.map +1 -1
  391. package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts +5 -11
  392. package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts.map +1 -1
  393. package/widgets/implementations/datapoints-table/c8y-ngx-components-widgets-implementations-datapoints-table.d.ts.map +1 -0
  394. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts +129 -0
  395. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts.map +1 -0
  396. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.d.ts +56 -0
  397. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.d.ts.map +1 -0
  398. package/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.d.ts +88 -0
  399. package/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.d.ts.map +1 -0
  400. package/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.d.ts +19 -0
  401. package/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.d.ts.map +1 -0
  402. package/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.d.ts +26 -0
  403. package/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.d.ts.map +1 -0
  404. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts +63 -0
  405. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts.map +1 -0
  406. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.d.ts +38 -0
  407. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.d.ts.map +1 -0
  408. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.d.ts +13 -0
  409. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.d.ts.map +1 -0
  410. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts +123 -0
  411. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -0
  412. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.d.ts +196 -0
  413. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.d.ts.map +1 -0
  414. package/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.d.ts +41 -0
  415. package/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.d.ts.map +1 -0
  416. package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts +175 -0
  417. package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts.map +1 -0
  418. package/widgets/implementations/datapoints-table/datapoints-table.service.d.ts +12 -0
  419. package/widgets/implementations/datapoints-table/datapoints-table.service.d.ts.map +1 -0
  420. package/widgets/implementations/datapoints-table/date-range-picker.component.d.ts +34 -0
  421. package/widgets/implementations/datapoints-table/date-range-picker.component.d.ts.map +1 -0
  422. package/widgets/implementations/datapoints-table/index.d.ts +10 -0
  423. package/widgets/implementations/datapoints-table/index.d.ts.map +1 -0
  424. package/widgets/implementations/map/map-widget-config.component.d.ts +4 -4
  425. package/widgets/implementations/map/map-widget-config.component.d.ts.map +1 -1
  426. package/widgets/implementations/map/map-widget.component.d.ts +8 -3
  427. package/widgets/implementations/map/map-widget.component.d.ts.map +1 -1
  428. package/widgets/implementations/map/map-widget.model.d.ts +4 -3
  429. package/widgets/implementations/map/map-widget.model.d.ts.map +1 -1
  430. package/core/i18n/translate.loader.d.ts +0 -31
  431. package/core/i18n/translate.loader.d.ts.map +0 -1
  432. package/esm2022/core/i18n/translate.loader.mjs +0 -71
@@ -187,7 +187,7 @@ export class DateTimePickerComponent {
187
187
  useExisting: forwardRef(() => DateTimePickerComponent),
188
188
  multi: true
189
189
  }
190
- ], viewQueries: [{ propertyName: "datepicker", first: true, predicate: BsDatepickerDirective, descendants: true }], ngImport: i0, template: "<div\n class=\"datetime-picker\"\n [ngSwitch]=\"dateType\"\n>\n <div\n class=\"d-contents\"\n *ngSwitchCase=\"'DateAndTime'\"\n [closeDatepicker]=\"datepicker\"\n >\n <div class=\"form-group datepicker {{ size ? 'form-group-' + size : '' }}\">\n <input\n class=\"form-control\"\n [placeholder]=\"placeholder || defaultPlaceholder | translate\"\n bsDatepicker\n [outsideClick]=\"false\"\n [bsConfig]=\"{\n customTodayClass: 'today',\n dateInputFormat: dateInputFormat,\n adaptivePosition: adaptivePosition\n }\"\n [formControl]=\"form.get('date')\"\n (blur)=\"onTouched()\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n />\n </div>\n <timepicker\n class=\"form-group {{ size ? 'form-group-' + size : '' }}\"\n [formControl]=\"form.get('time')\"\n [showSeconds]=\"config.showSeconds\"\n [showSpinners]=\"config.showSpinners\"\n [showMeridian]=\"config.showMeridian\"\n (wheel)=\"handleMouseWheel($event)\"\n ></timepicker>\n </div>\n\n <div\n class=\"d-contents\"\n *ngSwitchCase=\"'Date'\"\n [closeDatepicker]=\"datepicker\"\n >\n <div class=\"form-group datepicker {{ size ? 'form-group-' + size : '' }}\">\n <input\n class=\"form-control\"\n [placeholder]=\"placeholder || defaultPlaceholder | translate\"\n bsDatepicker\n [outsideClick]=\"false\"\n [bsConfig]=\"{\n customTodayClass: 'today',\n dateInputFormat: dateInputFormat,\n adaptivePosition: adaptivePosition\n }\"\n [formControl]=\"form.get('date')\"\n (blur)=\"onTouched()\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n />\n </div>\n </div>\n\n <div\n class=\"d-contents\"\n *ngSwitchCase=\"'DateRange'\"\n >\n <div class=\"form-group datepicker {{ size ? 'form-group-' + size : '' }}\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'Select a date range' | translate }}\"\n [formControl]=\"form.get('date')\"\n [bsConfig]=\"{\n customTodayClass: 'today',\n adaptivePosition: true,\n rangeInputFormat: dateInputFormat\n }\"\n bsDaterangepicker\n />\n </div>\n </div>\n\n <div\n class=\"d-contents\"\n *ngSwitchCase=\"'Time'\"\n >\n <timepicker\n class=\"form-group {{ size ? 'form-group-' + size : '' }}\"\n [formControl]=\"form.get('time')\"\n [showSeconds]=\"config.showSeconds\"\n [showSpinners]=\"config.showSpinners\"\n [showMeridian]=\"config.showMeridian\"\n [minutesPlaceholder]=\"'MM`MINUTES`' | translate\"\n [hoursPlaceholder]=\"'HH`HOURS`' | translate\"\n [secondsPlaceholder]=\"'SS`SECONDS`' | translate\"\n (wheel)=\"handleMouseWheel($event)\"\n ></timepicker>\n </div>\n\n <div *ngSwitchCase=\"'SingleDateRequired'\">\n <div class=\"form-group {{ size ? 'form-group-' + size : '' }}\">\n <c8y-date-picker (onDateSelected)=\"onDateSelected.emit($event)\"></c8y-date-picker>\n </div>\n </div>\n</div>\n", dependencies: [{ 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: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i3.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: i3.BsDaterangepickerDirective, selector: "[bsDaterangepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isOpen", "bsValue", "bsConfig", "isDisabled", "minDate", "maxDate", "dateCustomClasses", "daysDisabled", "datesDisabled", "datesEnabled"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDaterangepicker"] }, { kind: "directive", type: i3.BsDaterangepickerInputDirective, selector: "input[bsDaterangepicker]" }, { kind: "component", type: i4.TimepickerComponent, selector: "timepicker", inputs: ["hourStep", "minuteStep", "secondsStep", "readonlyInput", "disabled", "mousewheel", "arrowkeys", "showSpinners", "showMeridian", "showMinutes", "showSeconds", "meridians", "min", "max", "hoursPlaceholder", "minutesPlaceholder", "secondsPlaceholder"], outputs: ["isValid", "meridianChange"] }, { kind: "component", type: i5.DatePickerComponent, selector: "c8y-date-picker", inputs: ["placeholder"], outputs: ["onDateSelected"] }, { kind: "directive", type: i6.CloseDatePickerDirective, selector: "[closeDatepicker]", inputs: ["closeDatepicker"] }, { kind: "pipe", type: i7.C8yTranslatePipe, name: "translate" }] }); }
190
+ ], viewQueries: [{ propertyName: "datepicker", first: true, predicate: BsDatepickerDirective, descendants: true }], ngImport: i0, template: "<div\n class=\"datetime-picker\"\n [ngSwitch]=\"dateType\"\n>\n <div\n class=\"d-contents\"\n *ngSwitchCase=\"'DateAndTime'\"\n [closeDatepicker]=\"datepicker\"\n >\n <div class=\"form-group datepicker {{ size ? 'form-group-' + size : '' }}\">\n <input\n class=\"form-control\"\n style=\"min-width: 120px\"\n [placeholder]=\"placeholder || defaultPlaceholder | translate\"\n bsDatepicker\n [outsideClick]=\"false\"\n [bsConfig]=\"{\n customTodayClass: 'today',\n dateInputFormat: dateInputFormat,\n adaptivePosition: adaptivePosition\n }\"\n [formControl]=\"form.get('date')\"\n (blur)=\"onTouched()\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n />\n </div>\n <timepicker\n class=\"form-group {{ size ? 'form-group-' + size : '' }}\"\n [formControl]=\"form.get('time')\"\n [showSeconds]=\"config.showSeconds\"\n [showSpinners]=\"config.showSpinners\"\n [showMeridian]=\"config.showMeridian\"\n (wheel)=\"handleMouseWheel($event)\"\n ></timepicker>\n </div>\n\n <div\n class=\"d-contents\"\n *ngSwitchCase=\"'Date'\"\n [closeDatepicker]=\"datepicker\"\n >\n <div class=\"form-group datepicker {{ size ? 'form-group-' + size : '' }}\">\n <input\n class=\"form-control\"\n [placeholder]=\"placeholder || defaultPlaceholder | translate\"\n bsDatepicker\n [outsideClick]=\"false\"\n [bsConfig]=\"{\n customTodayClass: 'today',\n dateInputFormat: dateInputFormat,\n adaptivePosition: adaptivePosition\n }\"\n [formControl]=\"form.get('date')\"\n (blur)=\"onTouched()\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n />\n </div>\n </div>\n\n <div\n class=\"d-contents\"\n *ngSwitchCase=\"'DateRange'\"\n >\n <div class=\"form-group datepicker {{ size ? 'form-group-' + size : '' }}\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'Select a date range' | translate }}\"\n [formControl]=\"form.get('date')\"\n [bsConfig]=\"{\n customTodayClass: 'today',\n adaptivePosition: true,\n rangeInputFormat: dateInputFormat\n }\"\n bsDaterangepicker\n />\n </div>\n </div>\n\n <div\n class=\"d-contents\"\n *ngSwitchCase=\"'Time'\"\n >\n <timepicker\n class=\"form-group {{ size ? 'form-group-' + size : '' }}\"\n [formControl]=\"form.get('time')\"\n [showSeconds]=\"config.showSeconds\"\n [showSpinners]=\"config.showSpinners\"\n [showMeridian]=\"config.showMeridian\"\n [minutesPlaceholder]=\"'MM`MINUTES`' | translate\"\n [hoursPlaceholder]=\"'HH`HOURS`' | translate\"\n [secondsPlaceholder]=\"'SS`SECONDS`' | translate\"\n (wheel)=\"handleMouseWheel($event)\"\n ></timepicker>\n </div>\n\n <div *ngSwitchCase=\"'SingleDateRequired'\">\n <div class=\"form-group {{ size ? 'form-group-' + size : '' }}\">\n <c8y-date-picker (onDateSelected)=\"onDateSelected.emit($event)\"></c8y-date-picker>\n </div>\n </div>\n</div>\n", dependencies: [{ 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: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i3.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: i3.BsDaterangepickerDirective, selector: "[bsDaterangepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isOpen", "bsValue", "bsConfig", "isDisabled", "minDate", "maxDate", "dateCustomClasses", "daysDisabled", "datesDisabled", "datesEnabled"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDaterangepicker"] }, { kind: "directive", type: i3.BsDaterangepickerInputDirective, selector: "input[bsDaterangepicker]" }, { kind: "component", type: i4.TimepickerComponent, selector: "timepicker", inputs: ["hourStep", "minuteStep", "secondsStep", "readonlyInput", "disabled", "mousewheel", "arrowkeys", "showSpinners", "showMeridian", "showMinutes", "showSeconds", "meridians", "min", "max", "hoursPlaceholder", "minutesPlaceholder", "secondsPlaceholder"], outputs: ["isValid", "meridianChange"] }, { kind: "component", type: i5.DatePickerComponent, selector: "c8y-date-picker", inputs: ["placeholder"], outputs: ["onDateSelected"] }, { kind: "directive", type: i6.CloseDatePickerDirective, selector: "[closeDatepicker]", inputs: ["closeDatepicker"] }, { kind: "pipe", type: i7.C8yTranslatePipe, name: "translate" }] }); }
191
191
  }
192
192
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DateTimePickerComponent, decorators: [{
193
193
  type: Component,
@@ -202,7 +202,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
202
202
  useExisting: forwardRef(() => DateTimePickerComponent),
203
203
  multi: true
204
204
  }
205
- ], template: "<div\n class=\"datetime-picker\"\n [ngSwitch]=\"dateType\"\n>\n <div\n class=\"d-contents\"\n *ngSwitchCase=\"'DateAndTime'\"\n [closeDatepicker]=\"datepicker\"\n >\n <div class=\"form-group datepicker {{ size ? 'form-group-' + size : '' }}\">\n <input\n class=\"form-control\"\n [placeholder]=\"placeholder || defaultPlaceholder | translate\"\n bsDatepicker\n [outsideClick]=\"false\"\n [bsConfig]=\"{\n customTodayClass: 'today',\n dateInputFormat: dateInputFormat,\n adaptivePosition: adaptivePosition\n }\"\n [formControl]=\"form.get('date')\"\n (blur)=\"onTouched()\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n />\n </div>\n <timepicker\n class=\"form-group {{ size ? 'form-group-' + size : '' }}\"\n [formControl]=\"form.get('time')\"\n [showSeconds]=\"config.showSeconds\"\n [showSpinners]=\"config.showSpinners\"\n [showMeridian]=\"config.showMeridian\"\n (wheel)=\"handleMouseWheel($event)\"\n ></timepicker>\n </div>\n\n <div\n class=\"d-contents\"\n *ngSwitchCase=\"'Date'\"\n [closeDatepicker]=\"datepicker\"\n >\n <div class=\"form-group datepicker {{ size ? 'form-group-' + size : '' }}\">\n <input\n class=\"form-control\"\n [placeholder]=\"placeholder || defaultPlaceholder | translate\"\n bsDatepicker\n [outsideClick]=\"false\"\n [bsConfig]=\"{\n customTodayClass: 'today',\n dateInputFormat: dateInputFormat,\n adaptivePosition: adaptivePosition\n }\"\n [formControl]=\"form.get('date')\"\n (blur)=\"onTouched()\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n />\n </div>\n </div>\n\n <div\n class=\"d-contents\"\n *ngSwitchCase=\"'DateRange'\"\n >\n <div class=\"form-group datepicker {{ size ? 'form-group-' + size : '' }}\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'Select a date range' | translate }}\"\n [formControl]=\"form.get('date')\"\n [bsConfig]=\"{\n customTodayClass: 'today',\n adaptivePosition: true,\n rangeInputFormat: dateInputFormat\n }\"\n bsDaterangepicker\n />\n </div>\n </div>\n\n <div\n class=\"d-contents\"\n *ngSwitchCase=\"'Time'\"\n >\n <timepicker\n class=\"form-group {{ size ? 'form-group-' + size : '' }}\"\n [formControl]=\"form.get('time')\"\n [showSeconds]=\"config.showSeconds\"\n [showSpinners]=\"config.showSpinners\"\n [showMeridian]=\"config.showMeridian\"\n [minutesPlaceholder]=\"'MM`MINUTES`' | translate\"\n [hoursPlaceholder]=\"'HH`HOURS`' | translate\"\n [secondsPlaceholder]=\"'SS`SECONDS`' | translate\"\n (wheel)=\"handleMouseWheel($event)\"\n ></timepicker>\n </div>\n\n <div *ngSwitchCase=\"'SingleDateRequired'\">\n <div class=\"form-group {{ size ? 'form-group-' + size : '' }}\">\n <c8y-date-picker (onDateSelected)=\"onDateSelected.emit($event)\"></c8y-date-picker>\n </div>\n </div>\n</div>\n" }]
205
+ ], template: "<div\n class=\"datetime-picker\"\n [ngSwitch]=\"dateType\"\n>\n <div\n class=\"d-contents\"\n *ngSwitchCase=\"'DateAndTime'\"\n [closeDatepicker]=\"datepicker\"\n >\n <div class=\"form-group datepicker {{ size ? 'form-group-' + size : '' }}\">\n <input\n class=\"form-control\"\n style=\"min-width: 120px\"\n [placeholder]=\"placeholder || defaultPlaceholder | translate\"\n bsDatepicker\n [outsideClick]=\"false\"\n [bsConfig]=\"{\n customTodayClass: 'today',\n dateInputFormat: dateInputFormat,\n adaptivePosition: adaptivePosition\n }\"\n [formControl]=\"form.get('date')\"\n (blur)=\"onTouched()\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n />\n </div>\n <timepicker\n class=\"form-group {{ size ? 'form-group-' + size : '' }}\"\n [formControl]=\"form.get('time')\"\n [showSeconds]=\"config.showSeconds\"\n [showSpinners]=\"config.showSpinners\"\n [showMeridian]=\"config.showMeridian\"\n (wheel)=\"handleMouseWheel($event)\"\n ></timepicker>\n </div>\n\n <div\n class=\"d-contents\"\n *ngSwitchCase=\"'Date'\"\n [closeDatepicker]=\"datepicker\"\n >\n <div class=\"form-group datepicker {{ size ? 'form-group-' + size : '' }}\">\n <input\n class=\"form-control\"\n [placeholder]=\"placeholder || defaultPlaceholder | translate\"\n bsDatepicker\n [outsideClick]=\"false\"\n [bsConfig]=\"{\n customTodayClass: 'today',\n dateInputFormat: dateInputFormat,\n adaptivePosition: adaptivePosition\n }\"\n [formControl]=\"form.get('date')\"\n (blur)=\"onTouched()\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n />\n </div>\n </div>\n\n <div\n class=\"d-contents\"\n *ngSwitchCase=\"'DateRange'\"\n >\n <div class=\"form-group datepicker {{ size ? 'form-group-' + size : '' }}\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'Select a date range' | translate }}\"\n [formControl]=\"form.get('date')\"\n [bsConfig]=\"{\n customTodayClass: 'today',\n adaptivePosition: true,\n rangeInputFormat: dateInputFormat\n }\"\n bsDaterangepicker\n />\n </div>\n </div>\n\n <div\n class=\"d-contents\"\n *ngSwitchCase=\"'Time'\"\n >\n <timepicker\n class=\"form-group {{ size ? 'form-group-' + size : '' }}\"\n [formControl]=\"form.get('time')\"\n [showSeconds]=\"config.showSeconds\"\n [showSpinners]=\"config.showSpinners\"\n [showMeridian]=\"config.showMeridian\"\n [minutesPlaceholder]=\"'MM`MINUTES`' | translate\"\n [hoursPlaceholder]=\"'HH`HOURS`' | translate\"\n [secondsPlaceholder]=\"'SS`SECONDS`' | translate\"\n (wheel)=\"handleMouseWheel($event)\"\n ></timepicker>\n </div>\n\n <div *ngSwitchCase=\"'SingleDateRequired'\">\n <div class=\"form-group {{ size ? 'form-group-' + size : '' }}\">\n <c8y-date-picker (onDateSelected)=\"onDateSelected.emit($event)\"></c8y-date-picker>\n </div>\n </div>\n</div>\n" }]
206
206
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { _minDate: [{
207
207
  type: Input,
208
208
  args: ['minDate']
@@ -227,4 +227,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
227
227
  type: ViewChild,
228
228
  args: [BsDatepickerDirective]
229
229
  }] } });
230
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2RhdGUtdGltZS1waWNrZXIvZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2RhdGUtdGltZS1waWNrZXIvZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEVBQ04sWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxpQkFBaUIsRUFFakIsU0FBUyxFQUNULFdBQVcsRUFJWCxhQUFhLEVBQ2QsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7O0FBaUNqRSxNQUFNLE9BQU8sdUJBQXVCO0lBR2xDLElBQ0ksUUFBUSxDQUFDLEtBQWE7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDckQsQ0FBQztJQUlELElBQ0ksUUFBUSxDQUFDLEtBQWE7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDckQsQ0FBQztJQWlERCxZ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QUFFLGFBQWE7Z0JBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7Z0JBQ3RELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixzRUEyRFUscUJBQXFCLGdEQ2pIbEMsNmtHQXNHQTs7MkZEOUNhLHVCQUF1QjtrQkFoQm5DLFNBQVM7K0JBQ0Usc0JBQXNCLGFBRXJCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHdCQUF3QixDQUFDOzRCQUN0RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsd0JBQXdCLENBQUM7NEJBQ3RELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO3NGQU1HLFFBQVE7c0JBRFgsS0FBSzt1QkFBQyxTQUFTO2dCQVFaLFFBQVE7c0JBRFgsS0FBSzt1QkFBQyxTQUFTO2dCQU1oQixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFlTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO2dCQVNOLGNBQWM7c0JBRGIsTUFBTTtnQkFRMkIsVUFBVTtzQkFBM0MsU0FBUzt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIFZpZXdDaGlsZCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtR3JvdXAsXG4gIEZvcm1Db250cm9sLFxuICBWYWxpZGF0b3IsXG4gIEFic3RyYWN0Q29udHJvbCxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgTkdfVkFMSURBVE9SU1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmaXJzdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uL2kxOG4nO1xuaW1wb3J0IHsgQnNEYXRlcGlja2VyRGlyZWN0aXZlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kYXRlcGlja2VyJztcbmltcG9ydCB7IFBpY2tlZERhdGVzIH0gZnJvbSAnLi4vZGF0ZS1waWNrZXInO1xuXG5pbnRlcmZhY2UgRGF0ZUFuZFRpbWUge1xuICBkYXRlOiBEYXRlO1xuICB0aW1lOiBEYXRlO1xufVxuXG5pbnRlcmZhY2UgRGF0ZUFuZFRpbWVPcHRpb25zIHtcbiAgc2hvd1NwaW5uZXJzPzogYm9vbGVhbjtcbiAgc2hvd01lcmlkaWFuPzogYm9vbGVhbjtcbiAgc2hvd01pbnV0ZXM/OiBib29sZWFuO1xuICBzaG93U2Vjb25kcz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIERhdGVUeXBlID0gJ0RhdGVBbmRUaW1lJyB8ICdEYXRlJyB8ICdEYXRlUmFuZ2UnIHwgJ1NpbmdsZURhdGVSZXF1aXJlZCcgfCAnVGltZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXRlLXRpbWUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtdGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVUaW1lUGlja2VyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZVRpbWVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkRlc3Ryb3kge1xuICBtaW5EYXRlOiBEYXRlO1xuXG4gIEBJbnB1dCgnbWluRGF0ZScpXG4gIHNldCBfbWluRGF0ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5taW5EYXRlID0gdmFsdWUgPyBuZXcgRGF0ZSh2YWx1ZSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBtYXhEYXRlOiBEYXRlO1xuXG4gIEBJbnB1dCgnbWF4RGF0ZScpXG4gIHNldCBfbWF4RGF0ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5tYXhEYXRlID0gdmFsdWUgPyBuZXcgRGF0ZSh2YWx1ZSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGRhdGVJbnB1dEZvcm1hdCA9ICdZWVlZLU1NLUREJztcblxuICBASW5wdXQoKVxuICBhZGFwdGl2ZVBvc2l0aW9uID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgc2l6ZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHR5cGUgb2YgZGF0ZSBpbnB1dC5cbiAgICpcbiAgICogQHBhcmFtIERhdGVBbmRUaW1lIC0gRGlzcGxheSBib3RoIGRhdGUgYW5kIHRpbWUuXG4gICAqIEBwYXJhbSBEYXRlIC0gRGlzcGxheSBvbmx5IHRoZSBkYXRlIHdpdGhvdXQgdGhlIHRpbWUuXG4gICAqIEBwYXJhbSBEYXRlUmFuZ2UgLSBTcGVjaWZ5IGEgcmFuZ2Ugb2YgZGF0ZXMuXG4gICAqIEBwYXJhbSBTaW5nbGVEYXRlUmVxdWlyZWQgLSBSZXF1aXJlIHRoZSBzZWxlY3Rpb24gb2YgYSBzaW5nbGUgZGF0ZS5cbiAgICogQHBhcmFtIFRpbWUgLSBEaXNwbGF5IG9ubHkgdGhlIHRpbWUgd2l0aG91dCB0aGUgZGF0ZS5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSAnRGF0ZUFuZFRpbWUnXG4gICAqL1xuICBASW5wdXQoKVxuICBkYXRlVHlwZTogRGF0ZVR5cGUgPSAnRGF0ZUFuZFRpbWUnO1xuXG4gIEBJbnB1dCgpXG4gIGNvbmZpZzogRGF0ZUFuZFRpbWVPcHRpb25zID0ge1xuICAgIHNob3dNZXJpZGlhbjogZmFsc2UsXG4gICAgc2hvd01pbnV0ZXM6IHRydWUsXG4gICAgc2hvd1NlY29uZHM6IGZhbHNlLFxuICAgIHNob3dTcGlubmVyczogZmFsc2VcbiAgfTtcblxuICBAT3V0cHV0KClcbiAgb25EYXRlU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxQaWNrZWREYXRlcz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgZGF0ZTogRGF0ZTtcbiAgZm9ybTogRm9ybUdyb3VwO1xuXG4gIGRlZmF1bHRQbGFjZWhvbGRlciA9IGdldHRleHQoJ1NlbGVjdCBhIGRhdGXigKYnKTtcblxuICBAVmlld0NoaWxkKEJzRGF0ZXBpY2tlckRpcmVjdGl2ZSkgZGF0ZXBpY2tlcjogQnNEYXRlcGlja2VyRGlyZWN0aXZlO1xuXG4gIHByaXZhdGUgcHJldmlvdXNWYWx1ZTogRGF0ZUFuZFRpbWU7XG4gIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5mb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgdGhpcy5mb3JtLmFkZENvbnRyb2woJ2RhdGUnLCBuZXcgRm9ybUNvbnRyb2wobnVsbCkpO1xuICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKCd0aW1lJywgbmV3IEZvcm1Db250cm9sKG51bGwpKTtcbiAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHZhbHVlOiBEYXRlQW5kVGltZSkgPT4ge1xuICAgICAgdGhpcy5zZXREYXRldGltZSh2YWx1ZSk7XG4gICAgICB0aGlzLnByZXZpb3VzVmFsdWUgPSB2YWx1ZTtcbiAgICB9KTtcbiAgICB0aGlzLmZvcm0uc3RhdHVzQ2hhbmdlc1xuICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgfSk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCA9ICgpID0+IHt9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb250cm9sIFZhbHVlIEFjY2Vzc29yIC0gSWYgZm9ybSB2YWx1ZSBjaGFuZ2VzIGJ5IGV4dGVybmFsIGZhY3RvciwgdXBkYXRlIGRhdGUgcHJvcGVydHkgYW5kIGludGVybmFsIGZvcm0gd2l0aCBuZXcgdmFsdWUuXG4gICAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgIHRoaXMuZm9ybS5zZXRWYWx1ZShcbiAgICAgICAge1xuICAgICAgICAgIGRhdGU6IG5ldyBEYXRlKHZhbHVlKSxcbiAgICAgICAgICB0aW1lOiB0aGlzLmRhdGVcbiAgICAgICAgfSxcbiAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybS5zZXRWYWx1ZSh7IGRhdGU6IG51bGwsIHRpbWU6IG51bGwgfSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgICB0aGlzLnByZXZpb3VzVmFsdWUgPSB0aGlzLmZvcm0udmFsdWU7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6IGFueSkge1xuICAgIHRoaXMub25Ub3VjaGVkID0gb25Ub3VjaGVkO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbikge1xuICAgIGlmIChkaXNhYmxlZCA9PT0gdGhpcy5mb3JtPy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkaXNhYmxlZCA/IHRoaXMuZm9ybS5kaXNhYmxlKCkgOiB0aGlzLmZvcm0uZW5hYmxlKCk7XG4gIH1cblxuICB2YWxpZGF0ZShfY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmICh0aGlzLmRhdGU/LmdldFRpbWUoKSA8IG5ldyBEYXRlKHRoaXMubWluRGF0ZSkuZ2V0VGltZSgpKSB7XG4gICAgICByZXR1cm4geyBkYXRlQmVmb3JlUmFuZ2VNaW46IHRydWUgfTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGF0ZT8uZ2V0VGltZSgpID4gbmV3IERhdGUodGhpcy5tYXhEYXRlKS5nZXRUaW1lKCkpIHtcbiAgICAgIHJldHVybiB7IGRhdGVBZnRlclJhbmdlTWF4OiB0cnVlIH07XG4gICAgfSBlbHNlIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xuICAgICAgcmV0dXJuIHsgaW52YWxpZERhdGVUaW1lOiB0cnVlIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByZXZpb3VzRGF5KCkge1xuICAgIGNvbnN0IGlzT3BlbiA9IHRoaXMuZGF0ZXBpY2tlci5pc09wZW47XG4gICAgdGhpcy5kYXRlLnNldERhdGUodGhpcy5kYXRlLmdldERhdGUoKSAtIDEpO1xuICAgIHRoaXMuc2V0RGF0ZXRpbWUoeyBkYXRlOiB0aGlzLmRhdGUsIHRpbWU6IHRoaXMuZm9ybS5nZXQoJ3RpbWUnKS52YWx1ZSB9KTtcbiAgICBpZiAoaXNPcGVuKSB7XG4gICAgICB0aGlzLmRhdGVwaWNrZXIuc2hvdygpO1xuICAgIH1cbiAgfVxuXG4gIG5leHREYXkoKSB7XG4gICAgY29uc3QgaXNPcGVuID0gdGhpcy5kYXRlcGlja2VyLmlzT3BlbjtcbiAgICB0aGlzLmRhdGUuc2V0RGF0ZSh0aGlzLmRhdGUuZ2V0RGF0ZSgpICsgMSk7XG4gICAgdGhpcy5zZXREYXRldGltZSh7IGRhdGU6IHRoaXMuZGF0ZSwgdGltZTogdGhpcy5mb3JtLmdldCgndGltZScpLnZhbHVlIH0pO1xuICAgIGlmIChpc09wZW4pIHtcbiAgICAgIHRoaXMuZGF0ZXBpY2tlci5zaG93KCk7XG4gICAgfVxuICB9XG5cbiAgaGlkZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGVwaWNrZXIuaGlkZSgpO1xuICB9XG5cbiAgaGFuZGxlTW91c2VXaGVlbChldmVudDogV2hlZWxFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGhvdXJzID0gdGhpcy5mb3JtLmdldCgndGltZScpLnZhbHVlLmdldEhvdXJzKCk7XG4gICAgLy8gdXBcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChldmVudC5kZWx0YVkgPiAwKSB7XG4gICAgICBpZiAoTnVtYmVyKGhvdXJzKSA9PT0gMjMpIHtcbiAgICAgICAgdGhpcy5wcmV2aW91c0RheSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGRvd25cbiAgICBpZiAoZXZlbnQuZGVsdGFZIDwgMCkge1xuICAgICAgaWYgKE51bWJlcihob3VycykgPT09IDApIHtcbiAgICAgICAgdGhpcy5uZXh0RGF5KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIElmIGludGVybmFsIGZvcm0gY2hhbmdlcyBpdHMgdmFsdWUsIHRoZW4gY29tYmluZSBkYXRlIGFuZCB0aW1lIGludG8gb25lIERhdGUgYW5kIHBhc3MgaXRzIElTTyBzdHJpbmcgdmFsdWUgdG8gb25DaGFuZ2UgbWV0aG9kXG4gICAqIEBwYXJhbSBkYXRlVGltZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBzZXREYXRldGltZShkYXRlVGltZTogRGF0ZUFuZFRpbWUpIHtcbiAgICBpZiAoIWRhdGVUaW1lLmRhdGUgJiYgdGhpcy5wcmV2aW91c1ZhbHVlPy5kYXRlKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghZGF0ZVRpbWUudGltZSkge1xuICAgICAgZGF0ZVRpbWUudGltZSA9IG5ldyBEYXRlKFxuICAgICAgICBkYXRlVGltZS5kYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgIGRhdGVUaW1lLmRhdGUuZ2V0TW9udGgoKSxcbiAgICAgICAgZGF0ZVRpbWUuZGF0ZS5nZXREYXRlKCksXG4gICAgICAgIDAsXG4gICAgICAgIDAsXG4gICAgICAgIDBcbiAgICAgICk7XG4gICAgICBkYXRlVGltZS50aW1lLnNldE1pbnV0ZXMoZGF0ZVRpbWUudGltZS5nZXRNaW51dGVzKCkgLSBkYXRlVGltZS50aW1lLmdldFRpbWV6b25lT2Zmc2V0KCkpO1xuICAgICAgdGhpcy5mb3JtLmdldCgndGltZScpLnNldFZhbHVlKGRhdGVUaW1lLnRpbWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG5cbiAgICBpZiAoIWRhdGVUaW1lLmRhdGUpIHtcbiAgICAgIGRhdGVUaW1lLmRhdGUgPSBkYXRlVGltZS50aW1lO1xuICAgIH1cblxuICAgIC8vIGlmIGRhdGVUaW1lLmRhdGUgaXMgbm90IGEgZGF0ZSB0aGVuIG1ha2UgZm9ybSBpbnZhbGlkXG4gICAgaWYgKGlzTmFOKGRhdGVUaW1lLmRhdGUuZ2V0VGltZSgpKSkge1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmRhdGUuc2V0RXJyb3JzKHsgaW52YWxpZERhdGU6IHRydWUgfSk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZGF0ZSA9IG5ldyBEYXRlKGRhdGVUaW1lLmRhdGUpO1xuICAgIHRoaXMuZGF0ZS5zZXRIb3VycyhkYXRlVGltZS50aW1lLmdldEhvdXJzKCksIGRhdGVUaW1lLnRpbWUuZ2V0TWludXRlcygpKTtcbiAgICB0aGlzLmZvcm0uZ2V0KCdkYXRlJykuc2V0VmFsdWUoZGF0ZVRpbWUuZGF0ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy5kYXRlLnRvSVNPU3RyaW5nKCkpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiZGF0ZXRpbWUtcGlja2VyXCJcbiAgW25nU3dpdGNoXT1cImRhdGVUeXBlXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgKm5nU3dpdGNoQ2FzZT1cIidEYXRlQW5kVGltZSdcIlxuICAgIFtjbG9zZURhdGVwaWNrZXJdPVwiZGF0ZXBpY2tlclwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBkYXRlcGlja2VyIHt7IHNpemUgPyAnZm9ybS1ncm91cC0nICsgc2l6ZSA6ICcnIH19XCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfHwgZGVmYXVsdFBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgYnNEYXRlcGlja2VyXG4gICAgICAgIFtvdXRzaWRlQ2xpY2tdPVwiZmFsc2VcIlxuICAgICAgICBbYnNDb25maWddPVwie1xuICAgICAgICAgIGN1c3RvbVRvZGF5Q2xhc3M6ICd0b2RheScsXG4gICAgICAgICAgZGF0ZUlucHV0Rm9ybWF0OiBkYXRlSW5wdXRGb3JtYXQsXG4gICAgICAgICAgYWRhcHRpdmVQb3NpdGlvbjogYWRhcHRpdmVQb3NpdGlvblxuICAgICAgICB9XCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm0uZ2V0KCdkYXRlJylcIlxuICAgICAgICAoYmx1cik9XCJvblRvdWNoZWQoKVwiXG4gICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICAgPHRpbWVwaWNrZXJcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cCB7eyBzaXplID8gJ2Zvcm0tZ3JvdXAtJyArIHNpemUgOiAnJyB9fVwiXG4gICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybS5nZXQoJ3RpbWUnKVwiXG4gICAgICBbc2hvd1NlY29uZHNdPVwiY29uZmlnLnNob3dTZWNvbmRzXCJcbiAgICAgIFtzaG93U3Bpbm5lcnNdPVwiY29uZmlnLnNob3dTcGlubmVyc1wiXG4gICAgICBbc2hvd01lcmlkaWFuXT1cImNvbmZpZy5zaG93TWVyaWRpYW5cIlxuICAgICAgKHdoZWVsKT1cImhhbmRsZU1vdXNlV2hlZWwoJGV2ZW50KVwiXG4gICAgPjwvdGltZXBpY2tlcj5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgKm5nU3dpdGNoQ2FzZT1cIidEYXRlJ1wiXG4gICAgW2Nsb3NlRGF0ZXBpY2tlcl09XCJkYXRlcGlja2VyXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGRhdGVwaWNrZXIge3sgc2l6ZSA/ICdmb3JtLWdyb3VwLScgKyBzaXplIDogJycgfX1cIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciB8fCBkZWZhdWx0UGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIlxuICAgICAgICBic0RhdGVwaWNrZXJcbiAgICAgICAgW291dHNpZGVDbGlja109XCJmYWxzZVwiXG4gICAgICAgIFtic0NvbmZpZ109XCJ7XG4gICAgICAgICAgY3VzdG9tVG9kYXlDbGFzczogJ3RvZGF5JyxcbiAgICAgICAgICBkYXRlSW5wdXRGb3JtYXQ6IGRhdGVJbnB1dEZvcm1hdCxcbiAgICAgICAgICBhZGFwdGl2ZVBvc2l0aW9uOiBhZGFwdGl2ZVBvc2l0aW9uXG4gICAgICAgIH1cIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybS5nZXQoJ2RhdGUnKVwiXG4gICAgICAgIChibHVyKT1cIm9uVG91Y2hlZCgpXCJcbiAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgKm5nU3dpdGNoQ2FzZT1cIidEYXRlUmFuZ2UnXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGRhdGVwaWNrZXIge3sgc2l6ZSA/ICdmb3JtLWdyb3VwLScgKyBzaXplIDogJycgfX1cIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ1NlbGVjdCBhIGRhdGUgcmFuZ2UnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm0uZ2V0KCdkYXRlJylcIlxuICAgICAgICBbYnNDb25maWddPVwie1xuICAgICAgICAgIGN1c3RvbVRvZGF5Q2xhc3M6ICd0b2RheScsXG4gICAgICAgICAgYWRhcHRpdmVQb3NpdGlvbjogdHJ1ZSxcbiAgICAgICAgICByYW5nZUlucHV0Rm9ybWF0OiBkYXRlSW5wdXRGb3JtYXRcbiAgICAgICAgfVwiXG4gICAgICAgIGJzRGF0ZXJhbmdlcGlja2VyXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgY2xhc3M9XCJkLWNvbnRlbnRzXCJcbiAgICAqbmdTd2l0Y2hDYXNlPVwiJ1RpbWUnXCJcbiAgPlxuICAgIDx0aW1lcGlja2VyXG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAge3sgc2l6ZSA/ICdmb3JtLWdyb3VwLScgKyBzaXplIDogJycgfX1cIlxuICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm0uZ2V0KCd0aW1lJylcIlxuICAgICAgW3Nob3dTZWNvbmRzXT1cImNvbmZpZy5zaG93U2Vjb25kc1wiXG4gICAgICBbc2hvd1NwaW5uZXJzXT1cImNvbmZpZy5zaG93U3Bpbm5lcnNcIlxuICAgICAgW3Nob3dNZXJpZGlhbl09XCJjb25maWcuc2hvd01lcmlkaWFuXCJcbiAgICAgIFttaW51dGVzUGxhY2Vob2xkZXJdPVwiJ01NYE1JTlVURVNgJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbaG91cnNQbGFjZWhvbGRlcl09XCInSEhgSE9VUlNgJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbc2Vjb25kc1BsYWNlaG9sZGVyXT1cIidTU2BTRUNPTkRTYCcgfCB0cmFuc2xhdGVcIlxuICAgICAgKHdoZWVsKT1cImhhbmRsZU1vdXNlV2hlZWwoJGV2ZW50KVwiXG4gICAgPjwvdGltZXBpY2tlcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ1NpbmdsZURhdGVSZXF1aXJlZCdcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCB7eyBzaXplID8gJ2Zvcm0tZ3JvdXAtJyArIHNpemUgOiAnJyB9fVwiPlxuICAgICAgPGM4eS1kYXRlLXBpY2tlciAob25EYXRlU2VsZWN0ZWQpPVwib25EYXRlU2VsZWN0ZWQuZW1pdCgkZXZlbnQpXCI+PC9jOHktZGF0ZS1waWNrZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2RhdGUtdGltZS1waWNrZXIvZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2RhdGUtdGltZS1waWNrZXIvZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEVBQ04sWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxpQkFBaUIsRUFFakIsU0FBUyxFQUNULFdBQVcsRUFJWCxhQUFhLEVBQ2QsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7O0FBaUNqRSxNQUFNLE9BQU8sdUJBQXVCO0lBR2xDLElBQ0ksUUFBUSxDQUFDLEtBQWE7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDckQsQ0FBQztJQUlELElBQ0ksUUFBUSxDQUFDLEtBQWE7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDckQsQ0FBQztJQWlERCxZ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QUFFLGFBQWE7Z0JBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7Z0JBQ3RELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixzRUEyRFUscUJBQXFCLGdEQ2pIbEMsaW5HQXVHQTs7MkZEL0NhLHVCQUF1QjtrQkFoQm5DLFNBQVM7K0JBQ0Usc0JBQXNCLGFBRXJCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHdCQUF3QixDQUFDOzRCQUN0RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsd0JBQXdCLENBQUM7NEJBQ3RELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO3NGQU1HLFFBQVE7c0JBRFgsS0FBSzt1QkFBQyxTQUFTO2dCQVFaLFFBQVE7c0JBRFgsS0FBSzt1QkFBQyxTQUFTO2dCQU1oQixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFlTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO2dCQVNOLGNBQWM7c0JBRGIsTUFBTTtnQkFRMkIsVUFBVTtzQkFBM0MsU0FBUzt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIFZpZXdDaGlsZCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtR3JvdXAsXG4gIEZvcm1Db250cm9sLFxuICBWYWxpZGF0b3IsXG4gIEFic3RyYWN0Q29udHJvbCxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgTkdfVkFMSURBVE9SU1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmaXJzdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uL2kxOG4nO1xuaW1wb3J0IHsgQnNEYXRlcGlja2VyRGlyZWN0aXZlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kYXRlcGlja2VyJztcbmltcG9ydCB7IFBpY2tlZERhdGVzIH0gZnJvbSAnLi4vZGF0ZS1waWNrZXInO1xuXG5pbnRlcmZhY2UgRGF0ZUFuZFRpbWUge1xuICBkYXRlOiBEYXRlO1xuICB0aW1lOiBEYXRlO1xufVxuXG5pbnRlcmZhY2UgRGF0ZUFuZFRpbWVPcHRpb25zIHtcbiAgc2hvd1NwaW5uZXJzPzogYm9vbGVhbjtcbiAgc2hvd01lcmlkaWFuPzogYm9vbGVhbjtcbiAgc2hvd01pbnV0ZXM/OiBib29sZWFuO1xuICBzaG93U2Vjb25kcz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIERhdGVUeXBlID0gJ0RhdGVBbmRUaW1lJyB8ICdEYXRlJyB8ICdEYXRlUmFuZ2UnIHwgJ1NpbmdsZURhdGVSZXF1aXJlZCcgfCAnVGltZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXRlLXRpbWUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtdGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVUaW1lUGlja2VyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZVRpbWVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkRlc3Ryb3kge1xuICBtaW5EYXRlOiBEYXRlO1xuXG4gIEBJbnB1dCgnbWluRGF0ZScpXG4gIHNldCBfbWluRGF0ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5taW5EYXRlID0gdmFsdWUgPyBuZXcgRGF0ZSh2YWx1ZSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBtYXhEYXRlOiBEYXRlO1xuXG4gIEBJbnB1dCgnbWF4RGF0ZScpXG4gIHNldCBfbWF4RGF0ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5tYXhEYXRlID0gdmFsdWUgPyBuZXcgRGF0ZSh2YWx1ZSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGRhdGVJbnB1dEZvcm1hdCA9ICdZWVlZLU1NLUREJztcblxuICBASW5wdXQoKVxuICBhZGFwdGl2ZVBvc2l0aW9uID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgc2l6ZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHR5cGUgb2YgZGF0ZSBpbnB1dC5cbiAgICpcbiAgICogQHBhcmFtIERhdGVBbmRUaW1lIC0gRGlzcGxheSBib3RoIGRhdGUgYW5kIHRpbWUuXG4gICAqIEBwYXJhbSBEYXRlIC0gRGlzcGxheSBvbmx5IHRoZSBkYXRlIHdpdGhvdXQgdGhlIHRpbWUuXG4gICAqIEBwYXJhbSBEYXRlUmFuZ2UgLSBTcGVjaWZ5IGEgcmFuZ2Ugb2YgZGF0ZXMuXG4gICAqIEBwYXJhbSBTaW5nbGVEYXRlUmVxdWlyZWQgLSBSZXF1aXJlIHRoZSBzZWxlY3Rpb24gb2YgYSBzaW5nbGUgZGF0ZS5cbiAgICogQHBhcmFtIFRpbWUgLSBEaXNwbGF5IG9ubHkgdGhlIHRpbWUgd2l0aG91dCB0aGUgZGF0ZS5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSAnRGF0ZUFuZFRpbWUnXG4gICAqL1xuICBASW5wdXQoKVxuICBkYXRlVHlwZTogRGF0ZVR5cGUgPSAnRGF0ZUFuZFRpbWUnO1xuXG4gIEBJbnB1dCgpXG4gIGNvbmZpZzogRGF0ZUFuZFRpbWVPcHRpb25zID0ge1xuICAgIHNob3dNZXJpZGlhbjogZmFsc2UsXG4gICAgc2hvd01pbnV0ZXM6IHRydWUsXG4gICAgc2hvd1NlY29uZHM6IGZhbHNlLFxuICAgIHNob3dTcGlubmVyczogZmFsc2VcbiAgfTtcblxuICBAT3V0cHV0KClcbiAgb25EYXRlU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxQaWNrZWREYXRlcz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgZGF0ZTogRGF0ZTtcbiAgZm9ybTogRm9ybUdyb3VwO1xuXG4gIGRlZmF1bHRQbGFjZWhvbGRlciA9IGdldHRleHQoJ1NlbGVjdCBhIGRhdGXigKYnKTtcblxuICBAVmlld0NoaWxkKEJzRGF0ZXBpY2tlckRpcmVjdGl2ZSkgZGF0ZXBpY2tlcjogQnNEYXRlcGlja2VyRGlyZWN0aXZlO1xuXG4gIHByaXZhdGUgcHJldmlvdXNWYWx1ZTogRGF0ZUFuZFRpbWU7XG4gIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5mb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgdGhpcy5mb3JtLmFkZENvbnRyb2woJ2RhdGUnLCBuZXcgRm9ybUNvbnRyb2wobnVsbCkpO1xuICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKCd0aW1lJywgbmV3IEZvcm1Db250cm9sKG51bGwpKTtcbiAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHZhbHVlOiBEYXRlQW5kVGltZSkgPT4ge1xuICAgICAgdGhpcy5zZXREYXRldGltZSh2YWx1ZSk7XG4gICAgICB0aGlzLnByZXZpb3VzVmFsdWUgPSB2YWx1ZTtcbiAgICB9KTtcbiAgICB0aGlzLmZvcm0uc3RhdHVzQ2hhbmdlc1xuICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgfSk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCA9ICgpID0+IHt9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb250cm9sIFZhbHVlIEFjY2Vzc29yIC0gSWYgZm9ybSB2YWx1ZSBjaGFuZ2VzIGJ5IGV4dGVybmFsIGZhY3RvciwgdXBkYXRlIGRhdGUgcHJvcGVydHkgYW5kIGludGVybmFsIGZvcm0gd2l0aCBuZXcgdmFsdWUuXG4gICAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgIHRoaXMuZm9ybS5zZXRWYWx1ZShcbiAgICAgICAge1xuICAgICAgICAgIGRhdGU6IG5ldyBEYXRlKHZhbHVlKSxcbiAgICAgICAgICB0aW1lOiB0aGlzLmRhdGVcbiAgICAgICAgfSxcbiAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybS5zZXRWYWx1ZSh7IGRhdGU6IG51bGwsIHRpbWU6IG51bGwgfSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgICB0aGlzLnByZXZpb3VzVmFsdWUgPSB0aGlzLmZvcm0udmFsdWU7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6IGFueSkge1xuICAgIHRoaXMub25Ub3VjaGVkID0gb25Ub3VjaGVkO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbikge1xuICAgIGlmIChkaXNhYmxlZCA9PT0gdGhpcy5mb3JtPy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkaXNhYmxlZCA/IHRoaXMuZm9ybS5kaXNhYmxlKCkgOiB0aGlzLmZvcm0uZW5hYmxlKCk7XG4gIH1cblxuICB2YWxpZGF0ZShfY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmICh0aGlzLmRhdGU/LmdldFRpbWUoKSA8IG5ldyBEYXRlKHRoaXMubWluRGF0ZSkuZ2V0VGltZSgpKSB7XG4gICAgICByZXR1cm4geyBkYXRlQmVmb3JlUmFuZ2VNaW46IHRydWUgfTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGF0ZT8uZ2V0VGltZSgpID4gbmV3IERhdGUodGhpcy5tYXhEYXRlKS5nZXRUaW1lKCkpIHtcbiAgICAgIHJldHVybiB7IGRhdGVBZnRlclJhbmdlTWF4OiB0cnVlIH07XG4gICAgfSBlbHNlIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xuICAgICAgcmV0dXJuIHsgaW52YWxpZERhdGVUaW1lOiB0cnVlIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByZXZpb3VzRGF5KCkge1xuICAgIGNvbnN0IGlzT3BlbiA9IHRoaXMuZGF0ZXBpY2tlci5pc09wZW47XG4gICAgdGhpcy5kYXRlLnNldERhdGUodGhpcy5kYXRlLmdldERhdGUoKSAtIDEpO1xuICAgIHRoaXMuc2V0RGF0ZXRpbWUoeyBkYXRlOiB0aGlzLmRhdGUsIHRpbWU6IHRoaXMuZm9ybS5nZXQoJ3RpbWUnKS52YWx1ZSB9KTtcbiAgICBpZiAoaXNPcGVuKSB7XG4gICAgICB0aGlzLmRhdGVwaWNrZXIuc2hvdygpO1xuICAgIH1cbiAgfVxuXG4gIG5leHREYXkoKSB7XG4gICAgY29uc3QgaXNPcGVuID0gdGhpcy5kYXRlcGlja2VyLmlzT3BlbjtcbiAgICB0aGlzLmRhdGUuc2V0RGF0ZSh0aGlzLmRhdGUuZ2V0RGF0ZSgpICsgMSk7XG4gICAgdGhpcy5zZXREYXRldGltZSh7IGRhdGU6IHRoaXMuZGF0ZSwgdGltZTogdGhpcy5mb3JtLmdldCgndGltZScpLnZhbHVlIH0pO1xuICAgIGlmIChpc09wZW4pIHtcbiAgICAgIHRoaXMuZGF0ZXBpY2tlci5zaG93KCk7XG4gICAgfVxuICB9XG5cbiAgaGlkZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGVwaWNrZXIuaGlkZSgpO1xuICB9XG5cbiAgaGFuZGxlTW91c2VXaGVlbChldmVudDogV2hlZWxFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGhvdXJzID0gdGhpcy5mb3JtLmdldCgndGltZScpLnZhbHVlLmdldEhvdXJzKCk7XG4gICAgLy8gdXBcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChldmVudC5kZWx0YVkgPiAwKSB7XG4gICAgICBpZiAoTnVtYmVyKGhvdXJzKSA9PT0gMjMpIHtcbiAgICAgICAgdGhpcy5wcmV2aW91c0RheSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGRvd25cbiAgICBpZiAoZXZlbnQuZGVsdGFZIDwgMCkge1xuICAgICAgaWYgKE51bWJlcihob3VycykgPT09IDApIHtcbiAgICAgICAgdGhpcy5uZXh0RGF5KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIElmIGludGVybmFsIGZvcm0gY2hhbmdlcyBpdHMgdmFsdWUsIHRoZW4gY29tYmluZSBkYXRlIGFuZCB0aW1lIGludG8gb25lIERhdGUgYW5kIHBhc3MgaXRzIElTTyBzdHJpbmcgdmFsdWUgdG8gb25DaGFuZ2UgbWV0aG9kXG4gICAqIEBwYXJhbSBkYXRlVGltZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBzZXREYXRldGltZShkYXRlVGltZTogRGF0ZUFuZFRpbWUpIHtcbiAgICBpZiAoIWRhdGVUaW1lLmRhdGUgJiYgdGhpcy5wcmV2aW91c1ZhbHVlPy5kYXRlKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghZGF0ZVRpbWUudGltZSkge1xuICAgICAgZGF0ZVRpbWUudGltZSA9IG5ldyBEYXRlKFxuICAgICAgICBkYXRlVGltZS5kYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgIGRhdGVUaW1lLmRhdGUuZ2V0TW9udGgoKSxcbiAgICAgICAgZGF0ZVRpbWUuZGF0ZS5nZXREYXRlKCksXG4gICAgICAgIDAsXG4gICAgICAgIDAsXG4gICAgICAgIDBcbiAgICAgICk7XG4gICAgICBkYXRlVGltZS50aW1lLnNldE1pbnV0ZXMoZGF0ZVRpbWUudGltZS5nZXRNaW51dGVzKCkgLSBkYXRlVGltZS50aW1lLmdldFRpbWV6b25lT2Zmc2V0KCkpO1xuICAgICAgdGhpcy5mb3JtLmdldCgndGltZScpLnNldFZhbHVlKGRhdGVUaW1lLnRpbWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG5cbiAgICBpZiAoIWRhdGVUaW1lLmRhdGUpIHtcbiAgICAgIGRhdGVUaW1lLmRhdGUgPSBkYXRlVGltZS50aW1lO1xuICAgIH1cblxuICAgIC8vIGlmIGRhdGVUaW1lLmRhdGUgaXMgbm90IGEgZGF0ZSB0aGVuIG1ha2UgZm9ybSBpbnZhbGlkXG4gICAgaWYgKGlzTmFOKGRhdGVUaW1lLmRhdGUuZ2V0VGltZSgpKSkge1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmRhdGUuc2V0RXJyb3JzKHsgaW52YWxpZERhdGU6IHRydWUgfSk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZGF0ZSA9IG5ldyBEYXRlKGRhdGVUaW1lLmRhdGUpO1xuICAgIHRoaXMuZGF0ZS5zZXRIb3VycyhkYXRlVGltZS50aW1lLmdldEhvdXJzKCksIGRhdGVUaW1lLnRpbWUuZ2V0TWludXRlcygpKTtcbiAgICB0aGlzLmZvcm0uZ2V0KCdkYXRlJykuc2V0VmFsdWUoZGF0ZVRpbWUuZGF0ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy5kYXRlLnRvSVNPU3RyaW5nKCkpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiZGF0ZXRpbWUtcGlja2VyXCJcbiAgW25nU3dpdGNoXT1cImRhdGVUeXBlXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgKm5nU3dpdGNoQ2FzZT1cIidEYXRlQW5kVGltZSdcIlxuICAgIFtjbG9zZURhdGVwaWNrZXJdPVwiZGF0ZXBpY2tlclwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBkYXRlcGlja2VyIHt7IHNpemUgPyAnZm9ybS1ncm91cC0nICsgc2l6ZSA6ICcnIH19XCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogMTIwcHhcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfHwgZGVmYXVsdFBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgYnNEYXRlcGlja2VyXG4gICAgICAgIFtvdXRzaWRlQ2xpY2tdPVwiZmFsc2VcIlxuICAgICAgICBbYnNDb25maWddPVwie1xuICAgICAgICAgIGN1c3RvbVRvZGF5Q2xhc3M6ICd0b2RheScsXG4gICAgICAgICAgZGF0ZUlucHV0Rm9ybWF0OiBkYXRlSW5wdXRGb3JtYXQsXG4gICAgICAgICAgYWRhcHRpdmVQb3NpdGlvbjogYWRhcHRpdmVQb3NpdGlvblxuICAgICAgICB9XCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm0uZ2V0KCdkYXRlJylcIlxuICAgICAgICAoYmx1cik9XCJvblRvdWNoZWQoKVwiXG4gICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICAgPHRpbWVwaWNrZXJcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cCB7eyBzaXplID8gJ2Zvcm0tZ3JvdXAtJyArIHNpemUgOiAnJyB9fVwiXG4gICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybS5nZXQoJ3RpbWUnKVwiXG4gICAgICBbc2hvd1NlY29uZHNdPVwiY29uZmlnLnNob3dTZWNvbmRzXCJcbiAgICAgIFtzaG93U3Bpbm5lcnNdPVwiY29uZmlnLnNob3dTcGlubmVyc1wiXG4gICAgICBbc2hvd01lcmlkaWFuXT1cImNvbmZpZy5zaG93TWVyaWRpYW5cIlxuICAgICAgKHdoZWVsKT1cImhhbmRsZU1vdXNlV2hlZWwoJGV2ZW50KVwiXG4gICAgPjwvdGltZXBpY2tlcj5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgKm5nU3dpdGNoQ2FzZT1cIidEYXRlJ1wiXG4gICAgW2Nsb3NlRGF0ZXBpY2tlcl09XCJkYXRlcGlja2VyXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGRhdGVwaWNrZXIge3sgc2l6ZSA/ICdmb3JtLWdyb3VwLScgKyBzaXplIDogJycgfX1cIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciB8fCBkZWZhdWx0UGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIlxuICAgICAgICBic0RhdGVwaWNrZXJcbiAgICAgICAgW291dHNpZGVDbGlja109XCJmYWxzZVwiXG4gICAgICAgIFtic0NvbmZpZ109XCJ7XG4gICAgICAgICAgY3VzdG9tVG9kYXlDbGFzczogJ3RvZGF5JyxcbiAgICAgICAgICBkYXRlSW5wdXRGb3JtYXQ6IGRhdGVJbnB1dEZvcm1hdCxcbiAgICAgICAgICBhZGFwdGl2ZVBvc2l0aW9uOiBhZGFwdGl2ZVBvc2l0aW9uXG4gICAgICAgIH1cIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybS5nZXQoJ2RhdGUnKVwiXG4gICAgICAgIChibHVyKT1cIm9uVG91Y2hlZCgpXCJcbiAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgKm5nU3dpdGNoQ2FzZT1cIidEYXRlUmFuZ2UnXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGRhdGVwaWNrZXIge3sgc2l6ZSA/ICdmb3JtLWdyb3VwLScgKyBzaXplIDogJycgfX1cIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ1NlbGVjdCBhIGRhdGUgcmFuZ2UnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm0uZ2V0KCdkYXRlJylcIlxuICAgICAgICBbYnNDb25maWddPVwie1xuICAgICAgICAgIGN1c3RvbVRvZGF5Q2xhc3M6ICd0b2RheScsXG4gICAgICAgICAgYWRhcHRpdmVQb3NpdGlvbjogdHJ1ZSxcbiAgICAgICAgICByYW5nZUlucHV0Rm9ybWF0OiBkYXRlSW5wdXRGb3JtYXRcbiAgICAgICAgfVwiXG4gICAgICAgIGJzRGF0ZXJhbmdlcGlja2VyXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgY2xhc3M9XCJkLWNvbnRlbnRzXCJcbiAgICAqbmdTd2l0Y2hDYXNlPVwiJ1RpbWUnXCJcbiAgPlxuICAgIDx0aW1lcGlja2VyXG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAge3sgc2l6ZSA/ICdmb3JtLWdyb3VwLScgKyBzaXplIDogJycgfX1cIlxuICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm0uZ2V0KCd0aW1lJylcIlxuICAgICAgW3Nob3dTZWNvbmRzXT1cImNvbmZpZy5zaG93U2Vjb25kc1wiXG4gICAgICBbc2hvd1NwaW5uZXJzXT1cImNvbmZpZy5zaG93U3Bpbm5lcnNcIlxuICAgICAgW3Nob3dNZXJpZGlhbl09XCJjb25maWcuc2hvd01lcmlkaWFuXCJcbiAgICAgIFttaW51dGVzUGxhY2Vob2xkZXJdPVwiJ01NYE1JTlVURVNgJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbaG91cnNQbGFjZWhvbGRlcl09XCInSEhgSE9VUlNgJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbc2Vjb25kc1BsYWNlaG9sZGVyXT1cIidTU2BTRUNPTkRTYCcgfCB0cmFuc2xhdGVcIlxuICAgICAgKHdoZWVsKT1cImhhbmRsZU1vdXNlV2hlZWwoJGV2ZW50KVwiXG4gICAgPjwvdGltZXBpY2tlcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ1NpbmdsZURhdGVSZXF1aXJlZCdcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCB7eyBzaXplID8gJ2Zvcm0tZ3JvdXAtJyArIHNpemUgOiAnJyB9fVwiPlxuICAgICAgPGM4eS1kYXRlLXBpY2tlciAob25EYXRlU2VsZWN0ZWQpPVwib25EYXRlU2VsZWN0ZWQuZW1pdCgkZXZlbnQpXCI+PC9jOHktZGF0ZS1waWNrZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -29,7 +29,7 @@ import * as i2 from "ngx-bootstrap/collapse";
29
29
  */
30
30
  export class HeaderModule {
31
31
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: HeaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
32
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: HeaderModule, declarations: [TitleComponent, HeaderBarComponent, TitleOutletComponent], imports: [ApplicationModule,
32
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: HeaderModule, declarations: [HeaderBarComponent, TitleOutletComponent], imports: [ApplicationModule,
33
33
  A11yModule,
34
34
  UserModule,
35
35
  CoreSearchModule,
@@ -39,7 +39,8 @@ export class HeaderModule {
39
39
  NavigatorModule,
40
40
  VersionModule, i1.TooltipModule, i2.CollapseModule, ProductExperienceModule,
41
41
  DrawerModule,
42
- UiSettingsModule], exports: [HeaderBarComponent, TitleComponent, TitleOutletComponent] }); }
42
+ UiSettingsModule,
43
+ TitleComponent], exports: [HeaderBarComponent, TitleComponent, TitleOutletComponent] }); }
43
44
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: HeaderModule, imports: [ApplicationModule,
44
45
  A11yModule,
45
46
  UserModule,
@@ -58,7 +59,7 @@ export class HeaderModule {
58
59
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: HeaderModule, decorators: [{
59
60
  type: NgModule,
60
61
  args: [{
61
- declarations: [TitleComponent, HeaderBarComponent, TitleOutletComponent],
62
+ declarations: [HeaderBarComponent, TitleOutletComponent],
62
63
  imports: [
63
64
  ApplicationModule,
64
65
  A11yModule,
@@ -73,9 +74,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
73
74
  CollapseModule.forRoot(),
74
75
  ProductExperienceModule,
75
76
  DrawerModule,
76
- UiSettingsModule
77
+ UiSettingsModule,
78
+ TitleComponent
77
79
  ],
78
80
  exports: [HeaderBarComponent, TitleComponent, TitleOutletComponent]
79
81
  }]
80
82
  }] });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvaGVhZGVyL2hlYWRlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMxRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7O0FBRXZEOzs7Ozs7O0dBT0c7QUFxQkgsTUFBTSxPQUFPLFlBQVk7OEdBQVosWUFBWTsrR0FBWixZQUFZLGlCQW5CUixjQUFjLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLGFBRXJFLGlCQUFpQjtZQUNqQixVQUFVO1lBQ1YsVUFBVTtZQUNWLGdCQUFnQjtZQUNoQixZQUFZO1lBQ1osWUFBWTtZQUNaLGdCQUFnQjtZQUNoQixlQUFlO1lBQ2YsYUFBYSx1Q0FHYix1QkFBdUI7WUFDdkIsWUFBWTtZQUNaLGdCQUFnQixhQUVSLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxvQkFBb0I7K0dBRXZELFlBQVksWUFqQnJCLGlCQUFpQjtZQUNqQixVQUFVO1lBQ1YsVUFBVTtZQUNWLGdCQUFnQjtZQUNoQixZQUFZO1lBQ1osWUFBWTtZQUNaLGdCQUFnQjtZQUNoQixlQUFlO1lBQ2YsYUFBYTtZQUNiLGFBQWEsQ0FBQyxPQUFPLEVBQUU7WUFDdkIsY0FBYyxDQUFDLE9BQU8sRUFBRTtZQUN4Qix1QkFBdUI7WUFDdkIsWUFBWTtZQUNaLGdCQUFnQjs7MkZBSVAsWUFBWTtrQkFwQnhCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsY0FBYyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixDQUFDO29CQUN4RSxPQUFPLEVBQUU7d0JBQ1AsaUJBQWlCO3dCQUNqQixVQUFVO3dCQUNWLFVBQVU7d0JBQ1YsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsYUFBYSxDQUFDLE9BQU8sRUFBRTt3QkFDdkIsY0FBYyxDQUFDLE9BQU8sRUFBRTt3QkFDeEIsdUJBQXVCO3dCQUN2QixZQUFZO3dCQUNaLGdCQUFnQjtxQkFDakI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLG9CQUFvQixDQUFDO2lCQUNwRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29sbGFwc2VNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2NvbGxhcHNlJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3Rvb2x0aXAnO1xuaW1wb3J0IHsgQWN0aW9uTW9kdWxlIH0gZnJvbSAnLi4vYWN0aW9uL2FjdGlvbi5tb2R1bGUnO1xuaW1wb3J0IHsgQnJlYWRjcnVtYk1vZHVsZSB9IGZyb20gJy4uL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5tb2R1bGUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnLi4vY29tbW9uL2NvbW1vbi5tb2R1bGUnO1xuaW1wb3J0IHsgTmF2aWdhdG9yTW9kdWxlIH0gZnJvbSAnLi4vbmF2aWdhdG9yL25hdmlnYXRvci5tb2R1bGUnO1xuaW1wb3J0IHsgUHJvZHVjdEV4cGVyaWVuY2VNb2R1bGUgfSBmcm9tICcuLi9wcm9kdWN0LWV4cGVyaWVuY2UvcHJvZHVjdC1leHBlcmllbmNlLm1vZHVsZSc7XG5pbXBvcnQgeyBDb3JlU2VhcmNoTW9kdWxlIH0gZnJvbSAnLi4vc2VhcmNoL3NlYXJjaC5tb2R1bGUnO1xuaW1wb3J0IHsgVWlTZXR0aW5nc01vZHVsZSB9IGZyb20gJy4uL3VpLXNldHRpbmdzL3VpLXNldHRpbmdzLm1vZHVsZSc7XG5pbXBvcnQgeyBVc2VyTW9kdWxlIH0gZnJvbSAnLi4vdXNlci91c2VyLm1vZHVsZSc7XG5pbXBvcnQgeyBWZXJzaW9uTW9kdWxlIH0gZnJvbSAnLi4vdmVyc2lvbic7XG5pbXBvcnQgeyBIZWFkZXJCYXJDb21wb25lbnQgfSBmcm9tICcuL2hlYWRlci1iYXIvaGVhZGVyLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVPdXRsZXRDb21wb25lbnQgfSBmcm9tICcuL3RpdGxlL3RpdGxlLW91dGxldC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbk1vZHVsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uL2FwcGxpY2F0aW9uLm1vZHVsZSc7XG5pbXBvcnQgeyBEcmF3ZXJNb2R1bGUgfSBmcm9tICcuLi9kcmF3ZXIvZHJhd2VyLm1vZHVsZSc7XG5cbi8qKlxuICogVGhlIGFuZ3VsYXIgbW9kdWxlIGRlZmluaXRpb24gZm9yIHRoZSBoZWFkZXIgb2YgdGhlIGFwcGxpY2F0aW9uLlxuICogQGV4cG9ydHMgSGVhZGVyQmFyQ29tcG9uZW50XG4gKiBAZXhwb3J0cyBUaXRsZUNvbXBvbmVudFxuICogQGV4cG9ydHMgVGl0bGVPdXRsZXRDb21wb25lbnRcbiAqIEBleHBvcnRzIEFwcEljb25Db21wb25lbnRcbiAqIEBleHBvcnRzIEFwcFN3aXRjaGVyQ29tcG9uZW50XG4gKi9cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1RpdGxlQ29tcG9uZW50LCBIZWFkZXJCYXJDb21wb25lbnQsIFRpdGxlT3V0bGV0Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIEFwcGxpY2F0aW9uTW9kdWxlLFxuICAgIEExMXlNb2R1bGUsXG4gICAgVXNlck1vZHVsZSxcbiAgICBDb3JlU2VhcmNoTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBBY3Rpb25Nb2R1bGUsXG4gICAgQnJlYWRjcnVtYk1vZHVsZSxcbiAgICBOYXZpZ2F0b3JNb2R1bGUsXG4gICAgVmVyc2lvbk1vZHVsZSxcbiAgICBUb29sdGlwTW9kdWxlLmZvclJvb3QoKSxcbiAgICBDb2xsYXBzZU1vZHVsZS5mb3JSb290KCksXG4gICAgUHJvZHVjdEV4cGVyaWVuY2VNb2R1bGUsXG4gICAgRHJhd2VyTW9kdWxlLFxuICAgIFVpU2V0dGluZ3NNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW0hlYWRlckJhckNvbXBvbmVudCwgVGl0bGVDb21wb25lbnQsIFRpdGxlT3V0bGV0Q29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBIZWFkZXJNb2R1bGUge31cbiJdfQ==
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvaGVhZGVyL2hlYWRlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMxRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7O0FBRXZEOzs7Ozs7O0dBT0c7QUFzQkgsTUFBTSxPQUFPLFlBQVk7OEdBQVosWUFBWTsrR0FBWixZQUFZLGlCQXBCUixrQkFBa0IsRUFBRSxvQkFBb0IsYUFFckQsaUJBQWlCO1lBQ2pCLFVBQVU7WUFDVixVQUFVO1lBQ1YsZ0JBQWdCO1lBQ2hCLFlBQVk7WUFDWixZQUFZO1lBQ1osZ0JBQWdCO1lBQ2hCLGVBQWU7WUFDZixhQUFhLHVDQUdiLHVCQUF1QjtZQUN2QixZQUFZO1lBQ1osZ0JBQWdCO1lBQ2hCLGNBQWMsYUFFTixrQkFBa0IsRUFBRSxjQUFjLEVBQUUsb0JBQW9COytHQUV2RCxZQUFZLFlBbEJyQixpQkFBaUI7WUFDakIsVUFBVTtZQUNWLFVBQVU7WUFDVixnQkFBZ0I7WUFDaEIsWUFBWTtZQUNaLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLGFBQWE7WUFDYixhQUFhLENBQUMsT0FBTyxFQUFFO1lBQ3ZCLGNBQWMsQ0FBQyxPQUFPLEVBQUU7WUFDeEIsdUJBQXVCO1lBQ3ZCLFlBQVk7WUFDWixnQkFBZ0I7OzJGQUtQLFlBQVk7a0JBckJ4QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGtCQUFrQixFQUFFLG9CQUFvQixDQUFDO29CQUN4RCxPQUFPLEVBQUU7d0JBQ1AsaUJBQWlCO3dCQUNqQixVQUFVO3dCQUNWLFVBQVU7d0JBQ1YsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsYUFBYSxDQUFDLE9BQU8sRUFBRTt3QkFDdkIsY0FBYyxDQUFDLE9BQU8sRUFBRTt3QkFDeEIsdUJBQXVCO3dCQUN2QixZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsY0FBYztxQkFDZjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsb0JBQW9CLENBQUM7aUJBQ3BFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb2xsYXBzZU1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvY29sbGFwc2UnO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvdG9vbHRpcCc7XG5pbXBvcnQgeyBBY3Rpb25Nb2R1bGUgfSBmcm9tICcuLi9hY3Rpb24vYWN0aW9uLm1vZHVsZSc7XG5pbXBvcnQgeyBCcmVhZGNydW1iTW9kdWxlIH0gZnJvbSAnLi4vYnJlYWRjcnVtYi9icmVhZGNydW1iLm1vZHVsZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICcuLi9jb21tb24vY29tbW9uLm1vZHVsZSc7XG5pbXBvcnQgeyBOYXZpZ2F0b3JNb2R1bGUgfSBmcm9tICcuLi9uYXZpZ2F0b3IvbmF2aWdhdG9yLm1vZHVsZSc7XG5pbXBvcnQgeyBQcm9kdWN0RXhwZXJpZW5jZU1vZHVsZSB9IGZyb20gJy4uL3Byb2R1Y3QtZXhwZXJpZW5jZS9wcm9kdWN0LWV4cGVyaWVuY2UubW9kdWxlJztcbmltcG9ydCB7IENvcmVTZWFyY2hNb2R1bGUgfSBmcm9tICcuLi9zZWFyY2gvc2VhcmNoLm1vZHVsZSc7XG5pbXBvcnQgeyBVaVNldHRpbmdzTW9kdWxlIH0gZnJvbSAnLi4vdWktc2V0dGluZ3MvdWktc2V0dGluZ3MubW9kdWxlJztcbmltcG9ydCB7IFVzZXJNb2R1bGUgfSBmcm9tICcuLi91c2VyL3VzZXIubW9kdWxlJztcbmltcG9ydCB7IFZlcnNpb25Nb2R1bGUgfSBmcm9tICcuLi92ZXJzaW9uJztcbmltcG9ydCB7IEhlYWRlckJhckNvbXBvbmVudCB9IGZyb20gJy4vaGVhZGVyLWJhci9oZWFkZXItYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZU91dGxldENvbXBvbmVudCB9IGZyb20gJy4vdGl0bGUvdGl0bGUtb3V0bGV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4vdGl0bGUvdGl0bGUuY29tcG9uZW50JztcbmltcG9ydCB7IEFwcGxpY2F0aW9uTW9kdWxlIH0gZnJvbSAnLi4vYXBwbGljYXRpb24vYXBwbGljYXRpb24ubW9kdWxlJztcbmltcG9ydCB7IERyYXdlck1vZHVsZSB9IGZyb20gJy4uL2RyYXdlci9kcmF3ZXIubW9kdWxlJztcblxuLyoqXG4gKiBUaGUgYW5ndWxhciBtb2R1bGUgZGVmaW5pdGlvbiBmb3IgdGhlIGhlYWRlciBvZiB0aGUgYXBwbGljYXRpb24uXG4gKiBAZXhwb3J0cyBIZWFkZXJCYXJDb21wb25lbnRcbiAqIEBleHBvcnRzIFRpdGxlQ29tcG9uZW50XG4gKiBAZXhwb3J0cyBUaXRsZU91dGxldENvbXBvbmVudFxuICogQGV4cG9ydHMgQXBwSWNvbkNvbXBvbmVudFxuICogQGV4cG9ydHMgQXBwU3dpdGNoZXJDb21wb25lbnRcbiAqL1xuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbSGVhZGVyQmFyQ29tcG9uZW50LCBUaXRsZU91dGxldENvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBBcHBsaWNhdGlvbk1vZHVsZSxcbiAgICBBMTF5TW9kdWxlLFxuICAgIFVzZXJNb2R1bGUsXG4gICAgQ29yZVNlYXJjaE1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQWN0aW9uTW9kdWxlLFxuICAgIEJyZWFkY3J1bWJNb2R1bGUsXG4gICAgTmF2aWdhdG9yTW9kdWxlLFxuICAgIFZlcnNpb25Nb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZS5mb3JSb290KCksXG4gICAgQ29sbGFwc2VNb2R1bGUuZm9yUm9vdCgpLFxuICAgIFByb2R1Y3RFeHBlcmllbmNlTW9kdWxlLFxuICAgIERyYXdlck1vZHVsZSxcbiAgICBVaVNldHRpbmdzTW9kdWxlLFxuICAgIFRpdGxlQ29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtIZWFkZXJCYXJDb21wb25lbnQsIFRpdGxlQ29tcG9uZW50LCBUaXRsZU91dGxldENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgSGVhZGVyTW9kdWxlIHt9XG4iXX0=
@@ -17,15 +17,15 @@ export class TitleComponent {
17
17
  }
18
18
  }
19
19
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TitleComponent, deps: [{ token: i1.HeaderService }], target: i0.ɵɵFactoryTarget.Component }); }
20
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: TitleComponent, selector: "c8y-title", inputs: { pageTitleUpdate: "pageTitleUpdate" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, static: true }], ngImport: i0, template: "<ng-template #template>\n <h1 class=\"text-truncate\">\n <ng-content></ng-content>\n </h1>\n</ng-template>\n" }); }
20
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: TitleComponent, isStandalone: true, selector: "c8y-title", inputs: { pageTitleUpdate: "pageTitleUpdate" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, static: true }], ngImport: i0, template: "<ng-template #template>\n <h1 class=\"text-truncate\">\n <ng-content></ng-content>\n </h1>\n</ng-template>\n" }); }
21
21
  }
22
22
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TitleComponent, decorators: [{
23
23
  type: Component,
24
- args: [{ selector: 'c8y-title', template: "<ng-template #template>\n <h1 class=\"text-truncate\">\n <ng-content></ng-content>\n </h1>\n</ng-template>\n" }]
24
+ args: [{ selector: 'c8y-title', standalone: true, imports: [], template: "<ng-template #template>\n <h1 class=\"text-truncate\">\n <ng-content></ng-content>\n </h1>\n</ng-template>\n" }]
25
25
  }], ctorParameters: () => [{ type: i1.HeaderService }], propDecorators: { pageTitleUpdate: [{
26
26
  type: Input
27
27
  }], template: [{
28
28
  type: ViewChild,
29
29
  args: ['template', { static: true }]
30
30
  }] } });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGl0bGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vY29yZS9oZWFkZXIvdGl0bGUvdGl0bGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vY29yZS9oZWFkZXIvdGl0bGUvdGl0bGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWEsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQU1sRCxNQUFNLE9BQU8sY0FBYztJQUt6QixZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUp2QyxvQkFBZSxHQUFHLElBQUksQ0FBQztJQUltQixDQUFDO0lBRXBELGVBQWU7UUFDYixJQUFJLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQ3BFLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyRCxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7OEdBbEJVLGNBQWM7a0dBQWQsY0FBYyxxTkNQM0IsbUhBS0E7OzJGREVhLGNBQWM7a0JBSjFCLFNBQVM7K0JBQ0UsV0FBVztrRkFJWixlQUFlO3NCQUF2QixLQUFLO2dCQUNtQyxRQUFRO3NCQUFoRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSGVhZGVyU2VydmljZSB9IGZyb20gJy4uL2hlYWRlci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXRpdGxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RpdGxlLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBUaXRsZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHBhZ2VUaXRsZVVwZGF0ZSA9IHRydWU7XG4gIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSkgdGVtcGxhdGU7XG4gIHByaXZhdGUgdmlld0luaXRUaW1lb3V0O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaGVhZGVyU2VydmljZTogSGVhZGVyU2VydmljZSkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy52aWV3SW5pdFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+XG4gICAgICB0aGlzLmhlYWRlclNlcnZpY2UuY2hhbmdlVGl0bGUodGhpcy50ZW1wbGF0ZSwgdGhpcy5wYWdlVGl0bGVVcGRhdGUpXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmhlYWRlclNlcnZpY2Uuc3RhdGUudGl0bGUgPT09IHRoaXMudGVtcGxhdGUpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnZpZXdJbml0VGltZW91dCk7XG4gICAgICB0aGlzLmhlYWRlclNlcnZpY2UuY2hhbmdlVGl0bGUoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGU+XG4gIDxoMSBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvaDE+XG48L25nLXRlbXBsYXRlPlxuIl19
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGl0bGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vY29yZS9oZWFkZXIvdGl0bGUvdGl0bGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vY29yZS9oZWFkZXIvdGl0bGUvdGl0bGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWEsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQVFsRCxNQUFNLE9BQU8sY0FBYztJQUt6QixZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUp2QyxvQkFBZSxHQUFHLElBQUksQ0FBQztJQUltQixDQUFDO0lBRXBELGVBQWU7UUFDYixJQUFJLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQ3BFLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyRCxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7OEdBbEJVLGNBQWM7a0dBQWQsY0FBYyx5T0NUM0IsbUhBS0E7OzJGRElhLGNBQWM7a0JBTjFCLFNBQVM7K0JBQ0UsV0FBVyxjQUVULElBQUksV0FDUCxFQUFFO2tGQUdGLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ21DLFFBQVE7c0JBQWhELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgT25EZXN0cm95LCBWaWV3Q2hpbGQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIZWFkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vaGVhZGVyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktdGl0bGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGl0bGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBUaXRsZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHBhZ2VUaXRsZVVwZGF0ZSA9IHRydWU7XG4gIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSkgdGVtcGxhdGU7XG4gIHByaXZhdGUgdmlld0luaXRUaW1lb3V0O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaGVhZGVyU2VydmljZTogSGVhZGVyU2VydmljZSkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy52aWV3SW5pdFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+XG4gICAgICB0aGlzLmhlYWRlclNlcnZpY2UuY2hhbmdlVGl0bGUodGhpcy50ZW1wbGF0ZSwgdGhpcy5wYWdlVGl0bGVVcGRhdGUpXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmhlYWRlclNlcnZpY2Uuc3RhdGUudGl0bGUgPT09IHRoaXMudGVtcGxhdGUpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnZpZXdJbml0VGltZW91dCk7XG4gICAgICB0aGlzLmhlYWRlclNlcnZpY2UuY2hhbmdlVGl0bGUoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGU+XG4gIDxoMSBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvaDE+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -16,4 +16,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
16
16
  providedIn: 'root'
17
17
  }]
18
18
  }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVkLWxvY2FsZS1kaWN0aW9uYXJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2kxOG4vY2FjaGVkLWxvY2FsZS1kaWN0aW9uYXJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFM0M7O0dBRUc7QUFJSCxNQUFNLE9BQU8sNkJBQTZCO0lBSDFDO1FBSUUscUJBQWdCLEdBQUcsRUFBRSxDQUFDO0tBQ3ZCOzhHQUZZLDZCQUE2QjtrSEFBN0IsNkJBQTZCLGNBRjVCLE1BQU07OzJGQUVQLDZCQUE2QjtrQkFIekMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQSBzZXJ2aWNlIHRvIHByb3ZpZGUgdW5tb2RpZmllZCwgY2FjaGVkIHRyYW5zbGF0aW9ucyBmb3IgYW5ndWxhci5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ2FjaGVkTG9jYWxlRGljdGlvbmFyeVNlcnZpY2Uge1xuICBjYWNoZWREaWN0aW9uYXJ5ID0ge307XG59XG4iXX0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVkLWxvY2FsZS1kaWN0aW9uYXJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2kxOG4vY2FjaGVkLWxvY2FsZS1kaWN0aW9uYXJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFM0M7O0dBRUc7QUFJSCxNQUFNLE9BQU8sNkJBQTZCO0lBSDFDO1FBSUUscUJBQWdCLEdBQWtELEVBQUUsQ0FBQztLQUN0RTs4R0FGWSw2QkFBNkI7a0hBQTdCLDZCQUE2QixjQUY1QixNQUFNOzsyRkFFUCw2QkFBNkI7a0JBSHpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEEgc2VydmljZSB0byBwcm92aWRlIHVubW9kaWZpZWQsIGNhY2hlZCB0cmFuc2xhdGlvbnMgZm9yIGFuZ3VsYXIuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENhY2hlZExvY2FsZURpY3Rpb25hcnlTZXJ2aWNlIHtcbiAgY2FjaGVkRGljdGlvbmFyeTogeyBbbGFuZzogc3RyaW5nXTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB9ID0ge307XG59XG4iXX0=
@@ -1,6 +1,5 @@
1
- import { HttpClient, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
2
1
  import { LOCALE_ID, NgModule } from '@angular/core';
3
- import { MissingTranslationHandler, TranslateService as NgxTranslateService, TranslateCompiler, TranslateFakeCompiler, TranslateLoader, TranslateParser, TranslateStore, USE_DEFAULT_LANG, USE_STORE, USE_EXTEND, DEFAULT_LANGUAGE } from '@ngx-translate/core';
2
+ import { MissingTranslationHandler, TranslateService as NgxTranslateService, TranslateCompiler, TranslateFakeCompiler, TranslateParser, TranslateStore, USE_DEFAULT_LANG, USE_STORE, USE_EXTEND, DEFAULT_LANGUAGE, TranslateLoader } from '@ngx-translate/core';
4
3
  import { OptionsService } from '../common/options.service';
5
4
  import { AppStateService } from '../common/ui-state.service';
6
5
  import { LANGUAGES } from './languages';
@@ -8,11 +7,10 @@ import { LOCALE_PATH } from './locale.path';
8
7
  import { MissingTranslationCustomHandler } from './missing-translation-custom.handler';
9
8
  import { MESSAGES_CORE_I18N } from './pattern-messages.data';
10
9
  import { hookPatternMessages } from './patterns-message.hook';
11
- import { TranslateCustomLoader } from './translate.loader';
12
10
  import { TranslateParserCustom } from './translate.parser';
13
11
  import { C8yTranslateModule } from './c8y-translate.module';
14
- import { CachedLocaleDictionaryService } from './cached-locale-dictionary.service';
15
12
  import { BsDatepickerModule } from 'ngx-bootstrap/datepicker';
13
+ import { of } from 'rxjs';
16
14
  import * as i0 from "@angular/core";
17
15
  /**
18
16
  * The @angular/common/locales folder in node_modules contains files with names created based on RFC 3066bis.
@@ -30,10 +28,6 @@ const angularLocalesLanguageMap = {
30
28
  'zh-TW': 'zh',
31
29
  'pt-BR': 'pt'
32
30
  };
33
- // AoT requires an exported function for factories
34
- export function translateLoaderFactory(httpClient, optionsService, cachedLocaleDictionaryService, localePath, languages) {
35
- return new TranslateCustomLoader(httpClient, optionsService, cachedLocaleDictionaryService, localePath, languages);
36
- }
37
31
  export function localePathFactory(options) {
38
32
  return options.localePath;
39
33
  }
@@ -74,8 +68,8 @@ export class I18nModule {
74
68
  // Extracted from projects/ngx-translate/core/src/public_api.ts
75
69
  {
76
70
  provide: TranslateLoader,
77
- useFactory: translateLoaderFactory,
78
- deps: [HttpClient, OptionsService, CachedLocaleDictionaryService, LOCALE_PATH, LANGUAGES]
71
+ // just a dummy TranslateLoader implementation. The actual translations are loaded by TranslationLoaderService.
72
+ useFactory: () => ({ getTranslation: () => of({}) })
79
73
  },
80
74
  { provide: TranslateCompiler, useClass: TranslateFakeCompiler },
81
75
  { provide: TranslateParser, useClass: TranslateParserCustom },
@@ -96,14 +90,13 @@ export class I18nModule {
96
90
  }
97
91
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: I18nModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
98
92
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: I18nModule, imports: [BsDatepickerModule], exports: [C8yTranslateModule] }); }
99
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: I18nModule, providers: [provideHttpClient(withInterceptorsFromDi())], imports: [BsDatepickerModule, C8yTranslateModule] }); }
93
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: I18nModule, imports: [BsDatepickerModule, C8yTranslateModule] }); }
100
94
  }
101
95
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: I18nModule, decorators: [{
102
96
  type: NgModule,
103
97
  args: [{
104
98
  exports: [C8yTranslateModule],
105
- imports: [BsDatepickerModule],
106
- providers: [provideHttpClient(withInterceptorsFromDi())]
99
+ imports: [BsDatepickerModule]
107
100
  }]
108
101
  }] });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2kxOG4vaTE4bi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxTQUFTLEVBQXVCLFFBQVEsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLGdCQUFnQixJQUFJLG1CQUFtQixFQUN2QyxpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLGVBQWUsRUFDZixlQUFlLEVBQ2YsY0FBYyxFQUNkLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsVUFBVSxFQUNWLGdCQUFnQixFQUNqQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9DQUFvQyxDQUFD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QUFTLEVBQUU7WUFDbEQsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7WUFDeEMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRTtTQUNuRCxDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBTztZQUNMLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLFNBQVMsRUFBRSxVQUFVLENBQUMsU0FBUyxFQUFFO1NBQ2xDLENBQUM7SUFDSixDQUFDOzhHQTlCVSxVQUFVOytHQUFWLFVBQVUsWUFIWCxrQkFBa0IsYUFEbEIsa0JBQWtCOytHQUlqQixVQUFVLGFBRlYsQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUMsWUFEOUMsa0JBQWtCLEVBRGxCLGtCQUFrQjs7MkZBSWpCLFVBQVU7a0JBTHRCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7b0JBQzdCLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO29CQUM3QixTQUFTLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7aUJBQ3pEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgcHJvdmlkZUh0dHBDbGllbnQsIHdpdGhJbnRlcmNlcHRvcnNGcm9tRGkgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBMT0NBTEVfSUQsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgTWlzc2luZ1RyYW5zbGF0aW9uSGFuZGxlcixcbiAgVHJhbnNsYXRlU2VydmljZSBhcyBOZ3hUcmFuc2xhdGVTZXJ2aWNlLFxuICBUcmFuc2xhdGVDb21waWxlcixcbiAgVHJhbnNsYXRlRmFrZUNvbXBpbGVyLFxuICBUcmFuc2xhdGVMb2FkZXIsXG4gIFRyYW5zbGF0ZVBhcnNlcixcbiAgVHJhbnNsYXRlU3RvcmUsXG4gIFVTRV9ERUZBVUxUX0xBTkcsXG4gIFVTRV9TVE9SRSxcbiAgVVNFX0VYVEVORCxcbiAgREVGQVVMVF9MQU5HVUFHRVxufSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL29wdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vdWktc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBMQU5HVUFHRVMgfSBmcm9tICcuL2xhbmd1YWdlcyc7XG5pbXBvcnQgeyBMT0NBTEVfUEFUSCB9IGZyb20gJy4vbG9jYWxlLnBhdGgnO1xuaW1wb3J0IHsgTWlzc2luZ1RyYW5zbGF0aW9uQ3VzdG9tSGFuZGxlciB9IGZyb20gJy4vbWlzc2luZy10cmFuc2xhdGlvbi1jdXN0b20uaGFuZGxlcic7XG5pbXBvcnQgeyBNRVNTQUdFU19DT1JFX0kxOE4gfSBmcm9tICcuL3BhdHRlcm4tbWVzc2FnZXMuZGF0YSc7XG5pbXBvcnQgeyBob29rUGF0dGVybk1lc3NhZ2VzIH0gZnJvbSAnLi9wYXR0ZXJucy1tZXNzYWdlLmhvb2snO1xuaW1wb3J0IHsgVHJhbnNsYXRlQ3VzdG9tTG9hZGVyIH0gZnJvbSAnLi90cmFuc2xhdGUubG9hZGVyJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBhcnNlckN1c3RvbSB9IGZyb20gJy4vdHJhbnNsYXRlLnBhcnNlcic7XG5pbXBvcnQgeyBDOHlUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICcuL2M4eS10cmFuc2xhdGUubW9kdWxlJztcbmltcG9ydCB7IENhY2hlZExvY2FsZURpY3Rpb25hcnlTZXJ2aWNlIH0gZnJvbSAnLi9jYWNoZWQtbG9jYWxlLWRpY3Rpb25hcnkuc2VydmljZSc7XG5pbXBvcnQgeyBCc0RhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2RhdGVwaWNrZXInO1xuXG4vKipcbiAqIFRoZSBAYW5ndWxhci9jb21tb24vbG9jYWxlcyBmb2xkZXIgaW4gbm9kZV9tb2R1bGVzIGNvbnRhaW5zIGZpbGVzIHdpdGggbmFtZXMgY3JlYXRlZCBiYXNlZCBvbiBSRkMgMzA2NmJpcy5cbiAqIGh0dHBzOi8vd3d3LnczLm9yZy9JbnRlcm5hdGlvbmFsL2FydGljbGVzL2JjcDQ3L1xuICpcbiAqIFNhbWUgbWFwcGluZyBhbHNvIGluIGRldmtpdDogcGFja2FnZXNcXGRldmtpdFxcc3JjXFx3ZWJwYWNrXFxjb25maWdcXHRyYW5zbGF0aW9uLnRzXG4gKiBUT0RPOiB1bmlmeSBhbmQgbW92ZSB0byBhIGNvbW1vbiBwbGFjZSBlLmcuIEBjOHkvb3B0aW9ucyBvbmNlIHRoaXMgbm90IG9ubHkgaW5jbHVkZXMgdHlwZXNcbiAqL1xuY29uc3QgYW5ndWxhckxvY2FsZXNMYW5ndWFnZU1hcCA9IHtcbiAgZW46ICdlbi1HQicsXG4gICdlbi1FTic6ICdlbi1HQicsXG4gICdlbi1VUyc6ICdlbicsXG4gICdqYS1KUCc6ICdqYScsXG4gICd6aC1DTic6ICd6aCcsXG4gICd6aC1UVyc6ICd6aCcsXG4gICdwdC1CUic6ICdwdCdcbn0gYXMgY29uc3Q7XG5cbi8vIEFvVCByZXF1aXJlcyBhbiBleHBvcnRlZCBmdW5jdGlvbiBmb3IgZmFjdG9yaWVzXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNsYXRlTG9hZGVyRmFjdG9yeShcbiAgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgb3B0aW9uc1NlcnZpY2U6IE9wdGlvbnNTZXJ2aWNlLFxuICBjYWNoZWRMb2NhbGVEaWN0aW9uYXJ5U2VydmljZTogQ2FjaGVkTG9jYWxlRGljdGlvbmFyeVNlcnZpY2UsXG4gIGxvY2FsZVBhdGg6IHN0cmluZyxcbiAgbGFuZ3VhZ2VzOiBhbnlcbikge1xuICByZXR1cm4gbmV3IFRyYW5zbGF0ZUN1c3RvbUxvYWRlcihcbiAgICBodHRwQ2xpZW50LFxuICAgIG9wdGlvbnNTZXJ2aWNlLFxuICAgIGNhY2hlZExvY2FsZURpY3Rpb25hcnlTZXJ2aWNlLFxuICAgIGxvY2FsZVBhdGgsXG4gICAgbGFuZ3VhZ2VzXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbGVQYXRoRmFjdG9yeShvcHRpb25zOiBPcHRpb25zU2VydmljZSkge1xuICByZXR1cm4gb3B0aW9ucy5sb2NhbGVQYXRoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFuZ3VhZ2VzRmFjdG9yeShvcHRpb25zOiBPcHRpb25zU2VydmljZSkge1xuICByZXR1cm4gb3B0aW9ucy5sYW5ndWFnZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbGVJZChhcHBTdGF0ZVNlcnZpY2U6IEFwcFN0YXRlU2VydmljZSkge1xuICByZXR1cm4ge1xuICAgIGdldCBsYW5nKCkge1xuICAgICAgcmV0dXJuIGdldEFuZ3VsYXJMb2NhbGVzTGFuZ3VhZ2VTdHJpbmcoYXBwU3RhdGVTZXJ2aWNlLnN0YXRlLmxhbmcpO1xuICAgIH0sXG4gICAgdG9Mb3dlckNhc2UoKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYW5nLnRvTG93ZXJDYXNlKCk7XG4gICAgfSxcbiAgICB0b1N0cmluZygpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhbmc7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QW5ndWxhckxvY2FsZXNMYW5ndWFnZVN0cmluZyhsYW5ndWFnZSA9ICdlbicpOiBzdHJpbmcge1xuICBjb25zdCBrZXkgPSBsYW5ndWFnZSBhcyBrZXlvZiB0eXBlb2YgYW5ndWxhckxvY2FsZXNMYW5ndWFnZU1hcDtcbiAgaWYgKGFuZ3VsYXJMb2NhbGVzTGFuZ3VhZ2VNYXBba2V5XSkge1xuICAgIHJldHVybiBhbmd1bGFyTG9jYWxlc0xhbmd1YWdlTWFwW2tleV07XG4gIH1cbiAgcmV0dXJuIGxhbmd1YWdlO1xufVxuXG4vKipcbiAqIFRoZSBhbmd1bGFyIG1vZHVsZSBkZWZpbml0aW9uIGZvciBpMThuICh0cmFuc2xhdGlvbikuXG4gKiBAZXhwb3J0cyBJMThuTW9kdWxlXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtDOHlUcmFuc2xhdGVNb2R1bGVdLFxuICBpbXBvcnRzOiBbQnNEYXRlcGlja2VyTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbcHJvdmlkZUh0dHBDbGllbnQod2l0aEludGVyY2VwdG9yc0Zyb21EaSgpKV1cbn0pXG5leHBvcnQgY2xhc3MgSTE4bk1vZHVsZSB7XG4gIHN0YXRpYyBwcm92aWRlcnMoKTogUHJvdmlkZXJbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHsgcHJvdmlkZTogTE9DQUxFX0lELCB1c2VGYWN0b3J5OiBsb2NhbGVJZCwgZGVwczogW0FwcFN0YXRlU2VydmljZV0gfSxcbiAgICAgIGhvb2tQYXR0ZXJuTWVzc2FnZXMoTUVTU0FHRVNfQ09SRV9JMThOKSxcbiAgICAgIHsgcHJvdmlkZTogTE9DQUxFX1BBVEgsIHVzZUZhY3Rvcnk6IGxvY2FsZVBhdGhGYWN0b3J5LCBkZXBzOiBbT3B0aW9uc1NlcnZpY2VdIH0sXG4gICAgICB7IHByb3ZpZGU6IExBTkdVQUdFUywgdXNlRmFjdG9yeTogbGFuZ3VhZ2VzRmFjdG9yeSwgZGVwczogW09wdGlvbnNTZXJ2aWNlXSB9LFxuXG4gICAgICAvLyBFeHRyYWN0ZWQgZnJvbSBwcm9qZWN0cy9uZ3gtdHJhbnNsYXRlL2NvcmUvc3JjL3B1YmxpY19hcGkudHNcbiAgICAgIHtcbiAgICAgICAgcHJvdmlkZTogVHJhbnNsYXRlTG9hZGVyLFxuICAgICAgICB1c2VGYWN0b3J5OiB0cmFuc2xhdGVMb2FkZXJGYWN0b3J5LFxuICAgICAgICBkZXBzOiBbSHR0cENsaWVudCwgT3B0aW9uc1NlcnZpY2UsIENhY2hlZExvY2FsZURpY3Rpb25hcnlTZXJ2aWNlLCBMT0NBTEVfUEFUSCwgTEFOR1VBR0VTXVxuICAgICAgfSxcbiAgICAgIHsgcHJvdmlkZTogVHJhbnNsYXRlQ29tcGlsZXIsIHVzZUNsYXNzOiBUcmFuc2xhdGVGYWtlQ29tcGlsZXIgfSxcbiAgICAgIHsgcHJvdmlkZTogVHJhbnNsYXRlUGFyc2VyLCB1c2VDbGFzczogVHJhbnNsYXRlUGFyc2VyQ3VzdG9tIH0sXG4gICAgICB7IHByb3ZpZGU6IE1pc3NpbmdUcmFuc2xhdGlvbkhhbmRsZXIsIHVzZUNsYXNzOiBNaXNzaW5nVHJhbnNsYXRpb25DdXN0b21IYW5kbGVyIH0sXG4gICAgICBUcmFuc2xhdGVTdG9yZSxcbiAgICAgIE5neFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICB7IHByb3ZpZGU6IFVTRV9TVE9SRSwgdXNlVmFsdWU6IHVuZGVmaW5lZCB9LFxuICAgICAgeyBwcm92aWRlOiBVU0VfREVGQVVMVF9MQU5HLCB1c2VWYWx1ZTogdW5kZWZpbmVkIH0sXG4gICAgICB7IHByb3ZpZGU6IFVTRV9FWFRFTkQsIHVzZVZhbHVlOiBmYWxzZSB9LFxuICAgICAgeyBwcm92aWRlOiBERUZBVUxUX0xBTkdVQUdFLCB1c2VWYWx1ZTogdW5kZWZpbmVkIH1cbiAgICBdO1xuICB9XG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8STE4bk1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogSTE4bk1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogSTE4bk1vZHVsZS5wcm92aWRlcnMoKVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2kxOG4vaTE4bi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBdUIsUUFBUSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsZ0JBQWdCLElBQUksbUJBQW1CLEVBQ3ZDLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsZUFBZSxFQUNmLGNBQWMsRUFDZCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNoQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRTFCOzs7Ozs7R0FNRztBQUNILE1BQU0seUJBQXlCLEdBQUc7SUFDaEMsRUFBRSxFQUFFLE9BQU87SUFDWCxPQUFP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R2pCLFVBQVUsWUFGWCxrQkFBa0IsRUFEbEIsa0JBQWtCOzsyRkFHakIsVUFBVTtrQkFKdEIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDN0IsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7aUJBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTE9DQUxFX0lELCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE1pc3NpbmdUcmFuc2xhdGlvbkhhbmRsZXIsXG4gIFRyYW5zbGF0ZVNlcnZpY2UgYXMgTmd4VHJhbnNsYXRlU2VydmljZSxcbiAgVHJhbnNsYXRlQ29tcGlsZXIsXG4gIFRyYW5zbGF0ZUZha2VDb21waWxlcixcbiAgVHJhbnNsYXRlUGFyc2VyLFxuICBUcmFuc2xhdGVTdG9yZSxcbiAgVVNFX0RFRkFVTFRfTEFORyxcbiAgVVNFX1NUT1JFLFxuICBVU0VfRVhURU5ELFxuICBERUZBVUxUX0xBTkdVQUdFLFxuICBUcmFuc2xhdGVMb2FkZXJcbn0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBPcHRpb25zU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi9vcHRpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3VpLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTEFOR1VBR0VTIH0gZnJvbSAnLi9sYW5ndWFnZXMnO1xuaW1wb3J0IHsgTE9DQUxFX1BBVEggfSBmcm9tICcuL2xvY2FsZS5wYXRoJztcbmltcG9ydCB7IE1pc3NpbmdUcmFuc2xhdGlvbkN1c3RvbUhhbmRsZXIgfSBmcm9tICcuL21pc3NpbmctdHJhbnNsYXRpb24tY3VzdG9tLmhhbmRsZXInO1xuaW1wb3J0IHsgTUVTU0FHRVNfQ09SRV9JMThOIH0gZnJvbSAnLi9wYXR0ZXJuLW1lc3NhZ2VzLmRhdGEnO1xuaW1wb3J0IHsgaG9va1BhdHRlcm5NZXNzYWdlcyB9IGZyb20gJy4vcGF0dGVybnMtbWVzc2FnZS5ob29rJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBhcnNlckN1c3RvbSB9IGZyb20gJy4vdHJhbnNsYXRlLnBhcnNlcic7XG5pbXBvcnQgeyBDOHlUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICcuL2M4eS10cmFuc2xhdGUubW9kdWxlJztcbmltcG9ydCB7IEJzRGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIFRoZSBAYW5ndWxhci9jb21tb24vbG9jYWxlcyBmb2xkZXIgaW4gbm9kZV9tb2R1bGVzIGNvbnRhaW5zIGZpbGVzIHdpdGggbmFtZXMgY3JlYXRlZCBiYXNlZCBvbiBSRkMgMzA2NmJpcy5cbiAqIGh0dHBzOi8vd3d3LnczLm9yZy9JbnRlcm5hdGlvbmFsL2FydGljbGVzL2JjcDQ3L1xuICpcbiAqIFNhbWUgbWFwcGluZyBhbHNvIGluIGRldmtpdDogcGFja2FnZXNcXGRldmtpdFxcc3JjXFx3ZWJwYWNrXFxjb25maWdcXHRyYW5zbGF0aW9uLnRzXG4gKiBUT0RPOiB1bmlmeSBhbmQgbW92ZSB0byBhIGNvbW1vbiBwbGFjZSBlLmcuIEBjOHkvb3B0aW9ucyBvbmNlIHRoaXMgbm90IG9ubHkgaW5jbHVkZXMgdHlwZXNcbiAqL1xuY29uc3QgYW5ndWxhckxvY2FsZXNMYW5ndWFnZU1hcCA9IHtcbiAgZW46ICdlbi1HQicsXG4gICdlbi1FTic6ICdlbi1HQicsXG4gICdlbi1VUyc6ICdlbicsXG4gICdqYS1KUCc6ICdqYScsXG4gICd6aC1DTic6ICd6aCcsXG4gICd6aC1UVyc6ICd6aCcsXG4gICdwdC1CUic6ICdwdCdcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbGVQYXRoRmFjdG9yeShvcHRpb25zOiBPcHRpb25zU2VydmljZSkge1xuICByZXR1cm4gb3B0aW9ucy5sb2NhbGVQYXRoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFuZ3VhZ2VzRmFjdG9yeShvcHRpb25zOiBPcHRpb25zU2VydmljZSkge1xuICByZXR1cm4gb3B0aW9ucy5sYW5ndWFnZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbGVJZChhcHBTdGF0ZVNlcnZpY2U6IEFwcFN0YXRlU2VydmljZSkge1xuICByZXR1cm4ge1xuICAgIGdldCBsYW5nKCkge1xuICAgICAgcmV0dXJuIGdldEFuZ3VsYXJMb2NhbGVzTGFuZ3VhZ2VTdHJpbmcoYXBwU3RhdGVTZXJ2aWNlLnN0YXRlLmxhbmcpO1xuICAgIH0sXG4gICAgdG9Mb3dlckNhc2UoKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYW5nLnRvTG93ZXJDYXNlKCk7XG4gICAgfSxcbiAgICB0b1N0cmluZygpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhbmc7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QW5ndWxhckxvY2FsZXNMYW5ndWFnZVN0cmluZyhsYW5ndWFnZSA9ICdlbicpOiBzdHJpbmcge1xuICBjb25zdCBrZXkgPSBsYW5ndWFnZSBhcyBrZXlvZiB0eXBlb2YgYW5ndWxhckxvY2FsZXNMYW5ndWFnZU1hcDtcbiAgaWYgKGFuZ3VsYXJMb2NhbGVzTGFuZ3VhZ2VNYXBba2V5XSkge1xuICAgIHJldHVybiBhbmd1bGFyTG9jYWxlc0xhbmd1YWdlTWFwW2tleV07XG4gIH1cbiAgcmV0dXJuIGxhbmd1YWdlO1xufVxuXG4vKipcbiAqIFRoZSBhbmd1bGFyIG1vZHVsZSBkZWZpbml0aW9uIGZvciBpMThuICh0cmFuc2xhdGlvbikuXG4gKiBAZXhwb3J0cyBJMThuTW9kdWxlXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtDOHlUcmFuc2xhdGVNb2R1bGVdLFxuICBpbXBvcnRzOiBbQnNEYXRlcGlja2VyTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBJMThuTW9kdWxlIHtcbiAgc3RhdGljIHByb3ZpZGVycygpOiBQcm92aWRlcltdIHtcbiAgICByZXR1cm4gW1xuICAgICAgeyBwcm92aWRlOiBMT0NBTEVfSUQsIHVzZUZhY3Rvcnk6IGxvY2FsZUlkLCBkZXBzOiBbQXBwU3RhdGVTZXJ2aWNlXSB9LFxuICAgICAgaG9va1BhdHRlcm5NZXNzYWdlcyhNRVNTQUdFU19DT1JFX0kxOE4pLFxuICAgICAgeyBwcm92aWRlOiBMT0NBTEVfUEFUSCwgdXNlRmFjdG9yeTogbG9jYWxlUGF0aEZhY3RvcnksIGRlcHM6IFtPcHRpb25zU2VydmljZV0gfSxcbiAgICAgIHsgcHJvdmlkZTogTEFOR1VBR0VTLCB1c2VGYWN0b3J5OiBsYW5ndWFnZXNGYWN0b3J5LCBkZXBzOiBbT3B0aW9uc1NlcnZpY2VdIH0sXG5cbiAgICAgIC8vIEV4dHJhY3RlZCBmcm9tIHByb2plY3RzL25neC10cmFuc2xhdGUvY29yZS9zcmMvcHVibGljX2FwaS50c1xuICAgICAge1xuICAgICAgICBwcm92aWRlOiBUcmFuc2xhdGVMb2FkZXIsXG4gICAgICAgIC8vIGp1c3QgYSBkdW1teSBUcmFuc2xhdGVMb2FkZXIgaW1wbGVtZW50YXRpb24uIFRoZSBhY3R1YWwgdHJhbnNsYXRpb25zIGFyZSBsb2FkZWQgYnkgVHJhbnNsYXRpb25Mb2FkZXJTZXJ2aWNlLlxuICAgICAgICB1c2VGYWN0b3J5OiAoKSA9PiAoeyBnZXRUcmFuc2xhdGlvbjogKCkgPT4gb2Yoe30pIH0pIGFzIFRyYW5zbGF0ZUxvYWRlclxuICAgICAgfSxcbiAgICAgIHsgcHJvdmlkZTogVHJhbnNsYXRlQ29tcGlsZXIsIHVzZUNsYXNzOiBUcmFuc2xhdGVGYWtlQ29tcGlsZXIgfSxcbiAgICAgIHsgcHJvdmlkZTogVHJhbnNsYXRlUGFyc2VyLCB1c2VDbGFzczogVHJhbnNsYXRlUGFyc2VyQ3VzdG9tIH0sXG4gICAgICB7IHByb3ZpZGU6IE1pc3NpbmdUcmFuc2xhdGlvbkhhbmRsZXIsIHVzZUNsYXNzOiBNaXNzaW5nVHJhbnNsYXRpb25DdXN0b21IYW5kbGVyIH0sXG4gICAgICBUcmFuc2xhdGVTdG9yZSxcbiAgICAgIE5neFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICB7IHByb3ZpZGU6IFVTRV9TVE9SRSwgdXNlVmFsdWU6IHVuZGVmaW5lZCB9LFxuICAgICAgeyBwcm92aWRlOiBVU0VfREVGQVVMVF9MQU5HLCB1c2VWYWx1ZTogdW5kZWZpbmVkIH0sXG4gICAgICB7IHByb3ZpZGU6IFVTRV9FWFRFTkQsIHVzZVZhbHVlOiBmYWxzZSB9LFxuICAgICAgeyBwcm92aWRlOiBERUZBVUxUX0xBTkdVQUdFLCB1c2VWYWx1ZTogdW5kZWZpbmVkIH1cbiAgICBdO1xuICB9XG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8STE4bk1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogSTE4bk1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogSTE4bk1vZHVsZS5wcm92aWRlcnMoKVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -8,7 +8,6 @@ export * from './missing-translation-custom.handler';
8
8
  export * from './translate.service';
9
9
  export * from './gettext';
10
10
  export * from './pattern-messages.data';
11
- export * from './translate.loader';
12
11
  export * from './patterns-message.hook';
13
12
  export * from './c8y-translate.module';
14
13
  export * from './c8y-translate.directive';
@@ -16,4 +15,6 @@ export * from './c8y-translate.pipe';
16
15
  export * from './cached-locale-dictionary.service';
17
16
  export * from './property-value-transform.service';
18
17
  export * from './name-transform.pipe';
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2kxOG4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcGF0dGVybi1tZXNzYWdlcy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vaTE4bi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9sYW5ndWFnZXMnO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2xhdGUucGFyc2VyJztcbmV4cG9ydCAqIGZyb20gJy4vbG9jYWxlLnBhdGgnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2FkLWxvY2FsZSc7XG5leHBvcnQgKiBmcm9tICcuL21pc3NpbmctdHJhbnNsYXRpb24tY3VzdG9tLmhhbmRsZXInO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2xhdGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2dldHRleHQnO1xuZXhwb3J0ICogZnJvbSAnLi9wYXR0ZXJuLW1lc3NhZ2VzLmRhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2xhdGUubG9hZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vcGF0dGVybnMtbWVzc2FnZS5ob29rJztcbmV4cG9ydCAqIGZyb20gJy4vYzh5LXRyYW5zbGF0ZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jOHktdHJhbnNsYXRlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2M4eS10cmFuc2xhdGUucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2NhY2hlZC1sb2NhbGUtZGljdGlvbmFyeS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvcGVydHktdmFsdWUtdHJhbnNmb3JtLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9uYW1lLXRyYW5zZm9ybS5waXBlJztcbiJdfQ==
18
+ export * from './translation-loader.service';
19
+ export * from './translation-utils';
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2kxOG4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wYXR0ZXJuLW1lc3NhZ2VzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pMThuLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xhbmd1YWdlcyc7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zbGF0ZS5wYXJzZXInO1xuZXhwb3J0ICogZnJvbSAnLi9sb2NhbGUucGF0aCc7XG5leHBvcnQgKiBmcm9tICcuL2xvYWQtbG9jYWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbWlzc2luZy10cmFuc2xhdGlvbi1jdXN0b20uaGFuZGxlcic7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zbGF0ZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZ2V0dGV4dCc7XG5leHBvcnQgKiBmcm9tICcuL3BhdHRlcm4tbWVzc2FnZXMuZGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL3BhdHRlcm5zLW1lc3NhZ2UuaG9vayc7XG5leHBvcnQgKiBmcm9tICcuL2M4eS10cmFuc2xhdGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vYzh5LXRyYW5zbGF0ZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9jOHktdHJhbnNsYXRlLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jYWNoZWQtbG9jYWxlLWRpY3Rpb25hcnkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3Byb3BlcnR5LXZhbHVlLXRyYW5zZm9ybS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbmFtZS10cmFuc2Zvcm0ucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zbGF0aW9uLWxvYWRlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNsYXRpb24tdXRpbHMnO1xuIl19
@@ -1,7 +1,7 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { TranslateDefaultParser } from '@ngx-translate/core';
3
3
  import { get } from 'lodash-es';
4
- import { trimTranslationKey } from './translate.loader';
4
+ import { trimTranslationKey } from './translation-utils';
5
5
  import * as i0 from "@angular/core";
6
6
  export class TranslateParserCustom extends TranslateDefaultParser {
7
7
  getValue(target, key) {
@@ -21,4 +21,4 @@ export class TranslateParserCustom extends TranslateDefaultParser {
21
21
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TranslateParserCustom, decorators: [{
22
22
  type: Injectable
23
23
  }] });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvaTE4bi90cmFuc2xhdGUucGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFHeEQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLHNCQUFzQjtJQUMvRCxRQUFRLENBQUMsTUFBVyxFQUFFLEdBQVc7UUFDL0IsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsSUFBSSxVQUFVLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUIsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNwQixVQUFVLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNoQyxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7OEdBWFUscUJBQXFCO2tIQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVEZWZhdWx0UGFyc2VyIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgdHJpbVRyYW5zbGF0aW9uS2V5IH0gZnJvbSAnLi90cmFuc2xhdGUubG9hZGVyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRyYW5zbGF0ZVBhcnNlckN1c3RvbSBleHRlbmRzIFRyYW5zbGF0ZURlZmF1bHRQYXJzZXIge1xuICBnZXRWYWx1ZSh0YXJnZXQ6IGFueSwga2V5OiBzdHJpbmcpOiBhbnkge1xuICAgIGNvbnN0IHRyaW1tZWRLZXkgPSB0cmltVHJhbnNsYXRpb25LZXkoa2V5KTtcbiAgICBsZXQgdHJhbnNsYXRlZCA9IGdldCh0YXJnZXQsIFt0cmltbWVkS2V5XSk7XG4gICAgaWYgKCF0cmFuc2xhdGVkKSB7XG4gICAgICBjb25zdCBrZXlzID0ga2V5LnNwbGl0KCcuJyk7XG4gICAgICBpZiAoa2V5cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHRyYW5zbGF0ZWQgPSBnZXQodGFyZ2V0LCBrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJhbnNsYXRlZDtcbiAgfVxufVxuIl19
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvaTE4bi90cmFuc2xhdGUucGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFHekQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLHNCQUFzQjtJQUMvRCxRQUFRLENBQUMsTUFBVyxFQUFFLEdBQVc7UUFDL0IsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsSUFBSSxVQUFVLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUIsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNwQixVQUFVLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNoQyxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7OEdBWFUscUJBQXFCO2tIQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVEZWZhdWx0UGFyc2VyIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgdHJpbVRyYW5zbGF0aW9uS2V5IH0gZnJvbSAnLi90cmFuc2xhdGlvbi11dGlscyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVQYXJzZXJDdXN0b20gZXh0ZW5kcyBUcmFuc2xhdGVEZWZhdWx0UGFyc2VyIHtcbiAgZ2V0VmFsdWUodGFyZ2V0OiBhbnksIGtleTogc3RyaW5nKTogYW55IHtcbiAgICBjb25zdCB0cmltbWVkS2V5ID0gdHJpbVRyYW5zbGF0aW9uS2V5KGtleSk7XG4gICAgbGV0IHRyYW5zbGF0ZWQgPSBnZXQodGFyZ2V0LCBbdHJpbW1lZEtleV0pO1xuICAgIGlmICghdHJhbnNsYXRlZCkge1xuICAgICAgY29uc3Qga2V5cyA9IGtleS5zcGxpdCgnLicpO1xuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMSkge1xuICAgICAgICB0cmFuc2xhdGVkID0gZ2V0KHRhcmdldCwga2V5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRyYW5zbGF0ZWQ7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,132 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { OptionsService } from '../common';
3
+ import { CachedLocaleDictionaryService } from './cached-locale-dictionary.service';
4
+ import { PluginsResolveService } from '../plugins';
5
+ import { LOCALE_PATH } from './locale.path';
6
+ import { LANGUAGES } from './languages';
7
+ import { BehaviorSubject, combineLatest, defer, of } from 'rxjs';
8
+ import { catchError, distinctUntilChanged, map, shareReplay, switchMap, tap } from 'rxjs/operators';
9
+ import { TranslateService } from '@ngx-translate/core';
10
+ import { getDictionaryWithTrimmedKeys } from './translation-utils';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "../common";
13
+ import * as i2 from "./cached-locale-dictionary.service";
14
+ import * as i3 from "../plugins";
15
+ import * as i4 from "@ngx-translate/core";
16
+ /**
17
+ * A service to load translations from different sources.
18
+ * It combines translations from the app, user-defined translations, and plugins.
19
+ * It also caches translations to avoid unnecessary requests.
20
+ *
21
+ * Is used instead of the default TranslateLoader functionality that ngx-translate provides as otherwise only the first translations from TranslateLoader observable would have been picked up.
22
+ * This would have been problematic, as we can only load the plugin translations after the login and we need to have at least the basic translations already on the login screen.
23
+ */
24
+ export class TranslationLoaderService {
25
+ constructor(optionsService, cachedLocaleDictionaryService, pluginResolverService, translateService, path = null, languages = null) {
26
+ this.optionsService = optionsService;
27
+ this.cachedLocaleDictionaryService = cachedLocaleDictionaryService;
28
+ this.pluginResolverService = pluginResolverService;
29
+ this.translateService = translateService;
30
+ this.path = path;
31
+ this.languages = languages;
32
+ this.cache = new Map();
33
+ this.reloadTrigger$ = new BehaviorSubject(null);
34
+ this.translateService.onLangChange
35
+ .pipe(map(event => event.lang), distinctUntilChanged(), switchMap(lang => this.getTranslation(lang).pipe(map(translations => ({ lang, translations })))))
36
+ .subscribe(({ lang, translations }) => {
37
+ this.translateService.setTranslation(lang, translations, false);
38
+ });
39
+ }
40
+ getTranslation(lang) {
41
+ const translations$ = combineLatest([
42
+ defer(() => this.getTranslationsFromApp(lang)),
43
+ defer(() => this.getUserDefinedTranslations(lang)),
44
+ defer(() => this.optionsService.get$('langsDetails', {})),
45
+ defer(() => this.getTranslationsForPugins(lang))
46
+ ]).pipe(map(([appTranslations, userDefinedTranslations, langsDetails, pluginTranslations]) => {
47
+ const translationsFromBranding = (langsDetails && langsDetails[lang]) || {};
48
+ return {
49
+ ...appTranslations,
50
+ ...pluginTranslations,
51
+ ...translationsFromBranding,
52
+ ...userDefinedTranslations
53
+ };
54
+ }), tap(dictionary => {
55
+ this.cachedLocaleDictionaryService.cachedDictionary[lang] = dictionary;
56
+ }), map(dictionary => getDictionaryWithTrimmedKeys(dictionary)), catchError(() => of({})));
57
+ return this.reloadTrigger$.pipe(switchMap(() => translations$));
58
+ }
59
+ triggerReload() {
60
+ this.clearCache();
61
+ this.reloadTrigger$.next();
62
+ }
63
+ clearCache() {
64
+ this.cache.clear();
65
+ }
66
+ getTranslationsForPugins(lang) {
67
+ return this.pluginResolverService.contextPathsFromWhereRemotesHaveBeenLoaded$.pipe(switchMap(plugins => {
68
+ // no need to load translations for self scoped plugins
69
+ plugins = plugins.filter(plugin => plugin !== this.optionsService.contextPath);
70
+ if (!plugins.length) {
71
+ return of({});
72
+ }
73
+ return combineLatest(plugins.map(plugin => this.getTranslationsForPlugin(lang, plugin))).pipe(map(translations => {
74
+ return translations.reduce((acc, translation) => ({ ...acc, ...translation }), {});
75
+ }));
76
+ }));
77
+ }
78
+ getTranslationsForPlugin(lang, pluginId) {
79
+ const url = `/apps/${pluginId}/${lang}.json`;
80
+ return this.getTranslationFromPath(url, lang);
81
+ }
82
+ getTranslationsFromApp(lang) {
83
+ const path = this.path || '';
84
+ let url = `${path}${lang}.json`;
85
+ if (this.languages && this.languages[lang] && this.languages[lang].url) {
86
+ url = this.languages[lang].url;
87
+ }
88
+ return this.getTranslationFromPath(url, lang);
89
+ }
90
+ getUserDefinedTranslations(lang) {
91
+ const url = `/apps/public/user-defined-translations/${lang}.json`;
92
+ return this.getTranslationFromPath(url, lang);
93
+ }
94
+ getTranslationFromPath(path, lang) {
95
+ if (this.cache.has(path)) {
96
+ return this.cache.get(path);
97
+ }
98
+ const observable = defer(async () => {
99
+ try {
100
+ const fetchResponse = await fetch(path);
101
+ if (!fetchResponse.ok) {
102
+ throw new Error(`Unexpected response status: ${fetchResponse.status}`);
103
+ }
104
+ const responseBody = await fetchResponse.json();
105
+ if (responseBody[lang]) {
106
+ return responseBody[lang];
107
+ }
108
+ }
109
+ catch (e) {
110
+ console.warn(`Failed to fetch translations from ${path}`);
111
+ }
112
+ return {};
113
+ }).pipe(shareReplay(1));
114
+ this.cache.set(path, observable);
115
+ return observable;
116
+ }
117
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TranslationLoaderService, deps: [{ token: i1.OptionsService }, { token: i2.CachedLocaleDictionaryService }, { token: i3.PluginsResolveService }, { token: i4.TranslateService }, { token: LOCALE_PATH }, { token: LANGUAGES }], target: i0.ɵɵFactoryTarget.Injectable }); }
118
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TranslationLoaderService, providedIn: 'root' }); }
119
+ }
120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TranslationLoaderService, decorators: [{
121
+ type: Injectable,
122
+ args: [{
123
+ providedIn: 'root'
124
+ }]
125
+ }], ctorParameters: () => [{ type: i1.OptionsService }, { type: i2.CachedLocaleDictionaryService }, { type: i3.PluginsResolveService }, { type: i4.TranslateService }, { type: undefined, decorators: [{
126
+ type: Inject,
127
+ args: [LOCALE_PATH]
128
+ }] }, { type: undefined, decorators: [{
129
+ type: Inject,
130
+ args: [LANGUAGES]
131
+ }] }] });
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tbG9hZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2kxOG4vdHJhbnNsYXRpb24tbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMzQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBRW5FOzs7Ozs7O0dBT0c7QUFJSCxNQUFNLE9BQU8sd0JBQXdCO0lBSW5DLFlBQ1UsY0FBOEIsRUFDOUIsNkJBQTRELEVBQzVELHFCQUE0QyxFQUM1QyxnQkFBa0MsRUFDYixPQUFlLElBQUksRUFDckIsWUFBd0QsSUFBSTtRQUwvRSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0NBQTZCLEdBQTdCLDZCQUE2QixDQUErQjtRQUM1RCwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FB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QUMsRUFBRSxDQUFDO2dCQUNYLE9BQU8sQ0FBQyxJQUFJLENBQUMscUNBQXFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDNUQsQ0FBQztZQUNELE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNqQyxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDOzhHQTdIVSx3QkFBd0Isa0tBU3pCLFdBQVcsYUFDWCxTQUFTO2tIQVZSLHdCQUF3QixjQUZ2QixNQUFNOzsyRkFFUCx3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFVSSxNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixNQUFNOzJCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IENhY2hlZExvY2FsZURpY3Rpb25hcnlTZXJ2aWNlIH0gZnJvbSAnLi9jYWNoZWQtbG9jYWxlLWRpY3Rpb25hcnkuc2VydmljZSc7XG5pbXBvcnQgeyBQbHVnaW5zUmVzb2x2ZVNlcnZpY2UgfSBmcm9tICcuLi9wbHVnaW5zJztcbmltcG9ydCB7IExPQ0FMRV9QQVRIIH0gZnJvbSAnLi9sb2NhbGUucGF0aCc7XG5pbXBvcnQgeyBMQU5HVUFHRVMgfSBmcm9tICcuL2xhbmd1YWdlcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGRlZmVyLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgZ2V0RGljdGlvbmFyeVdpdGhUcmltbWVkS2V5cyB9IGZyb20gJy4vdHJhbnNsYXRpb24tdXRpbHMnO1xuXG4vKipcbiAqIEEgc2VydmljZSB0byBsb2FkIHRyYW5zbGF0aW9ucyBmcm9tIGRpZmZlcmVudCBzb3VyY2VzLlxuICogSXQgY29tYmluZXMgdHJhbnNsYXRpb25zIGZyb20gdGhlIGFwcCwgdXNlci1kZWZpbmVkIHRyYW5zbGF0aW9ucywgYW5kIHBsdWdpbnMuXG4gKiBJdCBhbHNvIGNhY2hlcyB0cmFuc2xhdGlvbnMgdG8gYXZvaWQgdW5uZWNlc3NhcnkgcmVxdWVzdHMuXG4gKlxuICogSXMgdXNlZCBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IFRyYW5zbGF0ZUxvYWRlciBmdW5jdGlvbmFsaXR5IHRoYXQgbmd4LXRyYW5zbGF0ZSBwcm92aWRlcyBhcyBvdGhlcndpc2Ugb25seSB0aGUgZmlyc3QgdHJhbnNsYXRpb25zIGZyb20gVHJhbnNsYXRlTG9hZGVyIG9ic2VydmFibGUgd291bGQgaGF2ZSBiZWVuIHBpY2tlZCB1cC5cbiAqIFRoaXMgd291bGQgaGF2ZSBiZWVuIHByb2JsZW1hdGljLCBhcyB3ZSBjYW4gb25seSBsb2FkIHRoZSBwbHVnaW4gdHJhbnNsYXRpb25zIGFmdGVyIHRoZSBsb2dpbiBhbmQgd2UgbmVlZCB0byBoYXZlIGF0IGxlYXN0IHRoZSBiYXNpYyB0cmFuc2xhdGlvbnMgYWxyZWFkeSBvbiB0aGUgbG9naW4gc2NyZWVuLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGlvbkxvYWRlclNlcnZpY2Uge1xuICBwcml2YXRlIGNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIE9ic2VydmFibGU8eyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfT4+KCk7XG4gIHByaXZhdGUgcmVsb2FkVHJpZ2dlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHZvaWQ+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb3B0aW9uc1NlcnZpY2U6IE9wdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2FjaGVkTG9jYWxlRGljdGlvbmFyeVNlcnZpY2U6IENhY2hlZExvY2FsZURpY3Rpb25hcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGx1Z2luUmVzb2x2ZXJTZXJ2aWNlOiBQbHVnaW5zUmVzb2x2ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIEBJbmplY3QoTE9DQUxFX1BBVEgpIHByaXZhdGUgcGF0aDogc3RyaW5nID0gbnVsbCxcbiAgICBASW5qZWN0KExBTkdVQUdFUykgcHJpdmF0ZSBsYW5ndWFnZXM6IHsgW2tleTogc3RyaW5nXTogeyB1cmw/OiBzdHJpbmcgfSB9IHwgbnVsbCA9IG51bGxcbiAgKSB7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChldmVudCA9PiBldmVudC5sYW5nKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgc3dpdGNoTWFwKGxhbmcgPT5cbiAgICAgICAgICB0aGlzLmdldFRyYW5zbGF0aW9uKGxhbmcpLnBpcGUobWFwKHRyYW5zbGF0aW9ucyA9PiAoeyBsYW5nLCB0cmFuc2xhdGlvbnMgfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh7IGxhbmcsIHRyYW5zbGF0aW9ucyB9KSA9PiB7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zZXRUcmFuc2xhdGlvbihsYW5nLCB0cmFuc2xhdGlvbnMsIGZhbHNlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZ2V0VHJhbnNsYXRpb24obGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTx7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9PiB7XG4gICAgY29uc3QgdHJhbnNsYXRpb25zJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgZGVmZXIoKCkgPT4gdGhpcy5nZXRUcmFuc2xhdGlvbnNGcm9tQXBwKGxhbmcpKSxcbiAgICAgIGRlZmVyKCgpID0+IHRoaXMuZ2V0VXNlckRlZmluZWRUcmFuc2xhdGlvbnMobGFuZykpLFxuICAgICAgZGVmZXIoKCkgPT4gdGhpcy5vcHRpb25zU2VydmljZS5nZXQkKCdsYW5nc0RldGFpbHMnLCB7fSkpLFxuICAgICAgZGVmZXIoKCkgPT4gdGhpcy5nZXRUcmFuc2xhdGlvbnNGb3JQdWdpbnMobGFuZykpXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW2FwcFRyYW5zbGF0aW9ucywgdXNlckRlZmluZWRUcmFuc2xhdGlvbnMsIGxhbmdzRGV0YWlscywgcGx1Z2luVHJhbnNsYXRpb25zXSkgPT4ge1xuICAgICAgICBjb25zdCB0cmFuc2xhdGlvbnNGcm9tQnJhbmRpbmcgPSAobGFuZ3NEZXRhaWxzICYmIGxhbmdzRGV0YWlsc1tsYW5nXSkgfHwge307XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uYXBwVHJhbnNsYXRpb25zLFxuICAgICAgICAgIC4uLnBsdWdpblRyYW5zbGF0aW9ucyxcbiAgICAgICAgICAuLi50cmFuc2xhdGlvbnNGcm9tQnJhbmRpbmcsXG4gICAgICAgICAgLi4udXNlckRlZmluZWRUcmFuc2xhdGlvbnNcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgICAgdGFwKGRpY3Rpb25hcnkgPT4ge1xuICAgICAgICB0aGlzLmNhY2hlZExvY2FsZURpY3Rpb25hcnlTZXJ2aWNlLmNhY2hlZERpY3Rpb25hcnlbbGFuZ10gPSBkaWN0aW9uYXJ5O1xuICAgICAgfSksXG4gICAgICBtYXAoZGljdGlvbmFyeSA9PiBnZXREaWN0aW9uYXJ5V2l0aFRyaW1tZWRLZXlzKGRpY3Rpb25hcnkpKSxcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2Yoe30pKVxuICAgICk7XG5cbiAgICByZXR1cm4gdGhpcy5yZWxvYWRUcmlnZ2VyJC5waXBlKHN3aXRjaE1hcCgoKSA9PiB0cmFuc2xhdGlvbnMkKSk7XG4gIH1cblxuICB0cmlnZ2VyUmVsb2FkKCkge1xuICAgIHRoaXMuY2xlYXJDYWNoZSgpO1xuICAgIHRoaXMucmVsb2FkVHJpZ2dlciQubmV4dCgpO1xuICB9XG5cbiAgY2xlYXJDYWNoZSgpIHtcbiAgICB0aGlzLmNhY2hlLmNsZWFyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0VHJhbnNsYXRpb25zRm9yUHVnaW5zKGxhbmc6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnBsdWdpblJlc29sdmVyU2VydmljZS5jb250ZXh0UGF0aHNGcm9tV2hlcmVSZW1vdGVzSGF2ZUJlZW5Mb2FkZWQkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAocGx1Z2lucyA9PiB7XG4gICAgICAgIC8vIG5vIG5lZWQgdG8gbG9hZCB0cmFuc2xhdGlvbnMgZm9yIHNlbGYgc2NvcGVkIHBsdWdpbnNcbiAgICAgICAgcGx1Z2lucyA9IHBsdWdpbnMuZmlsdGVyKHBsdWdpbiA9PiBwbHVnaW4gIT09IHRoaXMub3B0aW9uc1NlcnZpY2UuY29udGV4dFBhdGgpO1xuICAgICAgICBpZiAoIXBsdWdpbnMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKHt9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChcbiAgICAgICAgICBwbHVnaW5zLm1hcChwbHVnaW4gPT4gdGhpcy5nZXRUcmFuc2xhdGlvbnNGb3JQbHVnaW4obGFuZywgcGx1Z2luKSlcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgIG1hcCh0cmFuc2xhdGlvbnMgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0aW9ucy5yZWR1Y2UoKGFjYywgdHJhbnNsYXRpb24pID0+ICh7IC4uLmFjYywgLi4udHJhbnNsYXRpb24gfSksIHt9KTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFRyYW5zbGF0aW9uc0ZvclBsdWdpbihsYW5nOiBzdHJpbmcsIHBsdWdpbklkOiBzdHJpbmcpIHtcbiAgICBjb25zdCB1cmwgPSBgL2FwcHMvJHtwbHVnaW5JZH0vJHtsYW5nfS5qc29uYDtcbiAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGlvbkZyb21QYXRoKHVybCwgbGFuZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0VHJhbnNsYXRpb25zRnJvbUFwcChsYW5nOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5wYXRoIHx8ICcnO1xuICAgIGxldCB1cmwgPSBgJHtwYXRofSR7bGFuZ30uanNvbmA7XG4gICAgaWYgKHRoaXMubGFuZ3VhZ2VzICYmIHRoaXMubGFuZ3VhZ2VzW2xhbmddICYmIHRoaXMubGFuZ3VhZ2VzW2xhbmddLnVybCkge1xuICAgICAgdXJsID0gdGhpcy5sYW5ndWFnZXNbbGFuZ10udXJsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldFRyYW5zbGF0aW9uRnJvbVBhdGgodXJsLCBsYW5nKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRVc2VyRGVmaW5lZFRyYW5zbGF0aW9ucyhsYW5nOiBzdHJpbmcpIHtcbiAgICBjb25zdCB1cmwgPSBgL2FwcHMvcHVibGljL3VzZXItZGVmaW5lZC10cmFuc2xhdGlvbnMvJHtsYW5nfS5qc29uYDtcbiAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGlvbkZyb21QYXRoKHVybCwgbGFuZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0VHJhbnNsYXRpb25Gcm9tUGF0aChcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgbGFuZzogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8eyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfT4ge1xuICAgIGlmICh0aGlzLmNhY2hlLmhhcyhwYXRoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuY2FjaGUuZ2V0KHBhdGgpO1xuICAgIH1cbiAgICBjb25zdCBvYnNlcnZhYmxlID0gZGVmZXIoYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZmV0Y2hSZXNwb25zZSA9IGF3YWl0IGZldGNoKHBhdGgpO1xuICAgICAgICBpZiAoIWZldGNoUmVzcG9uc2Uub2spIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgcmVzcG9uc2Ugc3RhdHVzOiAke2ZldGNoUmVzcG9uc2Uuc3RhdHVzfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2VCb2R5ID0gYXdhaXQgZmV0Y2hSZXNwb25zZS5qc29uKCk7XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlQm9keVtsYW5nXSkge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZUJvZHlbbGFuZ107XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBGYWlsZWQgdG8gZmV0Y2ggdHJhbnNsYXRpb25zIGZyb20gJHtwYXRofWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH0pLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xuICAgIHRoaXMuY2FjaGUuc2V0KHBhdGgsIG9ic2VydmFibGUpO1xuICAgIHJldHVybiBvYnNlcnZhYmxlO1xuICB9XG59XG4iXX0=