@igo2/geo 17.0.1-next.2 → 18.0.0-next.10

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 (418) hide show
  1. package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +4 -4
  2. package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +7 -9
  3. package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +16 -13
  4. package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +5 -5
  5. package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +4 -4
  6. package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +4 -4
  7. package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +4 -4
  8. package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +5 -5
  9. package/esm2022/lib/catalog/catalog.module.mjs +5 -5
  10. package/esm2022/lib/catalog/shared/catalog.enum.mjs +1 -1
  11. package/esm2022/lib/catalog/shared/catalog.service.mjs +4 -4
  12. package/esm2022/lib/datasource/shared/capabilities.service.mjs +4 -4
  13. package/esm2022/lib/datasource/shared/datasource.service.mjs +4 -4
  14. package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
  15. package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +9 -1
  16. package/esm2022/lib/datasource/shared/datasources/carto-datasource.interface.mjs +1 -1
  17. package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +8 -1
  18. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
  19. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +8 -1
  20. package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
  21. package/esm2022/lib/datasource/shared/datasources/datasource.mjs +8 -1
  22. package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
  23. package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +8 -1
  24. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
  25. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +8 -1
  26. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +1 -1
  27. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +4 -1
  28. package/esm2022/lib/datasource/shared/datasources/osm-datasource.interface.mjs +1 -1
  29. package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +1 -1
  30. package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +1 -1
  31. package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +8 -1
  32. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
  33. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.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 +73 -2
  37. package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +4 -4
  38. package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
  39. package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +8 -1
  40. package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +7 -5
  41. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
  42. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +1 -1
  43. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
  44. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +1 -1
  45. package/esm2022/lib/datasource/shared/options/options-api.service.mjs +4 -4
  46. package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +4 -4
  47. package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +4 -4
  48. package/esm2022/lib/directions/directions-results/directions-results.component.mjs +4 -4
  49. package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +4 -4
  50. package/esm2022/lib/directions/directions.component.mjs +10 -4
  51. package/esm2022/lib/directions/directions.module.mjs +5 -5
  52. package/esm2022/lib/directions/shared/directions.service.mjs +4 -4
  53. package/esm2022/lib/download/download-button/download-button.component.mjs +10 -22
  54. package/esm2022/lib/download/download.module.mjs +5 -5
  55. package/esm2022/lib/download/shared/download.service.mjs +4 -4
  56. package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +4 -4
  57. package/esm2022/lib/draw/draw/draw-popup.component.mjs +4 -4
  58. package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +4 -4
  59. package/esm2022/lib/draw/draw/draw.component.mjs +8 -15
  60. package/esm2022/lib/draw/draw/draw.module.mjs +5 -5
  61. package/esm2022/lib/draw/drawingTool.module.mjs +5 -5
  62. package/esm2022/lib/draw/shared/draw-icon.service.mjs +4 -4
  63. package/esm2022/lib/environment/environment.interface.mjs +1 -1
  64. package/esm2022/lib/feature/feature-details/feature-details.component.mjs +5 -5
  65. package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +4 -4
  66. package/esm2022/lib/feature/feature-details/feature-details.module.mjs +5 -5
  67. package/esm2022/lib/feature/feature-form/feature-form.component.mjs +4 -4
  68. package/esm2022/lib/feature/feature-form/feature-form.module.mjs +5 -5
  69. package/esm2022/lib/feature/feature.module.mjs +5 -5
  70. package/esm2022/lib/feature/shared/feature-store.utils.mjs +7 -6
  71. package/esm2022/lib/feature/shared/feature.interfaces.mjs +1 -1
  72. package/esm2022/lib/feature/shared/store.mjs +1 -1
  73. package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +3 -3
  74. package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +7 -4
  75. package/esm2022/lib/feature/shared/strategies/selection.mjs +5 -4
  76. package/esm2022/lib/filter/filter.module.mjs +5 -5
  77. package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +6 -6
  78. package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +4 -4
  79. package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +4 -4
  80. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +4 -4
  81. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +4 -4
  82. package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +4 -4
  83. package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +5 -5
  84. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +8 -6
  85. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +4 -4
  86. package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +11 -4
  87. package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +4 -4
  88. package/esm2022/lib/filter/shared/ogc-filter.mjs +7 -2
  89. package/esm2022/lib/filter/shared/ogc-filter.service.mjs +4 -4
  90. package/esm2022/lib/filter/shared/spatial-filter.service.mjs +4 -4
  91. package/esm2022/lib/filter/shared/time-filter.service.mjs +4 -4
  92. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +4 -4
  93. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +5 -11
  94. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +5 -11
  95. package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +5 -5
  96. package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +15 -12
  97. package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +5 -5
  98. package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +7 -5
  99. package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +7 -18
  100. package/esm2022/lib/geo.module.mjs +5 -5
  101. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +4 -4
  102. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +4 -4
  103. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +5 -5
  104. package/esm2022/lib/geometry/geometry.module.mjs +5 -5
  105. package/esm2022/lib/import-export/export-button/export-button.component.mjs +7 -20
  106. package/esm2022/lib/import-export/import-export/import-export.component.mjs +215 -323
  107. package/esm2022/lib/import-export/import-export.module.mjs +5 -5
  108. package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +4 -4
  109. package/esm2022/lib/import-export/shared/export.interface.mjs +1 -1
  110. package/esm2022/lib/import-export/shared/export.service.mjs +257 -91
  111. package/esm2022/lib/import-export/shared/export.type.mjs +9 -9
  112. package/esm2022/lib/import-export/shared/export.utils.mjs +5 -1
  113. package/esm2022/lib/import-export/shared/import.service.mjs +4 -4
  114. package/esm2022/lib/import-export/shared/import.utils.mjs +3 -3
  115. package/esm2022/lib/layer/index.mjs +10 -5
  116. package/esm2022/lib/layer/layer-group/index.mjs +2 -0
  117. package/esm2022/lib/layer/layer-group/layer-group.component.mjs +103 -0
  118. package/esm2022/lib/layer/layer-item/layer-item.component.mjs +62 -129
  119. package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +7 -10
  120. package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +4 -4
  121. package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +8 -9
  122. package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +16 -23
  123. package/esm2022/lib/layer/layer-list/index.mjs +1 -3
  124. package/esm2022/lib/layer/layer-list/layer-list.component.mjs +177 -776
  125. package/esm2022/lib/layer/layer-list-tool/index.mjs +1 -2
  126. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +52 -85
  127. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +7 -2
  128. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +57 -17
  129. package/esm2022/lib/layer/layer-search/index.mjs +2 -0
  130. package/esm2022/lib/layer/layer-search/layer-search.component.mjs +65 -0
  131. package/esm2022/lib/layer/layer-unavailable/index.mjs +3 -0
  132. package/esm2022/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.mjs +25 -0
  133. package/esm2022/lib/layer/layer-unavailable/layer-unavailable.component.mjs +35 -0
  134. package/esm2022/lib/layer/layer-viewer/index.mjs +3 -0
  135. package/esm2022/lib/layer/layer-viewer/layer-viewer.component.mjs +226 -0
  136. package/esm2022/lib/layer/layer-viewer/layer-viewer.interface.mjs +2 -0
  137. package/esm2022/lib/layer/layer-viewer-bottom-actions/index.mjs +2 -0
  138. package/esm2022/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.mjs +207 -0
  139. package/esm2022/lib/layer/layer-visibility-button/index.mjs +2 -0
  140. package/esm2022/lib/layer/layer-visibility-button/layer-visibility-button.component.mjs +83 -0
  141. package/esm2022/lib/layer/layer.module.mjs +54 -36
  142. package/esm2022/lib/layer/shared/index.mjs +2 -1
  143. package/esm2022/lib/layer/shared/layer-controller.mjs +316 -0
  144. package/esm2022/lib/layer/shared/layer-selection.mjs +38 -0
  145. package/esm2022/lib/layer/shared/layer.service.mjs +73 -27
  146. package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
  147. package/esm2022/lib/layer/shared/layers/any-layer.mjs +1 -1
  148. package/esm2022/lib/layer/shared/layers/image-layer.interface.mjs +1 -1
  149. package/esm2022/lib/layer/shared/layers/image-layer.mjs +8 -3
  150. package/esm2022/lib/layer/shared/layers/index.mjs +6 -1
  151. package/esm2022/lib/layer/shared/layers/layer-base.mjs +199 -0
  152. package/esm2022/lib/layer/shared/layers/layer-group.interface.mjs +2 -0
  153. package/esm2022/lib/layer/shared/layers/layer-group.mjs +120 -0
  154. package/esm2022/lib/layer/shared/layers/layer.interface.mjs +1 -11
  155. package/esm2022/lib/layer/shared/layers/layer.mjs +114 -118
  156. package/esm2022/lib/layer/shared/layers/linked/index.mjs +4 -0
  157. package/esm2022/lib/layer/shared/layers/linked/linked-layer.interface.mjs +12 -0
  158. package/esm2022/lib/layer/shared/layers/linked/linked-layer.mjs +242 -0
  159. package/esm2022/lib/layer/shared/layers/linked/linked-layer.utils.mjs +70 -0
  160. package/esm2022/lib/layer/shared/layers/tile-layer.mjs +8 -3
  161. package/esm2022/lib/layer/shared/layers/vector-layer.mjs +22 -19
  162. package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +8 -3
  163. package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +4 -4
  164. package/esm2022/lib/layer/utils/layer.utils.mjs +47 -1
  165. package/esm2022/lib/layer/utils/outputLegend.mjs +5 -1
  166. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +6 -6
  167. package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +11 -9
  168. package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +4 -4
  169. package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +4 -4
  170. package/esm2022/lib/map/info-section/info-section.component.mjs +4 -4
  171. package/esm2022/lib/map/map-browser/map-browser.component.mjs +4 -4
  172. package/esm2022/lib/map/map-center/map-center.component.mjs +4 -4
  173. package/esm2022/lib/map/map.module.mjs +5 -5
  174. package/esm2022/lib/map/menu-button/menu-button.component.mjs +4 -4
  175. package/esm2022/lib/map/offline-button/offline-button.component.mjs +4 -4
  176. package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +4 -4
  177. package/esm2022/lib/map/shared/hover-feature.directive.mjs +5 -13
  178. package/esm2022/lib/map/shared/linkedLayers.utils.mjs +113 -123
  179. package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +4 -4
  180. package/esm2022/lib/map/shared/map.abstract.mjs +4 -3
  181. package/esm2022/lib/map/shared/map.mjs +7 -243
  182. package/esm2022/lib/map/shared/map.service.mjs +4 -4
  183. package/esm2022/lib/map/shared/mapOffline.directive.mjs +12 -8
  184. package/esm2022/lib/map/shared/projection.service.mjs +4 -4
  185. package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +4 -4
  186. package/esm2022/lib/map/utils/index.mjs +2 -0
  187. package/esm2022/lib/map/utils/layer-watcher.mjs +45 -13
  188. package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +4 -5
  189. package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +4 -4
  190. package/esm2022/lib/measure/measure.module.mjs +5 -5
  191. package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +4 -4
  192. package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +4 -4
  193. package/esm2022/lib/measure/measurer/measurer-item.component.mjs +4 -4
  194. package/esm2022/lib/measure/measurer/measurer.component.mjs +10 -28
  195. package/esm2022/lib/measure/measurer/measurer.module.mjs +5 -5
  196. package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +11 -23
  197. package/esm2022/lib/metadata/metadata.module.mjs +5 -5
  198. package/esm2022/lib/metadata/shared/metadata.service.mjs +4 -4
  199. package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +5 -8
  200. package/esm2022/lib/offline/geoDB/geoDB.service.mjs +21 -22
  201. package/esm2022/lib/offline/index.mjs +3 -1
  202. package/esm2022/lib/offline/layerDB/layerDB.service.mjs +16 -17
  203. package/esm2022/lib/offline/offline.interface.mjs +2 -0
  204. package/esm2022/lib/offline/offline.provider.mjs +51 -0
  205. package/esm2022/lib/offline/shared/geo-network.service.mjs +15 -16
  206. package/esm2022/lib/overlay/shared/overlay.mjs +3 -2
  207. package/esm2022/lib/print/print/print.component.mjs +4 -4
  208. package/esm2022/lib/print/print-form/print-form.component.mjs +4 -4
  209. package/esm2022/lib/print/print.module.mjs +5 -5
  210. package/esm2022/lib/print/shared/print.service.mjs +6 -6
  211. package/esm2022/lib/query/query.module.mjs +5 -5
  212. package/esm2022/lib/query/shared/query-search-source.mjs +4 -4
  213. package/esm2022/lib/query/shared/query.directive.mjs +12 -8
  214. package/esm2022/lib/query/shared/query.service.mjs +10 -10
  215. package/esm2022/lib/query/shared/query.utils.mjs +5 -1
  216. package/esm2022/lib/search/search-bar/search-bar.component.mjs +4 -4
  217. package/esm2022/lib/search/search-bar/search-bar.module.mjs +5 -5
  218. package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +4 -4
  219. package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +18 -12
  220. package/esm2022/lib/search/search-results/search-results-item.component.mjs +4 -4
  221. package/esm2022/lib/search/search-results/search-results.component.mjs +4 -4
  222. package/esm2022/lib/search/search-results/search-results.module.mjs +5 -5
  223. package/esm2022/lib/search/search-selector/search-selector.component.mjs +4 -4
  224. package/esm2022/lib/search/search-selector/search-selector.module.mjs +5 -5
  225. package/esm2022/lib/search/search-settings/search-settings.component.mjs +4 -4
  226. package/esm2022/lib/search/search-settings/search-settings.module.mjs +5 -5
  227. package/esm2022/lib/search/search.module.mjs +5 -5
  228. package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +5 -14
  229. package/esm2022/lib/search/shared/search.service.mjs +4 -4
  230. package/esm2022/lib/search/shared/sources/cadastre.mjs +4 -4
  231. package/esm2022/lib/search/shared/sources/coordinates.mjs +7 -7
  232. package/esm2022/lib/search/shared/sources/icherche.mjs +10 -10
  233. package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
  234. package/esm2022/lib/search/shared/sources/ilayer.mjs +7 -7
  235. package/esm2022/lib/search/shared/sources/nominatim.mjs +4 -4
  236. package/esm2022/lib/search/shared/sources/storedqueries.mjs +7 -7
  237. package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +1 -1
  238. package/esm2022/lib/search/shared/sources/workspace.mjs +4 -4
  239. package/esm2022/lib/style/style-list/style-list.module.mjs +5 -5
  240. package/esm2022/lib/style/style-list/style-list.service.mjs +4 -4
  241. package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +4 -4
  242. package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +4 -4
  243. package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +4 -4
  244. package/esm2022/lib/style/style-service/draw-style.service.mjs +4 -4
  245. package/esm2022/lib/style/style-service/style.service.mjs +4 -4
  246. package/esm2022/lib/style/style.module.mjs +5 -5
  247. package/esm2022/lib/toast/toast.component.mjs +4 -4
  248. package/esm2022/lib/toast/toast.module.mjs +5 -5
  249. package/esm2022/lib/utils/id-generator.mjs +1 -1
  250. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +4 -4
  251. package/esm2022/lib/wkt/shared/wkt.service.mjs +4 -4
  252. package/esm2022/lib/wkt/wkt.module.mjs +5 -5
  253. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +4 -4
  254. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +5 -5
  255. package/esm2022/lib/workspace/shared/edition-workspace.mjs +6 -4
  256. package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +22 -20
  257. package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +4 -4
  258. package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +20 -5
  259. package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +25 -7
  260. package/esm2022/lib/workspace/shared/workspace.utils.mjs +6 -3
  261. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +5 -5
  262. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +5 -5
  263. package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +9 -5
  264. package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +5 -5
  265. package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +7 -6
  266. package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +5 -5
  267. package/esm2022/lib/workspace/workspace.module.mjs +5 -5
  268. package/fesm2022/igo2-geo.mjs +19275 -18300
  269. package/fesm2022/igo2-geo.mjs.map +1 -1
  270. package/lib/catalog/shared/catalog.enum.d.ts +1 -3
  271. package/lib/datasource/shared/capabilities.service.d.ts +7 -2
  272. package/lib/datasource/shared/datasources/any-datasource.interface.d.ts +1 -0
  273. package/lib/datasource/shared/datasources/arcgisrest-datasource.d.ts +1 -0
  274. package/lib/datasource/shared/datasources/carto-datasource.d.ts +1 -0
  275. package/lib/datasource/shared/datasources/carto-datasource.interface.d.ts +0 -2
  276. package/lib/datasource/shared/datasources/cluster-datasource.d.ts +1 -0
  277. package/lib/datasource/shared/datasources/cluster-datasource.interface.d.ts +0 -1
  278. package/lib/datasource/shared/datasources/datasource.d.ts +1 -0
  279. package/lib/datasource/shared/datasources/datasource.interface.d.ts +1 -2
  280. package/lib/datasource/shared/datasources/feature-datasource.d.ts +1 -0
  281. package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +0 -3
  282. package/lib/datasource/shared/datasources/imagearcgisrest-datasource.d.ts +1 -0
  283. package/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.d.ts +0 -2
  284. package/lib/datasource/shared/datasources/mvt-datasource.d.ts +1 -0
  285. package/lib/datasource/shared/datasources/mvt-datasource.interface.d.ts +0 -2
  286. package/lib/datasource/shared/datasources/osm-datasource.interface.d.ts +0 -2
  287. package/lib/datasource/shared/datasources/tilearcgisrest-datasource.d.ts +1 -0
  288. package/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.d.ts +0 -2
  289. package/lib/datasource/shared/datasources/tiledebug-datasource.interface.d.ts +0 -2
  290. package/lib/datasource/shared/datasources/wfs-datasource.d.ts +16 -0
  291. package/lib/datasource/shared/datasources/wfs-datasource.interface.d.ts +3 -4
  292. package/lib/datasource/shared/datasources/wms-datasource.d.ts +1 -0
  293. package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +7 -7
  294. package/lib/datasource/shared/datasources/wmts-datasource.interface.d.ts +0 -2
  295. package/lib/datasource/shared/datasources/xyz-datasource.interface.d.ts +0 -2
  296. package/lib/download/download-button/download-button.component.d.ts +4 -8
  297. package/lib/download/shared/download.service.d.ts +1 -1
  298. package/lib/draw/draw/draw.component.d.ts +2 -2
  299. package/lib/environment/environment.interface.d.ts +2 -0
  300. package/lib/feature/shared/feature-store.utils.d.ts +2 -2
  301. package/lib/feature/shared/feature.interfaces.d.ts +1 -1
  302. package/lib/feature/shared/store.d.ts +2 -2
  303. package/lib/filter/ogc-filter-button/ogc-filter-button.component.d.ts +1 -1
  304. package/lib/filter/ogc-filterable-item/ogc-filterable-item.component.d.ts +1 -1
  305. package/lib/filter/ogc-filterable-list/ogc-filterable-list.component.d.ts +2 -2
  306. package/lib/filter/shared/filterable-datasource.pipe.d.ts +2 -2
  307. package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +3 -3
  308. package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +3 -5
  309. package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +3 -5
  310. package/lib/filter/time-filter-button/time-filter-button.component.d.ts +1 -1
  311. package/lib/filter/time-filter-form/time-filter-form.component.d.ts +5 -5
  312. package/lib/filter/time-filter-item/time-filter-item.component.d.ts +1 -1
  313. package/lib/filter/time-filter-list/time-filter-list.component.d.ts +2 -7
  314. package/lib/import-export/export-button/export-button.component.d.ts +3 -7
  315. package/lib/import-export/import-export/import-export.component.d.ts +23 -16
  316. package/lib/import-export/shared/export.interface.d.ts +10 -3
  317. package/lib/import-export/shared/export.service.d.ts +28 -15
  318. package/lib/import-export/shared/export.type.d.ts +8 -16
  319. package/lib/import-export/shared/export.utils.d.ts +2 -0
  320. package/lib/layer/index.d.ts +9 -4
  321. package/lib/layer/layer-group/index.d.ts +1 -0
  322. package/lib/layer/layer-group/layer-group.component.d.ts +30 -0
  323. package/lib/layer/layer-item/layer-item.component.d.ts +19 -38
  324. package/lib/layer/layer-legend/layer-legend.component.d.ts +2 -5
  325. package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +6 -7
  326. package/lib/layer/layer-list/index.d.ts +0 -2
  327. package/lib/layer/layer-list/layer-list.component.d.ts +51 -123
  328. package/lib/layer/layer-list-tool/index.d.ts +0 -1
  329. package/lib/layer/layer-list-tool/layer-list-tool.component.d.ts +19 -26
  330. package/lib/layer/layer-list-tool/layer-list-tool.interface.d.ts +5 -1
  331. package/lib/layer/layer-list-tool/layer-list-tool.service.d.ts +9 -8
  332. package/lib/layer/layer-search/index.d.ts +1 -0
  333. package/lib/layer/layer-search/layer-search.component.d.ts +16 -0
  334. package/lib/layer/layer-unavailable/index.d.ts +2 -0
  335. package/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.d.ts +10 -0
  336. package/lib/layer/layer-unavailable/layer-unavailable.component.d.ts +11 -0
  337. package/lib/layer/layer-viewer/index.d.ts +2 -0
  338. package/lib/layer/layer-viewer/layer-viewer.component.d.ts +52 -0
  339. package/lib/layer/layer-viewer/layer-viewer.interface.d.ts +22 -0
  340. package/lib/layer/layer-viewer-bottom-actions/index.d.ts +1 -0
  341. package/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.d.ts +44 -0
  342. package/lib/layer/layer-visibility-button/index.d.ts +1 -0
  343. package/lib/layer/layer-visibility-button/layer-visibility-button.component.d.ts +22 -0
  344. package/lib/layer/layer.module.d.ts +18 -6
  345. package/lib/layer/shared/index.d.ts +1 -0
  346. package/lib/layer/shared/layer-controller.d.ts +81 -0
  347. package/lib/layer/shared/layer-selection.d.ts +14 -0
  348. package/lib/layer/shared/layer.service.d.ts +17 -8
  349. package/lib/layer/shared/layers/any-layer.d.ts +3 -6
  350. package/lib/layer/shared/layers/any-layer.interface.d.ts +8 -6
  351. package/lib/layer/shared/layers/image-layer.d.ts +5 -2
  352. package/lib/layer/shared/layers/image-layer.interface.d.ts +1 -4
  353. package/lib/layer/shared/layers/index.d.ts +5 -0
  354. package/lib/layer/shared/layers/layer-base.d.ts +75 -0
  355. package/lib/layer/shared/layers/layer-group.d.ts +32 -0
  356. package/lib/layer/shared/layers/layer-group.interface.d.ts +8 -0
  357. package/lib/layer/shared/layers/layer.d.ts +28 -49
  358. package/lib/layer/shared/layers/layer.interface.d.ts +23 -41
  359. package/lib/layer/shared/layers/linked/index.d.ts +3 -0
  360. package/lib/layer/shared/layers/linked/linked-layer.d.ts +35 -0
  361. package/lib/layer/shared/layers/linked/linked-layer.interface.d.ts +32 -0
  362. package/lib/layer/shared/layers/linked/linked-layer.utils.d.ts +9 -0
  363. package/lib/layer/shared/layers/tile-layer.d.ts +5 -2
  364. package/lib/layer/shared/layers/vector-layer.d.ts +8 -7
  365. package/lib/layer/shared/layers/vectortile-layer.d.ts +5 -2
  366. package/lib/layer/utils/layer.utils.d.ts +12 -2
  367. package/lib/layer/utils/outputLegend.d.ts +2 -2
  368. package/lib/map/shared/hover-feature.directive.d.ts +0 -1
  369. package/lib/map/shared/linkedLayers.utils.d.ts +13 -17
  370. package/lib/map/shared/map.abstract.d.ts +12 -29
  371. package/lib/map/shared/map.d.ts +10 -85
  372. package/lib/map/shared/map.service.d.ts +1 -1
  373. package/lib/map/utils/index.d.ts +1 -0
  374. package/lib/map/utils/layer-watcher.d.ts +18 -8
  375. package/lib/measure/measurer/measurer.component.d.ts +0 -8
  376. package/lib/metadata/metadata-button/metadata-button.component.d.ts +3 -7
  377. package/lib/offline/geoDB/geoDB.service.d.ts +1 -1
  378. package/lib/offline/index.d.ts +2 -0
  379. package/lib/offline/layerDB/layerDB.service.d.ts +1 -1
  380. package/lib/offline/offline.interface.d.ts +3 -0
  381. package/lib/offline/offline.provider.d.ts +3 -0
  382. package/lib/offline/shared/geo-network.service.d.ts +3 -3
  383. package/lib/overlay/shared/overlay.d.ts +2 -1
  384. package/lib/query/shared/query.service.d.ts +1 -1
  385. package/lib/query/shared/query.utils.d.ts +2 -1
  386. package/lib/search/search-results/search-results-add-button.component.d.ts +1 -1
  387. package/lib/search/shared/search-pointer-summary.directive.d.ts +0 -1
  388. package/lib/search/shared/sources/cadastre.providers.d.ts +1 -1
  389. package/lib/search/shared/sources/coordinates.providers.d.ts +1 -1
  390. package/lib/search/shared/sources/icherche.providers.d.ts +1 -1
  391. package/lib/search/shared/sources/ilayer.interfaces.d.ts +1 -1
  392. package/lib/search/shared/sources/ilayer.providers.d.ts +1 -1
  393. package/lib/search/shared/sources/nominatim.providers.d.ts +1 -1
  394. package/lib/search/shared/sources/storedqueries.providers.d.ts +2 -2
  395. package/lib/search/shared/sources/workspace.interfaces.d.ts +1 -1
  396. package/lib/search/shared/sources/workspace.providers.d.ts +1 -1
  397. package/lib/utils/id-generator.d.ts +5 -5
  398. package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +1 -1
  399. package/locale/en.geo.json +27 -3
  400. package/locale/fr.geo.json +26 -3
  401. package/package.json +6 -7
  402. package/src/_index.scss +2 -1
  403. package/src/geo-theme.scss +1 -1
  404. package/src/lib/layer/layer-group/layer-group.theme.scss +28 -0
  405. package/src/lib/layer/layer-item/layer-item.theme.scss +12 -9
  406. package/src/lib/layer/layer-legend/layer-legend.theme.scss +30 -0
  407. package/src/lib/layer/layer-list/layer-list.theme.scss +50 -0
  408. package/src/lib/layer/layer-unavailable/layer-unavailable.theme.scss +19 -0
  409. package/src/lib/layer/layer-viewer/_layer-viewer.theme.scss +16 -0
  410. package/src/lib/layer/layer-visibility-button/layer-visibility-button.theme.scss +27 -0
  411. package/src/lib/layer/layer.theming.scss +14 -3
  412. package/esm2022/lib/layer/layer-list/layer-list-binding.directive.mjs +0 -70
  413. package/esm2022/lib/layer/layer-list/layer-list.enum.mjs +0 -19
  414. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.enum.mjs +0 -7
  415. package/lib/layer/layer-list/layer-list-binding.directive.d.ts +0 -19
  416. package/lib/layer/layer-list/layer-list.enum.d.ts +0 -15
  417. package/lib/layer/layer-list-tool/layer-list-tool.enum.d.ts +0 -5
  418. package/src/lib/layer/layer-legend/layer-legend.theming.scss +0 -10
