@igo2/geo 16.3.0 → 17.0.0-next.2

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 (576) hide show
  1. package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +30 -14
  2. package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +35 -17
  3. package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +18 -11
  4. package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +8 -62
  5. package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +49 -20
  6. package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +22 -10
  7. package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +32 -16
  8. package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +8 -71
  9. package/esm2022/lib/catalog/catalog-library/index.mjs +9 -0
  10. package/esm2022/lib/catalog/catalog.module.mjs +9 -37
  11. package/esm2022/lib/catalog/index.mjs +7 -1
  12. package/esm2022/lib/catalog/shared/catalog.service.mjs +16 -9
  13. package/esm2022/lib/catalog/shared/index.mjs +1 -1
  14. package/esm2022/lib/datasource/index.mjs +1 -1
  15. package/esm2022/lib/datasource/shared/capabilities.service.mjs +5 -5
  16. package/esm2022/lib/datasource/shared/datasource.service.mjs +11 -13
  17. package/esm2022/lib/datasource/shared/datasources/any-datasource.mjs +1 -1
  18. package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +1 -1
  19. package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +1 -1
  20. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +1 -1
  21. package/esm2022/lib/datasource/shared/datasources/data.service.mjs +1 -1
  22. package/esm2022/lib/datasource/shared/datasources/datasource.mjs +1 -1
  23. package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +1 -1
  24. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
  25. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +1 -1
  26. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +1 -1
  27. package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +1 -1
  28. package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +1 -1
  29. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
  30. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.mjs +1 -1
  31. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +1 -1
  32. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +1 -1
  33. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +1 -1
  34. package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +5 -5
  35. package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +1 -1
  36. package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +1 -1
  37. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
  38. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +1 -1
  39. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
  40. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +1 -1
  41. package/esm2022/lib/datasource/shared/index.mjs +1 -1
  42. package/esm2022/lib/datasource/shared/options/options-api.providers.mjs +2 -2
  43. package/esm2022/lib/datasource/shared/options/options-api.service.mjs +6 -6
  44. package/esm2022/lib/datasource/shared/options/options.service.mjs +1 -1
  45. package/esm2022/lib/datasource/utils/tilegrid.mjs +1 -1
  46. package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +28 -13
  47. package/esm2022/lib/directions/directions-buttons/index.mjs +1 -1
  48. package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +44 -19
  49. package/esm2022/lib/directions/directions-inputs/index.mjs +1 -1
  50. package/esm2022/lib/directions/directions-results/directions-results.component.mjs +36 -16
  51. package/esm2022/lib/directions/directions-results/index.mjs +1 -1
  52. package/esm2022/lib/directions/directions-sources/directions-source.provider.mjs +2 -2
  53. package/esm2022/lib/directions/directions-sources/index.mjs +1 -1
  54. package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +7 -7
  55. package/esm2022/lib/directions/directions.component.mjs +20 -12
  56. package/esm2022/lib/directions/directions.module.mjs +17 -70
  57. package/esm2022/lib/directions/index.mjs +1 -1
  58. package/esm2022/lib/directions/shared/directions-source.service.mjs +1 -1
  59. package/esm2022/lib/directions/shared/directions.enum.mjs +1 -1
  60. package/esm2022/lib/directions/shared/directions.service.mjs +13 -9
  61. package/esm2022/lib/directions/shared/directions.utils.mjs +1 -1
  62. package/esm2022/lib/directions/shared/index.mjs +1 -1
  63. package/esm2022/lib/download/download-button/download-button.component.mjs +21 -11
  64. package/esm2022/lib/download/download-button/index.mjs +1 -1
  65. package/esm2022/lib/download/download.module.mjs +10 -27
  66. package/esm2022/lib/download/index.mjs +1 -1
  67. package/esm2022/lib/download/shared/download.interface.mjs +1 -1
  68. package/esm2022/lib/download/shared/download.service.mjs +7 -7
  69. package/esm2022/lib/download/shared/index.mjs +1 -1
  70. package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +21 -10
  71. package/esm2022/lib/draw/draw/draw-popup.component.mjs +41 -18
  72. package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +19 -9
  73. package/esm2022/lib/draw/draw/draw.component.mjs +54 -24
  74. package/esm2022/lib/draw/draw/draw.module.mjs +7 -104
  75. package/esm2022/lib/draw/drawingTool.module.mjs +8 -7
  76. package/esm2022/lib/draw/index.mjs +1 -1
  77. package/esm2022/lib/draw/shared/draw-icon.service.mjs +7 -7
  78. package/esm2022/lib/draw/shared/draw.utils.mjs +1 -1
  79. package/esm2022/lib/draw/shared/index.mjs +1 -1
  80. package/esm2022/lib/feature/feature-details/feature-details.component.mjs +28 -13
  81. package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +8 -7
  82. package/esm2022/lib/feature/feature-details/feature-details.module.mjs +8 -27
  83. package/esm2022/lib/feature/feature-details/index.mjs +9 -0
  84. package/esm2022/lib/feature/feature-form/feature-form.component.mjs +8 -8
  85. package/esm2022/lib/feature/feature-form/feature-form.module.mjs +8 -11
  86. package/esm2022/lib/feature/feature.module.mjs +9 -10
  87. package/esm2022/lib/feature/index.mjs +8 -2
  88. package/esm2022/lib/feature/shared/feature-store.utils.mjs +1 -1
  89. package/esm2022/lib/feature/shared/feature.enums.mjs +1 -1
  90. package/esm2022/lib/feature/shared/feature.utils.mjs +1 -1
  91. package/esm2022/lib/feature/shared/store.mjs +1 -1
  92. package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +1 -1
  93. package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +1 -1
  94. package/esm2022/lib/feature/shared/strategies/in-map-resolution.mjs +1 -1
  95. package/esm2022/lib/feature/shared/strategies/index.mjs +1 -1
  96. package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +1 -1
  97. package/esm2022/lib/feature/shared/strategies/loading.mjs +1 -1
  98. package/esm2022/lib/feature/shared/strategies/search.mjs +4 -4
  99. package/esm2022/lib/feature/shared/strategies/selection.mjs +1 -1
  100. package/esm2022/lib/feature/shared/strategies.utils.mjs +1 -1
  101. package/esm2022/lib/filter/filter.module.mjs +47 -177
  102. package/esm2022/lib/filter/index.mjs +36 -1
  103. package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +29 -15
  104. package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +46 -20
  105. package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +54 -23
  106. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +13 -10
  107. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +45 -18
  108. package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +18 -12
  109. package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +42 -18
  110. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +8 -7
  111. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +21 -12
  112. package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +6 -5
  113. package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +5 -5
  114. package/esm2022/lib/filter/shared/ogc-filter.enum.mjs +1 -1
  115. package/esm2022/lib/filter/shared/ogc-filter.mjs +1 -1
  116. package/esm2022/lib/filter/shared/ogc-filter.service.mjs +5 -5
  117. package/esm2022/lib/filter/shared/spatial-filter.enum.mjs +1 -1
  118. package/esm2022/lib/filter/shared/spatial-filter.service.mjs +9 -7
  119. package/esm2022/lib/filter/shared/time-filter.enum.mjs +1 -1
  120. package/esm2022/lib/filter/shared/time-filter.interface.mjs +1 -1
  121. package/esm2022/lib/filter/shared/time-filter.service.mjs +5 -5
  122. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +66 -28
  123. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +34 -17
  124. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +34 -15
  125. package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +28 -14
  126. package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +47 -20
  127. package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +31 -13
  128. package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +8 -7
  129. package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +16 -10
  130. package/esm2022/lib/geo.module.mjs +5 -43
  131. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +7 -7
  132. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +33 -16
  133. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +8 -43
  134. package/esm2022/lib/geometry/geometry-form-field/index.mjs +9 -0
  135. package/esm2022/lib/geometry/geometry.module.mjs +9 -10
  136. package/esm2022/lib/geometry/index.mjs +2 -3
  137. package/esm2022/lib/geometry/shared/controls/draw.mjs +1 -1
  138. package/esm2022/lib/geometry/shared/controls/index.mjs +1 -1
  139. package/esm2022/lib/geometry/shared/controls/modify.mjs +1 -1
  140. package/esm2022/lib/geometry/shared/controls/slice.mjs +1 -1
  141. package/esm2022/lib/geometry/shared/geometry.utils.mjs +1 -1
  142. package/esm2022/lib/geometry/shared/index.mjs +1 -1
  143. package/esm2022/lib/import-export/export-button/export-button.component.mjs +20 -10
  144. package/esm2022/lib/import-export/export-button/index.mjs +1 -1
  145. package/esm2022/lib/import-export/import-export/import-export.component.mjs +56 -22
  146. package/esm2022/lib/import-export/import-export/index.mjs +1 -1
  147. package/esm2022/lib/import-export/import-export.module.mjs +10 -81
  148. package/esm2022/lib/import-export/index.mjs +9 -1
  149. package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +13 -10
  150. package/esm2022/lib/import-export/shared/export.errors.mjs +1 -1
  151. package/esm2022/lib/import-export/shared/export.service.mjs +7 -7
  152. package/esm2022/lib/import-export/shared/export.utils.mjs +1 -1
  153. package/esm2022/lib/import-export/shared/import.service.mjs +7 -7
  154. package/esm2022/lib/import-export/shared/import.utils.mjs +1 -1
  155. package/esm2022/lib/import-export/shared/index.mjs +1 -1
  156. package/esm2022/lib/layer/index.mjs +19 -1
  157. package/esm2022/lib/layer/layer-item/layer-item.component.mjs +35 -16
  158. package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +43 -17
  159. package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +13 -11
  160. package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +8 -7
  161. package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +28 -13
  162. package/esm2022/lib/layer/layer-list/layer-list-binding.directive.mjs +10 -9
  163. package/esm2022/lib/layer/layer-list/layer-list.component.mjs +48 -18
  164. package/esm2022/lib/layer/layer-list/layer-list.enum.mjs +1 -1
  165. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +33 -14
  166. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +5 -5
  167. package/esm2022/lib/layer/layer.module.mjs +16 -93
  168. package/esm2022/lib/layer/shared/clusterParam.mjs +1 -1
  169. package/esm2022/lib/layer/shared/layer.service.mjs +8 -8
  170. package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
  171. package/esm2022/lib/layer/shared/layers/any-layer.mjs +1 -1
  172. package/esm2022/lib/layer/shared/layers/image-layer.mjs +1 -1
  173. package/esm2022/lib/layer/shared/layers/index.mjs +1 -1
  174. package/esm2022/lib/layer/shared/layers/layer.interface.mjs +1 -1
  175. package/esm2022/lib/layer/shared/layers/layer.mjs +1 -1
  176. package/esm2022/lib/layer/shared/layers/tile-layer.mjs +1 -1
  177. package/esm2022/lib/layer/shared/layers/vector-layer.mjs +1 -1
  178. package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +1 -1
  179. package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +21 -11
  180. package/esm2022/lib/layer/utils/image-watcher.mjs +1 -1
  181. package/esm2022/lib/layer/utils/layer.utils.mjs +1 -1
  182. package/esm2022/lib/layer/utils/outputLegend.mjs +1 -1
  183. package/esm2022/lib/layer/utils/tile-watcher.mjs +1 -1
  184. package/esm2022/lib/layer/utils/vector-watcher.mjs +1 -1
  185. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +27 -14
  186. package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +8 -8
  187. package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +24 -13
  188. package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +15 -11
  189. package/esm2022/lib/map/home-extent-button/home-extent-button.interface.mjs +1 -1
  190. package/esm2022/lib/map/home-extent-button/index.mjs +1 -1
  191. package/esm2022/lib/map/index.mjs +32 -1
  192. package/esm2022/lib/map/info-section/info-section.component.mjs +7 -7
  193. package/esm2022/lib/map/map-browser/map-browser.component.mjs +8 -8
  194. package/esm2022/lib/map/map-center/map-center.component.mjs +6 -6
  195. package/esm2022/lib/map/map.module.mjs +36 -66
  196. package/esm2022/lib/map/menu-button/menu-button.component.mjs +23 -13
  197. package/esm2022/lib/map/offline-button/offline-button.component.mjs +21 -11
  198. package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +23 -11
  199. package/esm2022/lib/map/shared/controllers/controller.mjs +1 -1
  200. package/esm2022/lib/map/shared/controllers/geolocation.interface.mjs +1 -1
  201. package/esm2022/lib/map/shared/controllers/geolocation.mjs +1 -1
  202. package/esm2022/lib/map/shared/controllers/index.mjs +1 -1
  203. package/esm2022/lib/map/shared/controllers/view.mjs +1 -1
  204. package/esm2022/lib/map/shared/hover-feature.directive.mjs +10 -9
  205. package/esm2022/lib/map/shared/index.mjs +1 -1
  206. package/esm2022/lib/map/shared/linkedLayers.utils.mjs +1 -1
  207. package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +10 -9
  208. package/esm2022/lib/map/shared/map.interface.mjs +1 -1
  209. package/esm2022/lib/map/shared/map.mjs +1 -1
  210. package/esm2022/lib/map/shared/map.service.mjs +5 -5
  211. package/esm2022/lib/map/shared/map.utils.mjs +1 -1
  212. package/esm2022/lib/map/shared/mapOffline.directive.mjs +11 -8
  213. package/esm2022/lib/map/shared/projection.interfaces.mjs +1 -1
  214. package/esm2022/lib/map/shared/projection.service.mjs +7 -7
  215. package/esm2022/lib/map/shared/projection.utils.mjs +1 -1
  216. package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +6 -6
  217. package/esm2022/lib/map/utils/layer-watcher.mjs +1 -1
  218. package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +23 -13
  219. package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +13 -9
  220. package/esm2022/lib/measure/index.mjs +2 -3
  221. package/esm2022/lib/measure/measure.module.mjs +8 -5
  222. package/esm2022/lib/measure/measurer/index.mjs +6 -0
  223. package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +6 -5
  224. package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +18 -11
  225. package/esm2022/lib/measure/measurer/measurer-item.component.mjs +27 -13
  226. package/esm2022/lib/measure/measurer/measurer.component.mjs +40 -20
  227. package/esm2022/lib/measure/measurer/measurer.module.mjs +7 -69
  228. package/esm2022/lib/measure/shared/index.mjs +1 -1
  229. package/esm2022/lib/measure/shared/measure.utils.mjs +1 -1
  230. package/esm2022/lib/metadata/index.mjs +6 -1
  231. package/esm2022/lib/metadata/metadata-button/index.mjs +1 -1
  232. package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +35 -18
  233. package/esm2022/lib/metadata/metadata.module.mjs +10 -31
  234. package/esm2022/lib/metadata/shared/index.mjs +1 -1
  235. package/esm2022/lib/metadata/shared/metadata.service.mjs +5 -5
  236. package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +7 -7
  237. package/esm2022/lib/offline/geoDB/geoDB.service.mjs +8 -10
  238. package/esm2022/lib/offline/geoDB/index.mjs +1 -1
  239. package/esm2022/lib/offline/index.mjs +1 -1
  240. package/esm2022/lib/offline/layerDB/layerDB.service.mjs +5 -5
  241. package/esm2022/lib/offline/shared/geo-network.service.mjs +7 -7
  242. package/esm2022/lib/offline/shared/index.mjs +1 -1
  243. package/esm2022/lib/overlay/index.mjs +1 -1
  244. package/esm2022/lib/overlay/overlay.module.mjs +10 -8
  245. package/esm2022/lib/overlay/shared/index.mjs +1 -1
  246. package/esm2022/lib/overlay/shared/overlay.directive.mjs +8 -7
  247. package/esm2022/lib/overlay/shared/overlay.mjs +1 -1
  248. package/esm2022/lib/overlay/shared/overlay.service.mjs +5 -5
  249. package/esm2022/lib/print/index.mjs +1 -1
  250. package/esm2022/lib/print/print/print.component.mjs +7 -7
  251. package/esm2022/lib/print/print-form/index.mjs +1 -1
  252. package/esm2022/lib/print/print-form/print-form.component.mjs +36 -16
  253. package/esm2022/lib/print/print.module.mjs +10 -54
  254. package/esm2022/lib/print/shared/index.mjs +1 -1
  255. package/esm2022/lib/print/shared/print.service.mjs +18 -12
  256. package/esm2022/lib/query/index.mjs +1 -1
  257. package/esm2022/lib/query/query.module.mjs +7 -8
  258. package/esm2022/lib/query/shared/index.mjs +1 -1
  259. package/esm2022/lib/query/shared/query-search-source.mjs +6 -6
  260. package/esm2022/lib/query/shared/query-search-source.providers.mjs +2 -2
  261. package/esm2022/lib/query/shared/query.directive.mjs +8 -7
  262. package/esm2022/lib/query/shared/query.enums.mjs +1 -1
  263. package/esm2022/lib/query/shared/query.service.mjs +8 -10
  264. package/esm2022/lib/search/index.mjs +14 -5
  265. package/esm2022/lib/search/search-bar/search-bar.component.mjs +38 -18
  266. package/esm2022/lib/search/search-bar/search-bar.module.mjs +8 -61
  267. package/esm2022/lib/search/search-results/index.mjs +10 -0
  268. package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +44 -19
  269. package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +30 -16
  270. package/esm2022/lib/search/search-results/search-results-item.component.mjs +22 -12
  271. package/esm2022/lib/search/search-results/search-results.component.mjs +26 -14
  272. package/esm2022/lib/search/search-results/search-results.module.mjs +8 -91
  273. package/esm2022/lib/search/search-selector/search-selector.component.mjs +27 -12
  274. package/esm2022/lib/search/search-selector/search-selector.module.mjs +8 -44
  275. package/esm2022/lib/search/search-settings/search-settings.component.mjs +40 -15
  276. package/esm2022/lib/search/search-settings/search-settings.module.mjs +7 -47
  277. package/esm2022/lib/search/search.module.mjs +10 -13
  278. package/esm2022/lib/search/shared/index.mjs +1 -1
  279. package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +10 -9
  280. package/esm2022/lib/search/shared/search-source.service.mjs +1 -1
  281. package/esm2022/lib/search/shared/search.service.mjs +7 -7
  282. package/esm2022/lib/search/shared/search.utils.mjs +1 -1
  283. package/esm2022/lib/search/shared/sources/cadastre.mjs +12 -9
  284. package/esm2022/lib/search/shared/sources/cadastre.providers.mjs +4 -2
  285. package/esm2022/lib/search/shared/sources/coordinates.mjs +15 -13
  286. package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +4 -2
  287. package/esm2022/lib/search/shared/sources/icherche.mjs +20 -18
  288. package/esm2022/lib/search/shared/sources/icherche.providers.mjs +4 -2
  289. package/esm2022/lib/search/shared/sources/ilayer.mjs +14 -12
  290. package/esm2022/lib/search/shared/sources/ilayer.providers.mjs +4 -2
  291. package/esm2022/lib/search/shared/sources/nominatim.interfaces.mjs +1 -1
  292. package/esm2022/lib/search/shared/sources/nominatim.mjs +8 -8
  293. package/esm2022/lib/search/shared/sources/nominatim.providers.mjs +3 -2
  294. package/esm2022/lib/search/shared/sources/source.mjs +1 -1
  295. package/esm2022/lib/search/shared/sources/storedqueries.mjs +15 -13
  296. package/esm2022/lib/search/shared/sources/storedqueries.providers.mjs +4 -2
  297. package/esm2022/lib/search/shared/sources/workspace.mjs +11 -10
  298. package/esm2022/lib/search/shared/sources/workspace.providers.mjs +4 -2
  299. package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +1 -1
  300. package/esm2022/lib/style/shared/datasource/index.mjs +1 -1
  301. package/esm2022/lib/style/shared/feature/feature-style.mjs +1 -1
  302. package/esm2022/lib/style/shared/feature/index.mjs +1 -1
  303. package/esm2022/lib/style/shared/overlay/index.mjs +1 -1
  304. package/esm2022/lib/style/shared/overlay/overlay-marker-style.utils.mjs +1 -1
  305. package/esm2022/lib/style/shared/overlay/overlay-style.utils.mjs +1 -1
  306. package/esm2022/lib/style/shared/vector/commonVectorStyle.mjs +1 -1
  307. package/esm2022/lib/style/shared/vector/conversion.utils.mjs +1 -1
  308. package/esm2022/lib/style/shared/vector/index.mjs +1 -1
  309. package/esm2022/lib/style/style-list/index.mjs +1 -1
  310. package/esm2022/lib/style/style-list/style-list.interface.mjs +1 -1
  311. package/esm2022/lib/style/style-list/style-list.module.mjs +5 -5
  312. package/esm2022/lib/style/style-list/style-list.service.mjs +5 -5
  313. package/esm2022/lib/style/style-modal/drawing/index.mjs +1 -1
  314. package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +40 -17
  315. package/esm2022/lib/style/style-modal/index.mjs +1 -1
  316. package/esm2022/lib/style/style-modal/layer/index.mjs +1 -1
  317. package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +28 -14
  318. package/esm2022/lib/style/style-modal/layer-button/index.mjs +1 -1
  319. package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +13 -9
  320. package/esm2022/lib/style/style-modal/shared/index.mjs +1 -1
  321. package/esm2022/lib/style/style-service/draw-style.service.mjs +5 -5
  322. package/esm2022/lib/style/style-service/index.mjs +1 -1
  323. package/esm2022/lib/style/style-service/style.service.mjs +4 -4
  324. package/esm2022/lib/style/style.module.mjs +12 -57
  325. package/esm2022/lib/toast/index.mjs +1 -1
  326. package/esm2022/lib/toast/toast.component.mjs +19 -11
  327. package/esm2022/lib/toast/toast.module.mjs +10 -30
  328. package/esm2022/lib/utils/id-generator.mjs +1 -1
  329. package/esm2022/lib/utils/index.mjs +1 -1
  330. package/esm2022/lib/utils/propertyTypeDetector/index.mjs +1 -1
  331. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +7 -7
  332. package/esm2022/lib/wkt/index.mjs +1 -1
  333. package/esm2022/lib/wkt/shared/index.mjs +1 -1
  334. package/esm2022/lib/wkt/shared/wkt.service.mjs +5 -5
  335. package/esm2022/lib/wkt/wkt.module.mjs +8 -5
  336. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +11 -10
  337. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +8 -24
  338. package/esm2022/lib/workspace/index.mjs +1 -1
  339. package/esm2022/lib/workspace/shared/edition-workspace.mjs +1 -1
  340. package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +15 -11
  341. package/esm2022/lib/workspace/shared/feature-workspace.mjs +1 -1
  342. package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +12 -10
  343. package/esm2022/lib/workspace/shared/index.mjs +1 -1
  344. package/esm2022/lib/workspace/shared/wfs-workspace.mjs +1 -1
  345. package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +12 -10
  346. package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +10 -8
  347. package/esm2022/lib/workspace/shared/workspace.utils.mjs +2 -2
  348. package/esm2022/lib/workspace/widgets/index.mjs +1 -1
  349. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +7 -7
  350. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +8 -13
  351. package/esm2022/lib/workspace/widgets/widgets.mjs +1 -1
  352. package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +7 -6
  353. package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +8 -10
  354. package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +7 -6
  355. package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +8 -10
  356. package/esm2022/lib/workspace/workspace.module.mjs +10 -35
  357. package/esm2022/public_api.mjs +11 -12
  358. package/fesm2022/igo2-geo.mjs +34474 -34608
  359. package/fesm2022/igo2-geo.mjs.map +1 -1
  360. package/lib/catalog/catalog-browser/catalog-browser-group.component.d.ts +1 -1
  361. package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +1 -1
  362. package/lib/catalog/catalog-browser/catalog-browser.component.d.ts +1 -1
  363. package/lib/catalog/catalog-browser/catalog-browser.module.d.ts +2 -14
  364. package/lib/catalog/catalog-library/add-catalog-dialog.component.d.ts +3 -2
  365. package/lib/catalog/catalog-library/catalog-library-item.component.d.ts +1 -1
  366. package/lib/catalog/catalog-library/catalog-library.component.d.ts +3 -2
  367. package/lib/catalog/catalog-library/catalog-library.module.d.ts +3 -18
  368. package/lib/catalog/catalog-library/index.d.ts +5 -0
  369. package/lib/catalog/catalog.module.d.ts +6 -9
  370. package/lib/catalog/index.d.ts +2 -0
  371. package/lib/catalog/shared/catalog.service.d.ts +3 -1
  372. package/lib/datasource/shared/datasource.service.d.ts +4 -5
  373. package/lib/datasource/shared/options/options-api.providers.d.ts +1 -1
  374. package/lib/directions/directions-buttons/directions-buttons.component.d.ts +4 -2
  375. package/lib/directions/directions-inputs/directions-inputs.component.d.ts +2 -2
  376. package/lib/directions/directions-results/directions-results.component.d.ts +2 -2
  377. package/lib/directions/directions-sources/directions-source.provider.d.ts +1 -1
  378. package/lib/directions/directions-sources/osrm-directions-source.d.ts +1 -1
  379. package/lib/directions/directions.component.d.ts +2 -2
  380. package/lib/directions/directions.module.d.ts +9 -20
  381. package/lib/directions/shared/directions.service.d.ts +3 -1
  382. package/lib/directions/shared/directions.utils.d.ts +1 -1
  383. package/lib/download/download-button/download-button.component.d.ts +1 -1
  384. package/lib/download/download.module.d.ts +4 -6
  385. package/lib/download/shared/download.service.d.ts +1 -1
  386. package/lib/draw/draw/draw-layer-popup.component.d.ts +1 -1
  387. package/lib/draw/draw/draw-popup.component.d.ts +5 -5
  388. package/lib/draw/draw/draw-shorcuts.component.d.ts +1 -1
  389. package/lib/draw/draw/draw.component.d.ts +2 -2
  390. package/lib/draw/draw/draw.module.d.ts +2 -25
  391. package/lib/draw/drawingTool.module.d.ts +3 -0
  392. package/lib/draw/shared/draw-icon.service.d.ts +1 -1
  393. package/lib/feature/feature-details/feature-details.component.d.ts +7 -4
  394. package/lib/feature/feature-details/feature-details.directive.d.ts +1 -1
  395. package/lib/feature/feature-details/feature-details.module.d.ts +2 -6
  396. package/lib/feature/feature-details/index.d.ts +5 -0
  397. package/lib/feature/feature-form/feature-form.component.d.ts +2 -2
  398. package/lib/feature/feature-form/feature-form.module.d.ts +2 -4
  399. package/lib/feature/feature.module.d.ts +6 -4
  400. package/lib/feature/index.d.ts +3 -1
  401. package/lib/filter/filter.module.d.ts +4 -28
  402. package/lib/filter/index.d.ts +16 -0
  403. package/lib/filter/ogc-filter-button/ogc-filter-button.component.d.ts +3 -3
  404. package/lib/filter/ogc-filter-form/ogc-filter-form.component.d.ts +3 -3
  405. package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +4 -4
  406. package/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.d.ts +1 -1
  407. package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +2 -2
  408. package/lib/filter/ogc-filterable-form/ogc-filterable-form.component.d.ts +3 -3
  409. package/lib/filter/ogc-filterable-item/ogc-filterable-item.component.d.ts +3 -3
  410. package/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.d.ts +1 -1
  411. package/lib/filter/ogc-filterable-list/ogc-filterable-list.component.d.ts +3 -3
  412. package/lib/filter/shared/filterable-datasource.pipe.d.ts +1 -1
  413. package/lib/filter/shared/spatial-filter.service.d.ts +2 -1
  414. package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +6 -5
  415. package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +2 -2
  416. package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +1 -1
  417. package/lib/filter/time-filter-button/time-filter-button.component.d.ts +1 -1
  418. package/lib/filter/time-filter-form/time-filter-form.component.d.ts +3 -3
  419. package/lib/filter/time-filter-item/time-filter-item.component.d.ts +1 -1
  420. package/lib/filter/time-filter-list/time-filter-list-binding.directive.d.ts +1 -1
  421. package/lib/filter/time-filter-list/time-filter-list.component.d.ts +1 -1
  422. package/lib/geo.module.d.ts +14 -24
  423. package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +1 -1
  424. package/lib/geometry/geometry-form-field/geometry-form-field.component.d.ts +1 -1
  425. package/lib/geometry/geometry-form-field/geometry-form-field.module.d.ts +2 -10
  426. package/lib/geometry/geometry-form-field/index.d.ts +5 -0
  427. package/lib/geometry/geometry.module.d.ts +5 -3
  428. package/lib/geometry/index.d.ts +1 -2
  429. package/lib/import-export/export-button/export-button.component.d.ts +1 -1
  430. package/lib/import-export/import-export/import-export.component.d.ts +5 -2
  431. package/lib/import-export/import-export.module.d.ts +4 -15
  432. package/lib/import-export/index.d.ts +4 -0
  433. package/lib/import-export/shared/drop-geo-file.directive.d.ts +3 -2
  434. package/lib/import-export/shared/export.service.d.ts +1 -1
  435. package/lib/import-export/shared/export.utils.d.ts +1 -1
  436. package/lib/import-export/shared/import.service.d.ts +1 -1
  437. package/lib/import-export/shared/import.utils.d.ts +1 -1
  438. package/lib/layer/index.d.ts +8 -0
  439. package/lib/layer/layer-item/layer-item.component.d.ts +2 -2
  440. package/lib/layer/layer-legend/layer-legend.component.d.ts +3 -2
  441. package/lib/layer/layer-legend-item/layer-legend-item.component.d.ts +2 -2
  442. package/lib/layer/layer-legend-list/layer-legend-list-binding.directive.d.ts +1 -1
  443. package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +1 -1
  444. package/lib/layer/layer-list/layer-list-binding.directive.d.ts +2 -2
  445. package/lib/layer/layer-list/layer-list.component.d.ts +1 -1
  446. package/lib/layer/layer-list-tool/layer-list-tool.component.d.ts +1 -1
  447. package/lib/layer/layer.module.d.ts +4 -18
  448. package/lib/layer/shared/layer.service.d.ts +1 -1
  449. package/lib/layer/shared/layers/image-layer.d.ts +1 -1
  450. package/lib/layer/shared/layers/layer.d.ts +1 -1
  451. package/lib/layer/shared/layers/layer.interface.d.ts +1 -1
  452. package/lib/layer/shared/layers/tile-layer.d.ts +1 -1
  453. package/lib/layer/shared/layers/vector-layer.d.ts +1 -1
  454. package/lib/layer/shared/layers/vectortile-layer.d.ts +1 -1
  455. package/lib/layer/track-feature-button/track-feature-button.component.d.ts +1 -1
  456. package/lib/layer/utils/image-watcher.d.ts +1 -1
  457. package/lib/map/baselayers-switcher/baselayers-switcher.component.d.ts +2 -2
  458. package/lib/map/baselayers-switcher/mini-basemap.component.d.ts +1 -1
  459. package/lib/map/geolocate-button/geolocate-button.component.d.ts +2 -2
  460. package/lib/map/home-extent-button/home-extent-button.component.d.ts +2 -2
  461. package/lib/map/index.d.ts +14 -0
  462. package/lib/map/info-section/info-section.component.d.ts +1 -1
  463. package/lib/map/map-browser/map-browser.component.d.ts +2 -2
  464. package/lib/map/map-center/map-center.component.d.ts +1 -1
  465. package/lib/map/map.module.d.ts +4 -7
  466. package/lib/map/menu-button/menu-button.component.d.ts +2 -2
  467. package/lib/map/offline-button/offline-button.component.d.ts +2 -2
  468. package/lib/map/rotation-button/rotation-button.component.d.ts +1 -1
  469. package/lib/map/shared/controllers/geolocation.d.ts +2 -1
  470. package/lib/map/shared/hover-feature.directive.d.ts +2 -2
  471. package/lib/map/shared/map-pointer-position.directive.d.ts +2 -2
  472. package/lib/map/shared/map.d.ts +2 -1
  473. package/lib/map/shared/mapOffline.directive.d.ts +3 -2
  474. package/lib/map/shared/projection.service.d.ts +1 -1
  475. package/lib/map/swipe-control/swipe-control.component.d.ts +1 -1
  476. package/lib/map/wake-lock-button/wake-lock-button.component.d.ts +2 -2
  477. package/lib/map/zoom-button/zoom-button.component.d.ts +1 -1
  478. package/lib/measure/index.d.ts +1 -2
  479. package/lib/measure/measure.module.d.ts +3 -0
  480. package/lib/measure/measurer/index.d.ts +5 -0
  481. package/lib/measure/measurer/measure-format.pipe.d.ts +1 -1
  482. package/lib/measure/measurer/measurer-dialog.component.d.ts +1 -1
  483. package/lib/measure/measurer/measurer-item.component.d.ts +1 -1
  484. package/lib/measure/measurer/measurer.component.d.ts +4 -4
  485. package/lib/measure/measurer/measurer.module.d.ts +3 -18
  486. package/lib/measure/shared/measure.utils.d.ts +1 -1
  487. package/lib/metadata/index.d.ts +2 -0
  488. package/lib/metadata/metadata-button/metadata-button.component.d.ts +2 -2
  489. package/lib/metadata/metadata.module.d.ts +4 -7
  490. package/lib/offline/geoDB/configFileToGeoDB.service.d.ts +1 -1
  491. package/lib/offline/geoDB/geoDB.service.d.ts +2 -3
  492. package/lib/offline/shared/geo-network.service.d.ts +1 -1
  493. package/lib/overlay/overlay.module.d.ts +4 -1
  494. package/lib/overlay/shared/overlay.directive.d.ts +1 -1
  495. package/lib/print/print/print.component.d.ts +1 -1
  496. package/lib/print/print-form/print-form.component.d.ts +2 -2
  497. package/lib/print/print.module.d.ts +4 -12
  498. package/lib/print/shared/print.service.d.ts +4 -1
  499. package/lib/query/query.module.d.ts +4 -4
  500. package/lib/query/shared/query-search-source.providers.d.ts +1 -1
  501. package/lib/query/shared/query.directive.d.ts +1 -1
  502. package/lib/query/shared/query.service.d.ts +2 -3
  503. package/lib/search/index.d.ts +6 -4
  504. package/lib/search/search-bar/search-bar.component.d.ts +2 -2
  505. package/lib/search/search-bar/search-bar.module.d.ts +2 -16
  506. package/lib/search/search-results/index.d.ts +6 -0
  507. package/lib/search/search-results/save-feature-dialog.component.d.ts +2 -2
  508. package/lib/search/search-results/search-results-add-button.component.d.ts +2 -2
  509. package/lib/search/search-results/search-results-item.component.d.ts +1 -1
  510. package/lib/search/search-results/search-results.component.d.ts +2 -2
  511. package/lib/search/search-results/search-results.module.d.ts +3 -21
  512. package/lib/search/search-selector/search-selector.component.d.ts +1 -1
  513. package/lib/search/search-selector/search-selector.module.d.ts +2 -11
  514. package/lib/search/search-settings/search-settings.component.d.ts +3 -2
  515. package/lib/search/search-settings/search-settings.module.d.ts +2 -12
  516. package/lib/search/search.module.d.ts +6 -7
  517. package/lib/search/shared/search-pointer-summary.directive.d.ts +2 -2
  518. package/lib/search/shared/search.service.d.ts +1 -1
  519. package/lib/search/shared/sources/cadastre.d.ts +2 -1
  520. package/lib/search/shared/sources/cadastre.providers.d.ts +4 -2
  521. package/lib/search/shared/sources/coordinates.d.ts +2 -1
  522. package/lib/search/shared/sources/coordinates.providers.d.ts +4 -2
  523. package/lib/search/shared/sources/icherche.d.ts +2 -1
  524. package/lib/search/shared/sources/icherche.providers.d.ts +5 -3
  525. package/lib/search/shared/sources/ilayer.d.ts +2 -1
  526. package/lib/search/shared/sources/ilayer.providers.d.ts +4 -2
  527. package/lib/search/shared/sources/nominatim.d.ts +1 -1
  528. package/lib/search/shared/sources/nominatim.providers.d.ts +3 -2
  529. package/lib/search/shared/sources/source.d.ts +1 -1
  530. package/lib/search/shared/sources/storedqueries.d.ts +2 -1
  531. package/lib/search/shared/sources/storedqueries.providers.d.ts +5 -3
  532. package/lib/search/shared/sources/workspace.d.ts +2 -1
  533. package/lib/search/shared/sources/workspace.providers.d.ts +4 -2
  534. package/lib/style/style-modal/drawing/style-modal-drawing.component.d.ts +1 -1
  535. package/lib/style/style-modal/layer/style-modal-layer.component.d.ts +1 -1
  536. package/lib/style/style-modal/layer-button/style-modal-layer-button.component.d.ts +1 -1
  537. package/lib/style/style.module.d.ts +5 -16
  538. package/lib/toast/toast.component.d.ts +1 -1
  539. package/lib/toast/toast.module.d.ts +4 -6
  540. package/lib/utils/propertyTypeDetector/propertyTypeDetector.service.d.ts +1 -1
  541. package/lib/wkt/wkt.module.d.ts +3 -0
  542. package/lib/workspace/confirmation-popup/confirmation-popup.component.d.ts +2 -2
  543. package/lib/workspace/confirmation-popup/confirmation-popup.module.d.ts +2 -6
  544. package/lib/workspace/shared/edition-workspace.d.ts +1 -1
  545. package/lib/workspace/shared/edition-workspace.service.d.ts +3 -1
  546. package/lib/workspace/shared/feature-workspace.service.d.ts +2 -1
  547. package/lib/workspace/shared/wfs-workspace.service.d.ts +2 -1
  548. package/lib/workspace/shared/wms-workspace.service.d.ts +2 -1
  549. package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +1 -1
  550. package/lib/workspace/widgets/ogc-filter/ogc-filter.module.d.ts +2 -6
  551. package/lib/workspace/workspace-selector/workspace-selector.directive.d.ts +1 -1
  552. package/lib/workspace/workspace-selector/workspace-selector.module.d.ts +2 -3
  553. package/lib/workspace/workspace-updator/workspace-updator.directive.d.ts +1 -1
  554. package/lib/workspace/workspace-updator/workspace-updator.module.d.ts +2 -3
  555. package/lib/workspace/workspace.module.d.ts +5 -9
  556. package/locale/en.geo.json +3 -3
  557. package/locale/fr.geo.json +3 -3
  558. package/package.json +14 -12
  559. package/public_api.d.ts +10 -11
  560. package/src/geo-theme.scss +23 -23
  561. package/src/lib/filter/filter.theming.scss +13 -13
  562. package/src/lib/filter/ogc-filter-selection/ogc-filter-selection.theming.scss +18 -18
  563. package/src/lib/filter/time-filter-form/time-filter-form.theming.scss +5 -5
  564. package/src/lib/layer/layer-item/layer-item.theme.scss +33 -33
  565. package/src/lib/layer/layer-legend/layer-legend.theming.scss +10 -10
  566. package/src/lib/layer/layer-list-tool/layer-list-tool.theming.scss +34 -34
  567. package/src/lib/layer/layer.theming.scss +10 -10
  568. package/src/lib/map/map-browser/map-browser.theming.scss +46 -46
  569. package/src/lib/map/map.theming.scss +9 -9
  570. package/src/lib/map/menu-button/menu-button.theming.scss +20 -20
  571. package/src/lib/map/zoom-button/zoom-button.theming.scss +32 -32
  572. package/src/style/style.scss +1 -1
  573. package/esm2022/lib/datasource/datasource.module.mjs +0 -22
  574. package/esm2022/lib/search/search-bar/search-url-param.directive.mjs +0 -40
  575. package/lib/datasource/datasource.module.d.ts +0 -8
  576. package/lib/search/search-bar/search-url-param.directive.d.ts +0 -13
