@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
@@ -323,9 +323,7 @@ export class MeasurerComponent {
323
323
  onToggleDisplayDistance(toggle) {
324
324
  this.displayDistance = toggle;
325
325
  this.onDisplayDistance();
326
- toggle
327
- ? this.storageService.set('distanceToggle', true, StorageScope.SESSION)
328
- : this.storageService.set('distanceToggle', false, StorageScope.SESSION);
326
+ this.storageService.set('distanceToggle', toggle, StorageScope.SESSION);
329
327
  }
330
328
  /**
331
329
  * Activate or deactivate the current display of distances of the lines
@@ -334,9 +332,7 @@ export class MeasurerComponent {
334
332
  onToggleDisplayLines(toggle) {
335
333
  this.displayLines = toggle;
336
334
  this.onDisplayLines();
337
- toggle
338
- ? this.storageService.set('linesToggle', true, StorageScope.SESSION)
339
- : this.storageService.set('linesToggle', false, StorageScope.SESSION);
335
+ this.storageService.set('linesToggle', toggle, StorageScope.SESSION);
340
336
  }
341
337
  /**
342
338
  * Activate or deactivate the current display of areas
@@ -345,9 +341,7 @@ export class MeasurerComponent {
345
341
  onToggleDisplayAreas(toggle) {
346
342
  this.displayAreas = toggle;
347
343
  this.onDisplayAreas();
348
- toggle
349
- ? this.storageService.set('areasToggle', true, StorageScope.SESSION)
350
- : this.storageService.set('areasToggle', false, StorageScope.SESSION);
344
+ this.storageService.set('areasToggle', toggle, StorageScope.SESSION);
351
345
  }
352
346
  /**
353
347
  * Set display parametres in current values
@@ -565,9 +559,7 @@ export class MeasurerComponent {
565
559
  }
566
560
  }));
567
561
  this.subscriptions$$.push(this.store.count$.subscribe((cnt) => {
568
- cnt >= 1
569
- ? (this.store.layer.options.showInLayerList = true)
570
- : (this.store.layer.options.showInLayerList = false);
562
+ this.store.layer.options.showInLayerList = cnt >= 1;
571
563
  }));
572
564
  }
573
565
  /**
@@ -938,10 +930,10 @@ export class MeasurerComponent {
938
930
  this.activeLengthUnit = distanceUnit ? distanceUnit : this.activeLengthUnit;
939
931
  this.activeAreaUnit = areaUnit ? areaUnit : this.activeAreaUnit;
940
932
  }
941
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MeasurerComponent, deps: [{ token: i1.LanguageService }, { token: i2.MatDialog }, { token: i3.StorageService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
942
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: MeasurerComponent, isStandalone: true, selector: "igo-measurer", inputs: { map: "map", store: "store", activeMeasureType: "activeMeasureType", minSegmentLength: "minSegmentLength" }, viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true, static: true }], ngImport: i0, template: "<div>\n <div class=\"measure-type-toggle mat-typography\">\n <mat-button-toggle-group\n [value]=\"activeMeasureType\"\n (change)=\"onMeasureTypeChange($event.value)\"\n >\n <mat-button-toggle [value]=\"measureType.Length\">\n {{ 'igo.geo.measure.' + measureType.Length | translate }}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"measureType.Area\">\n {{ 'igo.geo.measure.' + measureType.Area | translate }}\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n\n <div class=\"measure-options mat-typography\">\n <mat-slide-toggle\n [disabled]=\"drawControlIsDisabled\"\n [checked]=\"drawControlIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDrawControl($event.checked)\"\n >\n {{ 'igo.geo.measure.toggleActive' | translate }}\n </mat-slide-toggle>\n\n <mat-divider *ngIf=\"hasLine$ | async\"></mat-divider>\n\n <mat-slide-toggle\n *ngIf=\"hasLine$ | async\"\n [checked]=\"displayLines\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDisplayLines($event.checked)\"\n >\n {{ 'igo.geo.measure.toggleDisplayLines' | translate }}\n </mat-slide-toggle>\n\n <mat-divider *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"></mat-divider>\n\n <mat-slide-toggle\n *ngIf=\"hasArea$ | async\"\n [checked]=\"displayDistance\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDisplayDistance($event.checked)\"\n >\n {{ 'igo.geo.measure.toggleDisplayDistance' | translate }}\n </mat-slide-toggle>\n\n <mat-slide-toggle\n *ngIf=\"hasArea$ | async\"\n [checked]=\"displayAreas\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDisplayAreas($event.checked)\"\n >\n {{ 'igo.geo.measure.toggleDisplayAreas' | translate }}\n </mat-slide-toggle>\n\n <mat-divider *ngIf=\"hasArea$ | async\"></mat-divider>\n\n <mat-slide-toggle\n [checked]=\"measureUnitsAuto\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleMeasureUnitsAuto($event.checked)\"\n >\n {{ 'igo.geo.measure.toggleAutoUnits' | translate }}\n </mat-slide-toggle>\n </div>\n\n <ng-container *ngIf=\"measure$ | async as measure\">\n <igo-measurer-item\n *ngIf=\"\n activeMeasureType === measureType.Length ||\n activeMeasureType === measureType.Area\n \"\n [measureType]=\"measureType.Length\"\n [measureUnit]=\"activeLengthUnit\"\n [measure]=\"measure.length\"\n [auto]=\"measureUnitsAuto\"\n [placeholder]=\"\n (activeMeasureType === measureType.Area\n ? 'igo.geo.measure.perimeter'\n : 'igo.geo.measure.length'\n ) | translate\n \"\n (measureUnitChange)=\"onLengthUnitChange($any($event))\"\n >\n </igo-measurer-item>\n\n <igo-measurer-item\n *ngIf=\"activeMeasureType === measureType.Area\"\n [measureType]=\"measureType.Area\"\n [measureUnit]=\"activeAreaUnit\"\n [measure]=\"measure.area\"\n [auto]=\"measureUnitsAuto\"\n [placeholder]=\"'igo.geo.measure.area' | translate\"\n (measureUnitChange)=\"onAreaUnitChange($any($event))\"\n >\n </igo-measurer-item>\n </ng-container>\n\n <mat-divider *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"></mat-divider>\n\n <div class=\"measure-store-buttons\">\n <button\n *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"\n mat-icon-button\n [matTooltip]=\"'igo.geo.measure.actionbar.calculate.tooltip' | translate\"\n [disabled]=\"(selectedFeatures$ | async).length === 0\"\n color=\"accent\"\n (click)=\"onCalculateClick()\"\n >\n <mat-icon>calculate</mat-icon>\n </button>\n\n <button\n *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"\n mat-icon-button\n [matTooltip]=\"'igo.geo.measure.actionbar.delete.tooltip' | translate\"\n [disabled]=\"(selectedFeatures$ | async).length === 0\"\n color=\"warn\"\n (click)=\"onDeleteClick()\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n\n <igo-entity-table\n #table\n class=\"table-compact\"\n [store]=\"store\"\n [template]=\"tableTemplate\"\n >\n </igo-entity-table>\n</div>\n", styles: [":host .measure-type-toggle{padding:10px;text-align:center}:host .measure-type-toggle mat-button-toggle-group{width:100%}:host .measure-type-toggle mat-button-toggle-group mat-button-toggle{width:50%}:host .measure-options mat-slide-toggle{width:100%;padding:10px}:host .measure-options mat-slide-toggle ::ng-deep .mdc-form-field{width:100%}:host .measure-options mat-slide-toggle ::ng-deep .mdc-label{margin-left:0;width:calc(100% - 60px)}:host .measure-store-buttons{margin-left:-2px}:host .measure-store-buttons button:first-of-type{margin-left:14px}:host .table-compact ::ng-deep .mat-mdc-header-cell.mat-column-selectionCheckbox{width:52px}:host .igo-map-tooltip{position:relative;border-radius:4px;padding:4px 8px;white-space:nowrap}::ng-deep .igo-map-tooltip-hidden,.igo-map-tooltip-measure-by-display{display:none}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i4.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i4.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i5.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: MeasurerItemComponent, selector: "igo-measurer-item", inputs: ["measureType", "measureUnit", "measure", "auto", "placeholder"], outputs: ["measureUnitChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: EntityTableComponent, selector: "igo-entity-table", inputs: ["store", "paginator", "template", "scrollBehavior", "sortNullsFirst", "withPaginator", "paginatorOptions"], outputs: ["entityClick", "entitySelectChange", "entitySortChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
933
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: MeasurerComponent, deps: [{ token: i1.LanguageService }, { token: i2.MatDialog }, { token: i3.StorageService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
934
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: MeasurerComponent, isStandalone: true, selector: "igo-measurer", inputs: { map: "map", store: "store", activeMeasureType: "activeMeasureType", minSegmentLength: "minSegmentLength" }, viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true, static: true }], ngImport: i0, template: "<div>\n <div class=\"measure-type-toggle mat-typography\">\n <mat-button-toggle-group\n [value]=\"activeMeasureType\"\n (change)=\"onMeasureTypeChange($event.value)\"\n >\n <mat-button-toggle [value]=\"measureType.Length\">\n {{ 'igo.geo.measure.' + measureType.Length | translate }}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"measureType.Area\">\n {{ 'igo.geo.measure.' + measureType.Area | translate }}\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n\n <div class=\"measure-options mat-typography\">\n <mat-slide-toggle\n [disabled]=\"drawControlIsDisabled\"\n [checked]=\"drawControlIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDrawControl($event.checked)\"\n >\n {{ 'igo.geo.measure.toggleActive' | translate }}\n </mat-slide-toggle>\n\n <mat-divider *ngIf=\"hasLine$ | async\"></mat-divider>\n\n <mat-slide-toggle\n *ngIf=\"hasLine$ | async\"\n [checked]=\"displayLines\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDisplayLines($event.checked)\"\n >\n {{ 'igo.geo.measure.toggleDisplayLines' | translate }}\n </mat-slide-toggle>\n\n <mat-divider *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"></mat-divider>\n\n <mat-slide-toggle\n *ngIf=\"hasArea$ | async\"\n [checked]=\"displayDistance\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDisplayDistance($event.checked)\"\n >\n {{ 'igo.geo.measure.toggleDisplayDistance' | translate }}\n </mat-slide-toggle>\n\n <mat-slide-toggle\n *ngIf=\"hasArea$ | async\"\n [checked]=\"displayAreas\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDisplayAreas($event.checked)\"\n >\n {{ 'igo.geo.measure.toggleDisplayAreas' | translate }}\n </mat-slide-toggle>\n\n <mat-divider *ngIf=\"hasArea$ | async\"></mat-divider>\n\n <mat-slide-toggle\n [checked]=\"measureUnitsAuto\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleMeasureUnitsAuto($event.checked)\"\n >\n {{ 'igo.geo.measure.toggleAutoUnits' | translate }}\n </mat-slide-toggle>\n </div>\n\n <ng-container *ngIf=\"measure$ | async as measure\">\n <igo-measurer-item\n *ngIf=\"\n activeMeasureType === measureType.Length ||\n activeMeasureType === measureType.Area\n \"\n [measureType]=\"measureType.Length\"\n [measureUnit]=\"activeLengthUnit\"\n [measure]=\"measure.length\"\n [auto]=\"measureUnitsAuto\"\n [placeholder]=\"\n (activeMeasureType === measureType.Area\n ? 'igo.geo.measure.perimeter'\n : 'igo.geo.measure.length'\n ) | translate\n \"\n (measureUnitChange)=\"onLengthUnitChange($any($event))\"\n >\n </igo-measurer-item>\n\n <igo-measurer-item\n *ngIf=\"activeMeasureType === measureType.Area\"\n [measureType]=\"measureType.Area\"\n [measureUnit]=\"activeAreaUnit\"\n [measure]=\"measure.area\"\n [auto]=\"measureUnitsAuto\"\n [placeholder]=\"'igo.geo.measure.area' | translate\"\n (measureUnitChange)=\"onAreaUnitChange($any($event))\"\n >\n </igo-measurer-item>\n </ng-container>\n\n <mat-divider *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"></mat-divider>\n\n <div class=\"measure-store-buttons\">\n <button\n *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"\n mat-icon-button\n [matTooltip]=\"'igo.geo.measure.actionbar.calculate.tooltip' | translate\"\n [disabled]=\"(selectedFeatures$ | async).length === 0\"\n color=\"accent\"\n (click)=\"onCalculateClick()\"\n >\n <mat-icon>calculate</mat-icon>\n </button>\n\n <button\n *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"\n mat-icon-button\n [matTooltip]=\"'igo.geo.measure.actionbar.delete.tooltip' | translate\"\n [disabled]=\"(selectedFeatures$ | async).length === 0\"\n color=\"warn\"\n (click)=\"onDeleteClick()\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n\n <igo-entity-table\n #table\n class=\"table-compact\"\n [store]=\"store\"\n [template]=\"tableTemplate\"\n >\n </igo-entity-table>\n</div>\n", styles: [":host .measure-type-toggle{padding:10px;text-align:center}:host .measure-type-toggle mat-button-toggle-group{width:100%}:host .measure-type-toggle mat-button-toggle-group mat-button-toggle{width:50%}:host .measure-options mat-slide-toggle{width:100%;padding:10px}:host .measure-options mat-slide-toggle ::ng-deep .mdc-form-field{width:100%}:host .measure-options mat-slide-toggle ::ng-deep .mdc-label{margin-left:0;width:calc(100% - 60px)}:host .measure-store-buttons{margin-left:-2px}:host .measure-store-buttons button:first-of-type{margin-left:14px}:host .table-compact ::ng-deep .mat-mdc-header-cell.mat-column-selectionCheckbox{width:52px}:host .igo-map-tooltip{position:relative;border-radius:4px;padding:4px 8px;white-space:nowrap}::ng-deep .igo-map-tooltip-hidden,.igo-map-tooltip-measure-by-display{display:none}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i4.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i4.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i5.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: MeasurerItemComponent, selector: "igo-measurer-item", inputs: ["measureType", "measureUnit", "measure", "auto", "placeholder"], outputs: ["measureUnitChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: EntityTableComponent, selector: "igo-entity-table", inputs: ["store", "paginator", "template", "scrollBehavior", "sortNullsFirst", "withPaginator", "paginatorOptions"], outputs: ["entityClick", "entitySelectChange", "entitySortChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
943
935
  }
944
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MeasurerComponent, decorators: [{
936
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: MeasurerComponent, decorators: [{
945
937
  type: Component,
946
938
  args: [{ selector: 'igo-measurer', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
947
939
  MatButtonToggleModule,
@@ -971,4 +963,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
971
963
  type: ViewChild,
972
964
  args: ['table', { static: true }]
973
965
  }] } });
974
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWVhc3VyZS9tZWFzdXJlci9tZWFzdXJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tZWFzdXJlL21lYXN1cmVyL21lYXN1cmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBR0wsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFFTCxvQkFBb0IsRUFFckIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztB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U0FBUzsrQkFDRSxjQUFjLG1CQUdQLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLHFCQUFxQjt3QkFDckIsb0JBQW9CO3dCQUNwQixJQUFJO3dCQUNKLGdCQUFnQjt3QkFDaEIscUJBQXFCO3dCQUNyQixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixvQkFBb0I7d0JBQ3BCLFNBQVM7d0JBQ1QsaUJBQWlCO3FCQUNsQjs7MEJBK05FLE1BQU07MkJBQUMsUUFBUTt5Q0E1Q1QsR0FBRztzQkFBWCxLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFPRixpQkFBaUI7c0JBRHBCLEtBQUs7Z0JBYUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVnQyxLQUFLO3NCQUExQyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIERPQ1VNRU5ULCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5pbXBvcnQge1xuICBFbnRpdHlSZWNvcmQsXG4gIEVudGl0eVRhYmxlQ29tcG9uZW50LFxuICBFbnRpdHlUYWJsZVRlbXBsYXRlXG59IGZyb20gJ0BpZ28yL2NvbW1vbi9lbnRpdHknO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5pbXBvcnQgeyBJZ29MYW5ndWFnZU1vZHVsZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuaW1wb3J0IHsgU3RvcmFnZVNjb3BlLCBTdG9yYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvc3RvcmFnZSc7XG5pbXBvcnQgeyB1dWlkIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgT2xGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xuaW1wb3J0IHsgdW5CeUtleSB9IGZyb20gJ29sL09ic2VydmFibGUnO1xuaW1wb3J0IE9sT3ZlcmxheSBmcm9tICdvbC9PdmVybGF5JztcbmltcG9ydCBPbEdlb0pTT04gZnJvbSAnb2wvZm9ybWF0L0dlb0pTT04nO1xuaW1wb3J0IE9sTGluZVN0cmluZyBmcm9tICdvbC9nZW9tL0xpbmVTdHJpbmcnO1xuaW1wb3J0IE9sUG9seWdvbiBmcm9tICdvbC9nZW9tL1BvbHlnb24nO1xuaW1wb3J0IE9sVmVjdG9yU291cmNlIGZyb20gJ29sL3NvdXJjZS9WZWN0b3InO1xuaW1wb3J0IHsgVmVjdG9yU291cmNlRXZlbnQgYXMgT2xWZWN0b3JTb3VyY2VFdmVudCB9IGZyb20gJ29sL3NvdXJjZS9WZWN0b3InO1xuaW1wb3J0IE9sU3R5bGUgZnJvbSAnb2wvc3R5bGUvU3R5bGUnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc2tpcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRmVhdHVyZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcyc7XG5pbXBvcnQge1xuICBGRUFUVVJFLFxuICBGZWF0dXJlU3RvcmUsXG4gIEZlYXR1cmVTdG9yZUxvYWRpbmdTdHJhdGVneSxcbiAgRmVhdHVyZVN0b3JlU2VsZWN0aW9uU3RyYXRlZ3ksXG4gIHRyeUFkZExvYWRpbmdTdHJhdGVneSxcbiAgdHJ5QWRkU2VsZWN0aW9uU3RyYXRlZ3ksXG4gIHRyeUJpbmRTdG9yZUxheWVyXG59IGZyb20gJy4uLy4uL2ZlYXR1cmUnO1xuaW1wb3J0IHsgRHJhd0NvbnRyb2wsIE1vZGlmeUNvbnRyb2wgfSBmcm9tICcuLi8uLi9nZW9tZXRyeS9zaGFyZWQnO1xuaW1wb3J0IHsgVmVjdG9yTGF5ZXIgfSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQnO1xuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9tYXAnO1xuaW1wb3J0IHtcbiAgTWVhc3VyZUFyZWFVbml0LFxuICBNZWFzdXJlTGVuZ3RoVW5pdCxcbiAgTWVhc3VyZVR5cGVcbn0gZnJvbSAnLi4vc2hhcmVkL21lYXN1cmUuZW51bSc7XG5pbXBvcnQge1xuICBGZWF0dXJlV2l0aE1lYXN1cmUsXG4gIE1lYXN1cmUsXG4gIE1lYXN1cmVyRGlhbG9nRGF0YVxufSBmcm9tICcuLi9zaGFyZWQvbWVhc3VyZS5pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gIGNyZWF0ZU1lYXN1cmVJbnRlcmFjdGlvblN0eWxlLFxuICBjcmVhdGVNZWFzdXJlTGF5ZXJTdHlsZSxcbiAgZm9ybWF0TWVhc3VyZSxcbiAgZ2V0VG9vbHRpcHNPZk9sR2VvbWV0cnksXG4gIG1lYXN1cmVPbEdlb21ldHJ5LFxuICBtZXRlcnNUb1VuaXQsXG4gIHNxdWFyZU1ldGVyc1RvVW5pdCxcbiAgdXBkYXRlT2xUb29sdGlwQXRDZW50ZXIsXG4gIHVwZGF0ZU9sVG9vbHRpcHNBdE1pZHBvaW50c1xufSBmcm9tICcuLi9zaGFyZWQvbWVhc3VyZS51dGlscyc7XG5pbXBvcnQgeyBNZWFzdXJlckRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vbWVhc3VyZXItZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNZWFzdXJlckl0ZW1Db21wb25lbnQgfSBmcm9tICcuL21lYXN1cmVyLWl0ZW0uY29tcG9uZW50JztcblxuLyoqXG4gKiBUb29sIHRvIG1lYXN1cmUgbGVuZ3RocyBhbmQgYXJlYXNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWdvLW1lYXN1cmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lYXN1cmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVhc3VyZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBNYXRCdXR0b25Ub2dnbGVNb2R1bGUsXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXG4gICAgTmdJZixcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxuICAgIE1lYXN1cmVySXRlbUNvbXBvbmVudCxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIEVudGl0eVRhYmxlQ29tcG9uZW50LFxuICAgIEFzeW5jUGlwZSxcbiAgICBJZ29MYW5ndWFnZU1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE1lYXN1cmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogVGFibGUgdGVtcGxhdGVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgdGFibGVUZW1wbGF0ZTogRW50aXR5VGFibGVUZW1wbGF0ZTtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnMkJDogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBNZWFzdXJlVHlwZSBlbnVtXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIG1lYXN1cmVUeXBlID0gTWVhc3VyZVR5cGU7XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgQXJlYU1lYXN1cmVVbml0IGVudW1cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgbWVhc3VyZUFyZWFVbml0ID0gTWVhc3VyZUFyZWFVbml0O1xuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIExlbmd0aE1lYXN1cmVVbml0IGVudW1cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgbWVhc3VyZUxlbmd0aFVuaXQgPSBNZWFzdXJlTGVuZ3RoVW5pdDtcblxuICAvKipcbiAgICogV2hldGhlciBtZWFzdXJlIHVuaXRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGRldGVybWluZWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgbWVhc3VyZVVuaXRzQXV0bzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGRpc3BsYXkgb2YgZGlzdGFuY2VzIG9mIGFyZWFzXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGRpc3BsYXlEaXN0YW5jZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgZGlzcGxheSBvZiBkaXN0YW5jZXMgb2YgbGluZXNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZGlzcGxheUxpbmVzOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogV2hldGhlciBkaXNwbGF5IG9mIGFyZWFzXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGRpc3BsYXlBcmVhczogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgb2YgbGluZSBib29sZWFuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGhhc0xpbmUkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSBvZiBhcmVhIGJvb2xlYW5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgaGFzQXJlYSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIG9mIGFyZWFcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgbWVhc3VyZSQ6IEJlaGF2aW9yU3ViamVjdDxNZWFzdXJlPiA9IG5ldyBCZWhhdmlvclN1YmplY3Qoe30pO1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIG9mIHNlbGVjdGVkIGZlYXR1cmVzXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHNlbGVjdGVkRmVhdHVyZXMkOiBCZWhhdmlvclN1YmplY3Q8RmVhdHVyZVdpdGhNZWFzdXJlW10+ID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcblxuICAvKipcbiAgICogT0wgZHJhdyBzb3VyY2VcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc2hvd1Rvb2x0aXBzOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogV2hldGhlciBkcmF3IGNvbnRyb2wgdG9nZ2xlIGlzIGRpc2FibGVkIG9yIG5vdFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBkcmF3Q29udHJvbElzRGlzYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBEcmF3IGxpbmUgY29udHJvbFxuICAgKi9cbiAgcHJpdmF0ZSBkcmF3TGluZUNvbnRyb2w6IERyYXdDb250cm9sO1xuXG4gIC8qKlxuICAgKiBEcmF3IHBvbHlnb24gY29udHJvbFxuICAgKi9cbiAgcHJpdmF0ZSBkcmF3UG9seWdvbkNvbnRyb2w6IERyYXdDb250cm9sO1xuXG4gIC8qKlxuICAgKiBNb2RpZnkgY29udHJvbFxuICAgKi9cbiAgcHJpdmF0ZSBtb2RpZnlDb250cm9sOiBNb2RpZnlDb250cm9sO1xuXG4gIC8qKlxuICAgKiBBY3RpdmUgT0wgZ2VvbWV0cnlcbiAgICovXG4gIHByaXZhdGUgYWN0aXZlT2xHZW9tZXRyeTogT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uO1xuXG4gIC8qKlxuICAgKiBBY3RpdmUgbWxlbmd0aCB1bml0XG4gICAqL1xuICBwdWJsaWMgYWN0aXZlTGVuZ3RoVW5pdDogTWVhc3VyZUxlbmd0aFVuaXQgPSBNZWFzdXJlTGVuZ3RoVW5pdC5NZXRlcnM7XG5cbiAgLyoqXG4gICAqIEFjdGl2ZSBhcmVhIHVuaXRcbiAgICovXG4gIHB1YmxpYyBhY3RpdmVBcmVhVW5pdDogTWVhc3VyZUFyZWFVbml0ID0gTWVhc3VyZUFyZWFVbml0LlNxdWFyZU1ldGVycztcblxuICAvKipcbiAgICogRmVhdHVyZSBhZGRlZCBsaXN0ZW5lciBrZXlcbiAgICovXG4gIHByaXZhdGUgb25GZWF0dXJlQWRkZWRLZXk7XG5cbiAgLyoqXG4gICAqIEZlYXR1cmUgcmVtb3ZlZCBsaXN0ZW5lciBrZXlcbiAgICovXG4gIHByaXZhdGUgb25GZWF0dXJlUmVtb3ZlZEtleTtcblxuICAvKipcbiAgICogQWN0aXZlIGRyYXcgY29udHJvbFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgYWN0aXZlRHJhd0NvbnRyb2w6IERyYXdDb250cm9sO1xuXG4gIC8qKlxuICAgKiBTdWJzY3JpcHRpb24gdG8gZHJhdyBzdGFydFxuICAgKi9cbiAgcHJpdmF0ZSBkcmF3U3RhcnQkJDogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBTdWJzY3JpcHRpb24gdG8gZHJhdyBlbmRcbiAgICovXG4gIHByaXZhdGUgZHJhd0VuZCQkOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIFN1YnNjcmlwdGlvbiB0byBjb250cm9scyBjaGFuZ2VzXG4gICAqL1xuICBwcml2YXRlIGRyYXdDaGFuZ2VzJCQ6IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogU3Vic2NyaXB0aW9uIHRvIG1vZGlmeSBzdGFydFxuICAgKi9cbiAgcHJpdmF0ZSBtb2RpZnlTdGFydCQkOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIFN1YnNjcmlwdGlvbiB0byBtb2RpZnkgZW5kXG4gICAqL1xuICBwcml2YXRlIG1vZGlmeUVuZCQkOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIFN1YnNjcmlwdGlvbiB0byBjb250cm9scyBjaGFuZ2VzXG4gICAqL1xuICBwcml2YXRlIG1vZGlmeUNoYW5nZXMkJDogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBTdWJzY3JpcHRpb24gdG8gbWVhc3VyZXMgc2VsZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHNlbGVjdGVkRmVhdHVyZXMkJDogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBPTCBkcmF3IHNvdXJjZVxuICAgKi9cbiAgcHJpdmF0ZSBvbERyYXdTb3VyY2UgPSBuZXcgT2xWZWN0b3JTb3VyY2UoKTtcblxuICAvKipcbiAgICogVGhlIG1hcCB0byBtZWFzdXJlIG9uXG4gICAqL1xuICBASW5wdXQoKSBtYXA6IElnb01hcDtcblxuICAvKipcbiAgICogVGhlIG1lYXN1cmVzIHN0b3JlXG4gICAqL1xuICBASW5wdXQoKSBzdG9yZTogRmVhdHVyZVN0b3JlPEZlYXR1cmVXaXRoTWVhc3VyZT47XG5cbiAgLyoqXG4gICAqIE1lYXN1cmUgdHlwZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBhY3RpdmVNZWFzdXJlVHlwZSh2YWx1ZTogTWVhc3VyZVR5cGUpIHtcbiAgICB0aGlzLnNldEFjdGl2ZU1lYXN1cmVUeXBlKHZhbHVlKTtcbiAgfVxuICBnZXQgYWN0aXZlTWVhc3VyZVR5cGUoKTogTWVhc3VyZVR5cGUge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVNZWFzdXJlVHlwZTtcbiAgfVxuICBwcml2YXRlIF9hY3RpdmVNZWFzdXJlVHlwZTogTWVhc3VyZVR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIGxlbmd0aCBhIHNlZ21lbnQgbXVzdCBoYXZlIHRvIGRpc3BsYXkgYSB0b29sdGlwLlxuICAgKiBJdCBhbHNvIGFwcGxpZXMgdG8gYXJlYSB0b29sdGlwcy5cbiAgICovXG4gIEBJbnB1dCgpIG1pblNlZ21lbnRMZW5ndGg6IG51bWJlciA9IDEwO1xuXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJywgeyBzdGF0aWM6IHRydWUgfSkgdGFibGU6IEVudGl0eVRhYmxlQ29tcG9uZW50O1xuXG4gIC8qKlxuICAgKiBXaGV0ZXIgb25lIG9mIHRoZSBkcmF3IGNvbnRyb2wgaXMgYWN0aXZlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0IGRyYXdDb250cm9sSXNBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlRHJhd0NvbnRyb2wgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBwcm9qZWN0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubWFwLm9sLmdldFZpZXcoKS5nZXRQcm9qZWN0aW9uKCkuZ2V0Q29kZSgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50XG4gICkge1xuICAgIHRoaXMudGFibGVUZW1wbGF0ZSA9IHtcbiAgICAgIHNlbGVjdGlvbjogdHJ1ZSxcbiAgICAgIHNlbGVjdE1hbnk6IHRydWUsXG4gICAgICBzZWxlY3Rpb25DaGVja2JveDogdHJ1ZSxcbiAgICAgIHNvcnQ6IHRydWUsXG4gICAgICBjb2x1bW5zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnbGVuZ3RoJyxcbiAgICAgICAgICB0aXRsZTogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAnaWdvLmdlby5tZWFzdXJlLmxlbmd0aEhlYWRlcidcbiAgICAgICAgICApLFxuICAgICAgICAgIHZhbHVlQWNjZXNzb3I6IChsb2NhbEZlYXR1cmU6IEZlYXR1cmVXaXRoTWVhc3VyZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdW5pdCA9IHRoaXMuYWN0aXZlTGVuZ3RoVW5pdDtcbiAgICAgICAgICAgIGNvbnN0IG1lYXN1cmUgPSBtZXRlcnNUb1VuaXQoXG4gICAgICAgICAgICAgIGxvY2FsRmVhdHVyZS5wcm9wZXJ0aWVzLm1lYXN1cmUubGVuZ3RoLFxuICAgICAgICAgICAgICB1bml0XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE1lYXN1cmUobWVhc3VyZSwge1xuICAgICAgICAgICAgICBkZWNpbWFsOiAxLFxuICAgICAgICAgICAgICB1bml0LFxuICAgICAgICAgICAgICB1bml0QWJicjogZmFsc2UsXG4gICAgICAgICAgICAgIGxvY2FsZTogJ2ZyJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2FyZWEnLFxuICAgICAgICAgIHRpdGxlOiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICdpZ28uZ2VvLm1lYXN1cmUuYXJlYUhlYWRlcidcbiAgICAgICAgICApLFxuICAgICAgICAgIHZhbHVlQWNjZXNzb3I6IChsb2NhbEZlYXR1cmU6IEZlYXR1cmVXaXRoTWVhc3VyZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdW5pdCA9IHRoaXMuYWN0aXZlQXJlYVVuaXQ7XG4gICAgICAgICAgICBjb25zdCBtZWFzdXJlID0gc3F1YXJlTWV0ZXJzVG9Vbml0KFxuICAgICAgICAgICAgICBsb2NhbEZlYXR1cmUucHJvcGVydGllcy5tZWFzdXJlLmFyZWEsXG4gICAgICAgICAgICAgIHVuaXRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gbWVhc3VyZVxuICAgICAgICAgICAgICA/IGZvcm1hdE1lYXN1cmUobWVhc3VyZSwge1xuICAgICAgICAgICAgICAgICAgZGVjaW1hbDogMSxcbiAgICAgICAgICAgICAgICAgIHVuaXQsXG4gICAgICAgICAgICAgICAgICB1bml0QWJicjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICBsb2NhbGU6ICdmcidcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICA6ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQWRkIGRyYXcgY29udHJvbHMgYW5kIGFjdGl2YXRlIG9uZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZ2V0U2F2ZWRVbml0cygpO1xuICAgIHRoaXMuaW5pdFN0b3JlKCk7XG4gICAgdGhpcy5jcmVhdGVEcmF3TGluZUNvbnRyb2woKTtcbiAgICB0aGlzLmNyZWF0ZURyYXdQb2x5Z29uQ29udHJvbCgpO1xuICAgIHRoaXMuY3JlYXRlTW9kaWZ5Q29udHJvbCgpO1xuICAgIHRoaXMudG9nZ2xlRHJhd0NvbnRyb2woKTtcbiAgICB0aGlzLnVwZGF0ZVRvb2x0aXBzT2ZPbFNvdXJjZSh0aGlzLnN0b3JlLnNvdXJjZS5vbCk7XG4gICAgdGhpcy5jaGVja0Rpc3RhbmNlQXJlYVRvZ2dsZSgpO1xuICAgIHRoaXMuc2V0QWN0aXZlTWVhc3VyZVR5cGUoTWVhc3VyZVR5cGUuTGVuZ3RoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgb3ZlcmxheSBsYXllciBhbmQgYW55IGludGVyYWN0aW9uIGFkZGVkIGJ5IHRoaXMgY29tcG9uZW50LlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc2V0QWN0aXZlTWVhc3VyZVR5cGUodW5kZWZpbmVkKTtcbiAgICB0aGlzLmRlYWN0aXZhdGVNb2RpZnlDb250cm9sKCk7XG4gICAgdGhpcy5mcmVlemVTdG9yZSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyQkLm1hcCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIG1lYXN1cmUgdHlwZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uTWVhc3VyZVR5cGVDaGFuZ2UobWVhc3VyZVR5cGU6IE1lYXN1cmVUeXBlKSB7XG4gICAgdGhpcy5hY3RpdmVNZWFzdXJlVHlwZSA9IG1lYXN1cmVUeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIG9yIGRlYWN0aXZhdGUgdGhlIGN1cnJlbnQgZHJhdyBjb250cm9sXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgb25Ub2dnbGVEcmF3Q29udHJvbCh0b2dnbGU6IGJvb2xlYW4pIHtcbiAgICBpZiAodG9nZ2xlID09PSB0cnVlKSB7XG4gICAgICB0aGlzLnRvZ2dsZURyYXdDb250cm9sKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVhY3RpdmF0ZURyYXdDb250cm9sKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIG9yIGRlYWN0aXZhdGUgdGhlIGN1cnJlbnQgZHJhdyBjb250cm9sXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgb25Ub2dnbGVNZWFzdXJlVW5pdHNBdXRvKHRvZ2dsZTogYm9vbGVhbikge1xuICAgIHRoaXMubWVhc3VyZVVuaXRzQXV0byA9IHRvZ2dsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZSBvciBkZWFjdGl2YXRlIHRoZSBjdXJyZW50IGRpc3BsYXkgb2YgZGlzdGFuY2VzIG9mIHRoZSBhcmVhc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uVG9nZ2xlRGlzcGxheURpc3RhbmNlKHRvZ2dsZTogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzcGxheURpc3RhbmNlID0gdG9nZ2xlO1xuICAgIHRoaXMub25EaXNwbGF5RGlzdGFuY2UoKTtcbiAgICB0b2dnbGVcbiAgICAgID8gdGhpcy5zdG9yYWdlU2VydmljZS5zZXQoJ2Rpc3RhbmNlVG9nZ2xlJywgdHJ1ZSwgU3RvcmFnZVNjb3BlLlNFU1NJT04pXG4gICAgICA6IHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KCdkaXN0YW5jZVRvZ2dsZScsIGZhbHNlLCBTdG9yYWdlU2NvcGUuU0VTU0lPTik7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGUgb3IgZGVhY3RpdmF0ZSB0aGUgY3VycmVudCBkaXNwbGF5IG9mIGRpc3RhbmNlcyBvZiB0aGUgbGluZXNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBvblRvZ2dsZURpc3BsYXlMaW5lcyh0b2dnbGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc3BsYXlMaW5lcyA9IHRvZ2dsZTtcbiAgICB0aGlzLm9uRGlzcGxheUxpbmVzKCk7XG4gICAgdG9nZ2xlXG4gICAgICA/IHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KCdsaW5lc1RvZ2dsZScsIHRydWUsIFN0b3JhZ2VTY29wZS5TRVNTSU9OKVxuICAgICAgOiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldCgnbGluZXNUb2dnbGUnLCBmYWxzZSwgU3RvcmFnZVNjb3BlLlNFU1NJT04pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIG9yIGRlYWN0aXZhdGUgdGhlIGN1cnJlbnQgZGlzcGxheSBvZiBhcmVhc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uVG9nZ2xlRGlzcGxheUFyZWFzKHRvZ2dsZTogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzcGxheUFyZWFzID0gdG9nZ2xlO1xuICAgIHRoaXMub25EaXNwbGF5QXJlYXMoKTtcbiAgICB0b2dnbGVcbiAgICAgID8gdGhpcy5zdG9yYWdlU2VydmljZS5zZXQoJ2FyZWFzVG9nZ2xlJywgdHJ1ZSwgU3RvcmFnZVNjb3BlLlNFU1NJT04pXG4gICAgICA6IHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KCdhcmVhc1RvZ2dsZScsIGZhbHNlLCBTdG9yYWdlU2NvcGUuU0VTU0lPTik7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGRpc3BsYXkgcGFyYW1ldHJlcyBpbiBjdXJyZW50IHZhbHVlc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGNoZWNrRGlzdGFuY2VBcmVhVG9nZ2xlKCkge1xuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldCgnZGlzdGFuY2VUb2dnbGUnKSA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuZGlzcGxheURpc3RhbmNlID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldCgnbGluZXNUb2dnbGUnKSA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuZGlzcGxheUxpbmVzID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldCgnYXJlYXNUb2dnbGUnKSA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuZGlzcGxheUFyZWFzID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIG9yIGRlYWN0aXZhdGUgdGhlIGN1cnJlbnQgZGlzcGxheSBvZiBkaXN0YW5jZXMgb2YgYXJlYXNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBvbkRpc3BsYXlEaXN0YW5jZSgpIHtcbiAgICBjb25zdCBlbGVtZW50czogSFRNTENvbGxlY3Rpb25PZjxFbGVtZW50PiA9XG4gICAgICB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXG4gICAgICAgICdpZ28tbWFwLXRvb2x0aXAtbWVhc3VyZS1wb2x5Z29uZS1zZWdtZW50cydcbiAgICAgICk7XG4gICAgaWYgKHRoaXMuZGlzcGxheURpc3RhbmNlKSB7XG4gICAgICBBcnJheS5mcm9tKGVsZW1lbnRzKS5tYXAoKHZhbHVlOiBFbGVtZW50KSA9PlxuICAgICAgICB2YWx1ZS5jbGFzc0xpc3QucmVtb3ZlKCdpZ28tbWFwLXRvb2x0aXAtaGlkZGVuJylcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIEFycmF5LmZyb20oZWxlbWVudHMpLm1hcCgodmFsdWU6IEVsZW1lbnQpID0+XG4gICAgICAgIHZhbHVlLmNsYXNzTGlzdC5hZGQoJ2lnby1tYXAtdG9vbHRpcC1oaWRkZW4nKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGUgb3IgZGVhY3RpdmF0ZSB0aGUgY3VycmVudCBkaXNwbGF5IG9mIGRpc3RhbmNlcyBvZiBsaW5lc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uRGlzcGxheUxpbmVzKCkge1xuICAgIGNvbnN0IGVsZW1lbnRzOiBIVE1MQ29sbGVjdGlvbk9mPEVsZW1lbnQ+ID1cbiAgICAgIHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcbiAgICAgICAgJ2lnby1tYXAtdG9vbHRpcC1tZWFzdXJlLWxpbmUtc2VnbWVudHMnXG4gICAgICApO1xuXG4gICAgaWYgKHRoaXMuZGlzcGxheUxpbmVzKSB7XG4gICAgICBBcnJheS5mcm9tKGVsZW1lbnRzKS5tYXAoKHZhbHVlOiBFbGVtZW50KSA9PiB7XG4gICAgICAgIHZhbHVlLmNsYXNzTGlzdC5yZW1vdmUoJ2lnby1tYXAtdG9vbHRpcC1oaWRkZW4nKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBBcnJheS5mcm9tKGVsZW1lbnRzKS5tYXAoKHZhbHVlOiBFbGVtZW50KSA9PiB7XG4gICAgICAgIHZhbHVlLmNsYXNzTGlzdC5hZGQoJ2lnby1tYXAtdG9vbHRpcC1oaWRkZW4nKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZSBvciBkZWFjdGl2YXRlIHRoZSBjdXJyZW50IGRpc3BsYXkgb2YgYXJlYXNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBvbkRpc3BsYXlBcmVhcygpIHtcbiAgICBjb25zdCBlbGVtZW50czogSFRNTENvbGxlY3Rpb25PZjxFbGVtZW50PiA9XG4gICAgICB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lnby1tYXAtdG9vbHRpcC1tZWFzdXJlLWFyZWEnKTtcblxuICAgIGlmICh0aGlzLmRpc3BsYXlBcmVhcykge1xuICAgICAgQXJyYXkuZnJvbShlbGVtZW50cykubWFwKCh2YWx1ZTogRWxlbWVudCkgPT5cbiAgICAgICAgdmFsdWUuY2xhc3NMaXN0LnJlbW92ZSgnaWdvLW1hcC10b29sdGlwLWhpZGRlbicpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBBcnJheS5mcm9tKGVsZW1lbnRzKS5tYXAoKHZhbHVlOiBFbGVtZW50KSA9PlxuICAgICAgICB2YWx1ZS5jbGFzc0xpc3QuYWRkKCdpZ28tbWFwLXRvb2x0aXAtaGlkZGVuJylcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbWVhc3VyZSB0eXBlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgb25MZW5ndGhVbml0Q2hhbmdlKHVuaXQ6IE1lYXN1cmVMZW5ndGhVbml0KSB7XG4gICAgdGhpcy5hY3RpdmVMZW5ndGhVbml0ID0gdW5pdDtcbiAgICB0aGlzLnNhdmVDdXJyZW50VW5pdHMoKTtcbiAgICB0aGlzLnJlZnJlc2hUYWJsZUFuZFRvb2x0aXAoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIG1lYXN1cmUgdHlwZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uQXJlYVVuaXRDaGFuZ2UodW5pdDogTWVhc3VyZUFyZWFVbml0KSB7XG4gICAgdGhpcy5hY3RpdmVBcmVhVW5pdCA9IHVuaXQ7XG4gICAgdGhpcy5zYXZlQ3VycmVudFVuaXRzKCk7XG4gICAgdGhpcy5yZWZyZXNoVGFibGVBbmRUb29sdGlwKCk7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2hUYWJsZUFuZFRvb2x0aXAoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yZS5zdGF0ZVZpZXcuY2xlYXIoKTtcblxuICAgIHRoaXMudXBkYXRlVG9vbHRpcHNPZk9sU291cmNlKHRoaXMuc3RvcmUuc291cmNlLm9sKTtcbiAgICBpZiAodGhpcy5hY3RpdmVPbEdlb21ldHJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudXBkYXRlVG9vbHRpcHNPZk9sR2VvbWV0cnkodGhpcy5hY3RpdmVPbEdlb21ldHJ5KTtcbiAgICB9XG4gIH1cblxuICBvbkNhbGN1bGF0ZUNsaWNrKCkge1xuICAgIGNvbnN0IGZlYXR1cmVzID0gdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZTtcbiAgICBjb25zdCBhcmVhID0gZmVhdHVyZXMucmVkdWNlKFxuICAgICAgKHN1bTogbnVtYmVyLCBsb2NhbEZlYXR1cmU6IEZlYXR1cmVXaXRoTWVhc3VyZSkgPT4ge1xuICAgICAgICByZXR1cm4gc3VtICsgbG9jYWxGZWF0dXJlLnByb3BlcnRpZXMubWVhc3VyZS5hcmVhIHx8IDA7XG4gICAgICB9LFxuICAgICAgMFxuICAgICk7XG4gICAgY29uc3QgbGVuZ3RoID0gZmVhdHVyZXMucmVkdWNlKFxuICAgICAgKHN1bTogbnVtYmVyLCBsb2NhbEZlYXR1cmU6IEZlYXR1cmVXaXRoTWVhc3VyZSkgPT4ge1xuICAgICAgICBpZiAobG9jYWxGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJykge1xuICAgICAgICAgIHJldHVybiBzdW07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1bSArIGxvY2FsRmVhdHVyZS5wcm9wZXJ0aWVzLm1lYXN1cmUubGVuZ3RoIHx8IDA7XG4gICAgICB9LFxuICAgICAgMFxuICAgICk7XG4gICAgY29uc3QgcGVyaW1ldGVyID0gZmVhdHVyZXMucmVkdWNlKFxuICAgICAgKHN1bTogbnVtYmVyLCBsb2NhbEZlYXR1cmU6IEZlYXR1cmVXaXRoTWVhc3VyZSkgPT4ge1xuICAgICAgICBpZiAobG9jYWxGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdMaW5lU3RyaW5nJykge1xuICAgICAgICAgIHJldHVybiBzdW07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1bSArIGxvY2FsRmVhdHVyZS5wcm9wZXJ0aWVzLm1lYXN1cmUubGVuZ3RoIHx8IDA7XG4gICAgICB9LFxuICAgICAgMFxuICAgICk7XG5cbiAgICB0aGlzLm9wZW5EaWFsb2coe1xuICAgICAgYXJlYSxcbiAgICAgIGxlbmd0aCxcbiAgICAgIHBlcmltZXRlclxuICAgIH0pO1xuICB9XG5cbiAgb25EZWxldGVDbGljaygpIHtcbiAgICB0aGlzLnN0b3JlLmRlbGV0ZU1hbnkodGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZSk7XG4gICAgdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZS5mb3JFYWNoKChzZWxlY3RlZEZlYXR1cmUpID0+IHtcbiAgICAgIHRoaXMub2xEcmF3U291cmNlLmdldEZlYXR1cmVzKCkuZm9yRWFjaCgoZHJhd2luZ0xheWVyRmVhdHVyZSkgPT4ge1xuICAgICAgICBjb25zdCBnZW9tZXRyeSA9IGRyYXdpbmdMYXllckZlYXR1cmUuZ2V0R2VvbWV0cnkoKSBhcyBhbnk7XG4gICAgICAgIGlmIChzZWxlY3RlZEZlYXR1cmUucHJvcGVydGllcy5pZCA9PT0gZ2VvbWV0cnkub2xfdWlkKSB7XG4gICAgICAgICAgdGhpcy5vbERyYXdTb3VyY2UucmVtb3ZlRmVhdHVyZShkcmF3aW5nTGF5ZXJGZWF0dXJlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBvbk1vZGlmeUNsaWNrKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRmVhdHVyZXMkLnZhbHVlLmxlbmd0aCAhPT0gMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1vZGlmeUNvbnRyb2wuYWN0aXZlID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmRlYWN0aXZhdGVNb2RpZnlDb250cm9sKCk7XG4gICAgICB0aGlzLnRvZ2dsZURyYXdDb250cm9sKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGxvY2FsRmVhdHVyZSA9IHRoaXMuc2VsZWN0ZWRGZWF0dXJlcyQudmFsdWVbMF07XG4gICAgICBjb25zdCBvbEZlYXR1cmVzID0gdGhpcy5zdG9yZS5sYXllci5vbC5nZXRTb3VyY2UoKS5nZXRGZWF0dXJlcygpO1xuICAgICAgY29uc3Qgb2xGZWF0dXJlID0gb2xGZWF0dXJlcy5maW5kKChfb2xGZWF0dXJlOiBPbEZlYXR1cmUpID0+IHtcbiAgICAgICAgcmV0dXJuIF9vbEZlYXR1cmUuZ2V0KCdpZCcpID09PSBsb2NhbEZlYXR1cmUucHJvcGVydGllcy5pZDtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAob2xGZWF0dXJlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5kZWFjdGl2YXRlRHJhd0NvbnRyb2woKTtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZU1vZGlmeUNvbnRyb2woKTtcblxuICAgICAgICBjb25zdCBvbEdlb21ldHJ5ID0gb2xGZWF0dXJlLmdldEdlb21ldHJ5KCk7XG4gICAgICAgIHRoaXMuY2xlYXJUb29sdGlwc09mT2xHZW9tZXRyeShvbEdlb21ldHJ5IGFzIE9sTGluZVN0cmluZyB8IE9sUG9seWdvbik7XG4gICAgICAgIHRoaXMubW9kaWZ5Q29udHJvbC5zZXRPbEdlb21ldHJ5KG9sR2VvbWV0cnkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb3BlbkRpYWxvZyhkYXRhOiBNZWFzdXJlckRpYWxvZ0RhdGEpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZy5vcGVuKE1lYXN1cmVyRGlhbG9nQ29tcG9uZW50LCB7IGRhdGEgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgbWVhc3VyZSBzdG9yZSBhbmQgc2V0IHVwIHNvbWUgbGlzdGVuZXJzXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBpbml0U3RvcmUoKSB7XG4gICAgY29uc3Qgc3RvcmUgPSB0aGlzLnN0b3JlO1xuXG4gICAgY29uc3QgbGF5ZXIgPSBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgdGl0bGU6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAnaWdvLmdlby5tZWFzdXJlLmxheWVyVGl0bGUnXG4gICAgICApLFxuICAgICAgaXNJZ29JbnRlcm5hbExheWVyOiB0cnVlLFxuICAgICAgaWQ6IGBpZ28tbWVhc3VyZXMtJHt1dWlkKCl9YCxcbiAgICAgIHpJbmRleDogMjAwLFxuICAgICAgc291cmNlOiBuZXcgRmVhdHVyZURhdGFTb3VyY2UoKSxcbiAgICAgIHN0eWxlOiBjcmVhdGVNZWFzdXJlTGF5ZXJTdHlsZSgpLFxuICAgICAgc2hvd0luTGF5ZXJMaXN0OiB0cnVlLFxuICAgICAgZXhwb3J0YWJsZTogdHJ1ZSxcbiAgICAgIGJyb3dzYWJsZTogZmFsc2UsXG4gICAgICB3b3Jrc3BhY2U6IHsgZW5hYmxlZDogZmFsc2UgfVxuICAgIH0pO1xuICAgIHRyeUJpbmRTdG9yZUxheWVyKHN0b3JlLCBsYXllcik7XG4gICAgc3RvcmUubGF5ZXIudmlzaWJsZSA9IHRydWU7XG4gICAgbGF5ZXIudmlzaWJsZSQuc3Vic2NyaWJlKCh2aXNpYmxlKSA9PiB7XG4gICAgICBjb25zdCBlbGVtZW50czogSFRNTENvbGxlY3Rpb25PZjxFbGVtZW50PiA9XG4gICAgICAgIHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaWdvLW1hcC10b29sdGlwLW1lYXN1cmUnKTtcblxuICAgICAgaWYgKHZpc2libGUpIHtcbiAgICAgICAgQXJyYXkuZnJvbShlbGVtZW50cykubWFwKCh2YWx1ZTogRWxlbWVudCkgPT5cbiAgICAgICAgICB2YWx1ZS5jbGFzc0xpc3QucmVtb3ZlKCdpZ28tbWFwLXRvb2x0aXAtbWVhc3VyZS1ieS1kaXNwbGF5JylcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIEFycmF5LmZyb20oZWxlbWVudHMpLm1hcCgodmFsdWU6IEVsZW1lbnQpID0+XG4gICAgICAgICAgdmFsdWUuY2xhc3NMaXN0LmFkZCgnaWdvLW1hcC10b29sdGlwLW1lYXN1cmUtYnktZGlzcGxheScpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0cnlBZGRMb2FkaW5nU3RyYXRlZ3koc3RvcmUpO1xuXG4gICAgdHJ5QWRkU2VsZWN0aW9uU3RyYXRlZ3koXG4gICAgICBzdG9yZSxcbiAgICAgIG5ldyBGZWF0dXJlU3RvcmVTZWxlY3Rpb25TdHJhdGVneSh7XG4gICAgICAgIG1hcDogdGhpcy5tYXAsXG4gICAgICAgIG1hbnk6IHRydWVcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMub25GZWF0dXJlQWRkZWRLZXkgPSBzdG9yZS5zb3VyY2Uub2wub24oXG4gICAgICAnYWRkZmVhdHVyZScsXG4gICAgICAoZXZlbnQ6IE9sVmVjdG9yU291cmNlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgbG9jYWxGZWF0dXJlID0gZXZlbnQuZmVhdHVyZTtcbiAgICAgICAgY29uc3Qgb2xHZW9tZXRyeSA9IGxvY2FsRmVhdHVyZS5nZXRHZW9tZXRyeSgpIGFzIGFueTtcbiAgICAgICAgdGhpcy51cGRhdGVNZWFzdXJlT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnksIGxvY2FsRmVhdHVyZS5nZXQoJ21lYXN1cmUnKSk7XG4gICAgICAgIHRoaXMub25EaXNwbGF5RGlzdGFuY2UoKTtcbiAgICAgICAgdGhpcy5vbkRpc3BsYXlMaW5lcygpO1xuICAgICAgICB0aGlzLm9uRGlzcGxheUFyZWFzKCk7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHRoaXMub25GZWF0dXJlUmVtb3ZlZEtleSA9IHN0b3JlLnNvdXJjZS5vbC5vbihcbiAgICAgICdyZW1vdmVmZWF0dXJlJyxcbiAgICAgIChldmVudDogT2xWZWN0b3JTb3VyY2VFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBvbEdlb21ldHJ5ID0gZXZlbnQuZmVhdHVyZS5nZXRHZW9tZXRyeSgpIGFzIGFueTtcbiAgICAgICAgdGhpcy5jbGVhclRvb2x0aXBzT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnkpO1xuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLnNlbGVjdGVkRmVhdHVyZXMkJCA9IHN0b3JlLnN0YXRlVmlld1xuICAgICAgLm1hbnlCeSQoKHJlY29yZDogRW50aXR5UmVjb3JkPEZlYXR1cmVXaXRoTWVhc3VyZT4pID0+IHtcbiAgICAgICAgcmV0dXJuIHJlY29yZC5zdGF0ZS5zZWxlY3RlZCA9PT0gdHJ1ZTtcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgc2tpcCgxKSAvLyBTa2lwIGluaXRpYWwgZW1pc3Npb25cbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHJlY29yZHM6IEVudGl0eVJlY29yZDxGZWF0dXJlV2l0aE1lYXN1cmU+W10pID0+IHtcbiAgICAgICAgaWYgKHRoaXMubW9kaWZ5Q29udHJvbC5hY3RpdmUgPT09IHRydWUpIHtcbiAgICAgICAgICB0aGlzLmRlYWN0aXZhdGVNb2RpZnlDb250cm9sKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC5uZXh0KHJlY29yZHMubWFwKChyZWNvcmQpID0+IHJlY29yZC5lbnRpdHkpKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zJCQucHVzaChcbiAgICAgIHRoaXMuc3RvcmUuZW50aXRpZXMkLnN1YnNjcmliZSgob2JqZWN0c0V4aXN0cykgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgb2JqZWN0c0V4aXN0cy5maW5kKFxuICAgICAgICAgICAgKG9iamVjdEV4aXN0KSA9PiBvYmplY3RFeGlzdC5nZW9tZXRyeS50eXBlID09PSAnUG9seWdvbidcbiAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuaGFzQXJlYSQubmV4dCh0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmhhc0FyZWEkLm5leHQoZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIG9iamVjdHNFeGlzdHMuZmluZChcbiAgICAgICAgICAgIChvYmplY3RFeGlzdCkgPT4gb2JqZWN0RXhpc3QuZ2VvbWV0cnkudHlwZSA9PT0gJ0xpbmVTdHJpbmcnXG4gICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmhhc0xpbmUkLm5leHQodHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5oYXNMaW5lJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zJCQucHVzaChcbiAgICAgIHRoaXMuc3RvcmUuY291bnQkLnN1YnNjcmliZSgoY250KSA9PiB7XG4gICAgICAgIGNudCA+PSAxXG4gICAgICAgICAgPyAodGhpcy5zdG9yZS5sYXllci5vcHRpb25zLnNob3dJbkxheWVyTGlzdCA9IHRydWUpXG4gICAgICAgICAgOiAodGhpcy5zdG9yZS5sYXllci5vcHRpb25zLnNob3dJbkxheWVyTGlzdCA9IGZhbHNlKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGcmVlemUgYW55IHN0b3JlLCBtZWFuaW5nIHRoZSBsYXllciBpcyByZW1vdmVkLCBzdHJhdGVnaWVzIGFyZSBkZWFjdGl2YXRlZFxuICAgKiBhbmQgc29tZSBsaXN0ZW5lciByZW1vdmVkXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBmcmVlemVTdG9yZSgpIHtcbiAgICBjb25zdCBzdG9yZSA9IHRoaXMuc3RvcmU7XG4gICAgdGhpcy5zZWxlY3RlZEZlYXR1cmVzJCQudW5zdWJzY3JpYmUoKTtcbiAgICB1bkJ5S2V5KHRoaXMub25GZWF0dXJlQWRkZWRLZXkpO1xuICAgIHVuQnlLZXkodGhpcy5vbkZlYXR1cmVSZW1vdmVkS2V5KTtcbiAgICBzdG9yZS5kZWFjdGl2YXRlU3RyYXRlZ3lPZlR5cGUoRmVhdHVyZVN0b3JlTG9hZGluZ1N0cmF0ZWd5KTtcbiAgICBzdG9yZS5kZWFjdGl2YXRlU3RyYXRlZ3lPZlR5cGUoRmVhdHVyZVN0b3JlU2VsZWN0aW9uU3RyYXRlZ3kpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGRyYXcgbGluZSBjb250cm9sXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZURyYXdMaW5lQ29udHJvbCgpIHtcbiAgICB0aGlzLmRyYXdMaW5lQ29udHJvbCA9IG5ldyBEcmF3Q29udHJvbCh7XG4gICAgICBnZW9tZXRyeVR5cGU6ICdMaW5lU3RyaW5nJyxcbiAgICAgIGRyYXdpbmdMYXllclNvdXJjZTogdGhpcy5vbERyYXdTb3VyY2UsXG4gICAgICBpbnRlcmFjdGlvblN0eWxlOiBjcmVhdGVNZWFzdXJlSW50ZXJhY3Rpb25TdHlsZSgpLFxuICAgICAgZHJhd2luZ0xheWVyU3R5bGU6IG5ldyBPbFN0eWxlKHt9KVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGRyYXcgcG9seWdvbiBjb250cm9sXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZURyYXdQb2x5Z29uQ29udHJvbCgpIHtcbiAgICB0aGlzLmRyYXdQb2x5Z29uQ29udHJvbCA9IG5ldyBEcmF3Q29udHJvbCh7XG4gICAgICBnZW9tZXRyeVR5cGU6ICdQb2x5Z29uJyxcbiAgICAgIGRyYXdpbmdMYXllclNvdXJjZTogdGhpcy5vbERyYXdTb3VyY2UsXG4gICAgICBpbnRlcmFjdGlvblN0eWxlOiBjcmVhdGVNZWFzdXJlSW50ZXJhY3Rpb25TdHlsZSgpLFxuICAgICAgZHJhd2luZ0xheWVyU3R5bGU6IG5ldyBPbFN0eWxlKHt9KVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGRyYXcgcG9seWdvbiBjb250cm9sXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZU1vZGlmeUNvbnRyb2woKSB7XG4gICAgdGhpcy5tb2RpZnlDb250cm9sID0gbmV3IE1vZGlmeUNvbnRyb2woe1xuICAgICAgc291cmNlOiB0aGlzLm9sRHJhd1NvdXJjZSxcbiAgICAgIGRyYXdTdHlsZTogY3JlYXRlTWVhc3VyZUludGVyYWN0aW9uU3R5bGUoKSxcbiAgICAgIGxheWVyU3R5bGU6IG5ldyBPbFN0eWxlKHt9KVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIHRoZSByaWdodCBjb250cm9sXG4gICAqL1xuICBwcml2YXRlIHRvZ2dsZURyYXdDb250cm9sKCkge1xuICAgIHRoaXMuZGVhY3RpdmF0ZURyYXdDb250cm9sKCk7XG4gICAgLy8gdGhpcy5kZWFjdGl2YXRlTW9kaWZ5Q29udHJvbCgpO1xuICAgIGlmICh0aGlzLmFjdGl2ZU1lYXN1cmVUeXBlID09PSBNZWFzdXJlVHlwZS5MZW5ndGgpIHtcbiAgICAgIHRoaXMuYWN0aXZhdGVEcmF3Q29udHJvbCh0aGlzLmRyYXdMaW5lQ29udHJvbCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZU1lYXN1cmVUeXBlID09PSBNZWFzdXJlVHlwZS5BcmVhKSB7XG4gICAgICB0aGlzLmFjdGl2YXRlRHJhd0NvbnRyb2wodGhpcy5kcmF3UG9seWdvbkNvbnRyb2wpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZSBhIGdpdmVuIGNvbnRyb2xcbiAgICogQHBhcmFtIGRyYXdDb250cm9sIERyYXcgY29udHJvbFxuICAgKi9cbiAgcHJpdmF0ZSBhY3RpdmF0ZURyYXdDb250cm9sKGRyYXdDb250cm9sOiBEcmF3Q29udHJvbCkge1xuICAgIHRoaXMuZHJhd0NvbnRyb2xJc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgdGhpcy5hY3RpdmVEcmF3Q29udHJvbCA9IGRyYXdDb250cm9sO1xuICAgIHRoaXMuZHJhd1N0YXJ0JCQgPSBkcmF3Q29udHJvbC5zdGFydCQuc3Vic2NyaWJlKFxuICAgICAgKG9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbikgPT4gdGhpcy5vbkRyYXdTdGFydChvbEdlb21ldHJ5KVxuICAgICk7XG4gICAgdGhpcy5kcmF3RW5kJCQgPSBkcmF3Q29udHJvbC5lbmQkLnN1YnNjcmliZShcbiAgICAgIChvbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24pID0+IHRoaXMub25EcmF3RW5kKG9sR2VvbWV0cnkpXG4gICAgKTtcbiAgICB0aGlzLmRyYXdDaGFuZ2VzJCQgPSBkcmF3Q29udHJvbC5jaGFuZ2VzJC5zdWJzY3JpYmUoXG4gICAgICAob2xHZW9tZXRyeTogT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uKSA9PiB0aGlzLm9uRHJhd0NoYW5nZXMob2xHZW9tZXRyeSlcbiAgICApO1xuICAgIHRoaXMuZHJhd0NoYW5nZXMkJCA9IGRyYXdDb250cm9sLmFib3J0JC5zdWJzY3JpYmUoXG4gICAgICAob2xHZW9tZXRyeTogT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uKSA9PiB7XG4gICAgICAgIHRoaXMuY2xlYXJUb29sdGlwc09mT2xHZW9tZXRyeShvbEdlb21ldHJ5KTtcbiAgICAgICAgdGhpcy5jbGVhck1lYXN1cmVzKCk7XG4gICAgICB9XG4gICAgKTtcbiAgICBkcmF3Q29udHJvbC5zZXRPbE1hcCh0aGlzLm1hcC5vbCwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlYWN0aXZhdGUgdGhlIGFjdGl2ZSBkcmF3IGNvbnRyb2xcbiAgICovXG4gIHByaXZhdGUgZGVhY3RpdmF0ZURyYXdDb250cm9sKCkge1xuICAgIGlmICh0aGlzLmFjdGl2ZURyYXdDb250cm9sID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9sRHJhd1NvdXJjZS5jbGVhcigpO1xuICAgIGlmICh0aGlzLmRyYXdTdGFydCQkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZHJhd1N0YXJ0JCQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZHJhd0VuZCQkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZHJhd0VuZCQkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRyYXdDaGFuZ2VzJCQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5kcmF3Q2hhbmdlcyQkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5jbGVhclRvb2x0aXBzT2ZPbFNvdXJjZSh0aGlzLm9sRHJhd1NvdXJjZSk7XG4gICAgaWYgKHRoaXMuYWN0aXZlT2xHZW9tZXRyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNsZWFyVG9vbHRpcHNPZk9sR2VvbWV0cnkodGhpcy5hY3RpdmVPbEdlb21ldHJ5KTtcbiAgICB9XG4gICAgdGhpcy5hY3RpdmVEcmF3Q29udHJvbC5zZXRPbE1hcCh1bmRlZmluZWQpO1xuICAgIHRoaXMuYWN0aXZlRHJhd0NvbnRyb2wgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5hY3RpdmVPbEdlb21ldHJ5ID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRBY3RpdmVNZWFzdXJlVHlwZShtZWFzdXJlVHlwZTogTWVhc3VyZVR5cGUpIHtcbiAgICB0aGlzLl9hY3RpdmVNZWFzdXJlVHlwZSA9IG1lYXN1cmVUeXBlO1xuICAgIHRoaXMuY2xlYXJNZWFzdXJlcygpO1xuICAgIHRoaXMudG9nZ2xlRHJhd0NvbnRyb2woKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgZHJhdyBzb3VyY2UgYW5kIHRyYWNrIHRoZSBnZW9tZXRyeSBiZWluZyBkcmF3blxuICAgKiBAcGFyYW0gb2xHZW9tZXRyeSBPbCBsaW5lc3RyaW5nIG9yIHBvbHlnb25cbiAgICovXG4gIHByaXZhdGUgb25EcmF3U3RhcnQob2xHZW9tZXRyeTogT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uKSB7XG4gICAgdGhpcy5hY3RpdmVPbEdlb21ldHJ5ID0gb2xHZW9tZXRyeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgZHJhdyBzb3VyY2UgYW5kIHRyYWNrIHRoZSBnZW9tZXRyeSBiZWluZyBkcmF3XG4gICAqIEBwYXJhbSBvbEdlb21ldHJ5IE9sIGxpbmVzdHJpbmcgb3IgcG9seWdvblxuICAgKi9cbiAgcHJpdmF0ZSBvbkRyYXdFbmQob2xHZW9tZXRyeTogT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uKSB7XG4gICAgdGhpcy5hY3RpdmVPbEdlb21ldHJ5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZmluYWxpemVNZWFzdXJlT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnkpO1xuICAgIHRoaXMuYWRkRmVhdHVyZVRvU3RvcmUob2xHZW9tZXRyeSk7XG4gICAgdGhpcy5jbGVhclRvb2x0aXBzT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnkpO1xuICAgIHRoaXMub2xEcmF3U291cmNlLmNsZWFyKHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBtZWFzdXJlcyBvYnNlcnZhYmxlcyBhbmQgbWFwIHRvb2x0aXBzXG4gICAqIEBwYXJhbSBvbEdlb21ldHJ5IE9sIGxpbmVzdHJpbmcgb3IgcG9seWdvblxuICAgKi9cbiAgcHJpdmF0ZSBvbkRyYXdDaGFuZ2VzKG9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbikge1xuICAgIGNvbnN0IG1lYXN1cmUgPSBtZWFzdXJlT2xHZW9tZXRyeShvbEdlb21ldHJ5LCB0aGlzLnByb2plY3Rpb24pO1xuICAgIHRoaXMudXBkYXRlTWVhc3VyZU9mT2xHZW9tZXRyeShcbiAgICAgIG9sR2VvbWV0cnksXG4gICAgICBPYmplY3QuYXNzaWduKHt9LCBtZWFzdXJlLCB7XG4gICAgICAgIGFyZWE6IHVuZGVmaW5lZCAvLyBXZSBkb24ndCB3YW50IHRvIGRpc3BsYXkgYW4gYXJlYSB0b29sdGlwIHdoaWxlIGRyYXdpbmcuXG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5tZWFzdXJlJC5uZXh0KG1lYXN1cmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIGEgZ2l2ZW4gY29udHJvbFxuICAgKiBAcGFyYW0gbW9kaWZ5Q29udHJvbCBNb2RpZnkgY29udHJvbFxuICAgKi9cbiAgcHJpdmF0ZSBhY3RpdmF0ZU1vZGlmeUNvbnRyb2woKSB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5zdG9yZS5nZXRTdHJhdGVneU9mVHlwZShcbiAgICAgIEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5XG4gICAgKSBhcyBGZWF0dXJlU3RvcmVTZWxlY3Rpb25TdHJhdGVneTtcbiAgICBzZWxlY3Rpb24uZGVhY3RpdmF0ZSgpO1xuICAgIHNlbGVjdGlvbi5jbGVhcigpO1xuXG4gICAgdGhpcy5tb2RpZnlTdGFydCQkID0gdGhpcy5tb2RpZnlDb250cm9sLnN0YXJ0JC5zdWJzY3JpYmUoXG4gICAgICAob2xHZW9tZXRyeTogT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uKSA9PiB0aGlzLm9uTW9kaWZ5U3RhcnQob2xHZW9tZXRyeSlcbiAgICApO1xuICAgIHRoaXMubW9kaWZ5RW5kJCQgPSB0aGlzLm1vZGlmeUNvbnRyb2wuZW5kJC5zdWJzY3JpYmUoXG4gICAgICAob2xHZW9tZXRyeTogT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uKSA9PiB0aGlzLm9uTW9kaWZ5RW5kKG9sR2VvbWV0cnkpXG4gICAgKTtcbiAgICB0aGlzLm1vZGlmeUNoYW5nZXMkJCA9IHRoaXMubW9kaWZ5Q29udHJvbC5jaGFuZ2VzJC5zdWJzY3JpYmUoXG4gICAgICAob2xHZW9tZXRyeTogT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uKSA9PiB0aGlzLm9uTW9kaWZ5Q2hhbmdlcyhvbEdlb21ldHJ5KVxuICAgICk7XG4gICAgdGhpcy5tb2RpZnlDb250cm9sLnNldE9sTWFwKHRoaXMubWFwLm9sKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWFjdGl2YXRlIHRoZSBhY3RpdmUgbW9kaWZ5IGNvbnRyb2xcbiAgICovXG4gIHByaXZhdGUgZGVhY3RpdmF0ZU1vZGlmeUNvbnRyb2woKSB7XG4gICAgaWYgKHRoaXMubW9kaWZ5U3RhcnQkJCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLm1vZGlmeVN0YXJ0JCQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubW9kaWZ5RW5kJCQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5tb2RpZnlFbmQkJC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5tb2RpZnlDaGFuZ2VzJCQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5tb2RpZnlDaGFuZ2VzJCQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hY3RpdmVPbEdlb21ldHJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmVhdHVyZXMkLnZhbHVlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBjb25zdCBsb2NhbEZlYXR1cmUgPSB0aGlzLnNlbGVjdGVkRmVhdHVyZXMkLnZhbHVlWzBdO1xuICAgICAgICB0aGlzLmFkZEZlYXR1cmVUb1N0b3JlKHRoaXMuYWN0aXZlT2xHZW9tZXRyeSwgbG9jYWxGZWF0dXJlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZmluYWxpemVNZWFzdXJlT2ZPbEdlb21ldHJ5KHRoaXMuYWN0aXZlT2xHZW9tZXRyeSk7XG4gICAgfVxuXG4gICAgdGhpcy5vbERyYXdTb3VyY2UuY2xlYXIoKTtcblxuICAgIHRoaXMuc3RvcmUuYWN0aXZhdGVTdHJhdGVneU9mVHlwZShGZWF0dXJlU3RvcmVTZWxlY3Rpb25TdHJhdGVneSk7XG5cbiAgICB0aGlzLmFjdGl2ZU9sR2VvbWV0cnkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5tb2RpZnlDb250cm9sLnNldE9sTWFwKHVuZGVmaW5lZCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgdGhlIGRyYXcgc291cmNlIGFuZCB0cmFjayB0aGUgZ2VvbWV0cnkgYmVpbmcgZHJhd25cbiAgICogQHBhcmFtIG9sR2VvbWV0cnkgT2wgbGluZXN0cmluZyBvciBwb2x5Z29uXG4gICAqL1xuICBwcml2YXRlIG9uTW9kaWZ5U3RhcnQob2xHZW9tZXRyeTogT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uKSB7XG4gICAgdGhpcy5vbkRyYXdTdGFydChvbEdlb21ldHJ5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgbWVhc3VyZXMgb2JzZXJ2YWJsZXMgYW5kIG1hcCB0b29sdGlwc1xuICAgKiBAcGFyYW0gb2xHZW9tZXRyeSBPbCBsaW5lc3RyaW5nIG9yIHBvbHlnb25cbiAgICovXG4gIHByaXZhdGUgb25Nb2RpZnlDaGFuZ2VzKG9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbikge1xuICAgIHRoaXMub25EcmF3Q2hhbmdlcyhvbEdlb21ldHJ5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgZHJhdyBzb3VyY2UgYW5kIHRyYWNrIHRoZSBnZW9tZXRyeSBiZWluZyBkcmF3XG4gICAqIEBwYXJhbSBvbEdlb21ldHJ5IE9sIGxpbmVzdHJpbmcgb3IgcG9seWdvblxuICAgKi9cbiAgcHJpdmF0ZSBvbk1vZGlmeUVuZChvbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24pIHtcbiAgICB0aGlzLmZpbmFsaXplTWVhc3VyZU9mT2xHZW9tZXRyeShvbEdlb21ldHJ5KTtcbiAgfVxuXG4gIHByaXZhdGUgZmluYWxpemVNZWFzdXJlT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbikge1xuICAgIGNvbnN0IG1lYXN1cmUgPSBtZWFzdXJlT2xHZW9tZXRyeShvbEdlb21ldHJ5LCB0aGlzLnByb2plY3Rpb24pO1xuICAgIHRoaXMudXBkYXRlTWVhc3VyZU9mT2xHZW9tZXRyeShvbEdlb21ldHJ5LCBtZWFzdXJlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgbWVhc3VyZXMgb2JzZXJ2YWJsZXNcbiAgICogQHBhcmFtIG9sR2VvbWV0cnkgT2wgbGluZXN0cmluZyBvciBwb2x5Z29uXG4gICAqIEBwYXJhbSBtZWFzdXJlIE1lYXN1cmVcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlTWVhc3VyZU9mT2xHZW9tZXRyeShcbiAgICBvbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24sXG4gICAgbWVhc3VyZTogTWVhc3VyZVxuICApIHtcbiAgICBvbEdlb21ldHJ5LnNldFByb3BlcnRpZXMoeyBfbWVhc3VyZTogbWVhc3VyZSB9LCB0cnVlKTtcbiAgICB0aGlzLnVwZGF0ZVRvb2x0aXBzT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHRoZSBtZWFzdXJlcyBvYnNlcnZhYmxlc1xuICAgKi9cbiAgcHJpdmF0ZSBjbGVhck1lYXN1cmVzKCkge1xuICAgIHRoaXMubWVhc3VyZSQubmV4dCh7fSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgZmVhdHVyZSB3aXRoIG1lYXN1cmVzIHRvIHRoZSBzdG9yZS4gVGhlIGxvYWRpbmcgc3RyYWdlZ3kgb2YgdGhlIHN0b3JlXG4gICAqIHdpbGwgdHJpZ2dlciBhbmQgYWRkIHRoZSBmZWF0dXJlIHRvIHRoZSBtYXAuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBhZGRGZWF0dXJlVG9TdG9yZShvbEdlb21ldHJ5LCBsb2NhbEZlYXR1cmU/OiBGZWF0dXJlV2l0aE1lYXN1cmUpIHtcbiAgICBjb25zdCBmZWF0dXJlSWQgPSBsb2NhbEZlYXR1cmVcbiAgICAgID8gbG9jYWxGZWF0dXJlLnByb3BlcnRpZXMuaWRcbiAgICAgIDogb2xHZW9tZXRyeS5vbF91aWQ7XG4gICAgY29uc3QgcHJvamVjdGlvbiA9IHRoaXMubWFwLm9sLmdldFZpZXcoKS5nZXRQcm9qZWN0aW9uKCk7XG4gICAgY29uc3QgZ2VvbWV0cnkgPSBuZXcgT2xHZW9KU09OKCkud3JpdGVHZW9tZXRyeU9iamVjdChvbEdlb21ldHJ5LCB7XG4gICAgICBmZWF0dXJlUHJvamVjdGlvbjogcHJvamVjdGlvbixcbiAgICAgIGRhdGFQcm9qZWN0aW9uOiBwcm9qZWN0aW9uXG4gICAgfSkgYXMgYW55O1xuICAgIHRoaXMuc3RvcmUudXBkYXRlKHtcbiAgICAgIHR5cGU6IEZFQVRVUkUsXG4gICAgICBnZW9tZXRyeSxcbiAgICAgIHByb2plY3Rpb246IHByb2plY3Rpb24uZ2V0Q29kZSgpLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBpZDogZmVhdHVyZUlkLFxuICAgICAgICBtZWFzdXJlOiBvbEdlb21ldHJ5LmdldCgnX21lYXN1cmUnKVxuICAgICAgfSxcbiAgICAgIG1ldGE6IHtcbiAgICAgICAgaWQ6IGZlYXR1cmVJZFxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBhbGwgdGhlIHRvb2x0aXBzIG9mIGFuIE9MIGdlb21ldHJ5XG4gICAqIEBwYXJhbSBvbEdlb21ldHJ5IE9MIEdlb21ldHJ5XG4gICAqIEBwYXJhbSBsZW5ndGhzIExlbmd0aHMgb2YgdGhlIE9MIGdlb21ldHJ5J3Mgc2VnbWVudHNcbiAgICogQHBhcmFtIG1lYXN1cmVVbml0IERpc3BsYXkgdG9vbHRpcCBtZWFzdXJlIGluIHRob3NlIHVuaXRzXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVRvb2x0aXBzT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbikge1xuICAgIGNvbnN0IG1lYXN1cmUgPSBvbEdlb21ldHJ5LmdldCgnX21lYXN1cmUnKTtcbiAgICBjb25zdCBsZW5ndGhzID0gbWVhc3VyZS5sZW5ndGhzO1xuICAgIGNvbnN0IGFyZWEgPSBtZWFzdXJlLmFyZWE7XG5cbiAgICBjb25zdCBvbE1pZHBvaW50c1Rvb2x0aXBzID0gdXBkYXRlT2xUb29sdGlwc0F0TWlkcG9pbnRzKG9sR2VvbWV0cnkpO1xuICAgIGlmIChsZW5ndGhzLmxlbmd0aCA9PT0gb2xNaWRwb2ludHNUb29sdGlwcy5sZW5ndGgpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2xNaWRwb2ludHNUb29sdGlwcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBsZW5ndGggPSBsZW5ndGhzW2ldO1xuICAgICAgICBpZiAobGVuZ3RoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZU9sVG9vbHRpcChcbiAgICAgICAgICAgIG9sTWlkcG9pbnRzVG9vbHRpcHNbaV0sXG4gICAgICAgICAgICBtZXRlcnNUb1VuaXQobGVuZ3RoLCB0aGlzLmFjdGl2ZUxlbmd0aFVuaXQpLFxuICAgICAgICAgICAgdGhpcy5hY3RpdmVMZW5ndGhVbml0LFxuICAgICAgICAgICAgTWVhc3VyZVR5cGUuTGVuZ3RoXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhcmVhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudXBkYXRlT2xUb29sdGlwKFxuICAgICAgICB1cGRhdGVPbFRvb2x0aXBBdENlbnRlcihvbEdlb21ldHJ5KSxcbiAgICAgICAgc3F1YXJlTWV0ZXJzVG9Vbml0KGFyZWEsIHRoaXMuYWN0aXZlQXJlYVVuaXQpLFxuICAgICAgICB0aGlzLmFjdGl2ZUFyZWFVbml0LFxuICAgICAgICBNZWFzdXJlVHlwZS5BcmVhXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBtYXAgdG9vbHRpcHMgb2YgYSBnZW9lbXRyeVxuICAgKi9cbiAgcHJpdmF0ZSBzaG93VG9vbHRpcHNPZk9sR2VvbWV0cnkob2xHZW9tZXRyeTogT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uKSB7XG4gICAgZ2V0VG9vbHRpcHNPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSkuZm9yRWFjaChcbiAgICAgIChvbFRvb2x0aXA6IE9sT3ZlcmxheSB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5zaG91bGRTaG93VG9vbHRpcChvbFRvb2x0aXApKSB7XG4gICAgICAgICAgdGhpcy5tYXAub2wuYWRkT3ZlcmxheShvbFRvb2x0aXApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgdG9vbHRpcHMgb2YgYW4gT0wgZ2VvbWV0cnlzXG4gICAqIEBwYXJhbSBvbEdlb21ldHJ5IE9MIGdlb21ldHJ5IHdpdGggdG9vbHRpcHNcbiAgICovXG4gIHByaXZhdGUgY2xlYXJUb29sdGlwc09mT2xHZW9tZXRyeShvbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24pIHtcbiAgICBnZXRUb29sdGlwc09mT2xHZW9tZXRyeShvbEdlb21ldHJ5KS5mb3JFYWNoKFxuICAgICAgKG9sVG9vbHRpcDogT2xPdmVybGF5IHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgIGlmIChvbFRvb2x0aXAgIT09IHVuZGVmaW5lZCAmJiBvbFRvb2x0aXAuZ2V0TWFwKCkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMubWFwLm9sLnJlbW92ZU92ZXJsYXkob2xUb29sdGlwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU2hvdyB0aGUgbWFwIHRvb2x0aXBzIG9mIGFsbCB0aGUgZ2VvbWV0cmllcyBvZiBhIHNvdXJjZVxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVUb29sdGlwc09mT2xTb3VyY2Uob2xTb3VyY2U6IE9sVmVjdG9yU291cmNlKSB7XG4gICAgb2xTb3VyY2UuZm9yRWFjaEZlYXR1cmUoKG9sRmVhdHVyZTogT2xGZWF0dXJlKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVRvb2x0aXBzT2ZPbEdlb21ldHJ5KG9sRmVhdHVyZS5nZXRHZW9tZXRyeSgpIGFzIGFueSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2hvdyB0aGUgbWFwIHRvb2x0aXBzIG9mIGFsbCB0aGUgZ2VvbWV0cmllcyBvZiBhIHNvdXJjZVxuICAgKi9cbiAgcHJpdmF0ZSBzaG93VG9vbHRpcHNPZk9sU291cmNlKG9sU291cmNlOiBPbFZlY3RvclNvdXJjZSkge1xuICAgIG9sU291cmNlLmZvckVhY2hGZWF0dXJlKChvbEZlYXR1cmU6IE9sRmVhdHVyZSkgPT4ge1xuICAgICAgdGhpcy5zaG93VG9vbHRpcHNPZk9sR2VvbWV0cnkob2xGZWF0dXJlLmdldEdlb21ldHJ5KCkgYXMgYW55KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgbWFwIHRvb2x0aXBzXG4gICAqIEBwYXJhbSBvbERyYXdTb3VyY2UgT0wgdmVjdG9yIHNvdXJjZVxuICAgKi9cbiAgcHJpdmF0ZSBjbGVhclRvb2x0aXBzT2ZPbFNvdXJjZShvbFNvdXJjZTogT2xWZWN0b3JTb3VyY2UpIHtcbiAgICBvbFNvdXJjZS5mb3JFYWNoRmVhdHVyZSgob2xGZWF0dXJlOiBPbEZlYXR1cmUpID0+IHtcbiAgICAgIGNvbnN0IG9sR2VvbWV0cnkgPSBvbEZlYXR1cmUuZ2V0R2VvbWV0cnkoKTtcbiAgICAgIGlmIChvbEdlb21ldHJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5jbGVhclRvb2x0aXBzT2ZPbEdlb21ldHJ5KG9sRmVhdHVyZS5nZXRHZW9tZXRyeSgpIGFzIGFueSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGFuIE9MIHRvb2x0aXAgcHJvcGVydGllcyBhbmQgaW5uZXIgSFRNTCBhbmQgYWRkIGl0IHRvIHRoZSBtYXAgaWYgcG9zc2libGVcbiAgICogQHBhcmFtIG9sVG9vbHRpcCBPTCB0b29sdGlwXG4gICAqIEBwYXJhbSBtZWFzdXJlIFRoZSBtZWFzdXJlIHZhbGV1IHRpIGRpc3BsYXlcbiAgICogQHBhcmFtIG1lYXN1cmVVbml0IERpc3BsYXkgdG9vbHRpcCBtZWFzdXJlIGluIHRob3NlIHVuaXRzXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZU9sVG9vbHRpcChcbiAgICBvbFRvb2x0aXA6IE9sT3ZlcmxheSxcbiAgICBtZWFzdXJlOiBudW1iZXIsXG4gICAgdW5pdDogTWVhc3VyZUFyZWFVbml0IHwgTWVhc3VyZUxlbmd0aFVuaXQsXG4gICAgdHlwZTogTWVhc3VyZVR5cGVcbiAgKSB7XG4gICAgb2xUb29sdGlwLnNldFByb3BlcnRpZXMoXG4gICAgICB7IF9tZWFzdXJlOiBtZWFzdXJlLCBfdW5pdDogdW5pdCwgX3R5cGU6IHR5cGUgfSxcbiAgICAgIHRydWVcbiAgICApO1xuICAgIG9sVG9vbHRpcC5nZXRFbGVtZW50KCkuaW5uZXJIVE1MID0gdGhpcy5jb21wdXRlVG9vbHRpcElubmVySFRNTChvbFRvb2x0aXApO1xuICAgIGlmICh0aGlzLnNob3VsZFNob3dUb29sdGlwKG9sVG9vbHRpcCkpIHtcbiAgICAgIHRoaXMubWFwLm9sLmFkZE92ZXJsYXkob2xUb29sdGlwKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZSBhIHRvb2x0aXAncyBjb250ZW50XG4gICAqIEBwYXJhbSBvbFRvb2x0aXAgT0wgb3ZlcmxheVxuICAgKiBAcmV0dXJucyBJbm5lciBIVE1MXG4gICAqL1xuICBwcml2YXRlIGNvbXB1dGVUb29sdGlwSW5uZXJIVE1MKG9sVG9vbHRpcDogT2xPdmVybGF5KTogc3RyaW5nIHtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gb2xUb29sdGlwLmdldFByb3BlcnRpZXMoKSBhcyBhbnk7XG4gICAgcmV0dXJuIGZvcm1hdE1lYXN1cmUoXG4gICAgICBwcm9wZXJ0aWVzLl9tZWFzdXJlLFxuICAgICAge1xuICAgICAgICBkZWNpbWFsOiAxLFxuICAgICAgICB1bml0OiBwcm9wZXJ0aWVzLl91bml0LFxuICAgICAgICB1bml0QWJicjogdHJ1ZSxcbiAgICAgICAgbG9jYWxlOiAnZnInXG4gICAgICB9LFxuICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2VcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYSB0b29sdGlwIHNob3VsZCBiZSBzaG93bmVkIGJhc2VkIG9uIHRoZSBsZW5ndGhcbiAgICogb2YgdGhlIHNlZ21lbnQgaXQgaXMgYm91bmQgdG8uXG4gICAqIEBwYXJhbSBvbFRvb2x0aXAgT0wgb3ZlcmxheVxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB0b29sdGlwIHNob3VsZCBiZSBzaG93blxuICAgKi9cbiAgcHJpdmF0ZSBzaG91bGRTaG93VG9vbHRpcChvbFRvb2x0aXA6IE9sT3ZlcmxheSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnNob3dUb29sdGlwcyA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gb2xUb29sdGlwLmdldFByb3BlcnRpZXMoKSBhcyBhbnk7XG4gICAgY29uc3QgbWVhc3VyZSA9IHByb3BlcnRpZXMuX21lYXN1cmU7XG4gICAgaWYgKG1lYXN1cmUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChwcm9wZXJ0aWVzLl91bml0ID09PSBNZWFzdXJlVHlwZS5MZW5ndGgpIHtcbiAgICAgIGNvbnN0IG1pblNlZ21lbnRMZW5ndGggPVxuICAgICAgICBtZXRlcnNUb1VuaXQodGhpcy5taW5TZWdtZW50TGVuZ3RoLCBwcm9wZXJ0aWVzLl91bml0KSB8fCAwO1xuICAgICAgcmV0dXJuIG1lYXN1cmUgPiBNYXRoLm1heChtaW5TZWdtZW50TGVuZ3RoLCAwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc2F2ZUN1cnJlbnRVbml0cygpIHtcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldChcbiAgICAgICdkaXN0YW5jZVVuaXQnLFxuICAgICAgdGhpcy5hY3RpdmVMZW5ndGhVbml0LFxuICAgICAgU3RvcmFnZVNjb3BlLlNFU1NJT05cbiAgICApO1xuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KFxuICAgICAgJ2FyZWFVbml0JyxcbiAgICAgIHRoaXMuYWN0aXZlQXJlYVVuaXQsXG4gICAgICBTdG9yYWdlU2NvcGUuU0VTU0lPTlxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFNhdmVkVW5pdHMoKSB7XG4gICAgY29uc3QgZGlzdGFuY2VVbml0ID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXQoXG4gICAgICAnZGlzdGFuY2VVbml0J1xuICAgICkgYXMgTWVhc3VyZUxlbmd0aFVuaXQ7XG4gICAgY29uc3QgYXJlYVVuaXQgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldCgnYXJlYVVuaXQnKSBhcyBNZWFzdXJlQXJlYVVuaXQ7XG5cbiAgICB0aGlzLmFjdGl2ZUxlbmd0aFVuaXQgPSBkaXN0YW5jZVVuaXQgPyBkaXN0YW5jZVVuaXQgOiB0aGlzLmFjdGl2ZUxlbmd0aFVuaXQ7XG4gICAgdGhpcy5hY3RpdmVBcmVhVW5pdCA9IGFyZWFVbml0ID8gYXJlYVVuaXQgOiB0aGlzLmFjdGl2ZUFyZWFVbml0O1xuICB9XG59XG4iLCI8ZGl2PlxuICA8ZGl2IGNsYXNzPVwibWVhc3VyZS10eXBlLXRvZ2dsZSBtYXQtdHlwb2dyYXBoeVwiPlxuICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFxuICAgICAgW3ZhbHVlXT1cImFjdGl2ZU1lYXN1cmVUeXBlXCJcbiAgICAgIChjaGFuZ2UpPVwib25NZWFzdXJlVHlwZUNoYW5nZSgkZXZlbnQudmFsdWUpXCJcbiAgICA+XG4gICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgW3ZhbHVlXT1cIm1lYXN1cmVUeXBlLkxlbmd0aFwiPlxuICAgICAgICB7eyAnaWdvLmdlby5tZWFzdXJlLicgKyBtZWFzdXJlVHlwZS5MZW5ndGggfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgW3ZhbHVlXT1cIm1lYXN1cmVUeXBlLkFyZWFcIj5cbiAgICAgICAge3sgJ2lnby5nZW8ubWVhc3VyZS4nICsgbWVhc3VyZVR5cGUuQXJlYSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibWVhc3VyZS1vcHRpb25zIG1hdC10eXBvZ3JhcGh5XCI+XG4gICAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICAgIFtkaXNhYmxlZF09XCJkcmF3Q29udHJvbElzRGlzYWJsZWRcIlxuICAgICAgW2NoZWNrZWRdPVwiZHJhd0NvbnRyb2xJc0FjdGl2ZVwiXG4gICAgICBbbGFiZWxQb3NpdGlvbl09XCInYmVmb3JlJ1wiXG4gICAgICAoY2hhbmdlKT1cIm9uVG9nZ2xlRHJhd0NvbnRyb2woJGV2ZW50LmNoZWNrZWQpXCJcbiAgICA+XG4gICAgICB7eyAnaWdvLmdlby5tZWFzdXJlLnRvZ2dsZUFjdGl2ZScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L21hdC1zbGlkZS10b2dnbGU+XG5cbiAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCJoYXNMaW5lJCB8IGFzeW5jXCI+PC9tYXQtZGl2aWRlcj5cblxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlXG4gICAgICAqbmdJZj1cImhhc0xpbmUkIHwgYXN5bmNcIlxuICAgICAgW2NoZWNrZWRdPVwiZGlzcGxheUxpbmVzXCJcbiAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCJcbiAgICAgIChjaGFuZ2UpPVwib25Ub2dnbGVEaXNwbGF5TGluZXMoJGV2ZW50LmNoZWNrZWQpXCJcbiAgICA+XG4gICAgICB7eyAnaWdvLmdlby5tZWFzdXJlLnRvZ2dsZURpc3BsYXlMaW5lcycgfCB0cmFuc2xhdGUgfX1cbiAgICA8L21hdC1zbGlkZS10b2dnbGU+XG5cbiAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCIoaGFzTGluZSQgfCBhc3luYykgfHwgKGhhc0FyZWEkIHwgYXN5bmMpXCI+PC9tYXQtZGl2aWRlcj5cblxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlXG4gICAgICAqbmdJZj1cImhhc0FyZWEkIHwgYXN5bmNcIlxuICAgICAgW2NoZWNrZWRdPVwiZGlzcGxheURpc3RhbmNlXCJcbiAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCJcbiAgICAgIChjaGFuZ2UpPVwib25Ub2dnbGVEaXNwbGF5RGlzdGFuY2UoJGV2ZW50LmNoZWNrZWQpXCJcbiAgICA+XG4gICAgICB7eyAnaWdvLmdlby5tZWFzdXJlLnRvZ2dsZURpc3BsYXlEaXN0YW5jZScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L21hdC1zbGlkZS10b2dnbGU+XG5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZVxuICAgICAgKm5nSWY9XCJoYXNBcmVhJCB8IGFzeW5jXCJcbiAgICAgIFtjaGVja2VkXT1cImRpc3BsYXlBcmVhc1wiXG4gICAgICBbbGFiZWxQb3NpdGlvbl09XCInYmVmb3JlJ1wiXG4gICAgICAoY2hhbmdlKT1cIm9uVG9nZ2xlRGlzcGxheUFyZWFzKCRldmVudC5jaGVja2VkKVwiXG4gICAgPlxuICAgICAge3sgJ2lnby5nZW8ubWVhc3VyZS50b2dnbGVEaXNwbGF5QXJlYXMnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuXG4gICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwiaGFzQXJlYSQgfCBhc3luY1wiPjwvbWF0LWRpdmlkZXI+XG5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZVxuICAgICAgW2NoZWNrZWRdPVwibWVhc3VyZVVuaXRzQXV0b1wiXG4gICAgICBbbGFiZWxQb3NpdGlvbl09XCInYmVmb3JlJ1wiXG4gICAgICAoY2hhbmdlKT1cIm9uVG9nZ2xlTWVhc3VyZVVuaXRzQXV0bygkZXZlbnQuY2hlY2tlZClcIlxuICAgID5cbiAgICAgIHt7ICdpZ28uZ2VvLm1lYXN1cmUudG9nZ2xlQXV0b1VuaXRzJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lYXN1cmUkIHwgYXN5bmMgYXMgbWVhc3VyZVwiPlxuICAgIDxpZ28tbWVhc3VyZXItaXRlbVxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgYWN0aXZlTWVhc3VyZVR5cGUgPT09IG1lYXN1cmVUeXBlLkxlbmd0aCB8fFxuICAgICAgICBhY3RpdmVNZWFzdXJlVHlwZSA9PT0gbWVhc3VyZVR5cGUuQXJlYVxuICAgICAgXCJcbiAgICAgIFttZWFzdXJlVHlwZV09XCJtZWFzdXJlVHlwZS5MZW5ndGhcIlxuICAgICAgW21lYXN1cmVVbml0XT1cImFjdGl2ZUxlbmd0aFVuaXRcIlxuICAgICAgW21lYXN1cmVdPVwibWVhc3VyZS5sZW5ndGhcIlxuICAgICAgW2F1dG9dPVwibWVhc3VyZVVuaXRzQXV0b1wiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgIChhY3RpdmVNZWFzdXJlVHlwZSA9PT0gbWVhc3VyZVR5cGUuQXJlYVxuICAgICAgICAgID8gJ2lnby5nZW8ubWVhc3VyZS5wZXJpbWV0ZXInXG4gICAgICAgICAgOiAnaWdvLmdlby5tZWFzdXJlLmxlbmd0aCdcbiAgICAgICAgKSB8IHRyYW5zbGF0ZVxuICAgICAgXCJcbiAgICAgIChtZWFzdXJlVW5pdENoYW5nZSk9XCJvbkxlbmd0aFVuaXRDaGFuZ2UoJGFueSgkZXZlbnQpKVwiXG4gICAgPlxuICAgIDwvaWdvLW1lYXN1cmVyLWl0ZW0+XG5cbiAgICA8aWdvLW1lYXN1cmVyLWl0ZW1cbiAgICAgICpuZ0lmPVwiYWN0aXZlTWVhc3VyZVR5cGUgPT09IG1lYXN1cmVUeXBlLkFyZWFcIlxuICAgICAgW21lYXN1cmVUeXBlXT1cIm1lYXN1cmVUeXBlLkFyZWFcIlxuICAgICAgW21lYXN1cmVVbml0XT1cImFjdGl2ZUFyZWFVbml0XCJcbiAgICAgIFttZWFzdXJlXT1cIm1lYXN1cmUuYXJlYVwiXG4gICAgICBbYXV0b109XCJtZWFzdXJlVW5pdHNBdXRvXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCInaWdvLmdlby5tZWFzdXJlLmFyZWEnIHwgdHJhbnNsYXRlXCJcbiAgICAgIChtZWFzdXJlVW5pdENoYW5nZSk9XCJvbkFyZWFVbml0Q2hhbmdlKCRhbnkoJGV2ZW50KSlcIlxuICAgID5cbiAgICA8L2lnby1tZWFzdXJlci1pdGVtPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bWF0LWRpdmlkZXIgKm5nSWY9XCIoaGFzTGluZSQgfCBhc3luYykgfHwgKGhhc0FyZWEkIHwgYXN5bmMpXCI+PC9tYXQtZGl2aWRlcj5cblxuICA8ZGl2IGNsYXNzPVwibWVhc3VyZS1zdG9yZS1idXR0b25zXCI+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCIoaGFzTGluZSQgfCBhc3luYykgfHwgKGhhc0FyZWEkIHwgYXN5bmMpXCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8ubWVhc3VyZS5hY3Rpb25iYXIuY2FsY3VsYXRlLnRvb2x0aXAnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtkaXNhYmxlZF09XCIoc2VsZWN0ZWRGZWF0dXJlcyQgfCBhc3luYykubGVuZ3RoID09PSAwXCJcbiAgICAgIGNvbG9yPVwiYWNjZW50XCJcbiAgICAgIChjbGljayk9XCJvbkNhbGN1bGF0ZUNsaWNrKClcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbj5jYWxjdWxhdGU8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCIoaGFzTGluZSQgfCBhc3luYykgfHwgKGhhc0FyZWEkIHwgYXN5bmMpXCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8ubWVhc3VyZS5hY3Rpb25iYXIuZGVsZXRlLnRvb2x0aXAnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtkaXNhYmxlZF09XCIoc2VsZWN0ZWRGZWF0dXJlcyQgfCBhc3luYykubGVuZ3RoID09PSAwXCJcbiAgICAgIGNvbG9yPVwid2FyblwiXG4gICAgICAoY2xpY2spPVwib25EZWxldGVDbGljaygpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGlnby1lbnRpdHktdGFibGVcbiAgICAjdGFibGVcbiAgICBjbGFzcz1cInRhYmxlLWNvbXBhY3RcIlxuICAgIFtzdG9yZV09XCJzdG9yZVwiXG4gICAgW3RlbXBsYXRlXT1cInRhYmxlVGVtcGxhdGVcIlxuICA+XG4gIDwvaWdvLWVudGl0eS10YWJsZT5cbjwvZGl2PlxuIl19
966
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWVhc3VyZS9tZWFzdXJlci9tZWFzdXJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tZWFzdXJlL21lYXN1cmVyL21lYXN1cmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBR0wsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFFTCxvQkFBb0IsRUFFckIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztB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IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRCdXR0b25Ub2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24tdG9nZ2xlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5cbmltcG9ydCB7XG4gIEVudGl0eVJlY29yZCxcbiAgRW50aXR5VGFibGVDb21wb25lbnQsXG4gIEVudGl0eVRhYmxlVGVtcGxhdGVcbn0gZnJvbSAnQGlnbzIvY29tbW9uL2VudGl0eSc7XG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcbmltcG9ydCB7IElnb0xhbmd1YWdlTW9kdWxlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5pbXBvcnQgeyBTdG9yYWdlU2NvcGUsIFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9zdG9yYWdlJztcbmltcG9ydCB7IHV1aWQgfSBmcm9tICdAaWdvMi91dGlscyc7XG5cbmltcG9ydCBPbEZlYXR1cmUgZnJvbSAnb2wvRmVhdHVyZSc7XG5pbXBvcnQgeyB1bkJ5S2V5IH0gZnJvbSAnb2wvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgT2xPdmVybGF5IGZyb20gJ29sL092ZXJsYXknO1xuaW1wb3J0IE9sR2VvSlNPTiBmcm9tICdvbC9mb3JtYXQvR2VvSlNPTic7XG5pbXBvcnQgT2xMaW5lU3RyaW5nIGZyb20gJ29sL2dlb20vTGluZVN0cmluZyc7XG5pbXBvcnQgT2xQb2x5Z29uIGZyb20gJ29sL2dlb20vUG9seWdvbic7XG5pbXBvcnQgT2xWZWN0b3JTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XG5pbXBvcnQgeyBWZWN0b3JTb3VyY2VFdmVudCBhcyBPbFZlY3RvclNvdXJjZUV2ZW50IH0gZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XG5pbXBvcnQgT2xTdHlsZSBmcm9tICdvbC9zdHlsZS9TdHlsZSc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBza2lwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGZWF0dXJlRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzJztcbmltcG9ydCB7XG4gIEZFQVRVUkUsXG4gIEZlYXR1cmVTdG9yZSxcbiAgRmVhdHVyZVN0b3JlTG9hZGluZ1N0cmF0ZWd5LFxuICBGZWF0dXJlU3RvcmVTZWxlY3Rpb25TdHJhdGVneSxcbiAgdHJ5QWRkTG9hZGluZ1N0cmF0ZWd5LFxuICB0cnlBZGRTZWxlY3Rpb25TdHJhdGVneSxcbiAgdHJ5QmluZFN0b3JlTGF5ZXJcbn0gZnJvbSAnLi4vLi4vZmVhdHVyZSc7XG5pbXBvcnQgeyBEcmF3Q29udHJvbCwgTW9kaWZ5Q29udHJvbCB9IGZyb20gJy4uLy4uL2dlb21ldHJ5L3NoYXJlZCc7XG5pbXBvcnQgeyBWZWN0b3JMYXllciB9IGZyb20gJy4uLy4uL2xheWVyL3NoYXJlZCc7XG5pbXBvcnQgeyBJZ29NYXAgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcCc7XG5pbXBvcnQge1xuICBNZWFzdXJlQXJlYVVuaXQsXG4gIE1lYXN1cmVMZW5ndGhVbml0LFxuICBNZWFzdXJlVHlwZVxufSBmcm9tICcuLi9zaGFyZWQvbWVhc3VyZS5lbnVtJztcbmltcG9ydCB7XG4gIEZlYXR1cmVXaXRoTWVhc3VyZSxcbiAgTWVhc3VyZSxcbiAgTWVhc3VyZXJEaWFsb2dEYXRhXG59IGZyb20gJy4uL3NoYXJlZC9tZWFzdXJlLmludGVyZmFjZXMnO1xuaW1wb3J0IHtcbiAgY3JlYXRlTWVhc3VyZUludGVyYWN0aW9uU3R5bGUsXG4gIGNyZWF0ZU1lYXN1cmVMYXllclN0eWxlLFxuICBmb3JtYXRNZWFzdXJlLFxuICBnZXRUb29sdGlwc09mT2xHZW9tZXRyeSxcbiAgbWVhc3VyZU9sR2VvbWV0cnksXG4gIG1ldGVyc1RvVW5pdCxcbiAgc3F1YXJlTWV0ZXJzVG9Vbml0LFxuICB1cGRhdGVPbFRvb2x0aXBBdENlbnRlcixcbiAgdXBkYXRlT2xUb29sdGlwc0F0TWlkcG9pbnRzXG59IGZyb20gJy4uL3NoYXJlZC9tZWFzdXJlLnV0aWxzJztcbmltcG9ydCB7IE1lYXN1cmVyRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9tZWFzdXJlci1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IE1lYXN1cmVySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vbWVhc3VyZXItaXRlbS5jb21wb25lbnQnO1xuXG4vKipcbiAqIFRvb2wgdG8gbWVhc3VyZSBsZW5ndGhzIGFuZCBhcmVhc1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tbWVhc3VyZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVhc3VyZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tZWFzdXJlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSxcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBOZ0lmLFxuICAgIE1hdERpdmlkZXJNb2R1bGUsXG4gICAgTWVhc3VyZXJJdGVtQ29tcG9uZW50LFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgRW50aXR5VGFibGVDb21wb25lbnQsXG4gICAgQXN5bmNQaXBlLFxuICAgIElnb0xhbmd1YWdlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTWVhc3VyZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBUYWJsZSB0ZW1wbGF0ZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyB0YWJsZVRlbXBsYXRlOiBFbnRpdHlUYWJsZVRlbXBsYXRlO1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9ucyQkOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIE1lYXN1cmVUeXBlIGVudW1cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgbWVhc3VyZVR5cGUgPSBNZWFzdXJlVHlwZTtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBBcmVhTWVhc3VyZVVuaXQgZW51bVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBtZWFzdXJlQXJlYVVuaXQgPSBNZWFzdXJlQXJlYVVuaXQ7XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgTGVuZ3RoTWVhc3VyZVVuaXQgZW51bVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBtZWFzdXJlTGVuZ3RoVW5pdCA9IE1lYXN1cmVMZW5ndGhVbml0O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG1lYXN1cmUgdW5pdHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBtZWFzdXJlVW5pdHNBdXRvID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgZGlzcGxheSBvZiBkaXN0YW5jZXMgb2YgYXJlYXNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZGlzcGxheURpc3RhbmNlID0gdHJ1ZTtcblxuICAvKipcbiAgICogV2hldGhlciBkaXNwbGF5IG9mIGRpc3RhbmNlcyBvZiBsaW5lc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBkaXNwbGF5TGluZXMgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGRpc3BsYXkgb2YgYXJlYXNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZGlzcGxheUFyZWFzID0gdHJ1ZTtcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSBvZiBsaW5lIGJvb2xlYW5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgaGFzTGluZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSBvZiBhcmVhIGJvb2xlYW5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgaGFzQXJlYSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSBvZiBhcmVhXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIG1lYXN1cmUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZWFzdXJlPih7fSk7XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgb2Ygc2VsZWN0ZWQgZmVhdHVyZXNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc2VsZWN0ZWRGZWF0dXJlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZlYXR1cmVXaXRoTWVhc3VyZVtdPihbXSk7XG5cbiAgLyoqXG4gICAqIE9MIGRyYXcgc291cmNlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHNob3dUb29sdGlwcyA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgZHJhdyBjb250cm9sIHRvZ2dsZSBpcyBkaXNhYmxlZCBvciBub3RcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZHJhd0NvbnRyb2xJc0Rpc2FibGVkID0gdHJ1ZTtcblxuICAvKipcbiAgICogRHJhdyBsaW5lIGNvbnRyb2xcbiAgICovXG4gIHByaXZhdGUgZHJhd0xpbmVDb250cm9sOiBEcmF3Q29udHJvbDtcblxuICAvKipcbiAgICogRHJhdyBwb2x5Z29uIGNvbnRyb2xcbiAgICovXG4gIHByaXZhdGUgZHJhd1BvbHlnb25Db250cm9sOiBEcmF3Q29udHJvbDtcblxuICAvKipcbiAgICogTW9kaWZ5IGNvbnRyb2xcbiAgICovXG4gIHByaXZhdGUgbW9kaWZ5Q29udHJvbDogTW9kaWZ5Q29udHJvbDtcblxuICAvKipcbiAgICogQWN0aXZlIE9MIGdlb21ldHJ5XG4gICAqL1xuICBwcml2YXRlIGFjdGl2ZU9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbjtcblxuICAvKipcbiAgICogQWN0aXZlIG1sZW5ndGggdW5pdFxuICAgKi9cbiAgcHVibGljIGFjdGl2ZUxlbmd0aFVuaXQ6IE1lYXN1cmVMZW5ndGhVbml0ID0gTWVhc3VyZUxlbmd0aFVuaXQuTWV0ZXJzO1xuXG4gIC8qKlxuICAgKiBBY3RpdmUgYXJlYSB1bml0XG4gICAqL1xuICBwdWJsaWMgYWN0aXZlQXJlYVVuaXQ6IE1lYXN1cmVBcmVhVW5pdCA9IE1lYXN1cmVBcmVhVW5pdC5TcXVhcmVNZXRlcnM7XG5cbiAgLyoqXG4gICAqIEZlYXR1cmUgYWRkZWQgbGlzdGVuZXIga2V5XG4gICAqL1xuICBwcml2YXRlIG9uRmVhdHVyZUFkZGVkS2V5O1xuXG4gIC8qKlxuICAgKiBGZWF0dXJlIHJlbW92ZWQgbGlzdGVuZXIga2V5XG4gICAqL1xuICBwcml2YXRlIG9uRmVhdHVyZVJlbW92ZWRLZXk7XG5cbiAgLyoqXG4gICAqIEFjdGl2ZSBkcmF3IGNvbnRyb2xcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIGFjdGl2ZURyYXdDb250cm9sOiBEcmF3Q29udHJvbDtcblxuICAvKipcbiAgICogU3Vic2NyaXB0aW9uIHRvIGRyYXcgc3RhcnRcbiAgICovXG4gIHByaXZhdGUgZHJhd1N0YXJ0JCQ6IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogU3Vic2NyaXB0aW9uIHRvIGRyYXcgZW5kXG4gICAqL1xuICBwcml2YXRlIGRyYXdFbmQkJDogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBTdWJzY3JpcHRpb24gdG8gY29udHJvbHMgY2hhbmdlc1xuICAgKi9cbiAgcHJpdmF0ZSBkcmF3Q2hhbmdlcyQkOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIFN1YnNjcmlwdGlvbiB0byBtb2RpZnkgc3RhcnRcbiAgICovXG4gIHByaXZhdGUgbW9kaWZ5U3RhcnQkJDogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBTdWJzY3JpcHRpb24gdG8gbW9kaWZ5IGVuZFxuICAgKi9cbiAgcHJpdmF0ZSBtb2RpZnlFbmQkJDogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBTdWJzY3JpcHRpb24gdG8gY29udHJvbHMgY2hhbmdlc1xuICAgKi9cbiAgcHJpdmF0ZSBtb2RpZnlDaGFuZ2VzJCQ6IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogU3Vic2NyaXB0aW9uIHRvIG1lYXN1cmVzIHNlbGVjdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBzZWxlY3RlZEZlYXR1cmVzJCQ6IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogT0wgZHJhdyBzb3VyY2VcbiAgICovXG4gIHByaXZhdGUgb2xEcmF3U291cmNlID0gbmV3IE9sVmVjdG9yU291cmNlKCk7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXAgdG8gbWVhc3VyZSBvblxuICAgKi9cbiAgQElucHV0KCkgbWFwOiBJZ29NYXA7XG5cbiAgLyoqXG4gICAqIFRoZSBtZWFzdXJlcyBzdG9yZVxuICAgKi9cbiAgQElucHV0KCkgc3RvcmU6IEZlYXR1cmVTdG9yZTxGZWF0dXJlV2l0aE1lYXN1cmU+O1xuXG4gIC8qKlxuICAgKiBNZWFzdXJlIHR5cGVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgYWN0aXZlTWVhc3VyZVR5cGUodmFsdWU6IE1lYXN1cmVUeXBlKSB7XG4gICAgdGhpcy5zZXRBY3RpdmVNZWFzdXJlVHlwZSh2YWx1ZSk7XG4gIH1cbiAgZ2V0IGFjdGl2ZU1lYXN1cmVUeXBlKCk6IE1lYXN1cmVUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlTWVhc3VyZVR5cGU7XG4gIH1cbiAgcHJpdmF0ZSBfYWN0aXZlTWVhc3VyZVR5cGU6IE1lYXN1cmVUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBsZW5ndGggYSBzZWdtZW50IG11c3QgaGF2ZSB0byBkaXNwbGF5IGEgdG9vbHRpcC5cbiAgICogSXQgYWxzbyBhcHBsaWVzIHRvIGFyZWEgdG9vbHRpcHMuXG4gICAqL1xuICBASW5wdXQoKSBtaW5TZWdtZW50TGVuZ3RoID0gMTA7XG5cbiAgQFZpZXdDaGlsZCgndGFibGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0YWJsZTogRW50aXR5VGFibGVDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFdoZXRlciBvbmUgb2YgdGhlIGRyYXcgY29udHJvbCBpcyBhY3RpdmVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXQgZHJhd0NvbnRyb2xJc0FjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVEcmF3Q29udHJvbCAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IHByb2plY3Rpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tYXAub2wuZ2V0VmlldygpLmdldFByb2plY3Rpb24oKS5nZXRDb2RlKCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnRcbiAgKSB7XG4gICAgdGhpcy50YWJsZVRlbXBsYXRlID0ge1xuICAgICAgc2VsZWN0aW9uOiB0cnVlLFxuICAgICAgc2VsZWN0TWFueTogdHJ1ZSxcbiAgICAgIHNlbGVjdGlvbkNoZWNrYm94OiB0cnVlLFxuICAgICAgc29ydDogdHJ1ZSxcbiAgICAgIGNvbHVtbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdsZW5ndGgnLFxuICAgICAgICAgIHRpdGxlOiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICdpZ28uZ2VvLm1lYXN1cmUubGVuZ3RoSGVhZGVyJ1xuICAgICAgICAgICksXG4gICAgICAgICAgdmFsdWVBY2Nlc3NvcjogKGxvY2FsRmVhdHVyZTogRmVhdHVyZVdpdGhNZWFzdXJlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1bml0ID0gdGhpcy5hY3RpdmVMZW5ndGhVbml0O1xuICAgICAgICAgICAgY29uc3QgbWVhc3VyZSA9IG1ldGVyc1RvVW5pdChcbiAgICAgICAgICAgICAgbG9jYWxGZWF0dXJlLnByb3BlcnRpZXMubWVhc3VyZS5sZW5ndGgsXG4gICAgICAgICAgICAgIHVuaXRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0TWVhc3VyZShtZWFzdXJlLCB7XG4gICAgICAgICAgICAgIGRlY2ltYWw6IDEsXG4gICAgICAgICAgICAgIHVuaXQsXG4gICAgICAgICAgICAgIHVuaXRBYmJyOiBmYWxzZSxcbiAgICAgICAgICAgICAgbG9jYWxlOiAnZnInXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnYXJlYScsXG4gICAgICAgICAgdGl0bGU6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgJ2lnby5nZW8ubWVhc3VyZS5hcmVhSGVhZGVyJ1xuICAgICAgICAgICksXG4gICAgICAgICAgdmFsdWVBY2Nlc3NvcjogKGxvY2FsRmVhdHVyZTogRmVhdHVyZVdpdGhNZWFzdXJlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1bml0ID0gdGhpcy5hY3RpdmVBcmVhVW5pdDtcbiAgICAgICAgICAgIGNvbnN0IG1lYXN1cmUgPSBzcXVhcmVNZXRlcnNUb1VuaXQoXG4gICAgICAgICAgICAgIGxvY2FsRmVhdHVyZS5wcm9wZXJ0aWVzLm1lYXN1cmUuYXJlYSxcbiAgICAgICAgICAgICAgdW5pdFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBtZWFzdXJlXG4gICAgICAgICAgICAgID8gZm9ybWF0TWVhc3VyZShtZWFzdXJlLCB7XG4gICAgICAgICAgICAgICAgICBkZWNpbWFsOiAxLFxuICAgICAgICAgICAgICAgICAgdW5pdCxcbiAgICAgICAgICAgICAgICAgIHVuaXRBYmJyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIGxvY2FsZTogJ2ZyJ1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIDogJyc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgZHJhdyBjb250cm9scyBhbmQgYWN0aXZhdGUgb25lXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5nZXRTYXZlZFVuaXRzKCk7XG4gICAgdGhpcy5pbml0U3RvcmUoKTtcbiAgICB0aGlzLmNyZWF0ZURyYXdMaW5lQ29udHJvbCgpO1xuICAgIHRoaXMuY3JlYXRlRHJhd1BvbHlnb25Db250cm9sKCk7XG4gICAgdGhpcy5jcmVhdGVNb2RpZnlDb250cm9sKCk7XG4gICAgdGhpcy50b2dnbGVEcmF3Q29udHJvbCgpO1xuICAgIHRoaXMudXBkYXRlVG9vbHRpcHNPZk9sU291cmNlKHRoaXMuc3RvcmUuc291cmNlLm9sKTtcbiAgICB0aGlzLmNoZWNrRGlzdGFuY2VBcmVhVG9nZ2xlKCk7XG4gICAgdGhpcy5zZXRBY3RpdmVNZWFzdXJlVHlwZShNZWFzdXJlVHlwZS5MZW5ndGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHRoZSBvdmVybGF5IGxheWVyIGFuZCBhbnkgaW50ZXJhY3Rpb24gYWRkZWQgYnkgdGhpcyBjb21wb25lbnQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zZXRBY3RpdmVNZWFzdXJlVHlwZSh1bmRlZmluZWQpO1xuICAgIHRoaXMuZGVhY3RpdmF0ZU1vZGlmeUNvbnRyb2woKTtcbiAgICB0aGlzLmZyZWV6ZVN0b3JlKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zJCQubWFwKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbWVhc3VyZSB0eXBlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgb25NZWFzdXJlVHlwZUNoYW5nZShtZWFzdXJlVHlwZTogTWVhc3VyZVR5cGUpIHtcbiAgICB0aGlzLmFjdGl2ZU1lYXN1cmVUeXBlID0gbWVhc3VyZVR5cGU7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGUgb3IgZGVhY3RpdmF0ZSB0aGUgY3VycmVudCBkcmF3IGNvbnRyb2xcbiAgICogQGludGVybmFsXG4gICAqL1xuICBvblRvZ2dsZURyYXdDb250cm9sKHRvZ2dsZTogYm9vbGVhbikge1xuICAgIGlmICh0b2dnbGUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMudG9nZ2xlRHJhd0NvbnRyb2woKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZWFjdGl2YXRlRHJhd0NvbnRyb2woKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGUgb3IgZGVhY3RpdmF0ZSB0aGUgY3VycmVudCBkcmF3IGNvbnRyb2xcbiAgICogQGludGVybmFsXG4gICAqL1xuICBvblRvZ2dsZU1lYXN1cmVVbml0c0F1dG8odG9nZ2xlOiBib29sZWFuKSB7XG4gICAgdGhpcy5tZWFzdXJlVW5pdHNBdXRvID0gdG9nZ2xlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIG9yIGRlYWN0aXZhdGUgdGhlIGN1cnJlbnQgZGlzcGxheSBvZiBkaXN0YW5jZXMgb2YgdGhlIGFyZWFzXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgb25Ub2dnbGVEaXNwbGF5RGlzdGFuY2UodG9nZ2xlOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNwbGF5RGlzdGFuY2UgPSB0b2dnbGU7XG4gICAgdGhpcy5vbkRpc3BsYXlEaXN0YW5jZSgpO1xuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KCdkaXN0YW5jZVRvZ2dsZScsIHRvZ2dsZSwgU3RvcmFnZVNjb3BlLlNFU1NJT04pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIG9yIGRlYWN0aXZhdGUgdGhlIGN1cnJlbnQgZGlzcGxheSBvZiBkaXN0YW5jZXMgb2YgdGhlIGxpbmVzXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgb25Ub2dnbGVEaXNwbGF5TGluZXModG9nZ2xlOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNwbGF5TGluZXMgPSB0b2dnbGU7XG4gICAgdGhpcy5vbkRpc3BsYXlMaW5lcygpO1xuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KCdsaW5lc1RvZ2dsZScsIHRvZ2dsZSwgU3RvcmFnZVNjb3BlLlNFU1NJT04pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIG9yIGRlYWN0aXZhdGUgdGhlIGN1cnJlbnQgZGlzcGxheSBvZiBhcmVhc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uVG9nZ2xlRGlzcGxheUFyZWFzKHRvZ2dsZTogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzcGxheUFyZWFzID0gdG9nZ2xlO1xuICAgIHRoaXMub25EaXNwbGF5QXJlYXMoKTtcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldCgnYXJlYXNUb2dnbGUnLCB0b2dnbGUsIFN0b3JhZ2VTY29wZS5TRVNTSU9OKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgZGlzcGxheSBwYXJhbWV0cmVzIGluIGN1cnJlbnQgdmFsdWVzXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgY2hlY2tEaXN0YW5jZUFyZWFUb2dnbGUoKSB7XG4gICAgaWYgKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KCdkaXN0YW5jZVRvZ2dsZScpID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5kaXNwbGF5RGlzdGFuY2UgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KCdsaW5lc1RvZ2dsZScpID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5kaXNwbGF5TGluZXMgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KCdhcmVhc1RvZ2dsZScpID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5kaXNwbGF5QXJlYXMgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGUgb3IgZGVhY3RpdmF0ZSB0aGUgY3VycmVudCBkaXNwbGF5IG9mIGRpc3RhbmNlcyBvZiBhcmVhc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uRGlzcGxheURpc3RhbmNlKCkge1xuICAgIGNvbnN0IGVsZW1lbnRzOiBIVE1MQ29sbGVjdGlvbk9mPEVsZW1lbnQ+ID1cbiAgICAgIHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcbiAgICAgICAgJ2lnby1tYXAtdG9vbHRpcC1tZWFzdXJlLXBvbHlnb25lLXNlZ21lbnRzJ1xuICAgICAgKTtcbiAgICBpZiAodGhpcy5kaXNwbGF5RGlzdGFuY2UpIHtcbiAgICAgIEFycmF5LmZyb20oZWxlbWVudHMpLm1hcCgodmFsdWU6IEVsZW1lbnQpID0+XG4gICAgICAgIHZhbHVlLmNsYXNzTGlzdC5yZW1vdmUoJ2lnby1tYXAtdG9vbHRpcC1oaWRkZW4nKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgQXJyYXkuZnJvbShlbGVtZW50cykubWFwKCh2YWx1ZTogRWxlbWVudCkgPT5cbiAgICAgICAgdmFsdWUuY2xhc3NMaXN0LmFkZCgnaWdvLW1hcC10b29sdGlwLWhpZGRlbicpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZSBvciBkZWFjdGl2YXRlIHRoZSBjdXJyZW50IGRpc3BsYXkgb2YgZGlzdGFuY2VzIG9mIGxpbmVzXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgb25EaXNwbGF5TGluZXMoKSB7XG4gICAgY29uc3QgZWxlbWVudHM6IEhUTUxDb2xsZWN0aW9uT2Y8RWxlbWVudD4gPVxuICAgICAgdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxuICAgICAgICAnaWdvLW1hcC10b29sdGlwLW1lYXN1cmUtbGluZS1zZWdtZW50cydcbiAgICAgICk7XG5cbiAgICBpZiAodGhpcy5kaXNwbGF5TGluZXMpIHtcbiAgICAgIEFycmF5LmZyb20oZWxlbWVudHMpLm1hcCgodmFsdWU6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgdmFsdWUuY2xhc3NMaXN0LnJlbW92ZSgnaWdvLW1hcC10b29sdGlwLWhpZGRlbicpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIEFycmF5LmZyb20oZWxlbWVudHMpLm1hcCgodmFsdWU6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgdmFsdWUuY2xhc3NMaXN0LmFkZCgnaWdvLW1hcC10b29sdGlwLWhpZGRlbicpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIG9yIGRlYWN0aXZhdGUgdGhlIGN1cnJlbnQgZGlzcGxheSBvZiBhcmVhc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uRGlzcGxheUFyZWFzKCkge1xuICAgIGNvbnN0IGVsZW1lbnRzOiBIVE1MQ29sbGVjdGlvbk9mPEVsZW1lbnQ+ID1cbiAgICAgIHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaWdvLW1hcC10b29sdGlwLW1lYXN1cmUtYXJlYScpO1xuXG4gICAgaWYgKHRoaXMuZGlzcGxheUFyZWFzKSB7XG4gICAgICBBcnJheS5mcm9tKGVsZW1lbnRzKS5tYXAoKHZhbHVlOiBFbGVtZW50KSA9PlxuICAgICAgICB2YWx1ZS5jbGFzc0xpc3QucmVtb3ZlKCdpZ28tbWFwLXRvb2x0aXAtaGlkZGVuJylcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIEFycmF5LmZyb20oZWxlbWVudHMpLm1hcCgodmFsdWU6IEVsZW1lbnQpID0+XG4gICAgICAgIHZhbHVlLmNsYXNzTGlzdC5hZGQoJ2lnby1tYXAtdG9vbHRpcC1oaWRkZW4nKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBtZWFzdXJlIHR5cGVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBvbkxlbmd0aFVuaXRDaGFuZ2UodW5pdDogTWVhc3VyZUxlbmd0aFVuaXQpIHtcbiAgICB0aGlzLmFjdGl2ZUxlbmd0aFVuaXQgPSB1bml0O1xuICAgIHRoaXMuc2F2ZUN1cnJlbnRVbml0cygpO1xuICAgIHRoaXMucmVmcmVzaFRhYmxlQW5kVG9vbHRpcCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbWVhc3VyZSB0eXBlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgb25BcmVhVW5pdENoYW5nZSh1bml0OiBNZWFzdXJlQXJlYVVuaXQpIHtcbiAgICB0aGlzLmFjdGl2ZUFyZWFVbml0ID0gdW5pdDtcbiAgICB0aGlzLnNhdmVDdXJyZW50VW5pdHMoKTtcbiAgICB0aGlzLnJlZnJlc2hUYWJsZUFuZFRvb2x0aXAoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVmcmVzaFRhYmxlQW5kVG9vbHRpcCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3JlLnN0YXRlVmlldy5jbGVhcigpO1xuXG4gICAgdGhpcy51cGRhdGVUb29sdGlwc09mT2xTb3VyY2UodGhpcy5zdG9yZS5zb3VyY2Uub2wpO1xuICAgIGlmICh0aGlzLmFjdGl2ZU9sR2VvbWV0cnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy51cGRhdGVUb29sdGlwc09mT2xHZW9tZXRyeSh0aGlzLmFjdGl2ZU9sR2VvbWV0cnkpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2FsY3VsYXRlQ2xpY2soKSB7XG4gICAgY29uc3QgZmVhdHVyZXMgPSB0aGlzLnNlbGVjdGVkRmVhdHVyZXMkLnZhbHVlO1xuICAgIGNvbnN0IGFyZWEgPSBmZWF0dXJlcy5yZWR1Y2UoXG4gICAgICAoc3VtOiBudW1iZXIsIGxvY2FsRmVhdHVyZTogRmVhdHVyZVdpdGhNZWFzdXJlKSA9PiB7XG4gICAgICAgIHJldHVybiBzdW0gKyBsb2NhbEZlYXR1cmUucHJvcGVydGllcy5tZWFzdXJlLmFyZWEgfHwgMDtcbiAgICAgIH0sXG4gICAgICAwXG4gICAgKTtcbiAgICBjb25zdCBsZW5ndGggPSBmZWF0dXJlcy5yZWR1Y2UoXG4gICAgICAoc3VtOiBudW1iZXIsIGxvY2FsRmVhdHVyZTogRmVhdHVyZVdpdGhNZWFzdXJlKSA9PiB7XG4gICAgICAgIGlmIChsb2NhbEZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gJ1BvbHlnb24nKSB7XG4gICAgICAgICAgcmV0dXJuIHN1bTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VtICsgbG9jYWxGZWF0dXJlLnByb3BlcnRpZXMubWVhc3VyZS5sZW5ndGggfHwgMDtcbiAgICAgIH0sXG4gICAgICAwXG4gICAgKTtcbiAgICBjb25zdCBwZXJpbWV0ZXIgPSBmZWF0dXJlcy5yZWR1Y2UoXG4gICAgICAoc3VtOiBudW1iZXIsIGxvY2FsRmVhdHVyZTogRmVhdHVyZVdpdGhNZWFzdXJlKSA9PiB7XG4gICAgICAgIGlmIChsb2NhbEZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gJ0xpbmVTdHJpbmcnKSB7XG4gICAgICAgICAgcmV0dXJuIHN1bTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VtICsgbG9jYWxGZWF0dXJlLnByb3BlcnRpZXMubWVhc3VyZS5sZW5ndGggfHwgMDtcbiAgICAgIH0sXG4gICAgICAwXG4gICAgKTtcblxuICAgIHRoaXMub3BlbkRpYWxvZyh7XG4gICAgICBhcmVhLFxuICAgICAgbGVuZ3RoLFxuICAgICAgcGVyaW1ldGVyXG4gICAgfSk7XG4gIH1cblxuICBvbkRlbGV0ZUNsaWNrKCkge1xuICAgIHRoaXMuc3RvcmUuZGVsZXRlTWFueSh0aGlzLnNlbGVjdGVkRmVhdHVyZXMkLnZhbHVlKTtcbiAgICB0aGlzLnNlbGVjdGVkRmVhdHVyZXMkLnZhbHVlLmZvckVhY2goKHNlbGVjdGVkRmVhdHVyZSkgPT4ge1xuICAgICAgdGhpcy5vbERyYXdTb3VyY2UuZ2V0RmVhdHVyZXMoKS5mb3JFYWNoKChkcmF3aW5nTGF5ZXJGZWF0dXJlKSA9PiB7XG4gICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gZHJhd2luZ0xheWVyRmVhdHVyZS5nZXRHZW9tZXRyeSgpIGFzIGFueTtcbiAgICAgICAgaWYgKHNlbGVjdGVkRmVhdHVyZS5wcm9wZXJ0aWVzLmlkID09PSBnZW9tZXRyeS5vbF91aWQpIHtcbiAgICAgICAgICB0aGlzLm9sRHJhd1NvdXJjZS5yZW1vdmVGZWF0dXJlKGRyYXdpbmdMYXllckZlYXR1cmUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uTW9kaWZ5Q2xpY2soKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGZWF0dXJlcyQudmFsdWUubGVuZ3RoICE9PSAxKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubW9kaWZ5Q29udHJvbC5hY3RpdmUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuZGVhY3RpdmF0ZU1vZGlmeUNvbnRyb2woKTtcbiAgICAgIHRoaXMudG9nZ2xlRHJhd0NvbnRyb2woKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbG9jYWxGZWF0dXJlID0gdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZVswXTtcbiAgICAgIGNvbnN0IG9sRmVhdHVyZXMgPSB0aGlzLnN0b3JlLmxheWVyLm9sLmdldFNvdXJjZSgpLmdldEZlYXR1cmVzKCk7XG4gICAgICBjb25zdCBvbEZlYXR1cmUgPSBvbEZlYXR1cmVzLmZpbmQoKF9vbEZlYXR1cmU6IE9sRmVhdHVyZSkgPT4ge1xuICAgICAgICByZXR1cm4gX29sRmVhdHVyZS5nZXQoJ2lkJykgPT09IGxvY2FsRmVhdHVyZS5wcm9wZXJ0aWVzLmlkO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChvbEZlYXR1cmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmRlYWN0aXZhdGVEcmF3Q29udHJvbCgpO1xuICAgICAgICB0aGlzLmFjdGl2YXRlTW9kaWZ5Q29udHJvbCgpO1xuXG4gICAgICAgIGNvbnN0IG9sR2VvbWV0cnkgPSBvbEZlYXR1cmUuZ2V0R2VvbWV0cnkoKTtcbiAgICAgICAgdGhpcy5jbGVhclRvb2x0aXBzT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnkgYXMgT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uKTtcbiAgICAgICAgdGhpcy5tb2RpZnlDb250cm9sLnNldE9sR2VvbWV0cnkob2xHZW9tZXRyeSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvcGVuRGlhbG9nKGRhdGE6IE1lYXN1cmVyRGlhbG9nRGF0YSk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nLm9wZW4oTWVhc3VyZXJEaWFsb2dDb21wb25lbnQsIHsgZGF0YSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBtZWFzdXJlIHN0b3JlIGFuZCBzZXQgdXAgc29tZSBsaXN0ZW5lcnNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIGluaXRTdG9yZSgpIHtcbiAgICBjb25zdCBzdG9yZSA9IHRoaXMuc3RvcmU7XG5cbiAgICBjb25zdCBsYXllciA9IG5ldyBWZWN0b3JMYXllcih7XG4gICAgICB0aXRsZTogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICdpZ28uZ2VvLm1lYXN1cmUubGF5ZXJUaXRsZSdcbiAgICAgICksXG4gICAgICBpc0lnb0ludGVybmFsTGF5ZXI6IHRydWUsXG4gICAgICBpZDogYGlnby1tZWFzdXJlcy0ke3V1aWQoKX1gLFxuICAgICAgekluZGV4OiAyMDAsXG4gICAgICBzb3VyY2U6IG5ldyBGZWF0dXJlRGF0YVNvdXJjZSgpLFxuICAgICAgc3R5bGU6IGNyZWF0ZU1lYXN1cmVMYXllclN0eWxlKCksXG4gICAgICBzaG93SW5MYXllckxpc3Q6IHRydWUsXG4gICAgICBleHBvcnRhYmxlOiB0cnVlLFxuICAgICAgYnJvd3NhYmxlOiBmYWxzZSxcbiAgICAgIHdvcmtzcGFjZTogeyBlbmFibGVkOiBmYWxzZSB9XG4gICAgfSk7XG4gICAgdHJ5QmluZFN0b3JlTGF5ZXIoc3RvcmUsIGxheWVyKTtcbiAgICBzdG9yZS5sYXllci52aXNpYmxlID0gdHJ1ZTtcbiAgICBsYXllci52aXNpYmxlJC5zdWJzY3JpYmUoKHZpc2libGUpID0+IHtcbiAgICAgIGNvbnN0IGVsZW1lbnRzOiBIVE1MQ29sbGVjdGlvbk9mPEVsZW1lbnQ+ID1cbiAgICAgICAgdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpZ28tbWFwLXRvb2x0aXAtbWVhc3VyZScpO1xuXG4gICAgICBpZiAodmlzaWJsZSkge1xuICAgICAgICBBcnJheS5mcm9tKGVsZW1lbnRzKS5tYXAoKHZhbHVlOiBFbGVtZW50KSA9PlxuICAgICAgICAgIHZhbHVlLmNsYXNzTGlzdC5yZW1vdmUoJ2lnby1tYXAtdG9vbHRpcC1tZWFzdXJlLWJ5LWRpc3BsYXknKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgQXJyYXkuZnJvbShlbGVtZW50cykubWFwKCh2YWx1ZTogRWxlbWVudCkgPT5cbiAgICAgICAgICB2YWx1ZS5jbGFzc0xpc3QuYWRkKCdpZ28tbWFwLXRvb2x0aXAtbWVhc3VyZS1ieS1kaXNwbGF5JylcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRyeUFkZExvYWRpbmdTdHJhdGVneShzdG9yZSk7XG5cbiAgICB0cnlBZGRTZWxlY3Rpb25TdHJhdGVneShcbiAgICAgIHN0b3JlLFxuICAgICAgbmV3IEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5KHtcbiAgICAgICAgbWFwOiB0aGlzLm1hcCxcbiAgICAgICAgbWFueTogdHJ1ZVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5vbkZlYXR1cmVBZGRlZEtleSA9IHN0b3JlLnNvdXJjZS5vbC5vbihcbiAgICAgICdhZGRmZWF0dXJlJyxcbiAgICAgIChldmVudDogT2xWZWN0b3JTb3VyY2VFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBsb2NhbEZlYXR1cmUgPSBldmVudC5mZWF0dXJlO1xuICAgICAgICBjb25zdCBvbEdlb21ldHJ5ID0gbG9jYWxGZWF0dXJlLmdldEdlb21ldHJ5KCkgYXMgYW55O1xuICAgICAgICB0aGlzLnVwZGF0ZU1lYXN1cmVPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSwgbG9jYWxGZWF0dXJlLmdldCgnbWVhc3VyZScpKTtcbiAgICAgICAgdGhpcy5vbkRpc3BsYXlEaXN0YW5jZSgpO1xuICAgICAgICB0aGlzLm9uRGlzcGxheUxpbmVzKCk7XG4gICAgICAgIHRoaXMub25EaXNwbGF5QXJlYXMoKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgdGhpcy5vbkZlYXR1cmVSZW1vdmVkS2V5ID0gc3RvcmUuc291cmNlLm9sLm9uKFxuICAgICAgJ3JlbW92ZWZlYXR1cmUnLFxuICAgICAgKGV2ZW50OiBPbFZlY3RvclNvdXJjZUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IG9sR2VvbWV0cnkgPSBldmVudC5mZWF0dXJlLmdldEdlb21ldHJ5KCkgYXMgYW55O1xuICAgICAgICB0aGlzLmNsZWFyVG9vbHRpcHNPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSk7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHRoaXMuc2VsZWN0ZWRGZWF0dXJlcyQkID0gc3RvcmUuc3RhdGVWaWV3XG4gICAgICAubWFueUJ5JCgocmVjb3JkOiBFbnRpdHlSZWNvcmQ8RmVhdHVyZVdpdGhNZWFzdXJlPikgPT4ge1xuICAgICAgICByZXR1cm4gcmVjb3JkLnN0YXRlLnNlbGVjdGVkID09PSB0cnVlO1xuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBza2lwKDEpIC8vIFNraXAgaW5pdGlhbCBlbWlzc2lvblxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgocmVjb3JkczogRW50aXR5UmVjb3JkPEZlYXR1cmVXaXRoTWVhc3VyZT5bXSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5tb2RpZnlDb250cm9sLmFjdGl2ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHRoaXMuZGVhY3RpdmF0ZU1vZGlmeUNvbnRyb2woKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkRmVhdHVyZXMkLm5leHQocmVjb3Jkcy5tYXAoKHJlY29yZCkgPT4gcmVjb3JkLmVudGl0eSkpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMkJC5wdXNoKFxuICAgICAgdGhpcy5zdG9yZS5lbnRpdGllcyQuc3Vic2NyaWJlKChvYmplY3RzRXhpc3RzKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBvYmplY3RzRXhpc3RzLmZpbmQoXG4gICAgICAgICAgICAob2JqZWN0RXhpc3QpID0+IG9iamVjdEV4aXN0Lmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJ1xuICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5oYXNBcmVhJC5uZXh0KHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuaGFzQXJlYSQubmV4dChmYWxzZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgb2JqZWN0c0V4aXN0cy5maW5kKFxuICAgICAgICAgICAgKG9iamVjdEV4aXN0KSA9PiBvYmplY3RFeGlzdC5nZW9tZXRyeS50eXBlID09PSAnTGluZVN0cmluZydcbiAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuaGFzTGluZSQubmV4dCh0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmhhc0xpbmUkLm5leHQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMkJC5wdXNoKFxuICAgICAgdGhpcy5zdG9yZS5jb3VudCQuc3Vic2NyaWJlKChjbnQpID0+IHtcbiAgICAgICAgdGhpcy5zdG9yZS5sYXllci5vcHRpb25zLnNob3dJbkxheWVyTGlzdCA9IGNudCA+PSAxO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEZyZWV6ZSBhbnkgc3RvcmUsIG1lYW5pbmcgdGhlIGxheWVyIGlzIHJlbW92ZWQsIHN0cmF0ZWdpZXMgYXJlIGRlYWN0aXZhdGVkXG4gICAqIGFuZCBzb21lIGxpc3RlbmVyIHJlbW92ZWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIGZyZWV6ZVN0b3JlKCkge1xuICAgIGNvbnN0IHN0b3JlID0gdGhpcy5zdG9yZTtcbiAgICB0aGlzLnNlbGVjdGVkRmVhdHVyZXMkJC51bnN1YnNjcmliZSgpO1xuICAgIHVuQnlLZXkodGhpcy5vbkZlYXR1cmVBZGRlZEtleSk7XG4gICAgdW5CeUtleSh0aGlzLm9uRmVhdHVyZVJlbW92ZWRLZXkpO1xuICAgIHN0b3JlLmRlYWN0aXZhdGVTdHJhdGVneU9mVHlwZShGZWF0dXJlU3RvcmVMb2FkaW5nU3RyYXRlZ3kpO1xuICAgIHN0b3JlLmRlYWN0aXZhdGVTdHJhdGVneU9mVHlwZShGZWF0dXJlU3RvcmVTZWxlY3Rpb25TdHJhdGVneSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgZHJhdyBsaW5lIGNvbnRyb2xcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRHJhd0xpbmVDb250cm9sKCkge1xuICAgIHRoaXMuZHJhd0xpbmVDb250cm9sID0gbmV3IERyYXdDb250cm9sKHtcbiAgICAgIGdlb21ldHJ5VHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgZHJhd2luZ0xheWVyU291cmNlOiB0aGlzLm9sRHJhd1NvdXJjZSxcbiAgICAgIGludGVyYWN0aW9uU3R5bGU6IGNyZWF0ZU1lYXN1cmVJbnRlcmFjdGlvblN0eWxlKCksXG4gICAgICBkcmF3aW5nTGF5ZXJTdHlsZTogbmV3IE9sU3R5bGUoe30pXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgZHJhdyBwb2x5Z29uIGNvbnRyb2xcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRHJhd1BvbHlnb25Db250cm9sKCkge1xuICAgIHRoaXMuZHJhd1BvbHlnb25Db250cm9sID0gbmV3IERyYXdDb250cm9sKHtcbiAgICAgIGdlb21ldHJ5VHlwZTogJ1BvbHlnb24nLFxuICAgICAgZHJhd2luZ0xheWVyU291cmNlOiB0aGlzLm9sRHJhd1NvdXJjZSxcbiAgICAgIGludGVyYWN0aW9uU3R5bGU6IGNyZWF0ZU1lYXN1cmVJbnRlcmFjdGlvblN0eWxlKCksXG4gICAgICBkcmF3aW5nTGF5ZXJTdHlsZTogbmV3IE9sU3R5bGUoe30pXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgZHJhdyBwb2x5Z29uIGNvbnRyb2xcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlTW9kaWZ5Q29udHJvbCgpIHtcbiAgICB0aGlzLm1vZGlmeUNvbnRyb2wgPSBuZXcgTW9kaWZ5Q29udHJvbCh7XG4gICAgICBzb3VyY2U6IHRoaXMub2xEcmF3U291cmNlLFxuICAgICAgZHJhd1N0eWxlOiBjcmVhdGVNZWFzdXJlSW50ZXJhY3Rpb25TdHlsZSgpLFxuICAgICAgbGF5ZXJTdHlsZTogbmV3IE9sU3R5bGUoe30pXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGUgdGhlIHJpZ2h0IGNvbnRyb2xcbiAgICovXG4gIHByaXZhdGUgdG9nZ2xlRHJhd0NvbnRyb2woKSB7XG4gICAgdGhpcy5kZWFjdGl2YXRlRHJhd0NvbnRyb2woKTtcbiAgICAvLyB0aGlzLmRlYWN0aXZhdGVNb2RpZnlDb250cm9sKCk7XG4gICAgaWYgKHRoaXMuYWN0aXZlTWVhc3VyZVR5cGUgPT09IE1lYXN1cmVUeXBlLkxlbmd0aCkge1xuICAgICAgdGhpcy5hY3RpdmF0ZURyYXdDb250cm9sKHRoaXMuZHJhd0xpbmVDb250cm9sKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlTWVhc3VyZVR5cGUgPT09IE1lYXN1cmVUeXBlLkFyZWEpIHtcbiAgICAgIHRoaXMuYWN0aXZhdGVEcmF3Q29udHJvbCh0aGlzLmRyYXdQb2x5Z29uQ29udHJvbCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIGEgZ2l2ZW4gY29udHJvbFxuICAgKiBAcGFyYW0gZHJhd0NvbnRyb2wgRHJhdyBjb250cm9sXG4gICAqL1xuICBwcml2YXRlIGFjdGl2YXRlRHJhd0NvbnRyb2woZHJhd0NvbnRyb2w6IERyYXdDb250cm9sKSB7XG4gICAgdGhpcy5kcmF3Q29udHJvbElzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLmFjdGl2ZURyYXdDb250cm9sID0gZHJhd0NvbnRyb2w7XG4gICAgdGhpcy5kcmF3U3RhcnQkJCA9IGRyYXdDb250cm9sLnN0YXJ0JC5zdWJzY3JpYmUoXG4gICAgICAob2xHZW9tZXRyeTogT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uKSA9PiB0aGlzLm9uRHJhd1N0YXJ0KG9sR2VvbWV0cnkpXG4gICAgKTtcbiAgICB0aGlzLmRyYXdFbmQkJCA9IGRyYXdDb250cm9sLmVuZCQuc3Vic2NyaWJlKFxuICAgICAgKG9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbikgPT4gdGhpcy5vbkRyYXdFbmQob2xHZW9tZXRyeSlcbiAgICApO1xuICAgIHRoaXMuZHJhd0NoYW5nZXMkJCA9IGRyYXdDb250cm9sLmNoYW5nZXMkLnN1YnNjcmliZShcbiAgICAgIChvbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24pID0+IHRoaXMub25EcmF3Q2hhbmdlcyhvbEdlb21ldHJ5KVxuICAgICk7XG4gICAgdGhpcy5kcmF3Q2hhbmdlcyQkID0gZHJhd0NvbnRyb2wuYWJvcnQkLnN1YnNjcmliZShcbiAgICAgIChvbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24pID0+IHtcbiAgICAgICAgdGhpcy5jbGVhclRvb2x0aXBzT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnkpO1xuICAgICAgICB0aGlzLmNsZWFyTWVhc3VyZXMoKTtcbiAgICAgIH1cbiAgICApO1xuICAgIGRyYXdDb250cm9sLnNldE9sTWFwKHRoaXMubWFwLm9sLCBmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogRGVhY3RpdmF0ZSB0aGUgYWN0aXZlIGRyYXcgY29udHJvbFxuICAgKi9cbiAgcHJpdmF0ZSBkZWFjdGl2YXRlRHJhd0NvbnRyb2woKSB7XG4gICAgaWYgKHRoaXMuYWN0aXZlRHJhd0NvbnRyb2wgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMub2xEcmF3U291cmNlLmNsZWFyKCk7XG4gICAgaWYgKHRoaXMuZHJhd1N0YXJ0JCQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5kcmF3U3RhcnQkJC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5kcmF3RW5kJCQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5kcmF3RW5kJCQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZHJhd0NoYW5nZXMkJCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmRyYXdDaGFuZ2VzJCQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmNsZWFyVG9vbHRpcHNPZk9sU291cmNlKHRoaXMub2xEcmF3U291cmNlKTtcbiAgICBpZiAodGhpcy5hY3RpdmVPbEdlb21ldHJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY2xlYXJUb29sdGlwc09mT2xHZW9tZXRyeSh0aGlzLmFjdGl2ZU9sR2VvbWV0cnkpO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZURyYXdDb250cm9sLnNldE9sTWFwKHVuZGVmaW5lZCk7XG4gICAgdGhpcy5hY3RpdmVEcmF3Q29udHJvbCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmFjdGl2ZU9sR2VvbWV0cnkgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIHNldEFjdGl2ZU1lYXN1cmVUeXBlKG1lYXN1cmVUeXBlOiBNZWFzdXJlVHlwZSkge1xuICAgIHRoaXMuX2FjdGl2ZU1lYXN1cmVUeXBlID0gbWVhc3VyZVR5cGU7XG4gICAgdGhpcy5jbGVhck1lYXN1cmVzKCk7XG4gICAgdGhpcy50b2dnbGVEcmF3Q29udHJvbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHRoZSBkcmF3IHNvdXJjZSBhbmQgdHJhY2sgdGhlIGdlb21ldHJ5IGJlaW5nIGRyYXduXG4gICAqIEBwYXJhbSBvbEdlb21ldHJ5IE9sIGxpbmVzdHJpbmcgb3IgcG9seWdvblxuICAgKi9cbiAgcHJpdmF0ZSBvbkRyYXdTdGFydChvbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24pIHtcbiAgICB0aGlzLmFjdGl2ZU9sR2VvbWV0cnkgPSBvbEdlb21ldHJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHRoZSBkcmF3IHNvdXJjZSBhbmQgdHJhY2sgdGhlIGdlb21ldHJ5IGJlaW5nIGRyYXdcbiAgICogQHBhcmFtIG9sR2VvbWV0cnkgT2wgbGluZXN0cmluZyBvciBwb2x5Z29uXG4gICAqL1xuICBwcml2YXRlIG9uRHJhd0VuZChvbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24pIHtcbiAgICB0aGlzLmFjdGl2ZU9sR2VvbWV0cnkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5maW5hbGl6ZU1lYXN1cmVPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSk7XG4gICAgdGhpcy5hZGRGZWF0dXJlVG9TdG9yZShvbEdlb21ldHJ5KTtcbiAgICB0aGlzLmNsZWFyVG9vbHRpcHNPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSk7XG4gICAgdGhpcy5vbERyYXdTb3VyY2UuY2xlYXIodHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIG1lYXN1cmVzIG9ic2VydmFibGVzIGFuZCBtYXAgdG9vbHRpcHNcbiAgICogQHBhcmFtIG9sR2VvbWV0cnkgT2wgbGluZXN0cmluZyBvciBwb2x5Z29uXG4gICAqL1xuICBwcml2YXRlIG9uRHJhd0NoYW5nZXMob2xHZW9tZXRyeTogT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uKSB7XG4gICAgY29uc3QgbWVhc3VyZSA9IG1lYXN1cmVPbEdlb21ldHJ5KG9sR2VvbWV0cnksIHRoaXMucHJvamVjdGlvbik7XG4gICAgdGhpcy51cGRhdGVNZWFzdXJlT2ZPbEdlb21ldHJ5KFxuICAgICAgb2xHZW9tZXRyeSxcbiAgICAgIE9iamVjdC5hc3NpZ24oe30sIG1lYXN1cmUsIHtcbiAgICAgICAgYXJlYTogdW5kZWZpbmVkIC8vIFdlIGRvbid0IHdhbnQgdG8gZGlzcGxheSBhbiBhcmVhIHRvb2x0aXAgd2hpbGUgZHJhd2luZy5cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLm1lYXN1cmUkLm5leHQobWVhc3VyZSk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGUgYSBnaXZlbiBjb250cm9sXG4gICAqIEBwYXJhbSBtb2RpZnlDb250cm9sIE1vZGlmeSBjb250cm9sXG4gICAqL1xuICBwcml2YXRlIGFjdGl2YXRlTW9kaWZ5Q29udHJvbCgpIHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLnN0b3JlLmdldFN0cmF0ZWd5T2ZUeXBlKFxuICAgICAgRmVhdHVyZVN0b3JlU2VsZWN0aW9uU3RyYXRlZ3lcbiAgICApIGFzIEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5O1xuICAgIHNlbGVjdGlvbi5kZWFjdGl2YXRlKCk7XG4gICAgc2VsZWN0aW9uLmNsZWFyKCk7XG5cbiAgICB0aGlzLm1vZGlmeVN0YXJ0JCQgPSB0aGlzLm1vZGlmeUNvbnRyb2wuc3RhcnQkLnN1YnNjcmliZShcbiAgICAgIChvbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24pID0+IHRoaXMub25Nb2RpZnlTdGFydChvbEdlb21ldHJ5KVxuICAgICk7XG4gICAgdGhpcy5tb2RpZnlFbmQkJCA9IHRoaXMubW9kaWZ5Q29udHJvbC5lbmQkLnN1YnNjcmliZShcbiAgICAgIChvbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24pID0+IHRoaXMub25Nb2RpZnlFbmQob2xHZW9tZXRyeSlcbiAgICApO1xuICAgIHRoaXMubW9kaWZ5Q2hhbmdlcyQkID0gdGhpcy5tb2RpZnlDb250cm9sLmNoYW5nZXMkLnN1YnNjcmliZShcbiAgICAgIChvbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24pID0+IHRoaXMub25Nb2RpZnlDaGFuZ2VzKG9sR2VvbWV0cnkpXG4gICAgKTtcbiAgICB0aGlzLm1vZGlmeUNvbnRyb2wuc2V0T2xNYXAodGhpcy5tYXAub2wpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlYWN0aXZhdGUgdGhlIGFjdGl2ZSBtb2RpZnkgY29udHJvbFxuICAgKi9cbiAgcHJpdmF0ZSBkZWFjdGl2YXRlTW9kaWZ5Q29udHJvbCgpIHtcbiAgICBpZiAodGhpcy5tb2RpZnlTdGFydCQkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubW9kaWZ5U3RhcnQkJC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5tb2RpZnlFbmQkJCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLm1vZGlmeUVuZCQkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm1vZGlmeUNoYW5nZXMkJCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLm1vZGlmeUNoYW5nZXMkJC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFjdGl2ZU9sR2VvbWV0cnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRGZWF0dXJlcyQudmFsdWUubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGNvbnN0IGxvY2FsRmVhdHVyZSA9IHRoaXMuc2VsZWN0ZWRGZWF0dXJlcyQudmFsdWVbMF07XG4gICAgICAgIHRoaXMuYWRkRmVhdHVyZVRvU3RvcmUodGhpcy5hY3RpdmVPbEdlb21ldHJ5LCBsb2NhbEZlYXR1cmUpO1xuICAgICAgfVxuICAgICAgdGhpcy5maW5hbGl6ZU1lYXN1cmVPZk9sR2VvbWV0cnkodGhpcy5hY3RpdmVPbEdlb21ldHJ5KTtcbiAgICB9XG5cbiAgICB0aGlzLm9sRHJhd1NvdXJjZS5jbGVhcigpO1xuXG4gICAgdGhpcy5zdG9yZS5hY3RpdmF0ZVN0cmF0ZWd5T2ZUeXBlKEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5KTtcblxuICAgIHRoaXMuYWN0aXZlT2xHZW9tZXRyeSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm1vZGlmeUNvbnRyb2wuc2V0T2xNYXAodW5kZWZpbmVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgZHJhdyBzb3VyY2UgYW5kIHRyYWNrIHRoZSBnZW9tZXRyeSBiZWluZyBkcmF3blxuICAgKiBAcGFyYW0gb2xHZW9tZXRyeSBPbCBsaW5lc3RyaW5nIG9yIHBvbHlnb25cbiAgICovXG4gIHByaXZhdGUgb25Nb2RpZnlTdGFydChvbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24pIHtcbiAgICB0aGlzLm9uRHJhd1N0YXJ0KG9sR2VvbWV0cnkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBtZWFzdXJlcyBvYnNlcnZhYmxlcyBhbmQgbWFwIHRvb2x0aXBzXG4gICAqIEBwYXJhbSBvbEdlb21ldHJ5IE9sIGxpbmVzdHJpbmcgb3IgcG9seWdvblxuICAgKi9cbiAgcHJpdmF0ZSBvbk1vZGlmeUNoYW5nZXMob2xHZW9tZXRyeTogT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uKSB7XG4gICAgdGhpcy5vbkRyYXdDaGFuZ2VzKG9sR2VvbWV0cnkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHRoZSBkcmF3IHNvdXJjZSBhbmQgdHJhY2sgdGhlIGdlb21ldHJ5IGJlaW5nIGRyYXdcbiAgICogQHBhcmFtIG9sR2VvbWV0cnkgT2wgbGluZXN0cmluZyBvciBwb2x5Z29uXG4gICAqL1xuICBwcml2YXRlIG9uTW9kaWZ5RW5kKG9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbikge1xuICAgIHRoaXMuZmluYWxpemVNZWFzdXJlT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnkpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5hbGl6ZU1lYXN1cmVPZk9sR2VvbWV0cnkob2xHZW9tZXRyeTogT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uKSB7XG4gICAgY29uc3QgbWVhc3VyZSA9IG1lYXN1cmVPbEdlb21ldHJ5KG9sR2VvbWV0cnksIHRoaXMucHJvamVjdGlvbik7XG4gICAgdGhpcy51cGRhdGVNZWFzdXJlT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnksIG1lYXN1cmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBtZWFzdXJlcyBvYnNlcnZhYmxlc1xuICAgKiBAcGFyYW0gb2xHZW9tZXRyeSBPbCBsaW5lc3RyaW5nIG9yIHBvbHlnb25cbiAgICogQHBhcmFtIG1lYXN1cmUgTWVhc3VyZVxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVNZWFzdXJlT2ZPbEdlb21ldHJ5KFxuICAgIG9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbixcbiAgICBtZWFzdXJlOiBNZWFzdXJlXG4gICkge1xuICAgIG9sR2VvbWV0cnkuc2V0UHJvcGVydGllcyh7IF9tZWFzdXJlOiBtZWFzdXJlIH0sIHRydWUpO1xuICAgIHRoaXMudXBkYXRlVG9vbHRpcHNPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgdGhlIG1lYXN1cmVzIG9ic2VydmFibGVzXG4gICAqL1xuICBwcml2YXRlIGNsZWFyTWVhc3VyZXMoKSB7XG4gICAgdGhpcy5tZWFzdXJlJC5uZXh0KHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBmZWF0dXJlIHdpdGggbWVhc3VyZXMgdG8gdGhlIHN0b3JlLiBUaGUgbG9hZGluZyBzdHJhZ2VneSBvZiB0aGUgc3RvcmVcbiAgICogd2lsbCB0cmlnZ2VyIGFuZCBhZGQgdGhlIGZlYXR1cmUgdG8gdGhlIG1hcC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIGFkZEZlYXR1cmVUb1N0b3JlKG9sR2VvbWV0cnksIGxvY2FsRmVhdHVyZT86IEZlYXR1cmVXaXRoTWVhc3VyZSkge1xuICAgIGNvbnN0IGZlYXR1cmVJZCA9IGxvY2FsRmVhdHVyZVxuICAgICAgPyBsb2NhbEZlYXR1cmUucHJvcGVydGllcy5pZFxuICAgICAgOiBvbEdlb21ldHJ5Lm9sX3VpZDtcbiAgICBjb25zdCBwcm9qZWN0aW9uID0gdGhpcy5tYXAub2wuZ2V0VmlldygpLmdldFByb2plY3Rpb24oKTtcbiAgICBjb25zdCBnZW9tZXRyeSA9IG5ldyBPbEdlb0pTT04oKS53cml0ZUdlb21ldHJ5T2JqZWN0KG9sR2VvbWV0cnksIHtcbiAgICAgIGZlYXR1cmVQcm9qZWN0aW9uOiBwcm9qZWN0aW9uLFxuICAgICAgZGF0YVByb2plY3Rpb246IHByb2plY3Rpb25cbiAgICB9KSBhcyBhbnk7XG4gICAgdGhpcy5zdG9yZS51cGRhdGUoe1xuICAgICAgdHlwZTogRkVBVFVSRSxcbiAgICAgIGdlb21ldHJ5LFxuICAgICAgcHJvamVjdGlvbjogcHJvamVjdGlvbi5nZXRDb2RlKCksXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIGlkOiBmZWF0dXJlSWQsXG4gICAgICAgIG1lYXN1cmU6IG9sR2VvbWV0cnkuZ2V0KCdfbWVhc3VyZScpXG4gICAgICB9LFxuICAgICAgbWV0YToge1xuICAgICAgICBpZDogZmVhdHVyZUlkXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGFsbCB0aGUgdG9vbHRpcHMgb2YgYW4gT0wgZ2VvbWV0cnlcbiAgICogQHBhcmFtIG9sR2VvbWV0cnkgT0wgR2VvbWV0cnlcbiAgICogQHBhcmFtIGxlbmd0aHMgTGVuZ3RocyBvZiB0aGUgT0wgZ2VvbWV0cnkncyBzZWdtZW50c1xuICAgKiBAcGFyYW0gbWVhc3VyZVVuaXQgRGlzcGxheSB0b29sdGlwIG1lYXN1cmUgaW4gdGhvc2UgdW5pdHNcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlVG9vbHRpcHNPZk9sR2VvbWV0cnkob2xHZW9tZXRyeTogT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uKSB7XG4gICAgY29uc3QgbWVhc3VyZSA9IG9sR2VvbWV0cnkuZ2V0KCdfbWVhc3VyZScpO1xuICAgIGNvbnN0IGxlbmd0aHMgPSBtZWFzdXJlLmxlbmd0aHM7XG4gICAgY29uc3QgYXJlYSA9IG1lYXN1cmUuYXJlYTtcblxuICAgIGNvbnN0IG9sTWlkcG9pbnRzVG9vbHRpcHMgPSB1cGRhdGVPbFRvb2x0aXBzQXRNaWRwb2ludHMob2xHZW9tZXRyeSk7XG4gICAgaWYgKGxlbmd0aHMubGVuZ3RoID09PSBvbE1pZHBvaW50c1Rvb2x0aXBzLmxlbmd0aCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvbE1pZHBvaW50c1Rvb2x0aXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IGxlbmd0aHNbaV07XG4gICAgICAgIGlmIChsZW5ndGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMudXBkYXRlT2xUb29sdGlwKFxuICAgICAgICAgICAgb2xNaWRwb2ludHNUb29sdGlwc1tpXSxcbiAgICAgICAgICAgIG1ldGVyc1RvVW5pdChsZW5ndGgsIHRoaXMuYWN0aXZlTGVuZ3RoVW5pdCksXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUxlbmd0aFVuaXQsXG4gICAgICAgICAgICBNZWFzdXJlVHlwZS5MZW5ndGhcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGFyZWEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy51cGRhdGVPbFRvb2x0aXAoXG4gICAgICAgIHVwZGF0ZU9sVG9vbHRpcEF0Q2VudGVyKG9sR2VvbWV0cnkpLFxuICAgICAgICBzcXVhcmVNZXRlcnNUb1VuaXQoYXJlYSwgdGhpcy5hY3RpdmVBcmVhVW5pdCksXG4gICAgICAgIHRoaXMuYWN0aXZlQXJlYVVuaXQsXG4gICAgICAgIE1lYXN1cmVUeXBlLkFyZWFcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNob3cgdGhlIG1hcCB0b29sdGlwcyBvZiBhIGdlb2VtdHJ5XG4gICAqL1xuICBwcml2YXRlIHNob3dUb29sdGlwc09mT2xHZW9tZXRyeShvbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24pIHtcbiAgICBnZXRUb29sdGlwc09mT2xHZW9tZXRyeShvbEdlb21ldHJ5KS5mb3JFYWNoKFxuICAgICAgKG9sVG9vbHRpcDogT2xPdmVybGF5IHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnNob3VsZFNob3dUb29sdGlwKG9sVG9vbHRpcCkpIHtcbiAgICAgICAgICB0aGlzLm1hcC5vbC5hZGRPdmVybGF5KG9sVG9vbHRpcCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHRoZSB0b29sdGlwcyBvZiBhbiBPTCBnZW9tZXRyeXNcbiAgICogQHBhcmFtIG9sR2VvbWV0cnkgT0wgZ2VvbWV0cnkgd2l0aCB0b29sdGlwc1xuICAgKi9cbiAgcHJpdmF0ZSBjbGVhclRvb2x0aXBzT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbikge1xuICAgIGdldFRvb2x0aXBzT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnkpLmZvckVhY2goXG4gICAgICAob2xUb29sdGlwOiBPbE92ZXJsYXkgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgaWYgKG9sVG9vbHRpcCAhPT0gdW5kZWZpbmVkICYmIG9sVG9vbHRpcC5nZXRNYXAoKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5tYXAub2wucmVtb3ZlT3ZlcmxheShvbFRvb2x0aXApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBtYXAgdG9vbHRpcHMgb2YgYWxsIHRoZSBnZW9tZXRyaWVzIG9mIGEgc291cmNlXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVRvb2x0aXBzT2ZPbFNvdXJjZShvbFNvdXJjZTogT2xWZWN0b3JTb3VyY2UpIHtcbiAgICBvbFNvdXJjZS5mb3JFYWNoRmVhdHVyZSgob2xGZWF0dXJlOiBPbEZlYXR1cmUpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlVG9vbHRpcHNPZk9sR2VvbWV0cnkob2xGZWF0dXJlLmdldEdlb21ldHJ5KCkgYXMgYW55KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBtYXAgdG9vbHRpcHMgb2YgYWxsIHRoZSBnZW9tZXRyaWVzIG9mIGEgc291cmNlXG4gICAqL1xuICBwcml2YXRlIHNob3dUb29sdGlwc09mT2xTb3VyY2Uob2xTb3VyY2U6IE9sVmVjdG9yU291cmNlKSB7XG4gICAgb2xTb3VyY2UuZm9yRWFjaEZlYXR1cmUoKG9sRmVhdHVyZTogT2xGZWF0dXJlKSA9PiB7XG4gICAgICB0aGlzLnNob3dUb29sdGlwc09mT2xHZW9tZXRyeShvbEZlYXR1cmUuZ2V0R2VvbWV0cnkoKSBhcyBhbnkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHRoZSBtYXAgdG9vbHRpcHNcbiAgICogQHBhcmFtIG9sRHJhd1NvdXJjZSBPTCB2ZWN0b3Igc291cmNlXG4gICAqL1xuICBwcml2YXRlIGNsZWFyVG9vbHRpcHNPZk9sU291cmNlKG9sU291cmNlOiBPbFZlY3RvclNvdXJjZSkge1xuICAgIG9sU291cmNlLmZvckVhY2hGZWF0dXJlKChvbEZlYXR1cmU6IE9sRmVhdHVyZSkgPT4ge1xuICAgICAgY29uc3Qgb2xHZW9tZXRyeSA9IG9sRmVhdHVyZS5nZXRHZW9tZXRyeSgpO1xuICAgICAgaWYgKG9sR2VvbWV0cnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmNsZWFyVG9vbHRpcHNPZk9sR2VvbWV0cnkob2xGZWF0dXJlLmdldEdlb21ldHJ5KCkgYXMgYW55KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYW4gT0wgdG9vbHRpcCBwcm9wZXJ0aWVzIGFuZCBpbm5lciBIVE1MIGFuZCBhZGQgaXQgdG8gdGhlIG1hcCBpZiBwb3NzaWJsZVxuICAgKiBAcGFyYW0gb2xUb29sdGlwIE9MIHRvb2x0aXBcbiAgICogQHBhcmFtIG1lYXN1cmUgVGhlIG1lYXN1cmUgdmFsZXUgdGkgZGlzcGxheVxuICAgKiBAcGFyYW0gbWVhc3VyZVVuaXQgRGlzcGxheSB0b29sdGlwIG1lYXN1cmUgaW4gdGhvc2UgdW5pdHNcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlT2xUb29sdGlwKFxuICAgIG9sVG9vbHRpcDogT2xPdmVybGF5LFxuICAgIG1lYXN1cmU6IG51bWJlcixcbiAgICB1bml0OiBNZWFzdXJlQXJlYVVuaXQgfCBNZWFzdXJlTGVuZ3RoVW5pdCxcbiAgICB0eXBlOiBNZWFzdXJlVHlwZVxuICApIHtcbiAgICBvbFRvb2x0aXAuc2V0UHJvcGVydGllcyhcbiAgICAgIHsgX21lYXN1cmU6IG1lYXN1cmUsIF91bml0OiB1bml0LCBfdHlwZTogdHlwZSB9LFxuICAgICAgdHJ1ZVxuICAgICk7XG4gICAgb2xUb29sdGlwLmdldEVsZW1lbnQoKS5pbm5lckhUTUwgPSB0aGlzLmNvbXB1dGVUb29sdGlwSW5uZXJIVE1MKG9sVG9vbHRpcCk7XG4gICAgaWYgKHRoaXMuc2hvdWxkU2hvd1Rvb2x0aXAob2xUb29sdGlwKSkge1xuICAgICAgdGhpcy5tYXAub2wuYWRkT3ZlcmxheShvbFRvb2x0aXApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlIGEgdG9vbHRpcCdzIGNvbnRlbnRcbiAgICogQHBhcmFtIG9sVG9vbHRpcCBPTCBvdmVybGF5XG4gICAqIEByZXR1cm5zIElubmVyIEhUTUxcbiAgICovXG4gIHByaXZhdGUgY29tcHV0ZVRvb2x0aXBJbm5lckhUTUwob2xUb29sdGlwOiBPbE92ZXJsYXkpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSBvbFRvb2x0aXAuZ2V0UHJvcGVydGllcygpIGFzIGFueTtcbiAgICByZXR1cm4gZm9ybWF0TWVhc3VyZShcbiAgICAgIHByb3BlcnRpZXMuX21lYXN1cmUsXG4gICAgICB7XG4gICAgICAgIGRlY2ltYWw6IDEsXG4gICAgICAgIHVuaXQ6IHByb3BlcnRpZXMuX3VuaXQsXG4gICAgICAgIHVuaXRBYmJyOiB0cnVlLFxuICAgICAgICBsb2NhbGU6ICdmcidcbiAgICAgIH0sXG4gICAgICB0aGlzLmxhbmd1YWdlU2VydmljZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciBhIHRvb2x0aXAgc2hvdWxkIGJlIHNob3duZWQgYmFzZWQgb24gdGhlIGxlbmd0aFxuICAgKiBvZiB0aGUgc2VnbWVudCBpdCBpcyBib3VuZCB0by5cbiAgICogQHBhcmFtIG9sVG9vbHRpcCBPTCBvdmVybGF5XG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHRvb2x0aXAgc2hvdWxkIGJlIHNob3duXG4gICAqL1xuICBwcml2YXRlIHNob3VsZFNob3dUb29sdGlwKG9sVG9vbHRpcDogT2xPdmVybGF5KTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuc2hvd1Rvb2x0aXBzID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHByb3BlcnRpZXMgPSBvbFRvb2x0aXAuZ2V0UHJvcGVydGllcygpIGFzIGFueTtcbiAgICBjb25zdCBtZWFzdXJlID0gcHJvcGVydGllcy5fbWVhc3VyZTtcbiAgICBpZiAobWVhc3VyZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHByb3BlcnRpZXMuX3VuaXQgPT09IE1lYXN1cmVUeXBlLkxlbmd0aCkge1xuICAgICAgY29uc3QgbWluU2VnbWVudExlbmd0aCA9XG4gICAgICAgIG1ldGVyc1RvVW5pdCh0aGlzLm1pblNlZ21lbnRMZW5ndGgsIHByb3BlcnRpZXMuX3VuaXQpIHx8IDA7XG4gICAgICByZXR1cm4gbWVhc3VyZSA+IE1hdGgubWF4KG1pblNlZ21lbnRMZW5ndGgsIDApO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzYXZlQ3VycmVudFVuaXRzKCkge1xuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KFxuICAgICAgJ2Rpc3RhbmNlVW5pdCcsXG4gICAgICB0aGlzLmFjdGl2ZUxlbmd0aFVuaXQsXG4gICAgICBTdG9yYWdlU2NvcGUuU0VTU0lPTlxuICAgICk7XG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXQoXG4gICAgICAnYXJlYVVuaXQnLFxuICAgICAgdGhpcy5hY3RpdmVBcmVhVW5pdCxcbiAgICAgIFN0b3JhZ2VTY29wZS5TRVNTSU9OXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2F2ZWRVbml0cygpIHtcbiAgICBjb25zdCBkaXN0YW5jZVVuaXQgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldChcbiAgICAgICdkaXN0YW5jZVVuaXQnXG4gICAgKSBhcyBNZWFzdXJlTGVuZ3RoVW5pdDtcbiAgICBjb25zdCBhcmVhVW5pdCA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KCdhcmVhVW5pdCcpIGFzIE1lYXN1cmVBcmVhVW5pdDtcblxuICAgIHRoaXMuYWN0aXZlTGVuZ3RoVW5pdCA9IGRpc3RhbmNlVW5pdCA/IGRpc3RhbmNlVW5pdCA6IHRoaXMuYWN0aXZlTGVuZ3RoVW5pdDtcbiAgICB0aGlzLmFjdGl2ZUFyZWFVbml0ID0gYXJlYVVuaXQgPyBhcmVhVW5pdCA6IHRoaXMuYWN0aXZlQXJlYVVuaXQ7XG4gIH1cbn1cbiIsIjxkaXY+XG4gIDxkaXYgY2xhc3M9XCJtZWFzdXJlLXR5cGUtdG9nZ2xlIG1hdC10eXBvZ3JhcGh5XCI+XG4gICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwXG4gICAgICBbdmFsdWVdPVwiYWN0aXZlTWVhc3VyZVR5cGVcIlxuICAgICAgKGNoYW5nZSk9XCJvbk1lYXN1cmVUeXBlQ2hhbmdlKCRldmVudC52YWx1ZSlcIlxuICAgID5cbiAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSBbdmFsdWVdPVwibWVhc3VyZVR5cGUuTGVuZ3RoXCI+XG4gICAgICAgIHt7ICdpZ28uZ2VvLm1lYXN1cmUuJyArIG1lYXN1cmVUeXBlLkxlbmd0aCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSBbdmFsdWVdPVwibWVhc3VyZVR5cGUuQXJlYVwiPlxuICAgICAgICB7eyAnaWdvLmdlby5tZWFzdXJlLicgKyBtZWFzdXJlVHlwZS5BcmVhIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtZWFzdXJlLW9wdGlvbnMgbWF0LXR5cG9ncmFwaHlcIj5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZVxuICAgICAgW2Rpc2FibGVkXT1cImRyYXdDb250cm9sSXNEaXNhYmxlZFwiXG4gICAgICBbY2hlY2tlZF09XCJkcmF3Q29udHJvbElzQWN0aXZlXCJcbiAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCJcbiAgICAgIChjaGFuZ2UpPVwib25Ub2dnbGVEcmF3Q29udHJvbCgkZXZlbnQuY2hlY2tlZClcIlxuICAgID5cbiAgICAgIHt7ICdpZ28uZ2VvLm1lYXN1cmUudG9nZ2xlQWN0aXZlJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cblxuICAgIDxtYXQtZGl2aWRlciAqbmdJZj1cImhhc0xpbmUkIHwgYXN5bmNcIj48L21hdC1kaXZpZGVyPlxuXG4gICAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICAgICpuZ0lmPVwiaGFzTGluZSQgfCBhc3luY1wiXG4gICAgICBbY2hlY2tlZF09XCJkaXNwbGF5TGluZXNcIlxuICAgICAgW2xhYmVsUG9zaXRpb25dPVwiJ2JlZm9yZSdcIlxuICAgICAgKGNoYW5nZSk9XCJvblRvZ2dsZURpc3BsYXlMaW5lcygkZXZlbnQuY2hlY2tlZClcIlxuICAgID5cbiAgICAgIHt7ICdpZ28uZ2VvLm1lYXN1cmUudG9nZ2xlRGlzcGxheUxpbmVzJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cblxuICAgIDxtYXQtZGl2aWRlciAqbmdJZj1cIihoYXNMaW5lJCB8IGFzeW5jKSB8fCAoaGFzQXJlYSQgfCBhc3luYylcIj48L21hdC1kaXZpZGVyPlxuXG4gICAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICAgICpuZ0lmPVwiaGFzQXJlYSQgfCBhc3luY1wiXG4gICAgICBbY2hlY2tlZF09XCJkaXNwbGF5RGlzdGFuY2VcIlxuICAgICAgW2xhYmVsUG9zaXRpb25dPVwiJ2JlZm9yZSdcIlxuICAgICAgKGNoYW5nZSk9XCJvblRvZ2dsZURpc3BsYXlEaXN0YW5jZSgkZXZlbnQuY2hlY2tlZClcIlxuICAgID5cbiAgICAgIHt7ICdpZ28uZ2VvLm1lYXN1cmUudG9nZ2xlRGlzcGxheURpc3RhbmNlJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cblxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlXG4gICAgICAqbmdJZj1cImhhc0FyZWEkIHwgYXN5bmNcIlxuICAgICAgW2NoZWNrZWRdPVwiZGlzcGxheUFyZWFzXCJcbiAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCJcbiAgICAgIChjaGFuZ2UpPVwib25Ub2dnbGVEaXNwbGF5QXJlYXMoJGV2ZW50LmNoZWNrZWQpXCJcbiAgICA+XG4gICAgICB7eyAnaWdvLmdlby5tZWFzdXJlLnRvZ2dsZURpc3BsYXlBcmVhcycgfCB0cmFuc2xhdGUgfX1cbiAgICA8L21hdC1zbGlkZS10b2dnbGU+XG5cbiAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCJoYXNBcmVhJCB8IGFzeW5jXCI+PC9tYXQtZGl2aWRlcj5cblxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlXG4gICAgICBbY2hlY2tlZF09XCJtZWFzdXJlVW5pdHNBdXRvXCJcbiAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCJcbiAgICAgIChjaGFuZ2UpPVwib25Ub2dnbGVNZWFzdXJlVW5pdHNBdXRvKCRldmVudC5jaGVja2VkKVwiXG4gICAgPlxuICAgICAge3sgJ2lnby5nZW8ubWVhc3VyZS50b2dnbGVBdXRvVW5pdHMnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICA8L2Rpdj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVhc3VyZSQgfCBhc3luYyBhcyBtZWFzdXJlXCI+XG4gICAgPGlnby1tZWFzdXJlci1pdGVtXG4gICAgICAqbmdJZj1cIlxuICAgICAgICBhY3RpdmVNZWFzdXJlVHlwZSA9PT0gbWVhc3VyZVR5cGUuTGVuZ3RoIHx8XG4gICAgICAgIGFjdGl2ZU1lYXN1cmVUeXBlID09PSBtZWFzdXJlVHlwZS5BcmVhXG4gICAgICBcIlxuICAgICAgW21lYXN1cmVUeXBlXT1cIm1lYXN1cmVUeXBlLkxlbmd0aFwiXG4gICAgICBbbWVhc3VyZVVuaXRdPVwiYWN0aXZlTGVuZ3RoVW5pdFwiXG4gICAgICBbbWVhc3VyZV09XCJtZWFzdXJlLmxlbmd0aFwiXG4gICAgICBbYXV0b109XCJtZWFzdXJlVW5pdHNBdXRvXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgKGFjdGl2ZU1lYXN1cmVUeXBlID09PSBtZWFzdXJlVHlwZS5BcmVhXG4gICAgICAgICAgPyAnaWdvLmdlby5tZWFzdXJlLnBlcmltZXRlcidcbiAgICAgICAgICA6ICdpZ28uZ2VvLm1lYXN1cmUubGVuZ3RoJ1xuICAgICAgICApIHwgdHJhbnNsYXRlXG4gICAgICBcIlxuICAgICAgKG1lYXN1cmVVbml0Q2hhbmdlKT1cIm9uTGVuZ3RoVW5pdENoYW5nZSgkYW55KCRldmVudCkpXCJcbiAgICA+XG4gICAgPC9pZ28tbWVhc3VyZXItaXRlbT5cblxuICAgIDxpZ28tbWVhc3VyZXItaXRlbVxuICAgICAgKm5nSWY9XCJhY3RpdmVNZWFzdXJlVHlwZSA9PT0gbWVhc3VyZVR5cGUuQXJlYVwiXG4gICAgICBbbWVhc3VyZVR5cGVdPVwibWVhc3VyZVR5cGUuQXJlYVwiXG4gICAgICBbbWVhc3VyZVVuaXRdPVwiYWN0aXZlQXJlYVVuaXRcIlxuICAgICAgW21lYXN1cmVdPVwibWVhc3VyZS5hcmVhXCJcbiAgICAgIFthdXRvXT1cIm1lYXN1cmVVbml0c0F1dG9cIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIidpZ28uZ2VvLm1lYXN1cmUuYXJlYScgfCB0cmFuc2xhdGVcIlxuICAgICAgKG1lYXN1cmVVbml0Q2hhbmdlKT1cIm9uQXJlYVVuaXRDaGFuZ2UoJGFueSgkZXZlbnQpKVwiXG4gICAgPlxuICAgIDwvaWdvLW1lYXN1cmVyLWl0ZW0+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxtYXQtZGl2aWRlciAqbmdJZj1cIihoYXNMaW5lJCB8IGFzeW5jKSB8fCAoaGFzQXJlYSQgfCBhc3luYylcIj48L21hdC1kaXZpZGVyPlxuXG4gIDxkaXYgY2xhc3M9XCJtZWFzdXJlLXN0b3JlLWJ1dHRvbnNcIj5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdJZj1cIihoYXNMaW5lJCB8IGFzeW5jKSB8fCAoaGFzQXJlYSQgfCBhc3luYylcIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5tZWFzdXJlLmFjdGlvbmJhci5jYWxjdWxhdGUudG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxuICAgICAgW2Rpc2FibGVkXT1cIihzZWxlY3RlZEZlYXR1cmVzJCB8IGFzeW5jKS5sZW5ndGggPT09IDBcIlxuICAgICAgY29sb3I9XCJhY2NlbnRcIlxuICAgICAgKGNsaWNrKT1cIm9uQ2FsY3VsYXRlQ2xpY2soKVwiXG4gICAgPlxuICAgICAgPG1hdC1pY29uPmNhbGN1bGF0ZTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdJZj1cIihoYXNMaW5lJCB8IGFzeW5jKSB8fCAoaGFzQXJlYSQgfCBhc3luYylcIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5tZWFzdXJlLmFjdGlvbmJhci5kZWxldGUudG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxuICAgICAgW2Rpc2FibGVkXT1cIihzZWxlY3RlZEZlYXR1cmVzJCB8IGFzeW5jKS5sZW5ndGggPT09IDBcIlxuICAgICAgY29sb3I9XCJ3YXJuXCJcbiAgICAgIChjbGljayk9XCJvbkRlbGV0ZUNsaWNrKClcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8aWdvLWVudGl0eS10YWJsZVxuICAgICN0YWJsZVxuICAgIGNsYXNzPVwidGFibGUtY29tcGFjdFwiXG4gICAgW3N0b3JlXT1cInN0b3JlXCJcbiAgICBbdGVtcGxhdGVdPVwidGFibGVUZW1wbGF0ZVwiXG4gID5cbiAgPC9pZ28tZW50aXR5LXRhYmxlPlxuPC9kaXY+XG4iXX0=
@@ -6,11 +6,11 @@ import * as i0 from "@angular/core";
6
6
  * @deprecated import the components directly or the MEASURER_DIRECTIVES for the set
7
7
  */
8
8
  export class IgoMeasurerModule {
9
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: IgoMeasurerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.9", ngImport: i0, type: IgoMeasurerModule, imports: [MeasureFormatPipe, MeasurerComponent], exports: [MeasureFormatPipe, MeasurerComponent] });
11
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: IgoMeasurerModule, imports: [MeasurerComponent] });
9
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: IgoMeasurerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.2", ngImport: i0, type: IgoMeasurerModule, imports: [MeasureFormatPipe, MeasurerComponent], exports: [MeasureFormatPipe, MeasurerComponent] });
11
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: IgoMeasurerModule, imports: [MeasurerComponent] });
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: IgoMeasurerModule, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: IgoMeasurerModule, decorators: [{
14
14
  type: NgModule,
15
15
  args: [{
16
16
  imports: [MeasureFormatPipe, MeasurerComponent],
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZS5pbnRlcmZhY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWVhc3VyZS9zaGFyZWQvbWVhc3VyZS5pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5pbnRlcmZhY2VzJztcbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uLy4uL21hcC9zaGFyZWQvbWFwJztcblxuZXhwb3J0IGludGVyZmFjZSBNZWFzdXJlIHtcbiAgYXJlYT86IG51bWJlcjtcbiAgbGVuZ3RoPzogbnVtYmVyO1xuICBsZW5ndGhzPzogbnVtYmVyW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVhc3VyZXJEaWFsb2dEYXRhIHtcbiAgYXJlYTogbnVtYmVyO1xuICBsZW5ndGg6IG51bWJlcjtcbiAgcGVyaW1ldGVyOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZVdpdGhNZWFzdXJlXG4gIGV4dGVuZHMgRmVhdHVyZTxGZWF0dXJlV2l0aE1lYXN1cmVQcm9wZXJ0aWVzPiB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVXaXRoTWVhc3VyZVByb3BlcnRpZXMge1xuICBpZDogc3RyaW5nO1xuICBtZWFzdXJlOiBNZWFzdXJlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVTdG9yZU1lYXN1cmVTdHJhdGVneU9wdGlvbnMge1xuICBtYXA6IElnb01hcDtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZS5pbnRlcmZhY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWVhc3VyZS9zaGFyZWQvbWVhc3VyZS5pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5pbnRlcmZhY2VzJztcbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uLy4uL21hcC9zaGFyZWQvbWFwJztcblxuZXhwb3J0IGludGVyZmFjZSBNZWFzdXJlIHtcbiAgYXJlYT86IG51bWJlcjtcbiAgbGVuZ3RoPzogbnVtYmVyO1xuICBsZW5ndGhzPzogbnVtYmVyW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVhc3VyZXJEaWFsb2dEYXRhIHtcbiAgYXJlYTogbnVtYmVyO1xuICBsZW5ndGg6IG51bWJlcjtcbiAgcGVyaW1ldGVyOiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIEZlYXR1cmVXaXRoTWVhc3VyZSA9IEZlYXR1cmU8RmVhdHVyZVdpdGhNZWFzdXJlUHJvcGVydGllcz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZVdpdGhNZWFzdXJlUHJvcGVydGllcyB7XG4gIGlkOiBzdHJpbmc7XG4gIG1lYXN1cmU6IE1lYXN1cmU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZVN0b3JlTWVhc3VyZVN0cmF0ZWd5T3B0aW9ucyB7XG4gIG1hcDogSWdvTWFwO1xufVxuIl19