@@ -71,7 +71,7 @@ export class SearchResultAddButtonComponent {
71
71
  _color = 'primary';
72
72
  stores = [];
73
73
  get allLayers() {
74
- return this.map.layers.filter((layer) => String(layer.id).includes('igo-search-layer'));
74
+ return this.map.layerController.all.filter((layer) => String(layer.id).includes('igo-search-layer'));
75
75
  }
76
76
  mediaService$$;
77
77
  isMobile = false;
@@ -92,10 +92,9 @@ export class SearchResultAddButtonComponent {
92
92
  }
93
93
  });
94
94
  if (this.layer.meta.dataType === 'Layer') {
95
- this.added =
96
- this.map.layers.findIndex((lay) => lay.id === this.layer.data.sourceOptions.id) !== -1;
95
+ this.added = !!this.map.layerController.getBySourceId(this.layer.data.sourceOptions.id);
97
96
  }
98
- this.layers$$ = this.map.layers$.subscribe(() => {
97
+ this.layers$$ = this.map.layerController.all$.subscribe(() => {
99
98
  this.isVisible();
100
99
  });
101
100
  this.resolution$$ = this.map.viewController.resolution$.subscribe((value) => {
@@ -151,6 +150,7 @@ export class SearchResultAddButtonComponent {
151
150
  this.mouseInsideAdd = true;
152
151
  break;
153
152
  case 'mouseleave':
153
+ clearTimeout(this.lastTimeoutRequest);
154
154
  if (this.isPreview$.value) {
155
155
  this.remove();
156
156
  this.isPreview$.next(false);
@@ -190,10 +190,13 @@ export class SearchResultAddButtonComponent {
190
190
  layerOptions.sourceOptions.optionsFromApi = true;
191
191
  }
192
192
  this.layersSubcriptions.push(this.layerService.createAsyncLayer(layerOptions).subscribe((layer) => {
193
+ if (!layer) {
194
+ return;
195
+ }
193
196
  if (event.type === 'click') {
194
197
  this.map.layersAddedByClick$.next([layer]);
195
198
  }
196
- this.map.addLayer(layer);
199
+ this.map.layerController.add(layer);
197
200
  }));
198
201
  }
199
202
  /**
@@ -206,8 +209,11 @@ export class SearchResultAddButtonComponent {
206
209
  if (this.layer.meta.dataType !== LAYER) {
207
210
  return undefined;
208
211
  }
209
- const oLayer = this.map.getLayerById(this.layer.data.sourceOptions.id);
210
- this.map.removeLayer(oLayer);
212
+ const layer = this.map.layerController.getBySourceId(this.layer.data.sourceOptions.id);
213
+ if (!layer) {
214
+ return;
215
+ }
216
+ this.map.layerController.remove(layer);
211
217
  }
212
218
  isInResolutionsRange(resolution) {
213
219
  const minResolution = this.layer.data.minResolution || 0;
@@ -216,7 +222,7 @@ export class SearchResultAddButtonComponent {
216
222
  }
217
223
  isVisible() {
218
224
  if (this.layer?.data?.sourceOptions?.id) {
219
- const oLayer = this.map.getLayerById(this.layer.data.sourceOptions.id);
225
+ const oLayer = this.map.layerController.getBySourceId(this.layer.data.sourceOptions.id);
220
226
  this.isVisible$.next(oLayer?.visible ?? false);
221
227
  }
222
228
  }
@@ -393,10 +399,10 @@ export class SearchResultAddButtonComponent {
393
399
  }
394
400
  });
395
401
  }
396
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: SearchResultAddButtonComponent, deps: [{ token: i1.LayerService }, { token: i2.MatDialog }, { token: i3.DataSourceService }, { token: i4.MediaService }], target: i0.ɵɵFactoryTarget.Component });
397
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: SearchResultAddButtonComponent, isStandalone: true, selector: "igo-search-add-button", inputs: { layer: "layer", store: "store", added: "added", map: "map", saveSearchResultInLayer: "saveSearchResultInLayer", color: "color", stores: "stores" }, ngImport: i0, template: "<button\n igoStopPropagation\n (mouseenter)=\"onMouseEvent($event)\"\n (mouseleave)=\"onMouseEvent($event)\"\n *ngIf=\"layer.meta.dataType === 'Layer'\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"computeTooltip() | translate\"\n [color]=\"(isPreview$ | async) ? '' : added ? 'warn' : ''\"\n (click)=\"onToggleClick($event)\"\n>\n <mat-icon\n aria-hidden=\"false\"\n matBadge=\"icon\"\n [igoMatBadgeIcon]=\"getBadgeIcon()\"\n igoMatBadgeColor=\"rgba(0,0,0,0.87)\"\n igoMatBadgeBackgroundColor=\"none\"\n [igoMatBadgeInverseColor]=\"true\"\n [matBadgeHidden]=\"\n ((inRange$ | async) && (isVisible$ | async) === true) ||\n ((inRange$ | async) && !added) ||\n ((inRange$ | async) && (isPreview$ | async))\n \"\n [matBadgeDisabled]=\"(inRange$ | async) === false\"\n matBadgeSize=\"small\"\n matBadgePosition=\"after\"\n >{{ (isPreview$ | async) ? 'add' : added ? 'delete' : 'add' }}\n </mat-icon>\n</button>\n\n<button\n [id]=\"!isMobile ? 'hide-save-search-result-btn' : ''\"\n igoStopPropagation\n *ngIf=\"layer.meta.dataType === 'Feature' && saveSearchResultInLayer\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"addFeatureToLayerTooltip$ | async | translate\"\n (click)=\"addFeatureToLayer()\"\n>\n <mat-icon\n aria-hidden=\"false\"\n matBadge=\"icon\"\n igoMatBadgeIcon=\"visibility_off\"\n [igoMatBadgeInverseColor]=\"true\"\n [matBadgeHidden]=\"inRange$ | async\"\n [matBadgeDisabled]=\"true\"\n matBadgeSize=\"small\"\n matBadgePosition=\"after\"\n >add_to_photos\n </mat-icon>\n</button>\n", styles: [":host #hide-save-search-result-btn{display:none}:host #show-save-search-result-btn{display:block}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: StopPropagationDirective, selector: "[igoStopPropagation]" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i8.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "directive", type: IgoBadgeIconDirective, selector: "[igoMatBadgeIcon]", inputs: ["igoMatBadgeIcon", "matBadgeHidden", "matBadgeDisabled", "igoMatBadgeInverseColor", "igoMatBadgeInheritColor", "igoMatBadgeColor", "igoMatBadgeBackgroundColor"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
402
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchResultAddButtonComponent, deps: [{ token: i1.LayerService }, { token: i2.MatDialog }, { token: i3.DataSourceService }, { token: i4.MediaService }], target: i0.ɵɵFactoryTarget.Component });
403
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchResultAddButtonComponent, isStandalone: true, selector: "igo-search-add-button", inputs: { layer: "layer", store: "store", added: "added", map: "map", saveSearchResultInLayer: "saveSearchResultInLayer", color: "color", stores: "stores" }, ngImport: i0, template: "<button\n igoStopPropagation\n (mouseenter)=\"onMouseEvent($event)\"\n (mouseleave)=\"onMouseEvent($event)\"\n *ngIf=\"layer.meta.dataType === 'Layer'\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"computeTooltip() | translate\"\n [color]=\"(isPreview$ | async) ? '' : added ? 'warn' : ''\"\n (click)=\"onToggleClick($event)\"\n>\n <mat-icon\n aria-hidden=\"false\"\n matBadge=\"icon\"\n [igoMatBadgeIcon]=\"getBadgeIcon()\"\n igoMatBadgeColor=\"rgba(0,0,0,0.87)\"\n igoMatBadgeBackgroundColor=\"none\"\n [igoMatBadgeInverseColor]=\"true\"\n [matBadgeHidden]=\"\n ((inRange$ | async) && (isVisible$ | async) === true) ||\n ((inRange$ | async) && !added) ||\n ((inRange$ | async) && (isPreview$ | async))\n \"\n [matBadgeDisabled]=\"(inRange$ | async) === false\"\n matBadgeSize=\"small\"\n matBadgePosition=\"after\"\n >{{ (isPreview$ | async) ? 'add' : added ? 'delete' : 'add' }}\n </mat-icon>\n</button>\n\n<button\n [id]=\"!isMobile ? 'hide-save-search-result-btn' : ''\"\n igoStopPropagation\n *ngIf=\"layer.meta.dataType === 'Feature' && saveSearchResultInLayer\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"addFeatureToLayerTooltip$ | async | translate\"\n (click)=\"addFeatureToLayer()\"\n>\n <mat-icon\n aria-hidden=\"false\"\n matBadge=\"icon\"\n igoMatBadgeIcon=\"visibility_off\"\n [igoMatBadgeInverseColor]=\"true\"\n [matBadgeHidden]=\"inRange$ | async\"\n [matBadgeDisabled]=\"true\"\n matBadgeSize=\"small\"\n matBadgePosition=\"after\"\n >add_to_photos\n </mat-icon>\n</button>\n", styles: [":host #hide-save-search-result-btn{display:none}:host #show-save-search-result-btn{display:block}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: StopPropagationDirective, selector: "[igoStopPropagation]" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i8.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "directive", type: IgoBadgeIconDirective, selector: "[igoMatBadgeIcon]", inputs: ["igoMatBadgeIcon", "matBadgeHidden", "matBadgeDisabled", "igoMatBadgeInverseColor", "igoMatBadgeInheritColor", "igoMatBadgeColor", "igoMatBadgeBackgroundColor"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
398
404
  }
399
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: SearchResultAddButtonComponent, decorators: [{
405
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchResultAddButtonComponent, decorators: [{
400
406
  type: Component,
401
407
  args: [{ selector: 'igo-search-add-button', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
402
408
  NgIf,
@@ -424,4 +430,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
424
430
  }], stores: [{
425
431
  type: Input
426
432
  }] } });
427
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdHMtYWRkLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9zZWFyY2gvc2VhcmNoLXJlc3VsdHMvc2VhcmNoLXJlc3VsdHMtYWRkLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9zZWFyY2gvc2VhcmNoLXJlc3VsdHMvc2VhcmNoLXJlc3VsdHMtYWRkLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJdkQsT0FBTyxNQUFNLE1B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QUUsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdkMsQ0FBQztRQUNILENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQzt1R0F4YVUsOEJBQThCOzJGQUE5Qiw4QkFBOEIsK09DckUzQyxpcURBcURBLDZKREtJLElBQUksNEZBQ0osZUFBZSw0SUFDZix3QkFBd0IsZ0VBQ3hCLGdCQUFnQiw0VEFDaEIsYUFBYSxtTEFDYixjQUFjLDRQQUNkLHFCQUFxQixvT0FDckIsU0FBUyw2Q0FDVCxpQkFBaUI7OzJGQUdSLDhCQUE4QjtrQkFsQjFDLFNBQVM7K0JBQ0UsdUJBQXVCLG1CQUdoQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxJQUFJO3dCQUNKLGVBQWU7d0JBQ2Ysd0JBQXdCO3dCQUN4QixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxxQkFBcUI7d0JBQ3JCLFNBQVM7d0JBQ1QsaUJBQWlCO3FCQUNsQjtvS0EwQlEsS0FBSztzQkFBYixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxLQUFLO3NCQUFiLEtBQUs7Z0JBS0csR0FBRztzQkFBWCxLQUFLO2dCQUtHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFHRixLQUFLO3NCQURSLEtBQUs7Z0JBU0csTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJhZGdlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYmFkZ2UnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5cbmltcG9ydCB7IElnb0JhZGdlSWNvbkRpcmVjdGl2ZSB9IGZyb20gJ0BpZ28yL2NvbW1vbi9iYWRnZSc7XG5pbXBvcnQgeyBFbnRpdHlTdG9yZSB9IGZyb20gJ0BpZ28yL2NvbW1vbi9lbnRpdHknO1xuaW1wb3J0IHsgU3RvcFByb3BhZ2F0aW9uRGlyZWN0aXZlIH0gZnJvbSAnQGlnbzIvY29tbW9uL3N0b3AtcHJvcGFnYXRpb24nO1xuaW1wb3J0IHsgSWdvTGFuZ3VhZ2VNb2R1bGUgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcbmltcG9ydCB7IE1lZGlhLCBNZWRpYVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL21lZGlhJztcblxuaW1wb3J0IE9sT3ZlcmxheSBmcm9tICdvbC9PdmVybGF5JztcbmltcG9ydCB7IFZlY3RvclNvdXJjZUV2ZW50IGFzIE9sVmVjdG9yU291cmNlRXZlbnQgfSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yJztcbmltcG9ydCBDaXJjbGUgZnJvbSAnb2wvc3R5bGUvQ2lyY2xlJztcbmltcG9ydCBGaWxsIGZyb20gJ29sL3N0eWxlL0ZpbGwnO1xuaW1wb3J0IFN0cm9rZSBmcm9tICdvbC9zdHlsZS9TdHJva2UnO1xuaW1wb3J0IFN0eWxlIGZyb20gJ29sL3N0eWxlL1N0eWxlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRha2UgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRGF0YVNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmVhdHVyZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcyc7XG5pbXBvcnQge1xuICBGZWF0dXJlLFxuICBGZWF0dXJlTW90aW9uLFxuICBGZWF0dXJlU3RvcmUsXG4gIEZlYXR1cmVTdG9yZUxvYWRpbmdTdHJhdGVneSxcbiAgRmVhdHVyZVN0b3JlU2VsZWN0aW9uU3RyYXRlZ3ksXG4gIHRyeUFkZExvYWRpbmdTdHJhdGVneSxcbiAgdHJ5QWRkU2VsZWN0aW9uU3RyYXRlZ3ksXG4gIHRyeUJpbmRTdG9yZUxheWVyXG59IGZyb20gJy4uLy4uL2ZlYXR1cmUnO1xuaW1wb3J0IHsgTEFZRVIgfSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvbGF5ZXIuZW51bXMnO1xuaW1wb3J0IHsgTGF5ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTGF5ZXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycy9sYXllci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVmVjdG9yTGF5ZXIgfSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvbGF5ZXJzL3ZlY3Rvci1sYXllcic7XG5pbXBvcnQgeyBJZ29NYXAgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcCc7XG5pbXBvcnQgeyBnZXRUb29sdGlwc09mT2xHZW9tZXRyeSB9IGZyb20gJy4uLy4uL21lYXN1cmUnO1xuaW1wb3J0IHsgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9xdWVyeS9zaGFyZWQnO1xuaW1wb3J0IHsgU2VhcmNoUmVzdWx0IH0gZnJvbSAnLi4vc2hhcmVkL3NlYXJjaC5pbnRlcmZhY2VzJztcbmltcG9ydCB7IFNhdmVGZWF0dXJlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9zYXZlLWZlYXR1cmUtZGlhbG9nLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1zZWFyY2gtYWRkLWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtcmVzdWx0cy1hZGQtYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLXJlc3VsdHMtYWRkLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nSWYsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIFN0b3BQcm9wYWdhdGlvbkRpcmVjdGl2ZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0QmFkZ2VNb2R1bGUsXG4gICAgSWdvQmFkZ2VJY29uRGlyZWN0aXZlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBJZ29MYW5ndWFnZU1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaFJlc3VsdEFkZEJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIHRvb2x0aXAkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KFxuICAgICdpZ28uZ2VvLmNhdGFsb2cubGF5ZXIuYWRkVG9NYXAnXG4gICk7XG5cbiAgcHVibGljIGFkZEZlYXR1cmVUb0xheWVyVG9vbHRpcCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oXG4gICAgJ2lnby5nZW8uc2VhcmNoLmFkZFRvTGF5ZXInXG4gICk7XG5cbiAgcHJpdmF0ZSByZXNvbHV0aW9uJCQ6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBsYXllcnMkJDogU3Vic2NyaXB0aW9uO1xuXG4gIHB1YmxpYyBpblJhbmdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgcHVibGljIGlzVmlzaWJsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwdWJsaWMgaXNQcmV2aWV3JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgbGF5ZXJzU3ViY3JpcHRpb25zID0gW107XG5cbiAgcHJpdmF0ZSBsYXN0VGltZW91dFJlcXVlc3Q7XG5cbiAgcHJpdmF0ZSBtb3VzZUluc2lkZUFkZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGxheWVyOiBTZWFyY2hSZXN1bHQ7XG5cbiAgQElucHV0KCkgc3RvcmU6IEVudGl0eVN0b3JlPFNlYXJjaFJlc3VsdD47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGxheWVyIGlzIGFscmVhZHkgYWRkZWQgdG8gdGhlIG1hcFxuICAgKi9cbiAgQElucHV0KCkgYWRkZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBtYXAgdG8gYWRkIHRoZSBzZWFyY2ggcmVzdWx0IGxheWVyIHRvXG4gICAqL1xuICBASW5wdXQoKSBtYXA6IElnb01hcDtcblxuICAvKipcbiAgICogc2hvdyBoaWRlIHNhdmUgc2VhcmNoIHJlc3VsdCBpbiBsYXllciBidXR0b25cbiAgICovXG4gIEBJbnB1dCgpIHNhdmVTZWFyY2hSZXN1bHRJbkxheWVyID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgZ2V0IGNvbG9yKCkge1xuICAgIHJldHVybiB0aGlzLl9jb2xvcjtcbiAgfVxuICBzZXQgY29sb3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2NvbG9yID0gdmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfY29sb3IgPSAncHJpbWFyeSc7XG5cbiAgQElucHV0KCkgc3RvcmVzOiBGZWF0dXJlU3RvcmU8RmVhdHVyZT5bXSA9IFtdO1xuXG4gIGdldCBhbGxMYXllcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwLmxheWVycy5maWx0ZXIoKGxheWVyKSA9PlxuICAgICAgU3RyaW5nKGxheWVyLmlkKS5pbmNsdWRlcygnaWdvLXNlYXJjaC1sYXllcicpXG4gICAgKTtcbiAgfVxuICBwcml2YXRlIG1lZGlhU2VydmljZSQkOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBpc01vYmlsZSA9IGZhbHNlO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxheWVyU2VydmljZTogTGF5ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBkYXRhU291cmNlU2VydmljZTogRGF0YVNvdXJjZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZWRpYVNlcnZpY2U6IE1lZGlhU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gY2hlY2sgdGhlIHZpZXcgaWYgaXMgbW9iaWxlIG9yIG5vdFxuICAgIHRoaXMubWVkaWFTZXJ2aWNlJCQgPSB0aGlzLm1lZGlhU2VydmljZS5tZWRpYSQuc3Vic2NyaWJlKChtZWRpYTogTWVkaWEpID0+IHtcbiAgICAgIGlmIChtZWRpYSA9PT0gTWVkaWEuTW9iaWxlKSB7XG4gICAgICAgIHRoaXMuaXNNb2JpbGUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICh0aGlzLmxheWVyLm1ldGEuZGF0YVR5cGUgPT09ICdMYXllcicpIHtcbiAgICAgIHRoaXMuYWRkZWQgPVxuICAgICAgICB0aGlzLm1hcC5sYXllcnMuZmluZEluZGV4KFxuICAgICAgICAgIChsYXkpID0+IGxheS5pZCA9PT0gdGhpcy5sYXllci5kYXRhLnNvdXJjZU9wdGlvbnMuaWRcbiAgICAgICAgKSAhPT0gLTE7XG4gICAgfVxuICAgIHRoaXMubGF5ZXJzJCQgPSB0aGlzLm1hcC5sYXllcnMkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmlzVmlzaWJsZSgpO1xuICAgIH0pO1xuICAgIHRoaXMucmVzb2x1dGlvbiQkID0gdGhpcy5tYXAudmlld0NvbnRyb2xsZXIucmVzb2x1dGlvbiQuc3Vic2NyaWJlKFxuICAgICAgKHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMuaXNJblJlc29sdXRpb25zUmFuZ2UodmFsdWUpO1xuICAgICAgICB0aGlzLmlzVmlzaWJsZSgpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlc29sdXRpb24kJC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMubGF5ZXJzJCQudW5zdWJzY3JpYmUoKTtcbiAgICBpZiAodGhpcy5tZWRpYVNlcnZpY2UkJCkge1xuICAgICAgdGhpcy5tZWRpYVNlcnZpY2UkJC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPbiBtb3VzZSBldmVudCwgbW91c2VlbnRlciAvbW91c2VsZWF2ZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uTW91c2VFdmVudChldmVudCkge1xuICAgIHRoaXMub25Ub2dnbGVDbGljayhldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogT24gdG9nZ2xlIGJ1dHRvbiBjbGljaywgZW1pdCB0aGUgYWRkZWQgY2hhbmdlIGV2ZW50XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgb25Ub2dnbGVDbGljayhjdXJyRXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmxhc3RUaW1lb3V0UmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmxhc3RUaW1lb3V0UmVxdWVzdCk7XG4gICAgfVxuICAgIGNvbnN0IGV2ZW50ID0gY3VyckV2ZW50ID8gY3VyckV2ZW50IDogKHt9IGFzIEV2ZW50KTtcblxuICAgIGlmIChldmVudC50eXBlID09PSAnbW91c2VlbnRlcicgJiYgdGhpcy5tb3VzZUluc2lkZUFkZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgJ2NsaWNrJzpcbiAgICAgICAgaWYgKCF0aGlzLmlzUHJldmlldyQudmFsdWUpIHtcbiAgICAgICAgICBpZiAodGhpcy5hZGRlZCkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmUoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hZGQoZXZlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzUHJldmlldyQubmV4dChmYWxzZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbW91c2VlbnRlcic6XG4gICAgICAgIGlmICghdGhpcy5pc1ByZXZpZXckLnZhbHVlICYmICF0aGlzLmFkZGVkKSB7XG4gICAgICAgICAgdGhpcy5sYXN0VGltZW91dFJlcXVlc3QgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWRkKGV2ZW50KTtcbiAgICAgICAgICAgIHRoaXMuaXNQcmV2aWV3JC5uZXh0KHRydWUpO1xuICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tb3VzZUluc2lkZUFkZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbW91c2VsZWF2ZSc6XG4gICAgICAgIGlmICh0aGlzLmlzUHJldmlldyQudmFsdWUpIHtcbiAgICAgICAgICB0aGlzLnJlbW92ZSgpO1xuICAgICAgICAgIHRoaXMuaXNQcmV2aWV3JC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1vdXNlSW5zaWRlQWRkID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmFkZGVkKSB7XG4gICAgICB0aGlzLmFkZGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuYWRkTGF5ZXJUb01hcChldmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmUoKSB7XG4gICAgaWYgKHRoaXMuYWRkZWQpIHtcbiAgICAgIHRoaXMuYWRkZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVtb3ZlTGF5ZXJGcm9tTWFwKCk7XG4gICAgICB0aGlzLmxheWVyc1N1YmNyaXB0aW9ucy5tYXAoKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgICB0aGlzLmxheWVyc1N1YmNyaXB0aW9ucyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0IGFkZGVkIGNoYW5nZSBldmVudCB3aXRoIGFkZGVkID0gdHJ1ZVxuICAgKi9cbiAgcHJpdmF0ZSBhZGRMYXllclRvTWFwKGV2ZW50PzogRXZlbnQpIHtcbiAgICBpZiAodGhpcy5tYXAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxheWVyLm1ldGEuZGF0YVR5cGUgIT09IExBWUVSKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IGxheWVyT3B0aW9ucyA9ICh0aGlzLmxheWVyIGFzIFNlYXJjaFJlc3VsdDxMYXllck9wdGlvbnM+KS5kYXRhO1xuICAgIGlmIChsYXllck9wdGlvbnMuc291cmNlT3B0aW9ucy5vcHRpb25zRnJvbUFwaSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBsYXllck9wdGlvbnMuc291cmNlT3B0aW9ucy5vcHRpb25zRnJvbUFwaSA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMubGF5ZXJzU3ViY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmxheWVyU2VydmljZS5jcmVhdGVBc3luY0xheWVyKGxheWVyT3B0aW9ucykuc3Vic2NyaWJlKChsYXllcikgPT4ge1xuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJykge1xuICAgICAgICAgIHRoaXMubWFwLmxheWVyc0FkZGVkQnlDbGljayQubmV4dChbbGF5ZXJdKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1hcC5hZGRMYXllcihsYXllcik7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdCBhZGRlZCBjaGFuZ2UgZXZlbnQgd2l0aCBhZGRlZCA9IGZhbHNlXG4gICAqL1xuICBwcml2YXRlIHJlbW92ZUxheWVyRnJvbU1hcCgpIHtcbiAgICBpZiAodGhpcy5tYXAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxheWVyLm1ldGEuZGF0YVR5cGUgIT09IExBWUVSKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IG9MYXllciA9IHRoaXMubWFwLmdldExheWVyQnlJZCh0aGlzLmxheWVyLmRhdGEuc291cmNlT3B0aW9ucy5pZCk7XG4gICAgdGhpcy5tYXAucmVtb3ZlTGF5ZXIob0xheWVyKTtcbiAgfVxuXG4gIGlzSW5SZXNvbHV0aW9uc1JhbmdlKHJlc29sdXRpb246IG51bWJlcikge1xuICAgIGNvbnN0IG1pblJlc29sdXRpb24gPSB0aGlzLmxheWVyLmRhdGEubWluUmVzb2x1dGlvbiB8fCAwO1xuICAgIGNvbnN0IG1heFJlc29sdXRpb24gPSB0aGlzLmxheWVyLmRhdGEubWF4UmVzb2x1dGlvbiB8fCBJbmZpbml0eTtcbiAgICB0aGlzLmluUmFuZ2UkLm5leHQoXG4gICAgICByZXNvbHV0aW9uID49IG1pblJlc29sdXRpb24gJiYgcmVzb2x1dGlvbiA8PSBtYXhSZXNvbHV0aW9uXG4gICAgKTtcbiAgfVxuXG4gIGlzVmlzaWJsZSgpIHtcbiAgICBpZiAodGhpcy5sYXllcj8uZGF0YT8uc291cmNlT3B0aW9ucz8uaWQpIHtcbiAgICAgIGNvbnN0IG9MYXllciA9IHRoaXMubWFwLmdldExheWVyQnlJZCh0aGlzLmxheWVyLmRhdGEuc291cmNlT3B0aW9ucy5pZCk7XG5cbiAgICAgIHRoaXMuaXNWaXNpYmxlJC5uZXh0KG9MYXllcj8udmlzaWJsZSA/PyBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0QmFkZ2VJY29uKCkge1xuICAgIGlmICh0aGlzLmluUmFuZ2UkLnZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5pc1Zpc2libGUkLnZhbHVlID8gJycgOiAndmlzaWJpbGl0eV9vZmYnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ3Zpc2liaWxpdHlfb2ZmJztcbiAgICB9XG4gIH1cblxuICBjb21wdXRlVG9vbHRpcCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmFkZGVkKSB7XG4gICAgICBpZiAodGhpcy5pc1ByZXZpZXckLnZhbHVlKSB7XG4gICAgICAgIHJldHVybiAnaWdvLmdlby5jYXRhbG9nLmxheWVyLmFkZFRvTWFwJztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pblJhbmdlJC52YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1Zpc2libGUkLnZhbHVlXG4gICAgICAgICAgPyAnaWdvLmdlby5jYXRhbG9nLmxheWVyLnJlbW92ZUZyb21NYXAnXG4gICAgICAgICAgOiAnaWdvLmdlby5jYXRhbG9nLmxheWVyLnJlbW92ZUZyb21NYXBOb3RWaXNpYmxlJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAnaWdvLmdlby5jYXRhbG9nLmxheWVyLnJlbW92ZUZyb21NYXBPdXRSYW5nZSc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmluUmFuZ2UkLnZhbHVlXG4gICAgICAgID8gJ2lnby5nZW8uY2F0YWxvZy5sYXllci5hZGRUb01hcCdcbiAgICAgICAgOiAnaWdvLmdlby5jYXRhbG9nLmxheWVyLmFkZFRvTWFwT3V0UmFuZ2UnO1xuICAgIH1cbiAgfVxuXG4gIGFkZEZlYXR1cmVUb0xheWVyKCkge1xuICAgIGlmICh0aGlzLmxheWVyLm1ldGEuZGF0YVR5cGUgIT09ICdGZWF0dXJlJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZSA9IHRoaXMubGF5ZXI7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihTYXZlRmVhdHVyZURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgd2lkdGg6ICc3MDBweCcsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGZlYXR1cmU6IHNlbGVjdGVkRmVhdHVyZSxcbiAgICAgICAgbGF5ZXJzOiB0aGlzLmFsbExheWVyc1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogeyBsYXllcjogc3RyaW5nIHwgYW55OyBmZWF0dXJlOiBTZWFyY2hSZXN1bHQgfSkgPT4ge1xuICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgIGlmICh0aGlzLnN0b3Jlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3Jlcy5tYXAoKHN0b3JlKSA9PiB7XG4gICAgICAgICAgICAgIHN0b3JlLnN0YXRlLnVwZGF0ZUFsbCh7IHNlbGVjdGVkOiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgaWYgKHN0b3JlPy5sYXllcikge1xuICAgICAgICAgICAgICAgIHN0b3JlLmxheWVyLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gc3RvcmU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gY2hlY2sgaWYgaXMgbmV3IGxheWVyXG4gICAgICAgICAgaWYgKHR5cGVvZiBkYXRhLmxheWVyID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVMYXllcihkYXRhLmxheWVyLCBkYXRhLmZlYXR1cmUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmVTdG9yZSA9IHRoaXMuc3RvcmVzLmZpbmQoXG4gICAgICAgICAgICAgIChzdG9yZSkgPT4gc3RvcmUubGF5ZXIuaWQgPT09IGRhdGEubGF5ZXIuaWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBhY3RpdmVTdG9yZS5sYXllci52aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIGFjdGl2ZVN0b3JlLmxheWVyLm9wYWNpdHkgPSAxO1xuICAgICAgICAgICAgdGhpcy5hZGRGZWF0dXJlKGRhdGEuZmVhdHVyZSwgYWN0aXZlU3RvcmUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBjcmVhdGVMYXllcihsYXllclRpdGxlOiBzdHJpbmcsIHNlbGVjdGVkRmVhdHVyZTogU2VhcmNoUmVzdWx0KSB7XG4gICAgY29uc3QgYWN0aXZlU3RvcmU6IEZlYXR1cmVTdG9yZTxGZWF0dXJlPiA9IG5ldyBGZWF0dXJlU3RvcmU8RmVhdHVyZT4oW10sIHtcbiAgICAgIG1hcDogdGhpcy5tYXBcbiAgICB9KTtcblxuICAgIGNvbnN0IHN0eWxlcyA9IFtcbiAgICAgIG5ldyBTdHlsZSh7XG4gICAgICAgIGltYWdlOiBuZXcgQ2lyY2xlKHtcbiAgICAgICAgICByYWRpdXM6IDUsXG4gICAgICAgICAgc3Ryb2tlOiBuZXcgU3Ryb2tlKHtcbiAgICAgICAgICAgIHdpZHRoOiAxLFxuICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDE0Myw3LDcsMSknXG4gICAgICAgICAgfSksXG4gICAgICAgICAgZmlsbDogbmV3IEZpbGwoe1xuICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDE0Myw3LDcsMSknXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgIH0pLFxuICAgICAgbmV3IFN0eWxlKHtcbiAgICAgICAgc3Ryb2tlOiBuZXcgU3Ryb2tlKHtcbiAgICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgICBjb2xvcjogJ3JnYmEoMTQzLDcsNywxKSdcbiAgICAgICAgfSksXG4gICAgICAgIGZpbGw6IG5ldyBGaWxsKHtcbiAgICAgICAgICBjb2xvcjogJ3JnYmEoMCwgMCwgMjU1LCAwLjEpJ1xuICAgICAgICB9KVxuICAgICAgfSlcbiAgICBdO1xuXG4gICAgLy8gc2V0IGxheWVyIGlkXG4gICAgbGV0IGxheWVyQ291bnRlcklEID0gMDtcbiAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMuYWxsTGF5ZXJzKSB7XG4gICAgICBjb25zdCBudW1iZXJJZCA9IE51bWJlcihsYXllci5pZC5yZXBsYWNlKCdpZ28tc2VhcmNoLWxheWVyJywgJycpKTtcbiAgICAgIGxheWVyQ291bnRlcklEID0gTWF0aC5tYXgobnVtYmVySWQsIGxheWVyQ291bnRlcklEKTtcbiAgICB9XG5cbiAgICB0aGlzLmRhdGFTb3VyY2VTZXJ2aWNlXG4gICAgICAuY3JlYXRlQXN5bmNEYXRhU291cmNlKHtcbiAgICAgICAgdHlwZTogJ3ZlY3RvcicsXG4gICAgICAgIHF1ZXJ5YWJsZTogdHJ1ZVxuICAgICAgfSBhcyBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9ucylcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChkYXRhU291cmNlOiBGZWF0dXJlRGF0YVNvdXJjZSkgPT4ge1xuICAgICAgICBjb25zdCBzZWFyY2hMYXllcjogVmVjdG9yTGF5ZXIgPSBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgICAgIGlzSWdvSW50ZXJuYWxMYXllcjogdHJ1ZSxcbiAgICAgICAgICBpZDogJ2lnby1zZWFyY2gtbGF5ZXInICsgKytsYXllckNvdW50ZXJJRCxcbiAgICAgICAgICB0aXRsZTogbGF5ZXJUaXRsZSxcbiAgICAgICAgICBzb3VyY2U6IGRhdGFTb3VyY2UsXG4gICAgICAgICAgaWdvU3R5bGU6IHtcbiAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGlnb1N0eWxlT2JqZWN0OiB7XG4gICAgICAgICAgICAgIGZpbGw6IHsgY29sb3I6ICdyZ2JhKDI1NSwyNTUsMjU1LDAuNCknIH0sXG4gICAgICAgICAgICAgIHN0cm9rZTogeyBjb2xvcjogJ3JnYmEoMTQzLDcsNywxKScsIHdpZHRoOiAxIH0sXG4gICAgICAgICAgICAgIGNpcmNsZToge1xuICAgICAgICAgICAgICAgIGZpbGw6IHsgY29sb3I6ICdyZ2JhKDI1NSwyNTUsMjU1LDAuNCknIH0sXG4gICAgICAgICAgICAgICAgc3Ryb2tlOiB7IGNvbG9yOiAncmdiYSgxNDMsNyw3LDEpJywgd2lkdGg6IDEgfSxcbiAgICAgICAgICAgICAgICByYWRpdXM6IDVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3R5bGU6IHN0eWxlcyxcbiAgICAgICAgICBzaG93SW5MYXllckxpc3Q6IHRydWUsXG4gICAgICAgICAgZXhwb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgICB3b3Jrc3BhY2U6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRyeUJpbmRTdG9yZUxheWVyKGFjdGl2ZVN0b3JlLCBzZWFyY2hMYXllcik7XG4gICAgICAgIHRyeUFkZExvYWRpbmdTdHJhdGVneShcbiAgICAgICAgICBhY3RpdmVTdG9yZSxcbiAgICAgICAgICBuZXcgRmVhdHVyZVN0b3JlTG9hZGluZ1N0cmF0ZWd5KHtcbiAgICAgICAgICAgIG1vdGlvbjogRmVhdHVyZU1vdGlvbi5Ob25lXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0cnlBZGRTZWxlY3Rpb25TdHJhdGVneShcbiAgICAgICAgICBhY3RpdmVTdG9yZSxcbiAgICAgICAgICBuZXcgRmVhdHVyZVN0b3JlU2VsZWN0aW9uU3RyYXRlZ3koe1xuICAgICAgICAgICAgbWFwOiB0aGlzLm1hcCxcbiAgICAgICAgICAgIG1vdGlvbjogRmVhdHVyZU1vdGlvbi5Ob25lLFxuICAgICAgICAgICAgbWFueTogdHJ1ZVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgYWN0aXZlU3RvcmUubGF5ZXIudmlzaWJsZSA9IHRydWU7XG4gICAgICAgIGFjdGl2ZVN0b3JlLnNvdXJjZS5vbC5vbihcbiAgICAgICAgICAncmVtb3ZlZmVhdHVyZScsXG4gICAgICAgICAgKGV2ZW50OiBPbFZlY3RvclNvdXJjZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvbEdlb21ldHJ5ID0gZXZlbnQuZmVhdHVyZS5nZXRHZW9tZXRyeSgpO1xuICAgICAgICAgICAgdGhpcy5jbGVhckxhYmVsc09mT2xHZW9tZXRyeShvbEdlb21ldHJ5KTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5hZGRGZWF0dXJlKHNlbGVjdGVkRmVhdHVyZSwgYWN0aXZlU3RvcmUpO1xuICAgICAgICB0aGlzLnN0b3Jlcy5wdXNoKGFjdGl2ZVN0b3JlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgYWRkRmVhdHVyZShmZWF0dXJlOiBTZWFyY2hSZXN1bHQsIGFjdGl2ZVN0b3JlOiBGZWF0dXJlU3RvcmU8RmVhdHVyZT4pIHtcbiAgICBjb25zdCBuZXdGZWF0dXJlID0ge1xuICAgICAgdHlwZTogZmVhdHVyZS5kYXRhLnR5cGUsXG4gICAgICBnZW9tZXRyeToge1xuICAgICAgICBjb29yZGluYXRlczogZmVhdHVyZS5kYXRhLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgICAgICB0eXBlOiBmZWF0dXJlLmRhdGEuZ2VvbWV0cnkudHlwZVxuICAgICAgfSxcbiAgICAgIHByb2plY3Rpb246IGZlYXR1cmUuZGF0YS5wcm9qZWN0aW9uLFxuICAgICAgcHJvcGVydGllczogZmVhdHVyZS5kYXRhLnByb3BlcnRpZXMsXG4gICAgICBtZXRhOiB7XG4gICAgICAgIGlkOiBmZWF0dXJlLm1ldGEuaWRcbiAgICAgIH1cbiAgICB9O1xuICAgIGRlbGV0ZSBuZXdGZWF0dXJlLnByb3BlcnRpZXMuUm91dGU7XG4gICAgYWN0aXZlU3RvcmUudXBkYXRlKG5ld0ZlYXR1cmUpO1xuICAgIGFjdGl2ZVN0b3JlLnNldExheWVyRXh0ZW50KCk7XG4gICAgYWN0aXZlU3RvcmUubGF5ZXIub2wuZ2V0U291cmNlKCkucmVmcmVzaCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckxhYmVsc09mT2xHZW9tZXRyeShvbEdlb21ldHJ5KSB7XG4gICAgZ2V0VG9vbHRpcHNPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSkuZm9yRWFjaChcbiAgICAgIChvbFRvb2x0aXA6IE9sT3ZlcmxheSB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICBpZiAob2xUb29sdGlwICYmIG9sVG9vbHRpcC5nZXRNYXAoKSkge1xuICAgICAgICAgIHRoaXMubWFwLm9sLnJlbW92ZU92ZXJsYXkob2xUb29sdGlwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cbn1cbiIsIjxidXR0b25cbiAgaWdvU3RvcFByb3BhZ2F0aW9uXG4gIChtb3VzZWVudGVyKT1cIm9uTW91c2VFdmVudCgkZXZlbnQpXCJcbiAgKG1vdXNlbGVhdmUpPVwib25Nb3VzZUV2ZW50KCRldmVudClcIlxuICAqbmdJZj1cImxheWVyLm1ldGEuZGF0YVR5cGUgPT09ICdMYXllcidcIlxuICBtYXQtaWNvbi1idXR0b25cbiAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gIFttYXRUb29sdGlwXT1cImNvbXB1dGVUb29sdGlwKCkgfCB0cmFuc2xhdGVcIlxuICBbY29sb3JdPVwiKGlzUHJldmlldyQgfCBhc3luYykgPyAnJyA6IGFkZGVkID8gJ3dhcm4nIDogJydcIlxuICAoY2xpY2spPVwib25Ub2dnbGVDbGljaygkZXZlbnQpXCJcbj5cbiAgPG1hdC1pY29uXG4gICAgYXJpYS1oaWRkZW49XCJmYWxzZVwiXG4gICAgbWF0QmFkZ2U9XCJpY29uXCJcbiAgICBbaWdvTWF0QmFkZ2VJY29uXT1cImdldEJhZGdlSWNvbigpXCJcbiAgICBpZ29NYXRCYWRnZUNvbG9yPVwicmdiYSgwLDAsMCwwLjg3KVwiXG4gICAgaWdvTWF0QmFkZ2VCYWNrZ3JvdW5kQ29sb3I9XCJub25lXCJcbiAgICBbaWdvTWF0QmFkZ2VJbnZlcnNlQ29sb3JdPVwidHJ1ZVwiXG4gICAgW21hdEJhZGdlSGlkZGVuXT1cIlxuICAgICAgKChpblJhbmdlJCB8IGFzeW5jKSAmJiAoaXNWaXNpYmxlJCB8IGFzeW5jKSA9PT0gdHJ1ZSkgfHxcbiAgICAgICgoaW5SYW5nZSQgfCBhc3luYykgJiYgIWFkZGVkKSB8fFxuICAgICAgKChpblJhbmdlJCB8IGFzeW5jKSAmJiAoaXNQcmV2aWV3JCB8IGFzeW5jKSlcbiAgICBcIlxuICAgIFttYXRCYWRnZURpc2FibGVkXT1cIihpblJhbmdlJCB8IGFzeW5jKSA9PT0gZmFsc2VcIlxuICAgIG1hdEJhZGdlU2l6ZT1cInNtYWxsXCJcbiAgICBtYXRCYWRnZVBvc2l0aW9uPVwiYWZ0ZXJcIlxuICAgID57eyAoaXNQcmV2aWV3JCB8IGFzeW5jKSA/ICdhZGQnIDogYWRkZWQgPyAnZGVsZXRlJyA6ICdhZGQnIH19XG4gIDwvbWF0LWljb24+XG48L2J1dHRvbj5cblxuPGJ1dHRvblxuICBbaWRdPVwiIWlzTW9iaWxlID8gJ2hpZGUtc2F2ZS1zZWFyY2gtcmVzdWx0LWJ0bicgOiAnJ1wiXG4gIGlnb1N0b3BQcm9wYWdhdGlvblxuICAqbmdJZj1cImxheWVyLm1ldGEuZGF0YVR5cGUgPT09ICdGZWF0dXJlJyAmJiBzYXZlU2VhcmNoUmVzdWx0SW5MYXllclwiXG4gIG1hdC1pY29uLWJ1dHRvblxuICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxuICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgW21hdFRvb2x0aXBdPVwiYWRkRmVhdHVyZVRvTGF5ZXJUb29sdGlwJCB8IGFzeW5jIHwgdHJhbnNsYXRlXCJcbiAgKGNsaWNrKT1cImFkZEZlYXR1cmVUb0xheWVyKClcIlxuPlxuICA8bWF0LWljb25cbiAgICBhcmlhLWhpZGRlbj1cImZhbHNlXCJcbiAgICBtYXRCYWRnZT1cImljb25cIlxuICAgIGlnb01hdEJhZGdlSWNvbj1cInZpc2liaWxpdHlfb2ZmXCJcbiAgICBbaWdvTWF0QmFkZ2VJbnZlcnNlQ29sb3JdPVwidHJ1ZVwiXG4gICAgW21hdEJhZGdlSGlkZGVuXT1cImluUmFuZ2UkIHwgYXN5bmNcIlxuICAgIFttYXRCYWRnZURpc2FibGVkXT1cInRydWVcIlxuICAgIG1hdEJhZGdlU2l6ZT1cInNtYWxsXCJcbiAgICBtYXRCYWRnZVBvc2l0aW9uPVwiYWZ0ZXJcIlxuICAgID5hZGRfdG9fcGhvdG9zXG4gIDwvbWF0LWljb24+XG48L2J1dHRvbj5cbiJdfQ==
433
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdHMtYWRkLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9zZWFyY2gvc2VhcmNoLXJlc3VsdHMvc2VhcmNoLXJlc3VsdHMtYWRkLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9zZWFyY2gvc2VhcmNoLXJlc3VsdHMvc2VhcmNoLXJlc3VsdHMtYWRkLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJdkQsT0FBTyxNQUFNLE1B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Q0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRU8sdUJBQXVCLENBQUMsVUFBVTtRQUN4Qyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQ3pDLENBQUMsU0FBZ0MsRUFBRSxFQUFFO1lBQ25DLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdkMsQ0FBQztRQUNILENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQzt3R0FsYlUsOEJBQThCOzRGQUE5Qiw4QkFBOEIsK09DckUzQyxpcURBcURBLDZKREtJLElBQUksNEZBQ0osZUFBZSw0SUFDZix3QkFBd0IsZ0VBQ3hCLGdCQUFnQiw0VEFDaEIsYUFBYSxtTEFDYixjQUFjLDRQQUNkLHFCQUFxQixvT0FDckIsU0FBUyw2Q0FDVCxpQkFBaUI7OzRGQUdSLDhCQUE4QjtrQkFsQjFDLFNBQVM7K0JBQ0UsdUJBQXVCLG1CQUdoQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxJQUFJO3dCQUNKLGVBQWU7d0JBQ2Ysd0JBQXdCO3dCQUN4QixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxxQkFBcUI7d0JBQ3JCLFNBQVM7d0JBQ1QsaUJBQWlCO3FCQUNsQjtvS0EwQlEsS0FBSztzQkFBYixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxLQUFLO3NCQUFiLEtBQUs7Z0JBS0csR0FBRztzQkFBWCxLQUFLO2dCQUtHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFHRixLQUFLO3NCQURSLEtBQUs7Z0JBU0csTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJhZGdlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYmFkZ2UnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5cbmltcG9ydCB7IElnb0JhZGdlSWNvbkRpcmVjdGl2ZSB9IGZyb20gJ0BpZ28yL2NvbW1vbi9iYWRnZSc7XG5pbXBvcnQgeyBFbnRpdHlTdG9yZSB9IGZyb20gJ0BpZ28yL2NvbW1vbi9lbnRpdHknO1xuaW1wb3J0IHsgU3RvcFByb3BhZ2F0aW9uRGlyZWN0aXZlIH0gZnJvbSAnQGlnbzIvY29tbW9uL3N0b3AtcHJvcGFnYXRpb24nO1xuaW1wb3J0IHsgSWdvTGFuZ3VhZ2VNb2R1bGUgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcbmltcG9ydCB7IE1lZGlhLCBNZWRpYVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL21lZGlhJztcblxuaW1wb3J0IE9sT3ZlcmxheSBmcm9tICdvbC9PdmVybGF5JztcbmltcG9ydCB7IFZlY3RvclNvdXJjZUV2ZW50IGFzIE9sVmVjdG9yU291cmNlRXZlbnQgfSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yJztcbmltcG9ydCBDaXJjbGUgZnJvbSAnb2wvc3R5bGUvQ2lyY2xlJztcbmltcG9ydCBGaWxsIGZyb20gJ29sL3N0eWxlL0ZpbGwnO1xuaW1wb3J0IFN0cm9rZSBmcm9tICdvbC9zdHlsZS9TdHJva2UnO1xuaW1wb3J0IFN0eWxlIGZyb20gJ29sL3N0eWxlL1N0eWxlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRha2UgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRGF0YVNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmVhdHVyZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcyc7XG5pbXBvcnQge1xuICBGZWF0dXJlLFxuICBGZWF0dXJlTW90aW9uLFxuICBGZWF0dXJlU3RvcmUsXG4gIEZlYXR1cmVTdG9yZUxvYWRpbmdTdHJhdGVneSxcbiAgRmVhdHVyZVN0b3JlU2VsZWN0aW9uU3RyYXRlZ3ksXG4gIHRyeUFkZExvYWRpbmdTdHJhdGVneSxcbiAgdHJ5QWRkU2VsZWN0aW9uU3RyYXRlZ3ksXG4gIHRyeUJpbmRTdG9yZUxheWVyXG59IGZyb20gJy4uLy4uL2ZlYXR1cmUnO1xuaW1wb3J0IHsgTEFZRVIgfSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvbGF5ZXIuZW51bXMnO1xuaW1wb3J0IHsgTGF5ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTGF5ZXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycy9sYXllci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVmVjdG9yTGF5ZXIgfSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvbGF5ZXJzL3ZlY3Rvci1sYXllcic7XG5pbXBvcnQgeyBJZ29NYXAgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcCc7XG5pbXBvcnQgeyBnZXRUb29sdGlwc09mT2xHZW9tZXRyeSB9IGZyb20gJy4uLy4uL21lYXN1cmUnO1xuaW1wb3J0IHsgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9xdWVyeS9zaGFyZWQnO1xuaW1wb3J0IHsgU2VhcmNoUmVzdWx0IH0gZnJvbSAnLi4vc2hhcmVkL3NlYXJjaC5pbnRlcmZhY2VzJztcbmltcG9ydCB7IFNhdmVGZWF0dXJlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9zYXZlLWZlYXR1cmUtZGlhbG9nLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1zZWFyY2gtYWRkLWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtcmVzdWx0cy1hZGQtYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLXJlc3VsdHMtYWRkLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nSWYsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIFN0b3BQcm9wYWdhdGlvbkRpcmVjdGl2ZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0QmFkZ2VNb2R1bGUsXG4gICAgSWdvQmFkZ2VJY29uRGlyZWN0aXZlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBJZ29MYW5ndWFnZU1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaFJlc3VsdEFkZEJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIHRvb2x0aXAkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KFxuICAgICdpZ28uZ2VvLmNhdGFsb2cubGF5ZXIuYWRkVG9NYXAnXG4gICk7XG5cbiAgcHVibGljIGFkZEZlYXR1cmVUb0xheWVyVG9vbHRpcCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oXG4gICAgJ2lnby5nZW8uc2VhcmNoLmFkZFRvTGF5ZXInXG4gICk7XG5cbiAgcHJpdmF0ZSByZXNvbHV0aW9uJCQ6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBsYXllcnMkJDogU3Vic2NyaXB0aW9uO1xuXG4gIHB1YmxpYyBpblJhbmdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgcHVibGljIGlzVmlzaWJsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwdWJsaWMgaXNQcmV2aWV3JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgbGF5ZXJzU3ViY3JpcHRpb25zID0gW107XG5cbiAgcHJpdmF0ZSBsYXN0VGltZW91dFJlcXVlc3Q7XG5cbiAgcHJpdmF0ZSBtb3VzZUluc2lkZUFkZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGxheWVyOiBTZWFyY2hSZXN1bHQ7XG5cbiAgQElucHV0KCkgc3RvcmU6IEVudGl0eVN0b3JlPFNlYXJjaFJlc3VsdD47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGxheWVyIGlzIGFscmVhZHkgYWRkZWQgdG8gdGhlIG1hcFxuICAgKi9cbiAgQElucHV0KCkgYWRkZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBtYXAgdG8gYWRkIHRoZSBzZWFyY2ggcmVzdWx0IGxheWVyIHRvXG4gICAqL1xuICBASW5wdXQoKSBtYXA6IElnb01hcDtcblxuICAvKipcbiAgICogc2hvdyBoaWRlIHNhdmUgc2VhcmNoIHJlc3VsdCBpbiBsYXllciBidXR0b25cbiAgICovXG4gIEBJbnB1dCgpIHNhdmVTZWFyY2hSZXN1bHRJbkxheWVyID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgZ2V0IGNvbG9yKCkge1xuICAgIHJldHVybiB0aGlzLl9jb2xvcjtcbiAgfVxuICBzZXQgY29sb3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2NvbG9yID0gdmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfY29sb3IgPSAncHJpbWFyeSc7XG5cbiAgQElucHV0KCkgc3RvcmVzOiBGZWF0dXJlU3RvcmU8RmVhdHVyZT5bXSA9IFtdO1xuXG4gIGdldCBhbGxMYXllcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwLmxheWVyQ29udHJvbGxlci5hbGwuZmlsdGVyKChsYXllcikgPT5cbiAgICAgIFN0cmluZyhsYXllci5pZCkuaW5jbHVkZXMoJ2lnby1zZWFyY2gtbGF5ZXInKVxuICAgICk7XG4gIH1cbiAgcHJpdmF0ZSBtZWRpYVNlcnZpY2UkJDogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgaXNNb2JpbGUgPSBmYWxzZTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBsYXllclNlcnZpY2U6IExheWVyU2VydmljZSxcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgZGF0YVNvdXJjZVNlcnZpY2U6IERhdGFTb3VyY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgbWVkaWFTZXJ2aWNlOiBNZWRpYVNlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIGNoZWNrIHRoZSB2aWV3IGlmIGlzIG1vYmlsZSBvciBub3RcbiAgICB0aGlzLm1lZGlhU2VydmljZSQkID0gdGhpcy5tZWRpYVNlcnZpY2UubWVkaWEkLnN1YnNjcmliZSgobWVkaWE6IE1lZGlhKSA9PiB7XG4gICAgICBpZiAobWVkaWEgPT09IE1lZGlhLk1vYmlsZSkge1xuICAgICAgICB0aGlzLmlzTW9iaWxlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAodGhpcy5sYXllci5tZXRhLmRhdGFUeXBlID09PSAnTGF5ZXInKSB7XG4gICAgICB0aGlzLmFkZGVkID0gISF0aGlzLm1hcC5sYXllckNvbnRyb2xsZXIuZ2V0QnlTb3VyY2VJZChcbiAgICAgICAgdGhpcy5sYXllci5kYXRhLnNvdXJjZU9wdGlvbnMuaWRcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMubGF5ZXJzJCQgPSB0aGlzLm1hcC5sYXllckNvbnRyb2xsZXIuYWxsJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5pc1Zpc2libGUoKTtcbiAgICB9KTtcbiAgICB0aGlzLnJlc29sdXRpb24kJCA9IHRoaXMubWFwLnZpZXdDb250cm9sbGVyLnJlc29sdXRpb24kLnN1YnNjcmliZShcbiAgICAgICh2YWx1ZSkgPT4ge1xuICAgICAgICB0aGlzLmlzSW5SZXNvbHV0aW9uc1JhbmdlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5pc1Zpc2libGUoKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5yZXNvbHV0aW9uJCQudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmxheWVycyQkLnVuc3Vic2NyaWJlKCk7XG4gICAgaWYgKHRoaXMubWVkaWFTZXJ2aWNlJCQpIHtcbiAgICAgIHRoaXMubWVkaWFTZXJ2aWNlJCQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT24gbW91c2UgZXZlbnQsIG1vdXNlZW50ZXIgL21vdXNlbGVhdmVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBvbk1vdXNlRXZlbnQoZXZlbnQpIHtcbiAgICB0aGlzLm9uVG9nZ2xlQ2xpY2soZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uIHRvZ2dsZSBidXR0b24gY2xpY2ssIGVtaXQgdGhlIGFkZGVkIGNoYW5nZSBldmVudFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uVG9nZ2xlQ2xpY2soY3VyckV2ZW50OiBFdmVudCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5sYXN0VGltZW91dFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5sYXN0VGltZW91dFJlcXVlc3QpO1xuICAgIH1cbiAgICBjb25zdCBldmVudCA9IGN1cnJFdmVudCA/IGN1cnJFdmVudCA6ICh7fSBhcyBFdmVudCk7XG5cbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ21vdXNlZW50ZXInICYmIHRoaXMubW91c2VJbnNpZGVBZGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gICAgICBjYXNlICdjbGljayc6XG4gICAgICAgIGlmICghdGhpcy5pc1ByZXZpZXckLnZhbHVlKSB7XG4gICAgICAgICAgaWYgKHRoaXMuYWRkZWQpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWRkKGV2ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc1ByZXZpZXckLm5leHQoZmFsc2UpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ21vdXNlZW50ZXInOlxuICAgICAgICBpZiAoIXRoaXMuaXNQcmV2aWV3JC52YWx1ZSAmJiAhdGhpcy5hZGRlZCkge1xuICAgICAgICAgIHRoaXMubGFzdFRpbWVvdXRSZXF1ZXN0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFkZChldmVudCk7XG4gICAgICAgICAgICB0aGlzLmlzUHJldmlldyQubmV4dCh0cnVlKTtcbiAgICAgICAgICB9LCA1MDApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubW91c2VJbnNpZGVBZGQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ21vdXNlbGVhdmUnOlxuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5sYXN0VGltZW91dFJlcXVlc3QpO1xuICAgICAgICBpZiAodGhpcy5pc1ByZXZpZXckLnZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5yZW1vdmUoKTtcbiAgICAgICAgICB0aGlzLmlzUHJldmlldyQubmV4dChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tb3VzZUluc2lkZUFkZCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkKGV2ZW50OiBFdmVudCkge1xuICAgIGlmICghdGhpcy5hZGRlZCkge1xuICAgICAgdGhpcy5hZGRlZCA9IHRydWU7XG4gICAgICB0aGlzLmFkZExheWVyVG9NYXAoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlKCkge1xuICAgIGlmICh0aGlzLmFkZGVkKSB7XG4gICAgICB0aGlzLmFkZGVkID0gZmFsc2U7XG4gICAgICB0aGlzLnJlbW92ZUxheWVyRnJvbU1hcCgpO1xuICAgICAgdGhpcy5sYXllcnNTdWJjcmlwdGlvbnMubWFwKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgdGhpcy5sYXllcnNTdWJjcmlwdGlvbnMgPSBbXTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRW1pdCBhZGRlZCBjaGFuZ2UgZXZlbnQgd2l0aCBhZGRlZCA9IHRydWVcbiAgICovXG4gIHByaXZhdGUgYWRkTGF5ZXJUb01hcChldmVudD86IEV2ZW50KSB7XG4gICAgaWYgKHRoaXMubWFwID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sYXllci5tZXRhLmRhdGFUeXBlICE9PSBMQVlFUikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBsYXllck9wdGlvbnMgPSAodGhpcy5sYXllciBhcyBTZWFyY2hSZXN1bHQ8TGF5ZXJPcHRpb25zPikuZGF0YTtcbiAgICBpZiAobGF5ZXJPcHRpb25zLnNvdXJjZU9wdGlvbnMub3B0aW9uc0Zyb21BcGkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbGF5ZXJPcHRpb25zLnNvdXJjZU9wdGlvbnMub3B0aW9uc0Zyb21BcGkgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLmxheWVyc1N1YmNyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5sYXllclNlcnZpY2UuY3JlYXRlQXN5bmNMYXllcihsYXllck9wdGlvbnMpLnN1YnNjcmliZSgobGF5ZXIpID0+IHtcbiAgICAgICAgaWYgKCFsYXllcikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJykge1xuICAgICAgICAgIHRoaXMubWFwLmxheWVyc0FkZGVkQnlDbGljayQubmV4dChbbGF5ZXJdKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1hcC5sYXllckNvbnRyb2xsZXIuYWRkKGxheWVyKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0IGFkZGVkIGNoYW5nZSBldmVudCB3aXRoIGFkZGVkID0gZmFsc2VcbiAgICovXG4gIHByaXZhdGUgcmVtb3ZlTGF5ZXJGcm9tTWFwKCkge1xuICAgIGlmICh0aGlzLm1hcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGF5ZXIubWV0YS5kYXRhVHlwZSAhPT0gTEFZRVIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgbGF5ZXIgPSB0aGlzLm1hcC5sYXllckNvbnRyb2xsZXIuZ2V0QnlTb3VyY2VJZChcbiAgICAgIHRoaXMubGF5ZXIuZGF0YS5zb3VyY2VPcHRpb25zLmlkXG4gICAgKTtcbiAgICBpZiAoIWxheWVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubWFwLmxheWVyQ29udHJvbGxlci5yZW1vdmUobGF5ZXIpO1xuICB9XG5cbiAgaXNJblJlc29sdXRpb25zUmFuZ2UocmVzb2x1dGlvbjogbnVtYmVyKSB7XG4gICAgY29uc3QgbWluUmVzb2x1dGlvbiA9IHRoaXMubGF5ZXIuZGF0YS5taW5SZXNvbHV0aW9uIHx8IDA7XG4gICAgY29uc3QgbWF4UmVzb2x1dGlvbiA9IHRoaXMubGF5ZXIuZGF0YS5tYXhSZXNvbHV0aW9uIHx8IEluZmluaXR5O1xuICAgIHRoaXMuaW5SYW5nZSQubmV4dChcbiAgICAgIHJlc29sdXRpb24gPj0gbWluUmVzb2x1dGlvbiAmJiByZXNvbHV0aW9uIDw9IG1heFJlc29sdXRpb25cbiAgICApO1xuICB9XG5cbiAgaXNWaXNpYmxlKCkge1xuICAgIGlmICh0aGlzLmxheWVyPy5kYXRhPy5zb3VyY2VPcHRpb25zPy5pZCkge1xuICAgICAgY29uc3Qgb0xheWVyID0gdGhpcy5tYXAubGF5ZXJDb250cm9sbGVyLmdldEJ5U291cmNlSWQoXG4gICAgICAgIHRoaXMubGF5ZXIuZGF0YS5zb3VyY2VPcHRpb25zLmlkXG4gICAgICApO1xuXG4gICAgICB0aGlzLmlzVmlzaWJsZSQubmV4dChvTGF5ZXI/LnZpc2libGUgPz8gZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGdldEJhZGdlSWNvbigpIHtcbiAgICBpZiAodGhpcy5pblJhbmdlJC52YWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuaXNWaXNpYmxlJC52YWx1ZSA/ICcnIDogJ3Zpc2liaWxpdHlfb2ZmJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICd2aXNpYmlsaXR5X29mZic7XG4gICAgfVxuICB9XG5cbiAgY29tcHV0ZVRvb2x0aXAoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5hZGRlZCkge1xuICAgICAgaWYgKHRoaXMuaXNQcmV2aWV3JC52YWx1ZSkge1xuICAgICAgICByZXR1cm4gJ2lnby5nZW8uY2F0YWxvZy5sYXllci5hZGRUb01hcCc7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaW5SYW5nZSQudmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWaXNpYmxlJC52YWx1ZVxuICAgICAgICAgID8gJ2lnby5nZW8uY2F0YWxvZy5sYXllci5yZW1vdmVGcm9tTWFwJ1xuICAgICAgICAgIDogJ2lnby5nZW8uY2F0YWxvZy5sYXllci5yZW1vdmVGcm9tTWFwTm90VmlzaWJsZSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gJ2lnby5nZW8uY2F0YWxvZy5sYXllci5yZW1vdmVGcm9tTWFwT3V0UmFuZ2UnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5pblJhbmdlJC52YWx1ZVxuICAgICAgICA/ICdpZ28uZ2VvLmNhdGFsb2cubGF5ZXIuYWRkVG9NYXAnXG4gICAgICAgIDogJ2lnby5nZW8uY2F0YWxvZy5sYXllci5hZGRUb01hcE91dFJhbmdlJztcbiAgICB9XG4gIH1cblxuICBhZGRGZWF0dXJlVG9MYXllcigpIHtcbiAgICBpZiAodGhpcy5sYXllci5tZXRhLmRhdGFUeXBlICE9PSAnRmVhdHVyZScpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmUgPSB0aGlzLmxheWVyO1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oU2F2ZUZlYXR1cmVEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnNzAwcHgnLFxuICAgICAgZGF0YToge1xuICAgICAgICBmZWF0dXJlOiBzZWxlY3RlZEZlYXR1cmUsXG4gICAgICAgIGxheWVyczogdGhpcy5hbGxMYXllcnNcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZlxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IHsgbGF5ZXI6IHN0cmluZyB8IGFueTsgZmVhdHVyZTogU2VhcmNoUmVzdWx0IH0pID0+IHtcbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICBpZiAodGhpcy5zdG9yZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZXMubWFwKChzdG9yZSkgPT4ge1xuICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS51cGRhdGVBbGwoeyBzZWxlY3RlZDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgIGlmIChzdG9yZT8ubGF5ZXIpIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5sYXllci52aXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHN0b3JlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGNoZWNrIGlmIGlzIG5ldyBsYXllclxuICAgICAgICAgIGlmICh0eXBlb2YgZGF0YS5sYXllciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlTGF5ZXIoZGF0YS5sYXllciwgZGF0YS5mZWF0dXJlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlU3RvcmUgPSB0aGlzLnN0b3Jlcy5maW5kKFxuICAgICAgICAgICAgICAoc3RvcmUpID0+IHN0b3JlLmxheWVyLmlkID09PSBkYXRhLmxheWVyLmlkXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYWN0aXZlU3RvcmUubGF5ZXIudmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICBhY3RpdmVTdG9yZS5sYXllci5vcGFjaXR5ID0gMTtcbiAgICAgICAgICAgIHRoaXMuYWRkRmVhdHVyZShkYXRhLmZlYXR1cmUsIGFjdGl2ZVN0b3JlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlTGF5ZXIobGF5ZXJUaXRsZTogc3RyaW5nLCBzZWxlY3RlZEZlYXR1cmU6IFNlYXJjaFJlc3VsdCkge1xuICAgIGNvbnN0IGFjdGl2ZVN0b3JlOiBGZWF0dXJlU3RvcmU8RmVhdHVyZT4gPSBuZXcgRmVhdHVyZVN0b3JlPEZlYXR1cmU+KFtdLCB7XG4gICAgICBtYXA6IHRoaXMubWFwXG4gICAgfSk7XG5cbiAgICBjb25zdCBzdHlsZXMgPSBbXG4gICAgICBuZXcgU3R5bGUoe1xuICAgICAgICBpbWFnZTogbmV3IENpcmNsZSh7XG4gICAgICAgICAgcmFkaXVzOiA1LFxuICAgICAgICAgIHN0cm9rZTogbmV3IFN0cm9rZSh7XG4gICAgICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgICAgIGNvbG9yOiAncmdiYSgxNDMsNyw3LDEpJ1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGZpbGw6IG5ldyBGaWxsKHtcbiAgICAgICAgICAgIGNvbG9yOiAncmdiYSgxNDMsNyw3LDEpJ1xuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgICB9KSxcbiAgICAgIG5ldyBTdHlsZSh7XG4gICAgICAgIHN0cm9rZTogbmV3IFN0cm9rZSh7XG4gICAgICAgICAgd2lkdGg6IDEsXG4gICAgICAgICAgY29sb3I6ICdyZ2JhKDE0Myw3LDcsMSknXG4gICAgICAgIH0pLFxuICAgICAgICBmaWxsOiBuZXcgRmlsbCh7XG4gICAgICAgICAgY29sb3I6ICdyZ2JhKDAsIDAsIDI1NSwgMC4xKSdcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgXTtcblxuICAgIC8vIHNldCBsYXllciBpZFxuICAgIGxldCBsYXllckNvdW50ZXJJRCA9IDA7XG4gICAgZm9yIChjb25zdCBsYXllciBvZiB0aGlzLmFsbExheWVycykge1xuICAgICAgY29uc3QgbnVtYmVySWQgPSBOdW1iZXIobGF5ZXIuaWQucmVwbGFjZSgnaWdvLXNlYXJjaC1sYXllcicsICcnKSk7XG4gICAgICBsYXllckNvdW50ZXJJRCA9IE1hdGgubWF4KG51bWJlcklkLCBsYXllckNvdW50ZXJJRCk7XG4gICAgfVxuXG4gICAgdGhpcy5kYXRhU291cmNlU2VydmljZVxuICAgICAgLmNyZWF0ZUFzeW5jRGF0YVNvdXJjZSh7XG4gICAgICAgIHR5cGU6ICd2ZWN0b3InLFxuICAgICAgICBxdWVyeWFibGU6IHRydWVcbiAgICAgIH0gYXMgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoZGF0YVNvdXJjZTogRmVhdHVyZURhdGFTb3VyY2UpID0+IHtcbiAgICAgICAgY29uc3Qgc2VhcmNoTGF5ZXI6IFZlY3RvckxheWVyID0gbmV3IFZlY3RvckxheWVyKHtcbiAgICAgICAgICBpc0lnb0ludGVybmFsTGF5ZXI6IHRydWUsXG4gICAgICAgICAgaWQ6ICdpZ28tc2VhcmNoLWxheWVyJyArICsrbGF5ZXJDb3VudGVySUQsXG4gICAgICAgICAgdGl0bGU6IGxheWVyVGl0bGUsXG4gICAgICAgICAgc291cmNlOiBkYXRhU291cmNlLFxuICAgICAgICAgIGlnb1N0eWxlOiB7XG4gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBpZ29TdHlsZU9iamVjdDoge1xuICAgICAgICAgICAgICBmaWxsOiB7IGNvbG9yOiAncmdiYSgyNTUsMjU1LDI1NSwwLjQpJyB9LFxuICAgICAgICAgICAgICBzdHJva2U6IHsgY29sb3I6ICdyZ2JhKDE0Myw3LDcsMSknLCB3aWR0aDogMSB9LFxuICAgICAgICAgICAgICBjaXJjbGU6IHtcbiAgICAgICAgICAgICAgICBmaWxsOiB7IGNvbG9yOiAncmdiYSgyNTUsMjU1LDI1NSwwLjQpJyB9LFxuICAgICAgICAgICAgICAgIHN0cm9rZTogeyBjb2xvcjogJ3JnYmEoMTQzLDcsNywxKScsIHdpZHRoOiAxIH0sXG4gICAgICAgICAgICAgICAgcmFkaXVzOiA1XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0eWxlOiBzdHlsZXMsXG4gICAgICAgICAgc2hvd0luTGF5ZXJMaXN0OiB0cnVlLFxuICAgICAgICAgIGV4cG9ydGFibGU6IHRydWUsXG4gICAgICAgICAgd29ya3NwYWNlOiB7XG4gICAgICAgICAgICBlbmFibGVkOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0cnlCaW5kU3RvcmVMYXllcihhY3RpdmVTdG9yZSwgc2VhcmNoTGF5ZXIpO1xuICAgICAgICB0cnlBZGRMb2FkaW5nU3RyYXRlZ3koXG4gICAgICAgICAgYWN0aXZlU3RvcmUsXG4gICAgICAgICAgbmV3IEZlYXR1cmVTdG9yZUxvYWRpbmdTdHJhdGVneSh7XG4gICAgICAgICAgICBtb3Rpb246IEZlYXR1cmVNb3Rpb24uTm9uZVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdHJ5QWRkU2VsZWN0aW9uU3RyYXRlZ3koXG4gICAgICAgICAgYWN0aXZlU3RvcmUsXG4gICAgICAgICAgbmV3IEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5KHtcbiAgICAgICAgICAgIG1hcDogdGhpcy5tYXAsXG4gICAgICAgICAgICBtb3Rpb246IEZlYXR1cmVNb3Rpb24uTm9uZSxcbiAgICAgICAgICAgIG1hbnk6IHRydWVcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIGFjdGl2ZVN0b3JlLmxheWVyLnZpc2libGUgPSB0cnVlO1xuICAgICAgICBhY3RpdmVTdG9yZS5zb3VyY2Uub2wub24oXG4gICAgICAgICAgJ3JlbW92ZWZlYXR1cmUnLFxuICAgICAgICAgIChldmVudDogT2xWZWN0b3JTb3VyY2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb2xHZW9tZXRyeSA9IGV2ZW50LmZlYXR1cmUuZ2V0R2VvbWV0cnkoKTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJMYWJlbHNPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuYWRkRmVhdHVyZShzZWxlY3RlZEZlYXR1cmUsIGFjdGl2ZVN0b3JlKTtcbiAgICAgICAgdGhpcy5zdG9yZXMucHVzaChhY3RpdmVTdG9yZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGFkZEZlYXR1cmUoZmVhdHVyZTogU2VhcmNoUmVzdWx0LCBhY3RpdmVTdG9yZTogRmVhdHVyZVN0b3JlPEZlYXR1cmU+KSB7XG4gICAgY29uc3QgbmV3RmVhdHVyZSA9IHtcbiAgICAgIHR5cGU6IGZlYXR1cmUuZGF0YS50eXBlLFxuICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgY29vcmRpbmF0ZXM6IGZlYXR1cmUuZGF0YS5nZW9tZXRyeS5jb29yZGluYXRlcyxcbiAgICAgICAgdHlwZTogZmVhdHVyZS5kYXRhLmdlb21ldHJ5LnR5cGVcbiAgICAgIH0sXG4gICAgICBwcm9qZWN0aW9uOiBmZWF0dXJlLmRhdGEucHJvamVjdGlvbixcbiAgICAgIHByb3BlcnRpZXM6IGZlYXR1cmUuZGF0YS5wcm9wZXJ0aWVzLFxuICAgICAgbWV0YToge1xuICAgICAgICBpZDogZmVhdHVyZS5tZXRhLmlkXG4gICAgICB9XG4gICAgfTtcbiAgICBkZWxldGUgbmV3RmVhdHVyZS5wcm9wZXJ0aWVzLlJvdXRlO1xuICAgIGFjdGl2ZVN0b3JlLnVwZGF0ZShuZXdGZWF0dXJlKTtcbiAgICBhY3RpdmVTdG9yZS5zZXRMYXllckV4dGVudCgpO1xuICAgIGFjdGl2ZVN0b3JlLmxheWVyLm9sLmdldFNvdXJjZSgpLnJlZnJlc2goKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJMYWJlbHNPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSkge1xuICAgIGdldFRvb2x0aXBzT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnkpLmZvckVhY2goXG4gICAgICAob2xUb29sdGlwOiBPbE92ZXJsYXkgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgaWYgKG9sVG9vbHRpcCAmJiBvbFRvb2x0aXAuZ2V0TWFwKCkpIHtcbiAgICAgICAgICB0aGlzLm1hcC5vbC5yZW1vdmVPdmVybGF5KG9sVG9vbHRpcCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG59XG4iLCI8YnV0dG9uXG4gIGlnb1N0b3BQcm9wYWdhdGlvblxuICAobW91c2VlbnRlcik9XCJvbk1vdXNlRXZlbnQoJGV2ZW50KVwiXG4gIChtb3VzZWxlYXZlKT1cIm9uTW91c2VFdmVudCgkZXZlbnQpXCJcbiAgKm5nSWY9XCJsYXllci5tZXRhLmRhdGFUeXBlID09PSAnTGF5ZXInXCJcbiAgbWF0LWljb24tYnV0dG9uXG4gIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXG4gIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICBbbWF0VG9vbHRpcF09XCJjb21wdXRlVG9vbHRpcCgpIHwgdHJhbnNsYXRlXCJcbiAgW2NvbG9yXT1cIihpc1ByZXZpZXckIHwgYXN5bmMpID8gJycgOiBhZGRlZCA/ICd3YXJuJyA6ICcnXCJcbiAgKGNsaWNrKT1cIm9uVG9nZ2xlQ2xpY2soJGV2ZW50KVwiXG4+XG4gIDxtYXQtaWNvblxuICAgIGFyaWEtaGlkZGVuPVwiZmFsc2VcIlxuICAgIG1hdEJhZGdlPVwiaWNvblwiXG4gICAgW2lnb01hdEJhZGdlSWNvbl09XCJnZXRCYWRnZUljb24oKVwiXG4gICAgaWdvTWF0QmFkZ2VDb2xvcj1cInJnYmEoMCwwLDAsMC44NylcIlxuICAgIGlnb01hdEJhZGdlQmFja2dyb3VuZENvbG9yPVwibm9uZVwiXG4gICAgW2lnb01hdEJhZGdlSW52ZXJzZUNvbG9yXT1cInRydWVcIlxuICAgIFttYXRCYWRnZUhpZGRlbl09XCJcbiAgICAgICgoaW5SYW5nZSQgfCBhc3luYykgJiYgKGlzVmlzaWJsZSQgfCBhc3luYykgPT09IHRydWUpIHx8XG4gICAgICAoKGluUmFuZ2UkIHwgYXN5bmMpICYmICFhZGRlZCkgfHxcbiAgICAgICgoaW5SYW5nZSQgfCBhc3luYykgJiYgKGlzUHJldmlldyQgfCBhc3luYykpXG4gICAgXCJcbiAgICBbbWF0QmFkZ2VEaXNhYmxlZF09XCIoaW5SYW5nZSQgfCBhc3luYykgPT09IGZhbHNlXCJcbiAgICBtYXRCYWRnZVNpemU9XCJzbWFsbFwiXG4gICAgbWF0QmFkZ2VQb3NpdGlvbj1cImFmdGVyXCJcbiAgICA+e3sgKGlzUHJldmlldyQgfCBhc3luYykgPyAnYWRkJyA6IGFkZGVkID8gJ2RlbGV0ZScgOiAnYWRkJyB9fVxuICA8L21hdC1pY29uPlxuPC9idXR0b24+XG5cbjxidXR0b25cbiAgW2lkXT1cIiFpc01vYmlsZSA/ICdoaWRlLXNhdmUtc2VhcmNoLXJlc3VsdC1idG4nIDogJydcIlxuICBpZ29TdG9wUHJvcGFnYXRpb25cbiAgKm5nSWY9XCJsYXllci5tZXRhLmRhdGFUeXBlID09PSAnRmVhdHVyZScgJiYgc2F2ZVNlYXJjaFJlc3VsdEluTGF5ZXJcIlxuICBtYXQtaWNvbi1idXR0b25cbiAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gIFttYXRUb29sdGlwXT1cImFkZEZlYXR1cmVUb0xheWVyVG9vbHRpcCQgfCBhc3luYyB8IHRyYW5zbGF0ZVwiXG4gIChjbGljayk9XCJhZGRGZWF0dXJlVG9MYXllcigpXCJcbj5cbiAgPG1hdC1pY29uXG4gICAgYXJpYS1oaWRkZW49XCJmYWxzZVwiXG4gICAgbWF0QmFkZ2U9XCJpY29uXCJcbiAgICBpZ29NYXRCYWRnZUljb249XCJ2aXNpYmlsaXR5X29mZlwiXG4gICAgW2lnb01hdEJhZGdlSW52ZXJzZUNvbG9yXT1cInRydWVcIlxuICAgIFttYXRCYWRnZUhpZGRlbl09XCJpblJhbmdlJCB8IGFzeW5jXCJcbiAgICBbbWF0QmFkZ2VEaXNhYmxlZF09XCJ0cnVlXCJcbiAgICBtYXRCYWRnZVNpemU9XCJzbWFsbFwiXG4gICAgbWF0QmFkZ2VQb3NpdGlvbj1cImFmdGVyXCJcbiAgICA+YWRkX3RvX3Bob3Rvc1xuICA8L21hdC1pY29uPlxuPC9idXR0b24+XG4iXX0=
@@ -92,10 +92,10 @@ export class SearchResultsItemComponent {
92
92
  break;
93
93
  }
94
94
  }
95
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: SearchResultsItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
96
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: SearchResultsItemComponent, isStandalone: true, selector: "igo-search-results-item", inputs: { result: "result", map: "map", showIcons: "showIcons", withZoomButton: "withZoomButton" }, outputs: { zoomEvent: "zoomEvent" }, ngImport: i0, template: "<mat-list-item\n (mouseenter)=\"onMouseEvent($event)\"\n (mouseleave)=\"onMouseEvent($event)\"\n>\n <mat-icon *ngIf=\"icon\" matListItemIcon>{{\n showIcons ? icon : 'blank'\n }}</mat-icon>\n\n <div\n matListItemTitle\n *ngIf=\"titleHtml; else normalTitle\"\n [innerHtml]=\"titleHtml\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"tooltipHtml\"\n matTooltipClass=\"search-result-tooltip\"\n ></div>\n <ng-template #normalTitle>\n <span\n matListItemTitle\n *ngIf=\"!titleHtml\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"title\"\n >{{ title }}</span\n >\n </ng-template>\n\n <div matListItemMeta>\n <button\n *ngIf=\"withZoomButton\"\n igoStopPropagation\n mat-icon-button\n (click)=\"onZoomHandler()\"\n >\n <mat-icon>search</mat-icon>\n </button>\n\n <ng-content select=\"[igoSearchItemToolbar]\"> </ng-content>\n </div>\n</mat-list-item>\n", styles: [":host ::ng-deep small{color:#8c8c8c}:host div[matlistitemmeta]:empty{display:none}:host ::ng-deep .search-result-tooltip{white-space:pre-line}\n"], dependencies: [{ kind: "ngmodule", type: MatListModule }, { kind: "component", type: i1.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i1.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i1.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i1.MatListItemMeta, selector: "[matListItemMeta]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: StopPropagationDirective, selector: "[igoStopPropagation]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
95
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchResultsItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
96
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchResultsItemComponent, isStandalone: true, selector: "igo-search-results-item", inputs: { result: "result", map: "map", showIcons: "showIcons", withZoomButton: "withZoomButton" }, outputs: { zoomEvent: "zoomEvent" }, ngImport: i0, template: "<mat-list-item\n (mouseenter)=\"onMouseEvent($event)\"\n (mouseleave)=\"onMouseEvent($event)\"\n>\n <mat-icon *ngIf=\"icon\" matListItemIcon>{{\n showIcons ? icon : 'blank'\n }}</mat-icon>\n\n <div\n matListItemTitle\n *ngIf=\"titleHtml; else normalTitle\"\n [innerHtml]=\"titleHtml\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"tooltipHtml\"\n matTooltipClass=\"search-result-tooltip\"\n ></div>\n <ng-template #normalTitle>\n <span\n matListItemTitle\n *ngIf=\"!titleHtml\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"title\"\n >{{ title }}</span\n >\n </ng-template>\n\n <div matListItemMeta>\n <button\n *ngIf=\"withZoomButton\"\n igoStopPropagation\n mat-icon-button\n (click)=\"onZoomHandler()\"\n >\n <mat-icon>search</mat-icon>\n </button>\n\n <ng-content select=\"[igoSearchItemToolbar]\"> </ng-content>\n </div>\n</mat-list-item>\n", styles: [":host ::ng-deep small{color:#8c8c8c}:host div[matlistitemmeta]:empty{display:none}:host ::ng-deep .search-result-tooltip{white-space:pre-line}\n"], dependencies: [{ kind: "ngmodule", type: MatListModule }, { kind: "component", type: i1.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i1.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i1.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i1.MatListItemMeta, selector: "[matListItemMeta]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: StopPropagationDirective, selector: "[igoStopPropagation]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
97
97
  }
98
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: SearchResultsItemComponent, decorators: [{
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchResultsItemComponent, decorators: [{
99
99
  type: Component,
100
100
  args: [{ selector: 'igo-search-results-item', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
101
101
  MatListModule,
@@ -116,4 +116,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
116
116
  }], zoomEvent: [{
117
117
  type: Output
118
118
  }] } });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdHMtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9zZWFyY2gvc2VhcmNoLXJlc3VsdHMvc2VhcmNoLXJlc3VsdHMtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9zZWFyY2gvc2VhcmNoLXJlc3VsdHMvc2VhcmNoLXJlc3VsdHMtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0QsT0FBTyxFQUNMLGFBQWEsRUFDYixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ25CLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFekUsT0FBTyxlQUFlLE1BQU0sbUJBQW1CLENBQUM7QUFFaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQUc5Qzs7R0FFRztBQWdCSCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDOztPQUVHO0lBQ00sTUFB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L2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5pbXBvcnQge1xuICBnZXRFbnRpdHlJY29uLFxuICBnZXRFbnRpdHlUaXRsZSxcbiAgZ2V0RW50aXR5VGl0bGVIdG1sXG59IGZyb20gJ0BpZ28yL2NvbW1vbi9lbnRpdHknO1xuaW1wb3J0IHsgU3RvcFByb3BhZ2F0aW9uRGlyZWN0aXZlIH0gZnJvbSAnQGlnbzIvY29tbW9uL3N0b3AtcHJvcGFnYXRpb24nO1xuXG5pbXBvcnQgb2xGb3JtYXRHZW9KU09OIGZyb20gJ29sL2Zvcm1hdC9HZW9KU09OJztcblxuaW1wb3J0IHsgRmVhdHVyZU1vdGlvbiwgbW92ZVRvT2xGZWF0dXJlcyB9IGZyb20gJy4uLy4uL2ZlYXR1cmUnO1xuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9tYXAnO1xuaW1wb3J0IHsgU2VhcmNoUmVzdWx0IH0gZnJvbSAnLi4vc2hhcmVkL3NlYXJjaC5pbnRlcmZhY2VzJztcblxuLyoqXG4gKiBTZWFyY2ggcmVzdWx0cyBsaXN0IGl0ZW1cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWdvLXNlYXJjaC1yZXN1bHRzLWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLXJlc3VsdHMtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC1yZXN1bHRzLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBNYXRMaXN0TW9kdWxlLFxuICAgIE5nSWYsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hSZXN1bHRzSXRlbUNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBTZWFyY2ggcmVzdWx0IGl0ZW1cbiAgICovXG4gIEBJbnB1dCgpIHJlc3VsdDogU2VhcmNoUmVzdWx0O1xuXG4gIEBJbnB1dCgpIG1hcDogSWdvTWFwO1xuXG4gIC8qKlxuICAgKiBTZWFyY2ggcmVzdWx0IHRpdGxlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cblxuICAvKipcbiAgICogdG8gc2hvdyBoaWRlIHJlc3VsdHMgaWNvbnNcbiAgICovXG4gIEBJbnB1dCgpIHNob3dJY29uczogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGVyZSBzaG91bGQgYmUgYSB6b29tIGJ1dHRvblxuICAgKi9cbiAgQElucHV0KCkgd2l0aFpvb21CdXR0b24gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgem9vbUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHByaXZhdGUgZm9ybWF0ID0gbmV3IG9sRm9ybWF0R2VvSlNPTigpO1xuXG4gIGdldCB0aXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBnZXRFbnRpdHlUaXRsZSh0aGlzLnJlc3VsdCk7XG4gIH1cblxuICAvKipcbiAgICogU2VhcmNoIHJlc3VsdCBIVE1MIHRpdGxlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0IHRpdGxlSHRtbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBnZXRFbnRpdHlUaXRsZUh0bWwodGhpcy5yZXN1bHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlYXJjaCByZXN1bHQgdG9vbHRpcFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCB0b29sdGlwSHRtbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRpdGxlSHRtbFxuICAgICAgLnJlcGxhY2UoLzxzbWFsbD9bXj5dKyg+fCQpL2csICdcXG4nKVxuICAgICAgLnJlcGxhY2UoLzxcXC8/W14+XSsoPnwkKS9nLCAnJyk7XG4gIH1cblxuICAvKipcbiAgICogU2VhcmNoIHJlc3VsdCBpY29uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0IGljb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ2V0RW50aXR5SWNvbih0aGlzLnJlc3VsdCk7XG4gIH1cblxuICBvblpvb21IYW5kbGVyKCkge1xuICAgIGNvbnN0IG9sRmVhdHVyZSA9IHRoaXMuZm9ybWF0LnJlYWRGZWF0dXJlKHRoaXMucmVzdWx0LmRhdGEsIHtcbiAgICAgIGRhdGFQcm9qZWN0aW9uOiB0aGlzLnJlc3VsdC5kYXRhLnByb2plY3Rpb24sXG4gICAgICBmZWF0dXJlUHJvamVjdGlvbjogdGhpcy5tYXAucHJvamVjdGlvblxuICAgIH0pO1xuICAgIG1vdmVUb09sRmVhdHVyZXMoXG4gICAgICB0aGlzLm1hcC52aWV3Q29udHJvbGxlcixcbiAgICAgIFtvbEZlYXR1cmVdLFxuICAgICAgRmVhdHVyZU1vdGlvbi5EZWZhdWx0XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPbiBtb3VzZSBldmVudCwgbW91c2VlbnRlciAvbW91c2VsZWF2ZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uTW91c2VFdmVudChldmVudCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBldmVudC50YXJnZXQ7XG4gICAgY29uc3QgdHlwZSA9IGV2ZW50LnR5cGU7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdtb3VzZWVudGVyJzoge1xuICAgICAgICBjb25zdCBoaWRlQnRuID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yKCcjaGlkZS1zYXZlLXNlYXJjaC1yZXN1bHQtYnRuJyk7XG4gICAgICAgIGhpZGVCdG4/LnNldEF0dHJpYnV0ZSgnaWQnLCAnc2hvdy1zYXZlLXNlYXJjaC1yZXN1bHQtYnRuJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnbW91c2VsZWF2ZSc6IHtcbiAgICAgICAgY29uc3Qgc2hvd0J0biA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcignI3Nob3ctc2F2ZS1zZWFyY2gtcmVzdWx0LWJ0bicpO1xuICAgICAgICBzaG93QnRuPy5zZXRBdHRyaWJ1dGUoJ2lkJywgJ2hpZGUtc2F2ZS1zZWFyY2gtcmVzdWx0LWJ0bicpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIiwiPG1hdC1saXN0LWl0ZW1cbiAgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUV2ZW50KCRldmVudClcIlxuICAobW91c2VsZWF2ZSk9XCJvbk1vdXNlRXZlbnQoJGV2ZW50KVwiXG4+XG4gIDxtYXQtaWNvbiAqbmdJZj1cImljb25cIiBtYXRMaXN0SXRlbUljb24+e3tcbiAgICBzaG93SWNvbnMgPyBpY29uIDogJ2JsYW5rJ1xuICB9fTwvbWF0LWljb24+XG5cbiAgPGRpdlxuICAgIG1hdExpc3RJdGVtVGl0bGVcbiAgICAqbmdJZj1cInRpdGxlSHRtbDsgZWxzZSBub3JtYWxUaXRsZVwiXG4gICAgW2lubmVySHRtbF09XCJ0aXRsZUh0bWxcIlxuICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgIFttYXRUb29sdGlwXT1cInRvb2x0aXBIdG1sXCJcbiAgICBtYXRUb29sdGlwQ2xhc3M9XCJzZWFyY2gtcmVzdWx0LXRvb2x0aXBcIlxuICA+PC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjbm9ybWFsVGl0bGU+XG4gICAgPHNwYW5cbiAgICAgIG1hdExpc3RJdGVtVGl0bGVcbiAgICAgICpuZ0lmPVwiIXRpdGxlSHRtbFwiXG4gICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgIFttYXRUb29sdGlwXT1cInRpdGxlXCJcbiAgICAgID57eyB0aXRsZSB9fTwvc3BhblxuICAgID5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8ZGl2IG1hdExpc3RJdGVtTWV0YT5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdJZj1cIndpdGhab29tQnV0dG9uXCJcbiAgICAgIGlnb1N0b3BQcm9wYWdhdGlvblxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAoY2xpY2spPVwib25ab29tSGFuZGxlcigpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24+c2VhcmNoPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltpZ29TZWFyY2hJdGVtVG9vbGJhcl1cIj4gPC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvbWF0LWxpc3QtaXRlbT5cbiJdfQ==
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdHMtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9zZWFyY2gvc2VhcmNoLXJlc3VsdHMvc2VhcmNoLXJlc3VsdHMtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9zZWFyY2gvc2VhcmNoLXJlc3VsdHMvc2VhcmNoLXJlc3VsdHMtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0QsT0FBTyxFQUNMLGFBQWEsRUFDYixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ25CLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFekUsT0FBTyxlQUFlLE1BQU0sbUJBQW1CLENBQUM7QUFFaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQUc5Qzs7R0FFRztBQWdCSCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDOztPQUVHO0lBQ00sTUFB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L2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5pbXBvcnQge1xuICBnZXRFbnRpdHlJY29uLFxuICBnZXRFbnRpdHlUaXRsZSxcbiAgZ2V0RW50aXR5VGl0bGVIdG1sXG59IGZyb20gJ0BpZ28yL2NvbW1vbi9lbnRpdHknO1xuaW1wb3J0IHsgU3RvcFByb3BhZ2F0aW9uRGlyZWN0aXZlIH0gZnJvbSAnQGlnbzIvY29tbW9uL3N0b3AtcHJvcGFnYXRpb24nO1xuXG5pbXBvcnQgb2xGb3JtYXRHZW9KU09OIGZyb20gJ29sL2Zvcm1hdC9HZW9KU09OJztcblxuaW1wb3J0IHsgRmVhdHVyZU1vdGlvbiwgbW92ZVRvT2xGZWF0dXJlcyB9IGZyb20gJy4uLy4uL2ZlYXR1cmUnO1xuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9tYXAnO1xuaW1wb3J0IHsgU2VhcmNoUmVzdWx0IH0gZnJvbSAnLi4vc2hhcmVkL3NlYXJjaC5pbnRlcmZhY2VzJztcblxuLyoqXG4gKiBTZWFyY2ggcmVzdWx0cyBsaXN0IGl0ZW1cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWdvLXNlYXJjaC1yZXN1bHRzLWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLXJlc3VsdHMtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC1yZXN1bHRzLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBNYXRMaXN0TW9kdWxlLFxuICAgIE5nSWYsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hSZXN1bHRzSXRlbUNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBTZWFyY2ggcmVzdWx0IGl0ZW1cbiAgICovXG4gIEBJbnB1dCgpIHJlc3VsdDogU2VhcmNoUmVzdWx0O1xuXG4gIEBJbnB1dCgpIG1hcDogSWdvTWFwO1xuXG4gIC8qKlxuICAgKiBTZWFyY2ggcmVzdWx0IHRpdGxlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cblxuICAvKipcbiAgICogdG8gc2hvdyBoaWRlIHJlc3VsdHMgaWNvbnNcbiAgICovXG4gIEBJbnB1dCgpIHNob3dJY29uczogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGVyZSBzaG91bGQgYmUgYSB6b29tIGJ1dHRvblxuICAgKi9cbiAgQElucHV0KCkgd2l0aFpvb21CdXR0b24gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgem9vbUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHByaXZhdGUgZm9ybWF0ID0gbmV3IG9sRm9ybWF0R2VvSlNPTigpO1xuXG4gIGdldCB0aXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBnZXRFbnRpdHlUaXRsZSh0aGlzLnJlc3VsdCk7XG4gIH1cblxuICAvKipcbiAgICogU2VhcmNoIHJlc3VsdCBIVE1MIHRpdGxlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0IHRpdGxlSHRtbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBnZXRFbnRpdHlUaXRsZUh0bWwodGhpcy5yZXN1bHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlYXJjaCByZXN1bHQgdG9vbHRpcFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCB0b29sdGlwSHRtbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRpdGxlSHRtbFxuICAgICAgLnJlcGxhY2UoLzxzbWFsbD9bXj5dKyg+fCQpL2csICdcXG4nKVxuICAgICAgLnJlcGxhY2UoLzxcXC8/W14+XSsoPnwkKS9nLCAnJyk7XG4gIH1cblxuICAvKipcbiAgICogU2VhcmNoIHJlc3VsdCBpY29uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0IGljb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ2V0RW50aXR5SWNvbih0aGlzLnJlc3VsdCk7XG4gIH1cblxuICBvblpvb21IYW5kbGVyKCkge1xuICAgIGNvbnN0IG9sRmVhdHVyZSA9IHRoaXMuZm9ybWF0LnJlYWRGZWF0dXJlKHRoaXMucmVzdWx0LmRhdGEsIHtcbiAgICAgIGRhdGFQcm9qZWN0aW9uOiB0aGlzLnJlc3VsdC5kYXRhLnByb2plY3Rpb24sXG4gICAgICBmZWF0dXJlUHJvamVjdGlvbjogdGhpcy5tYXAucHJvamVjdGlvblxuICAgIH0pO1xuICAgIG1vdmVUb09sRmVhdHVyZXMoXG4gICAgICB0aGlzLm1hcC52aWV3Q29udHJvbGxlcixcbiAgICAgIFtvbEZlYXR1cmVdLFxuICAgICAgRmVhdHVyZU1vdGlvbi5EZWZhdWx0XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPbiBtb3VzZSBldmVudCwgbW91c2VlbnRlciAvbW91c2VsZWF2ZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uTW91c2VFdmVudChldmVudCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBldmVudC50YXJnZXQ7XG4gICAgY29uc3QgdHlwZSA9IGV2ZW50LnR5cGU7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdtb3VzZWVudGVyJzoge1xuICAgICAgICBjb25zdCBoaWRlQnRuID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yKCcjaGlkZS1zYXZlLXNlYXJjaC1yZXN1bHQtYnRuJyk7XG4gICAgICAgIGhpZGVCdG4/LnNldEF0dHJpYnV0ZSgnaWQnLCAnc2hvdy1zYXZlLXNlYXJjaC1yZXN1bHQtYnRuJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnbW91c2VsZWF2ZSc6IHtcbiAgICAgICAgY29uc3Qgc2hvd0J0biA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcignI3Nob3ctc2F2ZS1zZWFyY2gtcmVzdWx0LWJ0bicpO1xuICAgICAgICBzaG93QnRuPy5zZXRBdHRyaWJ1dGUoJ2lkJywgJ2hpZGUtc2F2ZS1zZWFyY2gtcmVzdWx0LWJ0bicpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIiwiPG1hdC1saXN0LWl0ZW1cbiAgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUV2ZW50KCRldmVudClcIlxuICAobW91c2VsZWF2ZSk9XCJvbk1vdXNlRXZlbnQoJGV2ZW50KVwiXG4+XG4gIDxtYXQtaWNvbiAqbmdJZj1cImljb25cIiBtYXRMaXN0SXRlbUljb24+e3tcbiAgICBzaG93SWNvbnMgPyBpY29uIDogJ2JsYW5rJ1xuICB9fTwvbWF0LWljb24+XG5cbiAgPGRpdlxuICAgIG1hdExpc3RJdGVtVGl0bGVcbiAgICAqbmdJZj1cInRpdGxlSHRtbDsgZWxzZSBub3JtYWxUaXRsZVwiXG4gICAgW2lubmVySHRtbF09XCJ0aXRsZUh0bWxcIlxuICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgIFttYXRUb29sdGlwXT1cInRvb2x0aXBIdG1sXCJcbiAgICBtYXRUb29sdGlwQ2xhc3M9XCJzZWFyY2gtcmVzdWx0LXRvb2x0aXBcIlxuICA+PC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjbm9ybWFsVGl0bGU+XG4gICAgPHNwYW5cbiAgICAgIG1hdExpc3RJdGVtVGl0bGVcbiAgICAgICpuZ0lmPVwiIXRpdGxlSHRtbFwiXG4gICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgIFttYXRUb29sdGlwXT1cInRpdGxlXCJcbiAgICAgID57eyB0aXRsZSB9fTwvc3BhblxuICAgID5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8ZGl2IG1hdExpc3RJdGVtTWV0YT5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdJZj1cIndpdGhab29tQnV0dG9uXCJcbiAgICAgIGlnb1N0b3BQcm9wYWdhdGlvblxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAoY2xpY2spPVwib25ab29tSGFuZGxlcigpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24+c2VhcmNoPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltpZ29TZWFyY2hJdGVtVG9vbGJhcl1cIj4gPC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvbWF0LWxpc3QtaXRlbT5cbiJdfQ==
@@ -243,10 +243,10 @@ export class SearchResultsComponent {
243
243
  });
244
244
  return;
245
245
  }
246
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: SearchResultsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SearchService }, { token: i2.ConfigService }], target: i0.ɵɵFactoryTarget.Component });
247
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: SearchResultsComponent, isStandalone: true, selector: "igo-search-results", inputs: { map: "map", store: "store", showIcons: "showIcons", mode: "mode", withZoomButton: "withZoomButton", tabsMode: "tabsMode", term: "term", settingsChange$: "settingsChange$", termSplitter: "termSplitter" }, outputs: { resultFocus: "resultFocus", resultUnfocus: "resultUnfocus", resultSelect: "resultSelect", moreResults: "moreResults", resultMouseenter: "resultMouseenter", resultMouseleave: "resultMouseleave" }, queries: [{ propertyName: "templateSearchToolbar", first: true, predicate: ["igoSearchItemToolbar"], descendants: true }], ngImport: i0, template: "<igo-list [navigation]=\"true\" *ngIf=\"tabsMode === false\">\n <ng-template #groupTemplate ngFor let-group [ngForOf]=\"results$ | async\">\n <igo-collapsible\n [class]=\"group.source.getId()\"\n *ngIf=\"mode === searchResultMode.Grouped; else flatTemplate\"\n [title]=\"computeGroupTitle(group)\"\n [collapsed]=\"collapsed[group.source.title]\"\n (toggle)=\"collapsed[group.source.title] = $event\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n storeItemTemplate;\n context: { results: group.results }\n \"\n ></ng-container>\n </igo-collapsible>\n\n <ng-template #flatTemplate>\n <ng-container\n *ngTemplateOutlet=\"\n storeItemTemplate;\n context: { results: group.results }\n \"\n ></ng-container>\n </ng-template>\n\n <ng-template #storeItemTemplate let-results=\"results\">\n <ng-template ngFor let-result [ngForOf]=\"results\">\n <igo-search-results-item\n igoListItem\n color=\"accent\"\n [map]=\"map\"\n [result]=\"result\"\n [showIcons]=\"showIcons\"\n [withZoomButton]=\"withZoomButton\"\n [focused]=\"store.state.get(result).focused\"\n [selected]=\"store.state.get(result).selected\"\n (focus)=\"resultFocus.emit(result)\"\n (unfocus)=\"resultUnfocus.emit(result)\"\n (select)=\"onResultSelect(result)\"\n (mouseenter)=\"resultFocus.emit(result)\"\n (mouseleave)=\"resultUnfocus.emit(result)\"\n >\n <ng-container\n igoSearchItemToolbar\n [ngTemplateOutlet]=\"templateSearchToolbar\"\n [ngTemplateOutletContext]=\"{ result: result }\"\n >\n </ng-container>\n </igo-search-results-item>\n </ng-template>\n <span\n class=\"moreResults mat-typography\"\n *ngIf=\"isMoreResults(group)\"\n (click)=\"displayMoreResults(group)\"\n >\n <u>{{ 'igo.geo.search.displayMoreResults' | translate }}</u>\n </span>\n </ng-template>\n </ng-template>\n</igo-list>\n\n<igo-list [navigation]=\"true\" *ngIf=\"tabsMode\">\n <ng-container\n *ngIf=\"\n mode === searchResultMode.Grouped;\n then tabsTemplate;\n else flatTemplate\n \"\n ></ng-container>\n\n <ng-template #tabsTemplate>\n <mat-tab-group class=\"custom-tabs-view\" dynamicHeight>\n <mat-tab\n *ngFor=\"let group of results$ | async\"\n [label]=\"computeGroupTitle(group)\"\n >\n <ng-container\n *ngTemplateOutlet=\"storeItemTemplate; context: { group: group }\"\n ></ng-container>\n </mat-tab>\n </mat-tab-group>\n </ng-template>\n\n <ng-template #flatTemplate>\n <ng-template ngFor let-group [ngForOf]=\"results$ | async\">\n <ng-container\n *ngTemplateOutlet=\"storeItemTemplate; context: { group: group }\"\n ></ng-container>\n </ng-template>\n </ng-template>\n\n <ng-template #storeItemTemplate let-group=\"group\">\n <ng-template ngFor let-result [ngForOf]=\"group.results\">\n <igo-search-results-item\n igoListItem\n color=\"accent\"\n [map]=\"map\"\n [result]=\"result\"\n [showIcons]=\"showIcons\"\n [withZoomButton]=\"withZoomButton\"\n [focused]=\"store.state.get(result).focused\"\n [selected]=\"store.state.get(result).selected\"\n (focus)=\"resultFocus.emit(result)\"\n (unfocus)=\"resultUnfocus.emit(result)\"\n (select)=\"onResultSelect(result)\"\n (mouseenter)=\"resultFocus.emit(result)\"\n (mouseleave)=\"resultUnfocus.emit(result)\"\n >\n <ng-container\n igoSearchItemToolbar\n [ngTemplateOutlet]=\"templateSearchToolbar\"\n [ngTemplateOutletContext]=\"{ result: result }\"\n >\n </ng-container>\n </igo-search-results-item>\n </ng-template>\n <span\n class=\"moreResults mat-typography\"\n *ngIf=\"isMoreResults(group)\"\n (click)=\"displayMoreResults(group)\"\n >\n <u>{{ 'igo.geo.search.displayMoreResults' | translate }}</u>\n </span>\n </ng-template>\n</igo-list>\n", styles: [":host .moreResults{cursor:pointer;color:#00f;float:right;margin-right:10px;margin-top:5px}:host igo-list ::ng-deep mat-list{height:100%}:host igo-list ::ng-deep mat-list .custom-tabs-view .mat-mdc-tab-header-pagination{min-width:20px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ListComponent, selector: "igo-list", inputs: ["navigation", "selection"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: CollapsibleComponent, selector: "igo-collapsible", inputs: ["title", "collapsed"], outputs: ["toggle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SearchResultsItemComponent, selector: "igo-search-results-item", inputs: ["result", "map", "showIcons", "withZoomButton"], outputs: ["zoomEvent"] }, { 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: "ngmodule", type: MatTabsModule }, { kind: "component", type: i3.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i3.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
246
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchResultsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SearchService }, { token: i2.ConfigService }], target: i0.ɵɵFactoryTarget.Component });
247
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchResultsComponent, isStandalone: true, selector: "igo-search-results", inputs: { map: "map", store: "store", showIcons: "showIcons", mode: "mode", withZoomButton: "withZoomButton", tabsMode: "tabsMode", term: "term", settingsChange$: "settingsChange$", termSplitter: "termSplitter" }, outputs: { resultFocus: "resultFocus", resultUnfocus: "resultUnfocus", resultSelect: "resultSelect", moreResults: "moreResults", resultMouseenter: "resultMouseenter", resultMouseleave: "resultMouseleave" }, queries: [{ propertyName: "templateSearchToolbar", first: true, predicate: ["igoSearchItemToolbar"], descendants: true }], ngImport: i0, template: "<igo-list [navigation]=\"true\" *ngIf=\"tabsMode === false\">\n <ng-template #groupTemplate ngFor let-group [ngForOf]=\"results$ | async\">\n <igo-collapsible\n [class]=\"group.source.getId()\"\n *ngIf=\"mode === searchResultMode.Grouped; else flatTemplate\"\n [title]=\"computeGroupTitle(group)\"\n [collapsed]=\"collapsed[group.source.title]\"\n (toggle)=\"collapsed[group.source.title] = $event\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n storeItemTemplate;\n context: { results: group.results }\n \"\n ></ng-container>\n </igo-collapsible>\n\n <ng-template #flatTemplate>\n <ng-container\n *ngTemplateOutlet=\"\n storeItemTemplate;\n context: { results: group.results }\n \"\n ></ng-container>\n </ng-template>\n\n <ng-template #storeItemTemplate let-results=\"results\">\n <ng-template ngFor let-result [ngForOf]=\"results\">\n <igo-search-results-item\n igoListItem\n color=\"accent\"\n [map]=\"map\"\n [result]=\"result\"\n [showIcons]=\"showIcons\"\n [withZoomButton]=\"withZoomButton\"\n [focused]=\"store.state.get(result).focused\"\n [selected]=\"store.state.get(result).selected\"\n (focus)=\"resultFocus.emit(result)\"\n (unfocus)=\"resultUnfocus.emit(result)\"\n (select)=\"onResultSelect(result)\"\n (mouseenter)=\"resultFocus.emit(result)\"\n (mouseleave)=\"resultUnfocus.emit(result)\"\n >\n <ng-container\n igoSearchItemToolbar\n [ngTemplateOutlet]=\"templateSearchToolbar\"\n [ngTemplateOutletContext]=\"{ result: result }\"\n >\n </ng-container>\n </igo-search-results-item>\n </ng-template>\n <span\n class=\"moreResults mat-typography\"\n *ngIf=\"isMoreResults(group)\"\n (click)=\"displayMoreResults(group)\"\n >\n <u>{{ 'igo.geo.search.displayMoreResults' | translate }}</u>\n </span>\n </ng-template>\n </ng-template>\n</igo-list>\n\n<igo-list [navigation]=\"true\" *ngIf=\"tabsMode\">\n <ng-container\n *ngIf=\"\n mode === searchResultMode.Grouped;\n then tabsTemplate;\n else flatTemplate\n \"\n ></ng-container>\n\n <ng-template #tabsTemplate>\n <mat-tab-group class=\"custom-tabs-view\" dynamicHeight>\n <mat-tab\n *ngFor=\"let group of results$ | async\"\n [label]=\"computeGroupTitle(group)\"\n >\n <ng-container\n *ngTemplateOutlet=\"storeItemTemplate; context: { group: group }\"\n ></ng-container>\n </mat-tab>\n </mat-tab-group>\n </ng-template>\n\n <ng-template #flatTemplate>\n <ng-template ngFor let-group [ngForOf]=\"results$ | async\">\n <ng-container\n *ngTemplateOutlet=\"storeItemTemplate; context: { group: group }\"\n ></ng-container>\n </ng-template>\n </ng-template>\n\n <ng-template #storeItemTemplate let-group=\"group\">\n <ng-template ngFor let-result [ngForOf]=\"group.results\">\n <igo-search-results-item\n igoListItem\n color=\"accent\"\n [map]=\"map\"\n [result]=\"result\"\n [showIcons]=\"showIcons\"\n [withZoomButton]=\"withZoomButton\"\n [focused]=\"store.state.get(result).focused\"\n [selected]=\"store.state.get(result).selected\"\n (focus)=\"resultFocus.emit(result)\"\n (unfocus)=\"resultUnfocus.emit(result)\"\n (select)=\"onResultSelect(result)\"\n (mouseenter)=\"resultFocus.emit(result)\"\n (mouseleave)=\"resultUnfocus.emit(result)\"\n >\n <ng-container\n igoSearchItemToolbar\n [ngTemplateOutlet]=\"templateSearchToolbar\"\n [ngTemplateOutletContext]=\"{ result: result }\"\n >\n </ng-container>\n </igo-search-results-item>\n </ng-template>\n <span\n class=\"moreResults mat-typography\"\n *ngIf=\"isMoreResults(group)\"\n (click)=\"displayMoreResults(group)\"\n >\n <u>{{ 'igo.geo.search.displayMoreResults' | translate }}</u>\n </span>\n </ng-template>\n</igo-list>\n", styles: [":host .moreResults{cursor:pointer;color:#00f;float:right;margin-right:10px;margin-top:5px}:host igo-list ::ng-deep mat-list{height:100%}:host igo-list ::ng-deep mat-list .custom-tabs-view .mat-mdc-tab-header-pagination{min-width:20px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ListComponent, selector: "igo-list", inputs: ["navigation", "selection"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: CollapsibleComponent, selector: "igo-collapsible", inputs: ["title", "collapsed"], outputs: ["toggle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SearchResultsItemComponent, selector: "igo-search-results-item", inputs: ["result", "map", "showIcons", "withZoomButton"], outputs: ["zoomEvent"] }, { 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: "ngmodule", type: MatTabsModule }, { kind: "component", type: i3.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i3.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
248
248
  }
249
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: SearchResultsComponent, decorators: [{
249
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchResultsComponent, decorators: [{
250
250
  type: Component,
251
251
  args: [{ selector: 'igo-search-results', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
252
252
  NgIf,
@@ -294,4 +294,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
294
294
  type: ContentChild,
295
295
  args: ['igoSearchItemToolbar', /* TODO: add static flag */ {}]
296
296
  }] } });