@@ -1,6 +1,6 @@
1
1
  import { Directive, HostListener, Input, Self } from '@angular/core';
2
2
  import { EntityStore } from '@igo2/common';
3
- import { MediaService } from '@igo2/core';
3
+ import { MediaService } from '@igo2/core/media';
4
4
  import { SubjectStatus } from '@igo2/utils';
5
5
  import OlFeature from 'ol/Feature';
6
6
  import { unByKey } from 'ol/Observable';
@@ -20,7 +20,7 @@ import { hoverFeatureMarkerStyle } from '../../style/shared/feature/feature-styl
20
20
  import { StyleService } from '../../style/style-service/style.service';
21
21
  import * as i0 from "@angular/core";
22
22
  import * as i1 from "../../map/map-browser/map-browser.component";
23
- import * as i2 from "@igo2/core";
23
+ import * as i2 from "@igo2/core/media";
24
24
  import * as i3 from "../../style/style-service/style.service";
25
25
  /**
26
26
  * This directive makes the mouse coordinate trigger a reverse search on available search sources.
@@ -470,17 +470,18 @@ export class HoverFeatureDirective {
470
470
  this.store.clearLayer();
471
471
  }
472
472
  }
473
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HoverFeatureDirective, deps: [{ token: i1.MapBrowserComponent, self: true }, { token: i2.MediaService }, { token: i3.StyleService }], target: i0.ɵɵFactoryTarget.Directive });
474
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: HoverFeatureDirective, selector: "[igoHoverFeature]", inputs: { igoHoverFeatureDelay: "igoHoverFeatureDelay", igoHoverFeatureEnabled: "igoHoverFeatureEnabled" }, host: { listeners: { "mouseout": "mouseout()" } }, ngImport: i0 });
473
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: HoverFeatureDirective, deps: [{ token: i1.MapBrowserComponent, self: true }, { token: i2.MediaService }, { token: i3.StyleService }], target: i0.ɵɵFactoryTarget.Directive });
474
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.4", type: HoverFeatureDirective, isStandalone: true, selector: "[igoHoverFeature]", inputs: { igoHoverFeatureDelay: "igoHoverFeatureDelay", igoHoverFeatureEnabled: "igoHoverFeatureEnabled" }, host: { listeners: { "mouseout": "mouseout()" } }, ngImport: i0 });
475
475
  }
476
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HoverFeatureDirective, decorators: [{
476
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: HoverFeatureDirective, decorators: [{
477
477
  type: Directive,
478
478
  args: [{
479
- selector: '[igoHoverFeature]'
479
+ selector: '[igoHoverFeature]',
480
+ standalone: true
480
481
  }]
481
- }], ctorParameters: function () { return [{ type: i1.MapBrowserComponent, decorators: [{
482
+ }], ctorParameters: () => [{ type: i1.MapBrowserComponent, decorators: [{
482
483
  type: Self
483
- }] }, { type: i2.MediaService }, { type: i3.StyleService }]; }, propDecorators: { igoHoverFeatureDelay: [{
484
+ }] }, { type: i2.MediaService }, { type: i3.StyleService }], propDecorators: { igoHoverFeatureDelay: [{
484
485
  type: Input
485
486
  }], igoHoverFeatureEnabled: [{
486
487
  type: Input
@@ -488,4 +489,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
488
489
  type: HostListener,
489
490
  args: ['mouseout']
490
491
  }] } });
491
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG92ZXItZmVhdHVyZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL2hvdmVyLWZlYXR1cmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFNUMsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBRW5DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFFbEMsT0FBTyxhQUFhLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxpQkFBaUIsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLGFBQWEsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLGtCQUFrQixNQUFNLHNCQUFzQixDQUFDO0FBR3RELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBUyxXQUFXLEVBQW1CLE1BQU0sMkJBQTJCLENBQUM7QUFDaEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFbEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7OztBQUV2RTs7Ozs7R0FLRztBQUlILE1BQU0sT0FBTyxxQkFBcUI7SUFpRGQ7SUFDUjtJQUNBO0lBbERILEtBQUssQ0FBd0I7SUFDNUIsd0JBQXdCLEdBQzlCLElBQUksV0FBVyxDQUF3QixFQUFFLENBQUMsQ0FBQztJQUNyQyxrQkFBa0IsQ0FBQztJQUNuQixPQUFPLENBQWU7SUFDdEIsUUFBUSxDQUFlO0lBRXZCLGNBQWMsQ0FBb0I7SUFDbEMsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUNsQixlQUFlLENBQW1CO0lBRTFDOztPQUVHO0lBQ0ssbUJBQW1CLENBQUM7SUFFcEIsc0JBQXNCLENBQUM7SUFFdkIsY0FBYyxHQUFXLGdCQUFnQixDQUFDO0lBQ2xEOztPQUVHO0lBQ00sb0JBQW9CLEdBQVcsSUFBSSxDQUFDO0lBRTdDOztPQUVHO0lBQ00sc0JBQXNCLEdBQVksS0FBSyxDQUFDO0lBR2pELFFBQVE7UUFDTixZQUFZLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBYyxDQUFDLFVBQVUsQ0FBQztJQUNuRCxDQUFDO0lBRUQsWUFDa0IsU0FBOEIsRUFDdEMsWUFBMEIsRUFDMUIsWUFBMEI7UUFGbEIsY0FBUyxHQUFULFNBQVMsQ0FBcUI7UUFDdEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQWM7SUFDakMsQ0FBQztJQUVKOzs7T0FHRztJQUNILFFBQVE7UUFDTixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU87YUFDYixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3RELFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksWUFBWSxDQUFVLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFFTCw2REFBNkQ7UUFDN0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFlLEVBQUUsRUFBRTtZQUM3RCxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLGdCQUFnQixDQUFDLEVBQUU7Z0JBQ2hFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzthQUNsQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNLLFNBQVM7UUFDZixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRXpCLE1BQU0sS0FBSyxHQUFHLElBQUksV0FBVyxDQUFDO1lBQzVCLGtCQUFrQixFQUFFLElBQUk7WUFDeEIsRUFBRSxFQUFFLGdCQUFnQjtZQUNwQixLQUFLLEVBQUUsY0FBYztZQUNyQixNQUFNLEVBQUUsR0FBRztZQUNYLE1BQU0sRUFBRSxJQUFJLGlCQUFpQixFQUFFO1lBQy9CLGVBQWUsRUFBRSxLQUFLO1lBQ3RCLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLEtBQUssRUFBRSx1QkFBdUI7U0FDL0IsQ0FBQyxDQUFDO1FBQ0gsaUJBQWlCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQztZQUMxQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2hCLE1BQU0sRUFBRSxHQUFHO1lBQ1gsVUFBVSxFQUFFLFFBQVE7WUFDcEIsU0FBUyxFQUFFLElBQUk7WUFDZixNQUFNLEVBQUUsSUFBSSxrQkFBa0IsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ25FLEtBQUssRUFBRSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRTtnQkFDN0IsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO29CQUNoRSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FDMUIsT0FBTyxFQUNQLElBQUksQ0FBQyxlQUFlLEVBQ3BCLFVBQVUsQ0FDWCxDQUFDO2lCQUNIO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FDZCxPQUE4QyxFQUM5QyxVQUE0QixFQUM1QixVQUFrQjtRQUVsQixNQUFNLGVBQWUsR0FBRyxFQUFFLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDMUMsSUFBSSxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN0RSxJQUFJLGFBQWEsR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFFM0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDNUIsZUFBZSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7WUFDbEMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUN0QixLQUFLLEdBQUcsU0FBUyxDQUFDO1NBQ25CO2FBQU07WUFDTCxnQ0FBZ0M7WUFDaEMsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwRSxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDbEIsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2xCLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7WUFDaEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDZixNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7Z0JBQ3RDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO2FBQ3JDO1lBQ0QsZUFBZSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFDaEMsZUFBZSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFDaEMsZUFBZSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDOUIsZUFBZSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7U0FDN0I7UUFDRCxJQUFJLENBQUMsYUFBYSxJQUFJLEtBQUssRUFBRTtZQUMzQixlQUFlLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRztnQkFDNUIsU0FBUyxFQUFFLE1BQU07Z0JBQ2pCLFlBQVksRUFBRSxLQUFLO2dCQUNuQixJQUFJLEVBQUUseUJBQXlCO2dCQUMvQixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO2dCQUN2QixjQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsMEJBQTBCLEVBQUU7Z0JBQ3JELGdCQUFnQixFQUFFLEVBQUUsS0FBSyxFQUFFLDJCQUEyQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7Z0JBQ2xFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtnQkFDbkMsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO2FBQzlCLENBQUM7U0FDSDtRQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FDN0MsT0FBTyxFQUNQLGVBQWUsRUFDZixVQUFVLENBQ1gsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXO1FBQ1QsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsdUJBQXVCO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQzlELENBQUMsMkJBQTJCLEVBQUUsRUFBRTtZQUM5QixJQUFJLENBQUMsaUJBQWlCLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNLLHNCQUFzQjtRQUM1QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUN2QyxhQUFhLEVBQ2IsQ0FBQyxLQUE2QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUMxRCxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ssZ0JBQWdCO1FBQ3RCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQzFDLGFBQWEsRUFDYixDQUFDLEtBQTZCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FDckUsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCx5QkFBeUI7UUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssd0JBQXdCO1FBQzlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7O09BR0c7SUFDSyx3QkFBd0I7UUFDOUIsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxTQUFTLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7T0FHRztJQUNLLHFCQUFxQixDQUFDLEtBQTZCO1FBQ3pELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssVUFBVSxDQUFDLEtBQTZCO1FBQzlDLElBQ0UsS0FBSyxDQUFDLFFBQVE7WUFDZCxDQUFDLElBQUksQ0FBQyxzQkFBc0I7WUFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsRUFDakM7WUFDQSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsT0FBTztTQUNSO1FBQ0QsSUFBSSxPQUFPLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxXQUFXLEVBQUU7WUFDbEQsc0NBQXNDO1lBQ3RDLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUN2QztRQUNELElBQUksYUFBYSxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQzlCLElBQUksY0FBYyxDQUFDO1FBQ25CLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUN4QyxpRkFBaUY7WUFDakYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQy9CLEtBQUssRUFDTCxDQUFDLFVBQWlELEVBQUUsT0FBWSxFQUFFLEVBQUU7Z0JBQ2xFLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ1osT0FBTztpQkFDUjtnQkFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBRSxPQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ25FLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQWUsQ0FBQyxFQUFFO29CQUMxQyxPQUFPO2lCQUNSO2dCQUNELElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxhQUFhLEVBQUU7b0JBQ3BDLE9BQU87aUJBQ1I7Z0JBQ0QsYUFBYSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ2hDLGNBQWMsR0FBRyxPQUFPLENBQUM7WUFDM0IsQ0FBQyxFQUNEO2dCQUNFLFlBQVksRUFBRSxFQUFFO2dCQUNoQixXQUFXLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUN2QixPQUFPLFlBQVksYUFBYTtvQkFDaEMsT0FBTyxZQUFZLGlCQUFpQjthQUN2QyxDQUNGLENBQUM7WUFDRixJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUNuQixpQkFBaUI7Z0JBQ2pCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN0QyxPQUFPO2FBQ1I7WUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FDL0IsS0FBSyxFQUNMLENBQUMsVUFBaUQsRUFBRSxPQUFZLEVBQUUsRUFBRTtnQkFDbEUsNEJBQTRCO2dCQUM1QixJQUNFLFVBQVUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEtBQUssU0FBUztvQkFDNUMsVUFBVSxDQUFDLGFBQWEsRUFBRTt3QkFDeEIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxFQUN6RDtvQkFDQSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ2xCLElBQUksUUFBUSxDQUFDO29CQUNiLElBQUksT0FBTyxZQUFZLGFBQWEsRUFBRTt3QkFDcEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQzNDLE9BQWUsQ0FBQyxNQUFNLENBQ1QsQ0FBQzt3QkFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEVBQUU7NEJBQ3hDLE9BQU87eUJBQ1I7d0JBQ0QsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUMxRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsYUFBYSxFQUFFLGNBQWMsQ0FBQyxDQUFDO3dCQUM3RCxNQUFNLGNBQWMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO3dCQUN4QyxjQUFjLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQzt3QkFDdEMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO3dCQUN6QyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7d0JBQy9ELE1BQU0sU0FBUyxHQUNiLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxPQUFPOzRCQUNoRCxDQUFDLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRTs0QkFDOUIsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7d0JBQ3pDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQzt3QkFDeEMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO3dCQUMvQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO3dCQUN2QyxJQUFJLENBQUMsd0JBQXdCLENBQUMsYUFBYSxFQUFFLGdCQUFnQixDQUFDLENBQUM7d0JBQy9ELGNBQWMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzt3QkFDdEMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzt3QkFDbkQsUUFBUSxHQUFHLGFBQWEsQ0FBQzt3QkFDekIsT0FBTyxJQUFJLENBQUM7cUJBQ2I7b0JBQ0QsSUFBSSxPQUFPLFlBQVksaUJBQWlCLEVBQUU7d0JBQ3hDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQy9DLE9BQWUsQ0FBQyxNQUFNLENBQ0wsQ0FBQzt3QkFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsRUFBRTs0QkFDNUMsT0FBTzt5QkFDUjt3QkFDRCxJQUNFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCOzRCQUNwRCxFQUFFLFVBQVUsRUFDZDs0QkFDQSxJQUFJLENBQUMsZUFBZTtnQ0FDbEIsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUM7eUJBQ2xFOzZCQUFNLElBQUksaUJBQWlCLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUU7NEJBQzNELElBQUksQ0FBQyxlQUFlO2dDQUNsQixpQkFBaUIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQzt5QkFDakQ7d0JBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7d0JBQ25ELE9BQU87NkJBQ0osV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7NkJBQ3hCLElBQUksQ0FDSCxDQUFDLFdBQXNELEVBQUUsRUFBRTs0QkFDekQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUU7Z0NBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO2dDQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dDQUM5QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0NBQ2xCLE9BQU87NkJBQ1I7NEJBQ0QsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUMvQixJQUFJLENBQUMsT0FBTyxFQUFFO2dDQUNaLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQ0FDbEIsT0FBTzs2QkFDUjs0QkFDRCxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7NEJBQ3ZELGNBQWMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDOzRCQUN0QyxNQUFNLGdCQUFnQixHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7NEJBQ3pDLGdCQUFnQixDQUFDLGFBQWEsQ0FDNUIsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUMvQixDQUFDOzRCQUNGLE1BQU0sU0FBUyxHQUNiLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxPQUFPO2dDQUNoRCxDQUFDLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRTtnQ0FDOUIsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7NEJBQ3pDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQzs0QkFDeEMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDOzRCQUMvQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDOzRCQUN2QyxJQUFJLENBQUMsd0JBQXdCLENBQzNCLGlCQUFpQixFQUNqQixnQkFBZ0IsQ0FDakIsQ0FBQzs0QkFDRixJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDOzRCQUN2RCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQzs0QkFDcEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQzt3QkFDaEMsQ0FBQyxDQUNGLENBQUM7d0JBQ0osUUFBUSxHQUFHLGlCQUFpQixDQUFDO3FCQUM5QjtpQkFDRjtZQUNILENBQUMsRUFDRDtnQkFDRSxZQUFZLEVBQUUsRUFBRTtnQkFDaEIsV0FBVyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEtBQUssY0FBYzthQUNyRCxDQUNGLENBQUM7UUFDSixDQUFDLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELGVBQWUsQ0FBQyxRQUF1QztRQUNyRCxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2IsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFO1lBQ3JCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRTtZQUNyQixPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFDRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLGdCQUFnQjtZQUM1QyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFDdEM7WUFDQSxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFDRSxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxnQkFBZ0I7WUFDM0MsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxVQUFVO1lBQ3ZELENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUN0QztZQUNBLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxtQkFBbUIsQ0FDakIsT0FBOEM7UUFFOUMsSUFBSSxZQUFtQyxDQUFDO1FBQ3hDLElBQUksT0FBTyxZQUFZLGFBQWEsRUFBRTtZQUNwQyxZQUFZLEdBQUcsSUFBSSxTQUFTLENBQUM7Z0JBQzNCLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQzthQUNwQyxDQUFDLENBQUM7WUFDSCxZQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ3JDO2FBQU0sSUFBSSxPQUFPLFlBQVksU0FBUyxFQUFFO1lBQ3ZDLFlBQVksR0FBRyxPQUFPLENBQUM7U0FDeEI7UUFDRCxZQUFZLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7O09BR0c7SUFDSyxpQkFBaUIsQ0FBQyxXQUFvQztRQUM1RCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxTQUFTLENBQUM7Z0JBQzVCLFFBQVEsRUFBRSxNQUFNLENBQUMsV0FBVyxFQUFFO2dCQUM5QixJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFDakMsWUFBWSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO2FBQzNELENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDOUQ7SUFDSCxDQUFDO0lBRU8sd0JBQXdCLENBQzlCLFFBQXVDLEVBQ3ZDLE9BQThCO1FBRTlCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkUsSUFBSSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUU7WUFDN0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FDMUIsSUFBSSxDQUFDLGdCQUFnQixDQUNuQixPQUFPLEVBQ1AsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUNyRCxVQUFVLENBQ1gsQ0FDRixDQUFDO1lBQ0YsT0FBTztTQUNSO1FBQ0QsSUFBSSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUU7WUFDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FDMUIsSUFBSSxDQUFDLGdCQUFnQixDQUNuQixPQUFPLEVBQ1AsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUNwQyxVQUFVLENBQ1gsQ0FDRixDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRU8sZUFBZSxDQUFDLFVBQVU7UUFDaEMsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3JELElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsS0FBSyxVQUFVLEVBQUU7Z0JBQzlDLE9BQU8sSUFBSSxHQUFHLEdBQUcsS0FBSyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUM7YUFDdEM7U0FDRjtRQUNELE9BQU8sT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUM5RCxDQUFDO0lBRU8sV0FBVyxDQUFDLE9BQU87UUFDekIsSUFBSSxJQUFJLENBQUM7UUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLDBCQUEwQixFQUFFO1lBQ3ZDLElBQUksR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDOUI7YUFBTTtZQUNMLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQ3BELE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUV0QixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFO2dCQUN4QixJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUNqQixVQUFVLENBQUMsSUFBSSxDQUFDO3dCQUNkLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ3ZCLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO3FCQUM1QixDQUFDLENBQUM7aUJBQ0o7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILG9CQUFvQjtZQUNwQixRQUFRLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDekIsS0FBSyxPQUFPO29CQUNWLElBQUksR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ3BDLE1BQU07Z0JBQ1IsS0FBSyxTQUFTO29CQUNaLElBQUksR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO29CQUN4QyxNQUFNO2dCQUNSLEtBQUssWUFBWTtvQkFDZixJQUFJLEdBQUcsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztvQkFDM0MsTUFBTTthQUNUO1NBQ0Y7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNLLFVBQVU7UUFDaEIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDL0I7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQzt3R0FoaUJVLHFCQUFxQjs0RkFBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQUhqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7aUJBQzlCOzswQkFrREksSUFBSTtrR0ExQkUsb0JBQW9CO3NCQUE1QixLQUFLO2dCQUtHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFHTixRQUFRO3NCQURQLFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFNlbGZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEVudGl0eVN0b3JlIH0gZnJvbSAnQGlnbzIvY29tbW9uJztcclxuaW1wb3J0IHsgTWVkaWFTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3RTdGF0dXMgfSBmcm9tICdAaWdvMi91dGlscyc7XHJcblxyXG5pbXBvcnQgT2xGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xyXG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT2xNYXBCcm93c2VyRXZlbnQgfSBmcm9tICdvbC9NYXBCcm93c2VyRXZlbnQnO1xyXG5pbXBvcnQgeyB1bkJ5S2V5IH0gZnJvbSAnb2wvT2JzZXJ2YWJsZSc7XHJcbmltcG9ydCAqIGFzIE9sR2VvbSBmcm9tICdvbC9nZW9tJztcclxuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE9sR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcclxuaW1wb3J0IG9sTGF5ZXJWZWN0b3IgZnJvbSAnb2wvbGF5ZXIvVmVjdG9yJztcclxuaW1wb3J0IG9sTGF5ZXJWZWN0b3JUaWxlIGZyb20gJ29sL2xheWVyL1ZlY3RvclRpbGUnO1xyXG5pbXBvcnQgUmVuZGVyRmVhdHVyZSBmcm9tICdvbC9yZW5kZXIvRmVhdHVyZSc7XHJcbmltcG9ydCBvbFZlY3RvclRpbGVTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3RvclRpbGUnO1xyXG5cclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgRmVhdHVyZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy9mZWF0dXJlLWRhdGFzb3VyY2UnO1xyXG5pbXBvcnQgeyB0cnlCaW5kU3RvcmVMYXllciB9IGZyb20gJy4uLy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUtc3RvcmUudXRpbHMnO1xyXG5pbXBvcnQgeyBGZWF0dXJlTW90aW9uIH0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5lbnVtcyc7XHJcbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tICcuLi8uLi9mZWF0dXJlL3NoYXJlZC9mZWF0dXJlLmludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBGZWF0dXJlU3RvcmUgfSBmcm9tICcuLi8uLi9mZWF0dXJlL3NoYXJlZC9zdG9yZSc7XHJcbmltcG9ydCB7IExheWVyLCBWZWN0b3JMYXllciwgVmVjdG9yVGlsZUxheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycyc7XHJcbmltcG9ydCB7IE1hcEJyb3dzZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tYXAvbWFwLWJyb3dzZXIvbWFwLWJyb3dzZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9tYXAnO1xyXG5pbXBvcnQgeyBob3ZlckZlYXR1cmVNYXJrZXJTdHlsZSB9IGZyb20gJy4uLy4uL3N0eWxlL3NoYXJlZC9mZWF0dXJlL2ZlYXR1cmUtc3R5bGUnO1xyXG5pbXBvcnQgeyBTdHlsZUJ5QXR0cmlidXRlIH0gZnJvbSAnLi4vLi4vc3R5bGUvc2hhcmVkL3ZlY3Rvci92ZWN0b3Itc3R5bGUuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgU3R5bGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc3R5bGUvc3R5bGUtc2VydmljZS9zdHlsZS5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBUaGlzIGRpcmVjdGl2ZSBtYWtlcyB0aGUgbW91c2UgY29vcmRpbmF0ZSB0cmlnZ2VyIGEgcmV2ZXJzZSBzZWFyY2ggb24gYXZhaWxhYmxlIHNlYXJjaCBzb3VyY2VzLlxyXG4gKiBUaGUgc2VhcmNoIHJlc3VsdHMgYXJlIHBsYWNlZCBpbnRvIGEgbGFiZWwsIG9uIGEgY3Jvc3MgaWNvbiwgcmVwcmVzZW50aW5nIHRoZSBtb3VzZSBjb29yZGluYXRlLlxyXG4gKiBCeSBkZWZhdWx0LCBubyBzZWFyY2ggc291cmNlcy4gQ29uZmlnIGluIGNvbmZpZyBmaWxlIG11c3QgYmUgZGVmaW5lZC5cclxuICogdGhlIGxheWVyIGxldmVsLlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbaWdvSG92ZXJGZWF0dXJlXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIEhvdmVyRmVhdHVyZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwdWJsaWMgc3RvcmU6IEZlYXR1cmVTdG9yZTxGZWF0dXJlPjtcclxuICBwcml2YXRlIHBvaW50ZXJIb3ZlckZlYXR1cmVTdG9yZTogRW50aXR5U3RvcmU8T2xGZWF0dXJlPE9sR2VvbWV0cnk+PiA9XHJcbiAgICBuZXcgRW50aXR5U3RvcmU8T2xGZWF0dXJlPE9sR2VvbWV0cnk+PihbXSk7XHJcbiAgcHJpdmF0ZSBsYXN0VGltZW91dFJlcXVlc3Q7XHJcbiAgcHJpdmF0ZSBzdG9yZSQkOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBsYXllcnMkJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBwcml2YXRlIHNlbGVjdGlvbkxheWVyOiBvbExheWVyVmVjdG9yVGlsZTtcclxuICBwcml2YXRlIHNlbGVjdGlvbk1WVCA9IHt9O1xyXG4gIHByaXZhdGUgbXZ0U3R5bGVPcHRpb25zOiBTdHlsZUJ5QXR0cmlidXRlO1xyXG5cclxuICAvKipcclxuICAgKiBMaXN0ZW5lciB0byB0aGUgcG9pbnRlciBtb3ZlIGV2ZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwb2ludGVyTW92ZUxpc3RlbmVyO1xyXG5cclxuICBwcml2YXRlIHNpbmdsZUNsaWNrTWFwTGlzdGVuZXI7XHJcblxyXG4gIHByaXZhdGUgaG92ZXJGZWF0dXJlSWQ6IHN0cmluZyA9ICdob3ZlckZlYXR1cmVJZCc7XHJcbiAgLyoqXHJcbiAgICogVGhlIGRlbGF5IHdoZXJlIHRoZSBtb3VzZSBtdXN0IGJlIG1vdGlvbmxlc3MgYmVmb3JlIHRyaWdnZXIgdGhlIHJldmVyc2Ugc2VhcmNoXHJcbiAgICovXHJcbiAgQElucHV0KCkgaWdvSG92ZXJGZWF0dXJlRGVsYXk6IG51bWJlciA9IDEwMDA7XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHRoZSB1c2VyIGhhcyBlbmFibGVkIG9yIG5vdCB0aGUgZGlyZWN0aXZlXHJcbiAgICovXHJcbiAgQElucHV0KCkgaWdvSG92ZXJGZWF0dXJlRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdtb3VzZW91dCcpXHJcbiAgbW91c2VvdXQoKSB7XHJcbiAgICBjbGVhclRpbWVvdXQodGhpcy5sYXN0VGltZW91dFJlcXVlc3QpO1xyXG4gICAgdGhpcy5jbGVhckxheWVyKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJR08gbWFwXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50Lm1hcDtcclxuICB9XHJcblxyXG4gIGdldCBtYXBQcm9qZWN0aW9uKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKHRoaXMuY29tcG9uZW50Lm1hcCBhcyBJZ29NYXApLnByb2plY3Rpb247XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBTZWxmKCkgcHJpdmF0ZSBjb21wb25lbnQ6IE1hcEJyb3dzZXJDb21wb25lbnQsXHJcbiAgICBwcml2YXRlIG1lZGlhU2VydmljZTogTWVkaWFTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdHlsZVNlcnZpY2U6IFN0eWxlU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgLyoqXHJcbiAgICogU3RhcnQgbGlzdGVuaW5nIHRvIHBvaW50ZXJtb3ZlIGFuZCByZXZlcnNlIHNlYXJjaCByZXN1bHRzLlxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5tYXAuc3RhdHVzJFxyXG4gICAgICAucGlwZShmaXJzdCgoc3RhdHVzKSA9PiBzdGF0dXMgPT09IFN1YmplY3RTdGF0dXMuRG9uZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3RvcmUgPSBuZXcgRmVhdHVyZVN0b3JlPEZlYXR1cmU+KFtdLCB7IG1hcDogdGhpcy5tYXAgfSk7XHJcbiAgICAgICAgdGhpcy5pbml0U3RvcmUoKTtcclxuICAgICAgICB0aGlzLmxpc3RlblRvTWFwUG9pbnRlck1vdmUoKTtcclxuICAgICAgICB0aGlzLnN1YnNjcmliZVRvUG9pbnRlclN0b3JlKCk7XHJcbiAgICAgICAgdGhpcy5saXN0ZW5Ub01hcENsaWNrKCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIC8vIFRvIGhhbmRsZSBjb250ZXh0IGNoYW5nZSB3aXRob3V0IHVzaW5nIHRoZSBjb250ZXh0U2VydmljZS5cclxuICAgIHRoaXMubGF5ZXJzJCQgPSB0aGlzLm1hcC5sYXllcnMkLnN1YnNjcmliZSgobGF5ZXJzOiBMYXllcltdKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnN0b3JlICYmICFsYXllcnMuZmluZCgobCkgPT4gbC5pZCA9PT0gJ2hvdmVyRmVhdHVyZUlkJykpIHtcclxuICAgICAgICB0aGlzLmluaXRTdG9yZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgdGhlIHBvaW50ZXIgcG9zaXRpb24gc3RvcmVcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwcml2YXRlIGluaXRTdG9yZSgpIHtcclxuICAgIGNvbnN0IHN0b3JlID0gdGhpcy5zdG9yZTtcclxuXHJcbiAgICBjb25zdCBsYXllciA9IG5ldyBWZWN0b3JMYXllcih7XHJcbiAgICAgIGlzSWdvSW50ZXJuYWxMYXllcjogdHJ1ZSxcclxuICAgICAgaWQ6ICdob3ZlckZlYXR1cmVJZCcsXHJcbiAgICAgIHRpdGxlOiAnaG92ZXJGZWF0dXJlJyxcclxuICAgICAgekluZGV4OiA5MDAsXHJcbiAgICAgIHNvdXJjZTogbmV3IEZlYXR1cmVEYXRhU291cmNlKCksXHJcbiAgICAgIHNob3dJbkxheWVyTGlzdDogZmFsc2UsXHJcbiAgICAgIGV4cG9ydGFibGU6IGZhbHNlLFxyXG4gICAgICBicm93c2FibGU6IGZhbHNlLFxyXG4gICAgICBzdHlsZTogaG92ZXJGZWF0dXJlTWFya2VyU3R5bGVcclxuICAgIH0pO1xyXG4gICAgdHJ5QmluZFN0b3JlTGF5ZXIoc3RvcmUsIGxheWVyKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGlvbkxheWVyID0gbmV3IG9sTGF5ZXJWZWN0b3JUaWxlKHtcclxuICAgICAgbWFwOiB0aGlzLm1hcC5vbCxcclxuICAgICAgekluZGV4OiA5MDEsXHJcbiAgICAgIHJlbmRlck1vZGU6ICd2ZWN0b3InLFxyXG4gICAgICBkZWNsdXR0ZXI6IHRydWUsXHJcbiAgICAgIHNvdXJjZTogbmV3IG9sVmVjdG9yVGlsZVNvdXJjZSh7IHByb2plY3Rpb246IHRoaXMubWFwLnByb2plY3Rpb24gfSksXHJcbiAgICAgIHN0eWxlOiAoZmVhdHVyZSwgcmVzb2x1dGlvbikgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLm12dFN0eWxlT3B0aW9ucyAmJiBmZWF0dXJlLmdldElkKCkgaW4gdGhpcy5zZWxlY3Rpb25NVlQpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUhvdmVyU3R5bGUoXHJcbiAgICAgICAgICAgIGZlYXR1cmUsXHJcbiAgICAgICAgICAgIHRoaXMubXZ0U3R5bGVPcHRpb25zLFxyXG4gICAgICAgICAgICByZXNvbHV0aW9uXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVIb3ZlclN0eWxlKFxyXG4gICAgZmVhdHVyZTogUmVuZGVyRmVhdHVyZSB8IE9sRmVhdHVyZTxPbEdlb21ldHJ5PixcclxuICAgIGhvdmVyU3R5bGU6IFN0eWxlQnlBdHRyaWJ1dGUsXHJcbiAgICByZXNvbHV0aW9uOiBudW1iZXJcclxuICApIHtcclxuICAgIGNvbnN0IGxvY2FsSG92ZXJTdHlsZSA9IHsgLi4uaG92ZXJTdHlsZSB9O1xyXG4gICAgbGV0IGxhYmVsID0gaG92ZXJTdHlsZS5sYWJlbCA/IGhvdmVyU3R5bGUubGFiZWwuYXR0cmlidXRlIDogdW5kZWZpbmVkO1xyXG4gICAgbGV0IGhhc0xhYmVsU3R5bGUgPSBob3ZlclN0eWxlLmxhYmVsPy5zdHlsZSA/IHRydWUgOiBmYWxzZTtcclxuXHJcbiAgICBpZiAoIWZlYXR1cmUuZ2V0KCdfaXNMYWJlbCcpKSB7XHJcbiAgICAgIGxvY2FsSG92ZXJTdHlsZS5sYWJlbCA9IHVuZGVmaW5lZDtcclxuICAgICAgaGFzTGFiZWxTdHlsZSA9IGZhbHNlO1xyXG4gICAgICBsYWJlbCA9IHVuZGVmaW5lZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIGNsZWFyIHRoZSBzdHlsZSBmb3IgbGFiZWwuLi4uXHJcbiAgICAgIGNvbnN0IHNpemUgPSBsb2NhbEhvdmVyU3R5bGUuZGF0YSA/IGxvY2FsSG92ZXJTdHlsZS5kYXRhLmxlbmd0aCA6IDA7XHJcbiAgICAgIGNvbnN0IHJhZGl1cyA9IFtdO1xyXG4gICAgICBjb25zdCBzdHJva2UgPSBbXTtcclxuICAgICAgY29uc3Qgd2lkdGggPSBbXTtcclxuICAgICAgY29uc3QgZmlsbCA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xyXG4gICAgICAgIHJhZGl1cy5wdXNoKDApO1xyXG4gICAgICAgIHN0cm9rZS5wdXNoKCdyZ2JhKDI1NSwgMjU1LCAyNTUsIDApJyk7XHJcbiAgICAgICAgd2lkdGgucHVzaCgwKTtcclxuICAgICAgICBmaWxsLnB1c2goJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMCknKTtcclxuICAgICAgfVxyXG4gICAgICBsb2NhbEhvdmVyU3R5bGUucmFkaXVzID0gcmFkaXVzO1xyXG4gICAgICBsb2NhbEhvdmVyU3R5bGUuc3Ryb2tlID0gc3Ryb2tlO1xyXG4gICAgICBsb2NhbEhvdmVyU3R5bGUud2lkdGggPSB3aWR0aDtcclxuICAgICAgbG9jYWxIb3ZlclN0eWxlLmZpbGwgPSBmaWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKCFoYXNMYWJlbFN0eWxlICYmIGxhYmVsKSB7XHJcbiAgICAgIGxvY2FsSG92ZXJTdHlsZS5sYWJlbC5zdHlsZSA9IHtcclxuICAgICAgICB0ZXh0QWxpZ246ICdsZWZ0JyxcclxuICAgICAgICB0ZXh0QmFzZWxpbmU6ICd0b3AnLFxyXG4gICAgICAgIGZvbnQ6ICcxMnB4IENhbGlicmksc2Fucy1zZXJpZicsXHJcbiAgICAgICAgZmlsbDogeyBjb2xvcjogJyMwMDAnIH0sXHJcbiAgICAgICAgYmFja2dyb3VuZEZpbGw6IHsgY29sb3I6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSknIH0sXHJcbiAgICAgICAgYmFja2dyb3VuZFN0cm9rZTogeyBjb2xvcjogJ3JnYmEoMjAwLCAyMDAsIDIwMCwgMC43NSknLCB3aWR0aDogMiB9LFxyXG4gICAgICAgIHN0cm9rZTogeyBjb2xvcjogJyNmZmYnLCB3aWR0aDogMyB9LFxyXG4gICAgICAgIG92ZXJmbG93OiB0cnVlLFxyXG4gICAgICAgIG9mZnNldFg6IDEwLFxyXG4gICAgICAgIG9mZnNldFk6IDIwLFxyXG4gICAgICAgIHBhZGRpbmc6IFsyLjUsIDIuNSwgMi41LCAyLjVdXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5zdHlsZVNlcnZpY2UuY3JlYXRlU3R5bGVCeUF0dHJpYnV0ZShcclxuICAgICAgZmVhdHVyZSxcclxuICAgICAgbG9jYWxIb3ZlclN0eWxlLFxyXG4gICAgICByZXNvbHV0aW9uXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RvcCBsaXN0ZW5pbmcgdG8gcG9pbnRlcm1vdmUgYW5kIHJldmVyc2Ugc2VhcmNoIHJlc3VsdHMuXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnVubGlzdGVuVG9NYXBQb2ludGVyTW92ZSgpO1xyXG4gICAgdGhpcy51bnN1YnNjcmliZVRvUG9pbnRlclN0b3JlKCk7XHJcbiAgICB0aGlzLnVubGlzdGVuVG9NYXBTaW5nbGVDbGljaygpO1xyXG4gICAgdGhpcy5sYXllcnMkJC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3Vic2NyaWJlIHRvIHBvaW50ZXJtb3ZlIHJlc3VsdCBzdG9yZVxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHN1YnNjcmliZVRvUG9pbnRlclN0b3JlKCkge1xyXG4gICAgdGhpcy5zdG9yZSQkID0gdGhpcy5wb2ludGVySG92ZXJGZWF0dXJlU3RvcmUuZW50aXRpZXMkLnN1YnNjcmliZShcclxuICAgICAgKHJlc3VsdHNVbmRlclBvaW50ZXJQb3NpdGlvbikgPT4ge1xyXG4gICAgICAgIHRoaXMuYWRkRmVhdHVyZU92ZXJsYXkocmVzdWx0c1VuZGVyUG9pbnRlclBvc2l0aW9uKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIG1hcCBwb2ludGVybW92ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgbGlzdGVuVG9NYXBQb2ludGVyTW92ZSgpIHtcclxuICAgIHRoaXMucG9pbnRlck1vdmVMaXN0ZW5lciA9IHRoaXMubWFwLm9sLm9uKFxyXG4gICAgICAncG9pbnRlcm1vdmUnLFxyXG4gICAgICAoZXZlbnQ6IE9sTWFwQnJvd3NlckV2ZW50PGFueT4pID0+IHRoaXMub25NYXBFdmVudChldmVudClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPbiBtYXAgc2luZ2xlY2xpY2tcclxuICAgKi9cclxuICBwcml2YXRlIGxpc3RlblRvTWFwQ2xpY2soKSB7XHJcbiAgICB0aGlzLnNpbmdsZUNsaWNrTWFwTGlzdGVuZXIgPSB0aGlzLm1hcC5vbC5vbihcclxuICAgICAgJ3NpbmdsZWNsaWNrJyxcclxuICAgICAgKGV2ZW50OiBPbE1hcEJyb3dzZXJFdmVudDxhbnk+KSA9PiB0aGlzLm9uTWFwU2luZ2xlQ2xpY2tFdmVudChldmVudClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVbnN1YnNjcmliZSB0byBwb2ludGVyIHN0b3JlLlxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHVuc3Vic2NyaWJlVG9Qb2ludGVyU3RvcmUoKSB7XHJcbiAgICB0aGlzLnN0b3JlJCQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0b3AgbGlzdGVuaW5nIGZvciBtYXAgcG9pbnRlcm1vdmVcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwcml2YXRlIHVubGlzdGVuVG9NYXBQb2ludGVyTW92ZSgpIHtcclxuICAgIHVuQnlLZXkodGhpcy5wb2ludGVyTW92ZUxpc3RlbmVyKTtcclxuICAgIHRoaXMucG9pbnRlck1vdmVMaXN0ZW5lciA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0b3AgbGlzdGVuaW5nIGZvciBtYXAgc2luZ2xlY2xpY2tcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwcml2YXRlIHVubGlzdGVuVG9NYXBTaW5nbGVDbGljaygpIHtcclxuICAgIHVuQnlLZXkodGhpcy5zaW5nbGVDbGlja01hcExpc3RlbmVyKTtcclxuICAgIHRoaXMuc2luZ2xlQ2xpY2tNYXBMaXN0ZW5lciA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyaWdnZXIgY2xlYXIgbGF5ZXIgb24gc2luZ2xlY2xpY2suXHJcbiAgICogQHBhcmFtIGV2ZW50IE9MIG1hcCBicm93c2VyIHNpbmdsZWNsaWNrIGV2ZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvbk1hcFNpbmdsZUNsaWNrRXZlbnQoZXZlbnQ6IE9sTWFwQnJvd3NlckV2ZW50PGFueT4pIHtcclxuICAgIHRoaXMuY2xlYXJMYXllcigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJpZ2dlciBob3ZlciB3aGVuIHRoZSBtb3VzZSBpcyBtb3Rpb25sZXNzIGR1cmluZyB0aGUgZGVmaW5lZCBkZWxheSAocG9pbnRlck1vdmVEZWxheSkuXHJcbiAgICogQHBhcmFtIGV2ZW50IE9MIG1hcCBicm93c2VyIHBvaW50ZXIgZXZlbnRcclxuICAgKi9cclxuICBwcml2YXRlIG9uTWFwRXZlbnQoZXZlbnQ6IE9sTWFwQnJvd3NlckV2ZW50PGFueT4pIHtcclxuICAgIGlmIChcclxuICAgICAgZXZlbnQuZHJhZ2dpbmcgfHxcclxuICAgICAgIXRoaXMuaWdvSG92ZXJGZWF0dXJlRW5hYmxlZCB8fFxyXG4gICAgICB0aGlzLm1lZGlhU2VydmljZS5pc1RvdWNoU2NyZWVuKClcclxuICAgICkge1xyXG4gICAgICB0aGlzLmNsZWFyTGF5ZXIoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiB0aGlzLmxhc3RUaW1lb3V0UmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgLy8gY2FuY2VsIHRpbWVvdXQgd2hlbiB0aGUgbW91c2UgbW92ZXNcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubGFzdFRpbWVvdXRSZXF1ZXN0KTtcclxuICAgIH1cclxuICAgIGxldCBtYXhpbXVtWmluZGV4ID0gLUluZmluaXR5O1xyXG4gICAgbGV0IHRvcE1vc3RPbExheWVyO1xyXG4gICAgY29uc3QgcGl4ZWwgPSB0aGlzLm1hcC5vbC5nZXRQaXhlbEZyb21Db29yZGluYXRlKGV2ZW50LmNvb3JkaW5hdGUpO1xyXG4gICAgdGhpcy5sYXN0VGltZW91dFJlcXVlc3QgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgLy8gcmV0cmlldmUgdGhlIHRvcG1vc3QgbGF5ZXIgd2l0aCBmZWF0dXJlIHRvIG9ubHkgYXBwbHkgdGhlIGhvdmVyIG9uIHRoaXMgbGF5ZXIuXHJcbiAgICAgIHRoaXMubWFwLm9sLmZvckVhY2hGZWF0dXJlQXRQaXhlbChcclxuICAgICAgICBwaXhlbCxcclxuICAgICAgICAobWFwRmVhdHVyZTogUmVuZGVyRmVhdHVyZSB8IE9sRmVhdHVyZTxPbEdlb21ldHJ5PiwgbGF5ZXJPTDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoIWxheWVyT0wpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgaWdvTGF5ZXIgPSB0aGlzLm1hcC5nZXRMYXllckJ5T2xVSWQoKGxheWVyT0wgYXMgYW55KS5vbF91aWQpO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmNhblByb2Nlc3NIb3ZlcihpZ29MYXllciBhcyBhbnkpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChpZ29MYXllci56SW5kZXggPD0gbWF4aW11bVppbmRleCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBtYXhpbXVtWmluZGV4ID0gaWdvTGF5ZXIuekluZGV4O1xyXG4gICAgICAgICAgdG9wTW9zdE9sTGF5ZXIgPSBsYXllck9MO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGl0VG9sZXJhbmNlOiAxMCxcclxuICAgICAgICAgIGxheWVyRmlsdGVyOiAob2xMYXllcikgPT5cclxuICAgICAgICAgICAgb2xMYXllciBpbnN0YW5jZW9mIG9sTGF5ZXJWZWN0b3IgfHxcclxuICAgICAgICAgICAgb2xMYXllciBpbnN0YW5jZW9mIG9sTGF5ZXJWZWN0b3JUaWxlXHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgICBpZiAoIXRvcE1vc3RPbExheWVyKSB7XHJcbiAgICAgICAgLy8gVG8gY2xlYXIgbGFiZWxcclxuICAgICAgICB0aGlzLmNsZWFyTGF5ZXIoKTtcclxuICAgICAgICB0aGlzLnBvaW50ZXJIb3ZlckZlYXR1cmVTdG9yZS5jbGVhcigpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5tYXAub2wuZm9yRWFjaEZlYXR1cmVBdFBpeGVsKFxyXG4gICAgICAgIHBpeGVsLFxyXG4gICAgICAgIChtYXBGZWF0dXJlOiBSZW5kZXJGZWF0dXJlIHwgT2xGZWF0dXJlPE9sR2VvbWV0cnk+LCBsYXllck9MOiBhbnkpID0+IHtcclxuICAgICAgICAgIC8vIFRvIGF2b2lkIGZsYXNoaW5nIGZlYXR1cmVcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgbWFwRmVhdHVyZS5nZXQoJ2hvdmVyU3VtbWFyeScpID09PSB1bmRlZmluZWQgJiZcclxuICAgICAgICAgICAgbWFwRmVhdHVyZS5nZXRQcm9wZXJ0aWVzKCkgIT09XHJcbiAgICAgICAgICAgICAgdGhpcy5wb2ludGVySG92ZXJGZWF0dXJlU3RvcmUuYWxsKClbMF0/LmdldFByb3BlcnRpZXMoKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xlYXJMYXllcigpO1xyXG4gICAgICAgICAgICBsZXQgaWdvTGF5ZXI7XHJcbiAgICAgICAgICAgIGlmIChsYXllck9MIGluc3RhbmNlb2Ygb2xMYXllclZlY3Rvcikge1xyXG4gICAgICAgICAgICAgIGNvbnN0IG15TGF5ZXJWZWN0b3IgPSB0aGlzLm1hcC5nZXRMYXllckJ5T2xVSWQoXHJcbiAgICAgICAgICAgICAgICAobGF5ZXJPTCBhcyBhbnkpLm9sX3VpZFxyXG4gICAgICAgICAgICAgICkgYXMgVmVjdG9yTGF5ZXI7XHJcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLmNhblByb2Nlc3NIb3ZlcihteUxheWVyVmVjdG9yKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBsZXQgbG9jYWxPbEZlYXR1cmUgPSB0aGlzLmhhbmRsZVJlbmRlckZlYXR1cmUobWFwRmVhdHVyZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRMYXllclN0eWxlRnJvbU9wdGlvbnMobXlMYXllclZlY3RvciwgbG9jYWxPbEZlYXR1cmUpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGZlYXR1cmVzVG9Mb2FkID0gW2xvY2FsT2xGZWF0dXJlXTtcclxuICAgICAgICAgICAgICBsb2NhbE9sRmVhdHVyZS5zZXQoJ19pc0xhYmVsJywgZmFsc2UpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IG15TGFiZWxPbEZlYXR1cmUgPSBuZXcgT2xGZWF0dXJlKCk7XHJcbiAgICAgICAgICAgICAgbXlMYWJlbE9sRmVhdHVyZS5zZXRQcm9wZXJ0aWVzKGxvY2FsT2xGZWF0dXJlLmdldFByb3BlcnRpZXMoKSk7XHJcbiAgICAgICAgICAgICAgY29uc3QgbGFiZWxHZW9tID1cclxuICAgICAgICAgICAgICAgIGxvY2FsT2xGZWF0dXJlLmdldEdlb21ldHJ5KCkuZ2V0VHlwZSgpID09PSAnUG9pbnQnXHJcbiAgICAgICAgICAgICAgICAgID8gbG9jYWxPbEZlYXR1cmUuZ2V0R2VvbWV0cnkoKVxyXG4gICAgICAgICAgICAgICAgICA6IG5ldyBPbEdlb20uUG9pbnQoZXZlbnQuY29vcmRpbmF0ZSk7XHJcbiAgICAgICAgICAgICAgbXlMYWJlbE9sRmVhdHVyZS5zZXRHZW9tZXRyeShsYWJlbEdlb20pO1xyXG4gICAgICAgICAgICAgIG15TGFiZWxPbEZlYXR1cmUuc2V0SWQobG9jYWxPbEZlYXR1cmUuZ2V0SWQoKSk7XHJcbiAgICAgICAgICAgICAgbXlMYWJlbE9sRmVhdHVyZS5zZXQoJ19pc0xhYmVsJywgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRMYXllclN0eWxlRnJvbU9wdGlvbnMobXlMYXllclZlY3RvciwgbXlMYWJlbE9sRmVhdHVyZSk7XHJcbiAgICAgICAgICAgICAgZmVhdHVyZXNUb0xvYWQucHVzaChteUxhYmVsT2xGZWF0dXJlKTtcclxuICAgICAgICAgICAgICB0aGlzLnBvaW50ZXJIb3ZlckZlYXR1cmVTdG9yZS5sb2FkKGZlYXR1cmVzVG9Mb2FkKTtcclxuICAgICAgICAgICAgICBpZ29MYXllciA9IG15TGF5ZXJWZWN0b3I7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGxheWVyT0wgaW5zdGFuY2VvZiBvbExheWVyVmVjdG9yVGlsZSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IG15TGF5ZXJWZWN0b3JUaWxlID0gdGhpcy5tYXAuZ2V0TGF5ZXJCeU9sVUlkKFxyXG4gICAgICAgICAgICAgICAgKGxheWVyT0wgYXMgYW55KS5vbF91aWRcclxuICAgICAgICAgICAgICApIGFzIFZlY3RvclRpbGVMYXllcjtcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMuY2FuUHJvY2Vzc0hvdmVyKG15TGF5ZXJWZWN0b3JUaWxlKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBteUxheWVyVmVjdG9yVGlsZT8ub3B0aW9ucz8uaWdvU3R5bGU/LnN0eWxlQnlBdHRyaWJ1dGVcclxuICAgICAgICAgICAgICAgICAgPy5ob3ZlclN0eWxlXHJcbiAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm12dFN0eWxlT3B0aW9ucyA9XHJcbiAgICAgICAgICAgICAgICAgIG15TGF5ZXJWZWN0b3JUaWxlLm9wdGlvbnMuaWdvU3R5bGUuc3R5bGVCeUF0dHJpYnV0ZS5ob3ZlclN0eWxlO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAobXlMYXllclZlY3RvclRpbGU/Lm9wdGlvbnM/Lmlnb1N0eWxlPy5ob3ZlclN0eWxlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm12dFN0eWxlT3B0aW9ucyA9XHJcbiAgICAgICAgICAgICAgICAgIG15TGF5ZXJWZWN0b3JUaWxlLm9wdGlvbnMuaWdvU3R5bGUuaG92ZXJTdHlsZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25MYXllci5zZXRTb3VyY2UobGF5ZXJPTC5nZXRTb3VyY2UoKSk7XHJcbiAgICAgICAgICAgICAgbGF5ZXJPTFxyXG4gICAgICAgICAgICAgICAgLmdldEZlYXR1cmVzKGV2ZW50LnBpeGVsKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgIChtdnRGZWF0dXJlczogKFJlbmRlckZlYXR1cmUgfCBPbEZlYXR1cmU8T2xHZW9tZXRyeT4pW10pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIW12dEZlYXR1cmVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25NVlQgPSB7fTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTGF5ZXIuY2hhbmdlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhckxheWVyKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZlYXR1cmUgPSBtdnRGZWF0dXJlc1swXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWZlYXR1cmUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJMYXllcigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBsZXQgbG9jYWxPbEZlYXR1cmUgPSB0aGlzLmhhbmRsZVJlbmRlckZlYXR1cmUoZmVhdHVyZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxPbEZlYXR1cmUuc2V0KCdfaXNMYWJlbCcsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBteUxhYmVsT2xGZWF0dXJlID0gbmV3IE9sRmVhdHVyZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIG15TGFiZWxPbEZlYXR1cmUuc2V0UHJvcGVydGllcyhcclxuICAgICAgICAgICAgICAgICAgICAgIGxvY2FsT2xGZWF0dXJlLmdldFByb3BlcnRpZXMoKVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFiZWxHZW9tID1cclxuICAgICAgICAgICAgICAgICAgICAgIGxvY2FsT2xGZWF0dXJlLmdldEdlb21ldHJ5KCkuZ2V0VHlwZSgpID09PSAnUG9pbnQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gbG9jYWxPbEZlYXR1cmUuZ2V0R2VvbWV0cnkoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG5ldyBPbEdlb20uUG9pbnQoZXZlbnQuY29vcmRpbmF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbXlMYWJlbE9sRmVhdHVyZS5zZXRHZW9tZXRyeShsYWJlbEdlb20pO1xyXG4gICAgICAgICAgICAgICAgICAgIG15TGFiZWxPbEZlYXR1cmUuc2V0SWQobG9jYWxPbEZlYXR1cmUuZ2V0SWQoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbXlMYWJlbE9sRmVhdHVyZS5zZXQoJ19pc0xhYmVsJywgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMYXllclN0eWxlRnJvbU9wdGlvbnMoXHJcbiAgICAgICAgICAgICAgICAgICAgICBteUxheWVyVmVjdG9yVGlsZSxcclxuICAgICAgICAgICAgICAgICAgICAgIG15TGFiZWxPbEZlYXR1cmVcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9pbnRlckhvdmVyRmVhdHVyZVN0b3JlLmxvYWQoW215TGFiZWxPbEZlYXR1cmVdKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1WVFtmZWF0dXJlLmdldElkKCldID0gbG9jYWxPbEZlYXR1cmU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25MYXllci5jaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgaWdvTGF5ZXIgPSBteUxheWVyVmVjdG9yVGlsZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGl0VG9sZXJhbmNlOiAxMCxcclxuICAgICAgICAgIGxheWVyRmlsdGVyOiAob2xMYXllcikgPT4gb2xMYXllciA9PT0gdG9wTW9zdE9sTGF5ZXJcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9LCB0aGlzLmlnb0hvdmVyRmVhdHVyZURlbGF5KTtcclxuICB9XHJcblxyXG4gIGNhblByb2Nlc3NIb3ZlcihpZ29MYXllcjogVmVjdG9yTGF5ZXIgfCBWZWN0b3JUaWxlTGF5ZXIpOiBib29sZWFuIHtcclxuICAgIGlmICghaWdvTGF5ZXIpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpZ29MYXllci52aXNpYmxlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmICghaWdvTGF5ZXIub3B0aW9ucykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICAhaWdvTGF5ZXIub3B0aW9ucy5pZ29TdHlsZT8uc3R5bGVCeUF0dHJpYnV0ZSAmJlxyXG4gICAgICAhaWdvTGF5ZXIub3B0aW9ucy5pZ29TdHlsZT8uaG92ZXJTdHlsZVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIGlnb0xheWVyLm9wdGlvbnMuaWdvU3R5bGU/LnN0eWxlQnlBdHRyaWJ1dGUgJiZcclxuICAgICAgIWlnb0xheWVyLm9wdGlvbnMuaWdvU3R5bGU/LnN0eWxlQnlBdHRyaWJ1dGUuaG92ZXJTdHlsZSAmJlxyXG4gICAgICAhaWdvTGF5ZXIub3B0aW9ucy5pZ29TdHlsZT8uaG92ZXJTdHlsZVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlUmVuZGVyRmVhdHVyZShcclxuICAgIGZlYXR1cmU6IFJlbmRlckZlYXR1cmUgfCBPbEZlYXR1cmU8T2xHZW9tZXRyeT5cclxuICApOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT4ge1xyXG4gICAgbGV0IGxvY2FsRmVhdHVyZTogT2xGZWF0dXJlPE9sR2VvbWV0cnk+O1xyXG4gICAgaWYgKGZlYXR1cmUgaW5zdGFuY2VvZiBSZW5kZXJGZWF0dXJlKSB7XHJcbiAgICAgIGxvY2FsRmVhdHVyZSA9IG5ldyBPbEZlYXR1cmUoe1xyXG4gICAgICAgIGdlb21ldHJ5OiB0aGlzLmdldEdlb21ldHJ5KGZlYXR1cmUpXHJcbiAgICAgIH0pO1xyXG4gICAgICBsb2NhbEZlYXR1cmUuc2V0SWQoZmVhdHVyZS5nZXRJZCgpKTtcclxuICAgIH0gZWxzZSBpZiAoZmVhdHVyZSBpbnN0YW5jZW9mIE9sRmVhdHVyZSkge1xyXG4gICAgICBsb2NhbEZlYXR1cmUgPSBmZWF0dXJlO1xyXG4gICAgfVxyXG4gICAgbG9jYWxGZWF0dXJlLnNldFByb3BlcnRpZXMoZmVhdHVyZS5nZXRQcm9wZXJ0aWVzKCkpO1xyXG4gICAgcmV0dXJuIGxvY2FsRmVhdHVyZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBhIGZlYXR1cmUgdG8gdGhlIHBvaW50ZXIgc3RvcmVcclxuICAgKiBAcGFyYW0gdGV4dCBzdHJpbmdcclxuICAgKi9cclxuICBwcml2YXRlIGFkZEZlYXR1cmVPdmVybGF5KGhvdmVyRW50aXR5OiBPbEZlYXR1cmU8T2xHZW9tZXRyeT5bXSkge1xyXG4gICAgaWYgKGhvdmVyRW50aXR5Lmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gaG92ZXJFbnRpdHlbMF07XHJcbiAgICAgIHRoaXMuY2xlYXJMYXllcigpO1xyXG4gICAgICBjb25zdCBmZWF0dXJlID0gbmV3IE9sRmVhdHVyZSh7XHJcbiAgICAgICAgZ2VvbWV0cnk6IHJlc3VsdC5nZXRHZW9tZXRyeSgpLFxyXG4gICAgICAgIG1ldGE6IHsgaWQ6IHRoaXMuaG92ZXJGZWF0dXJlSWQgfSxcclxuICAgICAgICBob3ZlclN1bW1hcnk6IHRoaXMuZ2V0SG92ZXJTdW1tYXJ5KHJlc3VsdC5nZXRQcm9wZXJ0aWVzKCkpXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5zdG9yZS5zZXRMYXllck9sRmVhdHVyZXMoW2ZlYXR1cmVdLCBGZWF0dXJlTW90aW9uLk5vbmUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRMYXllclN0eWxlRnJvbU9wdGlvbnMoXHJcbiAgICBpZ29MYXllcjogVmVjdG9yTGF5ZXIgfCBWZWN0b3JUaWxlTGF5ZXIsXHJcbiAgICBmZWF0dXJlOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT5cclxuICApIHtcclxuICAgIGNvbnN0IHJlc29sdXRpb24gPSB0aGlzLnN0b3JlLmxheWVyLm1hcC52aWV3Q29udHJvbGxlci5nZXRSZXNvbHV0aW9uKCk7XHJcbiAgICBpZiAoaWdvTGF5ZXI/Lm9wdGlvbnM/Lmlnb1N0eWxlPy5zdHlsZUJ5QXR0cmlidXRlPy5ob3ZlclN0eWxlKSB7XHJcbiAgICAgIHRoaXMuc3RvcmUubGF5ZXIub2wuc2V0U3R5bGUoXHJcbiAgICAgICAgdGhpcy5jcmVhdGVIb3ZlclN0eWxlKFxyXG4gICAgICAgICAgZmVhdHVyZSxcclxuICAgICAgICAgIGlnb0xheWVyLm9wdGlvbnMuaWdvU3R5bGUuc3R5bGVCeUF0dHJpYnV0ZS5ob3ZlclN0eWxlLFxyXG4gICAgICAgICAgcmVzb2x1dGlvblxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGlnb0xheWVyPy5vcHRpb25zPy5pZ29TdHlsZT8uaG92ZXJTdHlsZSkge1xyXG4gICAgICB0aGlzLnN0b3JlLmxheWVyLm9sLnNldFN0eWxlKFxyXG4gICAgICAgIHRoaXMuY3JlYXRlSG92ZXJTdHlsZShcclxuICAgICAgICAgIGZlYXR1cmUsXHJcbiAgICAgICAgICBpZ29MYXllci5vcHRpb25zLmlnb1N0eWxlLmhvdmVyU3R5bGUsXHJcbiAgICAgICAgICByZXNvbHV0aW9uXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRIb3ZlclN1bW1hcnkocHJvcGVydGllcyk6IHN0cmluZyB7XHJcbiAgICBsZXQgc3VtbWFyeSA9ICcnO1xyXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocHJvcGVydGllcykpIHtcclxuICAgICAgaWYgKCFrZXkuc3RhcnRzV2l0aCgnXycpICYmIGtleSAhPT0gJ2dlb21ldHJ5Jykge1xyXG4gICAgICAgIHN1bW1hcnkgKz0gYCR7a2V5fTogJHt2YWx1ZX1gICsgJ1xcbic7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzdW1tYXJ5Lmxlbmd0aCA+PSAyID8gc3VtbWFyeS5zbGljZSgwLCAtMikgOiBzdW1tYXJ5O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRHZW9tZXRyeShmZWF0dXJlKTogT2xHZW9tLkdlb21ldHJ5IHtcclxuICAgIGxldCBnZW9tO1xyXG4gICAgaWYgKCFmZWF0dXJlLmdldE9yaWVudGVkRmxhdENvb3JkaW5hdGVzKSB7XHJcbiAgICAgIGdlb20gPSBmZWF0dXJlLmdldEdlb21ldHJ5KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBjb29yZHMgPSBmZWF0dXJlLmdldE9yaWVudGVkRmxhdENvb3JkaW5hdGVzKCk7XHJcbiAgICAgIGNvbnN0IGZsYXRDb29yZHMgPSBbXTtcclxuXHJcbiAgICAgIGNvb3Jkcy5mb3JFYWNoKChjLCBpZHgpID0+IHtcclxuICAgICAgICBpZiAoaWR4ICUgMiA9PT0gMCkge1xyXG4gICAgICAgICAgZmxhdENvb3Jkcy5wdXNoKFtcclxuICAgICAgICAgICAgcGFyc2VGbG9hdChjb29yZHNbaWR4XSksXHJcbiAgICAgICAgICAgIHBhcnNlRmxvYXQoY29vcmRzW2lkeCArIDFdKVxyXG4gICAgICAgICAgXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8vIFRPRE86IHRlc3QgTXVsdGlYXHJcbiAgICAgIHN3aXRjaCAoZmVhdHVyZS5nZXRUeXBlKCkpIHtcclxuICAgICAgICBjYXNlICdQb2ludCc6XHJcbiAgICAgICAgICBnZW9tID0gbmV3IE9sR2VvbS5Qb2ludChmbGF0Q29vcmRzKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ1BvbHlnb24nOlxyXG4gICAgICAgICAgZ2VvbSA9IG5ldyBPbEdlb20uUG9seWdvbihbZmxhdENvb3Jkc10pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnTGluZVN0cmluZyc6XHJcbiAgICAgICAgICBnZW9tID0gbmV3IE9sR2VvbS5MaW5lU3RyaW5nKFtmbGF0Q29vcmRzXSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBnZW9tO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgdGhlIHBvaW50ZXIgc3RvcmUgZmVhdHVyZXNcclxuICAgKi9cclxuICBwcml2YXRlIGNsZWFyTGF5ZXIoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGlvbk1WVCA9IHt9O1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTGF5ZXIpIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb25MYXllci5jaGFuZ2VkKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zdG9yZSkge1xyXG4gICAgICB0aGlzLnN0b3JlLmNsZWFyTGF5ZXIoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
492
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG92ZXItZmVhdHVyZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL2hvdmVyLWZlYXR1cmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU1QyxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFFbkMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUVsQyxPQUFPLGFBQWEsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLGlCQUFpQixNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sYUFBYSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sa0JBQWtCLE1BQU0sc0JBQXNCLENBQUM7QUFHdEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFTLFdBQVcsRUFBbUIsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRixPQUFPLEVBQUUsbUJB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RkExQkUsb0JBQW9CO3NCQUE1QixLQUFLO2dCQUtHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFHTixRQUFRO3NCQURQLFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFNlbGZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEVudGl0eVN0b3JlIH0gZnJvbSAnQGlnbzIvY29tbW9uJztcclxuaW1wb3J0IHsgTWVkaWFTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9tZWRpYSc7XHJcbmltcG9ydCB7IFN1YmplY3RTdGF0dXMgfSBmcm9tICdAaWdvMi91dGlscyc7XHJcblxyXG5pbXBvcnQgT2xGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xyXG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT2xNYXBCcm93c2VyRXZlbnQgfSBmcm9tICdvbC9NYXBCcm93c2VyRXZlbnQnO1xyXG5pbXBvcnQgeyB1bkJ5S2V5IH0gZnJvbSAnb2wvT2JzZXJ2YWJsZSc7XHJcbmltcG9ydCAqIGFzIE9sR2VvbSBmcm9tICdvbC9nZW9tJztcclxuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE9sR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcclxuaW1wb3J0IG9sTGF5ZXJWZWN0b3IgZnJvbSAnb2wvbGF5ZXIvVmVjdG9yJztcclxuaW1wb3J0IG9sTGF5ZXJWZWN0b3JUaWxlIGZyb20gJ29sL2xheWVyL1ZlY3RvclRpbGUnO1xyXG5pbXBvcnQgUmVuZGVyRmVhdHVyZSBmcm9tICdvbC9yZW5kZXIvRmVhdHVyZSc7XHJcbmltcG9ydCBvbFZlY3RvclRpbGVTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3RvclRpbGUnO1xyXG5cclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgRmVhdHVyZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy9mZWF0dXJlLWRhdGFzb3VyY2UnO1xyXG5pbXBvcnQgeyB0cnlCaW5kU3RvcmVMYXllciB9IGZyb20gJy4uLy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUtc3RvcmUudXRpbHMnO1xyXG5pbXBvcnQgeyBGZWF0dXJlTW90aW9uIH0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5lbnVtcyc7XHJcbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tICcuLi8uLi9mZWF0dXJlL3NoYXJlZC9mZWF0dXJlLmludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBGZWF0dXJlU3RvcmUgfSBmcm9tICcuLi8uLi9mZWF0dXJlL3NoYXJlZC9zdG9yZSc7XHJcbmltcG9ydCB7IExheWVyLCBWZWN0b3JMYXllciwgVmVjdG9yVGlsZUxheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycyc7XHJcbmltcG9ydCB7IE1hcEJyb3dzZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tYXAvbWFwLWJyb3dzZXIvbWFwLWJyb3dzZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9tYXAnO1xyXG5pbXBvcnQgeyBob3ZlckZlYXR1cmVNYXJrZXJTdHlsZSB9IGZyb20gJy4uLy4uL3N0eWxlL3NoYXJlZC9mZWF0dXJlL2ZlYXR1cmUtc3R5bGUnO1xyXG5pbXBvcnQgeyBTdHlsZUJ5QXR0cmlidXRlIH0gZnJvbSAnLi4vLi4vc3R5bGUvc2hhcmVkL3ZlY3Rvci92ZWN0b3Itc3R5bGUuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgU3R5bGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc3R5bGUvc3R5bGUtc2VydmljZS9zdHlsZS5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBUaGlzIGRpcmVjdGl2ZSBtYWtlcyB0aGUgbW91c2UgY29vcmRpbmF0ZSB0cmlnZ2VyIGEgcmV2ZXJzZSBzZWFyY2ggb24gYXZhaWxhYmxlIHNlYXJjaCBzb3VyY2VzLlxyXG4gKiBUaGUgc2VhcmNoIHJlc3VsdHMgYXJlIHBsYWNlZCBpbnRvIGEgbGFiZWwsIG9uIGEgY3Jvc3MgaWNvbiwgcmVwcmVzZW50aW5nIHRoZSBtb3VzZSBjb29yZGluYXRlLlxyXG4gKiBCeSBkZWZhdWx0LCBubyBzZWFyY2ggc291cmNlcy4gQ29uZmlnIGluIGNvbmZpZyBmaWxlIG11c3QgYmUgZGVmaW5lZC5cclxuICogdGhlIGxheWVyIGxldmVsLlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbaWdvSG92ZXJGZWF0dXJlXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSG92ZXJGZWF0dXJlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHB1YmxpYyBzdG9yZTogRmVhdHVyZVN0b3JlPEZlYXR1cmU+O1xyXG4gIHByaXZhdGUgcG9pbnRlckhvdmVyRmVhdHVyZVN0b3JlOiBFbnRpdHlTdG9yZTxPbEZlYXR1cmU8T2xHZW9tZXRyeT4+ID1cclxuICAgIG5ldyBFbnRpdHlTdG9yZTxPbEZlYXR1cmU8T2xHZW9tZXRyeT4+KFtdKTtcclxuICBwcml2YXRlIGxhc3RUaW1lb3V0UmVxdWVzdDtcclxuICBwcml2YXRlIHN0b3JlJCQ6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIGxheWVycyQkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIHByaXZhdGUgc2VsZWN0aW9uTGF5ZXI6IG9sTGF5ZXJWZWN0b3JUaWxlO1xyXG4gIHByaXZhdGUgc2VsZWN0aW9uTVZUID0ge307XHJcbiAgcHJpdmF0ZSBtdnRTdHlsZU9wdGlvbnM6IFN0eWxlQnlBdHRyaWJ1dGU7XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3RlbmVyIHRvIHRoZSBwb2ludGVyIG1vdmUgZXZlbnRcclxuICAgKi9cclxuICBwcml2YXRlIHBvaW50ZXJNb3ZlTGlzdGVuZXI7XHJcblxyXG4gIHByaXZhdGUgc2luZ2xlQ2xpY2tNYXBMaXN0ZW5lcjtcclxuXHJcbiAgcHJpdmF0ZSBob3ZlckZlYXR1cmVJZDogc3RyaW5nID0gJ2hvdmVyRmVhdHVyZUlkJztcclxuICAvKipcclxuICAgKiBUaGUgZGVsYXkgd2hlcmUgdGhlIG1vdXNlIG11c3QgYmUgbW90aW9ubGVzcyBiZWZvcmUgdHJpZ2dlciB0aGUgcmV2ZXJzZSBzZWFyY2hcclxuICAgKi9cclxuICBASW5wdXQoKSBpZ29Ib3ZlckZlYXR1cmVEZWxheTogbnVtYmVyID0gMTAwMDtcclxuXHJcbiAgLyoqXHJcbiAgICogSWYgdGhlIHVzZXIgaGFzIGVuYWJsZWQgb3Igbm90IHRoZSBkaXJlY3RpdmVcclxuICAgKi9cclxuICBASW5wdXQoKSBpZ29Ib3ZlckZlYXR1cmVFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlb3V0JylcclxuICBtb3VzZW91dCgpIHtcclxuICAgIGNsZWFyVGltZW91dCh0aGlzLmxhc3RUaW1lb3V0UmVxdWVzdCk7XHJcbiAgICB0aGlzLmNsZWFyTGF5ZXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElHTyBtYXBcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBnZXQgbWFwKCk6IElnb01hcCB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnQubWFwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1hcFByb2plY3Rpb24oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAodGhpcy5jb21wb25lbnQubWFwIGFzIElnb01hcCkucHJvamVjdGlvbjtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQFNlbGYoKSBwcml2YXRlIGNvbXBvbmVudDogTWFwQnJvd3NlckNvbXBvbmVudCxcclxuICAgIHByaXZhdGUgbWVkaWFTZXJ2aWNlOiBNZWRpYVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN0eWxlU2VydmljZTogU3R5bGVTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBTdGFydCBsaXN0ZW5pbmcgdG8gcG9pbnRlcm1vdmUgYW5kIHJldmVyc2Ugc2VhcmNoIHJlc3VsdHMuXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLm1hcC5zdGF0dXMkXHJcbiAgICAgIC5waXBlKGZpcnN0KChzdGF0dXMpID0+IHN0YXR1cyA9PT0gU3ViamVjdFN0YXR1cy5Eb25lKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zdG9yZSA9IG5ldyBGZWF0dXJlU3RvcmU8RmVhdHVyZT4oW10sIHsgbWFwOiB0aGlzLm1hcCB9KTtcclxuICAgICAgICB0aGlzLmluaXRTdG9yZSgpO1xyXG4gICAgICAgIHRoaXMubGlzdGVuVG9NYXBQb2ludGVyTW92ZSgpO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlVG9Qb2ludGVyU3RvcmUoKTtcclxuICAgICAgICB0aGlzLmxpc3RlblRvTWFwQ2xpY2soKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgLy8gVG8gaGFuZGxlIGNvbnRleHQgY2hhbmdlIHdpdGhvdXQgdXNpbmcgdGhlIGNvbnRleHRTZXJ2aWNlLlxyXG4gICAgdGhpcy5sYXllcnMkJCA9IHRoaXMubWFwLmxheWVycyQuc3Vic2NyaWJlKChsYXllcnM6IExheWVyW10pID0+IHtcclxuICAgICAgaWYgKHRoaXMuc3RvcmUgJiYgIWxheWVycy5maW5kKChsKSA9PiBsLmlkID09PSAnaG92ZXJGZWF0dXJlSWQnKSkge1xyXG4gICAgICAgIHRoaXMuaW5pdFN0b3JlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSB0aGUgcG9pbnRlciBwb3NpdGlvbiBzdG9yZVxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgaW5pdFN0b3JlKCkge1xyXG4gICAgY29uc3Qgc3RvcmUgPSB0aGlzLnN0b3JlO1xyXG5cclxuICAgIGNvbnN0IGxheWVyID0gbmV3IFZlY3RvckxheWVyKHtcclxuICAgICAgaXNJZ29JbnRlcm5hbExheWVyOiB0cnVlLFxyXG4gICAgICBpZDogJ2hvdmVyRmVhdHVyZUlkJyxcclxuICAgICAgdGl0bGU6ICdob3ZlckZlYXR1cmUnLFxyXG4gICAgICB6SW5kZXg6IDkwMCxcclxuICAgICAgc291cmNlOiBuZXcgRmVhdHVyZURhdGFTb3VyY2UoKSxcclxuICAgICAgc2hvd0luTGF5ZXJMaXN0OiBmYWxzZSxcclxuICAgICAgZXhwb3J0YWJsZTogZmFsc2UsXHJcbiAgICAgIGJyb3dzYWJsZTogZmFsc2UsXHJcbiAgICAgIHN0eWxlOiBob3ZlckZlYXR1cmVNYXJrZXJTdHlsZVxyXG4gICAgfSk7XHJcbiAgICB0cnlCaW5kU3RvcmVMYXllcihzdG9yZSwgbGF5ZXIpO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0aW9uTGF5ZXIgPSBuZXcgb2xMYXllclZlY3RvclRpbGUoe1xyXG4gICAgICBtYXA6IHRoaXMubWFwLm9sLFxyXG4gICAgICB6SW5kZXg6IDkwMSxcclxuICAgICAgcmVuZGVyTW9kZTogJ3ZlY3RvcicsXHJcbiAgICAgIGRlY2x1dHRlcjogdHJ1ZSxcclxuICAgICAgc291cmNlOiBuZXcgb2xWZWN0b3JUaWxlU291cmNlKHsgcHJvamVjdGlvbjogdGhpcy5tYXAucHJvamVjdGlvbiB9KSxcclxuICAgICAgc3R5bGU6IChmZWF0dXJlLCByZXNvbHV0aW9uKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMubXZ0U3R5bGVPcHRpb25zICYmIGZlYXR1cmUuZ2V0SWQoKSBpbiB0aGlzLnNlbGVjdGlvbk1WVCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlSG92ZXJTdHlsZShcclxuICAgICAgICAgICAgZmVhdHVyZSxcclxuICAgICAgICAgICAgdGhpcy5tdnRTdHlsZU9wdGlvbnMsXHJcbiAgICAgICAgICAgIHJlc29sdXRpb25cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUhvdmVyU3R5bGUoXHJcbiAgICBmZWF0dXJlOiBSZW5kZXJGZWF0dXJlIHwgT2xGZWF0dXJlPE9sR2VvbWV0cnk+LFxyXG4gICAgaG92ZXJTdHlsZTogU3R5bGVCeUF0dHJpYnV0ZSxcclxuICAgIHJlc29sdXRpb246IG51bWJlclxyXG4gICkge1xyXG4gICAgY29uc3QgbG9jYWxIb3ZlclN0eWxlID0geyAuLi5ob3ZlclN0eWxlIH07XHJcbiAgICBsZXQgbGFiZWwgPSBob3ZlclN0eWxlLmxhYmVsID8gaG92ZXJTdHlsZS5sYWJlbC5hdHRyaWJ1dGUgOiB1bmRlZmluZWQ7XHJcbiAgICBsZXQgaGFzTGFiZWxTdHlsZSA9IGhvdmVyU3R5bGUubGFiZWw/LnN0eWxlID8gdHJ1ZSA6IGZhbHNlO1xyXG5cclxuICAgIGlmICghZmVhdHVyZS5nZXQoJ19pc0xhYmVsJykpIHtcclxuICAgICAgbG9jYWxIb3ZlclN0eWxlLmxhYmVsID0gdW5kZWZpbmVkO1xyXG4gICAgICBoYXNMYWJlbFN0eWxlID0gZmFsc2U7XHJcbiAgICAgIGxhYmVsID0gdW5kZWZpbmVkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gY2xlYXIgdGhlIHN0eWxlIGZvciBsYWJlbC4uLi5cclxuICAgICAgY29uc3Qgc2l6ZSA9IGxvY2FsSG92ZXJTdHlsZS5kYXRhID8gbG9jYWxIb3ZlclN0eWxlLmRhdGEubGVuZ3RoIDogMDtcclxuICAgICAgY29uc3QgcmFkaXVzID0gW107XHJcbiAgICAgIGNvbnN0IHN0cm9rZSA9IFtdO1xyXG4gICAgICBjb25zdCB3aWR0aCA9IFtdO1xyXG4gICAgICBjb25zdCBmaWxsID0gW107XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XHJcbiAgICAgICAgcmFkaXVzLnB1c2goMCk7XHJcbiAgICAgICAgc3Ryb2tlLnB1c2goJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMCknKTtcclxuICAgICAgICB3aWR0aC5wdXNoKDApO1xyXG4gICAgICAgIGZpbGwucHVzaCgncmdiYSgyNTUsIDI1NSwgMjU1LCAwKScpO1xyXG4gICAgICB9XHJcbiAgICAgIGxvY2FsSG92ZXJTdHlsZS5yYWRpdXMgPSByYWRpdXM7XHJcbiAgICAgIGxvY2FsSG92ZXJTdHlsZS5zdHJva2UgPSBzdHJva2U7XHJcbiAgICAgIGxvY2FsSG92ZXJTdHlsZS53aWR0aCA9IHdpZHRoO1xyXG4gICAgICBsb2NhbEhvdmVyU3R5bGUuZmlsbCA9IGZpbGw7XHJcbiAgICB9XHJcbiAgICBpZiAoIWhhc0xhYmVsU3R5bGUgJiYgbGFiZWwpIHtcclxuICAgICAgbG9jYWxIb3ZlclN0eWxlLmxhYmVsLnN0eWxlID0ge1xyXG4gICAgICAgIHRleHRBbGlnbjogJ2xlZnQnLFxyXG4gICAgICAgIHRleHRCYXNlbGluZTogJ3RvcCcsXHJcbiAgICAgICAgZm9udDogJzEycHggQ2FsaWJyaSxzYW5zLXNlcmlmJyxcclxuICAgICAgICBmaWxsOiB7IGNvbG9yOiAnIzAwMCcgfSxcclxuICAgICAgICBiYWNrZ3JvdW5kRmlsbDogeyBjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC41KScgfSxcclxuICAgICAgICBiYWNrZ3JvdW5kU3Ryb2tlOiB7IGNvbG9yOiAncmdiYSgyMDAsIDIwMCwgMjAwLCAwLjc1KScsIHdpZHRoOiAyIH0sXHJcbiAgICAgICAgc3Ryb2tlOiB7IGNvbG9yOiAnI2ZmZicsIHdpZHRoOiAzIH0sXHJcbiAgICAgICAgb3ZlcmZsb3c6IHRydWUsXHJcbiAgICAgICAgb2Zmc2V0WDogMTAsXHJcbiAgICAgICAgb2Zmc2V0WTogMjAsXHJcbiAgICAgICAgcGFkZGluZzogWzIuNSwgMi41LCAyLjUsIDIuNV1cclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnN0eWxlU2VydmljZS5jcmVhdGVTdHlsZUJ5QXR0cmlidXRlKFxyXG4gICAgICBmZWF0dXJlLFxyXG4gICAgICBsb2NhbEhvdmVyU3R5bGUsXHJcbiAgICAgIHJlc29sdXRpb25cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdG9wIGxpc3RlbmluZyB0byBwb2ludGVybW92ZSBhbmQgcmV2ZXJzZSBzZWFyY2ggcmVzdWx0cy5cclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMudW5saXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCk7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlVG9Qb2ludGVyU3RvcmUoKTtcclxuICAgIHRoaXMudW5saXN0ZW5Ub01hcFNpbmdsZUNsaWNrKCk7XHJcbiAgICB0aGlzLmxheWVycyQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdWJzY3JpYmUgdG8gcG9pbnRlcm1vdmUgcmVzdWx0IHN0b3JlXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgc3Vic2NyaWJlVG9Qb2ludGVyU3RvcmUoKSB7XHJcbiAgICB0aGlzLnN0b3JlJCQgPSB0aGlzLnBvaW50ZXJIb3ZlckZlYXR1cmVTdG9yZS5lbnRpdGllcyQuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzdWx0c1VuZGVyUG9pbnRlclBvc2l0aW9uKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hZGRGZWF0dXJlT3ZlcmxheShyZXN1bHRzVW5kZXJQb2ludGVyUG9zaXRpb24pO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT24gbWFwIHBvaW50ZXJtb3ZlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsaXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCkge1xyXG4gICAgdGhpcy5wb2ludGVyTW92ZUxpc3RlbmVyID0gdGhpcy5tYXAub2wub24oXHJcbiAgICAgICdwb2ludGVybW92ZScsXHJcbiAgICAgIChldmVudDogT2xNYXBCcm93c2VyRXZlbnQ8YW55PikgPT4gdGhpcy5vbk1hcEV2ZW50KGV2ZW50KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIG1hcCBzaW5nbGVjbGlja1xyXG4gICAqL1xyXG4gIHByaXZhdGUgbGlzdGVuVG9NYXBDbGljaygpIHtcclxuICAgIHRoaXMuc2luZ2xlQ2xpY2tNYXBMaXN0ZW5lciA9IHRoaXMubWFwLm9sLm9uKFxyXG4gICAgICAnc2luZ2xlY2xpY2snLFxyXG4gICAgICAoZXZlbnQ6IE9sTWFwQnJvd3NlckV2ZW50PGFueT4pID0+IHRoaXMub25NYXBTaW5nbGVDbGlja0V2ZW50KGV2ZW50KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVuc3Vic2NyaWJlIHRvIHBvaW50ZXIgc3RvcmUuXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgdW5zdWJzY3JpYmVUb1BvaW50ZXJTdG9yZSgpIHtcclxuICAgIHRoaXMuc3RvcmUkJC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RvcCBsaXN0ZW5pbmcgZm9yIG1hcCBwb2ludGVybW92ZVxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdW5saXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCkge1xyXG4gICAgdW5CeUtleSh0aGlzLnBvaW50ZXJNb3ZlTGlzdGVuZXIpO1xyXG4gICAgdGhpcy5wb2ludGVyTW92ZUxpc3RlbmVyID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RvcCBsaXN0ZW5pbmcgZm9yIG1hcCBzaW5nbGVjbGlja1xyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdW5saXN0ZW5Ub01hcFNpbmdsZUNsaWNrKCkge1xyXG4gICAgdW5CeUtleSh0aGlzLnNpbmdsZUNsaWNrTWFwTGlzdGVuZXIpO1xyXG4gICAgdGhpcy5zaW5nbGVDbGlja01hcExpc3RlbmVyID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJpZ2dlciBjbGVhciBsYXllciBvbiBzaW5nbGVjbGljay5cclxuICAgKiBAcGFyYW0gZXZlbnQgT0wgbWFwIGJyb3dzZXIgc2luZ2xlY2xpY2sgZXZlbnRcclxuICAgKi9cclxuICBwcml2YXRlIG9uTWFwU2luZ2xlQ2xpY2tFdmVudChldmVudDogT2xNYXBCcm93c2VyRXZlbnQ8YW55Pikge1xyXG4gICAgdGhpcy5jbGVhckxheWVyKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmlnZ2VyIGhvdmVyIHdoZW4gdGhlIG1vdXNlIGlzIG1vdGlvbmxlc3MgZHVyaW5nIHRoZSBkZWZpbmVkIGRlbGF5IChwb2ludGVyTW92ZURlbGF5KS5cclxuICAgKiBAcGFyYW0gZXZlbnQgT0wgbWFwIGJyb3dzZXIgcG9pbnRlciBldmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgb25NYXBFdmVudChldmVudDogT2xNYXBCcm93c2VyRXZlbnQ8YW55Pikge1xyXG4gICAgaWYgKFxyXG4gICAgICBldmVudC5kcmFnZ2luZyB8fFxyXG4gICAgICAhdGhpcy5pZ29Ib3ZlckZlYXR1cmVFbmFibGVkIHx8XHJcbiAgICAgIHRoaXMubWVkaWFTZXJ2aWNlLmlzVG91Y2hTY3JlZW4oKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuY2xlYXJMYXllcigpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIHRoaXMubGFzdFRpbWVvdXRSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAvLyBjYW5jZWwgdGltZW91dCB3aGVuIHRoZSBtb3VzZSBtb3Zlc1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5sYXN0VGltZW91dFJlcXVlc3QpO1xyXG4gICAgfVxyXG4gICAgbGV0IG1heGltdW1aaW5kZXggPSAtSW5maW5pdHk7XHJcbiAgICBsZXQgdG9wTW9zdE9sTGF5ZXI7XHJcbiAgICBjb25zdCBwaXhlbCA9IHRoaXMubWFwLm9sLmdldFBpeGVsRnJvbUNvb3JkaW5hdGUoZXZlbnQuY29vcmRpbmF0ZSk7XHJcbiAgICB0aGlzLmxhc3RUaW1lb3V0UmVxdWVzdCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAvLyByZXRyaWV2ZSB0aGUgdG9wbW9zdCBsYXllciB3aXRoIGZlYXR1cmUgdG8gb25seSBhcHBseSB0aGUgaG92ZXIgb24gdGhpcyBsYXllci5cclxuICAgICAgdGhpcy5tYXAub2wuZm9yRWFjaEZlYXR1cmVBdFBpeGVsKFxyXG4gICAgICAgIHBpeGVsLFxyXG4gICAgICAgIChtYXBGZWF0dXJlOiBSZW5kZXJGZWF0dXJlIHwgT2xGZWF0dXJlPE9sR2VvbWV0cnk+LCBsYXllck9MOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmICghbGF5ZXJPTCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBpZ29MYXllciA9IHRoaXMubWFwLmdldExheWVyQnlPbFVJZCgobGF5ZXJPTCBhcyBhbnkpLm9sX3VpZCk7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY2FuUHJvY2Vzc0hvdmVyKGlnb0xheWVyIGFzIGFueSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGlnb0xheWVyLnpJbmRleCA8PSBtYXhpbXVtWmluZGV4KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIG1heGltdW1aaW5kZXggPSBpZ29MYXllci56SW5kZXg7XHJcbiAgICAgICAgICB0b3BNb3N0T2xMYXllciA9IGxheWVyT0w7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoaXRUb2xlcmFuY2U6IDEwLFxyXG4gICAgICAgICAgbGF5ZXJGaWx0ZXI6IChvbExheWVyKSA9PlxyXG4gICAgICAgICAgICBvbExheWVyIGluc3RhbmNlb2Ygb2xMYXllclZlY3RvciB8fFxyXG4gICAgICAgICAgICBvbExheWVyIGluc3RhbmNlb2Ygb2xMYXllclZlY3RvclRpbGVcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICAgIGlmICghdG9wTW9zdE9sTGF5ZXIpIHtcclxuICAgICAgICAvLyBUbyBjbGVhciBsYWJlbFxyXG4gICAgICAgIHRoaXMuY2xlYXJMYXllcigpO1xyXG4gICAgICAgIHRoaXMucG9pbnRlckhvdmVyRmVhdHVyZVN0b3JlLmNsZWFyKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm1hcC5vbC5mb3JFYWNoRmVhdHVyZUF0UGl4ZWwoXHJcbiAgICAgICAgcGl4ZWwsXHJcbiAgICAgICAgKG1hcEZlYXR1cmU6IFJlbmRlckZlYXR1cmUgfCBPbEZlYXR1cmU8T2xHZW9tZXRyeT4sIGxheWVyT0w6IGFueSkgPT4ge1xyXG4gICAgICAgICAgLy8gVG8gYXZvaWQgZmxhc2hpbmcgZmVhdHVyZVxyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBtYXBGZWF0dXJlLmdldCgnaG92ZXJTdW1tYXJ5JykgPT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgICBtYXBGZWF0dXJlLmdldFByb3BlcnRpZXMoKSAhPT1cclxuICAgICAgICAgICAgICB0aGlzLnBvaW50ZXJIb3ZlckZlYXR1cmVTdG9yZS5hbGwoKVswXT8uZ2V0UHJvcGVydGllcygpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5jbGVhckxheWVyKCk7XHJcbiAgICAgICAgICAgIGxldCBpZ29MYXllcjtcclxuICAgICAgICAgICAgaWYgKGxheWVyT0wgaW5zdGFuY2VvZiBvbExheWVyVmVjdG9yKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgbXlMYXllclZlY3RvciA9IHRoaXMubWFwLmdldExheWVyQnlPbFVJZChcclxuICAgICAgICAgICAgICAgIChsYXllck9MIGFzIGFueSkub2xfdWlkXHJcbiAgICAgICAgICAgICAgKSBhcyBWZWN0b3JMYXllcjtcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMuY2FuUHJvY2Vzc0hvdmVyKG15TGF5ZXJWZWN0b3IpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGxldCBsb2NhbE9sRmVhdHVyZSA9IHRoaXMuaGFuZGxlUmVuZGVyRmVhdHVyZShtYXBGZWF0dXJlKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldExheWVyU3R5bGVGcm9tT3B0aW9ucyhteUxheWVyVmVjdG9yLCBsb2NhbE9sRmVhdHVyZSk7XHJcbiAgICAgICAgICAgICAgY29uc3QgZmVhdHVyZXNUb0xvYWQgPSBbbG9jYWxPbEZlYXR1cmVdO1xyXG4gICAgICAgICAgICAgIGxvY2FsT2xGZWF0dXJlLnNldCgnX2lzTGFiZWwnLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgY29uc3QgbXlMYWJlbE9sRmVhdHVyZSA9IG5ldyBPbEZlYXR1cmUoKTtcclxuICAgICAgICAgICAgICBteUxhYmVsT2xGZWF0dXJlLnNldFByb3BlcnRpZXMobG9jYWxPbEZlYXR1cmUuZ2V0UHJvcGVydGllcygpKTtcclxuICAgICAgICAgICAgICBjb25zdCBsYWJlbEdlb20gPVxyXG4gICAgICAgICAgICAgICAgbG9jYWxPbEZlYXR1cmUuZ2V0R2VvbWV0cnkoKS5nZXRUeXBlKCkgPT09ICdQb2ludCdcclxuICAgICAgICAgICAgICAgICAgPyBsb2NhbE9sRmVhdHVyZS5nZXRHZW9tZXRyeSgpXHJcbiAgICAgICAgICAgICAgICAgIDogbmV3IE9sR2VvbS5Qb2ludChldmVudC5jb29yZGluYXRlKTtcclxuICAgICAgICAgICAgICBteUxhYmVsT2xGZWF0dXJlLnNldEdlb21ldHJ5KGxhYmVsR2VvbSk7XHJcbiAgICAgICAgICAgICAgbXlMYWJlbE9sRmVhdHVyZS5zZXRJZChsb2NhbE9sRmVhdHVyZS5nZXRJZCgpKTtcclxuICAgICAgICAgICAgICBteUxhYmVsT2xGZWF0dXJlLnNldCgnX2lzTGFiZWwnLCB0cnVlKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldExheWVyU3R5bGVGcm9tT3B0aW9ucyhteUxheWVyVmVjdG9yLCBteUxhYmVsT2xGZWF0dXJlKTtcclxuICAgICAgICAgICAgICBmZWF0dXJlc1RvTG9hZC5wdXNoKG15TGFiZWxPbEZlYXR1cmUpO1xyXG4gICAgICAgICAgICAgIHRoaXMucG9pbnRlckhvdmVyRmVhdHVyZVN0b3JlLmxvYWQoZmVhdHVyZXNUb0xvYWQpO1xyXG4gICAgICAgICAgICAgIGlnb0xheWVyID0gbXlMYXllclZlY3RvcjtcclxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAobGF5ZXJPTCBpbnN0YW5jZW9mIG9sTGF5ZXJWZWN0b3JUaWxlKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgbXlMYXllclZlY3RvclRpbGUgPSB0aGlzLm1hcC5nZXRMYXllckJ5T2xVSWQoXHJcbiAgICAgICAgICAgICAgICAobGF5ZXJPTCBhcyBhbnkpLm9sX3VpZFxyXG4gICAgICAgICAgICAgICkgYXMgVmVjdG9yVGlsZUxheWVyO1xyXG4gICAgICAgICAgICAgIGlmICghdGhpcy5jYW5Qcm9jZXNzSG92ZXIobXlMYXllclZlY3RvclRpbGUpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIG15TGF5ZXJWZWN0b3JUaWxlPy5vcHRpb25zPy5pZ29TdHlsZT8uc3R5bGVCeUF0dHJpYnV0ZVxyXG4gICAgICAgICAgICAgICAgICA/LmhvdmVyU3R5bGVcclxuICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubXZ0U3R5bGVPcHRpb25zID1cclxuICAgICAgICAgICAgICAgICAgbXlMYXllclZlY3RvclRpbGUub3B0aW9ucy5pZ29TdHlsZS5zdHlsZUJ5QXR0cmlidXRlLmhvdmVyU3R5bGU7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChteUxheWVyVmVjdG9yVGlsZT8ub3B0aW9ucz8uaWdvU3R5bGU/LmhvdmVyU3R5bGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubXZ0U3R5bGVPcHRpb25zID1cclxuICAgICAgICAgICAgICAgICAgbXlMYXllclZlY3RvclRpbGUub3B0aW9ucy5pZ29TdHlsZS5ob3ZlclN0eWxlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkxheWVyLnNldFNvdXJjZShsYXllck9MLmdldFNvdXJjZSgpKTtcclxuICAgICAgICAgICAgICBsYXllck9MXHJcbiAgICAgICAgICAgICAgICAuZ2V0RmVhdHVyZXMoZXZlbnQucGl4ZWwpXHJcbiAgICAgICAgICAgICAgICAudGhlbihcclxuICAgICAgICAgICAgICAgICAgKG12dEZlYXR1cmVzOiAoUmVuZGVyRmVhdHVyZSB8IE9sRmVhdHVyZTxPbEdlb21ldHJ5PilbXSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghbXZ0RmVhdHVyZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1WVCA9IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25MYXllci5jaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyTGF5ZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmVhdHVyZSA9IG12dEZlYXR1cmVzWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghZmVhdHVyZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhckxheWVyKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBsb2NhbE9sRmVhdHVyZSA9IHRoaXMuaGFuZGxlUmVuZGVyRmVhdHVyZShmZWF0dXJlKTtcclxuICAgICAgICAgICAgICAgICAgICBsb2NhbE9sRmVhdHVyZS5zZXQoJ19pc0xhYmVsJywgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG15TGFiZWxPbEZlYXR1cmUgPSBuZXcgT2xGZWF0dXJlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbXlMYWJlbE9sRmVhdHVyZS5zZXRQcm9wZXJ0aWVzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgbG9jYWxPbEZlYXR1cmUuZ2V0UHJvcGVydGllcygpXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbEdlb20gPVxyXG4gICAgICAgICAgICAgICAgICAgICAgbG9jYWxPbEZlYXR1cmUuZ2V0R2VvbWV0cnkoKS5nZXRUeXBlKCkgPT09ICdQb2ludCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBsb2NhbE9sRmVhdHVyZS5nZXRHZW9tZXRyeSgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbmV3IE9sR2VvbS5Qb2ludChldmVudC5jb29yZGluYXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBteUxhYmVsT2xGZWF0dXJlLnNldEdlb21ldHJ5KGxhYmVsR2VvbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbXlMYWJlbE9sRmVhdHVyZS5zZXRJZChsb2NhbE9sRmVhdHVyZS5nZXRJZCgpKTtcclxuICAgICAgICAgICAgICAgICAgICBteUxhYmVsT2xGZWF0dXJlLnNldCgnX2lzTGFiZWwnLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldExheWVyU3R5bGVGcm9tT3B0aW9ucyhcclxuICAgICAgICAgICAgICAgICAgICAgIG15TGF5ZXJWZWN0b3JUaWxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgbXlMYWJlbE9sRmVhdHVyZVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb2ludGVySG92ZXJGZWF0dXJlU3RvcmUubG9hZChbbXlMYWJlbE9sRmVhdHVyZV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTVZUW2ZlYXR1cmUuZ2V0SWQoKV0gPSBsb2NhbE9sRmVhdHVyZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkxheWVyLmNoYW5nZWQoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICBpZ29MYXllciA9IG15TGF5ZXJWZWN0b3JUaWxlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoaXRUb2xlcmFuY2U6IDEwLFxyXG4gICAgICAgICAgbGF5ZXJGaWx0ZXI6IChvbExheWVyKSA9PiBvbExheWVyID09PSB0b3BNb3N0T2xMYXllclxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH0sIHRoaXMuaWdvSG92ZXJGZWF0dXJlRGVsYXkpO1xyXG4gIH1cclxuXHJcbiAgY2FuUHJvY2Vzc0hvdmVyKGlnb0xheWVyOiBWZWN0b3JMYXllciB8IFZlY3RvclRpbGVMYXllcik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFpZ29MYXllcikge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAoIWlnb0xheWVyLnZpc2libGUpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpZ29MYXllci5vcHRpb25zKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgICFpZ29MYXllci5vcHRpb25zLmlnb1N0eWxlPy5zdHlsZUJ5QXR0cmlidXRlICYmXHJcbiAgICAgICFpZ29MYXllci5vcHRpb25zLmlnb1N0eWxlPy5ob3ZlclN0eWxlXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgaWdvTGF5ZXIub3B0aW9ucy5pZ29TdHlsZT8uc3R5bGVCeUF0dHJpYnV0ZSAmJlxyXG4gICAgICAhaWdvTGF5ZXIub3B0aW9ucy5pZ29TdHlsZT8uc3R5bGVCeUF0dHJpYnV0ZS5ob3ZlclN0eWxlICYmXHJcbiAgICAgICFpZ29MYXllci5vcHRpb25zLmlnb1N0eWxlPy5ob3ZlclN0eWxlXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVSZW5kZXJGZWF0dXJlKFxyXG4gICAgZmVhdHVyZTogUmVuZGVyRmVhdHVyZSB8IE9sRmVhdHVyZTxPbEdlb21ldHJ5PlxyXG4gICk6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PiB7XHJcbiAgICBsZXQgbG9jYWxGZWF0dXJlOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT47XHJcbiAgICBpZiAoZmVhdHVyZSBpbnN0YW5jZW9mIFJlbmRlckZlYXR1cmUpIHtcclxuICAgICAgbG9jYWxGZWF0dXJlID0gbmV3IE9sRmVhdHVyZSh7XHJcbiAgICAgICAgZ2VvbWV0cnk6IHRoaXMuZ2V0R2VvbWV0cnkoZmVhdHVyZSlcclxuICAgICAgfSk7XHJcbiAgICAgIGxvY2FsRmVhdHVyZS5zZXRJZChmZWF0dXJlLmdldElkKCkpO1xyXG4gICAgfSBlbHNlIGlmIChmZWF0dXJlIGluc3RhbmNlb2YgT2xGZWF0dXJlKSB7XHJcbiAgICAgIGxvY2FsRmVhdHVyZSA9IGZlYXR1cmU7XHJcbiAgICB9XHJcbiAgICBsb2NhbEZlYXR1cmUuc2V0UHJvcGVydGllcyhmZWF0dXJlLmdldFByb3BlcnRpZXMoKSk7XHJcbiAgICByZXR1cm4gbG9jYWxGZWF0dXJlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGEgZmVhdHVyZSB0byB0aGUgcG9pbnRlciBzdG9yZVxyXG4gICAqIEBwYXJhbSB0ZXh0IHN0cmluZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgYWRkRmVhdHVyZU92ZXJsYXkoaG92ZXJFbnRpdHk6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PltdKSB7XHJcbiAgICBpZiAoaG92ZXJFbnRpdHkubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBob3ZlckVudGl0eVswXTtcclxuICAgICAgdGhpcy5jbGVhckxheWVyKCk7XHJcbiAgICAgIGNvbnN0IGZlYXR1cmUgPSBuZXcgT2xGZWF0dXJlKHtcclxuICAgICAgICBnZW9tZXRyeTogcmVzdWx0LmdldEdlb21ldHJ5KCksXHJcbiAgICAgICAgbWV0YTogeyBpZDogdGhpcy5ob3ZlckZlYXR1cmVJZCB9LFxyXG4gICAgICAgIGhvdmVyU3VtbWFyeTogdGhpcy5nZXRIb3ZlclN1bW1hcnkocmVzdWx0LmdldFByb3BlcnRpZXMoKSlcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnN0b3JlLnNldExheWVyT2xGZWF0dXJlcyhbZmVhdHVyZV0sIEZlYXR1cmVNb3Rpb24uTm9uZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldExheWVyU3R5bGVGcm9tT3B0aW9ucyhcclxuICAgIGlnb0xheWVyOiBWZWN0b3JMYXllciB8IFZlY3RvclRpbGVMYXllcixcclxuICAgIGZlYXR1cmU6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PlxyXG4gICkge1xyXG4gICAgY29uc3QgcmVzb2x1dGlvbiA9IHRoaXMuc3RvcmUubGF5ZXIubWFwLnZpZXdDb250cm9sbGVyLmdldFJlc29sdXRpb24oKTtcclxuICAgIGlmIChpZ29MYXllcj8ub3B0aW9ucz8uaWdvU3R5bGU/LnN0eWxlQnlBdHRyaWJ1dGU/LmhvdmVyU3R5bGUpIHtcclxuICAgICAgdGhpcy5zdG9yZS5sYXllci5vbC5zZXRTdHlsZShcclxuICAgICAgICB0aGlzLmNyZWF0ZUhvdmVyU3R5bGUoXHJcbiAgICAgICAgICBmZWF0dXJlLFxyXG4gICAgICAgICAgaWdvTGF5ZXIub3B0aW9ucy5pZ29TdHlsZS5zdHlsZUJ5QXR0cmlidXRlLmhvdmVyU3R5bGUsXHJcbiAgICAgICAgICByZXNvbHV0aW9uXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoaWdvTGF5ZXI/Lm9wdGlvbnM/Lmlnb1N0eWxlPy5ob3ZlclN0eWxlKSB7XHJcbiAgICAgIHRoaXMuc3RvcmUubGF5ZXIub2wuc2V0U3R5bGUoXHJcbiAgICAgICAgdGhpcy5jcmVhdGVIb3ZlclN0eWxlKFxyXG4gICAgICAgICAgZmVhdHVyZSxcclxuICAgICAgICAgIGlnb0xheWVyLm9wdGlvbnMuaWdvU3R5bGUuaG92ZXJTdHlsZSxcclxuICAgICAgICAgIHJlc29sdXRpb25cclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEhvdmVyU3VtbWFyeShwcm9wZXJ0aWVzKTogc3RyaW5nIHtcclxuICAgIGxldCBzdW1tYXJ5ID0gJyc7XHJcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKSkge1xyXG4gICAgICBpZiAoIWtleS5zdGFydHNXaXRoKCdfJykgJiYga2V5ICE9PSAnZ2VvbWV0cnknKSB7XHJcbiAgICAgICAgc3VtbWFyeSArPSBgJHtrZXl9OiAke3ZhbHVlfWAgKyAnXFxuJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN1bW1hcnkubGVuZ3RoID49IDIgPyBzdW1tYXJ5LnNsaWNlKDAsIC0yKSA6IHN1bW1hcnk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEdlb21ldHJ5KGZlYXR1cmUpOiBPbEdlb20uR2VvbWV0cnkge1xyXG4gICAgbGV0IGdlb207XHJcbiAgICBpZiAoIWZlYXR1cmUuZ2V0T3JpZW50ZWRGbGF0Q29vcmRpbmF0ZXMpIHtcclxuICAgICAgZ2VvbSA9IGZlYXR1cmUuZ2V0R2VvbWV0cnkoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGNvb3JkcyA9IGZlYXR1cmUuZ2V0T3JpZW50ZWRGbGF0Q29vcmRpbmF0ZXMoKTtcclxuICAgICAgY29uc3QgZmxhdENvb3JkcyA9IFtdO1xyXG5cclxuICAgICAgY29vcmRzLmZvckVhY2goKGMsIGlkeCkgPT4ge1xyXG4gICAgICAgIGlmIChpZHggJSAyID09PSAwKSB7XHJcbiAgICAgICAgICBmbGF0Q29vcmRzLnB1c2goW1xyXG4gICAgICAgICAgICBwYXJzZUZsb2F0KGNvb3Jkc1tpZHhdKSxcclxuICAgICAgICAgICAgcGFyc2VGbG9hdChjb29yZHNbaWR4ICsgMV0pXHJcbiAgICAgICAgICBdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gVE9ETzogdGVzdCBNdWx0aVhcclxuICAgICAgc3dpdGNoIChmZWF0dXJlLmdldFR5cGUoKSkge1xyXG4gICAgICAgIGNhc2UgJ1BvaW50JzpcclxuICAgICAgICAgIGdlb20gPSBuZXcgT2xHZW9tLlBvaW50KGZsYXRDb29yZHMpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnUG9seWdvbic6XHJcbiAgICAgICAgICBnZW9tID0gbmV3IE9sR2VvbS5Qb2x5Z29uKFtmbGF0Q29vcmRzXSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdMaW5lU3RyaW5nJzpcclxuICAgICAgICAgIGdlb20gPSBuZXcgT2xHZW9tLkxpbmVTdHJpbmcoW2ZsYXRDb29yZHNdKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGdlb207XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciB0aGUgcG9pbnRlciBzdG9yZSBmZWF0dXJlc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgY2xlYXJMYXllcigpIHtcclxuICAgIHRoaXMuc2VsZWN0aW9uTVZUID0ge307XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25MYXllcikge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbkxheWVyLmNoYW5nZWQoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnN0b3JlKSB7XHJcbiAgICAgIHRoaXMuc3RvcmUuY2xlYXJMYXllcigpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -12,4 +12,4 @@ export * from './projection.service';
12
12
  export * from './controllers';
13
13
  export * from './projection.utils';
14
14
  export * from './linkedLayers.utils';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsT0FBTyxDQUFDO0FBQ3RCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tYXAnO1xyXG5leHBvcnQgKiBmcm9tICcuL21hcC5hYnN0cmFjdCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbWFwLmVudW1zJztcclxuZXhwb3J0ICogZnJvbSAnLi9tYXAuaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9tYXAuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbWFwLnV0aWxzJztcclxuZXhwb3J0ICogZnJvbSAnLi9tYXBPZmZsaW5lLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbWFwLXBvaW50ZXItcG9zaXRpb24uZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9ob3Zlci1mZWF0dXJlLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcHJvamVjdGlvbi5pbnRlcmZhY2VzJztcclxuZXhwb3J0ICogZnJvbSAnLi9wcm9qZWN0aW9uLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyb2xsZXJzJztcclxuZXhwb3J0ICogZnJvbSAnLi9wcm9qZWN0aW9uLnV0aWxzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saW5rZWRMYXllcnMudXRpbHMnO1xyXG4iXX0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsT0FBTyxDQUFDO0FBQ3RCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tYXAnO1xuZXhwb3J0ICogZnJvbSAnLi9tYXAuYWJzdHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9tYXAuZW51bXMnO1xuZXhwb3J0ICogZnJvbSAnLi9tYXAuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbWFwLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9tYXAudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9tYXBPZmZsaW5lLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL21hcC1wb2ludGVyLXBvc2l0aW9uLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2hvdmVyLWZlYXR1cmUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvamVjdGlvbi5pbnRlcmZhY2VzJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvamVjdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbGxlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9wcm9qZWN0aW9uLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGlua2VkTGF5ZXJzLnV0aWxzJztcbiJdfQ==
@@ -245,4 +245,4 @@ export function handleLayerPropertyChange(map, propertyChange, initiatorIgoLayer
245
245
  }
246
246
  }
247
247
  }
248
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VkTGF5ZXJzLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9saW5rZWRMYXllcnMudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQU1qQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBS2pFLE9BQU8sRUFBUyxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3BFLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxLQUFZO0lBQ2pELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDcEMsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxHQUFZLEVBQUUsRUFBVTtJQUMxRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxNQUFNLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDdkUsQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsS0FBWSxFQUNaLFFBQTBCO0lBRTFCLElBQUksbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLE1BQU0sY0FBYyxHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JELElBQUksY0FBYyxFQUFFLEtBQUssRUFBRTtRQUN6QixNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQzNDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUNoQyxDQUFDO1FBQ0YsbUJBQW1CLEdBQUcs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LENBQUMsNEJBQTRCLENBQzdELCtDQUErQyxFQUM5QyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsT0FBZTtxQ0FDMUMsaUJBQWlCLEVBQ3BCLFNBQVMsRUFDVCxHQUFHLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSxDQUNyQyxDQUFDOzZCQUNIO2lDQUFNLElBQUksMkJBQTJCLEtBQUssS0FBSyxFQUFFO2dDQUNoRCxnQkFBZ0IsR0FDZCxpQkFBaUIsQ0FBQyxVQUNuQixDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLENBQUM7NkJBQ3pCOzRCQUNBLENBQUMsQ0FBQyxVQUE0QixDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUM7Z0NBQzlDLE1BQU0sRUFBRSxnQkFBZ0I7NkJBQ3pCLENBQUMsQ0FBQzt5QkFDSjtxQkFDRjt5QkFBTSxJQUNMLENBQUMsQ0FBQyxVQUFVLFlBQVksYUFBYTt3QkFDckMsR0FBRyxLQUFLLFlBQVksRUFDcEI7d0JBQ0MsQ0FBQyxDQUFDLFVBQXVDLENBQUMsYUFBYSxDQUN0RCxRQUFRLEVBQ1IsS0FBSyxDQUNOLENBQUM7d0JBQ0YsTUFBTSxpQkFBaUIsR0FDckIsaUJBQWlCLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFDL0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUM7d0JBQ25CLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7cUJBQzNEO2lCQUNGO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksNEJBQTRCLEVBQUU7WUFDaEMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzNFO0tBQ0Y7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JqZWN0RXZlbnQgfSBmcm9tICdvbC9PYmplY3QnO1xyXG5pbXBvcnQgb2xTb3VyY2VJbWFnZVdNUyBmcm9tICdvbC9zb3VyY2UvSW1hZ2VXTVMnO1xyXG5pbXBvcnQgeyBnZXRVaWQgfSBmcm9tICdvbC91dGlsJztcclxuXHJcbmltcG9ydCB7XHJcbiAgVGltZUZpbHRlcmFibGVEYXRhU291cmNlLFxyXG4gIFRpbWVGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnNcclxufSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcyc7XHJcbmltcG9ydCB7IFdNU0RhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy93bXMtZGF0YXNvdXJjZSc7XHJcbmltcG9ydCB7IE9nY0ZpbHRlcldyaXRlciB9IGZyb20gJy4uLy4uL2ZpbHRlci9zaGFyZWQvb2djLWZpbHRlcic7XHJcbmltcG9ydCB7XHJcbiAgT2djRmlsdGVyYWJsZURhdGFTb3VyY2UsXHJcbiAgT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zXHJcbn0gZnJvbSAnLi4vLi4vZmlsdGVyL3NoYXJlZC9vZ2MtZmlsdGVyLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IExheWVyLCBMaW5rZWRQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycyc7XHJcbmltcG9ydCB0eXBlIHsgTWFwQmFzZSB9IGZyb20gJy4uL3NoYXJlZC9tYXAuYWJzdHJhY3QnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldExpbmtlZExheWVyc09wdGlvbnMobGF5ZXI6IExheWVyKSB7XHJcbiAgcmV0dXJuIGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0SWdvTGF5ZXJCeUxpbmtJZChtYXA6IE1hcEJhc2UsIGlkOiBzdHJpbmcpIHtcclxuICByZXR1cm4gbWFwLmxheWVycy5maW5kKChsKSA9PiBsLm9wdGlvbnMubGlua2VkTGF5ZXJzPy5saW5rSWQgPT09IGlkKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxheWVySGFzTGlua1dpdGhQcm9wZXJ0eShcclxuICBsYXllcjogTGF5ZXIsXHJcbiAgcHJvcGVydHk6IExpbmtlZFByb3BlcnRpZXNcclxuKTogYm9vbGVhbiB7XHJcbiAgbGV0IGhhc0xpbmtXaXRoUHJvcGVydHkgPSBmYWxzZTtcclxuICBjb25zdCBsYXllckxMT3B0aW9ucyA9IGdldExpbmtlZExheWVyc09wdGlvbnMobGF5ZXIpO1xyXG4gIGlmIChsYXllckxMT3B0aW9ucz8ubGlua3MpIHtcclxuICAgIGNvbnN0IGxpbmsgPSBsYXllckxMT3B0aW9ucy5saW5rcy5maW5kKChsKSA9PlxyXG4gICAgICBsLnByb3BlcnRpZXMuaW5jbHVkZXMocHJvcGVydHkpXHJcbiAgICApO1xyXG4gICAgaGFzTGlua1dpdGhQcm9wZXJ0eSA9IGxpbmsgPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG4gIHJldHVybiBoYXNMaW5rV2l0aFByb3BlcnR5O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJIYXNMaW5rRGVsZXRpb24obGF5ZXI6IExheWVyKTogYm9vbGVhbiB7XHJcbiAgbGV0IGhhc0xpbmtXaXRoU3luY2VkRGVsZXRlID0gZmFsc2U7XHJcbiAgY29uc3QgbGF5ZXJMTE9wdGlvbnMgPSBnZXRMaW5rZWRMYXllcnNPcHRpb25zKGxheWVyKTtcclxuICBpZiAobGF5ZXJMTE9wdGlvbnM/LmxpbmtzKSB7XHJcbiAgICBjb25zdCBsaW5rID0gbGF5ZXJMTE9wdGlvbnMubGlua3MuZmluZCgobCkgPT4gbC5zeW5jZWREZWxldGUpO1xyXG4gICAgaGFzTGlua1dpdGhTeW5jZWREZWxldGUgPSBsaW5rID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuICByZXR1cm4gaGFzTGlua1dpdGhTeW5jZWREZWxldGU7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRSb290UGFyZW50QnlQcm9wZXJ0eShcclxuICBtYXA6IE1hcEJhc2UsXHJcbiAgbGF5ZXI6IExheWVyLFxyXG4gIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzXHJcbik6IExheWVyIHtcclxuICBsZXQgbGF5ZXJUb1VzZSA9IGxheWVyO1xyXG4gIGxldCBwYXJlbnRMYXllciA9IGxheWVyVG9Vc2U7XHJcbiAgbGV0IGhhc1BhcmVudExheWVyID0gdHJ1ZTtcclxuICB3aGlsZSAoaGFzUGFyZW50TGF5ZXIpIHtcclxuICAgIGxheWVyVG9Vc2UgPSBwYXJlbnRMYXllcjtcclxuICAgIHBhcmVudExheWVyID0gZ2V0RGlyZWN0UGFyZW50TGF5ZXJCeVByb3BlcnR5KG1hcCwgbGF5ZXJUb1VzZSwgcHJvcGVydHkpO1xyXG4gICAgaGFzUGFyZW50TGF5ZXIgPSBwYXJlbnRMYXllciA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcbiAgaWYgKCFoYXNQYXJlbnRMYXllcikge1xyXG4gICAgaWYgKCFsYXllckhhc0xpbmtXaXRoUHJvcGVydHkobGF5ZXJUb1VzZSwgcHJvcGVydHkpKSB7XHJcbiAgICAgIGxheWVyVG9Vc2UgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBoYXNQYXJlbnRMYXllciA/IHBhcmVudExheWVyIDogbGF5ZXJUb1VzZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldERpcmVjdFBhcmVudExheWVyQnlQcm9wZXJ0eShcclxuICBtYXA6IE1hcEJhc2UsXHJcbiAgbGF5ZXI6IExheWVyLFxyXG4gIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzXHJcbik6IExheWVyIHtcclxuICBpZiAobGF5ZXI/Lm9wdGlvbnMubGlua2VkTGF5ZXJzPy5saW5rSWQpIHtcclxuICAgIGNvbnN0IGN1cnJlbnRMaW5rSWQgPSBsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rSWQ7XHJcbiAgICBsZXQgcGFyZW50cyA9IG1hcC5sYXllcnMuZmlsdGVyKChwbCkgPT4ge1xyXG4gICAgICBjb25zdCBsaW5rZWRMYXllcnMgPSBwbC5vcHRpb25zLmxpbmtlZExheWVycztcclxuICAgICAgaWYgKGxpbmtlZExheWVycyAmJiBsaW5rZWRMYXllcnMubGlua3MpIHtcclxuICAgICAgICBjb25zdCBhID0gbGlua2VkTGF5ZXJzLmxpbmtzLmZpbmQoXHJcbiAgICAgICAgICAobCkgPT5cclxuICAgICAgICAgICAgbC5saW5rZWRJZHMuaW5jbHVkZXMoY3VycmVudExpbmtJZCkgJiZcclxuICAgICAgICAgICAgbC5wcm9wZXJ0aWVzLmluY2x1ZGVzKHByb3BlcnR5KVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIGE7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKHBhcmVudHMubGVuZ3RoID4gMSkge1xyXG4gICAgICBjb25zb2xlLndhcm4oYFlvdXIgbGF5ZXIgJHtcclxuICAgICAgICBsYXllci50aXRsZSB8fCBsYXllci5pZFxyXG4gICAgICB9IG11c3Qgb25seSBoYXZlIDEgcGFyZW50ICgke3BhcmVudHMubWFwKChwKSA9PiBwLnRpdGxlIHx8IHAuaWQpfSlcclxuICAgICAgICAgICAgLCBUaGUgZmlyc3QgcGFyZW50ICgke1xyXG4gICAgICAgICAgICAgIHBhcmVudHNbMF0udGl0bGUgfHwgcGFyZW50c1swXS5pZFxyXG4gICAgICAgICAgICB9KSB3aWxsIGJlIHVzZSB0byBzeW5jIHByb3BlcnRpZXNgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXJlbnRzWzBdO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldERpcmVjdENoaWxkTGF5ZXJzQnlQcm9wZXJ0eShcclxuICBtYXA6IE1hcEJhc2UsXHJcbiAgbGF5ZXI6IExheWVyLFxyXG4gIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzXHJcbik6IExheWVyW10ge1xyXG4gIGxldCBsaW5rZWRJZHMgPSBbXTtcclxuICBpZiAobGF5ZXI/Lm9wdGlvbnMubGlua2VkTGF5ZXJzPy5saW5rcykge1xyXG4gICAgbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua3NcclxuICAgICAgLmZpbHRlcigobCkgPT4gbC5wcm9wZXJ0aWVzLmluY2x1ZGVzKHByb3BlcnR5KSlcclxuICAgICAgLm1hcCgobGluaykgPT4ge1xyXG4gICAgICAgIGxpbmtlZElkcyA9IGxpbmtlZElkcy5jb25jYXQobGluay5saW5rZWRJZHMpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgcmV0dXJuIGxpbmtlZElkcy5tYXAoKGxpZCkgPT4gZ2V0SWdvTGF5ZXJCeUxpbmtJZChtYXAsIGxpZCkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsQ2hpbGRMYXllcnNCeVByb3BlcnR5KFxyXG4gIG1hcDogTWFwQmFzZSxcclxuICBsYXllcjogTGF5ZXIsXHJcbiAga25vd25DaGlsZExheWVyczogTGF5ZXJbXSxcclxuICBwcm9wZXJ0eTogTGlua2VkUHJvcGVydGllc1xyXG4pOiBMYXllcltdIHtcclxuICBsZXQgY2hpbGRMYXllcnMgPSBnZXREaXJlY3RDaGlsZExheWVyc0J5UHJvcGVydHkobWFwLCBsYXllciwgcHJvcGVydHkpO1xyXG4gIGNoaWxkTGF5ZXJzLm1hcCgoY2wpID0+IHtcclxuICAgIGtub3duQ2hpbGRMYXllcnMucHVzaChjbCk7XHJcbiAgICBjb25zdCBkaXJlY3RDaGlsZExheWVycyA9IGdldERpcmVjdENoaWxkTGF5ZXJzQnlQcm9wZXJ0eShtYXAsIGNsLCBwcm9wZXJ0eSk7XHJcbiAgICBpZiAoZGlyZWN0Q2hpbGRMYXllcnMpIHtcclxuICAgICAgZ2V0QWxsQ2hpbGRMYXllcnNCeVByb3BlcnR5KG1hcCwgY2wsIGtub3duQ2hpbGRMYXllcnMsIHByb3BlcnR5KTtcclxuICAgIH1cclxuICB9KTtcclxuICByZXR1cm4ga25vd25DaGlsZExheWVycztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFJvb3RQYXJlbnRCeURlbGV0aW9uKG1hcDogTWFwQmFzZSwgbGF5ZXI6IExheWVyKTogTGF5ZXIge1xyXG4gIGxldCBsYXllclRvVXNlID0gbGF5ZXI7XHJcbiAgbGV0IHBhcmVudExheWVyID0gbGF5ZXJUb1VzZTtcclxuICBsZXQgaGFzUGFyZW50TGF5ZXIgPSB0cnVlO1xyXG4gIHdoaWxlIChoYXNQYXJlbnRMYXllcikge1xyXG4gICAgbGF5ZXJUb1VzZSA9IHBhcmVudExheWVyO1xyXG4gICAgcGFyZW50TGF5ZXIgPSBnZXREaXJlY3RQYXJlbnRMYXllckJ5RGVsZXRpb24obWFwLCBsYXllclRvVXNlKTtcclxuICAgIGhhc1BhcmVudExheWVyID0gcGFyZW50TGF5ZXIgPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG4gIGlmICghaGFzUGFyZW50TGF5ZXIpIHtcclxuICAgIGlmICghbGF5ZXJIYXNMaW5rRGVsZXRpb24obGF5ZXJUb1VzZSkpIHtcclxuICAgICAgbGF5ZXJUb1VzZSA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGhhc1BhcmVudExheWVyID8gcGFyZW50TGF5ZXIgOiBsYXllclRvVXNlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlyZWN0UGFyZW50TGF5ZXJCeURlbGV0aW9uKFxyXG4gIG1hcDogTWFwQmFzZSxcclxuICBsYXllcjogTGF5ZXJcclxuKTogTGF5ZXIge1xyXG4gIGlmIChsYXllci5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua0lkKSB7XHJcbiAgICBjb25zdCBjdXJyZW50TGlua0lkID0gbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua0lkO1xyXG4gICAgbGV0IHBhcmVudHMgPSBtYXAubGF5ZXJzLmZpbHRlcigocGwpID0+IHtcclxuICAgICAgY29uc3QgbGlua2VkTGF5ZXJzID0gcGwub3B0aW9ucy5saW5rZWRMYXllcnM7XHJcbiAgICAgIGlmIChsaW5rZWRMYXllcnMgJiYgbGlua2VkTGF5ZXJzLmxpbmtzKSB7XHJcbiAgICAgICAgY29uc3QgYSA9IGxpbmtlZExheWVycy5saW5rcy5maW5kKFxyXG4gICAgICAgICAgKGwpID0+IGwubGlua2VkSWRzLmluY2x1ZGVzKGN1cnJlbnRMaW5rSWQpICYmIGwuc3luY2VkRGVsZXRlXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gYTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAocGFyZW50cy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihgWW91ciBsYXllciAke1xyXG4gICAgICAgIGxheWVyLnRpdGxlIHx8IGxheWVyLmlkXHJcbiAgICAgIH0gbXVzdCBvbmx5IGhhdmUgMSBwYXJlbnQgKCR7cGFyZW50cy5tYXAoKHApID0+IHAudGl0bGUgfHwgcC5pZCl9KVxyXG4gICAgICAgICAgLCBUaGUgZmlyc3QgcGFyZW50ICgke1xyXG4gICAgICAgICAgICBwYXJlbnRzWzBdLnRpdGxlIHx8IHBhcmVudHNbMF0uaWRcclxuICAgICAgICAgIH0pIHdpbGwgYmUgdXNlIHRvIHN5bmMgcHJvcGVydGllc2ApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBhcmVudHNbMF07XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlyZWN0Q2hpbGRMYXllcnNCeURlbGV0aW9uKFxyXG4gIG1hcDogTWFwQmFzZSxcclxuICBsYXllcjogTGF5ZXJcclxuKTogTGF5ZXJbXSB7XHJcbiAgbGV0IGxpbmtlZElkcyA9IFtdO1xyXG4gIGlmIChsYXllcj8ub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtzKSB7XHJcbiAgICBsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rc1xyXG4gICAgICAuZmlsdGVyKChsKSA9PiBsLnN5bmNlZERlbGV0ZSlcclxuICAgICAgLm1hcCgobGluaykgPT4ge1xyXG4gICAgICAgIGxpbmtlZElkcyA9IGxpbmtlZElkcy5jb25jYXQobGluay5saW5rZWRJZHMpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgcmV0dXJuIGxpbmtlZElkcy5tYXAoKGxpZCkgPT4gZ2V0SWdvTGF5ZXJCeUxpbmtJZChtYXAsIGxpZCkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsQ2hpbGRMYXllcnNCeURlbGV0aW9uKFxyXG4gIG1hcDogTWFwQmFzZSxcclxuICBsYXllcjogTGF5ZXIsXHJcbiAga25vd25DaGlsZExheWVyczogTGF5ZXJbXVxyXG4pOiBMYXllcltdIHtcclxuICBsZXQgY2hpbGRMYXllcnMgPSBnZXREaXJlY3RDaGlsZExheWVyc0J5RGVsZXRpb24obWFwLCBsYXllcik7XHJcbiAgY2hpbGRMYXllcnMubWFwKChjbCkgPT4ge1xyXG4gICAga25vd25DaGlsZExheWVycy5wdXNoKGNsKTtcclxuICAgIGNvbnN0IGRpcmVjdENoaWxkTGF5ZXJzID0gZ2V0RGlyZWN0Q2hpbGRMYXllcnNCeURlbGV0aW9uKG1hcCwgY2wpO1xyXG4gICAgaWYgKGRpcmVjdENoaWxkTGF5ZXJzKSB7XHJcbiAgICAgIGdldEFsbENoaWxkTGF5ZXJzQnlEZWxldGlvbihtYXAsIGNsLCBrbm93bkNoaWxkTGF5ZXJzKTtcclxuICAgIH1cclxuICB9KTtcclxuICByZXR1cm4ga25vd25DaGlsZExheWVycztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGluaXRMYXllclN5bmNGcm9tUm9vdFBhcmVudExheWVycyhcclxuICBtYXA6IE1hcEJhc2UsXHJcbiAgbGF5ZXJzOiBMYXllcltdXHJcbikge1xyXG4gIGNvbnN0IHJvb3RMYXllcnNCeVByb3BlcnR5ID0ge307XHJcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKExpbmtlZFByb3BlcnRpZXMpO1xyXG4gIGtleXMubWFwKChrKSA9PiB7XHJcbiAgICByb290TGF5ZXJzQnlQcm9wZXJ0eVtMaW5rZWRQcm9wZXJ0aWVzW2tdXSA9IFtdO1xyXG4gIH0pO1xyXG4gIGxheWVyc1xyXG4gICAgLmZpbHRlcigobCkgPT4gZ2V0TGlua2VkTGF5ZXJzT3B0aW9ucyhsKSlcclxuICAgIC5tYXAoKGwpID0+IHtcclxuICAgICAga2V5cy5tYXAoKGtleSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGsgPSBMaW5rZWRQcm9wZXJ0aWVzW2tleV07XHJcbiAgICAgICAgY29uc3QgcGxicCA9IGdldFJvb3RQYXJlbnRCeVByb3BlcnR5KG1hcCwgbCwgayBhcyBMaW5rZWRQcm9wZXJ0aWVzKTtcclxuICAgICAgICBjb25zdCBsYXllcnMgPSByb290TGF5ZXJzQnlQcm9wZXJ0eVtrXTtcclxuICAgICAgICBjb25zdCBsYXllcnNJZCA9IGxheWVycy5tYXAoKGwpID0+IGwuaWQpO1xyXG4gICAgICAgIGlmIChwbGJwICYmICFsYXllcnNJZC5pbmNsdWRlcyhwbGJwLmlkKSkge1xyXG4gICAgICAgICAgcm9vdExheWVyc0J5UHJvcGVydHlba10ucHVzaChwbGJwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgT2JqZWN0LmtleXMocm9vdExheWVyc0J5UHJvcGVydHkpLm1hcCgoaykgPT4ge1xyXG4gICAgY29uc3QgbGF5ZXJzID0gcm9vdExheWVyc0J5UHJvcGVydHlba107XHJcbiAgICBsYXllcnMubWFwKChsOiBMYXllcikgPT4gbC5vbC5ub3RpZnkoaywgdW5kZWZpbmVkKSk7XHJcbiAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVMYXllclByb3BlcnR5Q2hhbmdlKFxyXG4gIG1hcDogTWFwQmFzZSxcclxuICBwcm9wZXJ0eUNoYW5nZTogT2JqZWN0RXZlbnQsXHJcbiAgaW5pdGlhdG9ySWdvTGF5ZXI6IExheWVyXHJcbikge1xyXG4gIGlmICghcHJvcGVydHlDaGFuZ2UpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgY29uc3Qgb2djRmlsdGVyV3JpdGVyID0gbmV3IE9nY0ZpbHRlcldyaXRlcigpO1xyXG4gIGxldCBpc0xheWVyUHJvcGVydHkgPSB0cnVlO1xyXG4gIGxldCBpc0RhdGFzb3VyY2VQcm9wZXJ0eSA9IHRydWU7XHJcbiAgY29uc3Qga2V5ID0gcHJvcGVydHlDaGFuZ2Uua2V5O1xyXG4gIGxldCBuZXdWYWx1ZTtcclxuICBpZiAoa2V5ID09PSAnb2djRmlsdGVycycpIHtcclxuICAgIGlzTGF5ZXJQcm9wZXJ0eSA9IGZhbHNlO1xyXG4gICAgaXNEYXRhc291cmNlUHJvcGVydHkgPSB0cnVlO1xyXG4gICAgbmV3VmFsdWUgPSAoXHJcbiAgICAgIGluaXRpYXRvcklnb0xheWVyLmRhdGFTb3VyY2Uub3B0aW9ucyBhcyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnNcclxuICAgICkub2djRmlsdGVycztcclxuICB9IGVsc2UgaWYgKGtleSA9PT0gJ3RpbWVGaWx0ZXInKSB7XHJcbiAgICBpc0xheWVyUHJvcGVydHkgPSBmYWxzZTtcclxuICAgIGlzRGF0YXNvdXJjZVByb3BlcnR5ID0gdHJ1ZTtcclxuICAgIG5ld1ZhbHVlID0gKFxyXG4gICAgICBpbml0aWF0b3JJZ29MYXllci5kYXRhU291cmNlLm9wdGlvbnMgYXMgVGltZUZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xyXG4gICAgKS50aW1lRmlsdGVyO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBpc0xheWVyUHJvcGVydHkgPSB0cnVlO1xyXG4gICAgaXNEYXRhc291cmNlUHJvcGVydHkgPSBmYWxzZTtcclxuICAgIG5ld1ZhbHVlID0gaW5pdGlhdG9ySWdvTGF5ZXIub2wuZ2V0KGtleSk7XHJcbiAgfVxyXG5cclxuICBjb25zdCBpbml0aWF0b3JMaW5rZWRMYXllcnNPcHRpb25zID1cclxuICAgIGdldExpbmtlZExheWVyc09wdGlvbnMoaW5pdGlhdG9ySWdvTGF5ZXIpO1xyXG4gIGlmIChpbml0aWF0b3JMaW5rZWRMYXllcnNPcHRpb25zKSB7XHJcbiAgICBsZXQgcm9vdFBhcmVudEJ5UHJvcGVydHkgPSBnZXRSb290UGFyZW50QnlQcm9wZXJ0eShcclxuICAgICAgbWFwLFxyXG4gICAgICBpbml0aWF0b3JJZ29MYXllcixcclxuICAgICAga2V5IGFzIExpbmtlZFByb3BlcnRpZXNcclxuICAgICk7XHJcbiAgICBpZiAoIXJvb3RQYXJlbnRCeVByb3BlcnR5KSB7XHJcbiAgICAgIHJvb3RQYXJlbnRCeVByb3BlcnR5ID0gaW5pdGlhdG9ySWdvTGF5ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY2xicCA9IFtyb290UGFyZW50QnlQcm9wZXJ0eV07XHJcbiAgICBnZXRBbGxDaGlsZExheWVyc0J5UHJvcGVydHkoXHJcbiAgICAgIG1hcCxcclxuICAgICAgcm9vdFBhcmVudEJ5UHJvcGVydHksXHJcbiAgICAgIGNsYnAsXHJcbiAgICAgIGtleSBhcyBMaW5rZWRQcm9wZXJ0aWVzXHJcbiAgICApO1xyXG5cclxuICAgIGxldCByZXNvbHV0aW9uUHJvcGVydHlIYXNDaGFuZ2VkID0gZmFsc2U7XHJcbiAgICBjb25zdCBpbml0aWF0b3JJZ29MYXllclNvdXJjZVR5cGUgPVxyXG4gICAgICBpbml0aWF0b3JJZ29MYXllci5vcHRpb25zLnNvdXJjZS5vcHRpb25zLnR5cGU7XHJcbiAgICBjb25zdCBpbml0aWF0b3JJZ29MYXllck9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyA9IGluaXRpYXRvcklnb0xheWVyXHJcbiAgICAgIC5kYXRhU291cmNlLm9wdGlvbnMgYXMgT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zO1xyXG4gICAgY2xicC5tYXAoKGwpID0+IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGluaXRpYXRvcklnb0xheWVyICYmXHJcbiAgICAgICAgbCAmJlxyXG4gICAgICAgIGdldFVpZChpbml0aWF0b3JJZ29MYXllci5vbCkgIT09IGdldFVpZChsPy5vbClcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3QgbExheWVyVHlwZSA9IGwub3B0aW9ucy5zb3VyY2Uub3B0aW9ucy50eXBlO1xyXG4gICAgICAgIGlmIChpc0xheWVyUHJvcGVydHkpIHtcclxuICAgICAgICAgIGwub2wuc2V0KGtleSwgbmV3VmFsdWUsIHRydWUpO1xyXG4gICAgICAgICAgaWYgKGtleSA9PT0gJ3Zpc2libGUnKSB7XHJcbiAgICAgICAgICAgIGwudmlzaWJsZSQubmV4dChuZXdWYWx1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoa2V5ID09PSAnbWluUmVzb2x1dGlvbicgfHwga2V5ID09PSAnbWF4UmVzb2x1dGlvbicpIHtcclxuICAgICAgICAgICAgcmVzb2x1dGlvblByb3BlcnR5SGFzQ2hhbmdlZCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChpc0RhdGFzb3VyY2VQcm9wZXJ0eSkge1xyXG4gICAgICAgICAgaWYgKGtleSA9PT0gJ29nY0ZpbHRlcnMnKSB7XHJcbiAgICAgICAgICAgIChsLmRhdGFTb3VyY2UgYXMgT2djRmlsdGVyYWJsZURhdGFTb3VyY2UpLnNldE9nY0ZpbHRlcnMoXHJcbiAgICAgICAgICAgICAgbmV3VmFsdWUsXHJcbiAgICAgICAgICAgICAgZmFsc2VcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKGxMYXllclR5cGUgPT09ICd3ZnMnKSB7XHJcbiAgICAgICAgICAgICAgbC5vbC5nZXRTb3VyY2UoKS5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGxMYXllclR5cGUgPT09ICd3bXMnKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGFwcGxpZWRPZ2NGaWx0ZXI7XHJcbiAgICAgICAgICAgICAgaWYgKGluaXRpYXRvcklnb0xheWVyU291cmNlVHlwZSA9PT0gJ3dmcycpIHtcclxuICAgICAgICAgICAgICAgIGFwcGxpZWRPZ2NGaWx0ZXIgPSBvZ2NGaWx0ZXJXcml0ZXIuaGFuZGxlT2djRmlsdGVyc0FwcGxpZWRWYWx1ZShcclxuICAgICAgICAgICAgICAgICAgaW5pdGlhdG9ySWdvTGF5ZXJPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMsXHJcbiAgICAgICAgICAgICAgICAgIChpbml0aWF0b3JJZ29MYXllci5kYXRhU291cmNlLm9wdGlvbnMgYXMgYW55KVxyXG4gICAgICAgICAgICAgICAgICAgIC5maWVsZE5hbWVHZW9tZXRyeSxcclxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgICBtYXAudmlld0NvbnRyb2xsZXIuZ2V0T2xQcm9qZWN0aW9uKClcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbml0aWF0b3JJZ29MYXllclNvdXJjZVR5cGUgPT09ICd3bXMnKSB7XHJcbiAgICAgICAgICAgICAgICBhcHBsaWVkT2djRmlsdGVyID0gKFxyXG4gICAgICAgICAgICAgICAgICBpbml0aWF0b3JJZ29MYXllci5kYXRhU291cmNlIGFzIFdNU0RhdGFTb3VyY2VcclxuICAgICAgICAgICAgICAgICkub2wuZ2V0UGFyYW1zKCkuRklMVEVSO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAobC5kYXRhU291cmNlIGFzIFdNU0RhdGFTb3VyY2UpLm9sLnVwZGF0ZVBhcmFtcyh7XHJcbiAgICAgICAgICAgICAgICBGSUxURVI6IGFwcGxpZWRPZ2NGaWx0ZXJcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgbC5kYXRhU291cmNlIGluc3RhbmNlb2YgV01TRGF0YVNvdXJjZSAmJlxyXG4gICAgICAgICAgICBrZXkgPT09ICd0aW1lRmlsdGVyJ1xyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIChsLmRhdGFTb3VyY2UgYXMgVGltZUZpbHRlcmFibGVEYXRhU291cmNlKS5zZXRUaW1lRmlsdGVyKFxyXG4gICAgICAgICAgICAgIG5ld1ZhbHVlLFxyXG4gICAgICAgICAgICAgIGZhbHNlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGNvbnN0IGFwcGxpZWRUaW1lRmlsdGVyID0gKFxyXG4gICAgICAgICAgICAgIGluaXRpYXRvcklnb0xheWVyLm9sLmdldFNvdXJjZSgpIGFzIG9sU291cmNlSW1hZ2VXTVNcclxuICAgICAgICAgICAgKS5nZXRQYXJhbXMoKS5USU1FO1xyXG4gICAgICAgICAgICBsLmRhdGFTb3VyY2Uub2wudXBkYXRlUGFyYW1zKHsgVElNRTogYXBwbGllZFRpbWVGaWx0ZXIgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChyZXNvbHV0aW9uUHJvcGVydHlIYXNDaGFuZ2VkKSB7XHJcbiAgICAgIG1hcC52aWV3Q29udHJvbGxlci5yZXNvbHV0aW9uJC5uZXh0KG1hcC52aWV3Q29udHJvbGxlci5yZXNvbHV0aW9uJC52YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VkTGF5ZXJzLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9saW5rZWRMYXllcnMudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQU1qQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBS2pFLE9BQU8sRUFBUyxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3BFLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxLQUFZO0lBQ2pELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDcEMsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxHQUFZLEVBQUUsRUFBVTtJQUMxRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxNQUFNLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDdkUsQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsS0FBWSxFQUNaLFFBQTBCO0lBRTFCLElBQUksbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLE1BQU0sY0FBYyxHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JELElBQUksY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDM0MsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQ2hDLENBQUM7UUFDRixtQkFBbUIs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SSxDQUFDO3dCQUNuQixDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO29CQUM1RCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLDRCQUE0QixFQUFFLENBQUM7WUFDakMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVFLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9iamVjdEV2ZW50IH0gZnJvbSAnb2wvT2JqZWN0JztcclxuaW1wb3J0IG9sU291cmNlSW1hZ2VXTVMgZnJvbSAnb2wvc291cmNlL0ltYWdlV01TJztcclxuaW1wb3J0IHsgZ2V0VWlkIH0gZnJvbSAnb2wvdXRpbCc7XHJcblxyXG5pbXBvcnQge1xyXG4gIFRpbWVGaWx0ZXJhYmxlRGF0YVNvdXJjZSxcclxuICBUaW1lRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zXHJcbn0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMnO1xyXG5pbXBvcnQgeyBXTVNEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvd21zLWRhdGFzb3VyY2UnO1xyXG5pbXBvcnQgeyBPZ2NGaWx0ZXJXcml0ZXIgfSBmcm9tICcuLi8uLi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXInO1xyXG5pbXBvcnQge1xyXG4gIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlLFxyXG4gIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xyXG59IGZyb20gJy4uLy4uL2ZpbHRlci9zaGFyZWQvb2djLWZpbHRlci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBMYXllciwgTGlua2VkUHJvcGVydGllcyB9IGZyb20gJy4uLy4uL2xheWVyL3NoYXJlZC9sYXllcnMnO1xyXG5pbXBvcnQgdHlwZSB7IE1hcEJhc2UgfSBmcm9tICcuLi9zaGFyZWQvbWFwLmFic3RyYWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW5rZWRMYXllcnNPcHRpb25zKGxheWVyOiBMYXllcikge1xyXG4gIHJldHVybiBsYXllci5vcHRpb25zLmxpbmtlZExheWVycztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldElnb0xheWVyQnlMaW5rSWQobWFwOiBNYXBCYXNlLCBpZDogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIG1hcC5sYXllcnMuZmluZCgobCkgPT4gbC5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua0lkID09PSBpZCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBsYXllckhhc0xpbmtXaXRoUHJvcGVydHkoXHJcbiAgbGF5ZXI6IExheWVyLFxyXG4gIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzXHJcbik6IGJvb2xlYW4ge1xyXG4gIGxldCBoYXNMaW5rV2l0aFByb3BlcnR5ID0gZmFsc2U7XHJcbiAgY29uc3QgbGF5ZXJMTE9wdGlvbnMgPSBnZXRMaW5rZWRMYXllcnNPcHRpb25zKGxheWVyKTtcclxuICBpZiAobGF5ZXJMTE9wdGlvbnM/LmxpbmtzKSB7XHJcbiAgICBjb25zdCBsaW5rID0gbGF5ZXJMTE9wdGlvbnMubGlua3MuZmluZCgobCkgPT5cclxuICAgICAgbC5wcm9wZXJ0aWVzLmluY2x1ZGVzKHByb3BlcnR5KVxyXG4gICAgKTtcclxuICAgIGhhc0xpbmtXaXRoUHJvcGVydHkgPSBsaW5rID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuICByZXR1cm4gaGFzTGlua1dpdGhQcm9wZXJ0eTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxheWVySGFzTGlua0RlbGV0aW9uKGxheWVyOiBMYXllcik6IGJvb2xlYW4ge1xyXG4gIGxldCBoYXNMaW5rV2l0aFN5bmNlZERlbGV0ZSA9IGZhbHNlO1xyXG4gIGNvbnN0IGxheWVyTExPcHRpb25zID0gZ2V0TGlua2VkTGF5ZXJzT3B0aW9ucyhsYXllcik7XHJcbiAgaWYgKGxheWVyTExPcHRpb25zPy5saW5rcykge1xyXG4gICAgY29uc3QgbGluayA9IGxheWVyTExPcHRpb25zLmxpbmtzLmZpbmQoKGwpID0+IGwuc3luY2VkRGVsZXRlKTtcclxuICAgIGhhc0xpbmtXaXRoU3luY2VkRGVsZXRlID0gbGluayA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcbiAgcmV0dXJuIGhhc0xpbmtXaXRoU3luY2VkRGVsZXRlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um9vdFBhcmVudEJ5UHJvcGVydHkoXHJcbiAgbWFwOiBNYXBCYXNlLFxyXG4gIGxheWVyOiBMYXllcixcclxuICBwcm9wZXJ0eTogTGlua2VkUHJvcGVydGllc1xyXG4pOiBMYXllciB7XHJcbiAgbGV0IGxheWVyVG9Vc2UgPSBsYXllcjtcclxuICBsZXQgcGFyZW50TGF5ZXIgPSBsYXllclRvVXNlO1xyXG4gIGxldCBoYXNQYXJlbnRMYXllciA9IHRydWU7XHJcbiAgd2hpbGUgKGhhc1BhcmVudExheWVyKSB7XHJcbiAgICBsYXllclRvVXNlID0gcGFyZW50TGF5ZXI7XHJcbiAgICBwYXJlbnRMYXllciA9IGdldERpcmVjdFBhcmVudExheWVyQnlQcm9wZXJ0eShtYXAsIGxheWVyVG9Vc2UsIHByb3BlcnR5KTtcclxuICAgIGhhc1BhcmVudExheWVyID0gcGFyZW50TGF5ZXIgPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG4gIGlmICghaGFzUGFyZW50TGF5ZXIpIHtcclxuICAgIGlmICghbGF5ZXJIYXNMaW5rV2l0aFByb3BlcnR5KGxheWVyVG9Vc2UsIHByb3BlcnR5KSkge1xyXG4gICAgICBsYXllclRvVXNlID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gaGFzUGFyZW50TGF5ZXIgPyBwYXJlbnRMYXllciA6IGxheWVyVG9Vc2U7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXREaXJlY3RQYXJlbnRMYXllckJ5UHJvcGVydHkoXHJcbiAgbWFwOiBNYXBCYXNlLFxyXG4gIGxheWVyOiBMYXllcixcclxuICBwcm9wZXJ0eTogTGlua2VkUHJvcGVydGllc1xyXG4pOiBMYXllciB7XHJcbiAgaWYgKGxheWVyPy5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua0lkKSB7XHJcbiAgICBjb25zdCBjdXJyZW50TGlua0lkID0gbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua0lkO1xyXG4gICAgbGV0IHBhcmVudHMgPSBtYXAubGF5ZXJzLmZpbHRlcigocGwpID0+IHtcclxuICAgICAgY29uc3QgbGlua2VkTGF5ZXJzID0gcGwub3B0aW9ucy5saW5rZWRMYXllcnM7XHJcbiAgICAgIGlmIChsaW5rZWRMYXllcnMgJiYgbGlua2VkTGF5ZXJzLmxpbmtzKSB7XHJcbiAgICAgICAgY29uc3QgYSA9IGxpbmtlZExheWVycy5saW5rcy5maW5kKFxyXG4gICAgICAgICAgKGwpID0+XHJcbiAgICAgICAgICAgIGwubGlua2VkSWRzLmluY2x1ZGVzKGN1cnJlbnRMaW5rSWQpICYmXHJcbiAgICAgICAgICAgIGwucHJvcGVydGllcy5pbmNsdWRlcyhwcm9wZXJ0eSlcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBhO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChwYXJlbnRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgY29uc29sZS53YXJuKGBZb3VyIGxheWVyICR7XHJcbiAgICAgICAgbGF5ZXIudGl0bGUgfHwgbGF5ZXIuaWRcclxuICAgICAgfSBtdXN0IG9ubHkgaGF2ZSAxIHBhcmVudCAoJHtwYXJlbnRzLm1hcCgocCkgPT4gcC50aXRsZSB8fCBwLmlkKX0pXHJcbiAgICAgICAgICAgICwgVGhlIGZpcnN0IHBhcmVudCAoJHtcclxuICAgICAgICAgICAgICBwYXJlbnRzWzBdLnRpdGxlIHx8IHBhcmVudHNbMF0uaWRcclxuICAgICAgICAgICAgfSkgd2lsbCBiZSB1c2UgdG8gc3luYyBwcm9wZXJ0aWVzYCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGFyZW50c1swXTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXREaXJlY3RDaGlsZExheWVyc0J5UHJvcGVydHkoXHJcbiAgbWFwOiBNYXBCYXNlLFxyXG4gIGxheWVyOiBMYXllcixcclxuICBwcm9wZXJ0eTogTGlua2VkUHJvcGVydGllc1xyXG4pOiBMYXllcltdIHtcclxuICBsZXQgbGlua2VkSWRzID0gW107XHJcbiAgaWYgKGxheWVyPy5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua3MpIHtcclxuICAgIGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtzXHJcbiAgICAgIC5maWx0ZXIoKGwpID0+IGwucHJvcGVydGllcy5pbmNsdWRlcyhwcm9wZXJ0eSkpXHJcbiAgICAgIC5tYXAoKGxpbmspID0+IHtcclxuICAgICAgICBsaW5rZWRJZHMgPSBsaW5rZWRJZHMuY29uY2F0KGxpbmsubGlua2VkSWRzKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIHJldHVybiBsaW5rZWRJZHMubWFwKChsaWQpID0+IGdldElnb0xheWVyQnlMaW5rSWQobWFwLCBsaWQpKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbENoaWxkTGF5ZXJzQnlQcm9wZXJ0eShcclxuICBtYXA6IE1hcEJhc2UsXHJcbiAgbGF5ZXI6IExheWVyLFxyXG4gIGtub3duQ2hpbGRMYXllcnM6IExheWVyW10sXHJcbiAgcHJvcGVydHk6IExpbmtlZFByb3BlcnRpZXNcclxuKTogTGF5ZXJbXSB7XHJcbiAgbGV0IGNoaWxkTGF5ZXJzID0gZ2V0RGlyZWN0Q2hpbGRMYXllcnNCeVByb3BlcnR5KG1hcCwgbGF5ZXIsIHByb3BlcnR5KTtcclxuICBjaGlsZExheWVycy5tYXAoKGNsKSA9PiB7XHJcbiAgICBrbm93bkNoaWxkTGF5ZXJzLnB1c2goY2wpO1xyXG4gICAgY29uc3QgZGlyZWN0Q2hpbGRMYXllcnMgPSBnZXREaXJlY3RDaGlsZExheWVyc0J5UHJvcGVydHkobWFwLCBjbCwgcHJvcGVydHkpO1xyXG4gICAgaWYgKGRpcmVjdENoaWxkTGF5ZXJzKSB7XHJcbiAgICAgIGdldEFsbENoaWxkTGF5ZXJzQnlQcm9wZXJ0eShtYXAsIGNsLCBrbm93bkNoaWxkTGF5ZXJzLCBwcm9wZXJ0eSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIGtub3duQ2hpbGRMYXllcnM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRSb290UGFyZW50QnlEZWxldGlvbihtYXA6IE1hcEJhc2UsIGxheWVyOiBMYXllcik6IExheWVyIHtcclxuICBsZXQgbGF5ZXJUb1VzZSA9IGxheWVyO1xyXG4gIGxldCBwYXJlbnRMYXllciA9IGxheWVyVG9Vc2U7XHJcbiAgbGV0IGhhc1BhcmVudExheWVyID0gdHJ1ZTtcclxuICB3aGlsZSAoaGFzUGFyZW50TGF5ZXIpIHtcclxuICAgIGxheWVyVG9Vc2UgPSBwYXJlbnRMYXllcjtcclxuICAgIHBhcmVudExheWVyID0gZ2V0RGlyZWN0UGFyZW50TGF5ZXJCeURlbGV0aW9uKG1hcCwgbGF5ZXJUb1VzZSk7XHJcbiAgICBoYXNQYXJlbnRMYXllciA9IHBhcmVudExheWVyID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuICBpZiAoIWhhc1BhcmVudExheWVyKSB7XHJcbiAgICBpZiAoIWxheWVySGFzTGlua0RlbGV0aW9uKGxheWVyVG9Vc2UpKSB7XHJcbiAgICAgIGxheWVyVG9Vc2UgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBoYXNQYXJlbnRMYXllciA/IHBhcmVudExheWVyIDogbGF5ZXJUb1VzZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldERpcmVjdFBhcmVudExheWVyQnlEZWxldGlvbihcclxuICBtYXA6IE1hcEJhc2UsXHJcbiAgbGF5ZXI6IExheWVyXHJcbik6IExheWVyIHtcclxuICBpZiAobGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtJZCkge1xyXG4gICAgY29uc3QgY3VycmVudExpbmtJZCA9IGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtJZDtcclxuICAgIGxldCBwYXJlbnRzID0gbWFwLmxheWVycy5maWx0ZXIoKHBsKSA9PiB7XHJcbiAgICAgIGNvbnN0IGxpbmtlZExheWVycyA9IHBsLm9wdGlvbnMubGlua2VkTGF5ZXJzO1xyXG4gICAgICBpZiAobGlua2VkTGF5ZXJzICYmIGxpbmtlZExheWVycy5saW5rcykge1xyXG4gICAgICAgIGNvbnN0IGEgPSBsaW5rZWRMYXllcnMubGlua3MuZmluZChcclxuICAgICAgICAgIChsKSA9PiBsLmxpbmtlZElkcy5pbmNsdWRlcyhjdXJyZW50TGlua0lkKSAmJiBsLnN5bmNlZERlbGV0ZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIGE7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKHBhcmVudHMubGVuZ3RoID4gMSkge1xyXG4gICAgICBjb25zb2xlLndhcm4oYFlvdXIgbGF5ZXIgJHtcclxuICAgICAgICBsYXllci50aXRsZSB8fCBsYXllci5pZFxyXG4gICAgICB9IG11c3Qgb25seSBoYXZlIDEgcGFyZW50ICgke3BhcmVudHMubWFwKChwKSA9PiBwLnRpdGxlIHx8IHAuaWQpfSlcclxuICAgICAgICAgICwgVGhlIGZpcnN0IHBhcmVudCAoJHtcclxuICAgICAgICAgICAgcGFyZW50c1swXS50aXRsZSB8fCBwYXJlbnRzWzBdLmlkXHJcbiAgICAgICAgICB9KSB3aWxsIGJlIHVzZSB0byBzeW5jIHByb3BlcnRpZXNgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXJlbnRzWzBdO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldERpcmVjdENoaWxkTGF5ZXJzQnlEZWxldGlvbihcclxuICBtYXA6IE1hcEJhc2UsXHJcbiAgbGF5ZXI6IExheWVyXHJcbik6IExheWVyW10ge1xyXG4gIGxldCBsaW5rZWRJZHMgPSBbXTtcclxuICBpZiAobGF5ZXI/Lm9wdGlvbnMubGlua2VkTGF5ZXJzPy5saW5rcykge1xyXG4gICAgbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua3NcclxuICAgICAgLmZpbHRlcigobCkgPT4gbC5zeW5jZWREZWxldGUpXHJcbiAgICAgIC5tYXAoKGxpbmspID0+IHtcclxuICAgICAgICBsaW5rZWRJZHMgPSBsaW5rZWRJZHMuY29uY2F0KGxpbmsubGlua2VkSWRzKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIHJldHVybiBsaW5rZWRJZHMubWFwKChsaWQpID0+IGdldElnb0xheWVyQnlMaW5rSWQobWFwLCBsaWQpKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbENoaWxkTGF5ZXJzQnlEZWxldGlvbihcclxuICBtYXA6IE1hcEJhc2UsXHJcbiAgbGF5ZXI6IExheWVyLFxyXG4gIGtub3duQ2hpbGRMYXllcnM6IExheWVyW11cclxuKTogTGF5ZXJbXSB7XHJcbiAgbGV0IGNoaWxkTGF5ZXJzID0gZ2V0RGlyZWN0Q2hpbGRMYXllcnNCeURlbGV0aW9uKG1hcCwgbGF5ZXIpO1xyXG4gIGNoaWxkTGF5ZXJzLm1hcCgoY2wpID0+IHtcclxuICAgIGtub3duQ2hpbGRMYXllcnMucHVzaChjbCk7XHJcbiAgICBjb25zdCBkaXJlY3RDaGlsZExheWVycyA9IGdldERpcmVjdENoaWxkTGF5ZXJzQnlEZWxldGlvbihtYXAsIGNsKTtcclxuICAgIGlmIChkaXJlY3RDaGlsZExheWVycykge1xyXG4gICAgICBnZXRBbGxDaGlsZExheWVyc0J5RGVsZXRpb24obWFwLCBjbCwga25vd25DaGlsZExheWVycyk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIGtub3duQ2hpbGRMYXllcnM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpbml0TGF5ZXJTeW5jRnJvbVJvb3RQYXJlbnRMYXllcnMoXHJcbiAgbWFwOiBNYXBCYXNlLFxyXG4gIGxheWVyczogTGF5ZXJbXVxyXG4pIHtcclxuICBjb25zdCByb290TGF5ZXJzQnlQcm9wZXJ0eSA9IHt9O1xyXG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhMaW5rZWRQcm9wZXJ0aWVzKTtcclxuICBrZXlzLm1hcCgoaykgPT4ge1xyXG4gICAgcm9vdExheWVyc0J5UHJvcGVydHlbTGlua2VkUHJvcGVydGllc1trXV0gPSBbXTtcclxuICB9KTtcclxuICBsYXllcnNcclxuICAgIC5maWx0ZXIoKGwpID0+IGdldExpbmtlZExheWVyc09wdGlvbnMobCkpXHJcbiAgICAubWFwKChsKSA9PiB7XHJcbiAgICAgIGtleXMubWFwKChrZXkpID0+IHtcclxuICAgICAgICBjb25zdCBrID0gTGlua2VkUHJvcGVydGllc1trZXldO1xyXG4gICAgICAgIGNvbnN0IHBsYnAgPSBnZXRSb290UGFyZW50QnlQcm9wZXJ0eShtYXAsIGwsIGsgYXMgTGlua2VkUHJvcGVydGllcyk7XHJcbiAgICAgICAgY29uc3QgbGF5ZXJzID0gcm9vdExheWVyc0J5UHJvcGVydHlba107XHJcbiAgICAgICAgY29uc3QgbGF5ZXJzSWQgPSBsYXllcnMubWFwKChsKSA9PiBsLmlkKTtcclxuICAgICAgICBpZiAocGxicCAmJiAhbGF5ZXJzSWQuaW5jbHVkZXMocGxicC5pZCkpIHtcclxuICAgICAgICAgIHJvb3RMYXllcnNCeVByb3BlcnR5W2tdLnB1c2gocGxicCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIE9iamVjdC5rZXlzKHJvb3RMYXllcnNCeVByb3BlcnR5KS5tYXAoKGspID0+IHtcclxuICAgIGNvbnN0IGxheWVycyA9IHJvb3RMYXllcnNCeVByb3BlcnR5W2tdO1xyXG4gICAgbGF5ZXJzLm1hcCgobDogTGF5ZXIpID0+IGwub2wubm90aWZ5KGssIHVuZGVmaW5lZCkpO1xyXG4gIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlTGF5ZXJQcm9wZXJ0eUNoYW5nZShcclxuICBtYXA6IE1hcEJhc2UsXHJcbiAgcHJvcGVydHlDaGFuZ2U6IE9iamVjdEV2ZW50LFxyXG4gIGluaXRpYXRvcklnb0xheWVyOiBMYXllclxyXG4pIHtcclxuICBpZiAoIXByb3BlcnR5Q2hhbmdlKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIGNvbnN0IG9nY0ZpbHRlcldyaXRlciA9IG5ldyBPZ2NGaWx0ZXJXcml0ZXIoKTtcclxuICBsZXQgaXNMYXllclByb3BlcnR5ID0gdHJ1ZTtcclxuICBsZXQgaXNEYXRhc291cmNlUHJvcGVydHkgPSB0cnVlO1xyXG4gIGNvbnN0IGtleSA9IHByb3BlcnR5Q2hhbmdlLmtleTtcclxuICBsZXQgbmV3VmFsdWU7XHJcbiAgaWYgKGtleSA9PT0gJ29nY0ZpbHRlcnMnKSB7XHJcbiAgICBpc0xheWVyUHJvcGVydHkgPSBmYWxzZTtcclxuICAgIGlzRGF0YXNvdXJjZVByb3BlcnR5ID0gdHJ1ZTtcclxuICAgIG5ld1ZhbHVlID0gKFxyXG4gICAgICBpbml0aWF0b3JJZ29MYXllci5kYXRhU291cmNlLm9wdGlvbnMgYXMgT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zXHJcbiAgICApLm9nY0ZpbHRlcnM7XHJcbiAgfSBlbHNlIGlmIChrZXkgPT09ICd0aW1lRmlsdGVyJykge1xyXG4gICAgaXNMYXllclByb3BlcnR5ID0gZmFsc2U7XHJcbiAgICBpc0RhdGFzb3VyY2VQcm9wZXJ0eSA9IHRydWU7XHJcbiAgICBuZXdWYWx1ZSA9IChcclxuICAgICAgaW5pdGlhdG9ySWdvTGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zIGFzIFRpbWVGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnNcclxuICAgICkudGltZUZpbHRlcjtcclxuICB9IGVsc2Uge1xyXG4gICAgaXNMYXllclByb3BlcnR5ID0gdHJ1ZTtcclxuICAgIGlzRGF0YXNvdXJjZVByb3BlcnR5ID0gZmFsc2U7XHJcbiAgICBuZXdWYWx1ZSA9IGluaXRpYXRvcklnb0xheWVyLm9sLmdldChrZXkpO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgaW5pdGlhdG9yTGlua2VkTGF5ZXJzT3B0aW9ucyA9XHJcbiAgICBnZXRMaW5rZWRMYXllcnNPcHRpb25zKGluaXRpYXRvcklnb0xheWVyKTtcclxuICBpZiAoaW5pdGlhdG9yTGlua2VkTGF5ZXJzT3B0aW9ucykge1xyXG4gICAgbGV0IHJvb3RQYXJlbnRCeVByb3BlcnR5ID0gZ2V0Um9vdFBhcmVudEJ5UHJvcGVydHkoXHJcbiAgICAgIG1hcCxcclxuICAgICAgaW5pdGlhdG9ySWdvTGF5ZXIsXHJcbiAgICAgIGtleSBhcyBMaW5rZWRQcm9wZXJ0aWVzXHJcbiAgICApO1xyXG4gICAgaWYgKCFyb290UGFyZW50QnlQcm9wZXJ0eSkge1xyXG4gICAgICByb290UGFyZW50QnlQcm9wZXJ0eSA9IGluaXRpYXRvcklnb0xheWVyO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNsYnAgPSBbcm9vdFBhcmVudEJ5UHJvcGVydHldO1xyXG4gICAgZ2V0QWxsQ2hpbGRMYXllcnNCeVByb3BlcnR5KFxyXG4gICAgICBtYXAsXHJcbiAgICAgIHJvb3RQYXJlbnRCeVByb3BlcnR5LFxyXG4gICAgICBjbGJwLFxyXG4gICAgICBrZXkgYXMgTGlua2VkUHJvcGVydGllc1xyXG4gICAgKTtcclxuXHJcbiAgICBsZXQgcmVzb2x1dGlvblByb3BlcnR5SGFzQ2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgY29uc3QgaW5pdGlhdG9ySWdvTGF5ZXJTb3VyY2VUeXBlID1cclxuICAgICAgaW5pdGlhdG9ySWdvTGF5ZXIub3B0aW9ucy5zb3VyY2Uub3B0aW9ucy50eXBlO1xyXG4gICAgY29uc3QgaW5pdGlhdG9ySWdvTGF5ZXJPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMgPSBpbml0aWF0b3JJZ29MYXllclxyXG4gICAgICAuZGF0YVNvdXJjZS5vcHRpb25zIGFzIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucztcclxuICAgIGNsYnAubWFwKChsKSA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBpbml0aWF0b3JJZ29MYXllciAmJlxyXG4gICAgICAgIGwgJiZcclxuICAgICAgICBnZXRVaWQoaW5pdGlhdG9ySWdvTGF5ZXIub2wpICE9PSBnZXRVaWQobD8ub2wpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IGxMYXllclR5cGUgPSBsLm9wdGlvbnMuc291cmNlLm9wdGlvbnMudHlwZTtcclxuICAgICAgICBpZiAoaXNMYXllclByb3BlcnR5KSB7XHJcbiAgICAgICAgICBsLm9sLnNldChrZXksIG5ld1ZhbHVlLCB0cnVlKTtcclxuICAgICAgICAgIGlmIChrZXkgPT09ICd2aXNpYmxlJykge1xyXG4gICAgICAgICAgICBsLnZpc2libGUkLm5leHQobmV3VmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGtleSA9PT0gJ21pblJlc29sdXRpb24nIHx8IGtleSA9PT0gJ21heFJlc29sdXRpb24nKSB7XHJcbiAgICAgICAgICAgIHJlc29sdXRpb25Qcm9wZXJ0eUhhc0NoYW5nZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoaXNEYXRhc291cmNlUHJvcGVydHkpIHtcclxuICAgICAgICAgIGlmIChrZXkgPT09ICdvZ2NGaWx0ZXJzJykge1xyXG4gICAgICAgICAgICAobC5kYXRhU291cmNlIGFzIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlKS5zZXRPZ2NGaWx0ZXJzKFxyXG4gICAgICAgICAgICAgIG5ld1ZhbHVlLFxyXG4gICAgICAgICAgICAgIGZhbHNlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChsTGF5ZXJUeXBlID09PSAnd2ZzJykge1xyXG4gICAgICAgICAgICAgIGwub2wuZ2V0U291cmNlKCkucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChsTGF5ZXJUeXBlID09PSAnd21zJykge1xyXG4gICAgICAgICAgICAgIGxldCBhcHBsaWVkT2djRmlsdGVyO1xyXG4gICAgICAgICAgICAgIGlmIChpbml0aWF0b3JJZ29MYXllclNvdXJjZVR5cGUgPT09ICd3ZnMnKSB7XHJcbiAgICAgICAgICAgICAgICBhcHBsaWVkT2djRmlsdGVyID0gb2djRmlsdGVyV3JpdGVyLmhhbmRsZU9nY0ZpbHRlcnNBcHBsaWVkVmFsdWUoXHJcbiAgICAgICAgICAgICAgICAgIGluaXRpYXRvcklnb0xheWVyT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zLFxyXG4gICAgICAgICAgICAgICAgICAoaW5pdGlhdG9ySWdvTGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zIGFzIGFueSlcclxuICAgICAgICAgICAgICAgICAgICAuZmllbGROYW1lR2VvbWV0cnksXHJcbiAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgbWFwLnZpZXdDb250cm9sbGVyLmdldE9sUHJvamVjdGlvbigpXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5pdGlhdG9ySWdvTGF5ZXJTb3VyY2VUeXBlID09PSAnd21zJykge1xyXG4gICAgICAgICAgICAgICAgYXBwbGllZE9nY0ZpbHRlciA9IChcclxuICAgICAgICAgICAgICAgICAgaW5pdGlhdG9ySWdvTGF5ZXIuZGF0YVNvdXJjZSBhcyBXTVNEYXRhU291cmNlXHJcbiAgICAgICAgICAgICAgICApLm9sLmdldFBhcmFtcygpLkZJTFRFUjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgKGwuZGF0YVNvdXJjZSBhcyBXTVNEYXRhU291cmNlKS5vbC51cGRhdGVQYXJhbXMoe1xyXG4gICAgICAgICAgICAgICAgRklMVEVSOiBhcHBsaWVkT2djRmlsdGVyXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgIGwuZGF0YVNvdXJjZSBpbnN0YW5jZW9mIFdNU0RhdGFTb3VyY2UgJiZcclxuICAgICAgICAgICAga2V5ID09PSAndGltZUZpbHRlcidcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAobC5kYXRhU291cmNlIGFzIFRpbWVGaWx0ZXJhYmxlRGF0YVNvdXJjZSkuc2V0VGltZUZpbHRlcihcclxuICAgICAgICAgICAgICBuZXdWYWx1ZSxcclxuICAgICAgICAgICAgICBmYWxzZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCBhcHBsaWVkVGltZUZpbHRlciA9IChcclxuICAgICAgICAgICAgICBpbml0aWF0b3JJZ29MYXllci5vbC5nZXRTb3VyY2UoKSBhcyBvbFNvdXJjZUltYWdlV01TXHJcbiAgICAgICAgICAgICkuZ2V0UGFyYW1zKCkuVElNRTtcclxuICAgICAgICAgICAgbC5kYXRhU291cmNlLm9sLnVwZGF0ZVBhcmFtcyh7IFRJTUU6IGFwcGxpZWRUaW1lRmlsdGVyIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAocmVzb2x1dGlvblByb3BlcnR5SGFzQ2hhbmdlZCkge1xyXG4gICAgICBtYXAudmlld0NvbnRyb2xsZXIucmVzb2x1dGlvbiQubmV4dChtYXAudmlld0NvbnRyb2xsZXIucmVzb2x1dGlvbiQudmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,11 +1,11 @@
1
1
  import { Directive, EventEmitter, Input, Output, Self } from '@angular/core';
2
- import { MediaService } from '@igo2/core';
2
+ import { MediaService } from '@igo2/core/media';
3
3
  import { unByKey } from 'ol/Observable';
4
4
  import { transform } from 'ol/proj';
5
5
  import { MapBrowserComponent } from '../../map/map-browser/map-browser.component';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "../../map/map-browser/map-browser.component";
8
- import * as i2 from "@igo2/core";
8
+ import * as i2 from "@igo2/core/media";
9
9
  /**
10
10
  * This directive return the pointer coordinate (on click or pointermove)
11
11
  * in [longitude, latitude], delayed by in input (pointerMoveDelay)
@@ -103,19 +103,20 @@ export class PointerPositionDirective {
103
103
  this.pointerPositionCoord.emit(lonlat);
104
104
  }, delay);
105
105
  }
106
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PointerPositionDirective, deps: [{ token: i1.MapBrowserComponent, self: true }, { token: i2.MediaService }], target: i0.ɵɵFactoryTarget.Directive });
107
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: PointerPositionDirective, selector: "[igoPointerPosition]", inputs: { pointerPositionDelay: "pointerPositionDelay" }, outputs: { pointerPositionCoord: "pointerPositionCoord" }, ngImport: i0 });
106
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PointerPositionDirective, deps: [{ token: i1.MapBrowserComponent, self: true }, { token: i2.MediaService }], target: i0.ɵɵFactoryTarget.Directive });
107
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.4", type: PointerPositionDirective, isStandalone: true, selector: "[igoPointerPosition]", inputs: { pointerPositionDelay: "pointerPositionDelay" }, outputs: { pointerPositionCoord: "pointerPositionCoord" }, ngImport: i0 });
108
108
  }
109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PointerPositionDirective, decorators: [{
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PointerPositionDirective, decorators: [{
110
110
  type: Directive,
111
111
  args: [{
112
- selector: '[igoPointerPosition]'
112
+ selector: '[igoPointerPosition]',
113
+ standalone: true
113
114
  }]
114
- }], ctorParameters: function () { return [{ type: i1.MapBrowserComponent, decorators: [{
115
+ }], ctorParameters: () => [{ type: i1.MapBrowserComponent, decorators: [{
115
116
  type: Self
116
- }] }, { type: i2.MediaService }]; }, propDecorators: { pointerPositionDelay: [{
117
+ }] }, { type: i2.MediaService }], propDecorators: { pointerPositionDelay: [{
117
118
  type: Input
118
119
  }], pointerPositionCoord: [{
119
120
  type: Output
120
121
  }] } });
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXBvaW50ZXItcG9zaXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9tYXAtcG9pbnRlci1wb3NpdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUcxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFcEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7Ozs7QUFHbEY7Ozs7R0FJRztBQUlILE1BQU0sT0FBTyx3QkFBd0I7SUFvQ2pCO0lBQ1I7SUFwQ0Ysa0JBQWtCLENBQUM7SUFFM0I7O09BRUc7SUFDSyxtQkFBbUIsQ0FBQztJQUU1Qjs7T0FFRztJQUNLLGdCQUFnQixDQUFDO0lBRXpCOztPQUVHO0lBQ00sb0JBQW9CLEdBQVcsSUFBSSxDQUFDO0lBRTdDOztPQUVHO0lBQ08sb0JBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7SUFFdEU7OztPQUdHO0lBQ0gsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBUSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQWMsQ0FBQyxVQUFVLENBQUM7SUFDbkQsQ0FBQztJQUVELFlBQ2tCLFNBQThCLEVBQ3RDLFlBQTBCO1FBRGxCLGNBQVMsR0FBVCxTQUFTLENBQXFCO1FBQ3RDLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBQ2pDLENBQUM7SUFFSjs7O09BR0c7SUFDSCxRQUFRO1FBQ04sSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSyxzQkFBc0I7UUFDNUIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FDdkMsYUFBYSxFQUNiLENBQUMsS0FBa0MsRUFBRSxFQUFFLENBQ3JDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUN4RCxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ssZ0JBQWdCO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQ3BDLGFBQWEsRUFDYixDQUFDLEtBQWtDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUN0RSxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ssd0JBQXdCO1FBQzlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNLLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7O09BR0c7SUFDSyxjQUFjLENBQUMsS0FBa0MsRUFBRSxLQUFhO1FBQ3RFLElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQ3ZELE9BQU87U0FDUjtRQUNELElBQUksT0FBTyxJQUFJLENBQUMsa0JBQWtCLEtBQUssV0FBVyxFQUFFO1lBQ2xELHNDQUFzQztZQUN0QyxZQUFZLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7U0FDdkM7UUFFRCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQ3RCLEtBQUssQ0FBQyxVQUFVLEVBQ2hCLElBQUksQ0FBQyxhQUFhLEVBQ2xCLFdBQVcsQ0FDUSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ1osQ0FBQzt3R0FuSFUsd0JBQXdCOzRGQUF4Qix3QkFBd0I7OzRGQUF4Qix3QkFBd0I7a0JBSHBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtpQkFDakM7OzBCQXFDSSxJQUFJO3VFQXBCRSxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBS0ksb0JBQW9CO3NCQUE3QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBEaXJlY3RpdmUsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNlbGZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE1lZGlhU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xyXG5cclxuaW1wb3J0IE1hcEJyb3dzZXJQb2ludGVyRXZlbnQgZnJvbSAnb2wvTWFwQnJvd3NlckV2ZW50JztcclxuaW1wb3J0IHsgdW5CeUtleSB9IGZyb20gJ29sL09ic2VydmFibGUnO1xyXG5pbXBvcnQgeyB0cmFuc2Zvcm0gfSBmcm9tICdvbC9wcm9qJztcclxuXHJcbmltcG9ydCB7IE1hcEJyb3dzZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tYXAvbWFwLWJyb3dzZXIvbWFwLWJyb3dzZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9tYXAnO1xyXG5cclxuLyoqXHJcbiAqIFRoaXMgZGlyZWN0aXZlIHJldHVybiB0aGUgcG9pbnRlciBjb29yZGluYXRlIChvbiBjbGljayBvciBwb2ludGVybW92ZSlcclxuICogaW4gW2xvbmdpdHVkZSwgbGF0aXR1ZGVdLCBkZWxheWVkIGJ5IGluIGlucHV0IChwb2ludGVyTW92ZURlbGF5KVxyXG4gKiB0byBhdm9pZCB0b28gbWFueSBlbWl0dGVkIHZhbHVlcy5cclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2lnb1BvaW50ZXJQb3NpdGlvbl0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQb2ludGVyUG9zaXRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBsYXN0VGltZW91dFJlcXVlc3Q7XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3RlbmVyIHRvIHRoZSBwb2ludGVyIG1vdmUgZXZlbnRcclxuICAgKi9cclxuICBwcml2YXRlIHBvaW50ZXJNb3ZlTGlzdGVuZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3RlbmVyIHRvIHRoZSBtYXAgY2xpY2sgZXZlbnRcclxuICAgKi9cclxuICBwcml2YXRlIG1hcENsaWNrTGlzdGVuZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGF5IGJlZm9yZSBlbWl0dGluZyBhbiBldmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHBvaW50ZXJQb3NpdGlvbkRlbGF5OiBudW1iZXIgPSAxMDAwO1xyXG5cclxuICAvKipcclxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHBvaW50ZXIgbW92ZSwgZGVsYXllZCBieSBwb2ludGVyTW92ZURlbGF5XHJcbiAgICovXHJcbiAgQE91dHB1dCgpIHBvaW50ZXJQb3NpdGlvbkNvb3JkID0gbmV3IEV2ZW50RW1pdHRlcjxbbnVtYmVyLCBudW1iZXJdPigpO1xyXG5cclxuICAvKipcclxuICAgKiBJR08gbWFwXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50Lm1hcDtcclxuICB9XHJcblxyXG4gIGdldCBtYXBQcm9qZWN0aW9uKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKHRoaXMuY29tcG9uZW50Lm1hcCBhcyBJZ29NYXApLnByb2plY3Rpb247XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBTZWxmKCkgcHJpdmF0ZSBjb21wb25lbnQ6IE1hcEJyb3dzZXJDb21wb25lbnQsXHJcbiAgICBwcml2YXRlIG1lZGlhU2VydmljZTogTWVkaWFTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBTdGFydCBsaXN0ZW5pbmcgdG8gcG9pbnRlcm1vdmVcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubGlzdGVuVG9NYXBQb2ludGVyTW92ZSgpO1xyXG4gICAgdGhpcy5saXN0ZW5Ub01hcENsaWNrKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdG9wIGxpc3RlbmluZyB0byBwb2ludGVybW92ZVxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy51bmxpc3RlblRvTWFwUG9pbnRlck1vdmUoKTtcclxuICAgIHRoaXMudW5saXN0ZW5Ub01hcENsaWNrKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPbiBtYXAgcG9pbnRlcm1vdmVcclxuICAgKi9cclxuICBwcml2YXRlIGxpc3RlblRvTWFwUG9pbnRlck1vdmUoKSB7XHJcbiAgICB0aGlzLnBvaW50ZXJNb3ZlTGlzdGVuZXIgPSB0aGlzLm1hcC5vbC5vbihcclxuICAgICAgJ3BvaW50ZXJtb3ZlJyxcclxuICAgICAgKGV2ZW50OiBNYXBCcm93c2VyUG9pbnRlckV2ZW50PGFueT4pID0+XHJcbiAgICAgICAgdGhpcy5vblBvaW50ZXJFdmVudChldmVudCwgdGhpcy5wb2ludGVyUG9zaXRpb25EZWxheSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPbiBtYXAgY2xpY2tcclxuICAgKi9cclxuICBwcml2YXRlIGxpc3RlblRvTWFwQ2xpY2soKSB7XHJcbiAgICB0aGlzLm1hcENsaWNrTGlzdGVuZXIgPSB0aGlzLm1hcC5vbC5vbihcclxuICAgICAgJ3NpbmdsZWNsaWNrJyxcclxuICAgICAgKGV2ZW50OiBNYXBCcm93c2VyUG9pbnRlckV2ZW50PGFueT4pID0+IHRoaXMub25Qb2ludGVyRXZlbnQoZXZlbnQsIDApXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RvcCBsaXN0ZW5pbmcgZm9yIG1hcCBwb2ludGVybW92ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgdW5saXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCkge1xyXG4gICAgdW5CeUtleSh0aGlzLnBvaW50ZXJNb3ZlTGlzdGVuZXIpO1xyXG4gICAgdGhpcy5wb2ludGVyTW92ZUxpc3RlbmVyID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RvcCBsaXN0ZW5pbmcgZm9yIG1hcCBjbGlja3NcclxuICAgKi9cclxuICBwcml2YXRlIHVubGlzdGVuVG9NYXBDbGljaygpIHtcclxuICAgIHRoaXMubWFwQ2xpY2tMaXN0ZW5lciA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGVtaXQgZGVsYXllZCBjb29yZGluYXRlIChsb25naXR1ZGUsIGxhdGl0dWRlIGFycmF5KSBiYXNlZCBvbiBwb2ludGVyTW92ZURlbGF5IG9yIG9uIGNsaWNrXHJcbiAgICogQHBhcmFtIGV2ZW50IE9MIG1hcCBicm93c2VyIHBvaW50ZXIgZXZlbnRcclxuICAgKi9cclxuICBwcml2YXRlIG9uUG9pbnRlckV2ZW50KGV2ZW50OiBNYXBCcm93c2VyUG9pbnRlckV2ZW50PGFueT4sIGRlbGF5OiBudW1iZXIpIHtcclxuICAgIGlmIChldmVudC5kcmFnZ2luZyB8fCB0aGlzLm1lZGlhU2VydmljZS5pc1RvdWNoU2NyZWVuKCkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiB0aGlzLmxhc3RUaW1lb3V0UmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgLy8gY2FuY2VsIHRpbWVvdXQgd2hlbiB0aGUgbW91c2UgbW92ZXNcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubGFzdFRpbWVvdXRSZXF1ZXN0KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBsb25sYXQgPSB0cmFuc2Zvcm0oXHJcbiAgICAgIGV2ZW50LmNvb3JkaW5hdGUsXHJcbiAgICAgIHRoaXMubWFwUHJvamVjdGlvbixcclxuICAgICAgJ0VQU0c6NDMyNidcclxuICAgICkgYXMgW251bWJlciwgbnVtYmVyXTtcclxuICAgIHRoaXMubGFzdFRpbWVvdXRSZXF1ZXN0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMucG9pbnRlclBvc2l0aW9uQ29vcmQuZW1pdChsb25sYXQpO1xyXG4gICAgfSwgZGVsYXkpO1xyXG4gIH1cclxufVxyXG4iXX0=
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXBvaW50ZXItcG9zaXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9tYXAtcG9pbnRlci1wb3NpdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVwQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7OztBQUdsRjs7OztHQUlHO0FBS0gsTUFBTSxPQUFPLHdCQUF3QjtJQW9DakI7SUFDUjtJQXBDRixrQkFBa0IsQ0FBQztJQUUzQjs7T0FFRztJQUNLLG1CQUFtQixDQUFDO0lBRTVCOztPQUVHO0lBQ0ssZ0JBQWdCLENBQUM7SUFFekI7O09BRUc7SUFDTSxvQkFBb0IsR0FBVyxJQUFJLENBQUM7SUFFN0M7O09BRUc7SUFDTyxvQkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztJQUV0RTs7O09BR0c7SUFDSCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBYyxDQUFDLFVBQVUsQ0FBQztJQUNuRCxDQUFDO0lBRUQsWUFDa0IsU0FBOEIsRUFDdEMsWUFBMEI7UUFEbEIsY0FBUyxHQUFULFNBQVMsQ0FBcUI7UUFDdEMsaUJBQVksR0FBWixZQUFZLENBQWM7SUFDakMsQ0FBQztJQUVKOzs7T0FHRztJQUNILFFBQVE7UUFDTixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVztRQUNULElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNLLHNCQUFzQjtRQUM1QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUN2QyxhQUFhLEVBQ2IsQ0FBQyxLQUFrQyxFQUFFLEVBQUUsQ0FDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQ3hELENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSyxnQkFBZ0I7UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FDcEMsYUFBYSxFQUNiLENBQUMsS0FBa0MsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQ3RFLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSyx3QkFBd0I7UUFDOUIsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGNBQWMsQ0FBQyxLQUFrQyxFQUFFLEtBQWE7UUFDdEUsSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztZQUN4RCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksT0FBTyxJQUFJLENBQUMsa0JBQWtCLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDbkQsc0NBQXNDO1lBQ3RDLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUN0QixLQUFLLENBQUMsVUFBVSxFQUNoQixJQUFJLENBQUMsYUFBYSxFQUNsQixXQUFXLENBQ1EsQ0FBQztRQUN0QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUN4QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNaLENBQUM7dUdBbkhVLHdCQUF3QjsyRkFBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQUpwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBcUNJLElBQUk7b0VBcEJFLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFLSSxvQkFBb0I7c0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIERpcmVjdGl2ZSxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgU2VsZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTWVkaWFTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9tZWRpYSc7XHJcblxyXG5pbXBvcnQgTWFwQnJvd3NlclBvaW50ZXJFdmVudCBmcm9tICdvbC9NYXBCcm93c2VyRXZlbnQnO1xyXG5pbXBvcnQgeyB1bkJ5S2V5IH0gZnJvbSAnb2wvT2JzZXJ2YWJsZSc7XHJcbmltcG9ydCB7IHRyYW5zZm9ybSB9IGZyb20gJ29sL3Byb2onO1xyXG5cclxuaW1wb3J0IHsgTWFwQnJvd3NlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21hcC9tYXAtYnJvd3Nlci9tYXAtYnJvd3Nlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJZ29NYXAgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcCc7XHJcblxyXG4vKipcclxuICogVGhpcyBkaXJlY3RpdmUgcmV0dXJuIHRoZSBwb2ludGVyIGNvb3JkaW5hdGUgKG9uIGNsaWNrIG9yIHBvaW50ZXJtb3ZlKVxyXG4gKiBpbiBbbG9uZ2l0dWRlLCBsYXRpdHVkZV0sIGRlbGF5ZWQgYnkgaW4gaW5wdXQgKHBvaW50ZXJNb3ZlRGVsYXkpXHJcbiAqIHRvIGF2b2lkIHRvbyBtYW55IGVtaXR0ZWQgdmFsdWVzLlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbaWdvUG9pbnRlclBvc2l0aW9uXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUG9pbnRlclBvc2l0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgbGFzdFRpbWVvdXRSZXF1ZXN0O1xyXG5cclxuICAvKipcclxuICAgKiBMaXN0ZW5lciB0byB0aGUgcG9pbnRlciBtb3ZlIGV2ZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwb2ludGVyTW92ZUxpc3RlbmVyO1xyXG5cclxuICAvKipcclxuICAgKiBMaXN0ZW5lciB0byB0aGUgbWFwIGNsaWNrIGV2ZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBtYXBDbGlja0xpc3RlbmVyO1xyXG5cclxuICAvKipcclxuICAgKiBEZWxheSBiZWZvcmUgZW1pdHRpbmcgYW4gZXZlbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBwb2ludGVyUG9zaXRpb25EZWxheTogbnVtYmVyID0gMTAwMDtcclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBwb2ludGVyIG1vdmUsIGRlbGF5ZWQgYnkgcG9pbnRlck1vdmVEZWxheVxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBwb2ludGVyUG9zaXRpb25Db29yZCA9IG5ldyBFdmVudEVtaXR0ZXI8W251bWJlciwgbnVtYmVyXT4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogSUdPIG1hcFxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcclxuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudC5tYXA7XHJcbiAgfVxyXG5cclxuICBnZXQgbWFwUHJvamVjdGlvbigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICh0aGlzLmNvbXBvbmVudC5tYXAgYXMgSWdvTWFwKS5wcm9qZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBAU2VsZigpIHByaXZhdGUgY29tcG9uZW50OiBNYXBCcm93c2VyQ29tcG9uZW50LFxyXG4gICAgcHJpdmF0ZSBtZWRpYVNlcnZpY2U6IE1lZGlhU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgLyoqXHJcbiAgICogU3RhcnQgbGlzdGVuaW5nIHRvIHBvaW50ZXJtb3ZlXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxpc3RlblRvTWFwUG9pbnRlck1vdmUoKTtcclxuICAgIHRoaXMubGlzdGVuVG9NYXBDbGljaygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RvcCBsaXN0ZW5pbmcgdG8gcG9pbnRlcm1vdmVcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMudW5saXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCk7XHJcbiAgICB0aGlzLnVubGlzdGVuVG9NYXBDbGljaygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT24gbWFwIHBvaW50ZXJtb3ZlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsaXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCkge1xyXG4gICAgdGhpcy5wb2ludGVyTW92ZUxpc3RlbmVyID0gdGhpcy5tYXAub2wub24oXHJcbiAgICAgICdwb2ludGVybW92ZScsXHJcbiAgICAgIChldmVudDogTWFwQnJvd3NlclBvaW50ZXJFdmVudDxhbnk+KSA9PlxyXG4gICAgICAgIHRoaXMub25Qb2ludGVyRXZlbnQoZXZlbnQsIHRoaXMucG9pbnRlclBvc2l0aW9uRGVsYXkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT24gbWFwIGNsaWNrXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsaXN0ZW5Ub01hcENsaWNrKCkge1xyXG4gICAgdGhpcy5tYXBDbGlja0xpc3RlbmVyID0gdGhpcy5tYXAub2wub24oXHJcbiAgICAgICdzaW5nbGVjbGljaycsXHJcbiAgICAgIChldmVudDogTWFwQnJvd3NlclBvaW50ZXJFdmVudDxhbnk+KSA9PiB0aGlzLm9uUG9pbnRlckV2ZW50KGV2ZW50LCAwKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0b3AgbGlzdGVuaW5nIGZvciBtYXAgcG9pbnRlcm1vdmVcclxuICAgKi9cclxuICBwcml2YXRlIHVubGlzdGVuVG9NYXBQb2ludGVyTW92ZSgpIHtcclxuICAgIHVuQnlLZXkodGhpcy5wb2ludGVyTW92ZUxpc3RlbmVyKTtcclxuICAgIHRoaXMucG9pbnRlck1vdmVMaXN0ZW5lciA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0b3AgbGlzdGVuaW5nIGZvciBtYXAgY2xpY2tzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1bmxpc3RlblRvTWFwQ2xpY2soKSB7XHJcbiAgICB0aGlzLm1hcENsaWNrTGlzdGVuZXIgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBlbWl0IGRlbGF5ZWQgY29vcmRpbmF0ZSAobG9uZ2l0dWRlLCBsYXRpdHVkZSBhcnJheSkgYmFzZWQgb24gcG9pbnRlck1vdmVEZWxheSBvciBvbiBjbGlja1xyXG4gICAqIEBwYXJhbSBldmVudCBPTCBtYXAgYnJvd3NlciBwb2ludGVyIGV2ZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvblBvaW50ZXJFdmVudChldmVudDogTWFwQnJvd3NlclBvaW50ZXJFdmVudDxhbnk+LCBkZWxheTogbnVtYmVyKSB7XHJcbiAgICBpZiAoZXZlbnQuZHJhZ2dpbmcgfHwgdGhpcy5tZWRpYVNlcnZpY2UuaXNUb3VjaFNjcmVlbigpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgdGhpcy5sYXN0VGltZW91dFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIC8vIGNhbmNlbCB0aW1lb3V0IHdoZW4gdGhlIG1vdXNlIG1vdmVzXHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmxhc3RUaW1lb3V0UmVxdWVzdCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbG9ubGF0ID0gdHJhbnNmb3JtKFxyXG4gICAgICBldmVudC5jb29yZGluYXRlLFxyXG4gICAgICB0aGlzLm1hcFByb2plY3Rpb24sXHJcbiAgICAgICdFUFNHOjQzMjYnXHJcbiAgICApIGFzIFtudW1iZXIsIG51bWJlcl07XHJcbiAgICB0aGlzLmxhc3RUaW1lb3V0UmVxdWVzdCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnBvaW50ZXJQb3NpdGlvbkNvb3JkLmVtaXQobG9ubGF0KTtcclxuICAgIH0sIGRlbGF5KTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL21hcC9zaGFyZWQvbWFwLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVW5pdHMgfSBmcm9tICdvbC9jb250cm9sL1NjYWxlTGluZSc7XHJcblxyXG5leHBvcnQgdHlwZSBNYXBFeHRlbnQgPSBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWFwVmlld09wdGlvbnMge1xyXG4gIHByb2plY3Rpb24/OiBzdHJpbmc7XHJcbiAgY2VudGVyPzogW251bWJlciwgbnVtYmVyXTtcclxuICBtYXhab29tT25FeHRlbnQ/OiBudW1iZXI7XHJcbiAgZ2VvbG9jYXRlPzogYm9vbGVhbjtcclxuICBidWZmZXI/OiBCdWZmZXI7XHJcbiAgYWx3YXlzVHJhY2tpbmc/OiBib29sZWFuO1xyXG4gIGNvbnN0cmFpblJvdGF0aW9uPzogYm9vbGVhbiB8IG51bWJlcjtcclxuICBlbmFibGVSb3RhdGlvbj86IGJvb2xlYW47XHJcbiAgZXh0ZW50PzogTWFwRXh0ZW50O1xyXG4gIG1heExheWVyWm9vbUV4dGVudD86IE1hcEV4dGVudDtcclxuICBtYXhSZXNvbHV0aW9uPzogbnVtYmVyO1xyXG4gIG1pblJlc29sdXRpb24/OiBudW1iZXI7XHJcbiAgbWF4Wm9vbT86IG51bWJlcjtcclxuICBtaW5ab29tPzogbnVtYmVyO1xyXG4gIHJlc29sdXRpb24/OiBudW1iZXI7XHJcbiAgcmVzb2x1dGlvbnM/OiBudW1iZXJbXTtcclxuICByb3RhdGlvbj86IG51bWJlcjtcclxuICB6b29tPzogbnVtYmVyO1xyXG4gIHpvb21GYWN0b3I/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWFwVmlld1N0YXRlIHtcclxuICByZXNvbHV0aW9uOiBudW1iZXI7XHJcbiAgY2VudGVyOiBbbnVtYmVyLCBudW1iZXJdO1xyXG4gIHpvb206IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNYXBPcHRpb25zIHtcclxuICB2aWV3PzogTWFwVmlld09wdGlvbnM7XHJcbiAgY29udHJvbHM/OiBNYXBDb250cm9sc09wdGlvbnM7XHJcbiAgb3ZlcmxheT86IGJvb2xlYW47XHJcbiAgaW50ZXJhY3Rpb25zPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNYXBDb250cm9sc09wdGlvbnMge1xyXG4gIGF0dHJpYnV0aW9uPzogYm9vbGVhbiB8IE1hcEF0dHJpYnV0aW9uT3B0aW9ucztcclxuICBzY2FsZUxpbmU/OiBib29sZWFuIHwgTWFwU2NhbGVMaW5lT3B0aW9ucztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNYXBTY2FsZUxpbmVPcHRpb25zIHtcclxuICBjbGFzc05hbWU/OiBzdHJpbmc7XHJcbiAgbWluV2lkdGg/OiBudW1iZXI7XHJcbiAgdGFyZ2V0Pzogc3RyaW5nIHwgSFRNTEVsZW1lbnQ7XHJcbiAgdW5pdHM/OiBVbml0cztcclxuICBiYXI/OiBib29sZWFuO1xyXG4gIHN0ZXBzPzogbnVtYmVyO1xyXG4gIHRleHQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1hcEF0dHJpYnV0aW9uT3B0aW9ucyB7XHJcbiAgaHRtbD86IHN0cmluZztcclxuICBjb2xsYXBzZWQ6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQnVmZmVyIHtcclxuICBidWZmZXJSYWRpdXM/OiBudW1iZXI7XHJcbiAgYnVmZmVyU3Ryb2tlPzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XHJcbiAgYnVmZmVyRmlsbD86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdO1xyXG4gIHNob3dCdWZmZXJSYWRpdXM/OiBib29sZWFuO1xyXG59XHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL21hcC9zaGFyZWQvbWFwLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVW5pdHMgfSBmcm9tICdvbC9jb250cm9sL1NjYWxlTGluZSc7XG5cbmV4cG9ydCB0eXBlIE1hcEV4dGVudCA9IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1hcFZpZXdPcHRpb25zIHtcbiAgcHJvamVjdGlvbj86IHN0cmluZztcbiAgY2VudGVyPzogW251bWJlciwgbnVtYmVyXTtcbiAgbWF4Wm9vbU9uRXh0ZW50PzogbnVtYmVyO1xuICBnZW9sb2NhdGU/OiBib29sZWFuO1xuICBidWZmZXI/OiBCdWZmZXI7XG4gIGFsd2F5c1RyYWNraW5nPzogYm9vbGVhbjtcbiAgY29uc3RyYWluUm90YXRpb24/OiBib29sZWFuIHwgbnVtYmVyO1xuICBlbmFibGVSb3RhdGlvbj86IGJvb2xlYW47XG4gIGV4dGVudD86IE1hcEV4dGVudDtcbiAgbWF4TGF5ZXJab29tRXh0ZW50PzogTWFwRXh0ZW50O1xuICBtYXhSZXNvbHV0aW9uPzogbnVtYmVyO1xuICBtaW5SZXNvbHV0aW9uPzogbnVtYmVyO1xuICBtYXhab29tPzogbnVtYmVyO1xuICBtaW5ab29tPzogbnVtYmVyO1xuICByZXNvbHV0aW9uPzogbnVtYmVyO1xuICByZXNvbHV0aW9ucz86IG51bWJlcltdO1xuICByb3RhdGlvbj86IG51bWJlcjtcbiAgem9vbT86IG51bWJlcjtcbiAgem9vbUZhY3Rvcj86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBWaWV3U3RhdGUge1xuICByZXNvbHV0aW9uOiBudW1iZXI7XG4gIGNlbnRlcjogW251bWJlciwgbnVtYmVyXTtcbiAgem9vbTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcE9wdGlvbnMge1xuICB2aWV3PzogTWFwVmlld09wdGlvbnM7XG4gIGNvbnRyb2xzPzogTWFwQ29udHJvbHNPcHRpb25zO1xuICBvdmVybGF5PzogYm9vbGVhbjtcbiAgaW50ZXJhY3Rpb25zPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBDb250cm9sc09wdGlvbnMge1xuICBhdHRyaWJ1dGlvbj86IGJvb2xlYW4gfCBNYXBBdHRyaWJ1dGlvbk9wdGlvbnM7XG4gIHNjYWxlTGluZT86IGJvb2xlYW4gfCBNYXBTY2FsZUxpbmVPcHRpb25zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcFNjYWxlTGluZU9wdGlvbnMge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIG1pbldpZHRoPzogbnVtYmVyO1xuICB0YXJnZXQ/OiBzdHJpbmcgfCBIVE1MRWxlbWVudDtcbiAgdW5pdHM/OiBVbml0cztcbiAgYmFyPzogYm9vbGVhbjtcbiAgc3RlcHM/OiBudW1iZXI7XG4gIHRleHQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcEF0dHJpYnV0aW9uT3B0aW9ucyB7XG4gIGh0bWw/OiBzdHJpbmc7XG4gIGNvbGxhcHNlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWZmZXIge1xuICBidWZmZXJSYWRpdXM/OiBudW1iZXI7XG4gIGJ1ZmZlclN0cm9rZT86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICBidWZmZXJGaWxsPzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIHNob3dCdWZmZXJSYWRpdXM/OiBib29sZWFuO1xufVxuIl19