@igo2/geo 1.14.2 → 1.15.1

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 (493) hide show
  1. package/assets/icons/cross_black_18px.svg +88 -88
  2. package/assets/icons/place_blue_36px.svg +55 -55
  3. package/assets/icons/place_green_36px.svg +55 -55
  4. package/assets/icons/place_red_36px.svg +55 -55
  5. package/assets/icons/place_yellow_36px.svg +55 -55
  6. package/esm2020/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +13 -11
  7. package/esm2020/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +10 -10
  8. package/esm2020/lib/catalog/catalog-browser/catalog-browser.component.mjs +20 -17
  9. package/esm2020/lib/catalog/catalog-browser/catalog-browser.module.mjs +1 -1
  10. package/esm2020/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +2 -2
  11. package/esm2020/lib/catalog/catalog-library/catalog-library-item.component.mjs +2 -2
  12. package/esm2020/lib/catalog/catalog-library/catalog-library.component.mjs +7 -12
  13. package/esm2020/lib/catalog/catalog-library/catalog-library.module.mjs +1 -1
  14. package/esm2020/lib/catalog/catalog.module.mjs +1 -1
  15. package/esm2020/lib/catalog/shared/catalog.abstract.mjs +1 -1
  16. package/esm2020/lib/catalog/shared/catalog.enum.mjs +1 -1
  17. package/esm2020/lib/catalog/shared/catalog.interface.mjs +1 -1
  18. package/esm2020/lib/catalog/shared/catalog.service.mjs +3 -5
  19. package/esm2020/lib/datasource/datasource.module.mjs +1 -1
  20. package/esm2020/lib/datasource/shared/capabilities.service.mjs +2 -2
  21. package/esm2020/lib/datasource/shared/datasource.service.mjs +27 -31
  22. package/esm2020/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
  23. package/esm2020/lib/datasource/shared/datasources/any-datasource.mjs +1 -1
  24. package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs +1 -1
  25. package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +1 -1
  26. package/esm2020/lib/datasource/shared/datasources/carto-datasource.interface.mjs +1 -1
  27. package/esm2020/lib/datasource/shared/datasources/carto-datasource.mjs +1 -1
  28. package/esm2020/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
  29. package/esm2020/lib/datasource/shared/datasources/cluster-datasource.mjs +1 -1
  30. package/esm2020/lib/datasource/shared/datasources/data.service.mjs +1 -1
  31. package/esm2020/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
  32. package/esm2020/lib/datasource/shared/datasources/datasource.mjs +1 -1
  33. package/esm2020/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
  34. package/esm2020/lib/datasource/shared/datasources/feature-datasource.mjs +1 -1
  35. package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
  36. package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +1 -1
  37. package/esm2020/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +1 -1
  38. package/esm2020/lib/datasource/shared/datasources/mvt-datasource.mjs +1 -1
  39. package/esm2020/lib/datasource/shared/datasources/osm-datasource.interface.mjs +1 -1
  40. package/esm2020/lib/datasource/shared/datasources/osm-datasource.mjs +1 -1
  41. package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +1 -1
  42. package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +1 -1
  43. package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
  44. package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.mjs +1 -1
  45. package/esm2020/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +1 -1
  46. package/esm2020/lib/datasource/shared/datasources/websocket-datasource.mjs +1 -1
  47. package/esm2020/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
  48. package/esm2020/lib/datasource/shared/datasources/wfs-datasource.mjs +1 -1
  49. package/esm2020/lib/datasource/shared/datasources/wfs.service.mjs +1 -1
  50. package/esm2020/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
  51. package/esm2020/lib/datasource/shared/datasources/wms-datasource.mjs +1 -1
  52. package/esm2020/lib/datasource/shared/datasources/wms-wfs.utils.mjs +1 -1
  53. package/esm2020/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
  54. package/esm2020/lib/datasource/shared/datasources/wmts-datasource.mjs +1 -1
  55. package/esm2020/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
  56. package/esm2020/lib/datasource/shared/datasources/xyz-datasource.mjs +1 -1
  57. package/esm2020/lib/datasource/shared/options/options-api.providers.mjs +1 -1
  58. package/esm2020/lib/datasource/shared/options/options-api.service.mjs +1 -1
  59. package/esm2020/lib/datasource/shared/options/options.service.mjs +1 -1
  60. package/esm2020/lib/datasource/utils/index.mjs +1 -2
  61. package/esm2020/lib/datasource/utils/tilegrid.mjs +1 -1
  62. package/esm2020/lib/directions/directions-buttons/directions-buttons.component.mjs +4 -10
  63. package/esm2020/lib/directions/directions-inputs/directions-inputs.component.mjs +2 -2
  64. package/esm2020/lib/directions/directions-results/directions-results.component.mjs +2 -2
  65. package/esm2020/lib/directions/directions-sources/directions-source.mjs +1 -1
  66. package/esm2020/lib/directions/directions-sources/directions-source.provider.mjs +1 -1
  67. package/esm2020/lib/directions/directions-sources/osrm-directions-source.mjs +1 -1
  68. package/esm2020/lib/directions/directions.component.mjs +2 -2
  69. package/esm2020/lib/directions/directions.module.mjs +1 -1
  70. package/esm2020/lib/directions/shared/directions-source.service.mjs +1 -1
  71. package/esm2020/lib/directions/shared/directions.interface.mjs +1 -1
  72. package/esm2020/lib/directions/shared/directions.service.mjs +1 -1
  73. package/esm2020/lib/directions/shared/directions.utils.mjs +2 -2
  74. package/esm2020/lib/directions/shared/store.mjs +1 -1
  75. package/esm2020/lib/download/download-button/download-button.component.mjs +2 -2
  76. package/esm2020/lib/download/download.module.mjs +1 -1
  77. package/esm2020/lib/download/shared/download.interface.mjs +1 -1
  78. package/esm2020/lib/download/shared/download.service.mjs +5 -8
  79. package/esm2020/lib/draw/draw/draw-layer-popup.component.mjs +2 -2
  80. package/esm2020/lib/draw/draw/draw-popup.component.mjs +3 -3
  81. package/esm2020/lib/draw/draw/draw-shorcuts.component.mjs +2 -2
  82. package/esm2020/lib/draw/draw/draw.component.mjs +11 -10
  83. package/esm2020/lib/draw/draw/draw.module.mjs +1 -1
  84. package/esm2020/lib/draw/drawingTool.module.mjs +1 -1
  85. package/esm2020/lib/draw/shared/draw-icon.service.mjs +1 -1
  86. package/esm2020/lib/draw/shared/draw.enum.mjs +1 -17
  87. package/esm2020/lib/draw/shared/draw.interface.mjs +1 -1
  88. package/esm2020/lib/draw/shared/draw.utils.mjs +1 -1
  89. package/esm2020/lib/draw/shared/index.mjs +1 -2
  90. package/esm2020/lib/feature/feature-details/feature-details.component.mjs +4 -5
  91. package/esm2020/lib/feature/feature-details/feature-details.directive.mjs +1 -1
  92. package/esm2020/lib/feature/feature-details/feature-details.module.mjs +1 -1
  93. package/esm2020/lib/feature/feature-form/feature-form.component.mjs +2 -2
  94. package/esm2020/lib/feature/feature-form/feature-form.module.mjs +1 -1
  95. package/esm2020/lib/feature/feature.module.mjs +1 -1
  96. package/esm2020/lib/feature/shared/feature.interfaces.mjs +1 -1
  97. package/esm2020/lib/feature/shared/feature.utils.mjs +7 -5
  98. package/esm2020/lib/feature/shared/store.mjs +10 -1
  99. package/esm2020/lib/feature/shared/strategies/in-map-extent.mjs +1 -1
  100. package/esm2020/lib/feature/shared/strategies/in-map-resolution.mjs +1 -1
  101. package/esm2020/lib/feature/shared/strategies/index.mjs +2 -1
  102. package/esm2020/lib/feature/shared/strategies/loading-layer.mjs +1 -1
  103. package/esm2020/lib/feature/shared/strategies/loading.mjs +1 -1
  104. package/esm2020/lib/feature/shared/strategies/search.mjs +150 -0
  105. package/esm2020/lib/feature/shared/strategies/selection.mjs +1 -1
  106. package/esm2020/lib/feature/shared/strategies.utils.mjs +1 -1
  107. package/esm2020/lib/filter/filter.module.mjs +1 -1
  108. package/esm2020/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +2 -2
  109. package/esm2020/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +2 -2
  110. package/esm2020/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +2 -2
  111. package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +2 -2
  112. package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +2 -2
  113. package/esm2020/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +2 -2
  114. package/esm2020/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +2 -2
  115. package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +1 -1
  116. package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +2 -2
  117. package/esm2020/lib/filter/shared/filterable-datasource.pipe.mjs +1 -1
  118. package/esm2020/lib/filter/shared/ogc-filter-time.service.mjs +1 -1
  119. package/esm2020/lib/filter/shared/ogc-filter.enum.mjs +1 -1
  120. package/esm2020/lib/filter/shared/ogc-filter.interface.mjs +1 -1
  121. package/esm2020/lib/filter/shared/ogc-filter.mjs +1 -1
  122. package/esm2020/lib/filter/shared/ogc-filter.service.mjs +1 -1
  123. package/esm2020/lib/filter/shared/spatial-filter.enum.mjs +1 -1
  124. package/esm2020/lib/filter/shared/spatial-filter.service.mjs +1 -1
  125. package/esm2020/lib/filter/shared/time-filter.enum.mjs +1 -1
  126. package/esm2020/lib/filter/shared/time-filter.interface.mjs +1 -1
  127. package/esm2020/lib/filter/shared/time-filter.service.mjs +1 -1
  128. package/esm2020/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +5 -5
  129. package/esm2020/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +6 -7
  130. package/esm2020/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +2 -2
  131. package/esm2020/lib/filter/time-filter-button/time-filter-button.component.mjs +2 -2
  132. package/esm2020/lib/filter/time-filter-form/time-filter-form.component.mjs +2 -2
  133. package/esm2020/lib/filter/time-filter-item/time-filter-item.component.mjs +2 -2
  134. package/esm2020/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +1 -1
  135. package/esm2020/lib/filter/time-filter-list/time-filter-list.component.mjs +2 -2
  136. package/esm2020/lib/geo.module.mjs +5 -1
  137. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +13 -12
  138. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +2 -2
  139. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +1 -1
  140. package/esm2020/lib/geometry/geometry.module.mjs +1 -1
  141. package/esm2020/lib/geometry/shared/controls/draw.mjs +1 -1
  142. package/esm2020/lib/geometry/shared/controls/modify.mjs +1 -1
  143. package/esm2020/lib/geometry/shared/controls/slice.mjs +1 -1
  144. package/esm2020/lib/geometry/shared/geometry.errors.mjs +1 -1
  145. package/esm2020/lib/geometry/shared/geometry.interfaces.mjs +1 -1
  146. package/esm2020/lib/geometry/shared/geometry.utils.mjs +1 -1
  147. package/esm2020/lib/import-export/export-button/export-button.component.mjs +2 -2
  148. package/esm2020/lib/import-export/import-export/import-export.component.mjs +53 -45
  149. package/esm2020/lib/import-export/import-export.module.mjs +5 -9
  150. package/esm2020/lib/import-export/index.mjs +1 -2
  151. package/esm2020/lib/import-export/shared/drop-geo-file.directive.mjs +31 -14
  152. package/esm2020/lib/import-export/shared/export.interface.mjs +1 -1
  153. package/esm2020/lib/import-export/shared/export.service.mjs +1 -1
  154. package/esm2020/lib/import-export/shared/export.type.mjs +1 -1
  155. package/esm2020/lib/import-export/shared/export.utils.mjs +8 -17
  156. package/esm2020/lib/import-export/shared/import.errors.mjs +1 -1
  157. package/esm2020/lib/import-export/shared/import.interface.mjs +1 -1
  158. package/esm2020/lib/import-export/shared/import.service.mjs +1 -1
  159. package/esm2020/lib/import-export/shared/import.utils.mjs +58 -91
  160. package/esm2020/lib/layer/index.mjs +1 -2
  161. package/esm2020/lib/layer/layer-item/layer-item.component.mjs +2 -2
  162. package/esm2020/lib/layer/layer-legend/layer-legend.component.mjs +3 -3
  163. package/esm2020/lib/layer/layer-legend-item/layer-legend-item.component.mjs +2 -2
  164. package/esm2020/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +1 -1
  165. package/esm2020/lib/layer/layer-legend-list/layer-legend-list.component.mjs +2 -2
  166. package/esm2020/lib/layer/layer-list/layer-list-binding.directive.mjs +1 -1
  167. package/esm2020/lib/layer/layer-list/layer-list.component.mjs +2 -2
  168. package/esm2020/lib/layer/layer-list/layer-list.enum.mjs +1 -1
  169. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.component.mjs +2 -2
  170. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +1 -1
  171. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.service.mjs +1 -1
  172. package/esm2020/lib/layer/layer.module.mjs +6 -11
  173. package/esm2020/lib/layer/shared/clusterParam.mjs +1 -1
  174. package/esm2020/lib/layer/shared/index.mjs +1 -3
  175. package/esm2020/lib/layer/shared/layer.service.mjs +80 -29
  176. package/esm2020/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
  177. package/esm2020/lib/layer/shared/layers/any-layer.mjs +1 -1
  178. package/esm2020/lib/layer/shared/layers/image-layer.interface.mjs +1 -1
  179. package/esm2020/lib/layer/shared/layers/image-layer.mjs +6 -7
  180. package/esm2020/lib/layer/shared/layers/layer.interface.mjs +1 -1
  181. package/esm2020/lib/layer/shared/layers/layer.mjs +5 -3
  182. package/esm2020/lib/layer/shared/layers/tile-layer.interface.mjs +1 -1
  183. package/esm2020/lib/layer/shared/layers/tile-layer.mjs +1 -1
  184. package/esm2020/lib/layer/shared/layers/vector-layer.interface.mjs +1 -1
  185. package/esm2020/lib/layer/shared/layers/vector-layer.mjs +155 -6
  186. package/esm2020/lib/layer/shared/layers/vectortile-layer.interface.mjs +1 -1
  187. package/esm2020/lib/layer/shared/layers/vectortile-layer.mjs +1 -1
  188. package/esm2020/lib/layer/track-feature-button/track-feature-button.component.mjs +2 -2
  189. package/esm2020/lib/layer/utils/image-watcher.mjs +3 -6
  190. package/esm2020/lib/layer/utils/layer.utils.mjs +2 -2
  191. package/esm2020/lib/layer/utils/outputLegend.mjs +3 -2
  192. package/esm2020/lib/layer/utils/tile-watcher.mjs +1 -1
  193. package/esm2020/lib/layer/utils/vector-watcher.mjs +1 -1
  194. package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +1 -1
  195. package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +2 -2
  196. package/esm2020/lib/map/baselayers-switcher/mini-basemap.component.mjs +2 -2
  197. package/esm2020/lib/map/geolocate-button/geolocate-button.component.mjs +2 -2
  198. package/esm2020/lib/map/info-section/info-section.component.mjs +2 -2
  199. package/esm2020/lib/map/map-browser/map-browser.component.mjs +3 -3
  200. package/esm2020/lib/map/map-center/map-center.component.mjs +2 -2
  201. package/esm2020/lib/map/map.module.mjs +1 -1
  202. package/esm2020/lib/map/menu-button/menu-button.component.mjs +3 -3
  203. package/esm2020/lib/map/offline-button/offline-button.component.mjs +34 -57
  204. package/esm2020/lib/map/rotation-button/rotation-button.component.mjs +2 -2
  205. package/esm2020/lib/map/shared/controllers/controller.mjs +1 -1
  206. package/esm2020/lib/map/shared/controllers/geolocation.mjs +151 -36
  207. package/esm2020/lib/map/shared/controllers/view.mjs +1 -1
  208. package/esm2020/lib/map/shared/hover-feature.directive.mjs +24 -73
  209. package/esm2020/lib/map/shared/linkedLayers.utils.mjs +3 -3
  210. package/esm2020/lib/map/shared/map-pointer-position.directive.mjs +1 -1
  211. package/esm2020/lib/map/shared/map.interface.mjs +1 -1
  212. package/esm2020/lib/map/shared/map.mjs +7 -5
  213. package/esm2020/lib/map/shared/map.service.mjs +1 -1
  214. package/esm2020/lib/map/shared/map.utils.mjs +1 -1
  215. package/esm2020/lib/map/shared/mapOffline.directive.mjs +50 -115
  216. package/esm2020/lib/map/shared/projection.interfaces.mjs +1 -1
  217. package/esm2020/lib/map/shared/projection.service.mjs +1 -1
  218. package/esm2020/lib/map/shared/projection.utils.mjs +1 -1
  219. package/esm2020/lib/map/swipe-control/swipe-control.component.mjs +3 -3
  220. package/esm2020/lib/map/utils/layer-watcher.mjs +1 -1
  221. package/esm2020/lib/map/wake-lock-button/wake-lock-button.component.mjs +24 -35
  222. package/esm2020/lib/map/zoom-button/zoom-button.component.mjs +2 -2
  223. package/esm2020/lib/measure/measure.module.mjs +1 -1
  224. package/esm2020/lib/measure/measurer/measure-format.pipe.mjs +1 -1
  225. package/esm2020/lib/measure/measurer/measurer-dialog.component.mjs +2 -2
  226. package/esm2020/lib/measure/measurer/measurer-item.component.mjs +2 -2
  227. package/esm2020/lib/measure/measurer/measurer.component.mjs +2 -2
  228. package/esm2020/lib/measure/measurer/measurer.module.mjs +1 -1
  229. package/esm2020/lib/measure/shared/measure.enum.mjs +1 -1
  230. package/esm2020/lib/measure/shared/measure.interfaces.mjs +1 -1
  231. package/esm2020/lib/measure/shared/measure.utils.mjs +1 -1
  232. package/esm2020/lib/metadata/metadata-button/metadata-button.component.mjs +3 -3
  233. package/esm2020/lib/metadata/metadata.module.mjs +1 -1
  234. package/esm2020/lib/metadata/shared/metadata.interface.mjs +1 -1
  235. package/esm2020/lib/metadata/shared/metadata.service.mjs +1 -1
  236. package/esm2020/lib/offline/geoDB/configFileToGeoDB.service.mjs +4 -4
  237. package/esm2020/lib/offline/geoDB/geoDB.enums.mjs +1 -1
  238. package/esm2020/lib/offline/geoDB/geoDB.interface.mjs +1 -1
  239. package/esm2020/lib/offline/geoDB/geoDB.service.mjs +2 -2
  240. package/esm2020/lib/offline/index.mjs +2 -1
  241. package/esm2020/lib/offline/layerDB/index.mjs +3 -0
  242. package/esm2020/lib/offline/layerDB/layerDB.interface.mjs +2 -0
  243. package/esm2020/lib/offline/layerDB/layerDB.service.mjs +76 -0
  244. package/esm2020/lib/offline/shared/geo-network.service.mjs +1 -1
  245. package/esm2020/lib/overlay/overlay.module.mjs +1 -1
  246. package/esm2020/lib/overlay/shared/index.mjs +1 -2
  247. package/esm2020/lib/overlay/shared/overlay.directive.mjs +1 -1
  248. package/esm2020/lib/overlay/shared/overlay.enum.mjs +1 -1
  249. package/esm2020/lib/overlay/shared/overlay.mjs +1 -1
  250. package/esm2020/lib/overlay/shared/overlay.service.mjs +1 -1
  251. package/esm2020/lib/overlay/shared/overlay.utils.mjs +2 -88
  252. package/esm2020/lib/print/print/print.component.mjs +6 -20
  253. package/esm2020/lib/print/print-form/print-form.component.mjs +197 -111
  254. package/esm2020/lib/print/print.module.mjs +1 -1
  255. package/esm2020/lib/print/shared/geopdf.mjs +1 -1
  256. package/esm2020/lib/print/shared/index.mjs +1 -1
  257. package/esm2020/lib/print/shared/print.interface.mjs +1 -1
  258. package/esm2020/lib/print/shared/print.service.mjs +85 -35
  259. package/esm2020/lib/print/shared/print.type.mjs +1 -1
  260. package/esm2020/lib/query/query.module.mjs +1 -1
  261. package/esm2020/lib/query/shared/query-search-source.mjs +1 -1
  262. package/esm2020/lib/query/shared/query-search-source.providers.mjs +1 -1
  263. package/esm2020/lib/query/shared/query.directive.mjs +1 -1
  264. package/esm2020/lib/query/shared/query.interfaces.mjs +1 -1
  265. package/esm2020/lib/query/shared/query.service.mjs +3 -5
  266. package/esm2020/lib/query/shared/query.utils.mjs +1 -1
  267. package/esm2020/lib/search/search-bar/search-bar.component.mjs +3 -3
  268. package/esm2020/lib/search/search-bar/search-bar.module.mjs +1 -1
  269. package/esm2020/lib/search/search-bar/search-url-param.directive.mjs +1 -1
  270. package/esm2020/lib/search/search-results/save-feature-dialog.component.mjs +4 -4
  271. package/esm2020/lib/search/search-results/search-results-add-button.component.mjs +88 -31
  272. package/esm2020/lib/search/search-results/search-results-item.component.mjs +36 -13
  273. package/esm2020/lib/search/search-results/search-results.component.mjs +172 -58
  274. package/esm2020/lib/search/search-results/search-results.module.mjs +5 -1
  275. package/esm2020/lib/search/search-selector/search-selector.component.mjs +2 -2
  276. package/esm2020/lib/search/search-selector/search-selector.module.mjs +1 -1
  277. package/esm2020/lib/search/search-settings/search-settings.component.mjs +54 -56
  278. package/esm2020/lib/search/search-settings/search-settings.module.mjs +1 -1
  279. package/esm2020/lib/search/search.module.mjs +1 -1
  280. package/esm2020/lib/search/shared/search-pointer-summary.directive.mjs +3 -30
  281. package/esm2020/lib/search/shared/search-source-service.providers.mjs +1 -1
  282. package/esm2020/lib/search/shared/search-source.service.mjs +9 -1
  283. package/esm2020/lib/search/shared/search.enums.mjs +1 -1
  284. package/esm2020/lib/search/shared/search.interfaces.mjs +1 -1
  285. package/esm2020/lib/search/shared/search.service.mjs +1 -1
  286. package/esm2020/lib/search/shared/search.utils.mjs +3 -3
  287. package/esm2020/lib/search/shared/sources/coordinates.interfaces.mjs +1 -1
  288. package/esm2020/lib/search/shared/sources/coordinates.mjs +1 -1
  289. package/esm2020/lib/search/shared/sources/coordinates.providers.mjs +4 -4
  290. package/esm2020/lib/search/shared/sources/icherche.interfaces.mjs +1 -1
  291. package/esm2020/lib/search/shared/sources/icherche.mjs +1 -1
  292. package/esm2020/lib/search/shared/sources/icherche.providers.mjs +1 -1
  293. package/esm2020/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
  294. package/esm2020/lib/search/shared/sources/ilayer.mjs +1 -1
  295. package/esm2020/lib/search/shared/sources/ilayer.providers.mjs +1 -1
  296. package/esm2020/lib/search/shared/sources/index.mjs +4 -1
  297. package/esm2020/lib/search/shared/sources/nominatim.mjs +2 -2
  298. package/esm2020/lib/search/shared/sources/nominatim.providers.mjs +1 -1
  299. package/esm2020/lib/search/shared/sources/source.interfaces.mjs +1 -1
  300. package/esm2020/lib/search/shared/sources/source.mjs +31 -1
  301. package/esm2020/lib/search/shared/sources/storedqueries.interfaces.mjs +1 -1
  302. package/esm2020/lib/search/shared/sources/storedqueries.mjs +1 -1
  303. package/esm2020/lib/search/shared/sources/storedqueries.providers.mjs +1 -1
  304. package/esm2020/lib/search/shared/sources/workspace.interfaces.mjs +2 -0
  305. package/esm2020/lib/search/shared/sources/workspace.mjs +186 -0
  306. package/esm2020/lib/search/shared/sources/workspace.providers.mjs +26 -0
  307. package/esm2020/lib/style/index.mjs +5 -0
  308. package/esm2020/lib/style/shared/datasource/esri-style-generator.mjs +357 -0
  309. package/esm2020/lib/style/shared/datasource/index.mjs +2 -0
  310. package/esm2020/lib/style/shared/feature/feature-style.mjs +141 -0
  311. package/esm2020/lib/style/shared/feature/index.mjs +2 -0
  312. package/esm2020/lib/style/shared/font.enum.mjs +17 -0
  313. package/esm2020/lib/style/shared/index.mjs +5 -0
  314. package/esm2020/lib/style/shared/overlay/index.mjs +3 -0
  315. package/esm2020/lib/style/shared/overlay/overlay-marker-style.utils.mjs +43 -0
  316. package/esm2020/lib/style/shared/overlay/overlay-style.utils.mjs +88 -0
  317. package/esm2020/lib/style/shared/vector/commonVectorStyle.mjs +75 -0
  318. package/esm2020/lib/style/shared/vector/conversion.utils.mjs +27 -0
  319. package/esm2020/lib/style/shared/vector/index.mjs +4 -0
  320. package/esm2020/lib/style/shared/vector/vector-style.interface.mjs +2 -0
  321. package/esm2020/lib/style/style-list/index.mjs +5 -0
  322. package/esm2020/lib/style/style-list/style-list.interface.mjs +2 -0
  323. package/esm2020/lib/style/style-list/style-list.module.mjs +23 -0
  324. package/esm2020/lib/style/style-list/style-list.provider.mjs +21 -0
  325. package/esm2020/lib/style/style-list/style-list.service.mjs +51 -0
  326. package/esm2020/lib/style/style-modal/drawing/index.mjs +2 -0
  327. package/esm2020/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +288 -0
  328. package/esm2020/lib/style/style-modal/index.mjs +5 -0
  329. package/esm2020/lib/style/style-modal/layer/index.mjs +2 -0
  330. package/esm2020/lib/style/style-modal/layer/style-modal-layer.component.mjs +187 -0
  331. package/esm2020/lib/style/style-modal/layer-button/index.mjs +2 -0
  332. package/esm2020/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +44 -0
  333. package/esm2020/lib/style/style-modal/shared/index.mjs +2 -0
  334. package/esm2020/lib/style/style-modal/shared/style-modal.interface.mjs +2 -0
  335. package/esm2020/lib/style/style-service/draw-style.service.mjs +187 -0
  336. package/esm2020/lib/style/style-service/index.mjs +3 -0
  337. package/esm2020/lib/style/style-service/style.service.mjs +356 -0
  338. package/esm2020/lib/style/style.module.mjs +74 -0
  339. package/esm2020/lib/toast/toast.component.mjs +3 -3
  340. package/esm2020/lib/toast/toast.module.mjs +1 -1
  341. package/esm2020/lib/utils/id-generator.mjs +1 -1
  342. package/esm2020/lib/utils/index.mjs +1 -3
  343. package/esm2020/lib/wkt/shared/wkt.service.mjs +15 -15
  344. package/esm2020/lib/wkt/wkt.module.mjs +1 -1
  345. package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +2 -2
  346. package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +1 -1
  347. package/esm2020/lib/workspace/confirmation-popup/index.mjs +1 -1
  348. package/esm2020/lib/workspace/shared/edition-workspace.mjs +1 -1
  349. package/esm2020/lib/workspace/shared/edition-workspace.service.mjs +19 -34
  350. package/esm2020/lib/workspace/shared/feature-workspace.mjs +1 -1
  351. package/esm2020/lib/workspace/shared/feature-workspace.service.mjs +10 -3
  352. package/esm2020/lib/workspace/shared/wfs-workspace.mjs +1 -1
  353. package/esm2020/lib/workspace/shared/wfs-workspace.service.mjs +2 -2
  354. package/esm2020/lib/workspace/shared/wms-workspace.service.mjs +3 -3
  355. package/esm2020/lib/workspace/shared/workspace.utils.mjs +1 -1
  356. package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +2 -2
  357. package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +1 -1
  358. package/esm2020/lib/workspace/widgets/widgets.mjs +1 -1
  359. package/esm2020/lib/workspace/workspace-selector/workspace-selector.directive.mjs +1 -1
  360. package/esm2020/lib/workspace/workspace-selector/workspace-selector.module.mjs +1 -1
  361. package/esm2020/lib/workspace/workspace-updator/workspace-updator.directive.mjs +1 -1
  362. package/esm2020/lib/workspace/workspace-updator/workspace-updator.module.mjs +1 -1
  363. package/esm2020/lib/workspace/workspace.module.mjs +1 -1
  364. package/esm2020/public_api.mjs +3 -1
  365. package/fesm2015/igo2-geo.mjs +6707 -5364
  366. package/fesm2015/igo2-geo.mjs.map +1 -1
  367. package/fesm2020/igo2-geo.mjs +7617 -6346
  368. package/fesm2020/igo2-geo.mjs.map +1 -1
  369. package/lib/catalog/catalog-browser/catalog-browser-group.component.d.ts +5 -14
  370. package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +2 -5
  371. package/lib/catalog/catalog-browser/catalog-browser.component.d.ts +3 -9
  372. package/lib/catalog/catalog-library/catalog-library.component.d.ts +2 -3
  373. package/lib/catalog/shared/catalog.interface.d.ts +10 -0
  374. package/lib/datasource/shared/datasources/datasource.interface.d.ts +13 -0
  375. package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +5 -0
  376. package/lib/datasource/utils/index.d.ts +0 -1
  377. package/lib/download/shared/download.service.d.ts +2 -3
  378. package/lib/draw/draw/draw.component.d.ts +3 -2
  379. package/lib/draw/shared/draw.enum.d.ts +0 -15
  380. package/lib/draw/shared/index.d.ts +0 -1
  381. package/lib/feature/shared/feature.interfaces.d.ts +5 -0
  382. package/lib/feature/shared/feature.utils.d.ts +4 -2
  383. package/lib/feature/shared/store.d.ts +7 -0
  384. package/lib/feature/shared/strategies/index.d.ts +1 -0
  385. package/lib/feature/shared/strategies/search.d.ts +55 -0
  386. package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +2 -3
  387. package/lib/geo.module.d.ts +3 -2
  388. package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +5 -9
  389. package/lib/geometry/geometry-form-field/geometry-form-field.component.d.ts +3 -3
  390. package/lib/import-export/import-export/import-export.component.d.ts +9 -4
  391. package/lib/import-export/import-export.module.d.ts +1 -2
  392. package/lib/import-export/index.d.ts +0 -1
  393. package/lib/import-export/shared/drop-geo-file.directive.d.ts +10 -7
  394. package/lib/import-export/shared/export.utils.d.ts +4 -4
  395. package/lib/import-export/shared/import.interface.d.ts +2 -0
  396. package/lib/import-export/shared/import.utils.d.ts +14 -12
  397. package/lib/layer/index.d.ts +0 -1
  398. package/lib/layer/layer.module.d.ts +19 -20
  399. package/lib/layer/shared/index.d.ts +0 -2
  400. package/lib/layer/shared/layer.service.d.ts +8 -5
  401. package/lib/layer/shared/layers/image-layer.d.ts +2 -3
  402. package/lib/layer/shared/layers/layer.d.ts +5 -1
  403. package/lib/layer/shared/layers/layer.interface.d.ts +2 -0
  404. package/lib/layer/shared/layers/vector-layer.d.ts +18 -2
  405. package/lib/layer/shared/layers/vector-layer.interface.d.ts +8 -7
  406. package/lib/layer/shared/layers/vectortile-layer.interface.d.ts +2 -4
  407. package/lib/layer/utils/image-watcher.d.ts +2 -3
  408. package/lib/map/offline-button/offline-button.component.d.ts +10 -18
  409. package/lib/map/shared/controllers/geolocation.d.ts +17 -2
  410. package/lib/map/shared/hover-feature.directive.d.ts +2 -10
  411. package/lib/map/shared/map.d.ts +2 -2
  412. package/lib/map/shared/mapOffline.directive.d.ts +4 -7
  413. package/lib/map/wake-lock-button/wake-lock-button.component.d.ts +3 -6
  414. package/lib/offline/geoDB/geoDB.service.d.ts +1 -1
  415. package/lib/offline/index.d.ts +1 -0
  416. package/lib/offline/layerDB/index.d.ts +2 -0
  417. package/lib/offline/layerDB/layerDB.interface.d.ts +7 -0
  418. package/lib/offline/layerDB/layerDB.service.d.ts +36 -0
  419. package/lib/overlay/shared/index.d.ts +0 -1
  420. package/lib/overlay/shared/overlay.utils.d.ts +0 -11
  421. package/lib/print/print-form/print-form.component.d.ts +2 -0
  422. package/lib/print/shared/print.service.d.ts +6 -0
  423. package/lib/search/search-results/save-feature-dialog.component.d.ts +1 -1
  424. package/lib/search/search-results/search-results-add-button.component.d.ts +10 -2
  425. package/lib/search/search-results/search-results-item.component.d.ts +5 -0
  426. package/lib/search/search-results/search-results.component.d.ts +5 -1
  427. package/lib/search/search-results/search-results.module.d.ts +11 -10
  428. package/lib/search/shared/search-pointer-summary.directive.d.ts +0 -9
  429. package/lib/search/shared/search-source.service.d.ts +7 -0
  430. package/lib/search/shared/search.interfaces.d.ts +1 -1
  431. package/lib/search/shared/sources/coordinates.providers.d.ts +3 -3
  432. package/lib/search/shared/sources/index.d.ts +3 -0
  433. package/lib/search/shared/sources/source.d.ts +6 -0
  434. package/lib/search/shared/sources/workspace.d.ts +33 -0
  435. package/lib/search/shared/sources/workspace.interfaces.d.ts +9 -0
  436. package/lib/search/shared/sources/workspace.providers.d.ts +17 -0
  437. package/lib/style/index.d.ts +4 -0
  438. package/lib/style/shared/datasource/index.d.ts +1 -0
  439. package/lib/style/shared/feature/feature-style.d.ts +18 -0
  440. package/lib/style/shared/feature/index.d.ts +1 -0
  441. package/lib/style/shared/font.enum.d.ts +15 -0
  442. package/lib/style/shared/index.d.ts +4 -0
  443. package/lib/style/shared/overlay/index.d.ts +2 -0
  444. package/lib/style/shared/overlay/overlay-style.utils.d.ts +19 -0
  445. package/lib/{utils → style/shared/vector}/commonVectorStyle.d.ts +4 -4
  446. package/lib/style/shared/vector/conversion.utils.d.ts +22 -0
  447. package/lib/style/shared/vector/index.d.ts +3 -0
  448. package/lib/style/shared/vector/vector-style.interface.d.ts +69 -0
  449. package/lib/style/style-modal/drawing/index.d.ts +1 -0
  450. package/lib/style/style-modal/drawing/style-modal-drawing.component.d.ts +31 -0
  451. package/lib/style/style-modal/index.d.ts +4 -0
  452. package/lib/style/style-modal/layer/index.d.ts +1 -0
  453. package/lib/style/style-modal/layer/style-modal-layer.component.d.ts +30 -0
  454. package/lib/style/style-modal/layer-button/index.d.ts +1 -0
  455. package/lib/style/style-modal/layer-button/style-modal-layer-button.component.d.ts +14 -0
  456. package/lib/style/style-modal/shared/index.d.ts +1 -0
  457. package/lib/style/style-modal/shared/style-modal.interface.d.ts +17 -0
  458. package/lib/{draw/shared → style/style-service}/draw-style.service.d.ts +3 -4
  459. package/lib/style/style-service/index.d.ts +2 -0
  460. package/lib/{layer/shared → style/style-service}/style.service.d.ts +5 -5
  461. package/lib/style/style.module.d.ts +22 -0
  462. package/lib/utils/index.d.ts +0 -2
  463. package/lib/workspace/shared/edition-workspace.service.d.ts +3 -4
  464. package/lib/workspace/shared/wms-workspace.service.d.ts +1 -1
  465. package/ngcc.config.js +3 -3
  466. package/package.json +17 -11
  467. package/public_api.d.ts +2 -0
  468. package/style/geo.theming.scss +12 -12
  469. package/esm2020/lib/datasource/utils/esri-style-generator.mjs +0 -357
  470. package/esm2020/lib/draw/shared/draw-style.service.mjs +0 -190
  471. package/esm2020/lib/import-export/style-list/index.mjs +0 -5
  472. package/esm2020/lib/import-export/style-list/style-list.interface.mjs +0 -2
  473. package/esm2020/lib/import-export/style-list/style-list.module.mjs +0 -23
  474. package/esm2020/lib/import-export/style-list/style-list.provider.mjs +0 -21
  475. package/esm2020/lib/import-export/style-list/style-list.service.mjs +0 -51
  476. package/esm2020/lib/layer/shared/style.service.mjs +0 -356
  477. package/esm2020/lib/layer/shared/vector-style.interface.mjs +0 -2
  478. package/esm2020/lib/layer/style-modal/index.mjs +0 -2
  479. package/esm2020/lib/layer/style-modal/style-modal.component.mjs +0 -288
  480. package/esm2020/lib/overlay/shared/overlay-marker-style.utils.mjs +0 -69
  481. package/esm2020/lib/utils/commonVectorStyle.interface.mjs +0 -2
  482. package/esm2020/lib/utils/commonVectorStyle.mjs +0 -75
  483. package/lib/layer/shared/vector-style.interface.d.ts +0 -38
  484. package/lib/layer/style-modal/index.d.ts +0 -1
  485. package/lib/layer/style-modal/style-modal.component.d.ts +0 -42
  486. package/lib/utils/commonVectorStyle.interface.d.ts +0 -16
  487. /package/lib/{datasource/utils → style/shared/datasource}/esri-style-generator.d.ts +0 -0
  488. /package/lib/{overlay/shared → style/shared/overlay}/overlay-marker-style.utils.d.ts +0 -0
  489. /package/lib/{import-export → style}/style-list/index.d.ts +0 -0
  490. /package/lib/{import-export → style}/style-list/style-list.interface.d.ts +0 -0
  491. /package/lib/{import-export → style}/style-list/style-list.module.d.ts +0 -0
  492. /package/lib/{import-export → style}/style-list/style-list.provider.d.ts +0 -0
  493. /package/lib/{import-export → style}/style-list/style-list.service.d.ts +0 -0
