@grafana/scenes 6.7.0--canary.1091.14350229100.0 → 6.8.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 (331) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/esm/components/layout/CSSGrid/SceneCSSGridItem.js +33 -0
  3. package/dist/esm/dist/esm/behaviors/CursorSync.js +76 -0
  4. package/dist/esm/dist/esm/behaviors/LiveNowTimer.js +44 -0
  5. package/dist/esm/dist/esm/behaviors/SceneQueryController.js +14 -0
  6. package/dist/esm/dist/esm/components/EmbeddedScene.js +59 -0
  7. package/dist/esm/dist/esm/components/NestedScene.js +95 -0
  8. package/dist/esm/dist/esm/components/SceneApp/SceneApp.js +27 -0
  9. package/dist/esm/dist/esm/components/SceneApp/SceneAppPage.js +176 -0
  10. package/dist/esm/dist/esm/components/SceneApp/SceneAppPageView.js +104 -0
  11. package/dist/esm/dist/esm/components/SceneApp/utils.js +42 -0
  12. package/dist/esm/dist/esm/components/SceneByFrameRepeater.js +41 -0
  13. package/dist/esm/dist/esm/components/SceneByVariableRepeater.js +55 -0
  14. package/dist/esm/dist/esm/components/SceneCanvasText.js +32 -0
  15. package/dist/esm/dist/esm/components/SceneControlsSpacer.js +17 -0
  16. package/dist/esm/dist/esm/components/SceneDebugger/DebugDetails.js +82 -0
  17. package/dist/esm/dist/esm/components/SceneDebugger/DebugTreeNode.js +72 -0
  18. package/dist/esm/dist/esm/components/SceneDebugger/SceneDebugger.js +77 -0
  19. package/dist/esm/dist/esm/components/SceneReactObject.js +34 -0
  20. package/dist/esm/dist/esm/components/SceneRefreshPicker.js +205 -0
  21. package/dist/esm/dist/esm/components/SceneTimePicker.js +139 -0
  22. package/dist/esm/dist/esm/components/SceneTimeRangeCompare.js +240 -0
  23. package/dist/esm/dist/esm/components/SceneToolbarButton.js +33 -0
  24. package/dist/esm/dist/esm/components/VizPanel/VizPanel.js +406 -0
  25. package/dist/esm/dist/esm/components/VizPanel/VizPanelExploreButton.js +44 -0
  26. package/dist/esm/dist/esm/components/VizPanel/VizPanelMenu.js +59 -0
  27. package/dist/esm/dist/esm/components/VizPanel/VizPanelRenderer.js +285 -0
  28. package/dist/esm/dist/esm/components/VizPanel/VizPanelSeriesLimit.js +45 -0
  29. package/dist/esm/dist/esm/components/VizPanel/colorSeriesConfigFactory.js +72 -0
  30. package/dist/esm/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js +11 -0
  31. package/dist/esm/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
  32. package/dist/esm/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
  33. package/dist/esm/dist/esm/components/layout/LazyLoader.js +103 -0
  34. package/dist/esm/dist/esm/components/layout/SceneFlexLayout.js +135 -0
  35. package/dist/esm/dist/esm/components/layout/grid/SceneGridItem.js +30 -0
  36. package/dist/esm/dist/esm/components/layout/grid/SceneGridLayout.js +283 -0
  37. package/dist/esm/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
  38. package/dist/esm/dist/esm/components/layout/grid/SceneGridRow.js +190 -0
  39. package/dist/esm/dist/esm/components/layout/grid/constants.js +7 -0
  40. package/dist/esm/dist/esm/components/layout/grid/utils.js +36 -0
  41. package/dist/esm/dist/esm/components/layout/split/SplitLayout.js +17 -0
  42. package/dist/esm/dist/esm/components/layout/split/SplitLayoutRenderer.js +29 -0
  43. package/dist/esm/dist/esm/components/layout/split/Splitter.js +386 -0
  44. package/dist/esm/dist/esm/core/SceneComponentWrapper.js +57 -0
  45. package/dist/esm/dist/esm/core/SceneDataNode.js +43 -0
  46. package/dist/esm/dist/esm/core/SceneObjectBase.js +286 -0
  47. package/dist/esm/dist/esm/core/SceneObjectRef.js +32 -0
  48. package/dist/esm/dist/esm/core/SceneTimeRange.js +231 -0
  49. package/dist/esm/dist/esm/core/events.js +11 -0
  50. package/dist/esm/dist/esm/core/sceneGraph/getTimeRange.js +10 -0
  51. package/dist/esm/dist/esm/core/sceneGraph/index.js +25 -0
  52. package/dist/esm/dist/esm/core/sceneGraph/sceneGraph.js +178 -0
  53. package/dist/esm/dist/esm/core/sceneGraph/utils.js +64 -0
  54. package/dist/esm/dist/esm/core/types.js +15 -0
  55. package/dist/esm/dist/esm/querying/DataLayersMerger.js +46 -0
  56. package/dist/esm/dist/esm/querying/ExtraQueryProvider.js +6 -0
  57. package/dist/esm/dist/esm/querying/RuntimeDataSource.js +6 -0
  58. package/dist/esm/dist/esm/querying/SceneDataLayerSet.js +100 -0
  59. package/dist/esm/dist/esm/querying/SceneQueryRunner.js +468 -0
  60. package/dist/esm/dist/esm/querying/extraQueryProcessingOperator.js +46 -0
  61. package/dist/esm/dist/esm/querying/getEnrichedDataRequest.js +12 -0
  62. package/dist/esm/dist/esm/querying/layers/SceneDataLayerBase.js +112 -0
  63. package/dist/esm/dist/esm/querying/layers/SceneDataLayerControls.js +51 -0
  64. package/dist/esm/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
  65. package/dist/esm/dist/esm/querying/layers/annotations/filterAnnotations.js +85 -0
  66. package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationQuery.js +121 -0
  67. package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
  68. package/dist/esm/dist/esm/querying/layers/annotations/utils.js +77 -0
  69. package/dist/esm/dist/esm/querying/registerQueryWithController.js +41 -0
  70. package/dist/esm/dist/esm/services/SceneObjectUrlSyncConfig.js +30 -0
  71. package/dist/esm/dist/esm/services/UniqueUrlKeyMapper.js +45 -0
  72. package/dist/esm/dist/esm/services/UrlSyncManager.js +167 -0
  73. package/dist/esm/dist/esm/services/useUrlSync.js +29 -0
  74. package/dist/esm/dist/esm/services/utils.js +71 -0
  75. package/dist/esm/dist/esm/utils/ControlsLabel.js +107 -0
  76. package/dist/esm/dist/esm/utils/LoadingIndicator.js +19 -0
  77. package/dist/esm/dist/esm/utils/SafeSerializableSceneObject.js +39 -0
  78. package/dist/esm/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
  79. package/dist/esm/dist/esm/utils/date.js +15 -0
  80. package/dist/esm/dist/esm/utils/evaluateTimeRange.js +16 -0
  81. package/dist/esm/dist/esm/utils/explore.js +47 -0
  82. package/dist/esm/dist/esm/utils/getCompareSeriesRefId.js +4 -0
  83. package/dist/esm/dist/esm/utils/getDataSource.js +18 -0
  84. package/dist/esm/dist/esm/utils/getMessageFromError.js +24 -0
  85. package/dist/esm/dist/esm/utils/metricTree.js +53 -0
  86. package/dist/esm/dist/esm/utils/parseUrlParam.js +41 -0
  87. package/dist/esm/dist/esm/utils/utils.js +11 -0
  88. package/dist/esm/dist/esm/utils/wrapInSafeSerializableSceneObject.js +30 -0
  89. package/dist/esm/dist/esm/utils/writeSceneLog.js +12 -0
  90. package/dist/esm/dist/esm/variables/VariableDependencyConfig.js +150 -0
  91. package/dist/esm/dist/esm/variables/VariableValueRecorder.js +71 -0
  92. package/dist/esm/dist/esm/variables/adhoc/AdHocFilterBuilder.js +24 -0
  93. package/dist/esm/dist/esm/variables/adhoc/AdHocFilterRenderer.js +303 -0
  94. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
  95. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
  96. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
  97. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
  98. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
  99. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
  100. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
  101. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
  102. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariable.js +289 -0
  103. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
  104. package/dist/esm/dist/esm/variables/adhoc/getAdhocOptionSearcher.js +13 -0
  105. package/dist/esm/dist/esm/variables/adhoc/patchGetAdhocFilters.js +47 -0
  106. package/dist/esm/dist/esm/variables/components/VariableValueControl.js +23 -0
  107. package/dist/esm/dist/esm/variables/components/VariableValueInput.js +33 -0
  108. package/dist/esm/dist/esm/variables/components/VariableValueSelect.js +228 -0
  109. package/dist/esm/dist/esm/variables/components/VariableValueSelectors.js +72 -0
  110. package/dist/esm/dist/esm/variables/components/getOptionSearcher.js +15 -0
  111. package/dist/esm/dist/esm/variables/constants.js +9 -0
  112. package/dist/esm/dist/esm/variables/getEnrichedFiltersRequest.js +12 -0
  113. package/dist/esm/dist/esm/variables/groupby/GroupByVariable.js +259 -0
  114. package/dist/esm/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
  115. package/dist/esm/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
  116. package/dist/esm/dist/esm/variables/interpolation/ScopedVarsVariable.js +40 -0
  117. package/dist/esm/dist/esm/variables/interpolation/defaults.js +21 -0
  118. package/dist/esm/dist/esm/variables/interpolation/fieldAccessorCache.js +13 -0
  119. package/dist/esm/dist/esm/variables/interpolation/formatRegistry.js +296 -0
  120. package/dist/esm/dist/esm/variables/interpolation/sceneInterpolator.js +87 -0
  121. package/dist/esm/dist/esm/variables/lookupVariable.js +20 -0
  122. package/dist/esm/dist/esm/variables/macros/AllVariablesMacro.js +57 -0
  123. package/dist/esm/dist/esm/variables/macros/contextMacros.js +43 -0
  124. package/dist/esm/dist/esm/variables/macros/dataMacros.js +134 -0
  125. package/dist/esm/dist/esm/variables/macros/index.js +26 -0
  126. package/dist/esm/dist/esm/variables/macros/templateProxies.js +51 -0
  127. package/dist/esm/dist/esm/variables/macros/timeMacros.js +86 -0
  128. package/dist/esm/dist/esm/variables/macros/types.js +11 -0
  129. package/dist/esm/dist/esm/variables/macros/urlMacros.js +56 -0
  130. package/dist/esm/dist/esm/variables/sets/SceneVariableSet.js +254 -0
  131. package/dist/esm/dist/esm/variables/types.js +11 -0
  132. package/dist/esm/dist/esm/variables/utils.js +172 -0
  133. package/dist/esm/dist/esm/variables/variants/ConstantVariable.js +38 -0
  134. package/dist/esm/dist/esm/variables/variants/CustomVariable.js +60 -0
  135. package/dist/esm/dist/esm/variables/variants/DataSourceVariable.js +88 -0
  136. package/dist/esm/dist/esm/variables/variants/IntervalVariable.js +117 -0
  137. package/dist/esm/dist/esm/variables/variants/MultiValueVariable.js +295 -0
  138. package/dist/esm/dist/esm/variables/variants/TestVariable.js +117 -0
  139. package/dist/esm/dist/esm/variables/variants/TextBoxVariable.js +61 -0
  140. package/dist/esm/dist/esm/variables/variants/query/QueryVariable.js +139 -0
  141. package/dist/esm/dist/esm/variables/variants/query/createQueryVariableRunner.js +129 -0
  142. package/dist/esm/dist/esm/variables/variants/query/guards.js +28 -0
  143. package/dist/esm/dist/esm/variables/variants/query/toMetricFindValues.js +96 -0
  144. package/dist/esm/dist/esm/variables/variants/query/utils.js +124 -0
  145. package/dist/esm/index.js +1 -1
  146. package/dist/esm/index.js.map +1 -1
  147. package/dist/esm/querying/DataProviderSharer.js +39 -0
  148. package/dist/esm/src/behaviors/ActWhenVariableChanged.js +27 -0
  149. package/dist/esm/src/behaviors/CursorSync.js +76 -0
  150. package/dist/esm/src/behaviors/LiveNowTimer.js +44 -0
  151. package/dist/esm/src/behaviors/SceneQueryController.js +60 -0
  152. package/dist/esm/src/behaviors/index.js +5 -0
  153. package/dist/esm/src/components/EmbeddedScene.js +59 -0
  154. package/dist/esm/src/components/NestedScene.js +95 -0
  155. package/dist/esm/src/components/SceneApp/SceneApp.js +37 -0
  156. package/dist/esm/src/components/SceneApp/SceneAppPage.js +176 -0
  157. package/dist/esm/src/components/SceneApp/SceneAppPageView.js +104 -0
  158. package/dist/esm/src/components/SceneApp/utils.js +42 -0
  159. package/dist/esm/src/components/SceneByFrameRepeater.js +41 -0
  160. package/dist/esm/src/components/SceneByVariableRepeater.js +55 -0
  161. package/dist/esm/src/components/SceneCanvasText.js +32 -0
  162. package/dist/esm/src/components/SceneControlsSpacer.js +17 -0
  163. package/dist/esm/src/components/SceneDebugger/DebugDetails.js +82 -0
  164. package/dist/esm/src/components/SceneDebugger/DebugTreeNode.js +72 -0
  165. package/dist/esm/src/components/SceneDebugger/SceneDebugger.js +77 -0
  166. package/dist/esm/src/components/SceneReactObject.js +34 -0
  167. package/dist/esm/src/components/SceneRefreshPicker.js +205 -0
  168. package/dist/esm/src/components/SceneTimePicker.js +139 -0
  169. package/dist/esm/src/components/SceneTimeRangeCompare.js +240 -0
  170. package/dist/esm/src/components/SceneToolbarButton.js +33 -0
  171. package/dist/esm/src/components/VizPanel/VizPanel.js +406 -0
  172. package/dist/esm/src/components/VizPanel/VizPanelExploreButton.js +44 -0
  173. package/dist/esm/src/components/VizPanel/VizPanelMenu.js +59 -0
  174. package/dist/esm/src/components/VizPanel/VizPanelRenderer.js +285 -0
  175. package/dist/esm/src/components/VizPanel/VizPanelSeriesLimit.js +45 -0
  176. package/dist/esm/src/components/VizPanel/colorSeriesConfigFactory.js +72 -0
  177. package/dist/esm/src/components/VizPanel/registerRuntimePanelPlugin.js +56 -0
  178. package/dist/esm/src/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
  179. package/dist/esm/src/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
  180. package/dist/esm/src/components/layout/LazyLoader.js +103 -0
  181. package/dist/esm/src/components/layout/SceneFlexLayout.js +135 -0
  182. package/dist/esm/src/components/layout/grid/SceneGridItem.js +30 -0
  183. package/dist/esm/src/components/layout/grid/SceneGridLayout.js +283 -0
  184. package/dist/esm/src/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
  185. package/dist/esm/src/components/layout/grid/SceneGridRow.js +190 -0
  186. package/dist/esm/src/components/layout/grid/constants.js +7 -0
  187. package/dist/esm/src/components/layout/grid/utils.js +36 -0
  188. package/dist/esm/src/components/layout/split/SplitLayout.js +17 -0
  189. package/dist/esm/src/components/layout/split/SplitLayoutRenderer.js +29 -0
  190. package/dist/esm/src/components/layout/split/Splitter.js +386 -0
  191. package/dist/esm/src/core/PanelBuilders/FieldConfigBuilder.js +100 -0
  192. package/dist/esm/src/core/PanelBuilders/FieldConfigBuilders.js +75 -0
  193. package/dist/esm/src/core/PanelBuilders/FieldConfigOverridesBuilder.js +75 -0
  194. package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilder.js +22 -0
  195. package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilders.js +85 -0
  196. package/dist/esm/src/core/PanelBuilders/StandardFieldConfigBuilders.js +52 -0
  197. package/dist/esm/src/core/PanelBuilders/VizConfigBuilder.js +78 -0
  198. package/dist/esm/src/core/PanelBuilders/VizConfigBuilders.js +114 -0
  199. package/dist/esm/src/core/PanelBuilders/VizPanelBuilder.js +162 -0
  200. package/dist/esm/src/core/PanelBuilders/index.js +116 -0
  201. package/dist/esm/src/core/SceneComponentWrapper.js +57 -0
  202. package/dist/esm/src/core/SceneDataNode.js +43 -0
  203. package/dist/esm/src/core/SceneObjectBase.js +286 -0
  204. package/dist/esm/src/core/SceneObjectRef.js +32 -0
  205. package/dist/esm/src/core/SceneTimeRange.js +231 -0
  206. package/dist/esm/src/core/SceneTimeRangeTransformerBase.js +35 -0
  207. package/dist/esm/src/core/SceneTimeZoneOverride.js +63 -0
  208. package/dist/esm/src/core/events.js +11 -0
  209. package/dist/esm/src/core/sceneGraph/getTimeRange.js +10 -0
  210. package/dist/esm/src/core/sceneGraph/index.js +25 -0
  211. package/dist/esm/src/core/sceneGraph/sceneGraph.js +178 -0
  212. package/dist/esm/src/core/sceneGraph/utils.js +64 -0
  213. package/dist/esm/src/core/types.js +15 -0
  214. package/dist/esm/src/index.js +108 -0
  215. package/dist/esm/src/querying/DataLayersMerger.js +46 -0
  216. package/dist/esm/src/querying/DataProviderProxy.js +37 -0
  217. package/dist/esm/src/querying/DataProviderSharer.js +108 -0
  218. package/dist/esm/src/querying/ExtraQueryProvider.js +6 -0
  219. package/dist/esm/src/querying/RuntimeDataSource.js +49 -0
  220. package/dist/esm/src/querying/SceneDataLayerSet.js +100 -0
  221. package/dist/esm/src/querying/SceneDataTransformer.js +178 -0
  222. package/dist/esm/src/querying/SceneQueryRunner.js +468 -0
  223. package/dist/esm/src/querying/extraQueryProcessingOperator.js +46 -0
  224. package/dist/esm/src/querying/getEnrichedDataRequest.js +12 -0
  225. package/dist/esm/src/querying/layers/SceneDataLayerBase.js +112 -0
  226. package/dist/esm/src/querying/layers/SceneDataLayerControls.js +51 -0
  227. package/dist/esm/src/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
  228. package/dist/esm/src/querying/layers/annotations/filterAnnotations.js +85 -0
  229. package/dist/esm/src/querying/layers/annotations/standardAnnotationQuery.js +121 -0
  230. package/dist/esm/src/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
  231. package/dist/esm/src/querying/layers/annotations/utils.js +77 -0
  232. package/dist/esm/src/querying/layers/index.js +2 -0
  233. package/dist/esm/src/querying/registerQueryWithController.js +41 -0
  234. package/dist/esm/src/services/SceneObjectUrlSyncConfig.js +30 -0
  235. package/dist/esm/src/services/UniqueUrlKeyMapper.js +45 -0
  236. package/dist/esm/src/services/UrlSyncContextProvider.js +17 -0
  237. package/dist/esm/src/services/UrlSyncManager.js +167 -0
  238. package/dist/esm/src/services/useUrlSync.js +29 -0
  239. package/dist/esm/src/services/utils.js +75 -0
  240. package/dist/esm/src/utils/ControlsLabel.js +107 -0
  241. package/dist/esm/src/utils/LoadingIndicator.js +19 -0
  242. package/dist/esm/src/utils/SafeSerializableSceneObject.js +39 -0
  243. package/dist/esm/src/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
  244. package/dist/esm/src/utils/date.js +15 -0
  245. package/dist/esm/src/utils/evaluateTimeRange.js +16 -0
  246. package/dist/esm/src/utils/explore.js +47 -0
  247. package/dist/esm/src/utils/getCompareSeriesRefId.js +4 -0
  248. package/dist/esm/src/utils/getDataSource.js +18 -0
  249. package/dist/esm/src/utils/getMessageFromError.js +24 -0
  250. package/dist/esm/src/utils/metricTree.js +53 -0
  251. package/dist/esm/src/utils/parseUrlParam.js +41 -0
  252. package/dist/esm/src/utils/utils.js +11 -0
  253. package/dist/esm/src/utils/wrapInSafeSerializableSceneObject.js +30 -0
  254. package/dist/esm/src/utils/writeSceneLog.js +12 -0
  255. package/dist/esm/src/variables/VariableDependencyConfig.js +150 -0
  256. package/dist/esm/src/variables/VariableValueRecorder.js +71 -0
  257. package/dist/esm/src/variables/adhoc/AdHocFilterBuilder.js +24 -0
  258. package/dist/esm/src/variables/adhoc/AdHocFilterRenderer.js +303 -0
  259. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
  260. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
  261. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
  262. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
  263. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
  264. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
  265. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
  266. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
  267. package/dist/esm/src/variables/adhoc/AdHocFiltersVariable.js +289 -0
  268. package/dist/esm/src/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
  269. package/dist/esm/src/variables/adhoc/getAdhocOptionSearcher.js +13 -0
  270. package/dist/esm/src/variables/adhoc/patchGetAdhocFilters.js +47 -0
  271. package/dist/esm/src/variables/components/VariableValueControl.js +23 -0
  272. package/dist/esm/src/variables/components/VariableValueInput.js +33 -0
  273. package/dist/esm/src/variables/components/VariableValueSelect.js +228 -0
  274. package/dist/esm/src/variables/components/VariableValueSelectors.js +72 -0
  275. package/dist/esm/src/variables/components/getOptionSearcher.js +15 -0
  276. package/dist/esm/src/variables/constants.js +9 -0
  277. package/dist/esm/src/variables/getEnrichedFiltersRequest.js +12 -0
  278. package/dist/esm/src/variables/groupby/GroupByVariable.js +259 -0
  279. package/dist/esm/src/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
  280. package/dist/esm/src/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
  281. package/dist/esm/src/variables/interpolation/ScopedVarsVariable.js +40 -0
  282. package/dist/esm/src/variables/interpolation/defaults.js +21 -0
  283. package/dist/esm/src/variables/interpolation/fieldAccessorCache.js +13 -0
  284. package/dist/esm/src/variables/interpolation/formatRegistry.js +296 -0
  285. package/dist/esm/src/variables/interpolation/sceneInterpolator.js +87 -0
  286. package/dist/esm/src/variables/lookupVariable.js +20 -0
  287. package/dist/esm/src/variables/macros/AllVariablesMacro.js +57 -0
  288. package/dist/esm/src/variables/macros/contextMacros.js +43 -0
  289. package/dist/esm/src/variables/macros/dataMacros.js +134 -0
  290. package/dist/esm/src/variables/macros/index.js +35 -0
  291. package/dist/esm/src/variables/macros/templateProxies.js +51 -0
  292. package/dist/esm/src/variables/macros/timeMacros.js +86 -0
  293. package/dist/esm/src/variables/macros/types.js +11 -0
  294. package/dist/esm/src/variables/macros/urlMacros.js +56 -0
  295. package/dist/esm/src/variables/sets/SceneVariableSet.js +254 -0
  296. package/dist/esm/src/variables/types.js +11 -0
  297. package/dist/esm/src/variables/utils.js +172 -0
  298. package/dist/esm/src/variables/variants/ConstantVariable.js +38 -0
  299. package/dist/esm/src/variables/variants/CustomVariable.js +60 -0
  300. package/dist/esm/src/variables/variants/DataSourceVariable.js +88 -0
  301. package/dist/esm/src/variables/variants/IntervalVariable.js +117 -0
  302. package/dist/esm/src/variables/variants/JsonVariable.js +193 -0
  303. package/dist/esm/src/variables/variants/LocalValueVariable.js +56 -0
  304. package/dist/esm/src/variables/variants/MultiValueVariable.js +295 -0
  305. package/dist/esm/src/variables/variants/TestVariable.js +117 -0
  306. package/dist/esm/src/variables/variants/TextBoxVariable.js +61 -0
  307. package/dist/esm/src/variables/variants/guards.js +27 -0
  308. package/dist/esm/src/variables/variants/query/QueryVariable.js +139 -0
  309. package/dist/esm/src/variables/variants/query/createQueryVariableRunner.js +129 -0
  310. package/dist/esm/src/variables/variants/query/guards.js +28 -0
  311. package/dist/esm/src/variables/variants/query/toMetricFindValues.js +96 -0
  312. package/dist/esm/src/variables/variants/query/utils.js +124 -0
  313. package/dist/esm/variables/components/VariableValueSelect.js +13 -9
  314. package/dist/esm/variables/components/VariableValueSelect.js.map +1 -1
  315. package/dist/esm/variables/variants/ConstantVariable.js +22 -0
  316. package/dist/esm/variables/variants/ConstantVariable.js.map +1 -1
  317. package/dist/esm/variables/variants/CustomVariable.js +3 -2
  318. package/dist/esm/variables/variants/CustomVariable.js.map +1 -1
  319. package/dist/esm/variables/variants/DataSourceVariable.js +3 -2
  320. package/dist/esm/variables/variants/DataSourceVariable.js.map +1 -1
  321. package/dist/esm/variables/variants/JsonVariable.js +96 -0
  322. package/dist/esm/variables/variants/TestVariable.js +3 -2
  323. package/dist/esm/variables/variants/TestVariable.js.map +1 -1
  324. package/dist/esm/variables/variants/json/JsonVariable.js +95 -0
  325. package/dist/esm/variables/variants/json/JsonVariableOptionProviders.js +70 -0
  326. package/dist/esm/variables/variants/query/QueryVariable.js +3 -2
  327. package/dist/esm/variables/variants/query/QueryVariable.js.map +1 -1
  328. package/dist/index.d.ts +14 -6
  329. package/dist/index.js +35 -13
  330. package/dist/index.js.map +1 -1
  331. package/package.json +2 -2
