@c8y/ngx-components 1021.11.1 → 1021.21.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 (434) hide show
  1. package/alarms/alarms-date-filter.component.d.ts +34 -0
  2. package/alarms/alarms-date-filter.component.d.ts.map +1 -0
  3. package/alarms/alarms-filter.component.d.ts +2 -1
  4. package/alarms/alarms-filter.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 +5 -2
  8. package/alarms/alarms-view.service.d.ts.map +1 -1
  9. package/alarms/alarms.component.d.ts +3 -1
  10. package/alarms/alarms.component.d.ts.map +1 -1
  11. package/alarms/alarms.model.d.ts +47 -1
  12. package/alarms/alarms.model.d.ts.map +1 -1
  13. package/alarms/alarms.module.d.ts +15 -13
  14. package/alarms/alarms.module.d.ts.map +1 -1
  15. package/branding/shared/data/store-branding.service.d.ts +5 -0
  16. package/branding/shared/data/store-branding.service.d.ts.map +1 -1
  17. package/branding/shared/lazy/branding/branding.component.d.ts.map +1 -1
  18. package/context-dashboard/context-dashboard.model.d.ts +1 -0
  19. package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
  20. package/context-dashboard/context-dashboard.service.d.ts +7 -5
  21. package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
  22. package/context-dashboard/dashboard-detail.component.d.ts +4 -7
  23. package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
  24. package/context-dashboard/dashboard-detail.service.d.ts +4 -4
  25. package/context-dashboard/dashboard-detail.service.d.ts.map +1 -1
  26. package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts +2 -2
  27. package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts.map +1 -1
  28. package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts +19 -6
  29. package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts.map +1 -1
  30. package/core/action-bar/action-bar-item.component.d.ts +1 -1
  31. package/core/action-bar/action-bar-item.component.d.ts.map +1 -1
  32. package/core/action-bar/action-bar.module.d.ts +6 -6
  33. package/core/action-bar/action-bar.module.d.ts.map +1 -1
  34. package/core/bootstrap/bootstrap.component.d.ts +3 -1
  35. package/core/bootstrap/bootstrap.component.d.ts.map +1 -1
  36. package/core/common/aggregation/aggregation.model.d.ts +39 -0
  37. package/core/common/aggregation/aggregation.model.d.ts.map +1 -0
  38. package/core/common/aggregation/aggregation.service.d.ts +17 -0
  39. package/core/common/aggregation/aggregation.service.d.ts.map +1 -0
  40. package/core/common/index.d.ts +4 -0
  41. package/core/common/index.d.ts.map +1 -1
  42. package/core/common/inter-app.service.d.ts +48 -0
  43. package/core/common/inter-app.service.d.ts.map +1 -0
  44. package/core/common/interval-based-reload.abstract.d.ts +120 -0
  45. package/core/common/interval-based-reload.abstract.d.ts.map +1 -0
  46. package/core/dashboard/dashboard.module.d.ts +26 -20
  47. package/core/dashboard/dashboard.module.d.ts.map +1 -1
  48. package/core/dashboard/index.d.ts +3 -0
  49. package/core/dashboard/index.d.ts.map +1 -1
  50. package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts +31 -0
  51. package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts.map +1 -0
  52. package/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.d.ts +17 -0
  53. package/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.d.ts.map +1 -0
  54. package/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.d.ts +4 -0
  55. package/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.d.ts.map +1 -0
  56. package/core/dashboard/widget-auto-refresh-context/index.d.ts +8 -0
  57. package/core/dashboard/widget-auto-refresh-context/index.d.ts.map +1 -0
  58. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.d.ts +7 -0
  59. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.d.ts.map +1 -0
  60. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts +29 -0
  61. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts.map +1 -0
  62. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.d.ts +15 -0
  63. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.d.ts.map +1 -0
  64. package/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.d.ts +169 -0
  65. package/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.d.ts.map +1 -0
  66. package/core/dashboard/widget-change-event.model.d.ts +1 -1
  67. package/core/dashboard/widget-change-event.model.d.ts.map +1 -1
  68. package/core/dashboard/widgets-dashboard.component.d.ts +6 -3
  69. package/core/dashboard/widgets-dashboard.component.d.ts.map +1 -1
  70. package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts +2 -2
  71. package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts.map +1 -1
  72. package/core/dashboard/wiget-time-context/widget-time-context-helper.service.d.ts +2 -1
  73. package/core/dashboard/wiget-time-context/widget-time-context-helper.service.d.ts.map +1 -1
  74. package/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.d.ts +1 -1
  75. package/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.d.ts.map +1 -1
  76. package/core/dashboard/wiget-time-context/widget-time-context-query.service.d.ts.map +1 -1
  77. package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts +12 -8
  78. package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts.map +1 -1
  79. package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts +7 -26
  80. package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts.map +1 -1
  81. package/core/date-time-picker/date-time-picker.component.d.ts.map +1 -1
  82. package/core/header/header.module.d.ts +18 -18
  83. package/core/header/header.module.d.ts.map +1 -1
  84. package/core/header/title/title.component.d.ts +1 -1
  85. package/core/header/title/title.component.d.ts.map +1 -1
  86. package/core/i18n/cached-locale-dictionary.service.d.ts +5 -1
  87. package/core/i18n/cached-locale-dictionary.service.d.ts.map +1 -1
  88. package/core/i18n/i18n.module.d.ts +0 -4
  89. package/core/i18n/i18n.module.d.ts.map +1 -1
  90. package/core/i18n/index.d.ts +2 -1
  91. package/core/i18n/index.d.ts.map +1 -1
  92. package/core/i18n/translation-loader.service.d.ts +50 -0
  93. package/core/i18n/translation-loader.service.d.ts.map +1 -0
  94. package/core/i18n/translation-utils.d.ts +14 -0
  95. package/core/i18n/translation-utils.d.ts.map +1 -0
  96. package/core/plugins/plugins-resolve.service.d.ts +7 -10
  97. package/core/plugins/plugins-resolve.service.d.ts.map +1 -1
  98. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts +2 -1
  99. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts.map +1 -1
  100. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts +11 -2
  101. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts.map +1 -1
  102. package/datapoint-selector/datapoint-selection.model.d.ts +6 -0
  103. package/datapoint-selector/datapoint-selection.model.d.ts.map +1 -1
  104. package/datapoints-export-selector/c8y-ngx-components-datapoints-export-selector.d.ts.map +1 -0
  105. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts +117 -0
  106. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -0
  107. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.d.ts +90 -0
  108. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.d.ts.map +1 -0
  109. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts +160 -0
  110. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts.map +1 -0
  111. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts +89 -0
  112. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts.map +1 -0
  113. 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
  114. 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
  115. 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
  116. 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
  117. 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
  118. 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
  119. 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
  120. 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
  121. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.d.ts +3 -0
  122. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.d.ts.map +1 -0
  123. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.d.ts +9 -0
  124. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.d.ts.map +1 -0
  125. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.d.ts +56 -0
  126. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.d.ts.map +1 -0
  127. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts +21 -0
  128. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts.map +1 -0
  129. package/datapoints-export-selector/datapoints-export-selector.component.d.ts +14 -0
  130. package/datapoints-export-selector/datapoints-export-selector.component.d.ts.map +1 -0
  131. package/datapoints-export-selector/datapoints-export-selector.model.d.ts +232 -0
  132. package/datapoints-export-selector/datapoints-export-selector.model.d.ts.map +1 -0
  133. package/datapoints-export-selector/index.d.ts +15 -0
  134. package/datapoints-export-selector/index.d.ts.map +1 -0
  135. package/device-list/device-list.module.d.ts +4 -2
  136. package/device-list/device-list.module.d.ts.map +1 -1
  137. package/esm2022/alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.mjs +4 -4
  138. package/esm2022/alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.mjs +3 -3
  139. package/esm2022/alarms/alarms-date-filter.component.mjs +139 -0
  140. package/esm2022/alarms/alarms-filter.component.mjs +11 -5
  141. package/esm2022/alarms/alarms-list.component.mjs +5 -16
  142. package/esm2022/alarms/alarms-type-filter.component.mjs +3 -3
  143. package/esm2022/alarms/alarms-view.service.mjs +16 -2
  144. package/esm2022/alarms/alarms.component.mjs +12 -6
  145. package/esm2022/alarms/alarms.model.mjs +17 -1
  146. package/esm2022/alarms/alarms.module.mjs +11 -4
  147. package/esm2022/branding/shared/data/store-branding.service.mjs +24 -1
  148. package/esm2022/branding/shared/lazy/branding/branding.component.mjs +3 -1
  149. package/esm2022/context-dashboard/context-dashboard.component.mjs +4 -4
  150. package/esm2022/context-dashboard/context-dashboard.model.mjs +1 -1
  151. package/esm2022/context-dashboard/context-dashboard.service.mjs +47 -21
  152. package/esm2022/context-dashboard/dashboard-detail.component.mjs +8 -16
  153. package/esm2022/context-dashboard/dashboard-detail.service.mjs +13 -6
  154. package/esm2022/context-dashboard/dashboard-settings/dashboard-general-settings.component.mjs +3 -3
  155. package/esm2022/context-dashboard/dashboard-settings/typed-dashboard-settings.component.mjs +32 -11
  156. package/esm2022/core/action-bar/action-bar-item.component.mjs +3 -3
  157. package/esm2022/core/action-bar/action-bar.component.mjs +3 -3
  158. package/esm2022/core/action-bar/action-bar.module.mjs +16 -5
  159. package/esm2022/core/bootstrap/bootstrap.component.mjs +21 -16
  160. package/esm2022/core/common/aggregation/aggregation.model.mjs +46 -0
  161. package/esm2022/core/common/aggregation/aggregation.service.mjs +34 -0
  162. package/esm2022/core/common/humanize-app-name.model.mjs +2 -2
  163. package/esm2022/core/common/humanize-app-name.pipe.mjs +2 -2
  164. package/esm2022/core/common/index.mjs +5 -1
  165. package/esm2022/core/common/inter-app.service.mjs +76 -0
  166. package/esm2022/core/common/interval-based-reload.abstract.mjs +110 -0
  167. package/esm2022/core/countdown-interval/countdown-interval.component.mjs +3 -3
  168. package/esm2022/core/dashboard/dashboard-child.component.mjs +6 -5
  169. package/esm2022/core/dashboard/dashboard.module.mjs +22 -4
  170. package/esm2022/core/dashboard/index.mjs +4 -1
  171. package/esm2022/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.mjs +101 -0
  172. package/esm2022/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.mjs +50 -0
  173. package/esm2022/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.mjs +7 -0
  174. package/esm2022/core/dashboard/widget-auto-refresh-context/index.mjs +8 -0
  175. package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.mjs +18 -0
  176. package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.mjs +127 -0
  177. package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.mjs +5 -0
  178. package/esm2022/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.mjs +233 -0
  179. package/esm2022/core/dashboard/widget-change-event.model.mjs +1 -1
  180. package/esm2022/core/dashboard/widgets-dashboard.component.mjs +35 -30
  181. package/esm2022/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.mjs +4 -4
  182. package/esm2022/core/dashboard/wiget-time-context/realtime-control/realtime-control.component.mjs +2 -2
  183. package/esm2022/core/dashboard/wiget-time-context/widget-time-context-helper.service.mjs +3 -2
  184. package/esm2022/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.mjs +5 -5
  185. package/esm2022/core/dashboard/wiget-time-context/widget-time-context-query.service.mjs +7 -4
  186. package/esm2022/core/dashboard/wiget-time-context/widget-time-context.component.mjs +37 -36
  187. package/esm2022/core/dashboard/wiget-time-context/widget-time-context.model.mjs +1 -72
  188. package/esm2022/core/date-time-picker/date-time-picker.component.mjs +9 -3
  189. package/esm2022/core/header/header.module.mjs +7 -5
  190. package/esm2022/core/header/title/title.component.mjs +3 -3
  191. package/esm2022/core/i18n/cached-locale-dictionary.service.mjs +1 -1
  192. package/esm2022/core/i18n/i18n.module.mjs +7 -14
  193. package/esm2022/core/i18n/index.mjs +3 -2
  194. package/esm2022/core/i18n/translate.parser.mjs +2 -2
  195. package/esm2022/core/i18n/translation-loader.service.mjs +132 -0
  196. package/esm2022/core/i18n/translation-utils.mjs +24 -0
  197. package/esm2022/core/list-display-switch/list-display-switch.component.mjs +3 -3
  198. package/esm2022/core/plugins/plugins-resolve.service.mjs +12 -37
  199. package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.mjs +13 -6
  200. package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.mjs +22 -5
  201. package/esm2022/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.mjs +3 -3
  202. package/esm2022/datapoint-selector/datapoint-selection.model.mjs +1 -1
  203. package/esm2022/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.mjs +3 -3
  204. package/esm2022/datapoints-export-selector/c8y-ngx-components-datapoints-export-selector.mjs +5 -0
  205. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.mjs +407 -0
  206. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.mjs +207 -0
  207. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.mjs +467 -0
  208. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.mjs +187 -0
  209. 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
  210. 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
  211. 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
  212. 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
  213. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.mjs +120 -0
  214. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.mjs +282 -0
  215. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.mjs +76 -0
  216. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.mjs +46 -0
  217. package/esm2022/datapoints-export-selector/datapoints-export-selector.component.mjs +42 -0
  218. package/esm2022/datapoints-export-selector/datapoints-export-selector.model.mjs +43 -0
  219. package/esm2022/datapoints-export-selector/index.mjs +15 -0
  220. package/esm2022/device-list/add-smart-group.component.mjs +4 -3
  221. package/esm2022/device-list/device-list.module.mjs +22 -4
  222. package/esm2022/interval-picker/c8y-ngx-components-interval-picker.mjs +5 -0
  223. package/esm2022/interval-picker/index.mjs +3 -0
  224. package/esm2022/interval-picker/interval-picker.component.mjs +68 -0
  225. package/esm2022/interval-picker/interval-picker.model.mjs +47 -0
  226. package/esm2022/map/cluster-map.component.mjs +41 -13
  227. package/esm2022/map/map-status.component.mjs +6 -5
  228. package/esm2022/map/map.component.mjs +9 -5
  229. package/esm2022/map/map.model.mjs +1 -1
  230. package/esm2022/translation-editor/c8y-ngx-components-translation-editor.mjs +5 -0
  231. package/esm2022/translation-editor/data/c8y-ngx-components-translation-editor-data.mjs +5 -0
  232. package/esm2022/translation-editor/data/index.mjs +2 -0
  233. package/esm2022/translation-editor/data/translation-store.service.mjs +175 -0
  234. package/esm2022/translation-editor/index.mjs +10 -0
  235. package/esm2022/translation-editor/lazy/add-translation-modal/add-translation-modal.component.mjs +70 -0
  236. package/esm2022/translation-editor/lazy/c8y-ngx-components-translation-editor-lazy.mjs +5 -0
  237. package/esm2022/translation-editor/lazy/index.mjs +2 -0
  238. package/esm2022/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.mjs +53 -0
  239. package/esm2022/translation-editor/lazy/translation-editor/translation-editor.component.mjs +124 -0
  240. package/esm2022/translation-editor/translation-editor-naviagtor-factory.service.mjs +31 -0
  241. package/esm2022/widgets/cockpit/index.mjs +4 -2
  242. package/esm2022/widgets/cockpit-exports/index.mjs +8 -1
  243. package/esm2022/widgets/definitions/alarms/alarm-list/index.mjs +6 -2
  244. package/esm2022/widgets/definitions/alarms/all-critical-alarms/index.mjs +6 -2
  245. package/esm2022/widgets/definitions/alarms/recent-alarms/index.mjs +6 -2
  246. package/esm2022/widgets/definitions/datapoints-table/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +5 -0
  247. package/esm2022/widgets/definitions/datapoints-table/index.mjs +34 -0
  248. package/esm2022/widgets/definitions/index.mjs +2 -1
  249. package/esm2022/widgets/definitions/map/index.mjs +4 -2
  250. package/esm2022/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.mjs +29 -15
  251. package/esm2022/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.mjs +57 -25
  252. package/esm2022/widgets/implementations/alarms/alarm-list-widget.model.mjs +2 -1
  253. package/esm2022/widgets/implementations/alarms/alarm-widget-alarms-reload.component.mjs +19 -21
  254. package/esm2022/widgets/implementations/datapoints-table/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +5 -0
  255. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.mjs +383 -0
  256. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.mjs +124 -0
  257. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.mjs +191 -0
  258. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.mjs +36 -0
  259. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.mjs +45 -0
  260. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.mjs +116 -0
  261. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.mjs +116 -0
  262. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.mjs +43 -0
  263. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.mjs +282 -0
  264. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.mjs +430 -0
  265. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.mjs +75 -0
  266. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-widget.model.mjs +76 -0
  267. package/esm2022/widgets/implementations/datapoints-table/datapoints-table.service.mjs +52 -0
  268. package/esm2022/widgets/implementations/datapoints-table/date-range-picker.component.mjs +68 -0
  269. package/esm2022/widgets/implementations/datapoints-table/index.mjs +10 -0
  270. package/esm2022/widgets/implementations/map/map-widget-config.component.mjs +19 -11
  271. package/esm2022/widgets/implementations/map/map-widget.component.mjs +20 -2
  272. package/esm2022/widgets/implementations/map/map-widget.model.mjs +1 -1
  273. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +5 -5
  274. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
  275. package/fesm2022/c8y-ngx-components-alarms.mjs +189 -31
  276. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  277. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +23 -0
  278. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
  279. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +2 -0
  280. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  281. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +135 -91
  282. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  283. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +37 -13
  284. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  285. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +1928 -0
  286. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -0
  287. package/fesm2022/c8y-ngx-components-device-list.mjs +24 -5
  288. package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
  289. package/fesm2022/c8y-ngx-components-interval-picker.mjs +120 -0
  290. package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -0
  291. package/fesm2022/c8y-ngx-components-map.mjs +52 -19
  292. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  293. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +181 -0
  294. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -0
  295. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +236 -0
  296. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -0
  297. package/fesm2022/c8y-ngx-components-translation-editor.mjs +46 -0
  298. package/fesm2022/c8y-ngx-components-translation-editor.mjs.map +1 -0
  299. package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs +7 -0
  300. package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs.map +1 -1
  301. package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs +3 -1
  302. package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
  303. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +5 -1
  304. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
  305. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs +5 -1
  306. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
  307. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs +5 -1
  308. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
  309. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +41 -0
  310. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -0
  311. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs +3 -1
  312. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
  313. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs +1 -0
  314. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
  315. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +101 -58
  316. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  317. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +1967 -0
  318. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -0
  319. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +37 -11
  320. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  321. package/fesm2022/c8y-ngx-components.mjs +5093 -4369
  322. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  323. package/interval-picker/c8y-ngx-components-interval-picker.d.ts.map +1 -0
  324. package/interval-picker/index.d.ts +3 -0
  325. package/interval-picker/index.d.ts.map +1 -0
  326. package/{core/dashboard/wiget-time-context/interval-picker → interval-picker}/interval-picker.component.d.ts +10 -2
  327. package/interval-picker/interval-picker.component.d.ts.map +1 -0
  328. package/interval-picker/interval-picker.model.d.ts +15 -0
  329. package/interval-picker/interval-picker.model.d.ts.map +1 -0
  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 +266 -21
  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/dashboard/wiget-time-context/interval-picker/interval-picker.component.d.ts.map +0 -1
  431. package/core/i18n/translate.loader.d.ts +0 -31
  432. package/core/i18n/translate.loader.d.ts.map +0 -1
  433. package/esm2022/core/dashboard/wiget-time-context/interval-picker/interval-picker.component.mjs +0 -55
  434. package/esm2022/core/i18n/translate.loader.mjs +0 -71