297
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvc2VhcmNoL3NlYXJjaC1yZXN1bHRzL3NlYXJjaC1yZXN1bHRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL3NlYXJjaC9zZWFyY2gtcmVzdWx0cy9zZWFyY2gtcmVzdWx0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBRUwsV0FBVyxFQUNYLG1DQUFtQyxFQUNuQyxrQkFBa0IsRUFDbkIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXhELE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUE0QixLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvQyxPQUFPLEVBQUUsTUFB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QUFNO2dCQUtHLGFBQWE7c0JBQXRCLE1BQU07Z0JBS0csWUFBWTtzQkFBckIsTUFBTTtnQkFLRyxXQUFXO3NCQUFwQixNQUFNO2dCQVFHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBR1AscUJBQXFCO3NCQURwQixZQUFZO3VCQUFDLHNCQUFzQixFQUFFLDJCQUEyQixDQUFDLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nRm9yLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5cbmltcG9ydCB7IENvbGxhcHNpYmxlQ29tcG9uZW50IH0gZnJvbSAnQGlnbzIvY29tbW9uL2NvbGxhcHNpYmxlJztcbmltcG9ydCB7XG4gIEVudGl0eVN0YXRlLFxuICBFbnRpdHlTdG9yZSxcbiAgRW50aXR5U3RvcmVGaWx0ZXJDdXN0b21GdW5jU3RyYXRlZ3ksXG4gIEVudGl0eVN0b3JlV2F0Y2hlclxufSBmcm9tICdAaWdvMi9jb21tb24vZW50aXR5JztcbmltcG9ydCB7IExpc3RDb21wb25lbnQsIExpc3RJdGVtRGlyZWN0aXZlIH0gZnJvbSAnQGlnbzIvY29tbW9uL2xpc3QnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvY29uZmlnJztcbmltcG9ydCB7IElnb0xhbmd1YWdlTW9kdWxlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgRU1QVFksIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uLy4uL21hcC9zaGFyZWQvbWFwJztcbmltcG9ydCB7IFJlc2VhcmNoLCBTZWFyY2hSZXN1bHQgfSBmcm9tICcuLi9zaGFyZWQvc2VhcmNoLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgU2VhcmNoU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZWFyY2guc2VydmljZSc7XG5pbXBvcnQgeyBTZWFyY2hTb3VyY2UgfSBmcm9tICcuLi9zaGFyZWQvc291cmNlcy9zb3VyY2UnO1xuaW1wb3J0IHsgVGV4dFNlYXJjaE9wdGlvbnMgfSBmcm9tICcuLi9zaGFyZWQvc291cmNlcy9zb3VyY2UuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBTZWFyY2hSZXN1bHRzSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vc2VhcmNoLXJlc3VsdHMtaXRlbS5jb21wb25lbnQnO1xuXG5leHBvcnQgZW51bSBTZWFyY2hSZXN1bHRNb2RlIHtcbiAgR3JvdXBlZCA9ICdncm91cGVkJyxcbiAgRmxhdCA9ICdmbGF0J1xufVxuXG4vKipcbiAqIExpc3Qgb2Ygc2VhcmNoIHJlc3VsdHMgd2l0aCBmb2N1cyBhbmQgc2VsZWN0aW9uIGNhcGFiaWxpdGllcy5cbiAqIFRoaXMgY29tcG9uZW50IGlzIGR1bWIgYW5kIG9ubHkgZW1pdHMgZXZlbnRzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tc2VhcmNoLXJlc3VsdHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLXJlc3VsdHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtcmVzdWx0cy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nSWYsXG4gICAgTGlzdENvbXBvbmVudCxcbiAgICBOZ0ZvcixcbiAgICBDb2xsYXBzaWJsZUNvbXBvbmVudCxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIFNlYXJjaFJlc3VsdHNJdGVtQ29tcG9uZW50LFxuICAgIExpc3RJdGVtRGlyZWN0aXZlLFxuICAgIE1hdFRhYnNNb2R1bGUsXG4gICAgQXN5bmNQaXBlLFxuICAgIElnb0xhbmd1YWdlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoUmVzdWx0c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBzaG93UmVzdWx0c0NvdW50ID0gdHJ1ZTtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBTZWFyY2hSZXN1bHRNb2RlIGVudW1cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc2VhcmNoUmVzdWx0TW9kZSA9IFNlYXJjaFJlc3VsdE1vZGU7XG5cbiAgLyoqXG4gICAqIFNlYXJjaCByZXN1bHRzIHN0b3JlIHdhdGNoZXJcbiAgICovXG4gIHByaXZhdGUgd2F0Y2hlcjogRW50aXR5U3RvcmVXYXRjaGVyPFNlYXJjaFJlc3VsdD47XG5cbiAgcHJpdmF0ZSBzZXR0aW5nc0NoYW5nZSQkOiBTdWJzY3JpcHRpb247XG5cbiAgcHVibGljIHBhZ2VJdGVyYXRvcjogeyBzb3VyY2VJZDogc3RyaW5nIH1bXSA9IFtdO1xuXG4gIHB1YmxpYyBjb2xsYXBzZWQ6IHsgc291cmNlSWQ6IHN0cmluZyB9W10gPSBbXTtcblxuICBASW5wdXQoKSBtYXA6IElnb01hcDtcblxuICAvKipcbiAgICogU2VhcmNoIHJlc3VsdHMgc3RvcmVcbiAgICovXG4gIEBJbnB1dCgpIHN0b3JlOiBFbnRpdHlTdG9yZTxTZWFyY2hSZXN1bHQ+O1xuXG4gIC8qKlxuICAgKiB0byBzaG93IGhpZGUgcmVzdWx0cyBpY29uc1xuICAgKi9cbiAgQElucHV0KCkgc2hvd0ljb25zOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZWFyY2ggcmVzdWx0cyBkaXNwbGF5IG1vZGVcbiAgICovXG4gIEBJbnB1dCgpIG1vZGU6IFNlYXJjaFJlc3VsdE1vZGUgPSBTZWFyY2hSZXN1bHRNb2RlLkdyb3VwZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlcmUgc2hvdWxkIGJlIGEgem9vbSBidXR0b25cbiAgICovXG4gIEBJbnB1dCgpIHdpdGhab29tQnV0dG9uID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRvIGNoZWNrIGlmIHRoZSB2aWV3IGZvciB0YWJzTW9kZSBmb3Igc2VhcmNoLXJlc3VsdC10b29sc1xuICAgKi9cbiAgQElucHV0KCkgdGFic01vZGUgPSBmYWxzZTtcblxuICAvKipcbiAgICogU2VhcmNoIHRlcm1cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCB0ZXJtKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3Rlcm07XG4gIH1cbiAgc2V0IHRlcm0odmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3Rlcm0gPSB2YWx1ZTtcbiAgICB0aGlzLnBhZ2VJdGVyYXRvciA9IFtdO1xuICB9XG4gIHB1YmxpYyBfdGVybTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHNldHRpbmdzQ2hhbmdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odW5kZWZpbmVkKTtcblxuICBASW5wdXQoKSB0ZXJtU3BsaXR0ZXIgPSAnfCc7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIHJlc3VsdCBpcyBmb2N1c2VkXG4gICAqL1xuICBAT3V0cHV0KCkgcmVzdWx0Rm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPFNlYXJjaFJlc3VsdD4oKTtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgcmVzdWx0IGlzIHVuZm9jdXNlZFxuICAgKi9cbiAgQE91dHB1dCgpIHJlc3VsdFVuZm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPFNlYXJjaFJlc3VsdD4oKTtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgcmVzdWx0IGlzIHNlbGVjdGVkXG4gICAqL1xuICBAT3V0cHV0KCkgcmVzdWx0U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxTZWFyY2hSZXN1bHQ+KCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIHJlc2VhcmNoIGlzIGNvbXBsZXRlZCBhZnRlciBkaXNwbGF5aW5nIG1vcmUgcmVzdWx0cyBpcyBjbGlja2VkXG4gICAqL1xuICBAT3V0cHV0KCkgbW9yZVJlc3VsdHMgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICByZXNlYXJjaDogUmVzZWFyY2g7XG4gICAgcmVzdWx0czogU2VhcmNoUmVzdWx0W107XG4gIH0+KCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50cyBlbWl0dGVkIHdoZW4gYSByZXN1bHQgaXMgZm9jdXMgb3IgdW5mb2N1cyBieSBtb3VzZSBldmVudFxuICAgKi9cbiAgQE91dHB1dCgpIHJlc3VsdE1vdXNlZW50ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFNlYXJjaFJlc3VsdD4oKTtcbiAgQE91dHB1dCgpIHJlc3VsdE1vdXNlbGVhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPFNlYXJjaFJlc3VsdD4oKTtcblxuICBAQ29udGVudENoaWxkKCdpZ29TZWFyY2hJdGVtVG9vbGJhcicsIC8qIFRPRE86IGFkZCBzdGF0aWMgZmxhZyAqLyB7fSlcbiAgdGVtcGxhdGVTZWFyY2hUb29sYmFyOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGdldCByZXN1bHRzJCgpOiBPYnNlcnZhYmxlPFxuICAgIHsgc291cmNlOiBTZWFyY2hTb3VyY2U7IHJlc3VsdHM6IFNlYXJjaFJlc3VsdFtdIH1bXVxuICA+IHtcbiAgICBpZiAodGhpcy5fcmVzdWx0cyQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fcmVzdWx0cyQgPSB0aGlzLmxpZnRSZXN1bHRzKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9yZXN1bHRzJDtcbiAgfVxuICBwcml2YXRlIF9yZXN1bHRzJDogT2JzZXJ2YWJsZTxcbiAgICB7IHNvdXJjZTogU2VhcmNoU291cmNlOyByZXN1bHRzOiBTZWFyY2hSZXN1bHRbXSB9W11cbiAgPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogQmluZCB0aGUgc2VhcmNoIHJlc3VsdHMgc3RvcmUgdG8gdGhlIHdhdGNoZXJcbiAgICogQGludGVybmFsXG4gICAqL1xuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLndhdGNoZXIgPSBuZXcgRW50aXR5U3RvcmVXYXRjaGVyKHRoaXMuc3RvcmUsIHRoaXMuY2RSZWYpO1xuXG4gICAgdGhpcy5zZXR0aW5nc0NoYW5nZSQkID0gdGhpcy5zZXR0aW5nc0NoYW5nZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucGFnZUl0ZXJhdG9yID0gW107XG4gICAgfSk7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCdzZWFyY2hTb3VyY2VzLnNob3dSZXN1bHRzQ291bnQnKSA9PT0gZmFsc2VcbiAgICApIHtcbiAgICAgIHRoaXMuc2hvd1Jlc3VsdHNDb3VudCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVbmJpbmQgdGhlIHNlYXJjaCByZXN1bHRzIHN0b3JlIGZyb20gdGhlIHdhdGNoZXJcbiAgICogQGludGVybmFsXG4gICAqL1xuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLndhdGNoZXIuZGVzdHJveSgpO1xuICAgIHRoaXMuc2V0dGluZ3NDaGFuZ2UkJC51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGUgYSBncm91cCB0aXRsZVxuICAgKiBAcGFyYW0gZ3JvdXAgU2VhcmNoIHJlc3VsdHMgZ3JvdXBcbiAgICogQHJldHVybnMgR3JvdXAgdGl0bGVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBjb21wdXRlR3JvdXBUaXRsZShncm91cDoge1xuICAgIHNvdXJjZTogU2VhcmNoU291cmNlO1xuICAgIHJlc3VsdHM6IFNlYXJjaFJlc3VsdFtdO1xuICB9KTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJ0cyA9IFtncm91cC5zb3VyY2UudGl0bGVdO1xuICAgIGNvbnN0IGNvdW50ID0gZ3JvdXAucmVzdWx0cy5sZW5ndGg7XG4gICAgaWYgKGNvdW50ID4gMSAmJiB0aGlzLnNob3dSZXN1bHRzQ291bnQpIHtcbiAgICAgIHBhcnRzLnB1c2goYCgke2NvdW50fSlgKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oJyAnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIGEgcmVzdWx0IGlzIHNlbGVjdGVkLCB1cGRhdGUgaXQncyBzdGF0ZSBpbiB0aGUgc3RvcmUgYW5kIGVtaXRcbiAgICogYW4gZXZlbnQuIEEgc2VsZWN0ZWQgcmVzdWx0IGlzIGFsc28gY29uc2lkZXJlZCBmb2N1c2VkXG4gICAqIEBwYXJhbSByZXN1bHQgU2VhcmNoIHJlc3VsdFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uUmVzdWx0U2VsZWN0KHJlc3VsdDogU2VhcmNoUmVzdWx0KSB7XG4gICAgaWYgKHRoaXMuc3RvcmUuc3RhdGUuZ2V0KHJlc3VsdCkpIHtcbiAgICAgIGlmICh0aGlzLnN0b3JlLnN0YXRlLmdldChyZXN1bHQpLnNlbGVjdGVkID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zdG9yZS5zdGF0ZS51cGRhdGUocmVzdWx0LCB7IGZvY3VzZWQ6IHRydWUsIHNlbGVjdGVkOiB0cnVlIH0sIHRydWUpO1xuICAgIHRoaXMucmVzdWx0U2VsZWN0LmVtaXQocmVzdWx0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gb2JzZXJ2YWJsZSBvZiB0aGUgc2VhcmNoIHJlc3VsdHMsIGdyb3VwZWQgYnkgc2VhcmNoIHNvdXJjZVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIGdyb3VwZWQgc2VhcmNoIHJlc3VsdHNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIGxpZnRSZXN1bHRzKCk6IE9ic2VydmFibGU8XG4gICAgeyBzb3VyY2U6IFNlYXJjaFNvdXJjZTsgcmVzdWx0czogU2VhcmNoUmVzdWx0W10gfVtdXG4gID4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnN0YXRlVmlldy5hbGwkKCkucGlwZShcbiAgICAgIGRlYm91bmNlKChyZXN1bHRzOiB7IGVudGl0eTogU2VhcmNoUmVzdWx0OyBzdGF0ZTogRW50aXR5U3RhdGUgfVtdKSA9PiB7XG4gICAgICAgIHJldHVybiByZXN1bHRzLmxlbmd0aCA9PT0gMCA/IEVNUFRZIDogdGltZXIoMjAwKTtcbiAgICAgIH0pLFxuICAgICAgbWFwKChyZXN1bHRzOiB7IGVudGl0eTogU2VhcmNoUmVzdWx0OyBzdGF0ZTogRW50aXR5U3RhdGUgfVtdKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyb3VwUmVzdWx0cyhcbiAgICAgICAgICByZXN1bHRzLm1hcCgocikgPT4gci5lbnRpdHkpLnNvcnQodGhpcy5zb3J0QnlPcmRlcilcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTb3J0IHRoZSByZXN1bHRzIGJ5IGRpc3BsYXkgb3JkZXIuXG4gICAqIEBwYXJhbSByMSBGaXJzdCByZXN1bHRcbiAgICogQHBhcmFtIHIyIFNlY29uZCByZXN1bHRcbiAgICovXG4gIHByaXZhdGUgc29ydEJ5T3JkZXIocjE6IFNlYXJjaFJlc3VsdCwgcjI6IFNlYXJjaFJlc3VsdCkge1xuICAgIHJldHVybiByMS5zb3VyY2UuZGlzcGxheU9yZGVyIC0gcjIuc291cmNlLmRpc3BsYXlPcmRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcm91cCByZXN1bHRzIGJ5IHNlYXJjaCBzb3VyY2VcbiAgICogQHBhcmFtIHJlc3VsdHMgU2VhcmNoIHJlc3VsdHMgZnJvbSBhbGwgc291cmNlc1xuICAgKiBAcmV0dXJucyBTZWFyY2ggcmVzdWx0cyBncm91cGVkIGJ5IHNvdXJjZVxuICAgKi9cbiAgcHJpdmF0ZSBncm91cFJlc3VsdHMoXG4gICAgcmVzdWx0czogU2VhcmNoUmVzdWx0W11cbiAgKTogeyBzb3VyY2U6IFNlYXJjaFNvdXJjZTsgcmVzdWx0czogU2VhcmNoUmVzdWx0W10gfVtdIHtcbiAgICBjb25zdCBncm91cGVkID0gbmV3IE1hcDxTZWFyY2hTb3VyY2UsIFNlYXJjaFJlc3VsdFtdPigpO1xuICAgIHJlc3VsdHMuZm9yRWFjaCgocmVzdWx0OiBTZWFyY2hSZXN1bHQpID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IHJlc3VsdC5zb3VyY2U7XG4gICAgICBsZXQgc291cmNlUmVzdWx0cyA9IGdyb3VwZWQuZ2V0KHNvdXJjZSk7XG4gICAgICBpZiAoc291cmNlUmVzdWx0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNvdXJjZVJlc3VsdHMgPSBbXTtcbiAgICAgICAgZ3JvdXBlZC5zZXQoc291cmNlLCBzb3VyY2VSZXN1bHRzKTtcbiAgICAgIH1cbiAgICAgIHNvdXJjZVJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIEFycmF5LmZyb20oZ3JvdXBlZC5rZXlzKCkpLm1hcCgoc291cmNlOiBTZWFyY2hTb3VyY2UpID0+IHtcbiAgICAgIGlmICh0aGlzLnBhZ2VJdGVyYXRvcltzb3VyY2UuZ2V0SWQoKV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnBhZ2VJdGVyYXRvcltzb3VyY2UuZ2V0SWQoKV0gPSAxO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgc291cmNlLCByZXN1bHRzOiBncm91cGVkLmdldChzb3VyY2UpIH07XG4gICAgfSk7XG4gIH1cblxuICBpc01vcmVSZXN1bHRzKGdyb3VwOiB7IHNvdXJjZTogU2VhcmNoU291cmNlOyByZXN1bHRzOiBTZWFyY2hSZXN1bHRbXSB9KSB7XG4gICAgY29uc3Qgc3RhdGVneSA9IHRoaXMuc3RvcmUuZ2V0U3RyYXRlZ3lPZlR5cGUoXG4gICAgICBFbnRpdHlTdG9yZUZpbHRlckN1c3RvbUZ1bmNTdHJhdGVneVxuICAgICk7XG4gICAgY29uc3QgYWN0aXZlID0gc3RhdGVneT8uYWN0aXZlIHx8IGZhbHNlO1xuICAgIGlmICghYWN0aXZlKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBncm91cC5yZXN1bHRzICYmXG4gICAgICAgIGdyb3VwLnJlc3VsdHNbZ3JvdXAucmVzdWx0cy5sZW5ndGggLSAxXS5tZXRhLm5leHRQYWdlID09PSB0cnVlXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBncm91cC5yZXN1bHRzPy5sZW5ndGggJSArZ3JvdXAuc291cmNlLnBhcmFtcy5saW1pdCA9PT0gMCAmJlxuICAgICAgICArZ3JvdXAuc291cmNlLnBhcmFtcy5wYWdlIDwgMzBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgZGlzcGxheU1vcmVSZXN1bHRzKGdyb3VwOiB7IHNvdXJjZTogU2VhcmNoU291cmNlOyByZXN1bHRzOiBTZWFyY2hSZXN1bHRbXSB9KSB7XG4gICAgY29uc3Qgb3B0aW9uczogVGV4dFNlYXJjaE9wdGlvbnMgPSB7XG4gICAgICBzb3VyY2VJZDogZ3JvdXAuc291cmNlLmdldElkKCksXG4gICAgICBwYWdlOiArK3RoaXMucGFnZUl0ZXJhdG9yW2dyb3VwLnNvdXJjZS5nZXRJZCgpXVxuICAgIH07XG5cbiAgICBsZXQgdGVybXM7XG4gICAgaWYgKFxuICAgICAgdGhpcy50ZXJtU3BsaXR0ZXIgJiZcbiAgICAgIHRoaXMudGVybS5tYXRjaChuZXcgUmVnRXhwKHRoaXMudGVybVNwbGl0dGVyLCAnZycpKVxuICAgICkge1xuICAgICAgdGVybXMgPSB0aGlzLnRlcm0uc3BsaXQodGhpcy50ZXJtU3BsaXR0ZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0ZXJtcyA9IFt0aGlzLnRlcm1dO1xuICAgIH1cblxuICAgIGxldCByZXNlYXJjaGVzOiBSZXNlYXJjaFtdID0gW107XG4gICAgdGVybXMubWFwKCh0ZXJtOiBzdHJpbmcpID0+IHtcbiAgICAgIHJlc2VhcmNoZXMgPSByZXNlYXJjaGVzLmNvbmNhdCh0aGlzLnNlYXJjaFNlcnZpY2Uuc2VhcmNoKHRlcm0sIG9wdGlvbnMpKTtcbiAgICB9KTtcblxuICAgIHJlc2VhcmNoZXMubWFwKChyZXNlYXJjaCkgPT4ge1xuICAgICAgcmVzZWFyY2gucmVxdWVzdC5zdWJzY3JpYmUoKHJlc3VsdHM6IFNlYXJjaFJlc3VsdFtdKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1Jlc3VsdHMgPSBncm91cC5yZXN1bHRzLmNvbmNhdChyZXN1bHRzKTtcbiAgICAgICAgaWYgKCFyZXN1bHRzLmxlbmd0aCkge1xuICAgICAgICAgIG5ld1Jlc3VsdHNbbmV3UmVzdWx0cy5sZW5ndGggLSAxXS5tZXRhLm5leHRQYWdlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tb3JlUmVzdWx0cy5lbWl0KHsgcmVzZWFyY2gsIHJlc3VsdHM6IG5ld1Jlc3VsdHMgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cbn1cbiIsIjxpZ28tbGlzdCBbbmF2aWdhdGlvbl09XCJ0cnVlXCIgKm5nSWY9XCJ0YWJzTW9kZSA9PT0gZmFsc2VcIj5cbiAgPG5nLXRlbXBsYXRlICNncm91cFRlbXBsYXRlIG5nRm9yIGxldC1ncm91cCBbbmdGb3JPZl09XCJyZXN1bHRzJCB8IGFzeW5jXCI+XG4gICAgPGlnby1jb2xsYXBzaWJsZVxuICAgICAgW2NsYXNzXT1cImdyb3VwLnNvdXJjZS5nZXRJZCgpXCJcbiAgICAgICpuZ0lmPVwibW9kZSA9PT0gc2VhcmNoUmVzdWx0TW9kZS5Hcm91cGVkOyBlbHNlIGZsYXRUZW1wbGF0ZVwiXG4gICAgICBbdGl0bGVdPVwiY29tcHV0ZUdyb3VwVGl0bGUoZ3JvdXApXCJcbiAgICAgIFtjb2xsYXBzZWRdPVwiY29sbGFwc2VkW2dyb3VwLnNvdXJjZS50aXRsZV1cIlxuICAgICAgKHRvZ2dsZSk9XCJjb2xsYXBzZWRbZ3JvdXAuc291cmNlLnRpdGxlXSA9ICRldmVudFwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgIHN0b3JlSXRlbVRlbXBsYXRlO1xuICAgICAgICAgIGNvbnRleHQ6IHsgcmVzdWx0czogZ3JvdXAucmVzdWx0cyB9XG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9pZ28tY29sbGFwc2libGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI2ZsYXRUZW1wbGF0ZT5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICBzdG9yZUl0ZW1UZW1wbGF0ZTtcbiAgICAgICAgICBjb250ZXh0OiB7IHJlc3VsdHM6IGdyb3VwLnJlc3VsdHMgfVxuICAgICAgICBcIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI3N0b3JlSXRlbVRlbXBsYXRlIGxldC1yZXN1bHRzPVwicmVzdWx0c1wiPlxuICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1yZXN1bHQgW25nRm9yT2ZdPVwicmVzdWx0c1wiPlxuICAgICAgICA8aWdvLXNlYXJjaC1yZXN1bHRzLWl0ZW1cbiAgICAgICAgICBpZ29MaXN0SXRlbVxuICAgICAgICAgIGNvbG9yPVwiYWNjZW50XCJcbiAgICAgICAgICBbbWFwXT1cIm1hcFwiXG4gICAgICAgICAgW3Jlc3VsdF09XCJyZXN1bHRcIlxuICAgICAgICAgIFtzaG93SWNvbnNdPVwic2hvd0ljb25zXCJcbiAgICAgICAgICBbd2l0aFpvb21CdXR0b25dPVwid2l0aFpvb21CdXR0b25cIlxuICAgICAgICAgIFtmb2N1c2VkXT1cInN0b3JlLnN0YXRlLmdldChyZXN1bHQpLmZvY3VzZWRcIlxuICAgICAgICAgIFtzZWxlY3RlZF09XCJzdG9yZS5zdGF0ZS5nZXQocmVzdWx0KS5zZWxlY3RlZFwiXG4gICAgICAgICAgKGZvY3VzKT1cInJlc3VsdEZvY3VzLmVtaXQocmVzdWx0KVwiXG4gICAgICAgICAgKHVuZm9jdXMpPVwicmVzdWx0VW5mb2N1cy5lbWl0KHJlc3VsdClcIlxuICAgICAgICAgIChzZWxlY3QpPVwib25SZXN1bHRTZWxlY3QocmVzdWx0KVwiXG4gICAgICAgICAgKG1vdXNlZW50ZXIpPVwicmVzdWx0Rm9jdXMuZW1pdChyZXN1bHQpXCJcbiAgICAgICAgICAobW91c2VsZWF2ZSk9XCJyZXN1bHRVbmZvY3VzLmVtaXQocmVzdWx0KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBpZ29TZWFyY2hJdGVtVG9vbGJhclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVTZWFyY2hUb29sYmFyXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJlc3VsdDogcmVzdWx0IH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9pZ28tc2VhcmNoLXJlc3VsdHMtaXRlbT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cIm1vcmVSZXN1bHRzIG1hdC10eXBvZ3JhcGh5XCJcbiAgICAgICAgKm5nSWY9XCJpc01vcmVSZXN1bHRzKGdyb3VwKVwiXG4gICAgICAgIChjbGljayk9XCJkaXNwbGF5TW9yZVJlc3VsdHMoZ3JvdXApXCJcbiAgICAgID5cbiAgICAgICAgPHU+e3sgJ2lnby5nZW8uc2VhcmNoLmRpc3BsYXlNb3JlUmVzdWx0cycgfCB0cmFuc2xhdGUgfX08L3U+XG4gICAgICA8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvaWdvLWxpc3Q+XG5cbjxpZ28tbGlzdCBbbmF2aWdhdGlvbl09XCJ0cnVlXCIgKm5nSWY9XCJ0YWJzTW9kZVwiPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJcbiAgICAgIG1vZGUgPT09IHNlYXJjaFJlc3VsdE1vZGUuR3JvdXBlZDtcbiAgICAgIHRoZW4gdGFic1RlbXBsYXRlO1xuICAgICAgZWxzZSBmbGF0VGVtcGxhdGVcbiAgICBcIlxuICA+PC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlICN0YWJzVGVtcGxhdGU+XG4gICAgPG1hdC10YWItZ3JvdXAgY2xhc3M9XCJjdXN0b20tdGFicy12aWV3XCIgZHluYW1pY0hlaWdodD5cbiAgICAgIDxtYXQtdGFiXG4gICAgICAgICpuZ0Zvcj1cImxldCBncm91cCBvZiByZXN1bHRzJCB8IGFzeW5jXCJcbiAgICAgICAgW2xhYmVsXT1cImNvbXB1dGVHcm91cFRpdGxlKGdyb3VwKVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInN0b3JlSXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7IGdyb3VwOiBncm91cCB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9tYXQtdGFiPlxuICAgIDwvbWF0LXRhYi1ncm91cD5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgI2ZsYXRUZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWdyb3VwIFtuZ0Zvck9mXT1cInJlc3VsdHMkIHwgYXN5bmNcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdG9yZUl0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyBncm91cDogZ3JvdXAgfVwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgI3N0b3JlSXRlbVRlbXBsYXRlIGxldC1ncm91cD1cImdyb3VwXCI+XG4gICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1yZXN1bHQgW25nRm9yT2ZdPVwiZ3JvdXAucmVzdWx0c1wiPlxuICAgICAgPGlnby1zZWFyY2gtcmVzdWx0cy1pdGVtXG4gICAgICAgIGlnb0xpc3RJdGVtXG4gICAgICAgIGNvbG9yPVwiYWNjZW50XCJcbiAgICAgICAgW21hcF09XCJtYXBcIlxuICAgICAgICBbcmVzdWx0XT1cInJlc3VsdFwiXG4gICAgICAgIFtzaG93SWNvbnNdPVwic2hvd0ljb25zXCJcbiAgICAgICAgW3dpdGhab29tQnV0dG9uXT1cIndpdGhab29tQnV0dG9uXCJcbiAgICAgICAgW2ZvY3VzZWRdPVwic3RvcmUuc3RhdGUuZ2V0KHJlc3VsdCkuZm9jdXNlZFwiXG4gICAgICAgIFtzZWxlY3RlZF09XCJzdG9yZS5zdGF0ZS5nZXQocmVzdWx0KS5zZWxlY3RlZFwiXG4gICAgICAgIChmb2N1cyk9XCJyZXN1bHRGb2N1cy5lbWl0KHJlc3VsdClcIlxuICAgICAgICAodW5mb2N1cyk9XCJyZXN1bHRVbmZvY3VzLmVtaXQocmVzdWx0KVwiXG4gICAgICAgIChzZWxlY3QpPVwib25SZXN1bHRTZWxlY3QocmVzdWx0KVwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cInJlc3VsdEZvY3VzLmVtaXQocmVzdWx0KVwiXG4gICAgICAgIChtb3VzZWxlYXZlKT1cInJlc3VsdFVuZm9jdXMuZW1pdChyZXN1bHQpXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgIGlnb1NlYXJjaEl0ZW1Ub29sYmFyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVTZWFyY2hUb29sYmFyXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByZXN1bHQ6IHJlc3VsdCB9XCJcbiAgICAgICAgPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvaWdvLXNlYXJjaC1yZXN1bHRzLWl0ZW0+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJtb3JlUmVzdWx0cyBtYXQtdHlwb2dyYXBoeVwiXG4gICAgICAqbmdJZj1cImlzTW9yZVJlc3VsdHMoZ3JvdXApXCJcbiAgICAgIChjbGljayk9XCJkaXNwbGF5TW9yZVJlc3VsdHMoZ3JvdXApXCJcbiAgICA+XG4gICAgICA8dT57eyAnaWdvLmdlby5zZWFyY2guZGlzcGxheU1vcmVSZXN1bHRzJyB8IHRyYW5zbGF0ZSB9fTwvdT5cbiAgICA8L3NwYW4+XG4gIDwvbmctdGVtcGxhdGU+XG48L2lnby1saXN0PlxuIl19
297
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvc2VhcmNoL3NlYXJjaC1yZXN1bHRzL3NlYXJjaC1yZXN1bHRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL3NlYXJjaC9zZWFyY2gtcmVzdWx0cy9zZWFyY2gtcmVzdWx0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBRUwsV0FBVyxFQUNYLG1DQUFtQyxFQUNuQyxrQkFBa0IsRUFDbkIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXhELE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUE0QixLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvQyxPQUFPLEVBQUUsTUFB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QUFNO2dCQUtHLGFBQWE7c0JBQXRCLE1BQU07Z0JBS0csWUFBWTtzQkFBckIsTUFBTTtnQkFLRyxXQUFXO3NCQUFwQixNQUFNO2dCQVFHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBR1AscUJBQXFCO3NCQURwQixZQUFZO3VCQUFDLHNCQUFzQixFQUFFLDJCQUEyQixDQUFDLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nRm9yLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5cbmltcG9ydCB7IENvbGxhcHNpYmxlQ29tcG9uZW50IH0gZnJvbSAnQGlnbzIvY29tbW9uL2NvbGxhcHNpYmxlJztcbmltcG9ydCB7XG4gIEVudGl0eVN0YXRlLFxuICBFbnRpdHlTdG9yZSxcbiAgRW50aXR5U3RvcmVGaWx0ZXJDdXN0b21GdW5jU3RyYXRlZ3ksXG4gIEVudGl0eVN0b3JlV2F0Y2hlclxufSBmcm9tICdAaWdvMi9jb21tb24vZW50aXR5JztcbmltcG9ydCB7IExpc3RDb21wb25lbnQsIExpc3RJdGVtRGlyZWN0aXZlIH0gZnJvbSAnQGlnbzIvY29tbW9uL2xpc3QnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvY29uZmlnJztcbmltcG9ydCB7IElnb0xhbmd1YWdlTW9kdWxlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgRU1QVFksIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uLy4uL21hcC9zaGFyZWQvbWFwJztcbmltcG9ydCB7IFJlc2VhcmNoLCBTZWFyY2hSZXN1bHQgfSBmcm9tICcuLi9zaGFyZWQvc2VhcmNoLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgU2VhcmNoU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZWFyY2guc2VydmljZSc7XG5pbXBvcnQgeyBTZWFyY2hTb3VyY2UgfSBmcm9tICcuLi9zaGFyZWQvc291cmNlcy9zb3VyY2UnO1xuaW1wb3J0IHsgVGV4dFNlYXJjaE9wdGlvbnMgfSBmcm9tICcuLi9zaGFyZWQvc291cmNlcy9zb3VyY2UuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBTZWFyY2hSZXN1bHRzSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vc2VhcmNoLXJlc3VsdHMtaXRlbS5jb21wb25lbnQnO1xuXG5leHBvcnQgZW51bSBTZWFyY2hSZXN1bHRNb2RlIHtcbiAgR3JvdXBlZCA9ICdncm91cGVkJyxcbiAgRmxhdCA9ICdmbGF0J1xufVxuXG4vKipcbiAqIExpc3Qgb2Ygc2VhcmNoIHJlc3VsdHMgd2l0aCBmb2N1cyBhbmQgc2VsZWN0aW9uIGNhcGFiaWxpdGllcy5cbiAqIFRoaXMgY29tcG9uZW50IGlzIGR1bWIgYW5kIG9ubHkgZW1pdHMgZXZlbnRzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tc2VhcmNoLXJlc3VsdHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLXJlc3VsdHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtcmVzdWx0cy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nSWYsXG4gICAgTGlzdENvbXBvbmVudCxcbiAgICBOZ0ZvcixcbiAgICBDb2xsYXBzaWJsZUNvbXBvbmVudCxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIFNlYXJjaFJlc3VsdHNJdGVtQ29tcG9uZW50LFxuICAgIExpc3RJdGVtRGlyZWN0aXZlLFxuICAgIE1hdFRhYnNNb2R1bGUsXG4gICAgQXN5bmNQaXBlLFxuICAgIElnb0xhbmd1YWdlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoUmVzdWx0c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBzaG93UmVzdWx0c0NvdW50ID0gdHJ1ZTtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBTZWFyY2hSZXN1bHRNb2RlIGVudW1cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc2VhcmNoUmVzdWx0TW9kZSA9IFNlYXJjaFJlc3VsdE1vZGU7XG5cbiAgLyoqXG4gICAqIFNlYXJjaCByZXN1bHRzIHN0b3JlIHdhdGNoZXJcbiAgICovXG4gIHByaXZhdGUgd2F0Y2hlcjogRW50aXR5U3RvcmVXYXRjaGVyPFNlYXJjaFJlc3VsdD47XG5cbiAgcHJpdmF0ZSBzZXR0aW5nc0NoYW5nZSQkOiBTdWJzY3JpcHRpb247XG5cbiAgcHVibGljIHBhZ2VJdGVyYXRvcjogeyBzb3VyY2VJZDogc3RyaW5nIH1bXSA9IFtdO1xuXG4gIHB1YmxpYyBjb2xsYXBzZWQ6IHsgc291cmNlSWQ6IHN0cmluZyB9W10gPSBbXTtcblxuICBASW5wdXQoKSBtYXA6IElnb01hcDtcblxuICAvKipcbiAgICogU2VhcmNoIHJlc3VsdHMgc3RvcmVcbiAgICovXG4gIEBJbnB1dCgpIHN0b3JlOiBFbnRpdHlTdG9yZTxTZWFyY2hSZXN1bHQ+O1xuXG4gIC8qKlxuICAgKiB0byBzaG93IGhpZGUgcmVzdWx0cyBpY29uc1xuICAgKi9cbiAgQElucHV0KCkgc2hvd0ljb25zOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZWFyY2ggcmVzdWx0cyBkaXNwbGF5IG1vZGVcbiAgICovXG4gIEBJbnB1dCgpIG1vZGU6IFNlYXJjaFJlc3VsdE1vZGUgPSBTZWFyY2hSZXN1bHRNb2RlLkdyb3VwZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlcmUgc2hvdWxkIGJlIGEgem9vbSBidXR0b25cbiAgICovXG4gIEBJbnB1dCgpIHdpdGhab29tQnV0dG9uID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRvIGNoZWNrIGlmIHRoZSB2aWV3IGZvciB0YWJzTW9kZSBmb3Igc2VhcmNoLXJlc3VsdC10b29sc1xuICAgKi9cbiAgQElucHV0KCkgdGFic01vZGUgPSBmYWxzZTtcblxuICAvKipcbiAgICogU2VhcmNoIHRlcm1cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCB0ZXJtKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3Rlcm07XG4gIH1cbiAgc2V0IHRlcm0odmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3Rlcm0gPSB2YWx1ZTtcbiAgICB0aGlzLnBhZ2VJdGVyYXRvciA9IFtdO1xuICB9XG4gIHB1YmxpYyBfdGVybTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHNldHRpbmdzQ2hhbmdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odW5kZWZpbmVkKTtcblxuICBASW5wdXQoKSB0ZXJtU3BsaXR0ZXIgPSAnfCc7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIHJlc3VsdCBpcyBmb2N1c2VkXG4gICAqL1xuICBAT3V0cHV0KCkgcmVzdWx0Rm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPFNlYXJjaFJlc3VsdD4oKTtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgcmVzdWx0IGlzIHVuZm9jdXNlZFxuICAgKi9cbiAgQE91dHB1dCgpIHJlc3VsdFVuZm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPFNlYXJjaFJlc3VsdD4oKTtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgcmVzdWx0IGlzIHNlbGVjdGVkXG4gICAqL1xuICBAT3V0cHV0KCkgcmVzdWx0U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxTZWFyY2hSZXN1bHQ+KCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIHJlc2VhcmNoIGlzIGNvbXBsZXRlZCBhZnRlciBkaXNwbGF5aW5nIG1vcmUgcmVzdWx0cyBpcyBjbGlja2VkXG4gICAqL1xuICBAT3V0cHV0KCkgbW9yZVJlc3VsdHMgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICByZXNlYXJjaDogUmVzZWFyY2g7XG4gICAgcmVzdWx0czogU2VhcmNoUmVzdWx0W107XG4gIH0+KCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50cyBlbWl0dGVkIHdoZW4gYSByZXN1bHQgaXMgZm9jdXMgb3IgdW5mb2N1cyBieSBtb3VzZSBldmVudFxuICAgKi9cbiAgQE91dHB1dCgpIHJlc3VsdE1vdXNlZW50ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFNlYXJjaFJlc3VsdD4oKTtcbiAgQE91dHB1dCgpIHJlc3VsdE1vdXNlbGVhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPFNlYXJjaFJlc3VsdD4oKTtcblxuICBAQ29udGVudENoaWxkKCdpZ29TZWFyY2hJdGVtVG9vbGJhcicsIC8qIFRPRE86IGFkZCBzdGF0aWMgZmxhZyAqLyB7fSlcbiAgdGVtcGxhdGVTZWFyY2hUb29sYmFyOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGdldCByZXN1bHRzJCgpOiBPYnNlcnZhYmxlPFxuICAgIHsgc291cmNlOiBTZWFyY2hTb3VyY2U7IHJlc3VsdHM6IFNlYXJjaFJlc3VsdFtdIH1bXVxuICA+IHtcbiAgICBpZiAodGhpcy5fcmVzdWx0cyQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fcmVzdWx0cyQgPSB0aGlzLmxpZnRSZXN1bHRzKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9yZXN1bHRzJDtcbiAgfVxuICBwcml2YXRlIF9yZXN1bHRzJDogT2JzZXJ2YWJsZTxcbiAgICB7IHNvdXJjZTogU2VhcmNoU291cmNlOyByZXN1bHRzOiBTZWFyY2hSZXN1bHRbXSB9W11cbiAgPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogQmluZCB0aGUgc2VhcmNoIHJlc3VsdHMgc3RvcmUgdG8gdGhlIHdhdGNoZXJcbiAgICogQGludGVybmFsXG4gICAqL1xuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLndhdGNoZXIgPSBuZXcgRW50aXR5U3RvcmVXYXRjaGVyKHRoaXMuc3RvcmUsIHRoaXMuY2RSZWYpO1xuXG4gICAgdGhpcy5zZXR0aW5nc0NoYW5nZSQkID0gdGhpcy5zZXR0aW5nc0NoYW5nZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucGFnZUl0ZXJhdG9yID0gW107XG4gICAgfSk7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCdzZWFyY2hTb3VyY2VzLnNob3dSZXN1bHRzQ291bnQnKSA9PT0gZmFsc2VcbiAgICApIHtcbiAgICAgIHRoaXMuc2hvd1Jlc3VsdHNDb3VudCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVbmJpbmQgdGhlIHNlYXJjaCByZXN1bHRzIHN0b3JlIGZyb20gdGhlIHdhdGNoZXJcbiAgICogQGludGVybmFsXG4gICAqL1xuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLndhdGNoZXIuZGVzdHJveSgpO1xuICAgIHRoaXMuc2V0dGluZ3NDaGFuZ2UkJC51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGUgYSBncm91cCB0aXRsZVxuICAgKiBAcGFyYW0gZ3JvdXAgU2VhcmNoIHJlc3VsdHMgZ3JvdXBcbiAgICogQHJldHVybnMgR3JvdXAgdGl0bGVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBjb21wdXRlR3JvdXBUaXRsZShncm91cDoge1xuICAgIHNvdXJjZTogU2VhcmNoU291cmNlO1xuICAgIHJlc3VsdHM6IFNlYXJjaFJlc3VsdFtdO1xuICB9KTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJ0cyA9IFtncm91cC5zb3VyY2UudGl0bGVdO1xuICAgIGNvbnN0IGNvdW50ID0gZ3JvdXAucmVzdWx0cy5sZW5ndGg7XG4gICAgaWYgKGNvdW50ID4gMSAmJiB0aGlzLnNob3dSZXN1bHRzQ291bnQpIHtcbiAgICAgIHBhcnRzLnB1c2goYCgke2NvdW50fSlgKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oJyAnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIGEgcmVzdWx0IGlzIHNlbGVjdGVkLCB1cGRhdGUgaXQncyBzdGF0ZSBpbiB0aGUgc3RvcmUgYW5kIGVtaXRcbiAgICogYW4gZXZlbnQuIEEgc2VsZWN0ZWQgcmVzdWx0IGlzIGFsc28gY29uc2lkZXJlZCBmb2N1c2VkXG4gICAqIEBwYXJhbSByZXN1bHQgU2VhcmNoIHJlc3VsdFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uUmVzdWx0U2VsZWN0KHJlc3VsdDogU2VhcmNoUmVzdWx0KSB7XG4gICAgaWYgKHRoaXMuc3RvcmUuc3RhdGUuZ2V0KHJlc3VsdCkpIHtcbiAgICAgIGlmICh0aGlzLnN0b3JlLnN0YXRlLmdldChyZXN1bHQpLnNlbGVjdGVkID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zdG9yZS5zdGF0ZS51cGRhdGUocmVzdWx0LCB7IGZvY3VzZWQ6IHRydWUsIHNlbGVjdGVkOiB0cnVlIH0sIHRydWUpO1xuICAgIHRoaXMucmVzdWx0U2VsZWN0LmVtaXQocmVzdWx0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gb2JzZXJ2YWJsZSBvZiB0aGUgc2VhcmNoIHJlc3VsdHMsIGdyb3VwZWQgYnkgc2VhcmNoIHNvdXJjZVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIGdyb3VwZWQgc2VhcmNoIHJlc3VsdHNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIGxpZnRSZXN1bHRzKCk6IE9ic2VydmFibGU8XG4gICAgeyBzb3VyY2U6IFNlYXJjaFNvdXJjZTsgcmVzdWx0czogU2VhcmNoUmVzdWx0W10gfVtdXG4gID4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnN0YXRlVmlldy5hbGwkKCkucGlwZShcbiAgICAgIGRlYm91bmNlKChyZXN1bHRzOiB7IGVudGl0eTogU2VhcmNoUmVzdWx0OyBzdGF0ZTogRW50aXR5U3RhdGUgfVtdKSA9PiB7XG4gICAgICAgIHJldHVybiByZXN1bHRzLmxlbmd0aCA9PT0gMCA/IEVNUFRZIDogdGltZXIoMjAwKTtcbiAgICAgIH0pLFxuICAgICAgbWFwKChyZXN1bHRzOiB7IGVudGl0eTogU2VhcmNoUmVzdWx0OyBzdGF0ZTogRW50aXR5U3RhdGUgfVtdKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyb3VwUmVzdWx0cyhcbiAgICAgICAgICByZXN1bHRzLm1hcCgocikgPT4gci5lbnRpdHkpLnNvcnQodGhpcy5zb3J0QnlPcmRlcilcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTb3J0IHRoZSByZXN1bHRzIGJ5IGRpc3BsYXkgb3JkZXIuXG4gICAqIEBwYXJhbSByMSBGaXJzdCByZXN1bHRcbiAgICogQHBhcmFtIHIyIFNlY29uZCByZXN1bHRcbiAgICovXG4gIHByaXZhdGUgc29ydEJ5T3JkZXIocjE6IFNlYXJjaFJlc3VsdCwgcjI6IFNlYXJjaFJlc3VsdCkge1xuICAgIHJldHVybiByMS5zb3VyY2UuZGlzcGxheU9yZGVyIC0gcjIuc291cmNlLmRpc3BsYXlPcmRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcm91cCByZXN1bHRzIGJ5IHNlYXJjaCBzb3VyY2VcbiAgICogQHBhcmFtIHJlc3VsdHMgU2VhcmNoIHJlc3VsdHMgZnJvbSBhbGwgc291cmNlc1xuICAgKiBAcmV0dXJucyBTZWFyY2ggcmVzdWx0cyBncm91cGVkIGJ5IHNvdXJjZVxuICAgKi9cbiAgcHJpdmF0ZSBncm91cFJlc3VsdHMoXG4gICAgcmVzdWx0czogU2VhcmNoUmVzdWx0W11cbiAgKTogeyBzb3VyY2U6IFNlYXJjaFNvdXJjZTsgcmVzdWx0czogU2VhcmNoUmVzdWx0W10gfVtdIHtcbiAgICBjb25zdCBncm91cGVkID0gbmV3IE1hcDxTZWFyY2hTb3VyY2UsIFNlYXJjaFJlc3VsdFtdPigpO1xuICAgIHJlc3VsdHMuZm9yRWFjaCgocmVzdWx0OiBTZWFyY2hSZXN1bHQpID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IHJlc3VsdC5zb3VyY2U7XG4gICAgICBsZXQgc291cmNlUmVzdWx0cyA9IGdyb3VwZWQuZ2V0KHNvdXJjZSk7XG4gICAgICBpZiAoc291cmNlUmVzdWx0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNvdXJjZVJlc3VsdHMgPSBbXTtcbiAgICAgICAgZ3JvdXBlZC5zZXQoc291cmNlLCBzb3VyY2VSZXN1bHRzKTtcbiAgICAgIH1cbiAgICAgIHNvdXJjZVJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIEFycmF5LmZyb20oZ3JvdXBlZC5rZXlzKCkpLm1hcCgoc291cmNlOiBTZWFyY2hTb3VyY2UpID0+IHtcbiAgICAgIGlmICh0aGlzLnBhZ2VJdGVyYXRvcltzb3VyY2UuZ2V0SWQoKV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnBhZ2VJdGVyYXRvcltzb3VyY2UuZ2V0SWQoKV0gPSAxO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgc291cmNlLCByZXN1bHRzOiBncm91cGVkLmdldChzb3VyY2UpIH07XG4gICAgfSk7XG4gIH1cblxuICBpc01vcmVSZXN1bHRzKGdyb3VwOiB7IHNvdXJjZTogU2VhcmNoU291cmNlOyByZXN1bHRzOiBTZWFyY2hSZXN1bHRbXSB9KSB7XG4gICAgY29uc3Qgc3RhdGVneSA9IHRoaXMuc3RvcmUuZ2V0U3RyYXRlZ3lPZlR5cGUoXG4gICAgICBFbnRpdHlTdG9yZUZpbHRlckN1c3RvbUZ1bmNTdHJhdGVneVxuICAgICk7XG4gICAgY29uc3QgYWN0aXZlID0gc3RhdGVneT8uYWN0aXZlIHx8IGZhbHNlO1xuICAgIGlmICghYWN0aXZlKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBncm91cC5yZXN1bHRzICYmXG4gICAgICAgIGdyb3VwLnJlc3VsdHNbZ3JvdXAucmVzdWx0cy5sZW5ndGggLSAxXS5tZXRhLm5leHRQYWdlID09PSB0cnVlXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBncm91cC5yZXN1bHRzPy5sZW5ndGggJSArZ3JvdXAuc291cmNlLnBhcmFtcy5saW1pdCA9PT0gMCAmJlxuICAgICAgICArZ3JvdXAuc291cmNlLnBhcmFtcy5wYWdlIDwgMzBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgZGlzcGxheU1vcmVSZXN1bHRzKGdyb3VwOiB7IHNvdXJjZTogU2VhcmNoU291cmNlOyByZXN1bHRzOiBTZWFyY2hSZXN1bHRbXSB9KSB7XG4gICAgY29uc3Qgb3B0aW9uczogVGV4dFNlYXJjaE9wdGlvbnMgPSB7XG4gICAgICBzb3VyY2VJZDogZ3JvdXAuc291cmNlLmdldElkKCksXG4gICAgICBwYWdlOiArK3RoaXMucGFnZUl0ZXJhdG9yW2dyb3VwLnNvdXJjZS5nZXRJZCgpXVxuICAgIH07XG5cbiAgICBsZXQgdGVybXM7XG4gICAgaWYgKFxuICAgICAgdGhpcy50ZXJtU3BsaXR0ZXIgJiZcbiAgICAgIHRoaXMudGVybS5tYXRjaChuZXcgUmVnRXhwKHRoaXMudGVybVNwbGl0dGVyLCAnZycpKVxuICAgICkge1xuICAgICAgdGVybXMgPSB0aGlzLnRlcm0uc3BsaXQodGhpcy50ZXJtU3BsaXR0ZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0ZXJtcyA9IFt0aGlzLnRlcm1dO1xuICAgIH1cblxuICAgIGxldCByZXNlYXJjaGVzOiBSZXNlYXJjaFtdID0gW107XG4gICAgdGVybXMubWFwKCh0ZXJtOiBzdHJpbmcpID0+IHtcbiAgICAgIHJlc2VhcmNoZXMgPSByZXNlYXJjaGVzLmNvbmNhdCh0aGlzLnNlYXJjaFNlcnZpY2Uuc2VhcmNoKHRlcm0sIG9wdGlvbnMpKTtcbiAgICB9KTtcblxuICAgIHJlc2VhcmNoZXMubWFwKChyZXNlYXJjaCkgPT4ge1xuICAgICAgcmVzZWFyY2gucmVxdWVzdC5zdWJzY3JpYmUoKHJlc3VsdHM6IFNlYXJjaFJlc3VsdFtdKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1Jlc3VsdHMgPSBncm91cC5yZXN1bHRzLmNvbmNhdChyZXN1bHRzKTtcbiAgICAgICAgaWYgKCFyZXN1bHRzLmxlbmd0aCkge1xuICAgICAgICAgIG5ld1Jlc3VsdHNbbmV3UmVzdWx0cy5sZW5ndGggLSAxXS5tZXRhLm5leHRQYWdlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tb3JlUmVzdWx0cy5lbWl0KHsgcmVzZWFyY2gsIHJlc3VsdHM6IG5ld1Jlc3VsdHMgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cbn1cbiIsIjxpZ28tbGlzdCBbbmF2aWdhdGlvbl09XCJ0cnVlXCIgKm5nSWY9XCJ0YWJzTW9kZSA9PT0gZmFsc2VcIj5cbiAgPG5nLXRlbXBsYXRlICNncm91cFRlbXBsYXRlIG5nRm9yIGxldC1ncm91cCBbbmdGb3JPZl09XCJyZXN1bHRzJCB8IGFzeW5jXCI+XG4gICAgPGlnby1jb2xsYXBzaWJsZVxuICAgICAgW2NsYXNzXT1cImdyb3VwLnNvdXJjZS5nZXRJZCgpXCJcbiAgICAgICpuZ0lmPVwibW9kZSA9PT0gc2VhcmNoUmVzdWx0TW9kZS5Hcm91cGVkOyBlbHNlIGZsYXRUZW1wbGF0ZVwiXG4gICAgICBbdGl0bGVdPVwiY29tcHV0ZUdyb3VwVGl0bGUoZ3JvdXApXCJcbiAgICAgIFtjb2xsYXBzZWRdPVwiY29sbGFwc2VkW2dyb3VwLnNvdXJjZS50aXRsZV1cIlxuICAgICAgKHRvZ2dsZSk9XCJjb2xsYXBzZWRbZ3JvdXAuc291cmNlLnRpdGxlXSA9ICRldmVudFwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgIHN0b3JlSXRlbVRlbXBsYXRlO1xuICAgICAgICAgIGNvbnRleHQ6IHsgcmVzdWx0czogZ3JvdXAucmVzdWx0cyB9XG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9pZ28tY29sbGFwc2libGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI2ZsYXRUZW1wbGF0ZT5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICBzdG9yZUl0ZW1UZW1wbGF0ZTtcbiAgICAgICAgICBjb250ZXh0OiB7IHJlc3VsdHM6IGdyb3VwLnJlc3VsdHMgfVxuICAgICAgICBcIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI3N0b3JlSXRlbVRlbXBsYXRlIGxldC1yZXN1bHRzPVwicmVzdWx0c1wiPlxuICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1yZXN1bHQgW25nRm9yT2ZdPVwicmVzdWx0c1wiPlxuICAgICAgICA8aWdvLXNlYXJjaC1yZXN1bHRzLWl0ZW1cbiAgICAgICAgICBpZ29MaXN0SXRlbVxuICAgICAgICAgIGNvbG9yPVwiYWNjZW50XCJcbiAgICAgICAgICBbbWFwXT1cIm1hcFwiXG4gICAgICAgICAgW3Jlc3VsdF09XCJyZXN1bHRcIlxuICAgICAgICAgIFtzaG93SWNvbnNdPVwic2hvd0ljb25zXCJcbiAgICAgICAgICBbd2l0aFpvb21CdXR0b25dPVwid2l0aFpvb21CdXR0b25cIlxuICAgICAgICAgIFtmb2N1c2VkXT1cInN0b3JlLnN0YXRlLmdldChyZXN1bHQpLmZvY3VzZWRcIlxuICAgICAgICAgIFtzZWxlY3RlZF09XCJzdG9yZS5zdGF0ZS5nZXQocmVzdWx0KS5zZWxlY3RlZFwiXG4gICAgICAgICAgKGZvY3VzKT1cInJlc3VsdEZvY3VzLmVtaXQocmVzdWx0KVwiXG4gICAgICAgICAgKHVuZm9jdXMpPVwicmVzdWx0VW5mb2N1cy5lbWl0KHJlc3VsdClcIlxuICAgICAgICAgIChzZWxlY3QpPVwib25SZXN1bHRTZWxlY3QocmVzdWx0KVwiXG4gICAgICAgICAgKG1vdXNlZW50ZXIpPVwicmVzdWx0Rm9jdXMuZW1pdChyZXN1bHQpXCJcbiAgICAgICAgICAobW91c2VsZWF2ZSk9XCJyZXN1bHRVbmZvY3VzLmVtaXQocmVzdWx0KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBpZ29TZWFyY2hJdGVtVG9vbGJhclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVTZWFyY2hUb29sYmFyXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJlc3VsdDogcmVzdWx0IH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9pZ28tc2VhcmNoLXJlc3VsdHMtaXRlbT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cIm1vcmVSZXN1bHRzIG1hdC10eXBvZ3JhcGh5XCJcbiAgICAgICAgKm5nSWY9XCJpc01vcmVSZXN1bHRzKGdyb3VwKVwiXG4gICAgICAgIChjbGljayk9XCJkaXNwbGF5TW9yZVJlc3VsdHMoZ3JvdXApXCJcbiAgICAgID5cbiAgICAgICAgPHU+e3sgJ2lnby5nZW8uc2VhcmNoLmRpc3BsYXlNb3JlUmVzdWx0cycgfCB0cmFuc2xhdGUgfX08L3U+XG4gICAgICA8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvaWdvLWxpc3Q+XG5cbjxpZ28tbGlzdCBbbmF2aWdhdGlvbl09XCJ0cnVlXCIgKm5nSWY9XCJ0YWJzTW9kZVwiPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJcbiAgICAgIG1vZGUgPT09IHNlYXJjaFJlc3VsdE1vZGUuR3JvdXBlZDtcbiAgICAgIHRoZW4gdGFic1RlbXBsYXRlO1xuICAgICAgZWxzZSBmbGF0VGVtcGxhdGVcbiAgICBcIlxuICA+PC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlICN0YWJzVGVtcGxhdGU+XG4gICAgPG1hdC10YWItZ3JvdXAgY2xhc3M9XCJjdXN0b20tdGFicy12aWV3XCIgZHluYW1pY0hlaWdodD5cbiAgICAgIDxtYXQtdGFiXG4gICAgICAgICpuZ0Zvcj1cImxldCBncm91cCBvZiByZXN1bHRzJCB8IGFzeW5jXCJcbiAgICAgICAgW2xhYmVsXT1cImNvbXB1dGVHcm91cFRpdGxlKGdyb3VwKVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInN0b3JlSXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7IGdyb3VwOiBncm91cCB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9tYXQtdGFiPlxuICAgIDwvbWF0LXRhYi1ncm91cD5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgI2ZsYXRUZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWdyb3VwIFtuZ0Zvck9mXT1cInJlc3VsdHMkIHwgYXN5bmNcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdG9yZUl0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyBncm91cDogZ3JvdXAgfVwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgI3N0b3JlSXRlbVRlbXBsYXRlIGxldC1ncm91cD1cImdyb3VwXCI+XG4gICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1yZXN1bHQgW25nRm9yT2ZdPVwiZ3JvdXAucmVzdWx0c1wiPlxuICAgICAgPGlnby1zZWFyY2gtcmVzdWx0cy1pdGVtXG4gICAgICAgIGlnb0xpc3RJdGVtXG4gICAgICAgIGNvbG9yPVwiYWNjZW50XCJcbiAgICAgICAgW21hcF09XCJtYXBcIlxuICAgICAgICBbcmVzdWx0XT1cInJlc3VsdFwiXG4gICAgICAgIFtzaG93SWNvbnNdPVwic2hvd0ljb25zXCJcbiAgICAgICAgW3dpdGhab29tQnV0dG9uXT1cIndpdGhab29tQnV0dG9uXCJcbiAgICAgICAgW2ZvY3VzZWRdPVwic3RvcmUuc3RhdGUuZ2V0KHJlc3VsdCkuZm9jdXNlZFwiXG4gICAgICAgIFtzZWxlY3RlZF09XCJzdG9yZS5zdGF0ZS5nZXQocmVzdWx0KS5zZWxlY3RlZFwiXG4gICAgICAgIChmb2N1cyk9XCJyZXN1bHRGb2N1cy5lbWl0KHJlc3VsdClcIlxuICAgICAgICAodW5mb2N1cyk9XCJyZXN1bHRVbmZvY3VzLmVtaXQocmVzdWx0KVwiXG4gICAgICAgIChzZWxlY3QpPVwib25SZXN1bHRTZWxlY3QocmVzdWx0KVwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cInJlc3VsdEZvY3VzLmVtaXQocmVzdWx0KVwiXG4gICAgICAgIChtb3VzZWxlYXZlKT1cInJlc3VsdFVuZm9jdXMuZW1pdChyZXN1bHQpXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgIGlnb1NlYXJjaEl0ZW1Ub29sYmFyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVTZWFyY2hUb29sYmFyXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByZXN1bHQ6IHJlc3VsdCB9XCJcbiAgICAgICAgPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvaWdvLXNlYXJjaC1yZXN1bHRzLWl0ZW0+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJtb3JlUmVzdWx0cyBtYXQtdHlwb2dyYXBoeVwiXG4gICAgICAqbmdJZj1cImlzTW9yZVJlc3VsdHMoZ3JvdXApXCJcbiAgICAgIChjbGljayk9XCJkaXNwbGF5TW9yZVJlc3VsdHMoZ3JvdXApXCJcbiAgICA+XG4gICAgICA8dT57eyAnaWdvLmdlby5zZWFyY2guZGlzcGxheU1vcmVSZXN1bHRzJyB8IHRyYW5zbGF0ZSB9fTwvdT5cbiAgICA8L3NwYW4+XG4gIDwvbmctdGVtcGxhdGU+XG48L2lnby1saXN0PlxuIl19
@@ -6,15 +6,15 @@ import * as i0 from "@angular/core";
6
6
  * @deprecated import the components directly or the SEARCH_RESULTS_DIRECTIVES
