@igo2/geo 16.3.0 → 17.0.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (524) hide show
  1. package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +30 -14
  2. package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +35 -17
  3. package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +18 -11
  4. package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +8 -62
  5. package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +46 -19
  6. package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +22 -10
  7. package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +28 -14
  8. package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +8 -71
  9. package/esm2022/lib/catalog/catalog-library/index.mjs +9 -0
  10. package/esm2022/lib/catalog/catalog.module.mjs +9 -37
  11. package/esm2022/lib/catalog/index.mjs +7 -1
  12. package/esm2022/lib/catalog/shared/catalog.service.mjs +9 -6
  13. package/esm2022/lib/catalog/shared/index.mjs +1 -1
  14. package/esm2022/lib/datasource/index.mjs +1 -1
  15. package/esm2022/lib/datasource/shared/capabilities.service.mjs +5 -5
  16. package/esm2022/lib/datasource/shared/datasource.service.mjs +8 -12
  17. package/esm2022/lib/datasource/shared/datasources/any-datasource.mjs +1 -1
  18. package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +1 -1
  19. package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +1 -1
  20. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
  21. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +1 -1
  22. package/esm2022/lib/datasource/shared/datasources/data.service.mjs +1 -1
  23. package/esm2022/lib/datasource/shared/datasources/datasource.mjs +1 -1
  24. package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
  25. package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +1 -1
  26. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
  27. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +1 -1
  28. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +1 -1
  29. package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +1 -1
  30. package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +1 -1
  31. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
  32. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.mjs +1 -1
  33. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +1 -1
  34. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +1 -1
  35. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
  36. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +1 -1
  37. package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +5 -5
  38. package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +1 -1
  39. package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +1 -1
  40. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
  41. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +1 -1
  42. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
  43. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +1 -1
  44. package/esm2022/lib/datasource/shared/index.mjs +1 -1
  45. package/esm2022/lib/datasource/shared/options/options-api.service.mjs +6 -6
  46. package/esm2022/lib/datasource/shared/options/options.service.mjs +1 -1
  47. package/esm2022/lib/datasource/utils/tilegrid.mjs +1 -1
  48. package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +23 -12
  49. package/esm2022/lib/directions/directions-buttons/index.mjs +1 -1
  50. package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +42 -17
  51. package/esm2022/lib/directions/directions-inputs/index.mjs +1 -1
  52. package/esm2022/lib/directions/directions-results/directions-results.component.mjs +34 -14
  53. package/esm2022/lib/directions/directions-results/index.mjs +1 -1
  54. package/esm2022/lib/directions/directions-sources/directions-source.provider.mjs +1 -1
  55. package/esm2022/lib/directions/directions-sources/index.mjs +1 -1
  56. package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +5 -5
  57. package/esm2022/lib/directions/directions.component.mjs +18 -10
  58. package/esm2022/lib/directions/directions.module.mjs +17 -70
  59. package/esm2022/lib/directions/index.mjs +1 -1
  60. package/esm2022/lib/directions/shared/directions-source.service.mjs +1 -1
  61. package/esm2022/lib/directions/shared/directions.enum.mjs +1 -1
  62. package/esm2022/lib/directions/shared/directions.service.mjs +6 -6
  63. package/esm2022/lib/directions/shared/directions.utils.mjs +1 -1
  64. package/esm2022/lib/directions/shared/index.mjs +1 -1
  65. package/esm2022/lib/download/download-button/download-button.component.mjs +21 -11
  66. package/esm2022/lib/download/download-button/index.mjs +1 -1
  67. package/esm2022/lib/download/download.module.mjs +10 -27
  68. package/esm2022/lib/download/index.mjs +1 -1
  69. package/esm2022/lib/download/shared/download.interface.mjs +1 -1
  70. package/esm2022/lib/download/shared/download.service.mjs +5 -5
  71. package/esm2022/lib/download/shared/index.mjs +1 -1
  72. package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +21 -10
  73. package/esm2022/lib/draw/draw/draw-popup.component.mjs +39 -16
  74. package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +19 -9
  75. package/esm2022/lib/draw/draw/draw.component.mjs +52 -22
  76. package/esm2022/lib/draw/draw/draw.module.mjs +7 -104
  77. package/esm2022/lib/draw/drawingTool.module.mjs +8 -7
  78. package/esm2022/lib/draw/index.mjs +1 -1
  79. package/esm2022/lib/draw/shared/draw-icon.service.mjs +5 -5
  80. package/esm2022/lib/draw/shared/draw.utils.mjs +1 -1
  81. package/esm2022/lib/draw/shared/index.mjs +1 -1
  82. package/esm2022/lib/feature/feature-details/feature-details.component.mjs +23 -11
  83. package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +8 -7
  84. package/esm2022/lib/feature/feature-details/feature-details.module.mjs +8 -27
  85. package/esm2022/lib/feature/feature-details/index.mjs +9 -0
  86. package/esm2022/lib/feature/feature-form/feature-form.component.mjs +8 -8
  87. package/esm2022/lib/feature/feature-form/feature-form.module.mjs +8 -11
  88. package/esm2022/lib/feature/feature.module.mjs +9 -10
  89. package/esm2022/lib/feature/index.mjs +8 -2
  90. package/esm2022/lib/feature/shared/feature-store.utils.mjs +1 -1
  91. package/esm2022/lib/feature/shared/feature.enums.mjs +1 -1
  92. package/esm2022/lib/feature/shared/feature.utils.mjs +1 -1
  93. package/esm2022/lib/feature/shared/store.mjs +1 -1
  94. package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +1 -1
  95. package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +1 -1
  96. package/esm2022/lib/feature/shared/strategies/in-map-resolution.mjs +1 -1
  97. package/esm2022/lib/feature/shared/strategies/index.mjs +1 -1
  98. package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +1 -1
  99. package/esm2022/lib/feature/shared/strategies/loading.mjs +1 -1
  100. package/esm2022/lib/feature/shared/strategies/search.mjs +4 -4
  101. package/esm2022/lib/feature/shared/strategies/selection.mjs +1 -1
  102. package/esm2022/lib/feature/shared/strategies.utils.mjs +1 -1
  103. package/esm2022/lib/filter/filter.module.mjs +47 -177
  104. package/esm2022/lib/filter/index.mjs +36 -1
  105. package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +29 -15
  106. package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +46 -20
  107. package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +52 -21
  108. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +13 -10
  109. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +45 -18
  110. package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +18 -12
  111. package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +42 -18
  112. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +8 -7
  113. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +21 -12
  114. package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +6 -5
  115. package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +5 -5
  116. package/esm2022/lib/filter/shared/ogc-filter.enum.mjs +1 -1
  117. package/esm2022/lib/filter/shared/ogc-filter.mjs +1 -1
  118. package/esm2022/lib/filter/shared/ogc-filter.service.mjs +5 -5
  119. package/esm2022/lib/filter/shared/spatial-filter.enum.mjs +1 -1
  120. package/esm2022/lib/filter/shared/spatial-filter.service.mjs +5 -5
  121. package/esm2022/lib/filter/shared/time-filter.enum.mjs +1 -1
  122. package/esm2022/lib/filter/shared/time-filter.interface.mjs +1 -1
  123. package/esm2022/lib/filter/shared/time-filter.service.mjs +5 -5
  124. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +63 -27
  125. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +32 -15
  126. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +34 -15
  127. package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +28 -14
  128. package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +47 -20
  129. package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +31 -13
  130. package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +8 -7
  131. package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +16 -10
  132. package/esm2022/lib/geo.module.mjs +5 -43
  133. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +7 -7
  134. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +33 -16
  135. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +8 -43
  136. package/esm2022/lib/geometry/geometry-form-field/index.mjs +9 -0
  137. package/esm2022/lib/geometry/geometry.module.mjs +9 -10
  138. package/esm2022/lib/geometry/index.mjs +2 -3
  139. package/esm2022/lib/geometry/shared/controls/draw.mjs +1 -1
  140. package/esm2022/lib/geometry/shared/controls/index.mjs +1 -1
  141. package/esm2022/lib/geometry/shared/controls/modify.mjs +1 -1
  142. package/esm2022/lib/geometry/shared/controls/slice.mjs +1 -1
  143. package/esm2022/lib/geometry/shared/geometry.utils.mjs +1 -1
  144. package/esm2022/lib/geometry/shared/index.mjs +1 -1
  145. package/esm2022/lib/import-export/export-button/export-button.component.mjs +20 -10
  146. package/esm2022/lib/import-export/export-button/index.mjs +1 -1
  147. package/esm2022/lib/import-export/import-export/import-export.component.mjs +45 -17
  148. package/esm2022/lib/import-export/import-export/index.mjs +1 -1
  149. package/esm2022/lib/import-export/import-export.module.mjs +10 -81
  150. package/esm2022/lib/import-export/index.mjs +9 -1
  151. package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +7 -6
  152. package/esm2022/lib/import-export/shared/export.errors.mjs +1 -1
  153. package/esm2022/lib/import-export/shared/export.service.mjs +5 -5
  154. package/esm2022/lib/import-export/shared/export.utils.mjs +1 -1
  155. package/esm2022/lib/import-export/shared/import.service.mjs +5 -5
  156. package/esm2022/lib/import-export/shared/import.utils.mjs +1 -1
  157. package/esm2022/lib/import-export/shared/index.mjs +1 -1
  158. package/esm2022/lib/layer/index.mjs +19 -1
  159. package/esm2022/lib/layer/layer-item/layer-item.component.mjs +33 -14
  160. package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +41 -17
  161. package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +11 -9
  162. package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +8 -7
  163. package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +28 -13
  164. package/esm2022/lib/layer/layer-list/layer-list-binding.directive.mjs +8 -7
  165. package/esm2022/lib/layer/layer-list/layer-list.component.mjs +48 -18
  166. package/esm2022/lib/layer/layer-list/layer-list.enum.mjs +1 -1
  167. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +33 -14
  168. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +5 -5
  169. package/esm2022/lib/layer/layer.module.mjs +16 -93
  170. package/esm2022/lib/layer/shared/clusterParam.mjs +1 -1
  171. package/esm2022/lib/layer/shared/layer.service.mjs +6 -6
  172. package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
  173. package/esm2022/lib/layer/shared/layers/any-layer.mjs +1 -1
  174. package/esm2022/lib/layer/shared/layers/image-layer.mjs +1 -1
  175. package/esm2022/lib/layer/shared/layers/index.mjs +1 -1
  176. package/esm2022/lib/layer/shared/layers/layer.mjs +1 -1
  177. package/esm2022/lib/layer/shared/layers/tile-layer.mjs +1 -1
  178. package/esm2022/lib/layer/shared/layers/vector-layer.mjs +1 -1
  179. package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +1 -1
  180. package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +21 -11
  181. package/esm2022/lib/layer/utils/image-watcher.mjs +1 -1
  182. package/esm2022/lib/layer/utils/layer.utils.mjs +1 -1
  183. package/esm2022/lib/layer/utils/outputLegend.mjs +1 -1
  184. package/esm2022/lib/layer/utils/tile-watcher.mjs +1 -1
  185. package/esm2022/lib/layer/utils/vector-watcher.mjs +1 -1
  186. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +25 -12
  187. package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +8 -8
  188. package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +22 -11
  189. package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +13 -9
  190. package/esm2022/lib/map/home-extent-button/home-extent-button.interface.mjs +1 -1
  191. package/esm2022/lib/map/home-extent-button/index.mjs +1 -1
  192. package/esm2022/lib/map/index.mjs +32 -1
  193. package/esm2022/lib/map/info-section/info-section.component.mjs +7 -7
  194. package/esm2022/lib/map/map-browser/map-browser.component.mjs +6 -6
  195. package/esm2022/lib/map/map-center/map-center.component.mjs +6 -6
  196. package/esm2022/lib/map/map.module.mjs +36 -66
  197. package/esm2022/lib/map/menu-button/menu-button.component.mjs +21 -11
  198. package/esm2022/lib/map/offline-button/offline-button.component.mjs +21 -11
  199. package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +23 -11
  200. package/esm2022/lib/map/shared/controllers/controller.mjs +1 -1
  201. package/esm2022/lib/map/shared/controllers/geolocation.interface.mjs +1 -1
  202. package/esm2022/lib/map/shared/controllers/geolocation.mjs +1 -1
  203. package/esm2022/lib/map/shared/controllers/index.mjs +1 -1
  204. package/esm2022/lib/map/shared/controllers/view.mjs +1 -1
  205. package/esm2022/lib/map/shared/hover-feature.directive.mjs +8 -7
  206. package/esm2022/lib/map/shared/index.mjs +1 -1
  207. package/esm2022/lib/map/shared/linkedLayers.utils.mjs +1 -1
  208. package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +8 -7
  209. package/esm2022/lib/map/shared/map.interface.mjs +1 -1
  210. package/esm2022/lib/map/shared/map.mjs +1 -1
  211. package/esm2022/lib/map/shared/map.service.mjs +5 -5
  212. package/esm2022/lib/map/shared/map.utils.mjs +1 -1
  213. package/esm2022/lib/map/shared/mapOffline.directive.mjs +7 -6
  214. package/esm2022/lib/map/shared/projection.interfaces.mjs +1 -1
  215. package/esm2022/lib/map/shared/projection.service.mjs +5 -5
  216. package/esm2022/lib/map/shared/projection.utils.mjs +1 -1
  217. package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +6 -6
  218. package/esm2022/lib/map/utils/layer-watcher.mjs +1 -1
  219. package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +21 -11
  220. package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +13 -9
  221. package/esm2022/lib/measure/index.mjs +2 -3
  222. package/esm2022/lib/measure/measure.module.mjs +8 -5
  223. package/esm2022/lib/measure/measurer/index.mjs +6 -0
  224. package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +6 -5
  225. package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +18 -11
  226. package/esm2022/lib/measure/measurer/measurer-item.component.mjs +27 -13
  227. package/esm2022/lib/measure/measurer/measurer.component.mjs +35 -17
  228. package/esm2022/lib/measure/measurer/measurer.module.mjs +7 -69
  229. package/esm2022/lib/measure/shared/index.mjs +1 -1
  230. package/esm2022/lib/measure/shared/measure.utils.mjs +1 -1
  231. package/esm2022/lib/metadata/index.mjs +6 -1
  232. package/esm2022/lib/metadata/metadata-button/index.mjs +1 -1
  233. package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +35 -18
  234. package/esm2022/lib/metadata/metadata.module.mjs +10 -31
  235. package/esm2022/lib/metadata/shared/index.mjs +1 -1
  236. package/esm2022/lib/metadata/shared/metadata.service.mjs +5 -5
  237. package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +5 -5
  238. package/esm2022/lib/offline/geoDB/geoDB.service.mjs +5 -5
  239. package/esm2022/lib/offline/geoDB/index.mjs +1 -1
  240. package/esm2022/lib/offline/index.mjs +1 -1
  241. package/esm2022/lib/offline/layerDB/layerDB.service.mjs +5 -5
  242. package/esm2022/lib/offline/shared/geo-network.service.mjs +5 -5
  243. package/esm2022/lib/offline/shared/index.mjs +1 -1
  244. package/esm2022/lib/overlay/index.mjs +1 -1
  245. package/esm2022/lib/overlay/overlay.module.mjs +10 -8
  246. package/esm2022/lib/overlay/shared/index.mjs +1 -1
  247. package/esm2022/lib/overlay/shared/overlay.directive.mjs +8 -7
  248. package/esm2022/lib/overlay/shared/overlay.mjs +1 -1
  249. package/esm2022/lib/overlay/shared/overlay.service.mjs +5 -5
  250. package/esm2022/lib/print/index.mjs +1 -1
  251. package/esm2022/lib/print/print/print.component.mjs +7 -7
  252. package/esm2022/lib/print/print-form/index.mjs +1 -1
  253. package/esm2022/lib/print/print-form/print-form.component.mjs +34 -14
  254. package/esm2022/lib/print/print.module.mjs +10 -54
  255. package/esm2022/lib/print/shared/index.mjs +1 -1
  256. package/esm2022/lib/print/shared/print.service.mjs +10 -10
  257. package/esm2022/lib/query/index.mjs +1 -1
  258. package/esm2022/lib/query/query.module.mjs +7 -8
  259. package/esm2022/lib/query/shared/index.mjs +1 -1
  260. package/esm2022/lib/query/shared/query-search-source.mjs +6 -6
  261. package/esm2022/lib/query/shared/query.directive.mjs +8 -7
  262. package/esm2022/lib/query/shared/query.enums.mjs +1 -1
  263. package/esm2022/lib/query/shared/query.service.mjs +7 -9
  264. package/esm2022/lib/search/index.mjs +14 -5
  265. package/esm2022/lib/search/search-bar/search-bar.component.mjs +36 -16
  266. package/esm2022/lib/search/search-bar/search-bar.module.mjs +8 -61
  267. package/esm2022/lib/search/search-results/index.mjs +10 -0
  268. package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +42 -17
  269. package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +28 -14
  270. package/esm2022/lib/search/search-results/search-results-item.component.mjs +22 -12
  271. package/esm2022/lib/search/search-results/search-results.component.mjs +24 -12
  272. package/esm2022/lib/search/search-results/search-results.module.mjs +8 -91
  273. package/esm2022/lib/search/search-selector/search-selector.component.mjs +27 -12
  274. package/esm2022/lib/search/search-selector/search-selector.module.mjs +8 -44
  275. package/esm2022/lib/search/search-settings/search-settings.component.mjs +37 -14
  276. package/esm2022/lib/search/search-settings/search-settings.module.mjs +7 -47
  277. package/esm2022/lib/search/search.module.mjs +10 -13
  278. package/esm2022/lib/search/shared/index.mjs +1 -1
  279. package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +8 -7
  280. package/esm2022/lib/search/shared/search-source.service.mjs +1 -1
  281. package/esm2022/lib/search/shared/search.service.mjs +5 -5
  282. package/esm2022/lib/search/shared/search.utils.mjs +1 -1
  283. package/esm2022/lib/search/shared/sources/cadastre.mjs +8 -7
  284. package/esm2022/lib/search/shared/sources/coordinates.mjs +10 -10
  285. package/esm2022/lib/search/shared/sources/icherche.mjs +16 -16
  286. package/esm2022/lib/search/shared/sources/ilayer.mjs +10 -10
  287. package/esm2022/lib/search/shared/sources/nominatim.interfaces.mjs +1 -1
  288. package/esm2022/lib/search/shared/sources/nominatim.mjs +6 -6
  289. package/esm2022/lib/search/shared/sources/source.mjs +1 -1
  290. package/esm2022/lib/search/shared/sources/storedqueries.mjs +11 -11
  291. package/esm2022/lib/search/shared/sources/workspace.mjs +7 -8
  292. package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +1 -1
  293. package/esm2022/lib/style/shared/datasource/index.mjs +1 -1
  294. package/esm2022/lib/style/shared/feature/feature-style.mjs +1 -1
  295. package/esm2022/lib/style/shared/feature/index.mjs +1 -1
  296. package/esm2022/lib/style/shared/overlay/index.mjs +1 -1
  297. package/esm2022/lib/style/shared/overlay/overlay-marker-style.utils.mjs +1 -1
  298. package/esm2022/lib/style/shared/overlay/overlay-style.utils.mjs +1 -1
  299. package/esm2022/lib/style/shared/vector/commonVectorStyle.mjs +1 -1
  300. package/esm2022/lib/style/shared/vector/conversion.utils.mjs +1 -1
  301. package/esm2022/lib/style/shared/vector/index.mjs +1 -1
  302. package/esm2022/lib/style/style-list/index.mjs +1 -1
  303. package/esm2022/lib/style/style-list/style-list.interface.mjs +1 -1
  304. package/esm2022/lib/style/style-list/style-list.module.mjs +5 -5
  305. package/esm2022/lib/style/style-list/style-list.service.mjs +5 -5
  306. package/esm2022/lib/style/style-modal/drawing/index.mjs +1 -1
  307. package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +40 -17
  308. package/esm2022/lib/style/style-modal/index.mjs +1 -1
  309. package/esm2022/lib/style/style-modal/layer/index.mjs +1 -1
  310. package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +28 -14
  311. package/esm2022/lib/style/style-modal/layer-button/index.mjs +1 -1
  312. package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +13 -9
  313. package/esm2022/lib/style/style-modal/shared/index.mjs +1 -1
  314. package/esm2022/lib/style/style-service/draw-style.service.mjs +5 -5
  315. package/esm2022/lib/style/style-service/index.mjs +1 -1
  316. package/esm2022/lib/style/style-service/style.service.mjs +4 -4
  317. package/esm2022/lib/style/style.module.mjs +12 -57
  318. package/esm2022/lib/toast/index.mjs +1 -1
  319. package/esm2022/lib/toast/toast.component.mjs +19 -11
  320. package/esm2022/lib/toast/toast.module.mjs +10 -30
  321. package/esm2022/lib/utils/id-generator.mjs +1 -1
  322. package/esm2022/lib/utils/index.mjs +1 -1
  323. package/esm2022/lib/utils/propertyTypeDetector/index.mjs +1 -1
  324. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +5 -5
  325. package/esm2022/lib/wkt/index.mjs +1 -1
  326. package/esm2022/lib/wkt/shared/index.mjs +1 -1
  327. package/esm2022/lib/wkt/shared/wkt.service.mjs +5 -5
  328. package/esm2022/lib/wkt/wkt.module.mjs +8 -5
  329. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +9 -8
  330. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +8 -24
  331. package/esm2022/lib/workspace/index.mjs +1 -1
  332. package/esm2022/lib/workspace/shared/edition-workspace.mjs +1 -1
  333. package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +5 -5
  334. package/esm2022/lib/workspace/shared/feature-workspace.mjs +1 -1
  335. package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +5 -5
  336. package/esm2022/lib/workspace/shared/index.mjs +1 -1
  337. package/esm2022/lib/workspace/shared/wfs-workspace.mjs +1 -1
  338. package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +5 -5
  339. package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +5 -5
  340. package/esm2022/lib/workspace/shared/workspace.utils.mjs +1 -1
  341. package/esm2022/lib/workspace/widgets/index.mjs +1 -1
  342. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +7 -7
  343. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +8 -13
  344. package/esm2022/lib/workspace/widgets/widgets.mjs +1 -1
  345. package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +7 -6
  346. package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +8 -10
  347. package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +7 -6
  348. package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +8 -10
  349. package/esm2022/lib/workspace/workspace.module.mjs +10 -35
  350. package/esm2022/public_api.mjs +11 -12
  351. package/fesm2022/igo2-geo.mjs +34458 -34603
  352. package/fesm2022/igo2-geo.mjs.map +1 -1
  353. package/lib/catalog/catalog-browser/catalog-browser-group.component.d.ts +1 -1
  354. package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +1 -1
  355. package/lib/catalog/catalog-browser/catalog-browser.component.d.ts +1 -1
  356. package/lib/catalog/catalog-browser/catalog-browser.module.d.ts +2 -14
  357. package/lib/catalog/catalog-library/add-catalog-dialog.component.d.ts +1 -1
  358. package/lib/catalog/catalog-library/catalog-library-item.component.d.ts +1 -1
  359. package/lib/catalog/catalog-library/catalog-library.component.d.ts +1 -1
  360. package/lib/catalog/catalog-library/catalog-library.module.d.ts +3 -18
  361. package/lib/catalog/catalog-library/index.d.ts +5 -0
  362. package/lib/catalog/catalog.module.d.ts +6 -9
  363. package/lib/catalog/index.d.ts +2 -0
  364. package/lib/datasource/shared/datasource.service.d.ts +2 -4
  365. package/lib/directions/directions-buttons/directions-buttons.component.d.ts +1 -1
  366. package/lib/directions/directions-inputs/directions-inputs.component.d.ts +1 -1
  367. package/lib/directions/directions-results/directions-results.component.d.ts +1 -1
  368. package/lib/directions/directions.component.d.ts +1 -1
  369. package/lib/directions/directions.module.d.ts +9 -20
  370. package/lib/download/download-button/download-button.component.d.ts +1 -1
  371. package/lib/download/download.module.d.ts +4 -6
  372. package/lib/draw/draw/draw-layer-popup.component.d.ts +1 -1
  373. package/lib/draw/draw/draw-popup.component.d.ts +4 -4
  374. package/lib/draw/draw/draw-shorcuts.component.d.ts +1 -1
  375. package/lib/draw/draw/draw.component.d.ts +1 -1
  376. package/lib/draw/draw/draw.module.d.ts +2 -25
  377. package/lib/draw/drawingTool.module.d.ts +3 -0
  378. package/lib/feature/feature-details/feature-details.component.d.ts +4 -2
  379. package/lib/feature/feature-details/feature-details.directive.d.ts +1 -1
  380. package/lib/feature/feature-details/feature-details.module.d.ts +2 -6
  381. package/lib/feature/feature-details/index.d.ts +5 -0
  382. package/lib/feature/feature-form/feature-form.component.d.ts +2 -2
  383. package/lib/feature/feature-form/feature-form.module.d.ts +2 -4
  384. package/lib/feature/feature.module.d.ts +6 -4
  385. package/lib/feature/index.d.ts +3 -1
  386. package/lib/filter/filter.module.d.ts +4 -28
  387. package/lib/filter/index.d.ts +16 -0
  388. package/lib/filter/ogc-filter-button/ogc-filter-button.component.d.ts +3 -3
  389. package/lib/filter/ogc-filter-form/ogc-filter-form.component.d.ts +3 -3
  390. package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +3 -3
  391. package/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.d.ts +1 -1
  392. package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +2 -2
  393. package/lib/filter/ogc-filterable-form/ogc-filterable-form.component.d.ts +3 -3
  394. package/lib/filter/ogc-filterable-item/ogc-filterable-item.component.d.ts +3 -3
  395. package/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.d.ts +1 -1
  396. package/lib/filter/ogc-filterable-list/ogc-filterable-list.component.d.ts +3 -3
  397. package/lib/filter/shared/filterable-datasource.pipe.d.ts +1 -1
  398. package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +4 -4
  399. package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +1 -1
  400. package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +1 -1
  401. package/lib/filter/time-filter-button/time-filter-button.component.d.ts +1 -1
  402. package/lib/filter/time-filter-form/time-filter-form.component.d.ts +3 -3
  403. package/lib/filter/time-filter-item/time-filter-item.component.d.ts +1 -1
  404. package/lib/filter/time-filter-list/time-filter-list-binding.directive.d.ts +1 -1
  405. package/lib/filter/time-filter-list/time-filter-list.component.d.ts +1 -1
  406. package/lib/geo.module.d.ts +14 -24
  407. package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +1 -1
  408. package/lib/geometry/geometry-form-field/geometry-form-field.component.d.ts +1 -1
  409. package/lib/geometry/geometry-form-field/geometry-form-field.module.d.ts +2 -10
  410. package/lib/geometry/geometry-form-field/index.d.ts +5 -0
  411. package/lib/geometry/geometry.module.d.ts +5 -3
  412. package/lib/geometry/index.d.ts +1 -2
  413. package/lib/import-export/export-button/export-button.component.d.ts +1 -1
  414. package/lib/import-export/import-export/import-export.component.d.ts +1 -1
  415. package/lib/import-export/import-export.module.d.ts +4 -15
  416. package/lib/import-export/index.d.ts +4 -0
  417. package/lib/import-export/shared/drop-geo-file.directive.d.ts +1 -1
  418. package/lib/layer/index.d.ts +8 -0
  419. package/lib/layer/layer-item/layer-item.component.d.ts +1 -1
  420. package/lib/layer/layer-legend/layer-legend.component.d.ts +1 -1
  421. package/lib/layer/layer-legend-item/layer-legend-item.component.d.ts +1 -1
  422. package/lib/layer/layer-legend-list/layer-legend-list-binding.directive.d.ts +1 -1
  423. package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +1 -1
  424. package/lib/layer/layer-list/layer-list-binding.directive.d.ts +1 -1
  425. package/lib/layer/layer-list/layer-list.component.d.ts +1 -1
  426. package/lib/layer/layer-list-tool/layer-list-tool.component.d.ts +1 -1
  427. package/lib/layer/layer.module.d.ts +4 -18
  428. package/lib/layer/track-feature-button/track-feature-button.component.d.ts +1 -1
  429. package/lib/map/baselayers-switcher/baselayers-switcher.component.d.ts +1 -1
  430. package/lib/map/baselayers-switcher/mini-basemap.component.d.ts +1 -1
  431. package/lib/map/geolocate-button/geolocate-button.component.d.ts +1 -1
  432. package/lib/map/home-extent-button/home-extent-button.component.d.ts +1 -1
  433. package/lib/map/index.d.ts +14 -0
  434. package/lib/map/info-section/info-section.component.d.ts +1 -1
  435. package/lib/map/map-browser/map-browser.component.d.ts +1 -1
  436. package/lib/map/map-center/map-center.component.d.ts +1 -1
  437. package/lib/map/map.module.d.ts +4 -7
  438. package/lib/map/menu-button/menu-button.component.d.ts +1 -1
  439. package/lib/map/offline-button/offline-button.component.d.ts +2 -2
  440. package/lib/map/rotation-button/rotation-button.component.d.ts +1 -1
  441. package/lib/map/shared/hover-feature.directive.d.ts +1 -1
  442. package/lib/map/shared/map-pointer-position.directive.d.ts +1 -1
  443. package/lib/map/shared/mapOffline.directive.d.ts +1 -1
  444. package/lib/map/swipe-control/swipe-control.component.d.ts +1 -1
  445. package/lib/map/wake-lock-button/wake-lock-button.component.d.ts +1 -1
  446. package/lib/map/zoom-button/zoom-button.component.d.ts +1 -1
  447. package/lib/measure/index.d.ts +1 -2
  448. package/lib/measure/measure.module.d.ts +3 -0
  449. package/lib/measure/measurer/index.d.ts +5 -0
  450. package/lib/measure/measurer/measure-format.pipe.d.ts +1 -1
  451. package/lib/measure/measurer/measurer-dialog.component.d.ts +1 -1
  452. package/lib/measure/measurer/measurer-item.component.d.ts +1 -1
  453. package/lib/measure/measurer/measurer.component.d.ts +2 -3
  454. package/lib/measure/measurer/measurer.module.d.ts +3 -18
  455. package/lib/metadata/index.d.ts +2 -0
  456. package/lib/metadata/metadata-button/metadata-button.component.d.ts +2 -2
  457. package/lib/metadata/metadata.module.d.ts +4 -7
  458. package/lib/overlay/overlay.module.d.ts +4 -1
  459. package/lib/overlay/shared/overlay.directive.d.ts +1 -1
  460. package/lib/print/print/print.component.d.ts +1 -1
  461. package/lib/print/print-form/print-form.component.d.ts +1 -1
  462. package/lib/print/print.module.d.ts +4 -12
  463. package/lib/query/query.module.d.ts +4 -4
  464. package/lib/query/shared/query.directive.d.ts +1 -1
  465. package/lib/query/shared/query.service.d.ts +2 -3
  466. package/lib/search/index.d.ts +6 -4
  467. package/lib/search/search-bar/search-bar.component.d.ts +1 -1
  468. package/lib/search/search-bar/search-bar.module.d.ts +2 -16
  469. package/lib/search/search-results/index.d.ts +6 -0
  470. package/lib/search/search-results/save-feature-dialog.component.d.ts +1 -1
  471. package/lib/search/search-results/search-results-add-button.component.d.ts +1 -1
  472. package/lib/search/search-results/search-results-item.component.d.ts +1 -1
  473. package/lib/search/search-results/search-results.component.d.ts +1 -1
  474. package/lib/search/search-results/search-results.module.d.ts +3 -21
  475. package/lib/search/search-selector/search-selector.component.d.ts +1 -1
  476. package/lib/search/search-selector/search-selector.module.d.ts +2 -11
  477. package/lib/search/search-settings/search-settings.component.d.ts +1 -1
  478. package/lib/search/search-settings/search-settings.module.d.ts +2 -12
  479. package/lib/search/search.module.d.ts +6 -7
  480. package/lib/search/shared/search-pointer-summary.directive.d.ts +1 -1
  481. package/lib/search/shared/sources/cadastre.providers.d.ts +1 -1
  482. package/lib/search/shared/sources/coordinates.providers.d.ts +1 -1
  483. package/lib/search/shared/sources/icherche.providers.d.ts +2 -2
  484. package/lib/search/shared/sources/ilayer.providers.d.ts +1 -1
  485. package/lib/search/shared/sources/nominatim.providers.d.ts +1 -1
  486. package/lib/search/shared/sources/storedqueries.providers.d.ts +2 -2
  487. package/lib/search/shared/sources/workspace.providers.d.ts +1 -1
  488. package/lib/style/style-modal/drawing/style-modal-drawing.component.d.ts +1 -1
  489. package/lib/style/style-modal/layer/style-modal-layer.component.d.ts +1 -1
  490. package/lib/style/style-modal/layer-button/style-modal-layer-button.component.d.ts +1 -1
  491. package/lib/style/style.module.d.ts +5 -16
  492. package/lib/toast/toast.component.d.ts +1 -1
  493. package/lib/toast/toast.module.d.ts +4 -6
  494. package/lib/wkt/wkt.module.d.ts +3 -0
  495. package/lib/workspace/confirmation-popup/confirmation-popup.component.d.ts +1 -1
  496. package/lib/workspace/confirmation-popup/confirmation-popup.module.d.ts +2 -6
  497. package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +1 -1
  498. package/lib/workspace/widgets/ogc-filter/ogc-filter.module.d.ts +2 -6
  499. package/lib/workspace/workspace-selector/workspace-selector.directive.d.ts +1 -1
  500. package/lib/workspace/workspace-selector/workspace-selector.module.d.ts +2 -3
  501. package/lib/workspace/workspace-updator/workspace-updator.directive.d.ts +1 -1
  502. package/lib/workspace/workspace-updator/workspace-updator.module.d.ts +2 -3
  503. package/lib/workspace/workspace.module.d.ts +5 -9
  504. package/locale/en.geo.json +3 -3
  505. package/locale/fr.geo.json +3 -3
  506. package/package.json +14 -12
  507. package/public_api.d.ts +10 -11
  508. package/src/geo-theme.scss +23 -23
  509. package/src/lib/filter/filter.theming.scss +13 -13
  510. package/src/lib/filter/ogc-filter-selection/ogc-filter-selection.theming.scss +18 -18
  511. package/src/lib/filter/time-filter-form/time-filter-form.theming.scss +5 -5
  512. package/src/lib/layer/layer-item/layer-item.theme.scss +33 -33
  513. package/src/lib/layer/layer-legend/layer-legend.theming.scss +10 -10
  514. package/src/lib/layer/layer-list-tool/layer-list-tool.theming.scss +34 -34
  515. package/src/lib/layer/layer.theming.scss +10 -10
  516. package/src/lib/map/map-browser/map-browser.theming.scss +46 -46
  517. package/src/lib/map/map.theming.scss +9 -9
  518. package/src/lib/map/menu-button/menu-button.theming.scss +20 -20
  519. package/src/lib/map/zoom-button/zoom-button.theming.scss +32 -32
  520. package/src/style/style.scss +1 -1
  521. package/esm2022/lib/datasource/datasource.module.mjs +0 -22
  522. package/esm2022/lib/search/search-bar/search-url-param.directive.mjs +0 -40
  523. package/lib/datasource/datasource.module.d.ts +0 -8
  524. package/lib/search/search-bar/search-url-param.directive.d.ts +0 -13
