@kepler.gl/components 3.3.0-alpha.5 → 3.3.0-alpha.6

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 (1305) hide show
  1. package/dist/cjs/annotations/annotation-node.js +145 -0
  2. package/dist/cjs/annotations/annotation-overlay.js +168 -0
  3. package/dist/cjs/annotations/annotation-panel.js +361 -0
  4. package/dist/cjs/annotations/annotation-text.js +149 -0
  5. package/dist/cjs/annotations/annotation-utils.js +197 -0
  6. package/dist/cjs/annotations/index.js +53 -0
  7. package/dist/cjs/annotations/lexical-editor/clickable-link-plugin.js +71 -0
  8. package/dist/cjs/annotations/lexical-editor/floating-link-editor.js +193 -0
  9. package/dist/cjs/annotations/lexical-editor/index.js +78 -0
  10. package/dist/cjs/annotations/lexical-editor/lexical-constants.js +22 -0
  11. package/dist/cjs/annotations/lexical-editor/lexical-nodes.js +13 -0
  12. package/dist/cjs/annotations/lexical-editor/lexical-rich-text-editor.js +121 -0
  13. package/dist/cjs/annotations/lexical-editor/lexical-theme.js +25 -0
  14. package/dist/cjs/annotations/lexical-editor/lexical-toolbar.js +292 -0
  15. package/dist/cjs/annotations/lexical-editor/lexical-utils.js +45 -0
  16. package/dist/cjs/annotations/lexical-editor/use-lexical-toolbar.js +253 -0
  17. package/dist/cjs/bottom-widget.js +183 -0
  18. package/dist/cjs/common/action-panel.js +133 -0
  19. package/dist/cjs/common/animation-control/animation-control.js +100 -0
  20. package/dist/cjs/common/animation-control/animation-controller.js +271 -0
  21. package/dist/cjs/common/animation-control/animation-speed-slider.js +63 -0
  22. package/dist/cjs/common/animation-control/animation-window-control.js +59 -0
  23. package/dist/cjs/common/animation-control/export-video-control.js +43 -0
  24. package/dist/cjs/common/animation-control/floating-time-display.js +131 -0
  25. package/dist/cjs/common/animation-control/play-control.js +50 -0
  26. package/dist/cjs/common/animation-control/playback-controls.js +164 -0
  27. package/dist/cjs/common/animation-control/reset-control.js +41 -0
  28. package/dist/cjs/common/animation-control/speed-control.js +51 -0
  29. package/dist/cjs/common/animation-control/window-action-control.js +57 -0
  30. package/dist/cjs/common/checkbox.js +101 -0
  31. package/dist/cjs/common/color-legend.js +272 -0
  32. package/dist/cjs/common/column-stats-chart.js +312 -0
  33. package/dist/cjs/common/data-table/button.js +38 -0
  34. package/dist/cjs/common/data-table/canvas.js +26 -0
  35. package/dist/cjs/common/data-table/cell-size.js +183 -0
  36. package/dist/cjs/common/data-table/display-format.js +125 -0
  37. package/dist/cjs/common/data-table/grid.js +106 -0
  38. package/dist/cjs/common/data-table/header-cell.js +148 -0
  39. package/dist/cjs/common/data-table/index.js +470 -0
  40. package/dist/cjs/common/data-table/option-dropdown.js +159 -0
  41. package/dist/cjs/common/dataset-label.js +27 -0
  42. package/dist/cjs/common/dnd-layer-items.js +22 -0
  43. package/dist/cjs/common/error-boundary.js +59 -0
  44. package/dist/cjs/common/field-selector.js +172 -0
  45. package/dist/cjs/common/field-token.js +43 -0
  46. package/dist/cjs/common/file-uploader/file-drop.js +180 -0
  47. package/dist/cjs/common/file-uploader/file-upload-progress.js +84 -0
  48. package/dist/cjs/common/file-uploader/file-upload.js +241 -0
  49. package/dist/cjs/common/file-uploader/upload-button.js +58 -0
  50. package/dist/cjs/common/flex-container.js +15 -0
  51. package/dist/cjs/common/histogram-plot.js +282 -0
  52. package/dist/cjs/common/icon-button.js +25 -0
  53. package/dist/cjs/common/icons/3d-models/airplane.js +103 -0
  54. package/dist/cjs/common/icons/3d-models/bicycle.js +425 -0
  55. package/dist/cjs/common/icons/3d-models/boeing.js +118 -0
  56. package/dist/cjs/common/icons/3d-models/car.js +109 -0
  57. package/dist/cjs/common/icons/3d-models/cargoship.js +245 -0
  58. package/dist/cjs/common/icons/3d-models/evtol.js +133 -0
  59. package/dist/cjs/common/icons/3d-models/glider.js +61 -0
  60. package/dist/cjs/common/icons/3d-models/helicopter.js +109 -0
  61. package/dist/cjs/common/icons/3d-models/scooter.js +158 -0
  62. package/dist/cjs/common/icons/3d-models/semitruck.js +176 -0
  63. package/dist/cjs/common/icons/3d-models/truck.js +121 -0
  64. package/dist/cjs/common/icons/add.js +40 -0
  65. package/dist/cjs/common/icons/anchor_window.js +41 -0
  66. package/dist/cjs/common/icons/annotation-text.js +55 -0
  67. package/dist/cjs/common/icons/arrow-down-alt.js +40 -0
  68. package/dist/cjs/common/icons/arrow-down-full.js +49 -0
  69. package/dist/cjs/common/icons/arrow-down-small.js +53 -0
  70. package/dist/cjs/common/icons/arrow-down-solid.js +40 -0
  71. package/dist/cjs/common/icons/arrow-down.js +50 -0
  72. package/dist/cjs/common/icons/arrow-left.js +43 -0
  73. package/dist/cjs/common/icons/arrow-right.js +40 -0
  74. package/dist/cjs/common/icons/arrow-up-alt.js +41 -0
  75. package/dist/cjs/common/icons/arrow-up-solid.js +40 -0
  76. package/dist/cjs/common/icons/arrow-up.js +40 -0
  77. package/dist/cjs/common/icons/base-map.js +56 -0
  78. package/dist/cjs/common/icons/base.js +78 -0
  79. package/dist/cjs/common/icons/bug.js +70 -0
  80. package/dist/cjs/common/icons/calendar.js +48 -0
  81. package/dist/cjs/common/icons/cancel.js +40 -0
  82. package/dist/cjs/common/icons/checkmark.js +46 -0
  83. package/dist/cjs/common/icons/clipboard.js +41 -0
  84. package/dist/cjs/common/icons/clock.js +42 -0
  85. package/dist/cjs/common/icons/close.js +46 -0
  86. package/dist/cjs/common/icons/cloud.js +50 -0
  87. package/dist/cjs/common/icons/code-alt.js +43 -0
  88. package/dist/cjs/common/icons/copy.js +51 -0
  89. package/dist/cjs/common/icons/crosshairs.js +43 -0
  90. package/dist/cjs/common/icons/cube-3d.js +54 -0
  91. package/dist/cjs/common/icons/cursor-click.js +44 -0
  92. package/dist/cjs/common/icons/cursor-point.js +50 -0
  93. package/dist/cjs/common/icons/data-table.js +76 -0
  94. package/dist/cjs/common/icons/db.js +58 -0
  95. package/dist/cjs/common/icons/delete.js +52 -0
  96. package/dist/cjs/common/icons/docs.js +56 -0
  97. package/dist/cjs/common/icons/docs2.js +50 -0
  98. package/dist/cjs/common/icons/drag-n-drop.js +42 -0
  99. package/dist/cjs/common/icons/draggable-dots.js +84 -0
  100. package/dist/cjs/common/icons/draw-polygon.js +60 -0
  101. package/dist/cjs/common/icons/edit.js +48 -0
  102. package/dist/cjs/common/icons/effects/brightness-contrast.js +69 -0
  103. package/dist/cjs/common/icons/effects/color-halftone.js +108 -0
  104. package/dist/cjs/common/icons/effects/distance-fog.js +78 -0
  105. package/dist/cjs/common/icons/effects/dot-screen.js +103 -0
  106. package/dist/cjs/common/icons/effects/edge-work.js +62 -0
  107. package/dist/cjs/common/icons/effects/hexagonal-pixelate.js +129 -0
  108. package/dist/cjs/common/icons/effects/hue-saturation.js +60 -0
  109. package/dist/cjs/common/icons/effects/ink.js +59 -0
  110. package/dist/cjs/common/icons/effects/light-and-shadow.js +48 -0
  111. package/dist/cjs/common/icons/effects/magic-wand.js +60 -0
  112. package/dist/cjs/common/icons/effects/magnify.js +67 -0
  113. package/dist/cjs/common/icons/effects/noise.js +113 -0
  114. package/dist/cjs/common/icons/effects/sepia.js +60 -0
  115. package/dist/cjs/common/icons/effects/surface-fog.js +85 -0
  116. package/dist/cjs/common/icons/effects/tilt-shift.js +69 -0
  117. package/dist/cjs/common/icons/effects/triangle-blur.js +64 -0
  118. package/dist/cjs/common/icons/effects/vibrance.js +60 -0
  119. package/dist/cjs/common/icons/effects/vignette.js +53 -0
  120. package/dist/cjs/common/icons/effects/zoom-blur.js +88 -0
  121. package/dist/cjs/common/icons/email.js +44 -0
  122. package/dist/cjs/common/icons/expand.js +42 -0
  123. package/dist/cjs/common/icons/eye-seen.js +49 -0
  124. package/dist/cjs/common/icons/eye-unseen.js +47 -0
  125. package/dist/cjs/common/icons/file-type.js +35 -0
  126. package/dist/cjs/common/icons/file.js +40 -0
  127. package/dist/cjs/common/icons/files.js +41 -0
  128. package/dist/cjs/common/icons/filter-funnel.js +50 -0
  129. package/dist/cjs/common/icons/folder.js +50 -0
  130. package/dist/cjs/common/icons/free-window.js +44 -0
  131. package/dist/cjs/common/icons/gear.js +42 -0
  132. package/dist/cjs/common/icons/globe.js +53 -0
  133. package/dist/cjs/common/icons/hash.js +40 -0
  134. package/dist/cjs/common/icons/help.js +50 -0
  135. package/dist/cjs/common/icons/histogram.js +41 -0
  136. package/dist/cjs/common/icons/horizontal-resize-handle.js +58 -0
  137. package/dist/cjs/common/icons/index.js +824 -0
  138. package/dist/cjs/common/icons/info.js +53 -0
  139. package/dist/cjs/common/icons/layers.js +54 -0
  140. package/dist/cjs/common/icons/left-arrow.js +43 -0
  141. package/dist/cjs/common/icons/legend.js +68 -0
  142. package/dist/cjs/common/icons/line-chart.js +40 -0
  143. package/dist/cjs/common/icons/location-marker.js +58 -0
  144. package/dist/cjs/common/icons/login.js +43 -0
  145. package/dist/cjs/common/icons/logout.js +42 -0
  146. package/dist/cjs/common/icons/map-icon.js +47 -0
  147. package/dist/cjs/common/icons/map-pin.js +56 -0
  148. package/dist/cjs/common/icons/messages.js +54 -0
  149. package/dist/cjs/common/icons/minus.js +40 -0
  150. package/dist/cjs/common/icons/moon.js +58 -0
  151. package/dist/cjs/common/icons/order-by-dataset.js +46 -0
  152. package/dist/cjs/common/icons/order-by-list.js +38 -0
  153. package/dist/cjs/common/icons/pause.js +60 -0
  154. package/dist/cjs/common/icons/picture.js +59 -0
  155. package/dist/cjs/common/icons/pin.js +52 -0
  156. package/dist/cjs/common/icons/play.js +50 -0
  157. package/dist/cjs/common/icons/pointer-click.js +58 -0
  158. package/dist/cjs/common/icons/polygon.js +62 -0
  159. package/dist/cjs/common/icons/rectangle.js +63 -0
  160. package/dist/cjs/common/icons/reduce.js +43 -0
  161. package/dist/cjs/common/icons/reset.js +56 -0
  162. package/dist/cjs/common/icons/save.js +57 -0
  163. package/dist/cjs/common/icons/save2.js +54 -0
  164. package/dist/cjs/common/icons/search.js +42 -0
  165. package/dist/cjs/common/icons/settings.js +60 -0
  166. package/dist/cjs/common/icons/share.js +70 -0
  167. package/dist/cjs/common/icons/speed.js +52 -0
  168. package/dist/cjs/common/icons/split.js +68 -0
  169. package/dist/cjs/common/icons/square-select.js +42 -0
  170. package/dist/cjs/common/icons/sun.js +74 -0
  171. package/dist/cjs/common/icons/sunrise.js +70 -0
  172. package/dist/cjs/common/icons/sunset.js +70 -0
  173. package/dist/cjs/common/icons/timeline-marker.js +55 -0
  174. package/dist/cjs/common/icons/trash.js +54 -0
  175. package/dist/cjs/common/icons/vert-dots.js +78 -0
  176. package/dist/cjs/common/icons/vert-three-dots.js +53 -0
  177. package/dist/cjs/common/icons/warning-sign.js +60 -0
  178. package/dist/cjs/common/icons/warning.js +54 -0
  179. package/dist/cjs/common/icons/zoom-in.js +47 -0
  180. package/dist/cjs/common/icons/zoom-out.js +47 -0
  181. package/dist/cjs/common/image-preview.js +64 -0
  182. package/dist/cjs/common/index.js +282 -0
  183. package/dist/cjs/common/info-helper.js +61 -0
  184. package/dist/cjs/common/item-selector/accessor.js +37 -0
  185. package/dist/cjs/common/item-selector/chickleted-input.js +157 -0
  186. package/dist/cjs/common/item-selector/dropdown-list.js +257 -0
  187. package/dist/cjs/common/item-selector/dropdown-select.js +84 -0
  188. package/dist/cjs/common/item-selector/item-selector.js +254 -0
  189. package/dist/cjs/common/item-selector/typeahead.js +435 -0
  190. package/dist/cjs/common/layout-splitter.js +230 -0
  191. package/dist/cjs/common/line-chart.js +286 -0
  192. package/dist/cjs/common/link-renderer.js +20 -0
  193. package/dist/cjs/common/loading-spinner.js +50 -0
  194. package/dist/cjs/common/logo.js +68 -0
  195. package/dist/cjs/common/map-layer-selector.js +38 -0
  196. package/dist/cjs/common/modal.js +170 -0
  197. package/dist/cjs/common/portaled.js +287 -0
  198. package/dist/cjs/common/progress-bar.js +47 -0
  199. package/dist/cjs/common/radius-legend.js +131 -0
  200. package/dist/cjs/common/range-brush.js +265 -0
  201. package/dist/cjs/common/range-plot.js +217 -0
  202. package/dist/cjs/common/range-slider-timeline-panel.js +42 -0
  203. package/dist/cjs/common/range-slider-timeline.js +112 -0
  204. package/dist/cjs/common/range-slider.js +371 -0
  205. package/dist/cjs/common/slider/mouse-event.js +104 -0
  206. package/dist/cjs/common/slider/slider-bar-handle.js +90 -0
  207. package/dist/cjs/common/slider/slider-handle.js +136 -0
  208. package/dist/cjs/common/slider/slider.js +251 -0
  209. package/dist/cjs/common/styled-components.js +447 -0
  210. package/dist/cjs/common/switch.js +21 -0
  211. package/dist/cjs/common/sync-timeline-control.js +61 -0
  212. package/dist/cjs/common/time-range-slider-time-title.js +62 -0
  213. package/dist/cjs/common/time-range-slider.js +143 -0
  214. package/dist/cjs/common/time-slider-marker.js +115 -0
  215. package/dist/cjs/common/timeline-helpers.js +57 -0
  216. package/dist/cjs/common/timeline-slider.js +140 -0
  217. package/dist/cjs/common/tippy-tooltip.js +134 -0
  218. package/dist/cjs/common/toolbar-item.js +60 -0
  219. package/dist/cjs/common/toolbar.js +27 -0
  220. package/dist/cjs/common/vertical-toolbar.js +16 -0
  221. package/dist/cjs/connect/keplergl-connect.js +44 -0
  222. package/dist/cjs/connect/with-local-selector.js +85 -0
  223. package/dist/cjs/container.js +180 -0
  224. package/dist/cjs/context.js +43 -0
  225. package/dist/cjs/dnd-context.js +174 -0
  226. package/dist/cjs/editor/editor.js +200 -0
  227. package/dist/cjs/editor/feature-action-panel.js +147 -0
  228. package/dist/cjs/effects/compact-color-picker.js +110 -0
  229. package/dist/cjs/effects/effect-configurator.js +473 -0
  230. package/dist/cjs/effects/effect-list.js +129 -0
  231. package/dist/cjs/effects/effect-manager.js +126 -0
  232. package/dist/cjs/effects/effect-panel-header.js +196 -0
  233. package/dist/cjs/effects/effect-panel.js +86 -0
  234. package/dist/cjs/effects/effect-time-configurator.js +313 -0
  235. package/dist/cjs/effects/effect-time-selector.js +152 -0
  236. package/dist/cjs/effects/effect-time-slider.js +198 -0
  237. package/dist/cjs/effects/effect-type-dropdown-list.js +65 -0
  238. package/dist/cjs/effects/effect-type-list-item.js +98 -0
  239. package/dist/cjs/effects/effect-type-selector.js +76 -0
  240. package/dist/cjs/effects/side-panel-title.js +37 -0
  241. package/dist/cjs/effects/surface-fog-section.js +262 -0
  242. package/dist/cjs/effects/timezone-selector.js +57 -0
  243. package/dist/cjs/filter-animation-controller.js +76 -0
  244. package/dist/cjs/filters/components.js +14 -0
  245. package/dist/cjs/filters/filter-panels/filter-panel-with-field-select.js +77 -0
  246. package/dist/cjs/filters/filter-panels/filter-synced-dataset-panel.js +260 -0
  247. package/dist/cjs/filters/filter-panels/multi-select-filter-panel.js +48 -0
  248. package/dist/cjs/filters/filter-panels/new-filter-panel.js +66 -0
  249. package/dist/cjs/filters/filter-panels/polygon-filter-panel.js +67 -0
  250. package/dist/cjs/filters/filter-panels/range-filter-panel.js +53 -0
  251. package/dist/cjs/filters/filter-panels/single-select-filter-panel.js +48 -0
  252. package/dist/cjs/filters/filter-panels/time-range-filter-panel.js +129 -0
  253. package/dist/cjs/filters/filter-panels/time-synced-field-selector.js +28 -0
  254. package/dist/cjs/filters/filter-panels/types.js +6 -0
  255. package/dist/cjs/filters/index.js +63 -0
  256. package/dist/cjs/filters/multi-select-filter.js +31 -0
  257. package/dist/cjs/filters/polygon-filter.js +76 -0
  258. package/dist/cjs/filters/range-filter.js +35 -0
  259. package/dist/cjs/filters/single-select-filter.js +40 -0
  260. package/dist/cjs/filters/time-range-filter.js +69 -0
  261. package/dist/cjs/filters/time-widget-settings.js +311 -0
  262. package/dist/cjs/filters/time-widget-top.js +80 -0
  263. package/dist/cjs/filters/time-widget.js +376 -0
  264. package/dist/cjs/filters/types.js +6 -0
  265. package/dist/cjs/geocoder/geocoder.js +327 -0
  266. package/dist/cjs/geocoder-panel.js +172 -0
  267. package/dist/cjs/hooks/use-cloud-list-provider.js +46 -0
  268. package/dist/cjs/hooks/use-dnd-effects.js +69 -0
  269. package/dist/cjs/hooks/use-dnd-layers.js +141 -0
  270. package/dist/cjs/hooks/use-feature-flags.js +17 -0
  271. package/dist/cjs/hooks/use-fetch-raster-tile-metadata.js +120 -0
  272. package/dist/cjs/hooks/use-fetch-vector-tile-metadata.js +133 -0
  273. package/dist/cjs/hooks/use-legend-position.js +176 -0
  274. package/dist/cjs/hooks/use-on-click-outside.js +36 -0
  275. package/dist/cjs/index.js +2897 -0
  276. package/dist/cjs/injector.js +151 -0
  277. package/dist/cjs/kepler-gl.js +664 -0
  278. package/dist/cjs/layer-animation-controller.js +53 -0
  279. package/dist/cjs/loading-indicator.js +76 -0
  280. package/dist/cjs/map/annotations/annotation-control.js +55 -0
  281. package/dist/cjs/map/attribution.js +391 -0
  282. package/dist/cjs/map/coordinate-info.js +42 -0
  283. package/dist/cjs/map/effects/effect-control.js +51 -0
  284. package/dist/cjs/map/layer-hover-info.js +318 -0
  285. package/dist/cjs/map/lazy-tippy.js +60 -0
  286. package/dist/cjs/map/locale-panel.js +76 -0
  287. package/dist/cjs/map/map-control-panel.js +140 -0
  288. package/dist/cjs/map/map-control-toolbar.js +18 -0
  289. package/dist/cjs/map/map-control-tooltip.js +34 -0
  290. package/dist/cjs/map/map-control.js +81 -0
  291. package/dist/cjs/map/map-draw-panel.js +100 -0
  292. package/dist/cjs/map/map-legend-panel.js +289 -0
  293. package/dist/cjs/map/map-legend.js +509 -0
  294. package/dist/cjs/map/map-navigation-control.js +159 -0
  295. package/dist/cjs/map/map-popover-content.js +28 -0
  296. package/dist/cjs/map/map-popover.js +189 -0
  297. package/dist/cjs/map/map-scale.js +162 -0
  298. package/dist/cjs/map/split-map-button.js +176 -0
  299. package/dist/cjs/map/toggle-3d-button.js +122 -0
  300. package/dist/cjs/map-container.js +1322 -0
  301. package/dist/cjs/map-view-state-context.js +98 -0
  302. package/dist/cjs/maps-layout.js +102 -0
  303. package/dist/cjs/modal-container.js +456 -0
  304. package/dist/cjs/modals/add-map-style-modal.js +262 -0
  305. package/dist/cjs/modals/cloud-components/cloud-header.js +59 -0
  306. package/dist/cjs/modals/cloud-components/cloud-item.js +59 -0
  307. package/dist/cjs/modals/cloud-components/cloud-item.spec.js +92 -0
  308. package/dist/cjs/modals/cloud-components/cloud-maps.js +47 -0
  309. package/dist/cjs/modals/cloud-components/cloud-maps.spec.js +98 -0
  310. package/dist/cjs/modals/cloud-components/provider-loading.js +20 -0
  311. package/dist/cjs/modals/cloud-components/provider-select.js +30 -0
  312. package/dist/cjs/modals/cloud-tile.js +202 -0
  313. package/dist/cjs/modals/data-table-modal.js +215 -0
  314. package/dist/cjs/modals/delete-data-modal.js +41 -0
  315. package/dist/cjs/modals/error-display.js +32 -0
  316. package/dist/cjs/modals/export-data-modal.js +163 -0
  317. package/dist/cjs/modals/export-image-modal.js +188 -0
  318. package/dist/cjs/modals/export-map-modal/components.js +34 -0
  319. package/dist/cjs/modals/export-map-modal/export-html-map.js +128 -0
  320. package/dist/cjs/modals/export-map-modal/export-json-map.js +81 -0
  321. package/dist/cjs/modals/export-map-modal/export-map-modal.js +84 -0
  322. package/dist/cjs/modals/export-video-modal.js +413 -0
  323. package/dist/cjs/modals/export-video-modal.spec.js +686 -0
  324. package/dist/cjs/modals/fog-height-animation.js +97 -0
  325. package/dist/cjs/modals/globe-export-video-container.js +626 -0
  326. package/dist/cjs/modals/globe-export-video-preview.js +148 -0
  327. package/dist/cjs/modals/hubble-utils.js +447 -0
  328. package/dist/cjs/modals/hubble-utils.spec.js +397 -0
  329. package/dist/cjs/modals/image-modal-container.js +57 -0
  330. package/dist/cjs/modals/load-data-modal.js +97 -0
  331. package/dist/cjs/modals/load-storage-map.js +79 -0
  332. package/dist/cjs/modals/load-storage-map.spec.js +216 -0
  333. package/dist/cjs/modals/loading-dialog.js +37 -0
  334. package/dist/cjs/modals/modal-dialog.js +16 -0
  335. package/dist/cjs/modals/modal-tabs.js +74 -0
  336. package/dist/cjs/modals/overwrite-map-modal.js +83 -0
  337. package/dist/cjs/modals/save-map-modal.js +179 -0
  338. package/dist/cjs/modals/save-map-modal.spec.js +195 -0
  339. package/dist/cjs/modals/share-map-modal.js +168 -0
  340. package/dist/cjs/modals/share-map-modal.spec.js +173 -0
  341. package/dist/cjs/modals/status-panel.js +65 -0
  342. package/dist/cjs/modals/storage-map-viewer.js +98 -0
  343. package/dist/cjs/modals/swipe-composite-utils.js +118 -0
  344. package/dist/cjs/modals/swipe-export-settings.js +372 -0
  345. package/dist/cjs/modals/swipe-export-video-container.js +653 -0
  346. package/dist/cjs/modals/swipe-export-video-preview.js +391 -0
  347. package/dist/cjs/modals/tilesets-modals/common.js +6 -0
  348. package/dist/cjs/modals/tilesets-modals/load-data-footer.js +55 -0
  349. package/dist/cjs/modals/tilesets-modals/load-tileset.js +168 -0
  350. package/dist/cjs/modals/tilesets-modals/tileset-bitmap-form.js +283 -0
  351. package/dist/cjs/modals/tilesets-modals/tileset-icon.js +39 -0
  352. package/dist/cjs/modals/tilesets-modals/tileset-raster-form.js +287 -0
  353. package/dist/cjs/modals/tilesets-modals/tileset-tile3d-form.js +388 -0
  354. package/dist/cjs/modals/tilesets-modals/tileset-vector-form.js +261 -0
  355. package/dist/cjs/modals/tilesets-modals/tileset-wms-form.js +206 -0
  356. package/dist/cjs/notification-panel/notification-item.js +119 -0
  357. package/dist/cjs/notification-panel.js +39 -0
  358. package/dist/cjs/plot-container.js +311 -0
  359. package/dist/cjs/side-panel/add-by-dataset-button.js +128 -0
  360. package/dist/cjs/side-panel/cloud-storage-dropdown.js +40 -0
  361. package/dist/cjs/side-panel/common/dataset-info.js +34 -0
  362. package/dist/cjs/side-panel/common/dataset-tag.js +62 -0
  363. package/dist/cjs/side-panel/common/dataset-title.js +143 -0
  364. package/dist/cjs/side-panel/common/source-data-catalog.js +49 -0
  365. package/dist/cjs/side-panel/common/source-data-selector-content.js +64 -0
  366. package/dist/cjs/side-panel/common/source-data-selector.js +41 -0
  367. package/dist/cjs/side-panel/common/source-selector.js +56 -0
  368. package/dist/cjs/side-panel/common/types.js +6 -0
  369. package/dist/cjs/side-panel/custom-panel.js +39 -0
  370. package/dist/cjs/side-panel/filter-manager.js +202 -0
  371. package/dist/cjs/side-panel/filter-panel/add-filter-button.js +27 -0
  372. package/dist/cjs/side-panel/filter-panel/filter-panel-header.js +67 -0
  373. package/dist/cjs/side-panel/filter-panel/filter-panel.js +92 -0
  374. package/dist/cjs/side-panel/interaction-manager.js +45 -0
  375. package/dist/cjs/side-panel/interaction-panel/brush-config.js +41 -0
  376. package/dist/cjs/side-panel/interaction-panel/geocoder-config.js +45 -0
  377. package/dist/cjs/side-panel/interaction-panel/interaction-panel.js +121 -0
  378. package/dist/cjs/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +164 -0
  379. package/dist/cjs/side-panel/interaction-panel/tooltip-config.js +149 -0
  380. package/dist/cjs/side-panel/layer-manager.js +224 -0
  381. package/dist/cjs/side-panel/layer-panel/add-layer-button.js +27 -0
  382. package/dist/cjs/side-panel/layer-panel/aggr-scale-selector.js +37 -0
  383. package/dist/cjs/side-panel/layer-panel/channel-by-value-selector.js +71 -0
  384. package/dist/cjs/side-panel/layer-panel/color-breaks-panel.js +193 -0
  385. package/dist/cjs/side-panel/layer-panel/color-palette-preset.js +45 -0
  386. package/dist/cjs/side-panel/layer-panel/color-palette.js +74 -0
  387. package/dist/cjs/side-panel/layer-panel/color-range-selector.js +242 -0
  388. package/dist/cjs/side-panel/layer-panel/color-scale-selector.js +295 -0
  389. package/dist/cjs/side-panel/layer-panel/color-selector.js +186 -0
  390. package/dist/cjs/side-panel/layer-panel/column-selector.js +59 -0
  391. package/dist/cjs/side-panel/layer-panel/custom-palette.js +787 -0
  392. package/dist/cjs/side-panel/layer-panel/custom-picker.js +83 -0
  393. package/dist/cjs/side-panel/layer-panel/dataset-layer-group.js +68 -0
  394. package/dist/cjs/side-panel/layer-panel/dataset-layer-section.js +101 -0
  395. package/dist/cjs/side-panel/layer-panel/dataset-section.js +74 -0
  396. package/dist/cjs/side-panel/layer-panel/dimension-scale-selector.js +91 -0
  397. package/dist/cjs/side-panel/layer-panel/how-to-button.js +27 -0
  398. package/dist/cjs/side-panel/layer-panel/layer-color-selector.js +105 -0
  399. package/dist/cjs/side-panel/layer-panel/layer-column-config.js +85 -0
  400. package/dist/cjs/side-panel/layer-panel/layer-column-mode-config.js +192 -0
  401. package/dist/cjs/side-panel/layer-panel/layer-config-group.js +143 -0
  402. package/dist/cjs/side-panel/layer-panel/layer-configurator.js +1073 -0
  403. package/dist/cjs/side-panel/layer-panel/layer-error-message.js +29 -0
  404. package/dist/cjs/side-panel/layer-panel/layer-group-header.js +178 -0
  405. package/dist/cjs/side-panel/layer-panel/layer-list.js +330 -0
  406. package/dist/cjs/side-panel/layer-panel/layer-panel-header.js +311 -0
  407. package/dist/cjs/side-panel/layer-panel/layer-panel.js +171 -0
  408. package/dist/cjs/side-panel/layer-panel/layer-type-dropdown-list.js +77 -0
  409. package/dist/cjs/side-panel/layer-panel/layer-type-list-item.js +71 -0
  410. package/dist/cjs/side-panel/layer-panel/layer-type-selector.js +57 -0
  411. package/dist/cjs/side-panel/layer-panel/raster-tile-colormap-list-item.js +60 -0
  412. package/dist/cjs/side-panel/layer-panel/raster-tile-layer-configurator.js +457 -0
  413. package/dist/cjs/side-panel/layer-panel/scenegraph-model-selector.js +122 -0
  414. package/dist/cjs/side-panel/layer-panel/single-color-palette.js +85 -0
  415. package/dist/cjs/side-panel/layer-panel/text-label-panel.js +173 -0
  416. package/dist/cjs/side-panel/layer-panel/vector-tile-layer-configurator.js +93 -0
  417. package/dist/cjs/side-panel/layer-panel/vis-config-by-field-selector.js +60 -0
  418. package/dist/cjs/side-panel/layer-panel/vis-config-slider.js +167 -0
  419. package/dist/cjs/side-panel/layer-panel/vis-config-switch.js +55 -0
  420. package/dist/cjs/side-panel/map-manager.js +108 -0
  421. package/dist/cjs/side-panel/map-style-panel/globe-config-panel.js +269 -0
  422. package/dist/cjs/side-panel/map-style-panel/map-layer-group-color-picker.js +76 -0
  423. package/dist/cjs/side-panel/map-style-panel/map-layer-group-item.js +94 -0
  424. package/dist/cjs/side-panel/map-style-panel/map-layer-selector.js +74 -0
  425. package/dist/cjs/side-panel/map-style-panel/map-style-selector.js +97 -0
  426. package/dist/cjs/side-panel/panel-header-action.js +73 -0
  427. package/dist/cjs/side-panel/panel-header.js +309 -0
  428. package/dist/cjs/side-panel/panel-tab.js +55 -0
  429. package/dist/cjs/side-panel/panel-title.js +40 -0
  430. package/dist/cjs/side-panel/panel-toggle.js +47 -0
  431. package/dist/cjs/side-panel/panel-view-list-toggle.js +97 -0
  432. package/dist/cjs/side-panel/side-bar.js +126 -0
  433. package/dist/cjs/side-panel.js +235 -0
  434. package/dist/cjs/types.js +6 -0
  435. package/dist/esm/annotations/annotation-node.js +138 -0
  436. package/dist/esm/annotations/annotation-overlay.js +161 -0
  437. package/dist/esm/annotations/annotation-panel.js +355 -0
  438. package/dist/esm/annotations/annotation-text.js +142 -0
  439. package/dist/esm/annotations/annotation-utils.js +185 -0
  440. package/dist/esm/annotations/index.js +9 -0
  441. package/dist/esm/annotations/lexical-editor/clickable-link-plugin.js +64 -0
  442. package/dist/esm/annotations/lexical-editor/floating-link-editor.js +186 -0
  443. package/dist/esm/annotations/lexical-editor/index.js +9 -0
  444. package/dist/esm/annotations/lexical-editor/lexical-constants.js +16 -0
  445. package/dist/esm/annotations/lexical-editor/lexical-nodes.js +7 -0
  446. package/dist/esm/annotations/lexical-editor/lexical-rich-text-editor.js +114 -0
  447. package/dist/esm/annotations/lexical-editor/lexical-theme.js +19 -0
  448. package/dist/esm/annotations/lexical-editor/lexical-toolbar.js +285 -0
  449. package/dist/esm/annotations/lexical-editor/lexical-utils.js +37 -0
  450. package/dist/esm/annotations/lexical-editor/use-lexical-toolbar.js +248 -0
  451. package/dist/esm/bottom-widget.js +176 -0
  452. package/dist/esm/common/action-panel.js +126 -0
  453. package/dist/esm/common/animation-control/animation-control.js +95 -0
  454. package/dist/esm/common/animation-control/animation-controller.js +266 -0
  455. package/dist/esm/common/animation-control/animation-speed-slider.js +56 -0
  456. package/dist/esm/common/animation-control/animation-window-control.js +50 -0
  457. package/dist/esm/common/animation-control/export-video-control.js +36 -0
  458. package/dist/esm/common/animation-control/floating-time-display.js +124 -0
  459. package/dist/esm/common/animation-control/play-control.js +43 -0
  460. package/dist/esm/common/animation-control/playback-controls.js +157 -0
  461. package/dist/esm/common/animation-control/reset-control.js +34 -0
  462. package/dist/esm/common/animation-control/speed-control.js +46 -0
  463. package/dist/esm/common/animation-control/window-action-control.js +48 -0
  464. package/dist/esm/common/checkbox.js +94 -0
  465. package/dist/esm/common/color-legend.js +261 -0
  466. package/dist/esm/common/column-stats-chart.js +305 -0
  467. package/dist/esm/common/data-table/button.js +33 -0
  468. package/dist/esm/common/data-table/canvas.js +22 -0
  469. package/dist/esm/common/data-table/cell-size.js +177 -0
  470. package/dist/esm/common/data-table/display-format.js +118 -0
  471. package/dist/esm/common/data-table/grid.js +100 -0
  472. package/dist/esm/common/data-table/header-cell.js +141 -0
  473. package/dist/esm/common/data-table/index.js +463 -0
  474. package/dist/esm/common/data-table/option-dropdown.js +152 -0
  475. package/dist/esm/common/dataset-label.js +22 -0
  476. package/dist/esm/common/dnd-layer-items.js +16 -0
  477. package/dist/esm/common/error-boundary.js +55 -0
  478. package/dist/esm/common/field-selector.js +164 -0
  479. package/dist/esm/common/field-token.js +38 -0
  480. package/dist/esm/common/file-uploader/file-drop.js +170 -0
  481. package/dist/esm/common/file-uploader/file-upload-progress.js +77 -0
  482. package/dist/esm/common/file-uploader/file-upload.js +234 -0
  483. package/dist/esm/common/file-uploader/upload-button.js +51 -0
  484. package/dist/esm/common/flex-container.js +10 -0
  485. package/dist/esm/common/histogram-plot.js +275 -0
  486. package/dist/esm/common/icon-button.js +20 -0
  487. package/dist/esm/common/icons/3d-models/airplane.js +97 -0
  488. package/dist/esm/common/icons/3d-models/bicycle.js +419 -0
  489. package/dist/esm/common/icons/3d-models/boeing.js +112 -0
  490. package/dist/esm/common/icons/3d-models/car.js +103 -0
  491. package/dist/esm/common/icons/3d-models/cargoship.js +239 -0
  492. package/dist/esm/common/icons/3d-models/evtol.js +127 -0
  493. package/dist/esm/common/icons/3d-models/glider.js +55 -0
  494. package/dist/esm/common/icons/3d-models/helicopter.js +103 -0
  495. package/dist/esm/common/icons/3d-models/scooter.js +152 -0
  496. package/dist/esm/common/icons/3d-models/semitruck.js +170 -0
  497. package/dist/esm/common/icons/3d-models/truck.js +115 -0
  498. package/dist/esm/common/icons/add.js +34 -0
  499. package/dist/esm/common/icons/anchor_window.js +36 -0
  500. package/dist/esm/common/icons/annotation-text.js +49 -0
  501. package/dist/esm/common/icons/arrow-down-alt.js +34 -0
  502. package/dist/esm/common/icons/arrow-down-full.js +43 -0
  503. package/dist/esm/common/icons/arrow-down-small.js +47 -0
  504. package/dist/esm/common/icons/arrow-down-solid.js +34 -0
  505. package/dist/esm/common/icons/arrow-down.js +44 -0
  506. package/dist/esm/common/icons/arrow-left.js +37 -0
  507. package/dist/esm/common/icons/arrow-right.js +34 -0
  508. package/dist/esm/common/icons/arrow-up-alt.js +35 -0
  509. package/dist/esm/common/icons/arrow-up-solid.js +34 -0
  510. package/dist/esm/common/icons/arrow-up.js +34 -0
  511. package/dist/esm/common/icons/base-map.js +49 -0
  512. package/dist/esm/common/icons/base.js +72 -0
  513. package/dist/esm/common/icons/bug.js +64 -0
  514. package/dist/esm/common/icons/calendar.js +42 -0
  515. package/dist/esm/common/icons/cancel.js +34 -0
  516. package/dist/esm/common/icons/checkmark.js +40 -0
  517. package/dist/esm/common/icons/clipboard.js +35 -0
  518. package/dist/esm/common/icons/clock.js +36 -0
  519. package/dist/esm/common/icons/close.js +40 -0
  520. package/dist/esm/common/icons/cloud.js +44 -0
  521. package/dist/esm/common/icons/code-alt.js +37 -0
  522. package/dist/esm/common/icons/copy.js +45 -0
  523. package/dist/esm/common/icons/crosshairs.js +37 -0
  524. package/dist/esm/common/icons/cube-3d.js +48 -0
  525. package/dist/esm/common/icons/cursor-click.js +38 -0
  526. package/dist/esm/common/icons/cursor-point.js +44 -0
  527. package/dist/esm/common/icons/data-table.js +70 -0
  528. package/dist/esm/common/icons/db.js +52 -0
  529. package/dist/esm/common/icons/delete.js +46 -0
  530. package/dist/esm/common/icons/docs.js +50 -0
  531. package/dist/esm/common/icons/docs2.js +44 -0
  532. package/dist/esm/common/icons/drag-n-drop.js +36 -0
  533. package/dist/esm/common/icons/draggable-dots.js +78 -0
  534. package/dist/esm/common/icons/draw-polygon.js +54 -0
  535. package/dist/esm/common/icons/edit.js +42 -0
  536. package/dist/esm/common/icons/effects/brightness-contrast.js +63 -0
  537. package/dist/esm/common/icons/effects/color-halftone.js +102 -0
  538. package/dist/esm/common/icons/effects/distance-fog.js +72 -0
  539. package/dist/esm/common/icons/effects/dot-screen.js +97 -0
  540. package/dist/esm/common/icons/effects/edge-work.js +56 -0
  541. package/dist/esm/common/icons/effects/hexagonal-pixelate.js +123 -0
  542. package/dist/esm/common/icons/effects/hue-saturation.js +54 -0
  543. package/dist/esm/common/icons/effects/ink.js +53 -0
  544. package/dist/esm/common/icons/effects/light-and-shadow.js +42 -0
  545. package/dist/esm/common/icons/effects/magic-wand.js +54 -0
  546. package/dist/esm/common/icons/effects/magnify.js +61 -0
  547. package/dist/esm/common/icons/effects/noise.js +107 -0
  548. package/dist/esm/common/icons/effects/sepia.js +54 -0
  549. package/dist/esm/common/icons/effects/surface-fog.js +79 -0
  550. package/dist/esm/common/icons/effects/tilt-shift.js +63 -0
  551. package/dist/esm/common/icons/effects/triangle-blur.js +58 -0
  552. package/dist/esm/common/icons/effects/vibrance.js +54 -0
  553. package/dist/esm/common/icons/effects/vignette.js +47 -0
  554. package/dist/esm/common/icons/effects/zoom-blur.js +82 -0
  555. package/dist/esm/common/icons/email.js +38 -0
  556. package/dist/esm/common/icons/expand.js +36 -0
  557. package/dist/esm/common/icons/eye-seen.js +43 -0
  558. package/dist/esm/common/icons/eye-unseen.js +41 -0
  559. package/dist/esm/common/icons/file-type.js +30 -0
  560. package/dist/esm/common/icons/file.js +34 -0
  561. package/dist/esm/common/icons/files.js +37 -0
  562. package/dist/esm/common/icons/filter-funnel.js +44 -0
  563. package/dist/esm/common/icons/folder.js +44 -0
  564. package/dist/esm/common/icons/free-window.js +39 -0
  565. package/dist/esm/common/icons/gear.js +36 -0
  566. package/dist/esm/common/icons/globe.js +47 -0
  567. package/dist/esm/common/icons/hash.js +34 -0
  568. package/dist/esm/common/icons/help.js +44 -0
  569. package/dist/esm/common/icons/histogram.js +37 -0
  570. package/dist/esm/common/icons/horizontal-resize-handle.js +52 -0
  571. package/dist/esm/common/icons/index.js +124 -0
  572. package/dist/esm/common/icons/info.js +47 -0
  573. package/dist/esm/common/icons/layers.js +48 -0
  574. package/dist/esm/common/icons/left-arrow.js +37 -0
  575. package/dist/esm/common/icons/legend.js +62 -0
  576. package/dist/esm/common/icons/line-chart.js +34 -0
  577. package/dist/esm/common/icons/location-marker.js +52 -0
  578. package/dist/esm/common/icons/login.js +37 -0
  579. package/dist/esm/common/icons/logout.js +36 -0
  580. package/dist/esm/common/icons/map-icon.js +40 -0
  581. package/dist/esm/common/icons/map-pin.js +50 -0
  582. package/dist/esm/common/icons/messages.js +48 -0
  583. package/dist/esm/common/icons/minus.js +34 -0
  584. package/dist/esm/common/icons/moon.js +52 -0
  585. package/dist/esm/common/icons/order-by-dataset.js +41 -0
  586. package/dist/esm/common/icons/order-by-list.js +33 -0
  587. package/dist/esm/common/icons/pause.js +54 -0
  588. package/dist/esm/common/icons/picture.js +55 -0
  589. package/dist/esm/common/icons/pin.js +46 -0
  590. package/dist/esm/common/icons/play.js +44 -0
  591. package/dist/esm/common/icons/pointer-click.js +52 -0
  592. package/dist/esm/common/icons/polygon.js +56 -0
  593. package/dist/esm/common/icons/rectangle.js +57 -0
  594. package/dist/esm/common/icons/reduce.js +37 -0
  595. package/dist/esm/common/icons/reset.js +50 -0
  596. package/dist/esm/common/icons/save.js +51 -0
  597. package/dist/esm/common/icons/save2.js +48 -0
  598. package/dist/esm/common/icons/search.js +36 -0
  599. package/dist/esm/common/icons/settings.js +54 -0
  600. package/dist/esm/common/icons/share.js +64 -0
  601. package/dist/esm/common/icons/speed.js +46 -0
  602. package/dist/esm/common/icons/split.js +62 -0
  603. package/dist/esm/common/icons/square-select.js +36 -0
  604. package/dist/esm/common/icons/sun.js +68 -0
  605. package/dist/esm/common/icons/sunrise.js +64 -0
  606. package/dist/esm/common/icons/sunset.js +64 -0
  607. package/dist/esm/common/icons/timeline-marker.js +49 -0
  608. package/dist/esm/common/icons/trash.js +48 -0
  609. package/dist/esm/common/icons/vert-dots.js +72 -0
  610. package/dist/esm/common/icons/vert-three-dots.js +47 -0
  611. package/dist/esm/common/icons/warning-sign.js +54 -0
  612. package/dist/esm/common/icons/warning.js +48 -0
  613. package/dist/esm/common/icons/zoom-in.js +41 -0
  614. package/dist/esm/common/icons/zoom-out.js +41 -0
  615. package/dist/esm/common/image-preview.js +59 -0
  616. package/dist/esm/common/index.js +8 -0
  617. package/dist/esm/common/info-helper.js +56 -0
  618. package/dist/esm/common/item-selector/accessor.js +31 -0
  619. package/dist/esm/common/item-selector/chickleted-input.js +150 -0
  620. package/dist/esm/common/item-selector/dropdown-list.js +251 -0
  621. package/dist/esm/common/item-selector/dropdown-select.js +79 -0
  622. package/dist/esm/common/item-selector/item-selector.js +247 -0
  623. package/dist/esm/common/item-selector/typeahead.js +428 -0
  624. package/dist/esm/common/layout-splitter.js +224 -0
  625. package/dist/esm/common/line-chart.js +279 -0
  626. package/dist/esm/common/link-renderer.js +13 -0
  627. package/dist/esm/common/loading-spinner.js +43 -0
  628. package/dist/esm/common/logo.js +63 -0
  629. package/dist/esm/common/map-layer-selector.js +33 -0
  630. package/dist/esm/common/modal.js +163 -0
  631. package/dist/esm/common/portaled.js +280 -0
  632. package/dist/esm/common/progress-bar.js +43 -0
  633. package/dist/esm/common/radius-legend.js +124 -0
  634. package/dist/esm/common/range-brush.js +258 -0
  635. package/dist/esm/common/range-plot.js +210 -0
  636. package/dist/esm/common/range-slider-timeline-panel.js +35 -0
  637. package/dist/esm/common/range-slider-timeline.js +105 -0
  638. package/dist/esm/common/range-slider.js +364 -0
  639. package/dist/esm/common/slider/mouse-event.js +98 -0
  640. package/dist/esm/common/slider/slider-bar-handle.js +84 -0
  641. package/dist/esm/common/slider/slider-handle.js +130 -0
  642. package/dist/esm/common/slider/slider.js +245 -0
  643. package/dist/esm/common/styled-components.js +441 -0
  644. package/dist/esm/common/switch.js +16 -0
  645. package/dist/esm/common/sync-timeline-control.js +54 -0
  646. package/dist/esm/common/time-range-slider-time-title.js +57 -0
  647. package/dist/esm/common/time-range-slider.js +135 -0
  648. package/dist/esm/common/time-slider-marker.js +105 -0
  649. package/dist/esm/common/timeline-helpers.js +48 -0
  650. package/dist/esm/common/timeline-slider.js +133 -0
  651. package/dist/esm/common/tippy-tooltip.js +127 -0
  652. package/dist/esm/common/toolbar-item.js +55 -0
  653. package/dist/esm/common/toolbar.js +22 -0
  654. package/dist/esm/common/vertical-toolbar.js +11 -0
  655. package/dist/esm/connect/keplergl-connect.js +38 -0
  656. package/dist/esm/connect/with-local-selector.js +78 -0
  657. package/dist/esm/container.js +171 -0
  658. package/dist/esm/context.js +35 -0
  659. package/dist/esm/dnd-context.js +167 -0
  660. package/dist/esm/editor/editor.js +193 -0
  661. package/dist/esm/editor/feature-action-panel.js +139 -0
  662. package/dist/esm/effects/compact-color-picker.js +103 -0
  663. package/dist/esm/effects/effect-configurator.js +465 -0
  664. package/dist/esm/effects/effect-list.js +122 -0
  665. package/dist/esm/effects/effect-manager.js +119 -0
  666. package/dist/esm/effects/effect-panel-header.js +188 -0
  667. package/dist/esm/effects/effect-panel.js +79 -0
  668. package/dist/esm/effects/effect-time-configurator.js +306 -0
  669. package/dist/esm/effects/effect-time-selector.js +145 -0
  670. package/dist/esm/effects/effect-time-slider.js +190 -0
  671. package/dist/esm/effects/effect-type-dropdown-list.js +57 -0
  672. package/dist/esm/effects/effect-type-list-item.js +89 -0
  673. package/dist/esm/effects/effect-type-selector.js +69 -0
  674. package/dist/esm/effects/side-panel-title.js +32 -0
  675. package/dist/esm/effects/surface-fog-section.js +254 -0
  676. package/dist/esm/effects/timezone-selector.js +50 -0
  677. package/dist/esm/filter-animation-controller.js +67 -0
  678. package/dist/esm/filters/components.js +9 -0
  679. package/dist/esm/filters/filter-panels/filter-panel-with-field-select.js +68 -0
  680. package/dist/esm/filters/filter-panels/filter-synced-dataset-panel.js +253 -0
  681. package/dist/esm/filters/filter-panels/multi-select-filter-panel.js +39 -0
  682. package/dist/esm/filters/filter-panels/new-filter-panel.js +56 -0
  683. package/dist/esm/filters/filter-panels/polygon-filter-panel.js +58 -0
  684. package/dist/esm/filters/filter-panels/range-filter-panel.js +44 -0
  685. package/dist/esm/filters/filter-panels/single-select-filter-panel.js +39 -0
  686. package/dist/esm/filters/filter-panels/time-range-filter-panel.js +120 -0
  687. package/dist/esm/filters/filter-panels/time-synced-field-selector.js +23 -0
  688. package/dist/esm/filters/filter-panels/types.js +3 -0
  689. package/dist/esm/filters/index.js +12 -0
  690. package/dist/esm/filters/multi-select-filter.js +24 -0
  691. package/dist/esm/filters/polygon-filter.js +67 -0
  692. package/dist/esm/filters/range-filter.js +28 -0
  693. package/dist/esm/filters/single-select-filter.js +33 -0
  694. package/dist/esm/filters/time-range-filter.js +61 -0
  695. package/dist/esm/filters/time-widget-settings.js +304 -0
  696. package/dist/esm/filters/time-widget-top.js +73 -0
  697. package/dist/esm/filters/time-widget.js +369 -0
  698. package/dist/esm/filters/types.js +3 -0
  699. package/dist/esm/geocoder/geocoder.js +318 -0
  700. package/dist/esm/geocoder-panel.js +164 -0
  701. package/dist/esm/hooks/use-cloud-list-provider.js +37 -0
  702. package/dist/esm/hooks/use-dnd-effects.js +62 -0
  703. package/dist/esm/hooks/use-dnd-layers.js +136 -0
  704. package/dist/esm/hooks/use-feature-flags.js +11 -0
  705. package/dist/esm/hooks/use-fetch-raster-tile-metadata.js +113 -0
  706. package/dist/esm/hooks/use-fetch-vector-tile-metadata.js +128 -0
  707. package/dist/esm/hooks/use-legend-position.js +170 -0
  708. package/dist/esm/hooks/use-on-click-outside.js +29 -0
  709. package/dist/esm/index.js +278 -0
  710. package/dist/esm/injector.js +141 -0
  711. package/dist/esm/kepler-gl.js +651 -0
  712. package/dist/esm/layer-animation-controller.js +44 -0
  713. package/dist/esm/loading-indicator.js +69 -0
  714. package/dist/esm/map/annotations/annotation-control.js +46 -0
  715. package/dist/esm/map/attribution.js +382 -0
  716. package/dist/esm/map/coordinate-info.js +36 -0
  717. package/dist/esm/map/effects/effect-control.js +42 -0
  718. package/dist/esm/map/layer-hover-info.js +312 -0
  719. package/dist/esm/map/lazy-tippy.js +53 -0
  720. package/dist/esm/map/locale-panel.js +67 -0
  721. package/dist/esm/map/map-control-panel.js +133 -0
  722. package/dist/esm/map/map-control-toolbar.js +13 -0
  723. package/dist/esm/map/map-control-tooltip.js +27 -0
  724. package/dist/esm/map/map-control.js +77 -0
  725. package/dist/esm/map/map-draw-panel.js +91 -0
  726. package/dist/esm/map/map-legend-panel.js +282 -0
  727. package/dist/esm/map/map-legend.js +496 -0
  728. package/dist/esm/map/map-navigation-control.js +152 -0
  729. package/dist/esm/map/map-popover-content.js +21 -0
  730. package/dist/esm/map/map-popover.js +181 -0
  731. package/dist/esm/map/map-scale.js +155 -0
  732. package/dist/esm/map/split-map-button.js +167 -0
  733. package/dist/esm/map/toggle-3d-button.js +113 -0
  734. package/dist/esm/map-container.js +1292 -0
  735. package/dist/esm/map-view-state-context.js +89 -0
  736. package/dist/esm/maps-layout.js +95 -0
  737. package/dist/esm/modal-container.js +453 -0
  738. package/dist/esm/modals/add-map-style-modal.js +256 -0
  739. package/dist/esm/modals/cloud-components/cloud-header.js +52 -0
  740. package/dist/esm/modals/cloud-components/cloud-item.js +54 -0
  741. package/dist/esm/modals/cloud-components/cloud-item.spec.js +91 -0
  742. package/dist/esm/modals/cloud-components/cloud-maps.js +42 -0
  743. package/dist/esm/modals/cloud-components/cloud-maps.spec.js +94 -0
  744. package/dist/esm/modals/cloud-components/provider-loading.js +15 -0
  745. package/dist/esm/modals/cloud-components/provider-select.js +25 -0
  746. package/dist/esm/modals/cloud-tile.js +195 -0
  747. package/dist/esm/modals/data-table-modal.js +208 -0
  748. package/dist/esm/modals/delete-data-modal.js +36 -0
  749. package/dist/esm/modals/error-display.js +23 -0
  750. package/dist/esm/modals/export-data-modal.js +155 -0
  751. package/dist/esm/modals/export-image-modal.js +181 -0
  752. package/dist/esm/modals/export-map-modal/components.js +29 -0
  753. package/dist/esm/modals/export-map-modal/export-html-map.js +123 -0
  754. package/dist/esm/modals/export-map-modal/export-json-map.js +74 -0
  755. package/dist/esm/modals/export-map-modal/export-map-modal.js +77 -0
  756. package/dist/esm/modals/export-video-modal.js +400 -0
  757. package/dist/esm/modals/export-video-modal.spec.js +685 -0
  758. package/dist/esm/modals/fog-height-animation.js +90 -0
  759. package/dist/esm/modals/globe-export-video-container.js +620 -0
  760. package/dist/esm/modals/globe-export-video-preview.js +141 -0
  761. package/dist/esm/modals/hubble-utils.js +429 -0
  762. package/dist/esm/modals/hubble-utils.spec.js +396 -0
  763. package/dist/esm/modals/image-modal-container.js +48 -0
  764. package/dist/esm/modals/load-data-modal.js +89 -0
  765. package/dist/esm/modals/load-storage-map.js +70 -0
  766. package/dist/esm/modals/load-storage-map.spec.js +212 -0
  767. package/dist/esm/modals/loading-dialog.js +32 -0
  768. package/dist/esm/modals/modal-dialog.js +9 -0
  769. package/dist/esm/modals/modal-tabs.js +67 -0
  770. package/dist/esm/modals/overwrite-map-modal.js +76 -0
  771. package/dist/esm/modals/save-map-modal.js +172 -0
  772. package/dist/esm/modals/save-map-modal.spec.js +196 -0
  773. package/dist/esm/modals/share-map-modal.js +160 -0
  774. package/dist/esm/modals/share-map-modal.spec.js +172 -0
  775. package/dist/esm/modals/status-panel.js +60 -0
  776. package/dist/esm/modals/storage-map-viewer.js +93 -0
  777. package/dist/esm/modals/swipe-composite-utils.js +111 -0
  778. package/dist/esm/modals/swipe-export-settings.js +366 -0
  779. package/dist/esm/modals/swipe-export-video-container.js +646 -0
  780. package/dist/esm/modals/swipe-export-video-preview.js +384 -0
  781. package/dist/esm/modals/tilesets-modals/common.js +3 -0
  782. package/dist/esm/modals/tilesets-modals/load-data-footer.js +48 -0
  783. package/dist/esm/modals/tilesets-modals/load-tileset.js +161 -0
  784. package/dist/esm/modals/tilesets-modals/tileset-bitmap-form.js +275 -0
  785. package/dist/esm/modals/tilesets-modals/tileset-icon.js +34 -0
  786. package/dist/esm/modals/tilesets-modals/tileset-raster-form.js +279 -0
  787. package/dist/esm/modals/tilesets-modals/tileset-tile3d-form.js +380 -0
  788. package/dist/esm/modals/tilesets-modals/tileset-vector-form.js +253 -0
  789. package/dist/esm/modals/tilesets-modals/tileset-wms-form.js +199 -0
  790. package/dist/esm/notification-panel/notification-item.js +112 -0
  791. package/dist/esm/notification-panel.js +34 -0
  792. package/dist/esm/plot-container.js +304 -0
  793. package/dist/esm/side-panel/add-by-dataset-button.js +121 -0
  794. package/dist/esm/side-panel/cloud-storage-dropdown.js +33 -0
  795. package/dist/esm/side-panel/common/dataset-info.js +29 -0
  796. package/dist/esm/side-panel/common/dataset-tag.js +57 -0
  797. package/dist/esm/side-panel/common/dataset-title.js +136 -0
  798. package/dist/esm/side-panel/common/source-data-catalog.js +44 -0
  799. package/dist/esm/side-panel/common/source-data-selector-content.js +55 -0
  800. package/dist/esm/side-panel/common/source-data-selector.js +34 -0
  801. package/dist/esm/side-panel/common/source-selector.js +49 -0
  802. package/dist/esm/side-panel/common/types.js +3 -0
  803. package/dist/esm/side-panel/custom-panel.js +32 -0
  804. package/dist/esm/side-panel/filter-manager.js +195 -0
  805. package/dist/esm/side-panel/filter-panel/add-filter-button.js +20 -0
  806. package/dist/esm/side-panel/filter-panel/filter-panel-header.js +60 -0
  807. package/dist/esm/side-panel/filter-panel/filter-panel.js +85 -0
  808. package/dist/esm/side-panel/interaction-manager.js +38 -0
  809. package/dist/esm/side-panel/interaction-panel/brush-config.js +36 -0
  810. package/dist/esm/side-panel/interaction-panel/geocoder-config.js +40 -0
  811. package/dist/esm/side-panel/interaction-panel/interaction-panel.js +114 -0
  812. package/dist/esm/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +157 -0
  813. package/dist/esm/side-panel/interaction-panel/tooltip-config.js +142 -0
  814. package/dist/esm/side-panel/layer-manager.js +217 -0
  815. package/dist/esm/side-panel/layer-panel/add-layer-button.js +20 -0
  816. package/dist/esm/side-panel/layer-panel/aggr-scale-selector.js +29 -0
  817. package/dist/esm/side-panel/layer-panel/channel-by-value-selector.js +61 -0
  818. package/dist/esm/side-panel/layer-panel/color-breaks-panel.js +186 -0
  819. package/dist/esm/side-panel/layer-panel/color-palette-preset.js +40 -0
  820. package/dist/esm/side-panel/layer-panel/color-palette.js +67 -0
  821. package/dist/esm/side-panel/layer-panel/color-range-selector.js +236 -0
  822. package/dist/esm/side-panel/layer-panel/color-scale-selector.js +288 -0
  823. package/dist/esm/side-panel/layer-panel/color-selector.js +179 -0
  824. package/dist/esm/side-panel/layer-panel/column-selector.js +52 -0
  825. package/dist/esm/side-panel/layer-panel/custom-palette.js +783 -0
  826. package/dist/esm/side-panel/layer-panel/custom-picker.js +77 -0
  827. package/dist/esm/side-panel/layer-panel/dataset-layer-group.js +59 -0
  828. package/dist/esm/side-panel/layer-panel/dataset-layer-section.js +94 -0
  829. package/dist/esm/side-panel/layer-panel/dataset-section.js +68 -0
  830. package/dist/esm/side-panel/layer-panel/dimension-scale-selector.js +82 -0
  831. package/dist/esm/side-panel/layer-panel/how-to-button.js +22 -0
  832. package/dist/esm/side-panel/layer-panel/layer-color-selector.js +94 -0
  833. package/dist/esm/side-panel/layer-panel/layer-column-config.js +76 -0
  834. package/dist/esm/side-panel/layer-panel/layer-column-mode-config.js +184 -0
  835. package/dist/esm/side-panel/layer-panel/layer-config-group.js +134 -0
  836. package/dist/esm/side-panel/layer-panel/layer-configurator.js +1064 -0
  837. package/dist/esm/side-panel/layer-panel/layer-error-message.js +24 -0
  838. package/dist/esm/side-panel/layer-panel/layer-group-header.js +171 -0
  839. package/dist/esm/side-panel/layer-panel/layer-list.js +323 -0
  840. package/dist/esm/side-panel/layer-panel/layer-panel-header.js +302 -0
  841. package/dist/esm/side-panel/layer-panel/layer-panel.js +164 -0
  842. package/dist/esm/side-panel/layer-panel/layer-type-dropdown-list.js +69 -0
  843. package/dist/esm/side-panel/layer-panel/layer-type-list-item.js +63 -0
  844. package/dist/esm/side-panel/layer-panel/layer-type-selector.js +50 -0
  845. package/dist/esm/side-panel/layer-panel/raster-tile-colormap-list-item.js +55 -0
  846. package/dist/esm/side-panel/layer-panel/raster-tile-layer-configurator.js +450 -0
  847. package/dist/esm/side-panel/layer-panel/scenegraph-model-selector.js +115 -0
  848. package/dist/esm/side-panel/layer-panel/single-color-palette.js +78 -0
  849. package/dist/esm/side-panel/layer-panel/text-label-panel.js +166 -0
  850. package/dist/esm/side-panel/layer-panel/vector-tile-layer-configurator.js +86 -0
  851. package/dist/esm/side-panel/layer-panel/vis-config-by-field-selector.js +53 -0
  852. package/dist/esm/side-panel/layer-panel/vis-config-slider.js +160 -0
  853. package/dist/esm/side-panel/layer-panel/vis-config-switch.js +50 -0
  854. package/dist/esm/side-panel/map-manager.js +99 -0
  855. package/dist/esm/side-panel/map-style-panel/globe-config-panel.js +262 -0
  856. package/dist/esm/side-panel/map-style-panel/map-layer-group-color-picker.js +69 -0
  857. package/dist/esm/side-panel/map-style-panel/map-layer-group-item.js +87 -0
  858. package/dist/esm/side-panel/map-style-panel/map-layer-selector.js +69 -0
  859. package/dist/esm/side-panel/map-style-panel/map-style-selector.js +92 -0
  860. package/dist/esm/side-panel/panel-header-action.js +68 -0
  861. package/dist/esm/side-panel/panel-header.js +303 -0
  862. package/dist/esm/side-panel/panel-tab.js +49 -0
  863. package/dist/esm/side-panel/panel-title.js +35 -0
  864. package/dist/esm/side-panel/panel-toggle.js +40 -0
  865. package/dist/esm/side-panel/panel-view-list-toggle.js +90 -0
  866. package/dist/esm/side-panel/side-bar.js +119 -0
  867. package/dist/esm/side-panel.js +227 -0
  868. package/dist/esm/types.js +3 -0
  869. package/dist/index.d.ts +1 -1
  870. package/dist/modals/hubble-utils.d.ts +16 -0
  871. package/package.json +35 -20
  872. package/dist/annotations/annotation-node.js +0 -145
  873. package/dist/annotations/annotation-overlay.js +0 -168
  874. package/dist/annotations/annotation-panel.js +0 -361
  875. package/dist/annotations/annotation-text.js +0 -149
  876. package/dist/annotations/annotation-utils.js +0 -197
  877. package/dist/annotations/index.js +0 -53
  878. package/dist/annotations/lexical-editor/clickable-link-plugin.js +0 -71
  879. package/dist/annotations/lexical-editor/floating-link-editor.js +0 -193
  880. package/dist/annotations/lexical-editor/index.js +0 -78
  881. package/dist/annotations/lexical-editor/lexical-constants.js +0 -22
  882. package/dist/annotations/lexical-editor/lexical-nodes.js +0 -13
  883. package/dist/annotations/lexical-editor/lexical-rich-text-editor.js +0 -121
  884. package/dist/annotations/lexical-editor/lexical-theme.js +0 -25
  885. package/dist/annotations/lexical-editor/lexical-toolbar.js +0 -292
  886. package/dist/annotations/lexical-editor/lexical-utils.js +0 -45
  887. package/dist/annotations/lexical-editor/use-lexical-toolbar.js +0 -253
  888. package/dist/bottom-widget.js +0 -183
  889. package/dist/common/action-panel.js +0 -133
  890. package/dist/common/animation-control/animation-control.js +0 -100
  891. package/dist/common/animation-control/animation-controller.js +0 -271
  892. package/dist/common/animation-control/animation-speed-slider.js +0 -63
  893. package/dist/common/animation-control/animation-window-control.js +0 -59
  894. package/dist/common/animation-control/export-video-control.js +0 -43
  895. package/dist/common/animation-control/floating-time-display.js +0 -131
  896. package/dist/common/animation-control/play-control.js +0 -50
  897. package/dist/common/animation-control/playback-controls.js +0 -164
  898. package/dist/common/animation-control/reset-control.js +0 -41
  899. package/dist/common/animation-control/speed-control.js +0 -51
  900. package/dist/common/animation-control/window-action-control.js +0 -57
  901. package/dist/common/checkbox.js +0 -101
  902. package/dist/common/color-legend.js +0 -272
  903. package/dist/common/column-stats-chart.js +0 -312
  904. package/dist/common/data-table/button.js +0 -38
  905. package/dist/common/data-table/canvas.js +0 -26
  906. package/dist/common/data-table/cell-size.js +0 -183
  907. package/dist/common/data-table/display-format.js +0 -125
  908. package/dist/common/data-table/grid.js +0 -106
  909. package/dist/common/data-table/header-cell.js +0 -148
  910. package/dist/common/data-table/index.js +0 -470
  911. package/dist/common/data-table/option-dropdown.js +0 -159
  912. package/dist/common/dataset-label.js +0 -27
  913. package/dist/common/dnd-layer-items.js +0 -22
  914. package/dist/common/error-boundary.js +0 -59
  915. package/dist/common/field-selector.js +0 -172
  916. package/dist/common/field-token.js +0 -43
  917. package/dist/common/file-uploader/file-drop.js +0 -180
  918. package/dist/common/file-uploader/file-upload-progress.js +0 -84
  919. package/dist/common/file-uploader/file-upload.js +0 -241
  920. package/dist/common/file-uploader/upload-button.js +0 -58
  921. package/dist/common/flex-container.js +0 -15
  922. package/dist/common/histogram-plot.js +0 -282
  923. package/dist/common/icon-button.js +0 -25
  924. package/dist/common/icons/3d-models/airplane.js +0 -103
  925. package/dist/common/icons/3d-models/bicycle.js +0 -425
  926. package/dist/common/icons/3d-models/boeing.js +0 -118
  927. package/dist/common/icons/3d-models/car.js +0 -109
  928. package/dist/common/icons/3d-models/cargoship.js +0 -245
  929. package/dist/common/icons/3d-models/evtol.js +0 -133
  930. package/dist/common/icons/3d-models/glider.js +0 -61
  931. package/dist/common/icons/3d-models/helicopter.js +0 -109
  932. package/dist/common/icons/3d-models/scooter.js +0 -158
  933. package/dist/common/icons/3d-models/semitruck.js +0 -176
  934. package/dist/common/icons/3d-models/truck.js +0 -121
  935. package/dist/common/icons/add.js +0 -40
  936. package/dist/common/icons/anchor_window.js +0 -41
  937. package/dist/common/icons/annotation-text.js +0 -55
  938. package/dist/common/icons/arrow-down-alt.js +0 -40
  939. package/dist/common/icons/arrow-down-full.js +0 -49
  940. package/dist/common/icons/arrow-down-small.js +0 -53
  941. package/dist/common/icons/arrow-down-solid.js +0 -40
  942. package/dist/common/icons/arrow-down.js +0 -50
  943. package/dist/common/icons/arrow-left.js +0 -43
  944. package/dist/common/icons/arrow-right.js +0 -40
  945. package/dist/common/icons/arrow-up-alt.js +0 -41
  946. package/dist/common/icons/arrow-up-solid.js +0 -40
  947. package/dist/common/icons/arrow-up.js +0 -40
  948. package/dist/common/icons/base-map.js +0 -56
  949. package/dist/common/icons/base.js +0 -78
  950. package/dist/common/icons/bug.js +0 -70
  951. package/dist/common/icons/calendar.js +0 -48
  952. package/dist/common/icons/cancel.js +0 -40
  953. package/dist/common/icons/checkmark.js +0 -46
  954. package/dist/common/icons/clipboard.js +0 -41
  955. package/dist/common/icons/clock.js +0 -42
  956. package/dist/common/icons/close.js +0 -46
  957. package/dist/common/icons/cloud.js +0 -50
  958. package/dist/common/icons/code-alt.js +0 -43
  959. package/dist/common/icons/copy.js +0 -51
  960. package/dist/common/icons/crosshairs.js +0 -43
  961. package/dist/common/icons/cube-3d.js +0 -54
  962. package/dist/common/icons/cursor-click.js +0 -44
  963. package/dist/common/icons/cursor-point.js +0 -50
  964. package/dist/common/icons/data-table.js +0 -76
  965. package/dist/common/icons/db.js +0 -58
  966. package/dist/common/icons/delete.js +0 -52
  967. package/dist/common/icons/docs.js +0 -56
  968. package/dist/common/icons/docs2.js +0 -50
  969. package/dist/common/icons/drag-n-drop.js +0 -42
  970. package/dist/common/icons/draggable-dots.js +0 -84
  971. package/dist/common/icons/draw-polygon.js +0 -60
  972. package/dist/common/icons/edit.js +0 -48
  973. package/dist/common/icons/effects/brightness-contrast.js +0 -69
  974. package/dist/common/icons/effects/color-halftone.js +0 -108
  975. package/dist/common/icons/effects/distance-fog.js +0 -78
  976. package/dist/common/icons/effects/dot-screen.js +0 -103
  977. package/dist/common/icons/effects/edge-work.js +0 -62
  978. package/dist/common/icons/effects/hexagonal-pixelate.js +0 -129
  979. package/dist/common/icons/effects/hue-saturation.js +0 -60
  980. package/dist/common/icons/effects/ink.js +0 -59
  981. package/dist/common/icons/effects/light-and-shadow.js +0 -48
  982. package/dist/common/icons/effects/magic-wand.js +0 -60
  983. package/dist/common/icons/effects/magnify.js +0 -67
  984. package/dist/common/icons/effects/noise.js +0 -113
  985. package/dist/common/icons/effects/sepia.js +0 -60
  986. package/dist/common/icons/effects/surface-fog.js +0 -85
  987. package/dist/common/icons/effects/tilt-shift.js +0 -69
  988. package/dist/common/icons/effects/triangle-blur.js +0 -64
  989. package/dist/common/icons/effects/vibrance.js +0 -60
  990. package/dist/common/icons/effects/vignette.js +0 -53
  991. package/dist/common/icons/effects/zoom-blur.js +0 -88
  992. package/dist/common/icons/email.js +0 -44
  993. package/dist/common/icons/expand.js +0 -42
  994. package/dist/common/icons/eye-seen.js +0 -49
  995. package/dist/common/icons/eye-unseen.js +0 -47
  996. package/dist/common/icons/file-type.js +0 -35
  997. package/dist/common/icons/file.js +0 -40
  998. package/dist/common/icons/files.js +0 -41
  999. package/dist/common/icons/filter-funnel.js +0 -50
  1000. package/dist/common/icons/folder.js +0 -50
  1001. package/dist/common/icons/free-window.js +0 -44
  1002. package/dist/common/icons/gear.js +0 -42
  1003. package/dist/common/icons/globe.js +0 -53
  1004. package/dist/common/icons/hash.js +0 -40
  1005. package/dist/common/icons/help.js +0 -50
  1006. package/dist/common/icons/histogram.js +0 -41
  1007. package/dist/common/icons/horizontal-resize-handle.js +0 -58
  1008. package/dist/common/icons/index.js +0 -824
  1009. package/dist/common/icons/info.js +0 -53
  1010. package/dist/common/icons/layers.js +0 -54
  1011. package/dist/common/icons/left-arrow.js +0 -43
  1012. package/dist/common/icons/legend.js +0 -68
  1013. package/dist/common/icons/line-chart.js +0 -40
  1014. package/dist/common/icons/location-marker.js +0 -58
  1015. package/dist/common/icons/login.js +0 -43
  1016. package/dist/common/icons/logout.js +0 -42
  1017. package/dist/common/icons/map-icon.js +0 -47
  1018. package/dist/common/icons/map-pin.js +0 -56
  1019. package/dist/common/icons/messages.js +0 -54
  1020. package/dist/common/icons/minus.js +0 -40
  1021. package/dist/common/icons/moon.js +0 -58
  1022. package/dist/common/icons/order-by-dataset.js +0 -46
  1023. package/dist/common/icons/order-by-list.js +0 -38
  1024. package/dist/common/icons/pause.js +0 -60
  1025. package/dist/common/icons/picture.js +0 -59
  1026. package/dist/common/icons/pin.js +0 -52
  1027. package/dist/common/icons/play.js +0 -50
  1028. package/dist/common/icons/pointer-click.js +0 -58
  1029. package/dist/common/icons/polygon.js +0 -62
  1030. package/dist/common/icons/rectangle.js +0 -63
  1031. package/dist/common/icons/reduce.js +0 -43
  1032. package/dist/common/icons/reset.js +0 -56
  1033. package/dist/common/icons/save.js +0 -57
  1034. package/dist/common/icons/save2.js +0 -54
  1035. package/dist/common/icons/search.js +0 -42
  1036. package/dist/common/icons/settings.js +0 -60
  1037. package/dist/common/icons/share.js +0 -70
  1038. package/dist/common/icons/speed.js +0 -52
  1039. package/dist/common/icons/split.js +0 -68
  1040. package/dist/common/icons/square-select.js +0 -42
  1041. package/dist/common/icons/sun.js +0 -74
  1042. package/dist/common/icons/sunrise.js +0 -70
  1043. package/dist/common/icons/sunset.js +0 -70
  1044. package/dist/common/icons/timeline-marker.js +0 -55
  1045. package/dist/common/icons/trash.js +0 -54
  1046. package/dist/common/icons/vert-dots.js +0 -78
  1047. package/dist/common/icons/vert-three-dots.js +0 -53
  1048. package/dist/common/icons/warning-sign.js +0 -60
  1049. package/dist/common/icons/warning.js +0 -54
  1050. package/dist/common/icons/zoom-in.js +0 -47
  1051. package/dist/common/icons/zoom-out.js +0 -47
  1052. package/dist/common/image-preview.js +0 -64
  1053. package/dist/common/index.js +0 -282
  1054. package/dist/common/info-helper.js +0 -61
  1055. package/dist/common/item-selector/accessor.js +0 -37
  1056. package/dist/common/item-selector/chickleted-input.js +0 -157
  1057. package/dist/common/item-selector/dropdown-list.js +0 -257
  1058. package/dist/common/item-selector/dropdown-select.js +0 -84
  1059. package/dist/common/item-selector/item-selector.js +0 -254
  1060. package/dist/common/item-selector/typeahead.js +0 -435
  1061. package/dist/common/layout-splitter.js +0 -230
  1062. package/dist/common/line-chart.js +0 -286
  1063. package/dist/common/link-renderer.js +0 -20
  1064. package/dist/common/loading-spinner.js +0 -50
  1065. package/dist/common/logo.js +0 -68
  1066. package/dist/common/map-layer-selector.js +0 -38
  1067. package/dist/common/modal.js +0 -170
  1068. package/dist/common/portaled.js +0 -287
  1069. package/dist/common/progress-bar.js +0 -47
  1070. package/dist/common/radius-legend.js +0 -131
  1071. package/dist/common/range-brush.js +0 -265
  1072. package/dist/common/range-plot.js +0 -217
  1073. package/dist/common/range-slider-timeline-panel.js +0 -42
  1074. package/dist/common/range-slider-timeline.js +0 -112
  1075. package/dist/common/range-slider.js +0 -371
  1076. package/dist/common/slider/mouse-event.js +0 -104
  1077. package/dist/common/slider/slider-bar-handle.js +0 -90
  1078. package/dist/common/slider/slider-handle.js +0 -136
  1079. package/dist/common/slider/slider.js +0 -251
  1080. package/dist/common/styled-components.js +0 -447
  1081. package/dist/common/switch.js +0 -21
  1082. package/dist/common/sync-timeline-control.js +0 -61
  1083. package/dist/common/time-range-slider-time-title.js +0 -62
  1084. package/dist/common/time-range-slider.js +0 -143
  1085. package/dist/common/time-slider-marker.js +0 -115
  1086. package/dist/common/timeline-helpers.js +0 -57
  1087. package/dist/common/timeline-slider.js +0 -140
  1088. package/dist/common/tippy-tooltip.js +0 -134
  1089. package/dist/common/toolbar-item.js +0 -60
  1090. package/dist/common/toolbar.js +0 -27
  1091. package/dist/common/vertical-toolbar.js +0 -16
  1092. package/dist/connect/keplergl-connect.js +0 -44
  1093. package/dist/connect/with-local-selector.js +0 -85
  1094. package/dist/container.js +0 -180
  1095. package/dist/context.js +0 -43
  1096. package/dist/dnd-context.js +0 -174
  1097. package/dist/editor/editor.js +0 -200
  1098. package/dist/editor/feature-action-panel.js +0 -147
  1099. package/dist/effects/compact-color-picker.js +0 -110
  1100. package/dist/effects/effect-configurator.js +0 -473
  1101. package/dist/effects/effect-list.js +0 -129
  1102. package/dist/effects/effect-manager.js +0 -126
  1103. package/dist/effects/effect-panel-header.js +0 -196
  1104. package/dist/effects/effect-panel.js +0 -86
  1105. package/dist/effects/effect-time-configurator.js +0 -313
  1106. package/dist/effects/effect-time-selector.js +0 -152
  1107. package/dist/effects/effect-time-slider.js +0 -198
  1108. package/dist/effects/effect-type-dropdown-list.js +0 -65
  1109. package/dist/effects/effect-type-list-item.js +0 -98
  1110. package/dist/effects/effect-type-selector.js +0 -76
  1111. package/dist/effects/side-panel-title.js +0 -37
  1112. package/dist/effects/surface-fog-section.js +0 -262
  1113. package/dist/effects/timezone-selector.js +0 -57
  1114. package/dist/filter-animation-controller.js +0 -76
  1115. package/dist/filters/components.js +0 -14
  1116. package/dist/filters/filter-panels/filter-panel-with-field-select.js +0 -77
  1117. package/dist/filters/filter-panels/filter-synced-dataset-panel.js +0 -260
  1118. package/dist/filters/filter-panels/multi-select-filter-panel.js +0 -48
  1119. package/dist/filters/filter-panels/new-filter-panel.js +0 -66
  1120. package/dist/filters/filter-panels/polygon-filter-panel.js +0 -67
  1121. package/dist/filters/filter-panels/range-filter-panel.js +0 -53
  1122. package/dist/filters/filter-panels/single-select-filter-panel.js +0 -48
  1123. package/dist/filters/filter-panels/time-range-filter-panel.js +0 -129
  1124. package/dist/filters/filter-panels/time-synced-field-selector.js +0 -28
  1125. package/dist/filters/filter-panels/types.js +0 -6
  1126. package/dist/filters/index.js +0 -63
  1127. package/dist/filters/multi-select-filter.js +0 -31
  1128. package/dist/filters/polygon-filter.js +0 -76
  1129. package/dist/filters/range-filter.js +0 -35
  1130. package/dist/filters/single-select-filter.js +0 -40
  1131. package/dist/filters/time-range-filter.js +0 -69
  1132. package/dist/filters/time-widget-settings.js +0 -311
  1133. package/dist/filters/time-widget-top.js +0 -80
  1134. package/dist/filters/time-widget.js +0 -376
  1135. package/dist/filters/types.js +0 -6
  1136. package/dist/geocoder/geocoder.js +0 -327
  1137. package/dist/geocoder-panel.js +0 -172
  1138. package/dist/hooks/use-cloud-list-provider.js +0 -46
  1139. package/dist/hooks/use-dnd-effects.js +0 -69
  1140. package/dist/hooks/use-dnd-layers.js +0 -141
  1141. package/dist/hooks/use-feature-flags.js +0 -17
  1142. package/dist/hooks/use-fetch-raster-tile-metadata.js +0 -120
  1143. package/dist/hooks/use-fetch-vector-tile-metadata.js +0 -133
  1144. package/dist/hooks/use-legend-position.js +0 -176
  1145. package/dist/hooks/use-on-click-outside.js +0 -36
  1146. package/dist/index.js +0 -2890
  1147. package/dist/injector.js +0 -151
  1148. package/dist/kepler-gl.js +0 -664
  1149. package/dist/layer-animation-controller.js +0 -53
  1150. package/dist/loading-indicator.js +0 -76
  1151. package/dist/map/annotations/annotation-control.js +0 -55
  1152. package/dist/map/attribution.js +0 -391
  1153. package/dist/map/coordinate-info.js +0 -42
  1154. package/dist/map/effects/effect-control.js +0 -51
  1155. package/dist/map/layer-hover-info.js +0 -318
  1156. package/dist/map/lazy-tippy.js +0 -60
  1157. package/dist/map/locale-panel.js +0 -76
  1158. package/dist/map/map-control-panel.js +0 -140
  1159. package/dist/map/map-control-toolbar.js +0 -18
  1160. package/dist/map/map-control-tooltip.js +0 -34
  1161. package/dist/map/map-control.js +0 -81
  1162. package/dist/map/map-draw-panel.js +0 -100
  1163. package/dist/map/map-legend-panel.js +0 -289
  1164. package/dist/map/map-legend.js +0 -509
  1165. package/dist/map/map-navigation-control.js +0 -159
  1166. package/dist/map/map-popover-content.js +0 -28
  1167. package/dist/map/map-popover.js +0 -189
  1168. package/dist/map/map-scale.js +0 -162
  1169. package/dist/map/split-map-button.js +0 -176
  1170. package/dist/map/toggle-3d-button.js +0 -122
  1171. package/dist/map-container.js +0 -1322
  1172. package/dist/map-view-state-context.js +0 -98
  1173. package/dist/maps-layout.js +0 -102
  1174. package/dist/modal-container.js +0 -456
  1175. package/dist/modals/add-map-style-modal.js +0 -262
  1176. package/dist/modals/cloud-components/cloud-header.js +0 -59
  1177. package/dist/modals/cloud-components/cloud-item.js +0 -59
  1178. package/dist/modals/cloud-components/cloud-item.spec.js +0 -92
  1179. package/dist/modals/cloud-components/cloud-maps.js +0 -47
  1180. package/dist/modals/cloud-components/cloud-maps.spec.js +0 -98
  1181. package/dist/modals/cloud-components/provider-loading.js +0 -20
  1182. package/dist/modals/cloud-components/provider-select.js +0 -30
  1183. package/dist/modals/cloud-tile.js +0 -202
  1184. package/dist/modals/data-table-modal.js +0 -215
  1185. package/dist/modals/delete-data-modal.js +0 -41
  1186. package/dist/modals/error-display.js +0 -32
  1187. package/dist/modals/export-data-modal.js +0 -163
  1188. package/dist/modals/export-image-modal.js +0 -188
  1189. package/dist/modals/export-map-modal/components.js +0 -34
  1190. package/dist/modals/export-map-modal/export-html-map.js +0 -128
  1191. package/dist/modals/export-map-modal/export-json-map.js +0 -81
  1192. package/dist/modals/export-map-modal/export-map-modal.js +0 -84
  1193. package/dist/modals/export-video-modal.js +0 -413
  1194. package/dist/modals/export-video-modal.spec.js +0 -686
  1195. package/dist/modals/fog-height-animation.js +0 -97
  1196. package/dist/modals/globe-export-video-container.js +0 -626
  1197. package/dist/modals/globe-export-video-preview.js +0 -152
  1198. package/dist/modals/hubble-utils.js +0 -422
  1199. package/dist/modals/hubble-utils.spec.js +0 -397
  1200. package/dist/modals/image-modal-container.js +0 -57
  1201. package/dist/modals/load-data-modal.js +0 -97
  1202. package/dist/modals/load-storage-map.js +0 -79
  1203. package/dist/modals/load-storage-map.spec.js +0 -216
  1204. package/dist/modals/loading-dialog.js +0 -37
  1205. package/dist/modals/modal-dialog.js +0 -16
  1206. package/dist/modals/modal-tabs.js +0 -74
  1207. package/dist/modals/overwrite-map-modal.js +0 -83
  1208. package/dist/modals/save-map-modal.js +0 -179
  1209. package/dist/modals/save-map-modal.spec.js +0 -195
  1210. package/dist/modals/share-map-modal.js +0 -168
  1211. package/dist/modals/share-map-modal.spec.js +0 -173
  1212. package/dist/modals/status-panel.js +0 -65
  1213. package/dist/modals/storage-map-viewer.js +0 -98
  1214. package/dist/modals/swipe-composite-utils.js +0 -118
  1215. package/dist/modals/swipe-export-settings.js +0 -372
  1216. package/dist/modals/swipe-export-video-container.js +0 -653
  1217. package/dist/modals/swipe-export-video-preview.js +0 -401
  1218. package/dist/modals/tilesets-modals/common.js +0 -6
  1219. package/dist/modals/tilesets-modals/load-data-footer.js +0 -55
  1220. package/dist/modals/tilesets-modals/load-tileset.js +0 -168
  1221. package/dist/modals/tilesets-modals/tileset-bitmap-form.js +0 -283
  1222. package/dist/modals/tilesets-modals/tileset-icon.js +0 -39
  1223. package/dist/modals/tilesets-modals/tileset-raster-form.js +0 -287
  1224. package/dist/modals/tilesets-modals/tileset-tile3d-form.js +0 -388
  1225. package/dist/modals/tilesets-modals/tileset-vector-form.js +0 -261
  1226. package/dist/modals/tilesets-modals/tileset-wms-form.js +0 -206
  1227. package/dist/notification-panel/notification-item.js +0 -119
  1228. package/dist/notification-panel.js +0 -39
  1229. package/dist/plot-container.js +0 -311
  1230. package/dist/side-panel/add-by-dataset-button.js +0 -128
  1231. package/dist/side-panel/cloud-storage-dropdown.js +0 -40
  1232. package/dist/side-panel/common/dataset-info.js +0 -34
  1233. package/dist/side-panel/common/dataset-tag.js +0 -62
  1234. package/dist/side-panel/common/dataset-title.js +0 -143
  1235. package/dist/side-panel/common/source-data-catalog.js +0 -49
  1236. package/dist/side-panel/common/source-data-selector-content.js +0 -64
  1237. package/dist/side-panel/common/source-data-selector.js +0 -41
  1238. package/dist/side-panel/common/source-selector.js +0 -56
  1239. package/dist/side-panel/common/types.js +0 -6
  1240. package/dist/side-panel/custom-panel.js +0 -39
  1241. package/dist/side-panel/filter-manager.js +0 -202
  1242. package/dist/side-panel/filter-panel/add-filter-button.js +0 -27
  1243. package/dist/side-panel/filter-panel/filter-panel-header.js +0 -67
  1244. package/dist/side-panel/filter-panel/filter-panel.js +0 -92
  1245. package/dist/side-panel/interaction-manager.js +0 -45
  1246. package/dist/side-panel/interaction-panel/brush-config.js +0 -41
  1247. package/dist/side-panel/interaction-panel/geocoder-config.js +0 -45
  1248. package/dist/side-panel/interaction-panel/interaction-panel.js +0 -121
  1249. package/dist/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +0 -164
  1250. package/dist/side-panel/interaction-panel/tooltip-config.js +0 -149
  1251. package/dist/side-panel/layer-manager.js +0 -224
  1252. package/dist/side-panel/layer-panel/add-layer-button.js +0 -27
  1253. package/dist/side-panel/layer-panel/aggr-scale-selector.js +0 -37
  1254. package/dist/side-panel/layer-panel/channel-by-value-selector.js +0 -71
  1255. package/dist/side-panel/layer-panel/color-breaks-panel.js +0 -193
  1256. package/dist/side-panel/layer-panel/color-palette-preset.js +0 -45
  1257. package/dist/side-panel/layer-panel/color-palette.js +0 -74
  1258. package/dist/side-panel/layer-panel/color-range-selector.js +0 -242
  1259. package/dist/side-panel/layer-panel/color-scale-selector.js +0 -295
  1260. package/dist/side-panel/layer-panel/color-selector.js +0 -186
  1261. package/dist/side-panel/layer-panel/column-selector.js +0 -59
  1262. package/dist/side-panel/layer-panel/custom-palette.js +0 -787
  1263. package/dist/side-panel/layer-panel/custom-picker.js +0 -83
  1264. package/dist/side-panel/layer-panel/dataset-layer-group.js +0 -68
  1265. package/dist/side-panel/layer-panel/dataset-layer-section.js +0 -101
  1266. package/dist/side-panel/layer-panel/dataset-section.js +0 -74
  1267. package/dist/side-panel/layer-panel/dimension-scale-selector.js +0 -91
  1268. package/dist/side-panel/layer-panel/how-to-button.js +0 -27
  1269. package/dist/side-panel/layer-panel/layer-color-selector.js +0 -105
  1270. package/dist/side-panel/layer-panel/layer-column-config.js +0 -85
  1271. package/dist/side-panel/layer-panel/layer-column-mode-config.js +0 -192
  1272. package/dist/side-panel/layer-panel/layer-config-group.js +0 -143
  1273. package/dist/side-panel/layer-panel/layer-configurator.js +0 -1073
  1274. package/dist/side-panel/layer-panel/layer-error-message.js +0 -29
  1275. package/dist/side-panel/layer-panel/layer-group-header.js +0 -178
  1276. package/dist/side-panel/layer-panel/layer-list.js +0 -330
  1277. package/dist/side-panel/layer-panel/layer-panel-header.js +0 -311
  1278. package/dist/side-panel/layer-panel/layer-panel.js +0 -171
  1279. package/dist/side-panel/layer-panel/layer-type-dropdown-list.js +0 -77
  1280. package/dist/side-panel/layer-panel/layer-type-list-item.js +0 -71
  1281. package/dist/side-panel/layer-panel/layer-type-selector.js +0 -57
  1282. package/dist/side-panel/layer-panel/raster-tile-colormap-list-item.js +0 -60
  1283. package/dist/side-panel/layer-panel/raster-tile-layer-configurator.js +0 -457
  1284. package/dist/side-panel/layer-panel/scenegraph-model-selector.js +0 -122
  1285. package/dist/side-panel/layer-panel/single-color-palette.js +0 -85
  1286. package/dist/side-panel/layer-panel/text-label-panel.js +0 -173
  1287. package/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +0 -93
  1288. package/dist/side-panel/layer-panel/vis-config-by-field-selector.js +0 -60
  1289. package/dist/side-panel/layer-panel/vis-config-slider.js +0 -167
  1290. package/dist/side-panel/layer-panel/vis-config-switch.js +0 -55
  1291. package/dist/side-panel/map-manager.js +0 -108
  1292. package/dist/side-panel/map-style-panel/globe-config-panel.js +0 -269
  1293. package/dist/side-panel/map-style-panel/map-layer-group-color-picker.js +0 -76
  1294. package/dist/side-panel/map-style-panel/map-layer-group-item.js +0 -94
  1295. package/dist/side-panel/map-style-panel/map-layer-selector.js +0 -74
  1296. package/dist/side-panel/map-style-panel/map-style-selector.js +0 -97
  1297. package/dist/side-panel/panel-header-action.js +0 -73
  1298. package/dist/side-panel/panel-header.js +0 -309
  1299. package/dist/side-panel/panel-tab.js +0 -55
  1300. package/dist/side-panel/panel-title.js +0 -40
  1301. package/dist/side-panel/panel-toggle.js +0 -47
  1302. package/dist/side-panel/panel-view-list-toggle.js +0 -97
  1303. package/dist/side-panel/side-bar.js +0 -126
  1304. package/dist/side-panel.js +0 -235
  1305. package/dist/types.js +0 -6