@@ -12,91 +12,125 @@ import * as i7 from "@angular/material/input";
12
12
  import * as i8 from "@angular/material/slide-toggle";
13
13
  import * as i9 from "@ngx-translate/core";
14
14
  import * as i10 from "@igo2/common";
15
- function PrintFormComponent_mat_option_28_ng_container_1_Template(rf, ctx) { if (rf & 1) {
15
+ const _c0 = function (a0) { return { column: a0, value: 130 }; };
16
+ function PrintFormComponent_mat_error_5_Template(rf, ctx) { if (rf & 1) {
17
+ i0.ɵɵelementStart(0, "mat-error");
18
+ i0.ɵɵtext(1);
19
+ i0.ɵɵpipe(2, "translate");
20
+ i0.ɵɵpipe(3, "translate");
21
+ i0.ɵɵelementEnd();
22
+ } if (rf & 2) {
23
+ i0.ɵɵadvance(1);
24
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, "igo.geo.formValidation.maxLength", i0.ɵɵpureFunction1(6, _c0, i0.ɵɵpipeBind1(3, 4, "igo.geo.printForm.title"))));
25
+ } }
26
+ const _c1 = function (a0) { return { column: a0, value: 120 }; };
27
+ function PrintFormComponent_mat_error_10_Template(rf, ctx) { if (rf & 1) {
28
+ i0.ɵɵelementStart(0, "mat-error");
29
+ i0.ɵɵtext(1);
30
+ i0.ɵɵpipe(2, "translate");
31
+ i0.ɵɵpipe(3, "translate");
32
+ i0.ɵɵelementEnd();
33
+ } if (rf & 2) {
34
+ i0.ɵɵadvance(1);
35
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, "igo.geo.formValidation.maxLength", i0.ɵɵpureFunction1(6, _c1, i0.ɵɵpipeBind1(3, 4, "igo.geo.printForm.subtitle"))));
36
+ } }
37
+ const _c2 = function (a0, a1) { return { column: a0, value: a1 }; };
38
+ function PrintFormComponent_mat_error_15_Template(rf, ctx) { if (rf & 1) {
39
+ i0.ɵɵelementStart(0, "mat-error");
40
+ i0.ɵɵtext(1);
41
+ i0.ɵɵpipe(2, "translate");
42
+ i0.ɵɵpipe(3, "translate");
43
+ i0.ɵɵelementEnd();
44
+ } if (rf & 2) {
45
+ const ctx_r2 = i0.ɵɵnextContext();
46
+ i0.ɵɵadvance(1);
47
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, "igo.geo.formValidation.maxLength", i0.ɵɵpureFunction2(6, _c2, i0.ɵɵpipeBind1(3, 4, "igo.geo.printForm.comment"), ctx_r2.maxLength)));
48
+ } }
49
+ function PrintFormComponent_mat_option_31_ng_container_1_Template(rf, ctx) { if (rf & 1) {
16
50
  i0.ɵɵelementContainerStart(0);
17
51
  i0.ɵɵtext(1);
18
52
  i0.ɵɵpipe(2, "translate");
19
53
  i0.ɵɵelementContainerEnd();
20
54
  } if (rf & 2) {
21
- const legendPosition_r6 = i0.ɵɵnextContext().$implicit;
55
+ const legendPosition_r9 = i0.ɵɵnextContext().$implicit;
22
56
  i0.ɵɵadvance(1);
23
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "igo.geo.printForm.legendPositions." + legendPosition_r6.value), " ");
57
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "igo.geo.printForm.legendPositions." + legendPosition_r9.value), " ");
24
58
  } }