@@ -4,7 +4,7 @@ import { gettext } from '../../../i18n';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/common";
6
6
  import * as i2 from "ngx-bootstrap/tooltip";
7
- import * as i3 from "../../../i18n/c8y-translate.pipe";
7
+ import * as i3 from "@ngx-translate/core";
8
8
  export class RealtimeControlComponent {
9
9
  constructor() {
10
10
  this.disableRealtimeLabel = gettext('Disable realtime');
@@ -41,7 +41,7 @@ export class RealtimeControlComponent {
41
41
  useExisting: forwardRef(() => RealtimeControlComponent),
42
42
  multi: true
43
43
  }
44
- ], ngImport: i0, template: " <button\n class=\"btn btn-icon c8y-realtime\"\n [attr.aria-label]=\"(value ? disableRealtimeLabel : enableRealtimeLabel) | translate\"\n tooltip=\"{{ (value ? disableRealtimeLabel : enableRealtimeLabel) | translate }}\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n (click)=\"onChange(!value)\"\n [adaptivePosition]=\"false\"\n [delay]=\"500\"\n [disabled]=\"disabled\"\n>\n <span\n class=\"c8y-pulse m-0\"\n [ngClass]=\"{ active: value, inactive: !value }\"\n ></span>\n</button>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }] }); }
44
+ ], ngImport: i0, template: " <button\n class=\"btn btn-icon c8y-realtime\"\n [attr.aria-label]=\"(value ? disableRealtimeLabel : enableRealtimeLabel) | translate\"\n tooltip=\"{{ (value ? disableRealtimeLabel : enableRealtimeLabel) | translate }}\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n (click)=\"onChange(!value)\"\n [adaptivePosition]=\"false\"\n [delay]=\"500\"\n [disabled]=\"disabled\"\n>\n <span\n class=\"c8y-pulse m-0\"\n [ngClass]=\"{ active: value, inactive: !value }\"\n ></span>\n</button>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
45
45
  }