7
7
  */
8
8
  export class IgoSearchResultsModule {
9
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: IgoSearchResultsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.2", ngImport: i0, type: IgoSearchResultsModule, imports: [SearchResultsComponent, SearchResultAddButtonComponent], exports: [SearchResultsComponent, SearchResultAddButtonComponent] });
11
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: IgoSearchResultsModule, imports: [SearchResultsComponent, SearchResultAddButtonComponent] });
9
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoSearchResultsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: IgoSearchResultsModule, imports: [SearchResultsComponent, SearchResultAddButtonComponent], exports: [SearchResultsComponent, SearchResultAddButtonComponent] });
11
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoSearchResultsModule, imports: [SearchResultsComponent, SearchResultAddButtonComponent] });
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: IgoSearchResultsModule, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoSearchResultsModule, decorators: [{
14
14
  type: NgModule,
15
15
  args: [{
16
16
  imports: [SearchResultsComponent, SearchResultAddButtonComponent],
17
17
  exports: [SearchResultsComponent, SearchResultAddButtonComponent]
18
18
  }]
19
19
  }] });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvc2VhcmNoL3NlYXJjaC1yZXN1bHRzL3NlYXJjaC1yZXN1bHRzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUVwRTs7R0FFRztBQUtILE1BQU0sT0FBTyxzQkFBc0I7dUdBQXRCLHNCQUFzQjt3R0FBdEIsc0JBQXNCLFlBSHZCLHNCQUFzQixFQUFFLDhCQUE4QixhQUN0RCxzQkFBc0IsRUFBRSw4QkFBOEI7d0dBRXJELHNCQUFzQixZQUh2QixzQkFBc0IsRUFBRSw4QkFBOEI7OzJGQUdyRCxzQkFBc0I7a0JBSmxDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsOEJBQThCLENBQUM7b0JBQ2pFLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixFQUFFLDhCQUE4QixDQUFDO2lCQUNsRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNlYXJjaFJlc3VsdEFkZEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vc2VhcmNoLXJlc3VsdHMtYWRkLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VhcmNoUmVzdWx0c0NvbXBvbmVudCB9IGZyb20gJy4vc2VhcmNoLXJlc3VsdHMuY29tcG9uZW50JztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBpbXBvcnQgdGhlIGNvbXBvbmVudHMgZGlyZWN0bHkgb3IgdGhlIFNFQVJDSF9SRVNVTFRTX0RJUkVDVElWRVNcbiAqL1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1NlYXJjaFJlc3VsdHNDb21wb25lbnQsIFNlYXJjaFJlc3VsdEFkZEJ1dHRvbkNvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtTZWFyY2hSZXN1bHRzQ29tcG9uZW50LCBTZWFyY2hSZXN1bHRBZGRCdXR0b25Db21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIElnb1NlYXJjaFJlc3VsdHNNb2R1bGUge31cbiJdfQ==
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvc2VhcmNoL3NlYXJjaC1yZXN1bHRzL3NlYXJjaC1yZXN1bHRzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUVwRTs7R0FFRztBQUtILE1BQU0sT0FBTyxzQkFBc0I7d0dBQXRCLHNCQUFzQjt5R0FBdEIsc0JBQXNCLFlBSHZCLHNCQUFzQixFQUFFLDhCQUE4QixhQUN0RCxzQkFBc0IsRUFBRSw4QkFBOEI7eUdBRXJELHNCQUFzQixZQUh2QixzQkFBc0IsRUFBRSw4QkFBOEI7OzRGQUdyRCxzQkFBc0I7a0JBSmxDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsOEJBQThCLENBQUM7b0JBQ2pFLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixFQUFFLDhCQUE4QixDQUFDO2lCQUNsRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNlYXJjaFJlc3VsdEFkZEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vc2VhcmNoLXJlc3VsdHMtYWRkLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VhcmNoUmVzdWx0c0NvbXBvbmVudCB9IGZyb20gJy4vc2VhcmNoLXJlc3VsdHMuY29tcG9uZW50JztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBpbXBvcnQgdGhlIGNvbXBvbmVudHMgZGlyZWN0bHkgb3IgdGhlIFNFQVJDSF9SRVNVTFRTX0RJUkVDVElWRVNcbiAqL1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1NlYXJjaFJlc3VsdHNDb21wb25lbnQsIFNlYXJjaFJlc3VsdEFkZEJ1dHRvbkNvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtTZWFyY2hSZXN1bHRzQ29tcG9uZW50LCBTZWFyY2hSZXN1bHRBZGRCdXR0b25Db21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIElnb1NlYXJjaFJlc3VsdHNNb2R1bGUge31cbiJdfQ==