@carto/kepler.gl 0.0.85 → 0.0.86-alpha.deck9.1

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 (430) hide show
  1. package/dist/actions/action-wrapper.js +36 -41
  2. package/dist/actions/actions.js +15 -21
  3. package/dist/actions/identity-actions.js +14 -20
  4. package/dist/actions/index.js +16 -16
  5. package/dist/actions/map-state-actions.js +12 -18
  6. package/dist/actions/map-style-actions.js +30 -46
  7. package/dist/actions/provider-actions.js +49 -73
  8. package/dist/actions/ui-state-actions.js +73 -113
  9. package/dist/actions/vis-state-actions.js +152 -148
  10. package/dist/cloud-providers/index.js +6 -7
  11. package/dist/cloud-providers/provider.js +189 -279
  12. package/dist/components/bottom-widget.js +105 -117
  13. package/dist/components/common/action-panel.js +122 -74
  14. package/dist/components/common/animation-control/animation-control.js +69 -54
  15. package/dist/components/common/animation-control/animation-controller.js +134 -160
  16. package/dist/components/common/animation-control/animation-speed-slider.js +47 -54
  17. package/dist/components/common/animation-control/floating-time-display.js +120 -100
  18. package/dist/components/common/animation-control/playback-controls.js +147 -144
  19. package/dist/components/common/animation-control/speed-control.js +31 -23
  20. package/dist/components/common/checkbox.js +56 -70
  21. package/dist/components/common/color-legend.js +83 -110
  22. package/dist/components/common/data-table/button.js +31 -23
  23. package/dist/components/common/data-table/canvas.js +11 -5
  24. package/dist/components/common/data-table/cell-size.js +51 -61
  25. package/dist/components/common/data-table/grid.js +40 -59
  26. package/dist/components/common/data-table/index.js +464 -348
  27. package/dist/components/common/data-table/option-dropdown.js +50 -33
  28. package/dist/components/common/dataset-label.js +17 -13
  29. package/dist/components/common/error-boundary.js +27 -45
  30. package/dist/components/common/field-selector.js +99 -139
  31. package/dist/components/common/field-token.js +24 -9
  32. package/dist/components/common/file-uploader/file-drop.js +96 -115
  33. package/dist/components/common/file-uploader/file-upload-progress.js +68 -45
  34. package/dist/components/common/file-uploader/file-upload.js +215 -187
  35. package/dist/components/common/file-uploader/upload-button.js +35 -22
  36. package/dist/components/common/histogram-plot.js +47 -58
  37. package/dist/components/common/icons/add.js +14 -27
  38. package/dist/components/common/icons/anchor_window.js +16 -18
  39. package/dist/components/common/icons/arrow-down-alt.js +14 -27
  40. package/dist/components/common/icons/arrow-down-solid.js +14 -27
  41. package/dist/components/common/icons/arrow-down.js +14 -27
  42. package/dist/components/common/icons/arrow-left.js +17 -30
  43. package/dist/components/common/icons/arrow-right.js +14 -27
  44. package/dist/components/common/icons/arrow-up-alt.js +15 -28
  45. package/dist/components/common/icons/arrow-up-solid.js +14 -27
  46. package/dist/components/common/icons/arrow-up.js +14 -27
  47. package/dist/components/common/icons/base.js +39 -57
  48. package/dist/components/common/icons/bug.js +16 -29
  49. package/dist/components/common/icons/cancel.js +14 -27
  50. package/dist/components/common/icons/checkmark.js +18 -31
  51. package/dist/components/common/icons/chevron-right.js +20 -33
  52. package/dist/components/common/icons/clipboard.js +15 -28
  53. package/dist/components/common/icons/clock.js +16 -29
  54. package/dist/components/common/icons/close.js +19 -32
  55. package/dist/components/common/icons/code-alt.js +16 -29
  56. package/dist/components/common/icons/copy.js +18 -31
  57. package/dist/components/common/icons/crosshairs.js +16 -29
  58. package/dist/components/common/icons/cube-3d.js +18 -31
  59. package/dist/components/common/icons/cursor-click.js +18 -31
  60. package/dist/components/common/icons/data-table.js +15 -28
  61. package/dist/components/common/icons/db.js +15 -28
  62. package/dist/components/common/icons/delete.js +16 -29
  63. package/dist/components/common/icons/docs.js +30 -43
  64. package/dist/components/common/icons/drag-n-drop.js +16 -29
  65. package/dist/components/common/icons/draw-polygon.js +33 -46
  66. package/dist/components/common/icons/email.js +18 -31
  67. package/dist/components/common/icons/expand.js +16 -29
  68. package/dist/components/common/icons/eye-seen.js +16 -29
  69. package/dist/components/common/icons/eye-unseen.js +16 -29
  70. package/dist/components/common/icons/file-type.js +35 -19
  71. package/dist/components/common/icons/file.js +14 -27
  72. package/dist/components/common/icons/files.js +14 -26
  73. package/dist/components/common/icons/filter-funnel.js +14 -27
  74. package/dist/components/common/icons/free-window.js +16 -18
  75. package/dist/components/common/icons/gear.js +16 -29
  76. package/dist/components/common/icons/hash.js +14 -27
  77. package/dist/components/common/icons/histogram.js +15 -27
  78. package/dist/components/common/icons/index.js +156 -156
  79. package/dist/components/common/icons/info.js +25 -38
  80. package/dist/components/common/icons/layers.js +14 -27
  81. package/dist/components/common/icons/left-arrow.js +16 -29
  82. package/dist/components/common/icons/legend.js +14 -27
  83. package/dist/components/common/icons/line-chart.js +14 -27
  84. package/dist/components/common/icons/login.js +17 -30
  85. package/dist/components/common/icons/logout.js +16 -29
  86. package/dist/components/common/icons/map-icon.js +18 -32
  87. package/dist/components/common/icons/map.js +18 -32
  88. package/dist/components/common/icons/messages.js +14 -27
  89. package/dist/components/common/icons/minus.js +14 -27
  90. package/dist/components/common/icons/order-by-dataset.js +15 -17
  91. package/dist/components/common/icons/order-by-list.js +7 -9
  92. package/dist/components/common/icons/pause.js +14 -27
  93. package/dist/components/common/icons/picture.js +14 -26
  94. package/dist/components/common/icons/pin.js +17 -30
  95. package/dist/components/common/icons/play.js +14 -27
  96. package/dist/components/common/icons/polygon.js +35 -48
  97. package/dist/components/common/icons/rectangle.js +36 -49
  98. package/dist/components/common/icons/reduce.js +17 -30
  99. package/dist/components/common/icons/reset.js +14 -27
  100. package/dist/components/common/icons/rocket.js +14 -27
  101. package/dist/components/common/icons/save.js +16 -29
  102. package/dist/components/common/icons/save2.js +20 -33
  103. package/dist/components/common/icons/search.js +16 -29
  104. package/dist/components/common/icons/settings.js +16 -29
  105. package/dist/components/common/icons/share.js +14 -27
  106. package/dist/components/common/icons/split.js +42 -55
  107. package/dist/components/common/icons/square-select.js +16 -29
  108. package/dist/components/common/icons/swap-horizontal.js +18 -31
  109. package/dist/components/common/icons/table.js +14 -27
  110. package/dist/components/common/icons/trash.js +16 -29
  111. package/dist/components/common/icons/upload.js +14 -27
  112. package/dist/components/common/icons/vert-dots.js +52 -65
  113. package/dist/components/common/icons/vert-three-dots.js +27 -40
  114. package/dist/components/common/icons/warning.js +26 -39
  115. package/dist/components/common/image-preview.js +71 -33
  116. package/dist/components/common/info-helper.js +36 -29
  117. package/dist/components/common/item-selector/accessor.js +7 -13
  118. package/dist/components/common/item-selector/chickleted-input.js +72 -56
  119. package/dist/components/common/item-selector/dropdown-list.js +182 -214
  120. package/dist/components/common/item-selector/item-selector-submenu.js +34 -55
  121. package/dist/components/common/item-selector/item-selector.js +183 -194
  122. package/dist/components/common/item-selector/typeahead.js +236 -248
  123. package/dist/components/common/line-chart.js +80 -58
  124. package/dist/components/common/loading-spinner.js +46 -31
  125. package/dist/components/common/logo.js +61 -48
  126. package/dist/components/common/map-layer-selector.js +31 -25
  127. package/dist/components/common/modal.js +167 -106
  128. package/dist/components/common/portaled.js +169 -189
  129. package/dist/components/common/progress-bar.js +27 -24
  130. package/dist/components/common/range-brush.js +176 -215
  131. package/dist/components/common/range-plot.js +52 -63
  132. package/dist/components/common/range-slider.js +206 -231
  133. package/dist/components/common/slider/mouse-event.js +59 -66
  134. package/dist/components/common/slider/slider-bar-handle.js +51 -61
  135. package/dist/components/common/slider/slider-handle.js +127 -102
  136. package/dist/components/common/slider/slider.js +143 -162
  137. package/dist/components/common/styled-components.js +518 -256
  138. package/dist/components/common/switch.js +11 -11
  139. package/dist/components/common/time-range-slider-time-title.js +49 -32
  140. package/dist/components/common/time-range-slider.js +56 -45
  141. package/dist/components/common/time-slider-marker.js +71 -52
  142. package/dist/components/common/tippy-tooltip.js +89 -59
  143. package/dist/components/common/toolbar-item.js +53 -45
  144. package/dist/components/common/toolbar.js +24 -18
  145. package/dist/components/common/vertical-toolbar.js +13 -6
  146. package/dist/components/container.js +87 -119
  147. package/dist/components/context.js +6 -8
  148. package/dist/components/editor/constants.js +4 -4
  149. package/dist/components/editor/editor.js +122 -157
  150. package/dist/components/editor/feature-action-panel.js +52 -59
  151. package/dist/components/editor/feature-styles.js +46 -29
  152. package/dist/components/editor/handle-style.js +38 -29
  153. package/dist/components/filters/components.js +8 -4
  154. package/dist/components/filters/filter-panels/filter-panel-with-field-select.js +33 -43
  155. package/dist/components/filters/filter-panels/multi-select-filter-panel.js +20 -21
  156. package/dist/components/filters/filter-panels/new-filter-panel.js +24 -31
  157. package/dist/components/filters/filter-panels/polygon-filter-panel.js +26 -31
  158. package/dist/components/filters/filter-panels/range-filter-panel.js +20 -21
  159. package/dist/components/filters/filter-panels/single-select-filter-panel.js +20 -21
  160. package/dist/components/filters/filter-panels/time-range-filter-panel.js +28 -31
  161. package/dist/components/filters/index.js +10 -10
  162. package/dist/components/filters/multi-select-filter.js +11 -9
  163. package/dist/components/filters/polygon-filter.js +26 -41
  164. package/dist/components/filters/range-filter.js +9 -7
  165. package/dist/components/filters/single-select-filter.js +11 -13
  166. package/dist/components/filters/time-range-filter.js +16 -14
  167. package/dist/components/filters/time-widget.js +125 -84
  168. package/dist/components/geocoder/geocoder.js +158 -177
  169. package/dist/components/geocoder-panel.js +66 -87
  170. package/dist/components/index.js +328 -329
  171. package/dist/components/injector.js +44 -63
  172. package/dist/components/kepler-gl.js +325 -361
  173. package/dist/components/map/coordinate-info.js +18 -16
  174. package/dist/components/map/layer-hover-info.js +108 -86
  175. package/dist/components/map/layer-selector-panel.js +50 -48
  176. package/dist/components/map/locale-panel.js +38 -44
  177. package/dist/components/map/map-control-panel.js +70 -47
  178. package/dist/components/map/map-control-toolbar.js +9 -6
  179. package/dist/components/map/map-control-tooltip.js +10 -8
  180. package/dist/components/map/map-control.js +35 -27
  181. package/dist/components/map/map-draw-panel.js +38 -48
  182. package/dist/components/map/map-legend-panel.js +47 -50
  183. package/dist/components/map/map-legend.js +133 -116
  184. package/dist/components/map/map-popover.js +155 -100
  185. package/dist/components/map/split-map-button.js +30 -34
  186. package/dist/components/map/toggle-3d-button.js +25 -27
  187. package/dist/components/map-container.js +313 -359
  188. package/dist/components/maps-layout.js +16 -26
  189. package/dist/components/modal-container.js +359 -355
  190. package/dist/components/modals/add-map-style-modal.js +233 -194
  191. package/dist/components/modals/cloud-tile.js +96 -67
  192. package/dist/components/modals/data-table-modal.js +155 -152
  193. package/dist/components/modals/delete-data-modal.js +20 -20
  194. package/dist/components/modals/error-display.js +9 -7
  195. package/dist/components/modals/export-data-modal.js +118 -140
  196. package/dist/components/modals/export-image-modal.js +82 -69
  197. package/dist/components/modals/export-map-modal/components.js +20 -18
  198. package/dist/components/modals/export-map-modal/export-html-map.js +82 -74
  199. package/dist/components/modals/export-map-modal/export-json-map.js +65 -45
  200. package/dist/components/modals/export-map-modal/export-map-modal.js +42 -47
  201. package/dist/components/modals/image-modal-container.js +20 -21
  202. package/dist/components/modals/load-data-modal.js +28 -30
  203. package/dist/components/modals/load-storage-map.js +277 -178
  204. package/dist/components/modals/loading-dialog.js +41 -19
  205. package/dist/components/modals/modal-dialog.js +4 -6
  206. package/dist/components/modals/modal-tabs.js +83 -48
  207. package/dist/components/modals/overwrite-map-modal.js +41 -30
  208. package/dist/components/modals/provider-modal-container.js +23 -42
  209. package/dist/components/modals/save-map-modal.js +107 -83
  210. package/dist/components/modals/share-map-modal.js +101 -95
  211. package/dist/components/modals/status-panel.js +63 -43
  212. package/dist/components/modals/storage-map-viewer.js +133 -70
  213. package/dist/components/notification-panel/notification-item.js +94 -97
  214. package/dist/components/notification-panel.js +35 -43
  215. package/dist/components/performance.js +49 -53
  216. package/dist/components/plot-container.js +151 -169
  217. package/dist/components/side-panel/cloud-storage-dropdown.js +13 -15
  218. package/dist/components/side-panel/common/dataset-info.js +16 -12
  219. package/dist/components/side-panel/common/dataset-tag.js +48 -27
  220. package/dist/components/side-panel/common/dataset-title.js +119 -116
  221. package/dist/components/side-panel/common/source-data-catalog.js +31 -32
  222. package/dist/components/side-panel/common/source-data-selector.js +52 -77
  223. package/dist/components/side-panel/custom-panel.js +6 -8
  224. package/dist/components/side-panel/filter-manager.js +48 -62
  225. package/dist/components/side-panel/filter-panel/filter-panel-header.js +35 -25
  226. package/dist/components/side-panel/filter-panel/filter-panel.js +46 -64
  227. package/dist/components/side-panel/interaction-manager.js +20 -18
  228. package/dist/components/side-panel/interaction-panel/brush-config.js +17 -17
  229. package/dist/components/side-panel/interaction-panel/interaction-panel.js +76 -95
  230. package/dist/components/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +118 -143
  231. package/dist/components/side-panel/interaction-panel/tooltip-config.js +95 -76
  232. package/dist/components/side-panel/layer-manager.js +105 -115
  233. package/dist/components/side-panel/layer-panel/add-layer-button.js +92 -54
  234. package/dist/components/side-panel/layer-panel/color-dimension-scale-selector.js +5 -5
  235. package/dist/components/side-panel/layer-panel/color-palette.js +50 -37
  236. package/dist/components/side-panel/layer-panel/color-range-selector.js +196 -207
  237. package/dist/components/side-panel/layer-panel/color-selector.js +104 -110
  238. package/dist/components/side-panel/layer-panel/column-selector.js +34 -22
  239. package/dist/components/side-panel/layer-panel/custom-markers-config-group.js +4 -4
  240. package/dist/components/side-panel/layer-panel/custom-palette.js +248 -205
  241. package/dist/components/side-panel/layer-panel/custom-picker.js +51 -69
  242. package/dist/components/side-panel/layer-panel/dataset-layer-group.js +37 -42
  243. package/dist/components/side-panel/layer-panel/dataset-layer-section.js +31 -27
  244. package/dist/components/side-panel/layer-panel/dataset-section.js +45 -35
  245. package/dist/components/side-panel/layer-panel/dimension-scale-selector.js +14 -13
  246. package/dist/components/side-panel/layer-panel/hex-column-config.js +32 -55
  247. package/dist/components/side-panel/layer-panel/layer-aggregation-resolution.js +5 -5
  248. package/dist/components/side-panel/layer-panel/layer-column-config.js +42 -46
  249. package/dist/components/side-panel/layer-panel/layer-config-group.js +178 -144
  250. package/dist/components/side-panel/layer-panel/layer-configurator.js +826 -830
  251. package/dist/components/side-panel/layer-panel/layer-list.js +101 -94
  252. package/dist/components/side-panel/layer-panel/layer-panel-header.js +124 -82
  253. package/dist/components/side-panel/layer-panel/layer-panel.js +111 -105
  254. package/dist/components/side-panel/layer-panel/layer-type-dropdown-list.js +67 -58
  255. package/dist/components/side-panel/layer-panel/layer-type-list-item.js +47 -32
  256. package/dist/components/side-panel/layer-panel/layer-type-selector.js +30 -41
  257. package/dist/components/side-panel/layer-panel/layer-visibility-by-zoom.js +42 -43
  258. package/dist/components/side-panel/layer-panel/panel-view-list-toggle.js +55 -57
  259. package/dist/components/side-panel/layer-panel/single-color-palette.js +48 -33
  260. package/dist/components/side-panel/layer-panel/text-label-panel.js +81 -116
  261. package/dist/components/side-panel/layer-panel/vis-config-by-field-selector.js +88 -102
  262. package/dist/components/side-panel/layer-panel/vis-config-slider.js +99 -85
  263. package/dist/components/side-panel/layer-panel/vis-config-switch.js +38 -29
  264. package/dist/components/side-panel/map-manager.js +70 -89
  265. package/dist/components/side-panel/map-style-panel/map-layer-selector.js +72 -60
  266. package/dist/components/side-panel/map-style-panel/map-style-selector.js +64 -42
  267. package/dist/components/side-panel/panel-dropdown.js +21 -37
  268. package/dist/components/side-panel/panel-header-action.js +60 -65
  269. package/dist/components/side-panel/panel-header.js +165 -184
  270. package/dist/components/side-panel/panel-tab.js +35 -29
  271. package/dist/components/side-panel/panel-title.js +15 -18
  272. package/dist/components/side-panel/panel-toggle.js +30 -31
  273. package/dist/components/side-panel/side-bar.js +100 -91
  274. package/dist/components/side-panel.js +108 -123
  275. package/dist/connect/keplergl-connect.js +17 -26
  276. package/dist/connect/with-local-selector.js +31 -63
  277. package/dist/constants/action-types.js +113 -115
  278. package/dist/constants/color-palette.js +14 -16
  279. package/dist/constants/color-ranges.js +23 -28
  280. package/dist/constants/custom-color-ranges.js +12 -12
  281. package/dist/constants/default-settings.js +323 -254
  282. package/dist/constants/index.js +63 -63
  283. package/dist/constants/keyevent.js +4 -4
  284. package/dist/constants/tooltip.js +5 -5
  285. package/dist/constants/user-feedbacks.js +9 -5
  286. package/dist/constants/user-guides.js +10 -10
  287. package/dist/deckgl-layers/3d-building-layer/3d-building-layer.js +37 -63
  288. package/dist/deckgl-layers/3d-building-layer/3d-building-utils.js +52 -56
  289. package/dist/deckgl-layers/cluster-layer/cluster-layer.js +165 -168
  290. package/dist/deckgl-layers/column-layer/enhanced-column-layer.js +24 -43
  291. package/dist/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.d.ts +2 -2
  292. package/dist/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.js +27 -40
  293. package/dist/deckgl-layers/hexagon-layer/enhanced-hexagon-layer.js +27 -40
  294. package/dist/deckgl-layers/layer-utils/cluster-utils.js +60 -68
  295. package/dist/deckgl-layers/layer-utils/cpu-aggregator.d.ts +4 -4
  296. package/dist/deckgl-layers/layer-utils/cpu-aggregator.js +281 -282
  297. package/dist/deckgl-layers/layer-utils/shader-utils.js +2 -2
  298. package/dist/deckgl-layers/line-layer/line-layer.js +62 -70
  299. package/dist/deckgl-layers/svg-icon-layer/scatterplot-icon-layer.js +37 -51
  300. package/dist/deckgl-layers/svg-icon-layer/svg-icon-layer.js +65 -85
  301. package/dist/index.js +15 -16
  302. package/dist/layers/aggregation-layer.js +299 -331
  303. package/dist/layers/arc-layer/arc-layer-icon.js +27 -41
  304. package/dist/layers/arc-layer/arc-layer.js +174 -201
  305. package/dist/layers/base-layer.d.ts +1 -1
  306. package/dist/layers/base-layer.js +1371 -1544
  307. package/dist/layers/cluster-layer/cluster-layer-icon.js +30 -44
  308. package/dist/layers/cluster-layer/cluster-layer.js +89 -103
  309. package/dist/layers/default-layer-icon.js +39 -53
  310. package/dist/layers/geojson-layer/geojson-layer-icon.js +42 -55
  311. package/dist/layers/geojson-layer/geojson-layer.js +292 -353
  312. package/dist/layers/geojson-layer/geojson-utils.js +31 -36
  313. package/dist/layers/grid-layer/grid-layer-icon.js +87 -100
  314. package/dist/layers/grid-layer/grid-layer.js +51 -61
  315. package/dist/layers/grid-layer/grid-utils.js +13 -9
  316. package/dist/layers/h3-hexagon-layer/h3-hexagon-layer-icon.js +21 -35
  317. package/dist/layers/h3-hexagon-layer/h3-hexagon-layer.js +225 -260
  318. package/dist/layers/h3-hexagon-layer/h3-utils.js +16 -16
  319. package/dist/layers/heatmap-layer/heatmap-layer-icon.js +39 -52
  320. package/dist/layers/heatmap-layer/heatmap-layer.js +140 -171
  321. package/dist/layers/hexagon-layer/hexagon-layer-icon.js +51 -64
  322. package/dist/layers/hexagon-layer/hexagon-layer.js +49 -63
  323. package/dist/layers/hexagon-layer/hexagon-utils.js +15 -14
  324. package/dist/layers/icon-layer/icon-info-modal.js +82 -75
  325. package/dist/layers/icon-layer/icon-layer-icon.js +24 -37
  326. package/dist/layers/icon-layer/icon-layer.js +274 -303
  327. package/dist/layers/index.js +43 -29
  328. package/dist/layers/layer-factory.js +25 -41
  329. package/dist/layers/layer-text-label.js +21 -23
  330. package/dist/layers/layer-update.js +16 -18
  331. package/dist/layers/line-layer/line-layer-icon.js +30 -43
  332. package/dist/layers/line-layer/line-layer.js +123 -142
  333. package/dist/layers/mapbox-utils.js +61 -62
  334. package/dist/layers/mapboxgl-layer.js +124 -169
  335. package/dist/layers/point-layer/point-layer-icon.js +45 -59
  336. package/dist/layers/point-layer/point-layer.d.ts +2 -2
  337. package/dist/layers/point-layer/point-layer.js +355 -386
  338. package/dist/layers/s2-geometry-layer/s2-geometry-layer.js +208 -238
  339. package/dist/layers/s2-geometry-layer/s2-layer-icon.js +21 -35
  340. package/dist/layers/s2-geometry-layer/s2-utils.js +9 -8
  341. package/dist/layers/scenegraph-layer/scenegraph-info-modal.js +24 -25
  342. package/dist/layers/scenegraph-layer/scenegraph-layer-icon.js +102 -115
  343. package/dist/layers/scenegraph-layer/scenegraph-layer.js +148 -172
  344. package/dist/layers/trip-layer/trip-info-modal.js +50 -30
  345. package/dist/layers/trip-layer/trip-layer-icon.js +40 -53
  346. package/dist/layers/trip-layer/trip-layer.js +239 -307
  347. package/dist/layers/trip-layer/trip-utils.js +34 -50
  348. package/dist/layers/types.js +2 -2
  349. package/dist/localization/formatted-message.js +8 -10
  350. package/dist/localization/index.js +7 -7
  351. package/dist/localization/locales.js +6 -9
  352. package/dist/localization/messages.js +13 -10
  353. package/dist/localization/translations/ca.js +11 -13
  354. package/dist/localization/translations/cn.js +11 -13
  355. package/dist/localization/translations/en.js +11 -13
  356. package/dist/localization/translations/es.js +11 -13
  357. package/dist/localization/translations/fi.js +11 -13
  358. package/dist/localization/translations/ja.js +11 -13
  359. package/dist/localization/translations/pt.js +11 -13
  360. package/dist/localization/translations/ru.js +11 -13
  361. package/dist/middleware/index.js +3 -5
  362. package/dist/processors/data-processor.js +164 -201
  363. package/dist/processors/file-handler.js +111 -233
  364. package/dist/processors/index.js +4 -4
  365. package/dist/reducers/combined-updaters.js +41 -41
  366. package/dist/reducers/composer-helpers.js +20 -45
  367. package/dist/reducers/composers.js +9 -8
  368. package/dist/reducers/core.js +31 -35
  369. package/dist/reducers/index.js +21 -22
  370. package/dist/reducers/map-state-updaters.js +65 -47
  371. package/dist/reducers/map-state.js +23 -15
  372. package/dist/reducers/map-style-updaters.js +233 -159
  373. package/dist/reducers/map-style.js +30 -16
  374. package/dist/reducers/provider-state-updaters.js +217 -229
  375. package/dist/reducers/provider-state.js +29 -17
  376. package/dist/reducers/root.js +86 -58
  377. package/dist/reducers/ui-state-updaters.js +337 -218
  378. package/dist/reducers/ui-state.js +45 -16
  379. package/dist/reducers/vis-state-merger.js +205 -209
  380. package/dist/reducers/vis-state-selectors.js +5 -19
  381. package/dist/reducers/vis-state-updaters.js +1003 -876
  382. package/dist/reducers/vis-state.js +75 -16
  383. package/dist/schemas/dataset-schema.js +84 -108
  384. package/dist/schemas/index.js +28 -29
  385. package/dist/schemas/map-state-schema.js +21 -18
  386. package/dist/schemas/map-style-schema.js +47 -55
  387. package/dist/schemas/schema-manager.js +147 -161
  388. package/dist/schemas/schema-utils.js +8 -9
  389. package/dist/schemas/schema.js +72 -87
  390. package/dist/schemas/versions.js +3 -3
  391. package/dist/schemas/vis-state-schema.js +441 -583
  392. package/dist/styles/base.js +1217 -1021
  393. package/dist/styles/index.js +3 -3
  394. package/dist/styles/media-breakpoints.js +23 -18
  395. package/dist/tasks/tasks.js +36 -39
  396. package/dist/templates/export-map-html.js +233 -4
  397. package/dist/utils/aggregate-utils.js +13 -16
  398. package/dist/utils/color-utils.js +29 -37
  399. package/dist/utils/custom-scales.js +3 -3
  400. package/dist/utils/data-scale-utils.js +6 -13
  401. package/dist/utils/data-utils.js +60 -83
  402. package/dist/utils/dataset-utils.js +48 -77
  403. package/dist/utils/dom-to-image.js +108 -163
  404. package/dist/utils/dom-utils.js +88 -105
  405. package/dist/utils/export-utils.js +116 -103
  406. package/dist/utils/filter-utils.js +379 -374
  407. package/dist/utils/gl-utils.js +16 -15
  408. package/dist/utils/gpu-filter-utils.js +54 -73
  409. package/dist/utils/index.js +47 -48
  410. package/dist/utils/interaction-utils.js +53 -46
  411. package/dist/utils/layer-utils.js +89 -78
  412. package/dist/utils/locale-utils.js +24 -16
  413. package/dist/utils/map-style-utils/mapbox-gl-style-editor.js +67 -76
  414. package/dist/utils/map-style-utils/mapbox-utils.js +4 -3
  415. package/dist/utils/mapbox-utils.js +3 -4
  416. package/dist/utils/notifications-utils.js +33 -38
  417. package/dist/utils/observe-dimensions.js +42 -54
  418. package/dist/utils/projection-utils.js +14 -11
  419. package/dist/utils/split-map-utils.js +30 -33
  420. package/dist/utils/table-utils/data-container-utils.js +15 -14
  421. package/dist/utils/table-utils/data-row.js +58 -65
  422. package/dist/utils/table-utils/index.js +2 -2
  423. package/dist/utils/table-utils/indexed-data-container.js +105 -173
  424. package/dist/utils/table-utils/kepler-table.js +362 -386
  425. package/dist/utils/table-utils/row-data-container.js +99 -164
  426. package/dist/utils/utils.js +29 -30
  427. package/package.json +21 -21
  428. package/src/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.ts +2 -2
  429. package/src/deckgl-layers/layer-utils/cpu-aggregator.ts +21 -11
  430. package/src/layers/base-layer.ts +17 -10