@@ -0,0 +1,296 @@
1
+ import { map, isArray, replace } from 'lodash';
2
+ import { Registry, escapeRegex, textUtil, dateTime, urlUtil } from '@grafana/data';
3
+ import { VariableFormatID } from '@grafana/schema';
4
+
5
+ const formatRegistry = new Registry(() => {
6
+ const formats = [
7
+ {
8
+ id: VariableFormatID.Lucene,
9
+ name: "Lucene",
10
+ description: "Values are lucene escaped and multi-valued variables generate an OR expression",
11
+ formatter: (value) => {
12
+ if (typeof value === "string") {
13
+ return luceneEscape(value);
14
+ }
15
+ if (Array.isArray(value)) {
16
+ if (value.length === 0) {
17
+ return "__empty__";
18
+ }
19
+ const quotedValues = map(value, (val) => {
20
+ return '"' + luceneEscape(val) + '"';
21
+ });
22
+ return "(" + quotedValues.join(" OR ") + ")";
23
+ } else {
24
+ return luceneEscape(`${value}`);
25
+ }
26
+ }
27
+ },
28
+ {
29
+ id: VariableFormatID.Raw,
30
+ name: "raw",
31
+ description: "Keep value as is",
32
+ formatter: (value) => String(value)
33
+ },
34
+ {
35
+ id: VariableFormatID.Regex,
36
+ name: "Regex",
37
+ description: "Values are regex escaped and multi-valued variables generate a (<value>|<value>) expression",
38
+ formatter: (value) => {
39
+ if (typeof value === "string") {
40
+ return escapeRegex(value);
41
+ }
42
+ if (Array.isArray(value)) {
43
+ const escapedValues = value.map((item) => {
44
+ if (typeof item === "string") {
45
+ return escapeRegex(item);
46
+ } else {
47
+ return escapeRegex(String(item));
48
+ }
49
+ });
50
+ if (escapedValues.length === 1) {
51
+ return escapedValues[0];
52
+ }
53
+ return "(" + escapedValues.join("|") + ")";
54
+ }
55
+ return escapeRegex(`${value}`);
56
+ }
57
+ },
58
+ {
59
+ id: VariableFormatID.Pipe,
60
+ name: "Pipe",
61
+ description: "Values are separated by | character",
62
+ formatter: (value) => {
63
+ if (typeof value === "string") {
64
+ return value;
65
+ }
66
+ if (Array.isArray(value)) {
67
+ return value.join("|");
68
+ }
69
+ return `${value}`;
70
+ }
71
+ },
72
+ {
73
+ id: VariableFormatID.Distributed,
74
+ name: "Distributed",
75
+ description: "Multiple values are formatted like variable=value",
76
+ formatter: (value, args, variable) => {
77
+ if (typeof value === "string") {
78
+ return value;
79
+ }
80
+ if (Array.isArray(value)) {
81
+ value = map(value, (val, index) => {
82
+ if (index !== 0) {
83
+ return variable.state.name + "=" + val;
84
+ } else {
85
+ return val;
86
+ }
87
+ });
88
+ return value.join(",");
89
+ }
90
+ return `${value}`;
91
+ }
92
+ },
93
+ {
94
+ id: VariableFormatID.CSV,
95
+ name: "Csv",
96
+ description: "Comma-separated values",
97
+ formatter: (value) => {
98
+ if (typeof value === "string") {
99
+ return value;
100
+ }
101
+ if (isArray(value)) {
102
+ return value.join(",");
103
+ }
104
+ return String(value);
105
+ }
106
+ },
107
+ {
108
+ id: VariableFormatID.HTML,
109
+ name: "HTML",
110
+ description: "HTML escaping of values",
111
+ formatter: (value) => {
112
+ if (typeof value === "string") {
113
+ return textUtil.escapeHtml(value);
114
+ }
115
+ if (isArray(value)) {
116
+ return textUtil.escapeHtml(value.join(", "));
117
+ }
118
+ return textUtil.escapeHtml(String(value));
119
+ }
120
+ },
121
+ {
122
+ id: VariableFormatID.JSON,
123
+ name: "JSON",
124
+ description: "JSON stringify value",
125
+ formatter: (value) => {
126
+ if (typeof value === "string") {
127
+ return value;
128
+ }
129
+ return JSON.stringify(value);
130
+ }
131
+ },
132
+ {
133
+ id: VariableFormatID.PercentEncode,
134
+ name: "Percent encode",
135
+ description: "Useful for URL escaping values",
136
+ formatter: (value) => {
137
+ if (isArray(value)) {
138
+ return encodeURIComponentStrict("{" + value.join(",") + "}");
139
+ }
140
+ return encodeURIComponentStrict(value);
141
+ }
142
+ },
143
+ {
144
+ id: VariableFormatID.SingleQuote,
145
+ name: "Single quote",
146
+ description: "Single quoted values",
147
+ formatter: (value) => {
148
+ const regExp = new RegExp(`'`, "g");
149
+ if (isArray(value)) {
150
+ return map(value, (v) => `'${replace(v, regExp, `\\'`)}'`).join(",");
151
+ }
152
+ let strVal = typeof value === "string" ? value : String(value);
153
+ return `'${replace(strVal, regExp, `\\'`)}'`;
154
+ }
155
+ },
156
+ {
157
+ id: VariableFormatID.DoubleQuote,
158
+ name: "Double quote",
159
+ description: "Double quoted values",
160
+ formatter: (value) => {
161
+ const regExp = new RegExp('"', "g");
162
+ if (isArray(value)) {
163
+ return map(value, (v) => `"${replace(v, regExp, '\\"')}"`).join(",");
164
+ }
165
+ let strVal = typeof value === "string" ? value : String(value);
166
+ return `"${replace(strVal, regExp, '\\"')}"`;
167
+ }
168
+ },
169
+ {
170
+ id: VariableFormatID.SQLString,
171
+ name: "SQL string",
172
+ description: "SQL string quoting and commas for use in IN statements and other scenarios",
173
+ formatter: sqlStringFormatter
174
+ },
175
+ {
176
+ id: VariableFormatID.Date,
177
+ name: "Date",
178
+ description: "Format date in different ways",
179
+ formatter: (value, args) => {
180
+ var _a;
181
+ let nrValue = NaN;
182
+ if (typeof value === "number") {
183
+ nrValue = value;
184
+ } else if (typeof value === "string") {
185
+ nrValue = parseInt(value, 10);
186
+ }
187
+ if (isNaN(nrValue)) {
188
+ return "NaN";
189
+ }
190
+ const arg = (_a = args[0]) != null ? _a : "iso";
191
+ switch (arg) {
192
+ case "ms":
193
+ return String(value);
194
+ case "seconds":
195
+ return `${Math.round(nrValue / 1e3)}`;
196
+ case "iso":
197
+ return dateTime(nrValue).toISOString();
198
+ default:
199
+ if ((args || []).length > 1) {
200
+ return dateTime(nrValue).format(args.join(":"));
201
+ }
202
+ return dateTime(nrValue).format(arg);
203
+ }
204
+ }
205
+ },
206
+ {
207
+ id: VariableFormatID.Glob,
208
+ name: "Glob",
209
+ description: "Format multi-valued variables using glob syntax, example {value1,value2}",
210
+ formatter: (value) => {
211
+ if (isArray(value) && value.length > 1) {
212
+ return "{" + value.join(",") + "}";
213
+ }
214
+ return String(value);
215
+ }
216
+ },
217
+ {
218
+ id: VariableFormatID.Text,
219
+ name: "Text",
220
+ description: "Format variables in their text representation. Example in multi-variable scenario A + B + C.",
221
+ formatter: (value, _args, variable) => {
222
+ if (variable.getValueText) {
223
+ return variable.getValueText();
224
+ }
225
+ return String(value);
226
+ }
227
+ },
228
+ {
229
+ id: VariableFormatID.QueryParam,
230
+ name: "Query parameter",
231
+ description: "Format variables as URL parameters. Example in multi-variable scenario A + B + C => var-foo=A&var-foo=B&var-foo=C.",
232
+ formatter: (value, _args, variable) => {
233
+ if (variable.urlSync) {
234
+ const urlParam = variable.urlSync.getUrlState();
235
+ return urlUtil.toUrlParams(urlParam);
236
+ }
237
+ if (Array.isArray(value)) {
238
+ return value.map((v) => formatQueryParameter(variable.state.name, v)).join("&");
239
+ }
240
+ return formatQueryParameter(variable.state.name, value);
241
+ }
242
+ },
243
+ {
244
+ id: VariableFormatID.UriEncode,
245
+ name: "Percent encode as URI",
246
+ description: "Useful for URL escaping values, taking into URI syntax characters",
247
+ formatter: (value) => {
248
+ if (isArray(value)) {
249
+ return encodeURIStrict("{" + value.join(",") + "}");
250
+ }
251
+ return encodeURIStrict(value);
252
+ }
253
+ }
254
+ ];
255
+ return formats;
256
+ });
257
+ function luceneEscape(value) {
258
+ if (isNaN(+value) === false) {
259
+ return value;
260
+ }
261
+ return value.replace(/([\!\*\+\-\=<>\s\&\|\(\)\[\]\{\}\^\~\?\:\\/"])/g, "\\$1");
262
+ }
263
+ function encodeURIComponentStrict(str) {
264
+ if (typeof str === "object") {
265
+ str = String(str);
266
+ }
267
+ return replaceSpecialCharactersToASCII(encodeURIComponent(str));
268
+ }
269
+ const encodeURIStrict = (str) => replaceSpecialCharactersToASCII(encodeURI(String(str)));
270
+ const replaceSpecialCharactersToASCII = (value) => value.replace(/[!'()*]/g, (c) => {
271
+ return "%" + c.charCodeAt(0).toString(16).toUpperCase();
272
+ });
273
+ function formatQueryParameter(name, value) {
274
+ return `var-${name}=${encodeURIComponentStrict(value)}`;
275
+ }
276
+ const SQL_ESCAPE_MAP = {
277
+ "'": "''",
278
+ '"': '\\"'
279
+ };
280
+ function sqlStringFormatter(value) {
281
+ const regExp = new RegExp(`'|"`, "g");
282
+ if (isArray(value)) {
283
+ return map(value, (v) => `'${replace(v, regExp, (match) => {
284
+ var _a;
285
+ return (_a = SQL_ESCAPE_MAP[match]) != null ? _a : "";
286
+ })}'`).join(",");
287
+ }
288
+ let strVal = typeof value === "string" ? value : String(value);
289
+ return `'${replace(strVal, regExp, (match) => {
290
+ var _a;
291
+ return (_a = SQL_ESCAPE_MAP[match]) != null ? _a : "";
292
+ })}'`;
293
+ }
294
+
295
+ export { formatRegistry };
296
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0UmVnaXN0cnkuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy92YXJpYWJsZXMvaW50ZXJwb2xhdGlvbi9mb3JtYXRSZWdpc3RyeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0FycmF5LCBtYXAsIHJlcGxhY2UgfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBkYXRlVGltZSwgUmVnaXN0cnksIFJlZ2lzdHJ5SXRlbSwgdGV4dFV0aWwsIGVzY2FwZVJlZ2V4LCB1cmxVdGlsIH0gZnJvbSAnQGdyYWZhbmEvZGF0YSc7XG5pbXBvcnQgeyBWYXJpYWJsZVR5cGUsIFZhcmlhYmxlRm9ybWF0SUQgfSBmcm9tICdAZ3JhZmFuYS9zY2hlbWEnO1xuXG5pbXBvcnQgeyBWYXJpYWJsZVZhbHVlLCBWYXJpYWJsZVZhbHVlU2luZ2xlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgQUxMX1ZBUklBQkxFX1ZBTFVFIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFNjZW5lT2JqZWN0VXJsU3luY0hhbmRsZXIgfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBGb3JtYXRSZWdpc3RyeUl0ZW0gZXh0ZW5kcyBSZWdpc3RyeUl0ZW0ge1xuICBmb3JtYXR0ZXIodmFsdWU6IFZhcmlhYmxlVmFsdWUsIGFyZ3M6IHN0cmluZ1tdLCB2YXJpYWJsZTogRm9ybWF0VmFyaWFibGUpOiBzdHJpbmc7XG59XG5cbi8qKlxuICogU2xpbW1lZCBkb3duIHZlcnNpb24gb2YgdGhlIFNjZW5lVmFyaWFibGUgaW50ZXJmYWNlIHNvIHRoYXQgaXQgb25seSBjb250YWlucyB3aGF0IHRoZSBmb3JtYXR0ZXJzIGFjdHVhbGx5IHVzZS5cbiAqIFRoaXMgaXMgdXNlZnVsIGFzIHdlIGhhdmUgc29tZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhpcyBpbnRlcmZhY2UgdGhhdCBkb2VzIG5vdCBuZWVkIHRvIGJlIGZ1bGwgc2NlbmUgb2JqZWN0cy5cbiAqIEZvciBleGFtcGxlIFNjb3BlZFZhcnNWYXJpYWJsZSBhbmQgTGVnYWN5VmFyaWFibGVXcmFwcGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdFZhcmlhYmxlIHtcbiAgc3RhdGU6IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdHlwZTogVmFyaWFibGVUeXBlIHwgc3RyaW5nO1xuICAgIGlzTXVsdGk/OiBib29sZWFuO1xuICAgIGluY2x1ZGVBbGw/OiBib29sZWFuO1xuICB9O1xuXG4gIGdldFZhbHVlKGZpZWxkUGF0aD86IHN0cmluZyk6IFZhcmlhYmxlVmFsdWUgfCB1bmRlZmluZWQgfCBudWxsO1xuICBnZXRWYWx1ZVRleHQ/KGZpZWxkUGF0aD86IHN0cmluZyk6IHN0cmluZztcbiAgdXJsU3luYz86IFNjZW5lT2JqZWN0VXJsU3luY0hhbmRsZXI7XG59XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRSZWdpc3RyeSA9IG5ldyBSZWdpc3RyeTxGb3JtYXRSZWdpc3RyeUl0ZW0+KCgpID0+IHtcbiAgY29uc3QgZm9ybWF0czogRm9ybWF0UmVnaXN0cnlJdGVtW10gPSBbXG4gICAge1xuICAgICAgaWQ6IFZhcmlhYmxlRm9ybWF0SUQuTHVjZW5lLFxuICAgICAgbmFtZTogJ0x1Y2VuZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1ZhbHVlcyBhcmUgbHVjZW5lIGVzY2FwZWQgYW5kIG11bHRpLXZhbHVlZCB2YXJpYWJsZXMgZ2VuZXJhdGUgYW4gT1IgZXhwcmVzc2lvbicsXG4gICAgICBmb3JtYXR0ZXI6ICh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJldHVybiBsdWNlbmVFc2NhcGUodmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuICdfX2VtcHR5X18nO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBxdW90ZWRWYWx1ZXMgPSBtYXAodmFsdWUsICh2YWw6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICdcIicgKyBsdWNlbmVFc2NhcGUodmFsKSArICdcIic7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuICcoJyArIHF1b3RlZFZhbHVlcy5qb2luKCcgT1IgJykgKyAnKSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGx1Y2VuZUVzY2FwZShgJHt2YWx1ZX1gKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBWYXJpYWJsZUZvcm1hdElELlJhdyxcbiAgICAgIG5hbWU6ICdyYXcnLFxuICAgICAgZGVzY3JpcHRpb246ICdLZWVwIHZhbHVlIGFzIGlzJyxcbiAgICAgIGZvcm1hdHRlcjogKHZhbHVlKSA9PiBTdHJpbmcodmFsdWUpLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFZhcmlhYmxlRm9ybWF0SUQuUmVnZXgsXG4gICAgICBuYW1lOiAnUmVnZXgnLFxuICAgICAgZGVzY3JpcHRpb246ICdWYWx1ZXMgYXJlIHJlZ2V4IGVzY2FwZWQgYW5kIG11bHRpLXZhbHVlZCB2YXJpYWJsZXMgZ2VuZXJhdGUgYSAoPHZhbHVlPnw8dmFsdWU+KSBleHByZXNzaW9uJyxcbiAgICAgIGZvcm1hdHRlcjogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgcmV0dXJuIGVzY2FwZVJlZ2V4KHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgIGNvbnN0IGVzY2FwZWRWYWx1ZXMgPSB2YWx1ZS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGVzY2FwZVJlZ2V4KGl0ZW0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGVzY2FwZVJlZ2V4KFN0cmluZyhpdGVtKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoZXNjYXBlZFZhbHVlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBlc2NhcGVkVmFsdWVzWzBdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiAnKCcgKyBlc2NhcGVkVmFsdWVzLmpvaW4oJ3wnKSArICcpJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlc2NhcGVSZWdleChgJHt2YWx1ZX1gKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogVmFyaWFibGVGb3JtYXRJRC5QaXBlLFxuICAgICAgbmFtZTogJ1BpcGUnLFxuICAgICAgZGVzY3JpcHRpb246ICdWYWx1ZXMgYXJlIHNlcGFyYXRlZCBieSB8IGNoYXJhY3RlcicsXG4gICAgICBmb3JtYXR0ZXI6ICh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZS5qb2luKCd8Jyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYCR7dmFsdWV9YDtcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogVmFyaWFibGVGb3JtYXRJRC5EaXN0cmlidXRlZCxcbiAgICAgIG5hbWU6ICdEaXN0cmlidXRlZCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ011bHRpcGxlIHZhbHVlcyBhcmUgZm9ybWF0dGVkIGxpa2UgdmFyaWFibGU9dmFsdWUnLFxuICAgICAgZm9ybWF0dGVyOiAodmFsdWUsIGFyZ3MsIHZhcmlhYmxlKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgdmFsdWUgPSBtYXAodmFsdWUsICh2YWw6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgaWYgKGluZGV4ICE9PSAwKSB7XG4gICAgICAgICAgICAgIHJldHVybiB2YXJpYWJsZS5zdGF0ZS5uYW1lICsgJz0nICsgdmFsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiB2YWx1ZS5qb2luKCcsJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYCR7dmFsdWV9YDtcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogVmFyaWFibGVGb3JtYXRJRC5DU1YsXG4gICAgICBuYW1lOiAnQ3N2JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQ29tbWEtc2VwYXJhdGVkIHZhbHVlcycsXG4gICAgICBmb3JtYXR0ZXI6ICh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZS5qb2luKCcsJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogVmFyaWFibGVGb3JtYXRJRC5IVE1MLFxuICAgICAgbmFtZTogJ0hUTUwnLFxuICAgICAgZGVzY3JpcHRpb246ICdIVE1MIGVzY2FwaW5nIG9mIHZhbHVlcycsXG4gICAgICBmb3JtYXR0ZXI6ICh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJldHVybiB0ZXh0VXRpbC5lc2NhcGVIdG1sKHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiB0ZXh0VXRpbC5lc2NhcGVIdG1sKHZhbHVlLmpvaW4oJywgJykpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRleHRVdGlsLmVzY2FwZUh0bWwoU3RyaW5nKHZhbHVlKSk7XG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFZhcmlhYmxlRm9ybWF0SUQuSlNPTixcbiAgICAgIG5hbWU6ICdKU09OJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnSlNPTiBzdHJpbmdpZnkgdmFsdWUnLFxuICAgICAgZm9ybWF0dGVyOiAodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogVmFyaWFibGVGb3JtYXRJRC5QZXJjZW50RW5jb2RlLFxuICAgICAgbmFtZTogJ1BlcmNlbnQgZW5jb2RlJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVXNlZnVsIGZvciBVUkwgZXNjYXBpbmcgdmFsdWVzJyxcbiAgICAgIGZvcm1hdHRlcjogKHZhbHVlKSA9PiB7XG4gICAgICAgIC8vIGxpa2UgZ2xvYiwgYnV0IHVybCBlc2NhcGVkXG4gICAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnRTdHJpY3QoJ3snICsgdmFsdWUuam9pbignLCcpICsgJ30nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnRTdHJpY3QodmFsdWUpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBWYXJpYWJsZUZvcm1hdElELlNpbmdsZVF1b3RlLFxuICAgICAgbmFtZTogJ1NpbmdsZSBxdW90ZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1NpbmdsZSBxdW90ZWQgdmFsdWVzJyxcbiAgICAgIGZvcm1hdHRlcjogKHZhbHVlKSA9PiB7XG4gICAgICAgIC8vIGVzY2FwZSBzaW5nbGUgcXVvdGVzIHdpdGggYmFja3NsYXNoXG4gICAgICAgIGNvbnN0IHJlZ0V4cCA9IG5ldyBSZWdFeHAoYCdgLCAnZycpO1xuXG4gICAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBtYXAodmFsdWUsICh2OiBzdHJpbmcpID0+IGAnJHtyZXBsYWNlKHYsIHJlZ0V4cCwgYFxcXFwnYCl9J2ApLmpvaW4oJywnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzdHJWYWwgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUgOiBTdHJpbmcodmFsdWUpO1xuICAgICAgICByZXR1cm4gYCcke3JlcGxhY2Uoc3RyVmFsLCByZWdFeHAsIGBcXFxcJ2ApfSdgO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBWYXJpYWJsZUZvcm1hdElELkRvdWJsZVF1b3RlLFxuICAgICAgbmFtZTogJ0RvdWJsZSBxdW90ZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ0RvdWJsZSBxdW90ZWQgdmFsdWVzJyxcbiAgICAgIGZvcm1hdHRlcjogKHZhbHVlKSA9PiB7XG4gICAgICAgIC8vIGVzY2FwZSBkb3VibGUgcXVvdGVzIHdpdGggYmFja3NsYXNoXG4gICAgICAgIGNvbnN0IHJlZ0V4cCA9IG5ldyBSZWdFeHAoJ1wiJywgJ2cnKTtcbiAgICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIG1hcCh2YWx1ZSwgKHY6IHN0cmluZykgPT4gYFwiJHtyZXBsYWNlKHYsIHJlZ0V4cCwgJ1xcXFxcIicpfVwiYCkuam9pbignLCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHN0clZhbCA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgIHJldHVybiBgXCIke3JlcGxhY2Uoc3RyVmFsLCByZWdFeHAsICdcXFxcXCInKX1cImA7XG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFZhcmlhYmxlRm9ybWF0SUQuU1FMU3RyaW5nLFxuICAgICAgbmFtZTogJ1NRTCBzdHJpbmcnLFxuICAgICAgZGVzY3JpcHRpb246ICdTUUwgc3RyaW5nIHF1b3RpbmcgYW5kIGNvbW1hcyBmb3IgdXNlIGluIElOIHN0YXRlbWVudHMgYW5kIG90aGVyIHNjZW5hcmlvcycsXG4gICAgICBmb3JtYXR0ZXI6IHNxbFN0cmluZ0Zvcm1hdHRlcixcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBWYXJpYWJsZUZvcm1hdElELkRhdGUsXG4gICAgICBuYW1lOiAnRGF0ZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ0Zvcm1hdCBkYXRlIGluIGRpZmZlcmVudCB3YXlzJyxcbiAgICAgIGZvcm1hdHRlcjogKHZhbHVlLCBhcmdzKSA9PiB7XG4gICAgICAgIGxldCBuclZhbHVlID0gTmFOO1xuXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgbnJWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBuclZhbHVlID0gcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc05hTihuclZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiAnTmFOJztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFyZyA9IGFyZ3NbMF0gPz8gJ2lzbyc7XG4gICAgICAgIHN3aXRjaCAoYXJnKSB7XG4gICAgICAgICAgY2FzZSAnbXMnOlxuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgY2FzZSAnc2Vjb25kcyc6XG4gICAgICAgICAgICByZXR1cm4gYCR7TWF0aC5yb3VuZChuclZhbHVlISAvIDEwMDApfWA7XG4gICAgICAgICAgY2FzZSAnaXNvJzpcbiAgICAgICAgICAgIHJldHVybiBkYXRlVGltZShuclZhbHVlKS50b0lTT1N0cmluZygpO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBpZiAoKGFyZ3MgfHwgW10pLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGRhdGVUaW1lKG5yVmFsdWUpLmZvcm1hdChhcmdzLmpvaW4oJzonKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGF0ZVRpbWUobnJWYWx1ZSkuZm9ybWF0KGFyZyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogVmFyaWFibGVGb3JtYXRJRC5HbG9iLFxuICAgICAgbmFtZTogJ0dsb2InLFxuICAgICAgZGVzY3JpcHRpb246ICdGb3JtYXQgbXVsdGktdmFsdWVkIHZhcmlhYmxlcyB1c2luZyBnbG9iIHN5bnRheCwgZXhhbXBsZSB7dmFsdWUxLHZhbHVlMn0nLFxuICAgICAgZm9ybWF0dGVyOiAodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKGlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICByZXR1cm4gJ3snICsgdmFsdWUuam9pbignLCcpICsgJ30nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBWYXJpYWJsZUZvcm1hdElELlRleHQsXG4gICAgICBuYW1lOiAnVGV4dCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ0Zvcm1hdCB2YXJpYWJsZXMgaW4gdGhlaXIgdGV4dCByZXByZXNlbnRhdGlvbi4gRXhhbXBsZSBpbiBtdWx0aS12YXJpYWJsZSBzY2VuYXJpbyBBICsgQiArIEMuJyxcbiAgICAgIGZvcm1hdHRlcjogKHZhbHVlLCBfYXJncywgdmFyaWFibGUpID0+IHtcbiAgICAgICAgaWYgKHZhcmlhYmxlLmdldFZhbHVlVGV4dCkge1xuICAgICAgICAgIHJldHVybiB2YXJpYWJsZS5nZXRWYWx1ZVRleHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBWYXJpYWJsZUZvcm1hdElELlF1ZXJ5UGFyYW0sXG4gICAgICBuYW1lOiAnUXVlcnkgcGFyYW1ldGVyJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnRm9ybWF0IHZhcmlhYmxlcyBhcyBVUkwgcGFyYW1ldGVycy4gRXhhbXBsZSBpbiBtdWx0aS12YXJpYWJsZSBzY2VuYXJpbyBBICsgQiArIEMgPT4gdmFyLWZvbz1BJnZhci1mb289QiZ2YXItZm9vPUMuJyxcbiAgICAgIGZvcm1hdHRlcjogKHZhbHVlLCBfYXJncywgdmFyaWFibGUpID0+IHtcbiAgICAgICAgaWYgKHZhcmlhYmxlLnVybFN5bmMpIHtcbiAgICAgICAgICBjb25zdCB1cmxQYXJhbSA9IHZhcmlhYmxlLnVybFN5bmMuZ2V0VXJsU3RhdGUoKTtcbiAgICAgICAgICByZXR1cm4gdXJsVXRpbC50b1VybFBhcmFtcyh1cmxQYXJhbSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWUubWFwKCh2KSA9PiBmb3JtYXRRdWVyeVBhcmFtZXRlcih2YXJpYWJsZS5zdGF0ZS5uYW1lLCB2KSkuam9pbignJicpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdFF1ZXJ5UGFyYW1ldGVyKHZhcmlhYmxlLnN0YXRlLm5hbWUsIHZhbHVlKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogVmFyaWFibGVGb3JtYXRJRC5VcmlFbmNvZGUsXG4gICAgICBuYW1lOiAnUGVyY2VudCBlbmNvZGUgYXMgVVJJJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVXNlZnVsIGZvciBVUkwgZXNjYXBpbmcgdmFsdWVzLCB0YWtpbmcgaW50byBVUkkgc3ludGF4IGNoYXJhY3RlcnMnLFxuICAgICAgZm9ybWF0dGVyOiAodmFsdWU6IFZhcmlhYmxlVmFsdWUpID0+IHtcbiAgICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGVuY29kZVVSSVN0cmljdCgneycgKyB2YWx1ZS5qb2luKCcsJykgKyAnfScpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVuY29kZVVSSVN0cmljdCh2YWx1ZSk7XG4gICAgICB9LFxuICAgIH0sXG4gIF07XG5cbiAgcmV0dXJuIGZvcm1hdHM7XG59KTtcblxuZnVuY3Rpb24gbHVjZW5lRXNjYXBlKHZhbHVlOiBzdHJpbmcpIHtcbiAgaWYgKGlzTmFOKCt2YWx1ZSkgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoLyhbXFwhXFwqXFwrXFwtXFw9PD5cXHNcXCZcXHxcXChcXClcXFtcXF1cXHtcXH1cXF5cXH5cXD9cXDpcXFxcL1wiXSkvZywgJ1xcXFwkMScpO1xufVxuXG4vKipcbiAqIGVuY29kZSBzdHJpbmcgYWNjb3JkaW5nIHRvIFJGQyAzOTg2OyBpbiBjb250cmFzdCB0byBlbmNvZGVVUklDb21wb25lbnQoKVxuICogYWxzbyB0aGUgc3ViLWRlbGltcyBcIiFcIiwgXCInXCIsIFwiKFwiLCBcIilcIiBhbmQgXCIqXCIgYXJlIGVuY29kZWQ7XG4gKiB1bmljb2RlIGhhbmRsaW5nIHVzZXMgVVRGLTggYXMgaW4gRUNNQS0yNjIuXG4gKi9cbmZ1bmN0aW9uIGVuY29kZVVSSUNvbXBvbmVudFN0cmljdChzdHI6IFZhcmlhYmxlVmFsdWVTaW5nbGUpIHtcbiAgaWYgKHR5cGVvZiBzdHIgPT09ICdvYmplY3QnKSB7XG4gICAgc3RyID0gU3RyaW5nKHN0cik7XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZVNwZWNpYWxDaGFyYWN0ZXJzVG9BU0NJSShlbmNvZGVVUklDb21wb25lbnQoc3RyKSk7XG59XG5cbmNvbnN0IGVuY29kZVVSSVN0cmljdCA9IChzdHI6IFZhcmlhYmxlVmFsdWVTaW5nbGUpOiBzdHJpbmcgPT4gcmVwbGFjZVNwZWNpYWxDaGFyYWN0ZXJzVG9BU0NJSShlbmNvZGVVUkkoU3RyaW5nKHN0cikpKTtcblxuY29uc3QgcmVwbGFjZVNwZWNpYWxDaGFyYWN0ZXJzVG9BU0NJSSA9ICh2YWx1ZTogc3RyaW5nKTogc3RyaW5nID0+XG4gIHZhbHVlLnJlcGxhY2UoL1shJygpKl0vZywgKGMpID0+IHtcbiAgICByZXR1cm4gJyUnICsgYy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO1xuICB9KTtcblxuZnVuY3Rpb24gZm9ybWF0UXVlcnlQYXJhbWV0ZXIobmFtZTogc3RyaW5nLCB2YWx1ZTogVmFyaWFibGVWYWx1ZVNpbmdsZSk6IHN0cmluZyB7XG4gIHJldHVybiBgdmFyLSR7bmFtZX09JHtlbmNvZGVVUklDb21wb25lbnRTdHJpY3QodmFsdWUpfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0FsbFZhbHVlKHZhbHVlOiBWYXJpYWJsZVZhbHVlU2luZ2xlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gQUxMX1ZBUklBQkxFX1ZBTFVFIHx8IChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZVswXSA9PT0gQUxMX1ZBUklBQkxFX1ZBTFVFKTtcbn1cblxuY29uc3QgU1FMX0VTQ0FQRV9NQVA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIFwiJ1wiOiBcIicnXCIsXG4gICdcIic6ICdcXFxcXCInLFxufTtcblxuZnVuY3Rpb24gc3FsU3RyaW5nRm9ybWF0dGVyKHZhbHVlOiBWYXJpYWJsZVZhbHVlKSB7XG4gIC8vIGVzY2FwZSBzaW5nbGUgcXVvdGVzIGJ5IHBhaXJpbmcgdGhlbVxuICBjb25zdCByZWdFeHAgPSBuZXcgUmVnRXhwKGAnfFwiYCwgJ2cnKTtcblxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gbWFwKHZhbHVlLCAodjogc3RyaW5nKSA9PiBgJyR7cmVwbGFjZSh2LCByZWdFeHAsIChtYXRjaCkgPT4gU1FMX0VTQ0FQRV9NQVBbbWF0Y2hdID8/ICcnKX0nYCkuam9pbignLCcpO1xuICB9XG5cbiAgbGV0IHN0clZhbCA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6IFN0cmluZyh2YWx1ZSk7XG4gIHJldHVybiBgJyR7cmVwbGFjZShzdHJWYWwsIHJlZ0V4cCwgKG1hdGNoKSA9PiBTUUxfRVNDQVBFX01BUFttYXRjaF0gPz8gJycpfSdgO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUErQmEsTUFBQSxjQUFBLEdBQWlCLElBQUksUUFBQSxDQUE2QixNQUFNO0FBQ25FLEVBQUEsTUFBTSxPQUFnQyxHQUFBO0FBQUEsSUFDcEM7QUFBQSxNQUNFLElBQUksZ0JBQWlCLENBQUEsTUFBQTtBQUFBLE1BQ3JCLElBQU0sRUFBQSxRQUFBO0FBQUEsTUFDTixXQUFhLEVBQUEsZ0ZBQUE7QUFBQSxNQUNiLFNBQUEsRUFBVyxDQUFDLEtBQVUsS0FBQTtBQUNwQixRQUFJLElBQUEsT0FBTyxVQUFVLFFBQVUsRUFBQTtBQUM3QixVQUFBLE9BQU8sYUFBYSxLQUFLLENBQUEsQ0FBQTtBQUFBLFNBQzNCO0FBRUEsUUFBSSxJQUFBLEtBQUEsQ0FBTSxPQUFRLENBQUEsS0FBSyxDQUFHLEVBQUE7QUFDeEIsVUFBSSxJQUFBLEtBQUEsQ0FBTSxXQUFXLENBQUcsRUFBQTtBQUN0QixZQUFPLE9BQUEsV0FBQSxDQUFBO0FBQUEsV0FDVDtBQUNB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
@@ -0,0 +1,87 @@
1
+ import { VariableFormatID } from '@grafana/schema';
2
+ import { isCustomVariableValue } from '../types.js';
3
+ import { getSceneVariableForScopedVar } from './ScopedVarsVariable.js';
4
+ import { formatRegistry } from './formatRegistry.js';
5
+ import { VARIABLE_REGEX } from '../constants.js';
6
+ import { lookupVariable } from '../lookupVariable.js';
7
+ import { macrosIndex } from '../macros/index.js';
8
+
9
+ function sceneInterpolator(sceneObject, target, scopedVars, format, interpolations) {
10
+ if (!target || typeof target !== "string") {
11
+ return target != null ? target : "";
12
+ }
13
+ VARIABLE_REGEX.lastIndex = 0;
14
+ return target.replace(VARIABLE_REGEX, (match, var1, var2, fmt2, var3, fieldPath, fmt3) => {
15
+ const variableName = var1 || var2 || var3;
16
+ const fmt = fmt2 || fmt3 || format;
17
+ const variable = lookupFormatVariable(variableName, match, scopedVars, sceneObject);
18
+ if (!variable) {
19
+ if (interpolations) {
20
+ interpolations.push({ match, variableName, fieldPath, format: fmt, value: match, found: false });
21
+ }
22
+ return match;
23
+ }
24
+ const value = formatValue(sceneObject, variable, variable.getValue(fieldPath), fmt);
25
+ if (interpolations) {
26
+ interpolations.push({ match, variableName, fieldPath, format: fmt, value, found: value !== match });
27
+ }
28
+ return value;
29
+ });
30
+ }
31
+ function lookupFormatVariable(name, match, scopedVars, sceneObject) {
32
+ if (scopedVars && scopedVars.hasOwnProperty(name)) {
33
+ const scopedVar = scopedVars[name];
34
+ if (scopedVar) {
35
+ return getSceneVariableForScopedVar(name, scopedVar);
36
+ }
37
+ }
38
+ const variable = lookupVariable(name, sceneObject);
39
+ if (variable) {
40
+ return variable;
41
+ }
42
+ const Macro = macrosIndex.get(name);
43
+ if (Macro) {
44
+ return new Macro(name, sceneObject, match, scopedVars);
45
+ }
46
+ return null;
47
+ }
48
+ function formatValue(context, variable, value, formatNameOrFn) {
49
+ if (value === null || value === void 0) {
50
+ return "";
51
+ }
52
+ if (isCustomVariableValue(value)) {
53
+ return sceneInterpolator(context, value.formatter(formatNameOrFn));
54
+ }
55
+ if (!Array.isArray(value) && typeof value === "object") {
56
+ value = `${value}`;
57
+ }
58
+ if (typeof formatNameOrFn === "function") {
59
+ return formatNameOrFn(value, {
60
+ name: variable.state.name,
61
+ type: variable.state.type,
62
+ multi: variable.state.isMulti,
63
+ includeAll: variable.state.includeAll
64
+ });
65
+ }
66
+ let args = [];
67
+ if (!formatNameOrFn) {
68
+ formatNameOrFn = VariableFormatID.Glob;
69
+ } else {
70
+ args = formatNameOrFn.split(":");
71
+ if (args.length > 1) {
72
+ formatNameOrFn = args[0];
73
+ args = args.slice(1);
74
+ } else {
75
+ args = [];
76
+ }
77
+ }
78
+ let formatter = formatRegistry.getIfExists(formatNameOrFn);
79
+ if (!formatter) {
80
+ console.error(`Variable format ${formatNameOrFn} not found. Using glob format as fallback.`);
81
+ formatter = formatRegistry.get(VariableFormatID.Glob);
82
+ }
83
+ return formatter.formatter(value, args, variable);
84
+ }
85
+
86
+ export { sceneInterpolator };
87
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmVJbnRlcnBvbGF0b3IuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy92YXJpYWJsZXMvaW50ZXJwb2xhdGlvbi9zY2VuZUludGVycG9sYXRvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY29wZWRWYXJzIH0gZnJvbSAnQGdyYWZhbmEvZGF0YSc7XG5pbXBvcnQgeyBWYXJpYWJsZUludGVycG9sYXRpb24gfSBmcm9tICdAZ3JhZmFuYS9ydW50aW1lJztcbmltcG9ydCB7IFZhcmlhYmxlVHlwZSwgVmFyaWFibGVGb3JtYXRJRCB9IGZyb20gJ0BncmFmYW5hL3NjaGVtYSc7XG5cbmltcG9ydCB7IFNjZW5lT2JqZWN0IH0gZnJvbSAnLi4vLi4vY29yZS90eXBlcyc7XG5pbXBvcnQgeyBJbnRlcnBvbGF0aW9uRm9ybWF0UGFyYW1ldGVyLCBpc0N1c3RvbVZhcmlhYmxlVmFsdWUsIFZhcmlhYmxlVmFsdWUgfSBmcm9tICcuLi90eXBlcyc7XG5cbmltcG9ydCB7IGdldFNjZW5lVmFyaWFibGVGb3JTY29wZWRWYXIgfSBmcm9tICcuL1Njb3BlZFZhcnNWYXJpYWJsZSc7XG5pbXBvcnQgeyBmb3JtYXRSZWdpc3RyeSwgRm9ybWF0VmFyaWFibGUgfSBmcm9tICcuL2Zvcm1hdFJlZ2lzdHJ5JztcbmltcG9ydCB7IFZBUklBQkxFX1JFR0VYIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGxvb2t1cFZhcmlhYmxlIH0gZnJvbSAnLi4vbG9va3VwVmFyaWFibGUnO1xuaW1wb3J0IHsgbWFjcm9zSW5kZXggfSBmcm9tICcuLi9tYWNyb3MnO1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gd2lsbCB0cnkgdG8gcGFyc2UgYW5kIHJlcGxhY2UgYW55IHZhcmlhYmxlIGV4cHJlc3Npb24gZm91bmQgaW4gdGhlIHRhcmdldCBzdHJpbmcuIFRoZSBzY2VuZU9iamVjdCB3aWxsIGJlIHVzZWQgYXMgdGhlIHNvdXJjZSBvZiB2YXJpYWJsZXMuIEl0IHdpbGxcbiAqIHVzZSB0aGUgc2NlbmUgZ3JhcGggYW5kIHdhbGsgdXAgdGhlIHBhcmVudCB0cmVlIHVudGlsIGl0IGZpbmRzIHRoZSBjbG9zZXN0IHZhcmlhYmxlLlxuICpcbiAqIFNjb3BlZFZhcnMgc2hvdWxkIG5vdCByZWFsbHkgYmUgbmVlZGVkIG11Y2ggaW4gdGhlIG5ldyBzY2VuZSBhcmNoaXRlY3R1cmUgYXMgdGhleSBjYW4gYmUgYWRkZWQgdG8gdGhlIGxvY2FsIHNjZW5lIG5vZGUgaW5zdGVhZCBvZiBwYXNzZWQgaW4gaW50ZXJwb2xhdGUgZnVuY3Rpb24uXG4gKiBJdCBpcyBzdXBwb3J0ZWQgaGVyZSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBhbmQgc29tZSBlZGdlIGNhc2VzIHdoZXJlIGFkZGluZyBzY29wZWQgdmFycyB0byBsb2NhbCBzY2VuZSBub2RlIGlzIG5vdCBwcmFjdGljYWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzY2VuZUludGVycG9sYXRvcihcbiAgc2NlbmVPYmplY3Q6IFNjZW5lT2JqZWN0LFxuICB0YXJnZXQ6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwsXG4gIHNjb3BlZFZhcnM/OiBTY29wZWRWYXJzLFxuICBmb3JtYXQ/OiBJbnRlcnBvbGF0aW9uRm9ybWF0UGFyYW1ldGVyLFxuICBpbnRlcnBvbGF0aW9ucz86IFZhcmlhYmxlSW50ZXJwb2xhdGlvbltdXG4pOiBzdHJpbmcge1xuICBpZiAoIXRhcmdldCB8fCB0eXBlb2YgdGFyZ2V0ICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB0YXJnZXQgPz8gJyc7XG4gIH1cblxuICBWQVJJQUJMRV9SRUdFWC5sYXN0SW5kZXggPSAwO1xuXG4gIHJldHVybiB0YXJnZXQucmVwbGFjZShWQVJJQUJMRV9SRUdFWCwgKG1hdGNoLCB2YXIxLCB2YXIyLCBmbXQyLCB2YXIzLCBmaWVsZFBhdGgsIGZtdDMpID0+IHtcbiAgICBjb25zdCB2YXJpYWJsZU5hbWUgPSB2YXIxIHx8IHZhcjIgfHwgdmFyMztcbiAgICBjb25zdCBmbXQgPSBmbXQyIHx8IGZtdDMgfHwgZm9ybWF0O1xuICAgIGNvbnN0IHZhcmlhYmxlID0gbG9va3VwRm9ybWF0VmFyaWFibGUodmFyaWFibGVOYW1lLCBtYXRjaCwgc2NvcGVkVmFycywgc2NlbmVPYmplY3QpO1xuXG4gICAgaWYgKCF2YXJpYWJsZSkge1xuICAgICAgaWYgKGludGVycG9sYXRpb25zKSB7XG4gICAgICAgIC8vIFNldCBgdmFsdWVgIGVxdWFsIHRvIGBtYXRjaGAgYXMgZG9jdW1lbnRlZCBpbiB0aGUgYFZhcmlhYmxlSW50ZXJwb2xhdGlvbmAgaW50ZXJmYWNlLlxuICAgICAgICBpbnRlcnBvbGF0aW9ucy5wdXNoKHsgbWF0Y2gsIHZhcmlhYmxlTmFtZSwgZmllbGRQYXRoLCBmb3JtYXQ6IGZtdCwgdmFsdWU6IG1hdGNoLCBmb3VuZDogZmFsc2UgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbWF0Y2g7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBmb3JtYXRWYWx1ZShzY2VuZU9iamVjdCwgdmFyaWFibGUsIHZhcmlhYmxlLmdldFZhbHVlKGZpZWxkUGF0aCksIGZtdCk7XG5cbiAgICBpZiAoaW50ZXJwb2xhdGlvbnMpIHtcbiAgICAgIGludGVycG9sYXRpb25zLnB1c2goeyBtYXRjaCwgdmFyaWFibGVOYW1lLCBmaWVsZFBhdGgsIGZvcm1hdDogZm10LCB2YWx1ZSwgZm91bmQ6IHZhbHVlICE9PSBtYXRjaCB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBsb29rdXBGb3JtYXRWYXJpYWJsZShcbiAgbmFtZTogc3RyaW5nLFxuICBtYXRjaDogc3RyaW5nLFxuICBzY29wZWRWYXJzOiBTY29wZWRWYXJzIHwgdW5kZWZpbmVkLFxuICBzY2VuZU9iamVjdDogU2NlbmVPYmplY3Rcbik6IEZvcm1hdFZhcmlhYmxlIHwgbnVsbCB7XG4gIGlmIChzY29wZWRWYXJzICYmIHNjb3BlZFZhcnMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICBjb25zdCBzY29wZWRWYXIgPSBzY29wZWRWYXJzW25hbWVdO1xuXG4gICAgaWYgKHNjb3BlZFZhcikge1xuICAgICAgcmV0dXJuIGdldFNjZW5lVmFyaWFibGVGb3JTY29wZWRWYXIobmFtZSwgc2NvcGVkVmFyKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCB2YXJpYWJsZSA9IGxvb2t1cFZhcmlhYmxlKG5hbWUsIHNjZW5lT2JqZWN0KTtcbiAgaWYgKHZhcmlhYmxlKSB7XG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9XG5cbiAgY29uc3QgTWFjcm8gPSBtYWNyb3NJbmRleC5nZXQobmFtZSk7XG4gIGlmIChNYWNybykge1xuICAgIHJldHVybiBuZXcgTWFjcm8obmFtZSwgc2NlbmVPYmplY3QsIG1hdGNoLCBzY29wZWRWYXJzKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRWYWx1ZShcbiAgY29udGV4dDogU2NlbmVPYmplY3QsXG4gIHZhcmlhYmxlOiBGb3JtYXRWYXJpYWJsZSxcbiAgdmFsdWU6IFZhcmlhYmxlVmFsdWUgfCB1bmRlZmluZWQgfCBudWxsLFxuICBmb3JtYXROYW1lT3JGbj86IEludGVycG9sYXRpb25Gb3JtYXRQYXJhbWV0ZXJcbik6IHN0cmluZyB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgLy8gVmFyaWFibGUgY2FuIHJldHVybiBhIGN1c3RvbSB2YWx1ZSB0aGF0IGhhbmRsZXMgZm9ybWF0dGluZ1xuICAvLyBUaGlzIGlzIHVzZWZ1bCBmb3IgY3VzdG9tQWxsVmFsdWUgYW5kIG1hY3JvcyB0aGF0IHJldHVybiB2YWx1ZXMgdGhhdCBhcmUgYWxyZWFkeSBmb3JtYXR0ZWQgb3IgbmVlZCBzcGVjaWFsIGZvcm1hdHRpbmdcbiAgaWYgKGlzQ3VzdG9tVmFyaWFibGVWYWx1ZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gc2NlbmVJbnRlcnBvbGF0b3IoY29udGV4dCwgdmFsdWUuZm9ybWF0dGVyKGZvcm1hdE5hbWVPckZuKSk7XG4gIH1cblxuICAvLyBpZiBpdCdzIGFuIG9iamVjdCB0cmFuc2Zvcm0gdmFsdWUgdG8gc3RyaW5nXG4gIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgIHZhbHVlID0gYCR7dmFsdWV9YDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZm9ybWF0TmFtZU9yRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZm9ybWF0TmFtZU9yRm4odmFsdWUsIHtcbiAgICAgIG5hbWU6IHZhcmlhYmxlLnN0YXRlLm5hbWUsXG4gICAgICB0eXBlOiB2YXJpYWJsZS5zdGF0ZS50eXBlIGFzIFZhcmlhYmxlVHlwZSxcbiAgICAgIG11bHRpOiB2YXJpYWJsZS5zdGF0ZS5pc011bHRpLFxuICAgICAgaW5jbHVkZUFsbDogdmFyaWFibGUuc3RhdGUuaW5jbHVkZUFsbCxcbiAgICB9KTtcbiAgfVxuXG4gIGxldCBhcmdzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGlmICghZm9ybWF0TmFtZU9yRm4pIHtcbiAgICBmb3JtYXROYW1lT3JGbiA9IFZhcmlhYmxlRm9ybWF0SUQuR2xvYjtcbiAgfSBlbHNlIHtcbiAgICAvLyBzb21lIGZvcm1hdHMgaGF2ZSBhcmd1bWVudHMgdGhhdCBjb21lIGFmdGVyICc6JyBjaGFyYWN0ZXJcbiAgICBhcmdzID0gZm9ybWF0TmFtZU9yRm4uc3BsaXQoJzonKTtcbiAgICBpZiAoYXJncy5sZW5ndGggPiAxKSB7XG4gICAgICBmb3JtYXROYW1lT3JGbiA9IGFyZ3NbMF07XG4gICAgICBhcmdzID0gYXJncy5zbGljZSgxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXJncyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIGxldCBmb3JtYXR0ZXIgPSBmb3JtYXRSZWdpc3RyeS5nZXRJZkV4aXN0cyhmb3JtYXROYW1lT3JGbik7XG5cbiAgaWYgKCFmb3JtYXR0ZXIpIHtcbiAgICBjb25zb2xlLmVycm9yKGBWYXJpYWJsZSBmb3JtYXQgJHtmb3JtYXROYW1lT3JGbn0gbm90IGZvdW5kLiBVc2luZyBnbG9iIGZvcm1hdCBhcyBmYWxsYmFjay5gKTtcbiAgICBmb3JtYXR0ZXIgPSBmb3JtYXRSZWdpc3RyeS5nZXQoVmFyaWFibGVGb3JtYXRJRC5HbG9iKTtcbiAgfVxuXG4gIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0dGVyKHZhbHVlLCBhcmdzLCB2YXJpYWJsZSk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFvQk8sU0FBUyxpQkFDZCxDQUFBLFdBQUEsRUFDQSxNQUNBLEVBQUEsVUFBQSxFQUNBLFFBQ0EsY0FDUSxFQUFBO0FBQ1IsRUFBQSxJQUFJLENBQUMsTUFBQSxJQUFVLE9BQU8sTUFBQSxLQUFXLFFBQVUsRUFBQTtBQUN6QyxJQUFBLE9BQU8sTUFBVSxJQUFBLElBQUEsR0FBQSxNQUFBLEdBQUEsRUFBQSxDQUFBO0FBQUEsR0FDbkI7QUFFQSxFQUFBLGNBQUEsQ0FBZSxTQUFZLEdBQUEsQ0FBQSxDQUFBO0FBRTNCLEVBQU8sT0FBQSxNQUFBLENBQU8sT0FBUSxDQUFBLGNBQUEsRUFBZ0IsQ0FBQyxLQUFBLEVBQU8sTUFBTSxJQUFNLEVBQUEsSUFBQSxFQUFNLElBQU0sRUFBQSxTQUFBLEVBQVcsSUFBUyxLQUFBO0FBQ3hGLElBQU0sTUFBQSxZQUFBLEdBQWUsUUFBUSxJQUFRLElBQUEsSUFBQSxDQUFBO0FBQ3JDLElBQU0sTUFBQSxHQUFBLEdBQU0sUUFBUSxJQUFRLElBQUEsTUFBQSxDQUFBO0FBQzVCLElBQUEsTUFBTSxRQUFXLEdBQUEsb0JBQUEsQ0FBcUIsWUFBYyxFQUFBLEtBQUEsRUFBTyxZQUFZLFdBQVcsQ0FBQSxDQUFBO0FBRWxGLElBQUEsSUFBSSxDQUFDLFFBQVUsRUFBQTtBQUNiLE1BQUEsSUFBSSxjQUFnQixFQUFBO0FBRWxCLFFBQWUsY0FBQSxDQUFBLElBQUEsQ0FBSyxFQUFFLEtBQUEsRUFBTyxZ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
@@ -0,0 +1,20 @@
1
+ function lookupVariable(name, sceneObject) {
2
+ const variables = sceneObject.state.$variables;
3
+ if (!variables) {
4
+ if (sceneObject.parent) {
5
+ return lookupVariable(name, sceneObject.parent);
6
+ } else {
7
+ return null;
8
+ }
9
+ }
10
+ const found = variables.getByName(name);
11
+ if (found) {
12
+ return found;
13
+ } else if (sceneObject.parent) {
14
+ return lookupVariable(name, sceneObject.parent);
15
+ }
16
+ return null;
17
+ }
18
+
19
+ export { lookupVariable };
20
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwVmFyaWFibGUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy92YXJpYWJsZXMvbG9va3VwVmFyaWFibGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2NlbmVPYmplY3QgfSBmcm9tICcuLi9jb3JlL3R5cGVzJztcbmltcG9ydCB7IFNjZW5lVmFyaWFibGUgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBXaWxsIHdhbGsgdGhlIHNjZW5lIG9iamVjdCBncmFwaCB1cCB0byB0aGUgcm9vdCBsb29raW5nIGZvciB0aGUgZmlyc3QgdmFyaWFibGUgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvb2t1cFZhcmlhYmxlKG5hbWU6IHN0cmluZywgc2NlbmVPYmplY3Q6IFNjZW5lT2JqZWN0KTogU2NlbmVWYXJpYWJsZSB8IG51bGwge1xuICBjb25zdCB2YXJpYWJsZXMgPSBzY2VuZU9iamVjdC5zdGF0ZS4kdmFyaWFibGVzO1xuICBpZiAoIXZhcmlhYmxlcykge1xuICAgIGlmIChzY2VuZU9iamVjdC5wYXJlbnQpIHtcbiAgICAgIHJldHVybiBsb29rdXBWYXJpYWJsZShuYW1lLCBzY2VuZU9iamVjdC5wYXJlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBjb25zdCBmb3VuZCA9IHZhcmlhYmxlcy5nZXRCeU5hbWUobmFtZSk7XG4gIGlmIChmb3VuZCkge1xuICAgIHJldHVybiBmb3VuZDtcbiAgfSBlbHNlIGlmIChzY2VuZU9iamVjdC5wYXJlbnQpIHtcbiAgICByZXR1cm4gbG9va3VwVmFyaWFibGUobmFtZSwgc2NlbmVPYmplY3QucGFyZW50KTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1nQixTQUFBLGNBQUEsQ0FBZSxNQUFjLFdBQWdELEVBQUE7QUFDM0YsRUFBTSxNQUFBLFNBQUEsR0FBWSxZQUFZLEtBQU0sQ0FBQSxVQUFBLENBQUE7QUFDcEMsRUFBQSxJQUFJLENBQUMsU0FBVyxFQUFBO0FBQ2QsSUFBQSxJQUFJLFlBQVksTUFBUSxFQUFBO0FBQ3RCLE1BQU8sT0FBQSxjQUFBLENBQWUsSUFBTSxFQUFBLFdBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQTtBQUFBLEtBQ3pDLE1BQUE7QUFDTCxNQUFPLE9BQUEsSUFBQSxDQUFBO0FBQUEsS0FDVDtBQUFBLEdBQ0Y7QUFFQSxFQUFNLE1BQUEsS0FBQSxHQUFRLFNBQVUsQ0FBQSxTQUFBLENBQVUsSUFBSSxDQUFBLENBQUE7QUFDdEMsRUFBQSxJQUFJLEtBQU8sRUFBQTtBQUNULElBQU8sT0FBQSxLQUFBLENBQUE7QUFBQSxHQUNULE1BQUEsSUFBVyxZQUFZLE1BQVEsRUFBQTtBQUM3QixJQUFPLE9BQUEsY0FBQSxDQUFlLElBQU0sRUFBQSxXQUFBLENBQVksTUFBTSxDQUFBLENBQUE7QUFBQSxHQUNoRDtBQUVBLEVBQU8sT0FBQSxJQUFBLENBQUE7QUFDVDs7OzsifQ==
@@ -0,0 +1,57 @@
1
+ import { isCustomVariableValue } from '../types.js';
2
+ import { formatRegistry } from '../interpolation/formatRegistry.js';
3
+ import { SkipFormattingValue } from './types.js';
4
+ import { VariableFormatID } from '@grafana/schema';
5
+ import { MultiValueVariable } from '../variants/MultiValueVariable.js';
6
+ import { ALL_VARIABLE_VALUE } from '../constants.js';
7
+
8
+ class AllVariablesMacro {
9
+ constructor(name, sceneObject) {
10
+ this.state = { name, type: "url_variable" };
11
+ this._sceneObject = sceneObject;
12
+ }
13
+ getValue() {
14
+ const allVars = collectAllVariables(this._sceneObject);
15
+ const format = formatRegistry.get(VariableFormatID.QueryParam);
16
+ const params = [];
17
+ for (const name of Object.keys(allVars)) {
18
+ const variable = allVars[name];
19
+ if (variable instanceof MultiValueVariable && variable.hasAllValue() && !variable.state.allValue) {
20
+ params.push(format.formatter(ALL_VARIABLE_VALUE, [], variable));
21
+ continue;
22
+ }
23
+ const value = variable.getValue();
24
+ if (!value) {
25
+ continue;
26
+ }
27
+ if (isCustomVariableValue(value)) {
28
+ params.push(value.formatter(VariableFormatID.QueryParam));
29
+ } else {
30
+ params.push(format.formatter(value, [], variable));
31
+ }
32
+ }
33
+ return new SkipFormattingValue(params.join("&"));
34
+ }
35
+ getValueText() {
36
+ return "";
37
+ }
38
+ }
39
+ function collectAllVariables(sceneObject, record = {}) {
40
+ if (sceneObject.state.$variables) {
41
+ for (const variable of sceneObject.state.$variables.state.variables) {
42
+ if (variable.state.skipUrlSync) {
43
+ continue;
44
+ }
45
+ if (!record[variable.state.name]) {
46
+ record[variable.state.name] = variable;
47
+ }
48
+ }
49
+ }
50
+ if (sceneObject.parent) {
51
+ collectAllVariables(sceneObject.parent, record);
52
+ }
53
+ return record;
54
+ }
55
+
56
+ export { AllVariablesMacro };
57
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWxsVmFyaWFibGVzTWFjcm8uanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy92YXJpYWJsZXMvbWFjcm9zL0FsbFZhcmlhYmxlc01hY3JvLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjZW5lT2JqZWN0IH0gZnJvbSAnLi4vLi4vY29yZS90eXBlcyc7XG5pbXBvcnQgeyBpc0N1c3RvbVZhcmlhYmxlVmFsdWUsIFNjZW5lVmFyaWFibGUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBmb3JtYXRSZWdpc3RyeSwgRm9ybWF0VmFyaWFibGUgfSBmcm9tICcuLi9pbnRlcnBvbGF0aW9uL2Zvcm1hdFJlZ2lzdHJ5JztcbmltcG9ydCB7IFNraXBGb3JtYXR0aW5nVmFsdWUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IFZhcmlhYmxlRm9ybWF0SUQgfSBmcm9tICdAZ3JhZmFuYS9zY2hlbWEnO1xuaW1wb3J0IHsgTXVsdGlWYWx1ZVZhcmlhYmxlIH0gZnJvbSAnLi4vdmFyaWFudHMvTXVsdGlWYWx1ZVZhcmlhYmxlJztcbmltcG9ydCB7IEFMTF9WQVJJQUJMRV9WQUxVRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBBbGxWYXJpYWJsZXNNYWNybyBpbXBsZW1lbnRzIEZvcm1hdFZhcmlhYmxlIHtcbiAgcHVibGljIHN0YXRlOiB7IG5hbWU6IHN0cmluZzsgdHlwZTogc3RyaW5nIH07XG4gIHByaXZhdGUgX3NjZW5lT2JqZWN0OiBTY2VuZU9iamVjdDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBzY2VuZU9iamVjdDogU2NlbmVPYmplY3QpIHtcbiAgICB0aGlzLnN0YXRlID0geyBuYW1lLCB0eXBlOiAndXJsX3ZhcmlhYmxlJyB9O1xuICAgIHRoaXMuX3NjZW5lT2JqZWN0ID0gc2NlbmVPYmplY3Q7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUoKTogU2tpcEZvcm1hdHRpbmdWYWx1ZSB7XG4gICAgY29uc3QgYWxsVmFycyA9IGNvbGxlY3RBbGxWYXJpYWJsZXModGhpcy5fc2NlbmVPYmplY3QpO1xuICAgIGNvbnN0IGZvcm1hdCA9IGZvcm1hdFJlZ2lzdHJ5LmdldChWYXJpYWJsZUZvcm1hdElELlF1ZXJ5UGFyYW0pO1xuICAgIGNvbnN0IHBhcmFtczogc3RyaW5nW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyhhbGxWYXJzKSkge1xuICAgICAgY29uc3QgdmFyaWFibGUgPSBhbGxWYXJzW25hbWVdO1xuXG4gICAgICBpZiAodmFyaWFibGUgaW5zdGFuY2VvZiBNdWx0aVZhbHVlVmFyaWFibGUgJiYgdmFyaWFibGUuaGFzQWxsVmFsdWUoKSAmJiAhdmFyaWFibGUuc3RhdGUuYWxsVmFsdWUpIHtcbiAgICAgICAgcGFyYW1zLnB1c2goZm9ybWF0LmZvcm1hdHRlcihBTExfVkFSSUFCTEVfVkFMVUUsIFtdLCB2YXJpYWJsZSkpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdmFsdWUgPSB2YXJpYWJsZS5nZXRWYWx1ZSgpO1xuXG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNDdXN0b21WYXJpYWJsZVZhbHVlKHZhbHVlKSkge1xuICAgICAgICBwYXJhbXMucHVzaCh2YWx1ZS5mb3JtYXR0ZXIoVmFyaWFibGVGb3JtYXRJRC5RdWVyeVBhcmFtKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJhbXMucHVzaChmb3JtYXQuZm9ybWF0dGVyKHZhbHVlLCBbXSwgdmFyaWFibGUpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFNraXBGb3JtYXR0aW5nVmFsdWUocGFyYW1zLmpvaW4oJyYnKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWVUZXh0PygpOiBzdHJpbmcge1xuICAgIHJldHVybiAnJztcbiAgfVxufVxuXG5mdW5jdGlvbiBjb2xsZWN0QWxsVmFyaWFibGVzKFxuICBzY2VuZU9iamVjdDogU2NlbmVPYmplY3QsXG4gIHJlY29yZDogUmVjb3JkPHN0cmluZywgU2NlbmVWYXJpYWJsZT4gPSB7fVxuKTogUmVjb3JkPHN0cmluZywgU2NlbmVWYXJpYWJsZT4ge1xuICBpZiAoc2NlbmVPYmplY3Quc3RhdGUuJHZhcmlhYmxlcykge1xuICAgIGZvciAoY29uc3QgdmFyaWFibGUgb2Ygc2NlbmVPYmplY3Quc3RhdGUuJHZhcmlhYmxlcy5zdGF0ZS52YXJpYWJsZXMpIHtcbiAgICAgIGlmICh2YXJpYWJsZS5zdGF0ZS5za2lwVXJsU3luYykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFyZWNvcmRbdmFyaWFibGUuc3RhdGUubmFtZV0pIHtcbiAgICAgICAgcmVjb3JkW3ZhcmlhYmxlLnN0YXRlLm5hbWVdID0gdmFyaWFibGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHNjZW5lT2JqZWN0LnBhcmVudCkge1xuICAgIGNvbGxlY3RBbGxWYXJpYWJsZXMoc2NlbmVPYmplY3QucGFyZW50LCByZWNvcmQpO1xuICB9XG5cbiAgcmV0dXJuIHJlY29yZDtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBUU8sTUFBTSxpQkFBNEMsQ0FBQTtBQUFBLEVBSWhELFdBQUEsQ0FBWSxNQUFjLFdBQTBCLEVBQUE7QUFDekQsSUFBQSxJQUFBLENBQUssS0FBUSxHQUFBLEVBQUUsSUFBTSxFQUFBLElBQUEsRUFBTSxjQUFlLEVBQUEsQ0FBQTtBQUMxQyxJQUFBLElBQUEsQ0FBSyxZQUFlLEdBQUEsV0FBQSxDQUFBO0FBQUEsR0FDdEI7QUFBQSxFQUVPLFFBQWdDLEdBQUE7QUFDckMsSUFBTSxNQUFBLE9BQUEsR0FBVSxtQkFBb0IsQ0FBQSxJQUFBLENBQUssWUFBWSxDQUFBLENBQUE7QUFDckQsSUFBQSxNQUFNLE1BQVMsR0FBQSxjQUFBLENBQWUsR0FBSSxDQUFBLGdCQUFBLENBQWlCLFVBQVUsQ0FBQSxDQUFBO0FBQzdELElBQUEsTUFBTSxTQUFtQixFQUFDLENBQUE7QUFFMUIsSUFBQSxLQUFBLE1BQVcsSUFBUSxJQUFBLE1BQUEsQ0FBTyxJQUFLLENBQUEsT0FBTyxDQUFHLEVBQUE7QUFDdkMsTUFBQSxNQUFNLFdBQVcsT0FBUSxDQUFBLElBQUEsQ0FBQSxDQUFBO0FBRXpCLE1BQUksSUFBQSxRQUFBLFlBQW9CLHNCQUFzQixRQUFTLENBQUEsV0FBQSxNQUFpQixDQUFDLFFBQUEsQ0FBUyxNQUFNLFFBQVUsRUFBQTtBQUNoRyxRQUFBLE1BQUEsQ0FBTyxLQUFLLE1BQU8sQ0FBQSxTQUFBLENBQVUsb0JBQW9CLEVBQUMsRUFBRyxRQUFRLENBQUMsQ0FBQSxDQUFBO0FBQzlELFFBQUEsU0FBQTtBQUFBLE9BQ0Y7QUFFQSxNQUFNLE1BQUEsS0FBQSxHQUFRLFNBQVMsUUFBUyxFQUFBLENBQUE7QUFFaEMsTUFBQSxJQUFJLENBQUMsS0FBTyxFQUFBO0FBQ1YsUUFBQSxTQUFBO0FBQUEsT0FDRjtBQUVBLE1BQUksSUFBQSxxQkFBQSxDQUFzQixLQUFLLENBQUcsRUFBQTtBQUNoQyxRQUFBLE1BQUEsQ0FBTyxJQUFLLENBQUEsS0FBQSxDQUFNLFNBQVUsQ0FBQSxnQkFBQSxDQUFpQixVQUFVLENBQUMsQ0FBQSxDQUFBO0FBQUEsT0FDbkQsTUFBQTtBQUNMLFFBQUEsTUFBQSxDQUFPLEtBQUssTUFBTyxDQUFBLFNBQUEsQ0FBVSxPQUFPLEVBQUMsRUFBRyxRQUFRLENBQUMsQ0FBQSxDQUFBO0FBQUEsT0FDbkQ7QUFBQSxLQUNGO0FBRUEsSUFBQSxPQUFPLElBQUksbUJBQUEsQ0FBb0IsTUFBTyxDQUFBLElBQUEsQ0FBSyxHQUFHLENBQUMsQ0FBQSxDQUFBO0FBQUEsR0FDakQ7QUFBQSxFQUVPLFlBQXdCLEdBQUE7QUFDN0IsSUFBTyxPQUFBLEVBQUEsQ0FBQTtBQUFBLEdBQ1Q7QUFDRixDQUFBO0FBRUEsU0FBUyxtQkFDUCxDQUFBLFdBQUEsRUFDQSxNQUF3QyxHQUFBLEVBQ1QsRUFBQTtBQUMvQixFQUFJLElBQUEsV0FBQSxDQUFZLE1BQU0sVUFBWSxFQUFBO0FBQ2hDLElBQUEsS0FBQSxNQUFXLFFBQVksSUFBQSxXQUFBLENBQVksS0FBTSxDQUFBLFVBQUEsQ0FBVyxNQUFNLFNBQVcsRUFBQTtBQUNuRSxNQUFJLElBQUEsUUFBQSxDQUFTLE1BQU0sV0FBYSxFQUFBO0FBQzlCLFFBQUEsU0FBQTtBQUFBLE9BQ0Y7QUFFQSxNQUFBLElBQUksQ0FBQyxNQUFBLENBQU8sUUFBUyxDQUFBLEtBQUEsQ0FBTSxJQUFPLENBQUEsRUFBQTtBQUNoQyxRQUFPLE1BQUEsQ0FBQSxRQUFBLENBQVMsTUFBTSxJQUFRLENBQUEsR0FBQSxRQUFBLENBQUE7QUFBQSxPQUNoQztBQUFBLEtBQ0Y7QUFBQSxHQUNGO0FBRUEsRUFBQSxJQUFJLFlBQVksTUFBUSxFQUFBO0FBQ3RCLElBQW9CLG1CQUFBLENBQUEsV0FBQSxDQUFZLFFBQVEsTUFBTSxDQUFBLENBQUE7QUFBQSxHQUNoRDtBQUVBLEVBQU8sT0FBQSxNQUFBLENBQUE7QUFDVDs7OzsifQ==
@@ -0,0 +1,43 @@
1
+ import { config } from '@grafana/runtime';
2
+
3
+ class UserMacro {
4
+ constructor(name, _) {
5
+ this.state = { name, type: "user_macro" };
6
+ }
7
+ getValue(fieldPath) {
8
+ const user = config.bootData.user;
9
+ switch (fieldPath) {
10
+ case "login":
11
+ return user.login;
12
+ case "email":
13
+ return user.email;
14
+ case "id":
15
+ default:
16
+ return String(user.id);
17
+ }
18
+ }
19
+ getValueText() {
20
+ return "";
21
+ }
22
+ }
23
+ class OrgMacro {
24
+ constructor(name, _) {
25
+ this.state = { name, type: "org_macro" };
26
+ }
27
+ getValue(fieldPath) {
28
+ const user = config.bootData.user;
29
+ switch (fieldPath) {
30
+ case "name":
31
+ return user.orgName;
32
+ case "id":
33
+ default:
34
+ return String(user.orgId);
35
+ }
36
+ }
37
+ getValueText() {
38
+ return "";
39
+ }
40
+ }
41
+
42
+ export { OrgMacro, UserMacro };
43
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dE1hY3Jvcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3ZhcmlhYmxlcy9tYWNyb3MvY29udGV4dE1hY3Jvcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY2VuZU9iamVjdCB9IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHsgRm9ybWF0VmFyaWFibGUgfSBmcm9tICcuLi9pbnRlcnBvbGF0aW9uL2Zvcm1hdFJlZ2lzdHJ5JztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJ0BncmFmYW5hL3J1bnRpbWUnO1xuXG4vKipcbiAqIEhhbmRsZXMgZXhwcmVzc2lvbnMgbGlrZSAke19fdXNlci5sb2dpbn1cbiAqL1xuZXhwb3J0IGNsYXNzIFVzZXJNYWNybyBpbXBsZW1lbnRzIEZvcm1hdFZhcmlhYmxlIHtcbiAgcHVibGljIHN0YXRlOiB7IG5hbWU6IHN0cmluZzsgdHlwZTogc3RyaW5nIH07XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgXzogU2NlbmVPYmplY3QpIHtcbiAgICB0aGlzLnN0YXRlID0geyBuYW1lOiBuYW1lLCB0eXBlOiAndXNlcl9tYWNybycgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRWYWx1ZShmaWVsZFBhdGg/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVzZXIgPSBjb25maWcuYm9vdERhdGEudXNlcjtcblxuICAgIHN3aXRjaCAoZmllbGRQYXRoKSB7XG4gICAgICBjYXNlICdsb2dpbic6XG4gICAgICAgIHJldHVybiB1c2VyLmxvZ2luO1xuICAgICAgY2FzZSAnZW1haWwnOlxuICAgICAgICByZXR1cm4gdXNlci5lbWFpbDtcbiAgICAgIGNhc2UgJ2lkJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBTdHJpbmcodXNlci5pZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFZhbHVlVGV4dD8oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbn1cblxuLyoqXG4gKiBIYW5kbGVzIGV4cHJlc3Npb25zIGxpa2UgJHtfX29yZy5uYW1lfVxuICovXG5leHBvcnQgY2xhc3MgT3JnTWFjcm8gaW1wbGVtZW50cyBGb3JtYXRWYXJpYWJsZSB7XG4gIHB1YmxpYyBzdGF0ZTogeyBuYW1lOiBzdHJpbmc7IHR5cGU6IHN0cmluZyB9O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIF86IFNjZW5lT2JqZWN0KSB7XG4gICAgdGhpcy5zdGF0ZSA9IHsgbmFtZTogbmFtZSwgdHlwZTogJ29yZ19tYWNybycgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRWYWx1ZShmaWVsZFBhdGg/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVzZXIgPSBjb25maWcuYm9vdERhdGEudXNlcjtcblxuICAgIHN3aXRjaCAoZmllbGRQYXRoKSB7XG4gICAgICBjYXNlICduYW1lJzpcbiAgICAgICAgcmV0dXJuIHVzZXIub3JnTmFtZTtcbiAgICAgIGNhc2UgJ2lkJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBTdHJpbmcodXNlci5vcmdJZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFZhbHVlVGV4dD8oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU9PLE1BQU0sU0FBb0MsQ0FBQTtBQUFBLEVBR3hDLFdBQUEsQ0FBWSxNQUFjLENBQWdCLEVBQUE7QUFDL0MsSUFBQSxJQUFBLENBQUssS0FBUSxHQUFBLEVBQUUsSUFBWSxFQUFBLElBQUEsRUFBTSxZQUFhLEVBQUEsQ0FBQTtBQUFBLEdBQ2hEO0FBQUEsRUFFTyxTQUFTLFNBQTRCLEVBQUE7QUFDMUMsSUFBTSxNQUFBLElBQUEsR0FBTyxPQUFPLFFBQVMsQ0FBQSxJQUFBLENBQUE7QUFFN0IsSUFBUSxRQUFBLFNBQUE7QUFBQSxNQUNELEtBQUEsT0FBQTtBQUNILFFBQUEsT0FBTyxJQUFLLENBQUEsS0FBQSxDQUFBO0FBQUEsTUFDVCxLQUFBLE9BQUE7QUFDSCxRQUFBLE9BQU8sSUFBSyxDQUFBLEtBQUEsQ0FBQTtBQUFBLE1BQ1QsS0FBQSxJQUFBLENBQUE7QUFBQSxNQUFBO0FBRUgsUUFBTyxPQUFBLE1BQUEsQ0FBTyxLQUFLLEVBQUUsQ0FBQSxDQUFBO0FBQUEsS0FBQTtBQUFBLEdBRTNCO0FBQUEsRUFFTyxZQUF3QixHQUFBO0FBQzdCLElBQU8sT0FBQSxFQUFBLENBQUE7QUFBQSxHQUNUO0FBQ0YsQ0FBQTtBQUtPLE1BQU0sUUFBbUMsQ0FBQTtBQUFBLEVBR3ZDLFdBQUEsQ0FBWSxNQUFjLENBQWdCLEVBQUE7QUFDL0MsSUFBQSxJQUFBLENBQUssS0FBUSxHQUFBLEVBQUUsSUFBWSxFQUFBLElBQUEsRUFBTSxXQUFZLEVBQUEsQ0FBQTtBQUFBLEdBQy9DO0FBQUEsRUFFTyxTQUFTLFNBQTRCLEVBQUE7QUFDMUMsSUFBTSxNQUFBLElBQUEsR0FBTyxPQUFPLFFBQVMsQ0FBQSxJQUFBLENBQUE7QUFFN0IsSUFBUSxRQUFBLFNBQUE7QUFBQSxNQUNELEtBQUEsTUFBQTtBQUNILFFBQUEsT0FBTyxJQUFLLENBQUEsT0FBQSxDQUFBO0FBQUEsTUFDVCxLQUFBLElBQUEsQ0FBQTtBQUFBLE1BQUE7QUFFSCxRQUFPLE9BQUEsTUFBQSxDQUFPLEtBQUssS0FBSyxDQUFBLENBQUE7QUFBQSxLQUFBO0FBQUEsR0FFOUI7QUFBQSxFQUVPLFlBQXdCLEdBQUE7QUFDN0IsSUFBTyxPQUFBLEVBQUEsQ0FBQTtBQUFBLEdBQ1Q7QUFDRjs7OzsifQ==