46
46
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RealtimeControlComponent, decorators: [{
47
47
  type: Component,
@@ -1,6 +1,7 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { INTERVALS, WidgetTimeContextActionBarPriority } from './widget-time-context.model';
2
+ import { WidgetTimeContextActionBarPriority } from './widget-time-context.model';
3
3
  import { aggregationType } from '@c8y/client';
4
+ import { INTERVALS } from '@c8y/ngx-components/interval-picker';
4
5
  import * as i0 from "@angular/core";
5
6
  export class WidgetTimeContextHelperService {
6
7
  /**
@@ -85,4 +86,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
85
86
  type: Injectable,
86
87
  args: [{ providedIn: 'root' }]
87
88
  }] });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRpbWUtY29udGV4dC1oZWxwZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvcmUvZGFzaGJvYXJkL3dpZ2V0LXRpbWUtY29udGV4dC93aWRnZXQtdGltZS1jb250ZXh0LWhlbHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLFNBQVMsRUFDVCxrQ0FBa0MsRUFFbkMsTUFBTSw2QkFBNkIsQ0FBQztBQUVyQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUc5QyxNQUFNLE9BQU8sOEJBQThCO0lBQ3pDOzs7O09BSUc7SUFDSCxvQkFBb0IsQ0FBQyxVQUEwQjtRQUM3QyxJQUFJLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM1QixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssVUFBVSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxnQkFBZ0IsQ0FBQyxtQkFBMkIsRUFBRSxpQkFBeUI7UUFDckUsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMvQyxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzNDLElBQ0UsUUFBUSxZQUFZLElBQUk7WUFDeEIsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzNCLE1BQU0sWUFBWSxJQUFJO1lBQ3RCLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUN6QixDQUFDO1lBQ0QsT0FBTyxRQUFRLEdBQUcsTUFBTSxDQUFDO1FBQzNCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsa0JBQWtCLENBQUMsV0FBNEI7UUFDN0MsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQXNCLENBQUM7UUFDMUYsT0FBTyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCw0QkFBNEIsQ0FBQyxVQUEwQjtRQUNyRCxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLFVBQVUsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDMUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwRSxPQUFPLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILG9CQUFvQixDQUFDLGVBQXNDO1FBQ3pELE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSx3QkFBd0IsRUFBRSxHQUFHLGVBQWUsQ0FBQztRQUMvRixJQUFJLGlCQUFpQixJQUFJLHFCQUFxQixJQUFJLHdCQUF3QixFQUFFLENBQUM7WUFDM0UsT0FBTyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUM7UUFDakQsQ0FBQztRQUNELElBQUksaUJBQWlCLElBQUkscUJBQXFCLEVBQUUsQ0FBQztZQUMvQyxPQUFPLGtDQUFrQyxDQUFDLE1BQU0sQ0FBQztRQUNuRCxDQUFDO1FBQ0QsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1lBQzFCLE9BQU8sa0NBQWtDLENBQUMsR0FBRyxDQUFDO1FBQ2hELENBQUM7UUFDRCxPQUFPLGtDQUFrQyxDQUFDLElBQUksQ0FBQztJQUNqRCxDQUFDOzhHQWpGVSw4QkFBOEI7a0hBQTlCLDhCQUE4QixjQURqQixNQUFNOzsyRkFDbkIsOEJBQThCO2tCQUQxQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEludGVydmFsLFxuICBJTlRFUlZBTFMsXG4gIFdpZGdldFRpbWVDb250ZXh0QWN0aW9uQmFyUHJpb3JpdHksXG4gIFdpZGdldERpc3BsYXlTZXR0aW5nc1xufSBmcm9tICcuL3dpZGdldC10aW1lLWNvbnRleHQubW9kZWwnO1xuaW1wb3J0IHsgRGF0ZVRpbWVDb250ZXh0IH0gZnJvbSAnLi4vd2lkZ2V0LWNoYW5nZS1ldmVudC5tb2RlbCc7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvblR5cGUgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0VGltZUNvbnRleHRIZWxwZXJTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBwcm92aWRlZCBwYXJhbSBmb3IgYmVpbmcgc2VsZWN0YWJsZSBJbnRlcnZhbCBpZC5cbiAgICogQHBhcmFtIGludGVydmFsSWQgSW50ZXJ2YWwgaWQgdG8gYmUgdmFsaWRhdGVkLlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHByb3ZpZGVkIGlkIGlzIHZhbGlkLCBzZWxlY3RhYmxlIEludGVydmFsIGlkIGFuZCBmYWxzZSBpZiBpdCdzIG5vdC5cbiAgICovXG4gIGlzU2VsZWN0YWJsZUludGVydmFsKGludGVydmFsSWQ6IEludGVydmFsWydpZCddKSB7XG4gICAgaWYgKGludGVydmFsSWQgPT09ICdjdXN0b20nKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBJTlRFUlZBTFMuc29tZSgoeyBpZCB9KSA9PiBpZCA9PT0gaW50ZXJ2YWxJZCk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHByb3ZpZGVkIGRhdGUgXCJmcm9tXCIgYW5kIGRhdGUgXCJ0b1wiOlxuICAgKiAtIGlmIGJvdGggZGF0ZXMgYXJlIHByb3BlciBkYXRlIHN0cmluZ3NcbiAgICogLSBpZiBwcm92aWRlZCBkYXRlIGZyb20gaXMgZWFybGllciB0aGFuIGRhdGUgdG8uXG4gICAqIEBwYXJhbSBzdHJpbmdpZmllZERhdGVGcm9tIERhdGUgXCJmcm9tXCIgdGhhdCBzaG91bGQgYmUgdmFsaWRhdGVkLlxuICAgKiBAcGFyYW0gc3RyaW5naWZpZWREYXRlVG8gRGF0ZSBcInRvXCIgdGhhdCBzaG91bGQgYmUgdmFsaWRhdGVkLlxuICAgKiBAcmV0dXJucyBSZXN1bHQgb2YgdmFsaWRhdGlvbiBvZiBkYXRlcyByYW5nZS5cbiAgICovXG4gIGlzVmFsaWREYXRlUmFuZ2Uoc3RyaW5naWZpZWREYXRlRnJvbTogc3RyaW5nLCBzdHJpbmdpZmllZERhdGVUbzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZGF0ZUZyb20gPSBuZXcgRGF0ZShzdHJpbmdpZmllZERhdGVGcm9tKTtcbiAgICBjb25zdCBkYXRlVG8gPSBuZXcgRGF0ZShzdHJpbmdpZmllZERhdGVUbyk7XG4gICAgaWYgKFxuICAgICAgZGF0ZUZyb20gaW5zdGFuY2VvZiBEYXRlICYmXG4gICAgICAhaXNOYU4oZGF0ZUZyb20/LmdldFRpbWUoKSkgJiZcbiAgICAgIGRhdGVUbyBpbnN0YW5jZW9mIERhdGUgJiZcbiAgICAgICFpc05hTihkYXRlVG8/LmdldFRpbWUoKSlcbiAgICApIHtcbiAgICAgIHJldHVybiBkYXRlRnJvbSA8IGRhdGVUbztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBwcm92aWRlZCBhZ2dyZWdhdGlvbjpcbiAgICogQHBhcmFtIGFnZ3JlZ2F0aW9uIERhdGUgXCJmcm9tXCIgdGhhdCBzaG91bGQgYmUgdmFsaWRhdGVkLlxuICAgKiBAcmV0dXJucyBSZXN1bHQgb2YgdmFsaWRhdGlvbiBvZiBhZ2dyZWdhdGlvbi5cbiAgICovXG4gIGlzVmFsaWRBZ2dyZWdhdGlvbihhZ2dyZWdhdGlvbjogYWdncmVnYXRpb25UeXBlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcG9zc2libGVBZ2dyZWdhdGlvbnMgPSBbbnVsbCwgLi4uT2JqZWN0LmtleXMoYWdncmVnYXRpb25UeXBlKV0gYXMgYWdncmVnYXRpb25UeXBlW107XG4gICAgcmV0dXJuIHBvc3NpYmxlQWdncmVnYXRpb25zLmluY2x1ZGVzKGFnZ3JlZ2F0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIGRhdGUgdGltZSBjb250ZXh0IGFjY29yZGluZyB0byBwcm92aWRlZCBpbnRlcnZhbC5cbiAgICogQHBhcmFtIGludGVydmFsSWQgSW50ZXJ2YWwgaWQgaW5kaWNhdGluZyB0aW1lIHJhbmdlLlxuICAgKiBAcmV0dXJucyBUdXBsZSBvZiBkYXRlcy0gdGhlIGZpcnN0IG9uZSBpcyBkYXRlIFwiZnJvbVwiIGFjY29yZGluZyB0byBzZWxlY3RlZCBpbnRlcnZhbCwgc2Vjb25kIG9uZSBpcyBkYXRlIFwidG9cIiAobm93KS5cbiAgICovXG4gIGdldERhdGVUaW1lQ29udGV4dEJ5SW50ZXJ2YWwoaW50ZXJ2YWxJZDogSW50ZXJ2YWxbJ2lkJ10pOiBEYXRlVGltZUNvbnRleHQge1xuICAgIGNvbnN0IGludGVydmFsID0gSU5URVJWQUxTLmZpbmQoKHsgaWQgfSkgPT4gaWQgPT09IGludGVydmFsSWQpO1xuICAgIGNvbnN0IGRhdGVUbyA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgZGF0ZUZyb20gPSBuZXcgRGF0ZShkYXRlVG8udmFsdWVPZigpIC0gaW50ZXJ2YWwudGltZXNwYW5Jbk1zKTtcbiAgICByZXR1cm4gW2RhdGVGcm9tLCBkYXRlVG9dO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgcHJpb3JpdHkgZm9yIHNpbmdsZSBhY3Rpb24gYmFyIGl0ZW0gb2YgYmFyIGl0ZW1zIHRoYXQgaGFzIHRoZSAndGltZWNvbnRleHQnIGdyb3VwSWQuXG4gICAqIFdpZGdldHMgdGhhdCB1c2VzIFdpZGdldFRpbWVDb250ZXh0Q29tcG9uZW50IGNhbiBiZSBhc3NpZ25lZCB0byB0aHJlZSBsZXZlbHMgb2YgcHJpb3JpdHk6XG4gICAqIEhJR0ggcHJpb3JpdHkgbWVhbnMgdGhhdCB3aWRnZXQgaXMgdXNpbmcgdGltZSByYW5nZSBwaWNrZXJzLCByZWFsdGltZSBhbmQgYWdncmVnYXRpb24gZmVhdHVyZXMuXG4gICAqIFdpZGdldHM6IERhdGEgcG9pbnRzIGdyYXBoLCBEYXRhIHBvaW50cyBncmFwaCAyLjAsIERhdGEgcG9pbnRzIHRhYmxlLlxuICAgKiBNRURJVU0gcHJpb3JpdHkgbWVhbnMgdGhhdCB3aWRnZXQgaXMgdXNpbmcgdGltZSByYW5nZSBwaWNrZXJzIGFuZCByZWFsdGltZSBmZWF0dXJlcy5cbiAgICogV2lkZ2V0czogRXZlbnQgbGlzdC5cbiAgICogTE9XIHByaW9yaXR5IG1lYW5zIHRoYXQgd2lkZ2V0IGlzIHVzaW5nIHJlYWx0aW1lIGZlYXR1cmUgb25seS5cbiAgICogV2lkZ2V0czogTWFwXG4gICAqIEBwYXJhbSBkaXNwbGF5U2V0dGluZ3MgU2V0dGluZ3MgaW5kaWNhdGluZyB3aGljaCBmZWF0dXJlcyBvZiBXaWRnZXRUaW1lQ29udGV4dENvbXBvbmVudCBhcmUgdXNlZCBieSB3aWRnZXQuXG4gICAqIEByZXR1cm5zIHByaW9yaXR5IG9mIHdpZGdldCBhY3Rpb24gYmFyIGl0ZW0uXG4gICAqL1xuICBnZXRBY3Rpb25CYXJQcmlvcml0eShkaXNwbGF5U2V0dGluZ3M6IFdpZGdldERpc3BsYXlTZXR0aW5ncyk6IFdpZGdldFRpbWVDb250ZXh0QWN0aW9uQmFyUHJpb3JpdHkge1xuICAgIGNvbnN0IHsgZ2xvYmFsVGltZUNvbnRleHQsIGdsb2JhbFJlYWx0aW1lQ29udGV4dCwgZ2xvYmFsQWdncmVnYXRpb25Db250ZXh0IH0gPSBkaXNwbGF5U2V0dGluZ3M7XG4gICAgaWYgKGdsb2JhbFRpbWVDb250ZXh0ICYmIGdsb2JhbFJlYWx0aW1lQ29udGV4dCAmJiBnbG9iYWxBZ2dyZWdhdGlvbkNvbnRleHQpIHtcbiAgICAgIHJldHVybiBXaWRnZXRUaW1lQ29udGV4dEFjdGlvbkJhclByaW9yaXR5LkhJR0g7XG4gICAgfVxuICAgIGlmIChnbG9iYWxUaW1lQ29udGV4dCAmJiBnbG9iYWxSZWFsdGltZUNvbnRleHQpIHtcbiAgICAgIHJldHVybiBXaWRnZXRUaW1lQ29udGV4dEFjdGlvbkJhclByaW9yaXR5Lk1FRElVTTtcbiAgICB9XG4gICAgaWYgKGdsb2JhbFJlYWx0aW1lQ29udGV4dCkge1xuICAgICAgcmV0dXJuIFdpZGdldFRpbWVDb250ZXh0QWN0aW9uQmFyUHJpb3JpdHkuTE9XO1xuICAgIH1cbiAgICByZXR1cm4gV2lkZ2V0VGltZUNvbnRleHRBY3Rpb25CYXJQcmlvcml0eS5OT05FO1xuICB9XG59XG4iXX0=
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRpbWUtY29udGV4dC1oZWxwZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvcmUvZGFzaGJvYXJkL3dpZ2V0LXRpbWUtY29udGV4dC93aWRnZXQtdGltZS1jb250ZXh0LWhlbHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUNMLGtDQUFrQyxFQUVuQyxNQUFNLDZCQUE2QixDQUFDO0FBRXJDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUMsT0FBTyxFQUFZLFNBQVMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOztBQUcxRSxNQUFNLE9BQU8sOEJBQThCO0lBQ3pDOzs7O09BSUc7SUFDSCxvQkFBb0IsQ0FBQyxVQUEwQjtRQUM3QyxJQUFJLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM1QixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssVUFBVSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxnQkFBZ0IsQ0FBQyxtQkFBMkIsRUFBRSxpQkFBeUI7UUFDckUsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMvQyxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzNDLElBQ0UsUUFBUSxZQUFZLElBQUk7WUFDeEIsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzNCLE1BQU0sWUFBWSxJQUFJO1lBQ3RCLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUN6QixDQUFDO1lBQ0QsT0FBTyxRQUFRLEdBQUcsTUFBTSxDQUFDO1FBQzNCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsa0JBQWtCLENBQUMsV0FBNEI7UUFDN0MsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQXNCLENBQUM7UUFDMUYsT0FBTyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCw0QkFBNEIsQ0FBQyxVQUEwQjtRQUNyRCxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLFVBQVUsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDMUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwRSxPQUFPLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILG9CQUFvQixDQUFDLGVBQXNDO1FBQ3pELE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSx3QkFBd0IsRUFBRSxHQUFHLGVBQWUsQ0FBQztRQUMvRixJQUFJLGlCQUFpQixJQUFJLHFCQUFxQixJQUFJLHdCQUF3QixFQUFFLENBQUM7WUFDM0UsT0FBTyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUM7UUFDakQsQ0FBQztRQUNELElBQUksaUJBQWlCLElBQUkscUJBQXFCLEVBQUUsQ0FBQztZQUMvQyxPQUFPLGtDQUFrQyxDQUFDLE1BQU0sQ0FBQztRQUNuRCxDQUFDO1FBQ0QsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1lBQzFCLE9BQU8sa0NBQWtDLENBQUMsR0FBRyxDQUFDO1FBQ2hELENBQUM7UUFDRCxPQUFPLGtDQUFrQyxDQUFDLElBQUksQ0FBQztJQUNqRCxDQUFDOzhHQWpGVSw4QkFBOEI7a0hBQTlCLDhCQUE4QixjQURqQixNQUFNOzsyRkFDbkIsOEJBQThCO2tCQUQxQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFdpZGdldFRpbWVDb250ZXh0QWN0aW9uQmFyUHJpb3JpdHksXG4gIFdpZGdldERpc3BsYXlTZXR0aW5nc1xufSBmcm9tICcuL3dpZGdldC10aW1lLWNvbnRleHQubW9kZWwnO1xuaW1wb3J0IHsgRGF0ZVRpbWVDb250ZXh0IH0gZnJvbSAnLi4vd2lkZ2V0LWNoYW5nZS1ldmVudC5tb2RlbCc7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvblR5cGUgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBJbnRlcnZhbCwgSU5URVJWQUxTIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pbnRlcnZhbC1waWNrZXInO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFdpZGdldFRpbWVDb250ZXh0SGVscGVyU2VydmljZSB7XG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgcHJvdmlkZWQgcGFyYW0gZm9yIGJlaW5nIHNlbGVjdGFibGUgSW50ZXJ2YWwgaWQuXG4gICAqIEBwYXJhbSBpbnRlcnZhbElkIEludGVydmFsIGlkIHRvIGJlIHZhbGlkYXRlZC5cbiAgICogQHJldHVybnMgVHJ1ZSBpZiBwcm92aWRlZCBpZCBpcyB2YWxpZCwgc2VsZWN0YWJsZSBJbnRlcnZhbCBpZCBhbmQgZmFsc2UgaWYgaXQncyBub3QuXG4gICAqL1xuICBpc1NlbGVjdGFibGVJbnRlcnZhbChpbnRlcnZhbElkOiBJbnRlcnZhbFsnaWQnXSkge1xuICAgIGlmIChpbnRlcnZhbElkID09PSAnY3VzdG9tJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gSU5URVJWQUxTLnNvbWUoKHsgaWQgfSkgPT4gaWQgPT09IGludGVydmFsSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBwcm92aWRlZCBkYXRlIFwiZnJvbVwiIGFuZCBkYXRlIFwidG9cIjpcbiAgICogLSBpZiBib3RoIGRhdGVzIGFyZSBwcm9wZXIgZGF0ZSBzdHJpbmdzXG4gICAqIC0gaWYgcHJvdmlkZWQgZGF0ZSBmcm9tIGlzIGVhcmxpZXIgdGhhbiBkYXRlIHRvLlxuICAgKiBAcGFyYW0gc3RyaW5naWZpZWREYXRlRnJvbSBEYXRlIFwiZnJvbVwiIHRoYXQgc2hvdWxkIGJlIHZhbGlkYXRlZC5cbiAgICogQHBhcmFtIHN0cmluZ2lmaWVkRGF0ZVRvIERhdGUgXCJ0b1wiIHRoYXQgc2hvdWxkIGJlIHZhbGlkYXRlZC5cbiAgICogQHJldHVybnMgUmVzdWx0IG9mIHZhbGlkYXRpb24gb2YgZGF0ZXMgcmFuZ2UuXG4gICAqL1xuICBpc1ZhbGlkRGF0ZVJhbmdlKHN0cmluZ2lmaWVkRGF0ZUZyb206IHN0cmluZywgc3RyaW5naWZpZWREYXRlVG86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGRhdGVGcm9tID0gbmV3IERhdGUoc3RyaW5naWZpZWREYXRlRnJvbSk7XG4gICAgY29uc3QgZGF0ZVRvID0gbmV3IERhdGUoc3RyaW5naWZpZWREYXRlVG8pO1xuICAgIGlmIChcbiAgICAgIGRhdGVGcm9tIGluc3RhbmNlb2YgRGF0ZSAmJlxuICAgICAgIWlzTmFOKGRhdGVGcm9tPy5nZXRUaW1lKCkpICYmXG4gICAgICBkYXRlVG8gaW5zdGFuY2VvZiBEYXRlICYmXG4gICAgICAhaXNOYU4oZGF0ZVRvPy5nZXRUaW1lKCkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZGF0ZUZyb20gPCBkYXRlVG87XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgcHJvdmlkZWQgYWdncmVnYXRpb246XG4gICAqIEBwYXJhbSBhZ2dyZWdhdGlvbiBEYXRlIFwiZnJvbVwiIHRoYXQgc2hvdWxkIGJlIHZhbGlkYXRlZC5cbiAgICogQHJldHVybnMgUmVzdWx0IG9mIHZhbGlkYXRpb24gb2YgYWdncmVnYXRpb24uXG4gICAqL1xuICBpc1ZhbGlkQWdncmVnYXRpb24oYWdncmVnYXRpb246IGFnZ3JlZ2F0aW9uVHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBvc3NpYmxlQWdncmVnYXRpb25zID0gW251bGwsIC4uLk9iamVjdC5rZXlzKGFnZ3JlZ2F0aW9uVHlwZSldIGFzIGFnZ3JlZ2F0aW9uVHlwZVtdO1xuICAgIHJldHVybiBwb3NzaWJsZUFnZ3JlZ2F0aW9ucy5pbmNsdWRlcyhhZ2dyZWdhdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyBkYXRlIHRpbWUgY29udGV4dCBhY2NvcmRpbmcgdG8gcHJvdmlkZWQgaW50ZXJ2YWwuXG4gICAqIEBwYXJhbSBpbnRlcnZhbElkIEludGVydmFsIGlkIGluZGljYXRpbmcgdGltZSByYW5nZS5cbiAgICogQHJldHVybnMgVHVwbGUgb2YgZGF0ZXMtIHRoZSBmaXJzdCBvbmUgaXMgZGF0ZSBcImZyb21cIiBhY2NvcmRpbmcgdG8gc2VsZWN0ZWQgaW50ZXJ2YWwsIHNlY29uZCBvbmUgaXMgZGF0ZSBcInRvXCIgKG5vdykuXG4gICAqL1xuICBnZXREYXRlVGltZUNvbnRleHRCeUludGVydmFsKGludGVydmFsSWQ6IEludGVydmFsWydpZCddKTogRGF0ZVRpbWVDb250ZXh0IHtcbiAgICBjb25zdCBpbnRlcnZhbCA9IElOVEVSVkFMUy5maW5kKCh7IGlkIH0pID0+IGlkID09PSBpbnRlcnZhbElkKTtcbiAgICBjb25zdCBkYXRlVG8gPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGRhdGVGcm9tID0gbmV3IERhdGUoZGF0ZVRvLnZhbHVlT2YoKSAtIGludGVydmFsLnRpbWVzcGFuSW5Ncyk7XG4gICAgcmV0dXJuIFtkYXRlRnJvbSwgZGF0ZVRvXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHByaW9yaXR5IGZvciBzaW5nbGUgYWN0aW9uIGJhciBpdGVtIG9mIGJhciBpdGVtcyB0aGF0IGhhcyB0aGUgJ3RpbWVjb250ZXh0JyBncm91cElkLlxuICAgKiBXaWRnZXRzIHRoYXQgdXNlcyBXaWRnZXRUaW1lQ29udGV4dENvbXBvbmVudCBjYW4gYmUgYXNzaWduZWQgdG8gdGhyZWUgbGV2ZWxzIG9mIHByaW9yaXR5OlxuICAgKiBISUdIIHByaW9yaXR5IG1lYW5zIHRoYXQgd2lkZ2V0IGlzIHVzaW5nIHRpbWUgcmFuZ2UgcGlja2VycywgcmVhbHRpbWUgYW5kIGFnZ3JlZ2F0aW9uIGZlYXR1cmVzLlxuICAgKiBXaWRnZXRzOiBEYXRhIHBvaW50cyBncmFwaCwgRGF0YSBwb2ludHMgZ3JhcGggMi4wLCBEYXRhIHBvaW50cyB0YWJsZS5cbiAgICogTUVESVVNIHByaW9yaXR5IG1lYW5zIHRoYXQgd2lkZ2V0IGlzIHVzaW5nIHRpbWUgcmFuZ2UgcGlja2VycyBhbmQgcmVhbHRpbWUgZmVhdHVyZXMuXG4gICAqIFdpZGdldHM6IEV2ZW50IGxpc3QuXG4gICAqIExPVyBwcmlvcml0eSBtZWFucyB0aGF0IHdpZGdldCBpcyB1c2luZyByZWFsdGltZSBmZWF0dXJlIG9ubHkuXG4gICAqIFdpZGdldHM6IE1hcFxuICAgKiBAcGFyYW0gZGlzcGxheVNldHRpbmdzIFNldHRpbmdzIGluZGljYXRpbmcgd2hpY2ggZmVhdHVyZXMgb2YgV2lkZ2V0VGltZUNvbnRleHRDb21wb25lbnQgYXJlIHVzZWQgYnkgd2lkZ2V0LlxuICAgKiBAcmV0dXJucyBwcmlvcml0eSBvZiB3aWRnZXQgYWN0aW9uIGJhciBpdGVtLlxuICAgKi9cbiAgZ2V0QWN0aW9uQmFyUHJpb3JpdHkoZGlzcGxheVNldHRpbmdzOiBXaWRnZXREaXNwbGF5U2V0dGluZ3MpOiBXaWRnZXRUaW1lQ29udGV4dEFjdGlvbkJhclByaW9yaXR5IHtcbiAgICBjb25zdCB7IGdsb2JhbFRpbWVDb250ZXh0LCBnbG9iYWxSZWFsdGltZUNvbnRleHQsIGdsb2JhbEFnZ3JlZ2F0aW9uQ29udGV4dCB9ID0gZGlzcGxheVNldHRpbmdzO1xuICAgIGlmIChnbG9iYWxUaW1lQ29udGV4dCAmJiBnbG9iYWxSZWFsdGltZUNvbnRleHQgJiYgZ2xvYmFsQWdncmVnYXRpb25Db250ZXh0KSB7XG4gICAgICByZXR1cm4gV2lkZ2V0VGltZUNvbnRleHRBY3Rpb25CYXJQcmlvcml0eS5ISUdIO1xuICAgIH1cbiAgICBpZiAoZ2xvYmFsVGltZUNvbnRleHQgJiYgZ2xvYmFsUmVhbHRpbWVDb250ZXh0KSB7XG4gICAgICByZXR1cm4gV2lkZ2V0VGltZUNvbnRleHRBY3Rpb25CYXJQcmlvcml0eS5NRURJVU07XG4gICAgfVxuICAgIGlmIChnbG9iYWxSZWFsdGltZUNvbnRleHQpIHtcbiAgICAgIHJldHVybiBXaWRnZXRUaW1lQ29udGV4dEFjdGlvbkJhclByaW9yaXR5LkxPVztcbiAgICB9XG4gICAgcmV0dXJuIFdpZGdldFRpbWVDb250ZXh0QWN0aW9uQmFyUHJpb3JpdHkuTk9ORTtcbiAgfVxufVxuIl19
@@ -1,11 +1,11 @@
1
1
  import { Component, Input } from '@angular/core';
2
- import { AGGREGATION_ICONS, AGGREGATION_TEXTS } from '../widget-time-context.model';
2
+ import { AGGREGATION_ICONS, AGGREGATION_TEXTS } from './../../../common/aggregation/aggregation.model';
3
3
  import { gettext } from '../../../i18n';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "../../../common/icon.directive";
6
6
  import * as i2 from "@angular/common";
7
7
  import * as i3 from "ngx-bootstrap/tooltip";
8
- import * as i4 from "../../../i18n/c8y-translate.pipe";
8
+ import * as i4 from "@ngx-translate/core";
9
9
  export class WidgetTimeContextIconBar {
10
10
  constructor() {
11
11
  this.AGGREGATION_ICONS = AGGREGATION_ICONS;
@@ -21,12 +21,12 @@ export class WidgetTimeContextIconBar {
21
21
  }
22
22
  }
23
23
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: WidgetTimeContextIconBar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: WidgetTimeContextIconBar, selector: "c8y-widget-time-context-icon-bar", inputs: { config: "config" }, ngImport: i0, template: "<span class=\"m-l-auto d-flex\">\n <button\n *ngIf=\"config.displaySettings.globalAggregationContext\"\n type=\"button\"\n class=\"btn btn-clean btn-no-focus\"\n [attr.aria-label]=\"'Aggregation' | translate\"\n tooltip=\"{{\n (config?.aggregation ? AGGREGATION_TEXTS[config.aggregation] : AGGREGATION_TEXTS.undefined)\n | translate\n }}\"\n [adaptivePosition]=\"false\"\n placement=\"top\"\n container=\"body\"\n >\n <i\n [c8yIcon]=\"\n config?.aggregation ? AGGREGATION_ICONS[config.aggregation] : AGGREGATION_ICONS.undefined\n \"\n class=\"icon-14\"\n ></i>\n </button>\n <button\n class=\"btn c8y-realtime btn-no-focus\"\n [attr.aria-label]=\"(config?.realtime ? 'Realtime active' : 'Realtime inactive') | translate\"\n tooltip=\"{{ (config?.realtime ? 'Realtime active' : 'Realtime inactive') | translate }}\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n >\n <span\n class=\"c8y-pulse m-0\"\n [ngClass]=\"{ active: config?.realtime, inactive: !config?.realtime }\"\n ></span>\n </button>\n <button\n class=\"btn btn-clean btn-no-focus p-l-4 p-r-0\"\n [attr.aria-label]=\"globalContextButtonText | translate\"\n tooltip=\"{{ globalContextButtonText | translate }}\"\n placement=\"top\"\n container=\"body\"\n data-cy=\"dashboard-child--global-date-context-indicator\"\n >\n <span class=\"c8y-icon-badge d-inline-flex\">\n <i c8yIcon=\"clock\"></i>\n <span class=\"badge badge-success\">\n <i\n c8yIcon=\"link\"\n ></i>\n </span>\n </span>\n </button>\n</span>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: i4.C8yTranslatePipe, name: "translate" }] }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: WidgetTimeContextIconBar, selector: "c8y-widget-time-context-icon-bar", inputs: { config: "config" }, ngImport: i0, template: "<span class=\"m-l-auto d-flex\">\n <button\n class=\"btn btn-clean btn-no-focus\"\n [attr.aria-label]=\"'Aggregation' | translate\"\n tooltip=\"{{\n (config?.aggregation ? AGGREGATION_TEXTS[config.aggregation] : AGGREGATION_TEXTS.undefined)\n | translate\n }}\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"config.displaySettings.globalAggregationContext\"\n [adaptivePosition]=\"false\"\n >\n <i\n class=\"icon-14\"\n [c8yIcon]=\"\n config?.aggregation ? AGGREGATION_ICONS[config.aggregation] : AGGREGATION_ICONS.undefined\n \"\n ></i>\n </button>\n <button\n class=\"btn c8y-realtime btn-no-focus\"\n [attr.aria-label]=\"(config?.realtime ? 'Realtime active' : 'Realtime inactive') | translate\"\n tooltip=\"{{ (config?.realtime ? 'Realtime active' : 'Realtime inactive') | translate }}\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n >\n <span\n class=\"c8y-pulse m-0\"\n [ngClass]=\"{ active: config?.realtime, inactive: !config?.realtime }\"\n ></span>\n </button>\n <button\n class=\"btn btn-clean btn-no-focus p-l-4 p-r-0\"\n [attr.aria-label]=\"globalContextButtonText | translate\"\n [tooltip]=\"globalContextButtonText | translate\"\n placement=\"top\"\n container=\"body\"\n data-cy=\"dashboard-child--global-date-context-indicator\"\n >\n <span class=\"tag tag--success chip\">\n <i c8yIcon=\"clock\"></i>\n {{ 'Realtime' | translate }}\n </span>\n </button>\n</span>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
25
25
  }
26
26
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: WidgetTimeContextIconBar, decorators: [{
27
27
  type: Component,
28
- args: [{ selector: 'c8y-widget-time-context-icon-bar', template: "<span class=\"m-l-auto d-flex\">\n <button\n *ngIf=\"config.displaySettings.globalAggregationContext\"\n type=\"button\"\n class=\"btn btn-clean btn-no-focus\"\n [attr.aria-label]=\"'Aggregation' | translate\"\n tooltip=\"{{\n (config?.aggregation ? AGGREGATION_TEXTS[config.aggregation] : AGGREGATION_TEXTS.undefined)\n | translate\n }}\"\n [adaptivePosition]=\"false\"\n placement=\"top\"\n container=\"body\"\n >\n <i\n [c8yIcon]=\"\n config?.aggregation ? AGGREGATION_ICONS[config.aggregation] : AGGREGATION_ICONS.undefined\n \"\n class=\"icon-14\"\n ></i>\n </button>\n <button\n class=\"btn c8y-realtime btn-no-focus\"\n [attr.aria-label]=\"(config?.realtime ? 'Realtime active' : 'Realtime inactive') | translate\"\n tooltip=\"{{ (config?.realtime ? 'Realtime active' : 'Realtime inactive') | translate }}\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n >\n <span\n class=\"c8y-pulse m-0\"\n [ngClass]=\"{ active: config?.realtime, inactive: !config?.realtime }\"\n ></span>\n </button>\n <button\n class=\"btn btn-clean btn-no-focus p-l-4 p-r-0\"\n [attr.aria-label]=\"globalContextButtonText | translate\"\n tooltip=\"{{ globalContextButtonText | translate }}\"\n placement=\"top\"\n container=\"body\"\n data-cy=\"dashboard-child--global-date-context-indicator\"\n >\n <span class=\"c8y-icon-badge d-inline-flex\">\n <i c8yIcon=\"clock\"></i>\n <span class=\"badge badge-success\">\n <i\n c8yIcon=\"link\"\n ></i>\n </span>\n </span>\n </button>\n</span>\n" }]
28
+ args: [{ selector: 'c8y-widget-time-context-icon-bar', template: "<span class=\"m-l-auto d-flex\">\n <button\n class=\"btn btn-clean btn-no-focus\"\n [attr.aria-label]=\"'Aggregation' | translate\"\n tooltip=\"{{\n (config?.aggregation ? AGGREGATION_TEXTS[config.aggregation] : AGGREGATION_TEXTS.undefined)\n | translate\n }}\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"config.displaySettings.globalAggregationContext\"\n [adaptivePosition]=\"false\"\n >\n <i\n class=\"icon-14\"\n [c8yIcon]=\"\n config?.aggregation ? AGGREGATION_ICONS[config.aggregation] : AGGREGATION_ICONS.undefined\n \"\n ></i>\n </button>\n <button\n class=\"btn c8y-realtime btn-no-focus\"\n [attr.aria-label]=\"(config?.realtime ? 'Realtime active' : 'Realtime inactive') | translate\"\n tooltip=\"{{ (config?.realtime ? 'Realtime active' : 'Realtime inactive') | translate }}\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n >\n <span\n class=\"c8y-pulse m-0\"\n [ngClass]=\"{ active: config?.realtime, inactive: !config?.realtime }\"\n ></span>\n </button>\n <button\n class=\"btn btn-clean btn-no-focus p-l-4 p-r-0\"\n [attr.aria-label]=\"globalContextButtonText | translate\"\n [tooltip]=\"globalContextButtonText | translate\"\n placement=\"top\"\n container=\"body\"\n data-cy=\"dashboard-child--global-date-context-indicator\"\n >\n <span class=\"tag tag--success chip\">\n <i c8yIcon=\"clock\"></i>\n {{ 'Realtime' | translate }}\n </span>\n </button>\n</span>\n" }]
29
29
  }], propDecorators: { config: [{
30
30
  type: Input
31
31
  }] } });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRpbWUtY29udGV4dC1pY29uLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9jb3JlL2Rhc2hib2FyZC93aWdldC10aW1lLWNvbnRleHQvd2lkZ2V0LXRpbWUtY29udGV4dC1pY29uLWJhci93aWRnZXQtdGltZS1jb250ZXh0LWljb24tYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2NvcmUvZGFzaGJvYXJkL3dpZ2V0LXRpbWUtY29udGV4dC93aWRnZXQtdGltZS1jb250ZXh0LWljb24tYmFyL3dpZGdldC10aW1lLWNvbnRleHQtaWNvbi1iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDcEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBTXhDLE1BQU0sT0FBTyx3QkFBd0I7SUFKckM7UUFNVyxzQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUN0QyxzQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztLQXFCaEQ7SUFkQyxRQUFRO1FBQ04sSUFDRSxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUI7WUFDakQsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsRUFDOUMsQ0FBQztZQUNELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxPQUFPLENBQ3BDLDZEQUE2RCxDQUM5RCxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsdUJBQXVCLEdBQUcsT0FBTyxDQUNwQyx1REFBdUQsQ0FDeEQsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDOzhHQXZCVSx3QkFBd0I7a0dBQXhCLHdCQUF3QixzR0NSckMsdW5EQW9EQTs7MkZENUNhLHdCQUF3QjtrQkFKcEMsU0FBUzsrQkFDRSxrQ0FBa0M7OEJBV25DLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFHR1JFR0FUSU9OX0lDT05TLCBBR0dSRUdBVElPTl9URVhUUyB9IGZyb20gJy4uL3dpZGdldC10aW1lLWNvbnRleHQubW9kZWwnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uLy4uLy4uL2kxOG4nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktd2lkZ2V0LXRpbWUtY29udGV4dC1pY29uLWJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi93aWRnZXQtdGltZS1jb250ZXh0LWljb24tYmFyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBXaWRnZXRUaW1lQ29udGV4dEljb25CYXIge1xuICBnbG9iYWxDb250ZXh0QnV0dG9uVGV4dDogc3RyaW5nO1xuICByZWFkb25seSBBR0dSRUdBVElPTl9JQ09OUyA9IEFHR1JFR0FUSU9OX0lDT05TO1xuICByZWFkb25seSBBR0dSRUdBVElPTl9URVhUUyA9IEFHR1JFR0FUSU9OX1RFWFRTO1xuXG4gIC8qKlxuICAgKiBXaWRnZXQgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAqL1xuICBASW5wdXQoKSBjb25maWc6IGFueTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmNvbmZpZy5kaXNwbGF5U2V0dGluZ3MuZ2xvYmFsUmVhbHRpbWVDb250ZXh0ICYmXG4gICAgICAhdGhpcy5jb25maWcuZGlzcGxheVNldHRpbmdzLmdsb2JhbFRpbWVDb250ZXh0XG4gICAgKSB7XG4gICAgICB0aGlzLmdsb2JhbENvbnRleHRCdXR0b25UZXh0ID0gZ2V0dGV4dChcbiAgICAgICAgJ1RoaXMgd2lkZ2V0IGlzIGluIHN5bmMgd2l0aCB0aGUgZGFzaGJvYXJkIHJlYWx0aW1lIGNvbnRleHQuJ1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nbG9iYWxDb250ZXh0QnV0dG9uVGV4dCA9IGdldHRleHQoXG4gICAgICAgICdUaGlzIHdpZGdldCBpcyBpbiBzeW5jIHdpdGggdGhlIGRhc2hib2FyZCB0aW1lIHJhbmdlLidcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iLCI8c3BhbiBjbGFzcz1cIm0tbC1hdXRvIGQtZmxleFwiPlxuICA8YnV0dG9uXG4gICAgKm5nSWY9XCJjb25maWcuZGlzcGxheVNldHRpbmdzLmdsb2JhbEFnZ3JlZ2F0aW9uQ29udGV4dFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJidG4gYnRuLWNsZWFuIGJ0bi1uby1mb2N1c1wiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQWdncmVnYXRpb24nIHwgdHJhbnNsYXRlXCJcbiAgICB0b29sdGlwPVwie3tcbiAgICAgIChjb25maWc/LmFnZ3JlZ2F0aW9uID8gQUdHUkVHQVRJT05fVEVYVFNbY29uZmlnLmFnZ3JlZ2F0aW9uXSA6IEFHR1JFR0FUSU9OX1RFWFRTLnVuZGVmaW5lZClcbiAgICAgICAgfCB0cmFuc2xhdGVcbiAgICB9fVwiXG4gICAgW2FkYXB0aXZlUG9zaXRpb25dPVwiZmFsc2VcIlxuICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgY29udGFpbmVyPVwiYm9keVwiXG4gID5cbiAgICA8aVxuICAgICAgW2M4eUljb25dPVwiXG4gICAgICAgIGNvbmZpZz8uYWdncmVnYXRpb24gPyBBR0dSRUdBVElPTl9JQ09OU1tjb25maWcuYWdncmVnYXRpb25dIDogQUdHUkVHQVRJT05fSUNPTlMudW5kZWZpbmVkXG4gICAgICBcIlxuICAgICAgY2xhc3M9XCJpY29uLTE0XCJcbiAgICA+PC9pPlxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGM4eS1yZWFsdGltZSBidG4tbm8tZm9jdXNcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiKGNvbmZpZz8ucmVhbHRpbWUgPyAnUmVhbHRpbWUgYWN0aXZlJyA6ICdSZWFsdGltZSBpbmFjdGl2ZScpIHwgdHJhbnNsYXRlXCJcbiAgICB0b29sdGlwPVwie3sgKGNvbmZpZz8ucmVhbHRpbWUgPyAnUmVhbHRpbWUgYWN0aXZlJyA6ICdSZWFsdGltZSBpbmFjdGl2ZScpIHwgdHJhbnNsYXRlIH19XCJcbiAgICBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwiYzh5LXB1bHNlIG0tMFwiXG4gICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogY29uZmlnPy5yZWFsdGltZSwgaW5hY3RpdmU6ICFjb25maWc/LnJlYWx0aW1lIH1cIlxuICAgID48L3NwYW4+XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWNsZWFuIGJ0bi1uby1mb2N1cyBwLWwtNCBwLXItMFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnbG9iYWxDb250ZXh0QnV0dG9uVGV4dCB8IHRyYW5zbGF0ZVwiXG4gICAgdG9vbHRpcD1cInt7IGdsb2JhbENvbnRleHRCdXR0b25UZXh0IHwgdHJhbnNsYXRlIH19XCJcbiAgICBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgIGRhdGEtY3k9XCJkYXNoYm9hcmQtY2hpbGQtLWdsb2JhbC1kYXRlLWNvbnRleHQtaW5kaWNhdG9yXCJcbiAgPlxuICAgIDxzcGFuIGNsYXNzPVwiYzh5LWljb24tYmFkZ2UgZC1pbmxpbmUtZmxleFwiPlxuICAgICAgPGkgYzh5SWNvbj1cImNsb2NrXCI+PC9pPlxuICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1zdWNjZXNzXCI+XG4gICAgICAgIDxpXG4gICAgICAgICAgYzh5SWNvbj1cImxpbmtcIlxuICAgICAgICA+PC9pPlxuICAgICAgPC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG48L3NwYW4+XG4iXX0=
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRpbWUtY29udGV4dC1pY29uLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9jb3JlL2Rhc2hib2FyZC93aWdldC10aW1lLWNvbnRleHQvd2lkZ2V0LXRpbWUtY29udGV4dC1pY29uLWJhci93aWRnZXQtdGltZS1jb250ZXh0LWljb24tYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2NvcmUvZGFzaGJvYXJkL3dpZ2V0LXRpbWUtY29udGV4dC93aWRnZXQtdGltZS1jb250ZXh0LWljb24tYmFyL3dpZGdldC10aW1lLWNvbnRleHQtaWNvbi1iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDbEIsTUFBTSxpREFBaUQsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFNeEMsTUFBTSxPQUFPLHdCQUF3QjtJQUpyQztRQU1XLHNCQUFpQixHQUFHLGlCQUFpQixDQUFDO1FBQ3RDLHNCQUFpQixHQUFHLGlCQUFpQixDQUFDO0tBcUJoRDtJQWRDLFFBQVE7UUFDTixJQUNFLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLHFCQUFxQjtZQUNqRCxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLGlCQUFpQixFQUM5QyxDQUFDO1lBQ0QsSUFBSSxDQUFDLHVCQUF1QixHQUFHLE9BQU8sQ0FDcEMsNkRBQTZELENBQzlELENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxPQUFPLENBQ3BDLHVEQUF1RCxDQUN4RCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7OEdBdkJVLHdCQUF3QjtrR0FBeEIsd0JBQXdCLHNHQ1hyQyw4aERBZ0RBOzsyRkRyQ2Esd0JBQXdCO2tCQUpwQyxTQUFTOytCQUNFLGtDQUFrQzs4QkFXbkMsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQUdHUkVHQVRJT05fSUNPTlMsXG4gIEFHR1JFR0FUSU9OX1RFWFRTXG59IGZyb20gJy4vLi4vLi4vLi4vY29tbW9uL2FnZ3JlZ2F0aW9uL2FnZ3JlZ2F0aW9uLm1vZGVsJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICcuLi8uLi8uLi9pMThuJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXdpZGdldC10aW1lLWNvbnRleHQtaWNvbi1iYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vd2lkZ2V0LXRpbWUtY29udGV4dC1pY29uLWJhci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0VGltZUNvbnRleHRJY29uQmFyIHtcbiAgZ2xvYmFsQ29udGV4dEJ1dHRvblRleHQ6IHN0cmluZztcbiAgcmVhZG9ubHkgQUdHUkVHQVRJT05fSUNPTlMgPSBBR0dSRUdBVElPTl9JQ09OUztcbiAgcmVhZG9ubHkgQUdHUkVHQVRJT05fVEVYVFMgPSBBR0dSRUdBVElPTl9URVhUUztcblxuICAvKipcbiAgICogV2lkZ2V0IGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgKi9cbiAgQElucHV0KCkgY29uZmlnOiBhbnk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5jb25maWcuZGlzcGxheVNldHRpbmdzLmdsb2JhbFJlYWx0aW1lQ29udGV4dCAmJlxuICAgICAgIXRoaXMuY29uZmlnLmRpc3BsYXlTZXR0aW5ncy5nbG9iYWxUaW1lQ29udGV4dFxuICAgICkge1xuICAgICAgdGhpcy5nbG9iYWxDb250ZXh0QnV0dG9uVGV4dCA9IGdldHRleHQoXG4gICAgICAgICdUaGlzIHdpZGdldCBpcyBpbiBzeW5jIHdpdGggdGhlIGRhc2hib2FyZCByZWFsdGltZSBjb250ZXh0LidcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2xvYmFsQ29udGV4dEJ1dHRvblRleHQgPSBnZXR0ZXh0KFxuICAgICAgICAnVGhpcyB3aWRnZXQgaXMgaW4gc3luYyB3aXRoIHRoZSBkYXNoYm9hcmQgdGltZSByYW5nZS4nXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIiwiPHNwYW4gY2xhc3M9XCJtLWwtYXV0byBkLWZsZXhcIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1jbGVhbiBidG4tbm8tZm9jdXNcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FnZ3JlZ2F0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgdG9vbHRpcD1cInt7XG4gICAgICAoY29uZmlnPy5hZ2dyZWdhdGlvbiA/IEFHR1JFR0FUSU9OX1RFWFRTW2NvbmZpZy5hZ2dyZWdhdGlvbl0gOiBBR0dSRUdBVElPTl9URVhUUy51bmRlZmluZWQpXG4gICAgICAgIHwgdHJhbnNsYXRlXG4gICAgfX1cIlxuICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgKm5nSWY9XCJjb25maWcuZGlzcGxheVNldHRpbmdzLmdsb2JhbEFnZ3JlZ2F0aW9uQ29udGV4dFwiXG4gICAgW2FkYXB0aXZlUG9zaXRpb25dPVwiZmFsc2VcIlxuICA+XG4gICAgPGlcbiAgICAgIGNsYXNzPVwiaWNvbi0xNFwiXG4gICAgICBbYzh5SWNvbl09XCJcbiAgICAgICAgY29uZmlnPy5hZ2dyZWdhdGlvbiA/IEFHR1JFR0FUSU9OX0lDT05TW2NvbmZpZy5hZ2dyZWdhdGlvbl0gOiBBR0dSRUdBVElPTl9JQ09OUy51bmRlZmluZWRcbiAgICAgIFwiXG4gICAgPjwvaT5cbiAgPC9idXR0b24+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBjOHktcmVhbHRpbWUgYnRuLW5vLWZvY3VzXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIihjb25maWc/LnJlYWx0aW1lID8gJ1JlYWx0aW1lIGFjdGl2ZScgOiAnUmVhbHRpbWUgaW5hY3RpdmUnKSB8IHRyYW5zbGF0ZVwiXG4gICAgdG9vbHRpcD1cInt7IChjb25maWc/LnJlYWx0aW1lID8gJ1JlYWx0aW1lIGFjdGl2ZScgOiAnUmVhbHRpbWUgaW5hY3RpdmUnKSB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgcGxhY2VtZW50PVwidG9wXCJcbiAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgPlxuICAgIDxzcGFuXG4gICAgICBjbGFzcz1cImM4eS1wdWxzZSBtLTBcIlxuICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGNvbmZpZz8ucmVhbHRpbWUsIGluYWN0aXZlOiAhY29uZmlnPy5yZWFsdGltZSB9XCJcbiAgICA+PC9zcGFuPlxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1jbGVhbiBidG4tbm8tZm9jdXMgcC1sLTQgcC1yLTBcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2xvYmFsQ29udGV4dEJ1dHRvblRleHQgfCB0cmFuc2xhdGVcIlxuICAgIFt0b29sdGlwXT1cImdsb2JhbENvbnRleHRCdXR0b25UZXh0IHwgdHJhbnNsYXRlXCJcbiAgICBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgIGRhdGEtY3k9XCJkYXNoYm9hcmQtY2hpbGQtLWdsb2JhbC1kYXRlLWNvbnRleHQtaW5kaWNhdG9yXCJcbiAgPlxuICAgIDxzcGFuIGNsYXNzPVwidGFnIHRhZy0tc3VjY2VzcyBjaGlwXCI+XG4gICAgICA8aSBjOHlJY29uPVwiY2xvY2tcIj48L2k+XG4gICAgICB7eyAnUmVhbHRpbWUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvc3Bhbj5cbiJdfQ==
@@ -68,7 +68,9 @@ export class WidgetTimeContextQueryService {
68
68
  queryParams = {
69
69
  dateContextInterval: interval,
70
70
  dateContextRealtime: realtime,
71
- dateContextAggregation: aggregation
71
+ dateContextAggregation: aggregation,
72
+ dateContextTo: null,
73
+ dateContextFrom: null
72
74
  };
73
75
  }
74
76
  else {
@@ -76,13 +78,14 @@ export class WidgetTimeContextQueryService {
76
78
  dateContextFrom: date[0].toISOString(),
77
79
  dateContextTo: date[1].toISOString(),
78
80
  dateContextRealtime: realtime,
79
- dateContextAggregation: aggregation
81
+ dateContextAggregation: aggregation,
82
+ dateContextInterval: null
80
83
  };
81
84
  }
82
85
  this.router.navigate([], {
83
86
  relativeTo: this.activatedRoute,
84
87
  queryParams,
85
- replaceUrl: true
88
+ queryParamsHandling: 'merge'
86
89
  });
87
90
  }
88
91
  /**
@@ -162,4 +165,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
162
165
  type: Injectable,
163
166
  args: [{ providedIn: 'root' }]
164
167
  }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.WidgetTimeContextHelperService }, { type: i1.Router }] });
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRpbWUtY29udGV4dC1xdWVyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vY29yZS9kYXNoYm9hcmQvd2lnZXQtdGltZS1jb250ZXh0L3dpZGdldC10aW1lLWNvbnRleHQtcXVlcnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsMEJBQTBCLEVBSzNCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7QUFLdEYsTUFBTSxPQUFPLDZCQUE2QjtJQUN4QyxZQUNVLGNBQThCLEVBQzlCLGFBQTZDLEVBQzdDLE1BQWM7UUFGZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWdDO1FBQzdDLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDckIsQ0FBQztJQUVKOzs7OztPQUtHO0lBQ0gsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUN6QyxHQUFHLENBQUMsQ0FBQyxNQUFrRCxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDNUYsTUFBTSxDQUFDLENBQUMsTUFBbUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQzNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILDhCQUE4QjtRQUM1QixNQUFNLFFBQVEsR0FBRyxJQUFJLENB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bUM7UUFDdEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDcEYsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDO1FBQ3RELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQ3hELE1BQU0sQ0FBQyxlQUFlLEVBQ3RCLE1BQU0sQ0FBQyxhQUFhLENBQ3JCLENBQUM7UUFDRixPQUFPLGdCQUFnQixJQUFJLGNBQWMsQ0FBQztJQUM1QyxDQUFDOzhHQXBMVSw2QkFBNkI7a0hBQTdCLDZCQUE2QixjQURoQixNQUFNOzsyRkFDbkIsNkJBQTZCO2tCQUR6QyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBEYXRlQ29udGV4dFF1ZXJ5UGFyYW1OYW1lcyxcbiAgSW5wdXREYXRlQ29udGV4dFF1ZXJ5UGFyYW1zLFxuICBJbnRlcnZhbCxcbiAgT3V0cHV0RGF0ZUNvbnRleHRRdWVyeVBhcmFtcyxcbiAgV2lkZ2V0VGltZUNvbnRleHRTdGF0ZVxufSBmcm9tICcuL3dpZGdldC10aW1lLWNvbnRleHQubW9kZWwnO1xuaW1wb3J0IHsgV2lkZ2V0VGltZUNvbnRleHRIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi93aWRnZXQtdGltZS1jb250ZXh0LWhlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVUaW1lQ29udGV4dCB9IGZyb20gJy4uL3dpZGdldC1jaGFuZ2UtZXZlbnQubW9kZWwnO1xuaW1wb3J0IHsgYWdncmVnYXRpb25UeXBlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFdpZGdldFRpbWVDb250ZXh0UXVlcnlTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBoZWxwZXJTZXJ2aWNlOiBXaWRnZXRUaW1lQ29udGV4dEhlbHBlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHt9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGRhdGUgY29udGV4dCBxdWVyeSBwYXJhbXMgZXZlcnkgdGltZSBxdWVyeSBwYXJhbXMgY2hhbmdlLlxuICAgKiBJbnZhbGlkIHZhbHVlcyBhcmUgZmlsdGVyZWQgb3V0LlxuICAgKlxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIGRhdGUgY29udGV4dCBxdWVyeSBwYXJhbXMuXG4gICAqL1xuICBxdWVyeVBhcmFtc0NoYW5nZSQoKTogT2JzZXJ2YWJsZTxJbnB1dERhdGVDb250ZXh0UXVlcnlQYXJhbXM+IHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtcy5waXBlKFxuICAgICAgbWFwKChwYXJhbXM6IFJlY29yZDxEYXRlQ29udGV4dFF1ZXJ5UGFyYW1OYW1lcywgc3RyaW5nPikgPT4gdGhpcy5wcm9jZXNzUXVlcnlQYXJhbXMocGFyYW1zKSksXG4gICAgICBmaWx0ZXIoKHBhcmFtczogSW5wdXREYXRlQ29udGV4dFF1ZXJ5UGFyYW1zKSA9PiB0aGlzLnF1ZXJ5UGFyYW1zQ29udGFpbnNUaW1lUmFuZ2UocGFyYW1zKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgd2lkZ2V0IHRpbWUgY29udGV4dCBmcm9tIHF1ZXJ5IHBhcmFtZXRlcnMuXG4gICAqIEludGVydmFsIGRhdGEgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGRhdGUgdGltZSBjb250ZXh0IGRlc2NyaWJlZCBieSBkYXRlIFwiZnJvbVwiIGFuZCBkYXRlIFwidG9cIixcbiAgICogc28gaWYgdmFsaWQgaW50ZXJ2YWwgaXMgcHJvdmlkZWQsIGRhdGUgXCJmcm9tXCIgYW5kIGRhdGUgXCJ0b1wiIGFyZSBpZ25vcmVkLCBhbmQgdGhleSBhcmUgcmVjYWxjdWxhdGVkXG4gICAqIHdpdGggaW50ZXJ2YWwuXG4gICAqXG4gICAqIEByZXR1cm5zIFdpZGdldCB0aW1lIGNvbnRleHQgc3RhdGUgYmFzZWQgb24gY3VycmVudCBxdWVyeSBwYXJhbXMgb3IgbnVsbCBpZiBxdWVyeSBwYXJhbXMgcHJvdmlkZSBubyB2YWxpZCBjb250ZXh0LlxuICAgKi9cbiAgZGF0ZVRpbWVDb250ZXh0RnJvbVF1ZXJ5UGFyYW1zKCk6IFdpZGdldFRpbWVDb250ZXh0U3RhdGUgfCBudWxsIHtcbiAgICBjb25zdCByZWFsdGltZSA9IHRoaXMucGFyc2VSZWFsdGltZShcbiAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbRGF0ZUNvbnRleHRRdWVyeVBhcmFtTmFtZXMuREFURV9DT05URVhUX1JFQUxUSU1FXVxuICAgICk7XG4gICAgLy8gdHJ5aW5nIHRvIGdldCBkYXRlIGNvbnRleHQgZnJvbSBxdWVyeSBwYXJhbXMgYnkgaW50ZXJ2YWwgZmlyc3RcbiAgICBjb25zdCBkYXRlQ29udGV4dEludGVydmFsID1cbiAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbRGF0ZUNvbnRleHRRdWVyeVBhcmFtTmFtZXMuREFURV9DT05URVhUX0lOVEVSVkFMXTtcbiAgICBjb25zdCBhZ2dyZWdhdGlvbiA9XG4gICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zW0RhdGVDb250ZXh0UXVlcnlQYXJhbU5hbWVzLkRBVEVfQ09OVEVYVF9BR0dSRUdBVElPTl07XG4gICAgY29uc3QgaXNWYWxpZEludGVydmFsID0gdGhpcy5oZWxwZXJTZXJ2aWNlLmlzU2VsZWN0YWJsZUludGVydmFsKGRhdGVDb250ZXh0SW50ZXJ2YWwpO1xuICAgIGlmIChpc1ZhbGlkSW50ZXJ2YWwpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGU6IHRoaXMuaGVscGVyU2VydmljZS5nZXREYXRlVGltZUNvbnRleHRCeUludGVydmFsKGRhdGVDb250ZXh0SW50ZXJ2YWwpLFxuICAgICAgICBpbnRlcnZhbDogZGF0ZUNvbnRleHRJbnRlcnZhbCxcbiAgICAgICAgcmVhbHRpbWUsXG4gICAgICAgIGFnZ3JlZ2F0aW9uXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIGlmIGRhdGUgY29udGV4dCBieSBpbnRlcnZhbCBpcyBub3QgcHJvdmlkZWQsIHRyeSBnZXR0aW5nIGRhdGUgXCJmcm9tXCIgYW5kIGRhdGUgXCJ0b1wiIGZyb20gcXVlcnkgcGFyYW1zXG4gICAgY29uc3QgZGF0ZVRpbWVDb250ZXh0RnJvbVF1ZXJ5UGFyYW1zID0gdGhpcy5nZXREYXRlQ29udGV4dEZyb21RdWVyeVBhcmFtcygpO1xuICAgIGlmIChkYXRlVGltZUNvbnRleHRGcm9tUXVlcnlQYXJhbXMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGU6IGRhdGVUaW1lQ29udGV4dEZyb21RdWVyeVBhcmFtcyxcbiAgICAgICAgaW50ZXJ2YWw6ICdjdXN0b20nLFxuICAgICAgICByZWFsdGltZSxcbiAgICAgICAgYWdncmVnYXRpb25cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgcXVlcnkgcGFyYW1ldGVycyByZWxhdGVkIHRvIGRhdGUgdGltZSBjb250ZXh0LlxuICAgKiBWYWxpZCBpbnRlcnZhbCAoYW5kIG90aGVyIHRoYW4gJ2N1c3RvbScpIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBjb250ZXh0IGRlc2NyaWJlZCBieSBkYXRlIFwiZnJvbVwiIGFuZCBkYXRlIFwidG9cIi5cbiAgICogSW50ZXJ2YWwgYW5kIGNvbnRleHQgZGVzY3JpYmVkIGJ5IGRhdGUgXCJmcm9tXCIgYW5kIGRhdGUgXCJ0b1wiIGV4Y2x1ZGUgZWFjaCBvdGhlci5cbiAgICpcbiAgICogQHBhcmFtIHdpZGdldFRpbWVDb250ZXh0U3RhdGUgV2lkZ2V0IHRpbWUgY29udGV4dCBzdGF0ZS5cbiAgICovXG4gIHNldERhdGVDb250ZXh0UXVlcnlQYXJhbXMoe1xuICAgIGludGVydmFsLFxuICAgIGRhdGUsXG4gICAgcmVhbHRpbWUsXG4gICAgYWdncmVnYXRpb25cbiAgfTogV2lkZ2V0VGltZUNvbnRleHRTdGF0ZSk6IHZvaWQge1xuICAgIGxldCBxdWVyeVBhcmFtczogT3V0cHV0RGF0ZUNvbnRleHRRdWVyeVBhcmFtcztcbiAgICBpZiAoaW50ZXJ2YWwgJiYgaW50ZXJ2YWwgIT09ICdjdXN0b20nKSB7XG4gICAgICBxdWVyeVBhcmFtcyA9IHtcbiAgICAgICAgZGF0ZUNvbnRleHRJbnRlcnZhbDogaW50ZXJ2YWwsXG4gICAgICAgIGRhdGVDb250ZXh0UmVhbHRpbWU6IHJlYWx0aW1lLFxuICAgICAgICBkYXRlQ29udGV4dEFnZ3JlZ2F0aW9uOiBhZ2dyZWdhdGlvblxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcXVlcnlQYXJhbXMgPSB7XG4gICAgICAgIGRhdGVDb250ZXh0RnJvbTogZGF0ZVswXS50b0lTT1N0cmluZygpLFxuICAgICAgICBkYXRlQ29udGV4dFRvOiBkYXRlWzFdLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGRhdGVDb250ZXh0UmVhbHRpbWU6IHJlYWx0aW1lLFxuICAgICAgICBkYXRlQ29udGV4dEFnZ3JlZ2F0aW9uOiBhZ2dyZWdhdGlvblxuICAgICAgfTtcbiAgICB9XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUsXG4gICAgICBxdWVyeVBhcmFtcyxcbiAgICAgIHJlcGxhY2VVcmw6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYWxsIGRhdGUgdGltZSBjb250ZXh0IHJlbGF0ZWQgcXVlcnkgcGFyYW1ldGVycy5cbiAgICovXG4gIGNsZWFyUXVlcnlQYXJhbXMoKTogdm9pZCB7XG4gICAgY29uc3QgY2xlYXJpbmdRdWVyeVBhcmFtczogUmVjb3JkPERhdGVDb250ZXh0UXVlcnlQYXJhbU5hbWVzLCBudWxsPiA9IHtcbiAgICAgIGRhdGVDb250ZXh0RnJvbTogbnVsbCxcbiAgICAgIGRhdGVDb250ZXh0VG86IG51bGwsXG4gICAgICBkYXRlQ29udGV4dEludGVydmFsOiBudWxsLFxuICAgICAgZGF0ZUNvbnRleHRSZWFsdGltZTogbnVsbCxcbiAgICAgIGRhdGVDb250ZXh0QWdncmVnYXRpb246IG51bGxcbiAgICB9O1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlLFxuICAgICAgcXVlcnlQYXJhbXM6IGNsZWFyaW5nUXVlcnlQYXJhbXMsXG4gICAgICByZXBsYWNlVXJsOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2VzIGFuZCB2YWxpZGF0ZXMgZGF0ZSBjb250ZXh0IGZyb20gcXVlcnkgcGFyYW1zIGRlc2NyaWJlZCBieSBkYXRlIFwiZnJvbVwiIGFuZCBkYXRlIFwidG9cIi5cbiAgICpcbiAgICogQHJldHVybnMgRGF0ZSBjb250ZXh0IGFzIHR1cGxlIG9mIGRhdGUgXCJmcm9tXCIgYW5kIGRhdGUgXCJ0b1wiLCBvciBudWxsIGlmIGRhdGUgY29udGV4dCBpcyBpbnZhbGlkLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXREYXRlQ29udGV4dEZyb21RdWVyeVBhcmFtcygpOiBEYXRlVGltZUNvbnRleHQgfCBudWxsIHtcbiAgICBjb25zdCBkYXRlQ29udGV4dEZyb20gPVxuICAgICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1tEYXRlQ29udGV4dFF1ZXJ5UGFyYW1OYW1lcy5EQVRFX0NPTlRFWFRfRlJPTV07XG4gICAgY29uc3QgZGF0ZUNvbnRleHRUbyA9XG4gICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zW0RhdGVDb250ZXh0UXVlcnlQYXJhbU5hbWVzLkRBVEVfQ09OVEVYVF9UT107XG5cbiAgICBpZiAodGhpcy5oZWxwZXJTZXJ2aWNlLmlzVmFsaWREYXRlUmFuZ2UoZGF0ZUNvbnRleHRGcm9tLCBkYXRlQ29udGV4dFRvKSkge1xuICAgICAgcmV0dXJuIFtuZXcgRGF0ZShkYXRlQ29udGV4dEZyb20pLCBuZXcgRGF0ZShkYXRlQ29udGV4dFRvKV07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlcyByZWFsdGltZSBxdWVyeSBwYXJhbS5cbiAgICpcbiAgICogQHJldHVybnMgUGFyc2VkIHJlYWx0aW1lIHZhbHVlIG9yIG51bGwuXG4gICAqL1xuICBwcml2YXRlIHBhcnNlUmVhbHRpbWUocmVhbHRpbWU6IHN0cmluZyk6IGJvb2xlYW4gfCBudWxsIHtcbiAgICByZXR1cm4gcmVhbHRpbWUgPT09ICdmYWxzZScgPyBmYWxzZSA6IHJlYWx0aW1lID09PSAndHJ1ZScgPyB0cnVlIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXBzIHF1ZXJ5IHBhcmFtcyBvYmplY3QgdG8gcHJvcGVyIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgUXVlcnkgcGFyYW1ldGVycyBvYmplY3Qgd2l0aCBzdHJpbmcgdmFsdWVzIG9ubHkuXG4gICAqXG4gICAqIEByZXR1cm5zIFF1ZXJ5IHBhcmFtcyBvYmplY3Qgb2YgcHJvcGVyIHR5cGUuXG4gICAqL1xuICBwcml2YXRlIHByb2Nlc3NRdWVyeVBhcmFtcyhcbiAgICBwYXJhbXM6IFJlY29yZDxEYXRlQ29udGV4dFF1ZXJ5UGFyYW1OYW1lcywgc3RyaW5nPlxuICApOiBJbnB1dERhdGVDb250ZXh0UXVlcnlQYXJhbXMge1xuICAgIGNvbnN0IGRhdGVDb250ZXh0UmVhbHRpbWUgPSB0aGlzLnBhcnNlUmVhbHRpbWUocGFyYW1zLmRhdGVDb250ZXh0UmVhbHRpbWUpO1xuICAgIGNvbnN0IGRhdGVDb250ZXh0SW50ZXJ2YWwgPSB0aGlzLmhlbHBlclNlcnZpY2UuaXNTZWxlY3RhYmxlSW50ZXJ2YWwoXG4gICAgICBwYXJhbXMuZGF0ZUNvbnRleHRJbnRlcnZhbCBhcyBJbnRlcnZhbFsnaWQnXVxuICAgIClcbiAgICAgID8gKHBhcmFtcy5kYXRlQ29udGV4dEludGVydmFsIGFzIEludGVydmFsWydpZCddKVxuICAgICAgOiBudWxsO1xuICAgIGNvbnN0IGRhdGVDb250ZXh0QWdncmVnYXRpb24gPSB0aGlzLmhlbHBlclNlcnZpY2UuaXNWYWxpZEFnZ3JlZ2F0aW9uKFxuICAgICAgcGFyYW1zLmRhdGVDb250ZXh0QWdncmVnYXRpb24gYXMgYWdncmVnYXRpb25UeXBlXG4gICAgKVxuICAgICAgPyAocGFyYW1zLmRhdGVDb250ZXh0QWdncmVnYXRpb24gYXMgYWdncmVnYXRpb25UeXBlKVxuICAgICAgOiBudWxsO1xuICAgIHJldHVybiB7IC4uLnBhcmFtcywgZGF0ZUNvbnRleHRSZWFsdGltZSwgZGF0ZUNvbnRleHRJbnRlcnZhbCwgZGF0ZUNvbnRleHRBZ2dyZWdhdGlvbiB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgcHJvdmlkZWQgcXVlcnkgcGFyYW1zIGNvbnRhaW5zIHZhbGlkIHRpbWUgcmFuZ2UuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgUXVlcnkgcGFyYW1ldGVycyBvYmplY3QuXG4gICAqXG4gICAqIEByZXR1cm5zIFRydWUgaWYgcXVlcnkgcGFyYW1zIGNvbnRhaW5zIHZhbGlkIHRpbWUgcmFuZ2UsIG90aGVyd2lzZSBmYWxzZS5cbiAgICovXG4gIHByaXZhdGUgcXVlcnlQYXJhbXNDb250YWluc1RpbWVSYW5nZShwYXJhbXM6IElucHV0RGF0ZUNvbnRleHRRdWVyeVBhcmFtcyk6IGJvb2xlYW4ge1xuICAgIGlmICghcGFyYW1zLmRhdGVDb250ZXh0SW50ZXJ2YWwgJiYgIXBhcmFtcy5kYXRlQ29udGV4dEZyb20gJiYgIXBhcmFtcy5kYXRlQ29udGV4dFRvKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGludGVydmFsUHJvdmlkZWQgPSAhIXBhcmFtcy5kYXRlQ29udGV4dEludGVydmFsO1xuICAgIGNvbnN0IGRhdGVSYW5nZVZhbGlkID0gdGhpcy5oZWxwZXJTZXJ2aWNlLmlzVmFsaWREYXRlUmFuZ2UoXG4gICAgICBwYXJhbXMuZGF0ZUNvbnRleHRGcm9tLFxuICAgICAgcGFyYW1zLmRhdGVDb250ZXh0VG9cbiAgICApO1xuICAgIHJldHVybiBpbnRlcnZhbFByb3ZpZGVkIHx8IGRhdGVSYW5nZVZhbGlkO1xuICB9XG59XG4iXX0=
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRpbWUtY29udGV4dC1xdWVyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vY29yZS9kYXNoYm9hcmQvd2lnZXQtdGltZS1jb250ZXh0L3dpZGdldC10aW1lLWNvbnRleHQtcXVlcnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsMEJBQTBCLEVBRzNCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7QUFNdEYsTUFBTSxPQUFPLDZCQUE2QjtJQUN4QyxZQUNVLGNBQThCLEVBQzlCLGFBQTZDLEVBQzdDLE1BQWM7UUFGZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWdDO1FBQzdDLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDckIsQ0FBQztJQUVKOzs7OztPQUtHO0lBQ0gsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUN6QyxHQUFHLENBQUMsQ0FBQyxNQUFrRCxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDNUYsTUFBTSxDQUFDLENBQUMsTUFBbUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQzNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILDhCQUE4QjtRQUM1QixNQUFNLFFBQVEsR0FBRyxJQUFJLENB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QixFQUFFLHNCQUFzQixFQUFFLENBQUM7SUFDekYsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLDRCQUE0QixDQUFDLE1BQW1DO1FBQ3RFLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3BGLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQztRQUN0RCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUN4RCxNQUFNLENBQUMsZUFBZSxFQUN0QixNQUFNLENBQUMsYUFBYSxDQUNyQixDQUFDO1FBQ0YsT0FBTyxnQkFBZ0IsSUFBSSxjQUFjLENBQUM7SUFDNUMsQ0FBQzs4R0F2TFUsNkJBQTZCO2tIQUE3Qiw2QkFBNkIsY0FEaEIsTUFBTTs7MkZBQ25CLDZCQUE2QjtrQkFEekMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgRGF0ZUNvbnRleHRRdWVyeVBhcmFtTmFtZXMsXG4gIElucHV0RGF0ZUNvbnRleHRRdWVyeVBhcmFtcyxcbiAgV2lkZ2V0VGltZUNvbnRleHRTdGF0ZVxufSBmcm9tICcuL3dpZGdldC10aW1lLWNvbnRleHQubW9kZWwnO1xuaW1wb3J0IHsgV2lkZ2V0VGltZUNvbnRleHRIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi93aWRnZXQtdGltZS1jb250ZXh0LWhlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVUaW1lQ29udGV4dCB9IGZyb20gJy4uL3dpZGdldC1jaGFuZ2UtZXZlbnQubW9kZWwnO1xuaW1wb3J0IHsgYWdncmVnYXRpb25UeXBlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgSW50ZXJ2YWwgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ludGVydmFsLXBpY2tlcic7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0VGltZUNvbnRleHRRdWVyeVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGhlbHBlclNlcnZpY2U6IFdpZGdldFRpbWVDb250ZXh0SGVscGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge31cblxuICAvKipcbiAgICogUmV0dXJucyBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgZGF0ZSBjb250ZXh0IHF1ZXJ5IHBhcmFtcyBldmVyeSB0aW1lIHF1ZXJ5IHBhcmFtcyBjaGFuZ2UuXG4gICAqIEludmFsaWQgdmFsdWVzIGFyZSBmaWx0ZXJlZCBvdXQuXG4gICAqXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2YgZGF0ZSBjb250ZXh0IHF1ZXJ5IHBhcmFtcy5cbiAgICovXG4gIHF1ZXJ5UGFyYW1zQ2hhbmdlJCgpOiBPYnNlcnZhYmxlPElucHV0RGF0ZUNvbnRleHRRdWVyeVBhcmFtcz4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zLnBpcGUoXG4gICAgICBtYXAoKHBhcmFtczogUmVjb3JkPERhdGVDb250ZXh0UXVlcnlQYXJhbU5hbWVzLCBzdHJpbmc+KSA9PiB0aGlzLnByb2Nlc3NRdWVyeVBhcmFtcyhwYXJhbXMpKSxcbiAgICAgIGZpbHRlcigocGFyYW1zOiBJbnB1dERhdGVDb250ZXh0UXVlcnlQYXJhbXMpID0+IHRoaXMucXVlcnlQYXJhbXNDb250YWluc1RpbWVSYW5nZShwYXJhbXMpKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB3aWRnZXQgdGltZSBjb250ZXh0IGZyb20gcXVlcnkgcGFyYW1ldGVycy5cbiAgICogSW50ZXJ2YWwgZGF0YSB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgZGF0ZSB0aW1lIGNvbnRleHQgZGVzY3JpYmVkIGJ5IGRhdGUgXCJmcm9tXCIgYW5kIGRhdGUgXCJ0b1wiLFxuICAgKiBzbyBpZiB2YWxpZCBpbnRlcnZhbCBpcyBwcm92aWRlZCwgZGF0ZSBcImZyb21cIiBhbmQgZGF0ZSBcInRvXCIgYXJlIGlnbm9yZWQsIGFuZCB0aGV5IGFyZSByZWNhbGN1bGF0ZWRcbiAgICogd2l0aCBpbnRlcnZhbC5cbiAgICpcbiAgICogQHJldHVybnMgV2lkZ2V0IHRpbWUgY29udGV4dCBzdGF0ZSBiYXNlZCBvbiBjdXJyZW50IHF1ZXJ5IHBhcmFtcyBvciBudWxsIGlmIHF1ZXJ5IHBhcmFtcyBwcm92aWRlIG5vIHZhbGlkIGNvbnRleHQuXG4gICAqL1xuICBkYXRlVGltZUNvbnRleHRGcm9tUXVlcnlQYXJhbXMoKTogV2lkZ2V0VGltZUNvbnRleHRTdGF0ZSB8IG51bGwge1xuICAgIGNvbnN0IHJlYWx0aW1lID0gdGhpcy5wYXJzZVJlYWx0aW1lKFxuICAgICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1tEYXRlQ29udGV4dFF1ZXJ5UGFyYW1OYW1lcy5EQVRFX0NPTlRFWFRfUkVBTFRJTUVdXG4gICAgKTtcbiAgICAvLyB0cnlpbmcgdG8gZ2V0IGRhdGUgY29udGV4dCBmcm9tIHF1ZXJ5IHBhcmFtcyBieSBpbnRlcnZhbCBmaXJzdFxuICAgIGNvbnN0IGRhdGVDb250ZXh0SW50ZXJ2YWwgPVxuICAgICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1tEYXRlQ29udGV4dFF1ZXJ5UGFyYW1OYW1lcy5EQVRFX0NPTlRFWFRfSU5URVJWQUxdO1xuICAgIGNvbnN0IGFnZ3JlZ2F0aW9uID1cbiAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbRGF0ZUNvbnRleHRRdWVyeVBhcmFtTmFtZXMuREFURV9DT05URVhUX0FHR1JFR0FUSU9OXTtcbiAgICBjb25zdCBpc1ZhbGlkSW50ZXJ2YWwgPSB0aGlzLmhlbHBlclNlcnZpY2UuaXNTZWxlY3RhYmxlSW50ZXJ2YWwoZGF0ZUNvbnRleHRJbnRlcnZhbCk7XG4gICAgaWYgKGlzVmFsaWRJbnRlcnZhbCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0ZTogdGhpcy5oZWxwZXJTZXJ2aWNlLmdldERhdGVUaW1lQ29udGV4dEJ5SW50ZXJ2YWwoZGF0ZUNvbnRleHRJbnRlcnZhbCksXG4gICAgICAgIGludGVydmFsOiBkYXRlQ29udGV4dEludGVydmFsLFxuICAgICAgICByZWFsdGltZSxcbiAgICAgICAgYWdncmVnYXRpb25cbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gaWYgZGF0ZSBjb250ZXh0IGJ5IGludGVydmFsIGlzIG5vdCBwcm92aWRlZCwgdHJ5IGdldHRpbmcgZGF0ZSBcImZyb21cIiBhbmQgZGF0ZSBcInRvXCIgZnJvbSBxdWVyeSBwYXJhbXNcbiAgICBjb25zdCBkYXRlVGltZUNvbnRleHRGcm9tUXVlcnlQYXJhbXMgPSB0aGlzLmdldERhdGVDb250ZXh0RnJvbVF1ZXJ5UGFyYW1zKCk7XG4gICAgaWYgKGRhdGVUaW1lQ29udGV4dEZyb21RdWVyeVBhcmFtcykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0ZTogZGF0ZVRpbWVDb250ZXh0RnJvbVF1ZXJ5UGFyYW1zLFxuICAgICAgICBpbnRlcnZhbDogJ2N1c3RvbScsXG4gICAgICAgIHJlYWx0aW1lLFxuICAgICAgICBhZ2dyZWdhdGlvblxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBxdWVyeSBwYXJhbWV0ZXJzIHJlbGF0ZWQgdG8gZGF0ZSB0aW1lIGNvbnRleHQuXG4gICAqIFZhbGlkIGludGVydmFsIChhbmQgb3RoZXIgdGhhbiAnY3VzdG9tJykgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGNvbnRleHQgZGVzY3JpYmVkIGJ5IGRhdGUgXCJmcm9tXCIgYW5kIGRhdGUgXCJ0b1wiLlxuICAgKiBJbnRlcnZhbCBhbmQgY29udGV4dCBkZXNjcmliZWQgYnkgZGF0ZSBcImZyb21cIiBhbmQgZGF0ZSBcInRvXCIgZXhjbHVkZSBlYWNoIG90aGVyLlxuICAgKlxuICAgKiBAcGFyYW0gd2lkZ2V0VGltZUNvbnRleHRTdGF0ZSBXaWRnZXQgdGltZSBjb250ZXh0IHN0YXRlLlxuICAgKi9cbiAgc2V0RGF0ZUNvbnRleHRRdWVyeVBhcmFtcyh7XG4gICAgaW50ZXJ2YWwsXG4gICAgZGF0ZSxcbiAgICByZWFsdGltZSxcbiAgICBhZ2dyZWdhdGlvblxuICB9OiBXaWRnZXRUaW1lQ29udGV4dFN0YXRlKTogdm9pZCB7XG4gICAgbGV0IHF1ZXJ5UGFyYW1zOiBSZWNvcmQ8RGF0ZUNvbnRleHRRdWVyeVBhcmFtTmFtZXMsIG51bGwgfCBzdHJpbmcgfCBib29sZWFuPjtcbiAgICBpZiAoaW50ZXJ2YWwgJiYgaW50ZXJ2YWwgIT09ICdjdXN0b20nKSB7XG4gICAgICBxdWVyeVBhcmFtcyA9IHtcbiAgICAgICAgZGF0ZUNvbnRleHRJbnRlcnZhbDogaW50ZXJ2YWwsXG4gICAgICAgIGRhdGVDb250ZXh0UmVhbHRpbWU6IHJlYWx0aW1lLFxuICAgICAgICBkYXRlQ29udGV4dEFnZ3JlZ2F0aW9uOiBhZ2dyZWdhdGlvbixcbiAgICAgICAgZGF0ZUNvbnRleHRUbzogbnVsbCxcbiAgICAgICAgZGF0ZUNvbnRleHRGcm9tOiBudWxsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBxdWVyeVBhcmFtcyA9IHtcbiAgICAgICAgZGF0ZUNvbnRleHRGcm9tOiBkYXRlWzBdLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGRhdGVDb250ZXh0VG86IGRhdGVbMV0udG9JU09TdHJpbmcoKSxcbiAgICAgICAgZGF0ZUNvbnRleHRSZWFsdGltZTogcmVhbHRpbWUsXG4gICAgICAgIGRhdGVDb250ZXh0QWdncmVnYXRpb246IGFnZ3JlZ2F0aW9uLFxuICAgICAgICBkYXRlQ29udGV4dEludGVydmFsOiBudWxsXG4gICAgICB9O1xuICAgIH1cbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgcmVsYXRpdmVUbzogdGhpcy5hY3RpdmF0ZWRSb3V0ZSxcbiAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJ1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgZGF0ZSB0aW1lIGNvbnRleHQgcmVsYXRlZCBxdWVyeSBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgY2xlYXJRdWVyeVBhcmFtcygpOiB2b2lkIHtcbiAgICBjb25zdCBjbGVhcmluZ1F1ZXJ5UGFyYW1zOiBSZWNvcmQ8RGF0ZUNvbnRleHRRdWVyeVBhcmFtTmFtZXMsIG51bGw+ID0ge1xuICAgICAgZGF0ZUNvbnRleHRGcm9tOiBudWxsLFxuICAgICAgZGF0ZUNvbnRleHRUbzogbnVsbCxcbiAgICAgIGRhdGVDb250ZXh0SW50ZXJ2YWw6IG51bGwsXG4gICAgICBkYXRlQ29udGV4dFJlYWx0aW1lOiBudWxsLFxuICAgICAgZGF0ZUNvbnRleHRBZ2dyZWdhdGlvbjogbnVsbFxuICAgIH07XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUsXG4gICAgICBxdWVyeVBhcmFtczogY2xlYXJpbmdRdWVyeVBhcmFtcyxcbiAgICAgIHJlcGxhY2VVcmw6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZXMgYW5kIHZhbGlkYXRlcyBkYXRlIGNvbnRleHQgZnJvbSBxdWVyeSBwYXJhbXMgZGVzY3JpYmVkIGJ5IGRhdGUgXCJmcm9tXCIgYW5kIGRhdGUgXCJ0b1wiLlxuICAgKlxuICAgKiBAcmV0dXJucyBEYXRlIGNvbnRleHQgYXMgdHVwbGUgb2YgZGF0ZSBcImZyb21cIiBhbmQgZGF0ZSBcInRvXCIsIG9yIG51bGwgaWYgZGF0ZSBjb250ZXh0IGlzIGludmFsaWQuXG4gICAqL1xuICBwcml2YXRlIGdldERhdGVDb250ZXh0RnJvbVF1ZXJ5UGFyYW1zKCk6IERhdGVUaW1lQ29udGV4dCB8IG51bGwge1xuICAgIGNvbnN0IGRhdGVDb250ZXh0RnJvbSA9XG4gICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zW0RhdGVDb250ZXh0UXVlcnlQYXJhbU5hbWVzLkRBVEVfQ09OVEVYVF9GUk9NXTtcbiAgICBjb25zdCBkYXRlQ29udGV4dFRvID1cbiAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbRGF0ZUNvbnRleHRRdWVyeVBhcmFtTmFtZXMuREFURV9DT05URVhUX1RPXTtcblxuICAgIGlmICh0aGlzLmhlbHBlclNlcnZpY2UuaXNWYWxpZERhdGVSYW5nZShkYXRlQ29udGV4dEZyb20sIGRhdGVDb250ZXh0VG8pKSB7XG4gICAgICByZXR1cm4gW25ldyBEYXRlKGRhdGVDb250ZXh0RnJvbSksIG5ldyBEYXRlKGRhdGVDb250ZXh0VG8pXTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2VzIHJlYWx0aW1lIHF1ZXJ5IHBhcmFtLlxuICAgKlxuICAgKiBAcmV0dXJucyBQYXJzZWQgcmVhbHRpbWUgdmFsdWUgb3IgbnVsbC5cbiAgICovXG4gIHByaXZhdGUgcGFyc2VSZWFsdGltZShyZWFsdGltZTogc3RyaW5nKTogYm9vbGVhbiB8IG51bGwge1xuICAgIHJldHVybiByZWFsdGltZSA9PT0gJ2ZhbHNlJyA/IGZhbHNlIDogcmVhbHRpbWUgPT09ICd0cnVlJyA/IHRydWUgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcHMgcXVlcnkgcGFyYW1zIG9iamVjdCB0byBwcm9wZXIgdHlwZS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyBRdWVyeSBwYXJhbWV0ZXJzIG9iamVjdCB3aXRoIHN0cmluZyB2YWx1ZXMgb25seS5cbiAgICpcbiAgICogQHJldHVybnMgUXVlcnkgcGFyYW1zIG9iamVjdCBvZiBwcm9wZXIgdHlwZS5cbiAgICovXG4gIHByaXZhdGUgcHJvY2Vzc1F1ZXJ5UGFyYW1zKFxuICAgIHBhcmFtczogUmVjb3JkPERhdGVDb250ZXh0UXVlcnlQYXJhbU5hbWVzLCBzdHJpbmc+XG4gICk6IElucHV0RGF0ZUNvbnRleHRRdWVyeVBhcmFtcyB7XG4gICAgY29uc3QgZGF0ZUNvbnRleHRSZWFsdGltZSA9IHRoaXMucGFyc2VSZWFsdGltZShwYXJhbXMuZGF0ZUNvbnRleHRSZWFsdGltZSk7XG4gICAgY29uc3QgZGF0ZUNvbnRleHRJbnRlcnZhbCA9IHRoaXMuaGVscGVyU2VydmljZS5pc1NlbGVjdGFibGVJbnRlcnZhbChcbiAgICAgIHBhcmFtcy5kYXRlQ29udGV4dEludGVydmFsIGFzIEludGVydmFsWydpZCddXG4gICAgKVxuICAgICAgPyAocGFyYW1zLmRhdGVDb250ZXh0SW50ZXJ2YWwgYXMgSW50ZXJ2YWxbJ2lkJ10pXG4gICAgICA6IG51bGw7XG4gICAgY29uc3QgZGF0ZUNvbnRleHRBZ2dyZWdhdGlvbiA9IHRoaXMuaGVscGVyU2VydmljZS5pc1ZhbGlkQWdncmVnYXRpb24oXG4gICAgICBwYXJhbXMuZGF0ZUNvbnRleHRBZ2dyZWdhdGlvbiBhcyBhZ2dyZWdhdGlvblR5cGVcbiAgICApXG4gICAgICA/IChwYXJhbXMuZGF0ZUNvbnRleHRBZ2dyZWdhdGlvbiBhcyBhZ2dyZWdhdGlvblR5cGUpXG4gICAgICA6IG51bGw7XG4gICAgcmV0dXJuIHsgLi4ucGFyYW1zLCBkYXRlQ29udGV4dFJlYWx0aW1lLCBkYXRlQ29udGV4dEludGVydmFsLCBkYXRlQ29udGV4dEFnZ3JlZ2F0aW9uIH07XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBwcm92aWRlZCBxdWVyeSBwYXJhbXMgY29udGFpbnMgdmFsaWQgdGltZSByYW5nZS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyBRdWVyeSBwYXJhbWV0ZXJzIG9iamVjdC5cbiAgICpcbiAgICogQHJldHVybnMgVHJ1ZSBpZiBxdWVyeSBwYXJhbXMgY29udGFpbnMgdmFsaWQgdGltZSByYW5nZSwgb3RoZXJ3aXNlIGZhbHNlLlxuICAgKi9cbiAgcHJpdmF0ZSBxdWVyeVBhcmFtc0NvbnRhaW5zVGltZVJhbmdlKHBhcmFtczogSW5wdXREYXRlQ29udGV4dFF1ZXJ5UGFyYW1zKTogYm9vbGVhbiB7XG4gICAgaWYgKCFwYXJhbXMuZGF0ZUNvbnRleHRJbnRlcnZhbCAmJiAhcGFyYW1zLmRhdGVDb250ZXh0RnJvbSAmJiAhcGFyYW1zLmRhdGVDb250ZXh0VG8pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgaW50ZXJ2YWxQcm92aWRlZCA9ICEhcGFyYW1zLmRhdGVDb250ZXh0SW50ZXJ2YWw7XG4gICAgY29uc3QgZGF0ZVJhbmdlVmFsaWQgPSB0aGlzLmhlbHBlclNlcnZpY2UuaXNWYWxpZERhdGVSYW5nZShcbiAgICAgIHBhcmFtcy5kYXRlQ29udGV4dEZyb20sXG4gICAgICBwYXJhbXMuZGF0ZUNvbnRleHRUb1xuICAgICk7XG4gICAgcmV0dXJuIGludGVydmFsUHJvdmlkZWQgfHwgZGF0ZVJhbmdlVmFsaWQ7XG4gIH1cbn1cbiJdfQ==