@grafana/scenes 6.8.0 → 6.9.0--canary.1093.14409340532.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/esm/components/VizPanel/VizPanelRenderer.js +4 -3
  3. package/dist/esm/components/VizPanel/VizPanelRenderer.js.map +1 -1
  4. package/dist/esm/index.js +1 -1
  5. package/dist/esm/index.js.map +1 -1
  6. package/dist/index.d.ts +1 -1
  7. package/dist/index.js +5 -4
  8. package/dist/index.js.map +1 -1
  9. package/package.json +2 -2
  10. package/dist/esm/components/layout/CSSGrid/SceneCSSGridItem.js +0 -33
  11. package/dist/esm/dist/esm/behaviors/CursorSync.js +0 -76
  12. package/dist/esm/dist/esm/behaviors/LiveNowTimer.js +0 -44
  13. package/dist/esm/dist/esm/behaviors/SceneQueryController.js +0 -14
  14. package/dist/esm/dist/esm/components/EmbeddedScene.js +0 -59
  15. package/dist/esm/dist/esm/components/NestedScene.js +0 -95
  16. package/dist/esm/dist/esm/components/SceneApp/SceneApp.js +0 -27
  17. package/dist/esm/dist/esm/components/SceneApp/SceneAppPage.js +0 -176
  18. package/dist/esm/dist/esm/components/SceneApp/SceneAppPageView.js +0 -104
  19. package/dist/esm/dist/esm/components/SceneApp/utils.js +0 -42
  20. package/dist/esm/dist/esm/components/SceneByFrameRepeater.js +0 -41
  21. package/dist/esm/dist/esm/components/SceneByVariableRepeater.js +0 -55
  22. package/dist/esm/dist/esm/components/SceneCanvasText.js +0 -32
  23. package/dist/esm/dist/esm/components/SceneControlsSpacer.js +0 -17
  24. package/dist/esm/dist/esm/components/SceneDebugger/DebugDetails.js +0 -82
  25. package/dist/esm/dist/esm/components/SceneDebugger/DebugTreeNode.js +0 -72
  26. package/dist/esm/dist/esm/components/SceneDebugger/SceneDebugger.js +0 -77
  27. package/dist/esm/dist/esm/components/SceneReactObject.js +0 -34
  28. package/dist/esm/dist/esm/components/SceneRefreshPicker.js +0 -205
  29. package/dist/esm/dist/esm/components/SceneTimePicker.js +0 -139
  30. package/dist/esm/dist/esm/components/SceneTimeRangeCompare.js +0 -240
  31. package/dist/esm/dist/esm/components/SceneToolbarButton.js +0 -33
  32. package/dist/esm/dist/esm/components/VizPanel/VizPanel.js +0 -406
  33. package/dist/esm/dist/esm/components/VizPanel/VizPanelExploreButton.js +0 -44
  34. package/dist/esm/dist/esm/components/VizPanel/VizPanelMenu.js +0 -59
  35. package/dist/esm/dist/esm/components/VizPanel/VizPanelRenderer.js +0 -285
  36. package/dist/esm/dist/esm/components/VizPanel/VizPanelSeriesLimit.js +0 -45
  37. package/dist/esm/dist/esm/components/VizPanel/colorSeriesConfigFactory.js +0 -72
  38. package/dist/esm/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js +0 -11
  39. package/dist/esm/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js +0 -164
  40. package/dist/esm/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js +0 -124
  41. package/dist/esm/dist/esm/components/layout/LazyLoader.js +0 -103
  42. package/dist/esm/dist/esm/components/layout/SceneFlexLayout.js +0 -135
  43. package/dist/esm/dist/esm/components/layout/grid/SceneGridItem.js +0 -30
  44. package/dist/esm/dist/esm/components/layout/grid/SceneGridLayout.js +0 -283
  45. package/dist/esm/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js +0 -178
  46. package/dist/esm/dist/esm/components/layout/grid/SceneGridRow.js +0 -190
  47. package/dist/esm/dist/esm/components/layout/grid/constants.js +0 -7
  48. package/dist/esm/dist/esm/components/layout/grid/utils.js +0 -36
  49. package/dist/esm/dist/esm/components/layout/split/SplitLayout.js +0 -17
  50. package/dist/esm/dist/esm/components/layout/split/SplitLayoutRenderer.js +0 -29
  51. package/dist/esm/dist/esm/components/layout/split/Splitter.js +0 -386
  52. package/dist/esm/dist/esm/core/SceneComponentWrapper.js +0 -57
  53. package/dist/esm/dist/esm/core/SceneDataNode.js +0 -43
  54. package/dist/esm/dist/esm/core/SceneObjectBase.js +0 -286
  55. package/dist/esm/dist/esm/core/SceneObjectRef.js +0 -32
  56. package/dist/esm/dist/esm/core/SceneTimeRange.js +0 -231
  57. package/dist/esm/dist/esm/core/events.js +0 -11
  58. package/dist/esm/dist/esm/core/sceneGraph/getTimeRange.js +0 -10
  59. package/dist/esm/dist/esm/core/sceneGraph/index.js +0 -25
  60. package/dist/esm/dist/esm/core/sceneGraph/sceneGraph.js +0 -178
  61. package/dist/esm/dist/esm/core/sceneGraph/utils.js +0 -64
  62. package/dist/esm/dist/esm/core/types.js +0 -15
  63. package/dist/esm/dist/esm/querying/DataLayersMerger.js +0 -46
  64. package/dist/esm/dist/esm/querying/ExtraQueryProvider.js +0 -6
  65. package/dist/esm/dist/esm/querying/RuntimeDataSource.js +0 -6
  66. package/dist/esm/dist/esm/querying/SceneDataLayerSet.js +0 -100
  67. package/dist/esm/dist/esm/querying/SceneQueryRunner.js +0 -468
  68. package/dist/esm/dist/esm/querying/extraQueryProcessingOperator.js +0 -46
  69. package/dist/esm/dist/esm/querying/getEnrichedDataRequest.js +0 -12
  70. package/dist/esm/dist/esm/querying/layers/SceneDataLayerBase.js +0 -112
  71. package/dist/esm/dist/esm/querying/layers/SceneDataLayerControls.js +0 -51
  72. package/dist/esm/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js +0 -130
  73. package/dist/esm/dist/esm/querying/layers/annotations/filterAnnotations.js +0 -85
  74. package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationQuery.js +0 -121
  75. package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js +0 -211
  76. package/dist/esm/dist/esm/querying/layers/annotations/utils.js +0 -77
  77. package/dist/esm/dist/esm/querying/registerQueryWithController.js +0 -41
  78. package/dist/esm/dist/esm/services/SceneObjectUrlSyncConfig.js +0 -30
  79. package/dist/esm/dist/esm/services/UniqueUrlKeyMapper.js +0 -45
  80. package/dist/esm/dist/esm/services/UrlSyncManager.js +0 -167
  81. package/dist/esm/dist/esm/services/useUrlSync.js +0 -29
  82. package/dist/esm/dist/esm/services/utils.js +0 -71
  83. package/dist/esm/dist/esm/utils/ControlsLabel.js +0 -107
  84. package/dist/esm/dist/esm/utils/LoadingIndicator.js +0 -19
  85. package/dist/esm/dist/esm/utils/SafeSerializableSceneObject.js +0 -39
  86. package/dist/esm/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js +0 -16
  87. package/dist/esm/dist/esm/utils/date.js +0 -15
  88. package/dist/esm/dist/esm/utils/evaluateTimeRange.js +0 -16
  89. package/dist/esm/dist/esm/utils/explore.js +0 -47
  90. package/dist/esm/dist/esm/utils/getCompareSeriesRefId.js +0 -4
  91. package/dist/esm/dist/esm/utils/getDataSource.js +0 -18
  92. package/dist/esm/dist/esm/utils/getMessageFromError.js +0 -24
  93. package/dist/esm/dist/esm/utils/metricTree.js +0 -53
  94. package/dist/esm/dist/esm/utils/parseUrlParam.js +0 -41
  95. package/dist/esm/dist/esm/utils/utils.js +0 -11
  96. package/dist/esm/dist/esm/utils/wrapInSafeSerializableSceneObject.js +0 -30
  97. package/dist/esm/dist/esm/utils/writeSceneLog.js +0 -12
  98. package/dist/esm/dist/esm/variables/VariableDependencyConfig.js +0 -150
  99. package/dist/esm/dist/esm/variables/VariableValueRecorder.js +0 -71
  100. package/dist/esm/dist/esm/variables/adhoc/AdHocFilterBuilder.js +0 -24
  101. package/dist/esm/dist/esm/variables/adhoc/AdHocFilterRenderer.js +0 -303
  102. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +0 -162
  103. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +0 -20
  104. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +0 -640
  105. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +0 -65
  106. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +0 -146
  107. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +0 -114
  108. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +0 -68
  109. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js +0 -146
  110. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariable.js +0 -289
  111. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +0 -76
  112. package/dist/esm/dist/esm/variables/adhoc/getAdhocOptionSearcher.js +0 -13
  113. package/dist/esm/dist/esm/variables/adhoc/patchGetAdhocFilters.js +0 -47
  114. package/dist/esm/dist/esm/variables/components/VariableValueControl.js +0 -23
  115. package/dist/esm/dist/esm/variables/components/VariableValueInput.js +0 -33
  116. package/dist/esm/dist/esm/variables/components/VariableValueSelect.js +0 -228
  117. package/dist/esm/dist/esm/variables/components/VariableValueSelectors.js +0 -72
  118. package/dist/esm/dist/esm/variables/components/getOptionSearcher.js +0 -15
  119. package/dist/esm/dist/esm/variables/constants.js +0 -9
  120. package/dist/esm/dist/esm/variables/getEnrichedFiltersRequest.js +0 -12
  121. package/dist/esm/dist/esm/variables/groupby/GroupByVariable.js +0 -259
  122. package/dist/esm/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js +0 -63
  123. package/dist/esm/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js +0 -13
  124. package/dist/esm/dist/esm/variables/interpolation/ScopedVarsVariable.js +0 -40
  125. package/dist/esm/dist/esm/variables/interpolation/defaults.js +0 -21
  126. package/dist/esm/dist/esm/variables/interpolation/fieldAccessorCache.js +0 -13
  127. package/dist/esm/dist/esm/variables/interpolation/formatRegistry.js +0 -296
  128. package/dist/esm/dist/esm/variables/interpolation/sceneInterpolator.js +0 -87
  129. package/dist/esm/dist/esm/variables/lookupVariable.js +0 -20
  130. package/dist/esm/dist/esm/variables/macros/AllVariablesMacro.js +0 -57
  131. package/dist/esm/dist/esm/variables/macros/contextMacros.js +0 -43
  132. package/dist/esm/dist/esm/variables/macros/dataMacros.js +0 -134
  133. package/dist/esm/dist/esm/variables/macros/index.js +0 -26
  134. package/dist/esm/dist/esm/variables/macros/templateProxies.js +0 -51
  135. package/dist/esm/dist/esm/variables/macros/timeMacros.js +0 -86
  136. package/dist/esm/dist/esm/variables/macros/types.js +0 -11
  137. package/dist/esm/dist/esm/variables/macros/urlMacros.js +0 -56
  138. package/dist/esm/dist/esm/variables/sets/SceneVariableSet.js +0 -254
  139. package/dist/esm/dist/esm/variables/types.js +0 -11
  140. package/dist/esm/dist/esm/variables/utils.js +0 -172
  141. package/dist/esm/dist/esm/variables/variants/ConstantVariable.js +0 -38
  142. package/dist/esm/dist/esm/variables/variants/CustomVariable.js +0 -60
  143. package/dist/esm/dist/esm/variables/variants/DataSourceVariable.js +0 -88
  144. package/dist/esm/dist/esm/variables/variants/IntervalVariable.js +0 -117
  145. package/dist/esm/dist/esm/variables/variants/MultiValueVariable.js +0 -295
  146. package/dist/esm/dist/esm/variables/variants/TestVariable.js +0 -117
  147. package/dist/esm/dist/esm/variables/variants/TextBoxVariable.js +0 -61
  148. package/dist/esm/dist/esm/variables/variants/query/QueryVariable.js +0 -139
  149. package/dist/esm/dist/esm/variables/variants/query/createQueryVariableRunner.js +0 -129
  150. package/dist/esm/dist/esm/variables/variants/query/guards.js +0 -28
  151. package/dist/esm/dist/esm/variables/variants/query/toMetricFindValues.js +0 -96
  152. package/dist/esm/dist/esm/variables/variants/query/utils.js +0 -124
  153. package/dist/esm/querying/DataProviderSharer.js +0 -39
  154. package/dist/esm/src/behaviors/ActWhenVariableChanged.js +0 -27
  155. package/dist/esm/src/behaviors/CursorSync.js +0 -76
  156. package/dist/esm/src/behaviors/LiveNowTimer.js +0 -44
  157. package/dist/esm/src/behaviors/SceneQueryController.js +0 -60
  158. package/dist/esm/src/behaviors/index.js +0 -5
  159. package/dist/esm/src/components/EmbeddedScene.js +0 -59
  160. package/dist/esm/src/components/NestedScene.js +0 -95
  161. package/dist/esm/src/components/SceneApp/SceneApp.js +0 -37
  162. package/dist/esm/src/components/SceneApp/SceneAppPage.js +0 -176
  163. package/dist/esm/src/components/SceneApp/SceneAppPageView.js +0 -104
  164. package/dist/esm/src/components/SceneApp/utils.js +0 -42
  165. package/dist/esm/src/components/SceneByFrameRepeater.js +0 -41
  166. package/dist/esm/src/components/SceneByVariableRepeater.js +0 -55
  167. package/dist/esm/src/components/SceneCanvasText.js +0 -32
  168. package/dist/esm/src/components/SceneControlsSpacer.js +0 -17
  169. package/dist/esm/src/components/SceneDebugger/DebugDetails.js +0 -82
  170. package/dist/esm/src/components/SceneDebugger/DebugTreeNode.js +0 -72
  171. package/dist/esm/src/components/SceneDebugger/SceneDebugger.js +0 -77
  172. package/dist/esm/src/components/SceneReactObject.js +0 -34
  173. package/dist/esm/src/components/SceneRefreshPicker.js +0 -205
  174. package/dist/esm/src/components/SceneTimePicker.js +0 -139
  175. package/dist/esm/src/components/SceneTimeRangeCompare.js +0 -240
  176. package/dist/esm/src/components/SceneToolbarButton.js +0 -33
  177. package/dist/esm/src/components/VizPanel/VizPanel.js +0 -406
  178. package/dist/esm/src/components/VizPanel/VizPanelExploreButton.js +0 -44
  179. package/dist/esm/src/components/VizPanel/VizPanelMenu.js +0 -59
  180. package/dist/esm/src/components/VizPanel/VizPanelRenderer.js +0 -285
  181. package/dist/esm/src/components/VizPanel/VizPanelSeriesLimit.js +0 -45
  182. package/dist/esm/src/components/VizPanel/colorSeriesConfigFactory.js +0 -72
  183. package/dist/esm/src/components/VizPanel/registerRuntimePanelPlugin.js +0 -56
  184. package/dist/esm/src/components/VizPanel/seriesVisibilityConfigFactory.js +0 -164
  185. package/dist/esm/src/components/layout/CSSGrid/SceneCSSGridLayout.js +0 -124
  186. package/dist/esm/src/components/layout/LazyLoader.js +0 -103
  187. package/dist/esm/src/components/layout/SceneFlexLayout.js +0 -135
  188. package/dist/esm/src/components/layout/grid/SceneGridItem.js +0 -30
  189. package/dist/esm/src/components/layout/grid/SceneGridLayout.js +0 -283
  190. package/dist/esm/src/components/layout/grid/SceneGridLayoutRenderer.js +0 -178
  191. package/dist/esm/src/components/layout/grid/SceneGridRow.js +0 -190
  192. package/dist/esm/src/components/layout/grid/constants.js +0 -7
  193. package/dist/esm/src/components/layout/grid/utils.js +0 -36
  194. package/dist/esm/src/components/layout/split/SplitLayout.js +0 -17
  195. package/dist/esm/src/components/layout/split/SplitLayoutRenderer.js +0 -29
  196. package/dist/esm/src/components/layout/split/Splitter.js +0 -386
  197. package/dist/esm/src/core/PanelBuilders/FieldConfigBuilder.js +0 -100
  198. package/dist/esm/src/core/PanelBuilders/FieldConfigBuilders.js +0 -75
  199. package/dist/esm/src/core/PanelBuilders/FieldConfigOverridesBuilder.js +0 -75
  200. package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilder.js +0 -22
  201. package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilders.js +0 -85
  202. package/dist/esm/src/core/PanelBuilders/StandardFieldConfigBuilders.js +0 -52
  203. package/dist/esm/src/core/PanelBuilders/VizConfigBuilder.js +0 -78
  204. package/dist/esm/src/core/PanelBuilders/VizConfigBuilders.js +0 -114
  205. package/dist/esm/src/core/PanelBuilders/VizPanelBuilder.js +0 -162
  206. package/dist/esm/src/core/PanelBuilders/index.js +0 -116
  207. package/dist/esm/src/core/SceneComponentWrapper.js +0 -57
  208. package/dist/esm/src/core/SceneDataNode.js +0 -43
  209. package/dist/esm/src/core/SceneObjectBase.js +0 -286
  210. package/dist/esm/src/core/SceneObjectRef.js +0 -32
  211. package/dist/esm/src/core/SceneTimeRange.js +0 -231
  212. package/dist/esm/src/core/SceneTimeRangeTransformerBase.js +0 -35
  213. package/dist/esm/src/core/SceneTimeZoneOverride.js +0 -63
  214. package/dist/esm/src/core/events.js +0 -11
  215. package/dist/esm/src/core/sceneGraph/getTimeRange.js +0 -10
  216. package/dist/esm/src/core/sceneGraph/index.js +0 -25
  217. package/dist/esm/src/core/sceneGraph/sceneGraph.js +0 -178
  218. package/dist/esm/src/core/sceneGraph/utils.js +0 -64
  219. package/dist/esm/src/core/types.js +0 -15
  220. package/dist/esm/src/index.js +0 -108
  221. package/dist/esm/src/querying/DataLayersMerger.js +0 -46
  222. package/dist/esm/src/querying/DataProviderProxy.js +0 -37
  223. package/dist/esm/src/querying/DataProviderSharer.js +0 -108
  224. package/dist/esm/src/querying/ExtraQueryProvider.js +0 -6
  225. package/dist/esm/src/querying/RuntimeDataSource.js +0 -49
  226. package/dist/esm/src/querying/SceneDataLayerSet.js +0 -100
  227. package/dist/esm/src/querying/SceneDataTransformer.js +0 -178
  228. package/dist/esm/src/querying/SceneQueryRunner.js +0 -468
  229. package/dist/esm/src/querying/extraQueryProcessingOperator.js +0 -46
  230. package/dist/esm/src/querying/getEnrichedDataRequest.js +0 -12
  231. package/dist/esm/src/querying/layers/SceneDataLayerBase.js +0 -112
  232. package/dist/esm/src/querying/layers/SceneDataLayerControls.js +0 -51
  233. package/dist/esm/src/querying/layers/annotations/AnnotationsDataLayer.js +0 -130
  234. package/dist/esm/src/querying/layers/annotations/filterAnnotations.js +0 -85
  235. package/dist/esm/src/querying/layers/annotations/standardAnnotationQuery.js +0 -121
  236. package/dist/esm/src/querying/layers/annotations/standardAnnotationsSupport.js +0 -211
  237. package/dist/esm/src/querying/layers/annotations/utils.js +0 -77
  238. package/dist/esm/src/querying/layers/index.js +0 -2
  239. package/dist/esm/src/querying/registerQueryWithController.js +0 -41
  240. package/dist/esm/src/services/SceneObjectUrlSyncConfig.js +0 -30
  241. package/dist/esm/src/services/UniqueUrlKeyMapper.js +0 -45
  242. package/dist/esm/src/services/UrlSyncContextProvider.js +0 -17
  243. package/dist/esm/src/services/UrlSyncManager.js +0 -167
  244. package/dist/esm/src/services/useUrlSync.js +0 -29
  245. package/dist/esm/src/services/utils.js +0 -75
  246. package/dist/esm/src/utils/ControlsLabel.js +0 -107
  247. package/dist/esm/src/utils/LoadingIndicator.js +0 -19
  248. package/dist/esm/src/utils/SafeSerializableSceneObject.js +0 -39
  249. package/dist/esm/src/utils/compatibility/setWindowGrafanaSceneContext.js +0 -16
  250. package/dist/esm/src/utils/date.js +0 -15
  251. package/dist/esm/src/utils/evaluateTimeRange.js +0 -16
  252. package/dist/esm/src/utils/explore.js +0 -47
  253. package/dist/esm/src/utils/getCompareSeriesRefId.js +0 -4
  254. package/dist/esm/src/utils/getDataSource.js +0 -18
  255. package/dist/esm/src/utils/getMessageFromError.js +0 -24
  256. package/dist/esm/src/utils/metricTree.js +0 -53
  257. package/dist/esm/src/utils/parseUrlParam.js +0 -41
  258. package/dist/esm/src/utils/utils.js +0 -11
  259. package/dist/esm/src/utils/wrapInSafeSerializableSceneObject.js +0 -30
  260. package/dist/esm/src/utils/writeSceneLog.js +0 -12
  261. package/dist/esm/src/variables/VariableDependencyConfig.js +0 -150
  262. package/dist/esm/src/variables/VariableValueRecorder.js +0 -71
  263. package/dist/esm/src/variables/adhoc/AdHocFilterBuilder.js +0 -24
  264. package/dist/esm/src/variables/adhoc/AdHocFilterRenderer.js +0 -303
  265. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +0 -162
  266. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +0 -20
  267. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +0 -640
  268. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +0 -65
  269. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +0 -146
  270. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +0 -114
  271. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +0 -68
  272. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/utils.js +0 -146
  273. package/dist/esm/src/variables/adhoc/AdHocFiltersVariable.js +0 -289
  274. package/dist/esm/src/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +0 -76
  275. package/dist/esm/src/variables/adhoc/getAdhocOptionSearcher.js +0 -13
  276. package/dist/esm/src/variables/adhoc/patchGetAdhocFilters.js +0 -47
  277. package/dist/esm/src/variables/components/VariableValueControl.js +0 -23
  278. package/dist/esm/src/variables/components/VariableValueInput.js +0 -33
  279. package/dist/esm/src/variables/components/VariableValueSelect.js +0 -228
  280. package/dist/esm/src/variables/components/VariableValueSelectors.js +0 -72
  281. package/dist/esm/src/variables/components/getOptionSearcher.js +0 -15
  282. package/dist/esm/src/variables/constants.js +0 -9
  283. package/dist/esm/src/variables/getEnrichedFiltersRequest.js +0 -12
  284. package/dist/esm/src/variables/groupby/GroupByVariable.js +0 -259
  285. package/dist/esm/src/variables/groupby/GroupByVariableUrlSyncHandler.js +0 -63
  286. package/dist/esm/src/variables/groupby/findActiveGroupByVariablesByUid.js +0 -13
  287. package/dist/esm/src/variables/interpolation/ScopedVarsVariable.js +0 -40
  288. package/dist/esm/src/variables/interpolation/defaults.js +0 -21
  289. package/dist/esm/src/variables/interpolation/fieldAccessorCache.js +0 -13
  290. package/dist/esm/src/variables/interpolation/formatRegistry.js +0 -296
  291. package/dist/esm/src/variables/interpolation/sceneInterpolator.js +0 -87
  292. package/dist/esm/src/variables/lookupVariable.js +0 -20
  293. package/dist/esm/src/variables/macros/AllVariablesMacro.js +0 -57
  294. package/dist/esm/src/variables/macros/contextMacros.js +0 -43
  295. package/dist/esm/src/variables/macros/dataMacros.js +0 -134
  296. package/dist/esm/src/variables/macros/index.js +0 -35
  297. package/dist/esm/src/variables/macros/templateProxies.js +0 -51
  298. package/dist/esm/src/variables/macros/timeMacros.js +0 -86
  299. package/dist/esm/src/variables/macros/types.js +0 -11
  300. package/dist/esm/src/variables/macros/urlMacros.js +0 -56
  301. package/dist/esm/src/variables/sets/SceneVariableSet.js +0 -254
  302. package/dist/esm/src/variables/types.js +0 -11
  303. package/dist/esm/src/variables/utils.js +0 -172
  304. package/dist/esm/src/variables/variants/ConstantVariable.js +0 -38
  305. package/dist/esm/src/variables/variants/CustomVariable.js +0 -60
  306. package/dist/esm/src/variables/variants/DataSourceVariable.js +0 -88
  307. package/dist/esm/src/variables/variants/IntervalVariable.js +0 -117
  308. package/dist/esm/src/variables/variants/JsonVariable.js +0 -193
  309. package/dist/esm/src/variables/variants/LocalValueVariable.js +0 -56
  310. package/dist/esm/src/variables/variants/MultiValueVariable.js +0 -295
  311. package/dist/esm/src/variables/variants/TestVariable.js +0 -117
  312. package/dist/esm/src/variables/variants/TextBoxVariable.js +0 -61
  313. package/dist/esm/src/variables/variants/guards.js +0 -27
  314. package/dist/esm/src/variables/variants/query/QueryVariable.js +0 -139
  315. package/dist/esm/src/variables/variants/query/createQueryVariableRunner.js +0 -129
  316. package/dist/esm/src/variables/variants/query/guards.js +0 -28
  317. package/dist/esm/src/variables/variants/query/toMetricFindValues.js +0 -96
  318. package/dist/esm/src/variables/variants/query/utils.js +0 -124
  319. package/dist/esm/variables/variants/JsonVariable.js +0 -96
  320. package/dist/esm/variables/variants/json/JsonVariable.js +0 -95
  321. package/dist/esm/variables/variants/json/JsonVariableOptionProviders.js +0 -70
