@igo2/geo 17.0.0 → 17.0.1-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 (366) hide show
  1. package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +4 -4
  2. package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +6 -6
  3. package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +4 -4
  4. package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +4 -4
  5. package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +3 -3
  6. package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +3 -3
  7. package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +4 -4
  8. package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +4 -4
  9. package/esm2022/lib/catalog/catalog.module.mjs +4 -4
  10. package/esm2022/lib/catalog/shared/catalog.abstract.mjs +1 -1
  11. package/esm2022/lib/catalog/shared/catalog.interface.mjs +1 -1
  12. package/esm2022/lib/catalog/shared/catalog.service.mjs +17 -21
  13. package/esm2022/lib/datasource/shared/capabilities.interface.mjs +3 -1
  14. package/esm2022/lib/datasource/shared/capabilities.service.mjs +3 -3
  15. package/esm2022/lib/datasource/shared/datasource.service.mjs +6 -5
  16. package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +5 -3
  17. package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +4 -2
  18. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
  19. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +4 -2
  20. package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
  21. package/esm2022/lib/datasource/shared/datasources/datasource.mjs +2 -2
  22. package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
  23. package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +4 -2
  24. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +4 -2
  25. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +1 -1
  26. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +4 -2
  27. package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +4 -2
  28. package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +4 -2
  29. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.mjs +4 -2
  30. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +6 -5
  31. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +4 -2
  32. package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +7 -6
  33. package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
  34. package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +4 -2
  35. package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +1 -1
  36. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +4 -2
  37. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
  38. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +4 -2
  39. package/esm2022/lib/datasource/shared/options/options-api.service.mjs +4 -4
  40. package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +4 -4
  41. package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +4 -4
  42. package/esm2022/lib/directions/directions-results/directions-results.component.mjs +3 -3
  43. package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +3 -3
  44. package/esm2022/lib/directions/directions.component.mjs +6 -7
  45. package/esm2022/lib/directions/directions.module.mjs +4 -4
  46. package/esm2022/lib/directions/shared/directions.interface.mjs +1 -1
  47. package/esm2022/lib/directions/shared/directions.service.mjs +12 -11
  48. package/esm2022/lib/directions/shared/directions.utils.mjs +3 -3
  49. package/esm2022/lib/directions/shared/store.mjs +1 -1
  50. package/esm2022/lib/download/download-button/download-button.component.mjs +3 -3
  51. package/esm2022/lib/download/download.module.mjs +4 -4
  52. package/esm2022/lib/download/shared/download.service.mjs +3 -3
  53. package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +4 -4
  54. package/esm2022/lib/draw/draw/draw-popup.component.mjs +9 -9
  55. package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +3 -3
  56. package/esm2022/lib/draw/draw/draw.component.mjs +15 -19
  57. package/esm2022/lib/draw/draw/draw.module.mjs +4 -4
  58. package/esm2022/lib/draw/drawingTool.module.mjs +4 -4
  59. package/esm2022/lib/draw/shared/draw-icon.service.mjs +4 -4
  60. package/esm2022/lib/draw/shared/draw.interface.mjs +1 -1
  61. package/esm2022/lib/draw/shared/draw.utils.mjs +3 -3
  62. package/esm2022/lib/feature/feature-details/feature-details.component.mjs +6 -6
  63. package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +3 -3
  64. package/esm2022/lib/feature/feature-details/feature-details.module.mjs +4 -4
  65. package/esm2022/lib/feature/feature-form/feature-form.component.mjs +5 -6
  66. package/esm2022/lib/feature/feature-form/feature-form.module.mjs +4 -4
  67. package/esm2022/lib/feature/feature.module.mjs +4 -4
  68. package/esm2022/lib/feature/shared/feature.interfaces.mjs +1 -1
  69. package/esm2022/lib/feature/shared/feature.utils.mjs +1 -2
  70. package/esm2022/lib/feature/shared/store.mjs +4 -4
  71. package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +2 -2
  72. package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +2 -3
  73. package/esm2022/lib/feature/shared/strategies/search.mjs +2 -3
  74. package/esm2022/lib/feature/shared/strategies/selection.mjs +1 -1
  75. package/esm2022/lib/filter/filter.module.mjs +4 -4
  76. package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +5 -6
  77. package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +5 -5
  78. package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +9 -29
  79. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +8 -9
  80. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +5 -5
  81. package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +5 -6
  82. package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +4 -4
  83. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +3 -3
  84. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +5 -6
  85. package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +3 -3
  86. package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +5 -6
  87. package/esm2022/lib/filter/shared/ogc-filter.interface.mjs +1 -1
  88. package/esm2022/lib/filter/shared/ogc-filter.mjs +3 -2
  89. package/esm2022/lib/filter/shared/ogc-filter.service.mjs +5 -6
  90. package/esm2022/lib/filter/shared/spatial-filter.service.mjs +7 -7
  91. package/esm2022/lib/filter/shared/time-filter.service.mjs +5 -6
  92. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +5 -5
  93. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +3 -3
  94. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +7 -8
  95. package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +5 -6
  96. package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +17 -17
  97. package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +4 -4
  98. package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +3 -3
  99. package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +3 -3
  100. package/esm2022/lib/geo.module.mjs +5 -9
  101. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +7 -8
  102. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +4 -4
  103. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +4 -4
  104. package/esm2022/lib/geometry/geometry.module.mjs +4 -4
  105. package/esm2022/lib/geometry/shared/controls/draw.mjs +1 -1
  106. package/esm2022/lib/geometry/shared/controls/modify.mjs +1 -4
  107. package/esm2022/lib/geometry/shared/controls/slice.mjs +3 -3
  108. package/esm2022/lib/geometry/shared/geometry.errors.mjs +1 -3
  109. package/esm2022/lib/geometry/shared/geometry.utils.mjs +2 -11
  110. package/esm2022/lib/import-export/export-button/export-button.component.mjs +5 -6
  111. package/esm2022/lib/import-export/import-export/import-export.component.mjs +25 -18
  112. package/esm2022/lib/import-export/import-export.module.mjs +4 -4
  113. package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +4 -4
  114. package/esm2022/lib/import-export/shared/export.service.mjs +5 -4
  115. package/esm2022/lib/import-export/shared/export.utils.mjs +2 -2
  116. package/esm2022/lib/import-export/shared/import.service.mjs +6 -6
  117. package/esm2022/lib/import-export/shared/import.utils.mjs +1 -1
  118. package/esm2022/lib/layer/layer-item/layer-item.component.mjs +4 -4
  119. package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +7 -7
  120. package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +4 -4
  121. package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +5 -5
  122. package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +5 -6
  123. package/esm2022/lib/layer/layer-list/layer-list-binding.directive.mjs +3 -3
  124. package/esm2022/lib/layer/layer-list/layer-list.component.mjs +4 -4
  125. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +4 -4
  126. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +5 -6
  127. package/esm2022/lib/layer/layer.module.mjs +4 -4
  128. package/esm2022/lib/layer/shared/clusterParam.mjs +1 -1
  129. package/esm2022/lib/layer/shared/layer.service.mjs +6 -5
  130. package/esm2022/lib/layer/shared/layers/image-layer.mjs +2 -2
  131. package/esm2022/lib/layer/shared/layers/layer.interface.mjs +1 -1
  132. package/esm2022/lib/layer/shared/layers/layer.mjs +1 -3
  133. package/esm2022/lib/layer/shared/layers/tile-layer.mjs +2 -2
  134. package/esm2022/lib/layer/shared/layers/vector-layer.mjs +5 -5
  135. package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +3 -3
  136. package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +6 -7
  137. package/esm2022/lib/layer/utils/outputLegend.mjs +3 -3
  138. package/esm2022/lib/layer/utils/vector-watcher.mjs +9 -9
  139. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +3 -3
  140. package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +3 -3
  141. package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +7 -7
  142. package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +3 -3
  143. package/esm2022/lib/map/info-section/info-section.component.mjs +5 -6
  144. package/esm2022/lib/map/map-browser/map-browser.component.mjs +3 -3
  145. package/esm2022/lib/map/map-center/map-center.component.mjs +9 -9
  146. package/esm2022/lib/map/map.module.mjs +4 -4
  147. package/esm2022/lib/map/menu-button/menu-button.component.mjs +3 -3
  148. package/esm2022/lib/map/offline-button/offline-button.component.mjs +5 -6
  149. package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +5 -6
  150. package/esm2022/lib/map/shared/controllers/geolocation.mjs +10 -10
  151. package/esm2022/lib/map/shared/controllers/view.mjs +3 -3
  152. package/esm2022/lib/map/shared/hover-feature.directive.mjs +8 -11
  153. package/esm2022/lib/map/shared/linkedLayers.utils.mjs +5 -5
  154. package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +4 -4
  155. package/esm2022/lib/map/shared/map.mjs +4 -4
  156. package/esm2022/lib/map/shared/map.service.mjs +5 -6
  157. package/esm2022/lib/map/shared/map.utils.mjs +2 -3
  158. package/esm2022/lib/map/shared/mapOffline.directive.mjs +3 -3
  159. package/esm2022/lib/map/shared/projection.service.mjs +3 -3
  160. package/esm2022/lib/map/shared/projection.utils.mjs +2 -3
  161. package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +7 -6
  162. package/esm2022/lib/map/utils/layer-watcher.mjs +4 -2
  163. package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +5 -4
  164. package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +5 -6
  165. package/esm2022/lib/measure/measure.module.mjs +4 -4
  166. package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +5 -5
  167. package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +3 -3
  168. package/esm2022/lib/measure/measurer/measurer-item.component.mjs +5 -6
  169. package/esm2022/lib/measure/measurer/measurer.component.mjs +8 -16
  170. package/esm2022/lib/measure/measurer/measurer.module.mjs +4 -4
  171. package/esm2022/lib/measure/shared/measure.interfaces.mjs +1 -1
  172. package/esm2022/lib/measure/shared/measure.utils.mjs +1 -1
  173. package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +6 -6
  174. package/esm2022/lib/metadata/metadata.module.mjs +4 -4
  175. package/esm2022/lib/metadata/shared/metadata.service.mjs +5 -6
  176. package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +3 -3
  177. package/esm2022/lib/offline/geoDB/geoDB.service.mjs +6 -6
  178. package/esm2022/lib/offline/layerDB/layerDB.service.mjs +4 -4
  179. package/esm2022/lib/offline/shared/geo-network.service.mjs +4 -4
  180. package/esm2022/lib/overlay/shared/index.mjs +1 -3
  181. package/esm2022/lib/print/print/print.component.mjs +3 -3
  182. package/esm2022/lib/print/print-form/print-form.component.mjs +5 -5
  183. package/esm2022/lib/print/print.module.mjs +4 -4
  184. package/esm2022/lib/print/shared/print.service.mjs +32 -44
  185. package/esm2022/lib/query/query.module.mjs +4 -4
  186. package/esm2022/lib/query/shared/query-search-source.mjs +3 -3
  187. package/esm2022/lib/query/shared/query.directive.mjs +4 -4
  188. package/esm2022/lib/query/shared/query.enums.mjs +3 -1
  189. package/esm2022/lib/query/shared/query.service.mjs +23 -21
  190. package/esm2022/lib/search/search-bar/search-bar.component.mjs +4 -4
  191. package/esm2022/lib/search/search-bar/search-bar.module.mjs +4 -4
  192. package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +3 -3
  193. package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +7 -9
  194. package/esm2022/lib/search/search-results/search-results-item.component.mjs +10 -12
  195. package/esm2022/lib/search/search-results/search-results.component.mjs +4 -4
  196. package/esm2022/lib/search/search-results/search-results.module.mjs +4 -4
  197. package/esm2022/lib/search/search-selector/search-selector.component.mjs +4 -4
  198. package/esm2022/lib/search/search-selector/search-selector.module.mjs +4 -4
  199. package/esm2022/lib/search/search-settings/search-settings.component.mjs +4 -4
  200. package/esm2022/lib/search/search-settings/search-settings.module.mjs +4 -4
  201. package/esm2022/lib/search/search.module.mjs +4 -4
  202. package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +5 -4
  203. package/esm2022/lib/search/shared/search.interfaces.mjs +1 -1
  204. package/esm2022/lib/search/shared/search.service.mjs +4 -4
  205. package/esm2022/lib/search/shared/search.utils.mjs +1 -1
  206. package/esm2022/lib/search/shared/sources/cadastre.mjs +3 -3
  207. package/esm2022/lib/search/shared/sources/coordinates.mjs +6 -6
  208. package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +2 -2
  209. package/esm2022/lib/search/shared/sources/icherche-icons.mjs +1 -1
  210. package/esm2022/lib/search/shared/sources/icherche.interfaces.mjs +1 -1
  211. package/esm2022/lib/search/shared/sources/icherche.mjs +14 -13
  212. package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
  213. package/esm2022/lib/search/shared/sources/ilayer.mjs +10 -10
  214. package/esm2022/lib/search/shared/sources/nominatim.mjs +4 -4
  215. package/esm2022/lib/search/shared/sources/source.interfaces.mjs +1 -1
  216. package/esm2022/lib/search/shared/sources/source.mjs +3 -2
  217. package/esm2022/lib/search/shared/sources/storedqueries.interfaces.mjs +1 -1
  218. package/esm2022/lib/search/shared/sources/storedqueries.mjs +7 -10
  219. package/esm2022/lib/search/shared/sources/workspace.mjs +8 -8
  220. package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +2 -1
  221. package/esm2022/lib/style/shared/feature/feature-style.mjs +3 -3
  222. package/esm2022/lib/style/shared/overlay/overlay-marker-style.utils.mjs +10 -16
  223. package/esm2022/lib/style/shared/overlay/overlay-style.utils.mjs +1 -1
  224. package/esm2022/lib/style/shared/vector/vector-style.interface.mjs +1 -1
  225. package/esm2022/lib/style/style-list/style-list.interface.mjs +1 -1
  226. package/esm2022/lib/style/style-list/style-list.module.mjs +4 -4
  227. package/esm2022/lib/style/style-list/style-list.provider.mjs +2 -2
  228. package/esm2022/lib/style/style-list/style-list.service.mjs +5 -5
  229. package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +4 -4
  230. package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +4 -4
  231. package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +5 -5
  232. package/esm2022/lib/style/style-service/draw-style.service.mjs +5 -6
  233. package/esm2022/lib/style/style-service/style.service.mjs +4 -4
  234. package/esm2022/lib/style/style.module.mjs +4 -4
  235. package/esm2022/lib/toast/toast.component.mjs +5 -6
  236. package/esm2022/lib/toast/toast.module.mjs +4 -4
  237. package/esm2022/lib/utils/id-generator.mjs +6 -4
  238. package/esm2022/lib/utils/osmLinks.mjs +1 -1
  239. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +3 -3
  240. package/esm2022/lib/wkt/shared/wkt.service.mjs +7 -8
  241. package/esm2022/lib/wkt/wkt.module.mjs +4 -4
  242. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +3 -3
  243. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +4 -4
  244. package/esm2022/lib/workspace/shared/edition-workspace.mjs +1 -1
  245. package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +11 -9
  246. package/esm2022/lib/workspace/shared/feature-workspace.mjs +1 -1
  247. package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +3 -3
  248. package/esm2022/lib/workspace/shared/wfs-workspace.mjs +1 -1
  249. package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +3 -3
  250. package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +7 -5
  251. package/esm2022/lib/workspace/shared/workspace.utils.mjs +2 -2
  252. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +3 -3
  253. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +4 -4
  254. package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +3 -3
  255. package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +4 -4
  256. package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +3 -3
  257. package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +4 -4
  258. package/esm2022/lib/workspace/workspace.module.mjs +4 -4
  259. package/esm2022/public_api.mjs +1 -2
  260. package/fesm2022/igo2-geo.mjs +943 -1071
  261. package/fesm2022/igo2-geo.mjs.map +1 -1
  262. package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +1 -1
  263. package/lib/catalog/shared/catalog.abstract.d.ts +2 -6
  264. package/lib/catalog/shared/catalog.interface.d.ts +2 -6
  265. package/lib/catalog/shared/catalogs.d.ts +2 -2
  266. package/lib/datasource/shared/datasources/cluster-datasource.interface.d.ts +2 -2
  267. package/lib/datasource/shared/datasources/datasource.d.ts +2 -2
  268. package/lib/datasource/shared/datasources/datasource.interface.d.ts +4 -12
  269. package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +2 -2
  270. package/lib/datasource/shared/datasources/mvt-datasource.interface.d.ts +2 -2
  271. package/lib/datasource/shared/datasources/websocket-datasource.d.ts +3 -3
  272. package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +1 -1
  273. package/lib/datasource/shared/datasources/xyz-datasource.interface.d.ts +2 -2
  274. package/lib/directions/shared/directions.interface.d.ts +4 -9
  275. package/lib/directions/shared/directions.utils.d.ts +2 -2
  276. package/lib/draw/draw/draw.component.d.ts +1 -1
  277. package/lib/draw/shared/draw-icon.service.d.ts +1 -1
  278. package/lib/draw/shared/draw.interface.d.ts +1 -2
  279. package/lib/draw/shared/draw.utils.d.ts +1 -1
  280. package/lib/feature/feature-details/feature-details.component.d.ts +1 -3
  281. package/lib/feature/feature-details/feature-details.directive.d.ts +1 -3
  282. package/lib/feature/feature-form/feature-form.component.d.ts +3 -8
  283. package/lib/feature/shared/feature.interfaces.d.ts +11 -17
  284. package/lib/filter/ogc-filter-button/ogc-filter-button.component.d.ts +0 -1
  285. package/lib/filter/ogc-filter-form/ogc-filter-form.component.d.ts +1 -3
  286. package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +2 -4
  287. package/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.d.ts +2 -2
  288. package/lib/filter/ogc-filterable-form/ogc-filterable-form.component.d.ts +0 -1
  289. package/lib/filter/ogc-filterable-list/ogc-filterable-list.component.d.ts +0 -1
  290. package/lib/filter/shared/ogc-filter-time.service.d.ts +0 -1
  291. package/lib/filter/shared/ogc-filter.interface.d.ts +2 -4
  292. package/lib/filter/shared/ogc-filter.service.d.ts +0 -1
  293. package/lib/filter/shared/spatial-filter.service.d.ts +1 -3
  294. package/lib/filter/shared/time-filter.service.d.ts +0 -1
  295. package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +2 -6
  296. package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +2 -6
  297. package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +3 -8
  298. package/lib/filter/time-filter-button/time-filter-button.component.d.ts +0 -1
  299. package/lib/filter/time-filter-form/time-filter-form.component.d.ts +10 -10
  300. package/lib/geo.module.d.ts +8 -9
  301. package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +3 -5
  302. package/lib/geometry/geometry-form-field/geometry-form-field.component.d.ts +1 -3
  303. package/lib/geometry/shared/geometry.utils.d.ts +1 -8
  304. package/lib/import-export/export-button/export-button.component.d.ts +0 -1
  305. package/lib/layer/layer-legend/layer-legend.component.d.ts +1 -3
  306. package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +0 -1
  307. package/lib/layer/layer-list-tool/layer-list-tool.service.d.ts +0 -1
  308. package/lib/layer/shared/clusterParam.d.ts +1 -3
  309. package/lib/layer/shared/layers/layer.interface.d.ts +1 -3
  310. package/lib/layer/shared/layers/vector-layer.d.ts +1 -1
  311. package/lib/layer/track-feature-button/track-feature-button.component.d.ts +0 -1
  312. package/lib/layer/utils/outputLegend.d.ts +2 -2
  313. package/lib/map/info-section/info-section.component.d.ts +0 -1
  314. package/lib/map/map-center/map-center.component.d.ts +0 -1
  315. package/lib/map/offline-button/offline-button.component.d.ts +0 -1
  316. package/lib/map/rotation-button/rotation-button.component.d.ts +3 -2
  317. package/lib/map/shared/map.d.ts +2 -2
  318. package/lib/map/shared/map.service.d.ts +0 -1
  319. package/lib/map/swipe-control/swipe-control.component.d.ts +0 -1
  320. package/lib/map/zoom-button/zoom-button.component.d.ts +0 -1
  321. package/lib/measure/measurer/measure-format.pipe.d.ts +1 -1
  322. package/lib/measure/measurer/measurer-item.component.d.ts +0 -1
  323. package/lib/measure/shared/measure.interfaces.d.ts +1 -2
  324. package/lib/metadata/shared/metadata.service.d.ts +0 -1
  325. package/lib/overlay/shared/index.d.ts +0 -2
  326. package/lib/print/shared/print.service.d.ts +7 -8
  327. package/lib/query/shared/query.service.d.ts +0 -1
  328. package/lib/search/search-results/search-results.component.d.ts +5 -15
  329. package/lib/search/shared/search.interfaces.d.ts +1 -3
  330. package/lib/search/shared/sources/coordinates.providers.d.ts +1 -1
  331. package/lib/search/shared/sources/icherche-icons.d.ts +1 -3
  332. package/lib/search/shared/sources/icherche.interfaces.d.ts +2 -6
  333. package/lib/search/shared/sources/ilayer.interfaces.d.ts +4 -8
  334. package/lib/search/shared/sources/source.interfaces.d.ts +2 -6
  335. package/lib/search/shared/sources/storedqueries.interfaces.d.ts +2 -6
  336. package/lib/style/shared/feature/feature-style.d.ts +2 -2
  337. package/lib/style/shared/vector/vector-style.interface.d.ts +12 -20
  338. package/lib/style/style-list/style-list.interface.d.ts +1 -3
  339. package/lib/style/style-list/style-list.provider.d.ts +2 -2
  340. package/lib/style/style-service/draw-style.service.d.ts +0 -1
  341. package/lib/style/style-service/style.service.d.ts +1 -3
  342. package/lib/toast/toast.component.d.ts +0 -1
  343. package/lib/utils/id-generator.d.ts +1 -2
  344. package/lib/wkt/shared/wkt.service.d.ts +0 -1
  345. package/lib/workspace/shared/edition-workspace.service.d.ts +2 -6
  346. package/package.json +18 -19
  347. package/public_api.d.ts +0 -1
  348. package/src/lib/catalog/catalog-browser/catalog-browser.theming.scss +1 -1
  349. package/src/lib/directions/directions-results/directions-results.theming.scss +1 -1
  350. package/src/lib/draw/draw.theming.scss +4 -4
  351. package/src/lib/feature/feature-details/feature-details.theming.scss +1 -1
  352. package/src/lib/filter/ogc-filter-selection/ogc-filter-selection.theming.scss +3 -3
  353. package/src/lib/layer/layer-item/layer-item.theme.scss +4 -4
  354. package/src/lib/layer/layer-legend/layer-legend.theming.scss +1 -1
  355. package/src/lib/layer/layer-list-tool/layer-list-tool.theming.scss +1 -1
  356. package/src/lib/map/map-browser/map-browser.theming.scss +5 -5
  357. package/src/lib/map/menu-button/menu-button.theming.scss +2 -2
  358. package/src/lib/map/zoom-button/zoom-button.theming.scss +4 -4
  359. package/src/lib/measure/measurer/measurer.theming.scss +2 -2
  360. package/src/lib/workspace/confirmation-popup/confirmation-popup.theming.scss +2 -2
  361. package/esm2022/lib/overlay/overlay.module.mjs +0 -24
  362. package/esm2022/lib/overlay/shared/overlay.directive.mjs +0 -39
  363. package/esm2022/lib/overlay/shared/overlay.service.mjs +0 -26
  364. package/lib/overlay/overlay.module.d.ts +0 -12
  365. package/lib/overlay/shared/overlay.directive.d.ts +0 -18
  366. package/lib/overlay/shared/overlay.service.d.ts +0 -14
@@ -337,4 +337,4 @@ export class DrawControl {
337
337
  }
338
338
  }
339
339
  }