@@ -0,0 +1,457 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
14
+ var _react = _interopRequireWildcard(require("react"));
15
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
16
+ var _constants = require("@kepler.gl/constants");
17
+ var _layers = require("@kepler.gl/layers");
18
+ var _localization = require("@kepler.gl/localization");
19
+ var _utils = require("@kepler.gl/utils");
20
+ var _rasterTileColormapListItem = require("./raster-tile-colormap-list-item");
21
+ var _styledComponents2 = require("../../common/styled-components");
22
+ var _switch = _interopRequireDefault(require("../../common/switch"));
23
+ var _infoHelper = _interopRequireDefault(require("../../common/info-helper"));
24
+ var _itemSelector = _interopRequireDefault(require("../../common/item-selector/item-selector"));
25
+ var _visConfigSlider = _interopRequireDefault(require("../../side-panel/layer-panel/vis-config-slider"));
26
+ var _layerConfigGroup = _interopRequireWildcard(require("../../side-panel/layer-panel/layer-config-group"));
27
+ var _visConfigSwitch = _interopRequireDefault(require("../../side-panel/layer-panel/vis-config-switch"));
28
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4; // SPDX-License-Identifier: MIT
29
+ // Copyright contributors to the kepler.gl project
30
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
31
+ 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; }
32
+ 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; }
33
+ var STAC_SEARCH_UI_ENABLED = true;
34
+ var StyledVisConfigSwitch = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n\n .vis-config-switch__title {\n display: flex;\n }\n"])));
35
+ var CustomVisConfigSwitch = function CustomVisConfigSwitch(_ref) {
36
+ var _ref$layer = _ref.layer,
37
+ id = _ref$layer.id,
38
+ config = _ref$layer.config,
39
+ property = _ref.property,
40
+ _onChange2 = _ref.onChange,
41
+ label = _ref.label,
42
+ disabled = _ref.disabled;
43
+ return /*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelSection, {
44
+ disabled: Boolean(disabled)
45
+ }, /*#__PURE__*/_react["default"].createElement(StyledVisConfigSwitch, {
46
+ className: "vis-config-switch"
47
+ }, /*#__PURE__*/_react["default"].createElement("div", {
48
+ className: "vis-config-switch__title"
49
+ }, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabelWrapper, null, label ? /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabel, null, label && /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, {
50
+ id: label
51
+ }) || (0, _utils.capitalizeFirstLetter)(property)) : null)), /*#__PURE__*/_react["default"].createElement("div", {
52
+ className: "vis-config-switch__switch"
53
+ }, /*#__PURE__*/_react["default"].createElement(_switch["default"], {
54
+ checked: config.visConfig[property],
55
+ id: "".concat(id, "-").concat(property, "-switch"),
56
+ onChange: function onChange() {
57
+ return _onChange2((0, _defineProperty2["default"])({}, property, !config.visConfig[property]));
58
+ }
59
+ }))));
60
+ };
61
+ var StyledLayerConfigurator = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n margin-top: 12px;\n"])));
62
+ var DescriptionText = (0, _styledComponents["default"])(_styledComponents2.PanelLabel)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n text-transform: none;\n display: inline;\n color: ", ";\n\n a {\n text-decoration: underline;\n margin-left: 4px;\n }\n"])), function (props) {
63
+ return props.theme.subtextColor;
64
+ });
65
+
66
+ // TODO: combine these two helpers into one
67
+ function findVisConfigItemById(layer, prop) {
68
+ return layer.visConfigSettings[prop].options.find(function (op) {
69
+ return op.id === layer.config.visConfig[prop];
70
+ });
71
+ }
72
+ function findItemById(layer, options, prop) {
73
+ // For now it's possible that non-raster metadata will be passed to the raster configurator, so
74
+ // options may be null
75
+ return options === null || options === void 0 ? void 0 : options.find(function (op) {
76
+ return op.id === layer.config.visConfig[prop];
77
+ });
78
+ }
79
+
80
+ /**
81
+ * Generate drop down labels for single band selector
82
+ * @param stac - STAC item metadata object
83
+ * @returns array of {id, label} elements
84
+ */
85
+ function getBandSelectorOptions(stac) {
86
+ var eoBands = (0, _layers.getEOBands)(stac) || [];
87
+ return eoBands.map(function (eoBand) {
88
+ return {
89
+ id: eoBand.name || eoBand.common_name,
90
+ label: eoBand.common_name ? "".concat(eoBand.name || eoBand.common_name, " (").concat(eoBand.common_name, ")") : eoBand.name
91
+ };
92
+ });
93
+ }
94
+ var COMMON_NAME_LABELS = {
95
+ red: 'Red Channel',
96
+ green: 'Green Channel',
97
+ blue: 'Blue Channel',
98
+ nir: 'NIR Band',
99
+ swir16: 'SWIR 1.6 Band',
100
+ swir22: 'SWIR 2.2 Band'
101
+ };
102
+ function getSlotLabel(commonName) {
103
+ return COMMON_NAME_LABELS[commonName] || "".concat(commonName, " Band");
104
+ }
105
+ var BandAssignmentRow = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n margin-bottom: 4px;\n"])));
106
+
107
+ /**
108
+ * Resolve the default band option for a preset slot from auto-detected eo:bands
109
+ */
110
+ function getDefaultBandForSlot(stac, commonName, bandOptions) {
111
+ var eoBands = (0, _layers.getEOBands)(stac) || [];
112
+ var match = eoBands.find(function (b) {
113
+ return b.common_name === commonName;
114
+ });
115
+ if (match) {
116
+ var bandId = match.name || match.common_name;
117
+ return bandOptions.find(function (o) {
118
+ return o.id === bandId;
119
+ });
120
+ }
121
+ return undefined;
122
+ }
123
+ var BandAssignment = function BandAssignment(_ref2) {
124
+ var stac = _ref2.stac,
125
+ commonNames = _ref2.commonNames,
126
+ bandOptions = _ref2.bandOptions,
127
+ bandOverrides = _ref2.bandOverrides,
128
+ onChange = _ref2.onChange;
129
+ var handleSlotChange = (0, _react.useCallback)(function (slotName, bandId) {
130
+ var current = bandOverrides || {};
131
+ var updated = _objectSpread(_objectSpread({}, current), {}, (0, _defineProperty2["default"])({}, slotName, bandId));
132
+ onChange({
133
+ bandOverrides: JSON.stringify(updated)
134
+ });
135
+ }, [bandOverrides, onChange]);
136
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, commonNames.map(function (commonName) {
137
+ var overrideId = bandOverrides === null || bandOverrides === void 0 ? void 0 : bandOverrides[commonName];
138
+ var selectedItem = overrideId ? bandOptions.find(function (o) {
139
+ return o.id === overrideId;
140
+ }) : getDefaultBandForSlot(stac, commonName, bandOptions);
141
+ return /*#__PURE__*/_react["default"].createElement(BandAssignmentRow, {
142
+ key: commonName
143
+ }, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabel, null, getSlotLabel(commonName)), /*#__PURE__*/_react["default"].createElement(_itemSelector["default"], {
144
+ selectedItems: selectedItem,
145
+ options: bandOptions,
146
+ multiSelect: false,
147
+ searchable: false,
148
+ displayOption: "label",
149
+ getOptionValue: "id",
150
+ onChange: function onChange(val) {
151
+ return handleSlotChange(commonName, val);
152
+ }
153
+ }));
154
+ }));
155
+ };
156
+ function getCategoricalColormapListItem(categoricalColorMap) {
157
+ var categoricalItem;
158
+ if (categoricalColorMap) {
159
+ categoricalItem = {
160
+ label: 'Categorical',
161
+ id: _layers.CATEGORICAL_COLORMAP_ID
162
+ };
163
+ }
164
+ return categoricalItem;
165
+ }
166
+
167
+ /**
168
+ * Check if data source global pixel color range is calculated correctly
169
+ * @param layer - raster layer
170
+ * @param stac - STAC metadata object
171
+ * @param preset - preset name
172
+ * @param singleBandPresetOptions - options for single band preset
173
+ * @returns boolean value
174
+ */
175
+ function isDataSourceColorRangeAvailable(layer, stac, preset, singleBandPresetOptions) {
176
+ var minPixelValue = null;
177
+ var maxPixelValue = null;
178
+ var dataSourceParams = layer.getDataSourceParams(stac, preset, {
179
+ singleBand: singleBandPresetOptions
180
+ });
181
+ if (dataSourceParams) {
182
+ minPixelValue = dataSourceParams.minPixelValue;
183
+ maxPixelValue = dataSourceParams.maxPixelValue;
184
+ }
185
+ return minPixelValue !== null && maxPixelValue !== null;
186
+ }
187
+
188
+ /**
189
+ * Updates color parameters based on a change in visualization preset.
190
+ *
191
+ * This function adjusts the color processing parameters when the visualization
192
+ * preset changes, based on whether the preset is switching to or from a
193
+ * single-band. Determines whether to apply color
194
+ * enhancements or reset parameters based on the preset transition.
195
+ *
196
+ * @param stac A STAC (SpatioTemporal Asset Catalog) object representing the dataset.
197
+ * @param newPreset The old visualization preset being applied.
198
+ * @param newPreset The new visualization preset being applied.
199
+ * @returns The updated color parameters to apply.
200
+ */
201
+ function updateColorParamsOnPresetChange(stac, oldPreset, newPreset) {
202
+ var colorParams = {};
203
+ var colorOverrides = _layers.DATA_SOURCE_COLOR_DEFAULTS[stac.id];
204
+ if (colorOverrides) return colorParams;
205
+ var bandOfInterest = 'singleBand';
206
+ if (oldPreset === bandOfInterest && newPreset !== bandOfInterest) {
207
+ // enchance colors for multiband combinations
208
+ colorParams = colorOverrides;
209
+ } else if (oldPreset !== bandOfInterest && newPreset === bandOfInterest) {
210
+ // reset image processng params
211
+ colorParams = _layers.RASTER_COLOR_RESET_PARAMS;
212
+ }
213
+ return colorParams;
214
+ }
215
+ RasterTileLayerConfiguratorFactory.deps = [_layerConfigGroup["default"], _visConfigSlider["default"], _infoHelper["default"], _visConfigSwitch["default"]];
216
+ function RasterTileLayerConfiguratorFactory(LayerConfigGroup, VisConfigSlider, InfoHelper, VisConfigSwitch) {
217
+ /**
218
+ * Wrapper around configurator to check for dataset.metadata being null/undefined
219
+ */
220
+ var STACCheckConfiguratorWrapper = function STACCheckConfiguratorWrapper(_ref3) {
221
+ var layer = _ref3.layer,
222
+ visConfiguratorProps = _ref3.visConfiguratorProps,
223
+ dataset = _ref3.dataset;
224
+ var stac = dataset === null || dataset === void 0 ? void 0 : dataset.metadata;
225
+
226
+ // If no dataset is loaded into Kepler, stac can be undefined
227
+ if (!stac) {
228
+ return null;
229
+ }
230
+ return /*#__PURE__*/_react["default"].createElement(RasterTileLayerConfigurator, {
231
+ layer: layer,
232
+ visConfiguratorProps: visConfiguratorProps,
233
+ dataset: dataset
234
+ });
235
+ };
236
+
237
+ // eslint-disable-next-line complexity
238
+ var RasterTileLayerConfigurator = function RasterTileLayerConfigurator(_ref4) {
239
+ var _PRESET_OPTIONS$prese, _stac$rasterServerSup, _stac$rasterTileServe;
240
+ var layer = _ref4.layer,
241
+ visConfiguratorProps = _ref4.visConfiguratorProps,
242
+ dataset = _ref4.dataset;
243
+ var _layer$config$visConf = layer.config.visConfig,
244
+ preset = _layer$config$visConf.preset,
245
+ nonLinearRescaling = _layer$config$visConf.nonLinearRescaling,
246
+ useSTACSearching = _layer$config$visConf.useSTACSearching,
247
+ categoricalColorMap = _layer$config$visConf.colorRange.colorMap,
248
+ dynamicColor = _layer$config$visConf.dynamicColor,
249
+ singleBandName = _layer$config$visConf.singleBandName,
250
+ rawBandOverrides = _layer$config$visConf.bandOverrides;
251
+ var stac = dataset === null || dataset === void 0 ? void 0 : dataset.metadata;
252
+ var bandOverrides = (0, _react.useMemo)(function () {
253
+ if (!rawBandOverrides) return null;
254
+ if (typeof rawBandOverrides === 'string') {
255
+ try {
256
+ return JSON.parse(rawBandOverrides);
257
+ } catch (_unused) {
258
+ return null;
259
+ }
260
+ }
261
+ return rawBandOverrides;
262
+ }, [rawBandOverrides]);
263
+ var availablePresets = (0, _react.useMemo)(function () {
264
+ return (0, _layers.filterAvailablePresets)(stac, _layers.PRESET_OPTIONS);
265
+ }, [stac]);
266
+ var presetOptions = (0, _react.useMemo)(function () {
267
+ return layer.visConfigSettings.preset.options.filter(function (_ref5) {
268
+ var id = _ref5.id;
269
+ return availablePresets === null || availablePresets === void 0 ? void 0 : availablePresets.includes(id);
270
+ });
271
+ }, [layer.visConfigSettings.preset.options, availablePresets]);
272
+ var singleBandOptions = (0, _react.useMemo)(function () {
273
+ return getBandSelectorOptions(stac);
274
+ }, [stac]);
275
+ var colormapOptions = (0, _react.useMemo)(function () {
276
+ var options = (0, _toConsumableArray2["default"])(layer.visConfigSettings.colormapId.options);
277
+ var categoricalListItem = getCategoricalColormapListItem(categoricalColorMap);
278
+ if (categoricalListItem) {
279
+ options.push(categoricalListItem);
280
+ }
281
+ return options;
282
+ }, [layer.visConfigSettings.colormapId.options, categoricalColorMap]);
283
+ var _ref6 = _layers.PRESET_OPTIONS[preset] || {},
284
+ bandCombination = _ref6.bandCombination;
285
+ var currentPresetCommonNames = (_PRESET_OPTIONS$prese = _layers.PRESET_OPTIONS[preset]) === null || _PRESET_OPTIONS$prese === void 0 ? void 0 : _PRESET_OPTIONS$prese.commonNames;
286
+ var colormapAllowed = (0, _layers.isColormapAllowed)(bandCombination);
287
+ var rescalingAllowed = !categoricalColorMap && (0, _layers.isRescalingAllowed)(bandCombination);
288
+ var filterAllowed = (0, _layers.isFilterAllowed)(bandCombination);
289
+
290
+ // Here we show the UI when useSTACSearching is explicitly set to true so that the UI shows up
291
+ var stacSearchAllowed = (0, _layers.isSearchableStac)(stac) || useSTACSearching;
292
+ var selectedColormap = findVisConfigItemById(layer, 'colormapId') || getCategoricalColormapListItem(categoricalColorMap);
293
+ var selectedPreset = findVisConfigItemById(layer, 'preset');
294
+ var selectedSingleBandName = findItemById(layer, singleBandOptions, 'singleBandName');
295
+ var singleBandPresetOptions = (0, _layers.getSingleBandPresetOptions)(stac, singleBandName);
296
+ var _getRasterStatisticsM = (0, _layers.getRasterStatisticsMinMax)(stac, preset, singleBandPresetOptions),
297
+ _getRasterStatisticsM2 = (0, _slicedToArray2["default"])(_getRasterStatisticsM, 2),
298
+ minCategoricalBandValue = _getRasterStatisticsM2[0],
299
+ maxCategoricalBandValue = _getRasterStatisticsM2[1];
300
+ var ColorMapListItem = (0, _react.useMemo)(function () {
301
+ return (0, _rasterTileColormapListItem.getColorMapListItemComponent)({
302
+ colorMap: categoricalColorMap,
303
+ minValue: minCategoricalBandValue,
304
+ maxValue: maxCategoricalBandValue
305
+ });
306
+ }, [categoricalColorMap, minCategoricalBandValue, maxCategoricalBandValue]);
307
+ var isDynamicColorsOnly = !isDataSourceColorRangeAvailable(layer, stac, preset, singleBandPresetOptions);
308
+
309
+ // Default of `dynamicColor` is false. Set it true if it is not possible to get data source
310
+ // wide color range
311
+ var onVisConfigChange = visConfiguratorProps.onChange;
312
+ (0, _react.useEffect)(function () {
313
+ if (isDynamicColorsOnly && !dynamicColor) {
314
+ onVisConfigChange({
315
+ dynamicColor: true
316
+ });
317
+ }
318
+ }, [onVisConfigChange, dynamicColor, isDynamicColorsOnly]);
319
+ (0, _react.useEffect)(function () {
320
+ if (preset === 'singleBand' && !singleBandName && singleBandOptions.length > 0) {
321
+ onVisConfigChange({
322
+ singleBandName: singleBandOptions[0].id
323
+ });
324
+ }
325
+ }, [onVisConfigChange, preset, singleBandName, singleBandOptions]);
326
+ var elevationUI = /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, ((_stac$rasterServerSup = stac.rasterServerSupportsElevation) !== null && _stac$rasterServerSup !== void 0 ? _stac$rasterServerSup : (0, _utils.getApplicationConfig)().rasterServerSupportsElevation) && ((_stac$rasterTileServe = stac.rasterTileServerUrls) === null || _stac$rasterTileServe === void 0 ? void 0 : _stac$rasterTileServe.length) && /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, layer.visConfigSettings.enableTerrain || {
327
+ label: 'layer.color'
328
+ }, visConfiguratorProps, {
329
+ collapsible: true
330
+ }), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(VisConfigSwitch, (0, _extends2["default"])({}, visConfiguratorProps, layer.visConfigSettings.enableTerrainTopView)))));
331
+
332
+ // For PMTiles in raster format, only show opacity and terrain options for now
333
+ if (stac.pmtilesType === _constants.PMTilesType.RASTER) {
334
+ return /*#__PURE__*/_react["default"].createElement(StyledLayerConfigurator, null, /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, visConfiguratorProps, {
335
+ label: "Visual Settings",
336
+ collapsible: false
337
+ }), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps))), elevationUI, /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, visConfiguratorProps, {
338
+ label: "Debug",
339
+ collapsible: true
340
+ }), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(VisConfigSwitch, (0, _extends2["default"])({}, visConfiguratorProps, layer.visConfigSettings.showTileBorders)), /*#__PURE__*/_react["default"].createElement(VisConfigSwitch, (0, _extends2["default"])({}, visConfiguratorProps, layer.visConfigSettings.showTileDebugInfo)), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, visConfiguratorProps, layer.visConfigSettings.zoomOffset)))));
341
+ }
342
+ return /*#__PURE__*/_react["default"].createElement(StyledLayerConfigurator, null, availablePresets && /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, visConfiguratorProps, {
343
+ label: "Image Selection",
344
+ collapsible: false
345
+ }), /*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelSection, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabelWrapper, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabel, null, "Preset"), /*#__PURE__*/_react["default"].createElement(InfoHelper, {
346
+ id: "preset",
347
+ description: "Select a preset to describe how to combine spectral bands."
348
+ })), /*#__PURE__*/_react["default"].createElement(_itemSelector["default"], {
349
+ selectedItems: selectedPreset,
350
+ options: presetOptions,
351
+ multiSelect: false,
352
+ searchable: false,
353
+ displayOption: "label",
354
+ getOptionValue: "id",
355
+ onChange: function onChange(newPreset) {
356
+ var overrides = updateColorParamsOnPresetChange(stac, visConfiguratorProps.layer.config.visConfig.preset, newPreset) || {};
357
+ visConfiguratorProps.onChange(_objectSpread(_objectSpread({}, overrides), {}, {
358
+ preset: newPreset,
359
+ bandOverrides: null
360
+ }));
361
+ }
362
+ }), selectedPreset !== null && selectedPreset !== void 0 && selectedPreset.description ? /*#__PURE__*/_react["default"].createElement(DescriptionText, null, selectedPreset === null || selectedPreset === void 0 ? void 0 : selectedPreset.description, selectedPreset !== null && selectedPreset !== void 0 && selectedPreset.infoUrl ? /*#__PURE__*/_react["default"].createElement("a", {
363
+ target: "_blank",
364
+ rel: "noopener noreferrer",
365
+ href: selectedPreset === null || selectedPreset === void 0 ? void 0 : selectedPreset.infoUrl
366
+ }, "More Info") : null) : null), selectedPreset.id === 'singleBand' && /*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelSection, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabelWrapper, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabel, null, "Single Band Name"), /*#__PURE__*/_react["default"].createElement(InfoHelper, {
367
+ id: "".concat(layer.id, "-single-band-name"),
368
+ description: "Select a single band."
369
+ })), /*#__PURE__*/_react["default"].createElement(_itemSelector["default"], {
370
+ selectedItems: selectedSingleBandName,
371
+ options: singleBandOptions,
372
+ multiSelect: false,
373
+ searchable: false,
374
+ displayOption: "label",
375
+ getOptionValue: "id",
376
+ onChange: function onChange(val) {
377
+ visConfiguratorProps.onChange({
378
+ singleBandName: val
379
+ });
380
+ }
381
+ })), STAC_SEARCH_UI_ENABLED && stacSearchAllowed && /*#__PURE__*/_react["default"].createElement(CustomVisConfigSwitch, (0, _extends2["default"])({}, layer.visConfigSettings.useSTACSearching, visConfiguratorProps)), STAC_SEARCH_UI_ENABLED && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, stacSearchAllowed && useSTACSearching ? /*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelSection, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabelWrapper, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabel, null, "STAC Search Provider")), /*#__PURE__*/_react["default"].createElement(_itemSelector["default"], (0, _extends2["default"])({}, layer.visConfigSettings.stacSearchProvider, {
382
+ selectedItems: findVisConfigItemById(layer, 'stacSearchProvider'),
383
+ placeholder: "Choose search provider",
384
+ multiSelect: false,
385
+ searchable: false,
386
+ displayOption: "label",
387
+ getOptionValue: "id",
388
+ onChange: function onChange(val) {
389
+ // TODO: check when switching layers so that you don't mismatch allowed mosaics with layers
390
+ visConfiguratorProps.onChange({
391
+ stacSearchProvider: val
392
+ });
393
+ }
394
+ })), /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabelWrapper, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabel, null, "Date Range")), /*#__PURE__*/_react["default"].createElement(_styledComponents2.Input, {
395
+ type: "text",
396
+ id: "".concat(layer.id, "-startDate"),
397
+ onChange: function onChange(_ref7) {
398
+ var value = _ref7.target.value;
399
+ visConfiguratorProps.onChange({
400
+ startDate: value
401
+ });
402
+ },
403
+ value: layer.config.visConfig.startDate
404
+ }), /*#__PURE__*/_react["default"].createElement(_styledComponents2.Input, {
405
+ type: "text",
406
+ id: "".concat(layer.id, "-endDate"),
407
+ onChange: function onChange(_ref8) {
408
+ var value = _ref8.target.value;
409
+ visConfiguratorProps.onChange({
410
+ endDate: value
411
+ });
412
+ },
413
+ value: layer.config.visConfig.endDate
414
+ }), /*#__PURE__*/_react["default"].createElement(DescriptionText, null, "Date format must be \"YYYY-MM-DD\"")) : null)), (selectedPreset === null || selectedPreset === void 0 ? void 0 : selectedPreset.id) !== 'singleBand' && currentPresetCommonNames && singleBandOptions.length > 0 && /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, visConfiguratorProps, {
415
+ label: "Band Assignment",
416
+ description: "Override which physical band fills each channel. Useful when band metadata is incorrect or missing.",
417
+ collapsible: true
418
+ }), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(BandAssignment, {
419
+ stac: stac,
420
+ commonNames: currentPresetCommonNames,
421
+ bandOptions: singleBandOptions,
422
+ bandOverrides: bandOverrides,
423
+ onChange: visConfiguratorProps.onChange
424
+ }))), /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, visConfiguratorProps, {
425
+ label: "Visual Settings",
426
+ collapsible: false
427
+ }), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)), colormapAllowed && /*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelSection, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabel, null, "Colormap"), /*#__PURE__*/_react["default"].createElement(_itemSelector["default"], {
428
+ selectedItems: selectedColormap,
429
+ options: colormapOptions,
430
+ multiSelect: false,
431
+ displayOption: "label",
432
+ getOptionValue: "id",
433
+ onChange: function onChange(val) {
434
+ visConfiguratorProps.onChange({
435
+ colormapId: val
436
+ });
437
+ },
438
+ DropDownLineItemRenderComponent: ColorMapListItem,
439
+ filterOption: "label",
440
+ searchable: true
441
+ }))), rescalingAllowed && /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, visConfiguratorProps, {
442
+ label: "Rescaling"
443
+ }), /*#__PURE__*/_react["default"].createElement(VisConfigSwitch, (0, _extends2["default"])({}, visConfiguratorProps, layer.visConfigSettings.dynamicColor, {
444
+ disabled: isDynamicColorsOnly
445
+ })), /*#__PURE__*/_react["default"].createElement(VisConfigSwitch, (0, _extends2["default"])({}, layer.visConfigSettings.nonLinearRescaling, visConfiguratorProps, {
446
+ label: nonLinearRescaling ? 'Non-Linear Rescaling' : 'Linear Rescaling'
447
+ })), nonLinearRescaling ? /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.gammaContrastFactor, visConfiguratorProps)), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.sigmoidalContrastFactor, visConfiguratorProps)), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.sigmoidalBiasFactor, visConfiguratorProps))) : /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.linearRescalingFactor, visConfiguratorProps)), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.saturationValue, visConfiguratorProps))), filterAllowed && /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, layer.visConfigSettings.filterEnabled, visConfiguratorProps, {
448
+ collapsible: true
449
+ }), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.filterRange, visConfiguratorProps))), elevationUI, /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, visConfiguratorProps, {
450
+ label: "Debug",
451
+ collapsible: true
452
+ }), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(VisConfigSwitch, (0, _extends2["default"])({}, visConfiguratorProps, layer.visConfigSettings.showTileBorders)), /*#__PURE__*/_react["default"].createElement(VisConfigSwitch, (0, _extends2["default"])({}, visConfiguratorProps, layer.visConfigSettings.showTileDebugInfo)), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, visConfiguratorProps, layer.visConfigSettings.zoomOffset)))));
453
+ };
454
+ return STACCheckConfiguratorWrapper;
455
+ }
456
+ var _default = exports["default"] = RasterTileLayerConfiguratorFactory;
457
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY29uc3RhbnRzIiwiX2xheWVycyIsIl9sb2NhbGl6YXRpb24iLCJfdXRpbHMiLCJfcmFzdGVyVGlsZUNvbG9ybWFwTGlzdEl0ZW0iLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfc3dpdGNoIiwiX2luZm9IZWxwZXIiLCJfaXRlbVNlbGVjdG9yIiwiX3Zpc0NvbmZpZ1NsaWRlciIsIl9sYXllckNvbmZpZ0dyb3VwIiwiX3Zpc0NvbmZpZ1N3aXRjaCIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfdGVtcGxhdGVPYmplY3QzIiwiX3RlbXBsYXRlT2JqZWN0NCIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJTVEFDX1NFQVJDSF9VSV9FTkFCTEVEIiwiU3R5bGVkVmlzQ29uZmlnU3dpdGNoIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJDdXN0b21WaXNDb25maWdTd2l0Y2giLCJfcmVmIiwiX3JlZiRsYXllciIsImxheWVyIiwiaWQiLCJjb25maWciLCJwcm9wZXJ0eSIsIm9uQ2hhbmdlIiwibGFiZWwiLCJkaXNhYmxlZCIsImNyZWF0ZUVsZW1lbnQiLCJTaWRlUGFuZWxTZWN0aW9uIiwiQm9vbGVhbiIsImNsYXNzTmFtZSIsIlBhbmVsTGFiZWxXcmFwcGVyIiwiUGFuZWxMYWJlbCIsIkZvcm1hdHRlZE1lc3NhZ2UiLCJjYXBpdGFsaXplRmlyc3RMZXR0ZXIiLCJjaGVja2VkIiwidmlzQ29uZmlnIiwiY29uY2F0IiwiU3R5bGVkTGF5ZXJDb25maWd1cmF0b3IiLCJEZXNjcmlwdGlvblRleHQiLCJwcm9wcyIsInRoZW1lIiwic3VidGV4dENvbG9yIiwiZmluZFZpc0NvbmZpZ0l0ZW1CeUlkIiwicHJvcCIsInZpc0NvbmZpZ1NldHRpbmdzIiwib3B0aW9ucyIsImZpbmQiLCJvcCIsImZpbmRJdGVtQnlJZCIsImdldEJhbmRTZWxlY3Rvck9wdGlvbnMiLCJzdGFjIiwiZW9CYW5kcyIsImdldEVPQmFuZHMiLCJtYXAiLCJlb0JhbmQiLCJuYW1lIiwiY29tbW9uX25hbWUiLCJDT01NT05fTkFNRV9MQUJFTFMiLCJyZWQiLCJncmVlbiIsImJsdWUiLCJuaXIiLCJzd2lyMTYiLCJzd2lyMjIiLCJnZXRTbG90TGFiZWwiLCJjb21tb25OYW1lIiwiQmFuZEFzc2lnbm1lbnRSb3ciLCJnZXREZWZhdWx0QmFuZEZvclNsb3QiLCJiYW5kT3B0aW9ucyIsIm1hdGNoIiwiYiIsImJhbmRJZCIsInVuZGVmaW5lZCIsIkJhbmRBc3NpZ25tZW50IiwiX3JlZjIiLCJjb21tb25OYW1lcyIsImJhbmRPdmVycmlkZXMiLCJoYW5kbGVTbG90Q2hhbmdlIiwidXNlQ2FsbGJhY2siLCJzbG90TmFtZSIsImN1cnJlbnQiLCJ1cGRhdGVkIiwiSlNPTiIsInN0cmluZ2lmeSIsIkZyYWdtZW50Iiwib3ZlcnJpZGVJZCIsInNlbGVjdGVkSXRlbSIsImtleSIsInNlbGVjdGVkSXRlbXMiLCJtdWx0aVNlbGVjdCIsInNlYXJjaGFibGUiLCJkaXNwbGF5T3B0aW9uIiwiZ2V0T3B0aW9uVmFsdWUiLCJ2YWwiLCJnZXRDYXRlZ29yaWNhbENvbG9ybWFwTGlzdEl0ZW0iLCJjYXRlZ29yaWNhbENvbG9yTWFwIiwiY2F0ZWdvcmljYWxJdGVtIiwiQ0FURUdPUklDQUxfQ09MT1JNQVBfSUQiLCJpc0RhdGFTb3VyY2VDb2xvclJhbmdlQXZhaWxhYmxlIiwicHJlc2V0Iiwic2luZ2xlQmFuZFByZXNldE9wdGlvbnMiLCJtaW5QaXhlbFZhbHVlIiwibWF4UGl4ZWxWYWx1ZSIsImRhdGFTb3VyY2VQYXJhbXMiLCJnZXREYXRhU291cmNlUGFyYW1zIiwic2luZ2xlQmFuZCIsInVwZGF0ZUNvbG9yUGFyYW1zT25QcmVzZXRDaGFuZ2UiLCJvbGRQcmVzZXQiLCJuZXdQcmVzZXQiLCJjb2xvclBhcmFtcyIsImNvbG9yT3ZlcnJpZGVzIiwiREFUQV9TT1VSQ0VfQ09MT1JfREVGQVVMVFMiLCJiYW5kT2ZJbnRlcmVzdCIsIlJBU1RFUl9DT0xPUl9SRVNFVF9QQVJBTVMiLCJSYXN0ZXJUaWxlTGF5ZXJDb25maWd1cmF0b3JGYWN0b3J5IiwiZGVwcyIsIkxheWVyQ29uZmlnR3JvdXBGYWN0b3J5IiwiVmlzQ29uZmlnU2xpZGVyRmFjdG9yeSIsIkluZm9IZWxwZXJGYWN0b3J5IiwiVmlzQ29uZmlnU3dpdGNoRmFjdG9yeSIsIkxheWVyQ29uZmlnR3JvdXAiLCJWaXNDb25maWdTbGlkZXIiLCJJbmZvSGVscGVyIiwiVmlzQ29uZmlnU3dpdGNoIiwiU1RBQ0NoZWNrQ29uZmlndXJhdG9yV3JhcHBlciIsIl9yZWYzIiwidmlzQ29uZmlndXJhdG9yUHJvcHMiLCJkYXRhc2V0IiwibWV0YWRhdGEiLCJSYXN0ZXJUaWxlTGF5ZXJDb25maWd1cmF0b3IiLCJfcmVmNCIsIl9QUkVTRVRfT1BUSU9OUyRwcmVzZSIsIl9zdGFjJHJhc3RlclNlcnZlclN1cCIsIl9zdGFjJHJhc3RlclRpbGVTZXJ2ZSIsIl9sYXllciRjb25maWckdmlzQ29uZiIsIm5vbkxpbmVhclJlc2NhbGluZyIsInVzZVNUQUNTZWFyY2hpbmciLCJjb2xvclJhbmdlIiwiY29sb3JNYXAiLCJkeW5hbWljQ29sb3IiLCJzaW5nbGVCYW5kTmFtZSIsInJhd0JhbmRPdmVycmlkZXMiLCJ1c2VNZW1vIiwicGFyc2UiLCJfdW51c2VkIiwiYXZhaWxhYmxlUHJlc2V0cyIsImZpbHRlckF2YWlsYWJsZVByZXNldHMiLCJQUkVTRVRfT1BUSU9OUyIsInByZXNldE9wdGlvbnMiLCJfcmVmNSIsImluY2x1ZGVzIiwic2luZ2xlQmFuZE9wdGlvbnMiLCJjb2xvcm1hcE9wdGlvbnMiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiY29sb3JtYXBJZCIsImNhdGVnb3JpY2FsTGlzdEl0ZW0iLCJfcmVmNiIsImJhbmRDb21iaW5hdGlvbiIsImN1cnJlbnRQcmVzZXRDb21tb25OYW1lcyIsImNvbG9ybWFwQWxsb3dlZCIsImlzQ29sb3JtYXBBbGxvd2VkIiwicmVzY2FsaW5nQWxsb3dlZCIsImlzUmVzY2FsaW5nQWxsb3dlZCIsImZpbHRlckFsbG93ZWQiLCJpc0ZpbHRlckFsbG93ZWQiLCJzdGFjU2VhcmNoQWxsb3dlZCIsImlzU2VhcmNoYWJsZVN0YWMiLCJzZWxlY3RlZENvbG9ybWFwIiwic2VsZWN0ZWRQcmVzZXQiLCJzZWxlY3RlZFNpbmdsZUJhbmROYW1lIiwiZ2V0U2luZ2xlQmFuZFByZXNldE9wdGlvbnMiLCJfZ2V0UmFzdGVyU3RhdGlzdGljc00iLCJnZXRSYXN0ZXJTdGF0aXN0aWNzTWluTWF4IiwiX2dldFJhc3RlclN0YXRpc3RpY3NNMiIsIl9zbGljZWRUb0FycmF5MiIsIm1pbkNhdGVnb3JpY2FsQmFuZFZhbHVlIiwibWF4Q2F0ZWdvcmljYWxCYW5kVmFsdWUiLCJDb2xvck1hcExpc3RJdGVtIiwiZ2V0Q29sb3JNYXBMaXN0SXRlbUNvbXBvbmVudCIsIm1pblZhbHVlIiwibWF4VmFsdWUiLCJpc0R5bmFtaWNDb2xvcnNPbmx5Iiwib25WaXNDb25maWdDaGFuZ2UiLCJ1c2VFZmZlY3QiLCJlbGV2YXRpb25VSSIsInJhc3RlclNlcnZlclN1cHBvcnRzRWxldmF0aW9uIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJyYXN0ZXJUaWxlU2VydmVyVXJscyIsIl9leHRlbmRzMiIsImVuYWJsZVRlcnJhaW4iLCJjb2xsYXBzaWJsZSIsIkNvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50IiwiZW5hYmxlVGVycmFpblRvcFZpZXciLCJwbXRpbGVzVHlwZSIsIlBNVGlsZXNUeXBlIiwiUkFTVEVSIiwib3BhY2l0eSIsInNob3dUaWxlQm9yZGVycyIsInNob3dUaWxlRGVidWdJbmZvIiwiem9vbU9mZnNldCIsImRlc2NyaXB0aW9uIiwib3ZlcnJpZGVzIiwiaW5mb1VybCIsInRhcmdldCIsInJlbCIsImhyZWYiLCJzdGFjU2VhcmNoUHJvdmlkZXIiLCJwbGFjZWhvbGRlciIsIklucHV0IiwidHlwZSIsIl9yZWY3IiwidmFsdWUiLCJzdGFydERhdGUiLCJfcmVmOCIsImVuZERhdGUiLCJEcm9wRG93bkxpbmVJdGVtUmVuZGVyQ29tcG9uZW50IiwiZmlsdGVyT3B0aW9uIiwiZ2FtbWFDb250cmFzdEZhY3RvciIsInNpZ21vaWRhbENvbnRyYXN0RmFjdG9yIiwic2lnbW9pZGFsQmlhc0ZhY3RvciIsImxpbmVhclJlc2NhbGluZ0ZhY3RvciIsInNhdHVyYXRpb25WYWx1ZSIsImZpbHRlckVuYWJsZWQiLCJmaWx0ZXJSYW5nZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zaWRlLXBhbmVsL2xheWVyLXBhbmVsL3Jhc3Rlci10aWxlLWxheWVyLWNvbmZpZ3VyYXRvci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtb30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCB7UE1UaWxlc1R5cGV9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIGZpbHRlckF2YWlsYWJsZVByZXNldHMsXG4gIGdldEVPQmFuZHMsXG4gIGdldFJhc3RlclN0YXRpc3RpY3NNaW5NYXgsXG4gIGdldFNpbmdsZUJhbmRQcmVzZXRPcHRpb25zLFxuICBpc0NvbG9ybWFwQWxsb3dlZCxcbiAgaXNGaWx0ZXJBbGxvd2VkLFxuICBpc1Jlc2NhbGluZ0FsbG93ZWQsXG4gIGlzU2VhcmNoYWJsZVN0YWMsXG4gIENvbXBsZXRlU1RBQ09iamVjdCxcbiAgR2V0VGlsZURhdGFDdXN0b21Qcm9wcyxcbiAgRGF0YVNvdXJjZVBhcmFtcyxcbiAgUHJlc2V0T3B0aW9uLFxuICBSYXN0ZXJUaWxlTGF5ZXIsXG4gIENBVEVHT1JJQ0FMX0NPTE9STUFQX0lELFxuICBQUkVTRVRfT1BUSU9OUyxcbiAgUkFTVEVSX0NPTE9SX1JFU0VUX1BBUkFNUyxcbiAgREFUQV9TT1VSQ0VfQ09MT1JfREVGQVVMVFNcbn0gZnJvbSAnQGtlcGxlci5nbC9sYXllcnMnO1xuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdAa2VwbGVyLmdsL2xvY2FsaXphdGlvbic7XG5pbXBvcnQge2NhcGl0YWxpemVGaXJzdExldHRlciwgZ2V0QXBwbGljYXRpb25Db25maWd9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtLZXBsZXJUYWJsZSBhcyBLZXBsZXJEYXRhc2V0fSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB0eXBlIHtTdGFjVHlwZXN9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5pbXBvcnQge2dldENvbG9yTWFwTGlzdEl0ZW1Db21wb25lbnR9IGZyb20gJy4vcmFzdGVyLXRpbGUtY29sb3JtYXAtbGlzdC1pdGVtJztcblxuaW1wb3J0IHtcbiAgSW5wdXQsXG4gIFBhbmVsTGFiZWwsXG4gIFBhbmVsTGFiZWxXcmFwcGVyLFxuICBTaWRlUGFuZWxTZWN0aW9uXG59IGZyb20gJy4uLy4uL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgU3dpdGNoIGZyb20gJy4uLy4uL2NvbW1vbi9zd2l0Y2gnO1xuaW1wb3J0IEluZm9IZWxwZXJGYWN0b3J5IGZyb20gJy4uLy4uL2NvbW1vbi9pbmZvLWhlbHBlcic7XG5pbXBvcnQgSXRlbVNlbGVjdG9yIGZyb20gJy4uLy4uL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2l0ZW0tc2VsZWN0b3InO1xuaW1wb3J0IFZpc0NvbmZpZ1NsaWRlckZhY3RvcnkgZnJvbSAnLi4vLi4vc2lkZS1wYW5lbC9sYXllci1wYW5lbC92aXMtY29uZmlnLXNsaWRlcic7XG5pbXBvcnQgTGF5ZXJDb25maWdHcm91cEZhY3RvcnksIHtcbiAgQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnRcbn0gZnJvbSAnLi4vLi4vc2lkZS1wYW5lbC9sYXllci1wYW5lbC9sYXllci1jb25maWctZ3JvdXAnO1xuaW1wb3J0IFZpc0NvbmZpZ1N3aXRjaEZhY3RvcnkgZnJvbSAnLi4vLi4vc2lkZS1wYW5lbC9sYXllci1wYW5lbC92aXMtY29uZmlnLXN3aXRjaCc7XG5cbnR5cGUgRU9CYW5kID0gU3RhY1R5cGVzLkJhbmQ7XG5cbmNvbnN0IFNUQUNfU0VBUkNIX1VJX0VOQUJMRUQgPSB0cnVlO1xuXG5jb25zdCBTdHlsZWRWaXNDb25maWdTd2l0Y2ggPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgLnZpcy1jb25maWctc3dpdGNoX190aXRsZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuYDtcblxuY29uc3QgQ3VzdG9tVmlzQ29uZmlnU3dpdGNoID0gKHtcbiAgbGF5ZXI6IHtpZCwgY29uZmlnfSxcbiAgcHJvcGVydHksXG4gIG9uQ2hhbmdlLFxuICBsYWJlbCxcbiAgZGlzYWJsZWRcbn06IHtcbiAgbGF5ZXI6IFJhc3RlclRpbGVMYXllcjtcbiAgcHJvcGVydHk6IHN0cmluZztcbiAgb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuICBsYWJlbDogc3RyaW5nO1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbn0pID0+IChcbiAgPFNpZGVQYW5lbFNlY3Rpb24gZGlzYWJsZWQ9e0Jvb2xlYW4oZGlzYWJsZWQpfT5cbiAgICA8U3R5bGVkVmlzQ29uZmlnU3dpdGNoIGNsYXNzTmFtZT1cInZpcy1jb25maWctc3dpdGNoXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInZpcy1jb25maWctc3dpdGNoX190aXRsZVwiPlxuICAgICAgICA8UGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAge2xhYmVsID8gKFxuICAgICAgICAgICAgPFBhbmVsTGFiZWw+XG4gICAgICAgICAgICAgIHsobGFiZWwgJiYgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9e2xhYmVsfSAvPikgfHwgY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHByb3BlcnR5KX1cbiAgICAgICAgICAgIDwvUGFuZWxMYWJlbD5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9QYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ2aXMtY29uZmlnLXN3aXRjaF9fc3dpdGNoXCI+XG4gICAgICAgIDxTd2l0Y2hcbiAgICAgICAgICBjaGVja2VkPXtjb25maWcudmlzQ29uZmlnW3Byb3BlcnR5XX1cbiAgICAgICAgICBpZD17YCR7aWR9LSR7cHJvcGVydHl9LXN3aXRjaGB9XG4gICAgICAgICAgb25DaGFuZ2U9eygpID0+IG9uQ2hhbmdlKHtbcHJvcGVydHldOiAhY29uZmlnLnZpc0NvbmZpZ1twcm9wZXJ0eV19KX1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvU3R5bGVkVmlzQ29uZmlnU3dpdGNoPlxuICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4pO1xuXG5jb25zdCBTdHlsZWRMYXllckNvbmZpZ3VyYXRvciA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi10b3A6IDEycHg7XG5gO1xuXG5jb25zdCBEZXNjcmlwdGlvblRleHQgPSBzdHlsZWQoUGFuZWxMYWJlbClgXG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnN1YnRleHRDb2xvcn07XG5cbiAgYSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgfVxuYDtcblxuLy8gVE9ETzogY29tYmluZSB0aGVzZSB0d28gaGVscGVycyBpbnRvIG9uZVxuZnVuY3Rpb24gZmluZFZpc0NvbmZpZ0l0ZW1CeUlkKGxheWVyLCBwcm9wKSB7XG4gIHJldHVybiBsYXllci52aXNDb25maWdTZXR0aW5nc1twcm9wXS5vcHRpb25zLmZpbmQob3AgPT4gb3AuaWQgPT09IGxheWVyLmNvbmZpZy52aXNDb25maWdbcHJvcF0pO1xufVxuXG5mdW5jdGlvbiBmaW5kSXRlbUJ5SWQobGF5ZXIsIG9wdGlvbnMsIHByb3ApIHtcbiAgLy8gRm9yIG5vdyBpdCdzIHBvc3NpYmxlIHRoYXQgbm9uLXJhc3RlciBtZXRhZGF0YSB3aWxsIGJlIHBhc3NlZCB0byB0aGUgcmFzdGVyIGNvbmZpZ3VyYXRvciwgc29cbiAgLy8gb3B0aW9ucyBtYXkgYmUgbnVsbFxuICByZXR1cm4gb3B0aW9ucz8uZmluZChvcCA9PiBvcC5pZCA9PT0gbGF5ZXIuY29uZmlnLnZpc0NvbmZpZ1twcm9wXSk7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgZHJvcCBkb3duIGxhYmVscyBmb3Igc2luZ2xlIGJhbmQgc2VsZWN0b3JcbiAqIEBwYXJhbSBzdGFjIC0gU1RBQyBpdGVtIG1ldGFkYXRhIG9iamVjdFxuICogQHJldHVybnMgYXJyYXkgb2Yge2lkLCBsYWJlbH0gZWxlbWVudHNcbiAqL1xuZnVuY3Rpb24gZ2V0QmFuZFNlbGVjdG9yT3B0aW9ucyhzdGFjOiBDb21wbGV0ZVNUQUNPYmplY3QpOiB7aWQ/OiBzdHJpbmc7IGxhYmVsPzogc3RyaW5nfVtdIHtcbiAgY29uc3QgZW9CYW5kcyA9IGdldEVPQmFuZHMoc3RhYykgfHwgW107XG4gIHJldHVybiBlb0JhbmRzLm1hcCgoZW9CYW5kOiBFT0JhbmQpID0+ICh7XG4gICAgaWQ6IGVvQmFuZC5uYW1lIHx8IGVvQmFuZC5jb21tb25fbmFtZSxcbiAgICBsYWJlbDogZW9CYW5kLmNvbW1vbl9uYW1lXG4gICAgICA/IGAke2VvQmFuZC5uYW1lIHx8IGVvQmFuZC5jb21tb25fbmFtZX0gKCR7ZW9CYW5kLmNvbW1vbl9uYW1lfSlgXG4gICAgICA6IGVvQmFuZC5uYW1lXG4gIH0pKTtcbn1cblxuY29uc3QgQ09NTU9OX05BTUVfTEFCRUxTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICByZWQ6ICdSZWQgQ2hhbm5lbCcsXG4gIGdyZWVuOiAnR3JlZW4gQ2hhbm5lbCcsXG4gIGJsdWU6ICdCbHVlIENoYW5uZWwnLFxuICBuaXI6ICdOSVIgQmFuZCcsXG4gIHN3aXIxNjogJ1NXSVIgMS42IEJhbmQnLFxuICBzd2lyMjI6ICdTV0lSIDIuMiBCYW5kJ1xufTtcblxuZnVuY3Rpb24gZ2V0U2xvdExhYmVsKGNvbW1vbk5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBDT01NT05fTkFNRV9MQUJFTFNbY29tbW9uTmFtZV0gfHwgYCR7Y29tbW9uTmFtZX0gQmFuZGA7XG59XG5cbmNvbnN0IEJhbmRBc3NpZ25tZW50Um93ID0gc3R5bGVkLmRpdmBcbiAgbWFyZ2luLWJvdHRvbTogNHB4O1xuYDtcblxuLyoqXG4gKiBSZXNvbHZlIHRoZSBkZWZhdWx0IGJhbmQgb3B0aW9uIGZvciBhIHByZXNldCBzbG90IGZyb20gYXV0by1kZXRlY3RlZCBlbzpiYW5kc1xuICovXG5mdW5jdGlvbiBnZXREZWZhdWx0QmFuZEZvclNsb3QoXG4gIHN0YWM6IENvbXBsZXRlU1RBQ09iamVjdCxcbiAgY29tbW9uTmFtZTogc3RyaW5nLFxuICBiYW5kT3B0aW9uczoge2lkPzogc3RyaW5nOyBsYWJlbD86IHN0cmluZ31bXVxuKToge2lkPzogc3RyaW5nOyBsYWJlbD86IHN0cmluZ30gfCB1bmRlZmluZWQge1xuICBjb25zdCBlb0JhbmRzID0gZ2V0RU9CYW5kcyhzdGFjKSB8fCBbXTtcbiAgY29uc3QgbWF0Y2ggPSBlb0JhbmRzLmZpbmQoYiA9PiBiLmNvbW1vbl9uYW1lID09PSBjb21tb25OYW1lKTtcbiAgaWYgKG1hdGNoKSB7XG4gICAgY29uc3QgYmFuZElkID0gbWF0Y2gubmFtZSB8fCBtYXRjaC5jb21tb25fbmFtZTtcbiAgICByZXR1cm4gYmFuZE9wdGlvbnMuZmluZChvID0+IG8uaWQgPT09IGJhbmRJZCk7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxudHlwZSBCYW5kQXNzaWdubWVudFByb3BzID0ge1xuICBzdGFjOiBDb21wbGV0ZVNUQUNPYmplY3Q7XG4gIGNvbW1vbk5hbWVzOiBzdHJpbmdbXTtcbiAgYmFuZE9wdGlvbnM6IHtpZD86IHN0cmluZzsgbGFiZWw/OiBzdHJpbmd9W107XG4gIGJhbmRPdmVycmlkZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBudWxsO1xuICBvbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XG59O1xuXG5jb25zdCBCYW5kQXNzaWdubWVudDogUmVhY3QuRkM8QmFuZEFzc2lnbm1lbnRQcm9wcz4gPSAoe1xuICBzdGFjLFxuICBjb21tb25OYW1lcyxcbiAgYmFuZE9wdGlvbnMsXG4gIGJhbmRPdmVycmlkZXMsXG4gIG9uQ2hhbmdlXG59KSA9PiB7XG4gIGNvbnN0IGhhbmRsZVNsb3RDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAoc2xvdE5hbWU6IHN0cmluZywgYmFuZElkOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSBiYW5kT3ZlcnJpZGVzIHx8IHt9O1xuICAgICAgY29uc3QgdXBkYXRlZCA9IHsuLi5jdXJyZW50LCBbc2xvdE5hbWVdOiBiYW5kSWR9O1xuICAgICAgb25DaGFuZ2Uoe2JhbmRPdmVycmlkZXM6IEpTT04uc3RyaW5naWZ5KHVwZGF0ZWQpfSk7XG4gICAgfSxcbiAgICBbYmFuZE92ZXJyaWRlcywgb25DaGFuZ2VdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2NvbW1vbk5hbWVzLm1hcChjb21tb25OYW1lID0+IHtcbiAgICAgICAgY29uc3Qgb3ZlcnJpZGVJZCA9IGJhbmRPdmVycmlkZXM/Lltjb21tb25OYW1lXTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gb3ZlcnJpZGVJZFxuICAgICAgICAgID8gYmFuZE9wdGlvbnMuZmluZChvID0+IG8uaWQgPT09IG92ZXJyaWRlSWQpXG4gICAgICAgICAgOiBnZXREZWZhdWx0QmFuZEZvclNsb3Qoc3RhYywgY29tbW9uTmFtZSwgYmFuZE9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxCYW5kQXNzaWdubWVudFJvdyBrZXk9e2NvbW1vbk5hbWV9PlxuICAgICAgICAgICAgPFBhbmVsTGFiZWw+e2dldFNsb3RMYWJlbChjb21tb25OYW1lKX08L1BhbmVsTGFiZWw+XG4gICAgICAgICAgICA8SXRlbVNlbGVjdG9yXG4gICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM9e3NlbGVjdGVkSXRlbX1cbiAgICAgICAgICAgICAgb3B0aW9ucz17YmFuZE9wdGlvbnN9XG4gICAgICAgICAgICAgIG11bHRpU2VsZWN0PXtmYWxzZX1cbiAgICAgICAgICAgICAgc2VhcmNoYWJsZT17ZmFsc2V9XG4gICAgICAgICAgICAgIGRpc3BsYXlPcHRpb249XCJsYWJlbFwiXG4gICAgICAgICAgICAgIGdldE9wdGlvblZhbHVlPVwiaWRcIlxuICAgICAgICAgICAgICBvbkNoYW5nZT17dmFsID0+IGhhbmRsZVNsb3RDaGFuZ2UoY29tbW9uTmFtZSwgdmFsIGFzIHN0cmluZyl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQmFuZEFzc2lnbm1lbnRSb3c+XG4gICAgICAgICk7XG4gICAgICB9KX1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmZ1bmN0aW9uIGdldENhdGVnb3JpY2FsQ29sb3JtYXBMaXN0SXRlbShjYXRlZ29yaWNhbENvbG9yTWFwKSB7XG4gIGxldCBjYXRlZ29yaWNhbEl0ZW06IHtsYWJlbDogc3RyaW5nOyBpZDogc3RyaW5nfSB8IHVuZGVmaW5lZDtcbiAgaWYgKGNhdGVnb3JpY2FsQ29sb3JNYXApIHtcbiAgICBjYXRlZ29yaWNhbEl0ZW0gPSB7bGFiZWw6ICdDYXRlZ29yaWNhbCcsIGlkOiBDQVRFR09SSUNBTF9DT0xPUk1BUF9JRH07XG4gIH1cbiAgcmV0dXJuIGNhdGVnb3JpY2FsSXRlbTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBkYXRhIHNvdXJjZSBnbG9iYWwgcGl4ZWwgY29sb3IgcmFuZ2UgaXMgY2FsY3VsYXRlZCBjb3JyZWN0bHlcbiAqIEBwYXJhbSBsYXllciAtIHJhc3RlciBsYXllclxuICogQHBhcmFtIHN0YWMgLSBTVEFDIG1ldGFkYXRhIG9iamVjdFxuICogQHBhcmFtIHByZXNldCAtIHByZXNldCBuYW1lXG4gKiBAcGFyYW0gc2luZ2xlQmFuZFByZXNldE9wdGlvbnMgLSBvcHRpb25zIGZvciBzaW5nbGUgYmFuZCBwcmVzZXRcbiAqIEByZXR1cm5zIGJvb2xlYW4gdmFsdWVcbiAqL1xuZnVuY3Rpb24gaXNEYXRhU291cmNlQ29sb3JSYW5nZUF2YWlsYWJsZShcbiAgbGF5ZXI6IFJhc3RlclRpbGVMYXllcixcbiAgc3RhYzogQ29tcGxldGVTVEFDT2JqZWN0LFxuICBwcmVzZXQ6IHN0cmluZyxcbiAgc2luZ2xlQmFuZFByZXNldE9wdGlvbnM6IFByZXNldE9wdGlvblsnc2luZ2xlQmFuZCddXG4pOiBib29sZWFuIHtcbiAgbGV0IG1pblBpeGVsVmFsdWU6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBsZXQgbWF4UGl4ZWxWYWx1ZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIGNvbnN0IGRhdGFTb3VyY2VQYXJhbXM6IERhdGFTb3VyY2VQYXJhbXMgfCBudWxsID0gbGF5ZXIuZ2V0RGF0YVNvdXJjZVBhcmFtcyhzdGFjLCBwcmVzZXQsIHtcbiAgICBzaW5nbGVCYW5kOiBzaW5nbGVCYW5kUHJlc2V0T3B0aW9uc1xuICB9KTtcbiAgaWYgKGRhdGFTb3VyY2VQYXJhbXMpIHtcbiAgICBtaW5QaXhlbFZhbHVlID0gZGF0YVNvdXJjZVBhcmFtcy5taW5QaXhlbFZhbHVlO1xuICAgIG1heFBpeGVsVmFsdWUgPSBkYXRhU291cmNlUGFyYW1zLm1heFBpeGVsVmFsdWU7XG4gIH1cbiAgcmV0dXJuIG1pblBpeGVsVmFsdWUgIT09IG51bGwgJiYgbWF4UGl4ZWxWYWx1ZSAhPT0gbnVsbDtcbn1cblxuLyoqXG4gKiBVcGRhdGVzIGNvbG9yIHBhcmFtZXRlcnMgYmFzZWQgb24gYSBjaGFuZ2UgaW4gdmlzdWFsaXphdGlvbiBwcmVzZXQuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBhZGp1c3RzIHRoZSBjb2xvciBwcm9jZXNzaW5nIHBhcmFtZXRlcnMgd2hlbiB0aGUgdmlzdWFsaXphdGlvblxuICogcHJlc2V0IGNoYW5nZXMsIGJhc2VkIG9uIHdoZXRoZXIgdGhlIHByZXNldCBpcyBzd2l0Y2hpbmcgdG8gb3IgZnJvbSBhXG4gKiBzaW5nbGUtYmFuZC4gRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGFwcGx5IGNvbG9yXG4gKiBlbmhhbmNlbWVudHMgb3IgcmVzZXQgcGFyYW1ldGVycyBiYXNlZCBvbiB0aGUgcHJlc2V0IHRyYW5zaXRpb24uXG4gKlxuICogQHBhcmFtIHN0YWMgQSBTVEFDIChTcGF0aW9UZW1wb3JhbCBBc3NldCBDYXRhbG9nKSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBkYXRhc2V0LlxuICogQHBhcmFtIG5ld1ByZXNldCBUaGUgb2xkIHZpc3VhbGl6YXRpb24gcHJlc2V0IGJlaW5nIGFwcGxpZWQuXG4gKiBAcGFyYW0gbmV3UHJlc2V0IFRoZSBuZXcgdmlzdWFsaXphdGlvbiBwcmVzZXQgYmVpbmcgYXBwbGllZC5cbiAqIEByZXR1cm5zIFRoZSB1cGRhdGVkIGNvbG9yIHBhcmFtZXRlcnMgdG8gYXBwbHkuXG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZUNvbG9yUGFyYW1zT25QcmVzZXRDaGFuZ2UoXG4gIHN0YWM6IENvbXBsZXRlU1RBQ09iamVjdCxcbiAgb2xkUHJlc2V0OiBzdHJpbmcsXG4gIG5ld1ByZXNldDogc3RyaW5nXG4pIHtcbiAgbGV0IGNvbG9yUGFyYW1zID0ge307XG4gIGNvbnN0IGNvbG9yT3ZlcnJpZGVzID0gREFUQV9TT1VSQ0VfQ09MT1JfREVGQVVMVFNbc3RhYy5pZF07XG4gIGlmIChjb2xvck92ZXJyaWRlcykgcmV0dXJuIGNvbG9yUGFyYW1zO1xuXG4gIGNvbnN0IGJhbmRPZkludGVyZXN0ID0gJ3NpbmdsZUJhbmQnO1xuICBpZiAob2xkUHJlc2V0ID09PSBiYW5kT2ZJbnRlcmVzdCAmJiBuZXdQcmVzZXQgIT09IGJhbmRPZkludGVyZXN0KSB7XG4gICAgLy8gZW5jaGFuY2UgY29sb3JzIGZvciBtdWx0aWJhbmQgY29tYmluYXRpb25zXG4gICAgY29sb3JQYXJhbXMgPSBjb2xvck92ZXJyaWRlcztcbiAgfSBlbHNlIGlmIChvbGRQcmVzZXQgIT09IGJhbmRPZkludGVyZXN0ICYmIG5ld1ByZXNldCA9PT0gYmFuZE9mSW50ZXJlc3QpIHtcbiAgICAvLyByZXNldCBpbWFnZSBwcm9jZXNzbmcgcGFyYW1zXG4gICAgY29sb3JQYXJhbXMgPSBSQVNURVJfQ09MT1JfUkVTRVRfUEFSQU1TO1xuICB9XG5cbiAgcmV0dXJuIGNvbG9yUGFyYW1zO1xufVxuXG50eXBlIFJhc3RlclRpbGVMYXllckNvbmZpZ3VyYXRvclByb3BzID0ge1xuICBsYXllcjogUmFzdGVyVGlsZUxheWVyO1xuICB2aXNDb25maWd1cmF0b3JQcm9wczogYW55O1xuICBkYXRhc2V0OiBLZXBsZXJEYXRhc2V0O1xufTtcblxuUmFzdGVyVGlsZUxheWVyQ29uZmlndXJhdG9yRmFjdG9yeS5kZXBzID0gW1xuICBMYXllckNvbmZpZ0dyb3VwRmFjdG9yeSxcbiAgVmlzQ29uZmlnU2xpZGVyRmFjdG9yeSxcbiAgSW5mb0hlbHBlckZhY3RvcnksXG4gIFZpc0NvbmZpZ1N3aXRjaEZhY3Rvcnlcbl07XG5cbmZ1bmN0aW9uIFJhc3RlclRpbGVMYXllckNvbmZpZ3VyYXRvckZhY3RvcnkoXG4gIExheWVyQ29uZmlnR3JvdXA6IFJldHVyblR5cGU8dHlwZW9mIExheWVyQ29uZmlnR3JvdXBGYWN0b3J5PixcbiAgVmlzQ29uZmlnU2xpZGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBWaXNDb25maWdTbGlkZXJGYWN0b3J5PixcbiAgSW5mb0hlbHBlcjogUmV0dXJuVHlwZTx0eXBlb2YgSW5mb0hlbHBlckZhY3Rvcnk+LFxuICBWaXNDb25maWdTd2l0Y2g6IFJldHVyblR5cGU8dHlwZW9mIFZpc0NvbmZpZ1N3aXRjaEZhY3Rvcnk+XG4pOiBSZWFjdC5GQzxSYXN0ZXJUaWxlTGF5ZXJDb25maWd1cmF0b3JQcm9wcz4ge1xuICAvKipcbiAgICogV3JhcHBlciBhcm91bmQgY29uZmlndXJhdG9yIHRvIGNoZWNrIGZvciBkYXRhc2V0Lm1ldGFkYXRhIGJlaW5nIG51bGwvdW5kZWZpbmVkXG4gICAqL1xuICBjb25zdCBTVEFDQ2hlY2tDb25maWd1cmF0b3JXcmFwcGVyID0gKHtcbiAgICBsYXllcixcbiAgICB2aXNDb25maWd1cmF0b3JQcm9wcyxcbiAgICBkYXRhc2V0XG4gIH06IFJhc3RlclRpbGVMYXllckNvbmZpZ3VyYXRvclByb3BzKSA9PiB7XG4gICAgY29uc3Qgc3RhYyA9IGRhdGFzZXQ/Lm1ldGFkYXRhO1xuXG4gICAgLy8gSWYgbm8gZGF0YXNldCBpcyBsb2FkZWQgaW50byBLZXBsZXIsIHN0YWMgY2FuIGJlIHVuZGVmaW5lZFxuICAgIGlmICghc3RhYykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxSYXN0ZXJUaWxlTGF5ZXJDb25maWd1cmF0b3JcbiAgICAgICAgbGF5ZXI9e2xheWVyfVxuICAgICAgICB2aXNDb25maWd1cmF0b3JQcm9wcz17dmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgIGRhdGFzZXQ9e2RhdGFzZXR9XG4gICAgICAvPlxuICAgICk7XG4gIH07XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbiAgY29uc3QgUmFzdGVyVGlsZUxheWVyQ29uZmlndXJhdG9yOiBSZWFjdC5GQzxSYXN0ZXJUaWxlTGF5ZXJDb25maWd1cmF0b3JQcm9wcz4gPSAoe1xuICAgIGxheWVyLFxuICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzLFxuICAgIGRhdGFzZXRcbiAgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHByZXNldCxcbiAgICAgIG5vbkxpbmVhclJlc2NhbGluZyxcbiAgICAgIHVzZVNUQUNTZWFyY2hpbmcsXG4gICAgICBjb2xvclJhbmdlOiB7Y29sb3JNYXA6IGNhdGVnb3JpY2FsQ29sb3JNYXB9LFxuICAgICAgZHluYW1pY0NvbG9yLFxuICAgICAgc2luZ2xlQmFuZE5hbWUsXG4gICAgICBiYW5kT3ZlcnJpZGVzOiByYXdCYW5kT3ZlcnJpZGVzXG4gICAgfSA9IGxheWVyLmNvbmZpZy52aXNDb25maWc7XG5cbiAgICBjb25zdCBzdGFjID0gZGF0YXNldD8ubWV0YWRhdGEgYXMgR2V0VGlsZURhdGFDdXN0b21Qcm9wc1snc3RhYyddO1xuXG4gICAgY29uc3QgYmFuZE92ZXJyaWRlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IG51bGwgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmICghcmF3QmFuZE92ZXJyaWRlcykgcmV0dXJuIG51bGw7XG4gICAgICBpZiAodHlwZW9mIHJhd0JhbmRPdmVycmlkZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UocmF3QmFuZE92ZXJyaWRlcyk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmF3QmFuZE92ZXJyaWRlcyBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgfSwgW3Jhd0JhbmRPdmVycmlkZXNdKTtcblxuICAgIGNvbnN0IGF2YWlsYWJsZVByZXNldHMgPSB1c2VNZW1vKCgpID0+IGZpbHRlckF2YWlsYWJsZVByZXNldHMoc3RhYywgUFJFU0VUX09QVElPTlMpLCBbc3RhY10pO1xuXG4gICAgY29uc3QgcHJlc2V0T3B0aW9ucyA9IHVzZU1lbW8oXG4gICAgICAoKSA9PlxuICAgICAgICAoXG4gICAgICAgICAgbGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MucHJlc2V0Lm9wdGlvbnMgYXMgdW5rbm93biBhcyB7XG4gICAgICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICAgICAgbGFiZWw6IHN0cmluZztcbiAgICAgICAgICB9W11cbiAgICAgICAgKS5maWx0ZXIoKHtpZH0pID0+IGF2YWlsYWJsZVByZXNldHM/LmluY2x1ZGVzKGlkKSksXG4gICAgICBbbGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MucHJlc2V0Lm9wdGlvbnMsIGF2YWlsYWJsZVByZXNldHNdXG4gICAgKTtcbiAgICBjb25zdCBzaW5nbGVCYW5kT3B0aW9ucyA9IHVzZU1lbW8oKCkgPT4gZ2V0QmFuZFNlbGVjdG9yT3B0aW9ucyhzdGFjKSwgW3N0YWNdKTtcbiAgICBjb25zdCBjb2xvcm1hcE9wdGlvbnMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSBbXG4gICAgICAgIC4uLihsYXllci52aXNDb25maWdTZXR0aW5ncy5jb2xvcm1hcElkLm9wdGlvbnMgYXMgdW5rbm93biBhcyB7XG4gICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICB9W10pXG4gICAgICBdO1xuICAgICAgY29uc3QgY2F0ZWdvcmljYWxMaXN0SXRlbSA9IGdldENhdGVnb3JpY2FsQ29sb3JtYXBMaXN0SXRlbShjYXRlZ29yaWNhbENvbG9yTWFwKTtcbiAgICAgIGlmIChjYXRlZ29yaWNhbExpc3RJdGVtKSB7XG4gICAgICAgIG9wdGlvbnMucHVzaChjYXRlZ29yaWNhbExpc3RJdGVtKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH0sIFtsYXllci52aXNDb25maWdTZXR0aW5ncy5jb2xvcm1hcElkLm9wdGlvbnMsIGNhdGVnb3JpY2FsQ29sb3JNYXBdKTtcblxuICAgIGNvbnN0IHtiYW5kQ29tYmluYXRpb259ID0gUFJFU0VUX09QVElPTlNbcHJlc2V0XSB8fCB7fTtcbiAgICBjb25zdCBjdXJyZW50UHJlc2V0Q29tbW9uTmFtZXMgPSBQUkVTRVRfT1BUSU9OU1twcmVzZXRdPy5jb21tb25OYW1lcztcbiAgICBjb25zdCBjb2xvcm1hcEFsbG93ZWQgPSBpc0NvbG9ybWFwQWxsb3dlZChiYW5kQ29tYmluYXRpb24pO1xuICAgIGNvbnN0IHJlc2NhbGluZ0FsbG93ZWQgPSAhY2F0ZWdvcmljYWxDb2xvck1hcCAmJiBpc1Jlc2NhbGluZ0FsbG93ZWQoYmFuZENvbWJpbmF0aW9uKTtcbiAgICBjb25zdCBmaWx0ZXJBbGxvd2VkID0gaXNGaWx0ZXJBbGxvd2VkKGJhbmRDb21iaW5hdGlvbik7XG5cbiAgICAvLyBIZXJlIHdlIHNob3cgdGhlIFVJIHdoZW4gdXNlU1RBQ1NlYXJjaGluZyBpcyBleHBsaWNpdGx5IHNldCB0byB0cnVlIHNvIHRoYXQgdGhlIFVJIHNob3dzIHVwXG4gICAgY29uc3Qgc3RhY1NlYXJjaEFsbG93ZWQgPSBpc1NlYXJjaGFibGVTdGFjKHN0YWMpIHx8IHVzZVNUQUNTZWFyY2hpbmc7XG5cbiAgICBjb25zdCBzZWxlY3RlZENvbG9ybWFwID1cbiAgICAgIGZpbmRWaXNDb25maWdJdGVtQnlJZChsYXllciwgJ2NvbG9ybWFwSWQnKSB8fFxuICAgICAgZ2V0Q2F0ZWdvcmljYWxDb2xvcm1hcExpc3RJdGVtKGNhdGVnb3JpY2FsQ29sb3JNYXApO1xuICAgIGNvbnN0IHNlbGVjdGVkUHJlc2V0ID0gZmluZFZpc0NvbmZpZ0l0ZW1CeUlkKGxheWVyLCAncHJlc2V0Jyk7XG4gICAgY29uc3Qgc2VsZWN0ZWRTaW5nbGVCYW5kTmFtZSA9IGZpbmRJdGVtQnlJZChsYXllciwgc2luZ2xlQmFuZE9wdGlvbnMsICdzaW5nbGVCYW5kTmFtZScpO1xuXG4gICAgY29uc3Qgc2luZ2xlQmFuZFByZXNldE9wdGlvbnMgPSBnZXRTaW5nbGVCYW5kUHJlc2V0T3B0aW9ucyhzdGFjLCBzaW5nbGVCYW5kTmFtZSk7XG4gICAgY29uc3QgW21pbkNhdGVnb3JpY2FsQmFuZFZhbHVlLCBtYXhDYXRlZ29yaWNhbEJhbmRWYWx1ZV0gPSBnZXRSYXN0ZXJTdGF0aXN0aWNzTWluTWF4KFxuICAgICAgc3RhYyxcbiAgICAgIHByZXNldCxcbiAgICAgIHNpbmdsZUJhbmRQcmVzZXRPcHRpb25zXG4gICAgKTtcbiAgICBjb25zdCBDb2xvck1hcExpc3RJdGVtID0gdXNlTWVtbyhcbiAgICAgICgpID0+XG4gICAgICAgIGdldENvbG9yTWFwTGlzdEl0ZW1Db21wb25lbnQoe1xuICAgICAgICAgIGNvbG9yTWFwOiBjYXRlZ29yaWNhbENvbG9yTWFwLFxuICAgICAgICAgIG1pblZhbHVlOiBtaW5DYXRlZ29yaWNhbEJhbmRWYWx1ZSxcbiAgICAgICAgICBtYXhWYWx1ZTogbWF4Q2F0ZWdvcmljYWxCYW5kVmFsdWVcbiAgICAgICAgfSksXG4gICAgICBbY2F0ZWdvcmljYWxDb2xvck1hcCwgbWluQ2F0ZWdvcmljYWxCYW5kVmFsdWUsIG1heENhdGVnb3JpY2FsQmFuZFZhbHVlXVxuICAgICk7XG4gICAgY29uc3QgaXNEeW5hbWljQ29sb3JzT25seSA9ICFpc0RhdGFTb3VyY2VDb2xvclJhbmdlQXZhaWxhYmxlKFxuICAgICAgbGF5ZXIsXG4gICAgICBzdGFjLFxuICAgICAgcHJlc2V0LFxuICAgICAgc2luZ2xlQmFuZFByZXNldE9wdGlvbnNcbiAgICApO1xuXG4gICAgLy8gRGVmYXVsdCBvZiBgZHluYW1pY0NvbG9yYCBpcyBmYWxzZS4gU2V0IGl0IHRydWUgaWYgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGdldCBkYXRhIHNvdXJjZVxuICAgIC8vIHdpZGUgY29sb3IgcmFuZ2VcbiAgICBjb25zdCBvblZpc0NvbmZpZ0NoYW5nZSA9IHZpc0NvbmZpZ3VyYXRvclByb3BzLm9uQ2hhbmdlO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoaXNEeW5hbWljQ29sb3JzT25seSAmJiAhZHluYW1pY0NvbG9yKSB7XG4gICAgICAgIG9uVmlzQ29uZmlnQ2hhbmdlKHtkeW5hbWljQ29sb3I6IHRydWV9KTtcbiAgICAgIH1cbiAgICB9LCBbb25WaXNDb25maWdDaGFuZ2UsIGR5bmFtaWNDb2xvciwgaXNEeW5hbWljQ29sb3JzT25seV0pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChwcmVzZXQgPT09ICdzaW5nbGVCYW5kJyAmJiAhc2luZ2xlQmFuZE5hbWUgJiYgc2luZ2xlQmFuZE9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICBvblZpc0NvbmZpZ0NoYW5nZSh7c2luZ2xlQmFuZE5hbWU6IHNpbmdsZUJhbmRPcHRpb25zWzBdLmlkfSk7XG4gICAgICB9XG4gICAgfSwgW29uVmlzQ29uZmlnQ2hhbmdlLCBwcmVzZXQsIHNpbmdsZUJhbmROYW1lLCBzaW5nbGVCYW5kT3B0aW9uc10pO1xuXG4gICAgY29uc3QgZWxldmF0aW9uVUkgPSAoXG4gICAgICA8PlxuICAgICAgICB7KHN0YWMucmFzdGVyU2VydmVyU3VwcG9ydHNFbGV2YXRpb24gPz9cbiAgICAgICAgICBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLnJhc3RlclNlcnZlclN1cHBvcnRzRWxldmF0aW9uKSAmJlxuICAgICAgICAgIHN0YWMucmFzdGVyVGlsZVNlcnZlclVybHM/Lmxlbmd0aCAmJiAoXG4gICAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgICB7Li4uKGxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmVuYWJsZVRlcnJhaW4gfHwge2xhYmVsOiAnbGF5ZXIuY29sb3InfSl9XG4gICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICAgIDxWaXNDb25maWdTd2l0Y2hcbiAgICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5lbmFibGVUZXJyYWluVG9wVmlld31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuICAgICAgICAgICl9XG4gICAgICA8Lz5cbiAgICApO1xuXG4gICAgLy8gRm9yIFBNVGlsZXMgaW4gcmFzdGVyIGZvcm1hdCwgb25seSBzaG93IG9wYWNpdHkgYW5kIHRlcnJhaW4gb3B0aW9ucyBmb3Igbm93XG4gICAgaWYgKHN0YWMucG10aWxlc1R5cGUgPT09IFBNVGlsZXNUeXBlLlJBU1RFUikge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZExheWVyQ29uZmlndXJhdG9yPlxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gbGFiZWw9XCJWaXN1YWwgU2V0dGluZ3NcIiBjb2xsYXBzaWJsZT17ZmFsc2V9PlxuICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlciB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Mub3BhY2l0eX0gey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgICB7ZWxldmF0aW9uVUl9XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSBsYWJlbD1cIkRlYnVnXCIgY29sbGFwc2libGU+XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTd2l0Y2hcbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnNob3dUaWxlQm9yZGVyc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1N3aXRjaFxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc2hvd1RpbGVEZWJ1Z0luZm99XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXIgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muem9vbU9mZnNldH0gLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuICAgICAgICA8L1N0eWxlZExheWVyQ29uZmlndXJhdG9yPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZExheWVyQ29uZmlndXJhdG9yPlxuICAgICAgICB7YXZhaWxhYmxlUHJlc2V0cyAmJiAoXG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSBsYWJlbD1cIkltYWdlIFNlbGVjdGlvblwiIGNvbGxhcHNpYmxlPXtmYWxzZX0+XG4gICAgICAgICAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICAgIDxQYW5lbExhYmVsPlByZXNldDwvUGFuZWxMYWJlbD5cbiAgICAgICAgICAgICAgICA8SW5mb0hlbHBlclxuICAgICAgICAgICAgICAgICAgaWQ9XCJwcmVzZXRcIlxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249XCJTZWxlY3QgYSBwcmVzZXQgdG8gZGVzY3JpYmUgaG93IHRvIGNvbWJpbmUgc3BlY3RyYWwgYmFuZHMuXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICA8SXRlbVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz17c2VsZWN0ZWRQcmVzZXR9XG4gICAgICAgICAgICAgICAgb3B0aW9ucz17cHJlc2V0T3B0aW9uc31cbiAgICAgICAgICAgICAgICBtdWx0aVNlbGVjdD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgc2VhcmNoYWJsZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgZGlzcGxheU9wdGlvbj1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICBnZXRPcHRpb25WYWx1ZT1cImlkXCJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17bmV3UHJlc2V0ID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG92ZXJyaWRlcyA9XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNvbG9yUGFyYW1zT25QcmVzZXRDaGFuZ2UoXG4gICAgICAgICAgICAgICAgICAgICAgc3RhYyxcbiAgICAgICAgICAgICAgICAgICAgICB2aXNDb25maWd1cmF0b3JQcm9wcy5sYXllci5jb25maWcudmlzQ29uZmlnLnByZXNldCxcbiAgICAgICAgICAgICAgICAgICAgICBuZXdQcmVzZXQgYXMgc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICkgfHwge307XG4gICAgICAgICAgICAgICAgICB2aXNDb25maWd1cmF0b3JQcm9wcy5vbkNoYW5nZSh7XG4gICAgICAgICAgICAgICAgICAgIC4uLm92ZXJyaWRlcyxcbiAgICAgICAgICAgICAgICAgICAgcHJlc2V0OiBuZXdQcmVzZXQsXG4gICAgICAgICAgICAgICAgICAgIGJhbmRPdmVycmlkZXM6IG51bGxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIHtzZWxlY3RlZFByZXNldD8uZGVzY3JpcHRpb24gPyAoXG4gICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uVGV4dD5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZFByZXNldD8uZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0ZWRQcmVzZXQ/LmluZm9VcmwgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIiBocmVmPXtzZWxlY3RlZFByZXNldD8uaW5mb1VybH0+XG4gICAgICAgICAgICAgICAgICAgICAgTW9yZSBJbmZvXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDwvRGVzY3JpcHRpb25UZXh0PlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvU2lkZVBhbmVsU2VjdGlvbj5cblxuICAgICAgICAgICAge3NlbGVjdGVkUHJlc2V0LmlkID09PSAnc2luZ2xlQmFuZCcgJiYgKFxuICAgICAgICAgICAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgICAgICAgICA8UGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICAgICAgICA8UGFuZWxMYWJlbD5TaW5nbGUgQmFuZCBOYW1lPC9QYW5lbExhYmVsPlxuICAgICAgICAgICAgICAgICAgPEluZm9IZWxwZXJcbiAgICAgICAgICAgICAgICAgICAgaWQ9e2Ake2xheWVyLmlkfS1zaW5nbGUtYmFuZC1uYW1lYH1cbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249XCJTZWxlY3QgYSBzaW5nbGUgYmFuZC5cIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICAgIDxJdGVtU2VsZWN0b3JcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM9e3NlbGVjdGVkU2luZ2xlQmFuZE5hbWV9XG4gICAgICAgICAgICAgICAgICBvcHRpb25zPXtzaW5nbGVCYW5kT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIG11bHRpU2VsZWN0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgZGlzcGxheU9wdGlvbj1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgIGdldE9wdGlvblZhbHVlPVwiaWRcIlxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3ZhbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzLm9uQ2hhbmdlKHtzaW5nbGVCYW5kTmFtZTogdmFsfSk7XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvU2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHtTVEFDX1NFQVJDSF9VSV9FTkFCTEVEICYmIHN0YWNTZWFyY2hBbGxvd2VkICYmIChcbiAgICAgICAgICAgICAgPEN1c3RvbVZpc0NvbmZpZ1N3aXRjaFxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy51c2VTVEFDU2VhcmNoaW5nfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHtTVEFDX1NFQVJDSF9VSV9FTkFCTEVEICYmIChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICB7c3RhY1NlYXJjaEFsbG93ZWQgJiYgdXNlU1RBQ1NlYXJjaGluZyA/IChcbiAgICAgICAgICAgICAgICAgIDxTaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPFBhbmVsTGFiZWw+U1RBQyBTZWFyY2ggUHJvdmlkZXI8L1BhbmVsTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICAgICAgICAgIDxJdGVtU2VsZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc3RhY1NlYXJjaFByb3ZpZGVyfVxuICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM9e2ZpbmRWaXNDb25maWdJdGVtQnlJZChsYXllciwgJ3N0YWNTZWFyY2hQcm92aWRlcicpfVxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQ2hvb3NlIHNlYXJjaCBwcm92aWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgbXVsdGlTZWxlY3Q9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlPcHRpb249XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgZ2V0T3B0aW9uVmFsdWU9XCJpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3ZhbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBjaGVjayB3aGVuIHN3aXRjaGluZyBsYXllcnMgc28gdGhhdCB5b3UgZG9uJ3QgbWlzbWF0Y2ggYWxsb3dlZCBtb3NhaWNzIHdpdGggbGF5ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNDb25maWd1cmF0b3JQcm9wcy5vbkNoYW5nZSh7c3RhY1NlYXJjaFByb3ZpZGVyOiB2YWx9KTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGFuZWxMYWJlbD5EYXRlIFJhbmdlPC9QYW5lbExhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgaWQ9e2Ake2xheWVyLmlkfS1zdGFydERhdGVgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoe3RhcmdldDoge3ZhbHVlfX0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzLm9uQ2hhbmdlKHtzdGFydERhdGU6IHZhbHVlfSk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bGF5ZXIuY29uZmlnLnZpc0NvbmZpZy5zdGFydERhdGV9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICBpZD17YCR7bGF5ZXIuaWR9LWVuZERhdGVgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoe3RhcmdldDoge3ZhbHVlfX0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzLm9uQ2hhbmdlKHtlbmREYXRlOiB2YWx1ZX0pO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2xheWVyLmNvbmZpZy52aXNDb25maWcuZW5kRGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uVGV4dD5EYXRlIGZvcm1hdCBtdXN0IGJlIFwiWVlZWS1NTS1ERFwiPC9EZXNjcmlwdGlvblRleHQ+XG4gICAgICAgICAgICAgICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgICl9XG5cbiAgICAgICAge3NlbGVjdGVkUHJlc2V0Py5pZCAhPT0gJ3NpbmdsZUJhbmQnICYmXG4gICAgICAgICAgY3VycmVudFByZXNldENvbW1vbk5hbWVzICYmXG4gICAgICAgICAgc2luZ2xlQmFuZE9wdGlvbnMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIGxhYmVsPVwiQmFuZCBBc3NpZ25tZW50XCJcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb249XCJPdmVycmlkZSB3aGljaCBwaHlzaWNhbCBiYW5kIGZpbGxzIGVhY2ggY2hhbm5lbC4gVXNlZnVsIHdoZW4gYmFuZCBtZXRhZGF0YSBpcyBpbmNvcnJlY3Qgb3IgbWlzc2luZy5cIlxuICAgICAgICAgICAgICBjb2xsYXBzaWJsZVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPEJhbmRBc3NpZ25tZW50XG4gICAgICAgICAgICAgICAgICBzdGFjPXtzdGFjfVxuICAgICAgICAgICAgICAgICAgY29tbW9uTmFtZXM9e2N1cnJlbnRQcmVzZXRDb21tb25OYW1lc31cbiAgICAgICAgICAgICAgICAgIGJhbmRPcHRpb25zPXtzaW5nbGVCYW5kT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIGJhbmRPdmVycmlkZXM9e2JhbmRPdmVycmlkZXN9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dmlzQ29uZmlndXJhdG9yUHJvcHMub25DaGFuZ2V9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgICApfVxuXG4gICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gbGFiZWw9XCJWaXN1YWwgU2V0dGluZ3NcIiBjb2xsYXBzaWJsZT17ZmFsc2V9PlxuICAgICAgICAgIDxWaXNDb25maWdTbGlkZXIgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLm9wYWNpdHl9IHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICB7Y29sb3JtYXBBbGxvd2VkICYmIChcbiAgICAgICAgICAgIDxTaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICAgICAgICA8UGFuZWxMYWJlbD5Db2xvcm1hcDwvUGFuZWxMYWJlbD5cbiAgICAgICAgICAgICAgPEl0ZW1TZWxlY3RvclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM9e3NlbGVjdGVkQ29sb3JtYXB9XG4gICAgICAgICAgICAgICAgb3B0aW9ucz17Y29sb3JtYXBPcHRpb25zfVxuICAgICAgICAgICAgICAgIG11bHRpU2VsZWN0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICBkaXNwbGF5T3B0aW9uPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgIGdldE9wdGlvblZhbHVlPVwiaWRcIlxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt2YWwgPT4ge1xuICAgICAgICAgICAgICAgICAgdmlzQ29uZmlndXJhdG9yUHJvcHMub25DaGFuZ2Uoe2NvbG9ybWFwSWQ6IHZhbH0pO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgRHJvcERvd25MaW5lSXRlbVJlbmRlckNvbXBvbmVudD17Q29sb3JNYXBMaXN0SXRlbX1cbiAgICAgICAgICAgICAgICBmaWx0ZXJPcHRpb249XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgc2VhcmNoYWJsZVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9TaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cblxuICAgICAgICB7LyogUmVzY2FsaW5nICovfVxuICAgICAgICB7cmVzY2FsaW5nQWxsb3dlZCAmJiAoXG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSBsYWJlbD1cIlJlc2NhbGluZ1wiPlxuICAgICAgICAgICAgPFZpc0NvbmZpZ1N3aXRjaFxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5keW5hbWljQ29sb3J9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtpc0R5bmFtaWNDb2xvcnNPbmx5fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxWaXNDb25maWdTd2l0Y2hcbiAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLm5vbkxpbmVhclJlc2NhbGluZ31cbiAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICBsYWJlbD17bm9uTGluZWFyUmVzY2FsaW5nID8gJ05vbi1MaW5lYXIgUmVzY2FsaW5nJyA6ICdMaW5lYXIgUmVzY2FsaW5nJ31cbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIHsvKiBUT0RPOiBhZGQgc2xpZGVycyBmb3IgcmVkLCBncmVlbiwgYmx1ZSwgbm90IGEgc2luZ2xlIHNsaWRlciAqL31cbiAgICAgICAgICAgIHtub25MaW5lYXJSZXNjYWxpbmcgPyAoXG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmdhbW1hQ29udHJhc3RGYWN0b3J9XG4gICAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc2lnbW9pZGFsQ29udHJhc3RGYWN0b3J9XG4gICAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc2lnbW9pZGFsQmlhc0ZhY3Rvcn1cbiAgICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MubGluZWFyUmVzY2FsaW5nRmFjdG9yfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnNhdHVyYXRpb25WYWx1ZX1cbiAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgICl9XG5cbiAgICAgICAge2ZpbHRlckFsbG93ZWQgJiYgKFxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZmlsdGVyRW5hYmxlZH1cbiAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgIGNvbGxhcHNpYmxlXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlciB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZmlsdGVyUmFuZ2V9IHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgICl9XG5cbiAgICAgICAge2VsZXZhdGlvblVJfVxuXG4gICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gbGFiZWw9XCJEZWJ1Z1wiIGNvbGxhcHNpYmxlPlxuICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgIDxWaXNDb25maWdTd2l0Y2hcbiAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc2hvd1RpbGVCb3JkZXJzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxWaXNDb25maWdTd2l0Y2hcbiAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc2hvd1RpbGVEZWJ1Z0luZm99XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlciB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy56b29tT2Zmc2V0fSAvPlxuICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgIDwvU3R5bGVkTGF5ZXJDb25maWd1cmF0b3I+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gU1RBQ0NoZWNrQ29uZmlndXJhdG9yV3JhcHBlcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgUmFzdGVyVGlsZUxheWVyQ29uZmlndXJhdG9yRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBRyxVQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxPQUFBLEdBQUFKLE9BQUE7QUFtQkEsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBSUEsSUFBQU8sMkJBQUEsR0FBQVAsT0FBQTtBQUVBLElBQUFRLGtCQUFBLEdBQUFSLE9BQUE7QUFNQSxJQUFBUyxPQUFBLEdBQUFQLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBVSxXQUFBLEdBQUFSLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBVyxhQUFBLEdBQUFULHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBWSxnQkFBQSxHQUFBVixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQWEsaUJBQUEsR0FBQWQsdUJBQUEsQ0FBQUMsT0FBQTtBQUdBLElBQUFjLGdCQUFBLEdBQUFaLHNCQUFBLENBQUFGLE9BQUE7QUFBb0YsSUFBQWUsZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQTlDcEY7QUFDQTtBQUFBLFNBQUFuQix3QkFBQW9CLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUF0Qix1QkFBQSxZQUFBQSx3QkFBQW9CLENBQUEsRUFBQUMsQ0FBQSxTQUFBQSxDQUFBLElBQUFELENBQUEsSUFBQUEsQ0FBQSxDQUFBSyxVQUFBLFNBQUFMLENBQUEsTUFBQU0sQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsS0FBQUMsU0FBQSxtQkFBQVQsQ0FBQSxpQkFBQUEsQ0FBQSxnQkFBQVUsT0FBQSxDQUFBVixDQUFBLDBCQUFBQSxDQUFBLFNBQUFRLENBQUEsTUFBQUYsQ0FBQSxHQUFBTCxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxRQUFBRyxDQUFBLENBQUFLLEdBQUEsQ0FBQVgsQ0FBQSxVQUFBTSxDQUFBLENBQUFNLEdBQUEsQ0FBQVosQ0FBQSxHQUFBTSxDQUFBLENBQUFPLEdBQUEsQ0FBQWIsQ0FBQSxFQUFBUSxDQUFBLGNBQUFNLEVBQUEsSUFBQWQsQ0FBQSxnQkFBQWMsRUFBQSxPQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWhCLENBQUEsRUFBQWMsRUFBQSxPQUFBUCxDQUFBLElBQUFELENBQUEsR0FBQVcsTUFBQSxDQUFBQyxjQUFBLEtBQUFELE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQW5CLENBQUEsRUFBQWMsRUFBQSxPQUFBUCxDQUFBLENBQUFLLEdBQUEsSUFBQUwsQ0FBQSxDQUFBTSxHQUFBLElBQUFQLENBQUEsQ0FBQUUsQ0FBQSxFQUFBTSxFQUFBLEVBQUFQLENBQUEsSUFBQUMsQ0FBQSxDQUFBTSxFQUFBLElBQUFkLENBQUEsQ0FBQWMsRUFBQSxXQUFBTixDQUFBLEtBQUFSLENBQUEsRUFBQUMsQ0FBQTtBQUFBLFNBQUFtQixRQUFBcEIsQ0FBQSxFQUFBRyxDQUFBLFFBQUFGLENBQUEsR0FBQWdCLE1BQUEsQ0FBQUksSUFBQSxDQUFBckIsQ0FBQSxPQUFBaUIsTUFBQSxDQUFBSyxxQkFBQSxRQUFBaEIsQ0FBQSxHQUFBVyxNQUFBLENBQUFLLHFCQUFBLENBQUF0QixDQUFBLEdBQUFHLENBQUEsS0FBQUcsQ0FBQSxHQUFBQSxDQUFBLENBQUFpQixNQUFBLFdBQUFwQixDQUFBLFdBQUFjLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQW5CLENBQUEsRUFBQUcsQ0FBQSxFQUFBcUIsVUFBQSxPQUFBdkIsQ0FBQSxDQUFBd0IsSUFBQSxDQUFBQyxLQUFBLENBQUF6QixDQUFBLEVBQUFLLENBQUEsWUFBQUwsQ0FBQTtBQUFBLFNBQUEwQixjQUFBM0IsQ0FBQSxhQUFBRyxDQUFBLE1BQUFBLENBQUEsR0FBQXlCLFNBQUEsQ0FBQUMsTUFBQSxFQUFBMUIsQ0FBQSxVQUFBRixDQUFBLFdBQUEyQixTQUFBLENBQUF6QixDQUFBLElBQUF5QixTQUFBLENBQUF6QixDQUFBLFFBQUFBLENBQUEsT0FBQWlCLE9BQUEsQ0FBQUgsTUFBQSxDQUFBaEIsQ0FBQSxPQUFBNkIsT0FBQSxXQUFBM0IsQ0FBQSxRQUFBNEIsZ0JBQUEsYUFBQS9CLENBQUEsRUFBQUcsQ0FBQSxFQUFBRixDQUFBLENBQUFFLENBQUEsU0FBQWMsTUFBQSxDQUFBZSx5QkFBQSxHQUFBZixNQUFBLENBQUFnQixnQkFBQSxDQUFBakMsQ0FBQSxFQUFBaUIsTUFBQSxDQUFBZSx5QkFBQSxDQUFBL0IsQ0FBQSxLQUFBbUIsT0FBQSxDQUFBSCxNQUFBLENBQUFoQixDQUFBLEdBQUE2QixPQUFBLFdBQUEzQixDQUFBLElBQUFjLE1BQUEsQ0FBQUMsY0FBQSxDQUFBbEIsQ0FBQSxFQUFBRyxDQUFBLEVBQUFjLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWxCLENBQUEsRUFBQUUsQ0FBQSxpQkFBQUgsQ0FBQTtBQWlEQSxJQUFNa0Msc0JBQXNCLEdBQUcsSUFBSTtBQUVuQyxJQUFNQyxxQkFBcUIsR0FBR0MsNEJBQU0sQ0FBQ0MsR0FBRyxDQUFBekMsZUFBQSxLQUFBQSxlQUFBLE9BQUEwQyx1QkFBQSxxSUFPdkM7QUFFRCxJQUFNQyxxQkFBcUIsR0FBRyxTQUF4QkEscUJBQXFCQSxDQUFBQyxJQUFBO0VBQUEsSUFBQUMsVUFBQSxHQUFBRCxJQUFBLENBQ3pCRSxLQUFLO0lBQUdDLEVBQUUsR0FBQUYsVUFBQSxDQUFGRSxFQUFFO0lBQUVDLE1BQU0sR0FBQUgsVUFBQSxDQUFORyxNQUFNO0lBQ2xCQyxRQUFRLEdBQUFMLElBQUEsQ0FBUkssUUFBUTtJQUNSQyxVQUFRLEdBQUFOLElBQUEsQ0FBUk0sUUFBUTtJQUNSQyxLQUFLLEdBQUFQLElBQUEsQ0FBTE8sS0FBSztJQUNMQyxRQUFRLEdBQUFSLElBQUEsQ0FBUlEsUUFBUTtFQUFBLG9CQVFSckUsTUFBQSxZQUFBc0UsYUFBQSxDQUFDNUQsa0JBQUEsQ0FBQTZELGdCQUFnQjtJQUFDRixRQUFRLEVBQUVHLE9BQU8sQ0FBQ0gsUUFBUTtFQUFFLGdCQUM1Q3JFLE1BQUEsWUFBQXNFLGFBQUEsQ0FBQ2QscUJBQXFCO0lBQUNpQixTQUFTLEVBQUM7RUFBbUIsZ0JBQ2xEekUsTUFBQSxZQUFBc0UsYUFBQTtJQUFLRyxTQUFTLEVBQUM7RUFBMEIsZ0JBQ3ZDekUsTUFBQSxZQUFBc0UsYUFBQSxDQUFDNUQsa0JBQUEsQ0FBQWdFLGlCQUFpQixRQUNmTixLQUFLLGdCQUNKcEUsTUFBQSxZQUFBc0UsYUFBQSxDQUFDNUQsa0JBQUEsQ0FBQWlFLFVBQVUsUUFDUFAsS0FBSyxpQkFBSXBFLE1BQUEsWUFBQXNFLGFBQUEsQ0FBQy9ELGFBQUEsQ0FBQXFFLGdCQUFnQjtJQUFDWixFQUFFLEVBQUVJO0VBQU0sQ0FBRSxDQUFDLElBQUssSUFBQVMsNEJBQXFCLEVBQUNYLFFBQVEsQ0FDbkUsQ0FBQyxHQUNYLElBQ2EsQ0FDaEIsQ0FBQyxlQUNObEUsTUFBQSxZQUFBc0UsYUFBQTtJQUFLRyxTQUFTLEVBQUM7RUFBMkIsZ0JBQ3hDekUsTUFBQSxZQUFBc0UsYUFBQSxDQUFDM0QsT0FBQSxXQUFNO0lBQ0xtRSxPQUFPLEVBQUViLE1BQU0sQ0FBQ2MsU0FBUyxDQUFDYixRQUFRLENBQUU7SUFDcENGLEVBQUUsS0FBQWdCLE1BQUEsQ0FBS2hCLEVBQUUsT0FBQWdCLE1BQUEsQ0FBSWQsUUFBUSxZQUFVO0lBQy9CQyxRQUFRLEVBQUUsU0FBVkEsUUFBUUEsQ0FBQTtNQUFBLE9BQVFBLFVBQVEsS0FBQWYsZ0JBQUEsaUJBQUdjLFFBQVEsRUFBRyxDQUFDRCxNQUFNLENBQUNjLFNBQVMsQ0FBQ2IsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUFBO0VBQUMsQ0FDckUsQ0FDRSxDQUNnQixDQUNQLENBQUM7QUFBQSxDQUNwQjtBQUVELElBQU1lLHVCQUF1QixHQUFHeEIsNEJBQU0sQ0FBQ0MsR0FBRyxDQUFBeEMsZ0JBQUEsS0FBQUEsZ0JBQUEsT0FBQXlDLHVCQUFBLDJDQUV6QztBQUVELElBQU11QixlQUFlLEdBQUcsSUFBQXpCLDRCQUFNLEVBQUNrQiw2QkFBVSxDQUFDLENBQUF4RCxnQkFBQSxLQUFBQSxnQkFBQSxPQUFBd0MsdUJBQUEsMEpBRy9CLFVBQUF3QixLQUFLO0VBQUEsT0FBSUEsS0FBSyxDQUFDQyxLQUFLLENBQUNDLFlBQVk7QUFBQSxFQU0zQzs7QUFFRDtBQUNBLFNBQVNDLHFCQUFxQkEsQ0FBQ3ZCLEtBQUssRUFBRXdCLElBQUksRUFBRTtFQUMxQyxPQUFPeEIsS0FBSyxDQUFDeUIsaUJBQWlCLENBQUNELElBQUksQ0FBQyxDQUFDRSxPQUFPLENBQUNDLElBQUksQ0FBQyxVQUFBQyxFQUFFO0lBQUEsT0FBSUEsRUFBRSxDQUFDM0IsRUFBRSxLQUFLRCxLQUFLLENBQUNFLE1BQU0sQ0FBQ2MsU0FBUyxDQUFDUSxJQUFJLENBQUM7RUFBQSxFQUFDO0FBQ2pHO0FBRUEsU0FBU0ssWUFBWUEsQ0FBQzdCLEtBQUssRUFBRTBCLE9BQU8sRUFBRUYsSUFBSSxFQUFFO0VBQzFDO0VBQ0E7RUFDQSxPQUFPRSxPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRUMsSUFBSSxDQUFDLFVBQUFDLEVBQUU7SUFBQSxPQUFJQSxFQUFFLENBQUMzQixFQUFFLEtBQUtELEtBQUssQ0FBQ0UsTUFBTSxDQUFDYyxTQUFTLENBQUNRLElBQUksQ0FBQztFQUFBLEVBQUM7QUFDcEU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNNLHNCQUFzQkEsQ0FBQ0MsSUFBd0IsRUFBbUM7RUFDekYsSUFBTUMsT0FBTyxHQUFHLElBQUFDLGtCQUFVLEVBQUNGLElBQUksQ0FBQyxJQUFJLEVBQUU7RUFDdEMsT0FBT0MsT0FBTyxDQUFDRSxHQUFHLENBQUMsVUFBQ0MsTUFBYztJQUFBLE9BQU07TUFDdENsQyxFQUFFLEVBQUVrQyxNQUFNLENBQUNDLElBQUksSUFBSUQsTUFBTSxDQUFDRSxXQUFXO01BQ3JDaEMsS0FBSyxFQUFFOEIsTUFBTSxDQUFDRSxXQUFXLE1BQUFwQixNQUFBLENBQ2xCa0IsTUFBTSxDQUFDQyxJQUFJLElBQUlELE1BQU0sQ0FBQ0UsV0FBVyxRQUFBcEIsTUFBQSxDQUFLa0IsTUFBTSxDQUFDRSxXQUFXLFNBQzNERixNQUFNLENBQUNDO0lBQ2IsQ0FBQztFQUFBLENBQUMsQ0FBQztBQUNMO0FBRUEsSUFBTUUsa0JBQTBDLEdBQUc7RUFDakRDLEdBQUcsRUFBRSxhQUFhO0VBQ2xCQyxLQUFLLEVBQUUsZUFBZTtFQUN0QkMsSUFBSSxFQUFFLGNBQWM7RUFDcEJDLEdBQUcsRUFBRSxVQUFVO0VBQ2ZDLE1BQU0sRUFBRSxlQUFlO0VBQ3ZCQyxNQUFNLEVBQUU7QUFDVixDQUFDO0FBRUQsU0FBU0MsWUFBWUEsQ0FBQ0MsVUFBa0IsRUFBVTtFQUNoRCxPQUFPUixrQkFBa0IsQ0FBQ1EsVUFBVSxDQUFDLE9BQUE3QixNQUFBLENBQU82QixVQUFVLFVBQU87QUFDL0Q7QUFFQSxJQUFNQyxpQkFBaUIsR0FBR3JELDRCQUFNLENBQUNDLEdBQUcsQ0FBQXRDLGdCQUFBLEtBQUFBLGdCQUFBLE9BQUF1Qyx1QkFBQSw2Q0FFbkM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0EsU0FBU29ELHFCQUFxQkEsQ0FDNUJqQixJQUF3QixFQUN4QmUsVUFBa0IsRUFDbEJHLFdBQTRDLEVBQ0Q7RUFDM0MsSUFBTWpCLE9BQU8sR0FBRyxJQUFBQyxrQkFBVSxFQUFDRixJQUFJLENBQUMsSUFBSSxFQUFFO0VBQ3RDLElBQU1tQixLQUFLLEdBQUdsQixPQUFPLENBQUNMLElBQUksQ0FBQyxVQUFBd0IsQ0FBQztJQUFBLE9BQUlBLENBQUMsQ0FBQ2QsV0FBVyxLQUFLUyxVQUFVO0VBQUEsRUFBQztFQUM3RCxJQUFJSSxLQUFLLEVBQUU7SUFDVCxJQUFNRSxNQUFNLEdBQUdGLEtBQUssQ0FBQ2QsSUFBSSxJQUFJYyxLQUFLLENBQUNiLFdBQVc7SUFDOUMsT0FBT1ksV0FBVyxDQUFDdEIsSUFBSSxDQUFDLFVBQUEvRCxDQUFDO01BQUEsT0FBSUEsQ0FBQyxDQUFDcUMsRUFBRSxLQUFLbUQsTUFBTTtJQUFBLEVBQUM7RUFDL0M7RUFDQSxPQUFPQyxTQUFTO0FBQ2xCO0FBVUEsSUFBTUMsY0FBNkMsR0FBRyxTQUFoREEsY0FBNkNBLENBQUFDLEtBQUEsRUFNN0M7RUFBQSxJQUxKeEIsSUFBSSxHQUFBd0IsS0FBQSxDQUFKeEIsSUFBSTtJQUNKeUIsV0FBVyxHQUFBRCxLQUFBLENBQVhDLFdBQVc7SUFDWFAsV0FBVyxHQUFBTSxLQUFBLENBQVhOLFdBQVc7SUFDWFEsYUFBYSxHQUFBRixLQUFBLENBQWJFLGFBQWE7SUFDYnJELFFBQVEsR0FBQW1ELEtBQUEsQ0FBUm5ELFFBQVE7RUFFUixJQUFNc0QsZ0JBQWdCLEdBQUcsSUFBQUMsa0JBQVcsRUFDbEMsVUFBQ0MsUUFBZ0IsRUFBRVIsTUFBYyxFQUFLO0lBQ3BDLElBQU1TLE9BQU8sR0FBR0osYUFBYSxJQUFJLENBQUMsQ0FBQztJQUNuQyxJQUFNSyxPQUFPLEdBQUE3RSxhQUFBLENBQUFBLGFBQUEsS0FBTzRFLE9BQU8sV0FBQXhFLGdCQUFBLGlCQUFHdUUsUUFBUSxFQUFHUixNQUFNLEVBQUM7SUFDaERoRCxRQUFRLENBQUM7TUFBQ3FELGFBQWEsRUFBRU0sSUFBSSxDQUFDQyxTQUFTLENBQUNGLE9BQU87SUFBQyxDQUFDLENBQUM7RUFDcEQsQ0FBQyxFQUNELENBQUNMLGFBQWEsRUFBRXJELFFBQVEsQ0FDMUIsQ0FBQztFQUVELG9CQUNFbkUsTUFBQSxZQUFBc0UsYUFBQSxDQUFBdEUsTUFBQSxZQUFBZ0ksUUFBQSxRQUNHVCxXQUFXLENBQUN0QixHQUFHLENBQUMsVUFBQVksVUFBVSxFQUFJO0lBQzdCLElBQU1vQixVQUFVLEdBQUdULGFBQWEsYUFBYkEsYUFBYSx1QkFBYkEsYUFBYSxDQUFHWCxVQUFVLENBQUM7SUFDOUMsSUFBTXFCLFlBQVksR0FBR0QsVUFBVSxHQUMzQmpCLFdBQVcsQ0FBQ3RCLElBQUksQ0FBQyxVQUFBL0QsQ0FBQztNQUFBLE9BQUlBLENBQUMsQ0FBQ3FDLEVBQUUsS0FBS2lFLFVBQVU7SUFBQSxFQUFDLEdBQzFDbEIscUJBQXFCLENBQUNqQixJQUFJLEVBQUVlLFVBQVUsRUFBRUcsV0FBVyxDQUFDO0lBQ3hELG9CQUNFaEgsTUFBQSxZQUFBc0UsYUFBQSxDQUFDd0MsaUJBQWlCO01BQUNxQixHQUFHLEVBQUV0QjtJQUFXLGdCQUNqQzdHLE1BQUEsWUFBQXNFLGFBQUEsQ0FBQzVELGtCQUFBLENBQUFpRSxVQUFVLFFBQUVpQyxZQUFZLENBQUNDLFVBQVUsQ0FBYyxDQUFDLGVBQ25EN0csTUFBQSxZQUFBc0UsYUFBQSxDQUFDekQsYUFBQSxXQUFZO01BQ1h1SCxhQUFhLEVBQUVGLFlBQWE7TUFDNUJ6QyxPQUFPLEVBQUV1QixXQUFZO01BQ3JCcUIsV0FBVyxFQUFFLEtBQU07TUFDbkJDLFVBQVUsRUFBRSxLQUFNO01BQ2xCQyxhQUFhLEVBQUMsT0FBTztNQUNyQkMsY0FBYyxFQUFDLElBQUk7TUFDbkJyRSxRQUFRLEVBQUUsU0FBVkEsUUFBUUEsQ0FBRXNFLEdBQUc7UUFBQSxPQUFJaEIsZ0JBQWdCLENBQUNaLFVBQVUsRUFBRTRCLEdBQWEsQ0FBQztNQUFBO0lBQUMsQ0FDOUQsQ0FDZ0IsQ0FBQztFQUV4QixDQUFDLENBQ0QsQ0FBQztBQUVQLENBQUM7QUFFRCxTQUFTQyw4QkFBOEJBLENBQUNDLG1CQUFtQixFQUFFO0VBQzNELElBQUlDLGVBQXdEO0VBQzVELElBQUlELG1CQUFtQixFQUFFO0lBQ3ZCQyxlQUFlLEdBQUc7TUFBQ3hFLEtBQUssRUFBRSxhQUFhO01BQUVKLEVBQUUsRUFBRTZFO0lBQXVCLENBQUM7RUFDdkU7RUFDQSxPQUFPRCxlQUFlO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTRSwrQkFBK0JBLENBQ3RDL0UsS0FBc0IsRUFDdEIrQixJQUF3QixFQUN4QmlELE1BQWMsRUFDZEMsdUJBQW1ELEVBQzFDO0VBQ1QsSUFBSUMsYUFBNEIsR0FBRyxJQUFJO0VBQ3ZDLElBQUlDLGFBQTRCLEdBQUcsSUFBSTtFQUN2QyxJQUFNQyxnQkFBeUMsR0FBR3BGLEtBQUssQ0FBQ3FGLG1CQUFtQixDQUFDdEQsSUFBSSxFQUFFaUQsTUFBTSxFQUFFO0lBQ3hGTSxVQUFVLEVBQUVMO0VBQ2QsQ0FBQyxDQUFDO0VBQ0YsSUFBSUcsZ0JBQWdCLEVBQUU7SUFDcEJGLGFBQWEsR0FBR0UsZ0JBQWdCLENBQUNGLGFBQWE7SUFDOUNDLGFBQWEsR0FBR0MsZ0JBQWdCLENBQUNELGFBQWE7RUFDaEQ7RUFDQSxPQUFPRCxhQUFhLEtBQUssSUFBSSxJQUFJQyxhQUFhLEtBQUssSUFBSTtBQUN6RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNJLCtCQUErQkEsQ0FDdEN4RCxJQUF3QixFQUN4QnlELFNBQWlCLEVBQ2pCQyxTQUFpQixFQUNqQjtFQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLENBQUM7RUFDcEIsSUFBTUMsY0FBYyxHQUFHQyxrQ0FBMEIsQ0FBQzdELElBQUksQ0FBQzlCLEVBQUUsQ0FBQztFQUMxRCxJQUFJMEYsY0FBYyxFQUFFLE9BQU9ELFdBQVc7RUFFdEMsSUFBTUcsY0FBYyxHQUFHLFlBQVk7RUFDbkMsSUFBSUwsU0FBUyxLQUFLSyxjQUFjLElBQUlKLFNBQVMsS0FBS0ksY0FBYyxFQUFFO0lBQ2hFO0lBQ0FILFdBQVcsR0FBR0MsY0FBYztFQUM5QixDQUFDLE1BQU0sSUFBSUgsU0FBUyxLQUFLSyxjQUFjLElBQUlKLFNBQVMsS0FBS0ksY0FBYyxFQUFFO0lBQ3ZFO0lBQ0FILFdBQVcsR0FBR0ksaUNBQXlCO0VBQ3pDO0VBRUEsT0FBT0osV0FBVztBQUNwQjtBQVFBSyxrQ0FBa0MsQ0FBQ0MsSUFBSSxHQUFHLENBQ3hDQyw0QkFBdUIsRUFDdkJDLDJCQUFzQixFQUN0QkMsc0JBQWlCLEVBQ2pCQywyQkFBc0IsQ0FDdkI7QUFFRCxTQUFTTCxrQ0FBa0NBLENBQ3pDTSxnQkFBNEQsRUFDNURDLGVBQTBELEVBQzFEQyxVQUFnRCxFQUNoREMsZUFBMEQsRUFDZDtFQUM1QztBQUNGO0FBQ0E7RUFDRSxJQUFNQyw0QkFBNEIsR0FBRyxTQUEvQkEsNEJBQTRCQSxDQUFBQyxLQUFBLEVBSU07SUFBQSxJQUh0QzFHLEtBQUssR0FBQTBHLEtBQUEsQ0FBTDFHLEtBQUs7TUFDTDJHLG9CQUFvQixHQUFBRCxLQUFBLENBQXBCQyxvQkFBb0I7TUFDcEJDLE9BQU8sR0FBQUYsS0FBQSxDQUFQRSxPQUFPO0lBRVAsSUFBTTdFLElBQUksR0FBRzZFLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFQyxRQUFROztJQUU5QjtJQUNBLElBQUksQ0FBQzlFLElBQUksRUFBRTtNQUNULE9BQU8sSUFBSTtJQUNiO0lBRUEsb0JBQ0U5RixNQUFBLFlBQUFzRSxhQUFBLENBQUN1RywyQkFBMkI7TUFDMUI5RyxLQUFLLEVBQUVBLEtBQU07TUFDYjJHLG9CQUFvQixFQUFFQSxvQkFBcUI7TUFDM0NDLE9BQU8sRUFBRUE7SUFBUSxDQUNsQixDQUFDO0VBRU4sQ0FBQzs7RUFFRDtFQUNBLElBQU1FLDJCQUF1RSxHQUFHLFNBQTFFQSwyQkFBdUVBLENBQUFDLEtBQUEsRUFJdkU7SUFBQSxJQUFBQyxxQkFBQSxFQUFBQyxxQkFBQSxFQUFBQyxxQkFBQTtJQUFBLElBSEpsSCxLQUFLLEdBQUErRyxLQUFBLENBQUwvRyxLQUFLO01BQ0wyRyxvQkFBb0IsR0FBQUksS0FBQSxDQUFwQkosb0JBQW9CO01BQ3BCQyxPQUFPLEdBQUFHLEtBQUEsQ0FBUEgsT0FBTztJQUVQLElBQUFPLHFCQUFBLEdBUUluSCxLQUFLLENBQUNFLE1BQU0sQ0FBQ2MsU0FBUztNQVB4QmdFLE1BQU0sR0FBQW1DLHFCQUFBLENBQU5uQyxNQUFNO01BQ05vQyxrQkFBa0IsR0FBQUQscUJBQUEsQ0FBbEJDLGtCQUFrQjtNQUNsQkMsZ0JBQWdCLEdBQUFGLHFCQUFBLENBQWhCRSxnQkFBZ0I7TUFDT3pDLG1CQUFtQixHQUFBdUMscUJBQUEsQ0FBMUNHLFVBQVUsQ0FBR0MsUUFBUTtNQUNyQkMsWUFBWSxHQUFBTCxxQkFBQSxDQUFaSyxZQUFZO01BQ1pDLGNBQWMsR0FBQU4scUJBQUEsQ0FBZE0sY0FBYztNQUNDQyxnQkFBZ0IsR0FBQVAscUJBQUEsQ0FBL0IxRCxhQUFhO0lBR2YsSUFBTTFCLElBQUksR0FBRzZFLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFQyxRQUEwQztJQUVoRSxJQUFNcEQsYUFBNEMsR0FBRyxJQUFBa0UsY0FBTyxFQUFDLFlBQU07TUFDakUsSUFBSSxDQUFDRCxnQkFBZ0IsRUFBRSxPQUFPLElBQUk7TUFDbEMsSUFBSSxPQUFPQSxnQkFBZ0IsS0FBSyxRQUFRLEVBQUU7UUFDeEMsSUFBSTtVQUNGLE9BQU8zRCxJQUFJLENBQUM2RCxLQUFLLENBQUNGLGdCQUFnQixDQUFDO1FBQ3JDLENBQUMsQ0FBQyxPQUFBRyxPQUFBLEVBQU07VUFDTixPQUFPLElBQUk7UUFDYjtNQUNGO01BQ0EsT0FBT0gsZ0JBQWdCO0lBQ3pCLENBQUMsRUFBRSxDQUFDQSxnQkFBZ0IsQ0FBQyxDQUFDO0lBRXRCLElBQU1JLGdCQUFnQixHQUFHLElBQUFILGNBQU8sRUFBQztNQUFBLE9BQU0sSUFBQUksOEJBQXNCLEVBQUNoRyxJQUFJLEVBQUVpRyxzQkFBYyxDQUFDO0lBQUEsR0FBRSxDQUFDakcsSUFBSSxDQUFDLENBQUM7SUFFNUYsSUFBTWtHLGFBQWEsR0FBRyxJQUFBTixjQUFPLEVBQzNCO01BQUEsT0FFSTNILEtBQUssQ0FBQ3lCLGlCQUFpQixDQUFDdUQsTUFBTSxDQUFDdEQsT0FBTyxDQUl0QzdDLE1BQU0sQ0FBQyxVQUFBcUosS0FBQTtRQUFBLElBQUVqSSxFQUFFLEdBQUFpSSxLQUFBLENBQUZqSSxFQUFFO1FBQUEsT0FBTTZILGdCQUFnQixhQUFoQkEsZ0JBQWdCLHVCQUFoQkEsZ0JBQWdCLENBQUVLLFFBQVEsQ0FBQ2xJLEVBQUUsQ0FBQztNQUFBLEVBQUM7SUFBQSxHQUNwRCxDQUFDRCxLQUFLLENBQUN5QixpQkFBaUIsQ0FBQ3VELE1BQU0sQ0FBQ3RELE9BQU8sRUFBRW9HLGdCQUFnQixDQUMzRCxDQUFDO0lBQ0QsSUFBTU0saUJBQWlCLEdBQUcsSUFBQVQsY0FBTyxFQUFDO01BQUEsT0FBTTdGLHNCQUFzQixDQUFDQyxJQUFJLENBQUM7SUFBQSxHQUFFLENBQUNBLElBQUksQ0FBQyxDQUFDO0lBQzdFLElBQU1zRyxlQUFlLEdBQUcsSUFBQVYsY0FBTyxFQUFDLFlBQU07TUFDcEMsSUFBTWpHLE9BQU8sT0FBQTRHLG1CQUFBLGFBQ1B0SSxLQUFLLENBQUN5QixpQkFBaUIsQ0FBQzhHLFVBQVUsQ0FBQzdHLE9BQU8sQ0FJL0M7TUFDRCxJQUFNOEcsbUJBQW1CLEdBQUc3RCw4QkFBOEIsQ0FBQ0MsbUJBQW1CLENBQUM7TUFDL0UsSUFBSTRELG1CQUFtQixFQUFFO1FBQ3ZCOUcsT0FBTyxDQUFDM0MsSUFBSSxDQUFDeUosbUJBQW1CLENBQUM7TUFDbkM7TUFDQSxPQUFPOUcsT0FBTztJQUNoQixDQUFDLEVBQUUsQ0FBQzFCLEtBQUssQ0FBQ3lCLGlCQUFpQixDQUFDOEcsVUFBVSxDQUFDN0csT0FBTyxFQUFFa0QsbUJBQW1CLENBQUMsQ0FBQztJQUVyRSxJQUFBNkQsS0FBQSxHQUEwQlQsc0JBQWMsQ0FBQ2hELE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztNQUEvQzBELGVBQWUsR0FBQUQsS0FBQSxDQUFmQyxlQUFlO0lBQ3RCLElBQU1DLHdCQUF3QixJQUFBM0IscUJBQUEsR0FBR2dCLHNCQUFjLENBQUNoRCxNQUFNLENBQUMsY0FBQWdDLHFCQUFBLHVCQUF0QkEscUJBQUEsQ0FBd0J4RCxXQUFXO0lBQ3BFLElBQU1vRixlQUFlLEdBQUcsSUFBQUMseUJBQWlCLEVBQUNILGVBQWUsQ0FBQztJQUMxRCxJQUFNSSxnQkFBZ0IsR0FBRyxDQUFDbEUsbUJBQW1CLElBQUksSUFBQW1FLDBCQUFrQixFQUFDTCxlQUFlLENBQUM7SUFDcEYsSUFBTU0sYUFBYSxHQUFHLElBQUFDLHVCQUFlLEVBQUNQLGVBQWUsQ0FBQzs7SUFFdEQ7SUFDQSxJQUFNUSxpQkFBaUIsR0FBRyxJQUFBQyx3QkFBZ0IsRUFBQ3BILElBQUksQ0FBQyxJQUFJc0YsZ0JBQWdCO0lBRXBFLElBQU0rQixnQkFBZ0IsR0FDcEI3SCxxQkFBcUIsQ0FBQ3ZCLEtBQUssRUFBRSxZQUFZLENBQUMsSUFDMUMyRSw4QkFBOEIsQ0FBQ0MsbUJBQW1CLENBQUM7SUFDckQsSUFBTXlFLGNBQWMsR0FBRzlILHFCQUFxQixDQUFDdkIsS0FBSyxFQUFFLFFBQVEsQ0FBQztJQUM3RCxJQUFNc0osc0JBQXNCLEdBQUd6SCxZQUFZLENBQUM3QixLQUFLLEVBQUVvSSxpQkFBaUIsRUFBRSxnQkFBZ0IsQ0FBQztJQUV2RixJQUFNbkQsdUJBQXVCLEdBQUcsSUFBQXNFLGtDQUEwQixFQUFDeEgsSUFBSSxFQUFFMEYsY0FBYyxDQUFDO0lBQ2hGLElBQUErQixxQkFBQSxHQUEyRCxJQUFBQyxpQ0FBeUIsRUFDbEYxSCxJQUFJLEVBQ0ppRCxNQUFNLEVBQ05DLHVCQUNGLENBQUM7TUFBQXlFLHNCQUFBLE9BQUFDLGVBQUEsYUFBQUgscUJBQUE7TUFKTUksdUJBQXVCLEdBQUFGLHNCQUFBO01BQUVHLHVCQUF1QixHQUFBSCxzQkFBQTtJQUt2RCxJQUFNSSxnQkFBZ0IsR0FBRyxJQUFBbkMsY0FBTyxFQUM5QjtNQUFBLE9BQ0UsSUFBQW9DLHdEQUE0QixFQUFDO1FBQzNCeEMsUUFBUSxFQUFFM0MsbUJBQW1CO1FBQzdCb0YsUUFBUSxFQUFFSix1QkFBdUI7UUFDakNLLFFBQVEsRUFBRUo7TUFDWixDQUFDLENBQUM7SUFBQSxHQUNKLENBQUNqRixtQkFBbUIsRUFBRWdGLHVCQUF1QixFQUFFQyx1QkFBdUIsQ0FDeEUsQ0FBQztJQUNELElBQU1LLG1CQUFtQixHQUFHLENBQUNuRiwrQkFBK0IsQ0FDMUQvRSxLQUFLLEVBQ0wrQixJQUFJLEVBQ0ppRCxNQUFNLEVBQ05DLHVCQUNGLENBQUM7O0lBRUQ7SUFDQTtJQUNBLElBQU1rRixpQkFBaUIsR0FBR3hELG9CQUFvQixDQUFDdkcsUUFBUTtJQUN2RCxJQUFBZ0ssZ0JBQVMsRUFBQyxZQUFNO01BQ2QsSUFBSUYsbUJBQW1CLElBQUksQ0FBQzFDLFlBQVksRUFBRTtRQUN4QzJDLGlCQUFpQixDQUFDO1VBQUMzQyxZQUFZLEVBQUU7UUFBSSxDQUFDLENBQUM7TUFDekM7SUFDRixDQUFDLEVBQUUsQ0FBQzJDLGlCQUFpQixFQUFFM0MsWUFBWSxFQUFFMEMsbUJBQW1CLENBQUMsQ0FBQztJQUUxRCxJQUFBRSxnQkFBUyxFQUFDLFlBQU07TUFDZCxJQUFJcEYsTUFBTSxLQUFLLFlBQVksSUFBSSxDQUFDeUMsY0FBYyxJQUFJVyxpQkFBaUIsQ0FBQ2pKLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDOUVnTCxpQkFBaUIsQ0FBQztVQUFDMUMsY0FBYyxFQUFFVyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQ25JO1FBQUUsQ0FBQyxDQUFDO01BQzlEO0lBQ0YsQ0FBQyxFQUFFLENBQUNrSyxpQkFBaUIsRUFBRW5GLE1BQU0sRUFBRXlDLGNBQWMsRUFBRVcsaUJBQWlCLENBQUMsQ0FBQztJQUVsRSxJQUFNaUMsV0FBVyxnQkFDZnBPLE1BQUEsWUFBQXNFLGFBQUEsQ0FBQXRFLE1BQUEsWUFBQWdJLFFBQUEsUUFDRyxFQUFBZ0QscUJBQUEsR0FBQ2xGLElBQUksQ0FBQ3VJLDZCQUE2QixjQUFBckQscUJBQUEsY0FBQUEscUJBQUEsR0FDbEMsSUFBQXNELDJCQUFvQixFQUFDLENBQUMsQ0FBQ0QsNkJBQTZCLE9BQUFwRCxxQkFBQSxHQUNwRG5GLElBQUksQ0FBQ3lJLG9CQUFvQixjQUFBdEQscUJBQUEsdUJBQXpCQSxxQkFBQSxDQUEyQi9ILE1BQU0sa0JBQy9CbEQsTUFBQSxZQUFBc0UsYUFBQSxDQUFDOEYsZ0JBQWdCLE1BQUFvRSxTQUFBLGlCQUNWekssS0FBSyxDQUFDeUIsaUJBQWlCLENBQUNpSixhQUFhLElBQUk7TUFBQ3JLLEtBQUssRUFBRTtJQUFhLENBQUMsRUFDaEVzRyxvQkFBb0I7TUFDeEJnRSxXQUFXO0lBQUEsaUJBRVgxTyxNQUFBLFlBQUFzRSxhQUFBLENBQUN2RCxpQkFBQSxDQUFBNE4sNkJBQTZCLHFCQUM1QjNPLE1BQUEsWUFBQXNFLGFBQUEsQ0FBQ2lHLGVBQWUsTUFBQWlFLFNBQUEsaUJBQ1Y5RCxvQkFBb0IsRUFDcEIzRyxLQUFLLENBQUN5QixpQkFBaUIsQ0FBQ29KLG9CQUFvQixDQUNqRCxDQUM0QixDQUNmLENBRXRCLENBQ0g7O0lBRUQ7SUFDQSxJQUFJOUksSUFBSSxDQUFDK0ksV0FBVyxLQUFLQyxzQkFBVyxDQUFDQyxNQUFNLEVBQUU7TUFDM0Msb0JBQ0UvTyxNQUFBLFlBQUFzRSxhQUFBLENBQUNXLHVCQUF1QixxQkFDdEJqRixNQUFBLFlBQUFzRSxhQUFBLENBQUM4RixnQkFBZ0IsTUFBQW9FLFNBQUEsaUJBQUs5RCxvQkFBb0I7UUFBRXRHLEtBQUssRUFBQyxpQkFBaUI7UUFBQ3NLLFdBQVcsRUFBRTtNQUFNLGlCQUNyRjFPLE1BQUEsWUFBQXNFLGFBQUEsQ0FBQytGLGVBQWUsTUFBQW1FLFNBQUEsaUJBQUt6SyxLQUFLLENBQUN5QixpQkFBaUIsQ0FBQ3dKLE9BQU8sRUFBTXRFLG9CQUFvQixDQUFHLENBQ2pFLENBQUMsRUFDbEIwRCxXQUFXLGVBQ1pwTyxNQUFBLFlBQUFzRSxhQUFBLENBQUM4RixnQkFBZ0IsTUFBQW9FLFNBQUEsaUJBQUs5RCxvQkFBb0I7UUFBRXRHLEtBQUssRUFBQyxPQUFPO1FBQUNzSyxXQUFXO01BQUEsaUJBQ25FMU8sTUFBQSxZQUFBc0UsYUFBQSxDQUFDdkQsaUJBQUEsQ0FBQTROLDZCQUE2QixxQkFDNUIzTyxNQUFBLFlBQUFzRSxhQUFBLENBQUNpRyxlQUFlLE1BQUFpRSxTQUFBLGlCQUNWOUQsb0JBQW9CLEVBQ3BCM0csS0FBSyxDQUFDeUIsaUJBQWlCLENBQUN5SixlQUFlLENBQzVDLENBQUMsZUFDRmpQLE1BQUEsWUFBQXNFLGFBQUEsQ0FBQ2lHLGVBQWUsTUFBQWlFLFNBQUEsaUJBQ1Y5RCxvQkFBb0IsRUFDcEIzRyxLQUFLLENBQUN5QixpQkFBaUIsQ0FBQzBKLGlCQUFpQixDQUM5QyxDQUFDLGVBQ0ZsUCxNQUFBLFlBQUFzRSxhQUFBLENBQUMrRixlQUFlLE1BQUFtRSxTQUFBLGlCQUFLOUQsb0JBQW9CLEVBQU0zRyxLQUFLLENBQUN5QixpQkFBaUIsQ0FBQzJKLFVBQVUsQ0FBRyxDQUN2RCxDQUNmLENBQ0ssQ0FBQztJQUU5QjtJQUVBLG9CQUNFblAsTUFBQSxZQUFBc0UsYUFBQSxDQUFDVyx1QkFBdUIsUUFDckI0RyxnQkFBZ0IsaUJBQ2Y3TCxNQUFBLFlBQUFzRSxhQUFBLENBQUM4RixnQkFBZ0IsTUFBQW9FLFNBQUEsaUJBQUs5RCxvQkFBb0I7TUFBRXRHLEtBQUssRUFBQyxpQkFBaUI7TUFBQ3NLLFdBQVcsRUFBRTtJQUFNLGlCQUNyRjFPLE1BQUEsWUFBQXNFLGFBQUEsQ0FBQzVELGtCQUFBLENBQUE2RCxnQkFBZ0IscUJBQ2Z2RSxNQUFBLFlBQUFzRSxhQUFBLENBQUM1RCxrQkFBQSxDQUFBZ0UsaUJBQWlCLHFCQUNoQjFFLE1BQUEsWUFBQXNFLGFBQUEsQ0FBQzVELGtCQUFBLENBQUFpRSxVQUFVLFFBQUMsUUFBa0IsQ0FBQyxlQUMvQjNFLE1BQUEsWUFBQXNFLGFBQUEsQ0FBQ2dHLFVBQVU7TUFDVHRHLEVBQUUsRUFBQyxRQUFRO01BQ1hvTCxXQUFXLEVBQUM7SUFBNEQsQ0FDekUsQ0FDZ0IsQ0FBQyxlQUNwQnBQLE1BQUEsWUFBQXNFLGFBQUEsQ0FBQ3pELGFBQUEsV0FBWTtNQUNYdUgsYUFBYSxFQUFFZ0YsY0FBZTtNQUM5QjNILE9BQU8sRUFBRXVHLGFBQWM7TUFDdkIzRCxXQUFXLEVBQUUsS0FBTTtNQUNuQkMsVUFBVSxFQUFFLEtBQU07TUFDbEJDLGFBQWEsRUFBQyxPQUFPO01BQ3JCQyxjQUFjLEVBQUMsSUFBSTtNQUNuQnJFLFFBQVEsRUFBRSxTQUFWQSxRQUFRQSxDQUFFcUYsU0FBUyxFQUFJO1FBQ3JCLElBQU02RixTQUFTLEdBQ2IvRiwrQkFBK0IsQ0FDN0J4RCxJQUFJLEVBQ0o0RSxvQkFBb0IsQ0FBQzNHLEtBQUssQ0FBQ0UsTUFBTSxDQUFDYyxTQUFTLENBQUNnRSxNQUFNLEVBQ2xEUyxTQUNGLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDVGtCLG9CQUFvQixDQUFDdkcsUUFBUSxDQUFBbkIsYUFBQSxDQUFBQSxhQUFBLEtBQ3hCcU0sU0FBUztVQUNadEcsTUFBTSxFQUFFUyxTQUFTO1VBQ2pCaEMsYUFBYSxFQUFFO1FBQUksRUFDcEIsQ0FBQztNQUNKO0lBQUUsQ0FDSCxDQUFDLEVBQ0Q0RixjQUFjLGFBQWRBLGNBQWMsZUFBZEEsY0FBYyxDQUFFZ0MsV0FBVyxnQkFDMUJwUCxNQUFBLFlBQUFzRSxhQUFBLENBQUNZLGVBQWUsUUFDYmtJLGNBQWMsYUFBZEEsY0FBYyx1QkFBZEEsY0FBYyxDQUFFZ0MsV0FBVyxFQUMzQmhDLGNBQWMsYUFBZEEsY0FBYyxlQUFkQSxjQUFjLENBQUVrQyxPQUFPLGdCQUN0QnRQLE1BQUEsWUFBQXNFLGFBQUE7TUFBR2lMLE1BQU0sRUFBQyxRQUFRO01BQUNDLEdBQUcsRUFBQyxxQkFBcUI7TUFBQ0MsSUFBSSxFQUFFckMsY0FBYyxhQUFkQSxjQUFjLHVCQUFkQSxjQUFjLENBQUVrQztJQUFRLEdBQUMsV0FFekUsQ0FBQyxHQUNGLElBQ1csQ0FBQyxHQUNoQixJQUNZLENBQUMsRUFFbEJsQyxjQUFjLENBQUNwSixFQUFFLEtBQUssWUFBWSxpQkFDakNoRSxNQUFBLFlBQUFzRSxhQUFBLENBQUM1RCxrQkFBQSxDQUFBNkQsZ0JBQWdCLHFCQUNmdkUsTUFBQSxZQUFBc0UsYUFBQSxDQUFDNUQsa0JBQUEsQ0FBQWdFLGlCQUFpQixxQkFDaEIxRSxNQUFBLFlBQUFzRSxhQUFBLENBQUM1RCxrQkFBQSxDQUFBaUUsVUFBVSxRQUFDLGtCQUE0QixDQUFDLGVBQ3pDM0UsTUFBQSxZQUFBc0UsYUFBQSxDQUFDZ0csVUFBVTtNQUNUdEcsRUFBRSxLQUFBZ0IsTUFBQSxDQUFLakIsS0FBSyxDQUFDQyxFQUFFLHNCQUFvQjtNQUNuQ29MLFdBQVcsRUFBQztJQUF1QixDQUNwQyxDQUNnQixDQUFDLGVBQ3BCcFAsTUFBQSxZQUFBc0UsYUFBQSxDQUFDekQsYUFBQSxXQUFZO01BQ1h1SCxhQUFhLEVBQUVpRixzQkFBdUI7TUFDdEM1SCxPQUFPLEVBQUUwRyxpQkFBa0I7TUFDM0I5RCxXQUFXLEVBQUUsS0FBTTtNQUNuQkMsVUFBVSxFQUFFLEtBQU07TUFDbEJDLGFBQWEsRUFBQyxPQUFPO01BQ3JCQyxjQUFjLEVBQUMsSUFBSTtNQUNuQnJFLFFBQVEsRUFBRSxTQUFWQSxRQUFRQSxDQUFFc0UsR0FBRyxFQUFJO1FBQ2ZpQyxvQkFBb0IsQ0FBQ3ZHLFFBQVEsQ0FBQztVQUFDcUgsY0FBYyxFQUFFL0M7UUFBRyxDQUFDLENBQUM7TUFDdEQ7SUFBRSxDQUNILENBQ2UsQ0FDbkIsRUFFQWxGLHNCQUFzQixJQUFJMEosaUJBQWlCLGlCQUMxQ2pOLE1BQUEsWUFBQXNFLGFBQUEsQ0FBQ1YscUJBQXFCLE1BQUE0SyxTQUFBLGlCQUNoQnpLLEtBQUssQ0FBQ3lCLGlCQUFpQixDQUFDNEYsZ0JBQWdCLEVBQ3hDVixvQkFBb0IsQ0FDekIsQ0FDRixFQUVBbkgsc0JBQXNCLGlCQUNyQnZELE1BQUEsWUFBQXNFLGFBQUEsQ0FBQXRFLE1BQUEsWUFBQWdJLFFBQUEsUUFDR2lGLGlCQUFpQixJQUFJN0IsZ0JBQWdCLGdCQUNwQ3BMLE1BQUEsWUFBQXNFLGFBQUEsQ0FBQzVELGtCQUFBLENBQUE2RCxnQkFBZ0IscUJBQ2Z2RSxNQUFBLFlBQUFzRSxhQUFBLENBQUM1RCxrQkFBQSxDQUFBZ0UsaUJBQWlCLHFCQUNoQjFFLE1BQUEsWUFBQXNFLGFBQUEsQ0FBQzVELGtCQUFBLENBQUFpRSxVQUFVLFFBQUMsc0JBQWdDLENBQzNCLENBQUMsZUFDcEIzRSxNQUFBLFlBQUFzRSxhQUFBLENBQUN6RCxhQUFBLFdBQVksTUFBQTJOLFNBQUEsaUJBQ1B6SyxLQUFLLENBQUN5QixpQkFBaUIsQ0FBQ2tLLGtCQUFrQjtNQUM5Q3RILGFBQWEsRUFBRTlDLHFCQUFxQixDQUFDdkIsS0FBSyxFQUFFLG9CQUFvQixDQUFFO01BQ2xFNEwsV0FBVyxFQUFDLHdCQUF3QjtNQUNwQ3RILFdBQVcsRUFBRSxLQUFNO01BQ25CQyxVQUFVLEVBQUUsS0FBTTtNQUNsQkMsYUFBYSxFQUFDLE9BQU87TUFDckJDLGNBQWMsRUFBQyxJQUFJO01BQ25CckUsUUFBUSxFQUFFLFNBQVZBLFFBQVFBLENBQUVzRSxHQUFHLEVBQUk7UUFDZjtRQUNBaUMsb0JBQW9CLENBQUN2RyxRQUFRLENBQUM7VUFBQ3VMLGtCQUFrQixFQUFFakg7UUFBRyxDQUFDLENBQUM7TUFDMUQ7SUFBRSxFQUNILENBQUMsZUFFRnpJLE1BQUEsWUFBQXNFLGFBQUEsQ0FBQzVELGtCQUFBLENBQUFnRSxpQkFBaUIscUJBQ2hCMUUsTUFBQSxZQUFBc0UsYUFBQSxDQUFDNUQsa0JBQUEsQ0FBQWlFLFVBQVUsUUFBQyxZQUFzQixDQUNqQixDQUFDLGVBQ3BCM0UsTUFBQSxZQUFBc0UsYUFBQSxDQUFDNUQsa0JBQUEsQ0FBQWtQLEtBQUs7TUFDSkMsSUFBSSxFQUFDLE1BQU07TUFDWDdMLEVBQUUsS0FBQWdCLE1BQUEsQ0FBS2pCLEtBQUssQ0FBQ0MsRUFBRSxlQUFhO01BQzVCRyxRQUFRLEVBQUUsU0FBVkEsUUFBUUEsQ0FBQTJMLEtBQUEsRUFBeUI7UUFBQSxJQUFaQyxLQUFLLEdBQUFELEtBQUEsQ0FBZFAsTUFBTSxDQUFHUSxLQUFLO1FBQ3hCckYsb0JBQW9CLENBQUN2RyxRQUFRLENBQUM7VUFBQzZMLFNBQVMsRUFBRUQ7UUFBSyxDQUFDLENBQUM7TUFDbkQsQ0FBRTtNQUNGQSxLQUFLLEVBQUVoTSxLQUFLLENBQUNFLE1BQU0sQ0FBQ2MsU0FBUyxDQUFDaUw7SUFBVSxDQUN6QyxDQUFDLGVBQ0ZoUSxNQUFBLFlBQUFzRSxhQUFBLENBQUM1RCxrQkFBQSxDQUFBa1AsS0FBSztNQUNKQyxJQUFJLEVBQUMsTUFBTTtNQUNYN0wsRUFBRSxLQUFBZ0IsTUFBQSxDQUFLakIsS0FBSyxDQUFDQyxFQUFFLGFBQVc7TUFDMUJHLFFBQVEsRUFBRSxTQUFWQSxRQUFRQSxDQUFBOEwsS0FBQSxFQUF5QjtRQUFBLElBQVpGLEtBQUssR0FBQUUsS0FBQSxDQUFkVixNQUFNLENBQUdRLEtBQUs7UUFDeEJyRixvQkFBb0IsQ0FBQ3ZHLFFBQVEsQ0FBQztVQUFDK0wsT0FBTyxFQUFFSDtRQUFLLENBQUMsQ0FBQztNQUNqRCxDQUFFO01BQ0ZBLEtBQUssRUFBRWhNLEtBQUssQ0FBQ0UsTUFBTSxDQUFDYyxTQUFTLENBQUNtTDtJQUFRLENBQ3ZDLENBQUMsZUFDRmxRLE1BQUEsWUFBQXNFLGFBQUEsQ0FBQ1ksZUFBZSxRQUFDLG9DQUFpRCxDQUNsRCxDQUFDLEdBQ2pCLElBQ0osQ0FFWSxDQUNuQixFQUVBLENBQUFrSSxjQUFjLGFBQWRBLGNBQWMsdUJBQWRBLGNBQWMsQ0FBRXBKLEVBQUUsTUFBSyxZQUFZLElBQ2xDMEksd0JBQXdCLElBQ3hCUCxpQkFBaUIsQ0FBQ2pKLE1BQU0sR0FBRyxDQUFDLGlCQUMxQmxELE1BQUEsWUFBQXNFLGFBQUEsQ0FBQzhGLGdCQUFnQixNQUFBb0UsU0FBQSxpQkFDWDlELG9CQUFvQjtNQUN4QnRHLEtBQUssRUFBQyxpQkFBaUI7TUFDdkJnTCxXQUFXLEVBQUMscUdBQXFHO01BQ2pIVixXQUFXO0lBQUEsaUJBRVgxTyxNQUFBLFlBQUFzRSxhQUFBLENBQUN2RCxpQkFBQSxDQUFBNE4sNkJBQTZCLHFCQUM1QjNPLE1BQUEsWUFBQXNFLGFBQUEsQ0FBQytDLGNBQWM7TUFDYnZCLElBQUksRUFBRUEsSUFBSztNQUNYeUIsV0FBVyxFQUFFbUYsd0JBQXlCO01BQ3RDMUYsV0FBVyxFQUFFbUYsaUJBQWtCO01BQy9CM0UsYUFBYSxFQUFFQSxhQUFjO01BQzdCckQsUUFBUSxFQUFFdUcsb0JBQW9CLENBQUN2RztJQUFTLENBQ3pDLENBQzRCLENBQ2YsQ0FDbkIsZUFFSG5FLE1BQUEsWUFBQXNFLGFBQUEsQ0FBQzhGLGdCQUFnQixNQUFBb0UsU0FBQSxpQkFBSzlELG9CQUFvQjtNQUFFdEcsS0FBSyxFQUFDLGlCQUFpQjtNQUFDc0ssV0FBVyxFQUFFO0lBQU0saUJBQ3JGMU8sTUFBQSxZQUFBc0UsYUFBQSxDQUFDK0YsZUFBZSxNQUFBbUUsU0FBQSxpQkFBS3pLLEtBQUssQ0FBQ3lCLGlCQUFpQixDQUFDd0osT0FBTyxFQUFNdEUsb0JBQW9CLENBQUcsQ0FBQyxFQUNqRmlDLGVBQWUsaUJBQ2QzTSxNQUFBLFlBQUFzRSxhQUFBLENBQUM1RCxrQkFBQSxDQUFBNkQsZ0JBQWdCLHFCQUNmdkUsTUFBQSxZQUFBc0UsYUFBQSxDQUFDNUQsa0JBQUEsQ0FBQWlFLFVBQVUsUUFBQyxVQUFvQixDQUFDLGVBQ2pDM0UsTUFBQSxZQUFBc0UsYUFBQSxDQUFDekQsYUFBQSxXQUFZO01BQ1h1SCxhQUFhLEVBQUUrRSxnQkFBaUI7TUFDaEMxSCxPQUFPLEVBQUUyRyxlQUFnQjtNQUN6Qi9ELFdBQVcsRUFBRSxLQUFNO01BQ25CRSxhQUFhLEVBQUMsT0FBTztNQUNyQkMsY0FBYyxFQUFDLElBQUk7TUFDbkJyRSxRQUFRLEVBQUUsU0FBVkEsUUFBUUEsQ0FBRXNFLEdBQUcsRUFBSTtRQUNmaUMsb0JBQW9CLENBQUN2RyxRQUFRLENBQUM7VUFBQ21JLFVBQVUsRUFBRTdEO1FBQUcsQ0FBQyxDQUFDO01BQ2xELENBQUU7TUFDRjBILCtCQUErQixFQUFFdEMsZ0JBQWlCO01BQ2xEdUMsWUFBWSxFQUFDLE9BQU87TUFDcEI5SCxVQUFVO0lBQUEsQ0FDWCxDQUNlLENBRUosQ0FBQyxFQUdsQnVFLGdCQUFnQixpQkFDZjdNLE1BQUEsWUFBQXNFLGFBQUEsQ0FBQzhGLGdCQUFnQixNQUFBb0UsU0FBQSxpQkFBSzlELG9CQUFvQjtNQUFFdEcsS0FBSyxFQUFDO0lBQVcsaUJBQzNEcEUsTUFBQSxZQUFBc0UsYUFBQSxDQUFDaUcsZUFBZSxNQUFBaUUsU0FBQSxpQkFDVjlELG9CQUFvQixFQUNwQjNHLEtBQUssQ0FBQ3lCLGlCQUFpQixDQUFDK0YsWUFBWTtNQUN4Q2xILFFBQVEsRUFBRTRKO0lBQW9CLEVBQy9CLENBQUMsZUFDRmpPLE1BQUEsWUFBQXNFLGFBQUEsQ0FBQ2lHLGVBQWUsTUFBQWlFLFNBQUEsaUJBQ1Z6SyxLQUFLLENBQUN5QixpQkFBaUIsQ0FBQzJGLGtCQUFrQixFQUMxQ1Qsb0JBQW9CO01BQ3hCdEcsS0FBSyxFQUFFK0csa0JBQWtCLEdBQUcsc0JBQXNCLEdBQUc7SUFBbUIsRUFDekUsQ0FBQyxFQUdEQSxrQkFBa0IsZ0JBQ2pCbkwsTUFBQSxZQUFBc0UsYUFBQSwyQkFDRXRFLE1BQUEsWUFBQXNFLGFBQUEsQ0FBQytGLGVBQWUsTUFBQW1FLFNBQUEsaUJBQ1Z6SyxLQUFLLENBQUN5QixpQkFBaUIsQ0FBQzZLLG1CQUFtQixFQUMzQzNGLG9CQUFvQixDQUN6QixDQUFDLGVBQ0YxSyxNQUFBLFlBQUFzRSxhQUFBLENBQUMrRixlQUFlLE1BQUFtRSxTQUFBLGlCQUNWekssS0FBSyxDQUFDeUIsaUJBQWlCLENBQUM4Syx1QkFBdUIsRUFDL0M1RixvQkFBb0IsQ0FDekIsQ0FBQyxlQUNGMUssTUFBQSxZQUFBc0UsYUFBQSxDQUFDK0YsZUFBZSxNQUFBbUUsU0FBQSxpQkFDVnpLLEtBQUssQ0FBQ3lCLGlCQUFpQixDQUFDK0ssbUJBQW1CLEVBQzNDN0Ysb0JBQW9CLENBQ3pCLENBQ0UsQ0FBQyxnQkFFTjFLLE1BQUEsWUFBQXNFLGFBQUEsQ0FBQytGLGVBQWUsTUFBQW1FLFNBQUEsaUJBQ1Z6SyxLQUFLLENBQUN5QixpQkFBaUIsQ0FBQ2dMLHFCQUFxQixFQUM3QzlGLG9CQUFvQixDQUN6QixDQUNGLGVBRUQxSyxNQUFBLFlBQUFzRSxhQUFBLENBQUMrRixlQUFlLE1BQUFtRSxTQUFBLGlCQUNWekssS0FBSyxDQUFDeUIsaUJBQWlCLENBQUNpTCxlQUFlLEVBQ3ZDL0Ysb0JBQW9CLENBQ3pCLENBQ2UsQ0FDbkIsRUFFQXFDLGFBQWEsaUJBQ1ovTSxNQUFBLFlBQUFzRSxhQUFBLENBQUM4RixnQkFBZ0IsTUFBQW9FLFNBQUEsaUJBQ1h6SyxLQUFLLENBQUN5QixpQkFBaUIsQ0FBQ2tMLGFBQWEsRUFDckNoRyxvQkFBb0I7TUFDeEJnRSxXQUFXO0lBQUEsaUJBRVgxTyxNQUFBLFlBQUFzRSxhQUFBLENBQUMrRixlQUFlLE1BQUFtRSxTQUFBLGlCQUFLekssS0FBSyxDQUFDeUIsaUJBQWlCLENBQUNtTCxXQUFXLEVBQU1qRyxvQkFBb0IsQ0FBRyxDQUNyRSxDQUNuQixFQUVBMEQsV0FBVyxlQUVacE8sTUFBQSxZQUFBc0UsYUFBQSxDQUFDOEYsZ0JBQWdCLE1BQUFvRSxTQUFBLGlCQUFLOUQsb0JBQW9CO01BQUV0RyxLQUFLLEVBQUMsT0FBTztNQUFDc0ssV0FBVztJQUFBLGlCQUNuRTFPLE1BQUEsWUFBQXNFLGFBQUEsQ0FBQ3ZELGlCQUFBLENBQUE0Tiw2QkFBNkIscUJBQzVCM08sTUFBQSxZQUFBc0UsYUFBQSxDQUFDaUcsZUFBZSxNQUFBaUUsU0FBQSxpQkFDVjlELG9CQUFvQixFQUNwQjNHLEtBQUssQ0FBQ3lCLGlCQUFpQixDQUFDeUosZUFBZSxDQUM1QyxDQUFDLGVBQ0ZqUCxNQUFBLFlBQUFzRSxhQUFBLENBQUNpRyxlQUFlLE1BQUFpRSxTQUFBLGlCQUNWOUQsb0JBQW9CLEVBQ3BCM0csS0FBSyxDQUFDeUIsaUJBQWlCLENBQUMwSixpQkFBaUIsQ0FDOUMsQ0FBQyxlQUNGbFAsTUFBQSxZQUFBc0UsYUFBQSxDQUFDK0YsZUFBZSxNQUFBbUUsU0FBQSxpQkFBSzlELG9CQUFvQixFQUFNM0csS0FBSyxDQUFDeUIsaUJBQWlCLENBQUMySixVQUFVLENBQUcsQ0FDdkQsQ0FDZixDQUNLLENBQUM7RUFFOUIsQ0FBQztFQUVELE9BQU8zRSw0QkFBNEI7QUFDckM7QUFBQyxJQUFBb0csUUFBQSxHQUFBQyxPQUFBLGNBRWMvRyxrQ0FBa0MiLCJpZ25vcmVMaXN0IjpbXX0=