@@ -1,20 +1,12 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
- exports["default"] = exports.SaveExportDropdownFactory = exports.PanelHeaderDropdownFactory = exports.PanelAction = exports.CloudStorageDropdownFactory = void 0;
9
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
13
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
7
+ exports.default = exports.SaveExportDropdownFactory = exports.PanelHeaderDropdownFactory = exports.PanelAction = exports.CloudStorageDropdownFactory = void 0;
15
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
17
- var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
18
10
  var _react = _interopRequireWildcard(require("react"));
19
11
  var _styledComponents = _interopRequireDefault(require("styled-components"));
20
12
  var _classnames = _interopRequireDefault(require("classnames"));
@@ -26,8 +18,9 @@ var _panelDropdown = _interopRequireDefault(require("./panel-dropdown"));
26
18
  var _toolbar = _interopRequireDefault(require("../common/toolbar"));
27
19
  var _toolbarItem = _interopRequireDefault(require("../common/toolbar-item"));
28
20
  var _localization = require("../../localization");
29
- var _excluded = ["appName", "appWebsite", "version", "actionItems", "visibleDropdown", "showExportDropdown", "hideExportDropdown"];
30
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5; // Copyright (c) 2022 Uber Technologies, Inc.
21
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
22
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
23
+ // Copyright (c) 2022 Uber Technologies, Inc.
31
24
  //