@@ -1,386 +0,0 @@
1
- import { cx, css } from '@emotion/css';
2
- import { useStyles2 } from '@grafana/ui';
3
- import { clamp, throttle } from 'lodash';
4
- import React, { useRef, useCallback, useLayoutEffect } from 'react';
5
- import { useUniqueId } from '../LazyLoader.js';
6
-
7
- var __defProp = Object.defineProperty;
8
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9
- var __hasOwnProp = Object.prototype.hasOwnProperty;
10
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
- var __spreadValues = (a, b) => {
13
- for (var prop in b || (b = {}))
14
- if (__hasOwnProp.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- if (__getOwnPropSymbols)
17
- for (var prop of __getOwnPropSymbols(b)) {
18
- if (__propIsEnum.call(b, prop))
19
- __defNormalProp(a, prop, b[prop]);
20
- }
21
- return a;
22
- };
23
- const PIXELS_PER_MS = 0.3;
24
- const VERTICAL_KEYS = /* @__PURE__ */ new Set(["ArrowUp", "ArrowDown"]);
25
- const HORIZONTAL_KEYS = /* @__PURE__ */ new Set(["ArrowLeft", "ArrowRight"]);
26
- const propsForDirection = {
27
- row: {
28
- dim: "width",
29
- axis: "clientX",
30
- min: "minWidth",
31
- max: "maxWidth"
32
- },
33
- column: {
34
- dim: "height",
35
- axis: "clientY",
36
- min: "minHeight",
37
- max: "maxHeight"
38
- }
39
- };
40
- function Splitter({
41
- direction = "row",
42
- handleSize = 32,
43
- initialSize = "auto",
44
- primaryPaneStyles,
45
- secondaryPaneStyles,
46
- onDragFinished,
47
- children
48
- }) {
49
- const kids = React.Children.toArray(children);
50
- const splitterRef = useRef(null);
51
- const firstPaneRef = useRef(null);
52
- const secondPaneRef = useRef(null);
53
- const containerRef = useRef(null);
54
- const containerSize = useRef(null);
55
- const primarySizeRef = useRef("1fr");
56
- const firstPaneMeasurements = useRef(void 0);
57
- const savedPos = useRef(void 0);
58
- const measurementProp = propsForDirection[direction].dim;
59
- const clientAxis = propsForDirection[direction].axis;
60
- const minDimProp = propsForDirection[direction].min;
61
- const maxDimProp = propsForDirection[direction].max;
62
- useResizeObserver(
63
- containerRef.current,
64
- (entries) => {
65
- for (const entry of entries) {
66
- if (!entry.target.isSameNode(containerRef.current)) {
67
- return;
68
- }
69
- const curSize = firstPaneRef.current.getBoundingClientRect()[measurementProp];
70
- const newDims = measureElement(firstPaneRef.current);
71
- splitterRef.current.ariaValueNow = `${clamp(
72
- (curSize - newDims[minDimProp]) / (newDims[maxDimProp] - newDims[minDimProp]) * 100,
73
- 0,
74
- 100
75
- )}`;
76
- }
77
- },
78
- 500,
79
- [maxDimProp, minDimProp, direction, measurementProp]
80
- );
81
- const dragStart = useRef(null);
82
- const onPointerDown = useCallback(
83
- (e) => {
84
- primarySizeRef.current = firstPaneRef.current.getBoundingClientRect()[measurementProp];
85
- containerSize.current = containerRef.current.getBoundingClientRect()[measurementProp];
86
- dragStart.current = e[clientAxis];
87
- splitterRef.current.setPointerCapture(e.pointerId);
88
- firstPaneMeasurements.current = measureElement(firstPaneRef.current);
89
- savedPos.current = void 0;
90
- },
91
- [measurementProp, clientAxis]
92
- );
93
- const onPointerMove = useCallback(
94
- (e) => {
95
- if (dragStart.current !== null && primarySizeRef.current !== "1fr") {
96
- const diff = e[clientAxis] - dragStart.current;
97
- const dims = firstPaneMeasurements.current;
98
- const newSize = clamp(primarySizeRef.current + diff, dims[minDimProp], dims[maxDimProp]);
99
- const newFlex = newSize / (containerSize.current - handleSize);
100
- firstPaneRef.current.style.flexGrow = `${newFlex}`;
101
- secondPaneRef.current.style.flexGrow = `${1 - newFlex}`;
102
- const ariaValueNow = clamp(
103
- (newSize - dims[minDimProp]) / (dims[maxDimProp] - dims[minDimProp]) * 100,
104
- 0,
105
- 100
106
- );
107
- splitterRef.current.ariaValueNow = `${ariaValueNow}`;
108
- }
109
- },
110
- [handleSize, clientAxis, minDimProp, maxDimProp]
111
- );
112
- const onPointerUp = useCallback(
113
- (e) => {
114
- e.preventDefault();
115
- e.stopPropagation();
116
- splitterRef.current.releasePointerCapture(e.pointerId);
117
- dragStart.current = null;
118
- onDragFinished == null ? void 0 : onDragFinished(parseFloat(firstPaneRef.current.style.flexGrow));
119
- },
120
- [onDragFinished]
121
- );
122
- const pressedKeys = useRef(/* @__PURE__ */ new Set());
123
- const keysLastHandledAt = useRef(null);
124
- const handlePressedKeys = useCallback(
125
- (time) => {
126
- var _a;
127
- const nothingPressed = pressedKeys.current.size === 0;
128
- if (nothingPressed) {
129
- keysLastHandledAt.current = null;
130
- return;
131
- } else if (primarySizeRef.current === "1fr") {
132
- return;
133
- }
134
- const dt = time - ((_a = keysLastHandledAt.current) != null ? _a : time);
135
- const dx = dt * PIXELS_PER_MS;
136
- let sizeChange = 0;
137
- if (direction === "row") {
138
- if (pressedKeys.current.has("ArrowLeft")) {
139
- sizeChange -= dx;
140
- }
141
- if (pressedKeys.current.has("ArrowRight")) {
142
- sizeChange += dx;
143
- }
144
- } else {
145
- if (pressedKeys.current.has("ArrowUp")) {
146
- sizeChange -= dx;
147
- }
148
- if (pressedKeys.current.has("ArrowDown")) {
149
- sizeChange += dx;
150
- }
151
- }
152
- const firstPaneDims = firstPaneMeasurements.current;
153
- const curSize = firstPaneRef.current.getBoundingClientRect()[measurementProp];
154
- const newSize = clamp(curSize + sizeChange, firstPaneDims[minDimProp], firstPaneDims[maxDimProp]);
155
- const newFlex = newSize / (containerSize.current - handleSize);
156
- firstPaneRef.current.style.flexGrow = `${newFlex}`;
157
- secondPaneRef.current.style.flexGrow = `${1 - newFlex}`;
158
- const ariaValueNow = (newSize - firstPaneDims[minDimProp]) / (firstPaneDims[maxDimProp] - firstPaneDims[minDimProp]) * 100;
159
- splitterRef.current.ariaValueNow = `${clamp(ariaValueNow, 0, 100)}`;
160
- keysLastHandledAt.current = time;
161
- window.requestAnimationFrame(handlePressedKeys);
162
- },
163
- [direction, handleSize, minDimProp, maxDimProp, measurementProp]
164
- );
165
- const onKeyDown = useCallback(
166
- (e) => {
167
- if (e.key === "Enter") {
168
- if (savedPos.current === void 0) {
169
- savedPos.current = firstPaneRef.current.style.flexGrow;
170
- firstPaneRef.current.style.flexGrow = "0";
171
- secondPaneRef.current.style.flexGrow = "1";
172
- } else {
173
- firstPaneRef.current.style.flexGrow = savedPos.current;
174
- secondPaneRef.current.style.flexGrow = `${1 - parseFloat(savedPos.current)}`;
175
- savedPos.current = void 0;
176
- }
177
- return;
178
- } else if (e.key === "Home") {
179
- firstPaneMeasurements.current = measureElement(firstPaneRef.current);
180
- containerSize.current = containerRef.current.getBoundingClientRect()[measurementProp];
181
- const newFlex = firstPaneMeasurements.current[minDimProp] / (containerSize.current - handleSize);
182
- firstPaneRef.current.style.flexGrow = `${newFlex}`;
183
- secondPaneRef.current.style.flexGrow = `${1 - newFlex}`;
184
- splitterRef.current.ariaValueNow = "0";
185
- return;
186
- } else if (e.key === "End") {
187
- firstPaneMeasurements.current = measureElement(firstPaneRef.current);
188
- containerSize.current = containerRef.current.getBoundingClientRect()[measurementProp];
189
- const newFlex = firstPaneMeasurements.current[maxDimProp] / (containerSize.current - handleSize);
190
- firstPaneRef.current.style.flexGrow = `${newFlex}`;
191
- secondPaneRef.current.style.flexGrow = `${1 - newFlex}`;
192
- splitterRef.current.ariaValueNow = "100";
193
- return;
194
- }
195
- if (!(direction === "column" && VERTICAL_KEYS.has(e.key) || direction === "row" && HORIZONTAL_KEYS.has(e.key)) || pressedKeys.current.has(e.key)) {
196
- return;
197
- }
198
- savedPos.current = void 0;
199
- e.preventDefault();
200
- e.stopPropagation();
201
- primarySizeRef.current = firstPaneRef.current.getBoundingClientRect()[measurementProp];
202
- containerSize.current = containerRef.current.getBoundingClientRect()[measurementProp];
203
- firstPaneMeasurements.current = measureElement(firstPaneRef.current);
204
- const newKey = !pressedKeys.current.has(e.key);
205
- if (newKey) {
206
- const initiateAnimationLoop = pressedKeys.current.size === 0;
207
- pressedKeys.current.add(e.key);
208
- if (initiateAnimationLoop) {
209
- window.requestAnimationFrame(handlePressedKeys);
210
- }
211
- }
212
- },
213
- [direction, handlePressedKeys, handleSize, maxDimProp, measurementProp, minDimProp]
214
- );
215
- const onKeyUp = useCallback(
216
- (e) => {
217
- if (direction === "row" && !HORIZONTAL_KEYS.has(e.key) || direction === "column" && !VERTICAL_KEYS.has(e.key)) {
218
- return;
219
- }
220
- pressedKeys.current.delete(e.key);
221
- onDragFinished == null ? void 0 : onDragFinished(parseFloat(firstPaneRef.current.style.flexGrow));
222
- },
223
- [direction, onDragFinished]
224
- );
225
- const onDoubleClick = useCallback(() => {
226
- firstPaneRef.current.style.flexGrow = "0.5";
227
- secondPaneRef.current.style.flexGrow = "0.5";
228
- const dim = measureElement(firstPaneRef.current);
229
- firstPaneMeasurements.current = dim;
230
- primarySizeRef.current = firstPaneRef.current.getBoundingClientRect()[measurementProp];
231
- splitterRef.current.ariaValueNow = `${(primarySizeRef.current - dim[minDimProp]) / (dim[maxDimProp] - dim[minDimProp]) * 100}`;
232
- }, [maxDimProp, measurementProp, minDimProp]);
233
- const onBlur = useCallback(() => {
234
- if (pressedKeys.current.size > 0) {
235
- pressedKeys.current.clear();
236
- dragStart.current = null;
237
- onDragFinished == null ? void 0 : onDragFinished(parseFloat(firstPaneRef.current.style.flexGrow));
238
- }
239
- }, [onDragFinished]);
240
- const styles = useStyles2(getStyles);
241
- const id = useUniqueId();
242
- const secondAvailable = kids.length === 2;
243
- const visibilitySecond = secondAvailable ? "visible" : "hidden";
244
- return /* @__PURE__ */ React.createElement("div", {
245
- ref: containerRef,
246
- className: styles.container,
247
- style: {
248
- flexDirection: direction
249
- }
250
- }, /* @__PURE__ */ React.createElement("div", {
251
- ref: firstPaneRef,
252
- className: styles.panel,
253
- style: __spreadValues({
254
- flexGrow: initialSize === "auto" ? 0.5 : clamp(initialSize, 0, 1),
255
- [minDimProp]: "min-content"
256
- }, primaryPaneStyles),
257
- id: `start-panel-${id}`
258
- }, kids[0]), kids[1] && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", {
259
- ref: splitterRef,
260
- style: { [measurementProp]: `${handleSize}px` },
261
- className: cx(styles.handle, { [styles.handleHorizontal]: direction === "column" }),
262
- onPointerUp,
263
- onPointerDown,
264
- onPointerMove,
265
- onKeyDown,
266
- onKeyUp,
267
- onDoubleClick,
268
- onBlur,
269
- role: "separator",
270
- "aria-valuemin": 0,
271
- "aria-valuemax": 100,
272
- "aria-valuenow": 50,
273
- "aria-controls": `start-panel-${id}`,
274
- "aria-label": "Pane resize widget",
275
- tabIndex: 0
276
- }), /* @__PURE__ */ React.createElement("div", {
277
- ref: secondPaneRef,
278
- className: styles.panel,
279
- style: __spreadValues({
280
- flexGrow: initialSize === "auto" ? 0.5 : clamp(1 - initialSize, 0, 1),
281
- [minDimProp]: "min-content",
282
- visibility: `${visibilitySecond}`
283
- }, secondaryPaneStyles),
284
- id: `end-panel-${id}`
285
- }, kids[1])));
286
- }
287
- function getStyles(theme) {
288
- return {
289
- handle: css({
290
- cursor: "col-resize",
291
- position: "relative",
292
- flexShrink: 0,
293
- userSelect: "none",
294
- "&::before": {
295
- content: '""',
296
- position: "absolute",
297
- backgroundColor: theme.colors.primary.main,
298
- left: "50%",
299
- transform: "translate(-50%)",
300
- top: 0,
301
- height: "100%",
302
- width: "1px",
303
- opacity: 0,
304
- transition: "opacity ease-in-out 0.2s"
305
- },
306
- "&::after": {
307
- content: '""',
308
- width: "4px",
309
- borderRadius: "4px",
310
- backgroundColor: theme.colors.border.weak,
311
- transition: "background-color ease-in-out 0.2s",
312
- height: "50%",
313
- top: "calc(50% - (50%) / 2)",
314
- transform: "translateX(-50%)",
315
- position: "absolute",
316
- left: "50%"
317
- },
318
- "&:hover, &:focus-visible": {
319
- outline: "none",
320
- "&::before": {
321
- opacity: 1
322
- },
323
- "&::after": {
324
- backgroundColor: theme.colors.primary.main
325
- }
326
- }
327
- }),
328
- handleHorizontal: css({
329
- cursor: "row-resize",
330
- "&::before": {
331
- left: "inherit",
332
- transform: "translateY(-50%)",
333
- top: "50%",
334
- height: "1px",
335
- width: "100%"
336
- },
337
- "&::after": {
338
- width: "50%",
339
- height: "4px",
340
- top: "50%",
341
- transform: "translateY(-50%)",
342
- left: "calc(50% - (50%) / 2)"
343
- }
344
- }),
345
- container: css({
346
- display: "flex",
347
- width: "100%",
348
- flexGrow: 1,
349
- overflow: "hidden"
350
- }),
351
- panel: css({ display: "flex", position: "relative", flexBasis: 0 })
352
- };
353
- }
354
- function measureElement(ref) {
355
- if (ref === null) {
356
- return void 0;
357
- }
358
- const savedBodyOverflow = document.body.style.overflow;
359
- const savedWidth = ref.style.width;
360
- const savedHeight = ref.style.height;
361
- const savedFlex = ref.style.flexGrow;
362
- document.body.style.overflow = "hidden";
363
- ref.style.flexGrow = "0";
364
- const { width: minWidth, height: minHeight } = ref.getBoundingClientRect();
365
- ref.style.flexGrow = "100";
366
- const { width: maxWidth, height: maxHeight } = ref.getBoundingClientRect();
367
- document.body.style.overflow = savedBodyOverflow;
368
- ref.style.width = savedWidth;
369
- ref.style.height = savedHeight;
370
- ref.style.flexGrow = savedFlex;
371
- return { minWidth, maxWidth, minHeight, maxHeight };
372
- }
373
- function useResizeObserver(target, cb, throttleWait = 0, deps) {
374
- const throttledCallback = throttle(cb, throttleWait);
375
- useLayoutEffect(() => {
376
- if (!target) {
377
- return;
378
- }
379
- const resizeObserver = new ResizeObserver(throttledCallback);
380
- resizeObserver.observe(target, { box: "device-pixel-content-box" });
381
- return () => resizeObserver.disconnect();
382
- }, deps);
383
- }
384
-
385
- export { Splitter };
386
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BsaXR0ZXIuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2xheW91dC9zcGxpdC9TcGxpdHRlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzLCBjeCB9IGZyb20gJ0BlbW90aW9uL2Nzcyc7XG5pbXBvcnQgeyBHcmFmYW5hVGhlbWUyIH0gZnJvbSAnQGdyYWZhbmEvZGF0YSc7XG5pbXBvcnQgeyB1c2VTdHlsZXMyIH0gZnJvbSAnQGdyYWZhbmEvdWknO1xuaW1wb3J0IHsgY2xhbXAsIHRocm90dGxlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlTGF5b3V0RWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VVbmlxdWVJZCB9IGZyb20gJy4uL0xhenlMb2FkZXInO1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICBoYW5kbGVTaXplPzogbnVtYmVyO1xuICBpbml0aWFsU2l6ZT86IG51bWJlciB8ICdhdXRvJztcbiAgZGlyZWN0aW9uPzogJ3JvdycgfCAnY29sdW1uJztcbiAgcHJpbWFyeT86ICdmaXJzdCcgfCAnc2Vjb25kJztcbiAgY29sbGFwc2VkRGVmYXVsdD86IGJvb2xlYW47XG4gIHByaW1hcnlQYW5lU3R5bGVzPzogUmVhY3QuQ1NTUHJvcGVydGllcztcbiAgc2Vjb25kYXJ5UGFuZVN0eWxlcz86IFJlYWN0LkNTU1Byb3BlcnRpZXM7XG4gIG9uRHJhZ0ZpbmlzaGVkPzogKHNpemU6IG51bWJlcikgPT4gdm9pZDtcbiAgY2hpbGRyZW46IFtSZWFjdC5SZWFjdE5vZGUsIFJlYWN0LlJlYWN0Tm9kZV07XG59XG5cbmNvbnN0IFBJWEVMU19QRVJfTVMgPSAwLjMgYXMgY29uc3Q7XG5jb25zdCBWRVJUSUNBTF9LRVlTID0gbmV3IFNldChbJ0Fycm93VXAnLCAnQXJyb3dEb3duJ10pO1xuY29uc3QgSE9SSVpPTlRBTF9LRVlTID0gbmV3IFNldChbJ0Fycm93TGVmdCcsICdBcnJvd1JpZ2h0J10pO1xuXG5jb25zdCBwcm9wc0ZvckRpcmVjdGlvbiA9IHtcbiAgcm93OiB7XG4gICAgZGltOiAnd2lkdGgnLFxuICAgIGF4aXM6ICdjbGllbnRYJyxcbiAgICBtaW46ICdtaW5XaWR0aCcsXG4gICAgbWF4OiAnbWF4V2lkdGgnLFxuICB9LFxuICBjb2x1bW46IHtcbiAgICBkaW06ICdoZWlnaHQnLFxuICAgIGF4aXM6ICdjbGllbnRZJyxcbiAgICBtaW46ICdtaW5IZWlnaHQnLFxuICAgIG1heDogJ21heEhlaWdodCcsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgZnVuY3Rpb24gU3BsaXR0ZXIoe1xuICBkaXJlY3Rpb24gPSAncm93JyxcbiAgaGFuZGxlU2l6ZSA9IDMyLFxuICBpbml0aWFsU2l6ZSA9ICdhdXRvJyxcbiAgcHJpbWFyeVBhbmVTdHlsZXMsXG4gIHNlY29uZGFyeVBhbmVTdHlsZXMsXG4gIG9uRHJhZ0ZpbmlzaGVkLFxuICBjaGlsZHJlbixcbn06IFByb3BzKSB7XG4gIGNvbnN0IGtpZHMgPSBSZWFjdC5DaGlsZHJlbi50b0FycmF5KGNoaWxkcmVuKTtcblxuICBjb25zdCBzcGxpdHRlclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBmaXJzdFBhbmVSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3Qgc2Vjb25kUGFuZVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgY29udGFpbmVyU2l6ZSA9IHVzZVJlZjxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgY29uc3QgcHJpbWFyeVNpemVSZWYgPSB1c2VSZWY8JzFmcicgfCBudW1iZXI+KCcxZnInKTtcblxuICBjb25zdCBmaXJzdFBhbmVNZWFzdXJlbWVudHMgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2YgbWVhc3VyZUVsZW1lbnQ+Pih1bmRlZmluZWQpO1xuICBjb25zdCBzYXZlZFBvcyA9IHVzZVJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgY29uc3QgbWVhc3VyZW1lbnRQcm9wID0gcHJvcHNGb3JEaXJlY3Rpb25bZGlyZWN0aW9uXS5kaW07XG4gIGNvbnN0IGNsaWVudEF4aXMgPSBwcm9wc0ZvckRpcmVjdGlvbltkaXJlY3Rpb25dLmF4aXM7XG4gIGNvbnN0IG1pbkRpbVByb3AgPSBwcm9wc0ZvckRpcmVjdGlvbltkaXJlY3Rpb25dLm1pbjtcbiAgY29uc3QgbWF4RGltUHJvcCA9IHByb3BzRm9yRGlyZWN0aW9uW2RpcmVjdGlvbl0ubWF4O1xuXG4gIC8vIFVzaW5nIGEgcmVzaXplIG9ic2VydmVyIGhlcmUsIGFzIHdpdGggY29udGVudCBvciBzY3JlZW4gYmFzZWQgd2lkdGgvaGVpZ2h0IHRoZSByYXRpbyBiZXR3ZWVuIHBhbmVzIG1pZ2h0XG4gIC8vIGNoYW5nZSBhZnRlciBhIHdpbmRvdyByZXNpemUsIHNvIGFyaWFWYWx1ZU5vdyBuZWVkcyB0byBiZSB1cGRhdGVkIGFjY29yZGluZ2x5XG4gIHVzZVJlc2l6ZU9ic2VydmVyKFxuICAgIGNvbnRhaW5lclJlZi5jdXJyZW50ISxcbiAgICAoZW50cmllcykgPT4ge1xuICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgIGlmICghZW50cnkudGFyZ2V0LmlzU2FtZU5vZGUoY29udGFpbmVyUmVmLmN1cnJlbnQpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VyU2l6ZSA9IGZpcnN0UGFuZVJlZi5jdXJyZW50IS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVttZWFzdXJlbWVudFByb3BdO1xuICAgICAgICBjb25zdCBuZXdEaW1zID0gbWVhc3VyZUVsZW1lbnQoZmlyc3RQYW5lUmVmLmN1cnJlbnQhKTtcbiAgICAgICAgc3BsaXR0ZXJSZWYuY3VycmVudCEuYXJpYVZhbHVlTm93ID0gYCR7Y2xhbXAoXG4gICAgICAgICAgKChjdXJTaXplIC0gbmV3RGltc1ttaW5EaW1Qcm9wXSkgLyAobmV3RGltc1ttYXhEaW1Qcm9wXSAtIG5ld0RpbXNbbWluRGltUHJvcF0pKSAqIDEwMCxcbiAgICAgICAgICAwLFxuICAgICAgICAgIDEwMFxuICAgICAgICApfWA7XG4gICAgICB9XG4gICAgfSxcbiAgICA1MDAsXG4gICAgW21heERpbVByb3AsIG1pbkRpbVByb3AsIGRpcmVjdGlvbiwgbWVhc3VyZW1lbnRQcm9wXVxuICApO1xuXG4gIGNvbnN0IGRyYWdTdGFydCA9IHVzZVJlZjxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgY29uc3Qgb25Qb2ludGVyRG93biA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBSZWFjdC5Qb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICAvLyBtZWFzdXJlIGxlZnQtc2lkZSB3aWR0aFxuICAgICAgcHJpbWFyeVNpemVSZWYuY3VycmVudCA9IGZpcnN0UGFuZVJlZi5jdXJyZW50IS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVttZWFzdXJlbWVudFByb3BdO1xuICAgICAgY29udGFpbmVyU2l6ZS5jdXJyZW50ID0gY29udGFpbmVyUmVmLmN1cnJlbnQhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW21lYXN1cmVtZW50UHJvcF07XG5cbiAgICAgIC8vIHNldCBwb3NpdGlvbiBhdCBzdGFydCBvZiBkcmFnXG4gICAgICBkcmFnU3RhcnQuY3VycmVudCA9IGVbY2xpZW50QXhpc107XG4gICAgICBzcGxpdHRlclJlZi5jdXJyZW50IS5zZXRQb2ludGVyQ2FwdHVyZShlLnBvaW50ZXJJZCk7XG4gICAgICBmaXJzdFBhbmVNZWFzdXJlbWVudHMuY3VycmVudCA9IG1lYXN1cmVFbGVtZW50KGZpcnN0UGFuZVJlZi5jdXJyZW50ISk7XG5cbiAgICAgIHNhdmVkUG9zLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgfSxcbiAgICBbbWVhc3VyZW1lbnRQcm9wLCBjbGllbnRBeGlzXVxuICApO1xuXG4gIGNvbnN0IG9uUG9pbnRlck1vdmUgPSB1c2VDYWxsYmFjayhcbiAgICAoZTogUmVhY3QuUG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKGRyYWdTdGFydC5jdXJyZW50ICE9PSBudWxsICYmIHByaW1hcnlTaXplUmVmLmN1cnJlbnQgIT09ICcxZnInKSB7XG4gICAgICAgIGNvbnN0IGRpZmYgPSBlW2NsaWVudEF4aXNdIC0gZHJhZ1N0YXJ0LmN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IGRpbXMgPSBmaXJzdFBhbmVNZWFzdXJlbWVudHMuY3VycmVudCE7XG4gICAgICAgIGNvbnN0IG5ld1NpemUgPSBjbGFtcChwcmltYXJ5U2l6ZVJlZi5jdXJyZW50ICsgZGlmZiwgZGltc1ttaW5EaW1Qcm9wXSwgZGltc1ttYXhEaW1Qcm9wXSk7XG4gICAgICAgIGNvbnN0IG5ld0ZsZXggPSBuZXdTaXplIC8gKGNvbnRhaW5lclNpemUuY3VycmVudCEgLSBoYW5kbGVTaXplKTtcbiAgICAgICAgZmlyc3RQYW5lUmVmLmN1cnJlbnQhLnN0eWxlLmZsZXhHcm93ID0gYCR7bmV3RmxleH1gO1xuICAgICAgICBzZWNvbmRQYW5lUmVmLmN1cnJlbnQhLnN0eWxlLmZsZXhHcm93ID0gYCR7MSAtIG5ld0ZsZXh9YDtcbiAgICAgICAgY29uc3QgYXJpYVZhbHVlTm93ID0gY2xhbXAoXG4gICAgICAgICAgKChuZXdTaXplIC0gZGltc1ttaW5EaW1Qcm9wXSkgLyAoZGltc1ttYXhEaW1Qcm9wXSAtIGRpbXNbbWluRGltUHJvcF0pKSAqIDEwMCxcbiAgICAgICAgICAwLFxuICAgICAgICAgIDEwMFxuICAgICAgICApO1xuXG4gICAgICAgIHNwbGl0dGVyUmVmLmN1cnJlbnQhLmFyaWFWYWx1ZU5vdyA9IGAke2FyaWFWYWx1ZU5vd31gO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2hhbmRsZVNpemUsIGNsaWVudEF4aXMsIG1pbkRpbVByb3AsIG1heERpbVByb3BdXG4gICk7XG5cbiAgY29uc3Qgb25Qb2ludGVyVXAgPSB1c2VDYWxsYmFjayhcbiAgICAoZTogUmVhY3QuUG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHNwbGl0dGVyUmVmLmN1cnJlbnQhLnJlbGVhc2VQb2ludGVyQ2FwdHVyZShlLnBvaW50ZXJJZCk7XG4gICAgICBkcmFnU3RhcnQuY3VycmVudCA9IG51bGw7XG4gICAgICBvbkRyYWdGaW5pc2hlZD8uKHBhcnNlRmxvYXQoZmlyc3RQYW5lUmVmLmN1cnJlbnQhLnN0eWxlLmZsZXhHcm93KSk7XG4gICAgfSxcbiAgICBbb25EcmFnRmluaXNoZWRdXG4gICk7XG5cbiAgY29uc3QgcHJlc3NlZEtleXMgPSB1c2VSZWYobmV3IFNldDxzdHJpbmc+KCkpO1xuICBjb25zdCBrZXlzTGFzdEhhbmRsZWRBdCA9IHVzZVJlZjxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgY29uc3QgaGFuZGxlUHJlc3NlZEtleXMgPSB1c2VDYWxsYmFjayhcbiAgICAodGltZTogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBub3RoaW5nUHJlc3NlZCA9IHByZXNzZWRLZXlzLmN1cnJlbnQuc2l6ZSA9PT0gMDtcbiAgICAgIGlmIChub3RoaW5nUHJlc3NlZCkge1xuICAgICAgICBrZXlzTGFzdEhhbmRsZWRBdC5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmIChwcmltYXJ5U2l6ZVJlZi5jdXJyZW50ID09PSAnMWZyJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGR0ID0gdGltZSAtIChrZXlzTGFzdEhhbmRsZWRBdC5jdXJyZW50ID8/IHRpbWUpO1xuICAgICAgY29uc3QgZHggPSBkdCAqIFBJWEVMU19QRVJfTVM7XG4gICAgICBsZXQgc2l6ZUNoYW5nZSA9IDA7XG5cbiAgICAgIGlmIChkaXJlY3Rpb24gPT09ICdyb3cnKSB7XG4gICAgICAgIGlmIChwcmVzc2VkS2V5cy5jdXJyZW50LmhhcygnQXJyb3dMZWZ0JykpIHtcbiAgICAgICAgICBzaXplQ2hhbmdlIC09IGR4O1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcmVzc2VkS2V5cy5jdXJyZW50LmhhcygnQXJyb3dSaWdodCcpKSB7XG4gICAgICAgICAgc2l6ZUNoYW5nZSArPSBkeDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHByZXNzZWRLZXlzLmN1cnJlbnQuaGFzKCdBcnJvd1VwJykpIHtcbiAgICAgICAgICBzaXplQ2hhbmdlIC09IGR4O1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcmVzc2VkS2V5cy5jdXJyZW50LmhhcygnQXJyb3dEb3duJykpIHtcbiAgICAgICAgICBzaXplQ2hhbmdlICs9IGR4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpcnN0UGFuZURpbXMgPSBmaXJzdFBhbmVNZWFzdXJlbWVudHMuY3VycmVudCE7XG4gICAgICBjb25zdCBjdXJTaXplID0gZmlyc3RQYW5lUmVmLmN1cnJlbnQhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW21lYXN1cmVtZW50UHJvcF07XG4gICAgICBjb25zdCBuZXdTaXplID0gY2xhbXAoY3VyU2l6ZSArIHNpemVDaGFuZ2UsIGZpcnN0UGFuZURpbXNbbWluRGltUHJvcF0sIGZpcnN0UGFuZURpbXNbbWF4RGltUHJvcF0pO1xuXG4gICAgICBjb25zdCBuZXdGbGV4ID0gbmV3U2l6ZSAvIChjb250YWluZXJTaXplLmN1cnJlbnQhIC0gaGFuZGxlU2l6ZSk7XG5cbiAgICAgIGZpcnN0UGFuZVJlZi5jdXJyZW50IS5zdHlsZS5mbGV4R3JvdyA9IGAke25ld0ZsZXh9YDtcbiAgICAgIHNlY29uZFBhbmVSZWYuY3VycmVudCEuc3R5bGUuZmxleEdyb3cgPSBgJHsxIC0gbmV3RmxleH1gO1xuICAgICAgY29uc3QgYXJpYVZhbHVlTm93ID1cbiAgICAgICAgKChuZXdTaXplIC0gZmlyc3RQYW5lRGltc1ttaW5EaW1Qcm9wXSkgLyAoZmlyc3RQYW5lRGltc1ttYXhEaW1Qcm9wXSAtIGZpcnN0UGFuZURpbXNbbWluRGltUHJvcF0pKSAqIDEwMDtcbiAgICAgIHNwbGl0dGVyUmVmLmN1cnJlbnQhLmFyaWFWYWx1ZU5vdyA9IGAke2NsYW1wKGFyaWFWYWx1ZU5vdywgMCwgMTAwKX1gO1xuXG4gICAgICBrZXlzTGFzdEhhbmRsZWRBdC5jdXJyZW50ID0gdGltZTtcbiAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoaGFuZGxlUHJlc3NlZEtleXMpO1xuICAgIH0sXG4gICAgW2RpcmVjdGlvbiwgaGFuZGxlU2l6ZSwgbWluRGltUHJvcCwgbWF4RGltUHJvcCwgbWVhc3VyZW1lbnRQcm9wXVxuICApO1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgIGlmIChzYXZlZFBvcy5jdXJyZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzYXZlZFBvcy5jdXJyZW50ID0gZmlyc3RQYW5lUmVmLmN1cnJlbnQhLnN0eWxlLmZsZXhHcm93O1xuICAgICAgICAgIGZpcnN0UGFuZVJlZi5jdXJyZW50IS5zdHlsZS5mbGV4R3JvdyA9ICcwJztcbiAgICAgICAgICBzZWNvbmRQYW5lUmVmLmN1cnJlbnQhLnN0eWxlLmZsZXhHcm93ID0gJzEnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZpcnN0UGFuZVJlZi5jdXJyZW50IS5zdHlsZS5mbGV4R3JvdyA9IHNhdmVkUG9zLmN1cnJlbnQ7XG4gICAgICAgICAgc2Vjb25kUGFuZVJlZi5jdXJyZW50IS5zdHlsZS5mbGV4R3JvdyA9IGAkezEgLSBwYXJzZUZsb2F0KHNhdmVkUG9zLmN1cnJlbnQpfWA7XG4gICAgICAgICAgc2F2ZWRQb3MuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKGUua2V5ID09PSAnSG9tZScpIHtcbiAgICAgICAgZmlyc3RQYW5lTWVhc3VyZW1lbnRzLmN1cnJlbnQgPSBtZWFzdXJlRWxlbWVudChmaXJzdFBhbmVSZWYuY3VycmVudCEpO1xuICAgICAgICBjb250YWluZXJTaXplLmN1cnJlbnQgPSBjb250YWluZXJSZWYuY3VycmVudCEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClbbWVhc3VyZW1lbnRQcm9wXTtcbiAgICAgICAgY29uc3QgbmV3RmxleCA9IGZpcnN0UGFuZU1lYXN1cmVtZW50cy5jdXJyZW50W21pbkRpbVByb3BdIC8gKGNvbnRhaW5lclNpemUuY3VycmVudCEgLSBoYW5kbGVTaXplKTtcbiAgICAgICAgZmlyc3RQYW5lUmVmLmN1cnJlbnQhLnN0eWxlLmZsZXhHcm93ID0gYCR7bmV3RmxleH1gO1xuICAgICAgICBzZWNvbmRQYW5lUmVmLmN1cnJlbnQhLnN0eWxlLmZsZXhHcm93ID0gYCR7MSAtIG5ld0ZsZXh9YDtcbiAgICAgICAgc3BsaXR0ZXJSZWYuY3VycmVudCEuYXJpYVZhbHVlTm93ID0gJzAnO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKGUua2V5ID09PSAnRW5kJykge1xuICAgICAgICBmaXJzdFBhbmVNZWFzdXJlbWVudHMuY3VycmVudCA9IG1lYXN1cmVFbGVtZW50KGZpcnN0UGFuZVJlZi5jdXJyZW50ISk7XG4gICAgICAgIGNvbnRhaW5lclNpemUuY3VycmVudCA9IGNvbnRhaW5lclJlZi5jdXJyZW50IS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVttZWFzdXJlbWVudFByb3BdO1xuICAgICAgICBjb25zdCBuZXdGbGV4ID0gZmlyc3RQYW5lTWVhc3VyZW1lbnRzLmN1cnJlbnRbbWF4RGltUHJvcF0gLyAoY29udGFpbmVyU2l6ZS5jdXJyZW50ISAtIGhhbmRsZVNpemUpO1xuICAgICAgICBmaXJzdFBhbmVSZWYuY3VycmVudCEuc3R5bGUuZmxleEdyb3cgPSBgJHtuZXdGbGV4fWA7XG4gICAgICAgIHNlY29uZFBhbmVSZWYuY3VycmVudCEuc3R5bGUuZmxleEdyb3cgPSBgJHsxIC0gbmV3RmxleH1gO1xuICAgICAgICBzcGxpdHRlclJlZi5jdXJyZW50IS5hcmlhVmFsdWVOb3cgPSAnMTAwJztcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgICEoXG4gICAgICAgICAgKGRpcmVjdGlvbiA9PT0gJ2NvbHVtbicgJiYgVkVSVElDQUxfS0VZUy5oYXMoZS5rZXkpKSB8fFxuICAgICAgICAgIChkaXJlY3Rpb24gPT09ICdyb3cnICYmIEhPUklaT05UQUxfS0VZUy5oYXMoZS5rZXkpKVxuICAgICAgICApIHx8XG4gICAgICAgIHByZXNzZWRLZXlzLmN1cnJlbnQuaGFzKGUua2V5KVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2F2ZWRQb3MuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBwcmltYXJ5U2l6ZVJlZi5jdXJyZW50ID0gZmlyc3RQYW5lUmVmLmN1cnJlbnQhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW21lYXN1cmVtZW50UHJvcF07XG4gICAgICBjb250YWluZXJTaXplLmN1cnJlbnQgPSBjb250YWluZXJSZWYuY3VycmVudCEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClbbWVhc3VyZW1lbnRQcm9wXTtcbiAgICAgIGZpcnN0UGFuZU1lYXN1cmVtZW50cy5jdXJyZW50ID0gbWVhc3VyZUVsZW1lbnQoZmlyc3RQYW5lUmVmLmN1cnJlbnQhKTtcbiAgICAgIGNvbnN0IG5ld0tleSA9ICFwcmVzc2VkS2V5cy5jdXJyZW50LmhhcyhlLmtleSk7XG5cbiAgICAgIGlmIChuZXdLZXkpIHtcbiAgICAgICAgY29uc3QgaW5pdGlhdGVBbmltYXRpb25Mb29wID0gcHJlc3NlZEtleXMuY3VycmVudC5zaXplID09PSAwO1xuICAgICAgICBwcmVzc2VkS2V5cy5jdXJyZW50LmFkZChlLmtleSk7XG5cbiAgICAgICAgaWYgKGluaXRpYXRlQW5pbWF0aW9uTG9vcCkge1xuICAgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoaGFuZGxlUHJlc3NlZEtleXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbZGlyZWN0aW9uLCBoYW5kbGVQcmVzc2VkS2V5cywgaGFuZGxlU2l6ZSwgbWF4RGltUHJvcCwgbWVhc3VyZW1lbnRQcm9wLCBtaW5EaW1Qcm9wXVxuICApO1xuXG4gIGNvbnN0IG9uS2V5VXAgPSB1c2VDYWxsYmFjayhcbiAgICAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgKGRpcmVjdGlvbiA9PT0gJ3JvdycgJiYgIUhPUklaT05UQUxfS0VZUy5oYXMoZS5rZXkpKSB8fFxuICAgICAgICAoZGlyZWN0aW9uID09PSAnY29sdW1uJyAmJiAhVkVSVElDQUxfS0VZUy5oYXMoZS5rZXkpKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcHJlc3NlZEtleXMuY3VycmVudC5kZWxldGUoZS5rZXkpO1xuICAgICAgb25EcmFnRmluaXNoZWQ/LihwYXJzZUZsb2F0KGZpcnN0UGFuZVJlZi5jdXJyZW50IS5zdHlsZS5mbGV4R3JvdykpO1xuICAgIH0sXG4gICAgW2RpcmVjdGlvbiwgb25EcmFnRmluaXNoZWRdXG4gICk7XG5cbiAgY29uc3Qgb25Eb3VibGVDbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBmaXJzdFBhbmVSZWYuY3VycmVudCEuc3R5bGUuZmxleEdyb3cgPSAnMC41JztcbiAgICBzZWNvbmRQYW5lUmVmLmN1cnJlbnQhLnN0eWxlLmZsZXhHcm93ID0gJzAuNSc7XG4gICAgY29uc3QgZGltID0gbWVhc3VyZUVsZW1lbnQoZmlyc3RQYW5lUmVmLmN1cnJlbnQhKTtcbiAgICBmaXJzdFBhbmVNZWFzdXJlbWVudHMuY3VycmVudCA9IGRpbTtcbiAgICBwcmltYXJ5U2l6ZVJlZi5jdXJyZW50ID0gZmlyc3RQYW5lUmVmLmN1cnJlbnQhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW21lYXN1cmVtZW50UHJvcF07XG4gICAgc3BsaXR0ZXJSZWYuY3VycmVudCEuYXJpYVZhbHVlTm93ID0gYCR7XG4gICAgICAoKHByaW1hcnlTaXplUmVmLmN1cnJlbnQgLSBkaW1bbWluRGltUHJvcF0pIC8gKGRpbVttYXhEaW1Qcm9wXSAtIGRpbVttaW5EaW1Qcm9wXSkpICogMTAwXG4gICAgfWA7XG4gIH0sIFttYXhEaW1Qcm9wLCBtZWFzdXJlbWVudFByb3AsIG1pbkRpbVByb3BdKTtcblxuICBjb25zdCBvbkJsdXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gSWYgZm9jdXMgaXMgbG9zdCB3aGlsZSBrZXlzIGFyZSBoZWxkLCBzdG9wIGNoYW5naW5nIHBhbmVsIHNpemVzXG4gICAgaWYgKHByZXNzZWRLZXlzLmN1cnJlbnQuc2l6ZSA+IDApIHtcbiAgICAgIHByZXNzZWRLZXlzLmN1cnJlbnQuY2xlYXIoKTtcbiAgICAgIGRyYWdTdGFydC5jdXJyZW50ID0gbnVsbDtcbiAgICAgIG9uRHJhZ0ZpbmlzaGVkPy4ocGFyc2VGbG9hdChmaXJzdFBhbmVSZWYuY3VycmVudCEuc3R5bGUuZmxleEdyb3cpKTtcbiAgICB9XG4gIH0sIFtvbkRyYWdGaW5pc2hlZF0pO1xuXG4gIGNvbnN0IHN0eWxlcyA9IHVzZVN0eWxlczIoZ2V0U3R5bGVzKTtcbiAgY29uc3QgaWQgPSB1c2VVbmlxdWVJZCgpO1xuXG4gIGNvbnN0IHNlY29uZEF2YWlsYWJsZSA9IGtpZHMubGVuZ3RoID09PSAyO1xuICBjb25zdCB2aXNpYmlsaXR5U2Vjb25kID0gc2Vjb25kQXZhaWxhYmxlID8gJ3Zpc2libGUnIDogJ2hpZGRlbic7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRhaW5lcn1cbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIGZsZXhEaXJlY3Rpb246IGRpcmVjdGlvbixcbiAgICAgIH19XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICByZWY9e2ZpcnN0UGFuZVJlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucGFuZWx9XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgZmxleEdyb3c6IGluaXRpYWxTaXplID09PSAnYXV0bycgPyAwLjUgOiBjbGFtcChpbml0aWFsU2l6ZSwgMCwgMSksXG4gICAgICAgICAgW21pbkRpbVByb3BdOiAnbWluLWNvbnRlbnQnLFxuICAgICAgICAgIC4uLnByaW1hcnlQYW5lU3R5bGVzLFxuICAgICAgICB9fVxuICAgICAgICBpZD17YHN0YXJ0LXBhbmVsLSR7aWR9YH1cbiAgICAgID5cbiAgICAgICAge2tpZHNbMF19XG4gICAgICA8L2Rpdj5cblxuICAgICAge2tpZHNbMV0gJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHJlZj17c3BsaXR0ZXJSZWZ9XG4gICAgICAgICAgICBzdHlsZT17eyBbbWVhc3VyZW1lbnRQcm9wXTogYCR7aGFuZGxlU2l6ZX1weGAgfX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goc3R5bGVzLmhhbmRsZSwgeyBbc3R5bGVzLmhhbmRsZUhvcml6b250YWxdOiBkaXJlY3Rpb24gPT09ICdjb2x1bW4nIH0pfVxuICAgICAgICAgICAgb25Qb2ludGVyVXA9e29uUG9pbnRlclVwfVxuICAgICAgICAgICAgb25Qb2ludGVyRG93bj17b25Qb2ludGVyRG93bn1cbiAgICAgICAgICAgIG9uUG9pbnRlck1vdmU9e29uUG9pbnRlck1vdmV9XG4gICAgICAgICAgICBvbktleURvd249e29uS2V5RG93bn1cbiAgICAgICAgICAgIG9uS2V5VXA9e29uS2V5VXB9XG4gICAgICAgICAgICBvbkRvdWJsZUNsaWNrPXtvbkRvdWJsZUNsaWNrfVxuICAgICAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAgICAgICByb2xlPVwic2VwYXJhdG9yXCJcbiAgICAgICAgICAgIGFyaWEtdmFsdWVtaW49ezB9XG4gICAgICAgICAgICBhcmlhLXZhbHVlbWF4PXsxMDB9XG4gICAgICAgICAgICBhcmlhLXZhbHVlbm93PXs1MH1cbiAgICAgICAgICAgIGFyaWEtY29udHJvbHM9e2BzdGFydC1wYW5lbC0ke2lkfWB9XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiUGFuZSByZXNpemUgd2lkZ2V0XCJcbiAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgID48L2Rpdj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHJlZj17c2Vjb25kUGFuZVJlZn1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnBhbmVsfVxuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgZmxleEdyb3c6IGluaXRpYWxTaXplID09PSAnYXV0bycgPyAwLjUgOiBjbGFtcCgxIC0gaW5pdGlhbFNpemUsIDAsIDEpLFxuICAgICAgICAgICAgICBbbWluRGltUHJvcF06ICdtaW4tY29udGVudCcsXG4gICAgICAgICAgICAgIHZpc2liaWxpdHk6IGAke3Zpc2liaWxpdHlTZWNvbmR9YCxcbiAgICAgICAgICAgICAgLi4uc2Vjb25kYXJ5UGFuZVN0eWxlcyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBpZD17YGVuZC1wYW5lbC0ke2lkfWB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2tpZHNbMV19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0U3R5bGVzKHRoZW1lOiBHcmFmYW5hVGhlbWUyKSB7XG4gIHJldHVybiB7XG4gICAgaGFuZGxlOiBjc3Moe1xuICAgICAgY3Vyc29yOiAnY29sLXJlc2l6ZScsXG4gICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgIGZsZXhTaHJpbms6IDAsXG4gICAgICB1c2VyU2VsZWN0OiAnbm9uZScsXG5cbiAgICAgICcmOjpiZWZvcmUnOiB7XG4gICAgICAgIGNvbnRlbnQ6ICdcIlwiJyxcbiAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuY29sb3JzLnByaW1hcnkubWFpbixcbiAgICAgICAgbGVmdDogJzUwJScsXG4gICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZSgtNTAlKScsXG4gICAgICAgIHRvcDogMCxcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgIHdpZHRoOiAnMXB4JyxcbiAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgdHJhbnNpdGlvbjogJ29wYWNpdHkgZWFzZS1pbi1vdXQgMC4ycycsXG4gICAgICB9LFxuXG4gICAgICAnJjo6YWZ0ZXInOiB7XG4gICAgICAgIGNvbnRlbnQ6ICdcIlwiJyxcbiAgICAgICAgd2lkdGg6ICc0cHgnLFxuICAgICAgICBib3JkZXJSYWRpdXM6ICc0cHgnLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmNvbG9ycy5ib3JkZXIud2VhayxcbiAgICAgICAgdHJhbnNpdGlvbjogJ2JhY2tncm91bmQtY29sb3IgZWFzZS1pbi1vdXQgMC4ycycsXG4gICAgICAgIGhlaWdodDogJzUwJScsXG4gICAgICAgIHRvcDogJ2NhbGMoNTAlIC0gKDUwJSkgLyAyKScsXG4gICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTUwJSknLFxuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgbGVmdDogJzUwJScsXG4gICAgICB9LFxuXG4gICAgICAnJjpob3ZlciwgJjpmb2N1cy12aXNpYmxlJzoge1xuICAgICAgICBvdXRsaW5lOiAnbm9uZScsXG4gICAgICAgICcmOjpiZWZvcmUnOiB7XG4gICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgfSxcblxuICAgICAgICAnJjo6YWZ0ZXInOiB7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5jb2xvcnMucHJpbWFyeS5tYWluLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KSxcbiAgICBoYW5kbGVIb3Jpem9udGFsOiBjc3Moe1xuICAgICAgY3Vyc29yOiAncm93LXJlc2l6ZScsXG5cbiAgICAgICcmOjpiZWZvcmUnOiB7XG4gICAgICAgIGxlZnQ6ICdpbmhlcml0JyxcbiAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtNTAlKScsXG4gICAgICAgIHRvcDogJzUwJScsXG4gICAgICAgIGhlaWdodDogJzFweCcsXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICB9LFxuXG4gICAgICAnJjo6YWZ0ZXInOiB7XG4gICAgICAgIHdpZHRoOiAnNTAlJyxcbiAgICAgICAgaGVpZ2h0OiAnNHB4JyxcbiAgICAgICAgdG9wOiAnNTAlJyxcbiAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtNTAlKScsXG4gICAgICAgIGxlZnQ6ICdjYWxjKDUwJSAtICg1MCUpIC8gMiknLFxuICAgICAgfSxcbiAgICB9KSxcbiAgICBjb250YWluZXI6IGNzcyh7XG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgZmxleEdyb3c6IDEsXG4gICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgfSksXG4gICAgcGFuZWw6IGNzcyh7IGRpc3BsYXk6ICdmbGV4JywgcG9zaXRpb246ICdyZWxhdGl2ZScsIGZsZXhCYXNpczogMCB9KSxcbiAgfTtcbn1cblxudHlwZSBNZWFzdXJlUjxUPiA9IFQgZXh0ZW5kcyBIVE1MRWxlbWVudFxuICA/IHsgbWluV2lkdGg6IG51bWJlcjsgbWF4V2lkdGg6IG51bWJlcjsgbWluSGVpZ2h0OiBudW1iZXI7IG1heEhlaWdodDogbnVtYmVyIH1cbiAgOiBUIGV4dGVuZHMgbnVsbFxuICA/IHVuZGVmaW5lZFxuICA6IG5ldmVyO1xudHlwZSBIVE1MRWxlbWVudE9yTnVsbCA9IEhUTUxFbGVtZW50IHwgbnVsbDtcblxuZnVuY3Rpb24gbWVhc3VyZUVsZW1lbnQ8VCBleHRlbmRzIEhUTUxFbGVtZW50T3JOdWxsPihyZWY6IFQpOiBNZWFzdXJlUjxUPiB7XG4gIGlmIChyZWYgPT09IG51bGwpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkIGFzIE1lYXN1cmVSPFQ+O1xuICB9XG5cbiAgY29uc3Qgc2F2ZWRCb2R5T3ZlcmZsb3cgPSBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93O1xuICBjb25zdCBzYXZlZFdpZHRoID0gcmVmLnN0eWxlLndpZHRoO1xuICBjb25zdCBzYXZlZEhlaWdodCA9IHJlZi5zdHlsZS5oZWlnaHQ7XG4gIGNvbnN0IHNhdmVkRmxleCA9IHJlZi5zdHlsZS5mbGV4R3JvdztcbiAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICByZWYuc3R5bGUuZmxleEdyb3cgPSAnMCc7XG4gIGNvbnN0IHsgd2lkdGg6IG1pbldpZHRoLCBoZWlnaHQ6IG1pbkhlaWdodCB9ID0gcmVmLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gIHJlZi5zdHlsZS5mbGV4R3JvdyA9ICcxMDAnO1xuICBjb25zdCB7IHdpZHRoOiBtYXhXaWR0aCwgaGVpZ2h0OiBtYXhIZWlnaHQgfSA9IHJlZi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gc2F2ZWRCb2R5T3ZlcmZsb3c7XG4gIHJlZi5zdHlsZS53aWR0aCA9IHNhdmVkV2lkdGg7XG4gIHJlZi5zdHlsZS5oZWlnaHQgPSBzYXZlZEhlaWdodDtcbiAgcmVmLnN0eWxlLmZsZXhHcm93ID0gc2F2ZWRGbGV4O1xuXG4gIHJldHVybiB7IG1pbldpZHRoLCBtYXhXaWR0aCwgbWluSGVpZ2h0LCBtYXhIZWlnaHQgfSBhcyBNZWFzdXJlUjxUPjtcbn1cblxuZnVuY3Rpb24gdXNlUmVzaXplT2JzZXJ2ZXIoXG4gIHRhcmdldDogRWxlbWVudCxcbiAgY2I6IChlbnRyaWVzOiBSZXNpemVPYnNlcnZlckVudHJ5W10pID0+IHZvaWQsXG4gIHRocm90dGxlV2FpdCA9IDAsXG4gIGRlcHM/OiBSZWFjdC5EZXBlbmRlbmN5TGlzdFxuKSB7XG4gIGNvbnN0IHRocm90dGxlZENhbGxiYWNrID0gdGhyb3R0bGUoY2IsIHRocm90dGxlV2FpdCk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXRhcmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKHRocm90dGxlZENhbGxiYWNrKTtcblxuICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGFyZ2V0LCB7IGJveDogJ2RldmljZS1waXhlbC1jb250ZW50LWJveCcgfSk7XG4gICAgcmV0dXJuICgpID0+IHJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIGRlcHMpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQkEsTUFBTSxhQUFnQixHQUFBLEdBQUEsQ0FBQTtBQUN0QixNQUFNLGdDQUFvQixJQUFBLEdBQUEsQ0FBSSxDQUFDLFNBQUEsRUFBVyxXQUFXLENBQUMsQ0FBQSxDQUFBO0FBQ3RELE1BQU0sa0NBQXNCLElBQUEsR0FBQSxDQUFJLENBQUMsV0FBQSxFQUFhLFlBQVksQ0FB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
@@ -1,100 +0,0 @@
1
- import { cloneDeep, merge } from 'lodash';
2
- import { FieldConfigOverridesBuilder } from './FieldConfigOverridesBuilder.js';
3
-
4
- var __defProp = Object.defineProperty;
5
- var __defProps = Object.defineProperties;
6
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
7
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
- var __hasOwnProp = Object.prototype.hasOwnProperty;
9
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
10
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
- var __spreadValues = (a, b) => {
12
- for (var prop in b || (b = {}))
13
- if (__hasOwnProp.call(b, prop))
14
- __defNormalProp(a, prop, b[prop]);
15
- if (__getOwnPropSymbols)
16
- for (var prop of __getOwnPropSymbols(b)) {
17
- if (__propIsEnum.call(b, prop))
18
- __defNormalProp(a, prop, b[prop]);
19
- }
20
- return a;
21
- };
22
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
23
- class FieldConfigBuilder {
24
- constructor(defaultFieldConfig) {
25
- this.defaultFieldConfig = defaultFieldConfig;
26
- this._fieldConfig = {
27
- defaults: {},
28
- overrides: []
29
- };
30
- this._overridesBuilder = new FieldConfigOverridesBuilder();
31
- this.setDefaults();
32
- }
33
- setDefaults() {
34
- const fieldConfig = {
35
- defaults: {
36
- custom: this.defaultFieldConfig ? cloneDeep(this.defaultFieldConfig()) : {}
37
- },
38
- overrides: []
39
- };
40
- this._fieldConfig = fieldConfig;
41
- }
42
- setColor(color) {
43
- return this.setFieldConfigDefaults("color", color);
44
- }
45
- setDecimals(decimals) {
46
- return this.setFieldConfigDefaults("decimals", decimals);
47
- }
48
- setDisplayName(displayName) {
49
- return this.setFieldConfigDefaults("displayName", displayName);
50
- }
51
- setFilterable(filterable) {
52
- return this.setFieldConfigDefaults("filterable", filterable);
53
- }
54
- setLinks(links) {
55
- return this.setFieldConfigDefaults("links", links);
56
- }
57
- setMappings(mappings) {
58
- return this.setFieldConfigDefaults("mappings", mappings);
59
- }
60
- setMax(max) {
61
- return this.setFieldConfigDefaults("max", max);
62
- }
63
- setMin(min) {
64
- return this.setFieldConfigDefaults("min", min);
65
- }
66
- setNoValue(noValue) {
67
- return this.setFieldConfigDefaults("noValue", noValue);
68
- }
69
- setThresholds(thresholds) {
70
- return this.setFieldConfigDefaults("thresholds", thresholds);
71
- }
72
- setUnit(unit) {
73
- return this.setFieldConfigDefaults("unit", unit);
74
- }
75
- setCustomFieldConfig(id, value) {
76
- this._fieldConfig.defaults = __spreadProps(__spreadValues({}, this._fieldConfig.defaults), {
77
- custom: merge(this._fieldConfig.defaults.custom, { [id]: value })
78
- });
79
- return this;
80
- }
81
- setOverrides(builder) {
82
- builder(this._overridesBuilder);
83
- return this;
84
- }
85
- setFieldConfigDefaults(key, value) {
86
- this._fieldConfig.defaults = __spreadProps(__spreadValues({}, this._fieldConfig.defaults), {
87
- [key]: value
88
- });
89
- return this;
90
- }
91
- build() {
92
- return {
93
- defaults: this._fieldConfig.defaults,
94
- overrides: this._overridesBuilder.build()
95
- };
96
- }
97
- }
98
-
99
- export { FieldConfigBuilder };
100
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmllbGRDb25maWdCdWlsZGVyLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29yZS9QYW5lbEJ1aWxkZXJzL0ZpZWxkQ29uZmlnQnVpbGRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWVsZENvbmZpZ1NvdXJjZSB9IGZyb20gJ0BncmFmYW5hL2RhdGEnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBtZXJnZSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBEZWVwUGFydGlhbCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEZpZWxkQ29uZmlnT3ZlcnJpZGVzQnVpbGRlciB9IGZyb20gJy4vRmllbGRDb25maWdPdmVycmlkZXNCdWlsZGVyJztcbmltcG9ydCB7IFN0YW5kYXJkRmllbGRDb25maWcsIFN0YW5kYXJkRmllbGRDb25maWdJbnRlcmZhY2UgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIEZpZWxkQ29uZmlnQnVpbGRlcjxURmllbGRDb25maWcgZXh0ZW5kcyB7fT5cbiAgaW1wbGVtZW50cyBTdGFuZGFyZEZpZWxkQ29uZmlnSW50ZXJmYWNlPFN0YW5kYXJkRmllbGRDb25maWcsIEZpZWxkQ29uZmlnQnVpbGRlcjxURmllbGRDb25maWc+LCAnc2V0Jz5cbntcbiAgcHJpdmF0ZSBfZmllbGRDb25maWc6IEZpZWxkQ29uZmlnU291cmNlPERlZXBQYXJ0aWFsPFRGaWVsZENvbmZpZz4+ID0ge1xuICAgIGRlZmF1bHRzOiB7fSxcbiAgICBvdmVycmlkZXM6IFtdLFxuICB9O1xuICBwcml2YXRlIF9vdmVycmlkZXNCdWlsZGVyID0gbmV3IEZpZWxkQ29uZmlnT3ZlcnJpZGVzQnVpbGRlcjxURmllbGRDb25maWc+KCk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgZGVmYXVsdEZpZWxkQ29uZmlnPzogKCkgPT4gVEZpZWxkQ29uZmlnKSB7XG4gICAgdGhpcy5zZXREZWZhdWx0cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREZWZhdWx0cygpIHtcbiAgICBjb25zdCBmaWVsZENvbmZpZzogRmllbGRDb25maWdTb3VyY2U8VEZpZWxkQ29uZmlnPiA9IHtcbiAgICAgIGRlZmF1bHRzOiB7XG4gICAgICAgIGN1c3RvbTogdGhpcy5kZWZhdWx0RmllbGRDb25maWcgPyBjbG9uZURlZXAodGhpcy5kZWZhdWx0RmllbGRDb25maWcoKSkgOiAoe30gYXMgVEZpZWxkQ29uZmlnKSxcbiAgICAgIH0sIC8vIHVzZSBmaWVsZCBjb25maWcgZmFjdG9yeSB0aGF0IHdpbGwgcHJvdmlkZSBkZWZhdWx0IGZpZWxkIGNvbmZpZ1xuICAgICAgb3ZlcnJpZGVzOiBbXSxcbiAgICB9O1xuXG4gICAgdGhpcy5fZmllbGRDb25maWcgPSBmaWVsZENvbmZpZztcbiAgfVxuICAvKipcbiAgICogU2V0IGNvbG9yLlxuICAgKi9cbiAgcHVibGljIHNldENvbG9yKGNvbG9yOiBTdGFuZGFyZEZpZWxkQ29uZmlnWydjb2xvciddKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuc2V0RmllbGRDb25maWdEZWZhdWx0cygnY29sb3InLCBjb2xvcik7XG4gIH1cblxuICAvKipcbiAgICogU2V0IG51bWJlciBvZiBkZWNpbWFscyB0byBzaG93LlxuICAgKi9cbiAgcHVibGljIHNldERlY2ltYWxzKGRlY2ltYWxzOiBTdGFuZGFyZEZpZWxkQ29uZmlnWydkZWNpbWFscyddKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuc2V0RmllbGRDb25maWdEZWZhdWx0cygnZGVjaW1hbHMnLCBkZWNpbWFscyk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGZpZWxkIGRpc3BsYXkgbmFtZS5cbiAgICovXG4gIHB1YmxpYyBzZXREaXNwbGF5TmFtZShkaXNwbGF5TmFtZTogU3RhbmRhcmRGaWVsZENvbmZpZ1snZGlzcGxheU5hbWUnXSk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLnNldEZpZWxkQ29uZmlnRGVmYXVsdHMoJ2Rpc3BsYXlOYW1lJywgZGlzcGxheU5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc3RhbmRhcmQgZmllbGQgY29uZmlnIHByb3BlcnR5IGZpbHRlcmFibGUuXG4gICAqL1xuICBwdWJsaWMgc2V0RmlsdGVyYWJsZShmaWx0ZXJhYmxlOiBTdGFuZGFyZEZpZWxkQ29uZmlnWydmaWx0ZXJhYmxlJ10pOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5zZXRGaWVsZENvbmZpZ0RlZmF1bHRzKCdmaWx0ZXJhYmxlJywgZmlsdGVyYWJsZSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGRhdGEgbGlua3MuXG4gICAqL1xuICBwdWJsaWMgc2V0TGlua3MobGlua3M6IFN0YW5kYXJkRmllbGRDb25maWdbJ2xpbmtzJ10pOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5zZXRGaWVsZENvbmZpZ0RlZmF1bHRzKCdsaW5rcycsIGxpbmtzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdmFsdWUgbWFwcGluZ3MuXG4gICAqL1xuICBwdWJsaWMgc2V0TWFwcGluZ3MobWFwcGluZ3M6IFN0YW5kYXJkRmllbGRDb25maWdbJ21hcHBpbmdzJ10pOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5zZXRGaWVsZENvbmZpZ0RlZmF1bHRzKCdtYXBwaW5ncycsIG1hcHBpbmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHN0YW5kYXJkIGZpZWxkIGNvbmZpZyBwcm9wZXJ0eSBtYXguXG4gICAqL1xuICBwdWJsaWMgc2V0TWF4KG1heDogU3RhbmRhcmRGaWVsZENvbmZpZ1snbWF4J10pOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5zZXRGaWVsZENvbmZpZ0RlZmF1bHRzKCdtYXgnLCBtYXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc3RhbmRhcmQgZmllbGQgY29uZmlnIHByb3BlcnR5IG1pbi5cbiAgICovXG4gIHB1YmxpYyBzZXRNaW4obWluOiBTdGFuZGFyZEZpZWxkQ29uZmlnWydtaW4nXSk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLnNldEZpZWxkQ29uZmlnRGVmYXVsdHMoJ21pbicsIG1pbik7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBzdGFuZGFyZCBmaWVsZCBjb25maWcgcHJvcGVydHkgbm9WYWx1ZS5cbiAgICovXG4gIHB1YmxpYyBzZXROb1ZhbHVlKG5vVmFsdWU6IFN0YW5kYXJkRmllbGRDb25maWdbJ25vVmFsdWUnXSk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLnNldEZpZWxkQ29uZmlnRGVmYXVsdHMoJ25vVmFsdWUnLCBub1ZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHN0YW5kYXJkIGZpZWxkIGNvbmZpZyBwcm9wZXJ0eSB0aHJlc2hvbGRzLlxuICAgKi9cbiAgcHVibGljIHNldFRocmVzaG9sZHModGhyZXNob2xkczogU3RhbmRhcmRGaWVsZENvbmZpZ1sndGhyZXNob2xkcyddKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuc2V0RmllbGRDb25maWdEZWZhdWx0cygndGhyZXNob2xkcycsIHRocmVzaG9sZHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc3RhbmRhcmQgZmllbGQgY29uZmlnIHByb3BlcnR5IHVuaXQuXG4gICAqL1xuICBwdWJsaWMgc2V0VW5pdCh1bml0OiBTdGFuZGFyZEZpZWxkQ29uZmlnWyd1bml0J10pOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5zZXRGaWVsZENvbmZpZ0RlZmF1bHRzKCd1bml0JywgdW5pdCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGFuIGluZGl2aWR1YWwgY3VzdG9tIGZpZWxkIGNvbmZpZyB2YWx1ZS4gVGhpcyB3aWxsIG1lcmdlIHRoZSB2YWx1ZSB3aXRoIHRoZSBleGlzdGluZyBjdXN0b20gZmllbGQgY29uZmlnLlxuICAgKi9cbiAgcHVibGljIHNldEN1c3RvbUZpZWxkQ29uZmlnPFQgZXh0ZW5kcyBURmllbGRDb25maWcsIEsgZXh0ZW5kcyBrZXlvZiBUPihpZDogSywgdmFsdWU6IERlZXBQYXJ0aWFsPFRbS10+KTogdGhpcyB7XG4gICAgdGhpcy5fZmllbGRDb25maWcuZGVmYXVsdHMgPSB7XG4gICAgICAuLi50aGlzLl9maWVsZENvbmZpZy5kZWZhdWx0cyxcbiAgICAgIGN1c3RvbTogbWVyZ2UodGhpcy5fZmllbGRDb25maWcuZGVmYXVsdHMuY3VzdG9tLCB7IFtpZF06IHZhbHVlIH0pLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgb3ZlcnJpZGVzIGZvciB0aGUgZmllbGQgY29uZmlnLiBUaGlzIHdpbGwgbWVyZ2UgdGhlIG92ZXJyaWRlcyB3aXRoIHRoZSBleGlzdGluZyBvdmVycmlkZXMuXG4gICAqL1xuICBwdWJsaWMgc2V0T3ZlcnJpZGVzKGJ1aWxkZXI6IChiOiBGaWVsZENvbmZpZ092ZXJyaWRlc0J1aWxkZXI8VEZpZWxkQ29uZmlnPikgPT4gdm9pZCk6IHRoaXMge1xuICAgIGJ1aWxkZXIodGhpcy5fb3ZlcnJpZGVzQnVpbGRlcik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgc2V0RmllbGRDb25maWdEZWZhdWx0czxUIGV4dGVuZHMga2V5b2YgU3RhbmRhcmRGaWVsZENvbmZpZz4oa2V5OiBULCB2YWx1ZTogU3RhbmRhcmRGaWVsZENvbmZpZ1tUXSkge1xuICAgIHRoaXMuX2ZpZWxkQ29uZmlnLmRlZmF1bHRzID0ge1xuICAgICAgLi4udGhpcy5fZmllbGRDb25maWcuZGVmYXVsdHMsXG4gICAgICBba2V5XTogdmFsdWUsXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBidWlsZCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGVmYXVsdHM6IHRoaXMuX2ZpZWxkQ29uZmlnLmRlZmF1bHRzLFxuICAgICAgb3ZlcnJpZGVzOiB0aGlzLl9vdmVycmlkZXNCdWlsZGVyLmJ1aWxkKCksXG4gICAgfTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7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