25
- function PrintFormComponent_mat_option_28_ng_container_2_Template(rf, ctx) { if (rf & 1) {
59
+ function PrintFormComponent_mat_option_31_ng_container_2_Template(rf, ctx) { if (rf & 1) {
26
60
  i0.ɵɵelementContainerStart(0);
27
61
  i0.ɵɵtext(1);
28
62
  i0.ɵɵpipe(2, "translate");
29
63
  i0.ɵɵelementContainerEnd();
30
64
  } if (rf & 2) {
31
- const ctx_r8 = i0.ɵɵnextContext(2);
65
+ const ctx_r11 = i0.ɵɵnextContext(2);
32
66
  i0.ɵɵadvance(1);
33
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, ctx_r8.outputFormat === "Pdf" ? "igo.geo.printForm.legendPositions.newpage" : "igo.geo.printForm.legendPositions.newimage"), " ");
67
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, ctx_r11.outputFormat === "Pdf" ? "igo.geo.printForm.legendPositions.newpage" : "igo.geo.printForm.legendPositions.newimage"), " ");
34
68
  } }
35
- const _c0 = function () { return ["newpage", "newimage"]; };
36
- function PrintFormComponent_mat_option_28_Template(rf, ctx) { if (rf & 1) {
37
- i0.ɵɵelementStart(0, "mat-option", 19);
38
- i0.ɵɵtemplate(1, PrintFormComponent_mat_option_28_ng_container_1_Template, 3, 3, "ng-container", 20);
39
- i0.ɵɵtemplate(2, PrintFormComponent_mat_option_28_ng_container_2_Template, 3, 3, "ng-container", 20);
69
+ const _c3 = function () { return ["newpage", "newimage"]; };
70
+ function PrintFormComponent_mat_option_31_Template(rf, ctx) { if (rf & 1) {
71
+ i0.ɵɵelementStart(0, "mat-option", 20);
72
+ i0.ɵɵtemplate(1, PrintFormComponent_mat_option_31_ng_container_1_Template, 3, 3, "ng-container", 3);
73
+ i0.ɵɵtemplate(2, PrintFormComponent_mat_option_31_ng_container_2_Template, 3, 3, "ng-container", 3);
40
74
  i0.ɵɵelementEnd();
41
75
  } if (rf & 2) {
42
- const legendPosition_r6 = ctx.$implicit;
43
- i0.ɵɵproperty("value", legendPosition_r6.key);
76
+ const legendPosition_r9 = ctx.$implicit;
77
+ i0.ɵɵproperty("value", legendPosition_r9.key);
44
78
  i0.ɵɵadvance(1);
45
- i0.ɵɵproperty("ngIf", !i0.ɵɵpureFunction0(3, _c0).includes(legendPosition_r6.value));
79
+ i0.ɵɵproperty("ngIf", !i0.ɵɵpureFunction0(3, _c3).includes(legendPosition_r9.value));
46
80
  i0.ɵɵadvance(1);
47
- i0.ɵɵproperty("ngIf", i0.ɵɵpureFunction0(4, _c0).includes(legendPosition_r6.value));
81
+ i0.ɵɵproperty("ngIf", i0.ɵɵpureFunction0(4, _c3).includes(legendPosition_r9.value));
48
82
  } }
49
- function PrintFormComponent_mat_option_34_Template(rf, ctx) { if (rf & 1) {
50
- i0.ɵɵelementStart(0, "mat-option", 19);
83
+ function PrintFormComponent_mat_option_37_Template(rf, ctx) { if (rf & 1) {
84
+ i0.ɵɵelementStart(0, "mat-option", 20);
51
85
  i0.ɵɵtext(1);
52
86
  i0.ɵɵelementEnd();
53
87
  } if (rf & 2) {
54
- const outputFormat_r10 = ctx.$implicit;
55
- i0.ɵɵproperty("value", outputFormat_r10.key);
88
+ const outputFormat_r13 = ctx.$implicit;
89
+ i0.ɵɵproperty("value", outputFormat_r13.key);
56
90
  i0.ɵɵadvance(1);
57
- i0.ɵɵtextInterpolate1(" ", outputFormat_r10.value, " ");
91
+ i0.ɵɵtextInterpolate1(" ", outputFormat_r13.value, " ");
58
92
  } }
59
- function PrintFormComponent_mat_option_40_Template(rf, ctx) { if (rf & 1) {
60
- i0.ɵɵelementStart(0, "mat-option", 19);
93
+ function PrintFormComponent_mat_option_43_Template(rf, ctx) { if (rf & 1) {
94
+ i0.ɵɵelementStart(0, "mat-option", 20);
61
95
  i0.ɵɵtext(1);
62
96
  i0.ɵɵpipe(2, "translate");
63
97
  i0.ɵɵelementEnd();
64
98
  } if (rf & 2) {
65
- const paperFormat_r11 = ctx.$implicit;
66
- i0.ɵɵproperty("value", paperFormat_r11.key);
99
+ const paperFormat_r14 = ctx.$implicit;
100
+ i0.ɵɵproperty("value", paperFormat_r14.key);
67
101
  i0.ɵɵadvance(1);
68
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.geo.printForm.paperFormats." + paperFormat_r11.value), " ");
102
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.geo.printForm.paperFormats." + paperFormat_r14.value), " ");
69
103
  } }
70
- function PrintFormComponent_mat_option_46_Template(rf, ctx) { if (rf & 1) {
71
- i0.ɵɵelementStart(0, "mat-option", 19);
104
+ function PrintFormComponent_mat_option_49_Template(rf, ctx) { if (rf & 1) {
105
+ i0.ɵɵelementStart(0, "mat-option", 20);
72
106
  i0.ɵɵtext(1);
73
107
  i0.ɵɵelementEnd();
74
108
  } if (rf & 2) {
75
- const imageFormat_r12 = ctx.$implicit;
76
- i0.ɵɵproperty("value", imageFormat_r12.key);
109
+ const imageFormat_r15 = ctx.$implicit;
110
+ i0.ɵɵproperty("value", imageFormat_r15.key);
77
111
  i0.ɵɵadvance(1);
78
- i0.ɵɵtextInterpolate1(" ", imageFormat_r12.value, " ");
112
+ i0.ɵɵtextInterpolate1(" ", imageFormat_r15.value, " ");
79
113
  } }
80
- function PrintFormComponent_mat_option_52_Template(rf, ctx) { if (rf & 1) {
81
- i0.ɵɵelementStart(0, "mat-option", 19);
114
+ function PrintFormComponent_mat_option_55_Template(rf, ctx) { if (rf & 1) {
115
+ i0.ɵɵelementStart(0, "mat-option", 20);
82
116
  i0.ɵɵtext(1);
83
117
  i0.ɵɵelementEnd();
84
118
  } if (rf & 2) {
85
- const resolution_r13 = ctx.$implicit;
86
- i0.ɵɵproperty("value", resolution_r13.key);
119
+ const resolution_r16 = ctx.$implicit;
120
+ i0.ɵɵproperty("value", resolution_r16.key);
87
121
  i0.ɵɵadvance(1);
88
- i0.ɵɵtextInterpolate1(" ", resolution_r13.value + " PPI", " ");
122
+ i0.ɵɵtextInterpolate1(" ", resolution_r16.value + " PPI", " ");
89
123
  } }
90
- function PrintFormComponent_mat_option_58_Template(rf, ctx) { if (rf & 1) {
91
- i0.ɵɵelementStart(0, "mat-option", 19);
124
+ function PrintFormComponent_mat_option_61_Template(rf, ctx) { if (rf & 1) {
125
+ i0.ɵɵelementStart(0, "mat-option", 20);
92
126
  i0.ɵɵtext(1);
93
127
  i0.ɵɵpipe(2, "translate");
94
128
  i0.ɵɵelementEnd();
95
129
  } if (rf & 2) {
96
- const orientation_r14 = ctx.$implicit;
97
- i0.ɵɵproperty("value", orientation_r14.key);
130
+ const orientation_r17 = ctx.$implicit;
131
+ i0.ɵɵproperty("value", orientation_r17.key);
98
132
  i0.ɵɵadvance(1);
99
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.geo.printForm." + orientation_r14.value), " ");
133
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.geo.printForm." + orientation_r17.value), " ");
100
134
  } }
101
135
  export class PrintFormComponent {
102
136
  constructor(formBuilder) {
@@ -109,10 +143,11 @@ export class PrintFormComponent {
109
143
  this.legendPositions = PrintLegendPosition;
110
144
  this.isPrintService = true;
111
145
  this.submit = new EventEmitter();
146
+ this.maxLength = 180;
112
147
  this.form = this.formBuilder.group({
113
- title: ['', []],
114
- subtitle: ['', []],
115
- comment: ['', []],
148
+ title: ['', [Validators.minLength(0), Validators.maxLength(130)]],
149
+ subtitle: ['', [Validators.minLength(0), Validators.maxLength(120)]],
150
+ comment: ['', [Validators.minLength(0), Validators.maxLength(this.maxLength)]],
116
151
  outputFormat: ['', [Validators.required]],
117
152
  paperFormat: ['', [Validators.required]],
118
153
  imageFormat: ['', [Validators.required]],
@@ -266,134 +301,185 @@ export class PrintFormComponent {
266
301
  toggleImageSaveProp() {
267
302
  if (this.outputFormatField.value === 'Image') {
268
303
  this.isPrintService = false;
304
+ this.commentField.clearValidators();
305
+ this.commentField.updateValueAndValidity();
269
306
  }
270
307
  else {
271
308
  this.isPrintService = true;
272
309
  }
273
310
  }
311
+ changeCommentLength() {
312
+ switch (this.paperFormat) {
313
+ case PrintPaperFormat.A0:
314
+ // A0, landscape, length 900 | A0, portrait, comment length: 600
315
+ this.maxLength = (this.orientation === PrintOrientation.landscape) ? 900 : 600;
316
+ break;
317
+ case PrintPaperFormat.A1:
318
+ // A1, landscape, length 600 | A1, portrait, length 400;
319
+ this.maxLength = (this.orientation === PrintOrientation.landscape) ? 600 : 400;
320
+ break;
321
+ case PrintPaperFormat.A2:
322
+ // A2, landscape, length 400 | A2, portrait, length 300;
323
+ this.maxLength = (this.orientation === PrintOrientation.landscape) ? 400 : 300;
324
+ break;
325
+ case PrintPaperFormat.A3:
326
+ // A3, landscape, length 300 | A3, portrait, length 200;
327
+ this.maxLength = (this.orientation === PrintOrientation.landscape) ? 300 : 200;
328
+ break;
329
+ case PrintPaperFormat.A4:
330
+ // A4, landscape length 200 | A4, portrait length 120;
331
+ this.maxLength = (this.orientation === PrintOrientation.landscape) ? 200 : 100;
332
+ break;
333
+ case PrintPaperFormat.A5:
334
+ // A5, landscape length 120 | A5, portrait length 80;
335
+ this.maxLength = (this.orientation === PrintOrientation.landscape) ? 120 : 80;
336
+ break;
337
+ case PrintPaperFormat.Letter:
338
+ // lettre, landscape, 180 | lettre, portrait, 140
339
+ this.maxLength = (this.orientation === PrintOrientation.landscape) ? 180 : 140;
340
+ break;
341
+ default:
342
+ // legal, landscape, 200 | legal, portrait, 140
343
+ this.maxLength = (this.orientation === PrintOrientation.landscape) ? 200 : 140;
344
+ break;
345
+ }
346
+ this.commentField.setValidators([Validators.maxLength(this.maxLength)]);
347
+ this.commentField.updateValueAndValidity();
348
+ }
274
349
  }
275
350
  PrintFormComponent.ɵfac = function PrintFormComponent_Factory(t) { return new (t || PrintFormComponent)(i0.ɵɵdirectiveInject(i1.UntypedFormBuilder)); };
276
- PrintFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrintFormComponent, selectors: [["igo-print-form"]], inputs: { disabled$: "disabled$", imageFormat: "imageFormat", outputFormat: "outputFormat", paperFormat: "paperFormat", orientation: "orientation", resolution: "resolution", legendPosition: "legendPosition", title: "title", subtitle: "subtitle", comment: "comment", showProjection: "showProjection", showScale: "showScale", showLegend: "showLegend", doZipFile: "doZipFile" }, outputs: { submit: "submit" }, decls: 65, vars: 72, consts: [[1, "igo-form", 3, "formGroup"], [1, "igo-input-container"], ["matInput", "", "formControlName", "title", 3, "placeholder"], ["matInput", "", "formControlName", "subtitle", 3, "placeholder"], ["matInput", "", "formControlName", "comment", 3, "placeholder"], [1, "print-slide-toggle-container", "mat-typography"], ["formControlName", "showProjection", 1, "print-option", 3, "labelPosition"], ["formControlName", "showScale", 1, "print-option", 3, "labelPosition"], ["formControlName", "doZipFile", 1, "print-option", 3, "labelPosition"], ["formControlName", "legendPosition", 3, "placeholder"], [3, "value", 4, "ngFor", "ngForOf"], ["formControlName", "outputFormat", 3, "placeholder", "selectionChange"], ["formControlName", "paperFormat", 3, "placeholder"], ["formControlName", "imageFormat", 3, "placeholder"], [1, "igo-input-container", 2, "display", "none"], ["formControlName", "resolution", 3, "placeholder"], ["formControlName", "orientation", 3, "placeholder"], [1, "igo-form-button-group", "print-button-top-padding"], ["mat-raised-button", "", "type", "button", 3, "disabled", "click"], [3, "value"], [4, "ngIf"]], template: function PrintFormComponent_Template(rf, ctx) { if (rf & 1) {
351
+ PrintFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrintFormComponent, selectors: [["igo-print-form"]], inputs: { disabled$: "disabled$", imageFormat: "imageFormat", outputFormat: "outputFormat", paperFormat: "paperFormat", orientation: "orientation", resolution: "resolution", legendPosition: "legendPosition", title: "title", subtitle: "subtitle", comment: "comment", showProjection: "showProjection", showScale: "showScale", showLegend: "showLegend", doZipFile: "doZipFile" }, outputs: { submit: "submit" }, decls: 68, vars: 75, consts: [[1, "igo-form", 3, "formGroup"], [1, "igo-input-container"], ["matInput", "", "formControlName", "title", 3, "placeholder"], [4, "ngIf"], ["matInput", "", "formControlName", "subtitle", 3, "placeholder"], ["matInput", "", "formControlName", "comment", 3, "placeholder"], [1, "print-slide-toggle-container", "mat-typography"], ["formControlName", "showProjection", 1, "print-option", 3, "labelPosition"], ["formControlName", "showScale", 1, "print-option", 3, "labelPosition"], ["formControlName", "doZipFile", 1, "print-option", 3, "labelPosition"], ["formControlName", "legendPosition", 3, "placeholder"], [3, "value", 4, "ngFor", "ngForOf"], ["formControlName", "outputFormat", 3, "placeholder", "selectionChange"], ["formControlName", "paperFormat", 3, "placeholder", "selectionChange"], ["formControlName", "imageFormat", 3, "placeholder"], [1, "igo-input-container", 2, "display", "none"], ["formControlName", "resolution", 3, "placeholder"], ["formControlName", "orientation", 3, "placeholder", "selectionChange"], [1, "igo-form-button-group", "print-button-top-padding"], ["mat-raised-button", "", "type", "button", 3, "disabled", "click"], [3, "value"]], template: function PrintFormComponent_Template(rf, ctx) { if (rf & 1) {
277
352
  i0.ɵɵelementStart(0, "form", 0)(1, "div", 1)(2, "mat-form-field");
278
353
  i0.ɵɵelement(3, "input", 2);
279
354
  i0.ɵɵpipe(4, "translate");
355
+ i0.ɵɵtemplate(5, PrintFormComponent_mat_error_5_Template, 4, 8, "mat-error", 3);
280
356
  i0.ɵɵelementEnd()();
281
- i0.ɵɵelementStart(5, "div", 1)(6, "mat-form-field");
282
- i0.ɵɵelement(7, "input", 3);
283
- i0.ɵɵpipe(8, "translate");
357
+ i0.ɵɵelementStart(6, "div", 1)(7, "mat-form-field");
358
+ i0.ɵɵelement(8, "input", 4);
359
+ i0.ɵɵpipe(9, "translate");
360
+ i0.ɵɵtemplate(10, PrintFormComponent_mat_error_10_Template, 4, 8, "mat-error", 3);
284
361
  i0.ɵɵelementEnd()();
285
- i0.ɵɵelementStart(9, "div", 1)(10, "mat-form-field");
286
- i0.ɵɵelement(11, "input", 4);
287
- i0.ɵɵpipe(12, "translate");
362
+ i0.ɵɵelementStart(11, "div", 1)(12, "mat-form-field");
363
+ i0.ɵɵelement(13, "input", 5);
364
+ i0.ɵɵpipe(14, "translate");
365
+ i0.ɵɵtemplate(15, PrintFormComponent_mat_error_15_Template, 4, 9, "mat-error", 3);
288
366
  i0.ɵɵelementEnd()();
289
- i0.ɵɵelementStart(13, "div", 1)(14, "div", 5)(15, "mat-slide-toggle", 6);
290
- i0.ɵɵtext(16);
291
- i0.ɵɵpipe(17, "translate");
292
- i0.ɵɵelementEnd();
293
- i0.ɵɵelementStart(18, "mat-slide-toggle", 7);
367
+ i0.ɵɵelementStart(16, "div", 1)(17, "div", 6)(18, "mat-slide-toggle", 7);
294
368
  i0.ɵɵtext(19);
295
369
  i0.ɵɵpipe(20, "translate");
296
370
  i0.ɵɵelementEnd();
297
371
  i0.ɵɵelementStart(21, "mat-slide-toggle", 8);
298
372
  i0.ɵɵtext(22);
299
373
  i0.ɵɵpipe(23, "translate");
374
+ i0.ɵɵelementEnd();
375
+ i0.ɵɵelementStart(24, "mat-slide-toggle", 9);
376
+ i0.ɵɵtext(25);
377
+ i0.ɵɵpipe(26, "translate");
300
378
  i0.ɵɵelementEnd()()();
301
- i0.ɵɵelementStart(24, "div", 1)(25, "mat-form-field")(26, "mat-select", 9);
302
- i0.ɵɵpipe(27, "translate");
303
- i0.ɵɵtemplate(28, PrintFormComponent_mat_option_28_Template, 3, 5, "mat-option", 10);
304
- i0.ɵɵpipe(29, "keyvalue");
379
+ i0.ɵɵelementStart(27, "div", 1)(28, "mat-form-field")(29, "mat-select", 10);
380
+ i0.ɵɵpipe(30, "translate");
381
+ i0.ɵɵtemplate(31, PrintFormComponent_mat_option_31_Template, 3, 5, "mat-option", 11);
382
+ i0.ɵɵpipe(32, "keyvalue");
305
383
  i0.ɵɵelementEnd()()();
306
- i0.ɵɵelementStart(30, "div", 1)(31, "mat-form-field")(32, "mat-select", 11);
307
- i0.ɵɵlistener("selectionChange", function PrintFormComponent_Template_mat_select_selectionChange_32_listener() { return ctx.toggleImageSaveProp(); });
308
- i0.ɵɵpipe(33, "translate");
309
- i0.ɵɵtemplate(34, PrintFormComponent_mat_option_34_Template, 2, 2, "mat-option", 10);
310
- i0.ɵɵpipe(35, "keyvalue");
384
+ i0.ɵɵelementStart(33, "div", 1)(34, "mat-form-field")(35, "mat-select", 12);
385
+ i0.ɵɵlistener("selectionChange", function PrintFormComponent_Template_mat_select_selectionChange_35_listener() { return ctx.toggleImageSaveProp(); });
386
+ i0.ɵɵpipe(36, "translate");
387
+ i0.ɵɵtemplate(37, PrintFormComponent_mat_option_37_Template, 2, 2, "mat-option", 11);
388
+ i0.ɵɵpipe(38, "keyvalue");
311
389
  i0.ɵɵelementEnd()()();
312
- i0.ɵɵelementStart(36, "div", 1)(37, "mat-form-field")(38, "mat-select", 12);
313
- i0.ɵɵpipe(39, "translate");
314
- i0.ɵɵtemplate(40, PrintFormComponent_mat_option_40_Template, 3, 4, "mat-option", 10);
315
- i0.ɵɵpipe(41, "keyvalue");
390
+ i0.ɵɵelementStart(39, "div", 1)(40, "mat-form-field")(41, "mat-select", 13);
391
+ i0.ɵɵlistener("selectionChange", function PrintFormComponent_Template_mat_select_selectionChange_41_listener() { return ctx.changeCommentLength(); });
392
+ i0.ɵɵpipe(42, "translate");
393
+ i0.ɵɵtemplate(43, PrintFormComponent_mat_option_43_Template, 3, 4, "mat-option", 11);
394
+ i0.ɵɵpipe(44, "keyvalue");
316
395
  i0.ɵɵelementEnd()()();
317
- i0.ɵɵelementStart(42, "div", 1)(43, "mat-form-field")(44, "mat-select", 13);
318
- i0.ɵɵpipe(45, "translate");
319
- i0.ɵɵtemplate(46, PrintFormComponent_mat_option_46_Template, 2, 2, "mat-option", 10);
320
- i0.ɵɵpipe(47, "keyvalue");
396
+ i0.ɵɵelementStart(45, "div", 1)(46, "mat-form-field")(47, "mat-select", 14);
397
+ i0.ɵɵpipe(48, "translate");
398
+ i0.ɵɵtemplate(49, PrintFormComponent_mat_option_49_Template, 2, 2, "mat-option", 11);
399
+ i0.ɵɵpipe(50, "keyvalue");
321
400
  i0.ɵɵelementEnd()()();
322
- i0.ɵɵelementStart(48, "div", 14)(49, "mat-form-field")(50, "mat-select", 15);
323
- i0.ɵɵpipe(51, "translate");
324
- i0.ɵɵtemplate(52, PrintFormComponent_mat_option_52_Template, 2, 2, "mat-option", 10);
325
- i0.ɵɵpipe(53, "keyvalue");
401
+ i0.ɵɵelementStart(51, "div", 15)(52, "mat-form-field")(53, "mat-select", 16);
402
+ i0.ɵɵpipe(54, "translate");
403
+ i0.ɵɵtemplate(55, PrintFormComponent_mat_option_55_Template, 2, 2, "mat-option", 11);
404
+ i0.ɵɵpipe(56, "keyvalue");
326
405
  i0.ɵɵelementEnd()()();
327
- i0.ɵɵelementStart(54, "div", 1)(55, "mat-form-field")(56, "mat-select", 16);
328
- i0.ɵɵpipe(57, "translate");
329
- i0.ɵɵtemplate(58, PrintFormComponent_mat_option_58_Template, 3, 4, "mat-option", 10);
330
- i0.ɵɵpipe(59, "keyvalue");
406
+ i0.ɵɵelementStart(57, "div", 1)(58, "mat-form-field")(59, "mat-select", 17);
407
+ i0.ɵɵlistener("selectionChange", function PrintFormComponent_Template_mat_select_selectionChange_59_listener() { return ctx.changeCommentLength(); });
408
+ i0.ɵɵpipe(60, "translate");
409
+ i0.ɵɵtemplate(61, PrintFormComponent_mat_option_61_Template, 3, 4, "mat-option", 11);
410
+ i0.ɵɵpipe(62, "keyvalue");
331
411
  i0.ɵɵelementEnd()()();
332
- i0.ɵɵelementStart(60, "div", 17)(61, "button", 18);
333
- i0.ɵɵlistener("click", function PrintFormComponent_Template_button_click_61_listener() { return ctx.handleFormSubmit(ctx.form.value, ctx.form.valid); });
334
- i0.ɵɵpipe(62, "async");
335
- i0.ɵɵtext(63);
336
- i0.ɵɵpipe(64, "translate");
412
+ i0.ɵɵelementStart(63, "div", 18)(64, "button", 19);
413
+ i0.ɵɵlistener("click", function PrintFormComponent_Template_button_click_64_listener() { return ctx.handleFormSubmit(ctx.form.value, ctx.form.valid); });
414
+ i0.ɵɵpipe(65, "async");
415
+ i0.ɵɵtext(66);
416
+ i0.ɵɵpipe(67, "translate");
337
417
  i0.ɵɵelementEnd()()();
338
418
  } if (rf & 2) {
339
419
  i0.ɵɵproperty("formGroup", ctx.form);
340
420
  i0.ɵɵadvance(3);
341
- i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(4, 32, "igo.geo.printForm.title"));
342
- i0.ɵɵadvance(4);
343
- i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(8, 34, "igo.geo.printForm.subtitle"));
344
- i0.ɵɵadvance(4);
345
- i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(12, 36, "igo.geo.printForm.comment"));
346
- i0.ɵɵadvance(4);
421
+ i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(4, 35, "igo.geo.printForm.title"));
422
+ i0.ɵɵadvance(2);
423
+ i0.ɵɵproperty("ngIf", ctx.titleField.errors == null ? null : ctx.titleField.errors.maxlength);
424
+ i0.ɵɵadvance(3);
425
+ i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(9, 37, "igo.geo.printForm.subtitle"));
426
+ i0.ɵɵadvance(2);
427
+ i0.ɵɵproperty("ngIf", ctx.subtitleField.errors == null ? null : ctx.subtitleField.errors.maxlength);
428
+ i0.ɵɵadvance(3);
429
+ i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(14, 39, "igo.geo.printForm.comment"));
430
+ i0.ɵɵadvance(2);
431
+ i0.ɵɵproperty("ngIf", ctx.commentField.errors == null ? null : ctx.commentField.errors.maxlength);
432
+ i0.ɵɵadvance(3);
347
433
  i0.ɵɵproperty("labelPosition", "before");
348
434
  i0.ɵɵadvance(1);
349
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(17, 38, "igo.geo.printForm.showProjection"), " ");
435
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(20, 41, "igo.geo.printForm.showProjection"), " ");
350
436
  i0.ɵɵadvance(2);
351
437
  i0.ɵɵproperty("labelPosition", "before");
352
438
  i0.ɵɵadvance(1);
353
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(20, 40, "igo.geo.printForm.showScale"), " ");
439
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(23, 43, "igo.geo.printForm.showScale"), " ");
354
440
  i0.ɵɵadvance(2);
355
441
  i0.ɵɵstyleProp("display", ctx.isPrintService ? "none" : "");
356
442
  i0.ɵɵproperty("labelPosition", "before");
357
443
  i0.ɵɵadvance(1);
358
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(23, 42, "igo.geo.printForm.doZipFile"), " ");
444
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(26, 45, "igo.geo.printForm.doZipFile"), " ");
359
445
  i0.ɵɵadvance(4);
360
- i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(27, 44, "igo.geo.printForm.legendPosition"));
446
+ i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(30, 47, "igo.geo.printForm.legendPosition"));
361
447
  i0.ɵɵadvance(2);
362
- i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(29, 46, ctx.legendPositions));
448
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(32, 49, ctx.legendPositions));
363
449
  i0.ɵɵadvance(4);
364
- i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(33, 48, "igo.geo.printForm.outputFormat"));
450
+ i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(36, 51, "igo.geo.printForm.outputFormat"));
365
451
  i0.ɵɵadvance(2);
366
- i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(35, 50, ctx.outputFormats));
452
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(38, 53, ctx.outputFormats));
367
453
  i0.ɵɵadvance(2);
368
454
  i0.ɵɵstyleProp("display", ctx.isPrintService ? "block" : "none");
369
455
  i0.ɵɵadvance(2);
370
- i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(39, 52, "igo.geo.printForm.paperFormat"));
456
+ i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(42, 55, "igo.geo.printForm.paperFormat"));
371
457
  i0.ɵɵadvance(2);