@@ -1,7 +1,16 @@
1
+ import { AsyncPipe, NgClass, NgFor, NgIf, NgStyle } from '@angular/common';
1
2
  import { HttpClient } from '@angular/common/http';
2
3
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewChildren } from '@angular/core';
3
- import { SecureImagePipe } from '@igo2/common';
4
+ import { FormsModule } from '@angular/forms';
5
+ import { MatOptionModule } from '@angular/material/core';
6
+ import { MatFormFieldModule } from '@angular/material/form-field';
7
+ import { MatIconModule } from '@angular/material/icon';
8
+ import { MatListModule } from '@angular/material/list';
9
+ import { MatSelectModule } from '@angular/material/select';
10
+ import { MatTooltipModule } from '@angular/material/tooltip';
11
+ import { CollapseDirective, ImageErrorDirective, SanitizeHtmlPipe, SecureImagePipe } from '@igo2/common';
4
12
  import { ConfigService, LanguageService } from '@igo2/core';
13
+ import { TranslateModule } from '@ngx-translate/core';
5
14
  import { BehaviorSubject, of } from 'rxjs';
6
15
  import { catchError, map } from 'rxjs/operators';
7
16
  import { CapabilitiesService } from '../../datasource/shared/capabilities.service';
@@ -11,16 +20,14 @@ import * as i0 from "@angular/core";
11
20
  import * as i1 from "../../datasource/shared/capabilities.service";
12
21
  import * as i2 from "@igo2/core";
13
22
  import * as i3 from "@angular/common/http";
14
- import * as i4 from "@angular/material/form-field";
15
- import * as i5 from "@angular/forms";
16
- import * as i6 from "@angular/common";
17
- import * as i7 from "@angular/material/icon";
18
- import * as i8 from "@angular/material/select";
19
- import * as i9 from "@angular/material/core";
20
- import * as i10 from "@angular/material/tooltip";
21
- import * as i11 from "@angular/material/list";
22
- import * as i12 from "@igo2/common";
23
- import * as i13 from "@ngx-translate/core";
23
+ import * as i4 from "@angular/material/list";
24
+ import * as i5 from "@angular/material/icon";
25
+ import * as i6 from "@angular/material/form-field";
26
+ import * as i7 from "@angular/material/select";
27
+ import * as i8 from "@angular/material/core";
28
+ import * as i9 from "@angular/material/tooltip";
29
+ import * as i10 from "@angular/forms";
30
+ import * as i11 from "@ngx-translate/core";
24
31
  export class LayerLegendComponent {
25
32
  capabilitiesService;
26
33
  languageService;
@@ -245,13 +252,30 @@ export class LayerLegendComponent {
245
252
  }
246
253
  this.imagesHeight[id] = elemRef.height;
247
254
  }
