@c8y/ngx-components 1021.55.2 → 1021.56.4

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 (229) hide show
  1. package/context-dashboard/context-dashboard.model.d.ts +22 -22
  2. package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
  3. package/core/common/interval-based-reload.abstract.d.ts +13 -3
  4. package/core/common/interval-based-reload.abstract.d.ts.map +1 -1
  5. package/core/dashboard/dashboard.model.d.ts +3 -1
  6. package/core/dashboard/dashboard.model.d.ts.map +1 -1
  7. package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts +3 -4
  8. package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts.map +1 -1
  9. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts +1 -0
  10. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts.map +1 -1
  11. package/core/dashboard/widgets-dashboard-event.service.d.ts +7 -0
  12. package/core/dashboard/widgets-dashboard-event.service.d.ts.map +1 -1
  13. package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts +6 -2
  14. package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts.map +1 -1
  15. package/core/dynamic-component/dynamic-component.model.d.ts +15 -1
  16. package/core/dynamic-component/dynamic-component.model.d.ts.map +1 -1
  17. package/core/login/login.component.d.ts.map +1 -1
  18. package/core/login/login.model.d.ts +8 -0
  19. package/core/login/login.model.d.ts.map +1 -1
  20. package/core/login/login.service.d.ts +2 -1
  21. package/core/login/login.service.d.ts.map +1 -1
  22. package/datapoint-selector/datapoint-selection.model.d.ts +18 -18
  23. package/datapoint-selector/datapoint-selection.model.d.ts.map +1 -1
  24. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -1
  25. package/datapoints-export-selector/datapoints-export-selector.component.d.ts +3 -1
  26. package/datapoints-export-selector/datapoints-export-selector.component.d.ts.map +1 -1
  27. package/ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.d.ts +5 -1
  28. package/ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.d.ts.map +1 -1
  29. package/esm2022/context-dashboard/context-dashboard.model.mjs +1 -1
  30. package/esm2022/core/aggregation/aggregation.model.mjs +2 -2
  31. package/esm2022/core/common/interval-based-reload.abstract.mjs +13 -13
  32. package/esm2022/core/dashboard/dashboard-child.component.mjs +3 -3
  33. package/esm2022/core/dashboard/dashboard.model.mjs +1 -1
  34. package/esm2022/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.mjs +6 -8
  35. package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.mjs +9 -1
  36. package/esm2022/core/dashboard/widgets-dashboard-event.service.mjs +19 -2
  37. package/esm2022/core/dashboard/widgets-dashboard.component.mjs +3 -3
  38. package/esm2022/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.mjs +3 -3
  39. package/esm2022/core/dashboard/wiget-time-context/widget-time-context.component.mjs +48 -23
  40. package/esm2022/core/dynamic-component/dynamic-component.model.mjs +1 -1
  41. package/esm2022/core/login/login.component.mjs +4 -4
  42. package/esm2022/core/login/login.model.mjs +1 -1
  43. package/esm2022/core/login/login.service.mjs +7 -3
  44. package/esm2022/datapoint-explorer/view/datapoint-explorer.component.mjs +2 -2
  45. package/esm2022/datapoint-selector/datapoint-selection.model.mjs +1 -1
  46. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.mjs +1 -3
  47. package/esm2022/datapoints-export-selector/datapoints-export-selector.component.mjs +9 -5
  48. package/esm2022/ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.mjs +23 -9
  49. package/esm2022/map/map.model.mjs +1 -1
  50. package/esm2022/widgets/definitions/alarms/alarm-list/index.mjs +2 -1
  51. package/esm2022/widgets/definitions/alarms/all-critical-alarms/index.mjs +2 -1
  52. package/esm2022/widgets/definitions/alarms/recent-alarms/index.mjs +2 -1
  53. package/esm2022/widgets/definitions/applications/index.mjs +1 -1
  54. package/esm2022/widgets/definitions/asset-notes/index.mjs +2 -1
  55. package/esm2022/widgets/definitions/cockpit-legacy-welcome/index.mjs +1 -1
  56. package/esm2022/widgets/definitions/cockpit-welcome/index.mjs +1 -1
  57. package/esm2022/widgets/definitions/datapoints-graph/index.mjs +1 -1
  58. package/esm2022/widgets/definitions/datapoints-table/index.mjs +6 -4
  59. package/esm2022/widgets/definitions/device-control-message/index.mjs +2 -1
  60. package/esm2022/widgets/definitions/device-management-welcome/index.mjs +1 -1
  61. package/esm2022/widgets/definitions/help-and-service/index.mjs +1 -1
  62. package/esm2022/widgets/definitions/image/index.mjs +2 -1
  63. package/esm2022/widgets/definitions/info-gauge/index.mjs +2 -1
  64. package/esm2022/widgets/definitions/kpi/index.mjs +2 -1
  65. package/esm2022/widgets/definitions/linear-gauge/index.mjs +4 -3
  66. package/esm2022/widgets/definitions/map/index.mjs +2 -1
  67. package/esm2022/widgets/definitions/markdown/index.mjs +2 -1
  68. package/esm2022/widgets/definitions/silo/index.mjs +4 -3
  69. package/esm2022/widgets/definitions/three-d-rotation/index.mjs +2 -1
  70. package/esm2022/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.mjs +3 -3
  71. package/esm2022/widgets/implementations/alarms/alarm-list-widget.model.mjs +1 -1
  72. package/esm2022/widgets/implementations/alarms/alarm-widget-alarms-reload.component.mjs +17 -100
  73. package/esm2022/widgets/implementations/asset-notes/asset-notes-widget.component.mjs +1 -1
  74. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.mjs +47 -34
  75. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.mjs +35 -13
  76. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.mjs +3 -3
  77. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.mjs +75 -35
  78. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-widget.model.mjs +3 -5
  79. package/esm2022/widgets/implementations/device-control-message/device-control-message-widget-view/device-control-message-widget-view.component.mjs +1 -1
  80. package/esm2022/widgets/implementations/info-gauge/index.mjs +2 -1
  81. package/esm2022/widgets/implementations/info-gauge/info-gauge-widget-config/info-gauge-widget-config.component.mjs +1 -1
  82. package/esm2022/widgets/implementations/info-gauge/info-gauge-widget-view/info-gauge-widget-view.component.mjs +1 -1
  83. package/esm2022/widgets/implementations/info-gauge/info-gauge.model.mjs +2 -0
  84. package/esm2022/widgets/implementations/kpi/kpi-widget.model.mjs +1 -1
  85. package/esm2022/widgets/implementations/linear-gauge/index.mjs +2 -1
  86. package/esm2022/widgets/implementations/linear-gauge/linear-gauge-widget-config/linear-gauge-widget-config.component.mjs +1 -1
  87. package/esm2022/widgets/implementations/linear-gauge/linear-gauge-widget-view/linear-gauge-widget-view.component.mjs +1 -1
  88. package/esm2022/widgets/implementations/linear-gauge/linear-gauge.model.mjs +2 -0
  89. package/esm2022/widgets/implementations/map/map-widget.model.mjs +1 -1
  90. package/esm2022/widgets/implementations/markdown/markdown-widget.model.mjs +1 -1
  91. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  92. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +1 -1
  93. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  94. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  95. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +7 -6
  96. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
  97. package/fesm2022/c8y-ngx-components-ecosystem.mjs +16 -4
  98. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  99. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  100. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +1 -0
  101. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
  102. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs +1 -0
  103. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
  104. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs +1 -0
  105. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
  106. package/fesm2022/c8y-ngx-components-widgets-definitions-applications.mjs.map +1 -1
  107. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs +1 -0
  108. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs.map +1 -1
  109. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-legacy-welcome.mjs.map +1 -1
  110. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-welcome.mjs.map +1 -1
  111. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
  112. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +5 -3
  113. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -1
  114. package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs +1 -0
  115. package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs.map +1 -1
  116. package/fesm2022/c8y-ngx-components-widgets-definitions-device-management-welcome.mjs.map +1 -1
  117. package/fesm2022/c8y-ngx-components-widgets-definitions-help-and-service.mjs.map +1 -1
  118. package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs +1 -0
  119. package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs.map +1 -1
  120. package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs +1 -0
  121. package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs.map +1 -1
  122. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs +1 -0
  123. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs.map +1 -1
  124. package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs +3 -2
  125. package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs.map +1 -1
  126. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs +1 -0
  127. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
  128. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs +1 -0
  129. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs.map +1 -1
  130. package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs +3 -2
  131. package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs.map +1 -1
  132. package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs +1 -0
  133. package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs.map +1 -1
  134. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +18 -101
  135. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  136. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs.map +1 -1
  137. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +147 -76
  138. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  139. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs.map +1 -1
  140. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
  141. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs.map +1 -1
  142. package/fesm2022/c8y-ngx-components.mjs +218 -167
  143. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  144. package/locales/locales.pot +7 -8
  145. package/map/map.model.d.ts +1 -1
  146. package/map/map.model.d.ts.map +1 -1
  147. package/package.json +1 -1
  148. package/widgets/cockpit/index.d.ts +327 -17
  149. package/widgets/cockpit/index.d.ts.map +1 -1
  150. package/widgets/definitions/alarms/alarm-list/index.d.ts +25 -2
  151. package/widgets/definitions/alarms/alarm-list/index.d.ts.map +1 -1
  152. package/widgets/definitions/alarms/all-critical-alarms/index.d.ts +24 -2
  153. package/widgets/definitions/alarms/all-critical-alarms/index.d.ts.map +1 -1
  154. package/widgets/definitions/alarms/recent-alarms/index.d.ts +24 -2
  155. package/widgets/definitions/alarms/recent-alarms/index.d.ts.map +1 -1
  156. package/widgets/definitions/applications/index.d.ts +11 -2
  157. package/widgets/definitions/applications/index.d.ts.map +1 -1
  158. package/widgets/definitions/asset-notes/index.d.ts +18 -2
  159. package/widgets/definitions/asset-notes/index.d.ts.map +1 -1
  160. package/widgets/definitions/cockpit-legacy-welcome/index.d.ts +11 -2
  161. package/widgets/definitions/cockpit-legacy-welcome/index.d.ts.map +1 -1
  162. package/widgets/definitions/cockpit-welcome/index.d.ts +15 -2
  163. package/widgets/definitions/cockpit-welcome/index.d.ts.map +1 -1
  164. package/widgets/definitions/datapoints-graph/index.d.ts +16 -2
  165. package/widgets/definitions/datapoints-graph/index.d.ts.map +1 -1
  166. package/widgets/definitions/datapoints-table/index.d.ts +26 -2
  167. package/widgets/definitions/datapoints-table/index.d.ts.map +1 -1
  168. package/widgets/definitions/device-control-message/index.d.ts +18 -2
  169. package/widgets/definitions/device-control-message/index.d.ts.map +1 -1
  170. package/widgets/definitions/device-management-welcome/index.d.ts +15 -2
  171. package/widgets/definitions/device-management-welcome/index.d.ts.map +1 -1
  172. package/widgets/definitions/help-and-service/index.d.ts +15 -2
  173. package/widgets/definitions/help-and-service/index.d.ts.map +1 -1
  174. package/widgets/definitions/image/index.d.ts +19 -2
  175. package/widgets/definitions/image/index.d.ts.map +1 -1
  176. package/widgets/definitions/info-gauge/index.d.ts +19 -2
  177. package/widgets/definitions/info-gauge/index.d.ts.map +1 -1
  178. package/widgets/definitions/kpi/index.d.ts +19 -2
  179. package/widgets/definitions/kpi/index.d.ts.map +1 -1
  180. package/widgets/definitions/linear-gauge/index.d.ts +19 -2
  181. package/widgets/definitions/linear-gauge/index.d.ts.map +1 -1
  182. package/widgets/definitions/map/index.d.ts +25 -2
  183. package/widgets/definitions/map/index.d.ts.map +1 -1
  184. package/widgets/definitions/markdown/index.d.ts +19 -2
  185. package/widgets/definitions/markdown/index.d.ts.map +1 -1
  186. package/widgets/definitions/silo/index.d.ts +19 -2
  187. package/widgets/definitions/silo/index.d.ts.map +1 -1
  188. package/widgets/definitions/three-d-rotation/index.d.ts +19 -2
  189. package/widgets/definitions/three-d-rotation/index.d.ts.map +1 -1
  190. package/widgets/device-management/index.d.ts +15 -1
  191. package/widgets/device-management/index.d.ts.map +1 -1
  192. package/widgets/implementations/alarms/alarm-list-widget.model.d.ts +4 -0
  193. package/widgets/implementations/alarms/alarm-list-widget.model.d.ts.map +1 -1
  194. package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts +18 -63
  195. package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts.map +1 -1
  196. package/widgets/implementations/asset-notes/asset-notes-widget.component.d.ts +4 -3
  197. package/widgets/implementations/asset-notes/asset-notes-widget.component.d.ts.map +1 -1
  198. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts +4 -2
  199. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts.map +1 -1
  200. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts +16 -8
  201. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts.map +1 -1
  202. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts +21 -4
  203. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -1
  204. package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts +8 -4
  205. package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts.map +1 -1
  206. package/widgets/implementations/device-control-message/device-control-message-widget-view/device-control-message-widget-view.component.d.ts +4 -3
  207. package/widgets/implementations/device-control-message/device-control-message-widget-view/device-control-message-widget-view.component.d.ts.map +1 -1
  208. package/widgets/implementations/info-gauge/index.d.ts +1 -0
  209. package/widgets/implementations/info-gauge/index.d.ts.map +1 -1
  210. package/widgets/implementations/info-gauge/info-gauge-widget-config/info-gauge-widget-config.component.d.ts +3 -6
  211. package/widgets/implementations/info-gauge/info-gauge-widget-config/info-gauge-widget-config.component.d.ts.map +1 -1
  212. package/widgets/implementations/info-gauge/info-gauge-widget-view/info-gauge-widget-view.component.d.ts +2 -5
  213. package/widgets/implementations/info-gauge/info-gauge-widget-view/info-gauge-widget-view.component.d.ts.map +1 -1
  214. package/widgets/implementations/info-gauge/info-gauge.model.d.ts +7 -0
  215. package/widgets/implementations/info-gauge/info-gauge.model.d.ts.map +1 -0
  216. package/widgets/implementations/kpi/kpi-widget.model.d.ts +6 -6
  217. package/widgets/implementations/kpi/kpi-widget.model.d.ts.map +1 -1
  218. package/widgets/implementations/linear-gauge/index.d.ts +1 -0
  219. package/widgets/implementations/linear-gauge/index.d.ts.map +1 -1
  220. package/widgets/implementations/linear-gauge/linear-gauge-widget-config/linear-gauge-widget-config.component.d.ts +3 -5
  221. package/widgets/implementations/linear-gauge/linear-gauge-widget-config/linear-gauge-widget-config.component.d.ts.map +1 -1
  222. package/widgets/implementations/linear-gauge/linear-gauge-widget-view/linear-gauge-widget-view.component.d.ts +2 -6
  223. package/widgets/implementations/linear-gauge/linear-gauge-widget-view/linear-gauge-widget-view.component.d.ts.map +1 -1
  224. package/widgets/implementations/linear-gauge/linear-gauge.model.d.ts +7 -0
  225. package/widgets/implementations/linear-gauge/linear-gauge.model.d.ts.map +1 -0
  226. package/widgets/implementations/map/map-widget.model.d.ts +5 -0
  227. package/widgets/implementations/map/map-widget.model.d.ts.map +1 -1
  228. package/widgets/implementations/markdown/markdown-widget.model.d.ts +2 -2
  229. package/widgets/implementations/markdown/markdown-widget.model.d.ts.map +1 -1