372
- i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(41, 54, ctx.paperFormats));
458
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(44, 57, ctx.paperFormats));
373
459
  i0.ɵɵadvance(2);
374
460
  i0.ɵɵstyleProp("display", ctx.isPrintService ? "none" : "block");
375
461
  i0.ɵɵadvance(2);
376
- i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(45, 56, "igo.geo.printForm.imageFormat"));
462
+ i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(48, 59, "igo.geo.printForm.imageFormat"));
377
463
  i0.ɵɵadvance(2);
378
- i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(47, 58, ctx.imageFormats));
464
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(50, 61, ctx.imageFormats));
379
465
  i0.ɵɵadvance(4);
380
- i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(51, 60, "igo.geo.printForm.resolution"));
466
+ i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(54, 63, "igo.geo.printForm.resolution"));
381
467
  i0.ɵɵadvance(2);
382
- i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(53, 62, ctx.resolutions));
468
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(56, 65, ctx.resolutions));
383
469
  i0.ɵɵadvance(2);
384
470
  i0.ɵɵstyleProp("display", ctx.isPrintService ? "block" : "none");
385
471
  i0.ɵɵadvance(2);
386
- i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(57, 64, "igo.geo.printForm.orientation"));
472
+ i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(60, 67, "igo.geo.printForm.orientation"));
387
473
  i0.ɵɵadvance(2);
388
- i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(59, 66, ctx.orientations));
474
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(62, 69, ctx.orientations));
389
475
  i0.ɵɵadvance(3);
390
- i0.ɵɵproperty("disabled", !ctx.form.valid || i0.ɵɵpipeBind1(62, 68, ctx.disabled$));
476
+ i0.ɵɵproperty("disabled", !ctx.form.valid || i0.ɵɵpipeBind1(65, 71, ctx.disabled$));
391
477
  i0.ɵɵadvance(2);