248
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LayerLegendComponent, deps: [{ token: i1.CapabilitiesService }, { token: i2.LanguageService }, { token: i2.ConfigService }, { token: i3.HttpClient }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
249
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LayerLegendComponent, selector: "igo-layer-legend", inputs: { updateLegendOnResolutionChange: "updateLegendOnResolutionChange", layer: "layer" }, viewQueries: [{ propertyName: "renderedLegends", predicate: ["renderedLegend"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"legendItems$ | async as items\">\r\n <ng-container *ngIf=\"items.length; else noItems\">\r\n <ng-container *ngFor=\"let item of items.slice().reverse()\" #renderedLegends>\r\n <div *ngIf=\"getLegend; else noItems\">\r\n <mat-list-item *ngIf=\"item.title\">\r\n <mat-icon\r\n id=\"legend-toggle\"\r\n class=\"igo-chevron\"\r\n matListItemIcon\r\n igoCollapse\r\n [target]=\"legend\"\r\n [collapsed]=\"item.collapsed\"\r\n (toggle)=\"toggleLegendItem($event, item)\"\r\n svgIcon=\"chevron-up\"\r\n >\r\n </mat-icon>\r\n <span matListItemTitle>{{ computeItemTitle(item) | async }} </span>\r\n </mat-list-item>\r\n <div\r\n #legend\r\n class=\"igo-layer-legend\"\r\n [ngClass]=\"{ 'with-title': item.title }\"\r\n >\r\n <div *ngIf=\"currentStyle !== undefined\">\r\n <mat-form-field>\r\n <mat-select\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\"\r\n [(ngModel)]=\"currentStyle\"\r\n (selectionChange)=\"onChangeStyle()\"\r\n >\r\n <mat-option *ngFor=\"let style of styles\" [value]=\"style.name\">{{\r\n style.title\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div *ngIf=\"!item.collapsed\">\r\n <div *ngIf=\"item.url\">\r\n <img\r\n igoImageError\r\n *ngIf=\"item.imgGraphValue\"\r\n hideError=\"true\"\r\n #renderedLegend\r\n id=\"{{ item.title }}\"\r\n (load)=\"onLoadImage(item.title)\"\r\n [src]=\"item.imgGraphValue\"\r\n alt=\"{{ 'igo.geo.layer.legend.loadingLegendText' | translate }}\"\r\n />\r\n <small *ngIf=\"imagesHeight[item.title] < 16\">\r\n {{ 'igo.geo.layer.legend.noLegendScale' | translate }}\r\n </small>\r\n </div>\r\n <div\r\n [ngStyle]=\"item.style\"\r\n [innerHTML]=\"item.html | sanitizeHtml\"\r\n *ngIf=\"item.html\"\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #noItems>\r\n <small>\r\n {{ 'igo.geo.layer.legend.noLegendText' | translate }}\r\n </small>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [":host .igo-layer-legend.with-title{padding-left:18px}:host img{max-width:100%}:host img:after{content:\" \";position:relative;height:17px;float:left;width:17px;top:-3px;right:19px;background-color:#fff;border:3px solid #f3f3f3;border-radius:50%;animation:2s linear infinite spin}@-moz-document url-prefix(){:host img:after{margin-left:19px}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i11.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i11.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i11.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i12.CollapseDirective, selector: "[igoCollapse]", inputs: ["target", "collapsed"], outputs: ["toggle"] }, { kind: "directive", type: i12.ImageErrorDirective, selector: "[igoImageError]", inputs: ["errorImageUrl", "hideError"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i13.TranslatePipe, name: "translate" }, { kind: "pipe", type: i12.SanitizeHtmlPipe, name: "sanitizeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
255
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: LayerLegendComponent, deps: [{ token: i1.CapabilitiesService }, { token: i2.LanguageService }, { token: i2.ConfigService }, { token: i3.HttpClient }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
256
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: LayerLegendComponent, isStandalone: true, selector: "igo-layer-legend", inputs: { updateLegendOnResolutionChange: "updateLegendOnResolutionChange", layer: "layer" }, viewQueries: [{ propertyName: "renderedLegends", predicate: ["renderedLegend"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"legendItems$ | async as items\">\r\n <ng-container *ngIf=\"items.length; else noItems\">\r\n <ng-container *ngFor=\"let item of items.slice().reverse()\" #renderedLegends>\r\n <div *ngIf=\"getLegend; else noItems\">\r\n <mat-list-item *ngIf=\"item.title\">\r\n <mat-icon\r\n id=\"legend-toggle\"\r\n class=\"igo-chevron\"\r\n matListItemIcon\r\n igoCollapse\r\n [target]=\"legend\"\r\n [collapsed]=\"item.collapsed\"\r\n (toggle)=\"toggleLegendItem($event, item)\"\r\n svgIcon=\"chevron-up\"\r\n >\r\n </mat-icon>\r\n <span matListItemTitle>{{ computeItemTitle(item) | async }} </span>\r\n </mat-list-item>\r\n <div\r\n #legend\r\n class=\"igo-layer-legend\"\r\n [ngClass]=\"{ 'with-title': item.title }\"\r\n >\r\n <div *ngIf=\"currentStyle !== undefined\">\r\n <mat-form-field>\r\n <mat-select\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\"\r\n [(ngModel)]=\"currentStyle\"\r\n (selectionChange)=\"onChangeStyle()\"\r\n >\r\n <mat-option *ngFor=\"let style of styles\" [value]=\"style.name\">{{\r\n style.title\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div *ngIf=\"!item.collapsed\">\r\n <div *ngIf=\"item.url\">\r\n <img\r\n igoImageError\r\n *ngIf=\"item.imgGraphValue\"\r\n [hideError]=\"true\"\r\n #renderedLegend\r\n id=\"{{ item.title }}\"\r\n (load)=\"onLoadImage(item.title)\"\r\n [src]=\"item.imgGraphValue\"\r\n alt=\"{{ 'igo.geo.layer.legend.loadingLegendText' | translate }}\"\r\n />\r\n <small *ngIf=\"imagesHeight[item.title] < 16\">\r\n {{ 'igo.geo.layer.legend.noLegendScale' | translate }}\r\n </small>\r\n </div>\r\n <div\r\n [ngStyle]=\"item.style\"\r\n [innerHTML]=\"item.html | sanitizeHtml\"\r\n *ngIf=\"item.html\"\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #noItems>\r\n <small>\r\n {{ 'igo.geo.layer.legend.noLegendText' | translate }}\r\n </small>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [":host .igo-layer-legend.with-title{padding-left:18px}:host img{max-width:100%}:host img:after{content:\" \";position:relative;height:17px;float:left;width:17px;top:-3px;right:19px;background-color:#fff;border:3px solid #f3f3f3;border-radius:50%;animation:2s linear infinite spin}@-moz-document url-prefix(){:host img:after{margin-left:19px}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i4.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i4.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i4.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: CollapseDirective, selector: "[igoCollapse]", inputs: ["target", "collapsed"], outputs: ["toggle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "directive", type: ImageErrorDirective, selector: "[igoImageError]", inputs: ["errorImageUrl", "hideError"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }, { kind: "pipe", type: SanitizeHtmlPipe, name: "sanitizeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
250
257
  }
251
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LayerLegendComponent, decorators: [{
258
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: LayerLegendComponent, decorators: [{
252
259
  type: Component,
253
- args: [{ selector: 'igo-layer-legend', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"legendItems$ | async as items\">\r\n <ng-container *ngIf=\"items.length; else noItems\">\r\n <ng-container *ngFor=\"let item of items.slice().reverse()\" #renderedLegends>\r\n <div *ngIf=\"getLegend; else noItems\">\r\n <mat-list-item *ngIf=\"item.title\">\r\n <mat-icon\r\n id=\"legend-toggle\"\r\n class=\"igo-chevron\"\r\n matListItemIcon\r\n igoCollapse\r\n [target]=\"legend\"\r\n [collapsed]=\"item.collapsed\"\r\n (toggle)=\"toggleLegendItem($event, item)\"\r\n svgIcon=\"chevron-up\"\r\n >\r\n </mat-icon>\r\n <span matListItemTitle>{{ computeItemTitle(item) | async }} </span>\r\n </mat-list-item>\r\n <div\r\n #legend\r\n class=\"igo-layer-legend\"\r\n [ngClass]=\"{ 'with-title': item.title }\"\r\n >\r\n <div *ngIf=\"currentStyle !== undefined\">\r\n <mat-form-field>\r\n <mat-select\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\"\r\n [(ngModel)]=\"currentStyle\"\r\n (selectionChange)=\"onChangeStyle()\"\r\n >\r\n <mat-option *ngFor=\"let style of styles\" [value]=\"style.name\">{{\r\n style.title\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div *ngIf=\"!item.collapsed\">\r\n <div *ngIf=\"item.url\">\r\n <img\r\n igoImageError\r\n *ngIf=\"item.imgGraphValue\"\r\n hideError=\"true\"\r\n #renderedLegend\r\n id=\"{{ item.title }}\"\r\n (load)=\"onLoadImage(item.title)\"\r\n [src]=\"item.imgGraphValue\"\r\n alt=\"{{ 'igo.geo.layer.legend.loadingLegendText' | translate }}\"\r\n />\r\n <small *ngIf=\"imagesHeight[item.title] < 16\">\r\n {{ 'igo.geo.layer.legend.noLegendScale' | translate }}\r\n </small>\r\n </div>\r\n <div\r\n [ngStyle]=\"item.style\"\r\n [innerHTML]=\"item.html | sanitizeHtml\"\r\n *ngIf=\"item.html\"\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #noItems>\r\n <small>\r\n {{ 'igo.geo.layer.legend.noLegendText' | translate }}\r\n </small>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [":host .igo-layer-legend.with-title{padding-left:18px}:host img{max-width:100%}:host img:after{content:\" \";position:relative;height:17px;float:left;width:17px;top:-3px;right:19px;background-color:#fff;border:3px solid #f3f3f3;border-radius:50%;animation:2s linear infinite spin}@-moz-document url-prefix(){:host img:after{margin-left:19px}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"] }]
254
- }], ctorParameters: function () { return [{ type: i1.CapabilitiesService }, { type: i2.LanguageService }, { type: i2.ConfigService }, { type: i3.HttpClient }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { updateLegendOnResolutionChange: [{
260
+ args: [{ selector: 'igo-layer-legend', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
261
+ NgIf,
262
+ NgFor,
263
+ MatListModule,
264
+ MatIconModule,
265
+ CollapseDirective,
266
+ NgClass,
267
+ MatFormFieldModule,
268
+ MatSelectModule,
269
+ MatTooltipModule,
270
+ FormsModule,
271
+ MatOptionModule,
272
+ ImageErrorDirective,
273
+ NgStyle,
274
+ AsyncPipe,
275
+ TranslateModule,
276
+ SanitizeHtmlPipe
277
+ ], template: "<ng-container *ngIf=\"legendItems$ | async as items\">\r\n <ng-container *ngIf=\"items.length; else noItems\">\r\n <ng-container *ngFor=\"let item of items.slice().reverse()\" #renderedLegends>\r\n <div *ngIf=\"getLegend; else noItems\">\r\n <mat-list-item *ngIf=\"item.title\">\r\n <mat-icon\r\n id=\"legend-toggle\"\r\n class=\"igo-chevron\"\r\n matListItemIcon\r\n igoCollapse\r\n [target]=\"legend\"\r\n [collapsed]=\"item.collapsed\"\r\n (toggle)=\"toggleLegendItem($event, item)\"\r\n svgIcon=\"chevron-up\"\r\n >\r\n </mat-icon>\r\n <span matListItemTitle>{{ computeItemTitle(item) | async }} </span>\r\n </mat-list-item>\r\n <div\r\n #legend\r\n class=\"igo-layer-legend\"\r\n [ngClass]=\"{ 'with-title': item.title }\"\r\n >\r\n <div *ngIf=\"currentStyle !== undefined\">\r\n <mat-form-field>\r\n <mat-select\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\"\r\n [(ngModel)]=\"currentStyle\"\r\n (selectionChange)=\"onChangeStyle()\"\r\n >\r\n <mat-option *ngFor=\"let style of styles\" [value]=\"style.name\">{{\r\n style.title\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div *ngIf=\"!item.collapsed\">\r\n <div *ngIf=\"item.url\">\r\n <img\r\n igoImageError\r\n *ngIf=\"item.imgGraphValue\"\r\n [hideError]=\"true\"\r\n #renderedLegend\r\n id=\"{{ item.title }}\"\r\n (load)=\"onLoadImage(item.title)\"\r\n [src]=\"item.imgGraphValue\"\r\n alt=\"{{ 'igo.geo.layer.legend.loadingLegendText' | translate }}\"\r\n />\r\n <small *ngIf=\"imagesHeight[item.title] < 16\">\r\n {{ 'igo.geo.layer.legend.noLegendScale' | translate }}\r\n </small>\r\n </div>\r\n <div\r\n [ngStyle]=\"item.style\"\r\n [innerHTML]=\"item.html | sanitizeHtml\"\r\n *ngIf=\"item.html\"\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #noItems>\r\n <small>\r\n {{ 'igo.geo.layer.legend.noLegendText' | translate }}\r\n </small>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [":host .igo-layer-legend.with-title{padding-left:18px}:host img{max-width:100%}:host img:after{content:\" \";position:relative;height:17px;float:left;width:17px;top:-3px;right:19px;background-color:#fff;border:3px solid #f3f3f3;border-radius:50%;animation:2s linear infinite spin}@-moz-document url-prefix(){:host img:after{margin-left:19px}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"] }]
278
+ }], ctorParameters: () => [{ type: i1.CapabilitiesService }, { type: i2.LanguageService }, { type: i2.ConfigService }, { type: i3.HttpClient }, { type: i0.ChangeDetectorRef }], propDecorators: { updateLegendOnResolutionChange: [{
255
279
  type: Input
256
280
  }], renderedLegends: [{
257
281
  type: ViewChildren,
@@ -259,4 +283,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
259
283
  }], layer: [{
260
284
  type: Input
261
285
  }] } });
262
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItbGVnZW5kLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2xheWVyL2xheWVyLWxlZ2VuZC9sYXllci1sZWdlbmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbGF5ZXIvbGF5ZXItbGVnZW5kL2xheWVyLWxlZ2VuZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUVULEtBQUssRUFHTCxZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUU1RCxPQUFPLEVBQUUsZUFBZSxFQUE0QixFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUVuRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFFbkYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFZL0MsTUFBTSxPQUFPLG9CQUFvQjtJQXlEckI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQTVERCw4QkFBOEIsR0FBWSxLQUFLLENBQUM7SUFFekQ7O09BRUc7SUFDSCxZQUFZLEdBQThCLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRWxFOztPQUVHO0lBQ0ssT0FB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QUcsQ0FBQyxDQUFDLENBQUM7WUFDdkQsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDbkQ7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQVU7UUFDcEIsSUFBSSxPQUF5QixDQUFDO1FBQzlCLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3JDLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxhQUFpQyxDQUFDO1NBQ3hFO2FBQU07WUFDTCxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQ2pDLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQzNELENBQUMsYUFBaUMsQ0FBQztTQUNyQztRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUN6QyxDQUFDO3dHQTVRVSxvQkFBb0I7NEZBQXBCLG9CQUFvQiw0UENuQ2pDLHNxRkF1RUE7OzRGRHBDYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0Usa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU07Nk5BR3RDLDhCQUE4QjtzQkFBdEMsS0FBSztnQkFrQzBCLGVBQWU7c0JBQTlDLFlBQVk7dUJBQUMsZ0JBQWdCO2dCQVVyQixLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkcmVuXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB0eXBlIHsgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBTZWN1cmVJbWFnZVBpcGUgfSBmcm9tICdAaWdvMi9jb21tb24nO1xyXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlLCBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBDYXBhYmlsaXRpZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvY2FwYWJpbGl0aWVzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMZWdlbmQgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy9kYXRhc291cmNlLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFdNU0RhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy93bXMtZGF0YXNvdXJjZSc7XHJcbmltcG9ydCB7IFdNU0RhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvd21zLWRhdGFzb3VyY2UuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi9zaGFyZWQvbGF5ZXJzL2xheWVyJztcclxuaW1wb3J0IHtcclxuICBJdGVtU3R5bGVPcHRpb25zLFxyXG4gIExlZ2VuZE1hcFZpZXdPcHRpb25zXHJcbn0gZnJvbSAnLi4vc2hhcmVkL2xheWVycy9sZWdlbmQuaW50ZXJmYWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWdvLWxheWVyLWxlZ2VuZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xheWVyLWxlZ2VuZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGF5ZXItbGVnZW5kLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIExheWVyTGVnZW5kQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHVwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBPYnNlcnZhYmxlIG9mIHRoZSBsZWdlbmQgaXRlbXNcclxuICAgKi9cclxuICBsZWdlbmRJdGVtcyQ6IEJlaGF2aW9yU3ViamVjdDxMZWdlbmRbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcclxuXHJcbiAgLyoqXHJcbiAgICogU3Vic2NyaXB0aW9uIHRvIHRoZSBtYXAncyByZXNvbHV0aW9uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0ZSQkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBhdmFpbGFibGUgc3R5bGVzXHJcbiAgICovXHJcbiAgcHVibGljIHN0eWxlcztcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHN0eWxlIHVzZWQgdG8gbWFrZSB0aGUgbGVnZW5kXHJcbiAgICovXHJcbiAgcHVibGljIGN1cnJlbnRTdHlsZTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHNjYWxlIHVzZWQgdG8gbWFrZSB0aGUgbGVnZW5kXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzY2FsZTogbnVtYmVyID0gdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgZXh0ZW50IHVzZWQgdG8gbWFrZSB0aGUgbGVnZW5kXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB2aWV3OiBMZWdlbmRNYXBWaWV3T3B0aW9ucyA9IHVuZGVmaW5lZDtcclxuICAvKipcclxuICAgKiBHZXQgbGlzdCBvZiBpbWFnZXMgZGlzcGxheVxyXG4gICAqL1xyXG4gIEBWaWV3Q2hpbGRyZW4oJ3JlbmRlcmVkTGVnZW5kJykgcmVuZGVyZWRMZWdlbmRzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3Qgb2Ygc2l6ZSBvZiBpbWFnZXMgZGlzcGxheWVkXHJcbiAgICovXHJcbiAgcHVibGljIGltYWdlc0hlaWdodDogeyBbc3JjS2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xyXG5cclxuICAvKipcclxuICAgKiBMYXllclxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGxheWVyOiBMYXllcjtcclxuXHJcbiAgLyoqXHJcbiAgICogaWYgZ2V0TGVnZW5kR3JhcGhpYyBpcyBhdXRob3JpemVkXHJcbiAgICovXHJcbiAgcHVibGljIGdldExlZ2VuZCA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIGFjdGl2ZUxlZ2VuZFxyXG4gICAqL1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2FwYWJpbGl0aWVzU2VydmljZTogQ2FwYWJpbGl0aWVzU2VydmljZSxcclxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkge31cclxuXHJcbiAgLyoqXHJcbiAgICogT24gaW5pdCwgc3Vic2NyaWJlIHRvIHRoZSBtYXAncyByZXNvbHV0aW9uIGFuZCB1cGRhdGUgdGhlIGxlZ2VuZCBhY2NvcmRpbmdseVxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgbGV0IGxhc3RsTGVnZW5kID0gdGhpcy5sYXllci5sZWdlbmQ7XHJcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMubGlzdFN0eWxlcygpO1xyXG4gICAgY29uc3Qgc291cmNlT3B0aW9ucyA9IHRoaXMubGF5ZXIub3B0aW9ucy5zb3VyY2Uub3B0aW9ucyBhcyBhbnk7XHJcbiAgICBpZiAoc291cmNlT3B0aW9ucyAmJiBzb3VyY2VPcHRpb25zLnBhcmFtcyAmJiBzb3VyY2VPcHRpb25zLnBhcmFtcy5TVFlMRVMpIHtcclxuICAgICAgLy8gaWYgYSBzdHlsZXMgaXMgcHJvdmlkZWQgaW50byB0aGUgbGF5ZXJzIHdtcyBwYXJhbXNcclxuICAgICAgdGhpcy5jdXJyZW50U3R5bGUgPSB0aGlzLnN0eWxlcy5maW5kKFxyXG4gICAgICAgIChzdHlsZSkgPT4gc3R5bGUubmFtZSA9PT0gc291cmNlT3B0aW9ucy5wYXJhbXMuU1RZTEVTXHJcbiAgICAgICkubmFtZTtcclxuICAgIH0gZWxzZSBpZiAoIWxhc3RsTGVnZW5kKSB7XHJcbiAgICAgIC8vIGlmIG5vIGxlZ2VuZCBpcyBtYW51YWxseSBwcm92aWRlZFxyXG4gICAgICBpZiAodGhpcy5zdHlsZXMgJiYgdGhpcy5zdHlsZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFN0eWxlID0gdGhpcy5zdHlsZXNbMF0ubmFtZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLnN0eWxlcyAmJiB0aGlzLnN0eWxlcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFN0eWxlID0gbGFzdGxMZWdlbmRbMF0uY3VycmVudFN0eWxlO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICB0eXBlb2YgdGhpcy5sYXllci5vcHRpb25zLmxlZ2VuZE9wdGlvbnMgIT09ICd1bmRlZmluZWQnICYmXHJcbiAgICAgIHRoaXMubGF5ZXIub3B0aW9ucy5sZWdlbmRPcHRpb25zLmRpc3BsYXkgPT09IGZhbHNlXHJcbiAgICApIHtcclxuICAgICAgbGFzdGxMZWdlbmQgPSBbXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxhc3RsTGVnZW5kID0gdGhpcy5sYXllci5kYXRhU291cmNlLmdldExlZ2VuZChcclxuICAgICAgICB0aGlzLmN1cnJlbnRTdHlsZSxcclxuICAgICAgICB0aGlzLnZpZXdcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMudXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlIHx8XHJcbiAgICAgIChzb3VyY2VPcHRpb25zIGFzIFdNU0RhdGFTb3VyY2VPcHRpb25zKS5jb250ZW50RGVwZW5kZW50TGVnZW5kXHJcbiAgICApIHtcclxuICAgICAgY29uc3Qgc3RhdGUkID0gdGhpcy5sYXllci5tYXAudmlld0NvbnRyb2xsZXIuc3RhdGUkO1xyXG4gICAgICB0aGlzLnN0YXRlJCQgPSBzdGF0ZSQuc3Vic2NyaWJlKCgpID0+IHRoaXMub25WaWV3Q29udHJvbGxlclN0YXRlQ2hhbmdlKCkpO1xyXG4gICAgfSBlbHNlIGlmIChsYXN0bExlZ2VuZCAmJiBsYXN0bExlZ2VuZC5sZW5ndGggIT09IDApIHtcclxuICAgICAgdGhpcy5sZWdlbmRJdGVtcyQubmV4dChsYXN0bExlZ2VuZCk7XHJcbiAgICAgIGZvciAoY29uc3QgbGVnZW5kIG9mIGxhc3RsTGVnZW5kKSB7XHJcbiAgICAgICAgdGhpcy5nZXRMZWdlbmRHcmFwaGljKGxlZ2VuZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIGRlc3Ryb3ksIHVuc3Vic2NyaWJlIHRvIHRoZSBtYXAncyB2aWV3IHN0YXRlXHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBpZiAodGhpcy5zdGF0ZSQkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5zdGF0ZSQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRMZWdlbmRHcmFwaGljKGl0ZW06IExlZ2VuZCkge1xyXG4gICAgaWYgKGl0ZW0udXJsKSB7XHJcbiAgICAgIGNvbnN0IHNlY3VyZUlNRyA9IG5ldyBTZWN1cmVJbWFnZVBpcGUodGhpcy5odHRwLCB0aGlzLmNvbmZpZ1NlcnZpY2UpO1xyXG4gICAgICBzZWN1cmVJTUdcclxuICAgICAgICAudHJhbnNmb3JtKGl0ZW0udXJsKVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIuZXJyb3IpIHtcclxuICAgICAgICAgICAgICBlcnIuZXJyb3IuY2F1Z2h0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmdldExlZ2VuZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHJldHVybiBlcnI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKG9ic0xlZ0dyYXBoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpZHggPSB0aGlzLmxlZ2VuZEl0ZW1zJC52YWx1ZS5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgIChsZWcpID0+IGxlZy50aXRsZSA9PT0gaXRlbS50aXRsZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IGxlZ2VuZEdyYXBoID0gb2JzTGVnR3JhcGggYXMgc3RyaW5nO1xyXG4gICAgICAgICAgdGhpcy5sZWdlbmRJdGVtcyQudmFsdWVbaWR4XS5pbWdHcmFwaFZhbHVlID0gbGVnZW5kR3JhcGg7XHJcbiAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRvZ2dsZUxlZ2VuZEl0ZW0oY29sbGFwc2VkOiBib29sZWFuLCBpdGVtOiBMZWdlbmQpIHtcclxuICAgIGl0ZW0uY29sbGFwc2VkID0gY29sbGFwc2VkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0cmFuc2ZlcnRUb2dnbGVMZWdlbmRJdGVtKG5ld0xlZ2VuZHM6IExlZ2VuZFtdKTogTGVnZW5kW10ge1xyXG4gICAgY29uc3Qgb3V0TGVnZW5kczogTGVnZW5kW10gPSBuZXdMZWdlbmRzO1xyXG4gICAgY29uc3QgbGFzdExlZ2VuZHMgPSB0aGlzLmxheWVyLmxlZ2VuZDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGFzdExlZ2VuZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgb3V0TGVnZW5kc1tpXS5jb2xsYXBzZWQgPSBsYXN0TGVnZW5kc1tpXS5jb2xsYXBzZWQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb3V0TGVnZW5kcztcclxuICB9XHJcblxyXG4gIGNvbXB1dGVJdGVtVGl0bGUobGF5ZXJMZWdlbmQpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgY29uc3QgbGF5ZXJPcHRpb25zID0gdGhpcy5sYXllci5kYXRhU291cmNlLm9wdGlvbnMgYXMgYW55O1xyXG4gICAgaWYgKGxheWVyT3B0aW9ucy50eXBlICE9PSAnd21zJykge1xyXG4gICAgICByZXR1cm4gb2YobGF5ZXJMZWdlbmQudGl0bGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGxheWVycyA9IGxheWVyT3B0aW9ucy5wYXJhbXMuTEFZRVJTLnNwbGl0KCcsJyk7XHJcbiAgICBjb25zdCBsb2NhbExheWVyT3B0aW9ucyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobGF5ZXJPcHRpb25zKSk7IC8vIHRvIGF2b2lkIHRvIGFsdGVyIHRoZSBvcmlnaW5hbCBvcHRpb25zLlxyXG4gICAgbG9jYWxMYXllck9wdGlvbnMucGFyYW1zLkxBWUVSUyA9IGxheWVycy5maW5kKFxyXG4gICAgICAobGF5ZXIpID0+IGxheWVyID09PSBsYXllckxlZ2VuZC50aXRsZVxyXG4gICAgKTtcclxuICAgIHJldHVybiB0aGlzLmNhcGFiaWxpdGllc1NlcnZpY2UuZ2V0V01TT3B0aW9ucyhsb2NhbExheWVyT3B0aW9ucykucGlwZShcclxuICAgICAgbWFwKCh3bXNEYXRhU291cmNlT3B0aW9ucykgPT4ge1xyXG4gICAgICAgIHJldHVybiB3bXNEYXRhU291cmNlT3B0aW9ucy5fbGF5ZXJPcHRpb25zRnJvbVNvdXJjZS50aXRsZTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPbiByZXNvbHV0aW9uIGNoYW5nZSwgY29tcHV0ZSB0aGUgZWZmZWN0aXZlIHNjYWxlIGxldmVsIGFuZCB1cGRhdGUgdGhlXHJcbiAgICogbGVnZW5kIGFjY29yZGluZ2x5LlxyXG4gICAqIEBwYXJhbSByZXNvbHV0aW9uIE1hcCByZXNvbHV0aW9uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvblZpZXdDb250cm9sbGVyU3RhdGVDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLnZpZXcgPSB7XHJcbiAgICAgIHJlc29sdXRpb246IHRoaXMubGF5ZXIubWFwLnZpZXdDb250cm9sbGVyLmdldFJlc29sdXRpb24oKSxcclxuICAgICAgZXh0ZW50OiB0aGlzLmxheWVyLm1hcC52aWV3Q29udHJvbGxlci5nZXRFeHRlbnQoKSxcclxuICAgICAgcHJvamVjdGlvbjogdGhpcy5sYXllci5tYXAudmlld0NvbnRyb2xsZXIuZ2V0T2xQcm9qZWN0aW9uKCkuZ2V0Q29kZSgpLFxyXG4gICAgICBzY2FsZTogdGhpcy5sYXllci5tYXAudmlld0NvbnRyb2xsZXIuZ2V0U2NhbGUoKSxcclxuICAgICAgc2l6ZTogdGhpcy5sYXllci5tYXAub2wuZ2V0U2l6ZSgpXHJcbiAgICB9IGFzIExlZ2VuZE1hcFZpZXdPcHRpb25zO1xyXG4gICAgdGhpcy51cGRhdGVMZWdlbmQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSB0aGUgbGVnZW5kIHdpdGggc2NhbGUgbGV2ZWwgYW5kIHN0eWxlIGRlZmluZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlTGVnZW5kKCkge1xyXG4gICAgbGV0IGxlZ2VuZEl0ZW1zID0gdGhpcy5sYXllci5kYXRhU291cmNlLmdldExlZ2VuZChcclxuICAgICAgdGhpcy5jdXJyZW50U3R5bGUsXHJcbiAgICAgIHRoaXMudmlld1xyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLmxheWVyLmxlZ2VuZCAmJiB0aGlzLmxheWVyLmxlZ2VuZC5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGxlZ2VuZEl0ZW1zID0gdGhpcy50cmFuc2ZlcnRUb2dnbGVMZWdlbmRJdGVtKGxlZ2VuZEl0ZW1zKTtcclxuICAgIH1cclxuICAgIHRoaXMubGF5ZXIubGVnZW5kID0gbGVnZW5kSXRlbXM7XHJcblxyXG4gICAgaWYgKGxlZ2VuZEl0ZW1zLmxlbmd0aCA9PT0gMCAmJiB0aGlzLmxlZ2VuZEl0ZW1zJC52YWx1ZS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sZWdlbmRJdGVtcyQubmV4dChsZWdlbmRJdGVtcyk7XHJcbiAgICBmb3IgKGNvbnN0IGxlZ2VuZCBvZiB0aGlzLmxlZ2VuZEl0ZW1zJC52YWx1ZSkge1xyXG4gICAgICB0aGlzLmdldExlZ2VuZEdyYXBoaWMobGVnZW5kKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbGlzdFN0eWxlcygpIHtcclxuICAgIGNvbnN0IGxheWVyT3B0aW9ucyA9IHRoaXMubGF5ZXIub3B0aW9ucztcclxuICAgIGlmIChsYXllck9wdGlvbnMgJiYgbGF5ZXJPcHRpb25zLmxlZ2VuZE9wdGlvbnMpIHtcclxuICAgICAgY29uc3QgdHJhbnNsYXRlID0gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlO1xyXG4gICAgICBjb25zdCB0aXRsZSA9IHRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmxheWVyLmxlZ2VuZC5kZWZhdWx0Jyk7XHJcbiAgICAgIGxldCBzdHlsZXNBdmFpbGFibGUgPSBbeyBuYW1lOiAnJywgdGl0bGUgfSBhcyBJdGVtU3R5bGVPcHRpb25zXTtcclxuICAgICAgaWYgKGxheWVyT3B0aW9ucy5sZWdlbmRPcHRpb25zLnN0eWxlc0F2YWlsYWJsZSkge1xyXG4gICAgICAgIHN0eWxlc0F2YWlsYWJsZSA9IHN0eWxlc0F2YWlsYWJsZS5jb25jYXQoXHJcbiAgICAgICAgICBsYXllck9wdGlvbnMubGVnZW5kT3B0aW9ucy5zdHlsZXNBdmFpbGFibGUuZmlsdGVyKFxyXG4gICAgICAgICAgICAoc0EpID0+XHJcbiAgICAgICAgICAgICAgc0EubmFtZS5ub3JtYWxpemUoJ05GRCcpLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2dpLCAnJykgIT09XHJcbiAgICAgICAgICAgICAgICAnZGVmYXVsdCcgJiZcclxuICAgICAgICAgICAgICBzQS5uYW1lLm5vcm1hbGl6ZSgnTkZEJykucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZ2ksICcnKSAhPT1cclxuICAgICAgICAgICAgICAgICdkZWZhdXQnXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBzdHlsZXNBdmFpbGFibGVcclxuICAgICAgICAuZmlsdGVyKChzYSkgPT4gIXNhLnRpdGxlKVxyXG4gICAgICAgIC5tYXAoKHNhKSA9PiAoc2EudGl0bGUgPSBzYS5uYW1lKSk7XHJcbiAgICAgIHN0eWxlc0F2YWlsYWJsZS5tYXAoXHJcbiAgICAgICAgKHMpID0+XHJcbiAgICAgICAgICAocy50aXRsZSA9XHJcbiAgICAgICAgICAgIHMudGl0bGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgK1xyXG4gICAgICAgICAgICBzLnRpdGxlLnNsaWNlKDEpLnJlcGxhY2UoL18vZywgJyAnKSlcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIHN0eWxlc0F2YWlsYWJsZTtcclxuICAgIH1cclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlU3R5bGUoKSB7XHJcbiAgICB0aGlzLnVwZGF0ZUxlZ2VuZCgpO1xyXG4gICAgbGV0IFNUWUxFUyA9ICcnO1xyXG4gICAgaWYgKHRoaXMubGF5ZXIuZGF0YVNvdXJjZSBpbnN0YW5jZW9mIFdNU0RhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy5sYXllci5kYXRhU291cmNlLm9sXHJcbiAgICAgICAgLmdldFBhcmFtcygpXHJcbiAgICAgICAgLkxBWUVSUy5zcGxpdCgnLCcpXHJcbiAgICAgICAgLm1hcCgobGF5ZXIpID0+IChTVFlMRVMgKz0gdGhpcy5jdXJyZW50U3R5bGUgKyAnLCcpKTtcclxuICAgICAgU1RZTEVTID0gU1RZTEVTLnNsaWNlKDAsIC0xKTtcclxuICAgICAgdGhpcy5sYXllci5kYXRhU291cmNlLm9sLnVwZGF0ZVBhcmFtcyh7IFNUWUxFUyB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uTG9hZEltYWdlKGlkOiBzdHJpbmcpIHtcclxuICAgIGxldCBlbGVtUmVmOiBIVE1MSW1hZ2VFbGVtZW50O1xyXG4gICAgaWYgKHRoaXMucmVuZGVyZWRMZWdlbmRzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICBlbGVtUmVmID0gdGhpcy5yZW5kZXJlZExlZ2VuZHMuZmlyc3QubmF0aXZlRWxlbWVudCBhcyBIVE1MSW1hZ2VFbGVtZW50O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZWxlbVJlZiA9IHRoaXMucmVuZGVyZWRMZWdlbmRzLmZpbmQoXHJcbiAgICAgICAgKHJlbmRlcmVkTGVnZW5kKSA9PiByZW5kZXJlZExlZ2VuZC5uYXRpdmVFbGVtZW50LmlkID09PSBpZFxyXG4gICAgICApLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEltYWdlRWxlbWVudDtcclxuICAgIH1cclxuICAgIHRoaXMuaW1hZ2VzSGVpZ2h0W2lkXSA9IGVsZW1SZWYuaGVpZ2h0O1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwibGVnZW5kSXRlbXMkIHwgYXN5bmMgYXMgaXRlbXNcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbXMubGVuZ3RoOyBlbHNlIG5vSXRlbXNcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXMuc2xpY2UoKS5yZXZlcnNlKClcIiAjcmVuZGVyZWRMZWdlbmRzPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiZ2V0TGVnZW5kOyBlbHNlIG5vSXRlbXNcIj5cclxuICAgICAgICA8bWF0LWxpc3QtaXRlbSAqbmdJZj1cIml0ZW0udGl0bGVcIj5cclxuICAgICAgICAgIDxtYXQtaWNvblxyXG4gICAgICAgICAgICBpZD1cImxlZ2VuZC10b2dnbGVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImlnby1jaGV2cm9uXCJcclxuICAgICAgICAgICAgbWF0TGlzdEl0ZW1JY29uXHJcbiAgICAgICAgICAgIGlnb0NvbGxhcHNlXHJcbiAgICAgICAgICAgIFt0YXJnZXRdPVwibGVnZW5kXCJcclxuICAgICAgICAgICAgW2NvbGxhcHNlZF09XCJpdGVtLmNvbGxhcHNlZFwiXHJcbiAgICAgICAgICAgICh0b2dnbGUpPVwidG9nZ2xlTGVnZW5kSXRlbSgkZXZlbnQsIGl0ZW0pXCJcclxuICAgICAgICAgICAgc3ZnSWNvbj1cImNoZXZyb24tdXBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDxzcGFuIG1hdExpc3RJdGVtVGl0bGU+e3sgY29tcHV0ZUl0ZW1UaXRsZShpdGVtKSB8IGFzeW5jIH19IDwvc3Bhbj5cclxuICAgICAgICA8L21hdC1saXN0LWl0ZW0+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgI2xlZ2VuZFxyXG4gICAgICAgICAgY2xhc3M9XCJpZ28tbGF5ZXItbGVnZW5kXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3dpdGgtdGl0bGUnOiBpdGVtLnRpdGxlIH1cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJjdXJyZW50U3R5bGUgIT09IHVuZGVmaW5lZFwiPlxyXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3RcclxuICAgICAgICAgICAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXHJcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcclxuICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLmxheWVyLmxlZ2VuZC5zZWxlY3RTdHlsZScgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjdXJyZW50U3R5bGVcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbkNoYW5nZVN0eWxlKClcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBzdHlsZSBvZiBzdHlsZXNcIiBbdmFsdWVdPVwic3R5bGUubmFtZVwiPnt7XHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlLnRpdGxlXHJcbiAgICAgICAgICAgICAgICB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXRlbS5jb2xsYXBzZWRcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0udXJsXCI+XHJcbiAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgaWdvSW1hZ2VFcnJvclxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmltZ0dyYXBoVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgaGlkZUVycm9yPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAjcmVuZGVyZWRMZWdlbmRcclxuICAgICAgICAgICAgICAgIGlkPVwie3sgaXRlbS50aXRsZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAobG9hZCk9XCJvbkxvYWRJbWFnZShpdGVtLnRpdGxlKVwiXHJcbiAgICAgICAgICAgICAgICBbc3JjXT1cIml0ZW0uaW1nR3JhcGhWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJ7eyAnaWdvLmdlby5sYXllci5sZWdlbmQubG9hZGluZ0xlZ2VuZFRleHQnIHwgdHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxzbWFsbCAqbmdJZj1cImltYWdlc0hlaWdodFtpdGVtLnRpdGxlXSA8IDE2XCI+XHJcbiAgICAgICAgICAgICAgICB7eyAnaWdvLmdlby5sYXllci5sZWdlbmQubm9MZWdlbmRTY2FsZScgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIml0ZW0uc3R5bGVcIlxyXG4gICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiaXRlbS5odG1sIHwgc2FuaXRpemVIdG1sXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uaHRtbFwiXHJcbiAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI25vSXRlbXM+XHJcbiAgICA8c21hbGw+XHJcbiAgICAgIHt7ICdpZ28uZ2VvLmxheWVyLmxlZ2VuZC5ub0xlZ2VuZFRleHQnIHwgdHJhbnNsYXRlIH19XHJcbiAgICA8L3NtYWxsPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItbGVnZW5kLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2xheWVyL2xheWVyLWxlZ2VuZC9sYXllci1sZWdlbmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbGF5ZXIvbGF5ZXItbGVnZW5kL2xheWVyLWxlZ2VuZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsS0FBSyxFQUdMLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixlQUFlLEVBQ2hCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFB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QkFBQyxnQkFBZ0I7Z0JBVXJCLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdDbGFzcywgTmdGb3IsIE5nSWYsIE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkcmVuXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB0eXBlIHsgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRPcHRpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcblxyXG5pbXBvcnQge1xyXG4gIENvbGxhcHNlRGlyZWN0aXZlLFxyXG4gIEltYWdlRXJyb3JEaXJlY3RpdmUsXHJcbiAgU2FuaXRpemVIdG1sUGlwZSxcclxuICBTZWN1cmVJbWFnZVBpcGVcclxufSBmcm9tICdAaWdvMi9jb21tb24nO1xyXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlLCBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgQ2FwYWJpbGl0aWVzU2VydmljZSB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2NhcGFiaWxpdGllcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGVnZW5kIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvZGF0YXNvdXJjZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBXTVNEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvd21zLWRhdGFzb3VyY2UnO1xyXG5pbXBvcnQgeyBXTVNEYXRhU291cmNlT3B0aW9ucyB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzL3dtcy1kYXRhc291cmNlLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IExheWVyIH0gZnJvbSAnLi4vc2hhcmVkL2xheWVycy9sYXllcic7XHJcbmltcG9ydCB7XHJcbiAgSXRlbVN0eWxlT3B0aW9ucyxcclxuICBMZWdlbmRNYXBWaWV3T3B0aW9uc1xyXG59IGZyb20gJy4uL3NoYXJlZC9sYXllcnMvbGVnZW5kLmludGVyZmFjZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lnby1sYXllci1sZWdlbmQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9sYXllci1sZWdlbmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2xheWVyLWxlZ2VuZC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTmdJZixcclxuICAgIE5nRm9yLFxyXG4gICAgTWF0TGlzdE1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBDb2xsYXBzZURpcmVjdGl2ZSxcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXHJcbiAgICBNYXRTZWxlY3RNb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRPcHRpb25Nb2R1bGUsXHJcbiAgICBJbWFnZUVycm9yRGlyZWN0aXZlLFxyXG4gICAgTmdTdHlsZSxcclxuICAgIEFzeW5jUGlwZSxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIFNhbml0aXplSHRtbFBpcGVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMYXllckxlZ2VuZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSB1cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogT2JzZXJ2YWJsZSBvZiB0aGUgbGVnZW5kIGl0ZW1zXHJcbiAgICovXHJcbiAgbGVnZW5kSXRlbXMkOiBCZWhhdmlvclN1YmplY3Q8TGVnZW5kW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YnNjcmlwdGlvbiB0byB0aGUgbWFwJ3MgcmVzb2x1dGlvblxyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGUkJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgYXZhaWxhYmxlIHN0eWxlc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBzdHlsZXM7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBzdHlsZSB1c2VkIHRvIG1ha2UgdGhlIGxlZ2VuZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBjdXJyZW50U3R5bGU7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBzY2FsZSB1c2VkIHRvIG1ha2UgdGhlIGxlZ2VuZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2NhbGU6IG51bWJlciA9IHVuZGVmaW5lZDtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGV4dGVudCB1c2VkIHRvIG1ha2UgdGhlIGxlZ2VuZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdmlldzogTGVnZW5kTWFwVmlld09wdGlvbnMgPSB1bmRlZmluZWQ7XHJcbiAgLyoqXHJcbiAgICogR2V0IGxpc3Qgb2YgaW1hZ2VzIGRpc3BsYXlcclxuICAgKi9cclxuICBAVmlld0NoaWxkcmVuKCdyZW5kZXJlZExlZ2VuZCcpIHJlbmRlcmVkTGVnZW5kczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xyXG5cclxuICAvKipcclxuICAgKiBMaXN0IG9mIHNpemUgb2YgaW1hZ2VzIGRpc3BsYXllZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBpbWFnZXNIZWlnaHQ6IHsgW3NyY0tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcclxuXHJcbiAgLyoqXHJcbiAgICogTGF5ZXJcclxuICAgKi9cclxuICBASW5wdXQoKSBsYXllcjogTGF5ZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIGlmIGdldExlZ2VuZEdyYXBoaWMgaXMgYXV0aG9yaXplZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRMZWdlbmQgPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBhY3RpdmVMZWdlbmRcclxuICAgKi9cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNhcGFiaWxpdGllc1NlcnZpY2U6IENhcGFiaWxpdGllc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIGluaXQsIHN1YnNjcmliZSB0byB0aGUgbWFwJ3MgcmVzb2x1dGlvbiBhbmQgdXBkYXRlIHRoZSBsZWdlbmQgYWNjb3JkaW5nbHlcclxuICAgKi9cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGxldCBsYXN0bExlZ2VuZCA9IHRoaXMubGF5ZXIubGVnZW5kO1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmxpc3RTdHlsZXMoKTtcclxuICAgIGNvbnN0IHNvdXJjZU9wdGlvbnMgPSB0aGlzLmxheWVyLm9wdGlvbnMuc291cmNlLm9wdGlvbnMgYXMgYW55O1xyXG4gICAgaWYgKHNvdXJjZU9wdGlvbnMgJiYgc291cmNlT3B0aW9ucy5wYXJhbXMgJiYgc291cmNlT3B0aW9ucy5wYXJhbXMuU1RZTEVTKSB7XHJcbiAgICAgIC8vIGlmIGEgc3R5bGVzIGlzIHByb3ZpZGVkIGludG8gdGhlIGxheWVycyB3bXMgcGFyYW1zXHJcbiAgICAgIHRoaXMuY3VycmVudFN0eWxlID0gdGhpcy5zdHlsZXMuZmluZChcclxuICAgICAgICAoc3R5bGUpID0+IHN0eWxlLm5hbWUgPT09IHNvdXJjZU9wdGlvbnMucGFyYW1zLlNUWUxFU1xyXG4gICAgICApLm5hbWU7XHJcbiAgICB9IGVsc2UgaWYgKCFsYXN0bExlZ2VuZCkge1xyXG4gICAgICAvLyBpZiBubyBsZWdlbmQgaXMgbWFudWFsbHkgcHJvdmlkZWRcclxuICAgICAgaWYgKHRoaXMuc3R5bGVzICYmIHRoaXMuc3R5bGVzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRTdHlsZSA9IHRoaXMuc3R5bGVzWzBdLm5hbWU7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5zdHlsZXMgJiYgdGhpcy5zdHlsZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRTdHlsZSA9IGxhc3RsTGVnZW5kWzBdLmN1cnJlbnRTdHlsZTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgdHlwZW9mIHRoaXMubGF5ZXIub3B0aW9ucy5sZWdlbmRPcHRpb25zICE9PSAndW5kZWZpbmVkJyAmJlxyXG4gICAgICB0aGlzLmxheWVyLm9wdGlvbnMubGVnZW5kT3B0aW9ucy5kaXNwbGF5ID09PSBmYWxzZVxyXG4gICAgKSB7XHJcbiAgICAgIGxhc3RsTGVnZW5kID0gW107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsYXN0bExlZ2VuZCA9IHRoaXMubGF5ZXIuZGF0YVNvdXJjZS5nZXRMZWdlbmQoXHJcbiAgICAgICAgdGhpcy5jdXJyZW50U3R5bGUsXHJcbiAgICAgICAgdGhpcy52aWV3XHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnVwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZSB8fFxyXG4gICAgICAoc291cmNlT3B0aW9ucyBhcyBXTVNEYXRhU291cmNlT3B0aW9ucykuY29udGVudERlcGVuZGVudExlZ2VuZFxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnN0IHN0YXRlJCA9IHRoaXMubGF5ZXIubWFwLnZpZXdDb250cm9sbGVyLnN0YXRlJDtcclxuICAgICAgdGhpcy5zdGF0ZSQkID0gc3RhdGUkLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uVmlld0NvbnRyb2xsZXJTdGF0ZUNoYW5nZSgpKTtcclxuICAgIH0gZWxzZSBpZiAobGFzdGxMZWdlbmQgJiYgbGFzdGxMZWdlbmQubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgIHRoaXMubGVnZW5kSXRlbXMkLm5leHQobGFzdGxMZWdlbmQpO1xyXG4gICAgICBmb3IgKGNvbnN0IGxlZ2VuZCBvZiBsYXN0bExlZ2VuZCkge1xyXG4gICAgICAgIHRoaXMuZ2V0TGVnZW5kR3JhcGhpYyhsZWdlbmQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPbiBkZXN0cm95LCB1bnN1YnNjcmliZSB0byB0aGUgbWFwJ3MgdmlldyBzdGF0ZVxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuc3RhdGUkJCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuc3RhdGUkJC51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0TGVnZW5kR3JhcGhpYyhpdGVtOiBMZWdlbmQpIHtcclxuICAgIGlmIChpdGVtLnVybCkge1xyXG4gICAgICBjb25zdCBzZWN1cmVJTUcgPSBuZXcgU2VjdXJlSW1hZ2VQaXBlKHRoaXMuaHR0cCwgdGhpcy5jb25maWdTZXJ2aWNlKTtcclxuICAgICAgc2VjdXJlSU1HXHJcbiAgICAgICAgLnRyYW5zZm9ybShpdGVtLnVybClcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXJyLmVycm9yKSB7XHJcbiAgICAgICAgICAgICAgZXJyLmVycm9yLmNhdWdodCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRMZWdlbmQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICByZXR1cm4gZXJyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKChvYnNMZWdHcmFwaCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5sZWdlbmRJdGVtcyQudmFsdWUuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAobGVnKSA9PiBsZWcudGl0bGUgPT09IGl0ZW0udGl0bGVcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCBsZWdlbmRHcmFwaCA9IG9ic0xlZ0dyYXBoIGFzIHN0cmluZztcclxuICAgICAgICAgIHRoaXMubGVnZW5kSXRlbXMkLnZhbHVlW2lkeF0uaW1nR3JhcGhWYWx1ZSA9IGxlZ2VuZEdyYXBoO1xyXG4gICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0b2dnbGVMZWdlbmRJdGVtKGNvbGxhcHNlZDogYm9vbGVhbiwgaXRlbTogTGVnZW5kKSB7XHJcbiAgICBpdGVtLmNvbGxhcHNlZCA9IGNvbGxhcHNlZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdHJhbnNmZXJ0VG9nZ2xlTGVnZW5kSXRlbShuZXdMZWdlbmRzOiBMZWdlbmRbXSk6IExlZ2VuZFtdIHtcclxuICAgIGNvbnN0IG91dExlZ2VuZHM6IExlZ2VuZFtdID0gbmV3TGVnZW5kcztcclxuICAgIGNvbnN0IGxhc3RMZWdlbmRzID0gdGhpcy5sYXllci5sZWdlbmQ7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxhc3RMZWdlbmRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIG91dExlZ2VuZHNbaV0uY29sbGFwc2VkID0gbGFzdExlZ2VuZHNbaV0uY29sbGFwc2VkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG91dExlZ2VuZHM7XHJcbiAgfVxyXG5cclxuICBjb21wdXRlSXRlbVRpdGxlKGxheWVyTGVnZW5kKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IGxheWVyT3B0aW9ucyA9IHRoaXMubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zIGFzIGFueTtcclxuICAgIGlmIChsYXllck9wdGlvbnMudHlwZSAhPT0gJ3dtcycpIHtcclxuICAgICAgcmV0dXJuIG9mKGxheWVyTGVnZW5kLnRpdGxlKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBsYXllcnMgPSBsYXllck9wdGlvbnMucGFyYW1zLkxBWUVSUy5zcGxpdCgnLCcpO1xyXG4gICAgY29uc3QgbG9jYWxMYXllck9wdGlvbnMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGxheWVyT3B0aW9ucykpOyAvLyB0byBhdm9pZCB0byBhbHRlciB0aGUgb3JpZ2luYWwgb3B0aW9ucy5cclxuICAgIGxvY2FsTGF5ZXJPcHRpb25zLnBhcmFtcy5MQVlFUlMgPSBsYXllcnMuZmluZChcclxuICAgICAgKGxheWVyKSA9PiBsYXllciA9PT0gbGF5ZXJMZWdlbmQudGl0bGVcclxuICAgICk7XHJcbiAgICByZXR1cm4gdGhpcy5jYXBhYmlsaXRpZXNTZXJ2aWNlLmdldFdNU09wdGlvbnMobG9jYWxMYXllck9wdGlvbnMpLnBpcGUoXHJcbiAgICAgIG1hcCgod21zRGF0YVNvdXJjZU9wdGlvbnMpID0+IHtcclxuICAgICAgICByZXR1cm4gd21zRGF0YVNvdXJjZU9wdGlvbnMuX2xheWVyT3B0aW9uc0Zyb21Tb3VyY2UudGl0bGU7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT24gcmVzb2x1dGlvbiBjaGFuZ2UsIGNvbXB1dGUgdGhlIGVmZmVjdGl2ZSBzY2FsZSBsZXZlbCBhbmQgdXBkYXRlIHRoZVxyXG4gICAqIGxlZ2VuZCBhY2NvcmRpbmdseS5cclxuICAgKiBAcGFyYW0gcmVzb2x1dGlvbiBNYXAgcmVzb2x1dGlvblxyXG4gICAqL1xyXG4gIHByaXZhdGUgb25WaWV3Q29udHJvbGxlclN0YXRlQ2hhbmdlKCkge1xyXG4gICAgdGhpcy52aWV3ID0ge1xyXG4gICAgICByZXNvbHV0aW9uOiB0aGlzLmxheWVyLm1hcC52aWV3Q29udHJvbGxlci5nZXRSZXNvbHV0aW9uKCksXHJcbiAgICAgIGV4dGVudDogdGhpcy5sYXllci5tYXAudmlld0NvbnRyb2xsZXIuZ2V0RXh0ZW50KCksXHJcbiAgICAgIHByb2plY3Rpb246IHRoaXMubGF5ZXIubWFwLnZpZXdDb250cm9sbGVyLmdldE9sUHJvamVjdGlvbigpLmdldENvZGUoKSxcclxuICAgICAgc2NhbGU6IHRoaXMubGF5ZXIubWFwLnZpZXdDb250cm9sbGVyLmdldFNjYWxlKCksXHJcbiAgICAgIHNpemU6IHRoaXMubGF5ZXIubWFwLm9sLmdldFNpemUoKVxyXG4gICAgfSBhcyBMZWdlbmRNYXBWaWV3T3B0aW9ucztcclxuICAgIHRoaXMudXBkYXRlTGVnZW5kKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgdGhlIGxlZ2VuZCB3aXRoIHNjYWxlIGxldmVsIGFuZCBzdHlsZSBkZWZpbmVcclxuICAgKi9cclxuICBwcml2YXRlIHVwZGF0ZUxlZ2VuZCgpIHtcclxuICAgIGxldCBsZWdlbmRJdGVtcyA9IHRoaXMubGF5ZXIuZGF0YVNvdXJjZS5nZXRMZWdlbmQoXHJcbiAgICAgIHRoaXMuY3VycmVudFN0eWxlLFxyXG4gICAgICB0aGlzLnZpZXdcclxuICAgICk7XHJcbiAgICBpZiAodGhpcy5sYXllci5sZWdlbmQgJiYgdGhpcy5sYXllci5sZWdlbmQubGVuZ3RoID4gMSkge1xyXG4gICAgICBsZWdlbmRJdGVtcyA9IHRoaXMudHJhbnNmZXJ0VG9nZ2xlTGVnZW5kSXRlbShsZWdlbmRJdGVtcyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmxheWVyLmxlZ2VuZCA9IGxlZ2VuZEl0ZW1zO1xyXG5cclxuICAgIGlmIChsZWdlbmRJdGVtcy5sZW5ndGggPT09IDAgJiYgdGhpcy5sZWdlbmRJdGVtcyQudmFsdWUubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMubGVnZW5kSXRlbXMkLm5leHQobGVnZW5kSXRlbXMpO1xyXG4gICAgZm9yIChjb25zdCBsZWdlbmQgb2YgdGhpcy5sZWdlbmRJdGVtcyQudmFsdWUpIHtcclxuICAgICAgdGhpcy5nZXRMZWdlbmRHcmFwaGljKGxlZ2VuZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxpc3RTdHlsZXMoKSB7XHJcbiAgICBjb25zdCBsYXllck9wdGlvbnMgPSB0aGlzLmxheWVyLm9wdGlvbnM7XHJcbiAgICBpZiAobGF5ZXJPcHRpb25zICYmIGxheWVyT3B0aW9ucy5sZWdlbmRPcHRpb25zKSB7XHJcbiAgICAgIGNvbnN0IHRyYW5zbGF0ZSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZTtcclxuICAgICAgY29uc3QgdGl0bGUgPSB0cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5sYXllci5sZWdlbmQuZGVmYXVsdCcpO1xyXG4gICAgICBsZXQgc3R5bGVzQXZhaWxhYmxlID0gW3sgbmFtZTogJycsIHRpdGxlIH0gYXMgSXRlbVN0eWxlT3B0aW9uc107XHJcbiAgICAgIGlmIChsYXllck9wdGlvbnMubGVnZW5kT3B0aW9ucy5zdHlsZXNBdmFpbGFibGUpIHtcclxuICAgICAgICBzdHlsZXNBdmFpbGFibGUgPSBzdHlsZXNBdmFpbGFibGUuY29uY2F0KFxyXG4gICAgICAgICAgbGF5ZXJPcHRpb25zLmxlZ2VuZE9wdGlvbnMuc3R5bGVzQXZhaWxhYmxlLmZpbHRlcihcclxuICAgICAgICAgICAgKHNBKSA9PlxyXG4gICAgICAgICAgICAgIHNBLm5hbWUubm9ybWFsaXplKCdORkQnKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9naSwgJycpICE9PVxyXG4gICAgICAgICAgICAgICAgJ2RlZmF1bHQnICYmXHJcbiAgICAgICAgICAgICAgc0EubmFtZS5ub3JtYWxpemUoJ05GRCcpLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2dpLCAnJykgIT09XHJcbiAgICAgICAgICAgICAgICAnZGVmYXV0J1xyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgc3R5bGVzQXZhaWxhYmxlXHJcbiAgICAgICAgLmZpbHRlcigoc2EpID0+ICFzYS50aXRsZSlcclxuICAgICAgICAubWFwKChzYSkgPT4gKHNhLnRpdGxlID0gc2EubmFtZSkpO1xyXG4gICAgICBzdHlsZXNBdmFpbGFibGUubWFwKFxyXG4gICAgICAgIChzKSA9PlxyXG4gICAgICAgICAgKHMudGl0bGUgPVxyXG4gICAgICAgICAgICBzLnRpdGxlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICtcclxuICAgICAgICAgICAgcy50aXRsZS5zbGljZSgxKS5yZXBsYWNlKC9fL2csICcgJykpXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiBzdHlsZXNBdmFpbGFibGU7XHJcbiAgICB9XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZVN0eWxlKCkge1xyXG4gICAgdGhpcy51cGRhdGVMZWdlbmQoKTtcclxuICAgIGxldCBTVFlMRVMgPSAnJztcclxuICAgIGlmICh0aGlzLmxheWVyLmRhdGFTb3VyY2UgaW5zdGFuY2VvZiBXTVNEYXRhU291cmNlKSB7XHJcbiAgICAgIHRoaXMubGF5ZXIuZGF0YVNvdXJjZS5vbFxyXG4gICAgICAgIC5nZXRQYXJhbXMoKVxyXG4gICAgICAgIC5MQVlFUlMuc3BsaXQoJywnKVxyXG4gICAgICAgIC5tYXAoKGxheWVyKSA9PiAoU1RZTEVTICs9IHRoaXMuY3VycmVudFN0eWxlICsgJywnKSk7XHJcbiAgICAgIFNUWUxFUyA9IFNUWUxFUy5zbGljZSgwLCAtMSk7XHJcbiAgICAgIHRoaXMubGF5ZXIuZGF0YVNvdXJjZS5vbC51cGRhdGVQYXJhbXMoeyBTVFlMRVMgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkxvYWRJbWFnZShpZDogc3RyaW5nKSB7XHJcbiAgICBsZXQgZWxlbVJlZjogSFRNTEltYWdlRWxlbWVudDtcclxuICAgIGlmICh0aGlzLnJlbmRlcmVkTGVnZW5kcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgZWxlbVJlZiA9IHRoaXMucmVuZGVyZWRMZWdlbmRzLmZpcnN0Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEltYWdlRWxlbWVudDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGVsZW1SZWYgPSB0aGlzLnJlbmRlcmVkTGVnZW5kcy5maW5kKFxyXG4gICAgICAgIChyZW5kZXJlZExlZ2VuZCkgPT4gcmVuZGVyZWRMZWdlbmQubmF0aXZlRWxlbWVudC5pZCA9PT0gaWRcclxuICAgICAgKS5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbWFnZUVsZW1lbnQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLmltYWdlc0hlaWdodFtpZF0gPSBlbGVtUmVmLmhlaWdodDtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImxlZ2VuZEl0ZW1zJCB8IGFzeW5jIGFzIGl0ZW1zXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1zLmxlbmd0aDsgZWxzZSBub0l0ZW1zXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zLnNsaWNlKCkucmV2ZXJzZSgpXCIgI3JlbmRlcmVkTGVnZW5kcz5cclxuICAgICAgPGRpdiAqbmdJZj1cImdldExlZ2VuZDsgZWxzZSBub0l0ZW1zXCI+XHJcbiAgICAgICAgPG1hdC1saXN0LWl0ZW0gKm5nSWY9XCJpdGVtLnRpdGxlXCI+XHJcbiAgICAgICAgICA8bWF0LWljb25cclxuICAgICAgICAgICAgaWQ9XCJsZWdlbmQtdG9nZ2xlXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJpZ28tY2hldnJvblwiXHJcbiAgICAgICAgICAgIG1hdExpc3RJdGVtSWNvblxyXG4gICAgICAgICAgICBpZ29Db2xsYXBzZVxyXG4gICAgICAgICAgICBbdGFyZ2V0XT1cImxlZ2VuZFwiXHJcbiAgICAgICAgICAgIFtjb2xsYXBzZWRdPVwiaXRlbS5jb2xsYXBzZWRcIlxyXG4gICAgICAgICAgICAodG9nZ2xlKT1cInRvZ2dsZUxlZ2VuZEl0ZW0oJGV2ZW50LCBpdGVtKVwiXHJcbiAgICAgICAgICAgIHN2Z0ljb249XCJjaGV2cm9uLXVwXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8c3BhbiBtYXRMaXN0SXRlbVRpdGxlPnt7IGNvbXB1dGVJdGVtVGl0bGUoaXRlbSkgfCBhc3luYyB9fSA8L3NwYW4+XHJcbiAgICAgICAgPC9tYXQtbGlzdC1pdGVtPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICNsZWdlbmRcclxuICAgICAgICAgIGNsYXNzPVwiaWdvLWxheWVyLWxlZ2VuZFwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICd3aXRoLXRpdGxlJzogaXRlbS50aXRsZSB9XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY3VycmVudFN0eWxlICE9PSB1bmRlZmluZWRcIj5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgIDxtYXQtc2VsZWN0XHJcbiAgICAgICAgICAgICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxyXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXHJcbiAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5sYXllci5sZWdlbmQuc2VsZWN0U3R5bGUnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3VycmVudFN0eWxlXCJcclxuICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25DaGFuZ2VTdHlsZSgpXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgc3R5bGUgb2Ygc3R5bGVzXCIgW3ZhbHVlXT1cInN0eWxlLm5hbWVcIj57e1xyXG4gICAgICAgICAgICAgICAgICBzdHlsZS50aXRsZVxyXG4gICAgICAgICAgICAgICAgfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWl0ZW0uY29sbGFwc2VkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLnVybFwiPlxyXG4gICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgIGlnb0ltYWdlRXJyb3JcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5pbWdHcmFwaFZhbHVlXCJcclxuICAgICAgICAgICAgICAgIFtoaWRlRXJyb3JdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAjcmVuZGVyZWRMZWdlbmRcclxuICAgICAgICAgICAgICAgIGlkPVwie3sgaXRlbS50aXRsZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAobG9hZCk9XCJvbkxvYWRJbWFnZShpdGVtLnRpdGxlKVwiXHJcbiAgICAgICAgICAgICAgICBbc3JjXT1cIml0ZW0uaW1nR3JhcGhWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJ7eyAnaWdvLmdlby5sYXllci5sZWdlbmQubG9hZGluZ0xlZ2VuZFRleHQnIHwgdHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxzbWFsbCAqbmdJZj1cImltYWdlc0hlaWdodFtpdGVtLnRpdGxlXSA8IDE2XCI+XHJcbiAgICAgICAgICAgICAgICB7eyAnaWdvLmdlby5sYXllci5sZWdlbmQubm9MZWdlbmRTY2FsZScgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIml0ZW0uc3R5bGVcIlxyXG4gICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiaXRlbS5odG1sIHwgc2FuaXRpemVIdG1sXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uaHRtbFwiXHJcbiAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI25vSXRlbXM+XHJcbiAgICA8c21hbGw+XHJcbiAgICAgIHt7ICdpZ28uZ2VvLmxheWVyLmxlZ2VuZC5ub0xlZ2VuZFRleHQnIHwgdHJhbnNsYXRlIH19XHJcbiAgICA8L3NtYWxsPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
@@ -1,13 +1,15 @@
1
1
  import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import { MatListModule } from '@angular/material/list';
3
+ import { MatTooltipModule } from '@angular/material/tooltip';
2
4
  import { NetworkService } from '@igo2/core';
3
5
  import { BehaviorSubject } from 'rxjs';
6
+ import { LayerLegendComponent } from '../layer-legend/layer-legend.component';
4
7
  import { Layer } from '../shared/layers/layer';
5
8
  import { TooltipType } from '../shared/layers/layer.interface';
6
9
  import * as i0 from "@angular/core";
7
10
  import * as i1 from "@igo2/core";
8
- import * as i2 from "@angular/material/tooltip";
9
- import * as i3 from "@angular/material/list";
10
- import * as i4 from "../layer-legend/layer-legend.component";
11
+ import * as i2 from "@angular/material/list";
12
+ import * as i3 from "@angular/material/tooltip";
11
13
  export class LayerLegendItemComponent {
12
14
  networkService;
13
15
  inResolutionRange$ = new BehaviorSubject(true);
@@ -69,15 +71,15 @@ export class LayerLegendItemComponent {
69
71
  const inResolutionRange = this.layer.isInResolutionsRange;
70
72
  this.inResolutionRange$.next(inResolutionRange);
71
73
  }
72
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LayerLegendItemComponent, deps: [{ token: i1.NetworkService }], target: i0.ɵɵFactoryTarget.Component });
73
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LayerLegendItemComponent, selector: "igo-layer-legend-item", inputs: { layer: "layer", updateLegendOnResolutionChange: "updateLegendOnResolutionChange" }, ngImport: i0, template: "<mat-list-item class=\"igo-layer-list-item\">\r\n <span\r\n matListItemTitle\r\n class=\"igo-layer-title\"\r\n [matTooltip]=\"tooltipText\"\r\n matTooltipShowDelay=\"500\"\r\n >{{ layer.title }}</span\r\n >\r\n</mat-list-item>\r\n\r\n<div #legend class=\"igo-layer-legend-container\">\r\n <igo-layer-legend\r\n [layer]=\"layer\"\r\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\r\n >\r\n </igo-layer-legend>\r\n</div>\r\n", styles: [":host{overflow:hidden}:host .igo-layer-list-item{height:48px;clear:both}:host .igo-layer-legend-container{padding-left:18px;width:calc(100% - 18px)}\n"], dependencies: [{ kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i3.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "component", type: i4.LayerLegendComponent, selector: "igo-layer-legend", inputs: ["updateLegendOnResolutionChange", "layer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
74
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: LayerLegendItemComponent, deps: [{ token: i1.NetworkService }], target: i0.ɵɵFactoryTarget.Component });
75
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: LayerLegendItemComponent, isStandalone: true, selector: "igo-layer-legend-item", inputs: { layer: "layer", updateLegendOnResolutionChange: "updateLegendOnResolutionChange" }, ngImport: i0, template: "<mat-list-item class=\"igo-layer-list-item\">\n <span\n matListItemTitle\n class=\"igo-layer-title\"\n [matTooltip]=\"tooltipText\"\n matTooltipShowDelay=\"500\"\n >{{ layer.title }}</span\n >\n</mat-list-item>\n\n<div #legend class=\"igo-layer-legend-container\">\n <igo-layer-legend\n [layer]=\"layer\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\n >\n </igo-layer-legend>\n</div>\n", styles: [":host{overflow:hidden}:host .igo-layer-list-item{height:48px;clear:both}:host .igo-layer-legend-container{padding-left:18px;width:calc(100% - 18px)}\n"], dependencies: [{ kind: "ngmodule", type: MatListModule }, { kind: "component", type: i2.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i2.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: LayerLegendComponent, selector: "igo-layer-legend", inputs: ["updateLegendOnResolutionChange", "layer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
74
76
  }
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LayerLegendItemComponent, decorators: [{
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: LayerLegendItemComponent, decorators: [{
76
78
  type: Component,
77
- args: [{ selector: 'igo-layer-legend-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list-item class=\"igo-layer-list-item\">\r\n <span\r\n matListItemTitle\r\n class=\"igo-layer-title\"\r\n [matTooltip]=\"tooltipText\"\r\n matTooltipShowDelay=\"500\"\r\n >{{ layer.title }}</span\r\n >\r\n</mat-list-item>\r\n\r\n<div #legend class=\"igo-layer-legend-container\">\r\n <igo-layer-legend\r\n [layer]=\"layer\"\r\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\r\n >\r\n </igo-layer-legend>\r\n</div>\r\n", styles: [":host{overflow:hidden}:host .igo-layer-list-item{height:48px;clear:both}:host .igo-layer-legend-container{padding-left:18px;width:calc(100% - 18px)}\n"] }]
78
- }], ctorParameters: function () { return [{ type: i1.NetworkService }]; }, propDecorators: { layer: [{
79
+ args: [{ selector: 'igo-layer-legend-item', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatListModule, MatTooltipModule, LayerLegendComponent], template: "<mat-list-item class=\"igo-layer-list-item\">\n <span\n matListItemTitle\n class=\"igo-layer-title\"\n [matTooltip]=\"tooltipText\"\n matTooltipShowDelay=\"500\"\n >{{ layer.title }}</span\n >\n</mat-list-item>\n\n<div #legend class=\"igo-layer-legend-container\">\n <igo-layer-legend\n [layer]=\"layer\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\n >\n </igo-layer-legend>\n</div>\n", styles: [":host{overflow:hidden}:host .igo-layer-list-item{height:48px;clear:both}:host .igo-layer-legend-container{padding-left:18px;width:calc(100% - 18px)}\n"] }]
80
+ }], ctorParameters: () => [{ type: i1.NetworkService }], propDecorators: { layer: [{
79
81
  type: Input
80
82
  }], updateLegendOnResolutionChange: [{
81
83
  type: Input
82
84
  }] } });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItbGVnZW5kLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbGF5ZXIvbGF5ZXItbGVnZW5kLWl0ZW0vbGF5ZXItbGVnZW5kLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbGF5ZXIvbGF5ZXItbGVnZW5kLWl0ZW0vbGF5ZXItbGVnZW5kLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUdOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBbUIsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTdELE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBR3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQVEvRCxNQUFNLE9BQU8sd0JBQXdCO0lBY2Y7SUFicEIsa0JBQWtCLEdBQTZCLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXpFLFdBQVcsQ0FBUztJQUVwQixLQUFLLENBQWtCO0lBRWYsWUFBWSxDQUFlO0lBQzNCLFNBQVMsQ0FBZTtJQUV2QixLQUFLLENBQVE7SUFFYiw4QkFBOEIsR0FBWSxLQUFLLENBQUM7SUFFekQsWUFBb0IsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBQUcsQ0FBQztJQUV0RCxRQUFRO1FBQ04sTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQztRQUM5RCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzdDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFekMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYzthQUNqQyxZQUFZLEVBQUU7YUFDZCxTQUFTLENBQUMsQ0FBQyxLQUFzQixFQUFFLEVBQUU7WUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbkIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsY0FBYztRQUNaLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7U0FDekI7UUFDRCxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDO1FBQzFDLE1BQU0sYUFBYSxHQUFJLFlBQXFDLENBQUMsUUFBUSxDQUFDO1FBQ3RFLFFBQVEsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDakMsS0FBSyxXQUFXLENBQUMsS0FBSztnQkFDcEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUMxQixLQUFLLFdBQVcsQ0FBQyxRQUFRO2dCQUN2QixJQUFJLGFBQWEsSUFBSSxhQUFhLENBQUMsUUFBUSxFQUFFO29CQUMzQyxPQUFPLGFBQWEsQ0FBQyxRQUFRLENBQUM7aUJBQy9CO3FCQUFNO29CQUNMLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7aUJBQ3pCO1lBQ0gsS0FBSyxXQUFXLENBQUMsTUFBTTtnQkFDckIsSUFBSSxZQUFZLElBQUksWUFBWSxDQUFDLElBQUksRUFBRTtvQkFDckMsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDO2lCQUMxQjtxQkFBTTtvQkFDTCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO2lCQUN6QjtZQUNIO2dCQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQztRQUMxRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDbEQsQ0FBQzt3R0FsRVUsd0JBQXdCOzRGQUF4Qix3QkFBd0IsMkpDdEJyQyx3ZEFpQkE7OzRGREthLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSx1QkFBdUIsbUJBR2hCLHVCQUF1QixDQUFDLE1BQU07cUdBWXRDLEtBQUs7c0JBQWIsS0FBSztnQkFFRyw4QkFBOEI7c0JBQXRDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBDb25uZWN0aW9uU3RhdGUsIE5ldHdvcmtTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgTWV0YWRhdGFMYXllck9wdGlvbnMgfSBmcm9tICcuLi8uLi9tZXRhZGF0YS9zaGFyZWQvbWV0YWRhdGEuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi9zaGFyZWQvbGF5ZXJzL2xheWVyJztcclxuaW1wb3J0IHsgVG9vbHRpcFR5cGUgfSBmcm9tICcuLi9zaGFyZWQvbGF5ZXJzL2xheWVyLmludGVyZmFjZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lnby1sYXllci1sZWdlbmQtaXRlbScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xheWVyLWxlZ2VuZC1pdGVtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9sYXllci1sZWdlbmQtaXRlbS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMYXllckxlZ2VuZEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgaW5SZXNvbHV0aW9uUmFuZ2UkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xyXG5cclxuICB0b29sdGlwVGV4dDogc3RyaW5nO1xyXG5cclxuICBzdGF0ZTogQ29ubmVjdGlvblN0YXRlO1xyXG5cclxuICBwcml2YXRlIHJlc29sdXRpb24kJDogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgbmV0d29yayQkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIEBJbnB1dCgpIGxheWVyOiBMYXllcjtcclxuXHJcbiAgQElucHV0KCkgdXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmV0d29ya1NlcnZpY2U6IE5ldHdvcmtTZXJ2aWNlKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGNvbnN0IHJlc29sdXRpb24kID0gdGhpcy5sYXllci5tYXAudmlld0NvbnRyb2xsZXIucmVzb2x1dGlvbiQ7XHJcbiAgICB0aGlzLnJlc29sdXRpb24kJCA9IHJlc29sdXRpb24kLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMub25SZXNvbHV0aW9uQ2hhbmdlKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMudG9vbHRpcFRleHQgPSB0aGlzLmNvbXB1dGVUb29sdGlwKCk7XHJcblxyXG4gICAgdGhpcy5uZXR3b3JrJCQgPSB0aGlzLm5ldHdvcmtTZXJ2aWNlXHJcbiAgICAgIC5jdXJyZW50U3RhdGUoKVxyXG4gICAgICAuc3Vic2NyaWJlKChzdGF0ZTogQ29ubmVjdGlvblN0YXRlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xyXG4gICAgICAgIHRoaXMub25SZXNvbHV0aW9uQ2hhbmdlKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnJlc29sdXRpb24kJC51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5uZXR3b3JrJCQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIGNvbXB1dGVUb29sdGlwKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBsYXllck9wdGlvbnMgPSB0aGlzLmxheWVyLm9wdGlvbnM7XHJcbiAgICBpZiAoIWxheWVyT3B0aW9ucy50b29sdGlwKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxheWVyLnRpdGxlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgbGF5ZXJUb29sdGlwID0gbGF5ZXJPcHRpb25zLnRvb2x0aXA7XHJcbiAgICBjb25zdCBsYXllck1ldGFkYXRhID0gKGxheWVyT3B0aW9ucyBhcyBNZXRhZGF0YUxheWVyT3B0aW9ucykubWV0YWRhdGE7XHJcbiAgICBzd2l0Y2ggKGxheWVyT3B0aW9ucy50b29sdGlwLnR5cGUpIHtcclxuICAgICAgY2FzZSBUb29sdGlwVHlwZS5USVRMRTpcclxuICAgICAgICByZXR1cm4gdGhpcy5sYXllci50aXRsZTtcclxuICAgICAgY2FzZSBUb29sdGlwVHlwZS5BQlNUUkFDVDpcclxuICAgICAgICBpZiAobGF5ZXJNZXRhZGF0YSAmJiBsYXllck1ldGFkYXRhLmFic3RyYWN0KSB7XHJcbiAgICAgICAgICByZXR1cm4gbGF5ZXJNZXRhZGF0YS5hYnN0cmFjdDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMubGF5ZXIudGl0bGU7XHJcbiAgICAgICAgfVxyXG4gICAgICBjYXNlIFRvb2x0aXBUeXBlLkNVU1RPTTpcclxuICAgICAgICBpZiAobGF5ZXJUb29sdGlwICYmIGxheWVyVG9vbHRpcC50ZXh0KSB7XHJcbiAgICAgICAgICByZXR1cm4gbGF5ZXJUb29sdGlwLnRleHQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmxheWVyLnRpdGxlO1xyXG4gICAgICAgIH1cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gdGhpcy5sYXllci50aXRsZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25SZXNvbHV0aW9uQ2hhbmdlKCkge1xyXG4gICAgY29uc3QgaW5SZXNvbHV0aW9uUmFuZ2UgPSB0aGlzLmxheWVyLmlzSW5SZXNvbHV0aW9uc1JhbmdlO1xyXG4gICAgdGhpcy5pblJlc29sdXRpb25SYW5nZSQubmV4dChpblJlc29sdXRpb25SYW5nZSk7XHJcbiAgfVxyXG59XHJcbiIsIjxtYXQtbGlzdC1pdGVtIGNsYXNzPVwiaWdvLWxheWVyLWxpc3QtaXRlbVwiPlxyXG4gIDxzcGFuXHJcbiAgICBtYXRMaXN0SXRlbVRpdGxlXHJcbiAgICBjbGFzcz1cImlnby1sYXllci10aXRsZVwiXHJcbiAgICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwVGV4dFwiXHJcbiAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcclxuICAgID57eyBsYXllci50aXRsZSB9fTwvc3BhblxyXG4gID5cclxuPC9tYXQtbGlzdC1pdGVtPlxyXG5cclxuPGRpdiAjbGVnZW5kIGNsYXNzPVwiaWdvLWxheWVyLWxlZ2VuZC1jb250YWluZXJcIj5cclxuICA8aWdvLWxheWVyLWxlZ2VuZFxyXG4gICAgW2xheWVyXT1cImxheWVyXCJcclxuICAgIFt1cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2VdPVwidXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlXCJcclxuICA+XHJcbiAgPC9pZ28tbGF5ZXItbGVnZW5kPlxyXG48L2Rpdj5cclxuIl19
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItbGVnZW5kLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbGF5ZXIvbGF5ZXItbGVnZW5kLWl0ZW0vbGF5ZXItbGVnZW5kLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbGF5ZXIvbGF5ZXItbGVnZW5kLWl0ZW0vbGF5ZXItbGVnZW5kLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUdOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RCxPQUFPLEVBQW1CLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUU3RCxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUdyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7OztBQVUvRCxNQUFNLE9BQU8sd0JBQXdCO0lBY2Y7SUFicEIsa0JBQWtCLEdBQTZCLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXpFLFdBQVcsQ0FBUztJQUVwQixLQUFLLENBQWtCO0lBRWYsWUFBWSxDQUFlO0lBQzNCLFNBQVMsQ0FBZTtJQUV2QixLQUFLLENBQVE7SUFFYiw4QkFBOEIsR0FBWSxLQUFLLENBQUM7SUFFekQsWUFBb0IsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBQUcsQ0FBQztJQUV0RCxRQUFRO1FBQ04sTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQztRQUM5RCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzdDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFekMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYzthQUNqQyxZQUFZLEVBQUU7YUFDZCxTQUFTLENBQUMsQ0FBQyxLQUFzQixFQUFFLEVBQUU7WUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbkIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsY0FBYztRQUNaLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUMxQixDQUFDO1FBQ0QsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQztRQUMxQyxNQUFNLGFBQWEsR0FBSSxZQUFxQyxDQUFDLFFBQVEsQ0FBQztRQUN0RSxRQUFRLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEMsS0FBSyxXQUFXLENBQUMsS0FBSztnQkFDcEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUMxQixLQUFLLFdBQVcsQ0FBQyxRQUFRO2dCQUN2QixJQUFJLGFBQWEsSUFBSSxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQzVDLE9BQU8sYUFBYSxDQUFDLFFBQVEsQ0FBQztnQkFDaEMsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQzFCLENBQUM7WUFDSCxLQUFLLFdBQVcsQ0FBQyxNQUFNO2dCQUNyQixJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ3RDLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDM0IsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQzFCLENBQUM7WUFDSDtnQkFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQztRQUMxRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDbEQsQ0FBQzt1R0FsRVUsd0JBQXdCOzJGQUF4Qix3QkFBd0IsK0tDM0JyQyxzYkFpQkEsK01EUVksYUFBYSxtUkFBRSxnQkFBZ0IsNlRBQUUsb0JBQW9COzsyRkFFcEQsd0JBQXdCO2tCQVJwQyxTQUFTOytCQUNFLHVCQUF1QixtQkFHaEIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLENBQUM7bUZBWXZELEtBQUs7c0JBQWIsS0FBSztnQkFFRyw4QkFBOEI7c0JBQXRDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdExpc3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5cclxuaW1wb3J0IHsgQ29ubmVjdGlvblN0YXRlLCBOZXR3b3JrU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IE1ldGFkYXRhTGF5ZXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vbWV0YWRhdGEvc2hhcmVkL21ldGFkYXRhLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IExheWVyTGVnZW5kQ29tcG9uZW50IH0gZnJvbSAnLi4vbGF5ZXItbGVnZW5kL2xheWVyLWxlZ2VuZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMYXllciB9IGZyb20gJy4uL3NoYXJlZC9sYXllcnMvbGF5ZXInO1xyXG5pbXBvcnQgeyBUb29sdGlwVHlwZSB9IGZyb20gJy4uL3NoYXJlZC9sYXllcnMvbGF5ZXIuaW50ZXJmYWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWdvLWxheWVyLWxlZ2VuZC1pdGVtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbGF5ZXItbGVnZW5kLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2xheWVyLWxlZ2VuZC1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbTWF0TGlzdE1vZHVsZSwgTWF0VG9vbHRpcE1vZHVsZSwgTGF5ZXJMZWdlbmRDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMYXllckxlZ2VuZEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgaW5SZXNvbHV0aW9uUmFuZ2UkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xyXG5cclxuICB0b29sdGlwVGV4dDogc3RyaW5nO1xyXG5cclxuICBzdGF0ZTogQ29ubmVjdGlvblN0YXRlO1xyXG5cclxuICBwcml2YXRlIHJlc29sdXRpb24kJDogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgbmV0d29yayQkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIEBJbnB1dCgpIGxheWVyOiBMYXllcjtcclxuXHJcbiAgQElucHV0KCkgdXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmV0d29ya1NlcnZpY2U6IE5ldHdvcmtTZXJ2aWNlKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGNvbnN0IHJlc29sdXRpb24kID0gdGhpcy5sYXllci5tYXAudmlld0NvbnRyb2xsZXIucmVzb2x1dGlvbiQ7XHJcbiAgICB0aGlzLnJlc29sdXRpb24kJCA9IHJlc29sdXRpb24kLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMub25SZXNvbHV0aW9uQ2hhbmdlKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMudG9vbHRpcFRleHQgPSB0aGlzLmNvbXB1dGVUb29sdGlwKCk7XHJcblxyXG4gICAgdGhpcy5uZXR3b3JrJCQgPSB0aGlzLm5ldHdvcmtTZXJ2aWNlXHJcbiAgICAgIC5jdXJyZW50U3RhdGUoKVxyXG4gICAgICAuc3Vic2NyaWJlKChzdGF0ZTogQ29ubmVjdGlvblN0YXRlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xyXG4gICAgICAgIHRoaXMub25SZXNvbHV0aW9uQ2hhbmdlKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnJlc29sdXRpb24kJC51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5uZXR3b3JrJCQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIGNvbXB1dGVUb29sdGlwKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBsYXllck9wdGlvbnMgPSB0aGlzLmxheWVyLm9wdGlvbnM7XHJcbiAgICBpZiAoIWxheWVyT3B0aW9ucy50b29sdGlwKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxheWVyLnRpdGxlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgbGF5ZXJUb29sdGlwID0gbGF5ZXJPcHRpb25zLnRvb2x0aXA7XHJcbiAgICBjb25zdCBsYXllck1ldGFkYXRhID0gKGxheWVyT3B0aW9ucyBhcyBNZXRhZGF0YUxheWVyT3B0aW9ucykubWV0YWRhdGE7XHJcbiAgICBzd2l0Y2ggKGxheWVyT3B0aW9ucy50b29sdGlwLnR5cGUpIHtcclxuICAgICAgY2FzZSBUb29sdGlwVHlwZS5USVRMRTpcclxuICAgICAgICByZXR1cm4gdGhpcy5sYXllci50aXRsZTtcclxuICAgICAgY2FzZSBUb29sdGlwVHlwZS5BQlNUUkFDVDpcclxuICAgICAgICBpZiAobGF5ZXJNZXRhZGF0YSAmJiBsYXllck1ldGFkYXRhLmFic3RyYWN0KSB7XHJcbiAgICAgICAgICByZXR1cm4gbGF5ZXJNZXRhZGF0YS5hYnN0cmFjdDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMubGF5ZXIudGl0bGU7XHJcbiAgICAgICAgfVxyXG4gICAgICBjYXNlIFRvb2x0aXBUeXBlLkNVU1RPTTpcclxuICAgICAgICBpZiAobGF5ZXJUb29sdGlwICYmIGxheWVyVG9vbHRpcC50ZXh0KSB7XHJcbiAgICAgICAgICByZXR1cm4gbGF5ZXJUb29sdGlwLnRleHQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmxheWVyLnRpdGxlO1xyXG4gICAgICAgIH1cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gdGhpcy5sYXllci50aXRsZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25SZXNvbHV0aW9uQ2hhbmdlKCkge1xyXG4gICAgY29uc3QgaW5SZXNvbHV0aW9uUmFuZ2UgPSB0aGlzLmxheWVyLmlzSW5SZXNvbHV0aW9uc1JhbmdlO1xyXG4gICAgdGhpcy5pblJlc29sdXRpb25SYW5nZSQubmV4dChpblJlc29sdXRpb25SYW5nZSk7XHJcbiAgfVxyXG59XHJcbiIsIjxtYXQtbGlzdC1pdGVtIGNsYXNzPVwiaWdvLWxheWVyLWxpc3QtaXRlbVwiPlxuICA8c3BhblxuICAgIG1hdExpc3RJdGVtVGl0bGVcbiAgICBjbGFzcz1cImlnby1sYXllci10aXRsZVwiXG4gICAgW21hdFRvb2x0aXBdPVwidG9vbHRpcFRleHRcIlxuICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgID57eyBsYXllci50aXRsZSB9fTwvc3BhblxuICA+XG48L21hdC1saXN0LWl0ZW0+XG5cbjxkaXYgI2xlZ2VuZCBjbGFzcz1cImlnby1sYXllci1sZWdlbmQtY29udGFpbmVyXCI+XG4gIDxpZ28tbGF5ZXItbGVnZW5kXG4gICAgW2xheWVyXT1cImxheWVyXCJcbiAgICBbdXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlXT1cInVwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZVwiXG4gID5cbiAgPC9pZ28tbGF5ZXItbGVnZW5kPlxuPC9kaXY+XG4iXX0=
@@ -40,15 +40,16 @@ export class LayerLegendListBindingDirective {
40
40
  this.layersVisibility$$ = undefined;
41
41
  }
42
42
  }
43
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LayerLegendListBindingDirective, deps: [{ token: i1.LayerLegendListComponent, self: true }, { token: i2.MapService }], target: i0.ɵɵFactoryTarget.Directive });
44
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: LayerLegendListBindingDirective, selector: "[igoLayerLegendListBinding]", ngImport: i0 });
43
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: LayerLegendListBindingDirective, deps: [{ token: i1.LayerLegendListComponent, self: true }, { token: i2.MapService }], target: i0.ɵɵFactoryTarget.Directive });
44
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.1", type: LayerLegendListBindingDirective, isStandalone: true, selector: "[igoLayerLegendListBinding]", ngImport: i0 });
45
45
  }
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LayerLegendListBindingDirective, decorators: [{
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: LayerLegendListBindingDirective, decorators: [{
47
47
  type: Directive,
48
48
  args: [{
49
- selector: '[igoLayerLegendListBinding]'
49
+ selector: '[igoLayerLegendListBinding]',
50
+ standalone: true
50
51
  }]
51
- }], ctorParameters: function () { return [{ type: i1.LayerLegendListComponent, decorators: [{
52
+ }], ctorParameters: () => [{ type: i1.LayerLegendListComponent, decorators: [{
52
53
  type: Self
53
- }] }, { type: i2.MapService }]; } });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItbGVnZW5kLWxpc3QtYmluZGluZy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9sYXllci9sYXllci1sZWdlbmQtbGlzdC9sYXllci1sZWdlbmQtbGlzdC1iaW5kaW5nLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkUsT0FBTyxFQUFnQixhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7OztBQUt6RSxNQUFNLE9BQU8sK0JBQStCO0lBT2hDO0lBTkYsU0FBUyxDQUEyQjtJQUNwQywwQkFBMEIsQ0FBZTtJQUNqRCxrQkFBa0IsQ0FBZTtJQUVqQyxZQUNVLFNBQW1DLEVBQ25DLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFFOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVELFFBQVE7UUFDTix3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQywwQkFBMEIsR0FBRyxhQUFhLENBQUM7WUFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPO1lBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsY0FBYyxDQUFDLFdBQVc7U0FDcEQsQ0FBQzthQUNDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDdEIsU0FBUyxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFO1lBQ3RDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFZLEVBQUUsRUFBRTtnQkFDbkQsT0FBTyxLQUFLLENBQUMsZUFBZSxLQUFLLElBQUksQ0FBQztZQUN4QyxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQztZQUVwQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsYUFBYSxDQUNyQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBWSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQ2xELENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQywwQkFBMEIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM5QyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxTQUFTLEVBQUU7WUFDekMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUM7U0FDckM7SUFDSCxDQUFDO3dHQXhDVSwrQkFBK0I7NEZBQS9CLCtCQUErQjs7NEZBQS9CLCtCQUErQjtrQkFIM0MsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNkJBQTZCO2lCQUN4Qzs7MEJBT0ksSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgT25EZXN0cm95LCBPbkluaXQsIFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBNYXBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9tYXAuc2VydmljZSc7XHJcbmltcG9ydCB7IExheWVyIH0gZnJvbSAnLi4vc2hhcmVkL2xheWVycy9sYXllcic7XHJcbmltcG9ydCB7IExheWVyTGVnZW5kTGlzdENvbXBvbmVudCB9IGZyb20gJy4vbGF5ZXItbGVnZW5kLWxpc3QuY29tcG9uZW50JztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2lnb0xheWVyTGVnZW5kTGlzdEJpbmRpbmddJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTGF5ZXJMZWdlbmRMaXN0QmluZGluZ0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIGNvbXBvbmVudDogTGF5ZXJMZWdlbmRMaXN0Q29tcG9uZW50O1xyXG4gIHByaXZhdGUgbGF5ZXJzT3JSZXNvbHV0aW9uQ2hhbmdlJCQ6IFN1YnNjcmlwdGlvbjtcclxuICBsYXllcnNWaXNpYmlsaXR5JCQ6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBAU2VsZigpIGNvbXBvbmVudDogTGF5ZXJMZWdlbmRMaXN0Q29tcG9uZW50LFxyXG4gICAgcHJpdmF0ZSBtYXBTZXJ2aWNlOiBNYXBTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgLy8gT3ZlcnJpZGUgaW5wdXQgbGF5ZXJzXHJcbiAgICB0aGlzLmNvbXBvbmVudC5sYXllcnMgPSBbXTtcclxuICAgIHRoaXMubGF5ZXJzT3JSZXNvbHV0aW9uQ2hhbmdlJCQgPSBjb21iaW5lTGF0ZXN0KFtcclxuICAgICAgdGhpcy5tYXBTZXJ2aWNlLmdldE1hcCgpLmxheWVycyQsXHJcbiAgICAgIHRoaXMubWFwU2VydmljZS5nZXRNYXAoKS52aWV3Q29udHJvbGxlci5yZXNvbHV0aW9uJFxyXG4gICAgXSlcclxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwKSlcclxuICAgICAgLnN1YnNjcmliZSgoYnVuY2g6IFtMYXllcltdLCBudW1iZXJdKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc2hvd25MYXllcnMgPSBidW5jaFswXS5maWx0ZXIoKGxheWVyOiBMYXllcikgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGxheWVyLnNob3dJbkxheWVyTGlzdCA9PT0gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudC5sYXllcnMgPSBzaG93bkxheWVycztcclxuXHJcbiAgICAgICAgdGhpcy5sYXllcnNWaXNpYmlsaXR5JCQgPSBjb21iaW5lTGF0ZXN0KFxyXG4gICAgICAgICAgc2hvd25MYXllcnMubWFwKChsYXllcjogTGF5ZXIpID0+IGxheWVyLnZpc2libGUkKVxyXG4gICAgICAgICkuc3Vic2NyaWJlKChyKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudC5jaGFuZ2UkLm5leHQoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMubGF5ZXJzT3JSZXNvbHV0aW9uQ2hhbmdlJCQudW5zdWJzY3JpYmUoKTtcclxuICAgIGlmICh0aGlzLmxheWVyc1Zpc2liaWxpdHkkJCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMubGF5ZXJzVmlzaWJpbGl0eSQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIHRoaXMubGF5ZXJzVmlzaWJpbGl0eSQkID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
54
+ }] }, { type: i2.MapService }] });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItbGVnZW5kLWxpc3QtYmluZGluZy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9sYXllci9sYXllci1sZWdlbmQtbGlzdC9sYXllci1sZWdlbmQtbGlzdC1iaW5kaW5nLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkUsT0FBTyxFQUFnQixhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7OztBQU16RSxNQUFNLE9BQU8sK0JBQStCO0lBT2hDO0lBTkYsU0FBUyxDQUEyQjtJQUNwQywwQkFBMEIsQ0FBZTtJQUNqRCxrQkFBa0IsQ0FBZTtJQUVqQyxZQUNVLFNBQW1DLEVBQ25DLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFFOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVELFFBQVE7UUFDTix3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQywwQkFBMEIsR0FBRyxhQUFhLENBQUM7WUFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPO1lBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsY0FBYyxDQUFDLFdBQVc7U0FDcEQsQ0FBQzthQUNDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDdEIsU0FBUyxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFO1lBQ3RDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFZLEVBQUUsRUFBRTtnQkFDbkQsT0FBTyxLQUFLLENBQUMsZUFBZSxLQUFLLElBQUksQ0FBQztZQUN4QyxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQztZQUVwQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsYUFBYSxDQUNyQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBWSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQ2xELENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQywwQkFBMEIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM5QyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQzt1R0F4Q1UsK0JBQStCOzJGQUEvQiwrQkFBK0I7OzJGQUEvQiwrQkFBK0I7a0JBSjNDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDZCQUE2QjtvQkFDdkMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzswQkFPSSxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkRlc3Ryb3ksIE9uSW5pdCwgU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IE1hcFNlcnZpY2UgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi9zaGFyZWQvbGF5ZXJzL2xheWVyJztcclxuaW1wb3J0IHsgTGF5ZXJMZWdlbmRMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9sYXllci1sZWdlbmQtbGlzdC5jb21wb25lbnQnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbaWdvTGF5ZXJMZWdlbmRMaXN0QmluZGluZ10nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIExheWVyTGVnZW5kTGlzdEJpbmRpbmdEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBjb21wb25lbnQ6IExheWVyTGVnZW5kTGlzdENvbXBvbmVudDtcclxuICBwcml2YXRlIGxheWVyc09yUmVzb2x1dGlvbkNoYW5nZSQkOiBTdWJzY3JpcHRpb247XHJcbiAgbGF5ZXJzVmlzaWJpbGl0eSQkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQFNlbGYoKSBjb21wb25lbnQ6IExheWVyTGVnZW5kTGlzdENvbXBvbmVudCxcclxuICAgIHByaXZhdGUgbWFwU2VydmljZTogTWFwU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vIE92ZXJyaWRlIGlucHV0IGxheWVyc1xyXG4gICAgdGhpcy5jb21wb25lbnQubGF5ZXJzID0gW107XHJcbiAgICB0aGlzLmxheWVyc09yUmVzb2x1dGlvbkNoYW5nZSQkID0gY29tYmluZUxhdGVzdChbXHJcbiAgICAgIHRoaXMubWFwU2VydmljZS5nZXRNYXAoKS5sYXllcnMkLFxyXG4gICAgICB0aGlzLm1hcFNlcnZpY2UuZ2V0TWFwKCkudmlld0NvbnRyb2xsZXIucmVzb2x1dGlvbiRcclxuICAgIF0pXHJcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGJ1bmNoOiBbTGF5ZXJbXSwgbnVtYmVyXSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHNob3duTGF5ZXJzID0gYnVuY2hbMF0uZmlsdGVyKChsYXllcjogTGF5ZXIpID0+IHtcclxuICAgICAgICAgIHJldHVybiBsYXllci5zaG93SW5MYXllckxpc3QgPT09IHRydWU7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jb21wb25lbnQubGF5ZXJzID0gc2hvd25MYXllcnM7XHJcblxyXG4gICAgICAgIHRoaXMubGF5ZXJzVmlzaWJpbGl0eSQkID0gY29tYmluZUxhdGVzdChcclxuICAgICAgICAgIHNob3duTGF5ZXJzLm1hcCgobGF5ZXI6IExheWVyKSA9PiBsYXllci52aXNpYmxlJClcclxuICAgICAgICApLnN1YnNjcmliZSgocikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb21wb25lbnQuY2hhbmdlJC5uZXh0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmxheWVyc09yUmVzb2x1dGlvbkNoYW5nZSQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICBpZiAodGhpcy5sYXllcnNWaXNpYmlsaXR5JCQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmxheWVyc1Zpc2liaWxpdHkkJC51bnN1YnNjcmliZSgpO1xyXG4gICAgICB0aGlzLmxheWVyc1Zpc2liaWxpdHkkJCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -1,14 +1,18 @@
1
+ import { AsyncPipe, NgFor, NgIf } from '@angular/common';
1
2
  import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
3
+ import { MatDividerModule } from '@angular/material/divider';
4
+ import { MatSlideToggleModule } from '@angular/material/slide-toggle';
5
+ import { MatTooltipModule } from '@angular/material/tooltip';
6
+ import { ListComponent, ListItemDirective } from '@igo2/common';
7
+ import { TranslateModule } from '@ngx-translate/core';
2
8
  import { BehaviorSubject, EMPTY, ReplaySubject, timer } from 'rxjs';
3
9
  import { debounce } from 'rxjs/operators';
10
+ import { LayerLegendItemComponent } from '../layer-legend-item/layer-legend-item.component';
4
11
  import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- import * as i2 from "@angular/material/divider";
7
- import * as i3 from "@angular/material/slide-toggle";
8
- import * as i4 from "@angular/material/tooltip";
9
- import * as i5 from "@igo2/common";
10
- import * as i6 from "../layer-legend-item/layer-legend-item.component";
11
- import * as i7 from "@ngx-translate/core";
12
+ import * as i1 from "@angular/material/slide-toggle";
13
+ import * as i2 from "@angular/material/tooltip";
14
+ import * as i3 from "@angular/material/divider";
15
+ import * as i4 from "@ngx-translate/core";
12
16
  export class LayerLegendListComponent {
13
17
  orderable = true;
14
18
  hasVisibleOrInRangeLayers$ = new BehaviorSubject(true);
@@ -75,13 +79,24 @@ export class LayerLegendListComponent {
75
79
  this.next();
76
80
  this.allLegendsShown.emit(toggle);
77
81
  }
78
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LayerLegendListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
79
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LayerLegendListComponent, selector: "igo-layer-legend-list", inputs: { layers: "layers", excludeBaseLayers: "excludeBaseLayers", updateLegendOnResolutionChange: "updateLegendOnResolutionChange", allowShowAllLegends: "allowShowAllLegends", showAllLegendsValue: "showAllLegendsValue" }, outputs: { allLegendsShown: "allLegendsShown" }, ngImport: i0, template: "<div class=\"layer-legend-list-container\">\r\n <mat-slide-toggle\r\n tooltip-position=\"above\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.layer.legend.showAll' | translate\"\r\n [checked]=\"showAllLegendsValue\"\r\n class=\"mat-typography\"\r\n *ngIf=\"(layersInUi$ | async).length && allowShowAllLegends\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"toggleShowAllLegends($event.checked)\"\r\n >\r\n {{ 'igo.geo.layer.legend.showAll' | translate }}\r\n </mat-slide-toggle>\r\n <mat-divider\r\n *ngIf=\"(layersInUi$ | async).length && allowShowAllLegends\"\r\n ></mat-divider>\r\n <igo-list [navigation]=\"false\" [selection]=\"false\">\r\n <ng-template ngFor let-layer let-i=\"index\" [ngForOf]=\"layers$ | async\">\r\n <igo-layer-legend-item\r\n *ngIf=\"!(excludeBaseLayers && layer.baseLayer)\"\r\n igoListItem\r\n [layer]=\"layer\"\r\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\r\n >\r\n </igo-layer-legend-item>\r\n </ng-template>\r\n </igo-list>\r\n <p\r\n class=\"layers-empty mat-typography\"\r\n *ngIf=\"\r\n !showAllLegendsValue &&\r\n (layersInUi$ | async).length &&\r\n (hasVisibleOrInRangeLayers$ | async) === false &&\r\n (hasVisibleAndNotInRangeLayers$ | async) === false &&\r\n allowShowAllLegends\r\n \"\r\n >\r\n {{ 'igo.geo.layer.legend.noLayersVisibleWithShowAllButton' | translate }}\r\n </p>\r\n <p\r\n class=\"layers-empty mat-typography\"\r\n *ngIf=\"\r\n !showAllLegendsValue &&\r\n (layersInUi$ | async).length &&\r\n (hasVisibleOrInRangeLayers$ | async) === false &&\r\n (hasVisibleAndNotInRangeLayers$ | async) &&\r\n allowShowAllLegends\r\n \"\r\n >\r\n {{\r\n 'igo.geo.layer.legend.noLayersVisibleWithShowAllButtonButZoom' | translate\r\n }}\r\n </p>\r\n <p\r\n class=\"layers-empty mat-typography\"\r\n *ngIf=\"\r\n (layersInUi$ | async).length &&\r\n (hasVisibleOrInRangeLayers$ | async) === false &&\r\n (hasVisibleAndNotInRangeLayers$ | async) === false &&\r\n !allowShowAllLegends\r\n \"\r\n >\r\n {{ 'igo.geo.layer.legend.noLayersVisible' | translate }}\r\n </p>\r\n <p\r\n class=\"layers-empty mat-typography\"\r\n *ngIf=\"\r\n (layersInUi$ | async).length &&\r\n (hasVisibleOrInRangeLayers$ | async) === false &&\r\n (hasVisibleAndNotInRangeLayers$ | async) &&\r\n !allowShowAllLegends\r\n \"\r\n >\r\n {{ 'igo.geo.layer.legend.noLayersVisibleButZoom' | translate }}\r\n </p>\r\n</div>\r\n", styles: [":host mat-slide-toggle{width:100%;padding:10px}:host mat-slide-toggle ::ng-deep .mdc-form-field{width:100%}:host mat-slide-toggle ::ng-deep .mdc-label{margin-left:0;width:calc(100% - 60px)}:host igo-list{display:contents}:host .layers-empty{text-align:justify;margin:10px}:host .layer-legend-list-container{max-height:100%;overflow:auto}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i3.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i5.ListItemDirective, selector: "[igoListItem]", inputs: ["color", "focused", "selected", "disabled"], outputs: ["beforeSelect", "beforeFocus", "beforeUnselect", "beforeUnfocus", "beforeDisable", "beforeEnable", "focus", "unfocus", "select", "unselect", "disable", "enable"] }, { kind: "component", type: i5.ListComponent, selector: "igo-list", inputs: ["navigation", "selection"] }, { kind: "component", type: i6.LayerLegendItemComponent, selector: "igo-layer-legend-item", inputs: ["layer", "updateLegendOnResolutionChange"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
82
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: LayerLegendListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
83
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: LayerLegendListComponent, isStandalone: true, selector: "igo-layer-legend-list", inputs: { layers: "layers", excludeBaseLayers: "excludeBaseLayers", updateLegendOnResolutionChange: "updateLegendOnResolutionChange", allowShowAllLegends: "allowShowAllLegends", showAllLegendsValue: "showAllLegendsValue" }, outputs: { allLegendsShown: "allLegendsShown" }, ngImport: i0, template: "<div class=\"layer-legend-list-container\">\n <mat-slide-toggle\n tooltip-position=\"above\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.layer.legend.showAll' | translate\"\n [checked]=\"showAllLegendsValue\"\n class=\"mat-typography\"\n *ngIf=\"(layersInUi$ | async).length && allowShowAllLegends\"\n [labelPosition]=\"'before'\"\n (change)=\"toggleShowAllLegends($event.checked)\"\n >\n {{ 'igo.geo.layer.legend.showAll' | translate }}\n </mat-slide-toggle>\n <mat-divider\n *ngIf=\"(layersInUi$ | async).length && allowShowAllLegends\"\n ></mat-divider>\n <igo-list [navigation]=\"false\" [selection]=\"false\">\n <ng-template ngFor let-layer let-i=\"index\" [ngForOf]=\"layers$ | async\">\n <igo-layer-legend-item\n *ngIf=\"!(excludeBaseLayers && layer.baseLayer)\"\n igoListItem\n [layer]=\"layer\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\n >\n </igo-layer-legend-item>\n </ng-template>\n </igo-list>\n <p\n class=\"layers-empty mat-typography\"\n *ngIf=\"\n !showAllLegendsValue &&\n (layersInUi$ | async).length &&\n (hasVisibleOrInRangeLayers$ | async) === false &&\n (hasVisibleAndNotInRangeLayers$ | async) === false &&\n allowShowAllLegends\n \"\n >\n {{ 'igo.geo.layer.legend.noLayersVisibleWithShowAllButton' | translate }}\n </p>\n <p\n class=\"layers-empty mat-typography\"\n *ngIf=\"\n !showAllLegendsValue &&\n (layersInUi$ | async).length &&\n (hasVisibleOrInRangeLayers$ | async) === false &&\n (hasVisibleAndNotInRangeLayers$ | async) &&\n allowShowAllLegends\n \"\n >\n {{\n 'igo.geo.layer.legend.noLayersVisibleWithShowAllButtonButZoom' | translate\n }}\n </p>\n <p\n class=\"layers-empty mat-typography\"\n *ngIf=\"\n (layersInUi$ | async).length &&\n (hasVisibleOrInRangeLayers$ | async) === false &&\n (hasVisibleAndNotInRangeLayers$ | async) === false &&\n !allowShowAllLegends\n \"\n >\n {{ 'igo.geo.layer.legend.noLayersVisible' | translate }}\n </p>\n <p\n class=\"layers-empty mat-typography\"\n *ngIf=\"\n (layersInUi$ | async).length &&\n (hasVisibleOrInRangeLayers$ | async) === false &&\n (hasVisibleAndNotInRangeLayers$ | async) &&\n !allowShowAllLegends\n \"\n >\n {{ 'igo.geo.layer.legend.noLayersVisibleButZoom' | translate }}\n </p>\n</div>\n", styles: [":host mat-slide-toggle{width:100%;padding:10px}:host mat-slide-toggle ::ng-deep .mdc-form-field{width:100%}:host mat-slide-toggle ::ng-deep .mdc-label{margin-left:0;width:calc(100% - 60px)}:host igo-list{display:contents}:host .layers-empty{text-align:justify;margin:10px}:host .layer-legend-list-container{max-height:100%;overflow:auto}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: ListComponent, selector: "igo-list", inputs: ["navigation", "selection"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: LayerLegendItemComponent, selector: "igo-layer-legend-item", inputs: ["layer", "updateLegendOnResolutionChange"] }, { kind: "directive", type: ListItemDirective, selector: "[igoListItem]", inputs: ["color", "focused", "selected", "disabled"], outputs: ["beforeSelect", "beforeFocus", "beforeUnselect", "beforeUnfocus", "beforeDisable", "beforeEnable", "focus", "unfocus", "select", "unselect", "disable", "enable"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
80
84
  }
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LayerLegendListComponent, decorators: [{
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: LayerLegendListComponent, decorators: [{
82
86
  type: Component,
83
- args: [{ selector: 'igo-layer-legend-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layer-legend-list-container\">\r\n <mat-slide-toggle\r\n tooltip-position=\"above\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.layer.legend.showAll' | translate\"\r\n [checked]=\"showAllLegendsValue\"\r\n class=\"mat-typography\"\r\n *ngIf=\"(layersInUi$ | async).length && allowShowAllLegends\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"toggleShowAllLegends($event.checked)\"\r\n >\r\n {{ 'igo.geo.layer.legend.showAll' | translate }}\r\n </mat-slide-toggle>\r\n <mat-divider\r\n *ngIf=\"(layersInUi$ | async).length && allowShowAllLegends\"\r\n ></mat-divider>\r\n <igo-list [navigation]=\"false\" [selection]=\"false\">\r\n <ng-template ngFor let-layer let-i=\"index\" [ngForOf]=\"layers$ | async\">\r\n <igo-layer-legend-item\r\n *ngIf=\"!(excludeBaseLayers && layer.baseLayer)\"\r\n igoListItem\r\n [layer]=\"layer\"\r\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\r\n >\r\n </igo-layer-legend-item>\r\n </ng-template>\r\n </igo-list>\r\n <p\r\n class=\"layers-empty mat-typography\"\r\n *ngIf=\"\r\n !showAllLegendsValue &&\r\n (layersInUi$ | async).length &&\r\n (hasVisibleOrInRangeLayers$ | async) === false &&\r\n (hasVisibleAndNotInRangeLayers$ | async) === false &&\r\n allowShowAllLegends\r\n \"\r\n >\r\n {{ 'igo.geo.layer.legend.noLayersVisibleWithShowAllButton' | translate }}\r\n </p>\r\n <p\r\n class=\"layers-empty mat-typography\"\r\n *ngIf=\"\r\n !showAllLegendsValue &&\r\n (layersInUi$ | async).length &&\r\n (hasVisibleOrInRangeLayers$ | async) === false &&\r\n (hasVisibleAndNotInRangeLayers$ | async) &&\r\n allowShowAllLegends\r\n \"\r\n >\r\n {{\r\n 'igo.geo.layer.legend.noLayersVisibleWithShowAllButtonButZoom' | translate\r\n }}\r\n </p>\r\n <p\r\n class=\"layers-empty mat-typography\"\r\n *ngIf=\"\r\n (layersInUi$ | async).length &&\r\n (hasVisibleOrInRangeLayers$ | async) === false &&\r\n (hasVisibleAndNotInRangeLayers$ | async) === false &&\r\n !allowShowAllLegends\r\n \"\r\n >\r\n {{ 'igo.geo.layer.legend.noLayersVisible' | translate }}\r\n </p>\r\n <p\r\n class=\"layers-empty mat-typography\"\r\n *ngIf=\"\r\n (layersInUi$ | async).length &&\r\n (hasVisibleOrInRangeLayers$ | async) === false &&\r\n (hasVisibleAndNotInRangeLayers$ | async) &&\r\n !allowShowAllLegends\r\n \"\r\n >\r\n {{ 'igo.geo.layer.legend.noLayersVisibleButZoom' | translate }}\r\n </p>\r\n</div>\r\n", styles: [":host mat-slide-toggle{width:100%;padding:10px}:host mat-slide-toggle ::ng-deep .mdc-form-field{width:100%}:host mat-slide-toggle ::ng-deep .mdc-label{margin-left:0;width:calc(100% - 60px)}:host igo-list{display:contents}:host .layers-empty{text-align:justify;margin:10px}:host .layer-legend-list-container{max-height:100%;overflow:auto}\n"] }]
84
- }], ctorParameters: function () { return []; }, propDecorators: { layers: [{
87
+ args: [{ selector: 'igo-layer-legend-list', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
88
+ NgIf,
89
+ MatSlideToggleModule,
90
+ MatTooltipModule,
91
+ MatDividerModule,
92
+ ListComponent,
93
+ NgFor,
94
+ LayerLegendItemComponent,
95
+ ListItemDirective,
96
+ AsyncPipe,
97
+ TranslateModule
98
+ ], template: "<div class=\"layer-legend-list-container\">\n <mat-slide-toggle\n tooltip-position=\"above\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.layer.legend.showAll' | translate\"\n [checked]=\"showAllLegendsValue\"\n class=\"mat-typography\"\n *ngIf=\"(layersInUi$ | async).length && allowShowAllLegends\"\n [labelPosition]=\"'before'\"\n (change)=\"toggleShowAllLegends($event.checked)\"\n >\n {{ 'igo.geo.layer.legend.showAll' | translate }}\n </mat-slide-toggle>\n <mat-divider\n *ngIf=\"(layersInUi$ | async).length && allowShowAllLegends\"\n ></mat-divider>\n <igo-list [navigation]=\"false\" [selection]=\"false\">\n <ng-template ngFor let-layer let-i=\"index\" [ngForOf]=\"layers$ | async\">\n <igo-layer-legend-item\n *ngIf=\"!(excludeBaseLayers && layer.baseLayer)\"\n igoListItem\n [layer]=\"layer\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\n >\n </igo-layer-legend-item>\n </ng-template>\n </igo-list>\n <p\n class=\"layers-empty mat-typography\"\n *ngIf=\"\n !showAllLegendsValue &&\n (layersInUi$ | async).length &&\n (hasVisibleOrInRangeLayers$ | async) === false &&\n (hasVisibleAndNotInRangeLayers$ | async) === false &&\n allowShowAllLegends\n \"\n >\n {{ 'igo.geo.layer.legend.noLayersVisibleWithShowAllButton' | translate }}\n </p>\n <p\n class=\"layers-empty mat-typography\"\n *ngIf=\"\n !showAllLegendsValue &&\n (layersInUi$ | async).length &&\n (hasVisibleOrInRangeLayers$ | async) === false &&\n (hasVisibleAndNotInRangeLayers$ | async) &&\n allowShowAllLegends\n \"\n >\n {{\n 'igo.geo.layer.legend.noLayersVisibleWithShowAllButtonButZoom' | translate\n }}\n </p>\n <p\n class=\"layers-empty mat-typography\"\n *ngIf=\"\n (layersInUi$ | async).length &&\n (hasVisibleOrInRangeLayers$ | async) === false &&\n (hasVisibleAndNotInRangeLayers$ | async) === false &&\n !allowShowAllLegends\n \"\n >\n {{ 'igo.geo.layer.legend.noLayersVisible' | translate }}\n </p>\n <p\n class=\"layers-empty mat-typography\"\n *ngIf=\"\n (layersInUi$ | async).length &&\n (hasVisibleOrInRangeLayers$ | async) === false &&\n (hasVisibleAndNotInRangeLayers$ | async) &&\n !allowShowAllLegends\n \"\n >\n {{ 'igo.geo.layer.legend.noLayersVisibleButZoom' | translate }}\n </p>\n</div>\n", styles: [":host mat-slide-toggle{width:100%;padding:10px}:host mat-slide-toggle ::ng-deep .mdc-form-field{width:100%}:host mat-slide-toggle ::ng-deep .mdc-label{margin-left:0;width:calc(100% - 60px)}:host igo-list{display:contents}:host .layers-empty{text-align:justify;margin:10px}:host .layer-legend-list-container{max-height:100%;overflow:auto}\n"] }]
99
+ }], ctorParameters: () => [], propDecorators: { layers: [{
85
100
  type: Input
86
101
  }], excludeBaseLayers: [{
87
102
  type: Input
@@ -94,4 +109,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
94
109
  }], allLegendsShown: [{
95
110
  type: Output
96
111
  }] } });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItbGVnZW5kLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbGF5ZXIvbGF5ZXItbGVnZW5kLWxpc3QvbGF5ZXItbGVnZW5kLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbGF5ZXIvbGF5ZXItbGVnZW5kLWxpc3QvbGF5ZXItbGVnZW5kLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLGVBQWUsRUFDZixLQUFLLEVBQ0wsYUFBYSxFQUViLEtBQUssRUFDTixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBVTFDLE1BQU0sT0FBTyx3QkFBd0I7SUFDbkMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUVqQiwwQkFBMEIsR0FBNkIsSUFBSSxlQUFlLENBQ3hFLElBQUksQ0FDTCxDQUFDO0lBQ0YsOEJBQThCLEdBQzVCLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLFdBQVcsR0FBNkIsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEUsT0FBTyxHQUE2QixJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1RCxhQUFhLEdBQVksS0FBSyxDQUFDO0lBQ3hCLE9BQU8sR0FBRyxJQUFJLGFBQWEsQ0FBTyxDQUFDLENBQUMsQ0FBQztJQUNwQyxRQUFRLENBQWU7SUFDL0IsSUFDSSxNQUFNLENBQUMsS0FBYztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJ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TSxDQUFDO1NBQ3RCO1FBQ0QsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUNPLGtCQUFrQixDQUFDLE1BQWU7UUFDeEMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELG9CQUFvQixDQUFDLE1BQWU7UUFDbEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQztRQUNsQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO3dHQWpHVSx3QkFBd0I7NEZBQXhCLHdCQUF3Qiw4VUMzQnJDLDZqRkE0RUE7OzRGRGpEYSx3QkFBd0I7a0JBTnBDLFNBQVM7K0JBQ0UsdUJBQXVCLG1CQUdoQix1QkFBdUIsQ0FBQyxNQUFNOzBFQWdCM0MsTUFBTTtzQkFEVCxLQUFLO2dCQVNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFRyw4QkFBOEI7c0JBQXRDLEtBQUs7Z0JBRUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFFSSxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIEJlaGF2aW9yU3ViamVjdCxcclxuICBFTVBUWSxcclxuICBSZXBsYXlTdWJqZWN0LFxyXG4gIFN1YnNjcmlwdGlvbixcclxuICB0aW1lclxyXG59IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IExheWVyIH0gZnJvbSAnLi4vc2hhcmVkL2xheWVycy9sYXllcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lnby1sYXllci1sZWdlbmQtbGlzdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xheWVyLWxlZ2VuZC1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9sYXllci1sZWdlbmQtbGlzdC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMYXllckxlZ2VuZExpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgb3JkZXJhYmxlID0gdHJ1ZTtcclxuXHJcbiAgaGFzVmlzaWJsZU9ySW5SYW5nZUxheWVycyQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoXHJcbiAgICB0cnVlXHJcbiAgKTtcclxuICBoYXNWaXNpYmxlQW5kTm90SW5SYW5nZUxheWVycyQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9XHJcbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xyXG4gIGxheWVyc0luVWkkOiBCZWhhdmlvclN1YmplY3Q8TGF5ZXJbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcclxuICBsYXllcnMkOiBCZWhhdmlvclN1YmplY3Q8TGF5ZXJbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcclxuICBzaG93QWxsTGVnZW5kOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGNoYW5nZSQgPSBuZXcgUmVwbGF5U3ViamVjdDx2b2lkPigxKTtcclxuICBwcml2YXRlIGNoYW5nZSQkOiBTdWJzY3JpcHRpb247XHJcbiAgQElucHV0KClcclxuICBzZXQgbGF5ZXJzKHZhbHVlOiBMYXllcltdKSB7XHJcbiAgICB0aGlzLl9sYXllcnMgPSB2YWx1ZTtcclxuICAgIHRoaXMubmV4dCgpO1xyXG4gIH1cclxuICBnZXQgbGF5ZXJzKCk6IExheWVyW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xheWVycztcclxuICB9XHJcbiAgcHJpdmF0ZSBfbGF5ZXJzOiBMYXllcltdO1xyXG4gIEBJbnB1dCgpIGV4Y2x1ZGVCYXNlTGF5ZXJzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHVwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBhbGxvd1Nob3dBbGxMZWdlbmRzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHNob3dBbGxMZWdlbmRzVmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIGFsbExlZ2VuZHNTaG93biA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNoYW5nZSQkID0gdGhpcy5jaGFuZ2UkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGRlYm91bmNlKCgpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmxheWVycy5sZW5ndGggPT09IDAgPyBFTVBUWSA6IHRpbWVyKDUwKTtcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGxheWVycyA9IHRoaXMuY29tcHV0ZVNob3duTGF5ZXJzKHRoaXMubGF5ZXJzLnNsaWNlKDApKTtcclxuICAgICAgICB0aGlzLmxheWVycyQubmV4dChsYXllcnMpO1xyXG4gICAgICAgIHRoaXMuaGFzVmlzaWJsZU9ySW5SYW5nZUxheWVycyQubmV4dChcclxuICAgICAgICAgIHRoaXMubGF5ZXJzXHJcbiAgICAgICAgICAgIC5zbGljZSgwKVxyXG4gICAgICAgICAgICAuZmlsdGVyKChsYXllcikgPT4gbGF5ZXIuYmFzZUxheWVyICE9PSB0cnVlKVxyXG4gICAgICAgICAgICAuZmlsdGVyKFxyXG4gICAgICAgICAgICAgIChsYXllcikgPT5cclxuICAgICAgICAgICAgICAgIGxheWVyLnZpc2libGUkLnZhbHVlICYmIGxheWVyLmlzSW5SZXNvbHV0aW9uc1JhbmdlJC52YWx1ZVxyXG4gICAgICAgICAgICApLmxlbmd0aCA+IDBcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuaGFzVmlzaWJsZUFuZE5vdEluUmFuZ2VMYXllcnMkLm5leHQoXHJcbiAgICAgICAgICB0aGlzLmxheWVyc1xyXG4gICAgICAgICAgICAuc2xpY2UoMClcclxuICAgICAgICAgICAgLmZpbHRlcigobGF5ZXIpID0+IGxheWVyLmJhc2VMYXllciAhPT0gdHJ1ZSlcclxuICAgICAgICAgICAgLmZpbHRlcihcclxuICAgICAgICAgICAgICAobGF5ZXIpID0+XHJcbiAgICAgICAgICAgICAgICBsYXllci52aXNpYmxlJC52YWx1ZSAmJiAhbGF5ZXIuaXNJblJlc29sdXRpb25zUmFuZ2UkLnZhbHVlXHJcbiAgICAgICAgICAgICkubGVuZ3RoID4gMFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMubGF5ZXJzSW5VaSQubmV4dChcclxuICAgICAgICAgIHRoaXMubGF5ZXJzXHJcbiAgICAgICAgICAgIC5zbGljZSgwKVxyXG4gICAgICAgICAgICAuZmlsdGVyKFxyXG4gICAgICAgICAgICAgIChsYXllcikgPT5cclxuICAgICAgICAgICAgICAgIGxheWVyLnNob3dJbkxheWVyTGlzdCAhPT0gZmFsc2UgJiZcclxuICAgICAgICAgICAgICAgICghdGhpcy5leGNsdWRlQmFzZUxheWVycyB8fCAhbGF5ZXIuYmFzZUxheWVyKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuY2hhbmdlJCQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBuZXh0KCkge1xyXG4gICAgdGhpcy5jaGFuZ2UkLm5leHQoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBjb21wdXRlU2hvd25MYXllcnMobGF5ZXJzOiBMYXllcltdKSB7XHJcbiAgICBsZXQgc2hvd25MYXllcnMgPSBsYXllcnMuZmlsdGVyKFxyXG4gICAgICAobGF5ZXI6IExheWVyKSA9PiBsYXllci52aXNpYmxlICYmIGxheWVyLmlzSW5SZXNvbHV0aW9uc1JhbmdlXHJcbiAgICApO1xyXG4gICAgaWYgKHRoaXMuc2hvd0FsbExlZ2VuZHNWYWx1ZSkge1xyXG4gICAgICBzaG93bkxheWVycyA9IGxheWVycztcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnNvcnRMYXllcnNCeVppbmRleChzaG93bkxheWVycyk7XHJcbiAgfVxyXG4gIHByaXZhdGUgc29ydExheWVyc0J5WmluZGV4KGxheWVyczogTGF5ZXJbXSkge1xyXG4gICAgcmV0dXJuIGxheWVycy5zb3J0KChsYXllcjEsIGxheWVyMikgPT4gbGF5ZXIyLnpJbmRleCAtIGxheWVyMS56SW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU2hvd0FsbExlZ2VuZHModG9nZ2xlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnNob3dBbGxMZWdlbmRzVmFsdWUgPSB0b2dnbGU7XHJcbiAgICB0aGlzLm5leHQoKTtcclxuICAgIHRoaXMuYWxsTGVnZW5kc1Nob3duLmVtaXQodG9nZ2xlKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImxheWVyLWxlZ2VuZC1saXN0LWNvbnRhaW5lclwiPlxyXG4gIDxtYXQtc2xpZGUtdG9nZ2xlXHJcbiAgICB0b29sdGlwLXBvc2l0aW9uPVwiYWJvdmVcIlxyXG4gICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXHJcbiAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5sYXllci5sZWdlbmQuc2hvd0FsbCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgW2NoZWNrZWRdPVwic2hvd0FsbExlZ2VuZHNWYWx1ZVwiXHJcbiAgICBjbGFzcz1cIm1hdC10eXBvZ3JhcGh5XCJcclxuICAgICpuZ0lmPVwiKGxheWVyc0luVWkkIHwgYXN5bmMpLmxlbmd0aCAmJiBhbGxvd1Nob3dBbGxMZWdlbmRzXCJcclxuICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCJcclxuICAgIChjaGFuZ2UpPVwidG9nZ2xlU2hvd0FsbExlZ2VuZHMoJGV2ZW50LmNoZWNrZWQpXCJcclxuICA+XHJcbiAgICB7eyAnaWdvLmdlby5sYXllci5sZWdlbmQuc2hvd0FsbCcgfCB0cmFuc2xhdGUgfX1cclxuICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgPG1hdC1kaXZpZGVyXHJcbiAgICAqbmdJZj1cIihsYXllcnNJblVpJCB8IGFzeW5jKS5sZW5ndGggJiYgYWxsb3dTaG93QWxsTGVnZW5kc1wiXHJcbiAgPjwvbWF0LWRpdmlkZXI+XHJcbiAgPGlnby1saXN0IFtuYXZpZ2F0aW9uXT1cImZhbHNlXCIgW3NlbGVjdGlvbl09XCJmYWxzZVwiPlxyXG4gICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1sYXllciBsZXQtaT1cImluZGV4XCIgW25nRm9yT2ZdPVwibGF5ZXJzJCB8IGFzeW5jXCI+XHJcbiAgICAgIDxpZ28tbGF5ZXItbGVnZW5kLWl0ZW1cclxuICAgICAgICAqbmdJZj1cIiEoZXhjbHVkZUJhc2VMYXllcnMgJiYgbGF5ZXIuYmFzZUxheWVyKVwiXHJcbiAgICAgICAgaWdvTGlzdEl0ZW1cclxuICAgICAgICBbbGF5ZXJdPVwibGF5ZXJcIlxyXG4gICAgICAgIFt1cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2VdPVwidXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlXCJcclxuICAgICAgPlxyXG4gICAgICA8L2lnby1sYXllci1sZWdlbmQtaXRlbT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9pZ28tbGlzdD5cclxuICA8cFxyXG4gICAgY2xhc3M9XCJsYXllcnMtZW1wdHkgbWF0LXR5cG9ncmFwaHlcIlxyXG4gICAgKm5nSWY9XCJcclxuICAgICAgIXNob3dBbGxMZWdlbmRzVmFsdWUgJiZcclxuICAgICAgKGxheWVyc0luVWkkIHwgYXN5bmMpLmxlbmd0aCAmJlxyXG4gICAgICAoaGFzVmlzaWJsZU9ySW5SYW5nZUxheWVycyQgfCBhc3luYykgPT09IGZhbHNlICYmXHJcbiAgICAgIChoYXNWaXNpYmxlQW5kTm90SW5SYW5nZUxheWVycyQgfCBhc3luYykgPT09IGZhbHNlICYmXHJcbiAgICAgIGFsbG93U2hvd0FsbExlZ2VuZHNcclxuICAgIFwiXHJcbiAgPlxyXG4gICAge3sgJ2lnby5nZW8ubGF5ZXIubGVnZW5kLm5vTGF5ZXJzVmlzaWJsZVdpdGhTaG93QWxsQnV0dG9uJyB8IHRyYW5zbGF0ZSB9fVxyXG4gIDwvcD5cclxuICA8cFxyXG4gICAgY2xhc3M9XCJsYXllcnMtZW1wdHkgbWF0LXR5cG9ncmFwaHlcIlxyXG4gICAgKm5nSWY9XCJcclxuICAgICAgIXNob3dBbGxMZWdlbmRzVmFsdWUgJiZcclxuICAgICAgKGxheWVyc0luVWkkIHwgYXN5bmMpLmxlbmd0aCAmJlxyXG4gICAgICAoaGFzVmlzaWJsZU9ySW5SYW5nZUxheWVycyQgfCBhc3luYykgPT09IGZhbHNlICYmXHJcbiAgICAgIChoYXNWaXNpYmxlQW5kTm90SW5SYW5nZUxheWVycyQgfCBhc3luYykgJiZcclxuICAgICAgYWxsb3dTaG93QWxsTGVnZW5kc1xyXG4gICAgXCJcclxuICA+XHJcbiAgICB7e1xyXG4gICAgICAnaWdvLmdlby5sYXllci5sZWdlbmQubm9MYXllcnNWaXNpYmxlV2l0aFNob3dBbGxCdXR0b25CdXRab29tJyB8IHRyYW5zbGF0ZVxyXG4gICAgfX1cclxuICA8L3A+XHJcbiAgPHBcclxuICAgIGNsYXNzPVwibGF5ZXJzLWVtcHR5IG1hdC10eXBvZ3JhcGh5XCJcclxuICAgICpuZ0lmPVwiXHJcbiAgICAgIChsYXllcnNJblVpJCB8IGFzeW5jKS5sZW5ndGggJiZcclxuICAgICAgKGhhc1Zpc2libGVPckluUmFuZ2VMYXllcnMkIHwgYXN5bmMpID09PSBmYWxzZSAmJlxyXG4gICAgICAoaGFzVmlzaWJsZUFuZE5vdEluUmFuZ2VMYXllcnMkIHwgYXN5bmMpID09PSBmYWxzZSAmJlxyXG4gICAgICAhYWxsb3dTaG93QWxsTGVnZW5kc1xyXG4gICAgXCJcclxuICA+XHJcbiAgICB7eyAnaWdvLmdlby5sYXllci5sZWdlbmQubm9MYXllcnNWaXNpYmxlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gIDwvcD5cclxuICA8cFxyXG4gICAgY2xhc3M9XCJsYXllcnMtZW1wdHkgbWF0LXR5cG9ncmFwaHlcIlxyXG4gICAgKm5nSWY9XCJcclxuICAgICAgKGxheWVyc0luVWkkIHwgYXN5bmMpLmxlbmd0aCAmJlxyXG4gICAgICAoaGFzVmlzaWJsZU9ySW5SYW5nZUxheWVycyQgfCBhc3luYykgPT09IGZhbHNlICYmXHJcbiAgICAgIChoYXNWaXNpYmxlQW5kTm90SW5SYW5nZUxheWVycyQgfCBhc3luYykgJiZcclxuICAgICAgIWFsbG93U2hvd0FsbExlZ2VuZHNcclxuICAgIFwiXHJcbiAgPlxyXG4gICAge3sgJ2lnby5nZW8ubGF5ZXIubGVnZW5kLm5vTGF5ZXJzVmlzaWJsZUJ1dFpvb20nIHwgdHJhbnNsYXRlIH19XHJcbiAgPC9wPlxyXG48L2Rpdj5cclxuIl19
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItbGVnZW5kLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbGF5ZXIvbGF5ZXItbGVnZW5kLWxpc3QvbGF5ZXItbGVnZW5kLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbGF5ZXIvbGF5ZXItbGVnZW5kLWxpc3QvbGF5ZXItbGVnZW5kLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUNMLGVBQWUsRUFDZixLQUFLLEVBQ0wsYUFBYSxFQUViLEtBQUssRUFDTixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQzs7Ozs7O0FBc0I1RixNQUFNLE9BQU8sd0JBQXdCO0lBQ25DLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFFakIsMEJBQTBC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QW5CcEMsU0FBUzsrQkFDRSx1QkFBdUIsbUJBR2hCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLElBQUk7d0JBQ0osb0JBQW9CO3dCQUNwQixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixLQUFLO3dCQUNMLHdCQUF3Qjt3QkFDeEIsaUJBQWlCO3dCQUNqQixTQUFTO3dCQUNULGVBQWU7cUJBQ2hCO3dEQWdCRyxNQUFNO3NCQURULEtBQUs7Z0JBU0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLDhCQUE4QjtzQkFBdEMsS0FBSztnQkFFRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpdmlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyJztcclxuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcblxyXG5pbXBvcnQgeyBMaXN0Q29tcG9uZW50LCBMaXN0SXRlbURpcmVjdGl2ZSB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHtcclxuICBCZWhhdmlvclN1YmplY3QsXHJcbiAgRU1QVFksXHJcbiAgUmVwbGF5U3ViamVjdCxcclxuICBTdWJzY3JpcHRpb24sXHJcbiAgdGltZXJcclxufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBMYXllckxlZ2VuZEl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9sYXllci1sZWdlbmQtaXRlbS9sYXllci1sZWdlbmQtaXRlbS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMYXllciB9IGZyb20gJy4uL3NoYXJlZC9sYXllcnMvbGF5ZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZ28tbGF5ZXItbGVnZW5kLWxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9sYXllci1sZWdlbmQtbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGF5ZXItbGVnZW5kLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nSWYsXHJcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxyXG4gICAgTGlzdENvbXBvbmVudCxcclxuICAgIE5nRm9yLFxyXG4gICAgTGF5ZXJMZWdlbmRJdGVtQ29tcG9uZW50LFxyXG4gICAgTGlzdEl0ZW1EaXJlY3RpdmUsXHJcbiAgICBBc3luY1BpcGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMYXllckxlZ2VuZExpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgb3JkZXJhYmxlID0gdHJ1ZTtcclxuXHJcbiAgaGFzVmlzaWJsZU9ySW5SYW5nZUxheWVycyQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoXHJcbiAgICB0cnVlXHJcbiAgKTtcclxuICBoYXNWaXNpYmxlQW5kTm90SW5SYW5nZUxheWVycyQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9XHJcbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xyXG4gIGxheWVyc0luVWkkOiBCZWhhdmlvclN1YmplY3Q8TGF5ZXJbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcclxuICBsYXllcnMkOiBCZWhhdmlvclN1YmplY3Q8TGF5ZXJbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcclxuICBzaG93QWxsTGVnZW5kOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGNoYW5nZSQgPSBuZXcgUmVwbGF5U3ViamVjdDx2b2lkPigxKTtcclxuICBwcml2YXRlIGNoYW5nZSQkOiBTdWJzY3JpcHRpb247XHJcbiAgQElucHV0KClcclxuICBzZXQgbGF5ZXJzKHZhbHVlOiBMYXllcltdKSB7XHJcbiAgICB0aGlzLl9sYXllcnMgPSB2YWx1ZTtcclxuICAgIHRoaXMubmV4dCgpO1xyXG4gIH1cclxuICBnZXQgbGF5ZXJzKCk6IExheWVyW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xheWVycztcclxuICB9XHJcbiAgcHJpdmF0ZSBfbGF5ZXJzOiBMYXllcltdO1xyXG4gIEBJbnB1dCgpIGV4Y2x1ZGVCYXNlTGF5ZXJzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHVwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBhbGxvd1Nob3dBbGxMZWdlbmRzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHNob3dBbGxMZWdlbmRzVmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIGFsbExlZ2VuZHNTaG93biA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNoYW5nZSQkID0gdGhpcy5jaGFuZ2UkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGRlYm91bmNlKCgpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmxheWVycy5sZW5ndGggPT09IDAgPyBFTVBUWSA6IHRpbWVyKDUwKTtcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGxheWVycyA9IHRoaXMuY29tcHV0ZVNob3duTGF5ZXJzKHRoaXMubGF5ZXJzLnNsaWNlKDApKTtcclxuICAgICAgICB0aGlzLmxheWVycyQubmV4dChsYXllcnMpO1xyXG4gICAgICAgIHRoaXMuaGFzVmlzaWJsZU9ySW5SYW5nZUxheWVycyQubmV4dChcclxuICAgICAgICAgIHRoaXMubGF5ZXJzXHJcbiAgICAgICAgICAgIC5zbGljZSgwKVxyXG4gICAgICAgICAgICAuZmlsdGVyKChsYXllcikgPT4gbGF5ZXIuYmFzZUxheWVyICE9PSB0cnVlKVxyXG4gICAgICAgICAgICAuZmlsdGVyKFxyXG4gICAgICAgICAgICAgIChsYXllcikgPT5cclxuICAgICAgICAgICAgICAgIGxheWVyLnZpc2libGUkLnZhbHVlICYmIGxheWVyLmlzSW5SZXNvbHV0aW9uc1JhbmdlJC52YWx1ZVxyXG4gICAgICAgICAgICApLmxlbmd0aCA+IDBcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuaGFzVmlzaWJsZUFuZE5vdEluUmFuZ2VMYXllcnMkLm5leHQoXHJcbiAgICAgICAgICB0aGlzLmxheWVyc1xyXG4gICAgICAgICAgICAuc2xpY2UoMClcclxuICAgICAgICAgICAgLmZpbHRlcigobGF5ZXIpID0+IGxheWVyLmJhc2VMYXllciAhPT0gdHJ1ZSlcclxuICAgICAgICAgICAgLmZpbHRlcihcclxuICAgICAgICAgICAgICAobGF5ZXIpID0+XHJcbiAgICAgICAgICAgICAgICBsYXllci52aXNpYmxlJC52YWx1ZSAmJiAhbGF5ZXIuaXNJblJlc29sdXRpb25zUmFuZ2UkLnZhbHVlXHJcbiAgICAgICAgICAgICkubGVuZ3RoID4gMFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMubGF5ZXJzSW5VaSQubmV4dChcclxuICAgICAgICAgIHRoaXMubGF5ZXJzXHJcbiAgICAgICAgICAgIC5zbGljZSgwKVxyXG4gICAgICAgICAgICAuZmlsdGVyKFxyXG4gICAgICAgICAgICAgIChsYXllcikgPT5cclxuICAgICAgICAgICAgICAgIGxheWVyLnNob3dJbkxheWVyTGlzdCAhPT0gZmFsc2UgJiZcclxuICAgICAgICAgICAgICAgICghdGhpcy5leGNsdWRlQmFzZUxheWVycyB8fCAhbGF5ZXIuYmFzZUxheWVyKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuY2hhbmdlJCQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBuZXh0KCkge1xyXG4gICAgdGhpcy5jaGFuZ2UkLm5leHQoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBjb21wdXRlU2hvd25MYXllcnMobGF5ZXJzOiBMYXllcltdKSB7XHJcbiAgICBsZXQgc2hvd25MYXllcnMgPSBsYXllcnMuZmlsdGVyKFxyXG4gICAgICAobGF5ZXI6IExheWVyKSA9PiBsYXllci52aXNpYmxlICYmIGxheWVyLmlzSW5SZXNvbHV0aW9uc1JhbmdlXHJcbiAgICApO1xyXG4gICAgaWYgKHRoaXMuc2hvd0FsbExlZ2VuZHNWYWx1ZSkge1xyXG4gICAgICBzaG93bkxheWVycyA9IGxheWVycztcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnNvcnRMYXllcnNCeVppbmRleChzaG93bkxheWVycyk7XHJcbiAgfVxyXG4gIHByaXZhdGUgc29ydExheWVyc0J5WmluZGV4KGxheWVyczogTGF5ZXJbXSkge1xyXG4gICAgcmV0dXJuIGxheWVycy5zb3J0KChsYXllcjEsIGxheWVyMikgPT4gbGF5ZXIyLnpJbmRleCAtIGxheWVyMS56SW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU2hvd0FsbExlZ2VuZHModG9nZ2xlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnNob3dBbGxMZWdlbmRzVmFsdWUgPSB0b2dnbGU7XHJcbiAgICB0aGlzLm5leHQoKTtcclxuICAgIHRoaXMuYWxsTGVnZW5kc1Nob3duLmVtaXQodG9nZ2xlKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImxheWVyLWxlZ2VuZC1saXN0LWNvbnRhaW5lclwiPlxuICA8bWF0LXNsaWRlLXRvZ2dsZVxuICAgIHRvb2x0aXAtcG9zaXRpb249XCJhYm92ZVwiXG4gICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8ubGF5ZXIubGVnZW5kLnNob3dBbGwnIHwgdHJhbnNsYXRlXCJcbiAgICBbY2hlY2tlZF09XCJzaG93QWxsTGVnZW5kc1ZhbHVlXCJcbiAgICBjbGFzcz1cIm1hdC10eXBvZ3JhcGh5XCJcbiAgICAqbmdJZj1cIihsYXllcnNJblVpJCB8IGFzeW5jKS5sZW5ndGggJiYgYWxsb3dTaG93QWxsTGVnZW5kc1wiXG4gICAgW2xhYmVsUG9zaXRpb25dPVwiJ2JlZm9yZSdcIlxuICAgIChjaGFuZ2UpPVwidG9nZ2xlU2hvd0FsbExlZ2VuZHMoJGV2ZW50LmNoZWNrZWQpXCJcbiAgPlxuICAgIHt7ICdpZ28uZ2VvLmxheWVyLmxlZ2VuZC5zaG93QWxsJyB8IHRyYW5zbGF0ZSB9fVxuICA8L21hdC1zbGlkZS10b2dnbGU+XG4gIDxtYXQtZGl2aWRlclxuICAgICpuZ0lmPVwiKGxheWVyc0luVWkkIHwgYXN5bmMpLmxlbmd0aCAmJiBhbGxvd1Nob3dBbGxMZWdlbmRzXCJcbiAgPjwvbWF0LWRpdmlkZXI+XG4gIDxpZ28tbGlzdCBbbmF2aWdhdGlvbl09XCJmYWxzZVwiIFtzZWxlY3Rpb25dPVwiZmFsc2VcIj5cbiAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWxheWVyIGxldC1pPVwiaW5kZXhcIiBbbmdGb3JPZl09XCJsYXllcnMkIHwgYXN5bmNcIj5cbiAgICAgIDxpZ28tbGF5ZXItbGVnZW5kLWl0ZW1cbiAgICAgICAgKm5nSWY9XCIhKGV4Y2x1ZGVCYXNlTGF5ZXJzICYmIGxheWVyLmJhc2VMYXllcilcIlxuICAgICAgICBpZ29MaXN0SXRlbVxuICAgICAgICBbbGF5ZXJdPVwibGF5ZXJcIlxuICAgICAgICBbdXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlXT1cInVwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZVwiXG4gICAgICA+XG4gICAgICA8L2lnby1sYXllci1sZWdlbmQtaXRlbT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2lnby1saXN0PlxuICA8cFxuICAgIGNsYXNzPVwibGF5ZXJzLWVtcHR5IG1hdC10eXBvZ3JhcGh5XCJcbiAgICAqbmdJZj1cIlxuICAgICAgIXNob3dBbGxMZWdlbmRzVmFsdWUgJiZcbiAgICAgIChsYXllcnNJblVpJCB8IGFzeW5jKS5sZW5ndGggJiZcbiAgICAgIChoYXNWaXNpYmxlT3JJblJhbmdlTGF5ZXJzJCB8IGFzeW5jKSA9PT0gZmFsc2UgJiZcbiAgICAgIChoYXNWaXNpYmxlQW5kTm90SW5SYW5nZUxheWVycyQgfCBhc3luYykgPT09IGZhbHNlICYmXG4gICAgICBhbGxvd1Nob3dBbGxMZWdlbmRzXG4gICAgXCJcbiAgPlxuICAgIHt7ICdpZ28uZ2VvLmxheWVyLmxlZ2VuZC5ub0xheWVyc1Zpc2libGVXaXRoU2hvd0FsbEJ1dHRvbicgfCB0cmFuc2xhdGUgfX1cbiAgPC9wPlxuICA8cFxuICAgIGNsYXNzPVwibGF5ZXJzLWVtcHR5IG1hdC10eXBvZ3JhcGh5XCJcbiAgICAqbmdJZj1cIlxuICAgICAgIXNob3dBbGxMZWdlbmRzVmFsdWUgJiZcbiAgICAgIChsYXllcnNJblVpJCB8IGFzeW5jKS5sZW5ndGggJiZcbiAgICAgIChoYXNWaXNpYmxlT3JJblJhbmdlTGF5ZXJzJCB8IGFzeW5jKSA9PT0gZmFsc2UgJiZcbiAgICAgIChoYXNWaXNpYmxlQW5kTm90SW5SYW5nZUxheWVycyQgfCBhc3luYykgJiZcbiAgICAgIGFsbG93U2hvd0FsbExlZ2VuZHNcbiAgICBcIlxuICA+XG4gICAge3tcbiAgICAgICdpZ28uZ2VvLmxheWVyLmxlZ2VuZC5ub0xheWVyc1Zpc2libGVXaXRoU2hvd0FsbEJ1dHRvbkJ1dFpvb20nIHwgdHJhbnNsYXRlXG4gICAgfX1cbiAgPC9wPlxuICA8cFxuICAgIGNsYXNzPVwibGF5ZXJzLWVtcHR5IG1hdC10eXBvZ3JhcGh5XCJcbiAgICAqbmdJZj1cIlxuICAgICAgKGxheWVyc0luVWkkIHwgYXN5bmMpLmxlbmd0aCAmJlxuICAgICAgKGhhc1Zpc2libGVPckluUmFuZ2VMYXllcnMkIHwgYXN5bmMpID09PSBmYWxzZSAmJlxuICAgICAgKGhhc1Zpc2libGVBbmROb3RJblJhbmdlTGF5ZXJzJCB8IGFzeW5jKSA9PT0gZmFsc2UgJiZcbiAgICAgICFhbGxvd1Nob3dBbGxMZWdlbmRzXG4gICAgXCJcbiAgPlxuICAgIHt7ICdpZ28uZ2VvLmxheWVyLmxlZ2VuZC5ub0xheWVyc1Zpc2libGUnIHwgdHJhbnNsYXRlIH19XG4gIDwvcD5cbiAgPHBcbiAgICBjbGFzcz1cImxheWVycy1lbXB0eSBtYXQtdHlwb2dyYXBoeVwiXG4gICAgKm5nSWY9XCJcbiAgICAgIChsYXllcnNJblVpJCB8IGFzeW5jKS5sZW5ndGggJiZcbiAgICAgIChoYXNWaXNpYmxlT3JJblJhbmdlTGF5ZXJzJCB8IGFzeW5jKSA9PT0gZmFsc2UgJiZcbiAgICAgIChoYXNWaXNpYmxlQW5kTm90SW5SYW5nZUxheWVycyQgfCBhc3luYykgJiZcbiAgICAgICFhbGxvd1Nob3dBbGxMZWdlbmRzXG4gICAgXCJcbiAgPlxuICAgIHt7ICdpZ28uZ2VvLmxheWVyLmxlZ2VuZC5ub0xheWVyc1Zpc2libGVCdXRab29tJyB8IHRyYW5zbGF0ZSB9fVxuICA8L3A+XG48L2Rpdj5cbiJdfQ==