@@ -1,4 +1,4 @@
1
- import { DynamicComponentErrorStrategy, DynamicDatapointsResolver, gettext, hookComponent } from '@c8y/ngx-components';
1
+ import { DynamicComponentErrorStrategy, DynamicDatapointsResolver, gettext, hookWidget } from '@c8y/ngx-components';
2
2
  import { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';
3
3
  export const siloWidgetDefinition = {
4
4
  id: defaultWidgetIds.SILO,
@@ -12,6 +12,7 @@ export const siloWidgetDefinition = {
12
12
  },
13
13
  errorStrategy: DynamicComponentErrorStrategy.OVERLAY_ERROR,
14
14
  data: {
15
+ schema: () => import('c8y-schema-loader?interfaceName=LinearGaugeWidgetConfig!@c8y/ngx-components/widgets/implementations/linear-gauge'),
15
16
  settings: {
16
17
  noNewWidgets: false,
17
18
  widgetDefaults: {
@@ -27,5 +28,5 @@ export const siloWidgetDefinition = {
27
28
  }
28
29
  }
29
30
  };
30
- export const siloWidgetProviders = [hookComponent(siloWidgetDefinition)];
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi93aWRnZXRzL2RlZmluaXRpb25zL3NpbG8vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUNMLDZCQUE2QixFQUM3Qix5QkFBeUIsRUFDekIsT0FBTyxFQUNQLGFBQWEsRUFDZCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRTNFLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJO0lBQ3pCLEtBQUssRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQ3RCLFdBQVcsRUFBRSxPQUFPLENBQUMsNERBQTRELENBQUM7SUFDbEYsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUNsQixNQUFNLENBQUMsMERBQTBELENBQUMsQ0FBQyxJQUFJLENBQ3JFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUN0QztJQUNILG1CQUFtQixFQUFFLEdBQUcsRUFBRSxDQUN4QixNQUFNLENBQUMsMERBQTBELENBQUMsQ0FBQyxJQUFJLENBQ3JFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUN4QztJQUNILFlBQVksRUFBRSxxQ0FBcUM7SUFDbkQsT0FBTyxFQUFFO1FBQ1AsVUFBVSxFQUFFLHlCQUF5QjtLQUN0QztJQUNELGFBQWEsRUFBRSw2QkFBNkIsQ0FBQyxhQUFhO0lBQzFELElBQUksRUFBRTtRQUNKLFFBQVEsRUFBRTtZQUNSLFlBQVksRUFBRSxLQUFLO1lBQ25CLGNBQWMsRUFBRTtnQkFDZCxNQUFNLEVBQUUsQ0FBQztnQkFDVCxPQUFPLEVBQUUsQ0FBQzthQUNYO1lBQ0QsR0FBRyxFQUFFO2dCQUNILE9BQU8sRUFBRTtvQkFDUCxjQUFjLEVBQUUsSUFBSTtvQkFDcEIsZ0JBQWdCLEVBQUUsS0FBSztpQkFDeEI7YUFDRjtTQUNGO0tBQ3FCO0NBQ1ksQ0FBQztBQUV2QyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbnRleHRXaWRnZXRDb25maWcgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2NvbnRleHQtZGFzaGJvYXJkJztcbmltcG9ydCB0eXBlIHsgRHluYW1pY0NvbXBvbmVudERlZmluaXRpb24gfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIER5bmFtaWNDb21wb25lbnRFcnJvclN0cmF0ZWd5LFxuICBEeW5hbWljRGF0YXBvaW50c1Jlc29sdmVyLFxuICBnZXR0ZXh0LFxuICBob29rQ29tcG9uZW50XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgZGVmYXVsdFdpZGdldElkcyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvd2lkZ2V0cy9kZWZpbml0aW9ucyc7XG5cbmV4cG9ydCBjb25zdCBzaWxvV2lkZ2V0RGVmaW5pdGlvbiA9IHtcbiAgaWQ6IGRlZmF1bHRXaWRnZXRJZHMuU0lMTyxcbiAgbGFiZWw6IGdldHRleHQoJ1NpbG8nKSxcbiAgZGVzY3JpcHRpb246IGdldHRleHQoJ0Egc2lsbyBkaXNwbGF5aW5nIGN1cnJlbnQgdmFsdWVzIGZvciBzZWxlY3RlZCBtZWFzdXJlbWVudHMnKSxcbiAgbG9hZENvbXBvbmVudDogKCkgPT5cbiAgICBpbXBvcnQoJ0BjOHkvbmd4LWNvbXBvbmVudHMvd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvbGluZWFyLWdhdWdlJykudGhlbihcbiAgICAgIG0gPT4gbS5MaW5lYXJHYXVnZVdpZGdldFZpZXdDb21wb25lbnRcbiAgICApLFxuICBsb2FkQ29uZmlnQ29tcG9uZW50OiAoKSA9PlxuICAgIGltcG9ydCgnQGM4eS9uZ3gtY29tcG9uZW50cy93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9saW5lYXItZ2F1Z2UnKS50aGVuKFxuICAgICAgbSA9PiBtLkxpbmVhckdhdWdlV2lkZ2V0Q29uZmlnQ29tcG9uZW50XG4gICAgKSxcbiAgcHJldmlld0ltYWdlOiAnYzh5LXN0eWxlLWFzc2V0cy9zaWxvLXdpZGdldC1wci5wbmcnLFxuICByZXNvbHZlOiB7XG4gICAgZGF0YXBvaW50czogRHluYW1pY0RhdGFwb2ludHNSZXNvbHZlclxuICB9LFxuICBlcnJvclN0cmF0ZWd5OiBEeW5hbWljQ29tcG9uZW50RXJyb3JTdHJhdGVneS5PVkVSTEFZX0VSUk9SLFxuICBkYXRhOiB7XG4gICAgc2V0dGluZ3M6IHtcbiAgICAgIG5vTmV3V2lkZ2V0czogZmFsc2UsXG4gICAgICB3aWRnZXREZWZhdWx0czoge1xuICAgICAgICBfd2lkdGg6IDQsXG4gICAgICAgIF9oZWlnaHQ6IDRcbiAgICAgIH0sXG4gICAgICBuZzE6IHtcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIG5vRGV2aWNlVGFyZ2V0OiB0cnVlLFxuICAgICAgICAgIGdyb3Vwc1NlbGVjdGFibGU6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gYXMgQ29udGV4dFdpZGdldENvbmZpZ1xufSBzYXRpc2ZpZXMgRHluYW1pY0NvbXBvbmVudERlZmluaXRpb247XG5cbmV4cG9ydCBjb25zdCBzaWxvV2lkZ2V0UHJvdmlkZXJzID0gW2hvb2tDb21wb25lbnQoc2lsb1dpZGdldERlZmluaXRpb24pXTtcbiJdfQ==
31
+ export const siloWidgetProviders = [hookWidget(siloWidgetDefinition)];
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi93aWRnZXRzL2RlZmluaXRpb25zL3NpbG8vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLDZCQUE2QixFQUM3Qix5QkFBeUIsRUFDekIsT0FBTyxFQUNQLFVBQVUsRUFDWCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRTNFLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJO0lBQ3pCLEtBQUssRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQ3RCLFdBQVcsRUFBRSxPQUFPLENBQUMsNERBQTRELENBQUM7SUFDbEYsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUNsQixNQUFNLENBQUMsMERBQTBELENBQUMsQ0FBQyxJQUFJLENBQ3JFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUN0QztJQUNILG1CQUFtQixFQUFFLEdBQUcsRUFBRSxDQUN4QixNQUFNLENBQUMsMERBQTBELENBQUMsQ0FBQyxJQUFJLENBQ3JFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUN4QztJQUNILFlBQVksRUFBRSxxQ0FBcUM7SUFDbkQsT0FBTyxFQUFFO1FBQ1AsVUFBVSxFQUFFLHlCQUF5QjtLQUN0QztJQUNELGFBQWEsRUFBRSw2QkFBNkIsQ0FBQyxhQUFhO0lBQzFELElBQUksRUFBRTtRQUNKLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FDWCxNQUFNLENBQ0osa0hBQWtILENBQ25IO1FBQ0gsUUFBUSxFQUFFO1lBQ1IsWUFBWSxFQUFFLEtBQUs7WUFDbkIsY0FBYyxFQUFFO2dCQUNkLE1BQU0sRUFBRSxDQUFDO2dCQUNULE9BQU8sRUFBRSxDQUFDO2FBQ1g7WUFDRCxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxFQUFFO29CQUNQLGNBQWMsRUFBRSxJQUFJO29CQUNwQixnQkFBZ0IsRUFBRSxLQUFLO2lCQUN4QjthQUNGO1NBQ0Y7S0FDRjtDQUNnQyxDQUFDO0FBRXBDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRHluYW1pY1dpZGdldERlZmluaXRpb24gfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIER5bmFtaWNDb21wb25lbnRFcnJvclN0cmF0ZWd5LFxuICBEeW5hbWljRGF0YXBvaW50c1Jlc29sdmVyLFxuICBnZXR0ZXh0LFxuICBob29rV2lkZ2V0XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgZGVmYXVsdFdpZGdldElkcyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvd2lkZ2V0cy9kZWZpbml0aW9ucyc7XG5cbmV4cG9ydCBjb25zdCBzaWxvV2lkZ2V0RGVmaW5pdGlvbiA9IHtcbiAgaWQ6IGRlZmF1bHRXaWRnZXRJZHMuU0lMTyxcbiAgbGFiZWw6IGdldHRleHQoJ1NpbG8nKSxcbiAgZGVzY3JpcHRpb246IGdldHRleHQoJ0Egc2lsbyBkaXNwbGF5aW5nIGN1cnJlbnQgdmFsdWVzIGZvciBzZWxlY3RlZCBtZWFzdXJlbWVudHMnKSxcbiAgbG9hZENvbXBvbmVudDogKCkgPT5cbiAgICBpbXBvcnQoJ0BjOHkvbmd4LWNvbXBvbmVudHMvd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvbGluZWFyLWdhdWdlJykudGhlbihcbiAgICAgIG0gPT4gbS5MaW5lYXJHYXVnZVdpZGdldFZpZXdDb21wb25lbnRcbiAgICApLFxuICBsb2FkQ29uZmlnQ29tcG9uZW50OiAoKSA9PlxuICAgIGltcG9ydCgnQGM4eS9uZ3gtY29tcG9uZW50cy93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9saW5lYXItZ2F1Z2UnKS50aGVuKFxuICAgICAgbSA9PiBtLkxpbmVhckdhdWdlV2lkZ2V0Q29uZmlnQ29tcG9uZW50XG4gICAgKSxcbiAgcHJldmlld0ltYWdlOiAnYzh5LXN0eWxlLWFzc2V0cy9zaWxvLXdpZGdldC1wci5wbmcnLFxuICByZXNvbHZlOiB7XG4gICAgZGF0YXBvaW50czogRHluYW1pY0RhdGFwb2ludHNSZXNvbHZlclxuICB9LFxuICBlcnJvclN0cmF0ZWd5OiBEeW5hbWljQ29tcG9uZW50RXJyb3JTdHJhdGVneS5PVkVSTEFZX0VSUk9SLFxuICBkYXRhOiB7XG4gICAgc2NoZW1hOiAoKSA9PlxuICAgICAgaW1wb3J0KFxuICAgICAgICAnYzh5LXNjaGVtYS1sb2FkZXI/aW50ZXJmYWNlTmFtZT1MaW5lYXJHYXVnZVdpZGdldENvbmZpZyFAYzh5L25neC1jb21wb25lbnRzL3dpZGdldHMvaW1wbGVtZW50YXRpb25zL2xpbmVhci1nYXVnZSdcbiAgICAgICksXG4gICAgc2V0dGluZ3M6IHtcbiAgICAgIG5vTmV3V2lkZ2V0czogZmFsc2UsXG4gICAgICB3aWRnZXREZWZhdWx0czoge1xuICAgICAgICBfd2lkdGg6IDQsXG4gICAgICAgIF9oZWlnaHQ6IDRcbiAgICAgIH0sXG4gICAgICBuZzE6IHtcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIG5vRGV2aWNlVGFyZ2V0OiB0cnVlLFxuICAgICAgICAgIGdyb3Vwc1NlbGVjdGFibGU6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn0gc2F0aXNmaWVzIER5bmFtaWNXaWRnZXREZWZpbml0aW9uO1xuXG5leHBvcnQgY29uc3Qgc2lsb1dpZGdldFByb3ZpZGVycyA9IFtob29rV2lkZ2V0KHNpbG9XaWRnZXREZWZpbml0aW9uKV07XG4iXX0=
@@ -8,6 +8,7 @@ export const threeDRotationWidgetDefinition = {
8
8
  loadConfigComponent: () => import('@c8y/ngx-components/widgets/implementations/three-d-rotation').then(m => m.ThreeDRotationWidgetConfigComponent),
9
9
  previewImage: 'c8y-style-assets/rotation-widget-pr.png',
10
10
  data: {
11
+ schema: () => import('c8y-schema-loader?interfaceName=ThreeDRotationWidgetConfig!@c8y/ngx-components/widgets/implementations/three-d-rotation'),
11
12
  settings: {
12
13
  noNewWidgets: false,
13
14
  widgetDefaults: {
@@ -24,4 +25,4 @@ export const threeDRotationWidgetDefinition = {
24
25
  }
25
26
  };
26
27
  export const threeDRotationWidgetProviders = [hookWidget(threeDRotationWidgetDefinition)];
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi93aWRnZXRzL2RlZmluaXRpb25zL3RocmVlLWQtcm90YXRpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUUzRSxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRztJQUM1QyxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsZ0JBQWdCO0lBQ3JDLEtBQUssRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUM7SUFDakMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxxQ0FBcUMsQ0FBQztJQUMzRCxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQ2xCLE1BQU0sQ0FBQyw4REFBOEQsQ0FBQyxDQUFDLElBQUksQ0FDekUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUNBQWlDLENBQ3pDO0lBQ0gsbUJBQW1CLEVBQUUsR0FBRyxFQUFFLENBQ3hCLE1BQU0sQ0FBQyw4REFBOEQsQ0FBQyxDQUFDLElBQUksQ0FDekUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUNBQW1DLENBQzNDO0lBQ0gsWUFBWSxFQUFFLHlDQUF5QztJQUN2RCxJQUFJLEVBQUU7UUFDSixRQUFRLEVBQUU7WUFDUixZQUFZLEVBQUUsS0FBSztZQUNuQixjQUFjLEVBQUU7Z0JBQ2QsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsT0FBTyxFQUFFLENBQUM7YUFDWDtZQUNELEdBQUcsRUFBRTtnQkFDSCxPQUFPLEVBQUU7b0JBQ1AsY0FBYyxFQUFFLEtBQUs7b0JBQ3JCLGdCQUFnQixFQUFFLEtBQUs7aUJBQ3hCO2FBQ0Y7U0FDRjtLQUNxQjtDQUNTLENBQUM7QUFFcEMsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb250ZXh0V2lkZ2V0Q29uZmlnIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9jb250ZXh0LWRhc2hib2FyZCc7XG5pbXBvcnQgdHlwZSB7IER5bmFtaWNXaWRnZXREZWZpbml0aW9uIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBnZXR0ZXh0LCBob29rV2lkZ2V0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBkZWZhdWx0V2lkZ2V0SWRzIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy93aWRnZXRzL2RlZmluaXRpb25zJztcblxuZXhwb3J0IGNvbnN0IHRocmVlRFJvdGF0aW9uV2lkZ2V0RGVmaW5pdGlvbiA9IHtcbiAgaWQ6IGRlZmF1bHRXaWRnZXRJZHMuVEhSRUVfRF9ST1RBVElPTixcbiAgbGFiZWw6IGdldHRleHQoJ1JvdGF0aW9uIHdpZGdldCcpLFxuICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnRGlzcGxheXMgY3VycmVudCBkZXZpY2Ugb3JpZW50YXRpb24nKSxcbiAgbG9hZENvbXBvbmVudDogKCkgPT5cbiAgICBpbXBvcnQoJ0BjOHkvbmd4LWNvbXBvbmVudHMvd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvdGhyZWUtZC1yb3RhdGlvbicpLnRoZW4oXG4gICAgICBtID0+IG0uVGhyZWVEUm90YXRpb25XaWRnZXRWaWV3Q29tcG9uZW50XG4gICAgKSxcbiAgbG9hZENvbmZpZ0NvbXBvbmVudDogKCkgPT5cbiAgICBpbXBvcnQoJ0BjOHkvbmd4LWNvbXBvbmVudHMvd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvdGhyZWUtZC1yb3RhdGlvbicpLnRoZW4oXG4gICAgICBtID0+IG0uVGhyZWVEUm90YXRpb25XaWRnZXRDb25maWdDb21wb25lbnRcbiAgICApLFxuICBwcmV2aWV3SW1hZ2U6ICdjOHktc3R5bGUtYXNzZXRzL3JvdGF0aW9uLXdpZGdldC1wci5wbmcnLFxuICBkYXRhOiB7XG4gICAgc2V0dGluZ3M6IHtcbiAgICAgIG5vTmV3V2lkZ2V0czogZmFsc2UsXG4gICAgICB3aWRnZXREZWZhdWx0czoge1xuICAgICAgICBfd2lkdGg6IDgsXG4gICAgICAgIF9oZWlnaHQ6IDRcbiAgICAgIH0sXG4gICAgICBuZzE6IHtcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIG5vRGV2aWNlVGFyZ2V0OiBmYWxzZSxcbiAgICAgICAgICBncm91cHNTZWxlY3RhYmxlOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGFzIENvbnRleHRXaWRnZXRDb25maWdcbn0gc2F0aXNmaWVzIER5bmFtaWNXaWRnZXREZWZpbml0aW9uO1xuXG5leHBvcnQgY29uc3QgdGhyZWVEUm90YXRpb25XaWRnZXRQcm92aWRlcnMgPSBbaG9va1dpZGdldCh0aHJlZURSb3RhdGlvbldpZGdldERlZmluaXRpb24pXTtcbiJdfQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi93aWRnZXRzL2RlZmluaXRpb25zL3RocmVlLWQtcm90YXRpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUUzRSxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRztJQUM1QyxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsZ0JBQWdCO0lBQ3JDLEtBQUssRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUM7SUFDakMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxxQ0FBcUMsQ0FBQztJQUMzRCxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQ2xCLE1BQU0sQ0FBQyw4REFBOEQsQ0FBQyxDQUFDLElBQUksQ0FDekUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUNBQWlDLENBQ3pDO0lBQ0gsbUJBQW1CLEVBQUUsR0FBRyxFQUFFLENBQ3hCLE1BQU0sQ0FBQyw4REFBOEQsQ0FBQyxDQUFDLElBQUksQ0FDekUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUNBQW1DLENBQzNDO0lBQ0gsWUFBWSxFQUFFLHlDQUF5QztJQUN2RCxJQUFJLEVBQUU7UUFDSixNQUFNLEVBQUUsR0FBRyxFQUFFLENBQ1gsTUFBTSxDQUNKLHlIQUF5SCxDQUMxSDtRQUNILFFBQVEsRUFBRTtZQUNSLFlBQVksRUFBRSxLQUFLO1lBQ25CLGNBQWMsRUFBRTtnQkFDZCxNQUFNLEVBQUUsQ0FBQztnQkFDVCxPQUFPLEVBQUUsQ0FBQzthQUNYO1lBQ0QsR0FBRyxFQUFFO2dCQUNILE9BQU8sRUFBRTtvQkFDUCxjQUFjLEVBQUUsS0FBSztvQkFDckIsZ0JBQWdCLEVBQUUsS0FBSztpQkFDeEI7YUFDRjtTQUNGO0tBQ0Y7Q0FDZ0MsQ0FBQztBQUVwQyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxDQUFDLFVBQVUsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IER5bmFtaWNXaWRnZXREZWZpbml0aW9uIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBnZXR0ZXh0LCBob29rV2lkZ2V0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBkZWZhdWx0V2lkZ2V0SWRzIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy93aWRnZXRzL2RlZmluaXRpb25zJztcblxuZXhwb3J0IGNvbnN0IHRocmVlRFJvdGF0aW9uV2lkZ2V0RGVmaW5pdGlvbiA9IHtcbiAgaWQ6IGRlZmF1bHRXaWRnZXRJZHMuVEhSRUVfRF9ST1RBVElPTixcbiAgbGFiZWw6IGdldHRleHQoJ1JvdGF0aW9uIHdpZGdldCcpLFxuICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnRGlzcGxheXMgY3VycmVudCBkZXZpY2Ugb3JpZW50YXRpb24nKSxcbiAgbG9hZENvbXBvbmVudDogKCkgPT5cbiAgICBpbXBvcnQoJ0BjOHkvbmd4LWNvbXBvbmVudHMvd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvdGhyZWUtZC1yb3RhdGlvbicpLnRoZW4oXG4gICAgICBtID0+IG0uVGhyZWVEUm90YXRpb25XaWRnZXRWaWV3Q29tcG9uZW50XG4gICAgKSxcbiAgbG9hZENvbmZpZ0NvbXBvbmVudDogKCkgPT5cbiAgICBpbXBvcnQoJ0BjOHkvbmd4LWNvbXBvbmVudHMvd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvdGhyZWUtZC1yb3RhdGlvbicpLnRoZW4oXG4gICAgICBtID0+IG0uVGhyZWVEUm90YXRpb25XaWRnZXRDb25maWdDb21wb25lbnRcbiAgICApLFxuICBwcmV2aWV3SW1hZ2U6ICdjOHktc3R5bGUtYXNzZXRzL3JvdGF0aW9uLXdpZGdldC1wci5wbmcnLFxuICBkYXRhOiB7XG4gICAgc2NoZW1hOiAoKSA9PlxuICAgICAgaW1wb3J0KFxuICAgICAgICAnYzh5LXNjaGVtYS1sb2FkZXI/aW50ZXJmYWNlTmFtZT1UaHJlZURSb3RhdGlvbldpZGdldENvbmZpZyFAYzh5L25neC1jb21wb25lbnRzL3dpZGdldHMvaW1wbGVtZW50YXRpb25zL3RocmVlLWQtcm90YXRpb24nXG4gICAgICApLFxuICAgIHNldHRpbmdzOiB7XG4gICAgICBub05ld1dpZGdldHM6IGZhbHNlLFxuICAgICAgd2lkZ2V0RGVmYXVsdHM6IHtcbiAgICAgICAgX3dpZHRoOiA4LFxuICAgICAgICBfaGVpZ2h0OiA0XG4gICAgICB9LFxuICAgICAgbmcxOiB7XG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBub0RldmljZVRhcmdldDogZmFsc2UsXG4gICAgICAgICAgZ3JvdXBzU2VsZWN0YWJsZTogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSBzYXRpc2ZpZXMgRHluYW1pY1dpZGdldERlZmluaXRpb247XG5cbmV4cG9ydCBjb25zdCB0aHJlZURSb3RhdGlvbldpZGdldFByb3ZpZGVycyA9IFtob29rV2lkZ2V0KHRocmVlRFJvdGF0aW9uV2lkZ2V0RGVmaW5pdGlvbildO1xuIl19
@@ -226,15 +226,15 @@ export class AlarmListWidgetComponent {
226
226
  .subscribe();
227
227
  }
228
228
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlarmListWidgetComponent, deps: [{ token: i1.AlarmWidgetService }, { token: i2.AlarmRealtimeService }, { token: i3.AlarmService }, { token: i4.AlarmsViewService }, { token: i2.AlarmWithChildrenRealtimeService }, { token: i2.DashboardChildComponent }, { token: i2.AlertService }, { token: i2.WidgetGlobalAutoRefreshService }], target: i0.ɵɵFactoryTarget.Component }); }
229
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AlarmListWidgetComponent, selector: "c8y-alarm-list-widget", inputs: { config: "config" }, providers: [AlarmRealtimeService, AlarmWithChildrenRealtimeService], viewQueries: [{ propertyName: "alarmWidgetAlarmsReloadComp", first: true, predicate: AlarmWidgetAlarmsReloadComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<c8y-alarms-list\n #list\n [alarms]=\"alarms$ | async\"\n [navigationOptions]=\"{\n alwaysNavigateToAllAlarms: !config.device,\n allowNavigationToAlarmsView: true,\n includeClearedQueryParams: true,\n queryParamsHandling: ''\n }\"\n [isInitialLoading]=\"isLoading$ | async\"\n [hasPermissions]=\"!isDisabled\"\n>\n <c8y-alarms-date-filter\n *ngIf=\"config.displayDateSelection\"\n [updateQueryParams]=\"false\"\n [date]=\"this.config.dateFilter\"\n [DEFAULT_INTERVAL]=\"config.interval || 'none'\"\n (dateFilterChange)=\"onDateFilterChange($event)\"\n ></c8y-alarms-date-filter>\n <c8y-alarm-widget-alarms-reload\n class=\"d-contents\"\n [isIntervalRefresh]=\"isIntervalRefresh\"\n [refreshInterval]=\"refreshInterval\"\n [config]=\"config\"\n [isLoading]=\"isLoading$\"\n [isScrolling]=\"list.isScrolling\"\n [isDisabled]=\"isDisabled\"\n (onCountdownEnded)=\"fetchAlarms()\"\n (onRealTimeToggleChanged)=\"handleRealTimeToggleChange($event)\"\n ></c8y-alarm-widget-alarms-reload>\n</c8y-alarms-list>\n", dependencies: [{ kind: "component", type: i4.AlarmsListComponent, selector: "c8y-alarms-list", inputs: ["alarms", "hasPermissions", "typeFilters", "loadMoreMode", "navigationOptions", "isInitialLoading", "splitView"], outputs: ["onSelectedAlarm", "onScrollingStateChange"] }, { kind: "component", type: i4.AlarmsDateFilterComponent, selector: "c8y-alarms-date-filter", inputs: ["DEFAULT_INTERVAL", "updateQueryParams", "date"], outputs: ["dateFilterChange"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.AlarmWidgetAlarmsReloadComponent, selector: "c8y-alarm-widget-alarms-reload", inputs: ["isIntervalRefresh", "refreshInterval", "config", "isLoading", "isScrolling", "isDisabled"], outputs: ["onCountdownEnded", "onRealTimeToggleChanged"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] }); }
229
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AlarmListWidgetComponent, selector: "c8y-alarm-list-widget", inputs: { config: "config" }, providers: [AlarmRealtimeService, AlarmWithChildrenRealtimeService], viewQueries: [{ propertyName: "alarmWidgetAlarmsReloadComp", first: true, predicate: AlarmWidgetAlarmsReloadComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<c8y-alarms-list\n #list\n [alarms]=\"alarms$ | async\"\n [navigationOptions]=\"{\n alwaysNavigateToAllAlarms: !config.device,\n allowNavigationToAlarmsView: true,\n includeClearedQueryParams: true,\n queryParamsHandling: ''\n }\"\n [isInitialLoading]=\"isLoading$ | async\"\n [hasPermissions]=\"!isDisabled\"\n>\n <c8y-alarms-date-filter\n *ngIf=\"config.displayDateSelection\"\n [updateQueryParams]=\"false\"\n [date]=\"this.config.dateFilter\"\n [DEFAULT_INTERVAL]=\"config.interval || 'none'\"\n (dateFilterChange)=\"onDateFilterChange($event)\"\n ></c8y-alarms-date-filter>\n <c8y-alarm-widget-alarms-reload\n class=\"d-contents\"\n [isIntervalRefresh]=\"isIntervalRefresh\"\n [refreshInterval]=\"refreshInterval\"\n [config]=\"config\"\n [isLoading]=\"isLoading$\"\n [isScrolling]=\"list.isScrolling\"\n [isRefreshDisabled]=\"isDisabled\"\n (onCountdownEnded)=\"fetchAlarms()\"\n (onRealTimeToggleChanged)=\"handleRealTimeToggleChange($event)\"\n ></c8y-alarm-widget-alarms-reload>\n</c8y-alarms-list>\n", dependencies: [{ kind: "component", type: i4.AlarmsListComponent, selector: "c8y-alarms-list", inputs: ["alarms", "hasPermissions", "typeFilters", "loadMoreMode", "navigationOptions", "isInitialLoading", "splitView"], outputs: ["onSelectedAlarm", "onScrollingStateChange"] }, { kind: "component", type: i4.AlarmsDateFilterComponent, selector: "c8y-alarms-date-filter", inputs: ["DEFAULT_INTERVAL", "updateQueryParams", "date"], outputs: ["dateFilterChange"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.AlarmWidgetAlarmsReloadComponent, selector: "c8y-alarm-widget-alarms-reload", inputs: ["isIntervalRefresh", "refreshInterval", "config", "isLoading", "isScrolling", "isRefreshDisabled"], outputs: ["onCountdownEnded", "onRealTimeToggleChanged"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] }); }
230
230
  }
231
231
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlarmListWidgetComponent, decorators: [{
232
232
  type: Component,
233
- args: [{ selector: 'c8y-alarm-list-widget', providers: [AlarmRealtimeService, AlarmWithChildrenRealtimeService], template: "<c8y-alarms-list\n #list\n [alarms]=\"alarms$ | async\"\n [navigationOptions]=\"{\n alwaysNavigateToAllAlarms: !config.device,\n allowNavigationToAlarmsView: true,\n includeClearedQueryParams: true,\n queryParamsHandling: ''\n }\"\n [isInitialLoading]=\"isLoading$ | async\"\n [hasPermissions]=\"!isDisabled\"\n>\n <c8y-alarms-date-filter\n *ngIf=\"config.displayDateSelection\"\n [updateQueryParams]=\"false\"\n [date]=\"this.config.dateFilter\"\n [DEFAULT_INTERVAL]=\"config.interval || 'none'\"\n (dateFilterChange)=\"onDateFilterChange($event)\"\n ></c8y-alarms-date-filter>\n <c8y-alarm-widget-alarms-reload\n class=\"d-contents\"\n [isIntervalRefresh]=\"isIntervalRefresh\"\n [refreshInterval]=\"refreshInterval\"\n [config]=\"config\"\n [isLoading]=\"isLoading$\"\n [isScrolling]=\"list.isScrolling\"\n [isDisabled]=\"isDisabled\"\n (onCountdownEnded)=\"fetchAlarms()\"\n (onRealTimeToggleChanged)=\"handleRealTimeToggleChange($event)\"\n ></c8y-alarm-widget-alarms-reload>\n</c8y-alarms-list>\n" }]
233
+ args: [{ selector: 'c8y-alarm-list-widget', providers: [AlarmRealtimeService, AlarmWithChildrenRealtimeService], template: "<c8y-alarms-list\n #list\n [alarms]=\"alarms$ | async\"\n [navigationOptions]=\"{\n alwaysNavigateToAllAlarms: !config.device,\n allowNavigationToAlarmsView: true,\n includeClearedQueryParams: true,\n queryParamsHandling: ''\n }\"\n [isInitialLoading]=\"isLoading$ | async\"\n [hasPermissions]=\"!isDisabled\"\n>\n <c8y-alarms-date-filter\n *ngIf=\"config.displayDateSelection\"\n [updateQueryParams]=\"false\"\n [date]=\"this.config.dateFilter\"\n [DEFAULT_INTERVAL]=\"config.interval || 'none'\"\n (dateFilterChange)=\"onDateFilterChange($event)\"\n ></c8y-alarms-date-filter>\n <c8y-alarm-widget-alarms-reload\n class=\"d-contents\"\n [isIntervalRefresh]=\"isIntervalRefresh\"\n [refreshInterval]=\"refreshInterval\"\n [config]=\"config\"\n [isLoading]=\"isLoading$\"\n [isScrolling]=\"list.isScrolling\"\n [isRefreshDisabled]=\"isDisabled\"\n (onCountdownEnded)=\"fetchAlarms()\"\n (onRealTimeToggleChanged)=\"handleRealTimeToggleChange($event)\"\n ></c8y-alarm-widget-alarms-reload>\n</c8y-alarms-list>\n" }]
234
234
  }], ctorParameters: () => [{ type: i1.AlarmWidgetService }, { type: i2.AlarmRealtimeService }, { type: i3.AlarmService }, { type: i4.AlarmsViewService }, { type: i2.AlarmWithChildrenRealtimeService }, { type: i2.DashboardChildComponent }, { type: i2.AlertService }, { type: i2.WidgetGlobalAutoRefreshService }], propDecorators: { config: [{
235
235
  type: Input
236
236
  }], alarmWidgetAlarmsReloadComp: [{
237
237
  type: ViewChild,
238
238
  args: [AlarmWidgetAlarmsReloadComponent]
239
239
  }] } });
240
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0tbGlzdC13aWRnZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvYWxhcm1zL2FsYXJtLWxpc3Qtd2lkZ2V0LXZpZXcvYWxhcm0tbGlzdC13aWRnZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvYWxhcm1zL2FsYXJtLWxpc3Qtd2lkZ2V0LXZpZXcvYWxhcm0tbGlzdC13aWRnZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxLQUFLLEVBSUwsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQWdDLE1BQU0sYUFBYSxDQUFDO0FBQ3pFLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsZ0NBQWdDLEVBQ2hDLFlBQVksRUFDWix1QkFBdUIsRUFDdkIsb0JBQW9CLEVBRXBCLHFCQUFxQixFQUVyQixPQUFPLEVBQ1Asd0JBQXdCLEVBQ3hCLDhCQUE4QixFQUMvQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFDTCxzQkFBc0IsRUFFdEIsdUJBQXVCLEVBQ3hCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdDQUFnQyxF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QztRQUVELElBQUksUUFBUSxLQUFLLHNCQUFzQixFQUFFLENBQUM7WUFDeEMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsMEJBQTBCLENBQ3pFLElBQUksQ0FBQyxpQkFBaUIsQ0FDdkIsQ0FBQztZQUNGLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRU8sMEJBQTBCO1FBQ2hDLElBQUksQ0FBQyxVQUFVO2FBQ1osSUFBSSxDQUNILElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsRUFDdEQsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDekI7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDOytHQXpTVSx3QkFBd0I7bUdBQXhCLHdCQUF3Qiw4RUFGeEIsQ0FBQyxvQkFBb0IsRUFBRSxnQ0FBZ0MsQ0FBQyx1RkEwQnhELGdDQUFnQyxxRUNwRTdDLDRpQ0ErQkE7OzRGRGFhLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSx1QkFBdUIsYUFFdEIsQ0FBQyxvQkFBb0IsRUFBRSxnQ0FBZ0MsQ0FBQztrVkFRMUQsTUFBTTtzQkFBZCxLQUFLO2dCQW1CTiwyQkFBMkI7c0JBRDFCLFNBQVM7dUJBQUMsZ0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFsYXJtU2VydmljZSwgSUFsYXJtLCBJUmVzdWx0LCBJUmVzdWx0TGlzdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFsYXJtUmVhbHRpbWVTZXJ2aWNlLFxuICBBbGFybVdpdGhDaGlsZHJlblJlYWx0aW1lU2VydmljZSxcbiAgQWxlcnRTZXJ2aWNlLFxuICBEYXNoYm9hcmRDaGlsZENvbXBvbmVudCxcbiAgRGlzbWlzc0FsZXJ0U3RyYXRlZ3ksXG4gIER5bmFtaWNDb21wb25lbnQsXG4gIER5bmFtaWNDb21wb25lbnRBbGVydCxcbiAgRHluYW1pY0NvbXBvbmVudEFsZXJ0QWdncmVnYXRvcixcbiAgZ2V0dGV4dCxcbiAgZ2xvYmFsQXV0b1JlZnJlc2hMb2FkaW5nLFxuICBXaWRnZXRHbG9iYWxBdXRvUmVmcmVzaFNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBbGFybXNWaWV3U2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYWxhcm1zJztcbmltcG9ydCB7IGlzRW1wdHksIGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBza2lwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIEFTU0VUX0FMQVJNU19XSURHRVRfSUQsXG4gIEFsYXJtTGlzdFdpZGdldENvbmZpZyxcbiAgUkVDRU5UX0FMQVJNU19XSURHRVRfSURcbn0gZnJvbSAnLi4vYWxhcm0tbGlzdC13aWRnZXQubW9kZWwnO1xuaW1wb3J0IHsgQWxhcm1XaWRnZXRTZXJ2aWNlIH0gZnJvbSAnLi4vYWxhcm0td2lkZ2V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQWxhcm1XaWRnZXRBbGFybXNSZWxvYWRDb21wb25lbnQgfSBmcm9tICcuLi9hbGFybS13aWRnZXQtYWxhcm1zLXJlbG9hZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW50ZXJ2YWwgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ludGVydmFsLXBpY2tlcic7XG5cbi8qKlxuICogVG8gZW5zdXJlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIGxlZ2FjeSB3aWRnZXRzIHdpbGwgYmUgY29udmVydGVkIHRvIHRoZSBuZXcgaW1wbGVtZW50YXRpb24uXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1hbGFybS1saXN0LXdpZGdldCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hbGFybS1saXN0LXdpZGdldC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW0FsYXJtUmVhbHRpbWVTZXJ2aWNlLCBBbGFybVdpdGhDaGlsZHJlblJlYWx0aW1lU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgQWxhcm1MaXN0V2lkZ2V0Q29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIER5bmFtaWNDb21wb25lbnRcbntcbiAgLyoqXG4gICAqICBBbGFybSB3aWRnZXQgY29uZmlnLlxuICAgKi9cbiAgQElucHV0KCkgY29uZmlnOiBBbGFybUxpc3RXaWRnZXRDb25maWc7XG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIGN1cnJlbnQgYWxhcm1zLlxuICAgKi9cbiAgYWxhcm1zJDogQmVoYXZpb3JTdWJqZWN0PElSZXN1bHRMaXN0PElBbGFybT4gfCBudWxsPiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG4gIC8qKlxuICAgKiBDdXJyZW50IGlzTG9hZGluZyBzdGF0ZS4gQmFzZWQgb24gaXQgbmV4dCBjb3VudGRvd24gY3ljbGUgaXMgYmVpbmcgc3RhcnRlZC5cbiAgICovXG4gIGlzTG9hZGluZyQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XG4gIC8qKlxuICAgKiBTdGF0ZSBvZiB0aGlzIGJvb2xlYW4gZGVwZW5kcyBvbiBhbiBBcHBsaWNhdGlvbiBPcHRpb25zIFwiYWxhcm1zUmVmcmVzaFR5cGVcIiBzZXR0aW5nLlxuICAgKi9cbiAgaXNJbnRlcnZhbFJlZnJlc2g6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDdXJyZW50IHJlZnJlc2ggaW50ZXJ2YWwgc2V0IGluIGEgd2lkZ2V0IGNvbmZpZy5cbiAgICovXG4gIHJlZnJlc2hJbnRlcnZhbDogbnVtYmVyO1xuXG4gIEBWaWV3Q2hpbGQoQWxhcm1XaWRnZXRBbGFybXNSZWxvYWRDb21wb25lbnQpXG4gIGFsYXJtV2lkZ2V0QWxhcm1zUmVsb2FkQ29tcDogQWxhcm1XaWRnZXRBbGFybXNSZWxvYWRDb21wb25lbnQ7XG4gIGFsZXJ0czogRHluYW1pY0NvbXBvbmVudEFsZXJ0QWdncmVnYXRvcjtcblxuICBwcml2YXRlIFRJTUVPVVRfRVJST1JfVEVYVCA9IGdldHRleHQoXG4gICAgJ1RoZSByZXF1ZXN0IGlzIHRha2luZyBsb25nZXIgdGhhbiB1c3VhbC4gV2UgYXBvbG9naXplIGZvciB0aGUgaW5jb252ZW5pZW5jZS4nXG4gICk7XG4gIHByaXZhdGUgU0VSVkVSX0VSUk9SX1RFWFQgPSBnZXR0ZXh0KCdTZXJ2ZXIgZXJyb3Igb2NjdXJyZWQuJyk7XG4gIHByaXZhdGUgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gIGlzRGlzYWJsZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFsYXJtV2lkZ2V0U2VydmljZTogQWxhcm1XaWRnZXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxhcm1SZWFsdGltZVNlcnZpY2U6IEFsYXJtUmVhbHRpbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxhcm1TZXJ2aWNlOiBBbGFybVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGFybXNWaWV3U2VydmljZTogQWxhcm1zVmlld1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGFybVdpdGhDaGlsZHJlblJlYWx0aW1lU2VydmljZTogQWxhcm1XaXRoQ2hpbGRyZW5SZWFsdGltZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXNoYm9hcmRDaGlsZDogRGFzaGJvYXJkQ2hpbGRDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHdpZGdldEdsb2JhbEF1dG9SZWZyZXNoOiBXaWRnZXRHbG9iYWxBdXRvUmVmcmVzaFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pc0ludGVydmFsUmVmcmVzaCA9IHRoaXMuYWxhcm1zVmlld1NlcnZpY2UuaXNJbnRlcnZhbFJlZnJlc2goKTtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuYWxlcnRzLnNldEFsZXJ0R3JvdXBEaXNtaXNzU3RyYXRlZ3koXG4gICAgICAnd2FybmluZycsXG4gICAgICBEaXNtaXNzQWxlcnRTdHJhdGVneS5URU1QT1JBUllfT1JfUEVSTUFORU5UXG4gICAgKTtcblxuICAgIGlmICh0aGlzLmFsYXJtV2lkZ2V0U2VydmljZS5pc09sZEFsYXJtQ29uZmlnU3RydWN0dXJlKHRoaXMuY29uZmlnKSkge1xuICAgICAgY29uc3QgbWFwcGVkQ29uZmlnID0gdGhpcy5hbGFybVdpZGdldFNlcnZpY2UubWFwVG9OZXdDb25maWdTdHJ1Y3R1cmUoXG4gICAgICAgIHRoaXMuY29uZmlnLFxuICAgICAgICB0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoXG4gICAgICApO1xuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmNvbmZpZywgbWFwcGVkQ29uZmlnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxBdXRvUmVmcmVzaENvbnRleHQgJiYgIXRoaXMuY29uZmlnLmlzUmVhbHRpbWUpIHtcbiAgICAgIHRoaXMuaGFuZGxlR2xvYmFsUmVmcmVzaExvYWRpbmcoKTtcbiAgICB9XG4gICAgY29uc3QgX2NvbmZpZyA9IHRoaXMuZGFzaGJvYXJkQ2hpbGRbJ2RhdGEnXT8uY29uZmlnO1xuICAgIGNvbnN0IGlzTGVnYWN5V2lkZ2V0V2l0aG91dENvbmZpZ3VyYXRpb24gPVxuICAgICAgaXNFbXB0eShfY29uZmlnKSB8fCBpc0VxdWFsKF9jb25maWcsIHsgZGlzcGxheVNldHRpbmdzOiB7IGdsb2JhbEF1dG9SZWZyZXNoQ29udGV4dDogdHJ1ZSB9IH0pO1xuXG4gICAgaWYgKGlzTGVnYWN5V2lkZ2V0V2l0aG91dENvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHRoaXMuc2V0TGVnYWN5UmVjZW50T3JDcml0aWNhbEFsYXJtV2lkZ2V0Q29uZmlnKCk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVXaWRnZXRSZWZyZXNoTW9kZSgpO1xuICAgIHRoaXMucmVmcmVzaEludGVydmFsID0gISF0aGlzLmNvbmZpZz8ucmVmcmVzaEludGVydmFsICYmIHRoaXMuY29uZmlnPy5yZWZyZXNoSW50ZXJ2YWw7XG4gICAgYXdhaXQgdGhpcy5mZXRjaEFsYXJtcygpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0ludGVydmFsUmVmcmVzaCAmJiB0aGlzLmNvbmZpZy5yZWZyZXNoT3B0aW9uID09PSAnaW50ZXJ2YWwnKSB7XG4gICAgICB0aGlzLmhhbmRsZVJlYWx0aW1lQWxhcm1zKHRoaXMuY29uZmlnLCB0aGlzLmFsYXJtV2lkZ2V0QWxhcm1zUmVsb2FkQ29tcC5pc1JlYWx0aW1lVG9nZ2xlT24pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcz8uY29uZmlnPy5jdXJyZW50VmFsdWU/LmRhdGUpIHtcbiAgICAgIHRoaXMuY29uZmlnLmRhdGVGaWx0ZXIgPSBjaGFuZ2VzLmNvbmZpZy5jdXJyZW50VmFsdWUuZGF0ZTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maWcuaXNSZWFsdGltZSkge1xuICAgICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG5cbiAgICBpZiAodGhpcy5jb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxBdXRvUmVmcmVzaENvbnRleHQgJiYgdGhpcy5pc0xvYWRpbmckLnZhbHVlKSB7XG4gICAgICB0aGlzLndpZGdldEdsb2JhbEF1dG9SZWZyZXNoLmRlY3JlbWVudExvYWRpbmcoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBmZXRjaEFsYXJtcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnVwZGF0ZURhdGVGaWx0ZXIoKTtcbiAgICB0aGlzLmFsYXJtcyQubmV4dChhd2FpdCB0aGlzLmdldEFsYXJtcygpKTtcbiAgfVxuXG4gIGFzeW5jIG9uRGF0ZUZpbHRlckNoYW5nZShldmVudDoge1xuICAgIHNlbGVjdGVkRGF0ZXM6IFtEYXRlLCBEYXRlXTtcbiAgICBpbnRlcnZhbDogSW50ZXJ2YWxbJ2lkJ107XG4gIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmNvbmZpZy5kYXRlRmlsdGVyID0gZXZlbnQuc2VsZWN0ZWREYXRlcztcbiAgICB0aGlzLmNvbmZpZy5pbnRlcnZhbCA9IGV2ZW50LmludGVydmFsO1xuICAgIGF3YWl0IHRoaXMuZmV0Y2hBbGFybXMoKTtcbiAgfVxuXG4gIGhhbmRsZVJlYWxUaW1lVG9nZ2xlQ2hhbmdlKGlzUmVhbHRpbWVUb2dnbGVPbjogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICghaXNSZWFsdGltZVRvZ2dsZU9uKSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIHRoaXMudW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3QoKTtcbiAgICB0aGlzLmhhbmRsZVJlYWx0aW1lQWxhcm1zKHRoaXMuY29uZmlnLCBpc1JlYWx0aW1lVG9nZ2xlT24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHdpZGdldCdzIGRhdGUgZmlsdGVyIGJhc2VkIG9uIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgaW50ZXJ2YWwuXG4gICAqIElmIHRoZSBpbnRlcnZhbCBpcyBzZXQgdG8gbGFzdCBob3VyLCB3ZSB3aWxsIGNvbmZpZ3VyZSB0aGUgZGF0ZSBmaWx0ZXIgdG8gZHluYW1pY2FsbHkgc2hvdyBhbGFybXMgb25seSBmcm9tIHRoZSBsYXN0IGhvdXIuXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZURhdGVGaWx0ZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmludGVydmFsID09PSAnY3VzdG9tJyB8fCB0aGlzLmNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbFRpbWVDb250ZXh0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNvbmZpZy5pbnRlcnZhbCkge1xuICAgICAgdGhpcy5jb25maWcuaW50ZXJ2YWwgPSAnbm9uZSc7XG4gICAgfVxuXG4gICAgdGhpcy5jb25maWcuZGF0ZUZpbHRlciA9IHRoaXMuYWxhcm1zVmlld1NlcnZpY2UuZ2V0RGF0ZVRpbWVDb250ZXh0QnlJbnRlcnZhbChcbiAgICAgIHRoaXMuY29uZmlnLmludGVydmFsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSB3aWRnZXQncyByZWZyZXNoIG1vZGUgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBhbmQgdGhlIGludGVydmFsIHJlZnJlc2ggc2V0dGluZy5cbiAgICogSWYgdGhlIHdpZGdldCdzICdpc1JlYWx0aW1lJyBjb25maWd1cmF0aW9uIGRpZmZlcnMgZnJvbSB0aGUgY3VycmVudCBnbG9iYWwgaW50ZXJ2YWwgcmVmcmVzaCBzZXR0aW5nIChhcHBsaWNhdGlvbiBvcHRpb25zIHNldHRpbmcpLFxuICAgKiB0aGUgd2lkZ2V0J3MgbW9kZSBpcyB1cGRhdGVkIHRvIGVpdGhlciAncmVhbHRpbWUnIG9yICdpbnRlcnZhbCcuIEluICdyZWFsdGltZScgbW9kZSwgdGhlIHJlZnJlc2ggaW50ZXJ2YWwgaXMgbnVsbCxcbiAgICogYW5kIGluICdpbnRlcnZhbCcgbW9kZSwgaXQgaXMgc2V0IHRvIHRoZSBkZWZhdWx0IGludGVydmFsIHZhbHVlLlxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVXaWRnZXRSZWZyZXNoTW9kZSgpOiB2b2lkIHtcbiAgICBjb25zdCBpc1JlZnJlc2hUeXBlU3dpdGNoZWQgPSAhIXRoaXMuY29uZmlnLmlzUmVhbHRpbWUgIT09ICF0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoO1xuICAgIGlmICghaXNSZWZyZXNoVHlwZVN3aXRjaGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jb25maWcuaXNSZWFsdGltZSA9ICF0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLmlzUmVhbHRpbWUpIHtcbiAgICAgIC8vIFN3aXRjaGluZyB3aWRnZXQgdG8gcmVhbHRpbWUgbW9kZVxuICAgICAgdGhpcy5jb25maWcucmVmcmVzaEludGVydmFsID0gbnVsbDtcbiAgICAgIHRoaXMuY29uZmlnLnJlZnJlc2hPcHRpb24gPSBudWxsO1xuICAgICAgdGhpcy5jb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxBdXRvUmVmcmVzaENvbnRleHQgPSBmYWxzZTtcbiAgICAgIHRoaXMuY29uZmlnLmlzQXV0b1JlZnJlc2hFbmFibGVkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU3dpdGNoaW5nIHdpZGdldCB0byBpbnRlcnZhbCBtb2RlXG4gICAgICB0aGlzLmNvbmZpZy5yZWZyZXNoSW50ZXJ2YWwgPSB0aGlzLmFsYXJtc1ZpZXdTZXJ2aWNlLkRFRkFVTFRfSU5URVJWQUxfVkFMVUU7XG4gICAgICB0aGlzLmNvbmZpZy5yZWZyZXNoT3B0aW9uID0gdGhpcy5hbGFybXNWaWV3U2VydmljZS5ERUZBVUxUX1JFRlJFU0hfT1BUSU9OX1ZBTFVFO1xuICAgICAgdGhpcy5jb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxBdXRvUmVmcmVzaENvbnRleHQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldEFsYXJtcygpOiBQcm9taXNlPElSZXN1bHRMaXN0PElBbGFybT4+IHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5pc0xvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5hbGFybVNlcnZpY2UubGlzdChcbiAgICAgICAgdGhpcy5hbGFybVdpZGdldFNlcnZpY2UubWFwQ29uZmlnVG9RdWVyeUZpbHRlcih0aGlzLmNvbmZpZylcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuYWxlcnRzLmFkZEFsZXJ0cyhcbiAgICAgICAgbmV3IER5bmFtaWNDb21wb25lbnRBbGVydCh7XG4gICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxuICAgICAgICAgIHRleHQ6XG4gICAgICAgICAgICBlcnJvcj8ubmFtZSA9PT0gJ1RpbWVvdXRFcnJvcidcbiAgICAgICAgICAgICAgPyB0aGlzLlRJTUVPVVRfRVJST1JfVEVYVFxuICAgICAgICAgICAgICA6IGVycm9yPy5tZXNzYWdlID8/IHRoaXMuU0VSVkVSX0VSUk9SX1RFWFRcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICBpZiAoZXJyb3I/LnJlcz8uc3RhdHVzID09PSA0MDMpIHtcbiAgICAgICAgdGhpcy5pc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgcmVhbHRpbWUgdXBkYXRlcyBvZiBhbGFybXMgYmFzZWQgb24gdGhlIHdpZGdldCBjb25maWd1cmF0aW9uLlxuICAgKiBJZiBhIHNwZWNpZmljIGRldmljZSBpcyBwcm92aWRlZCBpbiB0aGUgd2lkZ2V0IGNvbmZpZ3VyYXRpb24sIGFsbCBhbGFybXNcbiAgICogb3JpZ2luYXRpbmcgZnJvbSB0aGF0IGRldmljZSBhbmQgaXRzIGNoaWxkcmVuIGFyZSBmaWx0ZXJlZCBiYXNlZCBvbiBzdGF0dXMsIHNldmVyaXR5LCBhbmQgdHlwZS5cbiAgICogT3RoZXJ3aXNlLCBpdCBwcm9jZXNzZXMgYWxsIGluY29taW5nIGFsYXJtcyBhbmQgZmlsdGVycyB0aGVtIGFjY29yZGluZyB0byBzdGF0dXMsIHNldmVyaXR5LCBhbmQgdHlwZSxcbiAgICogYXMgc3BlY2lmaWVkIGluIHRoZSB3aWRnZXQgY29uZmlndXJhdGlvbi4gSWYgbmV3IGFsYXJtcyBtZWV0IHRoZSBzcGVjaWZpZWQgY3JpdGVyaWEsIGl0IHNldHMgYSBmbGFnXG4gICAqIHRvIGluZGljYXRlIHRoZSBwcmVzZW5jZSBvZiBuZXcgYWxhcm1zLlxuICAgKlxuICAgKiBAcGFyYW0gY29uZmlnIC0gVGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3Mgb2YgdGhlIGFsYXJtIGxpc3Qgd2lkZ2V0LlxuICAgKiBAcGFyYW0gaXNSZWFsdGltZVRvZ2dsZU9uIC0gQSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgcmVhbHRpbWUgdG9nZ2xlIGlzIG9uLiBJZiB0cnVlLCB0aGUgYWxhcm0gbGlzdCB3aWxsIGJlIHJlZnJlc2hlZC5cbiAgICogSWYgZmFsc2UsIHRoZSBwcmVzZW5jZSBvZiBuZXcgYWxhcm1zIHdpbGwgYmUgZGlzcGxheWVkIGFzIFwiTmV3IEFsYXJtc1wiIGVudHJ5IG9uIHdpZGdldCByZWZyZXNoIGJ1dHRvbiwgYnV0IHRoZSBsaXN0IHdvbid0IGJlIHJlZnJlc2hlZCBhdXRvbWF0aWNhbGx5LlxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVSZWFsdGltZUFsYXJtcyhjb25maWc6IEFsYXJtTGlzdFdpZGdldENvbmZpZywgaXNSZWFsdGltZVRvZ2dsZU9uOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgY2FsbGJhY2sgPSAoZGF0YTogbnVtYmVyIHwgSUFsYXJtKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuYWxhcm1XaWRnZXRTZXJ2aWNlLmZpbHRlckFsYXJtc0J5U3RhdHVzU2V2ZXJpdHlBbmRUeXBlKFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgdGhpcy5hbGFybXMkLnZhbHVlLmRhdGEsXG4gICAgICAgICAgY29uZmlnXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICBpZiAoaXNSZWFsdGltZVRvZ2dsZU9uKSB7XG4gICAgICAgICAgdGhpcy5mZXRjaEFsYXJtcygpO1xuICAgICAgICAgIHRoaXMuYWxhcm1XaWRnZXRBbGFybXNSZWxvYWRDb21wLmlzTmV3QWxhcm1NZXNzYWdlQ2xlYXJlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5hbGFybVdpZGdldEFsYXJtc1JlbG9hZENvbXAuaXNOZXdBbGFybU1lc3NhZ2VDbGVhcmVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLmRldmljZSkge1xuICAgICAgdGhpcy5oYW5kbGVSZWFsdGltZShcbiAgICAgICAgdGhpcy5hbGFybVdpdGhDaGlsZHJlblJlYWx0aW1lU2VydmljZS5vbkFsbCQuYmluZCh0aGlzLmFsYXJtV2l0aENoaWxkcmVuUmVhbHRpbWVTZXJ2aWNlKSxcbiAgICAgICAgY2FsbGJhY2tcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFuZGxlUmVhbHRpbWUoXG4gICAgICAgIHRoaXMuYWxhcm1SZWFsdGltZVNlcnZpY2Uub25BbGwkLmJpbmQodGhpcy5hbGFybVJlYWx0aW1lU2VydmljZSksXG4gICAgICAgIGNhbGxiYWNrXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHVwIGEgc3Vic2NyaXB0aW9uIHRvIGEgcmVhbHRpbWUgZGF0YSBzdHJlYW0uIFRoaXMgZnVuY3Rpb24gdGFrZXMgYSBzdWJzY3JpYmVyIGZ1bmN0aW9uLFxuICAgKiB3aGljaCBpcyB1c2VkIHRvIHN1YnNjcmliZSB0byB0aGUgZGF0YSBzdHJlYW0sIGFuZCBhIGNhbGxiYWNrIGZ1bmN0aW9uLCB3aGljaCBpcyBjYWxsZWQgd2l0aCBlYWNoXG4gICAqIGRhdGEgdXBkYXRlIHJlY2VpdmVkIGZyb20gdGhlIHN0cmVhbS5cbiAgICpcbiAgICogQHBhcmFtIHN1YnNjcmliZXJGbiAtIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIG9ic2VydmFibGUgc3RyZWFtIG9mIGFsYXJtIGRhdGEuXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIEEgZnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQgd2l0aCBlYWNoIGFsYXJtIGRhdGEgdXBkYXRlLlxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVSZWFsdGltZShcbiAgICBzdWJzY3JpYmVyRm46IChpZD86IHN0cmluZykgPT4gT2JzZXJ2YWJsZTxJUmVzdWx0PElBbGFybT4+LFxuICAgIGNhbGxiYWNrOiAoZGF0YTogSUFsYXJtKSA9PiB2b2lkXG4gICk6IHZvaWQge1xuICAgIHN1YnNjcmliZXJGbih0aGlzLmNvbmZpZy5kZXZpY2U/LmlkKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoeyBkYXRhIH0pID0+IHtcbiAgICAgICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0TGVnYWN5UmVjZW50T3JDcml0aWNhbEFsYXJtV2lkZ2V0Q29uZmlnKCk6IHZvaWQge1xuICAgIGNvbnN0IHdpZGdldElkID0gdGhpcy5kYXNoYm9hcmRDaGlsZFsnZGF0YSddPy5jb21wb25lbnRJZFxuICAgICAgPyB0aGlzLmRhc2hib2FyZENoaWxkWydkYXRhJ10/LmNvbXBvbmVudElkIC8vcHJvcGVydHkgaXMgdXNlZCBpbiBjb2NrcGl0IGRhc2hib2FyZHNcbiAgICAgIDogdGhpcy5kYXNoYm9hcmRDaGlsZFsnZGF0YSddPy5uYW1lOyAvL3Byb3BlcnR5IGlzIHVzZWQgaW4gZGV2aWNlIG1hbmFnZW1lbnQgZGFzaGJvYXJkc1xuXG4gICAgaWYgKHdpZGdldElkID09PSBSRUNFTlRfQUxBUk1TX1dJREdFVF9JRCkge1xuICAgICAgY29uc3QgcHJlZGVmaW5lZENvbmZpZyA9IHRoaXMuYWxhcm1XaWRnZXRTZXJ2aWNlLmdldFByZWRlZmluZWRDb25maWd1cmF0aW9uKFxuICAgICAgICB0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoLFxuICAgICAgICBSRUNFTlRfQUxBUk1TX1dJREdFVF9JRFxuICAgICAgKTtcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5jb25maWcsIHByZWRlZmluZWRDb25maWcpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHdpZGdldElkID09PSBBU1NFVF9BTEFSTVNfV0lER0VUX0lEKSB7XG4gICAgICBjb25zdCBwcmVkZWZpbmVkQ29uZmlnID0gdGhpcy5hbGFybVdpZGdldFNlcnZpY2UuZ2V0UHJlZGVmaW5lZENvbmZpZ3VyYXRpb24oXG4gICAgICAgIHRoaXMuaXNJbnRlcnZhbFJlZnJlc2hcbiAgICAgICk7XG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuY29uZmlnLCBwcmVkZWZpbmVkQ29uZmlnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUdsb2JhbFJlZnJlc2hMb2FkaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuaXNMb2FkaW5nJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHNraXAoMSksXG4gICAgICAgIGdsb2JhbEF1dG9SZWZyZXNoTG9hZGluZyh0aGlzLndpZGdldEdsb2JhbEF1dG9SZWZyZXNoKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxjOHktYWxhcm1zLWxpc3RcbiAgI2xpc3RcbiAgW2FsYXJtc109XCJhbGFybXMkIHwgYXN5bmNcIlxuICBbbmF2aWdhdGlvbk9wdGlvbnNdPVwie1xuICAgIGFsd2F5c05hdmlnYXRlVG9BbGxBbGFybXM6ICFjb25maWcuZGV2aWNlLFxuICAgIGFsbG93TmF2aWdhdGlvblRvQWxhcm1zVmlldzogdHJ1ZSxcbiAgICBpbmNsdWRlQ2xlYXJlZFF1ZXJ5UGFyYW1zOiB0cnVlLFxuICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICcnXG4gIH1cIlxuICBbaXNJbml0aWFsTG9hZGluZ109XCJpc0xvYWRpbmckIHwgYXN5bmNcIlxuICBbaGFzUGVybWlzc2lvbnNdPVwiIWlzRGlzYWJsZWRcIlxuPlxuICA8Yzh5LWFsYXJtcy1kYXRlLWZpbHRlclxuICAgICpuZ0lmPVwiY29uZmlnLmRpc3BsYXlEYXRlU2VsZWN0aW9uXCJcbiAgICBbdXBkYXRlUXVlcnlQYXJhbXNdPVwiZmFsc2VcIlxuICAgIFtkYXRlXT1cInRoaXMuY29uZmlnLmRhdGVGaWx0ZXJcIlxuICAgIFtERUZBVUxUX0lOVEVSVkFMXT1cImNvbmZpZy5pbnRlcnZhbCB8fCAnbm9uZSdcIlxuICAgIChkYXRlRmlsdGVyQ2hhbmdlKT1cIm9uRGF0ZUZpbHRlckNoYW5nZSgkZXZlbnQpXCJcbiAgPjwvYzh5LWFsYXJtcy1kYXRlLWZpbHRlcj5cbiAgPGM4eS1hbGFybS13aWRnZXQtYWxhcm1zLXJlbG9hZFxuICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgW2lzSW50ZXJ2YWxSZWZyZXNoXT1cImlzSW50ZXJ2YWxSZWZyZXNoXCJcbiAgICBbcmVmcmVzaEludGVydmFsXT1cInJlZnJlc2hJbnRlcnZhbFwiXG4gICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nJFwiXG4gICAgW2lzU2Nyb2xsaW5nXT1cImxpc3QuaXNTY3JvbGxpbmdcIlxuICAgIFtpc0Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgIChvbkNvdW50ZG93bkVuZGVkKT1cImZldGNoQWxhcm1zKClcIlxuICAgIChvblJlYWxUaW1lVG9nZ2xlQ2hhbmdlZCk9XCJoYW5kbGVSZWFsVGltZVRvZ2dsZUNoYW5nZSgkZXZlbnQpXCJcbiAgPjwvYzh5LWFsYXJtLXdpZGdldC1hbGFybXMtcmVsb2FkPlxuPC9jOHktYWxhcm1zLWxpc3Q+XG4iXX0=
240
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0tbGlzdC13aWRnZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvYWxhcm1zL2FsYXJtLWxpc3Qtd2lkZ2V0LXZpZXcvYWxhcm0tbGlzdC13aWRnZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvYWxhcm1zL2FsYXJtLWxpc3Qtd2lkZ2V0LXZpZXcvYWxhcm0tbGlzdC13aWRnZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxLQUFLLEVBSUwsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQWdDLE1BQU0sYUFBYSxDQUFDO0FBQ3pFLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsZ0NBQWdDLEVBQ2hDLFlBQVksRUFDWix1QkFBdUIsRUFDdkIsb0JBQW9CLEVBRXBCLHFCQUFxQixFQUVyQixPQUFPLEVBQ1Asd0JBQXdCLEVBQ3hCLDhCQUE4QixFQUMvQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFDTCxzQkFBc0IsRUFFdEIsdUJBQXVCLEVBQ3hCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdDQUFnQyxF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QztRQUVELElBQUksUUFBUSxLQUFLLHNCQUFzQixFQUFFLENBQUM7WUFDeEMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsMEJBQTBCLENBQ3pFLElBQUksQ0FBQyxpQkFBaUIsQ0FDdkIsQ0FBQztZQUNGLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRU8sMEJBQTBCO1FBQ2hDLElBQUksQ0FBQyxVQUFVO2FBQ1osSUFBSSxDQUNILElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsRUFDdEQsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDekI7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDOytHQXpTVSx3QkFBd0I7bUdBQXhCLHdCQUF3Qiw4RUFGeEIsQ0FBQyxvQkFBb0IsRUFBRSxnQ0FBZ0MsQ0FBQyx1RkEwQnhELGdDQUFnQyxxRUNwRTdDLG1qQ0ErQkE7OzRGRGFhLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSx1QkFBdUIsYUFFdEIsQ0FBQyxvQkFBb0IsRUFBRSxnQ0FBZ0MsQ0FBQztrVkFRMUQsTUFBTTtzQkFBZCxLQUFLO2dCQW1CTiwyQkFBMkI7c0JBRDFCLFNBQVM7dUJBQUMsZ0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFsYXJtU2VydmljZSwgSUFsYXJtLCBJUmVzdWx0LCBJUmVzdWx0TGlzdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFsYXJtUmVhbHRpbWVTZXJ2aWNlLFxuICBBbGFybVdpdGhDaGlsZHJlblJlYWx0aW1lU2VydmljZSxcbiAgQWxlcnRTZXJ2aWNlLFxuICBEYXNoYm9hcmRDaGlsZENvbXBvbmVudCxcbiAgRGlzbWlzc0FsZXJ0U3RyYXRlZ3ksXG4gIER5bmFtaWNDb21wb25lbnQsXG4gIER5bmFtaWNDb21wb25lbnRBbGVydCxcbiAgRHluYW1pY0NvbXBvbmVudEFsZXJ0QWdncmVnYXRvcixcbiAgZ2V0dGV4dCxcbiAgZ2xvYmFsQXV0b1JlZnJlc2hMb2FkaW5nLFxuICBXaWRnZXRHbG9iYWxBdXRvUmVmcmVzaFNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBbGFybXNWaWV3U2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYWxhcm1zJztcbmltcG9ydCB7IGlzRW1wdHksIGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBza2lwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIEFTU0VUX0FMQVJNU19XSURHRVRfSUQsXG4gIEFsYXJtTGlzdFdpZGdldENvbmZpZyxcbiAgUkVDRU5UX0FMQVJNU19XSURHRVRfSURcbn0gZnJvbSAnLi4vYWxhcm0tbGlzdC13aWRnZXQubW9kZWwnO1xuaW1wb3J0IHsgQWxhcm1XaWRnZXRTZXJ2aWNlIH0gZnJvbSAnLi4vYWxhcm0td2lkZ2V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQWxhcm1XaWRnZXRBbGFybXNSZWxvYWRDb21wb25lbnQgfSBmcm9tICcuLi9hbGFybS13aWRnZXQtYWxhcm1zLXJlbG9hZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW50ZXJ2YWwgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ludGVydmFsLXBpY2tlcic7XG5cbi8qKlxuICogVG8gZW5zdXJlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIGxlZ2FjeSB3aWRnZXRzIHdpbGwgYmUgY29udmVydGVkIHRvIHRoZSBuZXcgaW1wbGVtZW50YXRpb24uXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1hbGFybS1saXN0LXdpZGdldCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hbGFybS1saXN0LXdpZGdldC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW0FsYXJtUmVhbHRpbWVTZXJ2aWNlLCBBbGFybVdpdGhDaGlsZHJlblJlYWx0aW1lU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgQWxhcm1MaXN0V2lkZ2V0Q29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIER5bmFtaWNDb21wb25lbnRcbntcbiAgLyoqXG4gICAqICBBbGFybSB3aWRnZXQgY29uZmlnLlxuICAgKi9cbiAgQElucHV0KCkgY29uZmlnOiBBbGFybUxpc3RXaWRnZXRDb25maWc7XG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIGN1cnJlbnQgYWxhcm1zLlxuICAgKi9cbiAgYWxhcm1zJDogQmVoYXZpb3JTdWJqZWN0PElSZXN1bHRMaXN0PElBbGFybT4gfCBudWxsPiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG4gIC8qKlxuICAgKiBDdXJyZW50IGlzTG9hZGluZyBzdGF0ZS4gQmFzZWQgb24gaXQgbmV4dCBjb3VudGRvd24gY3ljbGUgaXMgYmVpbmcgc3RhcnRlZC5cbiAgICovXG4gIGlzTG9hZGluZyQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XG4gIC8qKlxuICAgKiBTdGF0ZSBvZiB0aGlzIGJvb2xlYW4gZGVwZW5kcyBvbiBhbiBBcHBsaWNhdGlvbiBPcHRpb25zIFwiYWxhcm1zUmVmcmVzaFR5cGVcIiBzZXR0aW5nLlxuICAgKi9cbiAgaXNJbnRlcnZhbFJlZnJlc2g6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDdXJyZW50IHJlZnJlc2ggaW50ZXJ2YWwgc2V0IGluIGEgd2lkZ2V0IGNvbmZpZy5cbiAgICovXG4gIHJlZnJlc2hJbnRlcnZhbDogbnVtYmVyO1xuXG4gIEBWaWV3Q2hpbGQoQWxhcm1XaWRnZXRBbGFybXNSZWxvYWRDb21wb25lbnQpXG4gIGFsYXJtV2lkZ2V0QWxhcm1zUmVsb2FkQ29tcDogQWxhcm1XaWRnZXRBbGFybXNSZWxvYWRDb21wb25lbnQ7XG4gIGFsZXJ0czogRHluYW1pY0NvbXBvbmVudEFsZXJ0QWdncmVnYXRvcjtcblxuICBwcml2YXRlIFRJTUVPVVRfRVJST1JfVEVYVCA9IGdldHRleHQoXG4gICAgJ1RoZSByZXF1ZXN0IGlzIHRha2luZyBsb25nZXIgdGhhbiB1c3VhbC4gV2UgYXBvbG9naXplIGZvciB0aGUgaW5jb252ZW5pZW5jZS4nXG4gICk7XG4gIHByaXZhdGUgU0VSVkVSX0VSUk9SX1RFWFQgPSBnZXR0ZXh0KCdTZXJ2ZXIgZXJyb3Igb2NjdXJyZWQuJyk7XG4gIHByaXZhdGUgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gIGlzRGlzYWJsZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFsYXJtV2lkZ2V0U2VydmljZTogQWxhcm1XaWRnZXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxhcm1SZWFsdGltZVNlcnZpY2U6IEFsYXJtUmVhbHRpbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxhcm1TZXJ2aWNlOiBBbGFybVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGFybXNWaWV3U2VydmljZTogQWxhcm1zVmlld1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGFybVdpdGhDaGlsZHJlblJlYWx0aW1lU2VydmljZTogQWxhcm1XaXRoQ2hpbGRyZW5SZWFsdGltZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXNoYm9hcmRDaGlsZDogRGFzaGJvYXJkQ2hpbGRDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHdpZGdldEdsb2JhbEF1dG9SZWZyZXNoOiBXaWRnZXRHbG9iYWxBdXRvUmVmcmVzaFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pc0ludGVydmFsUmVmcmVzaCA9IHRoaXMuYWxhcm1zVmlld1NlcnZpY2UuaXNJbnRlcnZhbFJlZnJlc2goKTtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuYWxlcnRzLnNldEFsZXJ0R3JvdXBEaXNtaXNzU3RyYXRlZ3koXG4gICAgICAnd2FybmluZycsXG4gICAgICBEaXNtaXNzQWxlcnRTdHJhdGVneS5URU1QT1JBUllfT1JfUEVSTUFORU5UXG4gICAgKTtcblxuICAgIGlmICh0aGlzLmFsYXJtV2lkZ2V0U2VydmljZS5pc09sZEFsYXJtQ29uZmlnU3RydWN0dXJlKHRoaXMuY29uZmlnKSkge1xuICAgICAgY29uc3QgbWFwcGVkQ29uZmlnID0gdGhpcy5hbGFybVdpZGdldFNlcnZpY2UubWFwVG9OZXdDb25maWdTdHJ1Y3R1cmUoXG4gICAgICAgIHRoaXMuY29uZmlnLFxuICAgICAgICB0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoXG4gICAgICApO1xuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmNvbmZpZywgbWFwcGVkQ29uZmlnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxBdXRvUmVmcmVzaENvbnRleHQgJiYgIXRoaXMuY29uZmlnLmlzUmVhbHRpbWUpIHtcbiAgICAgIHRoaXMuaGFuZGxlR2xvYmFsUmVmcmVzaExvYWRpbmcoKTtcbiAgICB9XG4gICAgY29uc3QgX2NvbmZpZyA9IHRoaXMuZGFzaGJvYXJkQ2hpbGRbJ2RhdGEnXT8uY29uZmlnO1xuICAgIGNvbnN0IGlzTGVnYWN5V2lkZ2V0V2l0aG91dENvbmZpZ3VyYXRpb24gPVxuICAgICAgaXNFbXB0eShfY29uZmlnKSB8fCBpc0VxdWFsKF9jb25maWcsIHsgZGlzcGxheVNldHRpbmdzOiB7IGdsb2JhbEF1dG9SZWZyZXNoQ29udGV4dDogdHJ1ZSB9IH0pO1xuXG4gICAgaWYgKGlzTGVnYWN5V2lkZ2V0V2l0aG91dENvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHRoaXMuc2V0TGVnYWN5UmVjZW50T3JDcml0aWNhbEFsYXJtV2lkZ2V0Q29uZmlnKCk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVXaWRnZXRSZWZyZXNoTW9kZSgpO1xuICAgIHRoaXMucmVmcmVzaEludGVydmFsID0gISF0aGlzLmNvbmZpZz8ucmVmcmVzaEludGVydmFsICYmIHRoaXMuY29uZmlnPy5yZWZyZXNoSW50ZXJ2YWw7XG4gICAgYXdhaXQgdGhpcy5mZXRjaEFsYXJtcygpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0ludGVydmFsUmVmcmVzaCAmJiB0aGlzLmNvbmZpZy5yZWZyZXNoT3B0aW9uID09PSAnaW50ZXJ2YWwnKSB7XG4gICAgICB0aGlzLmhhbmRsZVJlYWx0aW1lQWxhcm1zKHRoaXMuY29uZmlnLCB0aGlzLmFsYXJtV2lkZ2V0QWxhcm1zUmVsb2FkQ29tcC5pc1JlYWx0aW1lVG9nZ2xlT24pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcz8uY29uZmlnPy5jdXJyZW50VmFsdWU/LmRhdGUpIHtcbiAgICAgIHRoaXMuY29uZmlnLmRhdGVGaWx0ZXIgPSBjaGFuZ2VzLmNvbmZpZy5jdXJyZW50VmFsdWUuZGF0ZTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maWcuaXNSZWFsdGltZSkge1xuICAgICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG5cbiAgICBpZiAodGhpcy5jb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxBdXRvUmVmcmVzaENvbnRleHQgJiYgdGhpcy5pc0xvYWRpbmckLnZhbHVlKSB7XG4gICAgICB0aGlzLndpZGdldEdsb2JhbEF1dG9SZWZyZXNoLmRlY3JlbWVudExvYWRpbmcoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBmZXRjaEFsYXJtcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnVwZGF0ZURhdGVGaWx0ZXIoKTtcbiAgICB0aGlzLmFsYXJtcyQubmV4dChhd2FpdCB0aGlzLmdldEFsYXJtcygpKTtcbiAgfVxuXG4gIGFzeW5jIG9uRGF0ZUZpbHRlckNoYW5nZShldmVudDoge1xuICAgIHNlbGVjdGVkRGF0ZXM6IFtEYXRlLCBEYXRlXTtcbiAgICBpbnRlcnZhbDogSW50ZXJ2YWxbJ2lkJ107XG4gIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmNvbmZpZy5kYXRlRmlsdGVyID0gZXZlbnQuc2VsZWN0ZWREYXRlcztcbiAgICB0aGlzLmNvbmZpZy5pbnRlcnZhbCA9IGV2ZW50LmludGVydmFsO1xuICAgIGF3YWl0IHRoaXMuZmV0Y2hBbGFybXMoKTtcbiAgfVxuXG4gIGhhbmRsZVJlYWxUaW1lVG9nZ2xlQ2hhbmdlKGlzUmVhbHRpbWVUb2dnbGVPbjogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICghaXNSZWFsdGltZVRvZ2dsZU9uKSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIHRoaXMudW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3QoKTtcbiAgICB0aGlzLmhhbmRsZVJlYWx0aW1lQWxhcm1zKHRoaXMuY29uZmlnLCBpc1JlYWx0aW1lVG9nZ2xlT24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHdpZGdldCdzIGRhdGUgZmlsdGVyIGJhc2VkIG9uIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgaW50ZXJ2YWwuXG4gICAqIElmIHRoZSBpbnRlcnZhbCBpcyBzZXQgdG8gbGFzdCBob3VyLCB3ZSB3aWxsIGNvbmZpZ3VyZSB0aGUgZGF0ZSBmaWx0ZXIgdG8gZHluYW1pY2FsbHkgc2hvdyBhbGFybXMgb25seSBmcm9tIHRoZSBsYXN0IGhvdXIuXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZURhdGVGaWx0ZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmludGVydmFsID09PSAnY3VzdG9tJyB8fCB0aGlzLmNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbFRpbWVDb250ZXh0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNvbmZpZy5pbnRlcnZhbCkge1xuICAgICAgdGhpcy5jb25maWcuaW50ZXJ2YWwgPSAnbm9uZSc7XG4gICAgfVxuXG4gICAgdGhpcy5jb25maWcuZGF0ZUZpbHRlciA9IHRoaXMuYWxhcm1zVmlld1NlcnZpY2UuZ2V0RGF0ZVRpbWVDb250ZXh0QnlJbnRlcnZhbChcbiAgICAgIHRoaXMuY29uZmlnLmludGVydmFsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSB3aWRnZXQncyByZWZyZXNoIG1vZGUgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBhbmQgdGhlIGludGVydmFsIHJlZnJlc2ggc2V0dGluZy5cbiAgICogSWYgdGhlIHdpZGdldCdzICdpc1JlYWx0aW1lJyBjb25maWd1cmF0aW9uIGRpZmZlcnMgZnJvbSB0aGUgY3VycmVudCBnbG9iYWwgaW50ZXJ2YWwgcmVmcmVzaCBzZXR0aW5nIChhcHBsaWNhdGlvbiBvcHRpb25zIHNldHRpbmcpLFxuICAgKiB0aGUgd2lkZ2V0J3MgbW9kZSBpcyB1cGRhdGVkIHRvIGVpdGhlciAncmVhbHRpbWUnIG9yICdpbnRlcnZhbCcuIEluICdyZWFsdGltZScgbW9kZSwgdGhlIHJlZnJlc2ggaW50ZXJ2YWwgaXMgbnVsbCxcbiAgICogYW5kIGluICdpbnRlcnZhbCcgbW9kZSwgaXQgaXMgc2V0IHRvIHRoZSBkZWZhdWx0IGludGVydmFsIHZhbHVlLlxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVXaWRnZXRSZWZyZXNoTW9kZSgpOiB2b2lkIHtcbiAgICBjb25zdCBpc1JlZnJlc2hUeXBlU3dpdGNoZWQgPSAhIXRoaXMuY29uZmlnLmlzUmVhbHRpbWUgIT09ICF0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoO1xuICAgIGlmICghaXNSZWZyZXNoVHlwZVN3aXRjaGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jb25maWcuaXNSZWFsdGltZSA9ICF0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLmlzUmVhbHRpbWUpIHtcbiAgICAgIC8vIFN3aXRjaGluZyB3aWRnZXQgdG8gcmVhbHRpbWUgbW9kZVxuICAgICAgdGhpcy5jb25maWcucmVmcmVzaEludGVydmFsID0gbnVsbDtcbiAgICAgIHRoaXMuY29uZmlnLnJlZnJlc2hPcHRpb24gPSBudWxsO1xuICAgICAgdGhpcy5jb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxBdXRvUmVmcmVzaENvbnRleHQgPSBmYWxzZTtcbiAgICAgIHRoaXMuY29uZmlnLmlzQXV0b1JlZnJlc2hFbmFibGVkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU3dpdGNoaW5nIHdpZGdldCB0byBpbnRlcnZhbCBtb2RlXG4gICAgICB0aGlzLmNvbmZpZy5yZWZyZXNoSW50ZXJ2YWwgPSB0aGlzLmFsYXJtc1ZpZXdTZXJ2aWNlLkRFRkFVTFRfSU5URVJWQUxfVkFMVUU7XG4gICAgICB0aGlzLmNvbmZpZy5yZWZyZXNoT3B0aW9uID0gdGhpcy5hbGFybXNWaWV3U2VydmljZS5ERUZBVUxUX1JFRlJFU0hfT1BUSU9OX1ZBTFVFO1xuICAgICAgdGhpcy5jb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxBdXRvUmVmcmVzaENvbnRleHQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldEFsYXJtcygpOiBQcm9taXNlPElSZXN1bHRMaXN0PElBbGFybT4+IHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5pc0xvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5hbGFybVNlcnZpY2UubGlzdChcbiAgICAgICAgdGhpcy5hbGFybVdpZGdldFNlcnZpY2UubWFwQ29uZmlnVG9RdWVyeUZpbHRlcih0aGlzLmNvbmZpZylcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuYWxlcnRzLmFkZEFsZXJ0cyhcbiAgICAgICAgbmV3IER5bmFtaWNDb21wb25lbnRBbGVydCh7XG4gICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxuICAgICAgICAgIHRleHQ6XG4gICAgICAgICAgICBlcnJvcj8ubmFtZSA9PT0gJ1RpbWVvdXRFcnJvcidcbiAgICAgICAgICAgICAgPyB0aGlzLlRJTUVPVVRfRVJST1JfVEVYVFxuICAgICAgICAgICAgICA6IGVycm9yPy5tZXNzYWdlID8/IHRoaXMuU0VSVkVSX0VSUk9SX1RFWFRcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICBpZiAoZXJyb3I/LnJlcz8uc3RhdHVzID09PSA0MDMpIHtcbiAgICAgICAgdGhpcy5pc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgcmVhbHRpbWUgdXBkYXRlcyBvZiBhbGFybXMgYmFzZWQgb24gdGhlIHdpZGdldCBjb25maWd1cmF0aW9uLlxuICAgKiBJZiBhIHNwZWNpZmljIGRldmljZSBpcyBwcm92aWRlZCBpbiB0aGUgd2lkZ2V0IGNvbmZpZ3VyYXRpb24sIGFsbCBhbGFybXNcbiAgICogb3JpZ2luYXRpbmcgZnJvbSB0aGF0IGRldmljZSBhbmQgaXRzIGNoaWxkcmVuIGFyZSBmaWx0ZXJlZCBiYXNlZCBvbiBzdGF0dXMsIHNldmVyaXR5LCBhbmQgdHlwZS5cbiAgICogT3RoZXJ3aXNlLCBpdCBwcm9jZXNzZXMgYWxsIGluY29taW5nIGFsYXJtcyBhbmQgZmlsdGVycyB0aGVtIGFjY29yZGluZyB0byBzdGF0dXMsIHNldmVyaXR5LCBhbmQgdHlwZSxcbiAgICogYXMgc3BlY2lmaWVkIGluIHRoZSB3aWRnZXQgY29uZmlndXJhdGlvbi4gSWYgbmV3IGFsYXJtcyBtZWV0IHRoZSBzcGVjaWZpZWQgY3JpdGVyaWEsIGl0IHNldHMgYSBmbGFnXG4gICAqIHRvIGluZGljYXRlIHRoZSBwcmVzZW5jZSBvZiBuZXcgYWxhcm1zLlxuICAgKlxuICAgKiBAcGFyYW0gY29uZmlnIC0gVGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3Mgb2YgdGhlIGFsYXJtIGxpc3Qgd2lkZ2V0LlxuICAgKiBAcGFyYW0gaXNSZWFsdGltZVRvZ2dsZU9uIC0gQSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgcmVhbHRpbWUgdG9nZ2xlIGlzIG9uLiBJZiB0cnVlLCB0aGUgYWxhcm0gbGlzdCB3aWxsIGJlIHJlZnJlc2hlZC5cbiAgICogSWYgZmFsc2UsIHRoZSBwcmVzZW5jZSBvZiBuZXcgYWxhcm1zIHdpbGwgYmUgZGlzcGxheWVkIGFzIFwiTmV3IEFsYXJtc1wiIGVudHJ5IG9uIHdpZGdldCByZWZyZXNoIGJ1dHRvbiwgYnV0IHRoZSBsaXN0IHdvbid0IGJlIHJlZnJlc2hlZCBhdXRvbWF0aWNhbGx5LlxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVSZWFsdGltZUFsYXJtcyhjb25maWc6IEFsYXJtTGlzdFdpZGdldENvbmZpZywgaXNSZWFsdGltZVRvZ2dsZU9uOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgY2FsbGJhY2sgPSAoZGF0YTogbnVtYmVyIHwgSUFsYXJtKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuYWxhcm1XaWRnZXRTZXJ2aWNlLmZpbHRlckFsYXJtc0J5U3RhdHVzU2V2ZXJpdHlBbmRUeXBlKFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgdGhpcy5hbGFybXMkLnZhbHVlLmRhdGEsXG4gICAgICAgICAgY29uZmlnXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICBpZiAoaXNSZWFsdGltZVRvZ2dsZU9uKSB7XG4gICAgICAgICAgdGhpcy5mZXRjaEFsYXJtcygpO1xuICAgICAgICAgIHRoaXMuYWxhcm1XaWRnZXRBbGFybXNSZWxvYWRDb21wLmlzTmV3QWxhcm1NZXNzYWdlQ2xlYXJlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5hbGFybVdpZGdldEFsYXJtc1JlbG9hZENvbXAuaXNOZXdBbGFybU1lc3NhZ2VDbGVhcmVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLmRldmljZSkge1xuICAgICAgdGhpcy5oYW5kbGVSZWFsdGltZShcbiAgICAgICAgdGhpcy5hbGFybVdpdGhDaGlsZHJlblJlYWx0aW1lU2VydmljZS5vbkFsbCQuYmluZCh0aGlzLmFsYXJtV2l0aENoaWxkcmVuUmVhbHRpbWVTZXJ2aWNlKSxcbiAgICAgICAgY2FsbGJhY2tcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFuZGxlUmVhbHRpbWUoXG4gICAgICAgIHRoaXMuYWxhcm1SZWFsdGltZVNlcnZpY2Uub25BbGwkLmJpbmQodGhpcy5hbGFybVJlYWx0aW1lU2VydmljZSksXG4gICAgICAgIGNhbGxiYWNrXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHVwIGEgc3Vic2NyaXB0aW9uIHRvIGEgcmVhbHRpbWUgZGF0YSBzdHJlYW0uIFRoaXMgZnVuY3Rpb24gdGFrZXMgYSBzdWJzY3JpYmVyIGZ1bmN0aW9uLFxuICAgKiB3aGljaCBpcyB1c2VkIHRvIHN1YnNjcmliZSB0byB0aGUgZGF0YSBzdHJlYW0sIGFuZCBhIGNhbGxiYWNrIGZ1bmN0aW9uLCB3aGljaCBpcyBjYWxsZWQgd2l0aCBlYWNoXG4gICAqIGRhdGEgdXBkYXRlIHJlY2VpdmVkIGZyb20gdGhlIHN0cmVhbS5cbiAgICpcbiAgICogQHBhcmFtIHN1YnNjcmliZXJGbiAtIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIG9ic2VydmFibGUgc3RyZWFtIG9mIGFsYXJtIGRhdGEuXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIEEgZnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQgd2l0aCBlYWNoIGFsYXJtIGRhdGEgdXBkYXRlLlxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVSZWFsdGltZShcbiAgICBzdWJzY3JpYmVyRm46IChpZD86IHN0cmluZykgPT4gT2JzZXJ2YWJsZTxJUmVzdWx0PElBbGFybT4+LFxuICAgIGNhbGxiYWNrOiAoZGF0YTogSUFsYXJtKSA9PiB2b2lkXG4gICk6IHZvaWQge1xuICAgIHN1YnNjcmliZXJGbih0aGlzLmNvbmZpZy5kZXZpY2U/LmlkKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoeyBkYXRhIH0pID0+IHtcbiAgICAgICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0TGVnYWN5UmVjZW50T3JDcml0aWNhbEFsYXJtV2lkZ2V0Q29uZmlnKCk6IHZvaWQge1xuICAgIGNvbnN0IHdpZGdldElkID0gdGhpcy5kYXNoYm9hcmRDaGlsZFsnZGF0YSddPy5jb21wb25lbnRJZFxuICAgICAgPyB0aGlzLmRhc2hib2FyZENoaWxkWydkYXRhJ10/LmNvbXBvbmVudElkIC8vcHJvcGVydHkgaXMgdXNlZCBpbiBjb2NrcGl0IGRhc2hib2FyZHNcbiAgICAgIDogdGhpcy5kYXNoYm9hcmRDaGlsZFsnZGF0YSddPy5uYW1lOyAvL3Byb3BlcnR5IGlzIHVzZWQgaW4gZGV2aWNlIG1hbmFnZW1lbnQgZGFzaGJvYXJkc1xuXG4gICAgaWYgKHdpZGdldElkID09PSBSRUNFTlRfQUxBUk1TX1dJREdFVF9JRCkge1xuICAgICAgY29uc3QgcHJlZGVmaW5lZENvbmZpZyA9IHRoaXMuYWxhcm1XaWRnZXRTZXJ2aWNlLmdldFByZWRlZmluZWRDb25maWd1cmF0aW9uKFxuICAgICAgICB0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoLFxuICAgICAgICBSRUNFTlRfQUxBUk1TX1dJREdFVF9JRFxuICAgICAgKTtcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5jb25maWcsIHByZWRlZmluZWRDb25maWcpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHdpZGdldElkID09PSBBU1NFVF9BTEFSTVNfV0lER0VUX0lEKSB7XG4gICAgICBjb25zdCBwcmVkZWZpbmVkQ29uZmlnID0gdGhpcy5hbGFybVdpZGdldFNlcnZpY2UuZ2V0UHJlZGVmaW5lZENvbmZpZ3VyYXRpb24oXG4gICAgICAgIHRoaXMuaXNJbnRlcnZhbFJlZnJlc2hcbiAgICAgICk7XG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuY29uZmlnLCBwcmVkZWZpbmVkQ29uZmlnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUdsb2JhbFJlZnJlc2hMb2FkaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuaXNMb2FkaW5nJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHNraXAoMSksXG4gICAgICAgIGdsb2JhbEF1dG9SZWZyZXNoTG9hZGluZyh0aGlzLndpZGdldEdsb2JhbEF1dG9SZWZyZXNoKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxjOHktYWxhcm1zLWxpc3RcbiAgI2xpc3RcbiAgW2FsYXJtc109XCJhbGFybXMkIHwgYXN5bmNcIlxuICBbbmF2aWdhdGlvbk9wdGlvbnNdPVwie1xuICAgIGFsd2F5c05hdmlnYXRlVG9BbGxBbGFybXM6ICFjb25maWcuZGV2aWNlLFxuICAgIGFsbG93TmF2aWdhdGlvblRvQWxhcm1zVmlldzogdHJ1ZSxcbiAgICBpbmNsdWRlQ2xlYXJlZFF1ZXJ5UGFyYW1zOiB0cnVlLFxuICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICcnXG4gIH1cIlxuICBbaXNJbml0aWFsTG9hZGluZ109XCJpc0xvYWRpbmckIHwgYXN5bmNcIlxuICBbaGFzUGVybWlzc2lvbnNdPVwiIWlzRGlzYWJsZWRcIlxuPlxuICA8Yzh5LWFsYXJtcy1kYXRlLWZpbHRlclxuICAgICpuZ0lmPVwiY29uZmlnLmRpc3BsYXlEYXRlU2VsZWN0aW9uXCJcbiAgICBbdXBkYXRlUXVlcnlQYXJhbXNdPVwiZmFsc2VcIlxuICAgIFtkYXRlXT1cInRoaXMuY29uZmlnLmRhdGVGaWx0ZXJcIlxuICAgIFtERUZBVUxUX0lOVEVSVkFMXT1cImNvbmZpZy5pbnRlcnZhbCB8fCAnbm9uZSdcIlxuICAgIChkYXRlRmlsdGVyQ2hhbmdlKT1cIm9uRGF0ZUZpbHRlckNoYW5nZSgkZXZlbnQpXCJcbiAgPjwvYzh5LWFsYXJtcy1kYXRlLWZpbHRlcj5cbiAgPGM4eS1hbGFybS13aWRnZXQtYWxhcm1zLXJlbG9hZFxuICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgW2lzSW50ZXJ2YWxSZWZyZXNoXT1cImlzSW50ZXJ2YWxSZWZyZXNoXCJcbiAgICBbcmVmcmVzaEludGVydmFsXT1cInJlZnJlc2hJbnRlcnZhbFwiXG4gICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nJFwiXG4gICAgW2lzU2Nyb2xsaW5nXT1cImxpc3QuaXNTY3JvbGxpbmdcIlxuICAgIFtpc1JlZnJlc2hEaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcbiAgICAob25Db3VudGRvd25FbmRlZCk9XCJmZXRjaEFsYXJtcygpXCJcbiAgICAob25SZWFsVGltZVRvZ2dsZUNoYW5nZWQpPVwiaGFuZGxlUmVhbFRpbWVUb2dnbGVDaGFuZ2UoJGV2ZW50KVwiXG4gID48L2M4eS1hbGFybS13aWRnZXQtYWxhcm1zLXJlbG9hZD5cbjwvYzh5LWFsYXJtcy1saXN0PlxuIl19
@@ -20,4 +20,4 @@ export var DATE_SELECTION;
20
20
  DATE_SELECTION["VIEW_AND_CONFIG"] = "view_and_config";
21
21
  DATE_SELECTION["DASHBOARD_CONTEXT"] = "dashboard_context";
22
22
  })(DATE_SELECTION || (DATE_SELECTION = {}));
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0tbGlzdC13aWRnZXQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9hbGFybXMvYWxhcm0tbGlzdC13aWRnZXQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBa0QsTUFBTSxxQkFBcUIsQ0FBQztBQUk5RixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUNoQyxTQUFTLEVBQUUsV0FBVztJQUN0QixpQkFBaUIsRUFBRSxtQkFBbUI7SUFDdEMsa0JBQWtCLEVBQUUsb0JBQW9CO0lBQ3hDLFdBQVcsRUFBRSxhQUFhO0NBQ2xCLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUNoQyxTQUFTLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixDQUF1QjtJQUM1RCxpQkFBaUIsRUFBRSxPQUFPLENBQUMscUJBQXFCLENBQTBCO0lBQzFFLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBMkI7SUFDN0UsV0FBVyxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQWtCO0NBQzVDLENBQUM7QUFNWCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxjQUFjLENBQUM7QUFFckQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsZUFBZSxDQUFDO0FBSXZELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUEyQixpQkFBaUIsQ0FBQztBQWlCaEYsTUFBTSxDQUFOLElBQVksY0FJWDtBQUpELFdBQVksY0FBYztJQUN4QixtQ0FBaUIsQ0FBQTtJQUNqQixxREFBbUMsQ0FBQTtJQUNuQyx5REFBdUMsQ0FBQTtBQUN6QyxDQUFDLEVBSlcsY0FBYyxLQUFkLGNBQWMsUUFJekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXR0ZXh0LCBHbG9iYWxBdXRvUmVmcmVzaFdpZGdldENvbmZpZywgRGF0ZVRpbWVDb250ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBTZXZlcml0eUZpbHRlciwgQWxhcm1TdGF0dXNTZXR0aW5ncyB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFsYXJtRmlsdGVySW50ZXJ2YWwgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ludGVydmFsLXBpY2tlcic7XG5cbmV4cG9ydCBjb25zdCBBTEFSTV9PUkRFUl9WQUxVRVMgPSB7XG4gIEJZX0FDVElWRTogJ0JZX0FDVElWRScsXG4gIEJZX0RBVEVfQVNDRU5ESU5HOiAnQllfREFURV9BU0NFTkRJTkcnLFxuICBCWV9EQVRFX0RFU0NFTkRJTkc6ICdCWV9EQVRFX0RFU0NFTkRJTkcnLFxuICBCWV9TRVZFUklUWTogJ0JZX1NFVkVSSVRZJ1xufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEFMQVJNX09SREVSX0xBQkVMUyA9IHtcbiAgQllfQUNUSVZFOiBnZXR0ZXh0KCdCeSBhY3RpdmUgc3RhdHVzJykgYXMgJ0J5IGFjdGl2ZSBzdGF0dXMnLFxuICBCWV9EQVRFX0FTQ0VORElORzogZ2V0dGV4dCgnQnkgZGF0ZSAoYXNjZW5kaW5nKScpIGFzICdCeSBkYXRlIChhc2NlbmRpbmcpJyxcbiAgQllfREFURV9ERVNDRU5ESU5HOiBnZXR0ZXh0KCdCeSBkYXRlIChkZXNjZW5kaW5nKScpIGFzICdCeSBkYXRlIChkZXNjZW5kaW5nKScsXG4gIEJZX1NFVkVSSVRZOiBnZXR0ZXh0KCdCeSBzZXZlcml0eScpIGFzICdCeSBzZXZlcml0eSdcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEFsYXJtT3JkZXJUeXBlID0ga2V5b2YgdHlwZW9mIEFMQVJNX09SREVSX1ZBTFVFUztcblxuZXhwb3J0IHR5cGUgU2VsZWN0ZWREZXZpY2UgPSB7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9O1xuXG5leHBvcnQgY29uc3QgQVNTRVRfQUxBUk1TX1dJREdFVF9JRCA9ICdBc3NldCBBbGFybXMnO1xuXG5leHBvcnQgY29uc3QgUkVDRU5UX0FMQVJNU19XSURHRVRfSUQgPSAnUmVjZW50IEFsYXJtcyc7XG5cbmV4cG9ydCB0eXBlIEFsYXJtTGlzdFJlZnJlc2hPcHRpb24gPSAnbm9uZScgfCAnaW50ZXJ2YWwnIHwgJ2dsb2JhbC1pbnRlcnZhbCc7XG5cbmV4cG9ydCBjb25zdCBHTE9CQUxfSU5URVJWQUxfT1BUSU9OOiBBbGFybUxpc3RSZWZyZXNoT3B0aW9uID0gJ2dsb2JhbC1pbnRlcnZhbCc7XG5cbmV4cG9ydCB0eXBlIExlZ2FjeUFsYXJtTGlzdENvbmZpZyA9IHtcbiAgcmVhbHRpbWU6IGJvb2xlYW47XG4gIG9wdGlvbnM6IHtcbiAgICBzZXZlcml0eTogU2V2ZXJpdHlGaWx0ZXI7XG4gICAgdHlwZXM6IHN0cmluZ1tdO1xuICAgIG9yZGVyTW9kZTogc3RyaW5nO1xuICAgIGRldmljZTogc3RyaW5nO1xuICAgIHN0YXR1czogQWxhcm1TdGF0dXNTZXR0aW5ncztcbiAgfTtcbiAgZGV2aWNlPzoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpZDogc3RyaW5nO1xuICB9O1xufTtcblxuZXhwb3J0IGVudW0gREFURV9TRUxFQ1RJT04ge1xuICBDT05GSUcgPSAnY29uZmlnJyxcbiAgVklFV19BTkRfQ09ORklHID0gJ3ZpZXdfYW5kX2NvbmZpZycsXG4gIERBU0hCT0FSRF9DT05URVhUID0gJ2Rhc2hib2FyZF9jb250ZXh0J1xufVxuZXhwb3J0IGludGVyZmFjZSBBbGFybUxpc3RXaWRnZXRDb25maWcgZXh0ZW5kcyBHbG9iYWxBdXRvUmVmcmVzaFdpZGdldENvbmZpZyB7XG4gIG9yZGVyOiBBbGFybU9yZGVyVHlwZTtcbiAgaXNSZWFsdGltZT86IGJvb2xlYW47XG4gIHNob3dBbGFybXNGb3JDaGlsZHJlbj86IGJvb2xlYW47XG4gIHJlZnJlc2hJbnRlcnZhbD86IG51bWJlcjtcbiAgaXNBdXRvUmVmcmVzaEVuYWJsZWQ/OiBib29sZWFuO1xuICByZWZyZXNoT3B0aW9uPzogQWxhcm1MaXN0UmVmcmVzaE9wdGlvbjtcbiAgZGV2aWNlPzogU2VsZWN0ZWREZXZpY2U7XG4gIHNldmVyaXRpZXM6IFNldmVyaXR5RmlsdGVyO1xuICBzdGF0dXM6IEFsYXJtU3RhdHVzU2V0dGluZ3M7XG4gIHR5cGVzPzogc3RyaW5nW107XG4gIGRhdGVGaWx0ZXI/OiBEYXRlVGltZUNvbnRleHQ7XG4gIHdpZGdldEluc3RhbmNlR2xvYmFsVGltZUNvbnRleHQ/OiBib29sZWFuO1xuICBkaXNwbGF5RGF0ZVNlbGVjdGlvbj86IGJvb2xlYW47XG4gIGludGVydmFsPzogQWxhcm1GaWx0ZXJJbnRlcnZhbFsnaWQnXTtcbn1cbiJdfQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0tbGlzdC13aWRnZXQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9hbGFybXMvYWxhcm0tbGlzdC13aWRnZXQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBa0QsTUFBTSxxQkFBcUIsQ0FBQztBQUk5RixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUNoQyxTQUFTLEVBQUUsV0FBVztJQUN0QixpQkFBaUIsRUFBRSxtQkFBbUI7SUFDdEMsa0JBQWtCLEVBQUUsb0JBQW9CO0lBQ3hDLFdBQVcsRUFBRSxhQUFhO0NBQ2xCLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUNoQyxTQUFTLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixDQUF1QjtJQUM1RCxpQkFBaUIsRUFBRSxPQUFPLENBQUMscUJBQXFCLENBQTBCO0lBQzFFLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBMkI7SUFDN0UsV0FBVyxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQWtCO0NBQzVDLENBQUM7QUFNWCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxjQUFjLENBQUM7QUFFckQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsZUFBZSxDQUFDO0FBSXZELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUEyQixpQkFBaUIsQ0FBQztBQWlCaEYsTUFBTSxDQUFOLElBQVksY0FJWDtBQUpELFdBQVksY0FBYztJQUN4QixtQ0FBaUIsQ0FBQTtJQUNqQixxREFBbUMsQ0FBQTtJQUNuQyx5REFBdUMsQ0FBQTtBQUN6QyxDQUFDLEVBSlcsY0FBYyxLQUFkLGNBQWMsUUFJekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXR0ZXh0LCBHbG9iYWxBdXRvUmVmcmVzaFdpZGdldENvbmZpZywgRGF0ZVRpbWVDb250ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBTZXZlcml0eUZpbHRlciwgQWxhcm1TdGF0dXNTZXR0aW5ncyB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFsYXJtRmlsdGVySW50ZXJ2YWwgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ludGVydmFsLXBpY2tlcic7XG5cbmV4cG9ydCBjb25zdCBBTEFSTV9PUkRFUl9WQUxVRVMgPSB7XG4gIEJZX0FDVElWRTogJ0JZX0FDVElWRScsXG4gIEJZX0RBVEVfQVNDRU5ESU5HOiAnQllfREFURV9BU0NFTkRJTkcnLFxuICBCWV9EQVRFX0RFU0NFTkRJTkc6ICdCWV9EQVRFX0RFU0NFTkRJTkcnLFxuICBCWV9TRVZFUklUWTogJ0JZX1NFVkVSSVRZJ1xufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEFMQVJNX09SREVSX0xBQkVMUyA9IHtcbiAgQllfQUNUSVZFOiBnZXR0ZXh0KCdCeSBhY3RpdmUgc3RhdHVzJykgYXMgJ0J5IGFjdGl2ZSBzdGF0dXMnLFxuICBCWV9EQVRFX0FTQ0VORElORzogZ2V0dGV4dCgnQnkgZGF0ZSAoYXNjZW5kaW5nKScpIGFzICdCeSBkYXRlIChhc2NlbmRpbmcpJyxcbiAgQllfREFURV9ERVNDRU5ESU5HOiBnZXR0ZXh0KCdCeSBkYXRlIChkZXNjZW5kaW5nKScpIGFzICdCeSBkYXRlIChkZXNjZW5kaW5nKScsXG4gIEJZX1NFVkVSSVRZOiBnZXR0ZXh0KCdCeSBzZXZlcml0eScpIGFzICdCeSBzZXZlcml0eSdcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEFsYXJtT3JkZXJUeXBlID0ga2V5b2YgdHlwZW9mIEFMQVJNX09SREVSX1ZBTFVFUztcblxuZXhwb3J0IHR5cGUgU2VsZWN0ZWREZXZpY2UgPSB7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9O1xuXG5leHBvcnQgY29uc3QgQVNTRVRfQUxBUk1TX1dJREdFVF9JRCA9ICdBc3NldCBBbGFybXMnO1xuXG5leHBvcnQgY29uc3QgUkVDRU5UX0FMQVJNU19XSURHRVRfSUQgPSAnUmVjZW50IEFsYXJtcyc7XG5cbmV4cG9ydCB0eXBlIEFsYXJtTGlzdFJlZnJlc2hPcHRpb24gPSAnbm9uZScgfCAnaW50ZXJ2YWwnIHwgJ2dsb2JhbC1pbnRlcnZhbCc7XG5cbmV4cG9ydCBjb25zdCBHTE9CQUxfSU5URVJWQUxfT1BUSU9OOiBBbGFybUxpc3RSZWZyZXNoT3B0aW9uID0gJ2dsb2JhbC1pbnRlcnZhbCc7XG5cbmV4cG9ydCB0eXBlIExlZ2FjeUFsYXJtTGlzdENvbmZpZyA9IHtcbiAgcmVhbHRpbWU6IGJvb2xlYW47XG4gIG9wdGlvbnM6IHtcbiAgICBzZXZlcml0eTogU2V2ZXJpdHlGaWx0ZXI7XG4gICAgdHlwZXM6IHN0cmluZ1tdO1xuICAgIG9yZGVyTW9kZTogc3RyaW5nO1xuICAgIGRldmljZTogc3RyaW5nO1xuICAgIHN0YXR1czogQWxhcm1TdGF0dXNTZXR0aW5ncztcbiAgfTtcbiAgZGV2aWNlPzoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpZDogc3RyaW5nO1xuICB9O1xufTtcblxuZXhwb3J0IGVudW0gREFURV9TRUxFQ1RJT04ge1xuICBDT05GSUcgPSAnY29uZmlnJyxcbiAgVklFV19BTkRfQ09ORklHID0gJ3ZpZXdfYW5kX2NvbmZpZycsXG4gIERBU0hCT0FSRF9DT05URVhUID0gJ2Rhc2hib2FyZF9jb250ZXh0J1xufVxuZXhwb3J0IGludGVyZmFjZSBBbGFybUxpc3RXaWRnZXRDb25maWcgZXh0ZW5kcyBHbG9iYWxBdXRvUmVmcmVzaFdpZGdldENvbmZpZyB7XG4gIG9yZGVyOiBBbGFybU9yZGVyVHlwZTtcbiAgaXNSZWFsdGltZT86IGJvb2xlYW47XG4gIHNob3dBbGFybXNGb3JDaGlsZHJlbj86IGJvb2xlYW47XG4gIHJlZnJlc2hJbnRlcnZhbD86IG51bWJlcjtcbiAgaXNBdXRvUmVmcmVzaEVuYWJsZWQ/OiBib29sZWFuO1xuICByZWZyZXNoT3B0aW9uPzogQWxhcm1MaXN0UmVmcmVzaE9wdGlvbjtcbiAgZGV2aWNlPzogU2VsZWN0ZWREZXZpY2U7XG4gIHNldmVyaXRpZXM6IFNldmVyaXR5RmlsdGVyO1xuICBzdGF0dXM6IEFsYXJtU3RhdHVzU2V0dGluZ3M7XG4gIHR5cGVzPzogc3RyaW5nW107XG4gIGRhdGVGaWx0ZXI/OiBEYXRlVGltZUNvbnRleHQ7XG4gIHdpZGdldEluc3RhbmNlR2xvYmFsVGltZUNvbnRleHQ/OiBib29sZWFuO1xuICBkaXNwbGF5RGF0ZVNlbGVjdGlvbj86IGJvb2xlYW47XG4gIGludGVydmFsPzogQWxhcm1GaWx0ZXJJbnRlcnZhbFsnaWQnXTtcbiAgZGlzcGxheVNldHRpbmdzPzoge1xuICAgIGdsb2JhbFRpbWVDb250ZXh0OiBib29sZWFuO1xuICAgIGdsb2JhbEF1dG9SZWZyZXNoQ29udGV4dDogYm9vbGVhbjtcbiAgfTtcbn1cbiJdfQ==
@@ -1,9 +1,9 @@
1
1
  import { ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
- import { CountdownIntervalComponent, gettext, WidgetGlobalAutoRefreshService } from '@c8y/ngx-components';
2
+ import { CountdownIntervalComponent, gettext, IntervalBasedReload, WidgetGlobalAutoRefreshService } from '@c8y/ngx-components';
3
3
  import { AlarmsViewService } from '@c8y/ngx-components/alarms';
4
4
  import { TranslateService } from '@ngx-translate/core';
5
5
  import { BehaviorSubject } from 'rxjs';
6
- import { filter, tap } from 'rxjs/operators';
6
+ import { tap } from 'rxjs/operators';
7
7
  import { GLOBAL_INTERVAL_OPTION } from './alarm-list-widget.model';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@c8y/ngx-components/alarms";
@@ -11,16 +11,16 @@ import * as i2 from "@ngx-translate/core";
11
11
  import * as i3 from "@c8y/ngx-components";
12
12
  import * as i4 from "@angular/common";
13
13
  import * as i5 from "ngx-bootstrap/tooltip";
14
- export class AlarmWidgetAlarmsReloadComponent {
14
+ export class AlarmWidgetAlarmsReloadComponent extends IntervalBasedReload {
15
15
  constructor(alarmsViewService, cdRef, translateService, widgetGlobalAutoRefreshService) {
16
+ super();
16
17
  this.alarmsViewService = alarmsViewService;
17
18
  this.cdRef = cdRef;
18
19
  this.translateService = translateService;
19
20
  this.widgetGlobalAutoRefreshService = widgetGlobalAutoRefreshService;
20
21
  this.REALTIME_UPDATE_ALARMS_MESSAGE = this.alarmsViewService.REALTIME_UPDATE_ALARMS_MESSAGE;
21
- this.isDisabled = false;
22
22
  /**
23
- * Indicates that a countdown cycle has ended.
23
+ * @inheritdoc
24
24
  */
25
25
  this.onCountdownEnded = new EventEmitter();
26
26
  /**
@@ -32,7 +32,7 @@ export class AlarmWidgetAlarmsReloadComponent {
32
32
  */
33
33
  this.isNewAlarmMessageCleared = true;
34
34
  /**
35
- * Indicates whether the countdown has been manually disabled by the user.
35
+ * @inheritdoc
36
36
  */
37
37
  this.manuallyDisabledCountdown = false;
38
38
  }
@@ -43,7 +43,7 @@ export class AlarmWidgetAlarmsReloadComponent {
43
43
  }
44
44
  else {
45
45
  this.isIntervalRefreshToggleOn =
46
- !this.isDisabled && (this.config.isAutoRefreshEnabled || !!this.refreshInterval);
46
+ !this.isRefreshDisabled && (this.config.isAutoRefreshEnabled || !!this.refreshInterval);
47
47
  this.updateCountdownButtonTooltipText();
48
48
  }
49
49
  }
@@ -64,7 +64,7 @@ export class AlarmWidgetAlarmsReloadComponent {
64
64
  }
65
65
  if (isDisabled) {
66
66
  this.isIntervalRefreshToggleOn =
67
- !this.isDisabled && (this.config.isAutoRefreshEnabled || !!this.refreshInterval);
67
+ !this.isRefreshDisabled && (this.config.isAutoRefreshEnabled || !!this.refreshInterval);
68
68
  this.updateCountdownButtonTooltipText(gettext('Disabled'));
69
69
  }
70
70
  if (!this.isIntervalRefresh ||
@@ -80,53 +80,12 @@ export class AlarmWidgetAlarmsReloadComponent {
80
80
  }
81
81
  }
82
82
  /**
83
- * This function listens for changes in the `isLoading` observable, filtering out any truthy values.
84
- * Once a falsy value is detected (indicating that loading has finished), it attempts to start the countdown.
85
- *
86
- * IMPORTANT: If the widget's configuration (refreshInterval, check template) is not set prior to executing countdownIntervalComponent?.start,
87
- * the countdown interval will not start!
88
- */
89
- startCountdown() {
90
- this.countdownSubscription = this.isLoading
91
- .pipe(filter(isLoading => !Boolean(isLoading)), tap(() => {
92
- this.countdownIntervalComponent?.start();
93
- }))
94
- .subscribe();
95
- }
96
- /**
97
- * Handles the toggle state of the countdown on button click.
98
- *
99
- * This method is triggered by a mouse event, typically a click on the countdown toggle button.
100
- * It toggles `isIntervalRefreshToggleOn` to reflect the current state of the countdown timer.
101
- *
102
- * - If `isIntervalRefreshToggleOn` is set to false, indicating that the countdown should be stopped,
103
- * `disableCountdown` is called, and `manuallyDisabledCountdown` is set to true.
104
- *
105
- * - If `isIntervalRefreshToggleOn` is true and the countdown subscription is closed, indicating that
106
- * the countdown can be started, `enableCountdown` is called, and `manuallyDisabledCountdown`
107
- * is set to false.
108
- *
109
- * @param $event - The MouseEvent that triggered this method.
110
- */
111
- onToggleCountdownButtonState($event) {
112
- $event.preventDefault();
113
- this.isIntervalRefreshToggleOn = !this.isDisabled && !this.isIntervalRefreshToggleOn;
114
- this.updateCountdownButtonTooltipText();
115
- if (!this.isIntervalRefreshToggleOn) {
116
- this.disableCountdown();
117
- this.manuallyDisabledCountdown = true;
118
- return;
119
- }
120
- const onRefreshToggleOn = this.isIntervalRefreshToggleOn && this.countdownSubscription.closed;
121
- if (onRefreshToggleOn) {
122
- this.enableCountdown();
123
- this.manuallyDisabledCountdown = false;
124
- }
125
- }
126
- /**
127
- * Wrapper method where it's name better describes a context where it was called.
83
+ * @inheritdoc
128
84
  */
129
85
  countdownEnded() {
86
+ /**
87
+ * @inheritdoc
88
+ */
130
89
  this.autoRefreshList();
131
90
  }
132
91
  reload() {
@@ -172,35 +131,6 @@ export class AlarmWidgetAlarmsReloadComponent {
172
131
  ? this.translateService.instant(gettext('Realtime active'))
173
132
  : this.translateService.instant(gettext('Realtime inactive'));
174
133
  }
175
- /**
176
- * Manages the countdown timer's visibility and state in response to user scrolling.
177
- *
178
- * This method toggles the countdown timer based on the user's scrolling behavior. It uses
179
- * the `disableCountdown` and `enableCountdown` methods for handling the countdown state.
180
- *
181
- * - If the user is scrolling down while the countdown is visible (`isScrolling` is true and
182
- * `hideCountdown` is false), `disableCountdown` is called to stop and hide the countdown,
183
- * and `isIntervalRefreshToggleOn` is set to false.
184
- *
185
- * - If the user has stopped scrolling, the countdown subscription is closed, and the countdown
186
- * is hidden (`!isScrolling`, `countdownSubscription?.closed`, `hideCountdown`), `enableCountdown`
187
- * is called to show and restart the countdown, and `isIntervalRefreshToggleOn` is set to true.
188
- */
189
- handleScrolling() {
190
- // Checks if the user has scrolled down while the countdown is visible
191
- const onUserScrollDownHide = this.isScrolling && !this.hideCountdown;
192
- if (onUserScrollDownHide) {
193
- this.disableCountdown();
194
- this.isIntervalRefreshToggleOn = false;
195
- return;
196
- }
197
- // Checks if the user has stopped scrolling and the countdown is currently hidden
198
- const onUserScrollTopShow = !this.isScrolling && this.countdownSubscription?.closed && this.hideCountdown;
199
- if (onUserScrollTopShow) {
200
- this.isIntervalRefreshToggleOn = true;
201
- this.enableCountdown();
202
- }
203
- }
204
134
  /**
205
135
  * Enables and starts the countdown timer.
206
136
  *
@@ -216,20 +146,7 @@ export class AlarmWidgetAlarmsReloadComponent {
216
146
  this.startCountdown();
217
147
  }
218
148
  /**
219
- * Disables and hides the countdown timer.
220
- *
221
- * This method stops the ongoing countdown process by unsubscribing from `countdownSubscription`
222
- * and stopping the `countdownIntervalComponent` if it exists. It then hides the countdown timer
223
- * by setting `hideCountdown` to true. This method encapsulates the logic required to halt and
224
- * conceal the countdown timer.
225
- */
226
- disableCountdown() {
227
- this.countdownSubscription.unsubscribe();
228
- this.countdownIntervalComponent?.stop();
229
- this.hideCountdown = true;
230
- }
231
- /**
232
- * Updates the countdown button tooltip text based on the state of the interval refresh toggle state.
149
+ * @inheritdoc
233
150
  */
234
151
  updateCountdownButtonTooltipText(customText) {
235
152
  if (customText) {
@@ -241,11 +158,11 @@ export class AlarmWidgetAlarmsReloadComponent {
241
158
  : this.translateService.instant(gettext('Enable auto refresh'));
242
159
  }
243
160
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlarmWidgetAlarmsReloadComponent, deps: [{ token: i1.AlarmsViewService }, { token: i0.ChangeDetectorRef }, { token: i2.TranslateService }, { token: i3.WidgetGlobalAutoRefreshService }], target: i0.ɵɵFactoryTarget.Component }); }
244
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AlarmWidgetAlarmsReloadComponent, selector: "c8y-alarm-widget-alarms-reload", inputs: { isIntervalRefresh: "isIntervalRefresh", refreshInterval: "refreshInterval", config: "config", isLoading: "isLoading", isScrolling: "isScrolling", isDisabled: "isDisabled" }, outputs: { onCountdownEnded: "onCountdownEnded", onRealTimeToggleChanged: "onRealTimeToggleChanged" }, viewQueries: [{ propertyName: "countdownIntervalComponent", first: true, predicate: CountdownIntervalComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"m-l-auto d-flex p-t-4 p-b-4\"\n *ngIf=\"!globalAutoRefreshEnabled\"\n>\n <div class=\"m-l-auto d-flex a-i-center\">\n <label\n class=\"m-b-0 m-r-8 text-label-small text-truncate flex-no-shrink\"\n title=\" {{ 'Auto refresh' | translate }}\"\n *ngIf=\"isIntervalRefresh && refreshInterval && config.isAutoRefreshEnabled\"\n >\n {{ 'Auto refresh' | translate }}\n </label>\n <div class=\"input-group\">\n <label\n class=\"toggle-countdown\"\n [class.toggle-countdown-disabled]=\"isDisabled\"\n [attr.aria-label]=\"toggleCountdownButtonTooltipText\"\n [tooltip]=\"toggleCountdownButtonTooltipText\"\n placement=\"bottom\"\n *ngIf=\"isIntervalRefresh && refreshInterval && config.isAutoRefreshEnabled\"\n [adaptivePosition]=\"false\"\n [container]=\"'body'\"\n [delay]=\"500\"\n >\n <input\n type=\"checkbox\"\n data-cy=\"c8y-alarms-widget--interval-toggle-button\"\n (click)=\"onToggleCountdownButtonState($event)\"\n />\n <c8y-countdown-interval\n *ngIf=\"isIntervalRefreshToggleOn\"\n [countdownInterval]=\"refreshInterval\"\n (countdownEnded)=\"countdownEnded()\"\n ></c8y-countdown-interval>\n <i\n c8yIcon=\"pause\"\n *ngIf=\"!isIntervalRefreshToggleOn\"\n ></i>\n </label>\n\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Refresh' | translate\"\n [tooltip]=\"\n !isNewAlarmMessageCleared\n ? (REALTIME_UPDATE_ALARMS_MESSAGE | translate)\n : ('Refresh' | translate)\n \"\n placement=\"bottom\"\n type=\"button\"\n [adaptivePosition]=\"false\"\n [container]=\"'body'\"\n [delay]=\"500\"\n [disabled]=\"isDisabled || (isLoading | async)\"\n (click)=\"reload()\"\n data-cy=\"c8y-alarms-widget--reload-button\"\n >\n <span\n class=\"tag tag--info m-r-8\"\n *ngIf=\"!isNewAlarmMessageCleared\"\n >\n {{ 'New alarms' | translate }}\n </span>\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': isLoading | async }\"\n ></i>\n </button>\n </div>\n <div\n class=\"input-group-btn input-group-btn--last\"\n *ngIf=\"!isIntervalRefresh\"\n >\n <button\n class=\"c8y-realtime btn btn-default\"\n [attr.aria-label]=\"realtimeIconTitle\"\n [tooltip]=\"realtimeIconTitle\"\n placement=\"bottom\"\n type=\"button\"\n [container]=\"'body'\"\n (click)=\"toggleRealtimeState()\"\n [disabled]=\"isDisabled\"\n >\n <span\n class=\"c8y-pulse m-0\"\n [ngClass]=\"{\n active: isRealtimeToggleOn,\n inactive: !isRealtimeToggleOn\n }\"\n ></span>\n </button>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.CountdownIntervalComponent, selector: "c8y-countdown-interval", inputs: ["countdownInterval"], outputs: ["countdownEnded"] }, { kind: "directive", type: i5.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] }); }
161
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AlarmWidgetAlarmsReloadComponent, selector: "c8y-alarm-widget-alarms-reload", inputs: { isIntervalRefresh: "isIntervalRefresh", refreshInterval: "refreshInterval", config: "config", isLoading: "isLoading", isScrolling: "isScrolling", isRefreshDisabled: "isRefreshDisabled" }, outputs: { onCountdownEnded: "onCountdownEnded", onRealTimeToggleChanged: "onRealTimeToggleChanged" }, viewQueries: [{ propertyName: "countdownIntervalComponent", first: true, predicate: CountdownIntervalComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"m-l-auto d-flex p-t-4 p-b-4\"\n *ngIf=\"!globalAutoRefreshEnabled\"\n>\n <div class=\"m-l-auto d-flex a-i-center\">\n <label\n class=\"m-b-0 m-r-8 text-label-small text-truncate flex-no-shrink\"\n title=\" {{ 'Auto refresh' | translate }}\"\n *ngIf=\"isIntervalRefresh && refreshInterval && config.isAutoRefreshEnabled\"\n >\n {{ 'Auto refresh' | translate }}\n </label>\n <div class=\"input-group\">\n <label\n class=\"toggle-countdown\"\n [class.toggle-countdown-disabled]=\"isRefreshDisabled\"\n [attr.aria-label]=\"toggleCountdownButtonTooltipText\"\n [tooltip]=\"toggleCountdownButtonTooltipText\"\n placement=\"bottom\"\n *ngIf=\"isIntervalRefresh && refreshInterval && config.isAutoRefreshEnabled\"\n [adaptivePosition]=\"false\"\n [container]=\"'body'\"\n [delay]=\"500\"\n >\n <input\n type=\"checkbox\"\n data-cy=\"c8y-alarms-widget--interval-toggle-button\"\n (click)=\"onToggleCountdownButtonState($event)\"\n />\n <c8y-countdown-interval\n *ngIf=\"isIntervalRefreshToggleOn\"\n [countdownInterval]=\"refreshInterval\"\n (countdownEnded)=\"countdownEnded()\"\n ></c8y-countdown-interval>\n <i\n c8yIcon=\"pause\"\n *ngIf=\"!isIntervalRefreshToggleOn\"\n ></i>\n </label>\n\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Refresh' | translate\"\n [tooltip]=\"\n !isNewAlarmMessageCleared\n ? (REALTIME_UPDATE_ALARMS_MESSAGE | translate)\n : ('Refresh' | translate)\n \"\n placement=\"bottom\"\n type=\"button\"\n [adaptivePosition]=\"false\"\n [container]=\"'body'\"\n [delay]=\"500\"\n [disabled]=\"isRefreshDisabled || (isLoading | async)\"\n (click)=\"reload()\"\n data-cy=\"c8y-alarms-widget--reload-button\"\n >\n <span\n class=\"tag tag--info m-r-8\"\n *ngIf=\"!isNewAlarmMessageCleared\"\n >\n {{ 'New alarms' | translate }}\n </span>\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': isLoading | async }\"\n ></i>\n </button>\n </div>\n <div\n class=\"input-group-btn input-group-btn--last\"\n *ngIf=\"!isIntervalRefresh\"\n >\n <button\n class=\"c8y-realtime btn btn-default\"\n [attr.aria-label]=\"realtimeIconTitle\"\n [tooltip]=\"realtimeIconTitle\"\n placement=\"bottom\"\n type=\"button\"\n [container]=\"'body'\"\n (click)=\"toggleRealtimeState()\"\n [disabled]=\"isRefreshDisabled\"\n >\n <span\n class=\"c8y-pulse m-0\"\n [ngClass]=\"{\n active: isRealtimeToggleOn,\n inactive: !isRealtimeToggleOn\n }\"\n ></span>\n </button>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.CountdownIntervalComponent, selector: "c8y-countdown-interval", inputs: ["countdownInterval"], outputs: ["countdownEnded"] }, { kind: "directive", type: i5.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] }); }
245
162
  }
246
163
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlarmWidgetAlarmsReloadComponent, decorators: [{
247
164
  type: Component,
248
- args: [{ selector: 'c8y-alarm-widget-alarms-reload', template: "<div\n class=\"m-l-auto d-flex p-t-4 p-b-4\"\n *ngIf=\"!globalAutoRefreshEnabled\"\n>\n <div class=\"m-l-auto d-flex a-i-center\">\n <label\n class=\"m-b-0 m-r-8 text-label-small text-truncate flex-no-shrink\"\n title=\" {{ 'Auto refresh' | translate }}\"\n *ngIf=\"isIntervalRefresh && refreshInterval && config.isAutoRefreshEnabled\"\n >\n {{ 'Auto refresh' | translate }}\n </label>\n <div class=\"input-group\">\n <label\n class=\"toggle-countdown\"\n [class.toggle-countdown-disabled]=\"isDisabled\"\n [attr.aria-label]=\"toggleCountdownButtonTooltipText\"\n [tooltip]=\"toggleCountdownButtonTooltipText\"\n placement=\"bottom\"\n *ngIf=\"isIntervalRefresh && refreshInterval && config.isAutoRefreshEnabled\"\n [adaptivePosition]=\"false\"\n [container]=\"'body'\"\n [delay]=\"500\"\n >\n <input\n type=\"checkbox\"\n data-cy=\"c8y-alarms-widget--interval-toggle-button\"\n (click)=\"onToggleCountdownButtonState($event)\"\n />\n <c8y-countdown-interval\n *ngIf=\"isIntervalRefreshToggleOn\"\n [countdownInterval]=\"refreshInterval\"\n (countdownEnded)=\"countdownEnded()\"\n ></c8y-countdown-interval>\n <i\n c8yIcon=\"pause\"\n *ngIf=\"!isIntervalRefreshToggleOn\"\n ></i>\n </label>\n\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Refresh' | translate\"\n [tooltip]=\"\n !isNewAlarmMessageCleared\n ? (REALTIME_UPDATE_ALARMS_MESSAGE | translate)\n : ('Refresh' | translate)\n \"\n placement=\"bottom\"\n type=\"button\"\n [adaptivePosition]=\"false\"\n [container]=\"'body'\"\n [delay]=\"500\"\n [disabled]=\"isDisabled || (isLoading | async)\"\n (click)=\"reload()\"\n data-cy=\"c8y-alarms-widget--reload-button\"\n >\n <span\n class=\"tag tag--info m-r-8\"\n *ngIf=\"!isNewAlarmMessageCleared\"\n >\n {{ 'New alarms' | translate }}\n </span>\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': isLoading | async }\"\n ></i>\n </button>\n </div>\n <div\n class=\"input-group-btn input-group-btn--last\"\n *ngIf=\"!isIntervalRefresh\"\n >\n <button\n class=\"c8y-realtime btn btn-default\"\n [attr.aria-label]=\"realtimeIconTitle\"\n [tooltip]=\"realtimeIconTitle\"\n placement=\"bottom\"\n type=\"button\"\n [container]=\"'body'\"\n (click)=\"toggleRealtimeState()\"\n [disabled]=\"isDisabled\"\n >\n <span\n class=\"c8y-pulse m-0\"\n [ngClass]=\"{\n active: isRealtimeToggleOn,\n inactive: !isRealtimeToggleOn\n }\"\n ></span>\n </button>\n </div>\n </div>\n </div>\n</div>\n" }]
165
+ args: [{ selector: 'c8y-alarm-widget-alarms-reload', template: "<div\n class=\"m-l-auto d-flex p-t-4 p-b-4\"\n *ngIf=\"!globalAutoRefreshEnabled\"\n>\n <div class=\"m-l-auto d-flex a-i-center\">\n <label\n class=\"m-b-0 m-r-8 text-label-small text-truncate flex-no-shrink\"\n title=\" {{ 'Auto refresh' | translate }}\"\n *ngIf=\"isIntervalRefresh && refreshInterval && config.isAutoRefreshEnabled\"\n >\n {{ 'Auto refresh' | translate }}\n </label>\n <div class=\"input-group\">\n <label\n class=\"toggle-countdown\"\n [class.toggle-countdown-disabled]=\"isRefreshDisabled\"\n [attr.aria-label]=\"toggleCountdownButtonTooltipText\"\n [tooltip]=\"toggleCountdownButtonTooltipText\"\n placement=\"bottom\"\n *ngIf=\"isIntervalRefresh && refreshInterval && config.isAutoRefreshEnabled\"\n [adaptivePosition]=\"false\"\n [container]=\"'body'\"\n [delay]=\"500\"\n >\n <input\n type=\"checkbox\"\n data-cy=\"c8y-alarms-widget--interval-toggle-button\"\n (click)=\"onToggleCountdownButtonState($event)\"\n />\n <c8y-countdown-interval\n *ngIf=\"isIntervalRefreshToggleOn\"\n [countdownInterval]=\"refreshInterval\"\n (countdownEnded)=\"countdownEnded()\"\n ></c8y-countdown-interval>\n <i\n c8yIcon=\"pause\"\n *ngIf=\"!isIntervalRefreshToggleOn\"\n ></i>\n </label>\n\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Refresh' | translate\"\n [tooltip]=\"\n !isNewAlarmMessageCleared\n ? (REALTIME_UPDATE_ALARMS_MESSAGE | translate)\n : ('Refresh' | translate)\n \"\n placement=\"bottom\"\n type=\"button\"\n [adaptivePosition]=\"false\"\n [container]=\"'body'\"\n [delay]=\"500\"\n [disabled]=\"isRefreshDisabled || (isLoading | async)\"\n (click)=\"reload()\"\n data-cy=\"c8y-alarms-widget--reload-button\"\n >\n <span\n class=\"tag tag--info m-r-8\"\n *ngIf=\"!isNewAlarmMessageCleared\"\n >\n {{ 'New alarms' | translate }}\n </span>\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': isLoading | async }\"\n ></i>\n </button>\n </div>\n <div\n class=\"input-group-btn input-group-btn--last\"\n *ngIf=\"!isIntervalRefresh\"\n >\n <button\n class=\"c8y-realtime btn btn-default\"\n [attr.aria-label]=\"realtimeIconTitle\"\n [tooltip]=\"realtimeIconTitle\"\n placement=\"bottom\"\n type=\"button\"\n [container]=\"'body'\"\n (click)=\"toggleRealtimeState()\"\n [disabled]=\"isRefreshDisabled\"\n >\n <span\n class=\"c8y-pulse m-0\"\n [ngClass]=\"{\n active: isRealtimeToggleOn,\n inactive: !isRealtimeToggleOn\n }\"\n ></span>\n </button>\n </div>\n </div>\n </div>\n</div>\n" }]
249
166
  }], ctorParameters: () => [{ type: i1.AlarmsViewService }, { type: i0.ChangeDetectorRef }, { type: i2.TranslateService }, { type: i3.WidgetGlobalAutoRefreshService }], propDecorators: { isIntervalRefresh: [{
250
167
  type: Input
251
168
  }], refreshInterval: [{
@@ -256,7 +173,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
256
173
  type: Input
257
174
  }], isScrolling: [{
258
175
  type: Input
259
- }], isDisabled: [{
176
+ }], isRefreshDisabled: [{
260
177
  type: Input
261
178
  }], onCountdownEnded: [{
262
179
  type: Output
@@ -266,4 +183,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
266
183
  type: ViewChild,
267
184
  args: [CountdownIntervalComponent, { static: false }]
268
185
  }] } });
269
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0td2lkZ2V0LWFsYXJtcy1yZWxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvYWxhcm1zL2FsYXJtLXdpZGdldC1hbGFybXMtcmVsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3dpZGdldHMvaW1wbGVtZW50YXRpb25zL2FsYXJtcy9hbGFybS13aWRnZXQtYWxhcm1zLXJlbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLDBCQUEwQixFQUMxQixPQUFPLEVBQ1AsOEJBQThCLEVBQy9CLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQXlCLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7QUFNMUYsTUFBTSxPQUFPLGdDQUFnQztJQXFFM0MsWUFDVSxpQkFBb0MsRUFDcEMsS0FBd0IsRUFDeEIsZ0JBQWtDLEVBQ2xDLDhCQUE4RDtRQUg5RCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsbUNBQThCLEdBQTlCLDhCQUE4QixDQUFnQztRQXRFL0QsbUNBQThCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLDhCQUE4QixDQUFDO1FBc0J2RixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQzVCOztXQUVHO1FBQ08scUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN0RDs7V0FFRztRQUNPLDRCQUF1QixHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBWXZGOztXQUVHO1FBQ0gsNkJBQXdCLEdBQUcsSUFBSSxDQUFDO1FBYWhDOztXQUVHO1FBQ0gsOEJBQXlCLEdBQUcsS0FBSyxDQUFDO0lBVS9CLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDO1lBQzNELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUN2RCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyx5QkFBeUI7Z0JBQzVCLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNuRixJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlO2lCQUNqRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2lCQUM3QyxTQUFTLEVBQUUsQ0FBQztRQUNqQixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUN2QyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxLQUFLLHNCQUFzQixDQUFDO1FBQ3ZGLENBQUM7UUFDRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLHlCQUF5QjtnQkFDNUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ25GLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBRUQsSUFDRSxDQUFDLElBQUksQ0FBQyxpQkFBaUI7WUFDdkIsSUFBSSxDQUFDLHlCQUF5QjtZQUM5QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEVBQ2pDLENBQUM7WUFDRCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsY0FBYztRQUNaLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsU0FBUzthQUN4QyxJQUFJLENBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFDeEMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQywwQkFBMEIsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNILDRCQUE0QixDQUFDLE1BQWtCO1FBQzdDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMseUJBQXlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDO1FBQ3JGLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO1FBRXhDLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDO1lBQ3RDLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMseUJBQXlCLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQztRQUU5RixJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxLQUFLLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWM7UUFDWixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUNuRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLHlCQUF5QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUN2RSxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekMsQ0FBQztRQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsb0JBQW9CO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQjtZQUM1QixDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUMzRCxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0gsZUFBZTtRQUNiLHNFQUFzRTtRQUN0RSxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBRXJFLElBQUksb0JBQW9CLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMseUJBQXlCLEdBQUcsS0FBSyxDQUFDO1lBQ3ZDLE9BQU87UUFDVCxDQUFDO1FBRUQsaUZBQWlGO1FBQ2pGLE1BQU0sbUJBQW1CLEdBQ3ZCLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUM7UUFFaEYsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUM7WUFDdEMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILGVBQWU7UUFDYixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixpRUFBaUU7UUFDakUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNLLGdDQUFnQyxDQUFDLFVBQW1CO1FBQzFELElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsZ0NBQWdDLEdBQUcsVUFBVSxDQUFDO1lBQ25ELE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGdDQUFnQyxHQUFHLElBQUksQ0FBQyx5QkFBeUI7WUFDcEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFDaEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDOytHQWxUVSxnQ0FBZ0M7bUdBQWhDLGdDQUFnQyxpYUFtQ2hDLDBCQUEwQixxRUMvRHZDLDBrR0FnR0E7OzRGRHBFYSxnQ0FBZ0M7a0JBSjVDLFNBQVM7K0JBQ0UsZ0NBQWdDO2tNQVdqQyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBSUcsZUFBZTtzQkFBdkIsS0FBSztnQkFJRyxNQUFNO3NCQUFkLEtBQUs7Z0JBSUcsU0FBUztzQkFBakIsS0FBSztnQkFJRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBSUksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUlHLHVCQUF1QjtzQkFBaEMsTUFBTTtnQkFHUCwwQkFBMEI7c0JBRHpCLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb3VudGRvd25JbnRlcnZhbENvbXBvbmVudCxcbiAgZ2V0dGV4dCxcbiAgV2lkZ2V0R2xvYmFsQXV0b1JlZnJlc2hTZXJ2aWNlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQWxhcm1zVmlld1NlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2FsYXJtcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBbGFybUxpc3RXaWRnZXRDb25maWcsIEdMT0JBTF9JTlRFUlZBTF9PUFRJT04gfSBmcm9tICcuL2FsYXJtLWxpc3Qtd2lkZ2V0Lm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWFsYXJtLXdpZGdldC1hbGFybXMtcmVsb2FkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FsYXJtLXdpZGdldC1hbGFybXMtcmVsb2FkLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBBbGFybVdpZGdldEFsYXJtc1JlbG9hZENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3lcbntcbiAgcmVhZG9ubHkgUkVBTFRJTUVfVVBEQVRFX0FMQVJNU19NRVNTQUdFID0gdGhpcy5hbGFybXNWaWV3U2VydmljZS5SRUFMVElNRV9VUERBVEVfQUxBUk1TX01FU1NBR0U7XG5cbiAgLyoqXG4gICAqIFN0YXRlIG9mIHRoaXMgYm9vbGVhbiBkZXBlbmRzIG9uIGFuIEFwcGxpY2F0aW9uIE9wdGlvbnMgXCJhbGFybXNSZWZyZXNoVHlwZVwiIHNldHRpbmcuXG4gICAqL1xuICBASW5wdXQoKSBpc0ludGVydmFsUmVmcmVzaDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEN1cnJlbnQgcmVmcmVzaCBpbnRlcnZhbCBzZXQgaW4gYSB3aWRnZXQgY29uZmlnLlxuICAgKi9cbiAgQElucHV0KCkgcmVmcmVzaEludGVydmFsOiBudW1iZXI7XG4gIC8qKlxuICAgKiBBbGFybSB3aWRnZXRzIGNvbmZpZy5cbiAgICovXG4gIEBJbnB1dCgpIGNvbmZpZzogQWxhcm1MaXN0V2lkZ2V0Q29uZmlnO1xuICAvKipcbiAgICogQ3VycmVudCBpc0xvYWRpbmcgc3RhdGUuIEJhc2VkIG9uIGl0IG5leHQgY291bnRkb3duIGN5Y2xlIGlzIGJlaW5nIHN0YXJ0ZWQuXG4gICAqL1xuICBASW5wdXQoKSBpc0xvYWRpbmc6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBhbGFybSBsaXN0IGlzIGJlaW5nIHNjcm9sbGVkIG9yIG5vdC5cbiAgICovXG4gIEBJbnB1dCgpIGlzU2Nyb2xsaW5nOiBib29sZWFuO1xuICBASW5wdXQoKSBpc0Rpc2FibGVkID0gZmFsc2U7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCBhIGNvdW50ZG93biBjeWNsZSBoYXMgZW5kZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgb25Db3VudGRvd25FbmRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgd2lkZ2V0cyByZWFsdGltZSBidXR0b24gc3RhdGUgaGFzIGNoYW5nZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgb25SZWFsVGltZVRvZ2dsZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBAVmlld0NoaWxkKENvdW50ZG93bkludGVydmFsQ29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY291bnRkb3duSW50ZXJ2YWxDb21wb25lbnQ6IENvdW50ZG93bkludGVydmFsQ29tcG9uZW50O1xuICAvKipcbiAgICogQ29udHJvbHMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGNvdW50ZG93biB0aW1lciBjb21wb25lbnQgaW4gdGhlIGN1cnJlbnQgY29tcG9uZW50J3MgVUkuXG4gICAqL1xuICBoaWRlQ291bnRkb3duOiBib29sZWFuO1xuICAvKipcbiAgICogVG9vbHRpcCBmb3IgYSBuZXcgcmVhbHRpbWUgYWxhcm0gaW5kaWNhdG9yLlxuICAgKi9cbiAgcmVhbHRpbWVJY29uVGl0bGU6IHN0cmluZztcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjb3VudGRvd24gaGFzIGJlZW4gY2xlYXJlZCBhbHJlYWR5LlxuICAgKi9cbiAgaXNOZXdBbGFybU1lc3NhZ2VDbGVhcmVkID0gdHJ1ZTtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgY3VycmVudCBzdGF0ZSBvZiBhbiBpbnRlcnZhbCByZWZyZXNoIHRvZ2dsZSBidXR0b24uXG4gICAqL1xuICBpc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uOiBib29sZWFuO1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBjdXJyZW50IHN0YXRlIG9mIGFuIHJlYWx0aW1lIHRvZ2dsZSBidXR0b24uXG4gICAqL1xuICBpc1JlYWx0aW1lVG9nZ2xlT246IGJvb2xlYW47XG4gIC8qKlxuICAgKiBIb2xkcyB0aGUgc3Vic2NyaXB0aW9uIHRvIGEgY291bnRkb3duIG9ic2VydmFibGUuXG4gICAqL1xuICBjb3VudGRvd25TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjb3VudGRvd24gaGFzIGJlZW4gbWFudWFsbHkgZGlzYWJsZWQgYnkgdGhlIHVzZXIuXG4gICAqL1xuICBtYW51YWxseURpc2FibGVkQ291bnRkb3duID0gZmFsc2U7XG5cbiAgdG9nZ2xlQ291bnRkb3duQnV0dG9uVG9vbHRpcFRleHQ6IHN0cmluZztcbiAgZ2xvYmFsQXV0b1JlZnJlc2hFbmFibGVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWxhcm1zVmlld1NlcnZpY2U6IEFsYXJtc1ZpZXdTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHdpZGdldEdsb2JhbEF1dG9SZWZyZXNoU2VydmljZTogV2lkZ2V0R2xvYmFsQXV0b1JlZnJlc2hTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuaXNJbnRlcnZhbFJlZnJlc2gpIHtcbiAgICAgIHRoaXMuaXNSZWFsdGltZVRvZ2dsZU9uID0gdGhpcy5jb25maWcuaXNBdXRvUmVmcmVzaEVuYWJsZWQ7XG4gICAgICB0aGlzLnJlYWx0aW1lSWNvblRpdGxlID0gdGhpcy5nZXRSZWFsdGltZUljb25UaXRsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT24gPVxuICAgICAgICAhdGhpcy5pc0Rpc2FibGVkICYmICh0aGlzLmNvbmZpZy5pc0F1dG9SZWZyZXNoRW5hYmxlZCB8fCAhIXRoaXMucmVmcmVzaEludGVydmFsKTtcbiAgICAgIHRoaXMudXBkYXRlQ291bnRkb3duQnV0dG9uVG9vbHRpcFRleHQoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuaXNJbnRlcnZhbFJlZnJlc2ggJiYgdGhpcy5yZWZyZXNoSW50ZXJ2YWwpIHtcbiAgICAgIHRoaXMuc3RhcnRDb3VudGRvd24oKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5nbG9iYWxBdXRvUmVmcmVzaEVuYWJsZWQpIHtcbiAgICAgIHRoaXMud2lkZ2V0R2xvYmFsQXV0b1JlZnJlc2hTZXJ2aWNlLmNvdW50ZG93bkFjdGlvbnMuY291bnRkb3duRW5kZWQkXG4gICAgICAgIC5waXBlKHRhcCgoKSA9PiB0aGlzLm9uQ291bnRkb3duRW5kZWQuZW1pdCgpKSlcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQsIGNvbmZpZyB9ID0gY2hhbmdlcztcbiAgICBpZiAoY29uZmlnKSB7XG4gICAgICB0aGlzLmdsb2JhbEF1dG9SZWZyZXNoRW5hYmxlZCA9IHRoaXMuY29uZmlnLnJlZnJlc2hPcHRpb24gPT09IEdMT0JBTF9JTlRFUlZBTF9PUFRJT047XG4gICAgfVxuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICB0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT24gPVxuICAgICAgICAhdGhpcy5pc0Rpc2FibGVkICYmICh0aGlzLmNvbmZpZy5pc0F1dG9SZWZyZXNoRW5hYmxlZCB8fCAhIXRoaXMucmVmcmVzaEludGVydmFsKTtcbiAgICAgIHRoaXMudXBkYXRlQ291bnRkb3duQnV0dG9uVG9vbHRpcFRleHQoZ2V0dGV4dCgnRGlzYWJsZWQnKSk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgIXRoaXMuaXNJbnRlcnZhbFJlZnJlc2ggfHxcbiAgICAgIHRoaXMubWFudWFsbHlEaXNhYmxlZENvdW50ZG93biB8fFxuICAgICAgIXRoaXMuY29uZmlnLmlzQXV0b1JlZnJlc2hFbmFibGVkXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5oYW5kbGVTY3JvbGxpbmcoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmNvdW50ZG93blN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5jb3VudGRvd25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBsaXN0ZW5zIGZvciBjaGFuZ2VzIGluIHRoZSBgaXNMb2FkaW5nYCBvYnNlcnZhYmxlLCBmaWx0ZXJpbmcgb3V0IGFueSB0cnV0aHkgdmFsdWVzLlxuICAgKiBPbmNlIGEgZmFsc3kgdmFsdWUgaXMgZGV0ZWN0ZWQgKGluZGljYXRpbmcgdGhhdCBsb2FkaW5nIGhhcyBmaW5pc2hlZCksIGl0IGF0dGVtcHRzIHRvIHN0YXJ0IHRoZSBjb3VudGRvd24uXG4gICAqXG4gICAqIElNUE9SVEFOVDogSWYgdGhlIHdpZGdldCdzIGNvbmZpZ3VyYXRpb24gKHJlZnJlc2hJbnRlcnZhbCwgY2hlY2sgdGVtcGxhdGUpIGlzIG5vdCBzZXQgcHJpb3IgdG8gZXhlY3V0aW5nIGNvdW50ZG93bkludGVydmFsQ29tcG9uZW50Py5zdGFydCxcbiAgICogdGhlIGNvdW50ZG93biBpbnRlcnZhbCB3aWxsIG5vdCBzdGFydCFcbiAgICovXG4gIHN0YXJ0Q291bnRkb3duKCk6IHZvaWQge1xuICAgIHRoaXMuY291bnRkb3duU3Vic2NyaXB0aW9uID0gdGhpcy5pc0xvYWRpbmdcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoaXNMb2FkaW5nID0+ICFCb29sZWFuKGlzTG9hZGluZykpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY291bnRkb3duSW50ZXJ2YWxDb21wb25lbnQ/LnN0YXJ0KCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgdG9nZ2xlIHN0YXRlIG9mIHRoZSBjb3VudGRvd24gb24gYnV0dG9uIGNsaWNrLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBpcyB0cmlnZ2VyZWQgYnkgYSBtb3VzZSBldmVudCwgdHlwaWNhbGx5IGEgY2xpY2sgb24gdGhlIGNvdW50ZG93biB0b2dnbGUgYnV0dG9uLlxuICAgKiBJdCB0b2dnbGVzIGBpc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uYCB0byByZWZsZWN0IHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBjb3VudGRvd24gdGltZXIuXG4gICAqXG4gICAqIC0gSWYgYGlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT25gIGlzIHNldCB0byBmYWxzZSwgaW5kaWNhdGluZyB0aGF0IHRoZSBjb3VudGRvd24gc2hvdWxkIGJlIHN0b3BwZWQsXG4gICAqICAgYGRpc2FibGVDb3VudGRvd25gIGlzIGNhbGxlZCwgYW5kIGBtYW51YWxseURpc2FibGVkQ291bnRkb3duYCBpcyBzZXQgdG8gdHJ1ZS5cbiAgICpcbiAgICogLSBJZiBgaXNJbnRlcnZhbFJlZnJlc2hUb2dnbGVPbmAgaXMgdHJ1ZSBhbmQgdGhlIGNvdW50ZG93biBzdWJzY3JpcHRpb24gaXMgY2xvc2VkLCBpbmRpY2F0aW5nIHRoYXRcbiAgICogICB0aGUgY291bnRkb3duIGNhbiBiZSBzdGFydGVkLCBgZW5hYmxlQ291bnRkb3duYCBpcyBjYWxsZWQsIGFuZCBgbWFudWFsbHlEaXNhYmxlZENvdW50ZG93bmBcbiAgICogICBpcyBzZXQgdG8gZmFsc2UuXG4gICAqXG4gICAqIEBwYXJhbSAkZXZlbnQgLSBUaGUgTW91c2VFdmVudCB0aGF0IHRyaWdnZXJlZCB0aGlzIG1ldGhvZC5cbiAgICovXG4gIG9uVG9nZ2xlQ291bnRkb3duQnV0dG9uU3RhdGUoJGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5pc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uID0gIXRoaXMuaXNEaXNhYmxlZCAmJiAhdGhpcy5pc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uO1xuICAgIHRoaXMudXBkYXRlQ291bnRkb3duQnV0dG9uVG9vbHRpcFRleHQoKTtcblxuICAgIGlmICghdGhpcy5pc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uKSB7XG4gICAgICB0aGlzLmRpc2FibGVDb3VudGRvd24oKTtcbiAgICAgIHRoaXMubWFudWFsbHlEaXNhYmxlZENvdW50ZG93biA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb25SZWZyZXNoVG9nZ2xlT24gPSB0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT24gJiYgdGhpcy5jb3VudGRvd25TdWJzY3JpcHRpb24uY2xvc2VkO1xuXG4gICAgaWYgKG9uUmVmcmVzaFRvZ2dsZU9uKSB7XG4gICAgICB0aGlzLmVuYWJsZUNvdW50ZG93bigpO1xuICAgICAgdGhpcy5tYW51YWxseURpc2FibGVkQ291bnRkb3duID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdyYXBwZXIgbWV0aG9kIHdoZXJlIGl0J3MgbmFtZSBiZXR0ZXIgZGVzY3JpYmVzIGEgY29udGV4dCB3aGVyZSBpdCB3YXMgY2FsbGVkLlxuICAgKi9cbiAgY291bnRkb3duRW5kZWQoKTogdm9pZCB7XG4gICAgdGhpcy5hdXRvUmVmcmVzaExpc3QoKTtcbiAgfVxuXG4gIHJlbG9hZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0ludGVydmFsUmVmcmVzaCkge1xuICAgICAgdGhpcy5hdXRvUmVmcmVzaExpc3QoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vbkNvdW50ZG93bkVuZGVkLmVtaXQoKTtcbiAgICAgIHRoaXMuaXNOZXdBbGFybU1lc3NhZ2VDbGVhcmVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgcmVhbC10aW1lIHN0YXRlIG9mIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIHN3aXRjaGVzIHRoZSBgaXNSZWFsdGltZVRvZ2dsZU9uYCBzdGF0ZSBiZXR3ZWVuIHRydWUgYW5kIGZhbHNlLlxuICAgKiBXaGVuIHRoZSBzdGF0ZSBpcyB0b2dnbGVkLCBpdCBlbWl0cyB0aGUgY3VycmVudCBzdGF0ZSB0aHJvdWdoIGBvblJlYWxUaW1lVG9nZ2xlQ2hhbmdlZGAgZXZlbnQuXG4gICAqIEl0IGFsc28gdXBkYXRlcyB0aGUgYHJlYWx0aW1lSWNvblRpdGxlYCBiYXNlZCBvbiB0aGUgbmV3IHN0YXRlLlxuICAgKi9cbiAgdG9nZ2xlUmVhbHRpbWVTdGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzUmVhbHRpbWVUb2dnbGVPbiA9ICF0aGlzLmlzUmVhbHRpbWVUb2dnbGVPbjtcbiAgICB0aGlzLm9uUmVhbFRpbWVUb2dnbGVDaGFuZ2VkLmVtaXQodGhpcy5pc1JlYWx0aW1lVG9nZ2xlT24pO1xuICAgIHRoaXMucmVhbHRpbWVJY29uVGl0bGUgPSB0aGlzLmdldFJlYWx0aW1lSWNvblRpdGxlKCk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcHMgdGhlIGNvdW50ZG93biBhbmQgdHJpZ2dlcnMgYSByZWZyZXNoIGFjdGlvbi5cbiAgICogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgaGFsdGluZyB0aGUgY291bnRkb3duIGludGVydmFsIGNvbXBvbmVudCdzIG9wZXJhdGlvbi5cbiAgICogQWZ0ZXIgc3RvcHBpbmcgdGhlIGNvdW50ZG93biwgaXQgZW1pdHMgYW4gYG9uQ291bnRkb3duRW5kZWRgIGV2ZW50LlxuICAgKiBUaGlzIGV2ZW50IGlzIHVzZWQgdG8gaW5mb3JtIGV4dGVybmFsIGNvbXBvbmVudHMgdGhhdCB0aGUgY291bnRkb3duIGhhcyBlbmRlZCxcbiAgICogdHlwaWNhbGx5IHByb21wdGluZyB0aGVtIHRvIHJlbG9hZCBvciByZWZyZXNoIHRoZWlyIGRhdGEuXG4gICAqL1xuICBhdXRvUmVmcmVzaExpc3QoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNJbnRlcnZhbFJlZnJlc2hUb2dnbGVPbiAmJiB0aGlzLmNvbmZpZy5pc0F1dG9SZWZyZXNoRW5hYmxlZCkge1xuICAgICAgdGhpcy5jb3VudGRvd25JbnRlcnZhbENvbXBvbmVudC5zdG9wKCk7XG4gICAgfVxuICAgIHRoaXMub25Db3VudGRvd25FbmRlZC5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdG9vbHRpcCBtZXNzYWdlIGZvciBhIG5ldyByZWFsdGltZSBhbGFybSBpbmRpY2F0b3IuXG4gICAqIEByZXR1cm5zIFRvb2x0aXAgbWVzc2FnZS5cbiAgICovXG4gIGdldFJlYWx0aW1lSWNvblRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNSZWFsdGltZVRvZ2dsZU9uXG4gICAgICA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ1JlYWx0aW1lIGFjdGl2ZScpKVxuICAgICAgOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCdSZWFsdGltZSBpbmFjdGl2ZScpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYW5hZ2VzIHRoZSBjb3VudGRvd24gdGltZXIncyB2aXNpYmlsaXR5IGFuZCBzdGF0ZSBpbiByZXNwb25zZSB0byB1c2VyIHNjcm9sbGluZy5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgdG9nZ2xlcyB0aGUgY291bnRkb3duIHRpbWVyIGJhc2VkIG9uIHRoZSB1c2VyJ3Mgc2Nyb2xsaW5nIGJlaGF2aW9yLiBJdCB1c2VzXG4gICAqIHRoZSBgZGlzYWJsZUNvdW50ZG93bmAgYW5kIGBlbmFibGVDb3VudGRvd25gIG1ldGhvZHMgZm9yIGhhbmRsaW5nIHRoZSBjb3VudGRvd24gc3RhdGUuXG4gICAqXG4gICAqIC0gSWYgdGhlIHVzZXIgaXMgc2Nyb2xsaW5nIGRvd24gd2hpbGUgdGhlIGNvdW50ZG93biBpcyB2aXNpYmxlIChgaXNTY3JvbGxpbmdgIGlzIHRydWUgYW5kXG4gICAqICAgYGhpZGVDb3VudGRvd25gIGlzIGZhbHNlKSwgYGRpc2FibGVDb3VudGRvd25gIGlzIGNhbGxlZCB0byBzdG9wIGFuZCBoaWRlIHRoZSBjb3VudGRvd24sXG4gICAqICAgYW5kIGBpc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uYCBpcyBzZXQgdG8gZmFsc2UuXG4gICAqXG4gICAqIC0gSWYgdGhlIHVzZXIgaGFzIHN0b3BwZWQgc2Nyb2xsaW5nLCB0aGUgY291bnRkb3duIHN1YnNjcmlwdGlvbiBpcyBjbG9zZWQsIGFuZCB0aGUgY291bnRkb3duXG4gICAqICAgaXMgaGlkZGVuIChgIWlzU2Nyb2xsaW5nYCwgYGNvdW50ZG93blN1YnNjcmlwdGlvbj8uY2xvc2VkYCwgYGhpZGVDb3VudGRvd25gKSwgYGVuYWJsZUNvdW50ZG93bmBcbiAgICogICBpcyBjYWxsZWQgdG8gc2hvdyBhbmQgcmVzdGFydCB0aGUgY291bnRkb3duLCBhbmQgYGlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT25gIGlzIHNldCB0byB0cnVlLlxuICAgKi9cbiAgaGFuZGxlU2Nyb2xsaW5nKCk6IHZvaWQge1xuICAgIC8vIENoZWNrcyBpZiB0aGUgdXNlciBoYXMgc2Nyb2xsZWQgZG93biB3aGlsZSB0aGUgY291bnRkb3duIGlzIHZpc2libGVcbiAgICBjb25zdCBvblVzZXJTY3JvbGxEb3duSGlkZSA9IHRoaXMuaXNTY3JvbGxpbmcgJiYgIXRoaXMuaGlkZUNvdW50ZG93bjtcblxuICAgIGlmIChvblVzZXJTY3JvbGxEb3duSGlkZSkge1xuICAgICAgdGhpcy5kaXNhYmxlQ291bnRkb3duKCk7XG4gICAgICB0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT24gPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDaGVja3MgaWYgdGhlIHVzZXIgaGFzIHN0b3BwZWQgc2Nyb2xsaW5nIGFuZCB0aGUgY291bnRkb3duIGlzIGN1cnJlbnRseSBoaWRkZW5cbiAgICBjb25zdCBvblVzZXJTY3JvbGxUb3BTaG93ID1cbiAgICAgICF0aGlzLmlzU2Nyb2xsaW5nICYmIHRoaXMuY291bnRkb3duU3Vic2NyaXB0aW9uPy5jbG9zZWQgJiYgdGhpcy5oaWRlQ291bnRkb3duO1xuXG4gICAgaWYgKG9uVXNlclNjcm9sbFRvcFNob3cpIHtcbiAgICAgIHRoaXMuaXNJbnRlcnZhbFJlZnJlc2hUb2dnbGVPbiA9IHRydWU7XG4gICAgICB0aGlzLmVuYWJsZUNvdW50ZG93bigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIGFuZCBzdGFydHMgdGhlIGNvdW50ZG93biB0aW1lci5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgbWFrZXMgdGhlIGNvdW50ZG93biB2aXNpYmxlIChgaGlkZUNvdW50ZG93bmAgaXMgc2V0IHRvIGZhbHNlKSBhbmQgdGhlblxuICAgKiBzdGFydHMgdGhlIGNvdW50ZG93biBwcm9jZXNzLiBJdCBlbnN1cmVzIHRoZSBjb3VudGRvd24gdGltZXIgaXMgdXBkYXRlZCBpbW1lZGlhdGVseVxuICAgKiBieSB0cmlnZ2VyaW5nIGNoYW5nZSBkZXRlY3Rpb24gd2l0aCBgY2RSZWYuZGV0ZWN0Q2hhbmdlcygpYCBiZWZvcmUgc3RhcnRpbmcgdGhlIGNvdW50ZG93bi5cbiAgICogVGhpcyBtZXRob2QgZW5jYXBzdWxhdGVzIHRoZSBsb2dpYyByZXF1aXJlZCB0byBpbml0aWF0ZSB0aGUgY291bnRkb3duIHRpbWVyLlxuICAgKi9cbiAgZW5hYmxlQ291bnRkb3duKCk6IHZvaWQge1xuICAgIHRoaXMuaGlkZUNvdW50ZG93biA9IGZhbHNlO1xuICAgIC8vIFByZXZlbnRzIHRoZSBjb3VudGRvd24gZnJvbSBnZXR0aW5nIHN0dWNrIG9uIGFuIGluaXRpYWwgdmFsdWUuXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5zdGFydENvdW50ZG93bigpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc2FibGVzIGFuZCBoaWRlcyB0aGUgY291bnRkb3duIHRpbWVyLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBzdG9wcyB0aGUgb25nb2luZyBjb3VudGRvd24gcHJvY2VzcyBieSB1bnN1YnNjcmliaW5nIGZyb20gYGNvdW50ZG93blN1YnNjcmlwdGlvbmBcbiAgICogYW5kIHN0b3BwaW5nIHRoZSBgY291bnRkb3duSW50ZXJ2YWxDb21wb25lbnRgIGlmIGl0IGV4aXN0cy4gSXQgdGhlbiBoaWRlcyB0aGUgY291bnRkb3duIHRpbWVyXG4gICAqIGJ5IHNldHRpbmcgYGhpZGVDb3VudGRvd25gIHRvIHRydWUuIFRoaXMgbWV0aG9kIGVuY2Fwc3VsYXRlcyB0aGUgbG9naWMgcmVxdWlyZWQgdG8gaGFsdCBhbmRcbiAgICogY29uY2VhbCB0aGUgY291bnRkb3duIHRpbWVyLlxuICAgKi9cbiAgZGlzYWJsZUNvdW50ZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLmNvdW50ZG93blN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY291bnRkb3duSW50ZXJ2YWxDb21wb25lbnQ/LnN0b3AoKTtcbiAgICB0aGlzLmhpZGVDb3VudGRvd24gPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGNvdW50ZG93biBidXR0b24gdG9vbHRpcCB0ZXh0IGJhc2VkIG9uIHRoZSBzdGF0ZSBvZiB0aGUgaW50ZXJ2YWwgcmVmcmVzaCB0b2dnbGUgc3RhdGUuXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZUNvdW50ZG93bkJ1dHRvblRvb2x0aXBUZXh0KGN1c3RvbVRleHQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoY3VzdG9tVGV4dCkge1xuICAgICAgdGhpcy50b2dnbGVDb3VudGRvd25CdXR0b25Ub29sdGlwVGV4dCA9IGN1c3RvbVRleHQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudG9nZ2xlQ291bnRkb3duQnV0dG9uVG9vbHRpcFRleHQgPSB0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT25cbiAgICAgID8gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnRGlzYWJsZSBhdXRvIHJlZnJlc2gnKSlcbiAgICAgIDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnRW5hYmxlIGF1dG8gcmVmcmVzaCcpKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cIm0tbC1hdXRvIGQtZmxleCBwLXQtNCBwLWItNFwiXG4gICpuZ0lmPVwiIWdsb2JhbEF1dG9SZWZyZXNoRW5hYmxlZFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJtLWwtYXV0byBkLWZsZXggYS1pLWNlbnRlclwiPlxuICAgIDxsYWJlbFxuICAgICAgY2xhc3M9XCJtLWItMCBtLXItOCB0ZXh0LWxhYmVsLXNtYWxsIHRleHQtdHJ1bmNhdGUgZmxleC1uby1zaHJpbmtcIlxuICAgICAgdGl0bGU9XCIge3sgJ0F1dG8gcmVmcmVzaCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgKm5nSWY9XCJpc0ludGVydmFsUmVmcmVzaCAmJiByZWZyZXNoSW50ZXJ2YWwgJiYgY29uZmlnLmlzQXV0b1JlZnJlc2hFbmFibGVkXCJcbiAgICA+XG4gICAgICB7eyAnQXV0byByZWZyZXNoJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJ0b2dnbGUtY291bnRkb3duXCJcbiAgICAgICAgW2NsYXNzLnRvZ2dsZS1jb3VudGRvd24tZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidG9nZ2xlQ291bnRkb3duQnV0dG9uVG9vbHRpcFRleHRcIlxuICAgICAgICBbdG9vbHRpcF09XCJ0b2dnbGVDb3VudGRvd25CdXR0b25Ub29sdGlwVGV4dFwiXG4gICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICpuZ0lmPVwiaXNJbnRlcnZhbFJlZnJlc2ggJiYgcmVmcmVzaEludGVydmFsICYmIGNvbmZpZy5pc0F1dG9SZWZyZXNoRW5hYmxlZFwiXG4gICAgICAgIFthZGFwdGl2ZVBvc2l0aW9uXT1cImZhbHNlXCJcbiAgICAgICAgW2NvbnRhaW5lcl09XCInYm9keSdcIlxuICAgICAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAgID5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICBkYXRhLWN5PVwiYzh5LWFsYXJtcy13aWRnZXQtLWludGVydmFsLXRvZ2dsZS1idXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJvblRvZ2dsZUNvdW50ZG93bkJ1dHRvblN0YXRlKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8Yzh5LWNvdW50ZG93bi1pbnRlcnZhbFxuICAgICAgICAgICpuZ0lmPVwiaXNJbnRlcnZhbFJlZnJlc2hUb2dnbGVPblwiXG4gICAgICAgICAgW2NvdW50ZG93bkludGVydmFsXT1cInJlZnJlc2hJbnRlcnZhbFwiXG4gICAgICAgICAgKGNvdW50ZG93bkVuZGVkKT1cImNvdW50ZG93bkVuZGVkKClcIlxuICAgICAgICA+PC9jOHktY291bnRkb3duLWludGVydmFsPlxuICAgICAgICA8aVxuICAgICAgICAgIGM4eUljb249XCJwYXVzZVwiXG4gICAgICAgICAgKm5nSWY9XCIhaXNJbnRlcnZhbFJlZnJlc2hUb2dnbGVPblwiXG4gICAgICAgID48L2k+XG4gICAgICA8L2xhYmVsPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnRuXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInUmVmcmVzaCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFt0b29sdGlwXT1cIlxuICAgICAgICAgICAgIWlzTmV3QWxhcm1NZXNzYWdlQ2xlYXJlZFxuICAgICAgICAgICAgICA/IChSRUFMVElNRV9VUERBVEVfQUxBUk1TX01FU1NBR0UgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgIDogKCdSZWZyZXNoJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICBcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2FkYXB0aXZlUG9zaXRpb25dPVwiZmFsc2VcIlxuICAgICAgICAgIFtjb250YWluZXJdPVwiJ2JvZHknXCJcbiAgICAgICAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCB8fCAoaXNMb2FkaW5nIHwgYXN5bmMpXCJcbiAgICAgICAgICAoY2xpY2spPVwicmVsb2FkKClcIlxuICAgICAgICAgIGRhdGEtY3k9XCJjOHktYWxhcm1zLXdpZGdldC0tcmVsb2FkLWJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJ0YWcgdGFnLS1pbmZvIG0tci04XCJcbiAgICAgICAgICAgICpuZ0lmPVwiIWlzTmV3QWxhcm1NZXNzYWdlQ2xlYXJlZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ05ldyBhbGFybXMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxpXG4gICAgICAgICAgICBjOHlJY29uPVwicmVmcmVzaFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpY29uLXNwaW4nOiBpc0xvYWRpbmcgfCBhc3luYyB9XCJcbiAgICAgICAgICA+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImlucHV0LWdyb3VwLWJ0biBpbnB1dC1ncm91cC1idG4tLWxhc3RcIlxuICAgICAgICAqbmdJZj1cIiFpc0ludGVydmFsUmVmcmVzaFwiXG4gICAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImM4eS1yZWFsdGltZSBidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicmVhbHRpbWVJY29uVGl0bGVcIlxuICAgICAgICAgIFt0b29sdGlwXT1cInJlYWx0aW1lSWNvblRpdGxlXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtjb250YWluZXJdPVwiJ2JvZHknXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUmVhbHRpbWVTdGF0ZSgpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJjOHktcHVsc2UgbS0wXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgYWN0aXZlOiBpc1JlYWx0aW1lVG9nZ2xlT24sXG4gICAgICAgICAgICAgIGluYWN0aXZlOiAhaXNSZWFsdGltZVRvZ2dsZU9uXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0td2lkZ2V0LWFsYXJtcy1yZWxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvYWxhcm1zL2FsYXJtLXdpZGdldC1hbGFybXMtcmVsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3dpZGdldHMvaW1wbGVtZW50YXRpb25zL2FsYXJtcy9hbGFybS13aWRnZXQtYWxhcm1zLXJlbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLDBCQUEwQixFQUMxQixPQUFPLEVBQ1AsbUJBQW1CLEVBQ25CLDhCQUE4QixFQUMvQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQXlCLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7QUFNMUYsTUFBTSxPQUFPLGdDQUNYLFNBQVEsbUJBQW1CO0lBd0UzQixZQUNVLGlCQUFvQyxFQUNwQyxLQUF3QixFQUN4QixnQkFBa0MsRUFDbEMsOEJBQThEO1FBRXRFLEtBQUssRUFBRSxDQUFDO1FBTEEsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLG1DQUE4QixHQUE5Qiw4QkFBOEIsQ0FBZ0M7UUF6RS9ELG1DQUE4QixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyw4QkFBOEIsQ0FBQztRQTBCaEc7O1dBRUc7UUFDTyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3REOztXQUVHO1FBQ08sNEJBQXVCLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFZdkY7O1dBRUc7UUFDSCw2QkFBd0IsR0FBRyxJQUFJLENBQUM7UUFhaEM7O1dBRUc7UUFDTyw4QkFBeUIsR0FBRyxLQUFLLENBQUM7SUFZNUMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUM7WUFDM0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3ZELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLHlCQUF5QjtnQkFDNUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDMUYsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4QixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsOEJBQThCLENBQUMsZ0JBQWdCLENBQUMsZUFBZTtpQkFDakUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztpQkFDN0MsU0FBUyxFQUFFLENBQUM7UUFDakIsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDdkMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsS0FBSyxzQkFBc0IsQ0FBQztRQUN2RixDQUFDO1FBQ0QsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyx5QkFBeUI7Z0JBQzVCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzFGLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBRUQsSUFDRSxDQUFDLElBQUksQ0FBQyxpQkFBaUI7WUFDdkIsSUFBSSxDQUFDLHlCQUF5QjtZQUM5QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEVBQ2pDLENBQUM7WUFDRCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjO1FBQ1o7O1dBRUc7UUFDSCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUNuRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLHlCQUF5QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUN2RSxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekMsQ0FBQztRQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsb0JBQW9CO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQjtZQUM1QixDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUMzRCxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsZUFBZTtRQUNiLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLGlFQUFpRTtRQUNqRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQ7O09BRUc7SUFDTyxnQ0FBZ0MsQ0FBQyxVQUFtQjtRQUM1RCxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLGdDQUFnQyxHQUFHLFVBQVUsQ0FBQztZQUNuRCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxnQ0FBZ0MsR0FBRyxJQUFJLENBQUMseUJBQXlCO1lBQ3BFLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQ2hFLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQzsrR0F2TlUsZ0NBQWdDO21HQUFoQyxnQ0FBZ0MsK2FBdUNoQywwQkFBMEIsNEZDcEV2QywrbEdBZ0dBOzs0RkRuRWEsZ0NBQWdDO2tCQUo1QyxTQUFTOytCQUNFLGdDQUFnQztrTUFZakMsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUlHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBSUcsTUFBTTtzQkFBZCxLQUFLO2dCQUlHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBSUcsV0FBVztzQkFBbkIsS0FBSztnQkFJRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBSUksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUlHLHVCQUF1QjtzQkFBaEMsTUFBTTtnQkFHUCwwQkFBMEI7c0JBRHpCLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb3VudGRvd25JbnRlcnZhbENvbXBvbmVudCxcbiAgZ2V0dGV4dCxcbiAgSW50ZXJ2YWxCYXNlZFJlbG9hZCxcbiAgV2lkZ2V0R2xvYmFsQXV0b1JlZnJlc2hTZXJ2aWNlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQWxhcm1zVmlld1NlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2FsYXJtcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWxhcm1MaXN0V2lkZ2V0Q29uZmlnLCBHTE9CQUxfSU5URVJWQUxfT1BUSU9OIH0gZnJvbSAnLi9hbGFybS1saXN0LXdpZGdldC5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1hbGFybS13aWRnZXQtYWxhcm1zLXJlbG9hZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hbGFybS13aWRnZXQtYWxhcm1zLXJlbG9hZC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQWxhcm1XaWRnZXRBbGFybXNSZWxvYWRDb21wb25lbnRcbiAgZXh0ZW5kcyBJbnRlcnZhbEJhc2VkUmVsb2FkXG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveVxue1xuICByZWFkb25seSBSRUFMVElNRV9VUERBVEVfQUxBUk1TX01FU1NBR0UgPSB0aGlzLmFsYXJtc1ZpZXdTZXJ2aWNlLlJFQUxUSU1FX1VQREFURV9BTEFSTVNfTUVTU0FHRTtcblxuICAvKipcbiAgICogU3RhdGUgb2YgdGhpcyBib29sZWFuIGRlcGVuZHMgb24gYW4gQXBwbGljYXRpb24gT3B0aW9ucyBcImFsYXJtc1JlZnJlc2hUeXBlXCIgc2V0dGluZy5cbiAgICovXG4gIEBJbnB1dCgpIGlzSW50ZXJ2YWxSZWZyZXNoOiBib29sZWFuO1xuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIEBJbnB1dCgpIHJlZnJlc2hJbnRlcnZhbDogbnVtYmVyO1xuICAvKipcbiAgICogQWxhcm0gd2lkZ2V0cyBjb25maWcuXG4gICAqL1xuICBASW5wdXQoKSBjb25maWc6IEFsYXJtTGlzdFdpZGdldENvbmZpZztcbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqL1xuICBASW5wdXQoKSBpc0xvYWRpbmc6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBhbGFybSBsaXN0IGlzIGJlaW5nIHNjcm9sbGVkIG9yIG5vdC5cbiAgICovXG4gIEBJbnB1dCgpIGlzU2Nyb2xsaW5nOiBib29sZWFuO1xuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIEBJbnB1dCgpIGlzUmVmcmVzaERpc2FibGVkOiBib29sZWFuO1xuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIEBPdXRwdXQoKSBvbkNvdW50ZG93bkVuZGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAvKipcbiAgICogRW1pdHRlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSB3aWRnZXRzIHJlYWx0aW1lIGJ1dHRvbiBzdGF0ZSBoYXMgY2hhbmdlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBvblJlYWxUaW1lVG9nZ2xlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBWaWV3Q2hpbGQoQ291bnRkb3duSW50ZXJ2YWxDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjb3VudGRvd25JbnRlcnZhbENvbXBvbmVudDogQ291bnRkb3duSW50ZXJ2YWxDb21wb25lbnQ7XG4gIC8qKlxuICAgKiBAaW5oZXJpdGRvY1xuICAgKi9cbiAgcHJvdGVjdGVkIGhpZGVDb3VudGRvd246IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUb29sdGlwIGZvciBhIG5ldyByZWFsdGltZSBhbGFybSBpbmRpY2F0b3IuXG4gICAqL1xuICByZWFsdGltZUljb25UaXRsZTogc3RyaW5nO1xuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvdW50ZG93biBoYXMgYmVlbiBjbGVhcmVkIGFscmVhZHkuXG4gICAqL1xuICBpc05ld0FsYXJtTWVzc2FnZUNsZWFyZWQgPSB0cnVlO1xuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIGlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT246IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIGN1cnJlbnQgc3RhdGUgb2YgYW4gcmVhbHRpbWUgdG9nZ2xlIGJ1dHRvbi5cbiAgICovXG4gIGlzUmVhbHRpbWVUb2dnbGVPbjogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEhvbGRzIHRoZSBzdWJzY3JpcHRpb24gdG8gYSBjb3VudGRvd24gb2JzZXJ2YWJsZS5cbiAgICovXG4gIGNvdW50ZG93blN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIHByb3RlY3RlZCBtYW51YWxseURpc2FibGVkQ291bnRkb3duID0gZmFsc2U7XG5cbiAgdG9nZ2xlQ291bnRkb3duQnV0dG9uVG9vbHRpcFRleHQ6IHN0cmluZztcbiAgZ2xvYmFsQXV0b1JlZnJlc2hFbmFibGVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWxhcm1zVmlld1NlcnZpY2U6IEFsYXJtc1ZpZXdTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHdpZGdldEdsb2JhbEF1dG9SZWZyZXNoU2VydmljZTogV2lkZ2V0R2xvYmFsQXV0b1JlZnJlc2hTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuaXNJbnRlcnZhbFJlZnJlc2gpIHtcbiAgICAgIHRoaXMuaXNSZWFsdGltZVRvZ2dsZU9uID0gdGhpcy5jb25maWcuaXNBdXRvUmVmcmVzaEVuYWJsZWQ7XG4gICAgICB0aGlzLnJlYWx0aW1lSWNvblRpdGxlID0gdGhpcy5nZXRSZWFsdGltZUljb25UaXRsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT24gPVxuICAgICAgICAhdGhpcy5pc1JlZnJlc2hEaXNhYmxlZCAmJiAodGhpcy5jb25maWcuaXNBdXRvUmVmcmVzaEVuYWJsZWQgfHwgISF0aGlzLnJlZnJlc2hJbnRlcnZhbCk7XG4gICAgICB0aGlzLnVwZGF0ZUNvdW50ZG93bkJ1dHRvblRvb2x0aXBUZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoICYmIHRoaXMucmVmcmVzaEludGVydmFsKSB7XG4gICAgICB0aGlzLnN0YXJ0Q291bnRkb3duKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZ2xvYmFsQXV0b1JlZnJlc2hFbmFibGVkKSB7XG4gICAgICB0aGlzLndpZGdldEdsb2JhbEF1dG9SZWZyZXNoU2VydmljZS5jb3VudGRvd25BY3Rpb25zLmNvdW50ZG93bkVuZGVkJFxuICAgICAgICAucGlwZSh0YXAoKCkgPT4gdGhpcy5vbkNvdW50ZG93bkVuZGVkLmVtaXQoKSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgeyBpc0Rpc2FibGVkLCBjb25maWcgfSA9IGNoYW5nZXM7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgdGhpcy5nbG9iYWxBdXRvUmVmcmVzaEVuYWJsZWQgPSB0aGlzLmNvbmZpZy5yZWZyZXNoT3B0aW9uID09PSBHTE9CQUxfSU5URVJWQUxfT1BUSU9OO1xuICAgIH1cbiAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy5pc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uID1cbiAgICAgICAgIXRoaXMuaXNSZWZyZXNoRGlzYWJsZWQgJiYgKHRoaXMuY29uZmlnLmlzQXV0b1JlZnJlc2hFbmFibGVkIHx8ICEhdGhpcy5yZWZyZXNoSW50ZXJ2YWwpO1xuICAgICAgdGhpcy51cGRhdGVDb3VudGRvd25CdXR0b25Ub29sdGlwVGV4dChnZXR0ZXh0KCdEaXNhYmxlZCcpKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAhdGhpcy5pc0ludGVydmFsUmVmcmVzaCB8fFxuICAgICAgdGhpcy5tYW51YWxseURpc2FibGVkQ291bnRkb3duIHx8XG4gICAgICAhdGhpcy5jb25maWcuaXNBdXRvUmVmcmVzaEVuYWJsZWRcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmhhbmRsZVNjcm9sbGluZygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuY291bnRkb3duU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmNvdW50ZG93blN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdGRvY1xuICAgKi9cbiAgY291bnRkb3duRW5kZWQoKTogdm9pZCB7XG4gICAgLyoqXG4gICAgICogQGluaGVyaXRkb2NcbiAgICAgKi9cbiAgICB0aGlzLmF1dG9SZWZyZXNoTGlzdCgpO1xuICB9XG5cbiAgcmVsb2FkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoKSB7XG4gICAgICB0aGlzLmF1dG9SZWZyZXNoTGlzdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9uQ291bnRkb3duRW5kZWQuZW1pdCgpO1xuICAgICAgdGhpcy5pc05ld0FsYXJtTWVzc2FnZUNsZWFyZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSByZWFsLXRpbWUgc3RhdGUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogVGhpcyBtZXRob2Qgc3dpdGNoZXMgdGhlIGBpc1JlYWx0aW1lVG9nZ2xlT25gIHN0YXRlIGJldHdlZW4gdHJ1ZSBhbmQgZmFsc2UuXG4gICAqIFdoZW4gdGhlIHN0YXRlIGlzIHRvZ2dsZWQsIGl0IGVtaXRzIHRoZSBjdXJyZW50IHN0YXRlIHRocm91Z2ggYG9uUmVhbFRpbWVUb2dnbGVDaGFuZ2VkYCBldmVudC5cbiAgICogSXQgYWxzbyB1cGRhdGVzIHRoZSBgcmVhbHRpbWVJY29uVGl0bGVgIGJhc2VkIG9uIHRoZSBuZXcgc3RhdGUuXG4gICAqL1xuICB0b2dnbGVSZWFsdGltZVN0YXRlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNSZWFsdGltZVRvZ2dsZU9uID0gIXRoaXMuaXNSZWFsdGltZVRvZ2dsZU9uO1xuICAgIHRoaXMub25SZWFsVGltZVRvZ2dsZUNoYW5nZWQuZW1pdCh0aGlzLmlzUmVhbHRpbWVUb2dnbGVPbik7XG4gICAgdGhpcy5yZWFsdGltZUljb25UaXRsZSA9IHRoaXMuZ2V0UmVhbHRpbWVJY29uVGl0bGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wcyB0aGUgY291bnRkb3duIGFuZCB0cmlnZ2VycyBhIHJlZnJlc2ggYWN0aW9uLlxuICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBoYWx0aW5nIHRoZSBjb3VudGRvd24gaW50ZXJ2YWwgY29tcG9uZW50J3Mgb3BlcmF0aW9uLlxuICAgKiBBZnRlciBzdG9wcGluZyB0aGUgY291bnRkb3duLCBpdCBlbWl0cyBhbiBgb25Db3VudGRvd25FbmRlZGAgZXZlbnQuXG4gICAqIFRoaXMgZXZlbnQgaXMgdXNlZCB0byBpbmZvcm0gZXh0ZXJuYWwgY29tcG9uZW50cyB0aGF0IHRoZSBjb3VudGRvd24gaGFzIGVuZGVkLFxuICAgKiB0eXBpY2FsbHkgcHJvbXB0aW5nIHRoZW0gdG8gcmVsb2FkIG9yIHJlZnJlc2ggdGhlaXIgZGF0YS5cbiAgICovXG4gIGF1dG9SZWZyZXNoTGlzdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uICYmIHRoaXMuY29uZmlnLmlzQXV0b1JlZnJlc2hFbmFibGVkKSB7XG4gICAgICB0aGlzLmNvdW50ZG93bkludGVydmFsQ29tcG9uZW50LnN0b3AoKTtcbiAgICB9XG4gICAgdGhpcy5vbkNvdW50ZG93bkVuZGVkLmVtaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0b29sdGlwIG1lc3NhZ2UgZm9yIGEgbmV3IHJlYWx0aW1lIGFsYXJtIGluZGljYXRvci5cbiAgICogQHJldHVybnMgVG9vbHRpcCBtZXNzYWdlLlxuICAgKi9cbiAgZ2V0UmVhbHRpbWVJY29uVGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc1JlYWx0aW1lVG9nZ2xlT25cbiAgICAgID8gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnUmVhbHRpbWUgYWN0aXZlJykpXG4gICAgICA6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ1JlYWx0aW1lIGluYWN0aXZlJykpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgYW5kIHN0YXJ0cyB0aGUgY291bnRkb3duIHRpbWVyLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBtYWtlcyB0aGUgY291bnRkb3duIHZpc2libGUgKGBoaWRlQ291bnRkb3duYCBpcyBzZXQgdG8gZmFsc2UpIGFuZCB0aGVuXG4gICAqIHN0YXJ0cyB0aGUgY291bnRkb3duIHByb2Nlc3MuIEl0IGVuc3VyZXMgdGhlIGNvdW50ZG93biB0aW1lciBpcyB1cGRhdGVkIGltbWVkaWF0ZWx5XG4gICAqIGJ5IHRyaWdnZXJpbmcgY2hhbmdlIGRldGVjdGlvbiB3aXRoIGBjZFJlZi5kZXRlY3RDaGFuZ2VzKClgIGJlZm9yZSBzdGFydGluZyB0aGUgY291bnRkb3duLlxuICAgKiBUaGlzIG1ldGhvZCBlbmNhcHN1bGF0ZXMgdGhlIGxvZ2ljIHJlcXVpcmVkIHRvIGluaXRpYXRlIHRoZSBjb3VudGRvd24gdGltZXIuXG4gICAqL1xuICBlbmFibGVDb3VudGRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5oaWRlQ291bnRkb3duID0gZmFsc2U7XG4gICAgLy8gUHJldmVudHMgdGhlIGNvdW50ZG93biBmcm9tIGdldHRpbmcgc3R1Y2sgb24gYW4gaW5pdGlhbCB2YWx1ZS5cbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLnN0YXJ0Q291bnRkb3duKCk7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIHByb3RlY3RlZCB1cGRhdGVDb3VudGRvd25CdXR0b25Ub29sdGlwVGV4dChjdXN0b21UZXh0Pzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGN1c3RvbVRleHQpIHtcbiAgICAgIHRoaXMudG9nZ2xlQ291bnRkb3duQnV0dG9uVG9vbHRpcFRleHQgPSBjdXN0b21UZXh0O1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZUNvdW50ZG93bkJ1dHRvblRvb2x0aXBUZXh0ID0gdGhpcy5pc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uXG4gICAgICA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ0Rpc2FibGUgYXV0byByZWZyZXNoJykpXG4gICAgICA6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ0VuYWJsZSBhdXRvIHJlZnJlc2gnKSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJtLWwtYXV0byBkLWZsZXggcC10LTQgcC1iLTRcIlxuICAqbmdJZj1cIiFnbG9iYWxBdXRvUmVmcmVzaEVuYWJsZWRcIlxuPlxuICA8ZGl2IGNsYXNzPVwibS1sLWF1dG8gZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICA8bGFiZWxcbiAgICAgIGNsYXNzPVwibS1iLTAgbS1yLTggdGV4dC1sYWJlbC1zbWFsbCB0ZXh0LXRydW5jYXRlIGZsZXgtbm8tc2hyaW5rXCJcbiAgICAgIHRpdGxlPVwiIHt7ICdBdXRvIHJlZnJlc2gnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICpuZ0lmPVwiaXNJbnRlcnZhbFJlZnJlc2ggJiYgcmVmcmVzaEludGVydmFsICYmIGNvbmZpZy5pc0F1dG9SZWZyZXNoRW5hYmxlZFwiXG4gICAgPlxuICAgICAge3sgJ0F1dG8gcmVmcmVzaCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwidG9nZ2xlLWNvdW50ZG93blwiXG4gICAgICAgIFtjbGFzcy50b2dnbGUtY291bnRkb3duLWRpc2FibGVkXT1cImlzUmVmcmVzaERpc2FibGVkXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0b2dnbGVDb3VudGRvd25CdXR0b25Ub29sdGlwVGV4dFwiXG4gICAgICAgIFt0b29sdGlwXT1cInRvZ2dsZUNvdW50ZG93bkJ1dHRvblRvb2x0aXBUZXh0XCJcbiAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgKm5nSWY9XCJpc0ludGVydmFsUmVmcmVzaCAmJiByZWZyZXNoSW50ZXJ2YWwgJiYgY29uZmlnLmlzQXV0b1JlZnJlc2hFbmFibGVkXCJcbiAgICAgICAgW2FkYXB0aXZlUG9zaXRpb25dPVwiZmFsc2VcIlxuICAgICAgICBbY29udGFpbmVyXT1cIidib2R5J1wiXG4gICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIGRhdGEtY3k9XCJjOHktYWxhcm1zLXdpZGdldC0taW50ZXJ2YWwtdG9nZ2xlLWJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uVG9nZ2xlQ291bnRkb3duQnV0dG9uU3RhdGUoJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxjOHktY291bnRkb3duLWludGVydmFsXG4gICAgICAgICAgKm5nSWY9XCJpc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uXCJcbiAgICAgICAgICBbY291bnRkb3duSW50ZXJ2YWxdPVwicmVmcmVzaEludGVydmFsXCJcbiAgICAgICAgICAoY291bnRkb3duRW5kZWQpPVwiY291bnRkb3duRW5kZWQoKVwiXG4gICAgICAgID48L2M4eS1jb3VudGRvd24taW50ZXJ2YWw+XG4gICAgICAgIDxpXG4gICAgICAgICAgYzh5SWNvbj1cInBhdXNlXCJcbiAgICAgICAgICAqbmdJZj1cIiFpc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uXCJcbiAgICAgICAgPjwvaT5cbiAgICAgIDwvbGFiZWw+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZWZyZXNoJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiXG4gICAgICAgICAgICAhaXNOZXdBbGFybU1lc3NhZ2VDbGVhcmVkXG4gICAgICAgICAgICAgID8gKFJFQUxUSU1FX1VQREFURV9BTEFSTVNfTUVTU0FHRSB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgOiAoJ1JlZnJlc2gnIHwgdHJhbnNsYXRlKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbYWRhcHRpdmVQb3NpdGlvbl09XCJmYWxzZVwiXG4gICAgICAgICAgW2NvbnRhaW5lcl09XCInYm9keSdcIlxuICAgICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJpc1JlZnJlc2hEaXNhYmxlZCB8fCAoaXNMb2FkaW5nIHwgYXN5bmMpXCJcbiAgICAgICAgICAoY2xpY2spPVwicmVsb2FkKClcIlxuICAgICAgICAgIGRhdGEtY3k9XCJjOHktYWxhcm1zLXdpZGdldC0tcmVsb2FkLWJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJ0YWcgdGFnLS1pbmZvIG0tci04XCJcbiAgICAgICAgICAgICpuZ0lmPVwiIWlzTmV3QWxhcm1NZXNzYWdlQ2xlYXJlZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ05ldyBhbGFybXMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxpXG4gICAgICAgICAgICBjOHlJY29uPVwicmVmcmVzaFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpY29uLXNwaW4nOiBpc0xvYWRpbmcgfCBhc3luYyB9XCJcbiAgICAgICAgICA+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImlucHV0LWdyb3VwLWJ0biBpbnB1dC1ncm91cC1idG4tLWxhc3RcIlxuICAgICAgICAqbmdJZj1cIiFpc0ludGVydmFsUmVmcmVzaFwiXG4gICAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImM4eS1yZWFsdGltZSBidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicmVhbHRpbWVJY29uVGl0bGVcIlxuICAgICAgICAgIFt0b29sdGlwXT1cInJlYWx0aW1lSWNvblRpdGxlXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtjb250YWluZXJdPVwiJ2JvZHknXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUmVhbHRpbWVTdGF0ZSgpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNSZWZyZXNoRGlzYWJsZWRcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiYzh5LXB1bHNlIG0tMFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgIGFjdGl2ZTogaXNSZWFsdGltZVRvZ2dsZU9uLFxuICAgICAgICAgICAgICBpbmFjdGl2ZTogIWlzUmVhbHRpbWVUb2dnbGVPblxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==