392
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(64, 70, "igo.geo.printForm.saveBtn"), " ");
393
- } }, dependencies: [i2.NgForOf, i2.NgIf, i1.ɵNgNoValidate, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.FormGroupDirective, i1.FormControlName, i3.MatButton, i4.MatFormField, i5.MatSelect, i6.MatOption, i7.MatInput, i8.MatSlideToggle, i2.AsyncPipe, i9.TranslatePipe, i10.KeyValuePipe], styles: ["mat-form-field[_ngcontent-%COMP%]{width:100%}.print-slide-toggle-container[_ngcontent-%COMP%]{overflow-x:hidden}.print-slide-toggle-container[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{width:100%;margin:10px}.print-slide-toggle-container[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 60px)}.print-option[_ngcontent-%COMP%]{display:block;margin-right:10px;margin-bottom:15px}.print-button-top-padding[_ngcontent-%COMP%]{padding-top:25px}.igo-form[_ngcontent-%COMP%]{padding:10px 5px 5px}.igo-form-button-group[_ngcontent-%COMP%]{text-align:center}"] });
478
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(67, 73, "igo.geo.printForm.saveBtn"), " ");
479
+ } }, dependencies: [i2.NgForOf, i2.NgIf, i1.ɵNgNoValidate, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.FormGroupDirective, i1.FormControlName, i3.MatButton, i4.MatError, i4.MatFormField, i5.MatSelect, i6.MatOption, i7.MatInput, i8.MatSlideToggle, i2.AsyncPipe, i9.TranslatePipe, i10.KeyValuePipe], styles: ["mat-form-field[_ngcontent-%COMP%]{width:100%}.print-slide-toggle-container[_ngcontent-%COMP%]{overflow-x:hidden}.print-slide-toggle-container[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{width:100%;margin:10px}.print-slide-toggle-container[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 60px)}.print-option[_ngcontent-%COMP%]{display:block;margin-right:10px;margin-bottom:15px}.print-button-top-padding[_ngcontent-%COMP%]{padding-top:25px}.igo-form[_ngcontent-%COMP%]{padding:10px 5px 5px}.igo-form-button-group[_ngcontent-%COMP%]{text-align:center}"] });
394
480
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrintFormComponent, [{
395
481
  type: Component,
396
- args: [{ selector: 'igo-print-form', template: "<form class=\"igo-form\" [formGroup]=\"form\">\n <div class=\"igo-input-container\">\n <mat-form-field>\n <input\n matInput\n formControlName=\"title\"\n placeholder=\"{{'igo.geo.printForm.title' | translate}}\">\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <input\n matInput\n formControlName=\"subtitle\"\n placeholder=\"{{'igo.geo.printForm.subtitle' | translate}}\">\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <input\n matInput\n formControlName=\"comment\"\n placeholder=\"{{'igo.geo.printForm.comment' | translate}}\">\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\">\n <div class=\"print-slide-toggle-container mat-typography\">\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"showProjection\"\n [labelPosition]=\"'before'\">\n {{'igo.geo.printForm.showProjection' | translate}}\n </mat-slide-toggle>\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"showScale\"\n [labelPosition]=\"'before'\">\n {{'igo.geo.printForm.showScale' | translate}}\n </mat-slide-toggle>\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"doZipFile\"\n [labelPosition]=\"'before'\"\n [style.display]=\"isPrintService ? 'none' : ''\">\n {{'igo.geo.printForm.doZipFile' | translate}}\n </mat-slide-toggle>\n </div>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-select\n formControlName=\"legendPosition\"\n placeholder=\"{{'igo.geo.printForm.legendPosition' | translate}}\">\n <mat-option *ngFor=\"let legendPosition of legendPositions | keyvalue \" [value]=\"legendPosition.key\">\n <ng-container *ngIf=\"!['newpage', 'newimage'].includes(legendPosition.value)\">\n {{'igo.geo.printForm.legendPositions.' + legendPosition.value | translate}}\n </ng-container>\n\n <ng-container *ngIf=\"['newpage', 'newimage'].includes(legendPosition.value)\">\n {{ ((outputFormat === 'Pdf') ? 'igo.geo.printForm.legendPositions.newpage' : \n 'igo.geo.printForm.legendPositions.newimage') | translate}}\n </ng-container>\n </mat-option>\n\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-select (selectionChange)=\"toggleImageSaveProp()\"\n formControlName=\"outputFormat\"\n placeholder=\"{{'igo.geo.printForm.outputFormat' | translate}}\">\n <mat-option *ngFor=\"let outputFormat of outputFormats | keyvalue \" [value]=\"outputFormat.key\">\n {{outputFormat.value}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\" [style.display]=\"isPrintService ? 'block' : 'none'\">\n <mat-form-field>\n <mat-select\n formControlName=\"paperFormat\"\n placeholder=\"{{'igo.geo.printForm.paperFormat' | translate}}\">\n <mat-option *ngFor=\"let paperFormat of paperFormats | keyvalue \" [value]=\"paperFormat.key\">\n {{('igo.geo.printForm.paperFormats.' + paperFormat.value) | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\" [style.display]=\"isPrintService ? 'none' : 'block'\">\n <mat-form-field>\n <mat-select\n formControlName=\"imageFormat\"\n placeholder=\"{{'igo.geo.printForm.imageFormat' | translate}}\">\n <mat-option *ngFor=\"let imageFormat of imageFormats | keyvalue \" [value]=\"imageFormat.key\">\n {{imageFormat.value}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\" style=\"display: none;\">\n <mat-form-field>\n <mat-select\n formControlName=\"resolution\"\n placeholder=\"{{'igo.geo.printForm.resolution' | translate}}\">\n <mat-option *ngFor=\"let resolution of resolutions | keyvalue \" [value]=\"resolution.key\">\n {{resolution.value + ' PPI'}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\" [style.display]=\"isPrintService ? 'block' : 'none'\">\n <mat-form-field>\n <mat-select\n formControlName=\"orientation\"\n placeholder=\"{{'igo.geo.printForm.orientation' | translate}}\">\n <mat-option *ngFor=\"let orientation of orientations | keyvalue \" [value]=\"orientation.key\">\n {{('igo.geo.printForm.' + orientation.value) | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-form-button-group print-button-top-padding\">\n <button\n mat-raised-button\n type=\"button\"\n [disabled]=\"!form.valid || (disabled$ | async)\"\n (click)=\"handleFormSubmit(form.value, form.valid)\">\n {{'igo.geo.printForm.saveBtn' | translate}}\n </button>\n </div>\n\n</form>\n", styles: ["mat-form-field{width:100%}.print-slide-toggle-container{overflow-x:hidden}.print-slide-toggle-container mat-slide-toggle{width:100%;margin:10px}.print-slide-toggle-container mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 60px)}.print-option{display:block;margin-right:10px;margin-bottom:15px}.print-button-top-padding{padding-top:25px}.igo-form{padding:10px 5px 5px}.igo-form-button-group{text-align:center}\n"] }]
482
+ args: [{ selector: 'igo-print-form', template: "<form class=\"igo-form\" [formGroup]=\"form\">\r\n <div class=\"igo-input-container\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"title\"\r\n placeholder=\"{{'igo.geo.printForm.title' | translate}}\">\r\n <mat-error *ngIf=\"titleField.errors?.maxlength\">{{'igo.geo.formValidation.maxLength' | translate: { \r\n column: 'igo.geo.printForm.title' | translate, \r\n value: 130 } }}</mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"igo-input-container\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"subtitle\"\r\n placeholder=\"{{'igo.geo.printForm.subtitle' | translate}}\">\r\n <mat-error *ngIf=\"subtitleField.errors?.maxlength\">{{'igo.geo.formValidation.maxLength' | translate: { \r\n column: 'igo.geo.printForm.subtitle' | translate, \r\n value: 120 } }}</mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"igo-input-container\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"comment\"\r\n placeholder=\"{{'igo.geo.printForm.comment' | translate}}\">\r\n <mat-error *ngIf=\"commentField.errors?.maxlength\">{{'igo.geo.formValidation.maxLength' | translate: { \r\n column: 'igo.geo.printForm.comment' | translate, \r\n value: maxLength } }}</mat-error>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"igo-input-container\">\r\n <div class=\"print-slide-toggle-container mat-typography\">\r\n <mat-slide-toggle\r\n class=\"print-option\"\r\n formControlName=\"showProjection\"\r\n [labelPosition]=\"'before'\">\r\n {{'igo.geo.printForm.showProjection' | translate}}\r\n </mat-slide-toggle>\r\n <mat-slide-toggle\r\n class=\"print-option\"\r\n formControlName=\"showScale\"\r\n [labelPosition]=\"'before'\">\r\n {{'igo.geo.printForm.showScale' | translate}}\r\n </mat-slide-toggle>\r\n <mat-slide-toggle\r\n class=\"print-option\"\r\n formControlName=\"doZipFile\"\r\n [labelPosition]=\"'before'\"\r\n [style.display]=\"isPrintService ? 'none' : ''\">\r\n {{'igo.geo.printForm.doZipFile' | translate}}\r\n </mat-slide-toggle>\r\n </div>\r\n </div>\r\n\r\n <div class=\"igo-input-container\">\r\n <mat-form-field>\r\n <mat-select\r\n formControlName=\"legendPosition\"\r\n placeholder=\"{{'igo.geo.printForm.legendPosition' | translate}}\">\r\n <mat-option *ngFor=\"let legendPosition of legendPositions | keyvalue \" [value]=\"legendPosition.key\">\r\n <ng-container *ngIf=\"!['newpage', 'newimage'].includes(legendPosition.value)\">\r\n {{'igo.geo.printForm.legendPositions.' + legendPosition.value | translate}}\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"['newpage', 'newimage'].includes(legendPosition.value)\">\r\n {{ ((outputFormat === 'Pdf') ? 'igo.geo.printForm.legendPositions.newpage' : \r\n 'igo.geo.printForm.legendPositions.newimage') | translate}}\r\n </ng-container>\r\n </mat-option>\r\n\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"igo-input-container\">\r\n <mat-form-field>\r\n <mat-select (selectionChange)=\"toggleImageSaveProp()\"\r\n formControlName=\"outputFormat\"\r\n placeholder=\"{{'igo.geo.printForm.outputFormat' | translate}}\">\r\n <mat-option *ngFor=\"let outputFormat of outputFormats | keyvalue \" [value]=\"outputFormat.key\">\r\n {{outputFormat.value}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"igo-input-container\" [style.display]=\"isPrintService ? 'block' : 'none'\">\r\n <mat-form-field>\r\n <mat-select (selectionChange)=\"changeCommentLength()\"\r\n formControlName=\"paperFormat\"\r\n placeholder=\"{{'igo.geo.printForm.paperFormat' | translate}}\">\r\n <mat-option *ngFor=\"let paperFormat of paperFormats | keyvalue \" [value]=\"paperFormat.key\">\r\n {{('igo.geo.printForm.paperFormats.' + paperFormat.value) | translate}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"igo-input-container\" [style.display]=\"isPrintService ? 'none' : 'block'\">\r\n <mat-form-field>\r\n <mat-select\r\n formControlName=\"imageFormat\"\r\n placeholder=\"{{'igo.geo.printForm.imageFormat' | translate}}\">\r\n <mat-option *ngFor=\"let imageFormat of imageFormats | keyvalue \" [value]=\"imageFormat.key\">\r\n {{imageFormat.value}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"igo-input-container\" style=\"display: none;\">\r\n <mat-form-field>\r\n <mat-select\r\n formControlName=\"resolution\"\r\n placeholder=\"{{'igo.geo.printForm.resolution' | translate}}\">\r\n <mat-option *ngFor=\"let resolution of resolutions | keyvalue \" [value]=\"resolution.key\">\r\n {{resolution.value + ' PPI'}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"igo-input-container\" [style.display]=\"isPrintService ? 'block' : 'none'\">\r\n <mat-form-field>\r\n <mat-select (selectionChange)=\"changeCommentLength()\"\r\n formControlName=\"orientation\"\r\n placeholder=\"{{'igo.geo.printForm.orientation' | translate}}\">\r\n <mat-option *ngFor=\"let orientation of orientations | keyvalue \" [value]=\"orientation.key\">\r\n {{('igo.geo.printForm.' + orientation.value) | translate}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"igo-form-button-group print-button-top-padding\">\r\n <button\r\n mat-raised-button\r\n type=\"button\"\r\n [disabled]=\"!form.valid || (disabled$ | async)\"\r\n (click)=\"handleFormSubmit(form.value, form.valid)\">\r\n {{'igo.geo.printForm.saveBtn' | translate}}\r\n </button>\r\n </div>\r\n\r\n</form>\r\n", styles: ["mat-form-field{width:100%}.print-slide-toggle-container{overflow-x:hidden}.print-slide-toggle-container mat-slide-toggle{width:100%;margin:10px}.print-slide-toggle-container mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 60px)}.print-option{display:block;margin-right:10px;margin-bottom:15px}.print-button-top-padding{padding-top:25px}.igo-form{padding:10px 5px 5px}.igo-form-button-group{text-align:center}\n"] }]
397
483
  }], function () { return [{ type: i1.UntypedFormBuilder }]; }, { disabled$: [{
398
484
  type: Input
399
485
  }], imageFormat: [{
@@ -425,4 +511,4 @@ PrintFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrintFor
425
511
  }], submit: [{
426
512
  type: Output
427
513
  }] }); })();
