@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
@@ -0,0 +1,232 @@
1
+ import { AggregationOption } from '@c8y/ngx-components';
2
+ import type { Measurement } from './datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service';
3
+ export declare const HAS_ERROR = "has-error";
4
+ export declare const MEASUREMENTS_PREVIEW_ITEMS_LIMIT = 5;
5
+ export declare const SERIES_DATA_MERGED_FILE_NAME = "seriesDataMergedFileName";
6
+ /**
7
+ * Represents counts of datapoints data categorized by their availability and delivery method.
8
+ */
9
+ export interface DatapointCounts {
10
+ /**
11
+ * The number of datapoints whose data can be directly downloaded
12
+ * through a web browser.
13
+ */
14
+ browserDownloadableCount: number;
15
+ /**
16
+ * The number of datapoints whose data will be sent via email because its record count exceeded 50_000.
17
+ */
18
+ emailDeliverableCount: number;
19
+ /**
20
+ * The number of datapoints whose data cannot be retrieved at all,
21
+ * neither through direct download nor via email because its record count exceeded 1_000_000 API limit.
22
+ */
23
+ nonRetrievableCount: number;
24
+ }
25
+ /**
26
+ * Represents a datapoints which number of records exceed a threshold where data will be precessed by a backend.
27
+ */
28
+ export interface DatapointsExceedingLimit {
29
+ datapointDetail: DatapointDetails;
30
+ totalElements: number;
31
+ }
32
+ export interface IDataTransformer {
33
+ transformToMergedFormat(data: ExportData[]): TimeSeriesColumnData;
34
+ }
35
+ export interface FileGenerator {
36
+ generateMerged?: (exportData: ExportData[], mergedExportDetails: MergedExportDetails) => BlobPart;
37
+ getFileExtension(): string;
38
+ getMimeType(): string;
39
+ getLabel(): string;
40
+ getIcon(): string;
41
+ getType(): string;
42
+ getTitle(): string;
43
+ getZipName(): string;
44
+ getAcceptType(): string;
45
+ }
46
+ export interface FileTypeMetadata {
47
+ extension: string;
48
+ icon: string;
49
+ label: string;
50
+ title: string;
51
+ type: string;
52
+ zipName: string;
53
+ }
54
+ /**
55
+ * Represents the data structure, which is used to be transformed into a file (series) or used for a preview (series and measurements).
56
+ */
57
+ export interface ExportData {
58
+ time?: string | null;
59
+ source: string | number;
60
+ device_name: string;
61
+ fragment_series: string;
62
+ /**
63
+ * Represents the value of a measurement for /measurement data API.
64
+ */
65
+ value?: number | null;
66
+ /**
67
+ * Represents the min value of a measurement for /series data API.
68
+ */
69
+ value_min?: number | null;
70
+ /**
71
+ * Represents the value of a measurement for /series data API.
72
+ * Measurement API data does not contain max value.
73
+ */
74
+ value_max?: number | null;
75
+ unit?: string | null;
76
+ }
77
+ export interface DatapointDetails {
78
+ deviceName?: string;
79
+ source: string | number;
80
+ valueFragmentSeries: string;
81
+ valueFragmentType: string;
82
+ }
83
+ /**
84
+ * Represents the data structure, which is used to be
85
+ * transformed into an ExportData.
86
+ */
87
+ export interface DataToExport extends DatapointDetails {
88
+ unit: string | undefined;
89
+ timeValueMap: {
90
+ [timestamp: string]: Measurement;
91
+ } | undefined;
92
+ }
93
+ /**
94
+ * Represents the data to be exported along with the backend-created file.
95
+ * Only measurements API generates a file on the backend.
96
+ */
97
+ export interface DataToExportWithBackendCreatedFile {
98
+ source: string | number;
99
+ valueFragmentSeries: string;
100
+ valueFragmentType: string;
101
+ fetchedMeasurementsBlobFile: Blob;
102
+ }
103
+ /**
104
+ * Base configuration for the export process.
105
+ */
106
+ export interface ExportConfig {
107
+ aggregation?: AggregationOption;
108
+ datapointDetails: DatapointDetails[];
109
+ dateFrom: string;
110
+ dateTo: string;
111
+ }
112
+ /**
113
+ * Represents the configuration on the basis of which the zip file is created.
114
+ */
115
+ export interface FileExportConfig {
116
+ fileType: string;
117
+ zipName: string;
118
+ }
119
+ /**
120
+ * Represents a required config properties used in a process of generating a measurements based export file.
121
+ */
122
+ export interface MeasurementFileConfig {
123
+ exportConfig: ExportConfig;
124
+ acceptFileType: string;
125
+ }
126
+ /**
127
+ * Represents a required config properties along with transformed data structures,
128
+ * used in a process of generating a series based export file.
129
+ */
130
+ export interface SeriesExportParams {
131
+ flattenedAndSortedExportData: ExportData[];
132
+ fileType: string;
133
+ mergedExportDetails: MergedExportDetails;
134
+ }
135
+ export interface TimeSeriesColumnData {
136
+ timeSeries: Map<TimeStamp, ColumnValueMap>;
137
+ uniqueColumnIdentifiers: string[];
138
+ }
139
+ /**
140
+ * Represents a mapping of datapoints series values.
141
+ * The key of the map is a source, and the value is the value data from requested series.
142
+ */
143
+ export type DatapointsValuesDataMap = Map<SourceId | number, string[]>;
144
+ export type SourceId = string | number;
145
+ export type FileCompressionTypes = 'STORE' | 'DEFLATE';
146
+ export type TimeSeriesData = {
147
+ [timestamp: string]: Measurement;
148
+ };
149
+ export interface FileTypeConfig {
150
+ extension: string;
151
+ mimeType: string;
152
+ acceptType: string;
153
+ }
154
+ /**
155
+ * Represents the details unique for a merged file.
156
+ */
157
+ export type MergedExportDetails = {
158
+ aggregation: AggregationOption;
159
+ dateFrom: string;
160
+ dateTo: string;
161
+ };
162
+ export type ExportedFile = {
163
+ fileName: string;
164
+ fileData: Blob;
165
+ };
166
+ export type TimeStamp = string;
167
+ export type ReadingValue = number;
168
+ /**
169
+ * Represents the min and max values for a specific timestamp.
170
+ * Both min and max values are available only when using series API.
171
+ */
172
+ export type MinMaxValues = {
173
+ min: number;
174
+ max: number;
175
+ };
176
+ /**
177
+ * Represents supported interval units and also
178
+ * the possible periods of time for predefined ranges.
179
+ */
180
+ export type TimeRangeInterval = keyof typeof TIME_RANGE_INTERVAL_UNITS_VALUES;
181
+ /**
182
+ * Represents a merged export column header,
183
+ * e.g. 'Temperature - 5 -> c8y_Temperature.T [ºC] (max)'
184
+ */
185
+ type ColumnHeader = string;
186
+ /**
187
+ * Represents a mapping of column headers and their corresponding values.
188
+ * e.g. 'Temperature - 5 -> c8y_Temperature.T [ºC] (max)': 25
189
+ */
190
+ export type ColumnValueMap = {
191
+ [key: ColumnHeader]: ReadingValue;
192
+ };
193
+ export declare const EXPORT_MODE_LABELS: {
194
+ readonly FULL: "Full";
195
+ readonly COMPACT: "Compact";
196
+ };
197
+ /**
198
+ * Each export type is based on a different API:
199
+ * - COMPACT - series
200
+ * - FULL - measurements
201
+ * All differences between export modes:
202
+ * Compact:
203
+ * Processes up to 5,000 records per data point, or up to the data retention limit (API limit)
204
+ * Creates a single merged file containing all the data
205
+ * Provides minimum and maximum values (API feature)
206
+ * Preview is not available
207
+ * Supports optional data aggregation (API feature)
208
+ * Full:
209
+ * Processes up to 1,000,000 records per data point, or up to the data retention limit (API limit)
210
+ * For exports exceeding 50,000 records, data will be sent via email
211
+ * Creates a compressed ZIP file containing separate data files for each selected data point
212
+ * Preview is available
213
+ * Does not support data aggregation
214
+ */
215
+ export declare const EXPORT_MODE_VALUES: {
216
+ readonly full: "FULL";
217
+ readonly compact: "COMPACT";
218
+ };
219
+ export declare const FILE_COMPRESSION_TYPES_VALUES: {
220
+ readonly store: "STORE";
221
+ readonly deflate: "DEFLATE";
222
+ };
223
+ export declare const TIME_RANGE_INTERVAL_UNITS_VALUES: {
224
+ readonly minutes: "minutes";
225
+ readonly hours: "hours";
226
+ readonly days: "days";
227
+ readonly weeks: "weeks";
228
+ readonly months: "months";
229
+ readonly custom: "custom";
230
+ };
231
+ export {};
232
+ //# sourceMappingURL=datapoints-export-selector.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datapoints-export-selector.model.d.ts","sourceRoot":"","sources":["../../datapoints-export-selector/datapoints-export-selector.model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export * from './datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service';
2
+ export * from './datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service';
3
+ export * from './datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component';
4
+ export * from './datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service';
5
+ export * from './datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component';
6
+ export * from './datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component';
7
+ export * from './datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component';
8
+ export * from './datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component';
9
+ export * from './datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator';
10
+ export * from './datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator';
11
+ export * from './datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service';
12
+ export * from './datapoints-export-selector-modal/datapoints-export-selector-modal.component';
13
+ export * from './datapoints-export-selector.component';
14
+ export * from './datapoints-export-selector.model';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../datapoints-export-selector/index.ts"],"names":[],"mappings":"AAAA,cAAc,mGAAmG,CAAC;AAClH,cAAc,qGAAqG,CAAC;AACpH,cAAc,gIAAgI,CAAC;AAC/I,cAAc,8HAA8H,CAAC;AAC7I,cAAc,6JAA6J,CAAC;AAC5K,cAAc,qKAAqK,CAAC;AACpL,cAAc,qKAAqK,CAAC;AACpL,cAAc,qKAAqK,CAAC;AACpL,cAAc,sGAAsG,CAAC;AACrH,cAAc,wGAAwG,CAAC;AACvH,cAAc,2FAA2F,CAAC;AAC1G,cAAc,+EAA+E,CAAC;AAC9F,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC"}
@@ -3,10 +3,12 @@ import * as i1 from "./device-list.component";
3
3
  import * as i2 from "./add-smart-group.component";
4
4
  import * as i3 from "@c8y/ngx-components";
5
5
  import * as i4 from "@c8y/ngx-components/device-grid";
6
- import * as i5 from "@angular/router";
6
+ import * as i5 from "ngx-bootstrap/popover";
7
+ import * as i6 from "ngx-bootstrap/tooltip";
8
+ import * as i7 from "@angular/router";
7
9
  export declare class DeviceListModule {
8
10
  static ɵfac: i0.ɵɵFactoryDeclaration<DeviceListModule, never>;
9
- static ɵmod: i0.ɵɵNgModuleDeclaration<DeviceListModule, [typeof i1.DeviceListComponent, typeof i2.AddSmartGroupComponent], [typeof i3.CoreModule, typeof i3.CommonModule, typeof i4.DeviceGridModule, typeof i5.RouterModule], never>;
11
+ static ɵmod: i0.ɵɵNgModuleDeclaration<DeviceListModule, [typeof i1.DeviceListComponent, typeof i2.AddSmartGroupComponent], [typeof i3.CoreModule, typeof i3.CommonModule, typeof i4.DeviceGridModule, typeof i5.PopoverModule, typeof i6.TooltipModule, typeof i7.RouterModule], never>;
10
12
  static ɵinj: i0.ɵɵInjectorDeclaration<DeviceListModule>;
11
13
  }
12
14
  //# sourceMappingURL=device-list.module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"device-list.module.d.ts","sourceRoot":"","sources":["../../device-list/device-list.module.ts"],"names":[],"mappings":";;;;;;AAwBA,qBAUa,gBAAgB;yCAAhB,gBAAgB;0CAAhB,gBAAgB;0CAAhB,gBAAgB;CAAG"}