340
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2dlb21ldHJ5L3NoYXJlZC9jb250cm9scy9kcmF3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHeEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR2xELE9BQU8sTUFBTSxNQUFNLHFCQUFxQixDQUFDO0FBRXpDLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBRTdDLE9BQU8sYUFBYSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFDO0FBRzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFekUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFXeEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQW9GRjtJQW5GcEI7O09BRUc7SUFDSSxNQUFNLEdBQXdCLElBQUksT0FBTyxFQUFFLENBQUM7SUFFbkQ7O09BRUc7SUFDSSxJQUFJLEdBQXdCLElBQUksT0FBTyxFQUFFLENBQUM7SUFFakQ7O09BRUc7SUFDSSxRQUFRLEdBQWlCLElBQUksT0FBTyxFQUFFLENBQUM7SUFFOUM7O09BRUc7SUFDSSxPQUFPLEdBQXdCLElBQUksT0FBTyxFQUFFLENBQUM7SUFFcEQ7O09BRUc7SUFDSSxPQUFPLEdBQWlCLElBQUksT0FBTyxFQUFFLENBQUM7SUFFN0M7O09BRUc7SUFDSSxNQUFNLEdBQWlCLElBQUksT0FBTyxFQUFFLENBQUM7SUFFNUM7O09BRUc7SUFDSCxTQUFTLEdBQTZCLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lB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QUVHO0lBQ0ssa0JBQWtCO1FBQ3hCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBPbE1hcCBmcm9tICdvbC9NYXAnO1xuaW1wb3J0IHsgdW5CeUtleSB9IGZyb20gJ29sL09ic2VydmFibGUnO1xuaW1wb3J0IHsgRXZlbnRzS2V5IH0gZnJvbSAnb2wvZXZlbnRzJztcbmltcG9ydCBCYXNpY0V2ZW50IGZyb20gJ29sL2V2ZW50cy9FdmVudCc7XG5pbXBvcnQgeyBkb3VibGVDbGljayB9IGZyb20gJ29sL2V2ZW50cy9jb25kaXRpb24nO1xuaW1wb3J0IHR5cGUgeyBUeXBlIH0gZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT2xHZW9tZXRyeSB9IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuaW1wb3J0IE9sRHJhdyBmcm9tICdvbC9pbnRlcmFjdGlvbi9EcmF3JztcbmltcG9ydCB7IERyYXdFdmVudCBhcyBPbERyYXdFdmVudCB9IGZyb20gJ29sL2ludGVyYWN0aW9uL0RyYXcnO1xuaW1wb3J0IE9sTW9kaWZ5IGZyb20gJ29sL2ludGVyYWN0aW9uL01vZGlmeSc7XG5pbXBvcnQgT2xTZWxlY3QgZnJvbSAnb2wvaW50ZXJhY3Rpb24vU2VsZWN0JztcbmltcG9ydCB7IFNlbGVjdEV2ZW50IGFzIE9sU2VsZWN0RXZlbnQgfSBmcm9tICdvbC9pbnRlcmFjdGlvbi9TZWxlY3QnO1xuaW1wb3J0IE9sVmVjdG9yTGF5ZXIgZnJvbSAnb2wvbGF5ZXIvVmVjdG9yJztcbmltcG9ydCBPbFZlY3RvclNvdXJjZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yJztcbmltcG9ydCB7IFN0eWxlTGlrZSBhcyBPbFN0eWxlTGlrZSB9IGZyb20gJ29sL3N0eWxlL1N0eWxlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBnZXRNb3VzZVBvc2l0aW9uRnJvbU9sR2VvbWV0cnlFdmVudCB9IGZyb20gJy4uL2dlb21ldHJ5LnV0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBEcmF3Q29udHJvbE9wdGlvbnMge1xuICBnZW9tZXRyeVR5cGU6IFR5cGUgfCBzdHJpbmc7XG4gIGRyYXdpbmdMYXllclNvdXJjZT86IE9sVmVjdG9yU291cmNlO1xuICBkcmF3aW5nTGF5ZXI/OiBPbFZlY3RvckxheWVyPE9sVmVjdG9yU291cmNlPjtcbiAgZHJhd2luZ0xheWVyU3R5bGU/OiBPbFN0eWxlTGlrZTtcbiAgaW50ZXJhY3Rpb25TdHlsZT86IE9sU3R5bGVMaWtlO1xuICBtYXhQb2ludHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ29udHJvbCB0byBkcmF3IGVudGl0aWVzXG4gKi9cbmV4cG9ydCBjbGFzcyBEcmF3Q29udHJvbCB7XG4gIC8qKlxuICAgKiBEcmF3IHN0YXJ0IG9ic2VydmFibGVcbiAgICovXG4gIHB1YmxpYyBzdGFydCQ6IFN1YmplY3Q8T2xHZW9tZXRyeT4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIC8qKlxuICAgKiBEcmF3IGVuZCBvYnNlcnZhYmxlXG4gICAqL1xuICBwdWJsaWMgZW5kJDogU3ViamVjdDxPbEdlb21ldHJ5PiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgLyoqXG4gICAqIERyYXcgY2hhbmdlcyBvYnNlcnZhYmxlICh3aGlsZSBkcmF3aW5nKVxuICAgKi9cbiAgcHVibGljIGNoYW5nZXMkOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIC8qKlxuICAgKiBEcmF3IG1vZGlmeSBvYnNlcnZhYmxlIChtb2RpZnkgZHJhd24gZmVhdHVyZXMpXG4gICAqL1xuICBwdWJsaWMgbW9kaWZ5JDogU3ViamVjdDxPbEdlb21ldHJ5PiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgLyoqXG4gICAqIERyYXcgc2VsZWN0IG9ic2VydmFibGUgKG1vZGlmeSBkcmF3biBmZWF0dXJlcylcbiAgICovXG4gIHB1YmxpYyBzZWxlY3QkOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIC8qKlxuICAgKiBEcmF3IGFib3J0IG9ic2VydmFibGUgKGFib3J0IGRyYXduIGZlYXR1cmVzKVxuICAgKi9cbiAgcHVibGljIGFib3J0JDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcblxuICAvKipcbiAgICogRnJlZWhhbmQgbW9kZSBvYnNlcnZhYmxlIChkZWZhdWx0cyB0byBmYWxzZSlcbiAgICovXG4gIGZyZWVoYW5kJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlcyBmcm9tIHByZWRlZmluZWQgcmFkaXVzIChkZWZhdWx0cyB0byBmYWxzZSBhbmQgdW5kZWZpbmVkKVxuICAgKi9cbiAgaXNwcmVkZWZpbmVkUmFkaXVzJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByZWRlZmluZWRSYWRpdXMkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9IG5ldyBCZWhhdmlvclN1YmplY3QodW5kZWZpbmVkKTtcbiAgcmFkaXVzRHJhd0VuZCQ6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh1bmRlZmluZWQpO1xuXG4gIHByaXZhdGUga2V5RG93biQkOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBvbEdlb21ldHJ5VHlwZTogdHlwZW9mIE9sR2VvbWV0cnkgfCB1bmRlZmluZWQgfCBzdHJpbmc7XG4gIHByaXZhdGUgb2xJbnRlcmFjdGlvblN0eWxlOiBPbFN0eWxlTGlrZTtcbiAgcHJpdmF0ZSBvbE1hcDogT2xNYXA7XG4gIHByaXZhdGUgb2xEcmF3aW5nTGF5ZXI6IE9sVmVjdG9yTGF5ZXI8T2xWZWN0b3JTb3VyY2U+O1xuICBwcml2YXRlIG9sRHJhd0ludGVyYWN0aW9uOiBPbERyYXc7XG4gIHByaXZhdGUgb2xTZWxlY3RJbnRlcmFjdGlvbjogT2xTZWxlY3Q7XG4gIHByaXZhdGUgb2xNb2RpZnlJbnRlcmFjdGlvbjogT2xNb2RpZnk7XG4gIHByaXZhdGUgb25EcmF3U3RhcnRLZXk6IEV2ZW50c0tleTtcbiAgcHJpdmF0ZSBvbkRyYXdFbmRLZXk6IEV2ZW50c0tleTtcbiAgcHJpdmF0ZSBvbkRyYXdBYm9ydEtleTogRXZlbnRzS2V5O1xuICBwcml2YXRlIG9uRHJhd0tleTogRXZlbnRzS2V5O1xuICBwdWJsaWMgcmFkaXVzOiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBtb3VzZVBvc2l0aW9uOiBbbnVtYmVyLCBudW1iZXJdO1xuXG4gIC8qKlxuICAgKiB0YWtlIHRoZSB2YWx1ZSBvZiByYWRpdXNcbiAgICovXG4gIGdldCByYWRpdXNWYWwoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wcmVkZWZpbmVkUmFkaXVzJC5nZXRWYWx1ZSgpO1xuICB9XG4gIHNldCByYWRpdXNWYWxEYXRhKHJhZGl1c0NlcmNsZTogbnVtYmVyKSB7XG4gICAgdGhpcy5wcmVkZWZpbmVkUmFkaXVzJC5uZXh0KHJhZGl1c0NlcmNsZSk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGVyIHRoZSBjb250cm9sIGlzIGFjdGl2ZVxuICAgKi9cbiAgZ2V0IGFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vbE1hcCAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIE9MIG92ZXJsYXkgc291cmNlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0IG9sRHJhd2luZ0xheWVyU291cmNlKCk6IE9sVmVjdG9yU291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5vbERyYXdpbmdMYXllci5nZXRTb3VyY2UoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3B0aW9uczogRHJhd0NvbnRyb2xPcHRpb25zKSB7XG4gICAgdGhpcy5vbERyYXdpbmdMYXllciA9IG9wdGlvbnMuZHJhd2luZ0xheWVyXG4gICAgICA/IG9wdGlvbnMuZHJhd2luZ0xheWVyXG4gICAgICA6IHRoaXMuY3JlYXRlT2xJbm5lck92ZXJsYXlMYXllcigpO1xuICAgIHRoaXMub2xHZW9tZXRyeVR5cGUgPSB0aGlzLm9wdGlvbnMuZ2VvbWV0cnlUeXBlO1xuICAgIHRoaXMub2xJbnRlcmFjdGlvblN0eWxlID0gdGhpcy5vcHRpb25zLmludGVyYWN0aW9uU3R5bGU7XG4gIH1cblxuICAvKipcbiAgICogQWRkIG9yIHJlbW92ZSB0aGlzIGNvbnRyb2wgdG8vZnJvbSBhIG1hcC5cbiAgICogQHBhcmFtIG1hcCBPTCBNYXBcbiAgICovXG4gIHNldE9sTWFwKG9sTWFwOiBPbE1hcCB8IHVuZGVmaW5lZCwgYWN0aXZhdGVNb2RpZnlBbmRTZWxlY3Q/OiBib29sZWFuKSB7XG4gICAgaWYgKCFvbE1hcCkge1xuICAgICAgdGhpcy5jbGVhck9sSW5uZXJPdmVybGF5U291cmNlKCk7XG4gICAgICB0aGlzLnJlbW92ZU9sSW5uZXJPdmVybGF5TGF5ZXIoKTtcbiAgICAgIHRoaXMucmVtb3ZlT2xJbnRlcmFjdGlvbnMoKTtcbiAgICAgIHRoaXMub2xNYXAgPSBvbE1hcDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9sTWFwID0gb2xNYXA7XG4gICAgdGhpcy5hZGRPbElubmVyT3ZlcmxheUxheWVyKCk7XG4gICAgdGhpcy5hZGRPbEludGVyYWN0aW9ucyhhY3RpdmF0ZU1vZGlmeUFuZFNlbGVjdCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBkcmF3aW5nIGxheWVyIHNvdXJjZVxuICAgKi9cbiAgZ2V0U291cmNlKCk6IE9sVmVjdG9yU291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5vbERyYXdpbmdMYXllclNvdXJjZTtcbiAgfVxuXG4gIHNldE9sSW50ZXJhY3Rpb25TdHlsZShzdHlsZSkge1xuICAgIHRoaXMub2xJbnRlcmFjdGlvblN0eWxlID0gc3R5bGU7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBjdXJyZW50IGdlb21ldHJ5IHR5cGVcbiAgICogQHBhcmFtIGdlb21ldHJ5VHlwZSB0aGUgZ2VvbWV0cnkgdHlwZVxuICAgKi9cbiAgc2V0R2VvbWV0cnlUeXBlKGdlb21ldHJ5VHlwZTogVHlwZSkge1xuICAgIHRoaXMub2xHZW9tZXRyeVR5cGUgPSBnZW9tZXRyeVR5cGU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IGdlb21ldHJ5IHR5cGVcbiAgICovXG4gIGdldEdlb21ldHJ5VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5vbEdlb21ldHJ5VHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBkcmF3aW5nIHNvdXJjZSBpZiBub25lIGlzIGRlZmluZWQgaW4gdGhlIG9wdGlvbnNcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlT2xJbm5lck92ZXJsYXlMYXllcigpOiBPbFZlY3RvckxheWVyPE9sVmVjdG9yU291cmNlPiB7XG4gICAgcmV0dXJuIG5ldyBPbFZlY3RvckxheWVyKHtcbiAgICAgIHNvdXJjZTogdGhpcy5vcHRpb25zLmRyYXdpbmdMYXllclNvdXJjZVxuICAgICAgICA/IHRoaXMub3B0aW9ucy5kcmF3aW5nTGF5ZXJTb3VyY2VcbiAgICAgICAgOiBuZXcgT2xWZWN0b3JTb3VyY2UoKSxcbiAgICAgIHN0eWxlOiB0aGlzLm9wdGlvbnMuZHJhd2luZ0xheWVyU3R5bGUsXG4gICAgICB6SW5kZXg6IDUwMFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHRoZSBkcmF3aW5nIGxheWVyIGlmIGl0IHdhc24ndCBkZWZpbmVkIGluIHRoZSBvcHRpb25zXG4gICAqL1xuICBwcml2YXRlIHJlbW92ZU9sSW5uZXJPdmVybGF5TGF5ZXIoKSB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuZHJhd2luZ0xheWVyICYmIHRoaXMub2xNYXApIHtcbiAgICAgIHRoaXMub2xNYXAucmVtb3ZlTGF5ZXIodGhpcy5vbERyYXdpbmdMYXllcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCB0aGUgZHJhd2luZyBsYXllciBpZiBpdCB3YXNuJ3QgZGVmaW5lZCBpbiB0aGUgb3B0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBhZGRPbElubmVyT3ZlcmxheUxheWVyKCkge1xuICAgIGlmICghdGhpcy5vcHRpb25zLmRyYXdpbmdMYXllcikge1xuICAgICAgdGhpcy5vbE1hcC5hZGRMYXllcih0aGlzLm9sRHJhd2luZ0xheWVyKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgdGhlIGRyYXdpbmcgbGF5ZXIgc291cmNlIGlmIGl0IHdhc24ndCBkZWZpbmVkIGluIHRoZSBvcHRpb25zXG4gICAqL1xuICBwcml2YXRlIGNsZWFyT2xJbm5lck92ZXJsYXlTb3VyY2UoKSB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuZHJhd2luZ0xheWVyICYmICF0aGlzLm9wdGlvbnMuZHJhd2luZ0xheWVyU291cmNlKSB7XG4gICAgICB0aGlzLm9sRHJhd2luZ0xheWVyU291cmNlLmNsZWFyKHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgaW50ZXJhY3Rpb25zIHRvIHRoZSBtYXAgYW4gc2V0IHVwIHNvbWUgbGlzdGVuZXJzXG4gICAqL1xuICBhZGRPbEludGVyYWN0aW9ucyhhY3RpdmF0ZU1vZGlmeUFuZFNlbGVjdD86IGJvb2xlYW4pIHtcbiAgICAvLyBDcmVhdGUgRHJhdyBpbnRlcmFjdGlvblxuICAgIGxldCBvbERyYXdJbnRlcmFjdGlvbjtcbiAgICBpZiAoIXRoaXMuZnJlZWhhbmQkLmdldFZhbHVlKCkpIHtcbiAgICAgIGlmICghdGhpcy5pc3ByZWRlZmluZWRSYWRpdXMkLmdldFZhbHVlKCkpIHtcbiAgICAgICAgb2xEcmF3SW50ZXJhY3Rpb24gPSBuZXcgT2xEcmF3KHtcbiAgICAgICAgICB0eXBlOiB0aGlzLm9sR2VvbWV0cnlUeXBlIGFzIFR5cGUsXG4gICAgICAgICAgc291cmNlOiB0aGlzLmdldFNvdXJjZSgpLFxuICAgICAgICAgIHN0b3BDbGljazogdHJ1ZSxcbiAgICAgICAgICBzdHlsZTogdGhpcy5vbEludGVyYWN0aW9uU3R5bGUsXG4gICAgICAgICAgbWF4UG9pbnRzOiB0aGlzLm9wdGlvbnMubWF4UG9pbnRzLFxuICAgICAgICAgIGZyZWVoYW5kOiBmYWxzZSxcbiAgICAgICAgICBmcmVlaGFuZENvbmRpdGlvbjogKCkgPT4gZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbERyYXdJbnRlcmFjdGlvbiA9IG5ldyBPbERyYXcoe1xuICAgICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgICAgc291cmNlOiB0aGlzLmdldFNvdXJjZSgpLFxuICAgICAgICAgIHN0b3BDbGljazogdHJ1ZSxcbiAgICAgICAgICBzdHlsZTogdGhpcy5vbEludGVyYWN0aW9uU3R5bGUsXG4gICAgICAgICAgbWF4UG9pbnRzOiB0aGlzLm9wdGlvbnMubWF4UG9pbnRzLFxuICAgICAgICAgIGZyZWVoYW5kOiBmYWxzZSxcbiAgICAgICAgICBmcmVlaGFuZENvbmRpdGlvbjogKCkgPT4gZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLm9sR2VvbWV0cnlUeXBlID09PSAnUG9pbnQnKSB7XG4gICAgICAgIG9sRHJhd0ludGVyYWN0aW9uID0gbmV3IE9sRHJhdyh7XG4gICAgICAgICAgdHlwZTogJ0NpcmNsZScsXG4gICAgICAgICAgc291cmNlOiB0aGlzLmdldFNvdXJjZSgpLFxuICAgICAgICAgIHN0eWxlOlxuICAgICAgICAgICAgdHlwZW9mIHRoaXMub2xJbnRlcmFjdGlvblN0eWxlID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgIDogdGhpcy5vbEludGVyYWN0aW9uU3R5bGUsXG4gICAgICAgICAgbWF4UG9pbnRzOiB0aGlzLm9wdGlvbnMubWF4UG9pbnRzLFxuICAgICAgICAgIGZyZWVoYW5kOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2xEcmF3SW50ZXJhY3Rpb24gPSBuZXcgT2xEcmF3KHtcbiAgICAgICAgICB0eXBlOiB0aGlzLm9sR2VvbWV0cnlUeXBlIGFzIFR5cGUsXG4gICAgICAgICAgc291cmNlOiB0aGlzLmdldFNvdXJjZSgpLFxuICAgICAgICAgIHN0eWxlOiB0aGlzLm9sSW50ZXJhY3Rpb25TdHlsZSxcbiAgICAgICAgICBtYXhQb2ludHM6IHRoaXMub3B0aW9ucy5tYXhQb2ludHMsXG4gICAgICAgICAgZnJlZWhhbmQ6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRkIERyYXcgaW50ZXJhY3Rpb24gdG8gbWFwIGFuZCBjcmVhdGUgbGlzdGVuZXJzXG4gICAgdGhpcy5vbE1hcC5hZGRJbnRlcmFjdGlvbihvbERyYXdJbnRlcmFjdGlvbik7XG4gICAgdGhpcy5vbERyYXdJbnRlcmFjdGlvbiA9IG9sRHJhd0ludGVyYWN0aW9uO1xuICAgIHRoaXMub25EcmF3U3RhcnRLZXkgPSBvbERyYXdJbnRlcmFjdGlvbi5vbihcbiAgICAgICdkcmF3c3RhcnQnLFxuICAgICAgKGV2ZW50OiBPbERyYXdFdmVudCkgPT4gdGhpcy5vbkRyYXdTdGFydChldmVudClcbiAgICApO1xuICAgIHRoaXMub25EcmF3RW5kS2V5ID0gb2xEcmF3SW50ZXJhY3Rpb24ub24oJ2RyYXdlbmQnLCAoZXZlbnQ6IE9sRHJhd0V2ZW50KSA9PlxuICAgICAgdGhpcy5vbkRyYXdFbmQoZXZlbnQpXG4gICAgKTtcbiAgICB0aGlzLm9uRHJhd0Fib3J0S2V5ID0gb2xEcmF3SW50ZXJhY3Rpb24ub24oXG4gICAgICAnZHJhd2Fib3J0JyxcbiAgICAgIChldmVudDogT2xEcmF3RXZlbnQpID0+IHRoaXMuYWJvcnQkLm5leHQoZXZlbnQuZmVhdHVyZS5nZXRHZW9tZXRyeSgpKVxuICAgICk7XG5cbiAgICBpZiAoYWN0aXZhdGVNb2RpZnlBbmRTZWxlY3QpIHtcbiAgICAgIC8vIENyZWF0ZSBhIE1vZGlmeSBpbnRlcmFjdGlvbiwgYWRkIGl0IHRvIG1hcCBhbmQgY3JlYXRlIGEgbGlzdGVuZXJcbiAgICAgIGNvbnN0IG9sTW9kaWZ5SW50ZXJhY3Rpb24gPSBuZXcgT2xNb2RpZnkoe1xuICAgICAgICBzb3VyY2U6IHRoaXMuZ2V0U291cmNlKClcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLm9sTWFwLmFkZEludGVyYWN0aW9uKG9sTW9kaWZ5SW50ZXJhY3Rpb24pO1xuICAgICAgdGhpcy5vbE1vZGlmeUludGVyYWN0aW9uID0gb2xNb2RpZnlJbnRlcmFjdGlvbjtcblxuICAgICAgLy8gQ3JlYXRlIGEgc2VsZWN0IGludGVyYWN0aW9uIGFuZCBhZGQgaXQgdG8gbWFwXG4gICAgICBpZiAoIXRoaXMub2xTZWxlY3RJbnRlcmFjdGlvbikge1xuICAgICAgICBjb25zdCBvbFNlbGVjdEludGVyYWN0aW9uID0gbmV3IE9sU2VsZWN0KHtcbiAgICAgICAgICBjb25kaXRpb246IGRvdWJsZUNsaWNrLFxuICAgICAgICAgIHN0eWxlOiB1bmRlZmluZWRcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub2xNYXAuYWRkSW50ZXJhY3Rpb24ob2xTZWxlY3RJbnRlcmFjdGlvbik7XG4gICAgICAgIHRoaXMub2xTZWxlY3RJbnRlcmFjdGlvbiA9IG9sU2VsZWN0SW50ZXJhY3Rpb247XG5cbiAgICAgICAgdGhpcy5vbFNlbGVjdEludGVyYWN0aW9uLm9uKCdzZWxlY3QnLCAoZXZlbnQ6IE9sU2VsZWN0RXZlbnQpID0+XG4gICAgICAgICAgdGhpcy5vblNlbGVjdChldmVudClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGludGVyYWN0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSByZW1vdmVPbEludGVyYWN0aW9ucygpIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlS2V5RG93bigpO1xuICAgIHVuQnlLZXkoW1xuICAgICAgdGhpcy5vbkRyYXdTdGFydEtleSxcbiAgICAgIHRoaXMub25EcmF3RW5kS2V5LFxuICAgICAgdGhpcy5vbkRyYXdLZXksXG4gICAgICB0aGlzLm9uRHJhd0Fib3J0S2V5XG4gICAgXSk7XG5cbiAgICBpZiAodGhpcy5vbE1hcCkge1xuICAgICAgdGhpcy5vbE1hcC5yZW1vdmVJbnRlcmFjdGlvbih0aGlzLm9sRHJhd0ludGVyYWN0aW9uKTtcbiAgICAgIHRoaXMub2xNYXAucmVtb3ZlSW50ZXJhY3Rpb24odGhpcy5vbE1vZGlmeUludGVyYWN0aW9uKTtcbiAgICB9XG5cbiAgICB0aGlzLm9sRHJhd0ludGVyYWN0aW9uID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub2xNb2RpZnlJbnRlcmFjdGlvbiA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIGRyYXdpbmcgc3RhcnRzLCBjbGVhciB0aGUgb3ZlcmxheSBhbmQgc3RhcnQgd2F0Y2hpbmcgZm9yIGNoYW5nZXNcbiAgICogQHBhcmFtIGV2ZW50IERyYXcgc3RhcnQgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgb25EcmF3U3RhcnQoZXZlbnQ6IE9sRHJhd0V2ZW50KSB7XG4gICAgY29uc3Qgb2xHZW9tZXRyeSA9IGV2ZW50LmZlYXR1cmUuZ2V0R2VvbWV0cnkoKTtcbiAgICB0aGlzLnN0YXJ0JC5uZXh0KG9sR2VvbWV0cnkpO1xuICAgIHRoaXMuY2xlYXJPbElubmVyT3ZlcmxheVNvdXJjZSgpO1xuICAgIHRoaXMub25EcmF3S2V5ID0gb2xHZW9tZXRyeS5vbignY2hhbmdlJywgKG9sR2VvbWV0cnlFdmVudDogQmFzaWNFdmVudCkgPT4ge1xuICAgICAgdGhpcy5tb3VzZVBvc2l0aW9uID0gZ2V0TW91c2VQb3NpdGlvbkZyb21PbEdlb21ldHJ5RXZlbnQob2xHZW9tZXRyeUV2ZW50KTtcbiAgICAgIHRoaXMuY2hhbmdlcyQubmV4dChvbEdlb21ldHJ5RXZlbnQudGFyZ2V0KTtcbiAgICB9KTtcbiAgICB0aGlzLnN1YnNjcmliZUtleURvd24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIGRyYXdpbmcgZW5kcywgdXBkYXRlIHRoZSBkcmF3aW5nIChmZWF0dXJlKSBnZW9tZXRyeSBvYnNlcnZhYmxlIGFuZCBhZGRcbiAgICogQHBhcmFtIGV2ZW50IERyYXcgZXZlbnQgKGRyYXdlbmQpXG4gICAqL1xuICBwcml2YXRlIG9uRHJhd0VuZChldmVudDogT2xEcmF3RXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuZmVhdHVyZS5nZXRHZW9tZXRyeSgpLmdldFR5cGUoKSA9PT0gJ1BvaW50Jykge1xuICAgICAgdGhpcy5yYWRpdXNEcmF3RW5kJC5uZXh0KHRoaXMucHJlZGVmaW5lZFJhZGl1cyQuZ2V0VmFsdWUoKSk7XG4gICAgfVxuICAgIHRoaXMudW5zdWJzY3JpYmVLZXlEb3duKCk7XG4gICAgdW5CeUtleSh0aGlzLm9uRHJhd0tleSk7XG4gICAgY29uc3Qgb2xHZW9tZXRyeSA9IGV2ZW50LmZlYXR1cmUuZ2V0R2VvbWV0cnkoKTtcbiAgICBvbEdlb21ldHJ5Lm9uKCdjaGFuZ2UnLCAoKSA9PiB7XG4gICAgICB0aGlzLm1vZGlmeSQubmV4dChvbEdlb21ldHJ5KTtcbiAgICB9KTtcbiAgICB0aGlzLmVuZCQubmV4dChvbEdlb21ldHJ5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIGEgZmVhdHVyZSBpcyBzZWxlY3RlZCwgdXBkYXRlIHRoZSBzZWxlY3RlZCBmZWF0dXJlIG9ic2VydmFibGVcbiAgICogQHBhcmFtIGV2ZW50IE1vZGlmeSBldmVudCAobW9kaWZ5ZW5kKVxuICAgKi9cbiAgcHJpdmF0ZSBvblNlbGVjdChldmVudDogT2xTZWxlY3RFdmVudCkge1xuICAgIGlmIChldmVudC5zZWxlY3RlZC5sZW5ndGggPT09IDEpIHtcbiAgICAgIHRoaXMuc2VsZWN0JC5uZXh0KGV2ZW50LnNlbGVjdGVkWzBdKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIGtleSBkb3ducyB1c2VkIGFzIGRyYXdpbmcgaW50ZXJhY3Rpb24gc2hvcmN1dHNcbiAgICovXG4gIHByaXZhdGUgc3Vic2NyaWJlS2V5RG93bigpIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlS2V5RG93bigpO1xuICAgIHRoaXMua2V5RG93biQkID0gZnJvbUV2ZW50KGRvY3VtZW50LCAna2V5ZG93bicpLnN1YnNjcmliZShcbiAgICAgIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAvLyBPbiBFc2NhcGUgb3IgJ2MnIGtleWRvd25zLCBhYm9ydCB0aGUgY3VycmVudCBkcmF3aW5nXG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgdGhpcy5vbERyYXdJbnRlcmFjdGlvbi5hYm9ydERyYXdpbmcoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPbiBCYWNrc3BhY2Ugb3IgJ3UnIGtleWRvd25zLCByZW1vdmUgbGFzdCB2ZXJ0ZXggb2YgY3VycmVudCBkcmF3aW5nXG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdCYWNrc3BhY2UnKSB7XG4gICAgICAgICAgdGhpcy5vbERyYXdJbnRlcmFjdGlvbi5yZW1vdmVMYXN0UG9pbnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9uIEVudGVyIG9yICdmJyBrZXlkb3ducywgZmluaXNoIGN1cnJlbnQgZHJhd2luZ1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgdGhpcy5vbERyYXdJbnRlcmFjdGlvbi5maW5pc2hEcmF3aW5nKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPbiBzcGFjZSBiYXIga2V5IGRvd24sIHBhbiB0byB0aGUgY3VycmVudCBtb3VzZSBwb3NpdGlvblxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgICAgICB0aGlzLm9sTWFwLmdldFZpZXcoKS5hbmltYXRlKHtcbiAgICAgICAgICAgIGNlbnRlcjogdGhpcy5tb3VzZVBvc2l0aW9uLFxuICAgICAgICAgICAgZHVyYXRpb246IDEwMFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVW5zdWJzY3JpYmUgdG8ga2V5IGRvd25cbiAgICovXG4gIHByaXZhdGUgdW5zdWJzY3JpYmVLZXlEb3duKCkge1xuICAgIGlmICh0aGlzLmtleURvd24kJCkge1xuICAgICAgdGhpcy5rZXlEb3duJCQudW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMua2V5RG93biQkID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuIl19
340
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2dlb21ldHJ5L3NoYXJlZC9jb250cm9scy9kcmF3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHeEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR2xELE9BQU8sTUFBTSxNQUFNLHFCQUFxQixDQUFDO0FBRXpDLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBRTdDLE9BQU8sYUFBYSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFDO0FBRzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFekUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFXeEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQW9GRjtJQW5GcEI7O09BRUc7SUFDSSxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQWMsQ0FBQztJQUUxQzs7T0FFRztJQUNJLElBQUksR0FBRyxJQUFJLE9BQU8sRUFBYyxDQUFDO0lBRXhDOztPQUVHO0lBQ0ksUUFBUSxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7SUFFckM7O09BRUc7SUFDSSxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQWMsQ0FBQztJQUUzQzs7T0FFRztJQUNJLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBTyxDQUFDO0lBRXBDOztPQUVHO0lBQ0ksTUFBTSxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7SUFFbkM7O09BRUc7SUFDSCxTQUFTLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDaEQ7O09B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QkFBa0I7UUFDeEIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE9sTWFwIGZyb20gJ29sL01hcCc7XG5pbXBvcnQgeyB1bkJ5S2V5IH0gZnJvbSAnb2wvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgeyBFdmVudHNLZXkgfSBmcm9tICdvbC9ldmVudHMnO1xuaW1wb3J0IEJhc2ljRXZlbnQgZnJvbSAnb2wvZXZlbnRzL0V2ZW50JztcbmltcG9ydCB7IGRvdWJsZUNsaWNrIH0gZnJvbSAnb2wvZXZlbnRzL2NvbmRpdGlvbic7XG5pbXBvcnQgdHlwZSB7IFR5cGUgfSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBPbEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XG5pbXBvcnQgT2xEcmF3IGZyb20gJ29sL2ludGVyYWN0aW9uL0RyYXcnO1xuaW1wb3J0IHsgRHJhd0V2ZW50IGFzIE9sRHJhd0V2ZW50IH0gZnJvbSAnb2wvaW50ZXJhY3Rpb24vRHJhdyc7XG5pbXBvcnQgT2xNb2RpZnkgZnJvbSAnb2wvaW50ZXJhY3Rpb24vTW9kaWZ5JztcbmltcG9ydCBPbFNlbGVjdCBmcm9tICdvbC9pbnRlcmFjdGlvbi9TZWxlY3QnO1xuaW1wb3J0IHsgU2VsZWN0RXZlbnQgYXMgT2xTZWxlY3RFdmVudCB9IGZyb20gJ29sL2ludGVyYWN0aW9uL1NlbGVjdCc7XG5pbXBvcnQgT2xWZWN0b3JMYXllciBmcm9tICdvbC9sYXllci9WZWN0b3InO1xuaW1wb3J0IE9sVmVjdG9yU291cmNlIGZyb20gJ29sL3NvdXJjZS9WZWN0b3InO1xuaW1wb3J0IHsgU3R5bGVMaWtlIGFzIE9sU3R5bGVMaWtlIH0gZnJvbSAnb2wvc3R5bGUvU3R5bGUnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IGdldE1vdXNlUG9zaXRpb25Gcm9tT2xHZW9tZXRyeUV2ZW50IH0gZnJvbSAnLi4vZ2VvbWV0cnkudXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERyYXdDb250cm9sT3B0aW9ucyB7XG4gIGdlb21ldHJ5VHlwZTogVHlwZSB8IHN0cmluZztcbiAgZHJhd2luZ0xheWVyU291cmNlPzogT2xWZWN0b3JTb3VyY2U7XG4gIGRyYXdpbmdMYXllcj86IE9sVmVjdG9yTGF5ZXI8T2xWZWN0b3JTb3VyY2U+O1xuICBkcmF3aW5nTGF5ZXJTdHlsZT86IE9sU3R5bGVMaWtlO1xuICBpbnRlcmFjdGlvblN0eWxlPzogT2xTdHlsZUxpa2U7XG4gIG1heFBvaW50cz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDb250cm9sIHRvIGRyYXcgZW50aXRpZXNcbiAqL1xuZXhwb3J0IGNsYXNzIERyYXdDb250cm9sIHtcbiAgLyoqXG4gICAqIERyYXcgc3RhcnQgb2JzZXJ2YWJsZVxuICAgKi9cbiAgcHVibGljIHN0YXJ0JCA9IG5ldyBTdWJqZWN0PE9sR2VvbWV0cnk+KCk7XG5cbiAgLyoqXG4gICAqIERyYXcgZW5kIG9ic2VydmFibGVcbiAgICovXG4gIHB1YmxpYyBlbmQkID0gbmV3IFN1YmplY3Q8T2xHZW9tZXRyeT4oKTtcblxuICAvKipcbiAgICogRHJhdyBjaGFuZ2VzIG9ic2VydmFibGUgKHdoaWxlIGRyYXdpbmcpXG4gICAqL1xuICBwdWJsaWMgY2hhbmdlcyQgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIERyYXcgbW9kaWZ5IG9ic2VydmFibGUgKG1vZGlmeSBkcmF3biBmZWF0dXJlcylcbiAgICovXG4gIHB1YmxpYyBtb2RpZnkkID0gbmV3IFN1YmplY3Q8T2xHZW9tZXRyeT4oKTtcblxuICAvKipcbiAgICogRHJhdyBzZWxlY3Qgb2JzZXJ2YWJsZSAobW9kaWZ5IGRyYXduIGZlYXR1cmVzKVxuICAgKi9cbiAgcHVibGljIHNlbGVjdCQgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIERyYXcgYWJvcnQgb2JzZXJ2YWJsZSAoYWJvcnQgZHJhd24gZmVhdHVyZXMpXG4gICAqL1xuICBwdWJsaWMgYWJvcnQkID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gIC8qKlxuICAgKiBGcmVlaGFuZCBtb2RlIG9ic2VydmFibGUgKGRlZmF1bHRzIHRvIGZhbHNlKVxuICAgKi9cbiAgZnJlZWhhbmQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlcyBmcm9tIHByZWRlZmluZWQgcmFkaXVzIChkZWZhdWx0cyB0byBmYWxzZSBhbmQgdW5kZWZpbmVkKVxuICAgKi9cbiAgaXNwcmVkZWZpbmVkUmFkaXVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcmVkZWZpbmVkUmFkaXVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPih1bmRlZmluZWQpO1xuICByYWRpdXNEcmF3RW5kJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPih1bmRlZmluZWQpO1xuXG4gIHByaXZhdGUga2V5RG93biQkOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBvbEdlb21ldHJ5VHlwZTogdHlwZW9mIE9sR2VvbWV0cnkgfCB1bmRlZmluZWQgfCBzdHJpbmc7XG4gIHByaXZhdGUgb2xJbnRlcmFjdGlvblN0eWxlOiBPbFN0eWxlTGlrZTtcbiAgcHJpdmF0ZSBvbE1hcDogT2xNYXA7XG4gIHByaXZhdGUgb2xEcmF3aW5nTGF5ZXI6IE9sVmVjdG9yTGF5ZXI8T2xWZWN0b3JTb3VyY2U+O1xuICBwcml2YXRlIG9sRHJhd0ludGVyYWN0aW9uOiBPbERyYXc7XG4gIHByaXZhdGUgb2xTZWxlY3RJbnRlcmFjdGlvbjogT2xTZWxlY3Q7XG4gIHByaXZhdGUgb2xNb2RpZnlJbnRlcmFjdGlvbjogT2xNb2RpZnk7XG4gIHByaXZhdGUgb25EcmF3U3RhcnRLZXk6IEV2ZW50c0tleTtcbiAgcHJpdmF0ZSBvbkRyYXdFbmRLZXk6IEV2ZW50c0tleTtcbiAgcHJpdmF0ZSBvbkRyYXdBYm9ydEtleTogRXZlbnRzS2V5O1xuICBwcml2YXRlIG9uRHJhd0tleTogRXZlbnRzS2V5O1xuICBwdWJsaWMgcmFkaXVzOiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBtb3VzZVBvc2l0aW9uOiBbbnVtYmVyLCBudW1iZXJdO1xuXG4gIC8qKlxuICAgKiB0YWtlIHRoZSB2YWx1ZSBvZiByYWRpdXNcbiAgICovXG4gIGdldCByYWRpdXNWYWwoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wcmVkZWZpbmVkUmFkaXVzJC5nZXRWYWx1ZSgpO1xuICB9XG4gIHNldCByYWRpdXNWYWxEYXRhKHJhZGl1c0NlcmNsZTogbnVtYmVyKSB7XG4gICAgdGhpcy5wcmVkZWZpbmVkUmFkaXVzJC5uZXh0KHJhZGl1c0NlcmNsZSk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGVyIHRoZSBjb250cm9sIGlzIGFjdGl2ZVxuICAgKi9cbiAgZ2V0IGFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vbE1hcCAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIE9MIG92ZXJsYXkgc291cmNlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0IG9sRHJhd2luZ0xheWVyU291cmNlKCk6IE9sVmVjdG9yU291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5vbERyYXdpbmdMYXllci5nZXRTb3VyY2UoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3B0aW9uczogRHJhd0NvbnRyb2xPcHRpb25zKSB7XG4gICAgdGhpcy5vbERyYXdpbmdMYXllciA9IG9wdGlvbnMuZHJhd2luZ0xheWVyXG4gICAgICA/IG9wdGlvbnMuZHJhd2luZ0xheWVyXG4gICAgICA6IHRoaXMuY3JlYXRlT2xJbm5lck92ZXJsYXlMYXllcigpO1xuICAgIHRoaXMub2xHZW9tZXRyeVR5cGUgPSB0aGlzLm9wdGlvbnMuZ2VvbWV0cnlUeXBlO1xuICAgIHRoaXMub2xJbnRlcmFjdGlvblN0eWxlID0gdGhpcy5vcHRpb25zLmludGVyYWN0aW9uU3R5bGU7XG4gIH1cblxuICAvKipcbiAgICogQWRkIG9yIHJlbW92ZSB0aGlzIGNvbnRyb2wgdG8vZnJvbSBhIG1hcC5cbiAgICogQHBhcmFtIG1hcCBPTCBNYXBcbiAgICovXG4gIHNldE9sTWFwKG9sTWFwOiBPbE1hcCB8IHVuZGVmaW5lZCwgYWN0aXZhdGVNb2RpZnlBbmRTZWxlY3Q/OiBib29sZWFuKSB7XG4gICAgaWYgKCFvbE1hcCkge1xuICAgICAgdGhpcy5jbGVhck9sSW5uZXJPdmVybGF5U291cmNlKCk7XG4gICAgICB0aGlzLnJlbW92ZU9sSW5uZXJPdmVybGF5TGF5ZXIoKTtcbiAgICAgIHRoaXMucmVtb3ZlT2xJbnRlcmFjdGlvbnMoKTtcbiAgICAgIHRoaXMub2xNYXAgPSBvbE1hcDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9sTWFwID0gb2xNYXA7XG4gICAgdGhpcy5hZGRPbElubmVyT3ZlcmxheUxheWVyKCk7XG4gICAgdGhpcy5hZGRPbEludGVyYWN0aW9ucyhhY3RpdmF0ZU1vZGlmeUFuZFNlbGVjdCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBkcmF3aW5nIGxheWVyIHNvdXJjZVxuICAgKi9cbiAgZ2V0U291cmNlKCk6IE9sVmVjdG9yU291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5vbERyYXdpbmdMYXllclNvdXJjZTtcbiAgfVxuXG4gIHNldE9sSW50ZXJhY3Rpb25TdHlsZShzdHlsZSkge1xuICAgIHRoaXMub2xJbnRlcmFjdGlvblN0eWxlID0gc3R5bGU7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBjdXJyZW50IGdlb21ldHJ5IHR5cGVcbiAgICogQHBhcmFtIGdlb21ldHJ5VHlwZSB0aGUgZ2VvbWV0cnkgdHlwZVxuICAgKi9cbiAgc2V0R2VvbWV0cnlUeXBlKGdlb21ldHJ5VHlwZTogVHlwZSkge1xuICAgIHRoaXMub2xHZW9tZXRyeVR5cGUgPSBnZW9tZXRyeVR5cGU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IGdlb21ldHJ5IHR5cGVcbiAgICovXG4gIGdldEdlb21ldHJ5VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5vbEdlb21ldHJ5VHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBkcmF3aW5nIHNvdXJjZSBpZiBub25lIGlzIGRlZmluZWQgaW4gdGhlIG9wdGlvbnNcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlT2xJbm5lck92ZXJsYXlMYXllcigpOiBPbFZlY3RvckxheWVyPE9sVmVjdG9yU291cmNlPiB7XG4gICAgcmV0dXJuIG5ldyBPbFZlY3RvckxheWVyKHtcbiAgICAgIHNvdXJjZTogdGhpcy5vcHRpb25zLmRyYXdpbmdMYXllclNvdXJjZVxuICAgICAgICA/IHRoaXMub3B0aW9ucy5kcmF3aW5nTGF5ZXJTb3VyY2VcbiAgICAgICAgOiBuZXcgT2xWZWN0b3JTb3VyY2UoKSxcbiAgICAgIHN0eWxlOiB0aGlzLm9wdGlvbnMuZHJhd2luZ0xheWVyU3R5bGUsXG4gICAgICB6SW5kZXg6IDUwMFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHRoZSBkcmF3aW5nIGxheWVyIGlmIGl0IHdhc24ndCBkZWZpbmVkIGluIHRoZSBvcHRpb25zXG4gICAqL1xuICBwcml2YXRlIHJlbW92ZU9sSW5uZXJPdmVybGF5TGF5ZXIoKSB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuZHJhd2luZ0xheWVyICYmIHRoaXMub2xNYXApIHtcbiAgICAgIHRoaXMub2xNYXAucmVtb3ZlTGF5ZXIodGhpcy5vbERyYXdpbmdMYXllcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCB0aGUgZHJhd2luZyBsYXllciBpZiBpdCB3YXNuJ3QgZGVmaW5lZCBpbiB0aGUgb3B0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBhZGRPbElubmVyT3ZlcmxheUxheWVyKCkge1xuICAgIGlmICghdGhpcy5vcHRpb25zLmRyYXdpbmdMYXllcikge1xuICAgICAgdGhpcy5vbE1hcC5hZGRMYXllcih0aGlzLm9sRHJhd2luZ0xheWVyKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgdGhlIGRyYXdpbmcgbGF5ZXIgc291cmNlIGlmIGl0IHdhc24ndCBkZWZpbmVkIGluIHRoZSBvcHRpb25zXG4gICAqL1xuICBwcml2YXRlIGNsZWFyT2xJbm5lck92ZXJsYXlTb3VyY2UoKSB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuZHJhd2luZ0xheWVyICYmICF0aGlzLm9wdGlvbnMuZHJhd2luZ0xheWVyU291cmNlKSB7XG4gICAgICB0aGlzLm9sRHJhd2luZ0xheWVyU291cmNlLmNsZWFyKHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgaW50ZXJhY3Rpb25zIHRvIHRoZSBtYXAgYW4gc2V0IHVwIHNvbWUgbGlzdGVuZXJzXG4gICAqL1xuICBhZGRPbEludGVyYWN0aW9ucyhhY3RpdmF0ZU1vZGlmeUFuZFNlbGVjdD86IGJvb2xlYW4pIHtcbiAgICAvLyBDcmVhdGUgRHJhdyBpbnRlcmFjdGlvblxuICAgIGxldCBvbERyYXdJbnRlcmFjdGlvbjtcbiAgICBpZiAoIXRoaXMuZnJlZWhhbmQkLmdldFZhbHVlKCkpIHtcbiAgICAgIGlmICghdGhpcy5pc3ByZWRlZmluZWRSYWRpdXMkLmdldFZhbHVlKCkpIHtcbiAgICAgICAgb2xEcmF3SW50ZXJhY3Rpb24gPSBuZXcgT2xEcmF3KHtcbiAgICAgICAgICB0eXBlOiB0aGlzLm9sR2VvbWV0cnlUeXBlIGFzIFR5cGUsXG4gICAgICAgICAgc291cmNlOiB0aGlzLmdldFNvdXJjZSgpLFxuICAgICAgICAgIHN0b3BDbGljazogdHJ1ZSxcbiAgICAgICAgICBzdHlsZTogdGhpcy5vbEludGVyYWN0aW9uU3R5bGUsXG4gICAgICAgICAgbWF4UG9pbnRzOiB0aGlzLm9wdGlvbnMubWF4UG9pbnRzLFxuICAgICAgICAgIGZyZWVoYW5kOiBmYWxzZSxcbiAgICAgICAgICBmcmVlaGFuZENvbmRpdGlvbjogKCkgPT4gZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbERyYXdJbnRlcmFjdGlvbiA9IG5ldyBPbERyYXcoe1xuICAgICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgICAgc291cmNlOiB0aGlzLmdldFNvdXJjZSgpLFxuICAgICAgICAgIHN0b3BDbGljazogdHJ1ZSxcbiAgICAgICAgICBzdHlsZTogdGhpcy5vbEludGVyYWN0aW9uU3R5bGUsXG4gICAgICAgICAgbWF4UG9pbnRzOiB0aGlzLm9wdGlvbnMubWF4UG9pbnRzLFxuICAgICAgICAgIGZyZWVoYW5kOiBmYWxzZSxcbiAgICAgICAgICBmcmVlaGFuZENvbmRpdGlvbjogKCkgPT4gZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLm9sR2VvbWV0cnlUeXBlID09PSAnUG9pbnQnKSB7XG4gICAgICAgIG9sRHJhd0ludGVyYWN0aW9uID0gbmV3IE9sRHJhdyh7XG4gICAgICAgICAgdHlwZTogJ0NpcmNsZScsXG4gICAgICAgICAgc291cmNlOiB0aGlzLmdldFNvdXJjZSgpLFxuICAgICAgICAgIHN0eWxlOlxuICAgICAgICAgICAgdHlwZW9mIHRoaXMub2xJbnRlcmFjdGlvblN0eWxlID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgIDogdGhpcy5vbEludGVyYWN0aW9uU3R5bGUsXG4gICAgICAgICAgbWF4UG9pbnRzOiB0aGlzLm9wdGlvbnMubWF4UG9pbnRzLFxuICAgICAgICAgIGZyZWVoYW5kOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2xEcmF3SW50ZXJhY3Rpb24gPSBuZXcgT2xEcmF3KHtcbiAgICAgICAgICB0eXBlOiB0aGlzLm9sR2VvbWV0cnlUeXBlIGFzIFR5cGUsXG4gICAgICAgICAgc291cmNlOiB0aGlzLmdldFNvdXJjZSgpLFxuICAgICAgICAgIHN0eWxlOiB0aGlzLm9sSW50ZXJhY3Rpb25TdHlsZSxcbiAgICAgICAgICBtYXhQb2ludHM6IHRoaXMub3B0aW9ucy5tYXhQb2ludHMsXG4gICAgICAgICAgZnJlZWhhbmQ6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRkIERyYXcgaW50ZXJhY3Rpb24gdG8gbWFwIGFuZCBjcmVhdGUgbGlzdGVuZXJzXG4gICAgdGhpcy5vbE1hcC5hZGRJbnRlcmFjdGlvbihvbERyYXdJbnRlcmFjdGlvbik7XG4gICAgdGhpcy5vbERyYXdJbnRlcmFjdGlvbiA9IG9sRHJhd0ludGVyYWN0aW9uO1xuICAgIHRoaXMub25EcmF3U3RhcnRLZXkgPSBvbERyYXdJbnRlcmFjdGlvbi5vbihcbiAgICAgICdkcmF3c3RhcnQnLFxuICAgICAgKGV2ZW50OiBPbERyYXdFdmVudCkgPT4gdGhpcy5vbkRyYXdTdGFydChldmVudClcbiAgICApO1xuICAgIHRoaXMub25EcmF3RW5kS2V5ID0gb2xEcmF3SW50ZXJhY3Rpb24ub24oJ2RyYXdlbmQnLCAoZXZlbnQ6IE9sRHJhd0V2ZW50KSA9PlxuICAgICAgdGhpcy5vbkRyYXdFbmQoZXZlbnQpXG4gICAgKTtcbiAgICB0aGlzLm9uRHJhd0Fib3J0S2V5ID0gb2xEcmF3SW50ZXJhY3Rpb24ub24oXG4gICAgICAnZHJhd2Fib3J0JyxcbiAgICAgIChldmVudDogT2xEcmF3RXZlbnQpID0+IHRoaXMuYWJvcnQkLm5leHQoZXZlbnQuZmVhdHVyZS5nZXRHZW9tZXRyeSgpKVxuICAgICk7XG5cbiAgICBpZiAoYWN0aXZhdGVNb2RpZnlBbmRTZWxlY3QpIHtcbiAgICAgIC8vIENyZWF0ZSBhIE1vZGlmeSBpbnRlcmFjdGlvbiwgYWRkIGl0IHRvIG1hcCBhbmQgY3JlYXRlIGEgbGlzdGVuZXJcbiAgICAgIGNvbnN0IG9sTW9kaWZ5SW50ZXJhY3Rpb24gPSBuZXcgT2xNb2RpZnkoe1xuICAgICAgICBzb3VyY2U6IHRoaXMuZ2V0U291cmNlKClcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLm9sTWFwLmFkZEludGVyYWN0aW9uKG9sTW9kaWZ5SW50ZXJhY3Rpb24pO1xuICAgICAgdGhpcy5vbE1vZGlmeUludGVyYWN0aW9uID0gb2xNb2RpZnlJbnRlcmFjdGlvbjtcblxuICAgICAgLy8gQ3JlYXRlIGEgc2VsZWN0IGludGVyYWN0aW9uIGFuZCBhZGQgaXQgdG8gbWFwXG4gICAgICBpZiAoIXRoaXMub2xTZWxlY3RJbnRlcmFjdGlvbikge1xuICAgICAgICBjb25zdCBvbFNlbGVjdEludGVyYWN0aW9uID0gbmV3IE9sU2VsZWN0KHtcbiAgICAgICAgICBjb25kaXRpb246IGRvdWJsZUNsaWNrLFxuICAgICAgICAgIHN0eWxlOiB1bmRlZmluZWRcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub2xNYXAuYWRkSW50ZXJhY3Rpb24ob2xTZWxlY3RJbnRlcmFjdGlvbik7XG4gICAgICAgIHRoaXMub2xTZWxlY3RJbnRlcmFjdGlvbiA9IG9sU2VsZWN0SW50ZXJhY3Rpb247XG5cbiAgICAgICAgdGhpcy5vbFNlbGVjdEludGVyYWN0aW9uLm9uKCdzZWxlY3QnLCAoZXZlbnQ6IE9sU2VsZWN0RXZlbnQpID0+XG4gICAgICAgICAgdGhpcy5vblNlbGVjdChldmVudClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGludGVyYWN0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSByZW1vdmVPbEludGVyYWN0aW9ucygpIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlS2V5RG93bigpO1xuICAgIHVuQnlLZXkoW1xuICAgICAgdGhpcy5vbkRyYXdTdGFydEtleSxcbiAgICAgIHRoaXMub25EcmF3RW5kS2V5LFxuICAgICAgdGhpcy5vbkRyYXdLZXksXG4gICAgICB0aGlzLm9uRHJhd0Fib3J0S2V5XG4gICAgXSk7XG5cbiAgICBpZiAodGhpcy5vbE1hcCkge1xuICAgICAgdGhpcy5vbE1hcC5yZW1vdmVJbnRlcmFjdGlvbih0aGlzLm9sRHJhd0ludGVyYWN0aW9uKTtcbiAgICAgIHRoaXMub2xNYXAucmVtb3ZlSW50ZXJhY3Rpb24odGhpcy5vbE1vZGlmeUludGVyYWN0aW9uKTtcbiAgICB9XG5cbiAgICB0aGlzLm9sRHJhd0ludGVyYWN0aW9uID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub2xNb2RpZnlJbnRlcmFjdGlvbiA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIGRyYXdpbmcgc3RhcnRzLCBjbGVhciB0aGUgb3ZlcmxheSBhbmQgc3RhcnQgd2F0Y2hpbmcgZm9yIGNoYW5nZXNcbiAgICogQHBhcmFtIGV2ZW50IERyYXcgc3RhcnQgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgb25EcmF3U3RhcnQoZXZlbnQ6IE9sRHJhd0V2ZW50KSB7XG4gICAgY29uc3Qgb2xHZW9tZXRyeSA9IGV2ZW50LmZlYXR1cmUuZ2V0R2VvbWV0cnkoKTtcbiAgICB0aGlzLnN0YXJ0JC5uZXh0KG9sR2VvbWV0cnkpO1xuICAgIHRoaXMuY2xlYXJPbElubmVyT3ZlcmxheVNvdXJjZSgpO1xuICAgIHRoaXMub25EcmF3S2V5ID0gb2xHZW9tZXRyeS5vbignY2hhbmdlJywgKG9sR2VvbWV0cnlFdmVudDogQmFzaWNFdmVudCkgPT4ge1xuICAgICAgdGhpcy5tb3VzZVBvc2l0aW9uID0gZ2V0TW91c2VQb3NpdGlvbkZyb21PbEdlb21ldHJ5RXZlbnQob2xHZW9tZXRyeUV2ZW50KTtcbiAgICAgIHRoaXMuY2hhbmdlcyQubmV4dChvbEdlb21ldHJ5RXZlbnQudGFyZ2V0KTtcbiAgICB9KTtcbiAgICB0aGlzLnN1YnNjcmliZUtleURvd24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIGRyYXdpbmcgZW5kcywgdXBkYXRlIHRoZSBkcmF3aW5nIChmZWF0dXJlKSBnZW9tZXRyeSBvYnNlcnZhYmxlIGFuZCBhZGRcbiAgICogQHBhcmFtIGV2ZW50IERyYXcgZXZlbnQgKGRyYXdlbmQpXG4gICAqL1xuICBwcml2YXRlIG9uRHJhd0VuZChldmVudDogT2xEcmF3RXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuZmVhdHVyZS5nZXRHZW9tZXRyeSgpLmdldFR5cGUoKSA9PT0gJ1BvaW50Jykge1xuICAgICAgdGhpcy5yYWRpdXNEcmF3RW5kJC5uZXh0KHRoaXMucHJlZGVmaW5lZFJhZGl1cyQuZ2V0VmFsdWUoKSk7XG4gICAgfVxuICAgIHRoaXMudW5zdWJzY3JpYmVLZXlEb3duKCk7XG4gICAgdW5CeUtleSh0aGlzLm9uRHJhd0tleSk7XG4gICAgY29uc3Qgb2xHZW9tZXRyeSA9IGV2ZW50LmZlYXR1cmUuZ2V0R2VvbWV0cnkoKTtcbiAgICBvbEdlb21ldHJ5Lm9uKCdjaGFuZ2UnLCAoKSA9PiB7XG4gICAgICB0aGlzLm1vZGlmeSQubmV4dChvbEdlb21ldHJ5KTtcbiAgICB9KTtcbiAgICB0aGlzLmVuZCQubmV4dChvbEdlb21ldHJ5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIGEgZmVhdHVyZSBpcyBzZWxlY3RlZCwgdXBkYXRlIHRoZSBzZWxlY3RlZCBmZWF0dXJlIG9ic2VydmFibGVcbiAgICogQHBhcmFtIGV2ZW50IE1vZGlmeSBldmVudCAobW9kaWZ5ZW5kKVxuICAgKi9cbiAgcHJpdmF0ZSBvblNlbGVjdChldmVudDogT2xTZWxlY3RFdmVudCkge1xuICAgIGlmIChldmVudC5zZWxlY3RlZC5sZW5ndGggPT09IDEpIHtcbiAgICAgIHRoaXMuc2VsZWN0JC5uZXh0KGV2ZW50LnNlbGVjdGVkWzBdKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIGtleSBkb3ducyB1c2VkIGFzIGRyYXdpbmcgaW50ZXJhY3Rpb24gc2hvcmN1dHNcbiAgICovXG4gIHByaXZhdGUgc3Vic2NyaWJlS2V5RG93bigpIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlS2V5RG93bigpO1xuICAgIHRoaXMua2V5RG93biQkID0gZnJvbUV2ZW50KGRvY3VtZW50LCAna2V5ZG93bicpLnN1YnNjcmliZShcbiAgICAgIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAvLyBPbiBFc2NhcGUgb3IgJ2MnIGtleWRvd25zLCBhYm9ydCB0aGUgY3VycmVudCBkcmF3aW5nXG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgdGhpcy5vbERyYXdJbnRlcmFjdGlvbi5hYm9ydERyYXdpbmcoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPbiBCYWNrc3BhY2Ugb3IgJ3UnIGtleWRvd25zLCByZW1vdmUgbGFzdCB2ZXJ0ZXggb2YgY3VycmVudCBkcmF3aW5nXG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdCYWNrc3BhY2UnKSB7XG4gICAgICAgICAgdGhpcy5vbERyYXdJbnRlcmFjdGlvbi5yZW1vdmVMYXN0UG9pbnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9uIEVudGVyIG9yICdmJyBrZXlkb3ducywgZmluaXNoIGN1cnJlbnQgZHJhd2luZ1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgdGhpcy5vbERyYXdJbnRlcmFjdGlvbi5maW5pc2hEcmF3aW5nKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPbiBzcGFjZSBiYXIga2V5IGRvd24sIHBhbiB0byB0aGUgY3VycmVudCBtb3VzZSBwb3NpdGlvblxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgICAgICB0aGlzLm9sTWFwLmdldFZpZXcoKS5hbmltYXRlKHtcbiAgICAgICAgICAgIGNlbnRlcjogdGhpcy5tb3VzZVBvc2l0aW9uLFxuICAgICAgICAgICAgZHVyYXRpb246IDEwMFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVW5zdWJzY3JpYmUgdG8ga2V5IGRvd25cbiAgICovXG4gIHByaXZhdGUgdW5zdWJzY3JpYmVLZXlEb3duKCkge1xuICAgIGlmICh0aGlzLmtleURvd24kJCkge1xuICAgICAgdGhpcy5rZXlEb3duJCQudW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMua2V5RG93biQkID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -334,9 +334,6 @@ export class ModifyControl {
334
334
  onTranslateStart(event) {
335
335
  const olGeometry = event.features.item(0).getGeometry();
336
336
  this.start$.next(olGeometry);
337
- this.onTranslateKey = olGeometry.on('change', (olGeometryEvent) => {
338
- // this.changes$.next(olGeometryEvent.target);
339
- });
340
337
  }
341
338
  /**
342
339
  * When translation ends, update the geometry observable and stop watchign for changes
@@ -538,4 +535,4 @@ export class ModifyControl {
538
535
  return olFeatures.length > 0 ? olFeatures[0].getGeometry() : undefined;
539
536
  }
540
537
  }
541
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kaWZ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZ2VvbWV0cnkvc2hhcmVkL2NvbnRyb2xzL21vZGlmeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFHbkMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUt4QyxPQUFPLFlBQVksTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLFNBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUN4QyxPQUFPLG9CQUFvQixNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sTUFBTSxNQUFNLHFCQUFxQixDQUFDO0FBR3pDLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBRTdDLE9BQU8sV0FBVyxNQUFNLDBCQUEwQixDQUFDO0FBRW5ELE9BQU8sYUFBYSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFDO0FBSTlDLE9BQU8sRUFBRSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV4RCxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLDhCQUE4QixFQUM5QixtQ0FBbUMsRUFDcEMsTUFBTSxtQkFBbUIsQ0FBQztBQVczQjs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBK0VKO0lBOUVwQjs7T0FFRztJQUNJLE1BQU0sR0FBd0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVuRDs7T0FFRztJQUNJLElBQUksR0FBd0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVqRDs7T0FFRztJQUNJLFFBQVEsR0FBd0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUU3QyxLQUFLLENBQVE7SUFDYixjQUFjLENBQXFCO0lBQ3BDLG1CQUFtQixDQUFXO0lBQzdCLGdCQUFnQixDQUFNO0lBQ3RCLGNBQWMsQ0FBTTtJQUNwQixXQUFX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QyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdEQsT0FBTyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDekUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcbmltcG9ydCBPbE1hcCBmcm9tICdvbC9NYXAnO1xuaW1wb3J0IE1hcEJyb3dzZXJFdmVudCBmcm9tICdvbC9NYXBCcm93c2VyRXZlbnQnO1xuaW1wb3J0IHsgdW5CeUtleSB9IGZyb20gJ29sL09ic2VydmFibGUnO1xuaW1wb3J0IEJhc2ljRXZlbnQgZnJvbSAnb2wvZXZlbnRzL0V2ZW50JztcbmltcG9ydCBPbENpcmNsZSBmcm9tICdvbC9nZW9tL0NpcmNsZSc7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT2xHZW9tZXRyeSB9IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuaW1wb3J0IE9sTGluZVN0cmluZyBmcm9tICdvbC9nZW9tL0xpbmVTdHJpbmcnO1xuaW1wb3J0IE9sTGluZWFyUmluZyBmcm9tICdvbC9nZW9tL0xpbmVhclJpbmcnO1xuaW1wb3J0IE9sUG9seWdvbiBmcm9tICdvbC9nZW9tL1BvbHlnb24nO1xuaW1wb3J0IE9sRHJhZ0JveEludGVyYWN0aW9uIGZyb20gJ29sL2ludGVyYWN0aW9uL0RyYWdCb3gnO1xuaW1wb3J0IE9sRHJhdyBmcm9tICdvbC9pbnRlcmFjdGlvbi9EcmF3JztcbmltcG9ydCB7IERyYXdFdmVudCBhcyBPbERyYXdFdmVudCB9IGZyb20gJ29sL2ludGVyYWN0aW9uL0RyYXcnO1xuaW1wb3J0IE9sSW50ZXJhY3Rpb24gZnJvbSAnb2wvaW50ZXJhY3Rpb24vSW50ZXJhY3Rpb24nO1xuaW1wb3J0IE9sTW9kaWZ5IGZyb20gJ29sL2ludGVyYWN0aW9uL01vZGlmeSc7XG5pbXBvcnQgeyBNb2RpZnlFdmVudCBhcyBPbE1vZGlmeUV2ZW50IH0gZnJvbSAnb2wvaW50ZXJhY3Rpb24vTW9kaWZ5JztcbmltcG9ydCBPbFRyYW5zbGF0ZSBmcm9tICdvbC9pbnRlcmFjdGlvbi9UcmFuc2xhdGUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlRXZlbnQgYXMgT2xUcmFuc2xhdGVFdmVudCB9IGZyb20gJ29sL2ludGVyYWN0aW9uL1RyYW5zbGF0ZSc7XG5pbXBvcnQgT2xWZWN0b3JMYXllciBmcm9tICdvbC9sYXllci9WZWN0b3InO1xuaW1wb3J0IE9sVmVjdG9yU291cmNlIGZyb20gJ29sL3NvdXJjZS9WZWN0b3InO1xuaW1wb3J0ICogYXMgT2xTdHlsZSBmcm9tICdvbC9zdHlsZSc7XG5pbXBvcnQgeyBTdHlsZUxpa2UgYXMgT2xTdHlsZUxpa2UgfSBmcm9tICdvbC9zdHlsZS9TdHlsZSc7XG5cbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIGFkZExpbmVhclJpbmdUb09sUG9seWdvbixcbiAgY3JlYXRlRHJhd0hvbGVJbnRlcmFjdGlvblN0eWxlLFxuICBnZXRNb3VzZVBvc2l0aW9uRnJvbU9sR2VvbWV0cnlFdmVudFxufSBmcm9tICcuLi9nZW9tZXRyeS51dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kaWZ5Q29udHJvbE9wdGlvbnMge1xuICBzb3VyY2U/OiBPbFZlY3RvclNvdXJjZTxhbnk+O1xuICBsYXllcj86IE9sVmVjdG9yTGF5ZXI8YW55PjtcbiAgbGF5ZXJTdHlsZT86IE9sU3R5bGVMaWtlO1xuICBkcmF3U3R5bGU/OiBPbFN0eWxlTGlrZTtcbiAgbW9kaWZ5PzogYm9vbGVhbjtcbiAgdHJhbnNsYXRlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb250cm9sIHRvIG1vZGlmeSBnZW9tZXRyaWVzXG4gKi9cbmV4cG9ydCBjbGFzcyBNb2RpZnlDb250cm9sIHtcbiAgLyoqXG4gICAqIE1vZGlmeSBzdGFydCBvYnNlcnZhYmxlXG4gICAqL1xuICBwdWJsaWMgc3RhcnQkOiBTdWJqZWN0PE9sR2VvbWV0cnk+ID0gbmV3IFN1YmplY3QoKTtcblxuICAvKipcbiAgICogTW9kaWZ5IGVuZCBvYnNlcnZhYmxlXG4gICAqL1xuICBwdWJsaWMgZW5kJDogU3ViamVjdDxPbEdlb21ldHJ5PiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgLyoqXG4gICAqIEdlb21ldHJ5IGNoYW5nZXMgb2JzZXJ2YWJsZVxuICAgKi9cbiAgcHVibGljIGNoYW5nZXMkOiBTdWJqZWN0PE9sR2VvbWV0cnk+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIG9sTWFwOiBPbE1hcDtcbiAgcHJpdmF0ZSBvbE92ZXJsYXlMYXllcjogT2xWZWN0b3JMYXllcjxhbnk+O1xuICBwdWJsaWMgb2xNb2RpZnlJbnRlcmFjdGlvbjogT2xNb2RpZnk7XG4gIHByaXZhdGUgb25Nb2RpZnlTdGFydEtleTogYW55O1xuICBwcml2YXRlIG9uTW9kaWZ5RW5kS2V5OiBhbnk7XG4gIHByaXZhdGUgb25Nb2RpZnlLZXk6IGFueTtcbiAgcHJpdmF0ZSBvbE1vZGlmeUludGVyYWN0aW9uSXNBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBvbFRyYW5zbGF0ZUludGVyYWN0aW9uOiBPbFRyYW5zbGF0ZTtcbiAgcHJpdmF0ZSBvblRyYW5zbGF0ZVN0YXJ0S2V5OiBhbnk7XG4gIHByaXZhdGUgb25UcmFuc2xhdGVFbmRLZXk6IGFueTtcbiAgcHJpdmF0ZSBvblRyYW5zbGF0ZUtleTogYW55O1xuICBwcml2YXRlIG9sVHJhbnNsYXRlSW50ZXJhY3Rpb25Jc0FjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIG9sRHJhd0ludGVyYWN0aW9uOiBPbERyYXc7XG4gIHByaXZhdGUgb25EcmF3U3RhcnRLZXk6IGFueTtcbiAgcHJpdmF0ZSBvbkRyYXdFbmRLZXk6IGFueTtcbiAgcHJpdmF0ZSBvbkRyYXdLZXk6IGFueTtcbiAgcHJpdmF0ZSBvbERyYXdJbnRlcmFjdGlvbklzQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBtb3VzZVBvc2l0aW9uOiBbbnVtYmVyLCBudW1iZXJdO1xuXG4gIHByaXZhdGUga2V5RG93biQkOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgZHJhd0tleVVwJCQ6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBkcmF3S2V5RG93biQkOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSByZW1vdmVkT2xJbnRlcmFjdGlvbnM6IE9sSW50ZXJhY3Rpb25bXSA9IFtdO1xuICBwcml2YXRlIG9sTGluZWFyUmluZ3NMYXllcjogT2xWZWN0b3JMYXllcjxhbnk+O1xuXG4gIC8vIFRoaXMgaXMgdGhlIGdlb21ldHJ5IHRvIHRlc3QgYWdhaW5zdCB3aGVuIGRyYXdpbmcgaG9sZXNcbiAgcHJpdmF0ZSBvbE91dGVyR2VvbWV0cnk6IE9sR2VvbWV0cnk7XG5cbiAgLyoqXG4gICAqIFdoZXRlciB0aGUgY29udHJvbCBpcyBhY3RpdmVcbiAgICovXG4gIGdldCBhY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub2xNYXAgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPTCBvdmVybGF5IHNvdXJjZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCBvbE92ZXJsYXlTb3VyY2UoKTogT2xWZWN0b3JTb3VyY2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMub2xPdmVybGF5TGF5ZXIuZ2V0U291cmNlKCk7XG4gIH1cblxuICAvKipcbiAgICogT0wgbGluZWFyIHJpbmdzIHNvdXJjZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCBvbExpbmVhclJpbmdzU291cmNlKCk6IE9sVmVjdG9yU291cmNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLm9sTGluZWFyUmluZ3NMYXllci5nZXRTb3VyY2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGEgbW9kaWZ5IGNvbnRyb2wgc2hvdWxkIGJlIGF2YWlsYWJsZVxuICAgKi9cbiAgcHJpdmF0ZSBtb2RpZnk6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGEgdHJhbnNsYXRlIGNvbnRyb2wgc2hvdWxkIGJlIGF2YWlsYWJsZVxuICAgKi9cbiAgcHJpdmF0ZSB0cmFuc2xhdGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3B0aW9uczogTW9kaWZ5Q29udHJvbE9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5tb2RpZnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5tb2RpZnkgPSBvcHRpb25zLm1vZGlmeTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMudHJhbnNsYXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudHJhbnNsYXRlID0gb3B0aW9ucy50cmFuc2xhdGU7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMubGF5ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5vbE92ZXJsYXlMYXllciA9IG9wdGlvbnMubGF5ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub2xPdmVybGF5TGF5ZXIgPSB0aGlzLmNyZWF0ZU9sSW5uZXJPdmVybGF5TGF5ZXIoKTtcbiAgICB9XG4gICAgdGhpcy5vbExpbmVhclJpbmdzTGF5ZXIgPSB0aGlzLmNyZWF0ZU9sTGluZWFyUmluZ3NMYXllcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBvciByZW1vdmUgdGhpcyBjb250cm9sIHRvL2Zyb20gYSBtYXAuXG4gICAqIEBwYXJhbSBtYXAgT0wgTWFwXG4gICAqL1xuICBzZXRPbE1hcChvbE1hcDogT2xNYXAgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAob2xNYXAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jbGVhck9sSW5uZXJPdmVybGF5U291cmNlKCk7XG4gICAgICB0aGlzLnJlbW92ZU9sSW5uZXJPdmVybGF5TGF5ZXIoKTtcbiAgICAgIHRoaXMucmVtb3ZlT2xNb2RpZnlJbnRlcmFjdGlvbigpO1xuICAgICAgdGhpcy5yZW1vdmVPbFRyYW5zbGF0ZUludGVyYWN0aW9uKCk7XG4gICAgICB0aGlzLnJlbW92ZU9sRHJhd0ludGVyYWN0aW9uKCk7XG4gICAgICB0aGlzLm9sTWFwID0gb2xNYXA7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vbE1hcCA9IG9sTWFwO1xuICAgIHRoaXMuYWRkT2xJbm5lck92ZXJsYXlMYXllcigpO1xuXG4gICAgLy8gVGhlIG9yZGVyIGluIHdoaWNoIHRoZXNlIGludGVyYWN0aW9uc1xuICAgIC8vIGFyZSBhZGRlZCBpcyBpbXBvcnRhbnRcbiAgICBpZiAodGhpcy5tb2RpZnkgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuYWRkT2xEcmF3SW50ZXJhY3Rpb24oKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50cmFuc2xhdGUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuYWRkT2xUcmFuc2xhdGVJbnRlcmFjdGlvbigpO1xuICAgICAgdGhpcy5hY3RpdmF0ZVRyYW5zbGF0ZUludGVyYWN0aW9uKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubW9kaWZ5ID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmFkZE9sTW9kaWZ5SW50ZXJhY3Rpb24oKTtcbiAgICAgIHRoaXMuYWN0aXZhdGVNb2RpZnlJbnRlcmFjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIG92ZXJsYXkgc291cmNlXG4gICAqL1xuICBnZXRTb3VyY2UoKTogT2xWZWN0b3JTb3VyY2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMub2xPdmVybGF5U291cmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBPTCBnZW9tZXRyeSB0byB0aGUgb3ZlcmxheSBhbmQgc3RhcnQgbW9kaWZ5aW5nIGl0XG4gICAqIEBwYXJhbSBvbEdlb21ldHJ5IE9sIEdlb21ldHJ5XG4gICAqL1xuICBzZXRPbEdlb21ldHJ5KG9sR2VvbWV0cnk6IE9sR2VvbWV0cnkpIHtcbiAgICBjb25zdCBvbEZlYXR1cmUgPSBuZXcgT2xGZWF0dXJlKHsgZ2VvbWV0cnk6IG9sR2VvbWV0cnkgfSk7XG4gICAgdGhpcy5vbE92ZXJsYXlTb3VyY2UuY2xlYXIoKTtcbiAgICB0aGlzLm9sT3ZlcmxheVNvdXJjZS5hZGRGZWF0dXJlKG9sRmVhdHVyZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIG92ZXJsYXkgc291cmNlIGlmIG5vbmUgaXMgZGVmaW5lZCBpbiB0aGUgb3B0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVPbElubmVyT3ZlcmxheUxheWVyKCk6IE9sVmVjdG9yTGF5ZXI8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBPbFZlY3RvckxheWVyKHtcbiAgICAgIHNvdXJjZTogdGhpcy5vcHRpb25zLnNvdXJjZSA/IHRoaXMub3B0aW9ucy5zb3VyY2UgOiBuZXcgT2xWZWN0b3JTb3VyY2UoKSxcbiAgICAgIHN0eWxlOiB0aGlzLm9wdGlvbnMubGF5ZXJTdHlsZSxcbiAgICAgIHpJbmRleDogNTAwXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIHRoZSBvdmVybGF5IGxheWVyIGlmIGl0IHdhc24ndCBkZWZpbmVkIGluIHRoZSBvcHRpb25zXG4gICAqL1xuICBwcml2YXRlIGFkZE9sSW5uZXJPdmVybGF5TGF5ZXIoKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5sYXllciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLm9sTWFwLmFkZExheWVyKHRoaXMub2xPdmVybGF5TGF5ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgb3ZlcmxheSBsYXllciBpZiBpdCB3YXNuJ3QgZGVmaW5lZCBpbiB0aGUgb3B0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSByZW1vdmVPbElubmVyT3ZlcmxheUxheWVyKCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMubGF5ZXIgPT09IHVuZGVmaW5lZCAmJiB0aGlzLm9sTWFwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMub2xNYXAucmVtb3ZlTGF5ZXIodGhpcy5vbE92ZXJsYXlMYXllcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHRoZSBvdmVybGF5IHNvdXJjZSBpZiBpdCB3YXNuJ3QgZGVmaW5lZCBpbiB0aGUgb3B0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBjbGVhck9sSW5uZXJPdmVybGF5U291cmNlKCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMubGF5ZXIgPT09IHVuZGVmaW5lZCAmJiB0aGlzLm9wdGlvbnMuc291cmNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMub2xPdmVybGF5U291cmNlLmNsZWFyKHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT2xMaW5lYXJSaW5nc0xheWVyKCk6IE9sVmVjdG9yTGF5ZXI8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBPbFZlY3RvckxheWVyKHtcbiAgICAgIHNvdXJjZTogbmV3IE9sVmVjdG9yU291cmNlKCksXG4gICAgICBzdHlsZTogY3JlYXRlRHJhd0hvbGVJbnRlcmFjdGlvblN0eWxlKCksXG4gICAgICB6SW5kZXg6IDUwMFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCB0aGUgbGluZWFyIHJpbmdzIGxheWVyXG4gICAqL1xuICBwcml2YXRlIGFkZE9sTGluZWFyUmluZ3NMYXllcigpIHtcbiAgICB0aGlzLm9sTWFwLmFkZExheWVyKHRoaXMub2xMaW5lYXJSaW5nc0xheWVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgbGluZWFyIHJpbmdzIGxheWVyXG4gICAqL1xuICBwcml2YXRlIHJlbW92ZU9sTGluZWFyUmluZ3NMYXllcigpIHtcbiAgICB0aGlzLm9sTWFwLnJlbW92ZUxheWVyKHRoaXMub2xMaW5lYXJSaW5nc0xheWVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgbGluZWFyIHJpbmdzIHNvdXJjZVxuICAgKi9cbiAgcHJpdmF0ZSBjbGVhck9sTGluZWFyUmluZ3NTb3VyY2UoKSB7XG4gICAgdGhpcy5vbExpbmVhclJpbmdzU291cmNlLmNsZWFyKHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIG1vZGlmeSBpbnRlcmFjdGlvbiB0byB0aGUgbWFwIGFuIHNldCB1cCBzb21lIGxpc3RlbmVyc1xuICAgKi9cbiAgcHJpdmF0ZSBhZGRPbE1vZGlmeUludGVyYWN0aW9uKCkge1xuICAgIGNvbnN0IG9sTW9kaWZ5SW50ZXJhY3Rpb24gPSBuZXcgT2xNb2RpZnkoe1xuICAgICAgc291cmNlOiB0aGlzLm9sT3ZlcmxheVNvdXJjZSxcbiAgICAgIHN0eWxlOiB0aGlzLm9wdGlvbnMuZHJhd1N0eWxlIGFzIE9sU3R5bGUuU3R5bGVcbiAgICB9KTtcbiAgICB0aGlzLm9sTW9kaWZ5SW50ZXJhY3Rpb24gPSBvbE1vZGlmeUludGVyYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0aGUgbW9kaWZ5IGludGVyYWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHJlbW92ZU9sTW9kaWZ5SW50ZXJhY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMub2xNb2RpZnlJbnRlcmFjdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kZWFjdGl2YXRlTW9kaWZ5SW50ZXJhY3Rpb24oKTtcbiAgICB0aGlzLm9sTW9kaWZ5SW50ZXJhY3Rpb24gPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGFjdGl2YXRlTW9kaWZ5SW50ZXJhY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMub2xNb2RpZnlJbnRlcmFjdGlvbklzQWN0aXZlID09PSB0cnVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vbE1vZGlmeUludGVyYWN0aW9uSXNBY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMub25Nb2RpZnlTdGFydEtleSA9IHRoaXMub2xNb2RpZnlJbnRlcmFjdGlvbi5vbihcbiAgICAgICdtb2RpZnlzdGFydCcsXG4gICAgICAoZXZlbnQ6IE9sTW9kaWZ5RXZlbnQpID0+IHRoaXMub25Nb2RpZnlTdGFydChldmVudClcbiAgICApO1xuICAgIHRoaXMub25Nb2RpZnlFbmRLZXkgPSB0aGlzLm9sTW9kaWZ5SW50ZXJhY3Rpb24ub24oXG4gICAgICAnbW9kaWZ5ZW5kJyxcbiAgICAgIChldmVudDogT2xNb2RpZnlFdmVudCkgPT4gdGhpcy5vbk1vZGlmeUVuZChldmVudClcbiAgICApO1xuICAgIHRoaXMub2xNYXAuYWRkSW50ZXJhY3Rpb24odGhpcy5vbE1vZGlmeUludGVyYWN0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVhY3RpdmF0ZU1vZGlmeUludGVyYWN0aW9uKCkge1xuICAgIGlmICh0aGlzLm9sTW9kaWZ5SW50ZXJhY3Rpb25Jc0FjdGl2ZSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9sTW9kaWZ5SW50ZXJhY3Rpb25Jc0FjdGl2ZSA9IGZhbHNlO1xuXG4gICAgdW5CeUtleShbdGhpcy5vbk1vZGlmeVN0YXJ0S2V5LCB0aGlzLm9uTW9kaWZ5RW5kS2V5LCB0aGlzLm9uTW9kaWZ5S2V5XSk7XG4gICAgaWYgKHRoaXMub2xNYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5vbE1hcC5yZW1vdmVJbnRlcmFjdGlvbih0aGlzLm9sTW9kaWZ5SW50ZXJhY3Rpb24pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIG1vZGlmeWluZyBzdGFydHMsIGNsZWFyIHRoZSBvdmVybGF5IGFuZCBzdGFydCB3YXRjaGluZyBmb3IgY2hhbmdlc1xuICAgKiBAcGFyYW0gZXZlbnQgTW9kaWZ5IHN0YXJ0IGV2ZW50XG4gICAqL1xuICBwcml2YXRlIG9uTW9kaWZ5U3RhcnQoZXZlbnQ6IE9sTW9kaWZ5RXZlbnQpIHtcbiAgICBjb25zdCBvbEdlb21ldHJ5ID0gZXZlbnQuZmVhdHVyZXMuaXRlbSgwKS5nZXRHZW9tZXRyeSgpIGFzIE9sR2VvbWV0cnk7XG4gICAgdGhpcy5zdGFydCQubmV4dChvbEdlb21ldHJ5KTtcbiAgICB0aGlzLm9uTW9kaWZ5S2V5ID0gb2xHZW9tZXRyeS5vbihcbiAgICAgICdjaGFuZ2UnLFxuICAgICAgKG9sR2VvbWV0cnlFdmVudDogQmFzaWNFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLm1vdXNlUG9zaXRpb24gPVxuICAgICAgICAgIGdldE1vdXNlUG9zaXRpb25Gcm9tT2xHZW9tZXRyeUV2ZW50KG9sR2VvbWV0cnlFdmVudCk7XG4gICAgICAgIHRoaXMuY2hhbmdlcyQubmV4dChcbiAgICAgICAgICBvbEdlb21ldHJ5RXZlbnQudGFyZ2V0IGFzIE9sTGluZVN0cmluZyB8IE9sQ2lyY2xlIHwgT2xQb2x5Z29uXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmliZVRvS2V5RG93bigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gbW9kaWZ5aW5nIGVuZHMsIHVwZGF0ZSB0aGUgZ2VvbWV0cnkgb2JzZXJ2YWJsZSBhbmQgc3RvcCB3YXRjaGluZyBmb3IgY2hhbmdlc1xuICAgKiBAcGFyYW0gZXZlbnQgTW9kaWZ5IGVuZCBldmVudFxuICAgKi9cbiAgcHJpdmF0ZSBvbk1vZGlmeUVuZChldmVudDogT2xNb2RpZnlFdmVudCkge1xuICAgIHVuQnlLZXkodGhpcy5vbk1vZGlmeUtleSk7XG4gICAgdGhpcy5lbmQkLm5leHQoZXZlbnQuZmVhdHVyZXMuaXRlbSgwKS5nZXRHZW9tZXRyeSgpIGFzIE9sR2VvbWV0cnkpO1xuICAgIHRoaXMudW5zdWJzY3JpYmVUb0tleURvd24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gc3BhY2Uga2V5IGRvd24gdG8gcGFuIHRoZSBtYXBcbiAgICovXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9LZXlEb3duKCkge1xuICAgIHRoaXMua2V5RG93biQkID0gZnJvbUV2ZW50KGRvY3VtZW50LCAna2V5ZG93bicpLnN1YnNjcmliZShcbiAgICAgIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgICAgICAvLyBPbiBzcGFjZSBiYXIsIHBhbiB0byB0aGUgY3VycmVudCBtb3VzZSBwb3NpdGlvblxuICAgICAgICAgIHRoaXMub2xNYXAuZ2V0VmlldygpLmFuaW1hdGUoe1xuICAgICAgICAgICAgY2VudGVyOiB0aGlzLm1vdXNlUG9zaXRpb24sXG4gICAgICAgICAgICBkdXJhdGlvbjogMFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVW5zdWJzY3JpYmUgdG8ga2V5IGRvd25cbiAgICovXG4gIHByaXZhdGUgdW5zdWJzY3JpYmVUb0tleURvd24oKSB7XG4gICAgaWYgKHRoaXMua2V5RG93biQkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMua2V5RG93biQkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHRyYW5zbGF0ZSBpbnRlcmFjdGlvbiB0byB0aGUgbWFwIGFuIHNldCB1cCBzb21lIGxpc3RlbmVyc1xuICAgKi9cbiAgcHJpdmF0ZSBhZGRPbFRyYW5zbGF0ZUludGVyYWN0aW9uKCkge1xuICAgIGNvbnN0IG9sVHJhbnNsYXRlSW50ZXJhY3Rpb24gPSBuZXcgT2xUcmFuc2xhdGUoe1xuICAgICAgbGF5ZXJzOiBbdGhpcy5vbE92ZXJsYXlMYXllcl1cbiAgICB9KTtcbiAgICB0aGlzLm9sVHJhbnNsYXRlSW50ZXJhY3Rpb24gPSBvbFRyYW5zbGF0ZUludGVyYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0aGUgdHJhbnNsYXRlIGludGVyYWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHJlbW92ZU9sVHJhbnNsYXRlSW50ZXJhY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMub2xUcmFuc2xhdGVJbnRlcmFjdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kZWFjdGl2YXRlVHJhbnNsYXRlSW50ZXJhY3Rpb24oKTtcbiAgICB0aGlzLm9sVHJhbnNsYXRlSW50ZXJhY3Rpb24gPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGFjdGl2YXRlVHJhbnNsYXRlSW50ZXJhY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMub2xUcmFuc2xhdGVJbnRlcmFjdGlvbklzQWN0aXZlID09PSB0cnVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vbFRyYW5zbGF0ZUludGVyYWN0aW9uSXNBY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMub25UcmFuc2xhdGVTdGFydEtleSA9IHRoaXMub2xUcmFuc2xhdGVJbnRlcmFjdGlvbi5vbihcbiAgICAgICd0cmFuc2xhdGVzdGFydCcsXG4gICAgICAoZXZlbnQ6IE9sVHJhbnNsYXRlRXZlbnQpID0+IHRoaXMub25UcmFuc2xhdGVTdGFydChldmVudClcbiAgICApO1xuICAgIHRoaXMub25UcmFuc2xhdGVFbmRLZXkgPSB0aGlzLm9sVHJhbnNsYXRlSW50ZXJhY3Rpb24ub24oXG4gICAgICAndHJhbnNsYXRlZW5kJyxcbiAgICAgIChldmVudDogT2xUcmFuc2xhdGVFdmVudCkgPT4gdGhpcy5vblRyYW5zbGF0ZUVuZChldmVudClcbiAgICApO1xuICAgIHRoaXMub2xNYXAuYWRkSW50ZXJhY3Rpb24odGhpcy5vbFRyYW5zbGF0ZUludGVyYWN0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVhY3RpdmF0ZVRyYW5zbGF0ZUludGVyYWN0aW9uKCkge1xuICAgIGlmICh0aGlzLm9sVHJhbnNsYXRlSW50ZXJhY3Rpb25Jc0FjdGl2ZSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9sVHJhbnNsYXRlSW50ZXJhY3Rpb25Jc0FjdGl2ZSA9IGZhbHNlO1xuICAgIHVuQnlLZXkoW1xuICAgICAgdGhpcy5vblRyYW5zbGF0ZVN0YXJ0S2V5LFxuICAgICAgdGhpcy5vblRyYW5zbGF0ZUVuZEtleSxcbiAgICAgIHRoaXMub25UcmFuc2xhdGVLZXlcbiAgICBdKTtcbiAgICBpZiAodGhpcy5vbE1hcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLm9sTWFwLnJlbW92ZUludGVyYWN0aW9uKHRoaXMub2xUcmFuc2xhdGVJbnRlcmFjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJhbnNsYXRpb24gc3RhcnRzLCBjbGVhciB0aGUgb3ZlcmxheSBhbmQgc3RhcnQgd2F0Y2hpbmcgZm9yIGNoYW5nZXNcbiAgICogQHBhcmFtIGV2ZW50IFRyYW5zbGF0ZSBzdGFydCBldmVudFxuICAgKi9cbiAgcHJpdmF0ZSBvblRyYW5zbGF0ZVN0YXJ0KGV2ZW50OiBPbFRyYW5zbGF0ZUV2ZW50KSB7XG4gICAgY29uc3Qgb2xHZW9tZXRyeSA9IGV2ZW50LmZlYXR1cmVzLml0ZW0oMCkuZ2V0R2VvbWV0cnkoKSBhcyBPbEdlb21ldHJ5O1xuICAgIHRoaXMuc3RhcnQkLm5leHQob2xHZW9tZXRyeSk7XG4gICAgdGhpcy5vblRyYW5zbGF0ZUtleSA9IG9sR2VvbWV0cnkub24oXG4gICAgICAnY2hhbmdlJyxcbiAgICAgIChvbEdlb21ldHJ5RXZlbnQ6IEJhc2ljRXZlbnQpID0+IHtcbiAgICAgICAgLy8gdGhpcy5jaGFuZ2VzJC5uZXh0KG9sR2VvbWV0cnlFdmVudC50YXJnZXQpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogV2hlbiB0cmFuc2xhdGlvbiBlbmRzLCB1cGRhdGUgdGhlIGdlb21ldHJ5IG9ic2VydmFibGUgYW5kIHN0b3Agd2F0Y2hpZ24gZm9yIGNoYW5nZXNcbiAgICogQHBhcmFtIGV2ZW50IFRyYW5zbGF0ZSBlbmQgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgb25UcmFuc2xhdGVFbmQoZXZlbnQ6IE9sVHJhbnNsYXRlRXZlbnQpIHtcbiAgICB1bkJ5S2V5KHRoaXMub25UcmFuc2xhdGVLZXkpO1xuICAgIHRoaXMuZW5kJC5uZXh0KGV2ZW50LmZlYXR1cmVzLml0ZW0oMCkuZ2V0R2VvbWV0cnkoKSBhcyBPbEdlb21ldHJ5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBkcmF3IGludGVyYWN0aW9uIHRvIHRoZSBtYXAgYW4gc2V0IHVwIHNvbWUgbGlzdGVuZXJzXG4gICAqL1xuICBwcml2YXRlIGFkZE9sRHJhd0ludGVyYWN0aW9uKCkge1xuICAgIGNvbnN0IG9sRHJhd0ludGVyYWN0aW9uID0gbmV3IE9sRHJhdyh7XG4gICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICBzb3VyY2U6IHRoaXMub2xMaW5lYXJSaW5nc1NvdXJjZSxcbiAgICAgIHN0b3BDbGljazogdHJ1ZSxcbiAgICAgIHN0eWxlOiBjcmVhdGVEcmF3SG9sZUludGVyYWN0aW9uU3R5bGUoKSxcbiAgICAgIGNvbmRpdGlvbjogKGV2ZW50OiBNYXBCcm93c2VyRXZlbnQ8YW55PikgPT4ge1xuICAgICAgICBjb25zdCBvbE91dGVyR2VvbWV0cnkgPSB0aGlzLm9sT3V0ZXJHZW9tZXRyeSB8fCB0aGlzLmdldE9sR2VvbWV0cnkoKTtcbiAgICAgICAgY29uc3QgaW50ZXJzZWN0cyA9IG9sT3V0ZXJHZW9tZXRyeS5pbnRlcnNlY3RzQ29vcmRpbmF0ZShcbiAgICAgICAgICBldmVudC5jb29yZGluYXRlXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBpbnRlcnNlY3RzO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5vbERyYXdJbnRlcmFjdGlvbiA9IG9sRHJhd0ludGVyYWN0aW9uO1xuICAgIHRoaXMuc3Vic2NyaWJlVG9EcmF3S2V5RG93bigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byBDVFJMIGtleSBkb3duIHRvIGFjdGl2YXRlIHRoZSBkcmF3IGNvbnRyb2xcbiAgICovXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9EcmF3S2V5RG93bigpIHtcbiAgICB0aGlzLmRyYXdLZXlEb3duJCQgPSBmcm9tRXZlbnQoZG9jdW1lbnQsICdrZXlkb3duJykuc3Vic2NyaWJlKFxuICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudC5rZXkgIT09ICdDb250cm9sJykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmVUb0RyYXdLZXlEb3duKCk7XG5cbiAgICAgICAgY29uc3Qgb2xHZW9tZXRyeSA9IHRoaXMuZ2V0T2xHZW9tZXRyeSgpO1xuICAgICAgICBpZiAoIW9sR2VvbWV0cnkgfHwgIShvbEdlb21ldHJ5IGluc3RhbmNlb2YgT2xQb2x5Z29uKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlVG9EcmF3S2V5VXAoKTtcblxuICAgICAgICB0aGlzLmRlYWN0aXZhdGVNb2RpZnlJbnRlcmFjdGlvbigpO1xuICAgICAgICB0aGlzLmRlYWN0aXZhdGVUcmFuc2xhdGVJbnRlcmFjdGlvbigpO1xuICAgICAgICB0aGlzLmFjdGl2YXRlRHJhd0ludGVyYWN0aW9uKCk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gQ1RSTCBrZXkgdXAgdG8gZGVhY3RpdmF0ZSB0aGUgZHJhdyBjb250cm9sXG4gICAqL1xuICBwcml2YXRlIHN1YnNjcmliZVRvRHJhd0tleVVwKCkge1xuICAgIHRoaXMuZHJhd0tleVVwJCQgPSBmcm9tRXZlbnQoZG9jdW1lbnQsICdrZXl1cCcpLnN1YnNjcmliZShcbiAgICAgIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQua2V5ICE9PSAnQ29udHJvbCcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlVG9EcmF3S2V5VXAoKTtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZVRvS2V5RG93bigpO1xuICAgICAgICB0aGlzLmRlYWN0aXZhdGVEcmF3SW50ZXJhY3Rpb24oKTtcblxuICAgICAgICB0aGlzLmFjdGl2YXRlTW9kaWZ5SW50ZXJhY3Rpb24oKTtcbiAgICAgICAgaWYgKHRoaXMudHJhbnNsYXRlID09PSB0cnVlKSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmF0ZVRyYW5zbGF0ZUludGVyYWN0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdWJzY3JpYmVUb0RyYXdLZXlEb3duKCk7XG5cbiAgICAgICAgdGhpcy5vbE91dGVyR2VvbWV0cnkgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuY2xlYXJPbExpbmVhclJpbmdzU291cmNlKCk7XG4gICAgICAgIHRoaXMuZW5kJC5uZXh0KHRoaXMuZ2V0T2xHZW9tZXRyeSgpKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuc3Vic2NyaWJlIHRvIGRyYXcga2V5IGRvd25cbiAgICovXG4gIHByaXZhdGUgdW5zdWJzY3JpYmVUb0RyYXdLZXlEb3duKCkge1xuICAgIGlmICh0aGlzLmRyYXdLZXlEb3duJCQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5kcmF3S2V5RG93biQkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVuc3Vic2NyaWJlIHRvIGtleSB1cFxuICAgKi9cbiAgcHJpdmF0ZSB1bnN1YnNjcmliZVRvRHJhd0tleVVwKCkge1xuICAgIGlmICh0aGlzLmRyYXdLZXlVcCQkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZHJhd0tleVVwJCQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHRoZSBkcmF3IGludGVyYWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHJlbW92ZU9sRHJhd0ludGVyYWN0aW9uKCkge1xuICAgIGlmICh0aGlzLm9sRHJhd0ludGVyYWN0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVuc3Vic2NyaWJlVG9LZXlEb3duKCk7XG4gICAgdGhpcy51bnN1YnNjcmliZVRvRHJhd0tleVVwKCk7XG4gICAgdGhpcy51bnN1YnNjcmliZVRvRHJhd0tleURvd24oKTtcbiAgICB0aGlzLmRlYWN0aXZhdGVEcmF3SW50ZXJhY3Rpb24oKTtcbiAgICB0aGlzLmNsZWFyT2xMaW5lYXJSaW5nc1NvdXJjZSgpO1xuICAgIHRoaXMub2xEcmF3SW50ZXJhY3Rpb24gPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGUgdGhlIGRyYXcgaW50ZXJhY3Rpb25cbiAgICovXG4gIHByaXZhdGUgYWN0aXZhdGVEcmF3SW50ZXJhY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMub2xEcmF3SW50ZXJhY3Rpb25Jc0FjdGl2ZSA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY2xlYXJPbExpbmVhclJpbmdzU291cmNlKCk7XG4gICAgdGhpcy5hZGRPbExpbmVhclJpbmdzTGF5ZXIoKTtcblxuICAgIHRoaXMub2xNYXAuZ2V0SW50ZXJhY3Rpb25zKCkuZm9yRWFjaCgob2xJbnRlcmFjdGlvbjogT2xJbnRlcmFjdGlvbikgPT4ge1xuICAgICAgaWYgKG9sSW50ZXJhY3Rpb24gaW5zdGFuY2VvZiBPbERyYWdCb3hJbnRlcmFjdGlvbikge1xuICAgICAgICB0aGlzLm9sTWFwLnJlbW92ZUludGVyYWN0aW9uKG9sSW50ZXJhY3Rpb24pO1xuICAgICAgICB0aGlzLnJlbW92ZWRPbEludGVyYWN0aW9ucy5wdXNoKG9sSW50ZXJhY3Rpb24pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5vbERyYXdJbnRlcmFjdGlvbklzQWN0aXZlID0gdHJ1ZTtcbiAgICB0aGlzLm9uRHJhd1N0YXJ0S2V5ID0gdGhpcy5vbERyYXdJbnRlcmFjdGlvbi5vbihcbiAgICAgICdkcmF3c3RhcnQnLFxuICAgICAgKGV2ZW50OiBPbERyYXdFdmVudCkgPT4gdGhpcy5vbkRyYXdTdGFydChldmVudClcbiAgICApO1xuICAgIHRoaXMub25EcmF3RW5kS2V5ID0gdGhpcy5vbERyYXdJbnRlcmFjdGlvbi5vbihcbiAgICAgICdkcmF3ZW5kJyxcbiAgICAgIChldmVudDogT2xEcmF3RXZlbnQpID0+IHRoaXMub25EcmF3RW5kKGV2ZW50KVxuICAgICk7XG4gICAgdGhpcy5vbE1hcC5hZGRJbnRlcmFjdGlvbih0aGlzLm9sRHJhd0ludGVyYWN0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWFjdGl2YXRlIHRoZSBkcmF3IGludGVyYWN0aW9uXG4gICAqL1xuICBwcml2YXRlIGRlYWN0aXZhdGVEcmF3SW50ZXJhY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMub2xEcmF3SW50ZXJhY3Rpb25Jc0FjdGl2ZSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJlbW92ZU9sTGluZWFyUmluZ3NMYXllcigpO1xuXG4gICAgdGhpcy5yZW1vdmVkT2xJbnRlcmFjdGlvbnMuZm9yRWFjaCgob2xJbnRlcmFjdGlvbjogT2xJbnRlcmFjdGlvbikgPT4ge1xuICAgICAgdGhpcy5vbE1hcC5hZGRJbnRlcmFjdGlvbihvbEludGVyYWN0aW9uKTtcbiAgICB9KTtcbiAgICB0aGlzLnJlbW92ZWRPbEludGVyYWN0aW9ucyA9IFtdO1xuXG4gICAgdGhpcy5vbERyYXdJbnRlcmFjdGlvbklzQWN0aXZlID0gZmFsc2U7XG4gICAgdW5CeUtleShbdGhpcy5vbkRyYXdTdGFydEtleSwgdGhpcy5vbkRyYXdFbmRLZXksIHRoaXMub25EcmF3S2V5XSk7XG4gICAgaWYgKHRoaXMub2xNYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5vbE1hcC5yZW1vdmVJbnRlcmFjdGlvbih0aGlzLm9sRHJhd0ludGVyYWN0aW9uKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hlbiBkcmF3IHN0YXJ0LCBhZGQgYSBuZXcgbGluZXJhciByaW5nIHRvIHRoZSBnZW9tZXRyeSBhbmQgc3RhcnQgd2F0Y2hpbmcgZm9yIGNoYW5nZXNcbiAgICogQHBhcmFtIGV2ZW50IERyYXcgc3RhcnQgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgb25EcmF3U3RhcnQoZXZlbnQ6IE9sRHJhd0V2ZW50KSB7XG4gICAgY29uc3Qgb2xHZW9tZXRyeSA9IGV2ZW50LmZlYXR1cmUuZ2V0R2VvbWV0cnkoKTtcbiAgICB0aGlzLm9sT3V0ZXJHZW9tZXRyeSA9IHRoaXMuZ2V0T2xHZW9tZXRyeSgpLmNsb25lKCk7XG5cbiAgICBjb25zdCBsaW5lYXJSaW5nQ29vcmRpbmF0ZXMgPSAoXG4gICAgICAob2xHZW9tZXRyeSBhcyBhbnkpLmdldExpbmVhclJpbmcoKSBhcyBhbnlcbiAgICApLmdldENvb3JkaW5hdGVzKCk7XG4gICAgdGhpcy5hZGRMaW5lYXJSaW5nVG9PbEdlb21ldHJ5KGxpbmVhclJpbmdDb29yZGluYXRlcyk7XG4gICAgdGhpcy5zdGFydCQubmV4dCh0aGlzLmdldE9sR2VvbWV0cnkoKSk7XG5cbiAgICB0aGlzLm9uRHJhd0tleSA9IG9sR2VvbWV0cnkub24oJ2NoYW5nZScsIChvbEdlb21ldHJ5RXZlbnQ6IEJhc2ljRXZlbnQpID0+IHtcbiAgICAgIHRoaXMubW91c2VQb3NpdGlvbiA9IGdldE1vdXNlUG9zaXRpb25Gcm9tT2xHZW9tZXRyeUV2ZW50KG9sR2VvbWV0cnlFdmVudCk7XG4gICAgICBjb25zdCBvbEdlb21ldHJ5VGFyZ2V0ID0gb2xHZW9tZXRyeUV2ZW50LnRhcmdldCBhcyBPbFBvbHlnb247XG4gICAgICBjb25zdCBfbGluZWFyUmluZ0Nvb3JkaW5hdGVzID0gb2xHZW9tZXRyeVRhcmdldFxuICAgICAgICAuZ2V0TGluZWFyUmluZygwKVxuICAgICAgICAuZ2V0Q29vcmRpbmF0ZXMoKTtcbiAgICAgIHRoaXMudXBkYXRlTGluZWFyUmluZ09mT2xHZW9tZXRyeShfbGluZWFyUmluZ0Nvb3JkaW5hdGVzKTtcbiAgICAgIHRoaXMuY2hhbmdlcyQubmV4dCh0aGlzLmdldE9sR2VvbWV0cnkoKSk7XG4gICAgfSk7XG4gICAgdGhpcy5zdWJzY3JpYmVUb0tleURvd24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIHRyYW5zbGF0aW9uIGVuZHMsIHVwZGF0ZSB0aGUgZ2VvbWV0cnkgb2JzZXJ2YWJsZSBhbmQgc3RvcCB3YXRjaGlnbiBmb3IgY2hhbmdlc1xuICAgKiBAcGFyYW0gZXZlbnQgRHJhdyBlbmQgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgb25EcmF3RW5kKGV2ZW50OiBPbERyYXdFdmVudCkge1xuICAgIHVuQnlLZXkodGhpcy5vbkRyYXdLZXkpO1xuICAgIHRoaXMub2xPdXRlckdlb21ldHJ5ID0gdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgbGluZWFyUmluZ0Nvb3JkaW5hdGVzID0gKFxuICAgICAgKGV2ZW50LmZlYXR1cmUuZ2V0R2VvbWV0cnkoKSBhcyBhbnkpLmdldExpbmVhclJpbmcoKSBhcyBhbnlcbiAgICApLmdldENvb3JkaW5hdGVzKCk7XG4gICAgdGhpcy51cGRhdGVMaW5lYXJSaW5nT2ZPbEdlb21ldHJ5KGxpbmVhclJpbmdDb29yZGluYXRlcyk7XG4gICAgdGhpcy5jbGVhck9sTGluZWFyUmluZ3NTb3VyY2UoKTtcbiAgICB0aGlzLmVuZCQubmV4dCh0aGlzLmdldE9sR2VvbWV0cnkoKSk7XG4gICAgdGhpcy51bnN1YnNjcmliZVRvS2V5RG93bigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGxpbmVhciByaW5nIHRvIHRoZSBnZW9tZXRyeSBiZWluZyBtb2RpZmllZFxuICAgKiBAcGFyYW0gY29vcmRpbmF0ZXMgTGluZWFyIHJpbmcgY29vcmRpbmF0ZXNcbiAgICovXG4gIHByaXZhdGUgYWRkTGluZWFyUmluZ1RvT2xHZW9tZXRyeShjb29yZGluYXRlczogbnVtYmVyW10pIHtcbiAgICBjb25zdCBvbEdlb21ldHJ5ID0gdGhpcy5nZXRPbEdlb21ldHJ5KCkgYXMgT2xQb2x5Z29uO1xuICAgIGNvbnN0IG9sTGluZWFyUmluZyA9IG5ldyBPbExpbmVhclJpbmcoY29vcmRpbmF0ZXMpO1xuICAgIGFkZExpbmVhclJpbmdUb09sUG9seWdvbihvbEdlb21ldHJ5LCBvbExpbmVhclJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgbGFzdCBsaW5lYXIgcmluZyBvZiB0aGUgZ2VvbWV0cnkgYmVpbmcgbW9kaWZpZWRcbiAgICogQHBhcmFtIGNvb3JkaW5hdGVzIExpbmVhciByaW5nIGNvb3JkaW5hdGVzXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZUxpbmVhclJpbmdPZk9sR2VvbWV0cnkoY29vcmRpbmF0ZXM6IG51bWJlcltdW10pIHtcbiAgICBjb25zdCBvbEdlb21ldHJ5ID0gdGhpcy5nZXRPbEdlb21ldHJ5KCkgYXMgT2xQb2x5Z29uO1xuICAgIC8vIFJlbW92ZSB0aGUgbGFzdCBsaW5lYXIgcmluZyAodGhlIG9uZSB3ZSBhcmUgdXBkYXRpbmcpXG4gICAgY29uc3Qgb2xMaW5lYXJSaW5ncyA9IG9sR2VvbWV0cnkuZ2V0TGluZWFyUmluZ3MoKS5zbGljZSgwLCAtMSk7XG4gICAgY29uc3QgbmV3Q29vcmRpbmF0ZXMgPSBvbExpbmVhclJpbmdzLm1hcCgob2xMaW5lYXJSaW5nOiBPbExpbmVhclJpbmcpID0+IHtcbiAgICAgIHJldHVybiBvbExpbmVhclJpbmcuZ2V0Q29vcmRpbmF0ZXMoKTtcbiAgICB9KTtcbiAgICBuZXdDb29yZGluYXRlcy5wdXNoKGNvb3JkaW5hdGVzKTtcbiAgICBvbEdlb21ldHJ5LnNldENvb3JkaW5hdGVzKG5ld0Nvb3JkaW5hdGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGdlb21ldHJ5IGJlaW5nIG1vZGlmaWVkXG4gICAqIEByZXR1cm5zIE9MIEdlb21ldHJ5XG4gICAqL1xuICBwcml2YXRlIGdldE9sR2VvbWV0cnkoKTogT2xHZW9tZXRyeSB7XG4gICAgY29uc3Qgb2xGZWF0dXJlcyA9IHRoaXMub2xPdmVybGF5U291cmNlLmdldEZlYXR1cmVzKCk7XG4gICAgcmV0dXJuIG9sRmVhdHVyZXMubGVuZ3RoID4gMCA/IG9sRmVhdHVyZXNbMF0uZ2V0R2VvbWV0cnkoKSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19
538
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kaWZ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZ2VvbWV0cnkvc2hhcmVkL2NvbnRyb2xzL21vZGlmeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFHbkMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUt4QyxPQUFPLFlBQVksTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLFNBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUN4QyxPQUFPLG9CQUFvQixNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sTUFBTSxNQUFNLHFCQUFxQixDQUFDO0FBR3pDLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBRTdDLE9BQU8sV0FBVyxNQUFNLDBCQUEwQixDQUFDO0FBRW5ELE9BQU8sYUFBYSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFDO0FBSTlDLE9BQU8sRUFBRSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV4RCxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLDhCQUE4QixFQUM5QixtQ0FBbUMsRUFDcEMsTUFBTSxtQkFBbUIsQ0FBQztBQVczQjs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBK0VKO0lBOUVwQjs7T0FFRztJQUNJLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBYyxDQUFDO0lBRTFDOztPQUVHO0lBQ0ksSUFBSSxHQUFHLElBQUksT0FBTyxFQUFjLENBQUM7SUFFeEM7O09BRUc7SUFDSSxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQWMsQ0FBQztJQUVwQyxLQUFLLENBQVE7SUFDYixjQUFjLENBQXFCO0lBQ3BDLG1CQUFtQixDQUFXO0lBQzdCLGdCQUFnQixDQUFNO0lBQ3RCLGNBQWMsQ0FBTTtJQUNwQixXQUFXLENB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QUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDekUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcbmltcG9ydCBPbE1hcCBmcm9tICdvbC9NYXAnO1xuaW1wb3J0IE1hcEJyb3dzZXJFdmVudCBmcm9tICdvbC9NYXBCcm93c2VyRXZlbnQnO1xuaW1wb3J0IHsgdW5CeUtleSB9IGZyb20gJ29sL09ic2VydmFibGUnO1xuaW1wb3J0IEJhc2ljRXZlbnQgZnJvbSAnb2wvZXZlbnRzL0V2ZW50JztcbmltcG9ydCBPbENpcmNsZSBmcm9tICdvbC9nZW9tL0NpcmNsZSc7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT2xHZW9tZXRyeSB9IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuaW1wb3J0IE9sTGluZVN0cmluZyBmcm9tICdvbC9nZW9tL0xpbmVTdHJpbmcnO1xuaW1wb3J0IE9sTGluZWFyUmluZyBmcm9tICdvbC9nZW9tL0xpbmVhclJpbmcnO1xuaW1wb3J0IE9sUG9seWdvbiBmcm9tICdvbC9nZW9tL1BvbHlnb24nO1xuaW1wb3J0IE9sRHJhZ0JveEludGVyYWN0aW9uIGZyb20gJ29sL2ludGVyYWN0aW9uL0RyYWdCb3gnO1xuaW1wb3J0IE9sRHJhdyBmcm9tICdvbC9pbnRlcmFjdGlvbi9EcmF3JztcbmltcG9ydCB7IERyYXdFdmVudCBhcyBPbERyYXdFdmVudCB9IGZyb20gJ29sL2ludGVyYWN0aW9uL0RyYXcnO1xuaW1wb3J0IE9sSW50ZXJhY3Rpb24gZnJvbSAnb2wvaW50ZXJhY3Rpb24vSW50ZXJhY3Rpb24nO1xuaW1wb3J0IE9sTW9kaWZ5IGZyb20gJ29sL2ludGVyYWN0aW9uL01vZGlmeSc7XG5pbXBvcnQgeyBNb2RpZnlFdmVudCBhcyBPbE1vZGlmeUV2ZW50IH0gZnJvbSAnb2wvaW50ZXJhY3Rpb24vTW9kaWZ5JztcbmltcG9ydCBPbFRyYW5zbGF0ZSBmcm9tICdvbC9pbnRlcmFjdGlvbi9UcmFuc2xhdGUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlRXZlbnQgYXMgT2xUcmFuc2xhdGVFdmVudCB9IGZyb20gJ29sL2ludGVyYWN0aW9uL1RyYW5zbGF0ZSc7XG5pbXBvcnQgT2xWZWN0b3JMYXllciBmcm9tICdvbC9sYXllci9WZWN0b3InO1xuaW1wb3J0IE9sVmVjdG9yU291cmNlIGZyb20gJ29sL3NvdXJjZS9WZWN0b3InO1xuaW1wb3J0ICogYXMgT2xTdHlsZSBmcm9tICdvbC9zdHlsZSc7XG5pbXBvcnQgeyBTdHlsZUxpa2UgYXMgT2xTdHlsZUxpa2UgfSBmcm9tICdvbC9zdHlsZS9TdHlsZSc7XG5cbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIGFkZExpbmVhclJpbmdUb09sUG9seWdvbixcbiAgY3JlYXRlRHJhd0hvbGVJbnRlcmFjdGlvblN0eWxlLFxuICBnZXRNb3VzZVBvc2l0aW9uRnJvbU9sR2VvbWV0cnlFdmVudFxufSBmcm9tICcuLi9nZW9tZXRyeS51dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kaWZ5Q29udHJvbE9wdGlvbnMge1xuICBzb3VyY2U/OiBPbFZlY3RvclNvdXJjZTxhbnk+O1xuICBsYXllcj86IE9sVmVjdG9yTGF5ZXI8YW55PjtcbiAgbGF5ZXJTdHlsZT86IE9sU3R5bGVMaWtlO1xuICBkcmF3U3R5bGU/OiBPbFN0eWxlTGlrZTtcbiAgbW9kaWZ5PzogYm9vbGVhbjtcbiAgdHJhbnNsYXRlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb250cm9sIHRvIG1vZGlmeSBnZW9tZXRyaWVzXG4gKi9cbmV4cG9ydCBjbGFzcyBNb2RpZnlDb250cm9sIHtcbiAgLyoqXG4gICAqIE1vZGlmeSBzdGFydCBvYnNlcnZhYmxlXG4gICAqL1xuICBwdWJsaWMgc3RhcnQkID0gbmV3IFN1YmplY3Q8T2xHZW9tZXRyeT4oKTtcblxuICAvKipcbiAgICogTW9kaWZ5IGVuZCBvYnNlcnZhYmxlXG4gICAqL1xuICBwdWJsaWMgZW5kJCA9IG5ldyBTdWJqZWN0PE9sR2VvbWV0cnk+KCk7XG5cbiAgLyoqXG4gICAqIEdlb21ldHJ5IGNoYW5nZXMgb2JzZXJ2YWJsZVxuICAgKi9cbiAgcHVibGljIGNoYW5nZXMkID0gbmV3IFN1YmplY3Q8T2xHZW9tZXRyeT4oKTtcblxuICBwcml2YXRlIG9sTWFwOiBPbE1hcDtcbiAgcHJpdmF0ZSBvbE92ZXJsYXlMYXllcjogT2xWZWN0b3JMYXllcjxhbnk+O1xuICBwdWJsaWMgb2xNb2RpZnlJbnRlcmFjdGlvbjogT2xNb2RpZnk7XG4gIHByaXZhdGUgb25Nb2RpZnlTdGFydEtleTogYW55O1xuICBwcml2YXRlIG9uTW9kaWZ5RW5kS2V5OiBhbnk7XG4gIHByaXZhdGUgb25Nb2RpZnlLZXk6IGFueTtcbiAgcHJpdmF0ZSBvbE1vZGlmeUludGVyYWN0aW9uSXNBY3RpdmUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBvbFRyYW5zbGF0ZUludGVyYWN0aW9uOiBPbFRyYW5zbGF0ZTtcbiAgcHJpdmF0ZSBvblRyYW5zbGF0ZVN0YXJ0S2V5OiBhbnk7XG4gIHByaXZhdGUgb25UcmFuc2xhdGVFbmRLZXk6IGFueTtcbiAgcHJpdmF0ZSBvblRyYW5zbGF0ZUtleTogYW55O1xuICBwcml2YXRlIG9sVHJhbnNsYXRlSW50ZXJhY3Rpb25Jc0FjdGl2ZSA9IGZhbHNlO1xuICBwcml2YXRlIG9sRHJhd0ludGVyYWN0aW9uOiBPbERyYXc7XG4gIHByaXZhdGUgb25EcmF3U3RhcnRLZXk6IGFueTtcbiAgcHJpdmF0ZSBvbkRyYXdFbmRLZXk6IGFueTtcbiAgcHJpdmF0ZSBvbkRyYXdLZXk6IGFueTtcbiAgcHJpdmF0ZSBvbERyYXdJbnRlcmFjdGlvbklzQWN0aXZlID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBtb3VzZVBvc2l0aW9uOiBbbnVtYmVyLCBudW1iZXJdO1xuXG4gIHByaXZhdGUga2V5RG93biQkOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgZHJhd0tleVVwJCQ6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBkcmF3S2V5RG93biQkOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSByZW1vdmVkT2xJbnRlcmFjdGlvbnM6IE9sSW50ZXJhY3Rpb25bXSA9IFtdO1xuICBwcml2YXRlIG9sTGluZWFyUmluZ3NMYXllcjogT2xWZWN0b3JMYXllcjxhbnk+O1xuXG4gIC8vIFRoaXMgaXMgdGhlIGdlb21ldHJ5IHRvIHRlc3QgYWdhaW5zdCB3aGVuIGRyYXdpbmcgaG9sZXNcbiAgcHJpdmF0ZSBvbE91dGVyR2VvbWV0cnk6IE9sR2VvbWV0cnk7XG5cbiAgLyoqXG4gICAqIFdoZXRlciB0aGUgY29udHJvbCBpcyBhY3RpdmVcbiAgICovXG4gIGdldCBhY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub2xNYXAgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPTCBvdmVybGF5IHNvdXJjZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCBvbE92ZXJsYXlTb3VyY2UoKTogT2xWZWN0b3JTb3VyY2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMub2xPdmVybGF5TGF5ZXIuZ2V0U291cmNlKCk7XG4gIH1cblxuICAvKipcbiAgICogT0wgbGluZWFyIHJpbmdzIHNvdXJjZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCBvbExpbmVhclJpbmdzU291cmNlKCk6IE9sVmVjdG9yU291cmNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLm9sTGluZWFyUmluZ3NMYXllci5nZXRTb3VyY2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGEgbW9kaWZ5IGNvbnRyb2wgc2hvdWxkIGJlIGF2YWlsYWJsZVxuICAgKi9cbiAgcHJpdmF0ZSBtb2RpZnkgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGEgdHJhbnNsYXRlIGNvbnRyb2wgc2hvdWxkIGJlIGF2YWlsYWJsZVxuICAgKi9cbiAgcHJpdmF0ZSB0cmFuc2xhdGUgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3B0aW9uczogTW9kaWZ5Q29udHJvbE9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5tb2RpZnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5tb2RpZnkgPSBvcHRpb25zLm1vZGlmeTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMudHJhbnNsYXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudHJhbnNsYXRlID0gb3B0aW9ucy50cmFuc2xhdGU7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMubGF5ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5vbE92ZXJsYXlMYXllciA9IG9wdGlvbnMubGF5ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub2xPdmVybGF5TGF5ZXIgPSB0aGlzLmNyZWF0ZU9sSW5uZXJPdmVybGF5TGF5ZXIoKTtcbiAgICB9XG4gICAgdGhpcy5vbExpbmVhclJpbmdzTGF5ZXIgPSB0aGlzLmNyZWF0ZU9sTGluZWFyUmluZ3NMYXllcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBvciByZW1vdmUgdGhpcyBjb250cm9sIHRvL2Zyb20gYSBtYXAuXG4gICAqIEBwYXJhbSBtYXAgT0wgTWFwXG4gICAqL1xuICBzZXRPbE1hcChvbE1hcDogT2xNYXAgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAob2xNYXAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jbGVhck9sSW5uZXJPdmVybGF5U291cmNlKCk7XG4gICAgICB0aGlzLnJlbW92ZU9sSW5uZXJPdmVybGF5TGF5ZXIoKTtcbiAgICAgIHRoaXMucmVtb3ZlT2xNb2RpZnlJbnRlcmFjdGlvbigpO1xuICAgICAgdGhpcy5yZW1vdmVPbFRyYW5zbGF0ZUludGVyYWN0aW9uKCk7XG4gICAgICB0aGlzLnJlbW92ZU9sRHJhd0ludGVyYWN0aW9uKCk7XG4gICAgICB0aGlzLm9sTWFwID0gb2xNYXA7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vbE1hcCA9IG9sTWFwO1xuICAgIHRoaXMuYWRkT2xJbm5lck92ZXJsYXlMYXllcigpO1xuXG4gICAgLy8gVGhlIG9yZGVyIGluIHdoaWNoIHRoZXNlIGludGVyYWN0aW9uc1xuICAgIC8vIGFyZSBhZGRlZCBpcyBpbXBvcnRhbnRcbiAgICBpZiAodGhpcy5tb2RpZnkgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuYWRkT2xEcmF3SW50ZXJhY3Rpb24oKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50cmFuc2xhdGUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuYWRkT2xUcmFuc2xhdGVJbnRlcmFjdGlvbigpO1xuICAgICAgdGhpcy5hY3RpdmF0ZVRyYW5zbGF0ZUludGVyYWN0aW9uKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubW9kaWZ5ID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmFkZE9sTW9kaWZ5SW50ZXJhY3Rpb24oKTtcbiAgICAgIHRoaXMuYWN0aXZhdGVNb2RpZnlJbnRlcmFjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIG92ZXJsYXkgc291cmNlXG4gICAqL1xuICBnZXRTb3VyY2UoKTogT2xWZWN0b3JTb3VyY2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMub2xPdmVybGF5U291cmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBPTCBnZW9tZXRyeSB0byB0aGUgb3ZlcmxheSBhbmQgc3RhcnQgbW9kaWZ5aW5nIGl0XG4gICAqIEBwYXJhbSBvbEdlb21ldHJ5IE9sIEdlb21ldHJ5XG4gICAqL1xuICBzZXRPbEdlb21ldHJ5KG9sR2VvbWV0cnk6IE9sR2VvbWV0cnkpIHtcbiAgICBjb25zdCBvbEZlYXR1cmUgPSBuZXcgT2xGZWF0dXJlKHsgZ2VvbWV0cnk6IG9sR2VvbWV0cnkgfSk7XG4gICAgdGhpcy5vbE92ZXJsYXlTb3VyY2UuY2xlYXIoKTtcbiAgICB0aGlzLm9sT3ZlcmxheVNvdXJjZS5hZGRGZWF0dXJlKG9sRmVhdHVyZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIG92ZXJsYXkgc291cmNlIGlmIG5vbmUgaXMgZGVmaW5lZCBpbiB0aGUgb3B0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVPbElubmVyT3ZlcmxheUxheWVyKCk6IE9sVmVjdG9yTGF5ZXI8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBPbFZlY3RvckxheWVyKHtcbiAgICAgIHNvdXJjZTogdGhpcy5vcHRpb25zLnNvdXJjZSA/IHRoaXMub3B0aW9ucy5zb3VyY2UgOiBuZXcgT2xWZWN0b3JTb3VyY2UoKSxcbiAgICAgIHN0eWxlOiB0aGlzLm9wdGlvbnMubGF5ZXJTdHlsZSxcbiAgICAgIHpJbmRleDogNTAwXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIHRoZSBvdmVybGF5IGxheWVyIGlmIGl0IHdhc24ndCBkZWZpbmVkIGluIHRoZSBvcHRpb25zXG4gICAqL1xuICBwcml2YXRlIGFkZE9sSW5uZXJPdmVybGF5TGF5ZXIoKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5sYXllciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLm9sTWFwLmFkZExheWVyKHRoaXMub2xPdmVybGF5TGF5ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgb3ZlcmxheSBsYXllciBpZiBpdCB3YXNuJ3QgZGVmaW5lZCBpbiB0aGUgb3B0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSByZW1vdmVPbElubmVyT3ZlcmxheUxheWVyKCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMubGF5ZXIgPT09IHVuZGVmaW5lZCAmJiB0aGlzLm9sTWFwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMub2xNYXAucmVtb3ZlTGF5ZXIodGhpcy5vbE92ZXJsYXlMYXllcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHRoZSBvdmVybGF5IHNvdXJjZSBpZiBpdCB3YXNuJ3QgZGVmaW5lZCBpbiB0aGUgb3B0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBjbGVhck9sSW5uZXJPdmVybGF5U291cmNlKCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMubGF5ZXIgPT09IHVuZGVmaW5lZCAmJiB0aGlzLm9wdGlvbnMuc291cmNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMub2xPdmVybGF5U291cmNlLmNsZWFyKHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT2xMaW5lYXJSaW5nc0xheWVyKCk6IE9sVmVjdG9yTGF5ZXI8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBPbFZlY3RvckxheWVyKHtcbiAgICAgIHNvdXJjZTogbmV3IE9sVmVjdG9yU291cmNlKCksXG4gICAgICBzdHlsZTogY3JlYXRlRHJhd0hvbGVJbnRlcmFjdGlvblN0eWxlKCksXG4gICAgICB6SW5kZXg6IDUwMFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCB0aGUgbGluZWFyIHJpbmdzIGxheWVyXG4gICAqL1xuICBwcml2YXRlIGFkZE9sTGluZWFyUmluZ3NMYXllcigpIHtcbiAgICB0aGlzLm9sTWFwLmFkZExheWVyKHRoaXMub2xMaW5lYXJSaW5nc0xheWVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgbGluZWFyIHJpbmdzIGxheWVyXG4gICAqL1xuICBwcml2YXRlIHJlbW92ZU9sTGluZWFyUmluZ3NMYXllcigpIHtcbiAgICB0aGlzLm9sTWFwLnJlbW92ZUxheWVyKHRoaXMub2xMaW5lYXJSaW5nc0xheWVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgbGluZWFyIHJpbmdzIHNvdXJjZVxuICAgKi9cbiAgcHJpdmF0ZSBjbGVhck9sTGluZWFyUmluZ3NTb3VyY2UoKSB7XG4gICAgdGhpcy5vbExpbmVhclJpbmdzU291cmNlLmNsZWFyKHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIG1vZGlmeSBpbnRlcmFjdGlvbiB0byB0aGUgbWFwIGFuIHNldCB1cCBzb21lIGxpc3RlbmVyc1xuICAgKi9cbiAgcHJpdmF0ZSBhZGRPbE1vZGlmeUludGVyYWN0aW9uKCkge1xuICAgIGNvbnN0IG9sTW9kaWZ5SW50ZXJhY3Rpb24gPSBuZXcgT2xNb2RpZnkoe1xuICAgICAgc291cmNlOiB0aGlzLm9sT3ZlcmxheVNvdXJjZSxcbiAgICAgIHN0eWxlOiB0aGlzLm9wdGlvbnMuZHJhd1N0eWxlIGFzIE9sU3R5bGUuU3R5bGVcbiAgICB9KTtcbiAgICB0aGlzLm9sTW9kaWZ5SW50ZXJhY3Rpb24gPSBvbE1vZGlmeUludGVyYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0aGUgbW9kaWZ5IGludGVyYWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHJlbW92ZU9sTW9kaWZ5SW50ZXJhY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMub2xNb2RpZnlJbnRlcmFjdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kZWFjdGl2YXRlTW9kaWZ5SW50ZXJhY3Rpb24oKTtcbiAgICB0aGlzLm9sTW9kaWZ5SW50ZXJhY3Rpb24gPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGFjdGl2YXRlTW9kaWZ5SW50ZXJhY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMub2xNb2RpZnlJbnRlcmFjdGlvbklzQWN0aXZlID09PSB0cnVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vbE1vZGlmeUludGVyYWN0aW9uSXNBY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMub25Nb2RpZnlTdGFydEtleSA9IHRoaXMub2xNb2RpZnlJbnRlcmFjdGlvbi5vbihcbiAgICAgICdtb2RpZnlzdGFydCcsXG4gICAgICAoZXZlbnQ6IE9sTW9kaWZ5RXZlbnQpID0+IHRoaXMub25Nb2RpZnlTdGFydChldmVudClcbiAgICApO1xuICAgIHRoaXMub25Nb2RpZnlFbmRLZXkgPSB0aGlzLm9sTW9kaWZ5SW50ZXJhY3Rpb24ub24oXG4gICAgICAnbW9kaWZ5ZW5kJyxcbiAgICAgIChldmVudDogT2xNb2RpZnlFdmVudCkgPT4gdGhpcy5vbk1vZGlmeUVuZChldmVudClcbiAgICApO1xuICAgIHRoaXMub2xNYXAuYWRkSW50ZXJhY3Rpb24odGhpcy5vbE1vZGlmeUludGVyYWN0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVhY3RpdmF0ZU1vZGlmeUludGVyYWN0aW9uKCkge1xuICAgIGlmICh0aGlzLm9sTW9kaWZ5SW50ZXJhY3Rpb25Jc0FjdGl2ZSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9sTW9kaWZ5SW50ZXJhY3Rpb25Jc0FjdGl2ZSA9IGZhbHNlO1xuXG4gICAgdW5CeUtleShbdGhpcy5vbk1vZGlmeVN0YXJ0S2V5LCB0aGlzLm9uTW9kaWZ5RW5kS2V5LCB0aGlzLm9uTW9kaWZ5S2V5XSk7XG4gICAgaWYgKHRoaXMub2xNYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5vbE1hcC5yZW1vdmVJbnRlcmFjdGlvbih0aGlzLm9sTW9kaWZ5SW50ZXJhY3Rpb24pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIG1vZGlmeWluZyBzdGFydHMsIGNsZWFyIHRoZSBvdmVybGF5IGFuZCBzdGFydCB3YXRjaGluZyBmb3IgY2hhbmdlc1xuICAgKiBAcGFyYW0gZXZlbnQgTW9kaWZ5IHN0YXJ0IGV2ZW50XG4gICAqL1xuICBwcml2YXRlIG9uTW9kaWZ5U3RhcnQoZXZlbnQ6IE9sTW9kaWZ5RXZlbnQpIHtcbiAgICBjb25zdCBvbEdlb21ldHJ5ID0gZXZlbnQuZmVhdHVyZXMuaXRlbSgwKS5nZXRHZW9tZXRyeSgpIGFzIE9sR2VvbWV0cnk7XG4gICAgdGhpcy5zdGFydCQubmV4dChvbEdlb21ldHJ5KTtcbiAgICB0aGlzLm9uTW9kaWZ5S2V5ID0gb2xHZW9tZXRyeS5vbihcbiAgICAgICdjaGFuZ2UnLFxuICAgICAgKG9sR2VvbWV0cnlFdmVudDogQmFzaWNFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLm1vdXNlUG9zaXRpb24gPVxuICAgICAgICAgIGdldE1vdXNlUG9zaXRpb25Gcm9tT2xHZW9tZXRyeUV2ZW50KG9sR2VvbWV0cnlFdmVudCk7XG4gICAgICAgIHRoaXMuY2hhbmdlcyQubmV4dChcbiAgICAgICAgICBvbEdlb21ldHJ5RXZlbnQudGFyZ2V0IGFzIE9sTGluZVN0cmluZyB8IE9sQ2lyY2xlIHwgT2xQb2x5Z29uXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmliZVRvS2V5RG93bigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gbW9kaWZ5aW5nIGVuZHMsIHVwZGF0ZSB0aGUgZ2VvbWV0cnkgb2JzZXJ2YWJsZSBhbmQgc3RvcCB3YXRjaGluZyBmb3IgY2hhbmdlc1xuICAgKiBAcGFyYW0gZXZlbnQgTW9kaWZ5IGVuZCBldmVudFxuICAgKi9cbiAgcHJpdmF0ZSBvbk1vZGlmeUVuZChldmVudDogT2xNb2RpZnlFdmVudCkge1xuICAgIHVuQnlLZXkodGhpcy5vbk1vZGlmeUtleSk7XG4gICAgdGhpcy5lbmQkLm5leHQoZXZlbnQuZmVhdHVyZXMuaXRlbSgwKS5nZXRHZW9tZXRyeSgpIGFzIE9sR2VvbWV0cnkpO1xuICAgIHRoaXMudW5zdWJzY3JpYmVUb0tleURvd24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gc3BhY2Uga2V5IGRvd24gdG8gcGFuIHRoZSBtYXBcbiAgICovXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9LZXlEb3duKCkge1xuICAgIHRoaXMua2V5RG93biQkID0gZnJvbUV2ZW50KGRvY3VtZW50LCAna2V5ZG93bicpLnN1YnNjcmliZShcbiAgICAgIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgICAgICAvLyBPbiBzcGFjZSBiYXIsIHBhbiB0byB0aGUgY3VycmVudCBtb3VzZSBwb3NpdGlvblxuICAgICAgICAgIHRoaXMub2xNYXAuZ2V0VmlldygpLmFuaW1hdGUoe1xuICAgICAgICAgICAgY2VudGVyOiB0aGlzLm1vdXNlUG9zaXRpb24sXG4gICAgICAgICAgICBkdXJhdGlvbjogMFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVW5zdWJzY3JpYmUgdG8ga2V5IGRvd25cbiAgICovXG4gIHByaXZhdGUgdW5zdWJzY3JpYmVUb0tleURvd24oKSB7XG4gICAgaWYgKHRoaXMua2V5RG93biQkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMua2V5RG93biQkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHRyYW5zbGF0ZSBpbnRlcmFjdGlvbiB0byB0aGUgbWFwIGFuIHNldCB1cCBzb21lIGxpc3RlbmVyc1xuICAgKi9cbiAgcHJpdmF0ZSBhZGRPbFRyYW5zbGF0ZUludGVyYWN0aW9uKCkge1xuICAgIGNvbnN0IG9sVHJhbnNsYXRlSW50ZXJhY3Rpb24gPSBuZXcgT2xUcmFuc2xhdGUoe1xuICAgICAgbGF5ZXJzOiBbdGhpcy5vbE92ZXJsYXlMYXllcl1cbiAgICB9KTtcbiAgICB0aGlzLm9sVHJhbnNsYXRlSW50ZXJhY3Rpb24gPSBvbFRyYW5zbGF0ZUludGVyYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0aGUgdHJhbnNsYXRlIGludGVyYWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHJlbW92ZU9sVHJhbnNsYXRlSW50ZXJhY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMub2xUcmFuc2xhdGVJbnRlcmFjdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kZWFjdGl2YXRlVHJhbnNsYXRlSW50ZXJhY3Rpb24oKTtcbiAgICB0aGlzLm9sVHJhbnNsYXRlSW50ZXJhY3Rpb24gPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGFjdGl2YXRlVHJhbnNsYXRlSW50ZXJhY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMub2xUcmFuc2xhdGVJbnRlcmFjdGlvbklzQWN0aXZlID09PSB0cnVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vbFRyYW5zbGF0ZUludGVyYWN0aW9uSXNBY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMub25UcmFuc2xhdGVTdGFydEtleSA9IHRoaXMub2xUcmFuc2xhdGVJbnRlcmFjdGlvbi5vbihcbiAgICAgICd0cmFuc2xhdGVzdGFydCcsXG4gICAgICAoZXZlbnQ6IE9sVHJhbnNsYXRlRXZlbnQpID0+IHRoaXMub25UcmFuc2xhdGVTdGFydChldmVudClcbiAgICApO1xuICAgIHRoaXMub25UcmFuc2xhdGVFbmRLZXkgPSB0aGlzLm9sVHJhbnNsYXRlSW50ZXJhY3Rpb24ub24oXG4gICAgICAndHJhbnNsYXRlZW5kJyxcbiAgICAgIChldmVudDogT2xUcmFuc2xhdGVFdmVudCkgPT4gdGhpcy5vblRyYW5zbGF0ZUVuZChldmVudClcbiAgICApO1xuICAgIHRoaXMub2xNYXAuYWRkSW50ZXJhY3Rpb24odGhpcy5vbFRyYW5zbGF0ZUludGVyYWN0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVhY3RpdmF0ZVRyYW5zbGF0ZUludGVyYWN0aW9uKCkge1xuICAgIGlmICh0aGlzLm9sVHJhbnNsYXRlSW50ZXJhY3Rpb25Jc0FjdGl2ZSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9sVHJhbnNsYXRlSW50ZXJhY3Rpb25Jc0FjdGl2ZSA9IGZhbHNlO1xuICAgIHVuQnlLZXkoW1xuICAgICAgdGhpcy5vblRyYW5zbGF0ZVN0YXJ0S2V5LFxuICAgICAgdGhpcy5vblRyYW5zbGF0ZUVuZEtleSxcbiAgICAgIHRoaXMub25UcmFuc2xhdGVLZXlcbiAgICBdKTtcbiAgICBpZiAodGhpcy5vbE1hcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLm9sTWFwLnJlbW92ZUludGVyYWN0aW9uKHRoaXMub2xUcmFuc2xhdGVJbnRlcmFjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJhbnNsYXRpb24gc3RhcnRzLCBjbGVhciB0aGUgb3ZlcmxheSBhbmQgc3RhcnQgd2F0Y2hpbmcgZm9yIGNoYW5nZXNcbiAgICogQHBhcmFtIGV2ZW50IFRyYW5zbGF0ZSBzdGFydCBldmVudFxuICAgKi9cbiAgcHJpdmF0ZSBvblRyYW5zbGF0ZVN0YXJ0KGV2ZW50OiBPbFRyYW5zbGF0ZUV2ZW50KSB7XG4gICAgY29uc3Qgb2xHZW9tZXRyeSA9IGV2ZW50LmZlYXR1cmVzLml0ZW0oMCkuZ2V0R2VvbWV0cnkoKSBhcyBPbEdlb21ldHJ5O1xuICAgIHRoaXMuc3RhcnQkLm5leHQob2xHZW9tZXRyeSk7XG4gIH1cblxuICAvKipcbiAgICogV2hlbiB0cmFuc2xhdGlvbiBlbmRzLCB1cGRhdGUgdGhlIGdlb21ldHJ5IG9ic2VydmFibGUgYW5kIHN0b3Agd2F0Y2hpZ24gZm9yIGNoYW5nZXNcbiAgICogQHBhcmFtIGV2ZW50IFRyYW5zbGF0ZSBlbmQgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgb25UcmFuc2xhdGVFbmQoZXZlbnQ6IE9sVHJhbnNsYXRlRXZlbnQpIHtcbiAgICB1bkJ5S2V5KHRoaXMub25UcmFuc2xhdGVLZXkpO1xuICAgIHRoaXMuZW5kJC5uZXh0KGV2ZW50LmZlYXR1cmVzLml0ZW0oMCkuZ2V0R2VvbWV0cnkoKSBhcyBPbEdlb21ldHJ5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBkcmF3IGludGVyYWN0aW9uIHRvIHRoZSBtYXAgYW4gc2V0IHVwIHNvbWUgbGlzdGVuZXJzXG4gICAqL1xuICBwcml2YXRlIGFkZE9sRHJhd0ludGVyYWN0aW9uKCkge1xuICAgIGNvbnN0IG9sRHJhd0ludGVyYWN0aW9uID0gbmV3IE9sRHJhdyh7XG4gICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICBzb3VyY2U6IHRoaXMub2xMaW5lYXJSaW5nc1NvdXJjZSxcbiAgICAgIHN0b3BDbGljazogdHJ1ZSxcbiAgICAgIHN0eWxlOiBjcmVhdGVEcmF3SG9sZUludGVyYWN0aW9uU3R5bGUoKSxcbiAgICAgIGNvbmRpdGlvbjogKGV2ZW50OiBNYXBCcm93c2VyRXZlbnQ8YW55PikgPT4ge1xuICAgICAgICBjb25zdCBvbE91dGVyR2VvbWV0cnkgPSB0aGlzLm9sT3V0ZXJHZW9tZXRyeSB8fCB0aGlzLmdldE9sR2VvbWV0cnkoKTtcbiAgICAgICAgY29uc3QgaW50ZXJzZWN0cyA9IG9sT3V0ZXJHZW9tZXRyeS5pbnRlcnNlY3RzQ29vcmRpbmF0ZShcbiAgICAgICAgICBldmVudC5jb29yZGluYXRlXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBpbnRlcnNlY3RzO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5vbERyYXdJbnRlcmFjdGlvbiA9IG9sRHJhd0ludGVyYWN0aW9uO1xuICAgIHRoaXMuc3Vic2NyaWJlVG9EcmF3S2V5RG93bigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byBDVFJMIGtleSBkb3duIHRvIGFjdGl2YXRlIHRoZSBkcmF3IGNvbnRyb2xcbiAgICovXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9EcmF3S2V5RG93bigpIHtcbiAgICB0aGlzLmRyYXdLZXlEb3duJCQgPSBmcm9tRXZlbnQoZG9jdW1lbnQsICdrZXlkb3duJykuc3Vic2NyaWJlKFxuICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudC5rZXkgIT09ICdDb250cm9sJykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmVUb0RyYXdLZXlEb3duKCk7XG5cbiAgICAgICAgY29uc3Qgb2xHZW9tZXRyeSA9IHRoaXMuZ2V0T2xHZW9tZXRyeSgpO1xuICAgICAgICBpZiAoIW9sR2VvbWV0cnkgfHwgIShvbEdlb21ldHJ5IGluc3RhbmNlb2YgT2xQb2x5Z29uKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlVG9EcmF3S2V5VXAoKTtcblxuICAgICAgICB0aGlzLmRlYWN0aXZhdGVNb2RpZnlJbnRlcmFjdGlvbigpO1xuICAgICAgICB0aGlzLmRlYWN0aXZhdGVUcmFuc2xhdGVJbnRlcmFjdGlvbigpO1xuICAgICAgICB0aGlzLmFjdGl2YXRlRHJhd0ludGVyYWN0aW9uKCk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gQ1RSTCBrZXkgdXAgdG8gZGVhY3RpdmF0ZSB0aGUgZHJhdyBjb250cm9sXG4gICAqL1xuICBwcml2YXRlIHN1YnNjcmliZVRvRHJhd0tleVVwKCkge1xuICAgIHRoaXMuZHJhd0tleVVwJCQgPSBmcm9tRXZlbnQoZG9jdW1lbnQsICdrZXl1cCcpLnN1YnNjcmliZShcbiAgICAgIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQua2V5ICE9PSAnQ29udHJvbCcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlVG9EcmF3S2V5VXAoKTtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZVRvS2V5RG93bigpO1xuICAgICAgICB0aGlzLmRlYWN0aXZhdGVEcmF3SW50ZXJhY3Rpb24oKTtcblxuICAgICAgICB0aGlzLmFjdGl2YXRlTW9kaWZ5SW50ZXJhY3Rpb24oKTtcbiAgICAgICAgaWYgKHRoaXMudHJhbnNsYXRlID09PSB0cnVlKSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmF0ZVRyYW5zbGF0ZUludGVyYWN0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdWJzY3JpYmVUb0RyYXdLZXlEb3duKCk7XG5cbiAgICAgICAgdGhpcy5vbE91dGVyR2VvbWV0cnkgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuY2xlYXJPbExpbmVhclJpbmdzU291cmNlKCk7XG4gICAgICAgIHRoaXMuZW5kJC5uZXh0KHRoaXMuZ2V0T2xHZW9tZXRyeSgpKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuc3Vic2NyaWJlIHRvIGRyYXcga2V5IGRvd25cbiAgICovXG4gIHByaXZhdGUgdW5zdWJzY3JpYmVUb0RyYXdLZXlEb3duKCkge1xuICAgIGlmICh0aGlzLmRyYXdLZXlEb3duJCQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5kcmF3S2V5RG93biQkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVuc3Vic2NyaWJlIHRvIGtleSB1cFxuICAgKi9cbiAgcHJpdmF0ZSB1bnN1YnNjcmliZVRvRHJhd0tleVVwKCkge1xuICAgIGlmICh0aGlzLmRyYXdLZXlVcCQkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZHJhd0tleVVwJCQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHRoZSBkcmF3IGludGVyYWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHJlbW92ZU9sRHJhd0ludGVyYWN0aW9uKCkge1xuICAgIGlmICh0aGlzLm9sRHJhd0ludGVyYWN0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVuc3Vic2NyaWJlVG9LZXlEb3duKCk7XG4gICAgdGhpcy51bnN1YnNjcmliZVRvRHJhd0tleVVwKCk7XG4gICAgdGhpcy51bnN1YnNjcmliZVRvRHJhd0tleURvd24oKTtcbiAgICB0aGlzLmRlYWN0aXZhdGVEcmF3SW50ZXJhY3Rpb24oKTtcbiAgICB0aGlzLmNsZWFyT2xMaW5lYXJSaW5nc1NvdXJjZSgpO1xuICAgIHRoaXMub2xEcmF3SW50ZXJhY3Rpb24gPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGUgdGhlIGRyYXcgaW50ZXJhY3Rpb25cbiAgICovXG4gIHByaXZhdGUgYWN0aXZhdGVEcmF3SW50ZXJhY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMub2xEcmF3SW50ZXJhY3Rpb25Jc0FjdGl2ZSA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY2xlYXJPbExpbmVhclJpbmdzU291cmNlKCk7XG4gICAgdGhpcy5hZGRPbExpbmVhclJpbmdzTGF5ZXIoKTtcblxuICAgIHRoaXMub2xNYXAuZ2V0SW50ZXJhY3Rpb25zKCkuZm9yRWFjaCgob2xJbnRlcmFjdGlvbjogT2xJbnRlcmFjdGlvbikgPT4ge1xuICAgICAgaWYgKG9sSW50ZXJhY3Rpb24gaW5zdGFuY2VvZiBPbERyYWdCb3hJbnRlcmFjdGlvbikge1xuICAgICAgICB0aGlzLm9sTWFwLnJlbW92ZUludGVyYWN0aW9uKG9sSW50ZXJhY3Rpb24pO1xuICAgICAgICB0aGlzLnJlbW92ZWRPbEludGVyYWN0aW9ucy5wdXNoKG9sSW50ZXJhY3Rpb24pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5vbERyYXdJbnRlcmFjdGlvbklzQWN0aXZlID0gdHJ1ZTtcbiAgICB0aGlzLm9uRHJhd1N0YXJ0S2V5ID0gdGhpcy5vbERyYXdJbnRlcmFjdGlvbi5vbihcbiAgICAgICdkcmF3c3RhcnQnLFxuICAgICAgKGV2ZW50OiBPbERyYXdFdmVudCkgPT4gdGhpcy5vbkRyYXdTdGFydChldmVudClcbiAgICApO1xuICAgIHRoaXMub25EcmF3RW5kS2V5ID0gdGhpcy5vbERyYXdJbnRlcmFjdGlvbi5vbihcbiAgICAgICdkcmF3ZW5kJyxcbiAgICAgIChldmVudDogT2xEcmF3RXZlbnQpID0+IHRoaXMub25EcmF3RW5kKGV2ZW50KVxuICAgICk7XG4gICAgdGhpcy5vbE1hcC5hZGRJbnRlcmFjdGlvbih0aGlzLm9sRHJhd0ludGVyYWN0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWFjdGl2YXRlIHRoZSBkcmF3IGludGVyYWN0aW9uXG4gICAqL1xuICBwcml2YXRlIGRlYWN0aXZhdGVEcmF3SW50ZXJhY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMub2xEcmF3SW50ZXJhY3Rpb25Jc0FjdGl2ZSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJlbW92ZU9sTGluZWFyUmluZ3NMYXllcigpO1xuXG4gICAgdGhpcy5yZW1vdmVkT2xJbnRlcmFjdGlvbnMuZm9yRWFjaCgob2xJbnRlcmFjdGlvbjogT2xJbnRlcmFjdGlvbikgPT4ge1xuICAgICAgdGhpcy5vbE1hcC5hZGRJbnRlcmFjdGlvbihvbEludGVyYWN0aW9uKTtcbiAgICB9KTtcbiAgICB0aGlzLnJlbW92ZWRPbEludGVyYWN0aW9ucyA9IFtdO1xuXG4gICAgdGhpcy5vbERyYXdJbnRlcmFjdGlvbklzQWN0aXZlID0gZmFsc2U7XG4gICAgdW5CeUtleShbdGhpcy5vbkRyYXdTdGFydEtleSwgdGhpcy5vbkRyYXdFbmRLZXksIHRoaXMub25EcmF3S2V5XSk7XG4gICAgaWYgKHRoaXMub2xNYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5vbE1hcC5yZW1vdmVJbnRlcmFjdGlvbih0aGlzLm9sRHJhd0ludGVyYWN0aW9uKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hlbiBkcmF3IHN0YXJ0LCBhZGQgYSBuZXcgbGluZXJhciByaW5nIHRvIHRoZSBnZW9tZXRyeSBhbmQgc3RhcnQgd2F0Y2hpbmcgZm9yIGNoYW5nZXNcbiAgICogQHBhcmFtIGV2ZW50IERyYXcgc3RhcnQgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgb25EcmF3U3RhcnQoZXZlbnQ6IE9sRHJhd0V2ZW50KSB7XG4gICAgY29uc3Qgb2xHZW9tZXRyeSA9IGV2ZW50LmZlYXR1cmUuZ2V0R2VvbWV0cnkoKTtcbiAgICB0aGlzLm9sT3V0ZXJHZW9tZXRyeSA9IHRoaXMuZ2V0T2xHZW9tZXRyeSgpLmNsb25lKCk7XG5cbiAgICBjb25zdCBsaW5lYXJSaW5nQ29vcmRpbmF0ZXMgPSAoXG4gICAgICAob2xHZW9tZXRyeSBhcyBhbnkpLmdldExpbmVhclJpbmcoKSBhcyBhbnlcbiAgICApLmdldENvb3JkaW5hdGVzKCk7XG4gICAgdGhpcy5hZGRMaW5lYXJSaW5nVG9PbEdlb21ldHJ5KGxpbmVhclJpbmdDb29yZGluYXRlcyk7XG4gICAgdGhpcy5zdGFydCQubmV4dCh0aGlzLmdldE9sR2VvbWV0cnkoKSk7XG5cbiAgICB0aGlzLm9uRHJhd0tleSA9IG9sR2VvbWV0cnkub24oJ2NoYW5nZScsIChvbEdlb21ldHJ5RXZlbnQ6IEJhc2ljRXZlbnQpID0+IHtcbiAgICAgIHRoaXMubW91c2VQb3NpdGlvbiA9IGdldE1vdXNlUG9zaXRpb25Gcm9tT2xHZW9tZXRyeUV2ZW50KG9sR2VvbWV0cnlFdmVudCk7XG4gICAgICBjb25zdCBvbEdlb21ldHJ5VGFyZ2V0ID0gb2xHZW9tZXRyeUV2ZW50LnRhcmdldCBhcyBPbFBvbHlnb247XG4gICAgICBjb25zdCBfbGluZWFyUmluZ0Nvb3JkaW5hdGVzID0gb2xHZW9tZXRyeVRhcmdldFxuICAgICAgICAuZ2V0TGluZWFyUmluZygwKVxuICAgICAgICAuZ2V0Q29vcmRpbmF0ZXMoKTtcbiAgICAgIHRoaXMudXBkYXRlTGluZWFyUmluZ09mT2xHZW9tZXRyeShfbGluZWFyUmluZ0Nvb3JkaW5hdGVzKTtcbiAgICAgIHRoaXMuY2hhbmdlcyQubmV4dCh0aGlzLmdldE9sR2VvbWV0cnkoKSk7XG4gICAgfSk7XG4gICAgdGhpcy5zdWJzY3JpYmVUb0tleURvd24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIHRyYW5zbGF0aW9uIGVuZHMsIHVwZGF0ZSB0aGUgZ2VvbWV0cnkgb2JzZXJ2YWJsZSBhbmQgc3RvcCB3YXRjaGlnbiBmb3IgY2hhbmdlc1xuICAgKiBAcGFyYW0gZXZlbnQgRHJhdyBlbmQgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgb25EcmF3RW5kKGV2ZW50OiBPbERyYXdFdmVudCkge1xuICAgIHVuQnlLZXkodGhpcy5vbkRyYXdLZXkpO1xuICAgIHRoaXMub2xPdXRlckdlb21ldHJ5ID0gdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgbGluZWFyUmluZ0Nvb3JkaW5hdGVzID0gKFxuICAgICAgKGV2ZW50LmZlYXR1cmUuZ2V0R2VvbWV0cnkoKSBhcyBhbnkpLmdldExpbmVhclJpbmcoKSBhcyBhbnlcbiAgICApLmdldENvb3JkaW5hdGVzKCk7XG4gICAgdGhpcy51cGRhdGVMaW5lYXJSaW5nT2ZPbEdlb21ldHJ5KGxpbmVhclJpbmdDb29yZGluYXRlcyk7XG4gICAgdGhpcy5jbGVhck9sTGluZWFyUmluZ3NTb3VyY2UoKTtcbiAgICB0aGlzLmVuZCQubmV4dCh0aGlzLmdldE9sR2VvbWV0cnkoKSk7XG4gICAgdGhpcy51bnN1YnNjcmliZVRvS2V5RG93bigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGxpbmVhciByaW5nIHRvIHRoZSBnZW9tZXRyeSBiZWluZyBtb2RpZmllZFxuICAgKiBAcGFyYW0gY29vcmRpbmF0ZXMgTGluZWFyIHJpbmcgY29vcmRpbmF0ZXNcbiAgICovXG4gIHByaXZhdGUgYWRkTGluZWFyUmluZ1RvT2xHZW9tZXRyeShjb29yZGluYXRlczogbnVtYmVyW10pIHtcbiAgICBjb25zdCBvbEdlb21ldHJ5ID0gdGhpcy5nZXRPbEdlb21ldHJ5KCkgYXMgT2xQb2x5Z29uO1xuICAgIGNvbnN0IG9sTGluZWFyUmluZyA9IG5ldyBPbExpbmVhclJpbmcoY29vcmRpbmF0ZXMpO1xuICAgIGFkZExpbmVhclJpbmdUb09sUG9seWdvbihvbEdlb21ldHJ5LCBvbExpbmVhclJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgbGFzdCBsaW5lYXIgcmluZyBvZiB0aGUgZ2VvbWV0cnkgYmVpbmcgbW9kaWZpZWRcbiAgICogQHBhcmFtIGNvb3JkaW5hdGVzIExpbmVhciByaW5nIGNvb3JkaW5hdGVzXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZUxpbmVhclJpbmdPZk9sR2VvbWV0cnkoY29vcmRpbmF0ZXM6IG51bWJlcltdW10pIHtcbiAgICBjb25zdCBvbEdlb21ldHJ5ID0gdGhpcy5nZXRPbEdlb21ldHJ5KCkgYXMgT2xQb2x5Z29uO1xuICAgIC8vIFJlbW92ZSB0aGUgbGFzdCBsaW5lYXIgcmluZyAodGhlIG9uZSB3ZSBhcmUgdXBkYXRpbmcpXG4gICAgY29uc3Qgb2xMaW5lYXJSaW5ncyA9IG9sR2VvbWV0cnkuZ2V0TGluZWFyUmluZ3MoKS5zbGljZSgwLCAtMSk7XG4gICAgY29uc3QgbmV3Q29vcmRpbmF0ZXMgPSBvbExpbmVhclJpbmdzLm1hcCgob2xMaW5lYXJSaW5nOiBPbExpbmVhclJpbmcpID0+IHtcbiAgICAgIHJldHVybiBvbExpbmVhclJpbmcuZ2V0Q29vcmRpbmF0ZXMoKTtcbiAgICB9KTtcbiAgICBuZXdDb29yZGluYXRlcy5wdXNoKGNvb3JkaW5hdGVzKTtcbiAgICBvbEdlb21ldHJ5LnNldENvb3JkaW5hdGVzKG5ld0Nvb3JkaW5hdGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGdlb21ldHJ5IGJlaW5nIG1vZGlmaWVkXG4gICAqIEByZXR1cm5zIE9MIEdlb21ldHJ5XG4gICAqL1xuICBwcml2YXRlIGdldE9sR2VvbWV0cnkoKTogT2xHZW9tZXRyeSB7XG4gICAgY29uc3Qgb2xGZWF0dXJlcyA9IHRoaXMub2xPdmVybGF5U291cmNlLmdldEZlYXR1cmVzKCk7XG4gICAgcmV0dXJuIG9sRmVhdHVyZXMubGVuZ3RoID4gMCA/IG9sRmVhdHVyZXNbMF0uZ2V0R2VvbWV0cnkoKSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19
@@ -128,7 +128,7 @@ export class SliceControl {
128
128
  interactionStyle: this.options.drawStyle,
129
129
  maxPoints: 2
130
130
  });
131
- this.drawLineStart$$ = this.drawLineControl.start$.subscribe((olLine) => this.onDrawLineStart(olLine));
131
+ this.drawLineStart$$ = this.drawLineControl.start$.subscribe(() => this.onDrawLineStart());
132
132
  this.drawLineEnd$$ = this.drawLineControl.end$.subscribe((olLine) => this.onDrawLineEnd(olLine));
133
133
  this.drawLineControl.setOlMap(this.olMap);
134
134
  }
@@ -148,7 +148,7 @@ export class SliceControl {
148
148
  * Clear the draw source and track the geometry being draw
149
149
  * @param olLine Ol linestring or polygon
150
150
  */
151
- onDrawLineStart(olLine) {
151
+ onDrawLineStart() {
152
152
  this.drawLineControl.getSource().clear(true);
153
153
  }
154
154
  /**
@@ -187,4 +187,4 @@ export class SliceControl {
187
187
  this.end$.next(olSlicedGeometries);
188
188
  }
189
189
  }
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9nZW9tZXRyeS9zaGFyZWQvY29udHJvbHMvc2xpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBSW5DLE9BQU8sYUFBYSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFDO0FBRzlDLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRTdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBU3JDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFlBQVk7SUE0Q0g7SUEzQ3BCOztPQUVHO0lBQ0ksSUFBSSxHQUEwQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRW5EOztPQUVHO0lBQ0ksTUFBTSxHQUFnQyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRW5ELEtBQUssQ0FBUTtJQUNiLGNBQWMsQ0FBZ0M7SUFFdEQ7O09BRUc7SUFDSyxlQUFlLENBQWM7SUFFckM7O09BRUc7SUFDSyxlQUFlLENBQWU7SUFFdEM7O09BRUc7SUFDSyxhQUFhLENBQWU7SUFFcEM7O09BRUc7SUFDSCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxZQUFvQixPQUE0QjtRQUE1QixZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQUM5QyxJQUFJLE9BQU8sQ0FB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QztJQUNyQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgT2xGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xuaW1wb3J0IE9sTWFwIGZyb20gJ29sL01hcCc7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT2xHZW9tZXRyeSB9IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuaW1wb3J0IE9sTGluZVN0cmluZyBmcm9tICdvbC9nZW9tL0xpbmVTdHJpbmcnO1xuaW1wb3J0IE9sVmVjdG9yTGF5ZXIgZnJvbSAnb2wvbGF5ZXIvVmVjdG9yJztcbmltcG9ydCBPbFZlY3RvclNvdXJjZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yJztcbmltcG9ydCB7IFN0eWxlTGlrZSBhcyBPbFN0eWxlTGlrZSB9IGZyb20gJ29sL3N0eWxlL1N0eWxlJztcblxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEdlb21ldHJ5U2xpY2VFcnJvciB9IGZyb20gJy4uL2dlb21ldHJ5LmVycm9ycyc7XG5pbXBvcnQgeyBzbGljZU9sR2VvbWV0cnkgfSBmcm9tICcuLi9nZW9tZXRyeS51dGlscyc7XG5pbXBvcnQgeyBEcmF3Q29udHJvbCB9IGZyb20gJy4vZHJhdyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2xpY2VDb250cm9sT3B0aW9ucyB7XG4gIHNvdXJjZT86IE9sVmVjdG9yU291cmNlO1xuICBsYXllcj86IE9sVmVjdG9yTGF5ZXI8T2xWZWN0b3JTb3VyY2U+O1xuICBsYXllclN0eWxlPzogT2xTdHlsZUxpa2U7XG4gIGRyYXdTdHlsZT86IE9sU3R5bGVMaWtlO1xufVxuXG4vKipcbiAqIENvbnRyb2wgdG8gbW9kaWZ5IGdlb21ldHJpZXNcbiAqL1xuZXhwb3J0IGNsYXNzIFNsaWNlQ29udHJvbCB7XG4gIC8qKlxuICAgKiBTbGljZSBlbmQgb2JzZXJ2YWJsZVxuICAgKi9cbiAgcHVibGljIGVuZCQ6IFN1YmplY3Q8T2xHZW9tZXRyeVtdPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgLyoqXG4gICAqIFNsaWNlIGVycm9yLCBpZiBhbnlcbiAgICovXG4gIHB1YmxpYyBlcnJvciQ6IFN1YmplY3Q8R2VvbWV0cnlTbGljZUVycm9yPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSBvbE1hcDogT2xNYXA7XG4gIHByaXZhdGUgb2xPdmVybGF5TGF5ZXI6IE9sVmVjdG9yTGF5ZXI8T2xWZWN0b3JTb3VyY2U+O1xuXG4gIC8qKlxuICAgKiBEcmF3IGxpbmUgY29udHJvbFxuICAgKi9cbiAgcHJpdmF0ZSBkcmF3TGluZUNvbnRyb2w6IERyYXdDb250cm9sO1xuXG4gIC8qKlxuICAgKiBTdWJzY3JpcHRpb24gdG8gZHJhdyBzdGFydFxuICAgKi9cbiAgcHJpdmF0ZSBkcmF3TGluZVN0YXJ0JCQ6IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogU3Vic2NyaXB0aW9uIHRvIGRyYXcgZW5kXG4gICAqL1xuICBwcml2YXRlIGRyYXdMaW5lRW5kJCQ6IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogV2hldGVyIHRoZSBjb250cm9sIGlzIGFjdGl2ZVxuICAgKi9cbiAgZ2V0IGFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vbE1hcCAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIE9MIG92ZXJsYXkgc291cmNlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0IG9sT3ZlcmxheVNvdXJjZSgpOiBPbFZlY3RvclNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMub2xPdmVybGF5TGF5ZXIuZ2V0U291cmNlKCk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9wdGlvbnM6IFNsaWNlQ29udHJvbE9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5sYXllciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLm9sT3ZlcmxheUxheWVyID0gb3B0aW9ucy5sYXllcjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vbE92ZXJsYXlMYXllciA9IHRoaXMuY3JlYXRlT2xJbm5lck92ZXJsYXlMYXllcigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgb3IgcmVtb3ZlIHRoaXMgY29udHJvbCB0by9mcm9tIGEgbWFwLlxuICAgKiBAcGFyYW0gbWFwIE9MIE1hcFxuICAgKi9cbiAgc2V0T2xNYXAob2xNYXA6IE9sTWFwIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKG9sTWFwID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY2xlYXJPbElubmVyT3ZlcmxheVNvdXJjZSgpO1xuICAgICAgdGhpcy5yZW1vdmVPbElubmVyT3ZlcmxheUxheWVyKCk7XG4gICAgICB0aGlzLnJlbW92ZURyYXdMaW5lQ29udHJvbCgpO1xuICAgICAgdGhpcy5vbE1hcCA9IG9sTWFwO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMub2xNYXAgPSBvbE1hcDtcbiAgICB0aGlzLmFkZE9sSW5uZXJPdmVybGF5TGF5ZXIoKTtcbiAgICB0aGlzLmFkZERyYXdMaW5lQ29udHJvbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgb3ZlcmxheSBzb3VyY2VcbiAgICovXG4gIGdldFNvdXJjZSgpOiBPbFZlY3RvclNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMub2xPdmVybGF5U291cmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBPTCBnZW9tZXRyeSB0byB0aGUgb3ZlcmxheSBmb3Igc2xpY2luZ1xuICAgKiBAcGFyYW0gb2xHZW9tZXRyeSBPbCBHZW9tZXRyeVxuICAgKi9cbiAgc2V0T2xHZW9tZXRyeShvbEdlb21ldHJ5OiBPbEdlb21ldHJ5KSB7XG4gICAgY29uc3Qgb2xGZWF0dXJlID0gbmV3IE9sRmVhdHVyZSh7IGdlb21ldHJ5OiBvbEdlb21ldHJ5IH0pO1xuICAgIHRoaXMub2xPdmVybGF5U291cmNlLmNsZWFyKHRydWUpO1xuICAgIHRoaXMub2xPdmVybGF5U291cmNlLmFkZEZlYXR1cmUob2xGZWF0dXJlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gb3ZlcmxheSBzb3VyY2UgaWYgbm9uZSBpcyBkZWZpbmVkIGluIHRoZSBvcHRpb25zXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZU9sSW5uZXJPdmVybGF5TGF5ZXIoKTogT2xWZWN0b3JMYXllcjxPbFZlY3RvclNvdXJjZT4ge1xuICAgIHJldHVybiBuZXcgT2xWZWN0b3JMYXllcih7XG4gICAgICBzb3VyY2U6IHRoaXMub3B0aW9ucy5zb3VyY2UgPyB0aGlzLm9wdGlvbnMuc291cmNlIDogbmV3IE9sVmVjdG9yU291cmNlKCksXG4gICAgICBzdHlsZTogdGhpcy5vcHRpb25zLmxheWVyU3R5bGUsXG4gICAgICB6SW5kZXg6IDUwMFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHRoZSBvdmVybGF5IGxheWVyIGlmIGl0IHdhc24ndCBkZWZpbmVkIGluIHRoZSBvcHRpb25zXG4gICAqL1xuICBwcml2YXRlIHJlbW92ZU9sSW5uZXJPdmVybGF5TGF5ZXIoKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5sYXllciA9PT0gdW5kZWZpbmVkICYmIHRoaXMub2xNYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5vbE1hcC5yZW1vdmVMYXllcih0aGlzLm9sT3ZlcmxheUxheWVyKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIHRoZSBvdmVybGF5IGxheWVyIGlmIGl0IHdhc24ndCBkZWZpbmVkIGluIHRoZSBvcHRpb25zXG4gICAqL1xuICBwcml2YXRlIGFkZE9sSW5uZXJPdmVybGF5TGF5ZXIoKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5sYXllciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLm9sTWFwLmFkZExheWVyKHRoaXMub2xPdmVybGF5TGF5ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgb3ZlcmxheSBzb3VyY2UgaWYgaXQgd2Fzbid0IGRlZmluZWQgaW4gdGhlIG9wdGlvbnNcbiAgICovXG4gIHByaXZhdGUgY2xlYXJPbElubmVyT3ZlcmxheVNvdXJjZSgpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmxheWVyID09PSB1bmRlZmluZWQgJiYgdGhpcy5vcHRpb25zLnNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLm9sT3ZlcmxheVNvdXJjZS5jbGVhcih0cnVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgZHJhdyBsaW5lIGNvbnRyb2wgYW5kIGFkZCBpdCB0byB0aGUgbWFwXG4gICAqL1xuICBwcml2YXRlIGFkZERyYXdMaW5lQ29udHJvbCgpIHtcbiAgICB0aGlzLmRyYXdMaW5lQ29udHJvbCA9IG5ldyBEcmF3Q29udHJvbCh7XG4gICAgICBnZW9tZXRyeVR5cGU6ICdMaW5lU3RyaW5nJyxcbiAgICAgIGludGVyYWN0aW9uU3R5bGU6IHRoaXMub3B0aW9ucy5kcmF3U3R5bGUsXG4gICAgICBtYXhQb2ludHM6IDJcbiAgICB9KTtcbiAgICB0aGlzLmRyYXdMaW5lU3RhcnQkJCA9IHRoaXMuZHJhd0xpbmVDb250cm9sLnN0YXJ0JC5zdWJzY3JpYmUoXG4gICAgICAob2xMaW5lOiBPbExpbmVTdHJpbmcpID0+IHRoaXMub25EcmF3TGluZVN0YXJ0KG9sTGluZSlcbiAgICApO1xuICAgIHRoaXMuZHJhd0xpbmVFbmQkJCA9IHRoaXMuZHJhd0xpbmVDb250cm9sLmVuZCQuc3Vic2NyaWJlKFxuICAgICAgKG9sTGluZTogT2xMaW5lU3RyaW5nKSA9PiB0aGlzLm9uRHJhd0xpbmVFbmQob2xMaW5lKVxuICAgICk7XG4gICAgdGhpcy5kcmF3TGluZUNvbnRyb2wuc2V0T2xNYXAodGhpcy5vbE1hcCk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGRyYXcgbGluZSBjb250cm9sXG4gICAqL1xuICBwcml2YXRlIHJlbW92ZURyYXdMaW5lQ29udHJvbCgpIHtcbiAgICBpZiAodGhpcy5kcmF3TGluZUNvbnRyb2wgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZHJhd0xpbmVTdGFydCQkLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5kcmF3TGluZUVuZCQkLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5kcmF3TGluZUNvbnRyb2wuZ2V0U291cmNlKCkuY2xlYXIodHJ1ZSk7XG4gICAgdGhpcy5kcmF3TGluZUNvbnRyb2wuc2V0T2xNYXAodW5kZWZpbmVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgZHJhdyBzb3VyY2UgYW5kIHRyYWNrIHRoZSBnZW9tZXRyeSBiZWluZyBkcmF3XG4gICAqIEBwYXJhbSBvbExpbmUgT2wgbGluZXN0cmluZyBvciBwb2x5Z29uXG4gICAqL1xuICBwcml2YXRlIG9uRHJhd0xpbmVTdGFydChvbExpbmU6IE9sTGluZVN0cmluZykge1xuICAgIHRoaXMuZHJhd0xpbmVDb250cm9sLmdldFNvdXJjZSgpLmNsZWFyKHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNsaWNlIHRoZSBmaXJzdCBnZW9tZXRyeSBlbmNvdW50ZXJlZCB3aXRoIHRoZSBkcmF3biBsaW5lXG4gICAqIEBwYXJhbSBvbExpbmUgT2wgbGluZXN0cmluZ1xuICAgKi9cbiAgcHJpdmF0ZSBvbkRyYXdMaW5lRW5kKG9sTGluZTogT2xMaW5lU3RyaW5nKSB7XG4gICAgY29uc3Qgb2xTbGljZWRHZW9tZXRyaWVzID0gW107XG4gICAgY29uc3QgbGluZUV4dGVudCA9IG9sTGluZS5nZXRFeHRlbnQoKTtcblxuICAgIGNvbnN0IG9sRmVhdHVyZXNUb1JlbW92ZSA9IFtdO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLm9sT3ZlcmxheVNvdXJjZS5mb3JFYWNoRmVhdHVyZUluRXh0ZW50KFxuICAgICAgICBsaW5lRXh0ZW50LFxuICAgICAgICAob2xGZWF0dXJlOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT4pID0+IHtcbiAgICAgICAgICBjb25zdCBvbEdlb21ldHJ5ID0gb2xGZWF0dXJlLmdldEdlb21ldHJ5KCkgYXMgYW55O1xuICAgICAgICAgIGNvbnN0IG9sUGFydHMgPSBzbGljZU9sR2VvbWV0cnkob2xHZW9tZXRyeSwgb2xMaW5lKTtcbiAgICAgICAgICBpZiAob2xQYXJ0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBvbFNsaWNlZEdlb21ldHJpZXMucHVzaCguLi5vbFBhcnRzKTtcbiAgICAgICAgICAgIG9sRmVhdHVyZXNUb1JlbW92ZS5wdXNoKG9sRmVhdHVyZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgR2VvbWV0cnlTbGljZUVycm9yKSB7XG4gICAgICAgIHRoaXMuZXJyb3IkLm5leHQoZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kcmF3TGluZUNvbnRyb2wuZ2V0U291cmNlKCkuY2xlYXIodHJ1ZSk7XG5cbiAgICB0aGlzLm9sT3ZlcmxheVNvdXJjZS5hZGRGZWF0dXJlcyhcbiAgICAgIG9sU2xpY2VkR2VvbWV0cmllcy5tYXAoXG4gICAgICAgIChvbEdlb21ldHJ5OiBPbEdlb21ldHJ5KSA9PiBuZXcgT2xGZWF0dXJlKG9sR2VvbWV0cnkpXG4gICAgICApXG4gICAgKTtcbiAgICBvbEZlYXR1cmVzVG9SZW1vdmUuZm9yRWFjaCgob2xGZWF0dXJlOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT4pID0+IHtcbiAgICAgIHRoaXMub2xPdmVybGF5U291cmNlLnJlbW92ZUZlYXR1cmUob2xGZWF0dXJlKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZXJyb3IkLm5leHQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmVuZCQubmV4dChvbFNsaWNlZEdlb21ldHJpZXMpO1xuICB9XG59XG4iXX0=
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9nZW9tZXRyeS9zaGFyZWQvY29udHJvbHMvc2xpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBSW5DLE9BQU8sYUFBYSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFDO0FBRzlDLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRTdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBU3JDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFlBQVk7SUE0Q0g7SUEzQ3BCOztPQUVHO0lBQ0ksSUFBSSxHQUFHLElBQUksT0FBTyxFQUFnQixDQUFDO0lBRTFDOztPQUVHO0lBQ0ksTUFBTSxHQUFHLElBQUksT0FBTyxFQUFzQixDQUFDO0lBRTFDLEtBQUssQ0FBUTtJQUNiLGNBQWMsQ0FBZ0M7SUFFdEQ7O09BRUc7SUFDSyxlQUFlLENBQWM7SUFFckM7O09BRUc7SUFDSyxlQUFlLENBQWU7SUFFdEM7O09BRUc7SUFDSyxhQUFhLENBQWU7SUFFcEM7O09BRUc7SUFDSCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxZQUFvQixPQUE0QjtRQUE1QixZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQUM5QyxJQUFJLE9BQU8sQ0FB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bnQiOlsiaW1wb3J0IE9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcbmltcG9ydCBPbE1hcCBmcm9tICdvbC9NYXAnO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE9sR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcbmltcG9ydCBPbExpbmVTdHJpbmcgZnJvbSAnb2wvZ2VvbS9MaW5lU3RyaW5nJztcbmltcG9ydCBPbFZlY3RvckxheWVyIGZyb20gJ29sL2xheWVyL1ZlY3Rvcic7XG5pbXBvcnQgT2xWZWN0b3JTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XG5pbXBvcnQgeyBTdHlsZUxpa2UgYXMgT2xTdHlsZUxpa2UgfSBmcm9tICdvbC9zdHlsZS9TdHlsZSc7XG5cbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBHZW9tZXRyeVNsaWNlRXJyb3IgfSBmcm9tICcuLi9nZW9tZXRyeS5lcnJvcnMnO1xuaW1wb3J0IHsgc2xpY2VPbEdlb21ldHJ5IH0gZnJvbSAnLi4vZ2VvbWV0cnkudXRpbHMnO1xuaW1wb3J0IHsgRHJhd0NvbnRyb2wgfSBmcm9tICcuL2RyYXcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNsaWNlQ29udHJvbE9wdGlvbnMge1xuICBzb3VyY2U/OiBPbFZlY3RvclNvdXJjZTtcbiAgbGF5ZXI/OiBPbFZlY3RvckxheWVyPE9sVmVjdG9yU291cmNlPjtcbiAgbGF5ZXJTdHlsZT86IE9sU3R5bGVMaWtlO1xuICBkcmF3U3R5bGU/OiBPbFN0eWxlTGlrZTtcbn1cblxuLyoqXG4gKiBDb250cm9sIHRvIG1vZGlmeSBnZW9tZXRyaWVzXG4gKi9cbmV4cG9ydCBjbGFzcyBTbGljZUNvbnRyb2wge1xuICAvKipcbiAgICogU2xpY2UgZW5kIG9ic2VydmFibGVcbiAgICovXG4gIHB1YmxpYyBlbmQkID0gbmV3IFN1YmplY3Q8T2xHZW9tZXRyeVtdPigpO1xuXG4gIC8qKlxuICAgKiBTbGljZSBlcnJvciwgaWYgYW55XG4gICAqL1xuICBwdWJsaWMgZXJyb3IkID0gbmV3IFN1YmplY3Q8R2VvbWV0cnlTbGljZUVycm9yPigpO1xuXG4gIHByaXZhdGUgb2xNYXA6IE9sTWFwO1xuICBwcml2YXRlIG9sT3ZlcmxheUxheWVyOiBPbFZlY3RvckxheWVyPE9sVmVjdG9yU291cmNlPjtcblxuICAvKipcbiAgICogRHJhdyBsaW5lIGNvbnRyb2xcbiAgICovXG4gIHByaXZhdGUgZHJhd0xpbmVDb250cm9sOiBEcmF3Q29udHJvbDtcblxuICAvKipcbiAgICogU3Vic2NyaXB0aW9uIHRvIGRyYXcgc3RhcnRcbiAgICovXG4gIHByaXZhdGUgZHJhd0xpbmVTdGFydCQkOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIFN1YnNjcmlwdGlvbiB0byBkcmF3IGVuZFxuICAgKi9cbiAgcHJpdmF0ZSBkcmF3TGluZUVuZCQkOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIFdoZXRlciB0aGUgY29udHJvbCBpcyBhY3RpdmVcbiAgICovXG4gIGdldCBhY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub2xNYXAgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPTCBvdmVybGF5IHNvdXJjZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCBvbE92ZXJsYXlTb3VyY2UoKTogT2xWZWN0b3JTb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLm9sT3ZlcmxheUxheWVyLmdldFNvdXJjZSgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBvcHRpb25zOiBTbGljZUNvbnRyb2xPcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMubGF5ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5vbE92ZXJsYXlMYXllciA9IG9wdGlvbnMubGF5ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub2xPdmVybGF5TGF5ZXIgPSB0aGlzLmNyZWF0ZU9sSW5uZXJPdmVybGF5TGF5ZXIoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIG9yIHJlbW92ZSB0aGlzIGNvbnRyb2wgdG8vZnJvbSBhIG1hcC5cbiAgICogQHBhcmFtIG1hcCBPTCBNYXBcbiAgICovXG4gIHNldE9sTWFwKG9sTWFwOiBPbE1hcCB8IHVuZGVmaW5lZCkge1xuICAgIGlmIChvbE1hcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNsZWFyT2xJbm5lck92ZXJsYXlTb3VyY2UoKTtcbiAgICAgIHRoaXMucmVtb3ZlT2xJbm5lck92ZXJsYXlMYXllcigpO1xuICAgICAgdGhpcy5yZW1vdmVEcmF3TGluZUNvbnRyb2woKTtcbiAgICAgIHRoaXMub2xNYXAgPSBvbE1hcDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9sTWFwID0gb2xNYXA7XG4gICAgdGhpcy5hZGRPbElubmVyT3ZlcmxheUxheWVyKCk7XG4gICAgdGhpcy5hZGREcmF3TGluZUNvbnRyb2woKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIG92ZXJsYXkgc291cmNlXG4gICAqL1xuICBnZXRTb3VyY2UoKTogT2xWZWN0b3JTb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLm9sT3ZlcmxheVNvdXJjZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gT0wgZ2VvbWV0cnkgdG8gdGhlIG92ZXJsYXkgZm9yIHNsaWNpbmdcbiAgICogQHBhcmFtIG9sR2VvbWV0cnkgT2wgR2VvbWV0cnlcbiAgICovXG4gIHNldE9sR2VvbWV0cnkob2xHZW9tZXRyeTogT2xHZW9tZXRyeSkge1xuICAgIGNvbnN0IG9sRmVhdHVyZSA9IG5ldyBPbEZlYXR1cmUoeyBnZW9tZXRyeTogb2xHZW9tZXRyeSB9KTtcbiAgICB0aGlzLm9sT3ZlcmxheVNvdXJjZS5jbGVhcih0cnVlKTtcbiAgICB0aGlzLm9sT3ZlcmxheVNvdXJjZS5hZGRGZWF0dXJlKG9sRmVhdHVyZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIG92ZXJsYXkgc291cmNlIGlmIG5vbmUgaXMgZGVmaW5lZCBpbiB0aGUgb3B0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVPbElubmVyT3ZlcmxheUxheWVyKCk6IE9sVmVjdG9yTGF5ZXI8T2xWZWN0b3JTb3VyY2U+IHtcbiAgICByZXR1cm4gbmV3IE9sVmVjdG9yTGF5ZXIoe1xuICAgICAgc291cmNlOiB0aGlzLm9wdGlvbnMuc291cmNlID8gdGhpcy5vcHRpb25zLnNvdXJjZSA6IG5ldyBPbFZlY3RvclNvdXJjZSgpLFxuICAgICAgc3R5bGU6IHRoaXMub3B0aW9ucy5sYXllclN0eWxlLFxuICAgICAgekluZGV4OiA1MDBcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgb3ZlcmxheSBsYXllciBpZiBpdCB3YXNuJ3QgZGVmaW5lZCBpbiB0aGUgb3B0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSByZW1vdmVPbElubmVyT3ZlcmxheUxheWVyKCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMubGF5ZXIgPT09IHVuZGVmaW5lZCAmJiB0aGlzLm9sTWFwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMub2xNYXAucmVtb3ZlTGF5ZXIodGhpcy5vbE92ZXJsYXlMYXllcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCB0aGUgb3ZlcmxheSBsYXllciBpZiBpdCB3YXNuJ3QgZGVmaW5lZCBpbiB0aGUgb3B0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBhZGRPbElubmVyT3ZlcmxheUxheWVyKCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMubGF5ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5vbE1hcC5hZGRMYXllcih0aGlzLm9sT3ZlcmxheUxheWVyKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgdGhlIG92ZXJsYXkgc291cmNlIGlmIGl0IHdhc24ndCBkZWZpbmVkIGluIHRoZSBvcHRpb25zXG4gICAqL1xuICBwcml2YXRlIGNsZWFyT2xJbm5lck92ZXJsYXlTb3VyY2UoKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5sYXllciA9PT0gdW5kZWZpbmVkICYmIHRoaXMub3B0aW9ucy5zb3VyY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5vbE92ZXJsYXlTb3VyY2UuY2xlYXIodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGRyYXcgbGluZSBjb250cm9sIGFuZCBhZGQgaXQgdG8gdGhlIG1hcFxuICAgKi9cbiAgcHJpdmF0ZSBhZGREcmF3TGluZUNvbnRyb2woKSB7XG4gICAgdGhpcy5kcmF3TGluZUNvbnRyb2wgPSBuZXcgRHJhd0NvbnRyb2woe1xuICAgICAgZ2VvbWV0cnlUeXBlOiAnTGluZVN0cmluZycsXG4gICAgICBpbnRlcmFjdGlvblN0eWxlOiB0aGlzLm9wdGlvbnMuZHJhd1N0eWxlLFxuICAgICAgbWF4UG9pbnRzOiAyXG4gICAgfSk7XG4gICAgdGhpcy5kcmF3TGluZVN0YXJ0JCQgPSB0aGlzLmRyYXdMaW5lQ29udHJvbC5zdGFydCQuc3Vic2NyaWJlKCgpID0+XG4gICAgICB0aGlzLm9uRHJhd0xpbmVTdGFydCgpXG4gICAgKTtcbiAgICB0aGlzLmRyYXdMaW5lRW5kJCQgPSB0aGlzLmRyYXdMaW5lQ29udHJvbC5lbmQkLnN1YnNjcmliZShcbiAgICAgIChvbExpbmU6IE9sTGluZVN0cmluZykgPT4gdGhpcy5vbkRyYXdMaW5lRW5kKG9sTGluZSlcbiAgICApO1xuICAgIHRoaXMuZHJhd0xpbmVDb250cm9sLnNldE9sTWFwKHRoaXMub2xNYXApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBkcmF3IGxpbmUgY29udHJvbFxuICAgKi9cbiAgcHJpdmF0ZSByZW1vdmVEcmF3TGluZUNvbnRyb2woKSB7XG4gICAgaWYgKHRoaXMuZHJhd0xpbmVDb250cm9sID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRyYXdMaW5lU3RhcnQkJC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZHJhd0xpbmVFbmQkJC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZHJhd0xpbmVDb250cm9sLmdldFNvdXJjZSgpLmNsZWFyKHRydWUpO1xuICAgIHRoaXMuZHJhd0xpbmVDb250cm9sLnNldE9sTWFwKHVuZGVmaW5lZCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgdGhlIGRyYXcgc291cmNlIGFuZCB0cmFjayB0aGUgZ2VvbWV0cnkgYmVpbmcgZHJhd1xuICAgKiBAcGFyYW0gb2xMaW5lIE9sIGxpbmVzdHJpbmcgb3IgcG9seWdvblxuICAgKi9cbiAgcHJpdmF0ZSBvbkRyYXdMaW5lU3RhcnQoKSB7XG4gICAgdGhpcy5kcmF3TGluZUNvbnRyb2wuZ2V0U291cmNlKCkuY2xlYXIodHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogU2xpY2UgdGhlIGZpcnN0IGdlb21ldHJ5IGVuY291bnRlcmVkIHdpdGggdGhlIGRyYXduIGxpbmVcbiAgICogQHBhcmFtIG9sTGluZSBPbCBsaW5lc3RyaW5nXG4gICAqL1xuICBwcml2YXRlIG9uRHJhd0xpbmVFbmQob2xMaW5lOiBPbExpbmVTdHJpbmcpIHtcbiAgICBjb25zdCBvbFNsaWNlZEdlb21ldHJpZXMgPSBbXTtcbiAgICBjb25zdCBsaW5lRXh0ZW50ID0gb2xMaW5lLmdldEV4dGVudCgpO1xuXG4gICAgY29uc3Qgb2xGZWF0dXJlc1RvUmVtb3ZlID0gW107XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMub2xPdmVybGF5U291cmNlLmZvckVhY2hGZWF0dXJlSW5FeHRlbnQoXG4gICAgICAgIGxpbmVFeHRlbnQsXG4gICAgICAgIChvbEZlYXR1cmU6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PikgPT4ge1xuICAgICAgICAgIGNvbnN0IG9sR2VvbWV0cnkgPSBvbEZlYXR1cmUuZ2V0R2VvbWV0cnkoKSBhcyBhbnk7XG4gICAgICAgICAgY29uc3Qgb2xQYXJ0cyA9IHNsaWNlT2xHZW9tZXRyeShvbEdlb21ldHJ5LCBvbExpbmUpO1xuICAgICAgICAgIGlmIChvbFBhcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIG9sU2xpY2VkR2VvbWV0cmllcy5wdXNoKC4uLm9sUGFydHMpO1xuICAgICAgICAgICAgb2xGZWF0dXJlc1RvUmVtb3ZlLnB1c2gob2xGZWF0dXJlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBHZW9tZXRyeVNsaWNlRXJyb3IpIHtcbiAgICAgICAgdGhpcy5lcnJvciQubmV4dChlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmRyYXdMaW5lQ29udHJvbC5nZXRTb3VyY2UoKS5jbGVhcih0cnVlKTtcblxuICAgIHRoaXMub2xPdmVybGF5U291cmNlLmFkZEZlYXR1cmVzKFxuICAgICAgb2xTbGljZWRHZW9tZXRyaWVzLm1hcChcbiAgICAgICAgKG9sR2VvbWV0cnk6IE9sR2VvbWV0cnkpID0+IG5ldyBPbEZlYXR1cmUob2xHZW9tZXRyeSlcbiAgICAgIClcbiAgICApO1xuICAgIG9sRmVhdHVyZXNUb1JlbW92ZS5mb3JFYWNoKChvbEZlYXR1cmU6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PikgPT4ge1xuICAgICAgdGhpcy5vbE92ZXJsYXlTb3VyY2UucmVtb3ZlRmVhdHVyZShvbEZlYXR1cmUpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5lcnJvciQubmV4dCh1bmRlZmluZWQpO1xuICAgIHRoaXMuZW5kJC5uZXh0KG9sU2xpY2VkR2VvbWV0cmllcyk7XG4gIH1cbn1cbiJdfQ==
@@ -1,8 +1,6 @@
1
- /* eslint-disable */
2
1
  // See this issue: https://github.com/Microsoft/TypeScript/issues/13965
3
2
  // And the solution: https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
4
3
  // for an explanation as to why the prototype is set manually
5
- /* eslint-enable */
6
4
  export class GeometrySliceError extends Error {
7
5
  }
8
6
  export class GeometrySliceMultiPolygonError extends GeometrySliceError {
@@ -23,4 +21,4 @@ export class GeometrySliceTooManyIntersectionError extends GeometrySliceError {
23
21
  Object.setPrototypeOf(this, GeometrySliceTooManyIntersectionError.prototype);
24
22
  }
25
23
  }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZ2VvbWV0cnkvc2hhcmVkL2dlb21ldHJ5LmVycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsdUVBQXVFO0FBQ3ZFLGtKQUFrSjtBQUNsSiw2REFBNkQ7QUFDN0QsbUJBQW1CO0FBRW5CLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxLQUFLO0NBQUc7QUFFaEQsTUFBTSxPQUFPLDhCQUErQixTQUFRLGtCQUFrQjtJQUNwRTtRQUNFLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLDhCQUE4QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxrQkFBa0I7SUFDbEU7UUFDRSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztRQUM5RCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSw0QkFBNEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0RSxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8scUNBQXNDLFNBQVEsa0JBQWtCO0lBQzNFO1FBQ0UsS0FBSyxDQUNILGtGQUFrRixDQUNuRixDQUFDO1FBQ0YsTUFBTSxDQUFDLGNBQWMsQ0FDbkIsSUFBSSxFQUNKLHFDQUFxQyxDQUFDLFNBQVMsQ0FDaEQsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICovXG4vLyBTZWUgdGhpcyBpc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8xMzk2NVxuLy8gQW5kIHRoZSBzb2x1dGlvbjogaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L3dpa2kvQnJlYWtpbmctQ2hhbmdlcyNleHRlbmRpbmctYnVpbHQtaW5zLWxpa2UtZXJyb3ItYXJyYXktYW5kLW1hcC1tYXktbm8tbG9uZ2VyLXdvcmtcbi8vIGZvciBhbiBleHBsYW5hdGlvbiBhcyB0byB3aHkgdGhlIHByb3RvdHlwZSBpcyBzZXQgbWFudWFsbHlcbi8qIGVzbGludC1lbmFibGUgKi9cblxuZXhwb3J0IGNsYXNzIEdlb21ldHJ5U2xpY2VFcnJvciBleHRlbmRzIEVycm9yIHt9XG5cbmV4cG9ydCBjbGFzcyBHZW9tZXRyeVNsaWNlTXVsdGlQb2x5Z29uRXJyb3IgZXh0ZW5kcyBHZW9tZXRyeVNsaWNlRXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIkNhbid0IHNsaWNlIGEgTXVsdGlQb2x5Z29uLlwiKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgR2VvbWV0cnlTbGljZU11bHRpUG9seWdvbkVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdlb21ldHJ5U2xpY2VMaW5lU3RyaW5nRXJyb3IgZXh0ZW5kcyBHZW9tZXRyeVNsaWNlRXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIkNhbid0IHNsaWNlIHdpdGggYSBsaW5lIHRoYXQgaGFzIG1vcmUgdGhhbiAyIHBvaW50cy5cIik7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEdlb21ldHJ5U2xpY2VMaW5lU3RyaW5nRXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2VvbWV0cnlTbGljZVRvb01hbnlJbnRlcnNlY3Rpb25FcnJvciBleHRlbmRzIEdlb21ldHJ5U2xpY2VFcnJvciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFxuICAgICAgJ01vcmUgdGhhbiAyIGludGVyc2VjdGlvbnMgZm91bmQgYmV0d2VlbiB0aGUgdGFyZ2V0IHBvbHlnb24gYW5kIHRoZSBzbGljaW5nIGxpbmUuJ1xuICAgICk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKFxuICAgICAgdGhpcyxcbiAgICAgIEdlb21ldHJ5U2xpY2VUb29NYW55SW50ZXJzZWN0aW9uRXJyb3IucHJvdG90eXBlXG4gICAgKTtcbiAgfVxufVxuIl19
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZ2VvbWV0cnkvc2hhcmVkL2dlb21ldHJ5LmVycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1RUFBdUU7QUFDdkUsa0pBQWtKO0FBQ2xKLDZEQUE2RDtBQUU3RCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsS0FBSztDQUFHO0FBRWhELE1BQU0sT0FBTyw4QkFBK0IsU0FBUSxrQkFBa0I7SUFDcEU7UUFDRSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNyQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSw4QkFBOEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4RSxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsa0JBQWtCO0lBQ2xFO1FBQ0UsS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7UUFDOUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsNEJBQTRCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEUsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHFDQUFzQyxTQUFRLGtCQUFrQjtJQUMzRTtRQUNFLEtBQUssQ0FDSCxrRkFBa0YsQ0FDbkYsQ0FBQztRQUNGLE1BQU0sQ0FBQyxjQUFjLENBQ25CLElBQUksRUFDSixxQ0FBcUMsQ0FBQyxTQUFTLENBQ2hELENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTZWUgdGhpcyBpc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8xMzk2NVxuLy8gQW5kIHRoZSBzb2x1dGlvbjogaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L3dpa2kvQnJlYWtpbmctQ2hhbmdlcyNleHRlbmRpbmctYnVpbHQtaW5zLWxpa2UtZXJyb3ItYXJyYXktYW5kLW1hcC1tYXktbm8tbG9uZ2VyLXdvcmtcbi8vIGZvciBhbiBleHBsYW5hdGlvbiBhcyB0byB3aHkgdGhlIHByb3RvdHlwZSBpcyBzZXQgbWFudWFsbHlcblxuZXhwb3J0IGNsYXNzIEdlb21ldHJ5U2xpY2VFcnJvciBleHRlbmRzIEVycm9yIHt9XG5cbmV4cG9ydCBjbGFzcyBHZW9tZXRyeVNsaWNlTXVsdGlQb2x5Z29uRXJyb3IgZXh0ZW5kcyBHZW9tZXRyeVNsaWNlRXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIkNhbid0IHNsaWNlIGEgTXVsdGlQb2x5Z29uLlwiKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgR2VvbWV0cnlTbGljZU11bHRpUG9seWdvbkVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdlb21ldHJ5U2xpY2VMaW5lU3RyaW5nRXJyb3IgZXh0ZW5kcyBHZW9tZXRyeVNsaWNlRXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIkNhbid0IHNsaWNlIHdpdGggYSBsaW5lIHRoYXQgaGFzIG1vcmUgdGhhbiAyIHBvaW50cy5cIik7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEdlb21ldHJ5U2xpY2VMaW5lU3RyaW5nRXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2VvbWV0cnlTbGljZVRvb01hbnlJbnRlcnNlY3Rpb25FcnJvciBleHRlbmRzIEdlb21ldHJ5U2xpY2VFcnJvciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFxuICAgICAgJ01vcmUgdGhhbiAyIGludGVyc2VjdGlvbnMgZm91bmQgYmV0d2VlbiB0aGUgdGFyZ2V0IHBvbHlnb24gYW5kIHRoZSBzbGljaW5nIGxpbmUuJ1xuICAgICk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKFxuICAgICAgdGhpcyxcbiAgICAgIEdlb21ldHJ5U2xpY2VUb29NYW55SW50ZXJzZWN0aW9uRXJyb3IucHJvdG90eXBlXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -46,19 +46,10 @@ export function sliceOlGeometry(olGeometry, olSlicer) {
46
46
  return sliceOlPolygon(olGeometry, olSlicer);
47
47
  }
48
48
  else if (olGeometry instanceof OlLineString) {
49
- return sliceOlLineString(olGeometry, olSlicer);
49
+ return [];
50
50
  }
51
51
  return [];
52
52
  }
53
- /**
54
- * Slice OL LineString into one or more lines
55
- * @param olLineString OL line string
56
- * @param olSlicer Slicing line
57
- * @returns New OL line strings
58
- */
59
- export function sliceOlLineString(olLineString, olSlicer) {
60
- return [];
61
- }
62
53
  /**
63
54
  * Slice OL Polygon into one or more polygons
64
55
  * @param olPolygon OL polygon
@@ -119,4 +110,4 @@ export function getMousePositionFromOlGeometryEvent(olEvent) {
119
110
  const olGeometryCast = olGeometry;
120
111
  return olGeometryCast.getFlatCoordinates().slice(-2);
121
112
  }
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9nZW9tZXRyeS9zaGFyZWQvZ2VvbWV0cnkudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxTQUFTLE1BQU0sbUJBQW1CLENBQUM7QUFHMUMsT0FBTyxZQUFZLE1BQU0sb0JBQW9CLENBQUM7QUFHOUMsT0FBTyxTQUFTLE1BQU0saUJBQWlCLENBQUM7QUFDeEMsT0FBTyxLQUFLLE9BQU8sTUFBTSxVQUFVLENBQUM7QUFFcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLGFBQWEsTUFBTSxzQkFBc0IsQ0FBQztBQUVqRCxPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLDhCQUE4QixFQUM5QixxQ0FBcUMsRUFDdEMsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQjs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLDBCQUEwQixDQUN4QyxLQUFnQztJQUVoQyxLQUFLLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMvQixPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUN4QixNQUFNLEVBQUUsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ3pCLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEIsS0FBSyxFQUFFLENBQUM7U0FDVCxDQUFDO1FBQ0YsSUFBSSxFQUFFLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQztZQUNyQixLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzNCLENBQUM7UUFDRixNQUFNLEVBQUUsQ0FBQztLQUNWLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVB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a0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBcUIsQ0FBQztBQUMzRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2ljRXZlbnQgZnJvbSAnb2wvZXZlbnRzL0V2ZW50JztcbmltcG9ydCBPbEdlb0pTT04gZnJvbSAnb2wvZm9ybWF0L0dlb0pTT04nO1xuaW1wb3J0IE9sQ2lyY2xlIGZyb20gJ29sL2dlb20vQ2lyY2xlJztcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBPbEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XG5pbXBvcnQgT2xMaW5lU3RyaW5nIGZyb20gJ29sL2dlb20vTGluZVN0cmluZyc7XG5pbXBvcnQgT2xMaW5lYXJSaW5nIGZyb20gJ29sL2dlb20vTGluZWFyUmluZyc7XG5pbXBvcnQgT2xQb2ludCBmcm9tICdvbC9nZW9tL1BvaW50JztcbmltcG9ydCBPbFBvbHlnb24gZnJvbSAnb2wvZ2VvbS9Qb2x5Z29uJztcbmltcG9ydCAqIGFzIG9sc3R5bGUgZnJvbSAnb2wvc3R5bGUnO1xuXG5pbXBvcnQgeyBsaW5lU3RyaW5nIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgbGluZUludGVyc2VjdCBmcm9tICdAdHVyZi9saW5lLWludGVyc2VjdCc7XG5cbmltcG9ydCB7XG4gIEdlb21ldHJ5U2xpY2VMaW5lU3RyaW5nRXJyb3IsXG4gIEdlb21ldHJ5U2xpY2VNdWx0aVBvbHlnb25FcnJvcixcbiAgR2VvbWV0cnlTbGljZVRvb01hbnlJbnRlcnNlY3Rpb25FcnJvclxufSBmcm9tICcuL2dlb21ldHJ5LmVycm9ycyc7XG5cbi8qKlxuICogQ3JlYXRlIGEgZGVmYXVsdCBzdHlsZSBmb3IgZHJhdyBhbmQgbW9kaWZ5IGludGVyYWN0aW9uc1xuICogQHBhcmFtIGNvbG9yIFN0eWxlIGNvbG9yIChSLCBHLCBCKVxuICogQHJldHVybnMgT0wgc3R5bGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURyYXdJbnRlcmFjdGlvblN0eWxlKFxuICBjb2xvcj86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXVxuKTogb2xzdHlsZS5DaXJjbGUge1xuICBjb2xvciA9IGNvbG9yIHx8IFswLCAxNTMsIDI1NV07XG4gIHJldHVybiBuZXcgb2xzdHlsZS5DaXJjbGUoe1xuICAgIHN0cm9rZTogbmV3IG9sc3R5bGUuU3Ryb2tlKHtcbiAgICAgIGNvbG9yOiBjb2xvci5jb25jYXQoWzFdKSxcbiAgICAgIHdpZHRoOiAyXG4gICAgfSksXG4gICAgZmlsbDogbmV3IG9sc3R5bGUuRmlsbCh7XG4gICAgICBjb2xvcjogY29sb3IuY29uY2F0KFswLjJdKVxuICAgIH0pLFxuICAgIHJhZGl1czogOFxuICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBkZWZhdWx0IHN0eWxlIGZvciBkcmF3aW5nIGEgaG9sZVxuICogQHJldHVybnMgT0wgc3R5bGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURyYXdIb2xlSW50ZXJhY3Rpb25TdHlsZSgpOiBvbHN0eWxlLlN0eWxlIHtcbiAgcmV0dXJuIG5ldyBvbHN0eWxlLlN0eWxlKHtcbiAgICBzdHJva2U6IG5ldyBvbHN0eWxlLlN0cm9rZSh7XG4gICAgICBjb2xvcjogWzAsIDE1MywgMjU1LCAxXSxcbiAgICAgIHdpZHRoOiAyXG4gICAgfSlcbiAgfSk7XG59XG5cbi8qKlxuICogU2xpY2UgZ2VvbWV0cnkgaW50byB0d28gcGFydHNcbiAqIEBwYXJhbSBvbEdlb21ldHJ5IE9MIGdlb21ldHJ5XG4gKiBAcGFyYW0gb2xTbGljZXIgU2xpY2luZyBsaW5lXG4gKiBAcmV0dXJucyBOZXcgT0wgZ2VvbWV0cmllc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2xpY2VPbEdlb21ldHJ5KFxuICBvbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24sXG4gIG9sU2xpY2VyOiBPbExpbmVTdHJpbmdcbik6IEFycmF5PE9sTGluZVN0cmluZyB8IE9sUG9seWdvbj4ge1xuICBpZiAob2xHZW9tZXRyeSBpbnN0YW5jZW9mIE9sUG9seWdvbikge1xuICAgIHJldHVybiBzbGljZU9sUG9seWdvbihvbEdlb21ldHJ5LCBvbFNsaWNlcik7XG4gIH0gZWxzZSBpZiAob2xHZW9tZXRyeSBpbnN0YW5jZW9mIE9sTGluZVN0cmluZykge1xuICAgIHJldHVybiBzbGljZU9sTGluZVN0cmluZyhvbEdlb21ldHJ5LCBvbFNsaWNlcik7XG4gIH1cbiAgcmV0dXJuIFtdO1xufVxuXG4vKipcbiAqIFNsaWNlIE9MIExpbmVTdHJpbmcgaW50byBvbmUgb3IgbW9yZSBsaW5lc1xuICogQHBhcmFtIG9sTGluZVN0cmluZyBPTCBsaW5lIHN0cmluZ1xuICogQHBhcmFtIG9sU2xpY2VyIFNsaWNpbmcgbGluZVxuICogQHJldHVybnMgTmV3IE9MIGxpbmUgc3RyaW5nc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2xpY2VPbExpbmVTdHJpbmcoXG4gIG9sTGluZVN0cmluZzogT2xMaW5lU3RyaW5nLFxuICBvbFNsaWNlcjogT2xMaW5lU3RyaW5nXG4pOiBPbExpbmVTdHJpbmdbXSB7XG4gIHJldHVybiBbXTtcbn1cblxuLyoqXG4gKiBTbGljZSBPTCBQb2x5Z29uIGludG8gb25lIG9yIG1vcmUgcG9seWdvbnNcbiAqIEBwYXJhbSBvbFBvbHlnb24gT0wgcG9seWdvblxuICogQHBhcmFtIG9sU2xpY2VyIFNsaWNpbmcgbGluZVxuICogQHJldHVybnMgTmV3IE9MIHBvbHlnb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzbGljZU9sUG9seWdvbihcbiAgb2xQb2x5Z29uOiBPbFBvbHlnb24sXG4gIG9sU2xpY2VyOiBPbExpbmVTdHJpbmdcbik6IE9sUG9seWdvbltdIHtcbiAgaWYgKG9sUG9seWdvbi5nZXRMaW5lYXJSaW5nQ291bnQoKSA+IDEpIHtcbiAgICB0aHJvdyBuZXcgR2VvbWV0cnlTbGljZU11bHRpUG9seWdvbkVycm9yKCk7XG4gIH1cblxuICBpZiAob2xTbGljZXIuZ2V0Q29vcmRpbmF0ZXMoKS5sZW5ndGggPiAyKSB7XG4gICAgdGhyb3cgbmV3IEdlb21ldHJ5U2xpY2VMaW5lU3RyaW5nRXJyb3IoKTtcbiAgfVxuXG4gIGNvbnN0IG9sR2VvSlNPTiA9IG5ldyBPbEdlb0pTT04oKTtcbiAgY29uc3Qgc2xpY2VyID0gb2xHZW9KU09OLndyaXRlR2VvbWV0cnlPYmplY3Qob2xTbGljZXIpIGFzIGFueTtcbiAgY29uc3Qgb3V0ZXJDb29yZGluYXRlcyA9IG9sUG9seWdvbi5nZXRMaW5lYXJSaW5nKDApLmdldENvb3JkaW5hdGVzKCk7XG5cbiAgY29uc3QgcGFydHMgPSBbW10sIFtdXTtcbiAgbGV0IHRvdGFsSW50ZXJzZWN0aW9uQ291bnQgPSAwO1xuICBmb3IgKGxldCBpID0gMCwgaWkgPSBvdXRlckNvb3JkaW5hdGVzLmxlbmd0aCAtIDE7IGkgPCBpaTsgaSsrKSB7XG4gICAgY29uc3Qgc2VnbWVudENvb3JkaW5hdGVzID0gW291dGVyQ29vcmRpbmF0ZXNbaV0sIG91dGVyQ29vcmRpbmF0ZXNbaSArIDFdXTtcbiAgICBjb25zdCBzZWdtZW50ID0gbGluZVN0cmluZyhzZWdtZW50Q29vcmRpbmF0ZXMpO1xuICAgIGNvbnN0IGludGVyc2VjdGlvbnMgPSBsaW5lSW50ZXJzZWN0KHNlZ21lbnQsIHNsaWNlcikuZmVhdHVyZXM7XG5cbiAgICBjb25zdCBpbnRlcnNlY3Rpb25Db3VudCA9IGludGVyc2VjdGlvbnMubGVuZ3RoO1xuICAgIHRvdGFsSW50ZXJzZWN0aW9uQ291bnQgKz0gaW50ZXJzZWN0aW9uQ291bnQ7XG4gICAgaWYgKGludGVyc2VjdGlvbkNvdW50ID4gMSB8fCB0b3RhbEludGVyc2VjdGlvbkNvdW50ID4gMikge1xuICAgICAgdGhyb3cgbmV3IEdlb21ldHJ5U2xpY2VUb29NYW55SW50ZXJzZWN0aW9uRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwYXJ0c1swXS5wdXNoKHNlZ21lbnRDb29yZGluYXRlc1swXSk7XG4gICAgaWYgKGludGVyc2VjdGlvbkNvdW50ID09PSAxKSB7XG4gICAgICBjb25zdCBpbnRlcnNlY3Rpb24gPSBpbnRlcnNlY3Rpb25zWzBdLmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuICAgICAgcGFydHNbMF0ucHVzaChpbnRlcnNlY3Rpb24pO1xuICAgICAgcGFydHNbMV0ucHVzaChpbnRlcnNlY3Rpb24pO1xuICAgICAgcGFydHMucmV2ZXJzZSgpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0b3RhbEludGVyc2VjdGlvbkNvdW50IDw9IDEpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBwYXJ0c1swXS5wdXNoKHBhcnRzWzBdWzBdKTtcbiAgcGFydHNbMV0ucHVzaChwYXJ0c1sxXVswXSk7XG5cbiAgcmV0dXJuIFtuZXcgT2xQb2x5Z29uKFtwYXJ0c1swXV0pLCBuZXcgT2xQb2x5Z29uKFtwYXJ0c1sxXV0pXTtcbn1cblxuLyoqXG4gKiBTcGxpY2UgZ2VvbWV0cnkgaW50byB0d28gcGFydHNcbiAqIEBwYXJhbSBvbEdlb21ldHJ5IE9MIGdlb21ldHJ5XG4gKiBAcGFyYW0gb2xTbGljZXIgU2xpY2luZyBsaW5lXG4gKiBAcmV0dXJucyBOZXcgT0wgZ2VvbWV0cmllc1xuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkTGluZWFyUmluZ1RvT2xQb2x5Z29uKFxuICBvbFBvbHlnb246IE9sUG9seWdvbixcbiAgb2xMaW5lYXJSaW5nOiBPbExpbmVhclJpbmdcbikge1xuICAvLyBUT0RPOiBtYWtlIHNvbWUgdmFsaWRhdGlvbiBhbmQgc3VwcG9ydCB1cGRhdGluZyBhbiBleGlzdGluZyBsaW5lYXIgcmluZ1xuICBvbFBvbHlnb24uYXBwZW5kTGluZWFyUmluZyhvbExpbmVhclJpbmcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TW91c2VQb3NpdGlvbkZyb21PbEdlb21ldHJ5RXZlbnQob2xFdmVudDogQmFzaWNFdmVudCkge1xuICBjb25zdCBvbEdlb21ldHJ5ID0gb2xFdmVudC50YXJnZXQgYXMgT2xHZW9tZXRyeTtcbiAgaWYgKG9sR2VvbWV0cnkgaW5zdGFuY2VvZiBPbFBvbHlnb24pIHtcbiAgICByZXR1cm4gb2xHZW9tZXRyeS5nZXRGbGF0Q29vcmRpbmF0ZXMoKS5zbGljZSgtNCwgLTIpIGFzIFtudW1iZXIsIG51bWJlcl07XG4gIH1cbiAgY29uc3Qgb2xHZW9tZXRyeUNhc3QgPSBvbEdlb21ldHJ5IGFzIE9sUG9pbnQgfCBPbExpbmVTdHJpbmcgfCBPbENpcmNsZTtcbiAgcmV0dXJuIG9sR2VvbWV0cnlDYXN0LmdldEZsYXRDb29yZGluYXRlcygpLnNsaWNlKC0yKSBhcyBbbnVtYmVyLCBudW1iZXJdO1xufVxuIl19
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9nZW9tZXRyeS9zaGFyZWQvZ2VvbWV0cnkudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxTQUFTLE1BQU0sbUJBQW1CLENBQUM7QUFHMUMsT0FBTyxZQUFZLE1BQU0sb0JBQW9CLENBQUM7QUFHOUMsT0FBTyxTQUFTLE1BQU0saUJBQWlCLENBQUM7QUFDeEMsT0FBTyxLQUFLLE9BQU8sTUFBTSxVQUFVLENBQUM7QUFFcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLGFBQWEsTUFBTSxzQkFBc0IsQ0FBQztBQUVqRCxPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLDhCQUE4QixFQUM5QixxQ0FBcUMsRUFDdEMsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQjs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLDBCQUEwQixDQUN4QyxLQUFnQztJQUVoQyxLQUFLLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMvQixPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUN4QixNQUFNLEVBQUUsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ3pCLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEIsS0FBSyxFQUFFLENBQUM7U0FDVCxDQUFDO1FBQ0YsSUFBSSxFQUFFLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQztZQUNyQixLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzNCLENBQUM7UUFDRixNQUFNLEVBQUUsQ0FBQztLQUNWLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVB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bXBvcnQgT2xHZW9KU09OIGZyb20gJ29sL2Zvcm1hdC9HZW9KU09OJztcbmltcG9ydCBPbENpcmNsZSBmcm9tICdvbC9nZW9tL0NpcmNsZSc7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT2xHZW9tZXRyeSB9IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuaW1wb3J0IE9sTGluZVN0cmluZyBmcm9tICdvbC9nZW9tL0xpbmVTdHJpbmcnO1xuaW1wb3J0IE9sTGluZWFyUmluZyBmcm9tICdvbC9nZW9tL0xpbmVhclJpbmcnO1xuaW1wb3J0IE9sUG9pbnQgZnJvbSAnb2wvZ2VvbS9Qb2ludCc7XG5pbXBvcnQgT2xQb2x5Z29uIGZyb20gJ29sL2dlb20vUG9seWdvbic7XG5pbXBvcnQgKiBhcyBvbHN0eWxlIGZyb20gJ29sL3N0eWxlJztcblxuaW1wb3J0IHsgbGluZVN0cmluZyB9IGZyb20gJ0B0dXJmL2hlbHBlcnMnO1xuaW1wb3J0IGxpbmVJbnRlcnNlY3QgZnJvbSAnQHR1cmYvbGluZS1pbnRlcnNlY3QnO1xuXG5pbXBvcnQge1xuICBHZW9tZXRyeVNsaWNlTGluZVN0cmluZ0Vycm9yLFxuICBHZW9tZXRyeVNsaWNlTXVsdGlQb2x5Z29uRXJyb3IsXG4gIEdlb21ldHJ5U2xpY2VUb29NYW55SW50ZXJzZWN0aW9uRXJyb3Jcbn0gZnJvbSAnLi9nZW9tZXRyeS5lcnJvcnMnO1xuXG4vKipcbiAqIENyZWF0ZSBhIGRlZmF1bHQgc3R5bGUgZm9yIGRyYXcgYW5kIG1vZGlmeSBpbnRlcmFjdGlvbnNcbiAqIEBwYXJhbSBjb2xvciBTdHlsZSBjb2xvciAoUiwgRywgQilcbiAqIEByZXR1cm5zIE9MIHN0eWxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEcmF3SW50ZXJhY3Rpb25TdHlsZShcbiAgY29sb3I/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl1cbik6IG9sc3R5bGUuQ2lyY2xlIHtcbiAgY29sb3IgPSBjb2xvciB8fCBbMCwgMTUzLCAyNTVdO1xuICByZXR1cm4gbmV3IG9sc3R5bGUuQ2lyY2xlKHtcbiAgICBzdHJva2U6IG5ldyBvbHN0eWxlLlN0cm9rZSh7XG4gICAgICBjb2xvcjogY29sb3IuY29uY2F0KFsxXSksXG4gICAgICB3aWR0aDogMlxuICAgIH0pLFxuICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoe1xuICAgICAgY29sb3I6IGNvbG9yLmNvbmNhdChbMC4yXSlcbiAgICB9KSxcbiAgICByYWRpdXM6IDhcbiAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgZGVmYXVsdCBzdHlsZSBmb3IgZHJhd2luZyBhIGhvbGVcbiAqIEByZXR1cm5zIE9MIHN0eWxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEcmF3SG9sZUludGVyYWN0aW9uU3R5bGUoKTogb2xzdHlsZS5TdHlsZSB7XG4gIHJldHVybiBuZXcgb2xzdHlsZS5TdHlsZSh7XG4gICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2Uoe1xuICAgICAgY29sb3I6IFswLCAxNTMsIDI1NSwgMV0sXG4gICAgICB3aWR0aDogMlxuICAgIH0pXG4gIH0pO1xufVxuXG4vKipcbiAqIFNsaWNlIGdlb21ldHJ5IGludG8gdHdvIHBhcnRzXG4gKiBAcGFyYW0gb2xHZW9tZXRyeSBPTCBnZW9tZXRyeVxuICogQHBhcmFtIG9sU2xpY2VyIFNsaWNpbmcgbGluZVxuICogQHJldHVybnMgTmV3IE9MIGdlb21ldHJpZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNsaWNlT2xHZW9tZXRyeShcbiAgb2xHZW9tZXRyeTogT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uLFxuICBvbFNsaWNlcjogT2xMaW5lU3RyaW5nXG4pOiAoT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uKVtdIHtcbiAgaWYgKG9sR2VvbWV0cnkgaW5zdGFuY2VvZiBPbFBvbHlnb24pIHtcbiAgICByZXR1cm4gc2xpY2VPbFBvbHlnb24ob2xHZW9tZXRyeSwgb2xTbGljZXIpO1xuICB9IGVsc2UgaWYgKG9sR2VvbWV0cnkgaW5zdGFuY2VvZiBPbExpbmVTdHJpbmcpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgcmV0dXJuIFtdO1xufVxuXG4vKipcbiAqIFNsaWNlIE9MIFBvbHlnb24gaW50byBvbmUgb3IgbW9yZSBwb2x5Z29uc1xuICogQHBhcmFtIG9sUG9seWdvbiBPTCBwb2x5Z29uXG4gKiBAcGFyYW0gb2xTbGljZXIgU2xpY2luZyBsaW5lXG4gKiBAcmV0dXJucyBOZXcgT0wgcG9seWdvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNsaWNlT2xQb2x5Z29uKFxuICBvbFBvbHlnb246IE9sUG9seWdvbixcbiAgb2xTbGljZXI6IE9sTGluZVN0cmluZ1xuKTogT2xQb2x5Z29uW10ge1xuICBpZiAob2xQb2x5Z29uLmdldExpbmVhclJpbmdDb3VudCgpID4gMSkge1xuICAgIHRocm93IG5ldyBHZW9tZXRyeVNsaWNlTXVsdGlQb2x5Z29uRXJyb3IoKTtcbiAgfVxuXG4gIGlmIChvbFNsaWNlci5nZXRDb29yZGluYXRlcygpLmxlbmd0aCA+IDIpIHtcbiAgICB0aHJvdyBuZXcgR2VvbWV0cnlTbGljZUxpbmVTdHJpbmdFcnJvcigpO1xuICB9XG5cbiAgY29uc3Qgb2xHZW9KU09OID0gbmV3IE9sR2VvSlNPTigpO1xuICBjb25zdCBzbGljZXIgPSBvbEdlb0pTT04ud3JpdGVHZW9tZXRyeU9iamVjdChvbFNsaWNlcikgYXMgYW55O1xuICBjb25zdCBvdXRlckNvb3JkaW5hdGVzID0gb2xQb2x5Z29uLmdldExpbmVhclJpbmcoMCkuZ2V0Q29vcmRpbmF0ZXMoKTtcblxuICBjb25zdCBwYXJ0cyA9IFtbXSwgW11dO1xuICBsZXQgdG90YWxJbnRlcnNlY3Rpb25Db3VudCA9IDA7XG4gIGZvciAobGV0IGkgPSAwLCBpaSA9IG91dGVyQ29vcmRpbmF0ZXMubGVuZ3RoIC0gMTsgaSA8IGlpOyBpKyspIHtcbiAgICBjb25zdCBzZWdtZW50Q29vcmRpbmF0ZXMgPSBbb3V0ZXJDb29yZGluYXRlc1tpXSwgb3V0ZXJDb29yZGluYXRlc1tpICsgMV1dO1xuICAgIGNvbnN0IHNlZ21lbnQgPSBsaW5lU3RyaW5nKHNlZ21lbnRDb29yZGluYXRlcyk7XG4gICAgY29uc3QgaW50ZXJzZWN0aW9ucyA9IGxpbmVJbnRlcnNlY3Qoc2VnbWVudCwgc2xpY2VyKS5mZWF0dXJlcztcblxuICAgIGNvbnN0IGludGVyc2VjdGlvbkNvdW50ID0gaW50ZXJzZWN0aW9ucy5sZW5ndGg7XG4gICAgdG90YWxJbnRlcnNlY3Rpb25Db3VudCArPSBpbnRlcnNlY3Rpb25Db3VudDtcbiAgICBpZiAoaW50ZXJzZWN0aW9uQ291bnQgPiAxIHx8IHRvdGFsSW50ZXJzZWN0aW9uQ291bnQgPiAyKSB7XG4gICAgICB0aHJvdyBuZXcgR2VvbWV0cnlTbGljZVRvb01hbnlJbnRlcnNlY3Rpb25FcnJvcigpO1xuICAgIH1cblxuICAgIHBhcnRzWzBdLnB1c2goc2VnbWVudENvb3JkaW5hdGVzWzBdKTtcbiAgICBpZiAoaW50ZXJzZWN0aW9uQ291bnQgPT09IDEpIHtcbiAgICAgIGNvbnN0IGludGVyc2VjdGlvbiA9IGludGVyc2VjdGlvbnNbMF0uZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gICAgICBwYXJ0c1swXS5wdXNoKGludGVyc2VjdGlvbik7XG4gICAgICBwYXJ0c1sxXS5wdXNoKGludGVyc2VjdGlvbik7XG4gICAgICBwYXJ0cy5yZXZlcnNlKCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHRvdGFsSW50ZXJzZWN0aW9uQ291bnQgPD0gMSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHBhcnRzWzBdLnB1c2gocGFydHNbMF1bMF0pO1xuICBwYXJ0c1sxXS5wdXNoKHBhcnRzWzFdWzBdKTtcblxuICByZXR1cm4gW25ldyBPbFBvbHlnb24oW3BhcnRzWzBdXSksIG5ldyBPbFBvbHlnb24oW3BhcnRzWzFdXSldO1xufVxuXG4vKipcbiAqIFNwbGljZSBnZW9tZXRyeSBpbnRvIHR3byBwYXJ0c1xuICogQHBhcmFtIG9sR2VvbWV0cnkgT0wgZ2VvbWV0cnlcbiAqIEBwYXJhbSBvbFNsaWNlciBTbGljaW5nIGxpbmVcbiAqIEByZXR1cm5zIE5ldyBPTCBnZW9tZXRyaWVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRMaW5lYXJSaW5nVG9PbFBvbHlnb24oXG4gIG9sUG9seWdvbjogT2xQb2x5Z29uLFxuICBvbExpbmVhclJpbmc6IE9sTGluZWFyUmluZ1xuKSB7XG4gIC8vIFRPRE86IG1ha2Ugc29tZSB2YWxpZGF0aW9uIGFuZCBzdXBwb3J0IHVwZGF0aW5nIGFuIGV4aXN0aW5nIGxpbmVhciByaW5nXG4gIG9sUG9seWdvbi5hcHBlbmRMaW5lYXJSaW5nKG9sTGluZWFyUmluZyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNb3VzZVBvc2l0aW9uRnJvbU9sR2VvbWV0cnlFdmVudChvbEV2ZW50OiBCYXNpY0V2ZW50KSB7XG4gIGNvbnN0IG9sR2VvbWV0cnkgPSBvbEV2ZW50LnRhcmdldCBhcyBPbEdlb21ldHJ5O1xuICBpZiAob2xHZW9tZXRyeSBpbnN0YW5jZW9mIE9sUG9seWdvbikge1xuICAgIHJldHVybiBvbEdlb21ldHJ5LmdldEZsYXRDb29yZGluYXRlcygpLnNsaWNlKC00LCAtMikgYXMgW251bWJlciwgbnVtYmVyXTtcbiAgfVxuICBjb25zdCBvbEdlb21ldHJ5Q2FzdCA9IG9sR2VvbWV0cnkgYXMgT2xQb2ludCB8IE9sTGluZVN0cmluZyB8IE9sQ2lyY2xlO1xuICByZXR1cm4gb2xHZW9tZXRyeUNhc3QuZ2V0RmxhdENvb3JkaW5hdGVzKCkuc2xpY2UoLTIpIGFzIFtudW1iZXIsIG51bWJlcl07XG59XG4iXX0=