428
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbnQtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9wcmludC9wcmludC1mb3JtL3ByaW50LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvcHJpbnQvcHJpbnQtZm9ybS9wcmludC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUlMLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBS3hCLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixlQUFlLEVBQ2Ysb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNwQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7O0lDc0NwQiw2QkFBOEU7SUFDNUUsWUFDRjs7SUFBQSwwQkFBZTs7O0lBRGIsZUFDRjtJQURFLHFIQUNGOzs7SUFFQSw2QkFBNkU7SUFDM0UsWUFFRjs7SUFBQSwwQkFBZTs7O0lBRmIsZUFFRjtJQUZFLGlMQUVGOzs7O0lBUkYsc0NBQW9HO0lBQ2xHLG9HQUVlO0lBRWYsb0dBR2U7SUFDakIsaUJBQWE7OztJQVQwRCw2Q0FBNEI7SUFDbEYsZUFBNkQ7SUFBN0Qsb0ZBQTZEO0lBSTdELGVBQTREO0lBQTVELG1GQUE0RDs7O0lBZTdFLHNDQUE4RjtJQUMxRixZQUNKO0lBQUEsaUJBQWE7OztJQUZzRCw0Q0FBMEI7SUFDekYsZUFDSjtJQURJLHVEQUNKOzs7SUFVQSxzQ0FBMkY7SUFDekYsWUFDRjs7SUFBQSxpQkFBYTs7O0lBRm9ELDJDQUF5QjtJQUN4RixlQUNGO0lBREUsZ0hBQ0Y7OztJQVVBLHNDQUEyRjtJQUN6RixZ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M0IsbUVBQTJCO1FBT3JDLGVBQW1EO1FBQW5ELGdFQUFtRDtRQUk5RSxlQUE2RDtRQUE3RCxnR0FBNkQ7UUFDekIsZUFBMEI7UUFBMUIsa0VBQTBCO1FBT25DLGVBQW1EO1FBQW5ELGdFQUFtRDtRQUk5RSxlQUE2RDtRQUE3RCxnR0FBNkQ7UUFDekIsZUFBMEI7UUFBMUIsa0VBQTBCO1FBVzlELGVBQTREO1FBQTVELCtGQUE0RDtRQUN6QixlQUF5QjtRQUF6QixpRUFBeUI7UUFPakMsZUFBbUQ7UUFBbkQsZ0VBQW1EO1FBSTlFLGVBQTZEO1FBQTdELGdHQUE2RDtRQUN6QixlQUEwQjtRQUExQixrRUFBMEI7UUFXaEUsZUFBK0M7UUFBL0MsbUZBQStDO1FBRS9DLGVBQ0Y7UUFERSxvRkFDRjs7dUZEaEhTLGtCQUFrQjtjQUw5QixTQUFTOzJCQUNFLGdCQUFnQjtxRUFjakIsU0FBUztrQkFBakIsS0FBSztZQUdGLFdBQVc7a0JBRGQsS0FBSztZQVdGLFlBQVk7a0JBRGYsS0FBSztZQVdGLFdBQVc7a0JBRGQsS0FBSztZQVdGLFdBQVc7a0JBRGQsS0FBSztZQVdGLFVBQVU7a0JBRGIsS0FBSztZQVdGLGNBQWM7a0JBRGpCLEtBQUs7WUFXRixLQUFLO2tCQURSLEtBQUs7WUFRRixRQUFRO2tCQURYLEtBQUs7WUFRRixPQUFPO2tCQURWLEtBQUs7WUFRRixjQUFjO2tCQURqQixLQUFLO1lBUUYsU0FBUztrQkFEWixLQUFLO1lBUUYsVUFBVTtrQkFEYixLQUFLO1lBU0YsU0FBUztrQkFEWixLQUFLO1lBNERJLE1BQU07a0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFVudHlwZWRGb3JtR3JvdXAsXG4gIFVudHlwZWRGb3JtQnVpbGRlcixcbiAgVW50eXBlZEZvcm1Db250cm9sLFxuICBWYWxpZGF0b3JzXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBQcmludE9wdGlvbnMgfSBmcm9tICcuLi9zaGFyZWQvcHJpbnQuaW50ZXJmYWNlJztcblxuaW1wb3J0IHtcbiAgUHJpbnRPdXRwdXRGb3JtYXQsXG4gIFByaW50UGFwZXJGb3JtYXQsXG4gIFByaW50T3JpZW50YXRpb24sXG4gIFByaW50UmVzb2x1dGlvbixcbiAgUHJpbnRTYXZlSW1hZ2VGb3JtYXQsXG4gIFByaW50TGVnZW5kUG9zaXRpb25cbn0gZnJvbSAnLi4vc2hhcmVkL3ByaW50LnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tcHJpbnQtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcmludC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJpbnQtZm9ybS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFByaW50Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBwdWJsaWMgb3V0cHV0Rm9ybWF0cyA9IFByaW50T3V0cHV0Rm9ybWF0O1xuICBwdWJsaWMgcGFwZXJGb3JtYXRzID0gUHJpbnRQYXBlckZvcm1hdDtcbiAgcHVibGljIG9yaWVudGF0aW9ucyA9IFByaW50T3JpZW50YXRpb247XG4gIHB1YmxpYyByZXNvbHV0aW9ucyA9IFByaW50UmVzb2x1dGlvbjtcbiAgcHVibGljIGltYWdlRm9ybWF0cyA9IFByaW50U2F2ZUltYWdlRm9ybWF0O1xuICBwdWJsaWMgbGVnZW5kUG9zaXRpb25zID0gUHJpbnRMZWdlbmRQb3NpdGlvbjtcbiAgcHVibGljIGlzUHJpbnRTZXJ2aWNlID0gdHJ1ZTtcblxuICBASW5wdXQoKSBkaXNhYmxlZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcblxuICBASW5wdXQoKVxuICBnZXQgaW1hZ2VGb3JtYXQoKTogUHJpbnRTYXZlSW1hZ2VGb3JtYXQge1xuICAgIHJldHVybiB0aGlzLmltYWdlRm9ybWF0RmllbGQudmFsdWU7XG4gIH1cbiAgc2V0IGltYWdlRm9ybWF0KHZhbHVlOiBQcmludFNhdmVJbWFnZUZvcm1hdCkge1xuICAgIHRoaXMuaW1hZ2VGb3JtYXRGaWVsZC5zZXRWYWx1ZSh2YWx1ZSB8fCBQcmludFNhdmVJbWFnZUZvcm1hdC5KcGVnLCB7XG4gICAgICBvbmx5U2VsZjogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgQElucHV0KClcbiAgZ2V0IG91dHB1dEZvcm1hdCgpOiBQcmludE91dHB1dEZvcm1hdCB7XG4gICAgcmV0dXJuIHRoaXMub3V0cHV0Rm9ybWF0RmllbGQudmFsdWU7XG4gIH1cbiAgc2V0IG91dHB1dEZvcm1hdCh2YWx1ZTogUHJpbnRPdXRwdXRGb3JtYXQpIHtcbiAgICB0aGlzLm91dHB1dEZvcm1hdEZpZWxkLnNldFZhbHVlKHZhbHVlIHx8IFByaW50T3V0cHV0Rm9ybWF0LlBkZiwge1xuICAgICAgb25seVNlbGY6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBwYXBlckZvcm1hdCgpOiBQcmludFBhcGVyRm9ybWF0IHtcbiAgICByZXR1cm4gdGhpcy5wYXBlckZvcm1hdEZpZWxkLnZhbHVlO1xuICB9XG4gIHNldCBwYXBlckZvcm1hdCh2YWx1ZTogUHJpbnRQYXBlckZvcm1hdCkge1xuICAgIHRoaXMucGFwZXJGb3JtYXRGaWVsZC5zZXRWYWx1ZSh2YWx1ZSB8fCBQcmludFBhcGVyRm9ybWF0LkxldHRlciwge1xuICAgICAgb25seVNlbGY6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBvcmllbnRhdGlvbigpOiBQcmludE9yaWVudGF0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5vcmllbnRhdGlvbkZpZWxkLnZhbHVlO1xuICB9XG4gIHNldCBvcmllbnRhdGlvbih2YWx1ZTogUHJpbnRPcmllbnRhdGlvbikge1xuICAgIHRoaXMub3JpZW50YXRpb25GaWVsZC5zZXRWYWx1ZSh2YWx1ZSB8fCBQcmludE9yaWVudGF0aW9uLmxhbmRzY2FwZSwge1xuICAgICAgb25seVNlbGY6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCByZXNvbHV0aW9uKCk6IFByaW50UmVzb2x1dGlvbiB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x1dGlvbkZpZWxkLnZhbHVlO1xuICB9XG4gIHNldCByZXNvbHV0aW9uKHZhbHVlOiBQcmludFJlc29sdXRpb24pIHtcbiAgICB0aGlzLnJlc29sdXRpb25GaWVsZC5zZXRWYWx1ZSh2YWx1ZSB8fCBQcmludFJlc29sdXRpb25bJzk2J10sIHtcbiAgICAgIG9ubHlTZWxmOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgbGVnZW5kUG9zaXRpb24oKTogUHJpbnRMZWdlbmRQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMubGVnZW5kUG9zaXRpb25GaWVsZC52YWx1ZTtcbiAgfVxuICBzZXQgbGVnZW5kUG9zaXRpb24odmFsdWU6IFByaW50TGVnZW5kUG9zaXRpb24pIHtcbiAgICB0aGlzLmxlZ2VuZFBvc2l0aW9uRmllbGQuc2V0VmFsdWUodmFsdWUgfHwgUHJpbnRMZWdlbmRQb3NpdGlvbi5ub25lLCB7XG4gICAgICBvbmx5U2VsZjogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgQElucHV0KClcbiAgZ2V0IHRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudGl0bGVGaWVsZC52YWx1ZTtcbiAgfVxuICBzZXQgdGl0bGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudGl0bGVGaWVsZC5zZXRWYWx1ZSh2YWx1ZSwgeyBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgfVxuICBASW5wdXQoKVxuICBnZXQgc3VidGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zdWJ0aXRsZUZpZWxkLnZhbHVlO1xuICB9XG4gIHNldCBzdWJ0aXRsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zdWJ0aXRsZUZpZWxkLnNldFZhbHVlKHZhbHVlLCB7IG9ubHlTZWxmOiB0cnVlIH0pO1xuICB9XG4gIEBJbnB1dCgpXG4gIGdldCBjb21tZW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29tbWVudEZpZWxkLnZhbHVlO1xuICB9XG4gIHNldCBjb21tZW50KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbW1lbnRGaWVsZC5zZXRWYWx1ZSh2YWx1ZSwgeyBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgfVxuICBASW5wdXQoKVxuICBnZXQgc2hvd1Byb2plY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd1Byb2plY3Rpb25GaWVsZC52YWx1ZTtcbiAgfVxuICBzZXQgc2hvd1Byb2plY3Rpb24odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNob3dQcm9qZWN0aW9uRmllbGQuc2V0VmFsdWUodmFsdWUsIHsgb25seVNlbGY6IHRydWUgfSk7XG4gIH1cbiAgQElucHV0KClcbiAgZ2V0IHNob3dTY2FsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93U2NhbGVGaWVsZC52YWx1ZTtcbiAgfVxuICBzZXQgc2hvd1NjYWxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zaG93U2NhbGVGaWVsZC5zZXRWYWx1ZSh2YWx1ZSwgeyBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgfVxuICBASW5wdXQoKVxuICBnZXQgc2hvd0xlZ2VuZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93TGVnZW5kRmllbGQudmFsdWU7XG4gIH1cbiAgc2V0IHNob3dMZWdlbmQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNob3dMZWdlbmRGaWVsZC5zZXRWYWx1ZSh2YWx1ZSwgeyBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBkb1ppcEZpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZG9aaXBGaWxlRmllbGQudmFsdWU7XG4gIH1cbiAgc2V0IGRvWmlwRmlsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuZG9aaXBGaWxlRmllbGQuc2V0VmFsdWUodmFsdWUsIHsgb25seVNlbGY6IHRydWUgfSk7XG4gIH1cblxuICBnZXQgb3V0cHV0Rm9ybWF0RmllbGQoKSB7XG4gICAgcmV0dXJuICh0aGlzLmZvcm0uY29udHJvbHMgYXMgYW55KS5vdXRwdXRGb3JtYXQgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICB9XG5cbiAgZ2V0IHBhcGVyRm9ybWF0RmllbGQoKSB7XG4gICAgcmV0dXJuICh0aGlzLmZvcm0uY29udHJvbHMgYXMgYW55KS5wYXBlckZvcm1hdCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIH1cblxuICBnZXQgaW1hZ2VGb3JtYXRGaWVsZCgpIHtcbiAgICByZXR1cm4gKHRoaXMuZm9ybS5jb250cm9scyBhcyBhbnkpLmltYWdlRm9ybWF0IGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgfVxuXG4gIGdldCBvcmllbnRhdGlvbkZpZWxkKCkge1xuICAgIHJldHVybiAodGhpcy5mb3JtLmNvbnRyb2xzIGFzIGFueSkub3JpZW50YXRpb24gYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICB9XG5cbiAgZ2V0IHJlc29sdXRpb25GaWVsZCgpIHtcbiAgICByZXR1cm4gKHRoaXMuZm9ybS5jb250cm9scyBhcyBhbnkpLnJlc29sdXRpb24gYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICB9XG5cbiAgZ2V0IGNvbW1lbnRGaWVsZCgpIHtcbiAgICByZXR1cm4gKHRoaXMuZm9ybS5jb250cm9scyBhcyBhbnkpLmNvbW1lbnQgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICB9XG5cbiAgZ2V0IHNob3dQcm9qZWN0aW9uRmllbGQoKSB7XG4gICAgcmV0dXJuICh0aGlzLmZvcm0uY29udHJvbHMgYXMgYW55KS5zaG93UHJvamVjdGlvbiBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIH1cblxuICBnZXQgc2hvd1NjYWxlRmllbGQoKSB7XG4gICAgcmV0dXJuICh0aGlzLmZvcm0uY29udHJvbHMgYXMgYW55KS5zaG93U2NhbGUgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICB9XG5cbiAgZ2V0IHNob3dMZWdlbmRGaWVsZCgpIHtcbiAgICByZXR1cm4gKHRoaXMuZm9ybS5jb250cm9scyBhcyBhbnkpLnNob3dMZWdlbmQgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICB9XG5cbiAgZ2V0IGRvWmlwRmlsZUZpZWxkKCkge1xuICAgIHJldHVybiAodGhpcy5mb3JtLmNvbnRyb2xzIGFzIGFueSkuZG9aaXBGaWxlIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgfVxuXG4gIGdldCB0aXRsZUZpZWxkKCkge1xuICAgIHJldHVybiAodGhpcy5mb3JtLmNvbnRyb2xzIGFzIGFueSkudGl0bGUgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICB9XG5cbiAgZ2V0IHN1YnRpdGxlRmllbGQoKSB7XG4gICAgcmV0dXJuICh0aGlzLmZvcm0uY29udHJvbHMgYXMgYW55KS5zdWJ0aXRsZSBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIH1cblxuICBnZXQgbGVnZW5kUG9zaXRpb25GaWVsZCgpIHtcbiAgICByZXR1cm4gKHRoaXMuZm9ybS5jb250cm9scyBhcyBhbnkpLmxlZ2VuZFBvc2l0aW9uIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgfVxuXG4gIEBPdXRwdXQoKSBzdWJtaXQ6IEV2ZW50RW1pdHRlcjxQcmludE9wdGlvbnM+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcikge1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgdGl0bGU6IFsnJywgW11dLFxuICAgICAgc3VidGl0bGU6IFsnJywgW11dLFxuICAgICAgY29tbWVudDogWycnLCBbXV0sXG4gICAgICBvdXRwdXRGb3JtYXQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHBhcGVyRm9ybWF0OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBpbWFnZUZvcm1hdDogWyAnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHJlc29sdXRpb246IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIG9yaWVudGF0aW9uOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBsZWdlbmRQb3NpdGlvbjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgc2hvd1Byb2plY3Rpb246IGZhbHNlLFxuICAgICAgc2hvd1NjYWxlOiBmYWxzZSxcbiAgICAgIHNob3dMZWdlbmQ6IGZhbHNlLFxuICAgICAgZG9aaXBGaWxlOiBbe2hpZGRlbjogdGhpcy5pc1ByaW50U2VydmljZSB9XVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5kb1ppcEZpbGVGaWVsZC5zZXRWYWx1ZShmYWxzZSk7XG4gIH1cblxuICBoYW5kbGVGb3JtU3VibWl0KGRhdGE6IFByaW50T3B0aW9ucywgaXNWYWxpZDogYm9vbGVhbikge1xuICAgIGRhdGEuaXNQcmludFNlcnZpY2UgPSB0aGlzLmlzUHJpbnRTZXJ2aWNlO1xuICAgIGlmIChpc1ZhbGlkKSB7XG4gICAgICB0aGlzLnN1Ym1pdC5lbWl0KGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUltYWdlU2F2ZVByb3AoKSB7XG4gICAgaWYgKHRoaXMub3V0cHV0Rm9ybWF0RmllbGQudmFsdWUgPT09ICdJbWFnZScpIHtcbiAgICAgIHRoaXMuaXNQcmludFNlcnZpY2UgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc1ByaW50U2VydmljZSA9IHRydWU7XG4gICAgfVxuICB9XG59XG4iLCI8Zm9ybSBjbGFzcz1cImlnby1mb3JtXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gIDxkaXYgY2xhc3M9XCJpZ28taW5wdXQtY29udGFpbmVyXCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgPGlucHV0XG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRpdGxlXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydpZ28uZ2VvLnByaW50Rm9ybS50aXRsZScgfCB0cmFuc2xhdGV9fVwiPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiaWdvLWlucHV0LWNvbnRhaW5lclwiPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxpbnB1dFxuICAgICAgICBtYXRJbnB1dFxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdWJ0aXRsZVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3snaWdvLmdlby5wcmludEZvcm0uc3VidGl0bGUnIHwgdHJhbnNsYXRlfX1cIj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImlnby1pbnB1dC1jb250YWluZXJcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8aW5wdXRcbiAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29tbWVudFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3snaWdvLmdlby5wcmludEZvcm0uY29tbWVudCcgfCB0cmFuc2xhdGV9fVwiPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJpZ28taW5wdXQtY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cInByaW50LXNsaWRlLXRvZ2dsZS1jb250YWluZXIgbWF0LXR5cG9ncmFwaHlcIj5cbiAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlXG4gICAgICAgIGNsYXNzPVwicHJpbnQtb3B0aW9uXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2hvd1Byb2plY3Rpb25cIlxuICAgICAgICBbbGFiZWxQb3NpdGlvbl09XCInYmVmb3JlJ1wiPlxuICAgICAgICB7eydpZ28uZ2VvLnByaW50Rm9ybS5zaG93UHJvamVjdGlvbicgfCB0cmFuc2xhdGV9fVxuICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgICAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICAgICAgY2xhc3M9XCJwcmludC1vcHRpb25cIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzaG93U2NhbGVcIlxuICAgICAgICBbbGFiZWxQb3NpdGlvbl09XCInYmVmb3JlJ1wiPlxuICAgICAgICB7eydpZ28uZ2VvLnByaW50Rm9ybS5zaG93U2NhbGUnIHwgdHJhbnNsYXRlfX1cbiAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlXG4gICAgICAgIGNsYXNzPVwicHJpbnQtb3B0aW9uXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZG9aaXBGaWxlXCJcbiAgICAgICAgW2xhYmVsUG9zaXRpb25dPVwiJ2JlZm9yZSdcIlxuICAgICAgICBbc3R5bGUuZGlzcGxheV09XCJpc1ByaW50U2VydmljZSA/ICdub25lJyA6ICcnXCI+XG4gICAgICAgIHt7J2lnby5nZW8ucHJpbnRGb3JtLmRvWmlwRmlsZScgfCB0cmFuc2xhdGV9fVxuICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiaWdvLWlucHV0LWNvbnRhaW5lclwiPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxlZ2VuZFBvc2l0aW9uXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydpZ28uZ2VvLnByaW50Rm9ybS5sZWdlbmRQb3NpdGlvbicgfCB0cmFuc2xhdGV9fVwiPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbGVnZW5kUG9zaXRpb24gb2YgbGVnZW5kUG9zaXRpb25zIHwga2V5dmFsdWUgXCIgW3ZhbHVlXT1cImxlZ2VuZFBvc2l0aW9uLmtleVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhWyduZXdwYWdlJywgJ25ld2ltYWdlJ10uaW5jbHVkZXMobGVnZW5kUG9zaXRpb24udmFsdWUpXCI+XG4gICAgICAgICAgICB7eydpZ28uZ2VvLnByaW50Rm9ybS5sZWdlbmRQb3NpdGlvbnMuJyArIGxlZ2VuZFBvc2l0aW9uLnZhbHVlIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJbJ25ld3BhZ2UnLCAnbmV3aW1hZ2UnXS5pbmNsdWRlcyhsZWdlbmRQb3NpdGlvbi52YWx1ZSlcIj5cbiAgICAgICAgICAgIHt7ICgob3V0cHV0Rm9ybWF0ID09PSAnUGRmJykgPyAnaWdvLmdlby5wcmludEZvcm0ubGVnZW5kUG9zaXRpb25zLm5ld3BhZ2UnIDogXG4gICAgICAgICAgICAnaWdvLmdlby5wcmludEZvcm0ubGVnZW5kUG9zaXRpb25zLm5ld2ltYWdlJykgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L21hdC1vcHRpb24+XG5cbiAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiaWdvLWlucHV0LWNvbnRhaW5lclwiPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtc2VsZWN0IChzZWxlY3Rpb25DaGFuZ2UpPVwidG9nZ2xlSW1hZ2VTYXZlUHJvcCgpXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwib3V0cHV0Rm9ybWF0XCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydpZ28uZ2VvLnByaW50Rm9ybS5vdXRwdXRGb3JtYXQnIHwgdHJhbnNsYXRlfX1cIj5cbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG91dHB1dEZvcm1hdCBvZiBvdXRwdXRGb3JtYXRzIHwga2V5dmFsdWUgXCIgW3ZhbHVlXT1cIm91dHB1dEZvcm1hdC5rZXlcIj5cbiAgICAgICAgICAgIHt7b3V0cHV0Rm9ybWF0LnZhbHVlfX1cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJpZ28taW5wdXQtY29udGFpbmVyXCIgW3N0eWxlLmRpc3BsYXldPVwiaXNQcmludFNlcnZpY2UgPyAnYmxvY2snIDogJ25vbmUnXCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGFwZXJGb3JtYXRcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7J2lnby5nZW8ucHJpbnRGb3JtLnBhcGVyRm9ybWF0JyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBwYXBlckZvcm1hdCBvZiBwYXBlckZvcm1hdHMgfCBrZXl2YWx1ZSBcIiBbdmFsdWVdPVwicGFwZXJGb3JtYXQua2V5XCI+XG4gICAgICAgICAge3soJ2lnby5nZW8ucHJpbnRGb3JtLnBhcGVyRm9ybWF0cy4nICsgcGFwZXJGb3JtYXQudmFsdWUpIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJpZ28taW5wdXQtY29udGFpbmVyXCIgW3N0eWxlLmRpc3BsYXldPVwiaXNQcmludFNlcnZpY2UgPyAnbm9uZScgOiAnYmxvY2snXCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaW1hZ2VGb3JtYXRcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7J2lnby5nZW8ucHJpbnRGb3JtLmltYWdlRm9ybWF0JyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpbWFnZUZvcm1hdCBvZiBpbWFnZUZvcm1hdHMgfCBrZXl2YWx1ZSBcIiBbdmFsdWVdPVwiaW1hZ2VGb3JtYXQua2V5XCI+XG4gICAgICAgICAge3tpbWFnZUZvcm1hdC52YWx1ZX19XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiaWdvLWlucHV0LWNvbnRhaW5lclwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LXNlbGVjdFxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyZXNvbHV0aW9uXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydpZ28uZ2VvLnByaW50Rm9ybS5yZXNvbHV0aW9uJyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCByZXNvbHV0aW9uIG9mIHJlc29sdXRpb25zIHwga2V5dmFsdWUgXCIgW3ZhbHVlXT1cInJlc29sdXRpb24ua2V5XCI+XG4gICAgICAgICAge3tyZXNvbHV0aW9uLnZhbHVlICsgJyBQUEknfX1cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJpZ28taW5wdXQtY29udGFpbmVyXCIgW3N0eWxlLmRpc3BsYXldPVwiaXNQcmludFNlcnZpY2UgPyAnYmxvY2snIDogJ25vbmUnXCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwib3JpZW50YXRpb25cIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7J2lnby5nZW8ucHJpbnRGb3JtLm9yaWVudGF0aW9uJyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcmllbnRhdGlvbiBvZiBvcmllbnRhdGlvbnMgfCBrZXl2YWx1ZSBcIiBbdmFsdWVdPVwib3JpZW50YXRpb24ua2V5XCI+XG4gICAgICAgICAge3soJ2lnby5nZW8ucHJpbnRGb3JtLicgKyBvcmllbnRhdGlvbi52YWx1ZSkgfCB0cmFuc2xhdGV9fVxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICA8L21hdC1zZWxlY3Q+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImlnby1mb3JtLWJ1dHRvbi1ncm91cCBwcmludC1idXR0b24tdG9wLXBhZGRpbmdcIj5cbiAgICA8YnV0dG9uXG4gICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbZGlzYWJsZWRdPVwiIWZvcm0udmFsaWQgfHwgKGRpc2FibGVkJCB8IGFzeW5jKVwiXG4gICAgICAoY2xpY2spPVwiaGFuZGxlRm9ybVN1Ym1pdChmb3JtLnZhbHVlLCBmb3JtLnZhbGlkKVwiPlxuICAgICAge3snaWdvLmdlby5wcmludEZvcm0uc2F2ZUJ0bicgfCB0cmFuc2xhdGV9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuPC9mb3JtPlxuIl19
514
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbnQtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9wcmludC9wcmludC1mb3JtL3ByaW50LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvcHJpbnQvcHJpbnQtZm9ybS9wcmludC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUlMLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBS3hCLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixlQUFlLEVBQ2Ysb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNwQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7OztJQ1h0QixpQ0FBZ0Q7SUFBQSxZQUUvQjs7O0lBQUEsaUJBQVk7O0lBRm1CLGVBRS9CO0lBRitCLDJKQUUvQjs7OztJQVNqQixpQ0FBbUQ7SUFBQSxZQUVsQzs7O0lBQUEsaUJBQVk7O0lBRnNCLGVBRWxDO0lBRmtDLDhKQUVsQzs7OztJQVNqQixpQ0FBa0Q7SUFBQSxZQUUzQjs7O0lBQUEsaUJBQVk7OztJQUZlLGVBRTNCO0lBRjJCLCtLQUUzQjs7O0lBa0NyQiw2QkFBOEU7SUFDNUUsWUFDRjs7SUFBQSwwQkFBZTs7O0lBRGIsZUFDRjtJQURFLHFIQUNGOzs7SUFFQSw2QkFBNkU7SUFDM0UsWUFFRjs7SUFBQSwwQkFBZTs7O0lBRmIsZUFFRjtJQUZFLGtMQUVGOzs7O0lBUkYsc0NBQW9HO0lBQ2xHLG1HQUVlO0lBRWYsbUdBR2U7SUFDakIsaUJBQWE7OztJQVQwRCw2Q0FBNEI7SUFDbEYsZUFBNkQ7SUFBN0Qsb0ZB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SztZQVdGLFdBQVc7a0JBRGQsS0FBSztZQVdGLFVBQVU7a0JBRGIsS0FBSztZQVdGLGNBQWM7a0JBRGpCLEtBQUs7WUFXRixLQUFLO2tCQURSLEtBQUs7WUFRRixRQUFRO2tCQURYLEtBQUs7WUFRRixPQUFPO2tCQURWLEtBQUs7WUFRRixjQUFjO2tCQURqQixLQUFLO1lBUUYsU0FBUztrQkFEWixLQUFLO1lBUUYsVUFBVTtrQkFEYixLQUFLO1lBU0YsU0FBUztrQkFEWixLQUFLO1lBNERJLE1BQU07a0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBVbnR5cGVkRm9ybUdyb3VwLFxyXG4gIFVudHlwZWRGb3JtQnVpbGRlcixcclxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXHJcbiAgVmFsaWRhdG9yc1xyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBQcmludE9wdGlvbnMgfSBmcm9tICcuLi9zaGFyZWQvcHJpbnQuaW50ZXJmYWNlJztcclxuXHJcbmltcG9ydCB7XHJcbiAgUHJpbnRPdXRwdXRGb3JtYXQsXHJcbiAgUHJpbnRQYXBlckZvcm1hdCxcclxuICBQcmludE9yaWVudGF0aW9uLFxyXG4gIFByaW50UmVzb2x1dGlvbixcclxuICBQcmludFNhdmVJbWFnZUZvcm1hdCxcclxuICBQcmludExlZ2VuZFBvc2l0aW9uXHJcbn0gZnJvbSAnLi4vc2hhcmVkL3ByaW50LnR5cGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZ28tcHJpbnQtZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ByaW50LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3ByaW50LWZvcm0uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJpbnRGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwdWJsaWMgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuICBwdWJsaWMgb3V0cHV0Rm9ybWF0cyA9IFByaW50T3V0cHV0Rm9ybWF0O1xyXG4gIHB1YmxpYyBwYXBlckZvcm1hdHMgPSBQcmludFBhcGVyRm9ybWF0O1xyXG4gIHB1YmxpYyBvcmllbnRhdGlvbnMgPSBQcmludE9yaWVudGF0aW9uO1xyXG4gIHB1YmxpYyByZXNvbHV0aW9ucyA9IFByaW50UmVzb2x1dGlvbjtcclxuICBwdWJsaWMgaW1hZ2VGb3JtYXRzID0gUHJpbnRTYXZlSW1hZ2VGb3JtYXQ7XHJcbiAgcHVibGljIGxlZ2VuZFBvc2l0aW9ucyA9IFByaW50TGVnZW5kUG9zaXRpb247XHJcbiAgcHVibGljIGlzUHJpbnRTZXJ2aWNlID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgZGlzYWJsZWQkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGltYWdlRm9ybWF0KCk6IFByaW50U2F2ZUltYWdlRm9ybWF0IHtcclxuICAgIHJldHVybiB0aGlzLmltYWdlRm9ybWF0RmllbGQudmFsdWU7XHJcbiAgfVxyXG4gIHNldCBpbWFnZUZvcm1hdCh2YWx1ZTogUHJpbnRTYXZlSW1hZ2VGb3JtYXQpIHtcclxuICAgIHRoaXMuaW1hZ2VGb3JtYXRGaWVsZC5zZXRWYWx1ZSh2YWx1ZSB8fCBQcmludFNhdmVJbWFnZUZvcm1hdC5KcGVnLCB7XHJcbiAgICAgIG9ubHlTZWxmOiB0cnVlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IG91dHB1dEZvcm1hdCgpOiBQcmludE91dHB1dEZvcm1hdCB7XHJcbiAgICByZXR1cm4gdGhpcy5vdXRwdXRGb3JtYXRGaWVsZC52YWx1ZTtcclxuICB9XHJcbiAgc2V0IG91dHB1dEZvcm1hdCh2YWx1ZTogUHJpbnRPdXRwdXRGb3JtYXQpIHtcclxuICAgIHRoaXMub3V0cHV0Rm9ybWF0RmllbGQuc2V0VmFsdWUodmFsdWUgfHwgUHJpbnRPdXRwdXRGb3JtYXQuUGRmLCB7XHJcbiAgICAgIG9ubHlTZWxmOiB0cnVlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHBhcGVyRm9ybWF0KCk6IFByaW50UGFwZXJGb3JtYXQge1xyXG4gICAgcmV0dXJuIHRoaXMucGFwZXJGb3JtYXRGaWVsZC52YWx1ZTtcclxuICB9XHJcbiAgc2V0IHBhcGVyRm9ybWF0KHZhbHVlOiBQcmludFBhcGVyRm9ybWF0KSB7XHJcbiAgICB0aGlzLnBhcGVyRm9ybWF0RmllbGQuc2V0VmFsdWUodmFsdWUgfHwgUHJpbnRQYXBlckZvcm1hdC5MZXR0ZXIsIHtcclxuICAgICAgb25seVNlbGY6IHRydWVcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgb3JpZW50YXRpb24oKTogUHJpbnRPcmllbnRhdGlvbiB7XHJcbiAgICByZXR1cm4gdGhpcy5vcmllbnRhdGlvbkZpZWxkLnZhbHVlO1xyXG4gIH1cclxuICBzZXQgb3JpZW50YXRpb24odmFsdWU6IFByaW50T3JpZW50YXRpb24pIHtcclxuICAgIHRoaXMub3JpZW50YXRpb25GaWVsZC5zZXRWYWx1ZSh2YWx1ZSB8fCBQcmludE9yaWVudGF0aW9uLmxhbmRzY2FwZSwge1xyXG4gICAgICBvbmx5U2VsZjogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCByZXNvbHV0aW9uKCk6IFByaW50UmVzb2x1dGlvbiB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXNvbHV0aW9uRmllbGQudmFsdWU7XHJcbiAgfVxyXG4gIHNldCByZXNvbHV0aW9uKHZhbHVlOiBQcmludFJlc29sdXRpb24pIHtcclxuICAgIHRoaXMucmVzb2x1dGlvbkZpZWxkLnNldFZhbHVlKHZhbHVlIHx8IFByaW50UmVzb2x1dGlvblsnOTYnXSwge1xyXG4gICAgICBvbmx5U2VsZjogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBsZWdlbmRQb3NpdGlvbigpOiBQcmludExlZ2VuZFBvc2l0aW9uIHtcclxuICAgIHJldHVybiB0aGlzLmxlZ2VuZFBvc2l0aW9uRmllbGQudmFsdWU7XHJcbiAgfVxyXG4gIHNldCBsZWdlbmRQb3NpdGlvbih2YWx1ZTogUHJpbnRMZWdlbmRQb3NpdGlvbikge1xyXG4gICAgdGhpcy5sZWdlbmRQb3NpdGlvbkZpZWxkLnNldFZhbHVlKHZhbHVlIHx8IFByaW50TGVnZW5kUG9zaXRpb24ubm9uZSwge1xyXG4gICAgICBvbmx5U2VsZjogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCB0aXRsZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudGl0bGVGaWVsZC52YWx1ZTtcclxuICB9XHJcbiAgc2V0IHRpdGxlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudGl0bGVGaWVsZC5zZXRWYWx1ZSh2YWx1ZSwgeyBvbmx5U2VsZjogdHJ1ZSB9KTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBnZXQgc3VidGl0bGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnN1YnRpdGxlRmllbGQudmFsdWU7XHJcbiAgfVxyXG4gIHNldCBzdWJ0aXRsZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnN1YnRpdGxlRmllbGQuc2V0VmFsdWUodmFsdWUsIHsgb25seVNlbGY6IHRydWUgfSk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGNvbW1lbnQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNvbW1lbnRGaWVsZC52YWx1ZTtcclxuICB9XHJcbiAgc2V0IGNvbW1lbnQodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5jb21tZW50RmllbGQuc2V0VmFsdWUodmFsdWUsIHsgb25seVNlbGY6IHRydWUgfSk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHNob3dQcm9qZWN0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2hvd1Byb2plY3Rpb25GaWVsZC52YWx1ZTtcclxuICB9XHJcbiAgc2V0IHNob3dQcm9qZWN0aW9uKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnNob3dQcm9qZWN0aW9uRmllbGQuc2V0VmFsdWUodmFsdWUsIHsgb25seVNlbGY6IHRydWUgfSk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHNob3dTY2FsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNob3dTY2FsZUZpZWxkLnZhbHVlO1xyXG4gIH1cclxuICBzZXQgc2hvd1NjYWxlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnNob3dTY2FsZUZpZWxkLnNldFZhbHVlKHZhbHVlLCB7IG9ubHlTZWxmOiB0cnVlIH0pO1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIGdldCBzaG93TGVnZW5kKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2hvd0xlZ2VuZEZpZWxkLnZhbHVlO1xyXG4gIH1cclxuICBzZXQgc2hvd0xlZ2VuZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zaG93TGVnZW5kRmllbGQuc2V0VmFsdWUodmFsdWUsIHsgb25seVNlbGY6IHRydWUgfSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBkb1ppcEZpbGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5kb1ppcEZpbGVGaWVsZC52YWx1ZTtcclxuICB9XHJcbiAgc2V0IGRvWmlwRmlsZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5kb1ppcEZpbGVGaWVsZC5zZXRWYWx1ZSh2YWx1ZSwgeyBvbmx5U2VsZjogdHJ1ZSB9KTtcclxuICB9XHJcblxyXG4gIGdldCBvdXRwdXRGb3JtYXRGaWVsZCgpIHtcclxuICAgIHJldHVybiAodGhpcy5mb3JtLmNvbnRyb2xzIGFzIGFueSkub3V0cHV0Rm9ybWF0IGFzIFVudHlwZWRGb3JtQ29udHJvbDtcclxuICB9XHJcblxyXG4gIGdldCBwYXBlckZvcm1hdEZpZWxkKCkge1xyXG4gICAgcmV0dXJuICh0aGlzLmZvcm0uY29udHJvbHMgYXMgYW55KS5wYXBlckZvcm1hdCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBnZXQgaW1hZ2VGb3JtYXRGaWVsZCgpIHtcclxuICAgIHJldHVybiAodGhpcy5mb3JtLmNvbnRyb2xzIGFzIGFueSkuaW1hZ2VGb3JtYXQgYXMgVW50eXBlZEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG9yaWVudGF0aW9uRmllbGQoKSB7XHJcbiAgICByZXR1cm4gKHRoaXMuZm9ybS5jb250cm9scyBhcyBhbnkpLm9yaWVudGF0aW9uIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcclxuICB9XHJcblxyXG4gIGdldCByZXNvbHV0aW9uRmllbGQoKSB7XHJcbiAgICByZXR1cm4gKHRoaXMuZm9ybS5jb250cm9scyBhcyBhbnkpLnJlc29sdXRpb24gYXMgVW50eXBlZEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbW1lbnRGaWVsZCgpIHtcclxuICAgIHJldHVybiAodGhpcy5mb3JtLmNvbnRyb2xzIGFzIGFueSkuY29tbWVudCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBnZXQgc2hvd1Byb2plY3Rpb25GaWVsZCgpIHtcclxuICAgIHJldHVybiAodGhpcy5mb3JtLmNvbnRyb2xzIGFzIGFueSkuc2hvd1Byb2plY3Rpb24gYXMgVW50eXBlZEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3dTY2FsZUZpZWxkKCkge1xyXG4gICAgcmV0dXJuICh0aGlzLmZvcm0uY29udHJvbHMgYXMgYW55KS5zaG93U2NhbGUgYXMgVW50eXBlZEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3dMZWdlbmRGaWVsZCgpIHtcclxuICAgIHJldHVybiAodGhpcy5mb3JtLmNvbnRyb2xzIGFzIGFueSkuc2hvd0xlZ2VuZCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBnZXQgZG9aaXBGaWxlRmllbGQoKSB7XHJcbiAgICByZXR1cm4gKHRoaXMuZm9ybS5jb250cm9scyBhcyBhbnkpLmRvWmlwRmlsZSBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBnZXQgdGl0bGVGaWVsZCgpIHtcclxuICAgIHJldHVybiAodGhpcy5mb3JtLmNvbnRyb2xzIGFzIGFueSkudGl0bGUgYXMgVW50eXBlZEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHN1YnRpdGxlRmllbGQoKSB7XHJcbiAgICByZXR1cm4gKHRoaXMuZm9ybS5jb250cm9scyBhcyBhbnkpLnN1YnRpdGxlIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcclxuICB9XHJcblxyXG4gIGdldCBsZWdlbmRQb3NpdGlvbkZpZWxkKCkge1xyXG4gICAgcmV0dXJuICh0aGlzLmZvcm0uY29udHJvbHMgYXMgYW55KS5sZWdlbmRQb3NpdGlvbiBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgc3VibWl0OiBFdmVudEVtaXR0ZXI8UHJpbnRPcHRpb25zPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgbWF4TGVuZ3RoOiBudW1iZXIgPSAxODA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcikge1xyXG4gICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIHRpdGxlOiBbJycsIFtWYWxpZGF0b3JzLm1pbkxlbmd0aCgwKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTMwKV1dLFxyXG4gICAgICBzdWJ0aXRsZTogWycnLCBbVmFsaWRhdG9ycy5taW5MZW5ndGgoMCksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEyMCldXSxcclxuICAgICAgY29tbWVudDogWycnLCBbVmFsaWRhdG9ycy5taW5MZW5ndGgoMCksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMubWF4TGVuZ3RoKV1dLFxyXG4gICAgICBvdXRwdXRGb3JtYXQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgcGFwZXJGb3JtYXQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgaW1hZ2VGb3JtYXQ6IFsgJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIHJlc29sdXRpb246IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgb3JpZW50YXRpb246IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgbGVnZW5kUG9zaXRpb246IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgc2hvd1Byb2plY3Rpb246IGZhbHNlLFxyXG4gICAgICBzaG93U2NhbGU6IGZhbHNlLFxyXG4gICAgICBzaG93TGVnZW5kOiBmYWxzZSxcclxuICAgICAgZG9aaXBGaWxlOiBbe2hpZGRlbjogdGhpcy5pc1ByaW50U2VydmljZSB9XVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZG9aaXBGaWxlRmllbGQuc2V0VmFsdWUoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRm9ybVN1Ym1pdChkYXRhOiBQcmludE9wdGlvbnMsIGlzVmFsaWQ6IGJvb2xlYW4pIHtcclxuICAgIGRhdGEuaXNQcmludFNlcnZpY2UgPSB0aGlzLmlzUHJpbnRTZXJ2aWNlO1xyXG4gICAgaWYgKGlzVmFsaWQpIHtcclxuICAgICAgdGhpcy5zdWJtaXQuZW1pdChkYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRvZ2dsZUltYWdlU2F2ZVByb3AoKSB7XHJcbiAgICBpZiAodGhpcy5vdXRwdXRGb3JtYXRGaWVsZC52YWx1ZSA9PT0gJ0ltYWdlJykge1xyXG4gICAgICB0aGlzLmlzUHJpbnRTZXJ2aWNlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbWVudEZpZWxkLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICB0aGlzLmNvbW1lbnRGaWVsZC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlzUHJpbnRTZXJ2aWNlID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZUNvbW1lbnRMZW5ndGgoKSB7XHJcbiAgICBzd2l0Y2ggKHRoaXMucGFwZXJGb3JtYXQpIHtcclxuICAgICAgY2FzZSBQcmludFBhcGVyRm9ybWF0LkEwOlxyXG4gICAgICAgIC8vIEEwLCBsYW5kc2NhcGUsIGxlbmd0aCA5MDAgfCBBMCwgcG9ydHJhaXQsIGNvbW1lbnQgbGVuZ3RoOiAgNjAwXHJcbiAgICAgICAgdGhpcy5tYXhMZW5ndGggPSAodGhpcy5vcmllbnRhdGlvbiA9PT0gUHJpbnRPcmllbnRhdGlvbi5sYW5kc2NhcGUpID8gOTAwIDogNjAwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFByaW50UGFwZXJGb3JtYXQuQTE6XHJcbiAgICAgICAgLy8gQTEsIGxhbmRzY2FwZSwgbGVuZ3RoIDYwMCB8IEExLCBwb3J0cmFpdCwgbGVuZ3RoIDQwMDtcclxuICAgICAgICB0aGlzLm1heExlbmd0aCA9ICh0aGlzLm9yaWVudGF0aW9uID09PSBQcmludE9yaWVudGF0aW9uLmxhbmRzY2FwZSkgPyA2MDAgOiA0MDA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgUHJpbnRQYXBlckZvcm1hdC5BMjpcclxuICAgICAgICAvLyBBMiwgbGFuZHNjYXBlLCBsZW5ndGggNDAwIHwgQTIsIHBvcnRyYWl0LCBsZW5ndGggMzAwO1xyXG4gICAgICAgIHRoaXMubWF4TGVuZ3RoID0gKHRoaXMub3JpZW50YXRpb24gPT09IFByaW50T3JpZW50YXRpb24ubGFuZHNjYXBlKSA/IDQwMCA6IDMwMDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBQcmludFBhcGVyRm9ybWF0LkEzOlxyXG4gICAgICAgIC8vIEEzLCBsYW5kc2NhcGUsIGxlbmd0aCAzMDAgfCBBMywgcG9ydHJhaXQsIGxlbmd0aCAyMDA7XHJcbiAgICAgICAgdGhpcy5tYXhMZW5ndGggPSAodGhpcy5vcmllbnRhdGlvbiA9PT0gUHJpbnRPcmllbnRhdGlvbi5sYW5kc2NhcGUpID8gMzAwIDogMjAwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFByaW50UGFwZXJGb3JtYXQuQTQ6XHJcbiAgICAgICAgLy8gQTQsIGxhbmRzY2FwZSBsZW5ndGggMjAwIHwgQTQsIHBvcnRyYWl0IGxlbmd0aCAxMjA7XHJcbiAgICAgICAgdGhpcy5tYXhMZW5ndGggPSAodGhpcy5vcmllbnRhdGlvbiA9PT0gUHJpbnRPcmllbnRhdGlvbi5sYW5kc2NhcGUpID8gMjAwIDogMTAwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFByaW50UGFwZXJGb3JtYXQuQTU6XHJcbiAgICAgICAgLy8gQTUsIGxhbmRzY2FwZSBsZW5ndGggMTIwIHwgQTUsIHBvcnRyYWl0IGxlbmd0aCA4MDtcclxuICAgICAgICB0aGlzLm1heExlbmd0aCA9ICh0aGlzLm9yaWVudGF0aW9uID09PSBQcmludE9yaWVudGF0aW9uLmxhbmRzY2FwZSkgPyAxMjAgOiA4MDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBQcmludFBhcGVyRm9ybWF0LkxldHRlcjpcclxuICAgICAgICAvLyBsZXR0cmUsIGxhbmRzY2FwZSwgMTgwIHwgbGV0dHJlLCBwb3J0cmFpdCwgMTQwXHJcbiAgICAgICAgdGhpcy5tYXhMZW5ndGggPSAodGhpcy5vcmllbnRhdGlvbiA9PT0gUHJpbnRPcmllbnRhdGlvbi5sYW5kc2NhcGUpID8gMTgwIDogMTQwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIC8vIGxlZ2FsLCBsYW5kc2NhcGUsIDIwMCB8IGxlZ2FsLCBwb3J0cmFpdCwgMTQwXHJcbiAgICAgICAgdGhpcy5tYXhMZW5ndGggPSAodGhpcy5vcmllbnRhdGlvbiA9PT0gUHJpbnRPcmllbnRhdGlvbi5sYW5kc2NhcGUpID8gMjAwIDogMTQwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29tbWVudEZpZWxkLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMubWF4TGVuZ3RoKV3igIspO1xyXG4gICAgdGhpcy5jb21tZW50RmllbGQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxufVxyXG4iLCI8Zm9ybSBjbGFzcz1cImlnby1mb3JtXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XHJcbiAgPGRpdiBjbGFzcz1cImlnby1pbnB1dC1jb250YWluZXJcIj5cclxuICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydpZ28uZ2VvLnByaW50Rm9ybS50aXRsZScgfCB0cmFuc2xhdGV9fVwiPlxyXG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJ0aXRsZUZpZWxkLmVycm9ycz8ubWF4bGVuZ3RoXCI+e3snaWdvLmdlby5mb3JtVmFsaWRhdGlvbi5tYXhMZW5ndGgnIHwgdHJhbnNsYXRlOiB7IFxyXG4gICAgICAgICAgY29sdW1uOiAnaWdvLmdlby5wcmludEZvcm0udGl0bGUnIHwgdHJhbnNsYXRlLCBcclxuICAgICAgICAgIHZhbHVlOiAxMzAgfSB9fTwvbWF0LWVycm9yPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiaWdvLWlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInN1YnRpdGxlXCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7J2lnby5nZW8ucHJpbnRGb3JtLnN1YnRpdGxlJyB8IHRyYW5zbGF0ZX19XCI+XHJcbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInN1YnRpdGxlRmllbGQuZXJyb3JzPy5tYXhsZW5ndGhcIj57eydpZ28uZ2VvLmZvcm1WYWxpZGF0aW9uLm1heExlbmd0aCcgfCB0cmFuc2xhdGU6IHsgXHJcbiAgICAgICAgICBjb2x1bW46ICdpZ28uZ2VvLnByaW50Rm9ybS5zdWJ0aXRsZScgfCB0cmFuc2xhdGUsIFxyXG4gICAgICAgICAgdmFsdWU6IDEyMCB9IH19PC9tYXQtZXJyb3I+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJpZ28taW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29tbWVudFwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydpZ28uZ2VvLnByaW50Rm9ybS5jb21tZW50JyB8IHRyYW5zbGF0ZX19XCI+XHJcbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImNvbW1lbnRGaWVsZC5lcnJvcnM/Lm1heGxlbmd0aFwiPnt7J2lnby5nZW8uZm9ybVZhbGlkYXRpb24ubWF4TGVuZ3RoJyB8IHRyYW5zbGF0ZTogeyBcclxuICAgICAgICAgIGNvbHVtbjogJ2lnby5nZW8ucHJpbnRGb3JtLmNvbW1lbnQnIHwgdHJhbnNsYXRlLCBcclxuICAgICAgICAgIHZhbHVlOiBtYXhMZW5ndGggfSB9fTwvbWF0LWVycm9yPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImlnby1pbnB1dC1jb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJwcmludC1zbGlkZS10b2dnbGUtY29udGFpbmVyIG1hdC10eXBvZ3JhcGh5XCI+XHJcbiAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlXHJcbiAgICAgICAgY2xhc3M9XCJwcmludC1vcHRpb25cIlxyXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNob3dQcm9qZWN0aW9uXCJcclxuICAgICAgICBbbGFiZWxQb3NpdGlvbl09XCInYmVmb3JlJ1wiPlxyXG4gICAgICAgIHt7J2lnby5nZW8ucHJpbnRGb3JtLnNob3dQcm9qZWN0aW9uJyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgPG1hdC1zbGlkZS10b2dnbGVcclxuICAgICAgICBjbGFzcz1cInByaW50LW9wdGlvblwiXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2hvd1NjYWxlXCJcclxuICAgICAgICBbbGFiZWxQb3NpdGlvbl09XCInYmVmb3JlJ1wiPlxyXG4gICAgICAgIHt7J2lnby5nZW8ucHJpbnRGb3JtLnNob3dTY2FsZScgfCB0cmFuc2xhdGV9fVxyXG4gICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlXHJcbiAgICAgICAgY2xhc3M9XCJwcmludC1vcHRpb25cIlxyXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRvWmlwRmlsZVwiXHJcbiAgICAgICAgW2xhYmVsUG9zaXRpb25dPVwiJ2JlZm9yZSdcIlxyXG4gICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cImlzUHJpbnRTZXJ2aWNlID8gJ25vbmUnIDogJydcIj5cclxuICAgICAgICB7eydpZ28uZ2VvLnByaW50Rm9ybS5kb1ppcEZpbGUnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJpZ28taW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtc2VsZWN0XHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGVnZW5kUG9zaXRpb25cIlxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3snaWdvLmdlby5wcmludEZvcm0ubGVnZW5kUG9zaXRpb24nIHwgdHJhbnNsYXRlfX1cIj5cclxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbGVnZW5kUG9zaXRpb24gb2YgbGVnZW5kUG9zaXRpb25zIHwga2V5dmFsdWUgXCIgW3ZhbHVlXT1cImxlZ2VuZFBvc2l0aW9uLmtleVwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFbJ25ld3BhZ2UnLCAnbmV3aW1hZ2UnXS5pbmNsdWRlcyhsZWdlbmRQb3NpdGlvbi52YWx1ZSlcIj5cclxuICAgICAgICAgICAge3snaWdvLmdlby5wcmludEZvcm0ubGVnZW5kUG9zaXRpb25zLicgKyBsZWdlbmRQb3NpdGlvbi52YWx1ZSB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiWyduZXdwYWdlJywgJ25ld2ltYWdlJ10uaW5jbHVkZXMobGVnZW5kUG9zaXRpb24udmFsdWUpXCI+XHJcbiAgICAgICAgICAgIHt7ICgob3V0cHV0Rm9ybWF0ID09PSAnUGRmJykgPyAnaWdvLmdlby5wcmludEZvcm0ubGVnZW5kUG9zaXRpb25zLm5ld3BhZ2UnIDogXHJcbiAgICAgICAgICAgICdpZ28uZ2VvLnByaW50Rm9ybS5sZWdlbmRQb3NpdGlvbnMubmV3aW1hZ2UnKSB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcblxyXG4gICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiaWdvLWlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LXNlbGVjdCAoc2VsZWN0aW9uQ2hhbmdlKT1cInRvZ2dsZUltYWdlU2F2ZVByb3AoKVwiXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwib3V0cHV0Rm9ybWF0XCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7J2lnby5nZW8ucHJpbnRGb3JtLm91dHB1dEZvcm1hdCcgfCB0cmFuc2xhdGV9fVwiPlxyXG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvdXRwdXRGb3JtYXQgb2Ygb3V0cHV0Rm9ybWF0cyB8IGtleXZhbHVlIFwiIFt2YWx1ZV09XCJvdXRwdXRGb3JtYXQua2V5XCI+XHJcbiAgICAgICAgICAgIHt7b3V0cHV0Rm9ybWF0LnZhbHVlfX1cclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJpZ28taW5wdXQtY29udGFpbmVyXCIgW3N0eWxlLmRpc3BsYXldPVwiaXNQcmludFNlcnZpY2UgPyAnYmxvY2snIDogJ25vbmUnXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtc2VsZWN0IChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlQ29tbWVudExlbmd0aCgpXCJcclxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwYXBlckZvcm1hdFwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydpZ28uZ2VvLnByaW50Rm9ybS5wYXBlckZvcm1hdCcgfCB0cmFuc2xhdGV9fVwiPlxyXG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBwYXBlckZvcm1hdCBvZiBwYXBlckZvcm1hdHMgfCBrZXl2YWx1ZSBcIiBbdmFsdWVdPVwicGFwZXJGb3JtYXQua2V5XCI+XHJcbiAgICAgICAgICB7eygnaWdvLmdlby5wcmludEZvcm0ucGFwZXJGb3JtYXRzLicgKyBwYXBlckZvcm1hdC52YWx1ZSkgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImlnby1pbnB1dC1jb250YWluZXJcIiBbc3R5bGUuZGlzcGxheV09XCJpc1ByaW50U2VydmljZSA/ICdub25lJyA6ICdibG9jaydcIj5cclxuICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgPG1hdC1zZWxlY3RcclxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpbWFnZUZvcm1hdFwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydpZ28uZ2VvLnByaW50Rm9ybS5pbWFnZUZvcm1hdCcgfCB0cmFuc2xhdGV9fVwiPlxyXG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpbWFnZUZvcm1hdCBvZiBpbWFnZUZvcm1hdHMgfCBrZXl2YWx1ZSBcIiBbdmFsdWVdPVwiaW1hZ2VGb3JtYXQua2V5XCI+XHJcbiAgICAgICAgICB7e2ltYWdlRm9ybWF0LnZhbHVlfX1cclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJpZ28taW5wdXQtY29udGFpbmVyXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LXNlbGVjdFxyXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlc29sdXRpb25cIlxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3snaWdvLmdlby5wcmludEZvcm0ucmVzb2x1dGlvbicgfCB0cmFuc2xhdGV9fVwiPlxyXG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCByZXNvbHV0aW9uIG9mIHJlc29sdXRpb25zIHwga2V5dmFsdWUgXCIgW3ZhbHVlXT1cInJlc29sdXRpb24ua2V5XCI+XHJcbiAgICAgICAgICB7e3Jlc29sdXRpb24udmFsdWUgKyAnIFBQSSd9fVxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImlnby1pbnB1dC1jb250YWluZXJcIiBbc3R5bGUuZGlzcGxheV09XCJpc1ByaW50U2VydmljZSA/ICdibG9jaycgOiAnbm9uZSdcIj5cclxuICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgPG1hdC1zZWxlY3QgKHNlbGVjdGlvbkNoYW5nZSk9XCJjaGFuZ2VDb21tZW50TGVuZ3RoKClcIlxyXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm9yaWVudGF0aW9uXCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7J2lnby5nZW8ucHJpbnRGb3JtLm9yaWVudGF0aW9uJyB8IHRyYW5zbGF0ZX19XCI+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9yaWVudGF0aW9uIG9mIG9yaWVudGF0aW9ucyB8IGtleXZhbHVlIFwiIFt2YWx1ZV09XCJvcmllbnRhdGlvbi5rZXlcIj5cclxuICAgICAgICAgIHt7KCdpZ28uZ2VvLnByaW50Rm9ybS4nICsgb3JpZW50YXRpb24udmFsdWUpIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJpZ28tZm9ybS1idXR0b24tZ3JvdXAgcHJpbnQtYnV0dG9uLXRvcC1wYWRkaW5nXCI+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiIWZvcm0udmFsaWQgfHwgKGRpc2FibGVkJCB8IGFzeW5jKVwiXHJcbiAgICAgIChjbGljayk9XCJoYW5kbGVGb3JtU3VibWl0KGZvcm0udmFsdWUsIGZvcm0udmFsaWQpXCI+XHJcbiAgICAgIHt7J2lnby5nZW8ucHJpbnRGb3JtLnNhdmVCdG4nIHwgdHJhbnNsYXRlfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG5cclxuPC9mb3JtPlxyXG4iXX0=