1
+ {"version":3,"file":"device-list.module.d.ts","sourceRoot":"","sources":["../../device-list/device-list.module.ts"],"names":[],"mappings":";;;;;;;;AA0BA,qBAiBa,gBAAgB;yCAAhB,gBAAgB;0CAAhB,gBAAgB;0CAAhB,gBAAgB;CAAG"}
@@ -27,7 +27,7 @@ export class AlarmEventSelectionListComponent {
27
27
  this.canEdit = true;
28
28
  this.canDragAndDrop = true;
29
29
  this.hideSource = false;
30
- this.inline = false;
30
+ this.inline = false; // TODO: @janhommes we should rename this to `isDropdownContained` or similar to make it more clear
31
31
  this.activeToggleAsSwitch = true;
32
32
  this.omitProperties = { color: false, label: false };
33
33
  /**
@@ -118,7 +118,7 @@ export class AlarmEventSelectionListComponent {
118
118
  useExisting: forwardRef(() => AlarmEventSelectionListComponent),
119
119
  multi: true
120
120
  }
121
- ], queries: [{ propertyName: "emptyState", first: true, predicate: EmptyStateComponent, descendants: true }], ngImport: i0, template: "<div\n class=\"card-header separator sticky-top bg-component\"\n *ngIf=\"inline\"\n>\n <span class=\"card-title h4\">{{ title | translate }}</span>\n</div>\n\n<c8y-list-group\n class=\"flex-grow ff-scroll-fix cdk-droplist\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"formArray.controls?.length < 2\"\n>\n <div\n class=\"p-t-8\"\n *ngIf=\"!formArray.controls?.length\"\n >\n <ng-content select=\"c8y-ui-empty-state\"></ng-content>\n <c8y-ui-empty-state\n class=\"p-t-8\"\n [icon]=\"timelineTypeTexts.emptyStateIcon\"\n [title]=\"timelineTypeTexts.emptyStateTitle | translate\"\n [subtitle]=\"timelineTypeTexts.emptyStateSubtitle | translate\"\n *ngIf=\"!emptyState\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <div\n *ngFor=\"let itemForm of formArray.controls; let index = index\"\n [formGroup]=\"itemForm\"\n >\n <c8y-alarm-event-selector-list-item\n class=\"d-block\"\n cdkDrag\n [cdkDragDisabled]=\"!canDragAndDrop\"\n formControlName=\"details\"\n [showAddRemoveButton]=\"false\"\n [optionToRemove]=\"canRemove\"\n [showActiveToggle]=\"true\"\n [timelineType]=\"timelineType\"\n [allowItemEdit]=\"canEdit\"\n [hideSource]=\"hideSource\"\n [displayAsSwitch]=\"activeToggleAsSwitch\"\n [omitProperties]=\"omitProperties\"\n (removed)=\"onItemRemoved(index)\"\n >\n <c8y-li-drag-handle\n title=\"{{ 'Click and drag to reorder' | translate }}\"\n cdkDragHandle\n *ngIf=\"canDragAndDrop\"\n >\n <i c8yIcon=\"drag-reorder\"></i>\n </c8y-li-drag-handle>\n </c8y-alarm-event-selector-list-item>\n </div>\n</c8y-list-group>\n\n<div class=\"card-footer bg-inherit separator-bottom\">\n <button\n class=\"btn btn-default btn-sm\"\n [title]=\"addButtonLabel | translate\"\n type=\"button\"\n [ngClass]=\"{ 'btn-block': inline }\"\n (click)=\"add()\"\n >\n <i\n c8yIcon=\"plus-circle\"\n *ngIf=\"canDragAndDrop\"\n ></i>\n {{ addButtonLabel | translate }}\n </button>\n</div>\n", dependencies: [{ kind: "component", type: i5.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i5.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i5.ListItemDragHandleComponent, selector: "c8y-list-item-drag-handle, c8y-li-drag-handle" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i8.AlarmEventSelectorListItemComponent, selector: "c8y-alarm-event-selector-list-item", inputs: ["timelineType", "highlightText", "showAddRemoveButton", "isSelected", "optionToRemove", "showActiveToggle", "allowItemEdit", "hideSource", "displayAsSwitch", "omitProperties"], outputs: ["added", "removed"] }, { kind: "pipe", type: i5.C8yTranslatePipe, name: "translate" }] }); }
121
+ ], queries: [{ propertyName: "emptyState", first: true, predicate: EmptyStateComponent, descendants: true }], ngImport: i0, template: "<div\n class=\"card-header separator sticky-top bg-component\"\n *ngIf=\"!inline\"\n>\n <span class=\"card-title h4\">{{ title | translate }}</span>\n</div>\n\n<c8y-list-group\n class=\"flex-grow ff-scroll-fix cdk-droplist\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"formArray.controls?.length < 2\"\n>\n <div\n class=\"p-t-8\"\n *ngIf=\"!formArray.controls?.length\"\n >\n <ng-content select=\"c8y-ui-empty-state\"></ng-content>\n <c8y-ui-empty-state\n class=\"p-t-8\"\n [icon]=\"timelineTypeTexts.emptyStateIcon\"\n [title]=\"timelineTypeTexts.emptyStateTitle | translate\"\n [subtitle]=\"timelineTypeTexts.emptyStateSubtitle | translate\"\n *ngIf=\"!emptyState\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <div\n *ngFor=\"let itemForm of formArray.controls; let index = index\"\n [formGroup]=\"itemForm\"\n >\n <c8y-alarm-event-selector-list-item\n class=\"d-block\"\n cdkDrag\n [cdkDragDisabled]=\"!canDragAndDrop\"\n formControlName=\"details\"\n [showAddRemoveButton]=\"false\"\n [optionToRemove]=\"canRemove\"\n [showActiveToggle]=\"true\"\n [timelineType]=\"timelineType\"\n [allowItemEdit]=\"canEdit\"\n [hideSource]=\"hideSource\"\n [displayAsSwitch]=\"activeToggleAsSwitch\"\n [omitProperties]=\"omitProperties\"\n (removed)=\"onItemRemoved(index)\"\n >\n <c8y-li-drag-handle\n title=\"{{ 'Click and drag to reorder' | translate }}\"\n cdkDragHandle\n *ngIf=\"canDragAndDrop\"\n >\n <i c8yIcon=\"drag-reorder\"></i>\n </c8y-li-drag-handle>\n </c8y-alarm-event-selector-list-item>\n </div>\n</c8y-list-group>\n\n<div class=\"card-footer sticky-bottom bg-component\">\n <button\n class=\"btn btn-default btn-sm\"\n [title]=\"addButtonLabel | translate\"\n type=\"button\"\n [ngClass]=\"{ 'btn-block': inline }\"\n (click)=\"add()\"\n >\n <i\n c8yIcon=\"plus-circle\"\n *ngIf=\"canDragAndDrop\"\n ></i>\n {{ addButtonLabel | translate }}\n </button>\n</div>\n", dependencies: [{ kind: "component", type: i5.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i5.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i5.ListItemDragHandleComponent, selector: "c8y-list-item-drag-handle, c8y-li-drag-handle" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i8.AlarmEventSelectorListItemComponent, selector: "c8y-alarm-event-selector-list-item", inputs: ["timelineType", "highlightText", "showAddRemoveButton", "isSelected", "optionToRemove", "showActiveToggle", "allowItemEdit", "hideSource", "displayAsSwitch", "omitProperties"], outputs: ["added", "removed"] }, { kind: "pipe", type: i5.C8yTranslatePipe, name: "translate" }] }); }
122
122
  }
123
123
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AlarmEventSelectionListComponent, decorators: [{
124
124
  type: Component,
@@ -133,7 +133,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
133
133
  useExisting: forwardRef(() => AlarmEventSelectionListComponent),
134
134
  multi: true
135
135
  }
136
- ], template: "<div\n class=\"card-header separator sticky-top bg-component\"\n *ngIf=\"inline\"\n>\n <span class=\"card-title h4\">{{ title | translate }}</span>\n</div>\n\n<c8y-list-group\n class=\"flex-grow ff-scroll-fix cdk-droplist\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"formArray.controls?.length < 2\"\n>\n <div\n class=\"p-t-8\"\n *ngIf=\"!formArray.controls?.length\"\n >\n <ng-content select=\"c8y-ui-empty-state\"></ng-content>\n <c8y-ui-empty-state\n class=\"p-t-8\"\n [icon]=\"timelineTypeTexts.emptyStateIcon\"\n [title]=\"timelineTypeTexts.emptyStateTitle | translate\"\n [subtitle]=\"timelineTypeTexts.emptyStateSubtitle | translate\"\n *ngIf=\"!emptyState\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <div\n *ngFor=\"let itemForm of formArray.controls; let index = index\"\n [formGroup]=\"itemForm\"\n >\n <c8y-alarm-event-selector-list-item\n class=\"d-block\"\n cdkDrag\n [cdkDragDisabled]=\"!canDragAndDrop\"\n formControlName=\"details\"\n [showAddRemoveButton]=\"false\"\n [optionToRemove]=\"canRemove\"\n [showActiveToggle]=\"true\"\n [timelineType]=\"timelineType\"\n [allowItemEdit]=\"canEdit\"\n [hideSource]=\"hideSource\"\n [displayAsSwitch]=\"activeToggleAsSwitch\"\n [omitProperties]=\"omitProperties\"\n (removed)=\"onItemRemoved(index)\"\n >\n <c8y-li-drag-handle\n title=\"{{ 'Click and drag to reorder' | translate }}\"\n cdkDragHandle\n *ngIf=\"canDragAndDrop\"\n >\n <i c8yIcon=\"drag-reorder\"></i>\n </c8y-li-drag-handle>\n </c8y-alarm-event-selector-list-item>\n </div>\n</c8y-list-group>\n\n<div class=\"card-footer bg-inherit separator-bottom\">\n <button\n class=\"btn btn-default btn-sm\"\n [title]=\"addButtonLabel | translate\"\n type=\"button\"\n [ngClass]=\"{ 'btn-block': inline }\"\n (click)=\"add()\"\n >\n <i\n c8yIcon=\"plus-circle\"\n *ngIf=\"canDragAndDrop\"\n ></i>\n {{ addButtonLabel | translate }}\n </button>\n</div>\n" }]
136
+ ], template: "<div\n class=\"card-header separator sticky-top bg-component\"\n *ngIf=\"!inline\"\n>\n <span class=\"card-title h4\">{{ title | translate }}</span>\n</div>\n\n<c8y-list-group\n class=\"flex-grow ff-scroll-fix cdk-droplist\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"formArray.controls?.length < 2\"\n>\n <div\n class=\"p-t-8\"\n *ngIf=\"!formArray.controls?.length\"\n >\n <ng-content select=\"c8y-ui-empty-state\"></ng-content>\n <c8y-ui-empty-state\n class=\"p-t-8\"\n [icon]=\"timelineTypeTexts.emptyStateIcon\"\n [title]=\"timelineTypeTexts.emptyStateTitle | translate\"\n [subtitle]=\"timelineTypeTexts.emptyStateSubtitle | translate\"\n *ngIf=\"!emptyState\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <div\n *ngFor=\"let itemForm of formArray.controls; let index = index\"\n [formGroup]=\"itemForm\"\n >\n <c8y-alarm-event-selector-list-item\n class=\"d-block\"\n cdkDrag\n [cdkDragDisabled]=\"!canDragAndDrop\"\n formControlName=\"details\"\n [showAddRemoveButton]=\"false\"\n [optionToRemove]=\"canRemove\"\n [showActiveToggle]=\"true\"\n [timelineType]=\"timelineType\"\n [allowItemEdit]=\"canEdit\"\n [hideSource]=\"hideSource\"\n [displayAsSwitch]=\"activeToggleAsSwitch\"\n [omitProperties]=\"omitProperties\"\n (removed)=\"onItemRemoved(index)\"\n >\n <c8y-li-drag-handle\n title=\"{{ 'Click and drag to reorder' | translate }}\"\n cdkDragHandle\n *ngIf=\"canDragAndDrop\"\n >\n <i c8yIcon=\"drag-reorder\"></i>\n </c8y-li-drag-handle>\n </c8y-alarm-event-selector-list-item>\n </div>\n</c8y-list-group>\n\n<div class=\"card-footer sticky-bottom bg-component\">\n <button\n class=\"btn btn-default btn-sm\"\n [title]=\"addButtonLabel | translate\"\n type=\"button\"\n [ngClass]=\"{ 'btn-block': inline }\"\n (click)=\"add()\"\n >\n <i\n c8yIcon=\"plus-circle\"\n *ngIf=\"canDragAndDrop\"\n ></i>\n {{ addButtonLabel | translate }}\n </button>\n</div>\n" }]
137
137
  }], ctorParameters: () => [{ type: i1.AlarmEventSelectorModalService }, { type: i2.AlarmEventSelectorService }, { type: i3.FormBuilder }, { type: i4.WidgetConfigComponent, decorators: [{
138
138
  type: Optional
139
139
  }] }], propDecorators: { timelineType: [{
@@ -162,4 +162,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
162
162
  }], config: [{
163
163
  type: Input
164
164
  }] } });
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0tZXZlbnQtc2VsZWN0aW9uLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYWxhcm0tZXZlbnQtc2VsZWN0b3IvYWxhcm0tZXZlbnQtc2VsZWN0aW9uLWxpc3QvYWxhcm0tZXZlbnQtc2VsZWN0aW9uLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vYWxhcm0tZXZlbnQtc2VsZWN0b3IvYWxhcm0tZXZlbnQtc2VsZWN0aW9uLWxpc3QvYWxhcm0tZXZlbnQtc2VsZWN0aW9uLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBR0wsUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFJTCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGlCQUFpQixFQUdsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQU9sSCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7O0FBa0IvQixNQUFNLE9BQU8sZ0NBQWdDO0lBeUIzQyxZQUNVLHNCQUFzRCxFQUN0RCx1QkFBa0QsRUFDbEQsV0FBd0IsRUFDWixlQUFzQztRQUhsRCwyQkFB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QyxHQUFHLEVBQUUsaUNBQWlDLENBQUM7NEJBQy9ELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzswQkErQkUsUUFBUTt5Q0ExQkYsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUM2QixVQUFVO3NCQUE1QyxZQUFZO3VCQUFDLG1CQUFtQjtnQkFLeEIsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtQXJyYXksXG4gIEZvcm1CdWlsZGVyLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEVtcHR5U3RhdGVDb21wb25lbnQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFdpZGdldENvbmZpZ0NvbXBvbmVudCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvY29udGV4dC1kYXNoYm9hcmQnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFsYXJtRXZlbnRTZWxlY3Rvck1vZGFsT3B0aW9ucyB9IGZyb20gJy4uL2FsYXJtLWV2ZW50LXNlbGVjdG9yLW1vZGFsL2FsYXJtLWV2ZW50LXNlbGVjdG9yLW1vZGFsLm1vZGVsJztcbmltcG9ydCB7IEFsYXJtRXZlbnRTZWxlY3Rvck1vZGFsU2VydmljZSB9IGZyb20gJy4uL2FsYXJtLWV2ZW50LXNlbGVjdG9yLW1vZGFsL2FsYXJtLWV2ZW50LXNlbGVjdG9yLW1vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQWxhcm1PckV2ZW50LFxuICBPbWl0U2VsZWN0b3JQcm9wZXJ0aWVzLFxuICBUaW1lbGluZVR5cGUsXG4gIFRpbWVsaW5lVHlwZVRleHRzXG59IGZyb20gJy4uL2FsYXJtLWV2ZW50LXNlbGVjdG9yLm1vZGVsJztcbmltcG9ydCB7IEFsYXJtRXZlbnRTZWxlY3RvclNlcnZpY2UgfSBmcm9tICcuLi9hbGFybS1ldmVudC1zZWxlY3Rvci5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWFsYXJtLWV2ZW50LXNlbGVjdGlvbi1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FsYXJtLWV2ZW50LXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFsYXJtRXZlbnRTZWxlY3Rpb25MaXN0Q29tcG9uZW50KVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFsYXJtRXZlbnRTZWxlY3Rpb25MaXN0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEFsYXJtRXZlbnRTZWxlY3Rpb25MaXN0Q29tcG9uZW50XG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgQElucHV0KCkgdGltZWxpbmVUeXBlOiBUaW1lbGluZVR5cGUgPSAnQUxBUk0nO1xuICBASW5wdXQoKSBjYW5SZW1vdmUgPSB0cnVlO1xuICBASW5wdXQoKSBjYW5FZGl0ID0gdHJ1ZTtcbiAgQElucHV0KCkgY2FuRHJhZ0FuZERyb3AgPSB0cnVlO1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBhZGRCdXR0b25MYWJlbDogc3RyaW5nO1xuICBASW5wdXQoKSBoaWRlU291cmNlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlubGluZSA9IGZhbHNlO1xuICBASW5wdXQoKSBhY3RpdmVUb2dnbGVBc1N3aXRjaCA9IHRydWU7XG4gIEBJbnB1dCgpIG9taXRQcm9wZXJ0aWVzOiBPbWl0U2VsZWN0b3JQcm9wZXJ0aWVzID0geyBjb2xvcjogZmFsc2UsIGxhYmVsOiBmYWxzZSB9O1xuICBAQ29udGVudENoaWxkKEVtcHR5U3RhdGVDb21wb25lbnQpIGVtcHR5U3RhdGU6IEVtcHR5U3RhdGVDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgYWxhcm1zLWV2ZW50cyBzZWxlY3RvciBtb2RhbC5cbiAgICovXG4gIEBJbnB1dCgpIGNvbmZpZzogUGFydGlhbDxBbGFybUV2ZW50U2VsZWN0b3JNb2RhbE9wdGlvbnM+ID0ge307XG5cbiAgZm9ybUFycmF5OiBGb3JtQXJyYXk7XG4gIHRpbWVsaW5lVHlwZVRleHRzOiBUaW1lbGluZVR5cGVUZXh0cztcblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFsYXJtRXZlbnRNb2RhbFNlcnZpY2U6IEFsYXJtRXZlbnRTZWxlY3Rvck1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGFsYXJtRXZlbnRTZWxlY3RTZXJ2aWNlOiBBbGFybUV2ZW50U2VsZWN0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgd2lkZ2V0Q29tcG9uZW50OiBXaWRnZXRDb25maWdDb21wb25lbnRcbiAgKSB7XG4gICAgdGhpcy5mb3JtQXJyYXkgPSB0aGlzLmZvcm1CdWlsZGVyLmFycmF5KFtdKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudGltZWxpbmVUeXBlVGV4dHMgPSB0aGlzLmFsYXJtRXZlbnRTZWxlY3RTZXJ2aWNlLnRpbWVsaW5lVHlwZVRleHRzKHRoaXMudGltZWxpbmVUeXBlKTtcbiAgICB0aGlzLnRpdGxlID8/PSB0aGlzLnRpbWVsaW5lVHlwZVRleHRzLmxpc3RUaXRsZTtcbiAgICB0aGlzLmFkZEJ1dHRvbkxhYmVsID8/PSB0aGlzLnRpbWVsaW5lVHlwZVRleHRzLmFkZEJ1dHRvbkxhYmVsO1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLndpZGdldENvbXBvbmVudD8uY29udGV4dDtcbiAgICBpZiAoY29udGV4dD8uaWQpIHtcbiAgICAgIGNvbnN0IHsgbmFtZSwgaWQsIGM4eV9Jc0RldmljZSB9ID0gY29udGV4dDtcbiAgICAgIHRoaXMuY29uZmlnLmNvbnRleHRBc3NldCA9IHsgbmFtZSwgaWQsIGM4eV9Jc0RldmljZSB9O1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1BcnJheS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoZm4pO1xuICB9XG5cbiAgdmFsaWRhdGUoX2NvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMge1xuICAgIHJldHVybiB0aGlzLmZvcm1BcnJheS52YWxpZCA/IG51bGwgOiB7IGZvcm1JbnZhbGlkOiB7fSB9O1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWw6IEFsYXJtT3JFdmVudFtdKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtQXJyYXkuY2xlYXIoKTtcbiAgICBpZiAodmFsPy5sZW5ndGgpIHtcbiAgICAgIHZhbC5mb3JFYWNoKHZhbCA9PiB7XG4gICAgICAgIGNvbnN0IGZvcm1ncm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoeyBkZXRhaWxzOiBbXSB9KTtcbiAgICAgICAgZm9ybWdyb3VwLnBhdGNoVmFsdWUoeyBkZXRhaWxzOiB2YWwgfSk7XG4gICAgICAgIHRoaXMuZm9ybUFycmF5LnB1c2goZm9ybWdyb3VwKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUFycmF5LnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgxMDApLCAvLyBkZWJvdW5jZSB0byBhdm9pZCBlbWl0dGluZyBvZiB0aGlzLmZvcm1BcnJheS5jbGVhcigpXG4gICAgICAgIG1hcChyZXMgPT4gdGhpcy50cmFuc2Zvcm1WYWx1ZShyZXMpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGZuKTtcbiAgfVxuXG4gIGFkZCgpIHtcbiAgICBjb25zdCBhbGxvd0NoYW5naW5nQ29udGV4dCA9XG4gICAgICAhdGhpcy53aWRnZXRDb21wb25lbnQ/LmlzRGV2aWNlVHlwZURhc2hib2FyZCAmJiB0aGlzLmNvbmZpZz8uYWxsb3dDaGFuZ2luZ0NvbnRleHQgIT09IGZhbHNlO1xuICAgIHRoaXMuYWxhcm1FdmVudE1vZGFsU2VydmljZVxuICAgICAgLnNlbGVjdEl0ZW1zKHtcbiAgICAgICAgYWxsb3dDaGFuZ2luZ0NvbnRleHQsXG4gICAgICAgIHNlbGVjdFR5cGU6IHRoaXMudGltZWxpbmVUeXBlLFxuICAgICAgICBzZWxlY3RlZEl0ZW1zOiB0aGlzLnRyYW5zZm9ybVZhbHVlKHRoaXMuZm9ybUFycmF5LnZhbHVlKSxcbiAgICAgICAgYWxsb3dTZWFyY2g6ICF0aGlzLmNvbmZpZz8uY29udGV4dEFzc2V0LFxuICAgICAgICB0aXRsZTogdGhpcy50aW1lbGluZVR5cGVUZXh0cy5zZWxlY3RvclRpdGxlLFxuICAgICAgICBzYXZlQnV0dG9uTGFiZWw6IHRoaXMudGltZWxpbmVUeXBlVGV4dHMuYWRkQnV0dG9uTGFiZWwsXG4gICAgICAgIG9taXRQcm9wZXJ0aWVzOiB0aGlzLm9taXRQcm9wZXJ0aWVzLFxuICAgICAgICAuLi4odGhpcy5jb25maWcgfHwge30pXG4gICAgICB9KVxuICAgICAgLnRoZW4oXG4gICAgICAgIHJlc3VsdCA9PiB7XG4gICAgICAgICAgdGhpcy53cml0ZVZhbHVlKHJlc3VsdCk7XG4gICAgICAgIH0sXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICAvLyBub3RoaW5nIHRvIGRvLCBtb2RhbCB3YXMgY2xvc2VkXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBvbkl0ZW1SZW1vdmVkKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmZvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XG4gIH1cblxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxBbGFybU9yRXZlbnRbXT4pIHtcbiAgICBjb25zdCBjdXJyZW50U29ydGluZyA9IHRoaXMuZm9ybUFycmF5LnZhbHVlO1xuICAgIG1vdmVJdGVtSW5BcnJheShjdXJyZW50U29ydGluZywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICB0aGlzLmZvcm1BcnJheS5zZXRWYWx1ZShjdXJyZW50U29ydGluZyk7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zZm9ybVZhbHVlKGZvcm1BcnJheVZhbHVlOiBhbnlbXSkge1xuICAgIGlmICghZm9ybUFycmF5VmFsdWUpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIGZvcm1BcnJheVZhbHVlLm1hcCh0bXAgPT4gT2JqZWN0LmFzc2lnbih7fSwgLi4uT2JqZWN0LnZhbHVlcyh0bXApKSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJjYXJkLWhlYWRlciBzZXBhcmF0b3Igc3RpY2t5LXRvcCBiZy1jb21wb25lbnRcIlxuICAqbmdJZj1cImlubGluZVwiXG4+XG4gIDxzcGFuIGNsYXNzPVwiY2FyZC10aXRsZSBoNFwiPnt7IHRpdGxlIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuPC9kaXY+XG5cbjxjOHktbGlzdC1ncm91cFxuICBjbGFzcz1cImZsZXgtZ3JvdyBmZi1zY3JvbGwtZml4IGNkay1kcm9wbGlzdFwiXG4gIGNka0Ryb3BMaXN0XG4gIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCJcbiAgW2Nka0Ryb3BMaXN0RGlzYWJsZWRdPVwiZm9ybUFycmF5LmNvbnRyb2xzPy5sZW5ndGggPCAyXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwicC10LThcIlxuICAgICpuZ0lmPVwiIWZvcm1BcnJheS5jb250cm9scz8ubGVuZ3RoXCJcbiAgPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImM4eS11aS1lbXB0eS1zdGF0ZVwiPjwvbmctY29udGVudD5cbiAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICBjbGFzcz1cInAtdC04XCJcbiAgICAgIFtpY29uXT1cInRpbWVsaW5lVHlwZVRleHRzLmVtcHR5U3RhdGVJY29uXCJcbiAgICAgIFt0aXRsZV09XCJ0aW1lbGluZVR5cGVUZXh0cy5lbXB0eVN0YXRlVGl0bGUgfCB0cmFuc2xhdGVcIlxuICAgICAgW3N1YnRpdGxlXT1cInRpbWVsaW5lVHlwZVRleHRzLmVtcHR5U3RhdGVTdWJ0aXRsZSB8IHRyYW5zbGF0ZVwiXG4gICAgICAqbmdJZj1cIiFlbXB0eVN0YXRlXCJcbiAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgID48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICAqbmdGb3I9XCJsZXQgaXRlbUZvcm0gb2YgZm9ybUFycmF5LmNvbnRyb2xzOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgW2Zvcm1Hcm91cF09XCJpdGVtRm9ybVwiXG4gID5cbiAgICA8Yzh5LWFsYXJtLWV2ZW50LXNlbGVjdG9yLWxpc3QtaXRlbVxuICAgICAgY2xhc3M9XCJkLWJsb2NrXCJcbiAgICAgIGNka0RyYWdcbiAgICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwiIWNhbkRyYWdBbmREcm9wXCJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cImRldGFpbHNcIlxuICAgICAgW3Nob3dBZGRSZW1vdmVCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgW29wdGlvblRvUmVtb3ZlXT1cImNhblJlbW92ZVwiXG4gICAgICBbc2hvd0FjdGl2ZVRvZ2dsZV09XCJ0cnVlXCJcbiAgICAgIFt0aW1lbGluZVR5cGVdPVwidGltZWxpbmVUeXBlXCJcbiAgICAgIFthbGxvd0l0ZW1FZGl0XT1cImNhbkVkaXRcIlxuICAgICAgW2hpZGVTb3VyY2VdPVwiaGlkZVNvdXJjZVwiXG4gICAgICBbZGlzcGxheUFzU3dpdGNoXT1cImFjdGl2ZVRvZ2dsZUFzU3dpdGNoXCJcbiAgICAgIFtvbWl0UHJvcGVydGllc109XCJvbWl0UHJvcGVydGllc1wiXG4gICAgICAocmVtb3ZlZCk9XCJvbkl0ZW1SZW1vdmVkKGluZGV4KVwiXG4gICAgPlxuICAgICAgPGM4eS1saS1kcmFnLWhhbmRsZVxuICAgICAgICB0aXRsZT1cInt7ICdDbGljayBhbmQgZHJhZyB0byByZW9yZGVyJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIGNka0RyYWdIYW5kbGVcbiAgICAgICAgKm5nSWY9XCJjYW5EcmFnQW5kRHJvcFwiXG4gICAgICA+XG4gICAgICAgIDxpIGM4eUljb249XCJkcmFnLXJlb3JkZXJcIj48L2k+XG4gICAgICA8L2M4eS1saS1kcmFnLWhhbmRsZT5cbiAgICA8L2M4eS1hbGFybS1ldmVudC1zZWxlY3Rvci1saXN0LWl0ZW0+XG4gIDwvZGl2PlxuPC9jOHktbGlzdC1ncm91cD5cblxuPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJnLWluaGVyaXQgc2VwYXJhdG9yLWJvdHRvbVwiPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCJcbiAgICBbdGl0bGVdPVwiYWRkQnV0dG9uTGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFtuZ0NsYXNzXT1cInsgJ2J0bi1ibG9jayc6IGlubGluZSB9XCJcbiAgICAoY2xpY2spPVwiYWRkKClcIlxuICA+XG4gICAgPGlcbiAgICAgIGM4eUljb249XCJwbHVzLWNpcmNsZVwiXG4gICAgICAqbmdJZj1cImNhbkRyYWdBbmREcm9wXCJcbiAgICA+PC9pPlxuICAgIHt7IGFkZEJ1dHRvbkxhYmVsIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0tZXZlbnQtc2VsZWN0aW9uLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYWxhcm0tZXZlbnQtc2VsZWN0b3IvYWxhcm0tZXZlbnQtc2VsZWN0aW9uLWxpc3QvYWxhcm0tZXZlbnQtc2VsZWN0aW9uLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vYWxhcm0tZXZlbnQtc2VsZWN0b3IvYWxhcm0tZXZlbnQtc2VsZWN0aW9uLWxpc3QvYWxhcm0tZXZlbnQtc2VsZWN0aW9uLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBR0wsUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFJTCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGlCQUFpQixFQUdsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQU9sSCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7O0FBa0IvQixNQUFNLE9BQU8sZ0NBQWdDO0lBeUIzQyxZQUNVLHNCQUFzRCxFQUN0RCx1QkFBa0QsRUFDbEQsV0FBd0IsRUFDWixlQUFzQztRQUhsRCwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQWdDO1FBQ3RELDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBMkI7UUFDbEQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDWixvQkFBZSxHQUFmLGVBQWUsQ0FBdUI7UUExQm5ELGlCQUFZLEdBQWlCLE9BQU8sQ0FBQztRQUNyQyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDZixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUd0QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLFdBQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxtR0FBbUc7UUFDbkgseUJBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQzVCLG1CQUFjLEdBQTJCLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFHakY7O1dBRUc7UUFDTSxXQUFNLEdBQTRDLEVBQUUsQ0FBQztRQUt0RCxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVFyQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDM0YsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDO1FBQ2hELElBQUksQ0FBQyxjQUFjLEtBQUssSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQztRQUM5RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQztRQUM5QyxJQUFJLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNoQixNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUM7WUFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxDQUFDO1FBQ3hELENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxRQUFRLENBQUMsUUFBeUI7UUFDaEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMzRCxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQW1CO1FBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDaEIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDaEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDMUQsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVk7YUFDeEIsSUFBSSxDQUNILFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSx1REFBdUQ7UUFDMUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUNwQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUN6QjthQUNBLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsR0FBRztRQUNELE1BQU0sb0JBQW9CLEdBQ3hCLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxxQkFBcUIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLG9CQUFvQixLQUFLLEtBQUssQ0FBQztRQUM5RixJQUFJLENBQUMsc0JBQXNCO2FBQ3hCLFdBQVcsQ0FBQztZQUNYLG9CQUFvQjtZQUNwQixVQUFVLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDN0IsYUFBYSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFDeEQsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxZQUFZO1lBQ3ZDLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYTtZQUMzQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWM7WUFDdEQsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ25DLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztTQUN2QixDQUFDO2FBQ0QsSUFBSSxDQUNILE1BQU0sQ0FBQyxFQUFFO1lBQ1AsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQixDQUFDLEVBQ0QsR0FBRyxFQUFFO1lBQ0gsa0NBQWtDO1FBQ3BDLENBQUMsQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFhO1FBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLENBQUMsS0FBa0M7UUFDckMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDNUMsZUFBZSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU8sY0FBYyxDQUFDLGNBQXFCO1FBQzFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxPQUFPLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7OEdBdEhVLGdDQUFnQztrR0FBaEMsZ0NBQWdDLGlYQWJoQztZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLEtBQUssRUFBRSxJQUFJO2dCQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZ0NBQWdDLENBQUM7YUFDaEU7WUFDRDtnQkFDRSxPQUFPLEVBQUUsYUFBYTtnQkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQztnQkFDL0QsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLGtFQWVhLG1CQUFtQixnREMvRG5DLDhsRUF3RUE7OzJGRHRCYSxnQ0FBZ0M7a0JBaEI1QyxTQUFTOytCQUNFLGdDQUFnQyxhQUUvQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxpQ0FBaUMsQ0FBQzt5QkFDaEU7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGlDQUFpQyxDQUFDOzRCQUMvRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs7MEJBK0JFLFFBQVE7eUNBMUJGLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDNkIsVUFBVTtzQkFBNUMsWUFBWTt1QkFBQyxtQkFBbUI7Z0JBS3hCLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUFycmF5LFxuICBGb3JtQnVpbGRlcixcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBXaWRnZXRDb25maWdDb21wb25lbnQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2NvbnRleHQtZGFzaGJvYXJkJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBbGFybUV2ZW50U2VsZWN0b3JNb2RhbE9wdGlvbnMgfSBmcm9tICcuLi9hbGFybS1ldmVudC1zZWxlY3Rvci1tb2RhbC9hbGFybS1ldmVudC1zZWxlY3Rvci1tb2RhbC5tb2RlbCc7XG5pbXBvcnQgeyBBbGFybUV2ZW50U2VsZWN0b3JNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi9hbGFybS1ldmVudC1zZWxlY3Rvci1tb2RhbC9hbGFybS1ldmVudC1zZWxlY3Rvci1tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEFsYXJtT3JFdmVudCxcbiAgT21pdFNlbGVjdG9yUHJvcGVydGllcyxcbiAgVGltZWxpbmVUeXBlLFxuICBUaW1lbGluZVR5cGVUZXh0c1xufSBmcm9tICcuLi9hbGFybS1ldmVudC1zZWxlY3Rvci5tb2RlbCc7XG5pbXBvcnQgeyBBbGFybUV2ZW50U2VsZWN0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vYWxhcm0tZXZlbnQtc2VsZWN0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1hbGFybS1ldmVudC1zZWxlY3Rpb24tbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hbGFybS1ldmVudC1zZWxlY3Rpb24tbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBbGFybUV2ZW50U2VsZWN0aW9uTGlzdENvbXBvbmVudClcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBbGFybUV2ZW50U2VsZWN0aW9uTGlzdENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBBbGFybUV2ZW50U2VsZWN0aW9uTGlzdENvbXBvbmVudFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpIHRpbWVsaW5lVHlwZTogVGltZWxpbmVUeXBlID0gJ0FMQVJNJztcbiAgQElucHV0KCkgY2FuUmVtb3ZlID0gdHJ1ZTtcbiAgQElucHV0KCkgY2FuRWRpdCA9IHRydWU7XG4gIEBJbnB1dCgpIGNhbkRyYWdBbmREcm9wID0gdHJ1ZTtcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgYWRkQnV0dG9uTGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgaGlkZVNvdXJjZSA9IGZhbHNlO1xuICBASW5wdXQoKSBpbmxpbmUgPSBmYWxzZTsgLy8gVE9ETzogQGphbmhvbW1lcyB3ZSBzaG91bGQgcmVuYW1lIHRoaXMgdG8gYGlzRHJvcGRvd25Db250YWluZWRgIG9yIHNpbWlsYXIgdG8gbWFrZSBpdCBtb3JlIGNsZWFyXG4gIEBJbnB1dCgpIGFjdGl2ZVRvZ2dsZUFzU3dpdGNoID0gdHJ1ZTtcbiAgQElucHV0KCkgb21pdFByb3BlcnRpZXM6IE9taXRTZWxlY3RvclByb3BlcnRpZXMgPSB7IGNvbG9yOiBmYWxzZSwgbGFiZWw6IGZhbHNlIH07XG4gIEBDb250ZW50Q2hpbGQoRW1wdHlTdGF0ZUNvbXBvbmVudCkgZW1wdHlTdGF0ZTogRW1wdHlTdGF0ZUNvbXBvbmVudDtcblxuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBhbGFybXMtZXZlbnRzIHNlbGVjdG9yIG1vZGFsLlxuICAgKi9cbiAgQElucHV0KCkgY29uZmlnOiBQYXJ0aWFsPEFsYXJtRXZlbnRTZWxlY3Rvck1vZGFsT3B0aW9ucz4gPSB7fTtcblxuICBmb3JtQXJyYXk6IEZvcm1BcnJheTtcbiAgdGltZWxpbmVUeXBlVGV4dHM6IFRpbWVsaW5lVHlwZVRleHRzO1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWxhcm1FdmVudE1vZGFsU2VydmljZTogQWxhcm1FdmVudFNlbGVjdG9yTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxhcm1FdmVudFNlbGVjdFNlcnZpY2U6IEFsYXJtRXZlbnRTZWxlY3RvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSB3aWRnZXRDb21wb25lbnQ6IFdpZGdldENvbmZpZ0NvbXBvbmVudFxuICApIHtcbiAgICB0aGlzLmZvcm1BcnJheSA9IHRoaXMuZm9ybUJ1aWxkZXIuYXJyYXkoW10pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy50aW1lbGluZVR5cGVUZXh0cyA9IHRoaXMuYWxhcm1FdmVudFNlbGVjdFNlcnZpY2UudGltZWxpbmVUeXBlVGV4dHModGhpcy50aW1lbGluZVR5cGUpO1xuICAgIHRoaXMudGl0bGUgPz89IHRoaXMudGltZWxpbmVUeXBlVGV4dHMubGlzdFRpdGxlO1xuICAgIHRoaXMuYWRkQnV0dG9uTGFiZWwgPz89IHRoaXMudGltZWxpbmVUeXBlVGV4dHMuYWRkQnV0dG9uTGFiZWw7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMud2lkZ2V0Q29tcG9uZW50Py5jb250ZXh0O1xuICAgIGlmIChjb250ZXh0Py5pZCkge1xuICAgICAgY29uc3QgeyBuYW1lLCBpZCwgYzh5X0lzRGV2aWNlIH0gPSBjb250ZXh0O1xuICAgICAgdGhpcy5jb25maWcuY29udGV4dEFzc2V0ID0geyBuYW1lLCBpZCwgYzh5X0lzRGV2aWNlIH07XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUFycmF5LnZhbHVlQ2hhbmdlcy5waXBlKHRha2UoMSkpLnN1YnNjcmliZShmbik7XG4gIH1cblxuICB2YWxpZGF0ZShfY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUFycmF5LnZhbGlkID8gbnVsbCA6IHsgZm9ybUludmFsaWQ6IHt9IH07XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbDogQWxhcm1PckV2ZW50W10pOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1BcnJheS5jbGVhcigpO1xuICAgIGlmICh2YWw/Lmxlbmd0aCkge1xuICAgICAgdmFsLmZvckVhY2godmFsID0+IHtcbiAgICAgICAgY29uc3QgZm9ybWdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7IGRldGFpbHM6IFtdIH0pO1xuICAgICAgICBmb3JtZ3JvdXAucGF0Y2hWYWx1ZSh7IGRldGFpbHM6IHZhbCB9KTtcbiAgICAgICAgdGhpcy5mb3JtQXJyYXkucHVzaChmb3JtZ3JvdXApO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mb3JtQXJyYXkudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksIC8vIGRlYm91bmNlIHRvIGF2b2lkIGVtaXR0aW5nIG9mIHRoaXMuZm9ybUFycmF5LmNsZWFyKClcbiAgICAgICAgbWFwKHJlcyA9PiB0aGlzLnRyYW5zZm9ybVZhbHVlKHJlcykpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZm4pO1xuICB9XG5cbiAgYWRkKCkge1xuICAgIGNvbnN0IGFsbG93Q2hhbmdpbmdDb250ZXh0ID1cbiAgICAgICF0aGlzLndpZGdldENvbXBvbmVudD8uaXNEZXZpY2VUeXBlRGFzaGJvYXJkICYmIHRoaXMuY29uZmlnPy5hbGxvd0NoYW5naW5nQ29udGV4dCAhPT0gZmFsc2U7XG4gICAgdGhpcy5hbGFybUV2ZW50TW9kYWxTZXJ2aWNlXG4gICAgICAuc2VsZWN0SXRlbXMoe1xuICAgICAgICBhbGxvd0NoYW5naW5nQ29udGV4dCxcbiAgICAgICAgc2VsZWN0VHlwZTogdGhpcy50aW1lbGluZVR5cGUsXG4gICAgICAgIHNlbGVjdGVkSXRlbXM6IHRoaXMudHJhbnNmb3JtVmFsdWUodGhpcy5mb3JtQXJyYXkudmFsdWUpLFxuICAgICAgICBhbGxvd1NlYXJjaDogIXRoaXMuY29uZmlnPy5jb250ZXh0QXNzZXQsXG4gICAgICAgIHRpdGxlOiB0aGlzLnRpbWVsaW5lVHlwZVRleHRzLnNlbGVjdG9yVGl0bGUsXG4gICAgICAgIHNhdmVCdXR0b25MYWJlbDogdGhpcy50aW1lbGluZVR5cGVUZXh0cy5hZGRCdXR0b25MYWJlbCxcbiAgICAgICAgb21pdFByb3BlcnRpZXM6IHRoaXMub21pdFByb3BlcnRpZXMsXG4gICAgICAgIC4uLih0aGlzLmNvbmZpZyB8fCB7fSlcbiAgICAgIH0pXG4gICAgICAudGhlbihcbiAgICAgICAgcmVzdWx0ID0+IHtcbiAgICAgICAgICB0aGlzLndyaXRlVmFsdWUocmVzdWx0KTtcbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIC8vIG5vdGhpbmcgdG8gZG8sIG1vZGFsIHdhcyBjbG9zZWRcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIG9uSXRlbVJlbW92ZWQoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuZm9ybUFycmF5LnJlbW92ZUF0KGluZGV4KTtcbiAgfVxuXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPEFsYXJtT3JFdmVudFtdPikge1xuICAgIGNvbnN0IGN1cnJlbnRTb3J0aW5nID0gdGhpcy5mb3JtQXJyYXkudmFsdWU7XG4gICAgbW92ZUl0ZW1JbkFycmF5KGN1cnJlbnRTb3J0aW5nLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIHRoaXMuZm9ybUFycmF5LnNldFZhbHVlKGN1cnJlbnRTb3J0aW5nKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmb3JtVmFsdWUoZm9ybUFycmF5VmFsdWU6IGFueVtdKSB7XG4gICAgaWYgKCFmb3JtQXJyYXlWYWx1ZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybUFycmF5VmFsdWUubWFwKHRtcCA9PiBPYmplY3QuYXNzaWduKHt9LCAuLi5PYmplY3QudmFsdWVzKHRtcCkpKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvciBzdGlja3ktdG9wIGJnLWNvbXBvbmVudFwiXG4gICpuZ0lmPVwiIWlubGluZVwiXG4+XG4gIDxzcGFuIGNsYXNzPVwiY2FyZC10aXRsZSBoNFwiPnt7IHRpdGxlIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuPC9kaXY+XG5cbjxjOHktbGlzdC1ncm91cFxuICBjbGFzcz1cImZsZXgtZ3JvdyBmZi1zY3JvbGwtZml4IGNkay1kcm9wbGlzdFwiXG4gIGNka0Ryb3BMaXN0XG4gIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCJcbiAgW2Nka0Ryb3BMaXN0RGlzYWJsZWRdPVwiZm9ybUFycmF5LmNvbnRyb2xzPy5sZW5ndGggPCAyXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwicC10LThcIlxuICAgICpuZ0lmPVwiIWZvcm1BcnJheS5jb250cm9scz8ubGVuZ3RoXCJcbiAgPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImM4eS11aS1lbXB0eS1zdGF0ZVwiPjwvbmctY29udGVudD5cbiAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICBjbGFzcz1cInAtdC04XCJcbiAgICAgIFtpY29uXT1cInRpbWVsaW5lVHlwZVRleHRzLmVtcHR5U3RhdGVJY29uXCJcbiAgICAgIFt0aXRsZV09XCJ0aW1lbGluZVR5cGVUZXh0cy5lbXB0eVN0YXRlVGl0bGUgfCB0cmFuc2xhdGVcIlxuICAgICAgW3N1YnRpdGxlXT1cInRpbWVsaW5lVHlwZVRleHRzLmVtcHR5U3RhdGVTdWJ0aXRsZSB8IHRyYW5zbGF0ZVwiXG4gICAgICAqbmdJZj1cIiFlbXB0eVN0YXRlXCJcbiAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgID48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICAqbmdGb3I9XCJsZXQgaXRlbUZvcm0gb2YgZm9ybUFycmF5LmNvbnRyb2xzOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgW2Zvcm1Hcm91cF09XCJpdGVtRm9ybVwiXG4gID5cbiAgICA8Yzh5LWFsYXJtLWV2ZW50LXNlbGVjdG9yLWxpc3QtaXRlbVxuICAgICAgY2xhc3M9XCJkLWJsb2NrXCJcbiAgICAgIGNka0RyYWdcbiAgICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwiIWNhbkRyYWdBbmREcm9wXCJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cImRldGFpbHNcIlxuICAgICAgW3Nob3dBZGRSZW1vdmVCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgW29wdGlvblRvUmVtb3ZlXT1cImNhblJlbW92ZVwiXG4gICAgICBbc2hvd0FjdGl2ZVRvZ2dsZV09XCJ0cnVlXCJcbiAgICAgIFt0aW1lbGluZVR5cGVdPVwidGltZWxpbmVUeXBlXCJcbiAgICAgIFthbGxvd0l0ZW1FZGl0XT1cImNhbkVkaXRcIlxuICAgICAgW2hpZGVTb3VyY2VdPVwiaGlkZVNvdXJjZVwiXG4gICAgICBbZGlzcGxheUFzU3dpdGNoXT1cImFjdGl2ZVRvZ2dsZUFzU3dpdGNoXCJcbiAgICAgIFtvbWl0UHJvcGVydGllc109XCJvbWl0UHJvcGVydGllc1wiXG4gICAgICAocmVtb3ZlZCk9XCJvbkl0ZW1SZW1vdmVkKGluZGV4KVwiXG4gICAgPlxuICAgICAgPGM4eS1saS1kcmFnLWhhbmRsZVxuICAgICAgICB0aXRsZT1cInt7ICdDbGljayBhbmQgZHJhZyB0byByZW9yZGVyJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIGNka0RyYWdIYW5kbGVcbiAgICAgICAgKm5nSWY9XCJjYW5EcmFnQW5kRHJvcFwiXG4gICAgICA+XG4gICAgICAgIDxpIGM4eUljb249XCJkcmFnLXJlb3JkZXJcIj48L2k+XG4gICAgICA8L2M4eS1saS1kcmFnLWhhbmRsZT5cbiAgICA8L2M4eS1hbGFybS1ldmVudC1zZWxlY3Rvci1saXN0LWl0ZW0+XG4gIDwvZGl2PlxuPC9jOHktbGlzdC1ncm91cD5cblxuPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIHN0aWNreS1ib3R0b20gYmctY29tcG9uZW50XCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc21cIlxuICAgIFt0aXRsZV09XCJhZGRCdXR0b25MYWJlbCB8IHRyYW5zbGF0ZVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW25nQ2xhc3NdPVwieyAnYnRuLWJsb2NrJzogaW5saW5lIH1cIlxuICAgIChjbGljayk9XCJhZGQoKVwiXG4gID5cbiAgICA8aVxuICAgICAgYzh5SWNvbj1cInBsdXMtY2lyY2xlXCJcbiAgICAgICpuZ0lmPVwiY2FuRHJhZ0FuZERyb3BcIlxuICAgID48L2k+XG4gICAge3sgYWRkQnV0dG9uTGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
@@ -87,7 +87,7 @@ export class AlarmEventSelectorListItemComponent {
87
87
  useExisting: forwardRef(() => AlarmEventSelectorListItemComponent),
88
88
  multi: true
89
89
  }
90
- ], ngImport: i0, template: "<c8y-li\n class=\"c8y-list__item__collapse--container-small\"\n [formGroup]=\"formGroup\"\n #li\n>\n <c8y-li-drag-handle><ng-content select=\"c8y-li-drag-handle\"></ng-content></c8y-li-drag-handle>\n <c8y-li-icon\n class=\"a-s-center p-r-4\"\n *ngIf=\"showAddRemoveButton\"\n >\n <button\n class=\"btn btn-clean text-primary\"\n [title]=\"'Remove' | translate\"\n *ngIf=\"isSelected\"\n (click)=\"addOrRemoveItem()\"\n >\n <i\n class=\"text-danger\"\n c8yIcon=\"minus-circle\"\n ></i>\n </button>\n <button\n class=\"btn btn-clean text-primary\"\n [title]=\"'Select' | translate\"\n *ngIf=\"!isSelected\"\n (click)=\"addOrRemoveItem()\"\n [disabled]=\"(valid$ | async) === false\"\n >\n <i\n class=\"text-primary\"\n c8yIcon=\"plus-circle\"\n ></i>\n </button>\n </c8y-li-icon>\n\n <c8y-li-checkbox\n class=\"a-s-center p-r-0\"\n *ngIf=\"showActiveToggle\"\n [displayAsSwitch]=\"displayAsSwitch\"\n formControlName=\"__active\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-li-checkbox>\n\n <div class=\"d-flex a-i-center p-l-4\">\n <div\n class=\"c8y-list__item__colorpicker p-t-0 p-b-0 p-l-0\"\n [title]=\"colorPickerTitle | translate\"\n >\n <div\n class=\"c8y-colorpicker\"\n [ngClass]=\"{\n 'c8y-colorpicker--alarm': timelineType === 'ALARM',\n 'c8y-colorpicker--event': timelineType === 'EVENT'\n }\"\n >\n <input\n [ngStyle]=\"{ 'pointer-events': allowItemEdit && !omitProperties.color ? 'auto' : 'none' }\"\n type=\"color\"\n formControlName=\"color\"\n (click)=\"$event.stopPropagation()\"\n />\n <span\n class=\"circle-icon-wrapper\"\n [ngStyle]=\"{ 'background-color': formGroup.value.color }\"\n >\n <i\n class=\"stroked-icon\"\n [c8yIcon]=\"timelineType === 'EVENT' ? 'c8y-events' : 'bell'\"\n ></i>\n </span>\n </div>\n </div>\n <button\n class=\"btn-clean text-truncate\"\n [title]=\"formGroup.value.details?.label\"\n (click)=\"\n allowItemEdit\n ? (li.collapsed = !li.collapsed)\n : showActiveToggle\n ? toggleActive()\n : addOrRemoveItem()\n \"\n >\n <span class=\"text-truncate\">\n <c8y-highlight\n [text]=\"\n omitProperties.label\n ? formGroup.value.details?.filters?.type\n : formGroup.value.details?.label\n \"\n [pattern]=\"highlightText\"\n [shouldTrimPattern]=\"true\"\n ></c8y-highlight>\n </span>\n <small\n class=\"text-truncate text-muted icon-flex\"\n *ngIf=\"formGroup.value.__target && !hideSource\"\n >\n <i c8yIcon=\"exchange\"></i>\n <span class=\"text-truncate\">{{ formGroup.value.__target.name }}</span>\n </small>\n </button>\n\n <button\n class=\"btn-dot btn-dot--danger m-l-auto\"\n title=\"{{ 'Invalid entries' | translate }}\"\n [popover]=\"'Some entries are invalid. Check the required input fields.' | translate\"\n container=\"body\"\n *ngIf=\"(valid$ | async) === false && li.collapsed\"\n [outsideClick]=\"true\"\n >\n <i c8yIcon=\"exclamation-circle\"></i>\n </button>\n </div>\n\n <c8y-li-action\n [icon]=\"'minus-circle'\"\n *ngIf=\"optionToRemove\"\n [label]=\"'Remove from list' | translate\"\n (click)=\"remove()\"\n ></c8y-li-action>\n <c8y-li-collapse *ngIf=\"allowItemEdit\">\n <div class=\"data-point-details\">\n <c8y-alarm-event-attributes-form\n formControlName=\"details\"\n [timelineType]=\"timelineType\"\n [omitProperties]=\"omitProperties\"\n ></c8y-alarm-event-attributes-form>\n </div>\n </c8y-li-collapse>\n</c8y-li>\n", dependencies: [{ kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "component", type: i2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i2.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i2.ListItemActionComponent, selector: "c8y-list-item-action, c8y-li-action", inputs: ["label", "icon", "disabled"], outputs: ["click"] }, { kind: "component", type: i2.ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "component", type: i2.ListItemCheckboxComponent, selector: "c8y-list-item-checkbox, c8y-li-checkbox", inputs: ["selected", "indeterminate", "disabled", "displayAsSwitch"], outputs: ["onSelect"] }, { kind: "component", type: i2.ListItemDragHandleComponent, selector: "c8y-list-item-drag-handle, c8y-li-drag-handle" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: i5.AlarmEventAttributesFormComponent, selector: "c8y-alarm-event-attributes-form", inputs: ["timelineType", "omitProperties", "selectedItems"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
90
+ ], ngImport: i0, template: "<c8y-li\n class=\"c8y-list__item__collapse--container-small\"\n [formGroup]=\"formGroup\"\n #li\n>\n <c8y-li-drag-handle><ng-content select=\"c8y-li-drag-handle\"></ng-content></c8y-li-drag-handle>\n <c8y-li-icon\n class=\"a-s-center p-r-4\"\n *ngIf=\"showAddRemoveButton\"\n >\n <button\n class=\"btn btn-clean text-primary\"\n [title]=\"'Remove' | translate\"\n *ngIf=\"isSelected\"\n (click)=\"addOrRemoveItem()\"\n >\n <i\n class=\"text-danger\"\n c8yIcon=\"minus-circle\"\n ></i>\n </button>\n <button\n class=\"btn btn-clean text-primary\"\n [title]=\"'Select' | translate\"\n *ngIf=\"!isSelected\"\n (click)=\"addOrRemoveItem()\"\n [disabled]=\"(valid$ | async) === false\"\n >\n <i\n class=\"text-primary\"\n c8yIcon=\"plus-circle\"\n ></i>\n </button>\n </c8y-li-icon>\n\n <c8y-li-checkbox\n class=\"a-s-center m-t-4 p-r-0\"\n *ngIf=\"showActiveToggle\"\n [displayAsSwitch]=\"displayAsSwitch\"\n formControlName=\"__active\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-li-checkbox>\n\n <div class=\"d-flex a-i-center p-l-4\">\n <div\n class=\"c8y-list__item__colorpicker p-t-0 p-b-0 p-l-0\"\n [title]=\"colorPickerTitle | translate\"\n >\n <div\n class=\"c8y-colorpicker\"\n [ngClass]=\"{\n 'c8y-colorpicker--alarm': timelineType === 'ALARM',\n 'c8y-colorpicker--event': timelineType === 'EVENT'\n }\"\n >\n <input\n [ngStyle]=\"{ 'pointer-events': allowItemEdit && !omitProperties.color ? 'auto' : 'none' }\"\n type=\"color\"\n formControlName=\"color\"\n (click)=\"$event.stopPropagation()\"\n />\n <span\n class=\"circle-icon-wrapper\"\n [ngStyle]=\"{ 'background-color': formGroup.value.color }\"\n >\n <i\n class=\"stroked-icon\"\n [c8yIcon]=\"timelineType === 'EVENT' ? 'c8y-events' : 'bell'\"\n ></i>\n </span>\n </div>\n </div>\n <button\n class=\"btn-clean text-truncate\"\n [title]=\"formGroup.value.details?.label\"\n (click)=\"\n allowItemEdit\n ? (li.collapsed = !li.collapsed)\n : showActiveToggle\n ? toggleActive()\n : addOrRemoveItem()\n \"\n >\n <span class=\"text-truncate text-12\">\n <c8y-highlight\n [text]=\"\n omitProperties.label\n ? formGroup.value.details?.filters?.type\n : formGroup.value.details?.label\n \"\n [pattern]=\"highlightText\"\n [shouldTrimPattern]=\"true\"\n ></c8y-highlight>\n </span>\n <small\n class=\"text-truncate text-muted icon-flex\"\n *ngIf=\"formGroup.value.__target && !hideSource\"\n >\n <i c8yIcon=\"exchange\"></i>\n <span class=\"text-truncate\">{{ formGroup.value.__target.name }}</span>\n </small>\n </button>\n\n <button\n class=\"btn-dot btn-dot--danger m-l-auto\"\n title=\"{{ 'Invalid entries' | translate }}\"\n [popover]=\"'Some entries are invalid. Check the required input fields.' | translate\"\n container=\"body\"\n *ngIf=\"(valid$ | async) === false && li.collapsed\"\n [outsideClick]=\"true\"\n >\n <i c8yIcon=\"exclamation-circle\"></i>\n </button>\n </div>\n\n <c8y-li-action\n [icon]=\"'minus-circle'\"\n *ngIf=\"optionToRemove\"\n [label]=\"'Remove from list' | translate\"\n (click)=\"remove()\"\n ></c8y-li-action>\n <c8y-li-collapse *ngIf=\"allowItemEdit\">\n <div class=\"data-point-details\">\n <c8y-alarm-event-attributes-form\n formControlName=\"details\"\n [timelineType]=\"timelineType\"\n [omitProperties]=\"omitProperties\"\n ></c8y-alarm-event-attributes-form>\n </div>\n </c8y-li-collapse>\n</c8y-li>\n", dependencies: [{ kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "component", type: i2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i2.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i2.ListItemActionComponent, selector: "c8y-list-item-action, c8y-li-action", inputs: ["label", "icon", "disabled"], outputs: ["click"] }, { kind: "component", type: i2.ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "component", type: i2.ListItemCheckboxComponent, selector: "c8y-list-item-checkbox, c8y-li-checkbox", inputs: ["selected", "indeterminate", "disabled", "displayAsSwitch"], outputs: ["onSelect"] }, { kind: "component", type: i2.ListItemDragHandleComponent, selector: "c8y-list-item-drag-handle, c8y-li-drag-handle" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: i5.AlarmEventAttributesFormComponent, selector: "c8y-alarm-event-attributes-form", inputs: ["timelineType", "omitProperties", "selectedItems"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
91
91
  }
92
92
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AlarmEventSelectorListItemComponent, decorators: [{
93
93
  type: Component,
@@ -102,7 +102,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
102
102
  useExisting: forwardRef(() => AlarmEventSelectorListItemComponent),
103
103
  multi: true
104
104
  }
105
- ], template: "<c8y-li\n class=\"c8y-list__item__collapse--container-small\"\n [formGroup]=\"formGroup\"\n #li\n>\n <c8y-li-drag-handle><ng-content select=\"c8y-li-drag-handle\"></ng-content></c8y-li-drag-handle>\n <c8y-li-icon\n class=\"a-s-center p-r-4\"\n *ngIf=\"showAddRemoveButton\"\n >\n <button\n class=\"btn btn-clean text-primary\"\n [title]=\"'Remove' | translate\"\n *ngIf=\"isSelected\"\n (click)=\"addOrRemoveItem()\"\n >\n <i\n class=\"text-danger\"\n c8yIcon=\"minus-circle\"\n ></i>\n </button>\n <button\n class=\"btn btn-clean text-primary\"\n [title]=\"'Select' | translate\"\n *ngIf=\"!isSelected\"\n (click)=\"addOrRemoveItem()\"\n [disabled]=\"(valid$ | async) === false\"\n >\n <i\n class=\"text-primary\"\n c8yIcon=\"plus-circle\"\n ></i>\n </button>\n </c8y-li-icon>\n\n <c8y-li-checkbox\n class=\"a-s-center p-r-0\"\n *ngIf=\"showActiveToggle\"\n [displayAsSwitch]=\"displayAsSwitch\"\n formControlName=\"__active\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-li-checkbox>\n\n <div class=\"d-flex a-i-center p-l-4\">\n <div\n class=\"c8y-list__item__colorpicker p-t-0 p-b-0 p-l-0\"\n [title]=\"colorPickerTitle | translate\"\n >\n <div\n class=\"c8y-colorpicker\"\n [ngClass]=\"{\n 'c8y-colorpicker--alarm': timelineType === 'ALARM',\n 'c8y-colorpicker--event': timelineType === 'EVENT'\n }\"\n >\n <input\n [ngStyle]=\"{ 'pointer-events': allowItemEdit && !omitProperties.color ? 'auto' : 'none' }\"\n type=\"color\"\n formControlName=\"color\"\n (click)=\"$event.stopPropagation()\"\n />\n <span\n class=\"circle-icon-wrapper\"\n [ngStyle]=\"{ 'background-color': formGroup.value.color }\"\n >\n <i\n class=\"stroked-icon\"\n [c8yIcon]=\"timelineType === 'EVENT' ? 'c8y-events' : 'bell'\"\n ></i>\n </span>\n </div>\n </div>\n <button\n class=\"btn-clean text-truncate\"\n [title]=\"formGroup.value.details?.label\"\n (click)=\"\n allowItemEdit\n ? (li.collapsed = !li.collapsed)\n : showActiveToggle\n ? toggleActive()\n : addOrRemoveItem()\n \"\n >\n <span class=\"text-truncate\">\n <c8y-highlight\n [text]=\"\n omitProperties.label\n ? formGroup.value.details?.filters?.type\n : formGroup.value.details?.label\n \"\n [pattern]=\"highlightText\"\n [shouldTrimPattern]=\"true\"\n ></c8y-highlight>\n </span>\n <small\n class=\"text-truncate text-muted icon-flex\"\n *ngIf=\"formGroup.value.__target && !hideSource\"\n >\n <i c8yIcon=\"exchange\"></i>\n <span class=\"text-truncate\">{{ formGroup.value.__target.name }}</span>\n </small>\n </button>\n\n <button\n class=\"btn-dot btn-dot--danger m-l-auto\"\n title=\"{{ 'Invalid entries' | translate }}\"\n [popover]=\"'Some entries are invalid. Check the required input fields.' | translate\"\n container=\"body\"\n *ngIf=\"(valid$ | async) === false && li.collapsed\"\n [outsideClick]=\"true\"\n >\n <i c8yIcon=\"exclamation-circle\"></i>\n </button>\n </div>\n\n <c8y-li-action\n [icon]=\"'minus-circle'\"\n *ngIf=\"optionToRemove\"\n [label]=\"'Remove from list' | translate\"\n (click)=\"remove()\"\n ></c8y-li-action>\n <c8y-li-collapse *ngIf=\"allowItemEdit\">\n <div class=\"data-point-details\">\n <c8y-alarm-event-attributes-form\n formControlName=\"details\"\n [timelineType]=\"timelineType\"\n [omitProperties]=\"omitProperties\"\n ></c8y-alarm-event-attributes-form>\n </div>\n </c8y-li-collapse>\n</c8y-li>\n" }]
105
+ ], template: "<c8y-li\n class=\"c8y-list__item__collapse--container-small\"\n [formGroup]=\"formGroup\"\n #li\n>\n <c8y-li-drag-handle><ng-content select=\"c8y-li-drag-handle\"></ng-content></c8y-li-drag-handle>\n <c8y-li-icon\n class=\"a-s-center p-r-4\"\n *ngIf=\"showAddRemoveButton\"\n >\n <button\n class=\"btn btn-clean text-primary\"\n [title]=\"'Remove' | translate\"\n *ngIf=\"isSelected\"\n (click)=\"addOrRemoveItem()\"\n >\n <i\n class=\"text-danger\"\n c8yIcon=\"minus-circle\"\n ></i>\n </button>\n <button\n class=\"btn btn-clean text-primary\"\n [title]=\"'Select' | translate\"\n *ngIf=\"!isSelected\"\n (click)=\"addOrRemoveItem()\"\n [disabled]=\"(valid$ | async) === false\"\n >\n <i\n class=\"text-primary\"\n c8yIcon=\"plus-circle\"\n ></i>\n </button>\n </c8y-li-icon>\n\n <c8y-li-checkbox\n class=\"a-s-center m-t-4 p-r-0\"\n *ngIf=\"showActiveToggle\"\n [displayAsSwitch]=\"displayAsSwitch\"\n formControlName=\"__active\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-li-checkbox>\n\n <div class=\"d-flex a-i-center p-l-4\">\n <div\n class=\"c8y-list__item__colorpicker p-t-0 p-b-0 p-l-0\"\n [title]=\"colorPickerTitle | translate\"\n >\n <div\n class=\"c8y-colorpicker\"\n [ngClass]=\"{\n 'c8y-colorpicker--alarm': timelineType === 'ALARM',\n 'c8y-colorpicker--event': timelineType === 'EVENT'\n }\"\n >\n <input\n [ngStyle]=\"{ 'pointer-events': allowItemEdit && !omitProperties.color ? 'auto' : 'none' }\"\n type=\"color\"\n formControlName=\"color\"\n (click)=\"$event.stopPropagation()\"\n />\n <span\n class=\"circle-icon-wrapper\"\n [ngStyle]=\"{ 'background-color': formGroup.value.color }\"\n >\n <i\n class=\"stroked-icon\"\n [c8yIcon]=\"timelineType === 'EVENT' ? 'c8y-events' : 'bell'\"\n ></i>\n </span>\n </div>\n </div>\n <button\n class=\"btn-clean text-truncate\"\n [title]=\"formGroup.value.details?.label\"\n (click)=\"\n allowItemEdit\n ? (li.collapsed = !li.collapsed)\n : showActiveToggle\n ? toggleActive()\n : addOrRemoveItem()\n \"\n >\n <span class=\"text-truncate text-12\">\n <c8y-highlight\n [text]=\"\n omitProperties.label\n ? formGroup.value.details?.filters?.type\n : formGroup.value.details?.label\n \"\n [pattern]=\"highlightText\"\n [shouldTrimPattern]=\"true\"\n ></c8y-highlight>\n </span>\n <small\n class=\"text-truncate text-muted icon-flex\"\n *ngIf=\"formGroup.value.__target && !hideSource\"\n >\n <i c8yIcon=\"exchange\"></i>\n <span class=\"text-truncate\">{{ formGroup.value.__target.name }}</span>\n </small>\n </button>\n\n <button\n class=\"btn-dot btn-dot--danger m-l-auto\"\n title=\"{{ 'Invalid entries' | translate }}\"\n [popover]=\"'Some entries are invalid. Check the required input fields.' | translate\"\n container=\"body\"\n *ngIf=\"(valid$ | async) === false && li.collapsed\"\n [outsideClick]=\"true\"\n >\n <i c8yIcon=\"exclamation-circle\"></i>\n </button>\n </div>\n\n <c8y-li-action\n [icon]=\"'minus-circle'\"\n *ngIf=\"optionToRemove\"\n [label]=\"'Remove from list' | translate\"\n (click)=\"remove()\"\n ></c8y-li-action>\n <c8y-li-collapse *ngIf=\"allowItemEdit\">\n <div class=\"data-point-details\">\n <c8y-alarm-event-attributes-form\n formControlName=\"details\"\n [timelineType]=\"timelineType\"\n [omitProperties]=\"omitProperties\"\n ></c8y-alarm-event-attributes-form>\n </div>\n </c8y-li-collapse>\n</c8y-li>\n" }]
106
106
  }], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { timelineType: [{
107
107
  type: Input
108
108
  }], highlightText: [{
@@ -128,4 +128,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
128
128
  }], removed: [{
129
129
  type: Output
130
130
  }] } });
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0tZXZlbnQtc2VsZWN0b3ItbGlzdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2FsYXJtLWV2ZW50LXNlbGVjdG9yL2FsYXJtLWV2ZW50LXNlbGVjdG9yLWxpc3QtaXRlbS9hbGFybS1ldmVudC1zZWxlY3Rvci1saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vYWxhcm0tZXZlbnQtc2VsZWN0b3IvYWxhcm0tZXZlbnQtc2VsZWN0b3ItbGlzdC1pdGVtL2FsYXJtLWV2ZW50LXNlbGVjdG9yLWxpc3QtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUdMLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsV0FBVyxFQUVYLGFBQWEsRUFDYixpQkFBaUIsRUFHbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7OztBQWtCOUMsTUFBTSxPQUFPLG1DQUFtQztJQXNCOUMsWUFBb0IsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFqQm5DLHdCQUFtQixHQUFHLElBQUksQ0FBQztRQUMzQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FB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QkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdJLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Hcm91cCxcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBbGFybU9yRXZlbnQsIE9taXRTZWxlY3RvclByb3BlcnRpZXMsIFRpbWVsaW5lVHlwZSB9IGZyb20gJy4uL2FsYXJtLWV2ZW50LXNlbGVjdG9yLm1vZGVsJztcbmltcG9ydCB7IG1hcCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYWxhcm0tZXZlbnQtc2VsZWN0b3ItbGlzdC1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FsYXJtLWV2ZW50LXNlbGVjdG9yLWxpc3QtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQWxhcm1FdmVudFNlbGVjdG9yTGlzdEl0ZW1Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBbGFybUV2ZW50U2VsZWN0b3JMaXN0SXRlbUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBBbGFybUV2ZW50U2VsZWN0b3JMaXN0SXRlbUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpIHRpbWVsaW5lVHlwZTogVGltZWxpbmVUeXBlO1xuICBASW5wdXQoKSBoaWdobGlnaHRUZXh0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNob3dBZGRSZW1vdmVCdXR0b24gPSB0cnVlO1xuICBASW5wdXQoKSBpc1NlbGVjdGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIG9wdGlvblRvUmVtb3ZlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dBY3RpdmVUb2dnbGUgPSBmYWxzZTtcbiAgQElucHV0KCkgYWxsb3dJdGVtRWRpdCA9IGZhbHNlO1xuICBASW5wdXQoKSBoaWRlU291cmNlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc3BsYXlBc1N3aXRjaCA9IGZhbHNlO1xuICBASW5wdXQoKSBvbWl0UHJvcGVydGllczogT21pdFNlbGVjdG9yUHJvcGVydGllcyA9IHt9O1xuXG4gIGNvbG9yUGlja2VyVGl0bGU6IHN0cmluZztcbiAgQE91dHB1dCgpIGFkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxBbGFybU9yRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSByZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxBbGFybU9yRXZlbnQ+KCk7XG5cbiAgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIHZhbGlkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIpIHtcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgZGV0YWlsczogW10sXG4gICAgICBjb2xvcjogW10sXG4gICAgICBfX2FjdGl2ZTogW10sXG4gICAgICBfX3RhcmdldDogW11cbiAgICB9KTtcbiAgICB0aGlzLnZhbGlkJCA9IHRoaXMuZm9ybUdyb3VwLnN0YXR1c0NoYW5nZXMucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgIG1hcCh2YWwgPT4gdmFsID09PSAnVkFMSUQnKVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNvbG9yUGlja2VyVGl0bGUgPSB0aGlzLmFsbG93SXRlbUVkaXQgPyBnZXR0ZXh0KCdDaGFuZ2UgY29sb3InKSA6ICcnO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgdG9nZ2xlQWN0aXZlKCkge1xuICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLl9fYWN0aXZlLnNldFZhbHVlKCF0aGlzLmZvcm1Hcm91cC52YWx1ZS5fX2FjdGl2ZSk7XG4gIH1cblxuICB2YWxpZGF0ZShfY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwPy52YWxpZCA/IG51bGwgOiB7IGZvcm1JbnZhbGlkOiB7fSB9O1xuICB9XG5cbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUoeyAuLi5vYmosIGRldGFpbHM6IG9iaiB9KTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCh0bXAgPT4gdGhpcy50cmFuc2Zvcm1Gb3JtVmFsdWUodG1wKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShmbik7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGZuKTtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlzRGlzYWJsZWQgPyB0aGlzLmZvcm1Hcm91cC5kaXNhYmxlKCkgOiB0aGlzLmZvcm1Hcm91cC5lbmFibGUoKTtcbiAgfVxuXG4gIGFkZE9yUmVtb3ZlSXRlbSgpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMudHJhbnNmb3JtRm9ybVZhbHVlKHRoaXMuZm9ybUdyb3VwLnZhbHVlKTtcbiAgICBpZiAodGhpcy5pc1NlbGVjdGVkKSB7XG4gICAgICB0aGlzLnJlbW92ZWQuZW1pdCh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkZWQuZW1pdCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlKCkge1xuICAgIHRoaXMucmVtb3ZlZC5lbWl0KHRoaXMudHJhbnNmb3JtRm9ybVZhbHVlKHRoaXMuZm9ybUdyb3VwLnZhbHVlKSk7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zZm9ybUZvcm1WYWx1ZShmb3JtVmFsdWU6IGFueSkge1xuICAgIGNvbnN0IG9iaiA9IE9iamVjdC5hc3NpZ24oe30sIGZvcm1WYWx1ZS5kZXRhaWxzIHx8IHt9LCBmb3JtVmFsdWUpO1xuICAgIGRlbGV0ZSBvYmouZGV0YWlscztcbiAgICByZXR1cm4gb2JqO1xuICB9XG59XG4iLCI8Yzh5LWxpXG4gIGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2NvbGxhcHNlLS1jb250YWluZXItc21hbGxcIlxuICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4gICNsaVxuPlxuICA8Yzh5LWxpLWRyYWctaGFuZGxlPjxuZy1jb250ZW50IHNlbGVjdD1cImM4eS1saS1kcmFnLWhhbmRsZVwiPjwvbmctY29udGVudD48L2M4eS1saS1kcmFnLWhhbmRsZT5cbiAgPGM4eS1saS1pY29uXG4gICAgY2xhc3M9XCJhLXMtY2VudGVyIHAtci00XCJcbiAgICAqbmdJZj1cInNob3dBZGRSZW1vdmVCdXR0b25cIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLWNsZWFuIHRleHQtcHJpbWFyeVwiXG4gICAgICBbdGl0bGVdPVwiJ1JlbW92ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgKm5nSWY9XCJpc1NlbGVjdGVkXCJcbiAgICAgIChjbGljayk9XCJhZGRPclJlbW92ZUl0ZW0oKVwiXG4gICAgPlxuICAgICAgPGlcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiXG4gICAgICAgIGM4eUljb249XCJtaW51cy1jaXJjbGVcIlxuICAgICAgPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tY2xlYW4gdGV4dC1wcmltYXJ5XCJcbiAgICAgIFt0aXRsZV09XCInU2VsZWN0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAqbmdJZj1cIiFpc1NlbGVjdGVkXCJcbiAgICAgIChjbGljayk9XCJhZGRPclJlbW92ZUl0ZW0oKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiKHZhbGlkJCB8IGFzeW5jKSA9PT0gZmFsc2VcIlxuICAgID5cbiAgICAgIDxpXG4gICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5XCJcbiAgICAgICAgYzh5SWNvbj1cInBsdXMtY2lyY2xlXCJcbiAgICAgID48L2k+XG4gICAgPC9idXR0b24+XG4gIDwvYzh5LWxpLWljb24+XG5cbiAgPGM4eS1saS1jaGVja2JveFxuICAgIGNsYXNzPVwiYS1zLWNlbnRlciBwLXItMFwiXG4gICAgKm5nSWY9XCJzaG93QWN0aXZlVG9nZ2xlXCJcbiAgICBbZGlzcGxheUFzU3dpdGNoXT1cImRpc3BsYXlBc1N3aXRjaFwiXG4gICAgZm9ybUNvbnRyb2xOYW1lPVwiX19hY3RpdmVcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICA+PC9jOHktbGktY2hlY2tib3g+XG5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyIHAtbC00XCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjOHktbGlzdF9faXRlbV9fY29sb3JwaWNrZXIgcC10LTAgcC1iLTAgcC1sLTBcIlxuICAgICAgW3RpdGxlXT1cImNvbG9yUGlja2VyVGl0bGUgfCB0cmFuc2xhdGVcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjOHktY29sb3JwaWNrZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ2M4eS1jb2xvcnBpY2tlci0tYWxhcm0nOiB0aW1lbGluZVR5cGUgPT09ICdBTEFSTScsXG4gICAgICAgICAgJ2M4eS1jb2xvcnBpY2tlci0tZXZlbnQnOiB0aW1lbGluZVR5cGUgPT09ICdFVkVOVCdcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ3BvaW50ZXItZXZlbnRzJzogYWxsb3dJdGVtRWRpdCAmJiAhb21pdFByb3BlcnRpZXMuY29sb3IgPyAnYXV0bycgOiAnbm9uZScgfVwiXG4gICAgICAgICAgdHlwZT1cImNvbG9yXCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb2xvclwiXG4gICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJjaXJjbGUtaWNvbi13cmFwcGVyXCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7ICdiYWNrZ3JvdW5kLWNvbG9yJzogZm9ybUdyb3VwLnZhbHVlLmNvbG9yIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwic3Ryb2tlZC1pY29uXCJcbiAgICAgICAgICAgIFtjOHlJY29uXT1cInRpbWVsaW5lVHlwZSA9PT0gJ0VWRU5UJyA/ICdjOHktZXZlbnRzJyA6ICdiZWxsJ1wiXG4gICAgICAgICAgPjwvaT5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4tY2xlYW4gdGV4dC10cnVuY2F0ZVwiXG4gICAgICBbdGl0bGVdPVwiZm9ybUdyb3VwLnZhbHVlLmRldGFpbHM/LmxhYmVsXCJcbiAgICAgIChjbGljayk9XCJcbiAgICAgICAgYWxsb3dJdGVtRWRpdFxuICAgICAgICAgID8gKGxpLmNvbGxhcHNlZCA9ICFsaS5jb2xsYXBzZWQpXG4gICAgICAgICAgOiBzaG93QWN0aXZlVG9nZ2xlXG4gICAgICAgICAgICA/IHRvZ2dsZUFjdGl2ZSgpXG4gICAgICAgICAgICA6IGFkZE9yUmVtb3ZlSXRlbSgpXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICA8Yzh5LWhpZ2hsaWdodFxuICAgICAgICAgIFt0ZXh0XT1cIlxuICAgICAgICAgICAgb21pdFByb3BlcnRpZXMubGFiZWxcbiAgICAgICAgICAgICAgPyBmb3JtR3JvdXAudmFsdWUuZGV0YWlscz8uZmlsdGVycz8udHlwZVxuICAgICAgICAgICAgICA6IGZvcm1Hcm91cC52YWx1ZS5kZXRhaWxzPy5sYWJlbFxuICAgICAgICAgIFwiXG4gICAgICAgICAgW3BhdHRlcm5dPVwiaGlnaGxpZ2h0VGV4dFwiXG4gICAgICAgICAgW3Nob3VsZFRyaW1QYXR0ZXJuXT1cInRydWVcIlxuICAgICAgICA+PC9jOHktaGlnaGxpZ2h0PlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNtYWxsXG4gICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZSB0ZXh0LW11dGVkIGljb24tZmxleFwiXG4gICAgICAgICpuZ0lmPVwiZm9ybUdyb3VwLnZhbHVlLl9fdGFyZ2V0ICYmICFoaWRlU291cmNlXCJcbiAgICAgID5cbiAgICAgICAgPGkgYzh5SWNvbj1cImV4Y2hhbmdlXCI+PC9pPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj57eyBmb3JtR3JvdXAudmFsdWUuX190YXJnZXQubmFtZSB9fTwvc3Bhbj5cbiAgICAgIDwvc21hbGw+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0bi1kb3QgYnRuLWRvdC0tZGFuZ2VyIG0tbC1hdXRvXCJcbiAgICAgIHRpdGxlPVwie3sgJ0ludmFsaWQgZW50cmllcycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgW3BvcG92ZXJdPVwiJ1NvbWUgZW50cmllcyBhcmUgaW52YWxpZC4gQ2hlY2sgdGhlIHJlcXVpcmVkIGlucHV0IGZpZWxkcy4nIHwgdHJhbnNsYXRlXCJcbiAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgKm5nSWY9XCIodmFsaWQkIHwgYXN5bmMpID09PSBmYWxzZSAmJiBsaS5jb2xsYXBzZWRcIlxuICAgICAgW291dHNpZGVDbGlja109XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8aSBjOHlJY29uPVwiZXhjbGFtYXRpb24tY2lyY2xlXCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8Yzh5LWxpLWFjdGlvblxuICAgIFtpY29uXT1cIidtaW51cy1jaXJjbGUnXCJcbiAgICAqbmdJZj1cIm9wdGlvblRvUmVtb3ZlXCJcbiAgICBbbGFiZWxdPVwiJ1JlbW92ZSBmcm9tIGxpc3QnIHwgdHJhbnNsYXRlXCJcbiAgICAoY2xpY2spPVwicmVtb3ZlKClcIlxuICA+PC9jOHktbGktYWN0aW9uPlxuICA8Yzh5LWxpLWNvbGxhcHNlICpuZ0lmPVwiYWxsb3dJdGVtRWRpdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJkYXRhLXBvaW50LWRldGFpbHNcIj5cbiAgICAgIDxjOHktYWxhcm0tZXZlbnQtYXR0cmlidXRlcy1mb3JtXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRldGFpbHNcIlxuICAgICAgICBbdGltZWxpbmVUeXBlXT1cInRpbWVsaW5lVHlwZVwiXG4gICAgICAgIFtvbWl0UHJvcGVydGllc109XCJvbWl0UHJvcGVydGllc1wiXG4gICAgICA+PC9jOHktYWxhcm0tZXZlbnQtYXR0cmlidXRlcy1mb3JtPlxuICAgIDwvZGl2PlxuICA8L2M4eS1saS1jb2xsYXBzZT5cbjwvYzh5LWxpPlxuIl19
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0tZXZlbnQtc2VsZWN0b3ItbGlzdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2FsYXJtLWV2ZW50LXNlbGVjdG9yL2FsYXJtLWV2ZW50LXNlbGVjdG9yLWxpc3QtaXRlbS9hbGFybS1ldmVudC1zZWxlY3Rvci1saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vYWxhcm0tZXZlbnQtc2VsZWN0b3IvYWxhcm0tZXZlbnQtc2VsZWN0b3ItbGlzdC1pdGVtL2FsYXJtLWV2ZW50LXNlbGVjdG9yLWxpc3QtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUdMLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsV0FBVyxFQUVYLGFBQWEsRUFDYixpQkFBaUIsRUFHbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7OztBQWtCOUMsTUFBTSxPQUFPLG1DQUFtQztJQXNCOUMsWUFBb0IsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFqQm5DLHdCQUFtQixHQUFHLElBQUksQ0FBQztRQUMzQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FB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QkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdJLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Hcm91cCxcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBbGFybU9yRXZlbnQsIE9taXRTZWxlY3RvclByb3BlcnRpZXMsIFRpbWVsaW5lVHlwZSB9IGZyb20gJy4uL2FsYXJtLWV2ZW50LXNlbGVjdG9yLm1vZGVsJztcbmltcG9ydCB7IG1hcCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYWxhcm0tZXZlbnQtc2VsZWN0b3ItbGlzdC1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FsYXJtLWV2ZW50LXNlbGVjdG9yLWxpc3QtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQWxhcm1FdmVudFNlbGVjdG9yTGlzdEl0ZW1Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBbGFybUV2ZW50U2VsZWN0b3JMaXN0SXRlbUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBBbGFybUV2ZW50U2VsZWN0b3JMaXN0SXRlbUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpIHRpbWVsaW5lVHlwZTogVGltZWxpbmVUeXBlO1xuICBASW5wdXQoKSBoaWdobGlnaHRUZXh0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNob3dBZGRSZW1vdmVCdXR0b24gPSB0cnVlO1xuICBASW5wdXQoKSBpc1NlbGVjdGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIG9wdGlvblRvUmVtb3ZlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dBY3RpdmVUb2dnbGUgPSBmYWxzZTtcbiAgQElucHV0KCkgYWxsb3dJdGVtRWRpdCA9IGZhbHNlO1xuICBASW5wdXQoKSBoaWRlU291cmNlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc3BsYXlBc1N3aXRjaCA9IGZhbHNlO1xuICBASW5wdXQoKSBvbWl0UHJvcGVydGllczogT21pdFNlbGVjdG9yUHJvcGVydGllcyA9IHt9O1xuXG4gIGNvbG9yUGlja2VyVGl0bGU6IHN0cmluZztcbiAgQE91dHB1dCgpIGFkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxBbGFybU9yRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSByZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxBbGFybU9yRXZlbnQ+KCk7XG5cbiAgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIHZhbGlkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIpIHtcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgZGV0YWlsczogW10sXG4gICAgICBjb2xvcjogW10sXG4gICAgICBfX2FjdGl2ZTogW10sXG4gICAgICBfX3RhcmdldDogW11cbiAgICB9KTtcbiAgICB0aGlzLnZhbGlkJCA9IHRoaXMuZm9ybUdyb3VwLnN0YXR1c0NoYW5nZXMucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgIG1hcCh2YWwgPT4gdmFsID09PSAnVkFMSUQnKVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNvbG9yUGlja2VyVGl0bGUgPSB0aGlzLmFsbG93SXRlbUVkaXQgPyBnZXR0ZXh0KCdDaGFuZ2UgY29sb3InKSA6ICcnO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgdG9nZ2xlQWN0aXZlKCkge1xuICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLl9fYWN0aXZlLnNldFZhbHVlKCF0aGlzLmZvcm1Hcm91cC52YWx1ZS5fX2FjdGl2ZSk7XG4gIH1cblxuICB2YWxpZGF0ZShfY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwPy52YWxpZCA/IG51bGwgOiB7IGZvcm1JbnZhbGlkOiB7fSB9O1xuICB9XG5cbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUoeyAuLi5vYmosIGRldGFpbHM6IG9iaiB9KTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCh0bXAgPT4gdGhpcy50cmFuc2Zvcm1Gb3JtVmFsdWUodG1wKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShmbik7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGZuKTtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlzRGlzYWJsZWQgPyB0aGlzLmZvcm1Hcm91cC5kaXNhYmxlKCkgOiB0aGlzLmZvcm1Hcm91cC5lbmFibGUoKTtcbiAgfVxuXG4gIGFkZE9yUmVtb3ZlSXRlbSgpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMudHJhbnNmb3JtRm9ybVZhbHVlKHRoaXMuZm9ybUdyb3VwLnZhbHVlKTtcbiAgICBpZiAodGhpcy5pc1NlbGVjdGVkKSB7XG4gICAgICB0aGlzLnJlbW92ZWQuZW1pdCh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkZWQuZW1pdCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlKCkge1xuICAgIHRoaXMucmVtb3ZlZC5lbWl0KHRoaXMudHJhbnNmb3JtRm9ybVZhbHVlKHRoaXMuZm9ybUdyb3VwLnZhbHVlKSk7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zZm9ybUZvcm1WYWx1ZShmb3JtVmFsdWU6IGFueSkge1xuICAgIGNvbnN0IG9iaiA9IE9iamVjdC5hc3NpZ24oe30sIGZvcm1WYWx1ZS5kZXRhaWxzIHx8IHt9LCBmb3JtVmFsdWUpO1xuICAgIGRlbGV0ZSBvYmouZGV0YWlscztcbiAgICByZXR1cm4gb2JqO1xuICB9XG59XG4iLCI8Yzh5LWxpXG4gIGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2NvbGxhcHNlLS1jb250YWluZXItc21hbGxcIlxuICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4gICNsaVxuPlxuICA8Yzh5LWxpLWRyYWctaGFuZGxlPjxuZy1jb250ZW50IHNlbGVjdD1cImM4eS1saS1kcmFnLWhhbmRsZVwiPjwvbmctY29udGVudD48L2M4eS1saS1kcmFnLWhhbmRsZT5cbiAgPGM4eS1saS1pY29uXG4gICAgY2xhc3M9XCJhLXMtY2VudGVyIHAtci00XCJcbiAgICAqbmdJZj1cInNob3dBZGRSZW1vdmVCdXR0b25cIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLWNsZWFuIHRleHQtcHJpbWFyeVwiXG4gICAgICBbdGl0bGVdPVwiJ1JlbW92ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgKm5nSWY9XCJpc1NlbGVjdGVkXCJcbiAgICAgIChjbGljayk9XCJhZGRPclJlbW92ZUl0ZW0oKVwiXG4gICAgPlxuICAgICAgPGlcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiXG4gICAgICAgIGM4eUljb249XCJtaW51cy1jaXJjbGVcIlxuICAgICAgPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tY2xlYW4gdGV4dC1wcmltYXJ5XCJcbiAgICAgIFt0aXRsZV09XCInU2VsZWN0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAqbmdJZj1cIiFpc1NlbGVjdGVkXCJcbiAgICAgIChjbGljayk9XCJhZGRPclJlbW92ZUl0ZW0oKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiKHZhbGlkJCB8IGFzeW5jKSA9PT0gZmFsc2VcIlxuICAgID5cbiAgICAgIDxpXG4gICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5XCJcbiAgICAgICAgYzh5SWNvbj1cInBsdXMtY2lyY2xlXCJcbiAgICAgID48L2k+XG4gICAgPC9idXR0b24+XG4gIDwvYzh5LWxpLWljb24+XG5cbiAgPGM4eS1saS1jaGVja2JveFxuICAgIGNsYXNzPVwiYS1zLWNlbnRlciBtLXQtNCBwLXItMFwiXG4gICAgKm5nSWY9XCJzaG93QWN0aXZlVG9nZ2xlXCJcbiAgICBbZGlzcGxheUFzU3dpdGNoXT1cImRpc3BsYXlBc1N3aXRjaFwiXG4gICAgZm9ybUNvbnRyb2xOYW1lPVwiX19hY3RpdmVcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICA+PC9jOHktbGktY2hlY2tib3g+XG5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyIHAtbC00XCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjOHktbGlzdF9faXRlbV9fY29sb3JwaWNrZXIgcC10LTAgcC1iLTAgcC1sLTBcIlxuICAgICAgW3RpdGxlXT1cImNvbG9yUGlja2VyVGl0bGUgfCB0cmFuc2xhdGVcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjOHktY29sb3JwaWNrZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ2M4eS1jb2xvcnBpY2tlci0tYWxhcm0nOiB0aW1lbGluZVR5cGUgPT09ICdBTEFSTScsXG4gICAgICAgICAgJ2M4eS1jb2xvcnBpY2tlci0tZXZlbnQnOiB0aW1lbGluZVR5cGUgPT09ICdFVkVOVCdcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ3BvaW50ZXItZXZlbnRzJzogYWxsb3dJdGVtRWRpdCAmJiAhb21pdFByb3BlcnRpZXMuY29sb3IgPyAnYXV0bycgOiAnbm9uZScgfVwiXG4gICAgICAgICAgdHlwZT1cImNvbG9yXCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb2xvclwiXG4gICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJjaXJjbGUtaWNvbi13cmFwcGVyXCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7ICdiYWNrZ3JvdW5kLWNvbG9yJzogZm9ybUdyb3VwLnZhbHVlLmNvbG9yIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwic3Ryb2tlZC1pY29uXCJcbiAgICAgICAgICAgIFtjOHlJY29uXT1cInRpbWVsaW5lVHlwZSA9PT0gJ0VWRU5UJyA/ICdjOHktZXZlbnRzJyA6ICdiZWxsJ1wiXG4gICAgICAgICAgPjwvaT5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4tY2xlYW4gdGV4dC10cnVuY2F0ZVwiXG4gICAgICBbdGl0bGVdPVwiZm9ybUdyb3VwLnZhbHVlLmRldGFpbHM/LmxhYmVsXCJcbiAgICAgIChjbGljayk9XCJcbiAgICAgICAgYWxsb3dJdGVtRWRpdFxuICAgICAgICAgID8gKGxpLmNvbGxhcHNlZCA9ICFsaS5jb2xsYXBzZWQpXG4gICAgICAgICAgOiBzaG93QWN0aXZlVG9nZ2xlXG4gICAgICAgICAgICA/IHRvZ2dsZUFjdGl2ZSgpXG4gICAgICAgICAgICA6IGFkZE9yUmVtb3ZlSXRlbSgpXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZSB0ZXh0LTEyXCI+XG4gICAgICAgIDxjOHktaGlnaGxpZ2h0XG4gICAgICAgICAgW3RleHRdPVwiXG4gICAgICAgICAgICBvbWl0UHJvcGVydGllcy5sYWJlbFxuICAgICAgICAgICAgICA/IGZvcm1Hcm91cC52YWx1ZS5kZXRhaWxzPy5maWx0ZXJzPy50eXBlXG4gICAgICAgICAgICAgIDogZm9ybUdyb3VwLnZhbHVlLmRldGFpbHM/LmxhYmVsXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbcGF0dGVybl09XCJoaWdobGlnaHRUZXh0XCJcbiAgICAgICAgICBbc2hvdWxkVHJpbVBhdHRlcm5dPVwidHJ1ZVwiXG4gICAgICAgID48L2M4eS1oaWdobGlnaHQ+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c21hbGxcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlIHRleHQtbXV0ZWQgaWNvbi1mbGV4XCJcbiAgICAgICAgKm5nSWY9XCJmb3JtR3JvdXAudmFsdWUuX190YXJnZXQgJiYgIWhpZGVTb3VyY2VcIlxuICAgICAgPlxuICAgICAgICA8aSBjOHlJY29uPVwiZXhjaGFuZ2VcIj48L2k+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPnt7IGZvcm1Hcm91cC52YWx1ZS5fX3RhcmdldC5uYW1lIH19PC9zcGFuPlxuICAgICAgPC9zbWFsbD5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuLWRvdCBidG4tZG90LS1kYW5nZXIgbS1sLWF1dG9cIlxuICAgICAgdGl0bGU9XCJ7eyAnSW52YWxpZCBlbnRyaWVzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICBbcG9wb3Zlcl09XCInU29tZSBlbnRyaWVzIGFyZSBpbnZhbGlkLiBDaGVjayB0aGUgcmVxdWlyZWQgaW5wdXQgZmllbGRzLicgfCB0cmFuc2xhdGVcIlxuICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAqbmdJZj1cIih2YWxpZCQgfCBhc3luYykgPT09IGZhbHNlICYmIGxpLmNvbGxhcHNlZFwiXG4gICAgICBbb3V0c2lkZUNsaWNrXT1cInRydWVcIlxuICAgID5cbiAgICAgIDxpIGM4eUljb249XCJleGNsYW1hdGlvbi1jaXJjbGVcIj48L2k+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxjOHktbGktYWN0aW9uXG4gICAgW2ljb25dPVwiJ21pbnVzLWNpcmNsZSdcIlxuICAgICpuZ0lmPVwib3B0aW9uVG9SZW1vdmVcIlxuICAgIFtsYWJlbF09XCInUmVtb3ZlIGZyb20gbGlzdCcgfCB0cmFuc2xhdGVcIlxuICAgIChjbGljayk9XCJyZW1vdmUoKVwiXG4gID48L2M4eS1saS1hY3Rpb24+XG4gIDxjOHktbGktY29sbGFwc2UgKm5nSWY9XCJhbGxvd0l0ZW1FZGl0XCI+XG4gICAgPGRpdiBjbGFzcz1cImRhdGEtcG9pbnQtZGV0YWlsc1wiPlxuICAgICAgPGM4eS1hbGFybS1ldmVudC1hdHRyaWJ1dGVzLWZvcm1cbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGV0YWlsc1wiXG4gICAgICAgIFt0aW1lbGluZVR5cGVdPVwidGltZWxpbmVUeXBlXCJcbiAgICAgICAgW29taXRQcm9wZXJ0aWVzXT1cIm9taXRQcm9wZXJ0aWVzXCJcbiAgICAgID48L2M4eS1hbGFybS1ldmVudC1hdHRyaWJ1dGVzLWZvcm0+XG4gICAgPC9kaXY+XG4gIDwvYzh5LWxpLWNvbGxhcHNlPlxuPC9jOHktbGk+XG4iXX0=