32
25
  // Permission is hereby granted, free of charge, to any person obtaining a copy
33
26
  // of this software and associated documentation files (the "Software"), to deal
@@ -46,256 +39,244 @@ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _temp
46
39
  // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
47
40
  // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
48
41
  // THE SOFTWARE.
49
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
50
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
51
- function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
52
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
53
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
54
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
55
- var StyledPanelHeader = _styledComponents["default"].div.attrs(function (props) {
56
- return {
57
- className: (0, _classnames["default"])('side-side-panel__header', props.className)
58
- };
59
- })(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n padding: 12px 16px 0 16px;\n"])), function (props) {
60
- return props.theme.sidePanelHeaderBg;
61
- });
62
- var StyledPanelHeaderTop = _styledComponents["default"].div.attrs(function (props) {
63
- return {
64
- className: (0, _classnames["default"])('side-panel__header__top', props.className)
65
- };
66
- })(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n margin-bottom: 16px;\n width: 100%;\n"])));
67
- var StyledPanelTopActions = _styledComponents["default"].div.attrs({
42
+
43
+ const StyledPanelHeader = _styledComponents.default.div.attrs(props => ({
44
+ className: (0, _classnames.default)('side-side-panel__header', props.className)
45
+ }))`
46
+ background-color: ${props => props.theme.sidePanelHeaderBg};
47
+ padding: 12px 16px 0 16px;
48
+ `;
49
+ const StyledPanelHeaderTop = _styledComponents.default.div.attrs(props => ({
50
+ className: (0, _classnames.default)('side-panel__header__top', props.className)
51
+ }))`
52
+ display: flex;
53
+ justify-content: space-between;
54
+ margin-bottom: 16px;
55
+ width: 100%;
56
+ `;
57
+ const StyledPanelTopActions = _styledComponents.default.div.attrs({
68
58
  className: 'side-panel__top__actions'
69
- })(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n"])));
70
- var StyledPanelAction = _styledComponents["default"].div.attrs({
59
+ })`
60
+ display: flex;
61
+ `;
62
+ const StyledPanelAction = _styledComponents.default.div.attrs({
71
63
  className: 'side-panel__panel-header__action'
72
- })(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n align-items: center;\n border-radius: 2px;\n color: ", ";\n display: flex;\n height: 26px;\n justify-content: space-between;\n margin-left: 4px;\n padding: 5px;\n font-weight: bold;\n p {\n display: inline-block;\n margin-right: 6px;\n }\n a {\n height: 20px;\n }\n\n :hover {\n cursor: pointer;\n color: ", ";\n\n a {\n color: ", ";\n }\n }\n"])), function (props) {
73
- return props.active ? props.theme.textColorHl : props.theme.subtextColor;
74
- }, function (props) {
75
- return props.theme.textColorHl;
76
- }, function (props) {
77
- return props.theme.textColorHl;
78
- });
79
- var StyledToolbar = (0, _styledComponents["default"])(_toolbar["default"])(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n"])));
80
- var PanelAction = exports.PanelAction = function PanelAction(_ref) {
81
- var item = _ref.item,
82
- onClick = _ref.onClick;
83
- return /*#__PURE__*/_react["default"].createElement(StyledPanelAction, {
64
+ })`
65
+ align-items: center;
66
+ border-radius: 2px;
67
+ color: ${props => props.active ? props.theme.textColorHl : props.theme.subtextColor};
68
+ display: flex;
69
+ height: 26px;
70
+ justify-content: space-between;
71
+ margin-left: 4px;
72
+ padding: 5px;
73
+ font-weight: bold;
74
+ p {
75
+ display: inline-block;
76
+ margin-right: 6px;
77
+ }
78
+ a {
79
+ height: 20px;
80
+ }
81
+
82
+ :hover {
83
+ cursor: pointer;
84
+ color: ${props => props.theme.textColorHl};
85
+
86
+ a {
87
+ color: ${props => props.theme.textColorHl};
88
+ }
89
+ }
90
+ `;
91
+ const StyledToolbar = (0, _styledComponents.default)(_toolbar.default)`
92
+ position: absolute;
93
+ `;
94
+ const PanelAction = _ref => {
95
+ let {
96
+ item,
97
+ onClick
98
+ } = _ref;
99
+ return /*#__PURE__*/_react.default.createElement(StyledPanelAction, {
84
100
  "data-tip": true,
85
- "data-for": "".concat(item.id, "-action"),
101
+ "data-for": `${item.id}-action`,
86
102
  onClick: onClick
87
- }, item.label ? /*#__PURE__*/_react["default"].createElement("p", null, item.label) : null, /*#__PURE__*/_react["default"].createElement("a", {
103
+ }, item.label ? /*#__PURE__*/_react.default.createElement("p", null, item.label) : null, /*#__PURE__*/_react.default.createElement("a", {
88
104
  target: item.blank ? '_blank' : '',
89
105
  href: item.href,
90
106
  rel: "noreferrer"
91
- }, /*#__PURE__*/_react["default"].createElement(item.iconComponent, (0, _extends2["default"])({
107
+ }, /*#__PURE__*/_react.default.createElement(item.iconComponent, (0, _extends2.default)({
92
108
  height: "20px"
93
- }, item.iconComponentProps))), item.tooltip ? /*#__PURE__*/_react["default"].createElement(_styledComponents2.Tooltip, {
94
- id: "".concat(item.id, "-action"),
109
+ }, item.iconComponentProps))), item.tooltip ? /*#__PURE__*/_react.default.createElement(_styledComponents2.Tooltip, {
110
+ id: `${item.id}-action`,
95
111
  place: "bottom",
96
112
  delayShow: 500,
97
113
  effect: "solid"
98
- }, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, {
114
+ }, /*#__PURE__*/_react.default.createElement(_localization.FormattedMessage, {
99
115
  id: item.tooltip
100
116
  })) : null);
101
117
  };
102
- var PanelHeaderDropdownFactory = exports.PanelHeaderDropdownFactory = function PanelHeaderDropdownFactory() {
103
- var PanelHeaderDropdown = function PanelHeaderDropdown(_ref2) {
104
- var items = _ref2.items,
105
- show = _ref2.show,
106
- onClose = _ref2.onClose,
107
- id = _ref2.id;
108
- return /*#__PURE__*/_react["default"].createElement(StyledToolbar, {
118
+ exports.PanelAction = PanelAction;
119
+ const PanelHeaderDropdownFactory = () => {
120
+ const PanelHeaderDropdown = _ref2 => {
121
+ let {
122
+ items,
123
+ show,
124
+ onClose,
125
+ id
126
+ } = _ref2;
127
+ return /*#__PURE__*/_react.default.createElement(StyledToolbar, {
109
128
  show: show,
110
- className: "".concat(id, "-dropdown")
111
- }, /*#__PURE__*/_react["default"].createElement(_panelDropdown["default"], {
129
+ className: `${id}-dropdown`
130
+ }, /*#__PURE__*/_react.default.createElement(_panelDropdown.default, {
112
131
  className: "panel-header-dropdown__inner",
113
132
  show: show,
114
133
  onClose: onClose
115
- }, items.map(function (item) {
116
- return /*#__PURE__*/_react["default"].createElement(_toolbarItem["default"], {
117
- id: item.key,
118
- key: item.key,
119
- label: item.label,
120
- icon: item.icon,
121
- onClick: item.onClick,
122
- onClose: onClose
123
- });
124
- })));
134
+ }, items.map(item => /*#__PURE__*/_react.default.createElement(_toolbarItem.default, {
135
+ id: item.key,
136
+ key: item.key,
137
+ label: item.label,
138
+ icon: item.icon,
139
+ onClick: item.onClick,
140
+ onClose: onClose
141
+ }))));
125
142
  };
126
143
  return PanelHeaderDropdown;
127
144
  };
128
- var getDropdownItemsSelector = function getDropdownItemsSelector() {
129
- return (0, _reselect.createSelector)(function (props) {
130
- return props;
131
- }, function (props) {
132
- return (props.items || []).map(function (t) {
133
- return _objectSpread(_objectSpread({}, t), {}, {
134
- onClick: t.onClick && t.onClick(props) ? t.onClick(props) : null
135
- });
136
- }).filter(function (l) {
137
- return l.onClick;
138
- });
145
+ exports.PanelHeaderDropdownFactory = PanelHeaderDropdownFactory;
146
+ const getDropdownItemsSelector = () => (0, _reselect.createSelector)(props => props, props => (props.items || []).map(t => ({
147
+ ...t,
148
+ onClick: t.onClick && t.onClick(props) ? t.onClick(props) : null
149
+ })).filter(l => l.onClick));
150
+ const SaveExportDropdownFactory = PanelHeaderDropdown => {
151
+ const dropdownItemsSelector = getDropdownItemsSelector();
152
+ const SaveExportDropdown = props => /*#__PURE__*/_react.default.createElement(PanelHeaderDropdown, {
153
+ items: dropdownItemsSelector(props),
154
+ show: props.show,
155
+ onClose: props.onClose,
156
+ id: "save-export"
139
157
  });
140
- };
141
- var SaveExportDropdownFactory = exports.SaveExportDropdownFactory = function SaveExportDropdownFactory(PanelHeaderDropdown) {
142
- var dropdownItemsSelector = getDropdownItemsSelector();
143
- var SaveExportDropdown = function SaveExportDropdown(props) {
144
- return /*#__PURE__*/_react["default"].createElement(PanelHeaderDropdown, {
145
- items: dropdownItemsSelector(props),
146
- show: props.show,
147
- onClose: props.onClose,
148
- id: "save-export"
149
- });
150
- };
151
158
  SaveExportDropdown.defaultProps = {
152
159
  items: [{
153
160
  label: 'toolbar.exportImage',
154
161
  icon: _icons.Picture,
155
162
  key: 'image',
156
- onClick: function onClick(props) {
157
- return props.onExportImage;
158
- }
163
+ onClick: props => props.onExportImage
159
164
  }, {
160
165
  label: 'toolbar.exportData',
161
166
  icon: _icons.DataTable,
162
167
  key: 'data',
163
- onClick: function onClick(props) {
164
- return props.onExportData;
165
- }
168
+ onClick: props => props.onExportData
166
169
  }, {
167
170
  label: 'toolbar.exportMap',
168
171
  icon: _icons.Map,
169
172
  key: 'map',
170
- onClick: function onClick(props) {
171
- return props.onExportMap;
172
- }
173
+ onClick: props => props.onExportMap
173
174
  }, {
174
175
  label: 'toolbar.saveMap',
175
176
  icon: _icons.Save2,
176
177
  key: 'save',
177
- onClick: function onClick(props) {
178
- return props.onSaveMap;
179
- }
178
+ onClick: props => props.onSaveMap
180
179
  }, {
181
180
  label: 'toolbar.shareMapURL',
182
181
  icon: _icons.Share,
183
182
  key: 'share',
184
- onClick: function onClick(props) {
185
- return props.onShareMap;
186
- }
183
+ onClick: props => props.onShareMap
187
184
  }]
188
185
  };
189
186
  return SaveExportDropdown;
190
187
  };
188
+ exports.SaveExportDropdownFactory = SaveExportDropdownFactory;
191
189
  SaveExportDropdownFactory.deps = [PanelHeaderDropdownFactory];
192
- var CloudStorageDropdownFactory = exports.CloudStorageDropdownFactory = function CloudStorageDropdownFactory(PanelHeaderDropdown) {
193
- var dropdownItemsSelector = getDropdownItemsSelector();
194
- var CloudStorageDropdown = function CloudStorageDropdown(props) {
195
- return /*#__PURE__*/_react["default"].createElement(PanelHeaderDropdown, {
196
- items: dropdownItemsSelector(props),
197
- show: props.show,
198
- onClose: props.onClose,
199
- id: "cloud-storage"
200
- });
201
- };
190
+ const CloudStorageDropdownFactory = PanelHeaderDropdown => {
191
+ const dropdownItemsSelector = getDropdownItemsSelector();
192
+ const CloudStorageDropdown = props => /*#__PURE__*/_react.default.createElement(PanelHeaderDropdown, {
193
+ items: dropdownItemsSelector(props),
194
+ show: props.show,
195
+ onClose: props.onClose,
196
+ id: "cloud-storage"
197
+ });
202
198
  CloudStorageDropdown.defaultProps = {
203
199
  items: [{
204
200
  label: 'Save',
205
201
  icon: _icons.Save2,
206
202
  key: 'save',
207
- onClick: function onClick(props) {
208
- return props.onSaveToStorage;
209
- }
203
+ onClick: props => props.onSaveToStorage
210
204
  }, {
211
205
  label: 'Save As',
212
206
  icon: _icons.Save2,
213
207
  key: 'saveAs',
214
- onClick: function onClick(props) {
215
- return props.onSaveAsToStorage;
216
- }
208
+ onClick: props => props.onSaveAsToStorage
217
209
  }]
218
210
  };
219
211
  return CloudStorageDropdown;
220
212
  };
213
+ exports.CloudStorageDropdownFactory = CloudStorageDropdownFactory;
221
214
  CloudStorageDropdownFactory.deps = [PanelHeaderDropdownFactory];
222
215
  PanelHeaderFactory.deps = [SaveExportDropdownFactory, CloudStorageDropdownFactory];
223
216
  function PanelHeaderFactory(SaveExportDropdown, CloudStorageDropdown) {
224
217
  var _PanelHeader;
225
- return _PanelHeader = /*#__PURE__*/function (_Component) {
226
- function PanelHeader() {
227
- (0, _classCallCheck2["default"])(this, PanelHeader);
228
- return _callSuper(this, PanelHeader, arguments);
229
- }
230
- (0, _inherits2["default"])(PanelHeader, _Component);
231
- return (0, _createClass2["default"])(PanelHeader, [{
232
- key: "render",
233
- value: function render() {
234
- var _this = this;
235
- var _this$props = this.props,
236
- appName = _this$props.appName,
237
- appWebsite = _this$props.appWebsite,
238
- version = _this$props.version,
239
- actionItems = _this$props.actionItems,
240
- visibleDropdown = _this$props.visibleDropdown,
241
- showExportDropdown = _this$props.showExportDropdown,
242
- hideExportDropdown = _this$props.hideExportDropdown,
243
- dropdownCallbacks = (0, _objectWithoutProperties2["default"])(_this$props, _excluded);
244
- var items = actionItems || [];
218
+ return _PanelHeader = class PanelHeader extends _react.Component {
219
+ render() {
220
+ const {
221
+ appName,
222
+ appWebsite,
223
+ version,
224
+ actionItems,
225
+ visibleDropdown,
226
+ showExportDropdown,
227
+ hideExportDropdown,
228
+ ...dropdownCallbacks
229
+ } = this.props;
230
+ let items = actionItems || [];
245
231
 
246
- // don't render cloud storage icon if onSaveToStorage is not provided
247
- if (typeof this.props.onSaveToStorage !== 'function') {
248
- items = items.filter(function (ai) {
249
- return ai.id !== 'storage';
250
- });
251
- }
252
- return /*#__PURE__*/_react["default"].createElement(StyledPanelHeader, {
253
- className: "side-panel__panel-header"
254
- }, /*#__PURE__*/_react["default"].createElement(StyledPanelHeaderTop, {
255
- className: "side-panel__panel-header__top"
256
- }, this.props.logoComponent && /*#__PURE__*/_react["default"].createElement(this.props.logoComponent, {
257
- appName: appName,
258
- version: version,
259
- appWebsite: appWebsite
260
- }), /*#__PURE__*/_react["default"].createElement(StyledPanelTopActions, null, items.map(function (item) {
261
- return /*#__PURE__*/_react["default"].createElement("div", {
262
- className: "side-panel__panel-header__right",
263
- key: item.id,
264
- style: {
265
- position: 'relative'
266
- }
267
- }, /*#__PURE__*/_react["default"].createElement(PanelAction, {
268
- item: item,
269
- onClick: function onClick() {
270
- if (item.dropdownComponent) {
271
- showExportDropdown(item.id);
272
- } else {
273
- item.onClick && item.onClick(_this.props);
274
- }
275
- }
276
- }), item.dropdownComponent ? /*#__PURE__*/_react["default"].createElement(item.dropdownComponent, (0, _extends2["default"])({
277
- onClose: hideExportDropdown,
278
- show: visibleDropdown === item.id
279
- }, dropdownCallbacks)) : null);
280
- }))));
232
+ // don't render cloud storage icon if onSaveToStorage is not provided
233
+ if (typeof this.props.onSaveToStorage !== 'function') {
234
+ items = items.filter(ai => ai.id !== 'storage');
281
235
  }
282
- }]);
283
- }(_react.Component), (0, _defineProperty2["default"])(_PanelHeader, "defaultProps", {
284
- logoComponent: _logo["default"],
236
+ return /*#__PURE__*/_react.default.createElement(StyledPanelHeader, {
237
+ className: "side-panel__panel-header"
238
+ }, /*#__PURE__*/_react.default.createElement(StyledPanelHeaderTop, {
239
+ className: "side-panel__panel-header__top"
240
+ }, this.props.logoComponent && /*#__PURE__*/_react.default.createElement(this.props.logoComponent, {
241
+ appName: appName,
242
+ version: version,
243
+ appWebsite: appWebsite
244
+ }), /*#__PURE__*/_react.default.createElement(StyledPanelTopActions, null, items.map(item => /*#__PURE__*/_react.default.createElement("div", {
245
+ className: "side-panel__panel-header__right",
246
+ key: item.id,
247
+ style: {
248
+ position: 'relative'
249
+ }
250
+ }, /*#__PURE__*/_react.default.createElement(PanelAction, {
251
+ item: item,
252
+ onClick: () => {
253
+ if (item.dropdownComponent) {
254
+ showExportDropdown(item.id);
255
+ } else {
256
+ item.onClick && item.onClick(this.props);
257
+ }
258
+ }
259
+ }), item.dropdownComponent ? /*#__PURE__*/_react.default.createElement(item.dropdownComponent, (0, _extends2.default)({
260
+ onClose: hideExportDropdown,
261
+ show: visibleDropdown === item.id
262
+ }, dropdownCallbacks)) : null)))));
263
+ }
264
+ }, (0, _defineProperty2.default)(_PanelHeader, "defaultProps", {
265
+ logoComponent: _logo.default,
285
266
  actionItems: [{
286
267
  id: 'storage',
287
268
  iconComponent: _icons.Db,
288
269
  tooltip: 'tooltip.cloudStorage',
289
- onClick: function onClick() {},
270
+ onClick: () => {},
290
271
  dropdownComponent: CloudStorageDropdown
291
272
  }, {
292
273
  id: 'save',
293
274
  iconComponent: _icons.Save,
294
- onClick: function onClick() {},
275
+ onClick: () => {},
295
276
  label: 'Share',
296
277
  dropdownComponent: SaveExportDropdown
297
278
  }]
298
279
  }), _PanelHeader;
299
280
  }
300
- var _default = exports["default"] = PanelHeaderFactory;
301
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY2xhc3NuYW1lcyIsIl9yZXNlbGVjdCIsIl9zdHlsZWRDb21wb25lbnRzMiIsIl9sb2dvIiwiX2ljb25zIiwiX3BhbmVsRHJvcGRvd24iLCJfdG9vbGJhciIsIl90b29sYmFySXRlbSIsIl9sb2NhbGl6YXRpb24iLCJfZXhjbHVkZWQiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfdGVtcGxhdGVPYmplY3Q1IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX2NhbGxTdXBlciIsIm8iLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsImFwcGx5IiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJTdHlsZWRQYW5lbEhlYWRlciIsInN0eWxlZCIsImRpdiIsImF0dHJzIiwicHJvcHMiLCJjbGFzc05hbWUiLCJjbGFzc25hbWVzIiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJ0aGVtZSIsInNpZGVQYW5lbEhlYWRlckJnIiwiU3R5bGVkUGFuZWxIZWFkZXJUb3AiLCJTdHlsZWRQYW5lbFRvcEFjdGlvbnMiLCJTdHlsZWRQYW5lbEFjdGlvbiIsImFjdGl2ZSIsInRleHRDb2xvckhsIiwic3VidGV4dENvbG9yIiwiU3R5bGVkVG9vbGJhciIsIlRvb2xiYXIiLCJQYW5lbEFjdGlvbiIsImV4cG9ydHMiLCJfcmVmIiwiaXRlbSIsIm9uQ2xpY2siLCJjcmVhdGVFbGVtZW50IiwiY29uY2F0IiwiaWQiLCJsYWJlbCIsInRhcmdldCIsImJsYW5rIiwiaHJlZiIsInJlbCIsImljb25Db21wb25lbnQiLCJfZXh0ZW5kczIiLCJoZWlnaHQiLCJpY29uQ29tcG9uZW50UHJvcHMiLCJ0b29sdGlwIiwiVG9vbHRpcCIsInBsYWNlIiwiZGVsYXlTaG93IiwiZWZmZWN0IiwiRm9ybWF0dGVkTWVzc2FnZSIsIlBhbmVsSGVhZGVyRHJvcGRvd25GYWN0b3J5IiwiUGFuZWxIZWFkZXJEcm9wZG93biIsIl9yZWYyIiwiaXRlbXMiLCJzaG93Iiwib25DbG9zZSIsIm1hcCIsImtleSIsImljb24iLCJnZXREcm9wZG93bkl0ZW1zU2VsZWN0b3IiLCJjcmVhdGVTZWxlY3RvciIsImwiLCJTYXZlRXhwb3J0RHJvcGRvd25GYWN0b3J5IiwiZHJvcGRvd25JdGVtc1NlbGVjdG9yIiwiU2F2ZUV4cG9ydERyb3Bkb3duIiwiZGVmYXVsdFByb3BzIiwiUGljdHVyZSIsIm9uRXhwb3J0SW1hZ2UiLCJEYXRhVGFibGUiLCJvbkV4cG9ydERhdGEiLCJNYXBJY29uIiwib25FeHBvcnRNYXAiLCJTYXZlMiIsIm9uU2F2ZU1hcCIsIlNoYXJlIiwib25TaGFyZU1hcCIsImRlcHMiLCJDbG91ZFN0b3JhZ2VEcm9wZG93bkZhY3RvcnkiLCJDbG91ZFN0b3JhZ2VEcm9wZG93biIsIm9uU2F2ZVRvU3RvcmFnZSIsIm9uU2F2ZUFzVG9TdG9yYWdlIiwiUGFuZWxIZWFkZXJGYWN0b3J5IiwiX1BhbmVsSGVhZGVyIiwiX0NvbXBvbmVudCIsIlBhbmVsSGVhZGVyIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwidmFsdWUiLCJyZW5kZXIiLCJfdGhpcyIsIl90aGlzJHByb3BzIiwiYXBwTmFtZSIsImFwcFdlYnNpdGUiLCJ2ZXJzaW9uIiwiYWN0aW9uSXRlbXMiLCJ2aXNpYmxlRHJvcGRvd24iLCJzaG93RXhwb3J0RHJvcGRvd24iLCJoaWRlRXhwb3J0RHJvcGRvd24iLCJkcm9wZG93bkNhbGxiYWNrcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllczIiLCJhaSIsImxvZ29Db21wb25lbnQiLCJzdHlsZSIsInBvc2l0aW9uIiwiZHJvcGRvd25Db21wb25lbnQiLCJDb21wb25lbnQiLCJLZXBsZXJHbExvZ28iLCJEYiIsIlNhdmUiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvcGFuZWwtaGVhZGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQge2NyZWF0ZVNlbGVjdG9yfSBmcm9tICdyZXNlbGVjdCc7XG5pbXBvcnQge1Rvb2x0aXB9IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBLZXBsZXJHbExvZ28gZnJvbSAnY29tcG9uZW50cy9jb21tb24vbG9nbyc7XG5pbXBvcnQge1NhdmUsIERhdGFUYWJsZSwgU2F2ZTIsIFBpY3R1cmUsIERiLCBNYXAgYXMgTWFwSWNvbiwgU2hhcmV9IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2ljb25zJztcbmltcG9ydCBDbGlja091dHNpZGVDbG9zZURyb3Bkb3duIGZyb20gJ2NvbXBvbmVudHMvc2lkZS1wYW5lbC9wYW5lbC1kcm9wZG93bic7XG5pbXBvcnQgVG9vbGJhciBmcm9tICdjb21wb25lbnRzL2NvbW1vbi90b29sYmFyJztcbmltcG9ydCBUb29sYmFySXRlbSwge1Rvb2xiYXJJdGVtUHJvcHN9IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3Rvb2xiYXItaXRlbSc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2V9IGZyb20gJ2xvY2FsaXphdGlvbic7XG5pbXBvcnQge1VpU3RhdGV9IGZyb20gJ3JlZHVjZXJzJztcbmltcG9ydCB7QmFzZVByb3BzfSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pY29ucy9iYXNlJztcblxudHlwZSBTdHlsZWRQYW5lbEFjdGlvblByb3BzID0ge1xuICBhY3RpdmU/OiBib29sZWFuO1xufTtcblxudHlwZSBBY3Rpb25JdGVtID0ge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgYmxhbms/OiBib29sZWFuO1xuICBocmVmPzogc3RyaW5nO1xuICB0b29sdGlwPzogc3RyaW5nO1xuICBpY29uQ29tcG9uZW50OiBSZWFjdC5Db21wb25lbnRUeXBlPFBhcnRpYWw8QmFzZVByb3BzPj47XG4gIGljb25Db21wb25lbnRQcm9wcz86IEJhc2VQcm9wcztcbiAgZHJvcGRvd25Db21wb25lbnQ/OiBSZWFjdC5Db21wb25lbnRUeXBlPERyb3Bkb3duQ29tcG9uZW50UHJvcHM+O1xuICBvbkNsaWNrPzogKHA6IFBhbmVsSGVhZGVyUHJvcHMpID0+IHZvaWQ7XG59O1xuXG50eXBlIFBhbmVsQWN0aW9uUHJvcHMgPSB7XG4gIGl0ZW06IEFjdGlvbkl0ZW07XG4gIG9uQ2xpY2s6ICgpID0+IHZvaWQ7XG59O1xuXG50eXBlIFBhbmVsSGVhZGVyRHJvcGRvd25Qcm9wcyA9IHtcbiAgaWQ6IHN0cmluZztcbiAgaXRlbXM6IFRvb2xiYXJJdGVtUHJvcHNbXTtcbiAgc2hvdz86IGJvb2xlYW47XG4gIG9uQ2xvc2U6ICgpID0+IHZvaWQ7XG59O1xuXG50eXBlIERyb3Bkb3duQ2FsbGJhY2tzID0ge1xuICBsb2dvQ29tcG9uZW50PzogUmVhY3QuQ29tcG9uZW50VHlwZTx7XG4gICAgYXBwTmFtZTogc3RyaW5nO1xuICAgIGFwcFdlYnNpdGU6IHN0cmluZztcbiAgICB2ZXJzaW9uOiBzdHJpbmc7XG4gIH0+O1xuICBvbkV4cG9ydEltYWdlOiAoKSA9PiB2b2lkO1xuICBvbkV4cG9ydERhdGE6ICgpID0+IHZvaWQ7XG4gIG9uRXhwb3J0Q29uZmlnPzogKCkgPT4gdm9pZDtcbiAgb25FeHBvcnRNYXA6ICgpID0+IHZvaWQ7XG4gIG9uU2F2ZVRvU3RvcmFnZTogKCgpID0+IHZvaWQpIHwgbnVsbDtcbiAgb25TYXZlQXNUb1N0b3JhZ2U6ICgoKSA9PiB2b2lkKSB8IG51bGw7XG4gIG9uU2F2ZU1hcD86ICgpID0+IHZvaWQ7XG4gIG9uU2hhcmVNYXA6ICgoKSA9PiB2b2lkKSB8IG51bGw7XG59O1xuXG50eXBlIEl0ZW0gPSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGljb246IFJlYWN0LkNvbXBvbmVudFR5cGU8UGFydGlhbDxCYXNlUHJvcHM+PjtcbiAga2V5OiBzdHJpbmc7XG4gIG9uQ2xpY2s6IChwOiBEcm9wZG93bkNvbXBvbmVudFByb3BzKSA9PiAoKCkgPT4gdm9pZCkgfCBudWxsO1xufTtcblxudHlwZSBEcm9wZG93bkNvbXBvbmVudFByb3BzID0ge1xuICBzaG93OiBib29sZWFuO1xuICBvbkNsb3NlOiAoKSA9PiB2b2lkO1xuICBpdGVtcz86IEl0ZW1bXTtcbn0gJiBEcm9wZG93bkNhbGxiYWNrcztcblxudHlwZSBQYW5lbEhlYWRlclByb3BzID0ge1xuICBhcHBOYW1lOiBzdHJpbmc7XG4gIGFwcFdlYnNpdGU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICB2aXNpYmxlRHJvcGRvd246IFVpU3RhdGVbJ3Zpc2libGVEcm9wZG93biddO1xuICBhY3Rpb25JdGVtcz86IEFjdGlvbkl0ZW1bXTtcbiAgc2hvd0V4cG9ydERyb3Bkb3duOiAoaTogc3RyaW5nKSA9PiB2b2lkO1xuICBoaWRlRXhwb3J0RHJvcGRvd246ICgpID0+IHZvaWQ7XG59ICYgRHJvcGRvd25DYWxsYmFja3M7XG5cbmNvbnN0IFN0eWxlZFBhbmVsSGVhZGVyID0gc3R5bGVkLmRpdi5hdHRycyhwcm9wcyA9PiAoe1xuICBjbGFzc05hbWU6IGNsYXNzbmFtZXMoJ3NpZGUtc2lkZS1wYW5lbF9faGVhZGVyJywgcHJvcHMuY2xhc3NOYW1lKVxufSkpYFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNpZGVQYW5lbEhlYWRlckJnfTtcbiAgcGFkZGluZzogMTJweCAxNnB4IDAgMTZweDtcbmA7XG5cbmNvbnN0IFN0eWxlZFBhbmVsSGVhZGVyVG9wID0gc3R5bGVkLmRpdi5hdHRycyhwcm9wcyA9PiAoe1xuICBjbGFzc05hbWU6IGNsYXNzbmFtZXMoJ3NpZGUtcGFuZWxfX2hlYWRlcl9fdG9wJywgcHJvcHMuY2xhc3NOYW1lKVxufSkpYFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gIHdpZHRoOiAxMDAlO1xuYDtcblxuY29uc3QgU3R5bGVkUGFuZWxUb3BBY3Rpb25zID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ3NpZGUtcGFuZWxfX3RvcF9fYWN0aW9ucydcbn0pYFxuICBkaXNwbGF5OiBmbGV4O1xuYDtcblxuY29uc3QgU3R5bGVkUGFuZWxBY3Rpb24gPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnc2lkZS1wYW5lbF9fcGFuZWwtaGVhZGVyX19hY3Rpb24nXG59KTxTdHlsZWRQYW5lbEFjdGlvblByb3BzPmBcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiAocHJvcHMuYWN0aXZlID8gcHJvcHMudGhlbWUudGV4dENvbG9ySGwgOiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3IpfTtcbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiAyNnB4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1hcmdpbi1sZWZ0OiA0cHg7XG4gIHBhZGRpbmc6IDVweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHAge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgfVxuICBhIHtcbiAgICBoZWlnaHQ6IDIwcHg7XG4gIH1cblxuICA6aG92ZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG5cbiAgICBhIHtcbiAgICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgICB9XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZFRvb2xiYXIgPSBzdHlsZWQoVG9vbGJhcilgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbmA7XG5cbmV4cG9ydCBjb25zdCBQYW5lbEFjdGlvbjogUmVhY3QuRkM8UGFuZWxBY3Rpb25Qcm9wcz4gPSAoe2l0ZW0sIG9uQ2xpY2t9KSA9PiAoXG4gIDxTdHlsZWRQYW5lbEFjdGlvbiBkYXRhLXRpcCBkYXRhLWZvcj17YCR7aXRlbS5pZH0tYWN0aW9uYH0gb25DbGljaz17b25DbGlja30+XG4gICAge2l0ZW0ubGFiZWwgPyA8cD57aXRlbS5sYWJlbH08L3A+IDogbnVsbH1cbiAgICA8YSB0YXJnZXQ9e2l0ZW0uYmxhbmsgPyAnX2JsYW5rJyA6ICcnfSBocmVmPXtpdGVtLmhyZWZ9IHJlbD1cIm5vcmVmZXJyZXJcIj5cbiAgICAgIDxpdGVtLmljb25Db21wb25lbnQgaGVpZ2h0PVwiMjBweFwiIHsuLi5pdGVtLmljb25Db21wb25lbnRQcm9wc30gLz5cbiAgICA8L2E+XG4gICAge2l0ZW0udG9vbHRpcCA/IChcbiAgICAgIDxUb29sdGlwIGlkPXtgJHtpdGVtLmlkfS1hY3Rpb25gfSBwbGFjZT1cImJvdHRvbVwiIGRlbGF5U2hvdz17NTAwfSBlZmZlY3Q9XCJzb2xpZFwiPlxuICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17aXRlbS50b29sdGlwfSAvPlxuICAgICAgPC9Ub29sdGlwPlxuICAgICkgOiBudWxsfVxuICA8L1N0eWxlZFBhbmVsQWN0aW9uPlxuKTtcblxuZXhwb3J0IGNvbnN0IFBhbmVsSGVhZGVyRHJvcGRvd25GYWN0b3J5ID0gKCkgPT4ge1xuICBjb25zdCBQYW5lbEhlYWRlckRyb3Bkb3duOiBSZWFjdC5GQzxQYW5lbEhlYWRlckRyb3Bkb3duUHJvcHM+ID0gKHtpdGVtcywgc2hvdywgb25DbG9zZSwgaWR9KSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRUb29sYmFyIHNob3c9e3Nob3d9IGNsYXNzTmFtZT17YCR7aWR9LWRyb3Bkb3duYH0+XG4gICAgICAgIDxDbGlja091dHNpZGVDbG9zZURyb3Bkb3duXG4gICAgICAgICAgY2xhc3NOYW1lPVwicGFuZWwtaGVhZGVyLWRyb3Bkb3duX19pbm5lclwiXG4gICAgICAgICAgc2hvdz17c2hvd31cbiAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICA+XG4gICAgICAgICAge2l0ZW1zLm1hcChpdGVtID0+IChcbiAgICAgICAgICAgIDxUb29sYmFySXRlbVxuICAgICAgICAgICAgICBpZD17aXRlbS5rZXl9XG4gICAgICAgICAgICAgIGtleT17aXRlbS5rZXl9XG4gICAgICAgICAgICAgIGxhYmVsPXtpdGVtLmxhYmVsfVxuICAgICAgICAgICAgICBpY29uPXtpdGVtLmljb259XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2l0ZW0ub25DbGlja31cbiAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvQ2xpY2tPdXRzaWRlQ2xvc2VEcm9wZG93bj5cbiAgICAgIDwvU3R5bGVkVG9vbGJhcj5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiBQYW5lbEhlYWRlckRyb3Bkb3duO1xufTtcblxuY29uc3QgZ2V0RHJvcGRvd25JdGVtc1NlbGVjdG9yID0gKCkgPT5cbiAgY3JlYXRlU2VsZWN0b3IoXG4gICAgKHByb3BzOiBEcm9wZG93bkNvbXBvbmVudFByb3BzKSA9PiBwcm9wcyxcbiAgICBwcm9wcyA9PlxuICAgICAgKHByb3BzLml0ZW1zIHx8IFtdKVxuICAgICAgICAubWFwKHQgPT4gKHtcbiAgICAgICAgICAuLi50LFxuICAgICAgICAgIG9uQ2xpY2s6IHQub25DbGljayAmJiB0Lm9uQ2xpY2socHJvcHMpID8gdC5vbkNsaWNrKHByb3BzKSA6IG51bGxcbiAgICAgICAgfSkpXG4gICAgICAgIC5maWx0ZXIobCA9PiBsLm9uQ2xpY2spXG4gICk7XG5cbmV4cG9ydCBjb25zdCBTYXZlRXhwb3J0RHJvcGRvd25GYWN0b3J5ID0gKFxuICBQYW5lbEhlYWRlckRyb3Bkb3duOiBSZXR1cm5UeXBlPHR5cGVvZiBQYW5lbEhlYWRlckRyb3Bkb3duRmFjdG9yeT5cbikgPT4ge1xuICBjb25zdCBkcm9wZG93bkl0ZW1zU2VsZWN0b3IgPSBnZXREcm9wZG93bkl0ZW1zU2VsZWN0b3IoKTtcblxuICBjb25zdCBTYXZlRXhwb3J0RHJvcGRvd246IFJlYWN0LkZDPERyb3Bkb3duQ29tcG9uZW50UHJvcHM+ID0gcHJvcHMgPT4gKFxuICAgIDxQYW5lbEhlYWRlckRyb3Bkb3duXG4gICAgICBpdGVtcz17ZHJvcGRvd25JdGVtc1NlbGVjdG9yKHByb3BzKX1cbiAgICAgIHNob3c9e3Byb3BzLnNob3d9XG4gICAgICBvbkNsb3NlPXtwcm9wcy5vbkNsb3NlfVxuICAgICAgaWQ9XCJzYXZlLWV4cG9ydFwiXG4gICAgLz5cbiAgKTtcblxuICBTYXZlRXhwb3J0RHJvcGRvd24uZGVmYXVsdFByb3BzID0ge1xuICAgIGl0ZW1zOiBbXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAndG9vbGJhci5leHBvcnRJbWFnZScsXG4gICAgICAgIGljb246IFBpY3R1cmUsXG4gICAgICAgIGtleTogJ2ltYWdlJyxcbiAgICAgICAgb25DbGljazogcHJvcHMgPT4gcHJvcHMub25FeHBvcnRJbWFnZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICd0b29sYmFyLmV4cG9ydERhdGEnLFxuICAgICAgICBpY29uOiBEYXRhVGFibGUsXG4gICAgICAgIGtleTogJ2RhdGEnLFxuICAgICAgICBvbkNsaWNrOiBwcm9wcyA9PiBwcm9wcy5vbkV4cG9ydERhdGFcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAndG9vbGJhci5leHBvcnRNYXAnLFxuICAgICAgICBpY29uOiBNYXBJY29uLFxuICAgICAgICBrZXk6ICdtYXAnLFxuICAgICAgICBvbkNsaWNrOiBwcm9wcyA9PiBwcm9wcy5vbkV4cG9ydE1hcFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICd0b29sYmFyLnNhdmVNYXAnLFxuICAgICAgICBpY29uOiBTYXZlMixcbiAgICAgICAga2V5OiAnc2F2ZScsXG4gICAgICAgIG9uQ2xpY2s6IHByb3BzID0+IHByb3BzLm9uU2F2ZU1hcCFcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAndG9vbGJhci5zaGFyZU1hcFVSTCcsXG4gICAgICAgIGljb246IFNoYXJlLFxuICAgICAgICBrZXk6ICdzaGFyZScsXG4gICAgICAgIG9uQ2xpY2s6IHByb3BzID0+IHByb3BzLm9uU2hhcmVNYXBcbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIFNhdmVFeHBvcnREcm9wZG93bjtcbn07XG5TYXZlRXhwb3J0RHJvcGRvd25GYWN0b3J5LmRlcHMgPSBbUGFuZWxIZWFkZXJEcm9wZG93bkZhY3RvcnldO1xuXG5leHBvcnQgY29uc3QgQ2xvdWRTdG9yYWdlRHJvcGRvd25GYWN0b3J5ID0gKFxuICBQYW5lbEhlYWRlckRyb3Bkb3duOiBSZXR1cm5UeXBlPHR5cGVvZiBQYW5lbEhlYWRlckRyb3Bkb3duRmFjdG9yeT5cbikgPT4ge1xuICBjb25zdCBkcm9wZG93bkl0ZW1zU2VsZWN0b3IgPSBnZXREcm9wZG93bkl0ZW1zU2VsZWN0b3IoKTtcblxuICBjb25zdCBDbG91ZFN0b3JhZ2VEcm9wZG93bjogUmVhY3QuRkM8RHJvcGRvd25Db21wb25lbnRQcm9wcz4gPSBwcm9wcyA9PiAoXG4gICAgPFBhbmVsSGVhZGVyRHJvcGRvd25cbiAgICAgIGl0ZW1zPXtkcm9wZG93bkl0ZW1zU2VsZWN0b3IocHJvcHMpfVxuICAgICAgc2hvdz17cHJvcHMuc2hvd31cbiAgICAgIG9uQ2xvc2U9e3Byb3BzLm9uQ2xvc2V9XG4gICAgICBpZD1cImNsb3VkLXN0b3JhZ2VcIlxuICAgIC8+XG4gICk7XG4gIENsb3VkU3RvcmFnZURyb3Bkb3duLmRlZmF1bHRQcm9wcyA9IHtcbiAgICBpdGVtczogW1xuICAgICAge1xuICAgICAgICBsYWJlbDogJ1NhdmUnLFxuICAgICAgICBpY29uOiBTYXZlMixcbiAgICAgICAga2V5OiAnc2F2ZScsXG4gICAgICAgIG9uQ2xpY2s6IHByb3BzID0+IHByb3BzLm9uU2F2ZVRvU3RvcmFnZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICdTYXZlIEFzJyxcbiAgICAgICAgaWNvbjogU2F2ZTIsXG4gICAgICAgIGtleTogJ3NhdmVBcycsXG4gICAgICAgIG9uQ2xpY2s6IHByb3BzID0+IHByb3BzLm9uU2F2ZUFzVG9TdG9yYWdlXG4gICAgICB9XG4gICAgXVxuICB9O1xuICByZXR1cm4gQ2xvdWRTdG9yYWdlRHJvcGRvd247XG59O1xuQ2xvdWRTdG9yYWdlRHJvcGRvd25GYWN0b3J5LmRlcHMgPSBbUGFuZWxIZWFkZXJEcm9wZG93bkZhY3RvcnldO1xuXG5QYW5lbEhlYWRlckZhY3RvcnkuZGVwcyA9IFtTYXZlRXhwb3J0RHJvcGRvd25GYWN0b3J5LCBDbG91ZFN0b3JhZ2VEcm9wZG93bkZhY3RvcnldO1xuXG5mdW5jdGlvbiBQYW5lbEhlYWRlckZhY3RvcnkoXG4gIFNhdmVFeHBvcnREcm9wZG93bjogUmV0dXJuVHlwZTx0eXBlb2YgU2F2ZUV4cG9ydERyb3Bkb3duRmFjdG9yeT4sXG4gIENsb3VkU3RvcmFnZURyb3Bkb3duOiBSZXR1cm5UeXBlPHR5cGVvZiBDbG91ZFN0b3JhZ2VEcm9wZG93bkZhY3Rvcnk+XG4pOiBSZWFjdC5Db21wb25lbnRUeXBlPFBhbmVsSGVhZGVyUHJvcHM+IHtcbiAgcmV0dXJuIGNsYXNzIFBhbmVsSGVhZGVyIGV4dGVuZHMgQ29tcG9uZW50PFBhbmVsSGVhZGVyUHJvcHM+IHtcbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgICAgbG9nb0NvbXBvbmVudDogS2VwbGVyR2xMb2dvLFxuICAgICAgYWN0aW9uSXRlbXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnc3RvcmFnZScsXG4gICAgICAgICAgaWNvbkNvbXBvbmVudDogRGIsXG4gICAgICAgICAgdG9vbHRpcDogJ3Rvb2x0aXAuY2xvdWRTdG9yYWdlJyxcbiAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7fSxcbiAgICAgICAgICBkcm9wZG93bkNvbXBvbmVudDogQ2xvdWRTdG9yYWdlRHJvcGRvd25cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnc2F2ZScsXG4gICAgICAgICAgaWNvbkNvbXBvbmVudDogU2F2ZSxcbiAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7fSxcbiAgICAgICAgICBsYWJlbDogJ1NoYXJlJyxcbiAgICAgICAgICBkcm9wZG93bkNvbXBvbmVudDogU2F2ZUV4cG9ydERyb3Bkb3duXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBhcHBOYW1lLFxuICAgICAgICBhcHBXZWJzaXRlLFxuICAgICAgICB2ZXJzaW9uLFxuICAgICAgICBhY3Rpb25JdGVtcyxcbiAgICAgICAgdmlzaWJsZURyb3Bkb3duLFxuICAgICAgICBzaG93RXhwb3J0RHJvcGRvd24sXG4gICAgICAgIGhpZGVFeHBvcnREcm9wZG93bixcbiAgICAgICAgLi4uZHJvcGRvd25DYWxsYmFja3NcbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuICAgICAgbGV0IGl0ZW1zID0gYWN0aW9uSXRlbXMgfHwgW107XG5cbiAgICAgIC8vIGRvbid0IHJlbmRlciBjbG91ZCBzdG9yYWdlIGljb24gaWYgb25TYXZlVG9TdG9yYWdlIGlzIG5vdCBwcm92aWRlZFxuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLm9uU2F2ZVRvU3RvcmFnZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBpdGVtcyA9IGl0ZW1zLmZpbHRlcihhaSA9PiBhaS5pZCAhPT0gJ3N0b3JhZ2UnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZFBhbmVsSGVhZGVyIGNsYXNzTmFtZT1cInNpZGUtcGFuZWxfX3BhbmVsLWhlYWRlclwiPlxuICAgICAgICAgIDxTdHlsZWRQYW5lbEhlYWRlclRvcCBjbGFzc05hbWU9XCJzaWRlLXBhbmVsX19wYW5lbC1oZWFkZXJfX3RvcFwiPlxuICAgICAgICAgICAge3RoaXMucHJvcHMubG9nb0NvbXBvbmVudCAmJiAoXG4gICAgICAgICAgICAgIDx0aGlzLnByb3BzLmxvZ29Db21wb25lbnRcbiAgICAgICAgICAgICAgICBhcHBOYW1lPXthcHBOYW1lfVxuICAgICAgICAgICAgICAgIHZlcnNpb249e3ZlcnNpb259XG4gICAgICAgICAgICAgICAgYXBwV2Vic2l0ZT17YXBwV2Vic2l0ZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8U3R5bGVkUGFuZWxUb3BBY3Rpb25zPlxuICAgICAgICAgICAgICB7aXRlbXMubWFwKGl0ZW0gPT4gKFxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInNpZGUtcGFuZWxfX3BhbmVsLWhlYWRlcl9fcmlnaHRcIlxuICAgICAgICAgICAgICAgICAga2V5PXtpdGVtLmlkfVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3twb3NpdGlvbjogJ3JlbGF0aXZlJ319XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFBhbmVsQWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGl0ZW09e2l0ZW19XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5kcm9wZG93bkNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0V4cG9ydERyb3Bkb3duKGl0ZW0uaWQpO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9uQ2xpY2sgJiYgaXRlbS5vbkNsaWNrKHRoaXMucHJvcHMpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB7aXRlbS5kcm9wZG93bkNvbXBvbmVudCA/IChcbiAgICAgICAgICAgICAgICAgICAgPGl0ZW0uZHJvcGRvd25Db21wb25lbnRcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlPXtoaWRlRXhwb3J0RHJvcGRvd259XG4gICAgICAgICAgICAgICAgICAgICAgc2hvdz17dmlzaWJsZURyb3Bkb3duID09PSBpdGVtLmlkfVxuICAgICAgICAgICAgICAgICAgICAgIHsuLi5kcm9wZG93bkNhbGxiYWNrc31cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvU3R5bGVkUGFuZWxUb3BBY3Rpb25zPlxuICAgICAgICAgIDwvU3R5bGVkUGFuZWxIZWFkZXJUb3A+XG4gICAgICAgIDwvU3R5bGVkUGFuZWxIZWFkZXI+XG4gICAgICApO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgUGFuZWxIZWFkZXJGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsV0FBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUksU0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssa0JBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLEtBQUEsR0FBQUosc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFPLE1BQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLGNBQUEsR0FBQU4sc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFTLFFBQUEsR0FBQVAsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFVLFlBQUEsR0FBQVIsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFXLGFBQUEsR0FBQVgsT0FBQTtBQUE4QyxJQUFBWSxTQUFBO0FBQUEsSUFBQUMsZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxF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QUFBMUIsSUFBSTtVQUFBLG9CQUNidEYsTUFBQSxZQUFBd0YsYUFBQTtZQUNFbEIsU0FBUyxFQUFDLGlDQUFpQztZQUMzQzJDLEdBQUcsRUFBRTNCLElBQUksQ0FBQ0ksRUFBRztZQUNicUUsS0FBSyxFQUFFO2NBQUNDLFFBQVEsRUFBRTtZQUFVO1VBQUUsZ0JBRTlCaEssTUFBQSxZQUFBd0YsYUFBQSxDQUFDTCxXQUFXO1lBQ1ZHLElBQUksRUFBRUEsSUFBSztZQUNYQyxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQSxFQUFRO2NBQ2IsSUFBSUQsSUFBSSxDQUFDMkUsaUJBQWlCLEVBQUU7Z0JBQzFCUixrQkFBa0IsQ0FBQ25FLElBQUksQ0FBQ0ksRUFBRSxDQUFDO2NBQzdCLENBQUMsTUFBTTtnQkFDTEosSUFBSSxDQUFDQyxPQUFPLElBQUlELElBQUksQ0FBQ0MsT0FBTyxDQUFDMkQsS0FBSSxDQUFDN0UsS0FBSyxDQUFDO2NBQzFDO1lBQ0Y7VUFBRSxDQUNILENBQUMsRUFDRGlCLElBQUksQ0FBQzJFLGlCQUFpQixnQkFDckJqSyxNQUFBLFlBQUF3RixhQUFBLENBQUNGLElBQUksQ0FBQzJFLGlCQUFpQixNQUFBaEUsU0FBQTtZQUNyQmMsT0FBTyxFQUFFMkMsa0JBQW1CO1lBQzVCNUMsSUFBSSxFQUFFMEMsZUFBZSxLQUFLbEUsSUFBSSxDQUFDSTtVQUFHLEdBQzlCaUUsaUJBQWlCLENBQ3RCLENBQUMsR0FDQSxJQUNELENBQUM7UUFBQSxDQUNQLENBQ29CLENBQ0gsQ0FDTCxDQUFDO01BRXhCO0lBQUM7RUFBQSxFQS9FOEJPLGdCQUFTLE9BQUFwRyxnQkFBQSxhQUFBNEUsWUFBQSxrQkFDbEI7SUFDcEJvQixhQUFhLEVBQUVLLGdCQUFZO0lBQzNCWixXQUFXLEVBQUUsQ0FDWDtNQUNFN0QsRUFBRSxFQUFFLFNBQVM7TUFDYk0sYUFBYSxFQUFFb0UsU0FBRTtNQUNqQmhFLE9BQU8sRUFBRSxzQkFBc0I7TUFDL0JiLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBLEVBQVEsQ0FBQyxDQUFDO01BQ2pCMEUsaUJBQWlCLEVBQUUzQjtJQUNyQixDQUFDLEVBQ0Q7TUFDRTVDLEVBQUUsRUFBRSxNQUFNO01BQ1ZNLGFBQWEsRUFBRXFFLFdBQUk7TUFDbkI5RSxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQSxFQUFRLENBQUMsQ0FBQztNQUNqQkksS0FBSyxFQUFFLE9BQU87TUFDZHNFLGlCQUFpQixFQUFFekM7SUFDckIsQ0FBQztFQUVMLENBQUMsR0FBQWtCLFlBQUE7QUE4REw7QUFBQyxJQUFBNEIsUUFBQSxHQUFBbEYsT0FBQSxjQUVjcUQsa0JBQWtCIiwiaWdub3JlTGlzdCI6W119
281
+ var _default = exports.default = PanelHeaderFactory;
282
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY2xhc3NuYW1lcyIsIl9yZXNlbGVjdCIsIl9zdHlsZWRDb21wb25lbnRzMiIsIl9sb2dvIiwiX2ljb25zIiwiX3BhbmVsRHJvcGRvd24iLCJfdG9vbGJhciIsIl90b29sYmFySXRlbSIsIl9sb2NhbGl6YXRpb24iLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJTdHlsZWRQYW5lbEhlYWRlciIsInN0eWxlZCIsImRpdiIsImF0dHJzIiwicHJvcHMiLCJjbGFzc05hbWUiLCJjbGFzc25hbWVzIiwidGhlbWUiLCJzaWRlUGFuZWxIZWFkZXJCZyIsIlN0eWxlZFBhbmVsSGVhZGVyVG9wIiwiU3R5bGVkUGFuZWxUb3BBY3Rpb25zIiwiU3R5bGVkUGFuZWxBY3Rpb24iLCJhY3RpdmUiLCJ0ZXh0Q29sb3JIbCIsInN1YnRleHRDb2xvciIsIlN0eWxlZFRvb2xiYXIiLCJUb29sYmFyIiwiUGFuZWxBY3Rpb24iLCJfcmVmIiwiaXRlbSIsIm9uQ2xpY2siLCJjcmVhdGVFbGVtZW50IiwiaWQiLCJsYWJlbCIsInRhcmdldCIsImJsYW5rIiwiaHJlZiIsInJlbCIsImljb25Db21wb25lbnQiLCJfZXh0ZW5kczIiLCJoZWlnaHQiLCJpY29uQ29tcG9uZW50UHJvcHMiLCJ0b29sdGlwIiwiVG9vbHRpcCIsInBsYWNlIiwiZGVsYXlTaG93IiwiZWZmZWN0IiwiRm9ybWF0dGVkTWVzc2FnZSIsImV4cG9ydHMiLCJQYW5lbEhlYWRlckRyb3Bkb3duRmFjdG9yeSIsIlBhbmVsSGVhZGVyRHJvcGRvd24iLCJfcmVmMiIsIml0ZW1zIiwic2hvdyIsIm9uQ2xvc2UiLCJtYXAiLCJrZXkiLCJpY29uIiwiZ2V0RHJvcGRvd25JdGVtc1NlbGVjdG9yIiwiY3JlYXRlU2VsZWN0b3IiLCJmaWx0ZXIiLCJsIiwiU2F2ZUV4cG9ydERyb3Bkb3duRmFjdG9yeSIsImRyb3Bkb3duSXRlbXNTZWxlY3RvciIsIlNhdmVFeHBvcnREcm9wZG93biIsImRlZmF1bHRQcm9wcyIsIlBpY3R1cmUiLCJvbkV4cG9ydEltYWdlIiwiRGF0YVRhYmxlIiwib25FeHBvcnREYXRhIiwiTWFwSWNvbiIsIm9uRXhwb3J0TWFwIiwiU2F2ZTIiLCJvblNhdmVNYXAiLCJTaGFyZSIsIm9uU2hhcmVNYXAiLCJkZXBzIiwiQ2xvdWRTdG9yYWdlRHJvcGRvd25GYWN0b3J5IiwiQ2xvdWRTdG9yYWdlRHJvcGRvd24iLCJvblNhdmVUb1N0b3JhZ2UiLCJvblNhdmVBc1RvU3RvcmFnZSIsIlBhbmVsSGVhZGVyRmFjdG9yeSIsIl9QYW5lbEhlYWRlciIsIlBhbmVsSGVhZGVyIiwiQ29tcG9uZW50IiwicmVuZGVyIiwiYXBwTmFtZSIsImFwcFdlYnNpdGUiLCJ2ZXJzaW9uIiwiYWN0aW9uSXRlbXMiLCJ2aXNpYmxlRHJvcGRvd24iLCJzaG93RXhwb3J0RHJvcGRvd24iLCJoaWRlRXhwb3J0RHJvcGRvd24iLCJkcm9wZG93bkNhbGxiYWNrcyIsImFpIiwibG9nb0NvbXBvbmVudCIsInN0eWxlIiwicG9zaXRpb24iLCJkcm9wZG93bkNvbXBvbmVudCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJLZXBsZXJHbExvZ28iLCJEYiIsIlNhdmUiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvcGFuZWwtaGVhZGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQge2NyZWF0ZVNlbGVjdG9yfSBmcm9tICdyZXNlbGVjdCc7XG5pbXBvcnQge1Rvb2x0aXB9IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBLZXBsZXJHbExvZ28gZnJvbSAnY29tcG9uZW50cy9jb21tb24vbG9nbyc7XG5pbXBvcnQge1NhdmUsIERhdGFUYWJsZSwgU2F2ZTIsIFBpY3R1cmUsIERiLCBNYXAgYXMgTWFwSWNvbiwgU2hhcmV9IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2ljb25zJztcbmltcG9ydCBDbGlja091dHNpZGVDbG9zZURyb3Bkb3duIGZyb20gJ2NvbXBvbmVudHMvc2lkZS1wYW5lbC9wYW5lbC1kcm9wZG93bic7XG5pbXBvcnQgVG9vbGJhciBmcm9tICdjb21wb25lbnRzL2NvbW1vbi90b29sYmFyJztcbmltcG9ydCBUb29sYmFySXRlbSwge1Rvb2xiYXJJdGVtUHJvcHN9IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3Rvb2xiYXItaXRlbSc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2V9IGZyb20gJ2xvY2FsaXphdGlvbic7XG5pbXBvcnQge1VpU3RhdGV9IGZyb20gJ3JlZHVjZXJzJztcbmltcG9ydCB7QmFzZVByb3BzfSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pY29ucy9iYXNlJztcblxudHlwZSBTdHlsZWRQYW5lbEFjdGlvblByb3BzID0ge1xuICBhY3RpdmU/OiBib29sZWFuO1xufTtcblxudHlwZSBBY3Rpb25JdGVtID0ge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgYmxhbms/OiBib29sZWFuO1xuICBocmVmPzogc3RyaW5nO1xuICB0b29sdGlwPzogc3RyaW5nO1xuICBpY29uQ29tcG9uZW50OiBSZWFjdC5Db21wb25lbnRUeXBlPFBhcnRpYWw8QmFzZVByb3BzPj47XG4gIGljb25Db21wb25lbnRQcm9wcz86IEJhc2VQcm9wcztcbiAgZHJvcGRvd25Db21wb25lbnQ/OiBSZWFjdC5Db21wb25lbnRUeXBlPERyb3Bkb3duQ29tcG9uZW50UHJvcHM+O1xuICBvbkNsaWNrPzogKHA6IFBhbmVsSGVhZGVyUHJvcHMpID0+IHZvaWQ7XG59O1xuXG50eXBlIFBhbmVsQWN0aW9uUHJvcHMgPSB7XG4gIGl0ZW06IEFjdGlvbkl0ZW07XG4gIG9uQ2xpY2s6ICgpID0+IHZvaWQ7XG59O1xuXG50eXBlIFBhbmVsSGVhZGVyRHJvcGRvd25Qcm9wcyA9IHtcbiAgaWQ6IHN0cmluZztcbiAgaXRlbXM6IFRvb2xiYXJJdGVtUHJvcHNbXTtcbiAgc2hvdz86IGJvb2xlYW47XG4gIG9uQ2xvc2U6ICgpID0+IHZvaWQ7XG59O1xuXG50eXBlIERyb3Bkb3duQ2FsbGJhY2tzID0ge1xuICBsb2dvQ29tcG9uZW50PzogUmVhY3QuQ29tcG9uZW50VHlwZTx7XG4gICAgYXBwTmFtZTogc3RyaW5nO1xuICAgIGFwcFdlYnNpdGU6IHN0cmluZztcbiAgICB2ZXJzaW9uOiBzdHJpbmc7XG4gIH0+O1xuICBvbkV4cG9ydEltYWdlOiAoKSA9PiB2b2lkO1xuICBvbkV4cG9ydERhdGE6ICgpID0+IHZvaWQ7XG4gIG9uRXhwb3J0Q29uZmlnPzogKCkgPT4gdm9pZDtcbiAgb25FeHBvcnRNYXA6ICgpID0+IHZvaWQ7XG4gIG9uU2F2ZVRvU3RvcmFnZTogKCgpID0+IHZvaWQpIHwgbnVsbDtcbiAgb25TYXZlQXNUb1N0b3JhZ2U6ICgoKSA9PiB2b2lkKSB8IG51bGw7XG4gIG9uU2F2ZU1hcD86ICgpID0+IHZvaWQ7XG4gIG9uU2hhcmVNYXA6ICgoKSA9PiB2b2lkKSB8IG51bGw7XG59O1xuXG50eXBlIEl0ZW0gPSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGljb246IFJlYWN0LkNvbXBvbmVudFR5cGU8UGFydGlhbDxCYXNlUHJvcHM+PjtcbiAga2V5OiBzdHJpbmc7XG4gIG9uQ2xpY2s6IChwOiBEcm9wZG93bkNvbXBvbmVudFByb3BzKSA9PiAoKCkgPT4gdm9pZCkgfCBudWxsO1xufTtcblxudHlwZSBEcm9wZG93bkNvbXBvbmVudFByb3BzID0ge1xuICBzaG93OiBib29sZWFuO1xuICBvbkNsb3NlOiAoKSA9PiB2b2lkO1xuICBpdGVtcz86IEl0ZW1bXTtcbn0gJiBEcm9wZG93bkNhbGxiYWNrcztcblxudHlwZSBQYW5lbEhlYWRlclByb3BzID0ge1xuICBhcHBOYW1lOiBzdHJpbmc7XG4gIGFwcFdlYnNpdGU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICB2aXNpYmxlRHJvcGRvd246IFVpU3RhdGVbJ3Zpc2libGVEcm9wZG93biddO1xuICBhY3Rpb25JdGVtcz86IEFjdGlvbkl0ZW1bXTtcbiAgc2hvd0V4cG9ydERyb3Bkb3duOiAoaTogc3RyaW5nKSA9PiB2b2lkO1xuICBoaWRlRXhwb3J0RHJvcGRvd246ICgpID0+IHZvaWQ7XG59ICYgRHJvcGRvd25DYWxsYmFja3M7XG5cbmNvbnN0IFN0eWxlZFBhbmVsSGVhZGVyID0gc3R5bGVkLmRpdi5hdHRycyhwcm9wcyA9PiAoe1xuICBjbGFzc05hbWU6IGNsYXNzbmFtZXMoJ3NpZGUtc2lkZS1wYW5lbF9faGVhZGVyJywgcHJvcHMuY2xhc3NOYW1lKVxufSkpYFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNpZGVQYW5lbEhlYWRlckJnfTtcbiAgcGFkZGluZzogMTJweCAxNnB4IDAgMTZweDtcbmA7XG5cbmNvbnN0IFN0eWxlZFBhbmVsSGVhZGVyVG9wID0gc3R5bGVkLmRpdi5hdHRycyhwcm9wcyA9PiAoe1xuICBjbGFzc05hbWU6IGNsYXNzbmFtZXMoJ3NpZGUtcGFuZWxfX2hlYWRlcl9fdG9wJywgcHJvcHMuY2xhc3NOYW1lKVxufSkpYFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gIHdpZHRoOiAxMDAlO1xuYDtcblxuY29uc3QgU3R5bGVkUGFuZWxUb3BBY3Rpb25zID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ3NpZGUtcGFuZWxfX3RvcF9fYWN0aW9ucydcbn0pYFxuICBkaXNwbGF5OiBmbGV4O1xuYDtcblxuY29uc3QgU3R5bGVkUGFuZWxBY3Rpb24gPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnc2lkZS1wYW5lbF9fcGFuZWwtaGVhZGVyX19hY3Rpb24nXG59KTxTdHlsZWRQYW5lbEFjdGlvblByb3BzPmBcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiAocHJvcHMuYWN0aXZlID8gcHJvcHMudGhlbWUudGV4dENvbG9ySGwgOiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3IpfTtcbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiAyNnB4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1hcmdpbi1sZWZ0OiA0cHg7XG4gIHBhZGRpbmc6IDVweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHAge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgfVxuICBhIHtcbiAgICBoZWlnaHQ6IDIwcHg7XG4gIH1cblxuICA6aG92ZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG5cbiAgICBhIHtcbiAgICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgICB9XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZFRvb2xiYXIgPSBzdHlsZWQoVG9vbGJhcilgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbmA7XG5cbmV4cG9ydCBjb25zdCBQYW5lbEFjdGlvbjogUmVhY3QuRkM8UGFuZWxBY3Rpb25Qcm9wcz4gPSAoe2l0ZW0sIG9uQ2xpY2t9KSA9PiAoXG4gIDxTdHlsZWRQYW5lbEFjdGlvbiBkYXRhLXRpcCBkYXRhLWZvcj17YCR7aXRlbS5pZH0tYWN0aW9uYH0gb25DbGljaz17b25DbGlja30+XG4gICAge2l0ZW0ubGFiZWwgPyA8cD57aXRlbS5sYWJlbH08L3A+IDogbnVsbH1cbiAgICA8YSB0YXJnZXQ9e2l0ZW0uYmxhbmsgPyAnX2JsYW5rJyA6ICcnfSBocmVmPXtpdGVtLmhyZWZ9IHJlbD1cIm5vcmVmZXJyZXJcIj5cbiAgICAgIDxpdGVtLmljb25Db21wb25lbnQgaGVpZ2h0PVwiMjBweFwiIHsuLi5pdGVtLmljb25Db21wb25lbnRQcm9wc30gLz5cbiAgICA8L2E+XG4gICAge2l0ZW0udG9vbHRpcCA/IChcbiAgICAgIDxUb29sdGlwIGlkPXtgJHtpdGVtLmlkfS1hY3Rpb25gfSBwbGFjZT1cImJvdHRvbVwiIGRlbGF5U2hvdz17NTAwfSBlZmZlY3Q9XCJzb2xpZFwiPlxuICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17aXRlbS50b29sdGlwfSAvPlxuICAgICAgPC9Ub29sdGlwPlxuICAgICkgOiBudWxsfVxuICA8L1N0eWxlZFBhbmVsQWN0aW9uPlxuKTtcblxuZXhwb3J0IGNvbnN0IFBhbmVsSGVhZGVyRHJvcGRvd25GYWN0b3J5ID0gKCkgPT4ge1xuICBjb25zdCBQYW5lbEhlYWRlckRyb3Bkb3duOiBSZWFjdC5GQzxQYW5lbEhlYWRlckRyb3Bkb3duUHJvcHM+ID0gKHtpdGVtcywgc2hvdywgb25DbG9zZSwgaWR9KSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRUb29sYmFyIHNob3c9e3Nob3d9IGNsYXNzTmFtZT17YCR7aWR9LWRyb3Bkb3duYH0+XG4gICAgICAgIDxDbGlja091dHNpZGVDbG9zZURyb3Bkb3duXG4gICAgICAgICAgY2xhc3NOYW1lPVwicGFuZWwtaGVhZGVyLWRyb3Bkb3duX19pbm5lclwiXG4gICAgICAgICAgc2hvdz17c2hvd31cbiAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICA+XG4gICAgICAgICAge2l0ZW1zLm1hcChpdGVtID0+IChcbiAgICAgICAgICAgIDxUb29sYmFySXRlbVxuICAgICAgICAgICAgICBpZD17aXRlbS5rZXl9XG4gICAgICAgICAgICAgIGtleT17aXRlbS5rZXl9XG4gICAgICAgICAgICAgIGxhYmVsPXtpdGVtLmxhYmVsfVxuICAgICAgICAgICAgICBpY29uPXtpdGVtLmljb259XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2l0ZW0ub25DbGlja31cbiAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvQ2xpY2tPdXRzaWRlQ2xvc2VEcm9wZG93bj5cbiAgICAgIDwvU3R5bGVkVG9vbGJhcj5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiBQYW5lbEhlYWRlckRyb3Bkb3duO1xufTtcblxuY29uc3QgZ2V0RHJvcGRvd25JdGVtc1NlbGVjdG9yID0gKCkgPT5cbiAgY3JlYXRlU2VsZWN0b3IoXG4gICAgKHByb3BzOiBEcm9wZG93bkNvbXBvbmVudFByb3BzKSA9PiBwcm9wcyxcbiAgICBwcm9wcyA9PlxuICAgICAgKHByb3BzLml0ZW1zIHx8IFtdKVxuICAgICAgICAubWFwKHQgPT4gKHtcbiAgICAgICAgICAuLi50LFxuICAgICAgICAgIG9uQ2xpY2s6IHQub25DbGljayAmJiB0Lm9uQ2xpY2socHJvcHMpID8gdC5vbkNsaWNrKHByb3BzKSA6IG51bGxcbiAgICAgICAgfSkpXG4gICAgICAgIC5maWx0ZXIobCA9PiBsLm9uQ2xpY2spXG4gICk7XG5cbmV4cG9ydCBjb25zdCBTYXZlRXhwb3J0RHJvcGRvd25GYWN0b3J5ID0gKFxuICBQYW5lbEhlYWRlckRyb3Bkb3duOiBSZXR1cm5UeXBlPHR5cGVvZiBQYW5lbEhlYWRlckRyb3Bkb3duRmFjdG9yeT5cbikgPT4ge1xuICBjb25zdCBkcm9wZG93bkl0ZW1zU2VsZWN0b3IgPSBnZXREcm9wZG93bkl0ZW1zU2VsZWN0b3IoKTtcblxuICBjb25zdCBTYXZlRXhwb3J0RHJvcGRvd246IFJlYWN0LkZDPERyb3Bkb3duQ29tcG9uZW50UHJvcHM+ID0gcHJvcHMgPT4gKFxuICAgIDxQYW5lbEhlYWRlckRyb3Bkb3duXG4gICAgICBpdGVtcz17ZHJvcGRvd25JdGVtc1NlbGVjdG9yKHByb3BzKX1cbiAgICAgIHNob3c9e3Byb3BzLnNob3d9XG4gICAgICBvbkNsb3NlPXtwcm9wcy5vbkNsb3NlfVxuICAgICAgaWQ9XCJzYXZlLWV4cG9ydFwiXG4gICAgLz5cbiAgKTtcblxuICBTYXZlRXhwb3J0RHJvcGRvd24uZGVmYXVsdFByb3BzID0ge1xuICAgIGl0ZW1zOiBbXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAndG9vbGJhci5leHBvcnRJbWFnZScsXG4gICAgICAgIGljb246IFBpY3R1cmUsXG4gICAgICAgIGtleTogJ2ltYWdlJyxcbiAgICAgICAgb25DbGljazogcHJvcHMgPT4gcHJvcHMub25FeHBvcnRJbWFnZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICd0b29sYmFyLmV4cG9ydERhdGEnLFxuICAgICAgICBpY29uOiBEYXRhVGFibGUsXG4gICAgICAgIGtleTogJ2RhdGEnLFxuICAgICAgICBvbkNsaWNrOiBwcm9wcyA9PiBwcm9wcy5vbkV4cG9ydERhdGFcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAndG9vbGJhci5leHBvcnRNYXAnLFxuICAgICAgICBpY29uOiBNYXBJY29uLFxuICAgICAgICBrZXk6ICdtYXAnLFxuICAgICAgICBvbkNsaWNrOiBwcm9wcyA9PiBwcm9wcy5vbkV4cG9ydE1hcFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICd0b29sYmFyLnNhdmVNYXAnLFxuICAgICAgICBpY29uOiBTYXZlMixcbiAgICAgICAga2V5OiAnc2F2ZScsXG4gICAgICAgIG9uQ2xpY2s6IHByb3BzID0+IHByb3BzLm9uU2F2ZU1hcCFcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAndG9vbGJhci5zaGFyZU1hcFVSTCcsXG4gICAgICAgIGljb246IFNoYXJlLFxuICAgICAgICBrZXk6ICdzaGFyZScsXG4gICAgICAgIG9uQ2xpY2s6IHByb3BzID0+IHByb3BzLm9uU2hhcmVNYXBcbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIFNhdmVFeHBvcnREcm9wZG93bjtcbn07XG5TYXZlRXhwb3J0RHJvcGRvd25GYWN0b3J5LmRlcHMgPSBbUGFuZWxIZWFkZXJEcm9wZG93bkZhY3RvcnldO1xuXG5leHBvcnQgY29uc3QgQ2xvdWRTdG9yYWdlRHJvcGRvd25GYWN0b3J5ID0gKFxuICBQYW5lbEhlYWRlckRyb3Bkb3duOiBSZXR1cm5UeXBlPHR5cGVvZiBQYW5lbEhlYWRlckRyb3Bkb3duRmFjdG9yeT5cbikgPT4ge1xuICBjb25zdCBkcm9wZG93bkl0ZW1zU2VsZWN0b3IgPSBnZXREcm9wZG93bkl0ZW1zU2VsZWN0b3IoKTtcblxuICBjb25zdCBDbG91ZFN0b3JhZ2VEcm9wZG93bjogUmVhY3QuRkM8RHJvcGRvd25Db21wb25lbnRQcm9wcz4gPSBwcm9wcyA9PiAoXG4gICAgPFBhbmVsSGVhZGVyRHJvcGRvd25cbiAgICAgIGl0ZW1zPXtkcm9wZG93bkl0ZW1zU2VsZWN0b3IocHJvcHMpfVxuICAgICAgc2hvdz17cHJvcHMuc2hvd31cbiAgICAgIG9uQ2xvc2U9e3Byb3BzLm9uQ2xvc2V9XG4gICAgICBpZD1cImNsb3VkLXN0b3JhZ2VcIlxuICAgIC8+XG4gICk7XG4gIENsb3VkU3RvcmFnZURyb3Bkb3duLmRlZmF1bHRQcm9wcyA9IHtcbiAgICBpdGVtczogW1xuICAgICAge1xuICAgICAgICBsYWJlbDogJ1NhdmUnLFxuICAgICAgICBpY29uOiBTYXZlMixcbiAgICAgICAga2V5OiAnc2F2ZScsXG4gICAgICAgIG9uQ2xpY2s6IHByb3BzID0+IHByb3BzLm9uU2F2ZVRvU3RvcmFnZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICdTYXZlIEFzJyxcbiAgICAgICAgaWNvbjogU2F2ZTIsXG4gICAgICAgIGtleTogJ3NhdmVBcycsXG4gICAgICAgIG9uQ2xpY2s6IHByb3BzID0+IHByb3BzLm9uU2F2ZUFzVG9TdG9yYWdlXG4gICAgICB9XG4gICAgXVxuICB9O1xuICByZXR1cm4gQ2xvdWRTdG9yYWdlRHJvcGRvd247XG59O1xuQ2xvdWRTdG9yYWdlRHJvcGRvd25GYWN0b3J5LmRlcHMgPSBbUGFuZWxIZWFkZXJEcm9wZG93bkZhY3RvcnldO1xuXG5QYW5lbEhlYWRlckZhY3RvcnkuZGVwcyA9IFtTYXZlRXhwb3J0RHJvcGRvd25GYWN0b3J5LCBDbG91ZFN0b3JhZ2VEcm9wZG93bkZhY3RvcnldO1xuXG5mdW5jdGlvbiBQYW5lbEhlYWRlckZhY3RvcnkoXG4gIFNhdmVFeHBvcnREcm9wZG93bjogUmV0dXJuVHlwZTx0eXBlb2YgU2F2ZUV4cG9ydERyb3Bkb3duRmFjdG9yeT4sXG4gIENsb3VkU3RvcmFnZURyb3Bkb3duOiBSZXR1cm5UeXBlPHR5cGVvZiBDbG91ZFN0b3JhZ2VEcm9wZG93bkZhY3Rvcnk+XG4pOiBSZWFjdC5Db21wb25lbnRUeXBlPFBhbmVsSGVhZGVyUHJvcHM+IHtcbiAgcmV0dXJuIGNsYXNzIFBhbmVsSGVhZGVyIGV4dGVuZHMgQ29tcG9uZW50PFBhbmVsSGVhZGVyUHJvcHM+IHtcbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgICAgbG9nb0NvbXBvbmVudDogS2VwbGVyR2xMb2dvLFxuICAgICAgYWN0aW9uSXRlbXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnc3RvcmFnZScsXG4gICAgICAgICAgaWNvbkNvbXBvbmVudDogRGIsXG4gICAgICAgICAgdG9vbHRpcDogJ3Rvb2x0aXAuY2xvdWRTdG9yYWdlJyxcbiAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7fSxcbiAgICAgICAgICBkcm9wZG93bkNvbXBvbmVudDogQ2xvdWRTdG9yYWdlRHJvcGRvd25cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnc2F2ZScsXG4gICAgICAgICAgaWNvbkNvbXBvbmVudDogU2F2ZSxcbiAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7fSxcbiAgICAgICAgICBsYWJlbDogJ1NoYXJlJyxcbiAgICAgICAgICBkcm9wZG93bkNvbXBvbmVudDogU2F2ZUV4cG9ydERyb3Bkb3duXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBhcHBOYW1lLFxuICAgICAgICBhcHBXZWJzaXRlLFxuICAgICAgICB2ZXJzaW9uLFxuICAgICAgICBhY3Rpb25JdGVtcyxcbiAgICAgICAgdmlzaWJsZURyb3Bkb3duLFxuICAgICAgICBzaG93RXhwb3J0RHJvcGRvd24sXG4gICAgICAgIGhpZGVFeHBvcnREcm9wZG93bixcbiAgICAgICAgLi4uZHJvcGRvd25DYWxsYmFja3NcbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuICAgICAgbGV0IGl0ZW1zID0gYWN0aW9uSXRlbXMgfHwgW107XG5cbiAgICAgIC8vIGRvbid0IHJlbmRlciBjbG91ZCBzdG9yYWdlIGljb24gaWYgb25TYXZlVG9TdG9yYWdlIGlzIG5vdCBwcm92aWRlZFxuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLm9uU2F2ZVRvU3RvcmFnZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBpdGVtcyA9IGl0ZW1zLmZpbHRlcihhaSA9PiBhaS5pZCAhPT0gJ3N0b3JhZ2UnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZFBhbmVsSGVhZGVyIGNsYXNzTmFtZT1cInNpZGUtcGFuZWxfX3BhbmVsLWhlYWRlclwiPlxuICAgICAgICAgIDxTdHlsZWRQYW5lbEhlYWRlclRvcCBjbGFzc05hbWU9XCJzaWRlLXBhbmVsX19wYW5lbC1oZWFkZXJfX3RvcFwiPlxuICAgICAgICAgICAge3RoaXMucHJvcHMubG9nb0NvbXBvbmVudCAmJiAoXG4gICAgICAgICAgICAgIDx0aGlzLnByb3BzLmxvZ29Db21wb25lbnRcbiAgICAgICAgICAgICAgICBhcHBOYW1lPXthcHBOYW1lfVxuICAgICAgICAgICAgICAgIHZlcnNpb249e3ZlcnNpb259XG4gICAgICAgICAgICAgICAgYXBwV2Vic2l0ZT17YXBwV2Vic2l0ZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8U3R5bGVkUGFuZWxUb3BBY3Rpb25zPlxuICAgICAgICAgICAgICB7aXRlbXMubWFwKGl0ZW0gPT4gKFxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInNpZGUtcGFuZWxfX3BhbmVsLWhlYWRlcl9fcmlnaHRcIlxuICAgICAgICAgICAgICAgICAga2V5PXtpdGVtLmlkfVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3twb3NpdGlvbjogJ3JlbGF0aXZlJ319XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFBhbmVsQWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGl0ZW09e2l0ZW19XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5kcm9wZG93bkNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0V4cG9ydERyb3Bkb3duKGl0ZW0uaWQpO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9uQ2xpY2sgJiYgaXRlbS5vbkNsaWNrKHRoaXMucHJvcHMpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB7aXRlbS5kcm9wZG93bkNvbXBvbmVudCA/IChcbiAgICAgICAgICAgICAgICAgICAgPGl0ZW0uZHJvcGRvd25Db21wb25lbnRcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlPXtoaWRlRXhwb3J0RHJvcGRvd259XG4gICAgICAgICAgICAgICAgICAgICAgc2hvdz17dmlzaWJsZURyb3Bkb3duID09PSBpdGVtLmlkfVxuICAgICAgICAgICAgICAgICAgICAgIHsuLi5kcm9wZG93bkNhbGxiYWNrc31cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvU3R5bGVkUGFuZWxUb3BBY3Rpb25zPlxuICAgICAgICAgIDwvU3R5bGVkUGFuZWxIZWFkZXJUb3A+XG4gICAgICAgIDwvU3R5bGVkUGFuZWxIZWFkZXI+XG4gICAgICApO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgUGFuZWxIZWFkZXJGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFvQkEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFdBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFJLFNBQUEsR0FBQUosT0FBQTtB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RUFBRTNCLElBQUksQ0FBQ0csRUFBRztRQUNiZ0UsS0FBSyxFQUFFO1VBQUNDLFFBQVEsRUFBRTtRQUFVO01BQUUsZ0JBRTlCekgsTUFBQSxDQUFBb0IsT0FBQSxDQUFBbUMsYUFBQSxDQUFDSixXQUFXO1FBQ1ZFLElBQUksRUFBRUEsSUFBSztRQUNYQyxPQUFPLEVBQUVBLENBQUEsS0FBTTtVQUNiLElBQUlELElBQUksQ0FBQ3FFLGlCQUFpQixFQUFFO1lBQzFCUCxrQkFBa0IsQ0FBQzlELElBQUksQ0FBQ0csRUFBRSxDQUFDO1VBQzdCLENBQUMsTUFBTTtZQUNMSCxJQUFJLENBQUNDLE9BQU8sSUFBSUQsSUFBSSxDQUFDQyxPQUFPLENBQUMsSUFBSSxDQUFDaEIsS0FBSyxDQUFDO1VBQzFDO1FBQ0Y7TUFBRSxDQUNILENBQUMsRUFDRGUsSUFBSSxDQUFDcUUsaUJBQWlCLGdCQUNyQjFILE1BQUEsQ0FBQW9CLE9BQUEsQ0FBQW1DLGFBQUEsQ0FBQ0YsSUFBSSxDQUFDcUUsaUJBQWlCLE1BQUEzRCxTQUFBLENBQUEzQyxPQUFBO1FBQ3JCMEQsT0FBTyxFQUFFc0Msa0JBQW1CO1FBQzVCdkMsSUFBSSxFQUFFcUMsZUFBZSxLQUFLN0QsSUFBSSxDQUFDRztNQUFHLEdBQzlCNkQsaUJBQWlCLENBQ3RCLENBQUMsR0FDQSxJQUNELENBQ04sQ0FDb0IsQ0FDSCxDQUNMLENBQUM7SUFFeEI7RUFDRixDQUFDLE1BQUFNLGdCQUFBLENBQUF2RyxPQUFBLEVBQUFzRixZQUFBLGtCQS9FdUI7SUFDcEJhLGFBQWEsRUFBRUssYUFBWTtJQUMzQlgsV0FBVyxFQUFFLENBQ1g7TUFDRXpELEVBQUUsRUFBRSxTQUFTO01BQ2JNLGFBQWEsRUFBRStELFNBQUU7TUFDakIzRCxPQUFPLEVBQUUsc0JBQXNCO01BQy9CWixPQUFPLEVBQUVBLENBQUEsS0FBTSxDQUFDLENBQUM7TUFDakJvRSxpQkFBaUIsRUFBRXBCO0lBQ3JCLENBQUMsRUFDRDtNQUNFOUMsRUFBRSxFQUFFLE1BQU07TUFDVk0sYUFBYSxFQUFFZ0UsV0FBSTtNQUNuQnhFLE9BQU8sRUFBRUEsQ0FBQSxLQUFNLENBQUMsQ0FBQztNQUNqQkcsS0FBSyxFQUFFLE9BQU87TUFDZGlFLGlCQUFpQixFQUFFbEM7SUFDckIsQ0FBQztFQUVMLENBQUMsR0FBQWtCLFlBQUE7QUE4REw7QUFBQyxJQUFBcUIsUUFBQSxHQUFBdkQsT0FBQSxDQUFBcEQsT0FBQSxHQUVjcUYsa0JBQWtCIiwiaWdub3JlTGlzdCI6W119