@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.
- package/assets/icons/cross_black_18px.svg +88 -88
- package/assets/icons/place_blue_36px.svg +55 -55
- package/assets/icons/place_green_36px.svg +55 -55
- package/assets/icons/place_red_36px.svg +55 -55
- package/assets/icons/place_yellow_36px.svg +55 -55
- package/esm2020/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +13 -11
- package/esm2020/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +10 -10
- package/esm2020/lib/catalog/catalog-browser/catalog-browser.component.mjs +20 -17
- package/esm2020/lib/catalog/catalog-browser/catalog-browser.module.mjs +1 -1
- package/esm2020/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +2 -2
- package/esm2020/lib/catalog/catalog-library/catalog-library-item.component.mjs +2 -2
- package/esm2020/lib/catalog/catalog-library/catalog-library.component.mjs +7 -12
- package/esm2020/lib/catalog/catalog-library/catalog-library.module.mjs +1 -1
- package/esm2020/lib/catalog/catalog.module.mjs +1 -1
- package/esm2020/lib/catalog/shared/catalog.abstract.mjs +1 -1
- package/esm2020/lib/catalog/shared/catalog.enum.mjs +1 -1
- package/esm2020/lib/catalog/shared/catalog.interface.mjs +1 -1
- package/esm2020/lib/catalog/shared/catalog.service.mjs +3 -5
- package/esm2020/lib/datasource/datasource.module.mjs +1 -1
- package/esm2020/lib/datasource/shared/capabilities.service.mjs +2 -2
- package/esm2020/lib/datasource/shared/datasource.service.mjs +27 -31
- package/esm2020/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/any-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/carto-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/carto-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/cluster-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/data.service.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/feature-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/mvt-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/osm-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/osm-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/websocket-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/wfs-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/wfs.service.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/wms-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/wms-wfs.utils.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/wmts-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/xyz-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/options/options-api.providers.mjs +1 -1
- package/esm2020/lib/datasource/shared/options/options-api.service.mjs +1 -1
- package/esm2020/lib/datasource/shared/options/options.service.mjs +1 -1
- package/esm2020/lib/datasource/utils/index.mjs +1 -2
- package/esm2020/lib/datasource/utils/tilegrid.mjs +1 -1
- package/esm2020/lib/directions/directions-buttons/directions-buttons.component.mjs +4 -10
- package/esm2020/lib/directions/directions-inputs/directions-inputs.component.mjs +2 -2
- package/esm2020/lib/directions/directions-results/directions-results.component.mjs +2 -2
- package/esm2020/lib/directions/directions-sources/directions-source.mjs +1 -1
- package/esm2020/lib/directions/directions-sources/directions-source.provider.mjs +1 -1
- package/esm2020/lib/directions/directions-sources/osrm-directions-source.mjs +1 -1
- package/esm2020/lib/directions/directions.component.mjs +2 -2
- package/esm2020/lib/directions/directions.module.mjs +1 -1
- package/esm2020/lib/directions/shared/directions-source.service.mjs +1 -1
- package/esm2020/lib/directions/shared/directions.interface.mjs +1 -1
- package/esm2020/lib/directions/shared/directions.service.mjs +1 -1
- package/esm2020/lib/directions/shared/directions.utils.mjs +2 -2
- package/esm2020/lib/directions/shared/store.mjs +1 -1
- package/esm2020/lib/download/download-button/download-button.component.mjs +2 -2
- package/esm2020/lib/download/download.module.mjs +1 -1
- package/esm2020/lib/download/shared/download.interface.mjs +1 -1
- package/esm2020/lib/download/shared/download.service.mjs +5 -8
- package/esm2020/lib/draw/draw/draw-layer-popup.component.mjs +2 -2
- package/esm2020/lib/draw/draw/draw-popup.component.mjs +3 -3
- package/esm2020/lib/draw/draw/draw-shorcuts.component.mjs +2 -2
- package/esm2020/lib/draw/draw/draw.component.mjs +11 -10
- package/esm2020/lib/draw/draw/draw.module.mjs +1 -1
- package/esm2020/lib/draw/drawingTool.module.mjs +1 -1
- package/esm2020/lib/draw/shared/draw-icon.service.mjs +1 -1
- package/esm2020/lib/draw/shared/draw.enum.mjs +1 -17
- package/esm2020/lib/draw/shared/draw.interface.mjs +1 -1
- package/esm2020/lib/draw/shared/draw.utils.mjs +1 -1
- package/esm2020/lib/draw/shared/index.mjs +1 -2
- package/esm2020/lib/feature/feature-details/feature-details.component.mjs +4 -5
- package/esm2020/lib/feature/feature-details/feature-details.directive.mjs +1 -1
- package/esm2020/lib/feature/feature-details/feature-details.module.mjs +1 -1
- package/esm2020/lib/feature/feature-form/feature-form.component.mjs +2 -2
- package/esm2020/lib/feature/feature-form/feature-form.module.mjs +1 -1
- package/esm2020/lib/feature/feature.module.mjs +1 -1
- package/esm2020/lib/feature/shared/feature.interfaces.mjs +1 -1
- package/esm2020/lib/feature/shared/feature.utils.mjs +7 -5
- package/esm2020/lib/feature/shared/store.mjs +10 -1
- package/esm2020/lib/feature/shared/strategies/in-map-extent.mjs +1 -1
- package/esm2020/lib/feature/shared/strategies/in-map-resolution.mjs +1 -1
- package/esm2020/lib/feature/shared/strategies/index.mjs +2 -1
- package/esm2020/lib/feature/shared/strategies/loading-layer.mjs +1 -1
- package/esm2020/lib/feature/shared/strategies/loading.mjs +1 -1
- package/esm2020/lib/feature/shared/strategies/search.mjs +150 -0
- package/esm2020/lib/feature/shared/strategies/selection.mjs +1 -1
- package/esm2020/lib/feature/shared/strategies.utils.mjs +1 -1
- package/esm2020/lib/filter/filter.module.mjs +1 -1
- package/esm2020/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +2 -2
- package/esm2020/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +2 -2
- package/esm2020/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +2 -2
- package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +2 -2
- package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +2 -2
- package/esm2020/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +2 -2
- package/esm2020/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +2 -2
- package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +1 -1
- package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +2 -2
- package/esm2020/lib/filter/shared/filterable-datasource.pipe.mjs +1 -1
- package/esm2020/lib/filter/shared/ogc-filter-time.service.mjs +1 -1
- package/esm2020/lib/filter/shared/ogc-filter.enum.mjs +1 -1
- package/esm2020/lib/filter/shared/ogc-filter.interface.mjs +1 -1
- package/esm2020/lib/filter/shared/ogc-filter.mjs +1 -1
- package/esm2020/lib/filter/shared/ogc-filter.service.mjs +1 -1
- package/esm2020/lib/filter/shared/spatial-filter.enum.mjs +1 -1
- package/esm2020/lib/filter/shared/spatial-filter.service.mjs +1 -1
- package/esm2020/lib/filter/shared/time-filter.enum.mjs +1 -1
- package/esm2020/lib/filter/shared/time-filter.interface.mjs +1 -1
- package/esm2020/lib/filter/shared/time-filter.service.mjs +1 -1
- package/esm2020/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +5 -5
- package/esm2020/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +6 -7
- package/esm2020/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +2 -2
- package/esm2020/lib/filter/time-filter-button/time-filter-button.component.mjs +2 -2
- package/esm2020/lib/filter/time-filter-form/time-filter-form.component.mjs +2 -2
- package/esm2020/lib/filter/time-filter-item/time-filter-item.component.mjs +2 -2
- package/esm2020/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +1 -1
- package/esm2020/lib/filter/time-filter-list/time-filter-list.component.mjs +2 -2
- package/esm2020/lib/geo.module.mjs +5 -1
- package/esm2020/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +13 -12
- package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +2 -2
- package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +1 -1
- package/esm2020/lib/geometry/geometry.module.mjs +1 -1
- package/esm2020/lib/geometry/shared/controls/draw.mjs +1 -1
- package/esm2020/lib/geometry/shared/controls/modify.mjs +1 -1
- package/esm2020/lib/geometry/shared/controls/slice.mjs +1 -1
- package/esm2020/lib/geometry/shared/geometry.errors.mjs +1 -1
- package/esm2020/lib/geometry/shared/geometry.interfaces.mjs +1 -1
- package/esm2020/lib/geometry/shared/geometry.utils.mjs +1 -1
- package/esm2020/lib/import-export/export-button/export-button.component.mjs +2 -2
- package/esm2020/lib/import-export/import-export/import-export.component.mjs +53 -45
- package/esm2020/lib/import-export/import-export.module.mjs +5 -9
- package/esm2020/lib/import-export/index.mjs +1 -2
- package/esm2020/lib/import-export/shared/drop-geo-file.directive.mjs +31 -14
- package/esm2020/lib/import-export/shared/export.interface.mjs +1 -1
- package/esm2020/lib/import-export/shared/export.service.mjs +1 -1
- package/esm2020/lib/import-export/shared/export.type.mjs +1 -1
- package/esm2020/lib/import-export/shared/export.utils.mjs +8 -17
- package/esm2020/lib/import-export/shared/import.errors.mjs +1 -1
- package/esm2020/lib/import-export/shared/import.interface.mjs +1 -1
- package/esm2020/lib/import-export/shared/import.service.mjs +1 -1
- package/esm2020/lib/import-export/shared/import.utils.mjs +58 -91
- package/esm2020/lib/layer/index.mjs +1 -2
- package/esm2020/lib/layer/layer-item/layer-item.component.mjs +2 -2
- package/esm2020/lib/layer/layer-legend/layer-legend.component.mjs +3 -3
- package/esm2020/lib/layer/layer-legend-item/layer-legend-item.component.mjs +2 -2
- package/esm2020/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +1 -1
- package/esm2020/lib/layer/layer-legend-list/layer-legend-list.component.mjs +2 -2
- package/esm2020/lib/layer/layer-list/layer-list-binding.directive.mjs +1 -1
- package/esm2020/lib/layer/layer-list/layer-list.component.mjs +2 -2
- package/esm2020/lib/layer/layer-list/layer-list.enum.mjs +1 -1
- package/esm2020/lib/layer/layer-list-tool/layer-list-tool.component.mjs +2 -2
- package/esm2020/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +1 -1
- package/esm2020/lib/layer/layer-list-tool/layer-list-tool.service.mjs +1 -1
- package/esm2020/lib/layer/layer.module.mjs +6 -11
- package/esm2020/lib/layer/shared/clusterParam.mjs +1 -1
- package/esm2020/lib/layer/shared/index.mjs +1 -3
- package/esm2020/lib/layer/shared/layer.service.mjs +80 -29
- package/esm2020/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/any-layer.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/image-layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/image-layer.mjs +6 -7
- package/esm2020/lib/layer/shared/layers/layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/layer.mjs +5 -3
- package/esm2020/lib/layer/shared/layers/tile-layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/tile-layer.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/vector-layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/vector-layer.mjs +155 -6
- package/esm2020/lib/layer/shared/layers/vectortile-layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/vectortile-layer.mjs +1 -1
- package/esm2020/lib/layer/track-feature-button/track-feature-button.component.mjs +2 -2
- package/esm2020/lib/layer/utils/image-watcher.mjs +3 -6
- package/esm2020/lib/layer/utils/layer.utils.mjs +2 -2
- package/esm2020/lib/layer/utils/outputLegend.mjs +3 -2
- package/esm2020/lib/layer/utils/tile-watcher.mjs +1 -1
- package/esm2020/lib/layer/utils/vector-watcher.mjs +1 -1
- package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +1 -1
- package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +2 -2
- package/esm2020/lib/map/baselayers-switcher/mini-basemap.component.mjs +2 -2
- package/esm2020/lib/map/geolocate-button/geolocate-button.component.mjs +2 -2
- package/esm2020/lib/map/info-section/info-section.component.mjs +2 -2
- package/esm2020/lib/map/map-browser/map-browser.component.mjs +3 -3
- package/esm2020/lib/map/map-center/map-center.component.mjs +2 -2
- package/esm2020/lib/map/map.module.mjs +1 -1
- package/esm2020/lib/map/menu-button/menu-button.component.mjs +3 -3
- package/esm2020/lib/map/offline-button/offline-button.component.mjs +34 -57
- package/esm2020/lib/map/rotation-button/rotation-button.component.mjs +2 -2
- package/esm2020/lib/map/shared/controllers/controller.mjs +1 -1
- package/esm2020/lib/map/shared/controllers/geolocation.mjs +151 -36
- package/esm2020/lib/map/shared/controllers/view.mjs +1 -1
- package/esm2020/lib/map/shared/hover-feature.directive.mjs +24 -73
- package/esm2020/lib/map/shared/linkedLayers.utils.mjs +3 -3
- package/esm2020/lib/map/shared/map-pointer-position.directive.mjs +1 -1
- package/esm2020/lib/map/shared/map.interface.mjs +1 -1
- package/esm2020/lib/map/shared/map.mjs +7 -5
- package/esm2020/lib/map/shared/map.service.mjs +1 -1
- package/esm2020/lib/map/shared/map.utils.mjs +1 -1
- package/esm2020/lib/map/shared/mapOffline.directive.mjs +50 -115
- package/esm2020/lib/map/shared/projection.interfaces.mjs +1 -1
- package/esm2020/lib/map/shared/projection.service.mjs +1 -1
- package/esm2020/lib/map/shared/projection.utils.mjs +1 -1
- package/esm2020/lib/map/swipe-control/swipe-control.component.mjs +3 -3
- package/esm2020/lib/map/utils/layer-watcher.mjs +1 -1
- package/esm2020/lib/map/wake-lock-button/wake-lock-button.component.mjs +24 -35
- package/esm2020/lib/map/zoom-button/zoom-button.component.mjs +2 -2
- package/esm2020/lib/measure/measure.module.mjs +1 -1
- package/esm2020/lib/measure/measurer/measure-format.pipe.mjs +1 -1
- package/esm2020/lib/measure/measurer/measurer-dialog.component.mjs +2 -2
- package/esm2020/lib/measure/measurer/measurer-item.component.mjs +2 -2
- package/esm2020/lib/measure/measurer/measurer.component.mjs +2 -2
- package/esm2020/lib/measure/measurer/measurer.module.mjs +1 -1
- package/esm2020/lib/measure/shared/measure.enum.mjs +1 -1
- package/esm2020/lib/measure/shared/measure.interfaces.mjs +1 -1
- package/esm2020/lib/measure/shared/measure.utils.mjs +1 -1
- package/esm2020/lib/metadata/metadata-button/metadata-button.component.mjs +3 -3
- package/esm2020/lib/metadata/metadata.module.mjs +1 -1
- package/esm2020/lib/metadata/shared/metadata.interface.mjs +1 -1
- package/esm2020/lib/metadata/shared/metadata.service.mjs +1 -1
- package/esm2020/lib/offline/geoDB/configFileToGeoDB.service.mjs +4 -4
- package/esm2020/lib/offline/geoDB/geoDB.enums.mjs +1 -1
- package/esm2020/lib/offline/geoDB/geoDB.interface.mjs +1 -1
- package/esm2020/lib/offline/geoDB/geoDB.service.mjs +2 -2
- package/esm2020/lib/offline/index.mjs +2 -1
- package/esm2020/lib/offline/layerDB/index.mjs +3 -0
- package/esm2020/lib/offline/layerDB/layerDB.interface.mjs +2 -0
- package/esm2020/lib/offline/layerDB/layerDB.service.mjs +76 -0
- package/esm2020/lib/offline/shared/geo-network.service.mjs +1 -1
- package/esm2020/lib/overlay/overlay.module.mjs +1 -1
- package/esm2020/lib/overlay/shared/index.mjs +1 -2
- package/esm2020/lib/overlay/shared/overlay.directive.mjs +1 -1
- package/esm2020/lib/overlay/shared/overlay.enum.mjs +1 -1
- package/esm2020/lib/overlay/shared/overlay.mjs +1 -1
- package/esm2020/lib/overlay/shared/overlay.service.mjs +1 -1
- package/esm2020/lib/overlay/shared/overlay.utils.mjs +2 -88
- package/esm2020/lib/print/print/print.component.mjs +6 -20
- package/esm2020/lib/print/print-form/print-form.component.mjs +197 -111
- package/esm2020/lib/print/print.module.mjs +1 -1
- package/esm2020/lib/print/shared/geopdf.mjs +1 -1
- package/esm2020/lib/print/shared/index.mjs +1 -1
- package/esm2020/lib/print/shared/print.interface.mjs +1 -1
- package/esm2020/lib/print/shared/print.service.mjs +85 -35
- package/esm2020/lib/print/shared/print.type.mjs +1 -1
- package/esm2020/lib/query/query.module.mjs +1 -1
- package/esm2020/lib/query/shared/query-search-source.mjs +1 -1
- package/esm2020/lib/query/shared/query-search-source.providers.mjs +1 -1
- package/esm2020/lib/query/shared/query.directive.mjs +1 -1
- package/esm2020/lib/query/shared/query.interfaces.mjs +1 -1
- package/esm2020/lib/query/shared/query.service.mjs +3 -5
- package/esm2020/lib/query/shared/query.utils.mjs +1 -1
- package/esm2020/lib/search/search-bar/search-bar.component.mjs +3 -3
- package/esm2020/lib/search/search-bar/search-bar.module.mjs +1 -1
- package/esm2020/lib/search/search-bar/search-url-param.directive.mjs +1 -1
- package/esm2020/lib/search/search-results/save-feature-dialog.component.mjs +4 -4
- package/esm2020/lib/search/search-results/search-results-add-button.component.mjs +88 -31
- package/esm2020/lib/search/search-results/search-results-item.component.mjs +36 -13
- package/esm2020/lib/search/search-results/search-results.component.mjs +172 -58
- package/esm2020/lib/search/search-results/search-results.module.mjs +5 -1
- package/esm2020/lib/search/search-selector/search-selector.component.mjs +2 -2
- package/esm2020/lib/search/search-selector/search-selector.module.mjs +1 -1
- package/esm2020/lib/search/search-settings/search-settings.component.mjs +54 -56
- package/esm2020/lib/search/search-settings/search-settings.module.mjs +1 -1
- package/esm2020/lib/search/search.module.mjs +1 -1
- package/esm2020/lib/search/shared/search-pointer-summary.directive.mjs +3 -30
- package/esm2020/lib/search/shared/search-source-service.providers.mjs +1 -1
- package/esm2020/lib/search/shared/search-source.service.mjs +9 -1
- package/esm2020/lib/search/shared/search.enums.mjs +1 -1
- package/esm2020/lib/search/shared/search.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/search.service.mjs +1 -1
- package/esm2020/lib/search/shared/search.utils.mjs +3 -3
- package/esm2020/lib/search/shared/sources/coordinates.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/coordinates.mjs +1 -1
- package/esm2020/lib/search/shared/sources/coordinates.providers.mjs +4 -4
- package/esm2020/lib/search/shared/sources/icherche.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/icherche.mjs +1 -1
- package/esm2020/lib/search/shared/sources/icherche.providers.mjs +1 -1
- package/esm2020/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/ilayer.mjs +1 -1
- package/esm2020/lib/search/shared/sources/ilayer.providers.mjs +1 -1
- package/esm2020/lib/search/shared/sources/index.mjs +4 -1
- package/esm2020/lib/search/shared/sources/nominatim.mjs +2 -2
- package/esm2020/lib/search/shared/sources/nominatim.providers.mjs +1 -1
- package/esm2020/lib/search/shared/sources/source.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/source.mjs +31 -1
- package/esm2020/lib/search/shared/sources/storedqueries.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/storedqueries.mjs +1 -1
- package/esm2020/lib/search/shared/sources/storedqueries.providers.mjs +1 -1
- package/esm2020/lib/search/shared/sources/workspace.interfaces.mjs +2 -0
- package/esm2020/lib/search/shared/sources/workspace.mjs +186 -0
- package/esm2020/lib/search/shared/sources/workspace.providers.mjs +26 -0
- package/esm2020/lib/style/index.mjs +5 -0
- package/esm2020/lib/style/shared/datasource/esri-style-generator.mjs +357 -0
- package/esm2020/lib/style/shared/datasource/index.mjs +2 -0
- package/esm2020/lib/style/shared/feature/feature-style.mjs +141 -0
- package/esm2020/lib/style/shared/feature/index.mjs +2 -0
- package/esm2020/lib/style/shared/font.enum.mjs +17 -0
- package/esm2020/lib/style/shared/index.mjs +5 -0
- package/esm2020/lib/style/shared/overlay/index.mjs +3 -0
- package/esm2020/lib/style/shared/overlay/overlay-marker-style.utils.mjs +43 -0
- package/esm2020/lib/style/shared/overlay/overlay-style.utils.mjs +88 -0
- package/esm2020/lib/style/shared/vector/commonVectorStyle.mjs +75 -0
- package/esm2020/lib/style/shared/vector/conversion.utils.mjs +27 -0
- package/esm2020/lib/style/shared/vector/index.mjs +4 -0
- package/esm2020/lib/style/shared/vector/vector-style.interface.mjs +2 -0
- package/esm2020/lib/style/style-list/index.mjs +5 -0
- package/esm2020/lib/style/style-list/style-list.interface.mjs +2 -0
- package/esm2020/lib/style/style-list/style-list.module.mjs +23 -0
- package/esm2020/lib/style/style-list/style-list.provider.mjs +21 -0
- package/esm2020/lib/style/style-list/style-list.service.mjs +51 -0
- package/esm2020/lib/style/style-modal/drawing/index.mjs +2 -0
- package/esm2020/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +288 -0
- package/esm2020/lib/style/style-modal/index.mjs +5 -0
- package/esm2020/lib/style/style-modal/layer/index.mjs +2 -0
- package/esm2020/lib/style/style-modal/layer/style-modal-layer.component.mjs +187 -0
- package/esm2020/lib/style/style-modal/layer-button/index.mjs +2 -0
- package/esm2020/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +44 -0
- package/esm2020/lib/style/style-modal/shared/index.mjs +2 -0
- package/esm2020/lib/style/style-modal/shared/style-modal.interface.mjs +2 -0
- package/esm2020/lib/style/style-service/draw-style.service.mjs +187 -0
- package/esm2020/lib/style/style-service/index.mjs +3 -0
- package/esm2020/lib/style/style-service/style.service.mjs +356 -0
- package/esm2020/lib/style/style.module.mjs +74 -0
- package/esm2020/lib/toast/toast.component.mjs +3 -3
- package/esm2020/lib/toast/toast.module.mjs +1 -1
- package/esm2020/lib/utils/id-generator.mjs +1 -1
- package/esm2020/lib/utils/index.mjs +1 -3
- package/esm2020/lib/wkt/shared/wkt.service.mjs +15 -15
- package/esm2020/lib/wkt/wkt.module.mjs +1 -1
- package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +2 -2
- package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +1 -1
- package/esm2020/lib/workspace/confirmation-popup/index.mjs +1 -1
- package/esm2020/lib/workspace/shared/edition-workspace.mjs +1 -1
- package/esm2020/lib/workspace/shared/edition-workspace.service.mjs +19 -34
- package/esm2020/lib/workspace/shared/feature-workspace.mjs +1 -1
- package/esm2020/lib/workspace/shared/feature-workspace.service.mjs +10 -3
- package/esm2020/lib/workspace/shared/wfs-workspace.mjs +1 -1
- package/esm2020/lib/workspace/shared/wfs-workspace.service.mjs +2 -2
- package/esm2020/lib/workspace/shared/wms-workspace.service.mjs +3 -3
- package/esm2020/lib/workspace/shared/workspace.utils.mjs +1 -1
- package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +2 -2
- package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +1 -1
- package/esm2020/lib/workspace/widgets/widgets.mjs +1 -1
- package/esm2020/lib/workspace/workspace-selector/workspace-selector.directive.mjs +1 -1
- package/esm2020/lib/workspace/workspace-selector/workspace-selector.module.mjs +1 -1
- package/esm2020/lib/workspace/workspace-updator/workspace-updator.directive.mjs +1 -1
- package/esm2020/lib/workspace/workspace-updator/workspace-updator.module.mjs +1 -1
- package/esm2020/lib/workspace/workspace.module.mjs +1 -1
- package/esm2020/public_api.mjs +3 -1
- package/fesm2015/igo2-geo.mjs +6707 -5364
- package/fesm2015/igo2-geo.mjs.map +1 -1
- package/fesm2020/igo2-geo.mjs +7617 -6346
- package/fesm2020/igo2-geo.mjs.map +1 -1
- package/lib/catalog/catalog-browser/catalog-browser-group.component.d.ts +5 -14
- package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +2 -5
- package/lib/catalog/catalog-browser/catalog-browser.component.d.ts +3 -9
- package/lib/catalog/catalog-library/catalog-library.component.d.ts +2 -3
- package/lib/catalog/shared/catalog.interface.d.ts +10 -0
- package/lib/datasource/shared/datasources/datasource.interface.d.ts +13 -0
- package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +5 -0
- package/lib/datasource/utils/index.d.ts +0 -1
- package/lib/download/shared/download.service.d.ts +2 -3
- package/lib/draw/draw/draw.component.d.ts +3 -2
- package/lib/draw/shared/draw.enum.d.ts +0 -15
- package/lib/draw/shared/index.d.ts +0 -1
- package/lib/feature/shared/feature.interfaces.d.ts +5 -0
- package/lib/feature/shared/feature.utils.d.ts +4 -2
- package/lib/feature/shared/store.d.ts +7 -0
- package/lib/feature/shared/strategies/index.d.ts +1 -0
- package/lib/feature/shared/strategies/search.d.ts +55 -0
- package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +2 -3
- package/lib/geo.module.d.ts +3 -2
- package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +5 -9
- package/lib/geometry/geometry-form-field/geometry-form-field.component.d.ts +3 -3
- package/lib/import-export/import-export/import-export.component.d.ts +9 -4
- package/lib/import-export/import-export.module.d.ts +1 -2
- package/lib/import-export/index.d.ts +0 -1
- package/lib/import-export/shared/drop-geo-file.directive.d.ts +10 -7
- package/lib/import-export/shared/export.utils.d.ts +4 -4
- package/lib/import-export/shared/import.interface.d.ts +2 -0
- package/lib/import-export/shared/import.utils.d.ts +14 -12
- package/lib/layer/index.d.ts +0 -1
- package/lib/layer/layer.module.d.ts +19 -20
- package/lib/layer/shared/index.d.ts +0 -2
- package/lib/layer/shared/layer.service.d.ts +8 -5
- package/lib/layer/shared/layers/image-layer.d.ts +2 -3
- package/lib/layer/shared/layers/layer.d.ts +5 -1
- package/lib/layer/shared/layers/layer.interface.d.ts +2 -0
- package/lib/layer/shared/layers/vector-layer.d.ts +18 -2
- package/lib/layer/shared/layers/vector-layer.interface.d.ts +8 -7
- package/lib/layer/shared/layers/vectortile-layer.interface.d.ts +2 -4
- package/lib/layer/utils/image-watcher.d.ts +2 -3
- package/lib/map/offline-button/offline-button.component.d.ts +10 -18
- package/lib/map/shared/controllers/geolocation.d.ts +17 -2
- package/lib/map/shared/hover-feature.directive.d.ts +2 -10
- package/lib/map/shared/map.d.ts +2 -2
- package/lib/map/shared/mapOffline.directive.d.ts +4 -7
- package/lib/map/wake-lock-button/wake-lock-button.component.d.ts +3 -6
- package/lib/offline/geoDB/geoDB.service.d.ts +1 -1
- package/lib/offline/index.d.ts +1 -0
- package/lib/offline/layerDB/index.d.ts +2 -0
- package/lib/offline/layerDB/layerDB.interface.d.ts +7 -0
- package/lib/offline/layerDB/layerDB.service.d.ts +36 -0
- package/lib/overlay/shared/index.d.ts +0 -1
- package/lib/overlay/shared/overlay.utils.d.ts +0 -11
- package/lib/print/print-form/print-form.component.d.ts +2 -0
- package/lib/print/shared/print.service.d.ts +6 -0
- package/lib/search/search-results/save-feature-dialog.component.d.ts +1 -1
- package/lib/search/search-results/search-results-add-button.component.d.ts +10 -2
- package/lib/search/search-results/search-results-item.component.d.ts +5 -0
- package/lib/search/search-results/search-results.component.d.ts +5 -1
- package/lib/search/search-results/search-results.module.d.ts +11 -10
- package/lib/search/shared/search-pointer-summary.directive.d.ts +0 -9
- package/lib/search/shared/search-source.service.d.ts +7 -0
- package/lib/search/shared/search.interfaces.d.ts +1 -1
- package/lib/search/shared/sources/coordinates.providers.d.ts +3 -3
- package/lib/search/shared/sources/index.d.ts +3 -0
- package/lib/search/shared/sources/source.d.ts +6 -0
- package/lib/search/shared/sources/workspace.d.ts +33 -0
- package/lib/search/shared/sources/workspace.interfaces.d.ts +9 -0
- package/lib/search/shared/sources/workspace.providers.d.ts +17 -0
- package/lib/style/index.d.ts +4 -0
- package/lib/style/shared/datasource/index.d.ts +1 -0
- package/lib/style/shared/feature/feature-style.d.ts +18 -0
- package/lib/style/shared/feature/index.d.ts +1 -0
- package/lib/style/shared/font.enum.d.ts +15 -0
- package/lib/style/shared/index.d.ts +4 -0
- package/lib/style/shared/overlay/index.d.ts +2 -0
- package/lib/style/shared/overlay/overlay-style.utils.d.ts +19 -0
- package/lib/{utils → style/shared/vector}/commonVectorStyle.d.ts +4 -4
- package/lib/style/shared/vector/conversion.utils.d.ts +22 -0
- package/lib/style/shared/vector/index.d.ts +3 -0
- package/lib/style/shared/vector/vector-style.interface.d.ts +69 -0
- package/lib/style/style-modal/drawing/index.d.ts +1 -0
- package/lib/style/style-modal/drawing/style-modal-drawing.component.d.ts +31 -0
- package/lib/style/style-modal/index.d.ts +4 -0
- package/lib/style/style-modal/layer/index.d.ts +1 -0
- package/lib/style/style-modal/layer/style-modal-layer.component.d.ts +30 -0
- package/lib/style/style-modal/layer-button/index.d.ts +1 -0
- package/lib/style/style-modal/layer-button/style-modal-layer-button.component.d.ts +14 -0
- package/lib/style/style-modal/shared/index.d.ts +1 -0
- package/lib/style/style-modal/shared/style-modal.interface.d.ts +17 -0
- package/lib/{draw/shared → style/style-service}/draw-style.service.d.ts +3 -4
- package/lib/style/style-service/index.d.ts +2 -0
- package/lib/{layer/shared → style/style-service}/style.service.d.ts +5 -5
- package/lib/style/style.module.d.ts +22 -0
- package/lib/utils/index.d.ts +0 -2
- package/lib/workspace/shared/edition-workspace.service.d.ts +3 -4
- package/lib/workspace/shared/wms-workspace.service.d.ts +1 -1
- package/ngcc.config.js +3 -3
- package/package.json +17 -11
- package/public_api.d.ts +2 -0
- package/style/geo.theming.scss +12 -12
- package/esm2020/lib/datasource/utils/esri-style-generator.mjs +0 -357
- package/esm2020/lib/draw/shared/draw-style.service.mjs +0 -190
- package/esm2020/lib/import-export/style-list/index.mjs +0 -5
- package/esm2020/lib/import-export/style-list/style-list.interface.mjs +0 -2
- package/esm2020/lib/import-export/style-list/style-list.module.mjs +0 -23
- package/esm2020/lib/import-export/style-list/style-list.provider.mjs +0 -21
- package/esm2020/lib/import-export/style-list/style-list.service.mjs +0 -51
- package/esm2020/lib/layer/shared/style.service.mjs +0 -356
- package/esm2020/lib/layer/shared/vector-style.interface.mjs +0 -2
- package/esm2020/lib/layer/style-modal/index.mjs +0 -2
- package/esm2020/lib/layer/style-modal/style-modal.component.mjs +0 -288
- package/esm2020/lib/overlay/shared/overlay-marker-style.utils.mjs +0 -69
- package/esm2020/lib/utils/commonVectorStyle.interface.mjs +0 -2
- package/esm2020/lib/utils/commonVectorStyle.mjs +0 -75
- package/lib/layer/shared/vector-style.interface.d.ts +0 -38
- package/lib/layer/style-modal/index.d.ts +0 -1
- package/lib/layer/style-modal/style-modal.component.d.ts +0 -42
- package/lib/utils/commonVectorStyle.interface.d.ts +0 -16
- /package/lib/{datasource/utils → style/shared/datasource}/esri-style-generator.d.ts +0 -0
- /package/lib/{overlay/shared → style/shared/overlay}/overlay-marker-style.utils.d.ts +0 -0
- /package/lib/{import-export → style}/style-list/index.d.ts +0 -0
- /package/lib/{import-export → style}/style-list/style-list.interface.d.ts +0 -0
- /package/lib/{import-export → style}/style-list/style-list.module.d.ts +0 -0
- /package/lib/{import-export → style}/style-list/style-list.provider.d.ts +0 -0
- /package/lib/{import-export → style}/style-list/style-list.service.d.ts +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { default as OlGeometry } from 'ol/geom/Geometry';
|
|
2
|
-
import * as
|
|
2
|
+
import * as olStyle from 'ol/style';
|
|
3
3
|
import OlFeature from 'ol/Feature';
|
|
4
|
-
import { StyleByAttribute } from './vector-style.interface';
|
|
5
|
-
import { ClusterParam } from './clusterParam';
|
|
6
4
|
import RenderFeature from 'ol/render/Feature';
|
|
5
|
+
import { StyleByAttribute } from '../shared/vector/vector-style.interface';
|
|
6
|
+
import { ClusterParam } from '../../layer/shared/clusterParam';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export declare class StyleService {
|
|
9
|
-
style:
|
|
9
|
+
style: olStyle.Style;
|
|
10
10
|
/**
|
|
11
11
|
* Create a style based on a object as
|
|
12
12
|
* style: {
|
|
@@ -45,7 +45,7 @@ export declare class StyleService {
|
|
|
45
45
|
createStyle(options: {
|
|
46
46
|
[key: string]: any;
|
|
47
47
|
}, feature?: RenderFeature | OlFeature<OlGeometry>, resolution?: number): any;
|
|
48
|
-
|
|
48
|
+
parseStyle(key: string, value: any): any;
|
|
49
49
|
private getOlKey;
|
|
50
50
|
private getOlCls;
|
|
51
51
|
createStyleByAttribute(feature: RenderFeature | OlFeature<OlGeometry>, styleByAttribute: StyleByAttribute, resolution: number): any;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ModuleWithProviders } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "./style-modal/drawing/style-modal-drawing.component";
|
|
4
|
+
import * as i2 from "./style-modal/layer/style-modal-layer.component";
|
|
5
|
+
import * as i3 from "./style-modal/layer-button/style-modal-layer-button.component";
|
|
6
|
+
import * as i4 from "ngx-color-picker";
|
|
7
|
+
import * as i5 from "@angular/common";
|
|
8
|
+
import * as i6 from "@angular/forms";
|
|
9
|
+
import * as i7 from "@igo2/core";
|
|
10
|
+
import * as i8 from "@angular/material/form-field";
|
|
11
|
+
import * as i9 from "@angular/material/icon";
|
|
12
|
+
import * as i10 from "@angular/material/button";
|
|
13
|
+
import * as i11 from "@angular/material/input";
|
|
14
|
+
import * as i12 from "@angular/material/select";
|
|
15
|
+
import * as i13 from "@angular/material/tooltip";
|
|
16
|
+
import * as i14 from "./style-list/style-list.module";
|
|
17
|
+
export declare class IgoStyleModule {
|
|
18
|
+
static forRoot(): ModuleWithProviders<IgoStyleModule>;
|
|
19
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<IgoStyleModule, never>;
|
|
20
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<IgoStyleModule, [typeof i1.StyleModalDrawingComponent, typeof i2.StyleModalLayerComponent, typeof i3.StyleModalLayerButtonComponent], [typeof i4.ColorPickerModule, typeof i5.CommonModule, typeof i6.FormsModule, typeof i7.IgoLanguageModule, typeof i8.MatFormFieldModule, typeof i9.MatIconModule, typeof i10.MatButtonModule, typeof i11.MatInputModule, typeof i12.MatSelectModule, typeof i13.MatTooltipModule, typeof i6.ReactiveFormsModule, typeof i14.IgoStyleListModule], [typeof i14.IgoStyleListModule, typeof i1.StyleModalDrawingComponent, typeof i2.StyleModalLayerComponent, typeof i3.StyleModalLayerButtonComponent]>;
|
|
21
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<IgoStyleModule>;
|
|
22
|
+
}
|
package/lib/utils/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { HttpClient } from '@angular/common/http';
|
|
2
2
|
import { MatDialog } from '@angular/material/dialog';
|
|
3
|
-
import { ConfigService,
|
|
3
|
+
import { ConfigService, MessageService, StorageService } from '@igo2/core';
|
|
4
4
|
import { AuthInterceptor } from '@igo2/auth';
|
|
5
5
|
import { RelationOptions } from '../../datasource';
|
|
6
6
|
import { ImageLayer, LayerService, VectorLayer } from '../../layer';
|
|
7
|
-
import { StyleService } from '../../
|
|
7
|
+
import { StyleService } from '../../style/style-service/style.service';
|
|
8
8
|
import { IgoMap } from '../../map';
|
|
9
9
|
import { EditionWorkspace } from './edition-workspace';
|
|
10
10
|
import WKT from 'ol/format/WKT';
|
|
@@ -16,7 +16,6 @@ export declare class EditionWorkspaceService {
|
|
|
16
16
|
private storageService;
|
|
17
17
|
private configService;
|
|
18
18
|
private messageService;
|
|
19
|
-
private languageService;
|
|
20
19
|
private http;
|
|
21
20
|
private dialog;
|
|
22
21
|
private styleService;
|
|
@@ -29,7 +28,7 @@ export declare class EditionWorkspaceService {
|
|
|
29
28
|
wktFormat: WKT;
|
|
30
29
|
geoJsonFormat: GeoJSON;
|
|
31
30
|
get zoomAuto(): boolean;
|
|
32
|
-
constructor(layerService: LayerService, storageService: StorageService, configService: ConfigService, messageService: MessageService,
|
|
31
|
+
constructor(layerService: LayerService, storageService: StorageService, configService: ConfigService, messageService: MessageService, http: HttpClient, dialog: MatDialog, styleService: StyleService, authInterceptor?: AuthInterceptor);
|
|
33
32
|
createWorkspace(layer: ImageLayer, map: IgoMap): EditionWorkspace;
|
|
34
33
|
private createFeatureStore;
|
|
35
34
|
private createTableTemplate;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BehaviorSubject } from 'rxjs';
|
|
2
2
|
import { StorageService, ConfigService } from '@igo2/core';
|
|
3
3
|
import { ImageLayer, LayerService } from '../../layer';
|
|
4
|
-
import { StyleService } from '../../
|
|
4
|
+
import { StyleService } from '../../style/style-service/style.service';
|
|
5
5
|
import { IgoMap } from '../../map';
|
|
6
6
|
import { WfsWorkspace } from './wfs-workspace';
|
|
7
7
|
import * as i0 from "@angular/core";
|
package/ngcc.config.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
ignorableDeepImportMatchers: [/ol\//, /ol-mapbox-style\//]
|
|
3
|
-
};
|
|
1
|
+
module.exports = {
|
|
2
|
+
ignorableDeepImportMatchers: [/ol\//, /ol-mapbox-style\//]
|
|
3
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@igo2/geo",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.15.1",
|
|
4
4
|
"description": "IGO Library",
|
|
5
5
|
"author": "IGO Community",
|
|
6
6
|
"keywords": [
|
|
@@ -26,19 +26,22 @@
|
|
|
26
26
|
"windows-1252": "^3.0.4"
|
|
27
27
|
},
|
|
28
28
|
"peerDependencies": {
|
|
29
|
-
"@angular/animations": "^14.
|
|
30
|
-
"@angular/common": "^14.
|
|
31
|
-
"@angular/core": "^14.
|
|
32
|
-
"@angular/forms": "^14.
|
|
33
|
-
"@angular/material": "^14.
|
|
34
|
-
"@
|
|
35
|
-
"@igo2/
|
|
36
|
-
"@igo2/
|
|
37
|
-
"
|
|
29
|
+
"@angular/animations": "^14.3.0",
|
|
30
|
+
"@angular/common": "^14.3.0",
|
|
31
|
+
"@angular/core": "^14.3.0",
|
|
32
|
+
"@angular/forms": "^14.3.0",
|
|
33
|
+
"@angular/material": "^14.2.7",
|
|
34
|
+
"@angular/platform-browser": "^14.3.0",
|
|
35
|
+
"@igo2/common": "^1.15.1",
|
|
36
|
+
"@igo2/core": "^1.15.1",
|
|
37
|
+
"@igo2/utils": "^1.15.1",
|
|
38
|
+
"flexsearch": "0.7.21",
|
|
39
|
+
"ol": "^7.3.0",
|
|
38
40
|
"proj4": "^2.8.0",
|
|
39
41
|
"rxjs": "^7.5.6",
|
|
40
42
|
"striptags": "^3.2.0",
|
|
41
|
-
"ngx-color-picker": "^13.0.0"
|
|
43
|
+
"ngx-color-picker": "^13.0.0",
|
|
44
|
+
"ngx-indexed-db": "^11.0.2"
|
|
42
45
|
},
|
|
43
46
|
"optionalDependencies": {
|
|
44
47
|
"file-saver": "^2.0.2",
|
|
@@ -48,6 +51,9 @@
|
|
|
48
51
|
"moment": "^2.29.4",
|
|
49
52
|
"stream": "^0.0.2"
|
|
50
53
|
},
|
|
54
|
+
"engines": {
|
|
55
|
+
"node": ">=16.19.0"
|
|
56
|
+
},
|
|
51
57
|
"module": "fesm2015/igo2-geo.mjs",
|
|
52
58
|
"es2020": "fesm2020/igo2-geo.mjs",
|
|
53
59
|
"esm2020": "esm2020/igo2-geo.mjs",
|
package/public_api.d.ts
CHANGED
|
@@ -25,6 +25,7 @@ export * from './lib/overlay/overlay.module';
|
|
|
25
25
|
export * from './lib/print/print.module';
|
|
26
26
|
export * from './lib/query/query.module';
|
|
27
27
|
export * from './lib/search/search.module';
|
|
28
|
+
export * from './lib/style/style.module';
|
|
28
29
|
export * from './lib/toast/toast.module';
|
|
29
30
|
export * from './lib/wkt/wkt.module';
|
|
30
31
|
export * from './lib/catalog';
|
|
@@ -48,4 +49,5 @@ export * from './lib/toast';
|
|
|
48
49
|
export * from './lib/utils';
|
|
49
50
|
export * from './lib/wkt';
|
|
50
51
|
export * from './lib/workspace';
|
|
52
|
+
export * from './lib/style';
|
|
51
53
|
export * from './lib/offline';
|
package/style/geo.theming.scss
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
@import '~ol/ol.css';
|
|
2
|
-
|
|
3
|
-
@mixin igo-geo-theming($theme, $typography) {
|
|
4
|
-
@include igo-drawingTool-theming($theme, $typography);
|
|
5
|
-
@include igo-feature-theming($theme);
|
|
6
|
-
@include igo-filter-theming($theme, $typography);
|
|
7
|
-
@include igo-layer-theming($theme);
|
|
8
|
-
@include igo-map-theming($theme, $typography);
|
|
9
|
-
@include igo-measure-theming($theme, $typography);
|
|
10
|
-
@include igo-directions-theming($theme);
|
|
11
|
-
@include igo-workspace-theming($theme, $typography);
|
|
12
|
-
}
|
|
1
|
+
@import '~ol/ol.css';
|
|
2
|
+
|
|
3
|
+
@mixin igo-geo-theming($theme, $typography) {
|
|
4
|
+
@include igo-drawingTool-theming($theme, $typography);
|
|
5
|
+
@include igo-feature-theming($theme);
|
|
6
|
+
@include igo-filter-theming($theme, $typography);
|
|
7
|
+
@include igo-layer-theming($theme);
|
|
8
|
+
@include igo-map-theming($theme, $typography);
|
|
9
|
+
@include igo-measure-theming($theme, $typography);
|
|
10
|
+
@include igo-directions-theming($theme);
|
|
11
|
+
@include igo-workspace-theming($theme, $typography);
|
|
12
|
+
}
|
|
@@ -1,357 +0,0 @@
|
|
|
1
|
-
import * as olstyle from 'ol/style';
|
|
2
|
-
import * as olproj from 'ol/proj';
|
|
3
|
-
export class EsriStyleGenerator {
|
|
4
|
-
constructor() {
|
|
5
|
-
this._converters = {};
|
|
6
|
-
this._converters.esriPMS = EsriStyleGenerator._convertEsriPMS;
|
|
7
|
-
this._converters.esriSFS = EsriStyleGenerator._convertEsriSFS;
|
|
8
|
-
this._converters.esriSLS = EsriStyleGenerator._convertEsriSLS;
|
|
9
|
-
this._converters.esriSMS = EsriStyleGenerator._convertEsriSMS;
|
|
10
|
-
this._converters.esriTS = EsriStyleGenerator._convertEsriTS;
|
|
11
|
-
this._renderers = {};
|
|
12
|
-
this._renderers.uniqueValue = this._renderUniqueValue;
|
|
13
|
-
this._renderers.simple = this._renderSimple;
|
|
14
|
-
this._renderers.classBreaks = this._renderClassBreaks;
|
|
15
|
-
}
|
|
16
|
-
static _convertPointToPixel(point) {
|
|
17
|
-
return point / 0.75;
|
|
18
|
-
}
|
|
19
|
-
static _transformColor(color) {
|
|
20
|
-
// alpha channel is different, runs from 0-255 but in ol3 from 0-1
|
|
21
|
-
return [color[0], color[1], color[2], color[3] / 255];
|
|
22
|
-
}
|
|
23
|
-
static _getResolutionForScale(scale, units) {
|
|
24
|
-
const dpi = 96;
|
|
25
|
-
const mpu = olproj.METERS_PER_UNIT[units];
|
|
26
|
-
const inchesPerMeter = 39.3701;
|
|
27
|
-
return parseFloat(scale) / (mpu * inchesPerMeter * dpi);
|
|
28
|
-
}
|
|
29
|
-
/* convert an Esri Text Symbol */
|
|
30
|
-
static _convertEsriTS(symbol) {
|
|
31
|
-
const rotation = EsriStyleGenerator._transformAngle(symbol.angle);
|
|
32
|
-
const text = symbol.text !== undefined ? symbol.text : undefined;
|
|
33
|
-
return new olstyle.Style({
|
|
34
|
-
text: new olstyle.Text({
|
|
35
|
-
fill: new olstyle.Fill({
|
|
36
|
-
color: EsriStyleGenerator._transformColor(symbol.color)
|
|
37
|
-
}),
|
|
38
|
-
font: symbol.font.style +
|
|
39
|
-
' ' +
|
|
40
|
-
symbol.font.weight +
|
|
41
|
-
' ' +
|
|
42
|
-
symbol.font.size +
|
|
43
|
-
' px ' +
|
|
44
|
-
symbol.font.family,
|
|
45
|
-
textBaseline: symbol.verticalAlignment,
|
|
46
|
-
textAlign: symbol.horizontalAlignment,
|
|
47
|
-
offsetX: EsriStyleGenerator._convertPointToPixel(symbol.xoffset),
|
|
48
|
-
offsetY: EsriStyleGenerator._convertPointToPixel(symbol.yoffset),
|
|
49
|
-
rotation,
|
|
50
|
-
text
|
|
51
|
-
})
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
/* convert an Esri Picture Marker Symbol */
|
|
55
|
-
static _convertEsriPMS(symbol) {
|
|
56
|
-
const src = 'data:' + symbol.contentType + ';base64, ' + symbol.imageData;
|
|
57
|
-
const rotation = EsriStyleGenerator._transformAngle(symbol.angle);
|
|
58
|
-
return new olstyle.Style({
|
|
59
|
-
image: new olstyle.Icon({
|
|
60
|
-
src,
|
|
61
|
-
rotation
|
|
62
|
-
})
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
/* convert an Esri Simple Fill Symbol */
|
|
66
|
-
static _convertEsriSFS(symbol) {
|
|
67
|
-
// there is no support in openlayers currently for fill patterns, so style is not interpreted
|
|
68
|
-
const fill = new olstyle.Fill({
|
|
69
|
-
color: EsriStyleGenerator._transformColor(symbol.color)
|
|
70
|
-
});
|
|
71
|
-
const stroke = symbol.outline
|
|
72
|
-
? EsriStyleGenerator._convertOutline(symbol.outline)
|
|
73
|
-
: undefined;
|
|
74
|
-
return new olstyle.Style({
|
|
75
|
-
fill,
|
|
76
|
-
stroke
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
static _convertOutline(outline) {
|
|
80
|
-
let lineDash;
|
|
81
|
-
const color = EsriStyleGenerator._transformColor(outline.color);
|
|
82
|
-
if (outline.style === 'esriSLSDash') {
|
|
83
|
-
lineDash = [5];
|
|
84
|
-
}
|
|
85
|
-
else if (outline.style === 'esriSLSDashDot') {
|
|
86
|
-
lineDash = [5, 5, 1, 2];
|
|
87
|
-
}
|
|
88
|
-
else if (outline.style === 'esriSLSDashDotDot') {
|
|
89
|
-
lineDash = [5, 5, 1, 2, 1, 2];
|
|
90
|
-
}
|
|
91
|
-
else if (outline.style === 'esriSLSDot') {
|
|
92
|
-
lineDash = [1, 2];
|
|
93
|
-
}
|
|
94
|
-
else if (outline.style === 'esriSLSNull') {
|
|
95
|
-
// line not visible, make color fully transparent
|
|
96
|
-
color[3] = 0;
|
|
97
|
-
}
|
|
98
|
-
return new olstyle.Stroke({
|
|
99
|
-
color,
|
|
100
|
-
lineDash,
|
|
101
|
-
width: EsriStyleGenerator._convertPointToPixel(outline.width)
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
/* convert an Esri Simple Line Symbol */
|
|
105
|
-
static _convertEsriSLS(symbol) {
|
|
106
|
-
return new olstyle.Style({
|
|
107
|
-
stroke: EsriStyleGenerator._convertOutline(symbol)
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
static _transformAngle(angle) {
|
|
111
|
-
if (angle === 0 || angle === undefined) {
|
|
112
|
-
return undefined;
|
|
113
|
-
}
|
|
114
|
-
const normalRad = (angle * Math.PI) / 180;
|
|
115
|
-
const ol3Rad = -normalRad + Math.PI / 2;
|
|
116
|
-
if (ol3Rad < 0) {
|
|
117
|
-
return 2 * Math.PI + ol3Rad;
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
return ol3Rad;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
/* convert an Esri Simple Marker Symbol */
|
|
124
|
-
static _convertEsriSMS(symbol) {
|
|
125
|
-
const fill = new olstyle.Fill({
|
|
126
|
-
color: EsriStyleGenerator._transformColor(symbol.color)
|
|
127
|
-
});
|
|
128
|
-
const stroke = symbol.outline
|
|
129
|
-
? EsriStyleGenerator._convertOutline(symbol.outline)
|
|
130
|
-
: undefined;
|
|
131
|
-
const radius = EsriStyleGenerator._convertPointToPixel(symbol.size) / 2;
|
|
132
|
-
const rotation = EsriStyleGenerator._transformAngle(symbol.angle);
|
|
133
|
-
if (symbol.style === 'esriSMSCircle') {
|
|
134
|
-
return new olstyle.Style({
|
|
135
|
-
image: new olstyle.Circle({
|
|
136
|
-
radius,
|
|
137
|
-
fill,
|
|
138
|
-
stroke
|
|
139
|
-
})
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
else if (symbol.style === 'esriSMSCross') {
|
|
143
|
-
return new olstyle.Style({
|
|
144
|
-
image: new olstyle.RegularShape({
|
|
145
|
-
fill,
|
|
146
|
-
stroke,
|
|
147
|
-
points: 4,
|
|
148
|
-
radius,
|
|
149
|
-
radius2: 0,
|
|
150
|
-
angle: 0,
|
|
151
|
-
rotation
|
|
152
|
-
})
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
else if (symbol.style === 'esriSMSDiamond') {
|
|
156
|
-
return new olstyle.Style({
|
|
157
|
-
image: new olstyle.RegularShape({
|
|
158
|
-
fill,
|
|
159
|
-
stroke,
|
|
160
|
-
points: 4,
|
|
161
|
-
radius,
|
|
162
|
-
rotation
|
|
163
|
-
})
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
else if (symbol.style === 'esriSMSSquare') {
|
|
167
|
-
return new olstyle.Style({
|
|
168
|
-
image: new olstyle.RegularShape({
|
|
169
|
-
fill,
|
|
170
|
-
stroke,
|
|
171
|
-
points: 4,
|
|
172
|
-
radius,
|
|
173
|
-
angle: Math.PI / 4,
|
|
174
|
-
rotation
|
|
175
|
-
})
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
else if (symbol.style === 'esriSMSX') {
|
|
179
|
-
return new olstyle.Style({
|
|
180
|
-
image: new olstyle.RegularShape({
|
|
181
|
-
fill,
|
|
182
|
-
stroke,
|
|
183
|
-
points: 4,
|
|
184
|
-
radius,
|
|
185
|
-
radius2: 0,
|
|
186
|
-
angle: Math.PI / 4,
|
|
187
|
-
rotation
|
|
188
|
-
})
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
else if (symbol.style === 'esriSMSTriangle') {
|
|
192
|
-
return new olstyle.Style({
|
|
193
|
-
image: new olstyle.RegularShape({
|
|
194
|
-
fill,
|
|
195
|
-
stroke,
|
|
196
|
-
points: 3,
|
|
197
|
-
radius,
|
|
198
|
-
angle: 0,
|
|
199
|
-
rotation
|
|
200
|
-
})
|
|
201
|
-
});
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
_convertLabelingInfo(labelingInfo, mapUnits) {
|
|
205
|
-
const styles = [];
|
|
206
|
-
for (let i = 0, ii = labelingInfo.length; i < ii; ++i) {
|
|
207
|
-
const labelExpression = labelingInfo[i].labelExpression;
|
|
208
|
-
// only limited support for label expressions
|
|
209
|
-
const field = labelExpression.substr(labelExpression.indexOf('[') + 1, labelExpression.indexOf(']') - 1);
|
|
210
|
-
const symbol = labelingInfo[i].symbol;
|
|
211
|
-
const maxScale = labelingInfo[i].maxScale;
|
|
212
|
-
const minScale = labelingInfo[i].minScale;
|
|
213
|
-
let minResolution = null;
|
|
214
|
-
if (maxScale !== 0) {
|
|
215
|
-
minResolution = EsriStyleGenerator._getResolutionForScale(maxScale, mapUnits);
|
|
216
|
-
}
|
|
217
|
-
let maxResolution = null;
|
|
218
|
-
if (minScale !== 0) {
|
|
219
|
-
maxResolution = EsriStyleGenerator._getResolutionForScale(minScale, mapUnits);
|
|
220
|
-
}
|
|
221
|
-
const style = this._converters[symbol.type].call(this, symbol);
|
|
222
|
-
styles.push((() => {
|
|
223
|
-
return function (feature, resolution) {
|
|
224
|
-
let visible = true;
|
|
225
|
-
if (this.minResolution !== null && this.maxResolution !== null) {
|
|
226
|
-
visible =
|
|
227
|
-
resolution < this.maxResolution &&
|
|
228
|
-
resolution >= this.minResolution;
|
|
229
|
-
}
|
|
230
|
-
else if (this.minResolution !== null) {
|
|
231
|
-
visible = resolution >= this.minResolution;
|
|
232
|
-
}
|
|
233
|
-
else if (this.maxResolution !== null) {
|
|
234
|
-
visible = resolution < this.maxResolution;
|
|
235
|
-
}
|
|
236
|
-
if (visible) {
|
|
237
|
-
const value = feature.get(this.field);
|
|
238
|
-
this.style.getText().setText(value);
|
|
239
|
-
return [this.style];
|
|
240
|
-
}
|
|
241
|
-
};
|
|
242
|
-
})().bind({
|
|
243
|
-
minResolution,
|
|
244
|
-
maxResolution,
|
|
245
|
-
field,
|
|
246
|
-
style
|
|
247
|
-
}));
|
|
248
|
-
}
|
|
249
|
-
return styles;
|
|
250
|
-
}
|
|
251
|
-
_renderSimple(renderer) {
|
|
252
|
-
const style = this._converters[renderer.symbol.type].call(this, renderer.symbol);
|
|
253
|
-
return (() => {
|
|
254
|
-
return () => {
|
|
255
|
-
return [style];
|
|
256
|
-
};
|
|
257
|
-
})();
|
|
258
|
-
}
|
|
259
|
-
_renderClassBreaks(renderer) {
|
|
260
|
-
const defaultSymbol = renderer.defaultSymbol;
|
|
261
|
-
const defaultStyle = this._converters[defaultSymbol.type].call(this, defaultSymbol);
|
|
262
|
-
const field = renderer.field;
|
|
263
|
-
const classes = [];
|
|
264
|
-
for (let i = 0, ii = renderer.classBreakInfos.length; i < ii; ++i) {
|
|
265
|
-
const classBreakInfo = renderer.classBreakInfos[i];
|
|
266
|
-
let min;
|
|
267
|
-
if (classBreakInfo.classMinValue === null ||
|
|
268
|
-
classBreakInfo.classMinValue === undefined) {
|
|
269
|
-
if (i === 0) {
|
|
270
|
-
min = renderer.minValue;
|
|
271
|
-
}
|
|
272
|
-
else {
|
|
273
|
-
min = renderer.classBreakInfos[i - 1].classMaxValue;
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
else {
|
|
277
|
-
min = classBreakInfo.classMinValue;
|
|
278
|
-
}
|
|
279
|
-
const max = classBreakInfo.classMaxValue;
|
|
280
|
-
const symbol = classBreakInfo.symbol;
|
|
281
|
-
const style = this._converters[symbol.type].call(this, symbol);
|
|
282
|
-
classes.push({ min, max, style });
|
|
283
|
-
}
|
|
284
|
-
return (() => {
|
|
285
|
-
return (feature) => {
|
|
286
|
-
const value = feature.get(field);
|
|
287
|
-
for (let i = 0, ii = classes.length; i < ii; ++i) {
|
|
288
|
-
let condition;
|
|
289
|
-
if (i === 0) {
|
|
290
|
-
condition = value >= classes[i].min && value <= classes[i].max;
|
|
291
|
-
}
|
|
292
|
-
else {
|
|
293
|
-
condition = value > classes[i].min && value <= classes[i].max;
|
|
294
|
-
}
|
|
295
|
-
if (condition) {
|
|
296
|
-
return [classes[i].style];
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
return [defaultStyle];
|
|
300
|
-
};
|
|
301
|
-
})();
|
|
302
|
-
}
|
|
303
|
-
_renderUniqueValue(renderer) {
|
|
304
|
-
const defaultSymbol = renderer.defaultSymbol;
|
|
305
|
-
let defaultStyle = [];
|
|
306
|
-
if (defaultSymbol) {
|
|
307
|
-
defaultStyle = [
|
|
308
|
-
this._converters[defaultSymbol.type].call(this, defaultSymbol)
|
|
309
|
-
];
|
|
310
|
-
}
|
|
311
|
-
const field = renderer.field1;
|
|
312
|
-
const infos = renderer.uniqueValueInfos;
|
|
313
|
-
const me = this;
|
|
314
|
-
return (() => {
|
|
315
|
-
const hash = {};
|
|
316
|
-
for (let i = 0, ii = infos.length; i < ii; ++i) {
|
|
317
|
-
const info = infos[i];
|
|
318
|
-
const symbol = info.symbol;
|
|
319
|
-
hash[info.value] = [me._converters[symbol.type].call(me, symbol)];
|
|
320
|
-
}
|
|
321
|
-
return (feature) => {
|
|
322
|
-
const style = hash[feature.get(field)];
|
|
323
|
-
return style ? style : defaultStyle;
|
|
324
|
-
};
|
|
325
|
-
})();
|
|
326
|
-
}
|
|
327
|
-
generateStyle(layerInfo, mapUnits) {
|
|
328
|
-
const drawingInfo = layerInfo.drawingInfo;
|
|
329
|
-
let styleFunctions = [];
|
|
330
|
-
const drawingInfoStyle = this._renderers[drawingInfo.renderer.type].call(this, drawingInfo.renderer);
|
|
331
|
-
if (drawingInfoStyle !== undefined) {
|
|
332
|
-
styleFunctions.push(drawingInfoStyle);
|
|
333
|
-
}
|
|
334
|
-
if (layerInfo.labelingInfo) {
|
|
335
|
-
const labelingInfoStyleFunctions = this._convertLabelingInfo(layerInfo.labelingInfo, mapUnits);
|
|
336
|
-
styleFunctions = styleFunctions.concat(labelingInfoStyleFunctions);
|
|
337
|
-
}
|
|
338
|
-
if (styleFunctions.length === 1) {
|
|
339
|
-
return styleFunctions[0];
|
|
340
|
-
}
|
|
341
|
-
else {
|
|
342
|
-
return (() => {
|
|
343
|
-
return (feature, resolution) => {
|
|
344
|
-
let styles = [];
|
|
345
|
-
for (let i = 0, ii = styleFunctions.length; i < ii; ++i) {
|
|
346
|
-
const result = styleFunctions[i].call(null, feature, resolution);
|
|
347
|
-
if (result) {
|
|
348
|
-
styles = styles.concat(result);
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
return styles;
|
|
352
|
-
};
|
|
353
|
-
})();
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNyaS1zdHlsZS1nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kYXRhc291cmNlL3V0aWxzL2Vzcmktc3R5bGUtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxNQUFNLE1BQU0sU0FBUyxDQUFDO0FBRWxDLE1BQU0sT0FBTyxrQkFBa0I7SUFJN0I7UUFDRSxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxlQUFlLENBQUM7UUFDOUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEdBQUcsa0JBQWtCLENBQUMsZUFBZSxDQUFDO1FBQzlELElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxHQUFHLGtCQUFrQixDQUFDLGVBQWUsQ0FBQztRQUM5RCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxlQUFlLENBQUM7UUFDOUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsa0JBQWtCLENBQUMsY0FBYyxDQUFDO1FBQzVELElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUN0RCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzVDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUN4RCxDQUFDO0lBQ0QsTUFBTSxDQUFDLG9CQUFvQixDQUFDLEtBQUs7UUFDL0IsT0FBTyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7SUFD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QUFRLENBQ3JCLENBQUM7UUFDRixJQUFJLGdCQUFnQixLQUFLLFNBQVMsRUFBRTtZQUNsQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDdkM7UUFDRCxJQUFJLFNBQVMsQ0FBQyxZQUFZLEVBQUU7WUFDMUIsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQzFELFNBQVMsQ0FBQyxZQUFZLEVBQ3RCLFFBQVEsQ0FDVCxDQUFDO1lBQ0YsY0FBYyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztTQUNwRTtRQUNELElBQUksY0FBYyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDL0IsT0FBTyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDMUI7YUFBTTtZQUNMLE9BQU8sQ0FBQyxHQUFHLEVBQUU7Z0JBQ1gsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRTtvQkFDN0IsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO29CQUNoQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO3dCQUN2RCxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7d0JBQ2pFLElBQUksTUFBTSxFQUFFOzRCQUNWLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3lCQUNoQztxQkFDRjtvQkFDRCxPQUFPLE1BQU0sQ0FBQztnQkFDaEIsQ0FBQyxDQUFDO1lBQ0osQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNOO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgb2xzdHlsZSBmcm9tICdvbC9zdHlsZSc7XG5pbXBvcnQgKiBhcyBvbHByb2ogZnJvbSAnb2wvcHJvaic7XG5cbmV4cG9ydCBjbGFzcyBFc3JpU3R5bGVHZW5lcmF0b3Ige1xuICBwdWJsaWMgX2NvbnZlcnRlcnM6IGFueTtcbiAgcHVibGljIF9yZW5kZXJlcnM6IGFueTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9jb252ZXJ0ZXJzID0ge307XG4gICAgdGhpcy5fY29udmVydGVycy5lc3JpUE1TID0gRXNyaVN0eWxlR2VuZXJhdG9yLl9jb252ZXJ0RXNyaVBNUztcbiAgICB0aGlzLl9jb252ZXJ0ZXJzLmVzcmlTRlMgPSBFc3JpU3R5bGVHZW5lcmF0b3IuX2NvbnZlcnRFc3JpU0ZTO1xuICAgIHRoaXMuX2NvbnZlcnRlcnMuZXNyaVNMUyA9IEVzcmlTdHlsZUdlbmVyYXRvci5fY29udmVydEVzcmlTTFM7XG4gICAgdGhpcy5fY29udmVydGVycy5lc3JpU01TID0gRXNyaVN0eWxlR2VuZXJhdG9yLl9jb252ZXJ0RXNyaVNNUztcbiAgICB0aGlzLl9jb252ZXJ0ZXJzLmVzcmlUUyA9IEVzcmlTdHlsZUdlbmVyYXRvci5fY29udmVydEVzcmlUUztcbiAgICB0aGlzLl9yZW5kZXJlcnMgPSB7fTtcbiAgICB0aGlzLl9yZW5kZXJlcnMudW5pcXVlVmFsdWUgPSB0aGlzLl9yZW5kZXJVbmlxdWVWYWx1ZTtcbiAgICB0aGlzLl9yZW5kZXJlcnMuc2ltcGxlID0gdGhpcy5fcmVuZGVyU2ltcGxlO1xuICAgIHRoaXMuX3JlbmRlcmVycy5jbGFzc0JyZWFrcyA9IHRoaXMuX3JlbmRlckNsYXNzQnJlYWtzO1xuICB9XG4gIHN0YXRpYyBfY29udmVydFBvaW50VG9QaXhlbChwb2ludCkge1xuICAgIHJldHVybiBwb2ludCAvIDAuNzU7XG4gIH1cbiAgc3RhdGljIF90cmFuc2Zvcm1Db2xvcihjb2xvcik6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdIHtcbiAgICAvLyBhbHBoYSBjaGFubmVsIGlzIGRpZmZlcmVudCwgcnVucyBmcm9tIDAtMjU1IGJ1dCBpbiBvbDMgZnJvbSAwLTFcbiAgICByZXR1cm4gW2NvbG9yWzBdLCBjb2xvclsxXSwgY29sb3JbMl0sIGNvbG9yWzNdIC8gMjU1XTtcbiAgfVxuXG4gIHN0YXRpYyBfZ2V0UmVzb2x1dGlvbkZvclNjYWxlKHNjYWxlLCB1bml0cykge1xuICAgIGNvbnN0IGRwaSA9IDk2O1xuICAgIGNvbnN0IG1wdSA9IG9scHJvai5NRVRFUlNfUEVSX1VOSVRbdW5pdHNdO1xuICAgIGNvbnN0IGluY2hlc1Blck1ldGVyID0gMzkuMzcwMTtcbiAgICByZXR1cm4gcGFyc2VGbG9hdChzY2FsZSkgLyAobXB1ICogaW5jaGVzUGVyTWV0ZXIgKiBkcGkpO1xuICB9XG5cbiAgLyogY29udmVydCBhbiBFc3JpIFRleHQgU3ltYm9sICovXG4gIHN0YXRpYyBfY29udmVydEVzcmlUUyhzeW1ib2wpIHtcbiAgICBjb25zdCByb3RhdGlvbiA9IEVzcmlTdHlsZUdlbmVyYXRvci5fdHJhbnNmb3JtQW5nbGUoc3ltYm9sLmFuZ2xlKTtcbiAgICBjb25zdCB0ZXh0ID0gc3ltYm9sLnRleHQgIT09IHVuZGVmaW5lZCA/IHN5bWJvbC50ZXh0IDogdW5kZWZpbmVkO1xuICAgIHJldHVybiBuZXcgb2xzdHlsZS5TdHlsZSh7XG4gICAgICB0ZXh0OiBuZXcgb2xzdHlsZS5UZXh0KHtcbiAgICAgICAgZmlsbDogbmV3IG9sc3R5bGUuRmlsbCh7XG4gICAgICAgICAgY29sb3I6IEVzcmlTdHlsZUdlbmVyYXRvci5fdHJhbnNmb3JtQ29sb3Ioc3ltYm9sLmNvbG9yKVxuICAgICAgICB9KSxcbiAgICAgICAgZm9udDpcbiAgICAgICAgICBzeW1ib2wuZm9udC5zdHlsZSArXG4gICAgICAgICAgJyAnICtcbiAgICAgICAgICBzeW1ib2wuZm9udC53ZWlnaHQgK1xuICAgICAgICAgICcgJyArXG4gICAgICAgICAgc3ltYm9sLmZvbnQuc2l6ZSArXG4gICAgICAgICAgJyBweCAnICtcbiAgICAgICAgICBzeW1ib2wuZm9udC5mYW1pbHksXG4gICAgICAgIHRleHRCYXNlbGluZTogc3ltYm9sLnZlcnRpY2FsQWxpZ25tZW50LFxuICAgICAgICB0ZXh0QWxpZ246IHN5bWJvbC5ob3Jpem9udGFsQWxpZ25tZW50LFxuICAgICAgICBvZmZzZXRYOiBFc3JpU3R5bGVHZW5lcmF0b3IuX2NvbnZlcnRQb2ludFRvUGl4ZWwoc3ltYm9sLnhvZmZzZXQpLFxuICAgICAgICBvZmZzZXRZOiBFc3JpU3R5bGVHZW5lcmF0b3IuX2NvbnZlcnRQb2ludFRvUGl4ZWwoc3ltYm9sLnlvZmZzZXQpLFxuICAgICAgICByb3RhdGlvbixcbiAgICAgICAgdGV4dFxuICAgICAgfSlcbiAgICB9KTtcbiAgfVxuICAvKiBjb252ZXJ0IGFuIEVzcmkgUGljdHVyZSBNYXJrZXIgU3ltYm9sICovXG4gIHN0YXRpYyBfY29udmVydEVzcmlQTVMoc3ltYm9sKSB7XG4gICAgY29uc3Qgc3JjID0gJ2RhdGE6JyArIHN5bWJvbC5jb250ZW50VHlwZSArICc7YmFzZTY0LCAnICsgc3ltYm9sLmltYWdlRGF0YTtcbiAgICBjb25zdCByb3RhdGlvbiA9IEVzcmlTdHlsZUdlbmVyYXRvci5fdHJhbnNmb3JtQW5nbGUoc3ltYm9sLmFuZ2xlKTtcblxuICAgIHJldHVybiBuZXcgb2xzdHlsZS5TdHlsZSh7XG4gICAgICBpbWFnZTogbmV3IG9sc3R5bGUuSWNvbih7XG4gICAgICAgIHNyYyxcbiAgICAgICAgcm90YXRpb25cbiAgICAgIH0pXG4gICAgfSk7XG4gIH1cbiAgLyogY29udmVydCBhbiBFc3JpIFNpbXBsZSBGaWxsIFN5bWJvbCAqL1xuICBzdGF0aWMgX2NvbnZlcnRFc3JpU0ZTKHN5bWJvbCkge1xuICAgIC8vIHRoZXJlIGlzIG5vIHN1cHBvcnQgaW4gb3BlbmxheWVycyBjdXJyZW50bHkgZm9yIGZpbGwgcGF0dGVybnMsIHNvIHN0eWxlIGlzIG5vdCBpbnRlcnByZXRlZFxuICAgIGNvbnN0IGZpbGwgPSBuZXcgb2xzdHlsZS5GaWxsKHtcbiAgICAgIGNvbG9yOiBFc3JpU3R5bGVHZW5lcmF0b3IuX3RyYW5zZm9ybUNvbG9yKHN5bWJvbC5jb2xvcilcbiAgICB9KTtcbiAgICBjb25zdCBzdHJva2UgPSBzeW1ib2wub3V0bGluZVxuICAgICAgPyBFc3JpU3R5bGVHZW5lcmF0b3IuX2NvbnZlcnRPdXRsaW5lKHN5bWJvbC5vdXRsaW5lKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIG5ldyBvbHN0eWxlLlN0eWxlKHtcbiAgICAgIGZpbGwsXG4gICAgICBzdHJva2VcbiAgICB9KTtcbiAgfVxuICBzdGF0aWMgX2NvbnZlcnRPdXRsaW5lKG91dGxpbmUpIHtcbiAgICBsZXQgbGluZURhc2g7XG4gICAgY29uc3QgY29sb3IgPSBFc3JpU3R5bGVHZW5lcmF0b3IuX3RyYW5zZm9ybUNvbG9yKG91dGxpbmUuY29sb3IpO1xuICAgIGlmIChvdXRsaW5lLnN0eWxlID09PSAnZXNyaVNMU0Rhc2gnKSB7XG4gICAgICBsaW5lRGFzaCA9IFs1XTtcbiAgICB9IGVsc2UgaWYgKG91dGxpbmUuc3R5bGUgPT09ICdlc3JpU0xTRGFzaERvdCcpIHtcbiAgICAgIGxpbmVEYXNoID0gWzUsIDUsIDEsIDJdO1xuICAgIH0gZWxzZSBpZiAob3V0bGluZS5zdHlsZSA9PT0gJ2VzcmlTTFNEYXNoRG90RG90Jykge1xuICAgICAgbGluZURhc2ggPSBbNSwgNSwgMSwgMiwgMSwgMl07XG4gICAgfSBlbHNlIGlmIChvdXRsaW5lLnN0eWxlID09PSAnZXNyaVNMU0RvdCcpIHtcbiAgICAgIGxpbmVEYXNoID0gWzEsIDJdO1xuICAgIH0gZWxzZSBpZiAob3V0bGluZS5zdHlsZSA9PT0gJ2VzcmlTTFNOdWxsJykge1xuICAgICAgLy8gbGluZSBub3QgdmlzaWJsZSwgbWFrZSBjb2xvciBmdWxseSB0cmFuc3BhcmVudFxuICAgICAgY29sb3JbM10gPSAwO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IG9sc3R5bGUuU3Ryb2tlKHtcbiAgICAgIGNvbG9yLFxuICAgICAgbGluZURhc2gsXG4gICAgICB3aWR0aDogRXNyaVN0eWxlR2VuZXJhdG9yLl9jb252ZXJ0UG9pbnRUb1BpeGVsKG91dGxpbmUud2lkdGgpXG4gICAgfSk7XG4gIH1cbiAgLyogY29udmVydCBhbiBFc3JpIFNpbXBsZSBMaW5lIFN5bWJvbCAqL1xuICBzdGF0aWMgX2NvbnZlcnRFc3JpU0xTKHN5bWJvbCkge1xuICAgIHJldHVybiBuZXcgb2xzdHlsZS5TdHlsZSh7XG4gICAgICBzdHJva2U6IEVzcmlTdHlsZUdlbmVyYXRvci5fY29udmVydE91dGxpbmUoc3ltYm9sKVxuICAgIH0pO1xuICB9XG4gIHN0YXRpYyBfdHJhbnNmb3JtQW5nbGUoYW5nbGUpIHtcbiAgICBpZiAoYW5nbGUgPT09IDAgfHwgYW5nbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3Qgbm9ybWFsUmFkID0gKGFuZ2xlICogTWF0aC5QSSkgLyAxODA7XG4gICAgY29uc3Qgb2wzUmFkID0gLW5vcm1hbFJhZCArIE1hdGguUEkgLyAyO1xuICAgIGlmIChvbDNSYWQgPCAwKSB7XG4gICAgICByZXR1cm4gMiAqIE1hdGguUEkgKyBvbDNSYWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvbDNSYWQ7XG4gICAgfVxuICB9XG4gIC8qIGNvbnZlcnQgYW4gRXNyaSBTaW1wbGUgTWFya2VyIFN5bWJvbCAqL1xuICBzdGF0aWMgX2NvbnZlcnRFc3JpU01TKHN5bWJvbCkge1xuICAgIGNvbnN0IGZpbGwgPSBuZXcgb2xzdHlsZS5GaWxsKHtcbiAgICAgIGNvbG9yOiBFc3JpU3R5bGVHZW5lcmF0b3IuX3RyYW5zZm9ybUNvbG9yKHN5bWJvbC5jb2xvcilcbiAgICB9KTtcbiAgICBjb25zdCBzdHJva2UgPSBzeW1ib2wub3V0bGluZVxuICAgICAgPyBFc3JpU3R5bGVHZW5lcmF0b3IuX2NvbnZlcnRPdXRsaW5lKHN5bWJvbC5vdXRsaW5lKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcmFkaXVzID0gRXNyaVN0eWxlR2VuZXJhdG9yLl9jb252ZXJ0UG9pbnRUb1BpeGVsKHN5bWJvbC5zaXplKSAvIDI7XG4gICAgY29uc3Qgcm90YXRpb24gPSBFc3JpU3R5bGVHZW5lcmF0b3IuX3RyYW5zZm9ybUFuZ2xlKHN5bWJvbC5hbmdsZSk7XG4gICAgaWYgKHN5bWJvbC5zdHlsZSA9PT0gJ2VzcmlTTVNDaXJjbGUnKSB7XG4gICAgICByZXR1cm4gbmV3IG9sc3R5bGUuU3R5bGUoe1xuICAgICAgICBpbWFnZTogbmV3IG9sc3R5bGUuQ2lyY2xlKHtcbiAgICAgICAgICByYWRpdXMsXG4gICAgICAgICAgZmlsbCxcbiAgICAgICAgICBzdHJva2VcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoc3ltYm9sLnN0eWxlID09PSAnZXNyaVNNU0Nyb3NzJykge1xuICAgICAgcmV0dXJuIG5ldyBvbHN0eWxlLlN0eWxlKHtcbiAgICAgICAgaW1hZ2U6IG5ldyBvbHN0eWxlLlJlZ3VsYXJTaGFwZSh7XG4gICAgICAgICAgZmlsbCxcbiAgICAgICAgICBzdHJva2UsXG4gICAgICAgICAgcG9pbnRzOiA0LFxuICAgICAgICAgIHJhZGl1cyxcbiAgICAgICAgICByYWRpdXMyOiAwLFxuICAgICAgICAgIGFuZ2xlOiAwLFxuICAgICAgICAgIHJvdGF0aW9uXG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHN5bWJvbC5zdHlsZSA9PT0gJ2VzcmlTTVNEaWFtb25kJykge1xuICAgICAgcmV0dXJuIG5ldyBvbHN0eWxlLlN0eWxlKHtcbiAgICAgICAgaW1hZ2U6IG5ldyBvbHN0eWxlLlJlZ3VsYXJTaGFwZSh7XG4gICAgICAgICAgZmlsbCxcbiAgICAgICAgICBzdHJva2UsXG4gICAgICAgICAgcG9pbnRzOiA0LFxuICAgICAgICAgIHJhZGl1cyxcbiAgICAgICAgICByb3RhdGlvblxuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChzeW1ib2wuc3R5bGUgPT09ICdlc3JpU01TU3F1YXJlJykge1xuICAgICAgcmV0dXJuIG5ldyBvbHN0eWxlLlN0eWxlKHtcbiAgICAgICAgaW1hZ2U6IG5ldyBvbHN0eWxlLlJlZ3VsYXJTaGFwZSh7XG4gICAgICAgICAgZmlsbCxcbiAgICAgICAgICBzdHJva2UsXG4gICAgICAgICAgcG9pbnRzOiA0LFxuICAgICAgICAgIHJhZGl1cyxcbiAgICAgICAgICBhbmdsZTogTWF0aC5QSSAvIDQsXG4gICAgICAgICAgcm90YXRpb25cbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoc3ltYm9sLnN0eWxlID09PSAnZXNyaVNNU1gnKSB7XG4gICAgICByZXR1cm4gbmV3IG9sc3R5bGUuU3R5bGUoe1xuICAgICAgICBpbWFnZTogbmV3IG9sc3R5bGUuUmVndWxhclNoYXBlKHtcbiAgICAgICAgICBmaWxsLFxuICAgICAgICAgIHN0cm9rZSxcbiAgICAgICAgICBwb2ludHM6IDQsXG4gICAgICAgICAgcmFkaXVzLFxuICAgICAgICAgIHJhZGl1czI6IDAsXG4gICAgICAgICAgYW5nbGU6IE1hdGguUEkgLyA0LFxuICAgICAgICAgIHJvdGF0aW9uXG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHN5bWJvbC5zdHlsZSA9PT0gJ2VzcmlTTVNUcmlhbmdsZScpIHtcbiAgICAgIHJldHVybiBuZXcgb2xzdHlsZS5TdHlsZSh7XG4gICAgICAgIGltYWdlOiBuZXcgb2xzdHlsZS5SZWd1bGFyU2hhcGUoe1xuICAgICAgICAgIGZpbGwsXG4gICAgICAgICAgc3Ryb2tlLFxuICAgICAgICAgIHBvaW50czogMyxcbiAgICAgICAgICByYWRpdXMsXG4gICAgICAgICAgYW5nbGU6IDAsXG4gICAgICAgICAgcm90YXRpb25cbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIF9jb252ZXJ0TGFiZWxpbmdJbmZvKGxhYmVsaW5nSW5mbywgbWFwVW5pdHMpIHtcbiAgICBjb25zdCBzdHlsZXMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMCwgaWkgPSBsYWJlbGluZ0luZm8ubGVuZ3RoOyBpIDwgaWk7ICsraSkge1xuICAgICAgY29uc3QgbGFiZWxFeHByZXNzaW9uID0gbGFiZWxpbmdJbmZvW2ldLmxhYmVsRXhwcmVzc2lvbjtcbiAgICAgIC8vIG9ubHkgbGltaXRlZCBzdXBwb3J0IGZvciBsYWJlbCBleHByZXNzaW9uc1xuICAgICAgY29uc3QgZmllbGQgPSBsYWJlbEV4cHJlc3Npb24uc3Vic3RyKFxuICAgICAgICBsYWJlbEV4cHJlc3Npb24uaW5kZXhPZignWycpICsgMSxcbiAgICAgICAgbGFiZWxFeHByZXNzaW9uLmluZGV4T2YoJ10nKSAtIDFcbiAgICAgICk7XG4gICAgICBjb25zdCBzeW1ib2wgPSBsYWJlbGluZ0luZm9baV0uc3ltYm9sO1xuICAgICAgY29uc3QgbWF4U2NhbGUgPSBsYWJlbGluZ0luZm9baV0ubWF4U2NhbGU7XG4gICAgICBjb25zdCBtaW5TY2FsZSA9IGxhYmVsaW5nSW5mb1tpXS5taW5TY2FsZTtcbiAgICAgIGxldCBtaW5SZXNvbHV0aW9uID0gbnVsbDtcbiAgICAgIGlmIChtYXhTY2FsZSAhPT0gMCkge1xuICAgICAgICBtaW5SZXNvbHV0aW9uID0gRXNyaVN0eWxlR2VuZXJhdG9yLl9nZXRSZXNvbHV0aW9uRm9yU2NhbGUoXG4gICAgICAgICAgbWF4U2NhbGUsXG4gICAgICAgICAgbWFwVW5pdHNcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGxldCBtYXhSZXNvbHV0aW9uID0gbnVsbDtcbiAgICAgIGlmIChtaW5TY2FsZSAhPT0gMCkge1xuICAgICAgICBtYXhSZXNvbHV0aW9uID0gRXNyaVN0eWxlR2VuZXJhdG9yLl9nZXRSZXNvbHV0aW9uRm9yU2NhbGUoXG4gICAgICAgICAgbWluU2NhbGUsXG4gICAgICAgICAgbWFwVW5pdHNcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHN0eWxlID0gdGhpcy5fY29udmVydGVyc1tzeW1ib2wudHlwZV0uY2FsbCh0aGlzLCBzeW1ib2wpO1xuICAgICAgc3R5bGVzLnB1c2goXG4gICAgICAgICgoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGZlYXR1cmUsIHJlc29sdXRpb24pIHtcbiAgICAgICAgICAgIGxldCB2aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmICh0aGlzLm1pblJlc29sdXRpb24gIT09IG51bGwgJiYgdGhpcy5tYXhSZXNvbHV0aW9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIHZpc2libGUgPVxuICAgICAgICAgICAgICAgIHJlc29sdXRpb24gPCB0aGlzLm1heFJlc29sdXRpb24gJiZcbiAgICAgICAgICAgICAgICByZXNvbHV0aW9uID49IHRoaXMubWluUmVzb2x1dGlvbjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5taW5SZXNvbHV0aW9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIHZpc2libGUgPSByZXNvbHV0aW9uID49IHRoaXMubWluUmVzb2x1dGlvbjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5tYXhSZXNvbHV0aW9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIHZpc2libGUgPSByZXNvbHV0aW9uIDwgdGhpcy5tYXhSZXNvbHV0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHZpc2libGUpIHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBmZWF0dXJlLmdldCh0aGlzLmZpZWxkKTtcbiAgICAgICAgICAgICAgdGhpcy5zdHlsZS5nZXRUZXh0KCkuc2V0VGV4dCh2YWx1ZSk7XG4gICAgICAgICAgICAgIHJldHVybiBbdGhpcy5zdHlsZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfSkoKS5iaW5kKHtcbiAgICAgICAgICBtaW5SZXNvbHV0aW9uLFxuICAgICAgICAgIG1heFJlc29sdXRpb24sXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgc3R5bGVcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBzdHlsZXM7XG4gIH1cblxuICBfcmVuZGVyU2ltcGxlKHJlbmRlcmVyKSB7XG4gICAgY29uc3Qgc3R5bGUgPSB0aGlzLl9jb252ZXJ0ZXJzW3JlbmRlcmVyLnN5bWJvbC50eXBlXS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgIHJlbmRlcmVyLnN5bWJvbFxuICAgICk7XG4gICAgcmV0dXJuICgoKSA9PiB7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICByZXR1cm4gW3N0eWxlXTtcbiAgICAgIH07XG4gICAgfSkoKTtcbiAgfVxuICBfcmVuZGVyQ2xhc3NCcmVha3MocmVuZGVyZXIpIHtcbiAgICBjb25zdCBkZWZhdWx0U3ltYm9sID0gcmVuZGVyZXIuZGVmYXVsdFN5bWJvbDtcbiAgICBjb25zdCBkZWZhdWx0U3R5bGUgPSB0aGlzLl9jb252ZXJ0ZXJzW2RlZmF1bHRTeW1ib2wudHlwZV0uY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICBkZWZhdWx0U3ltYm9sXG4gICAgKTtcbiAgICBjb25zdCBmaWVsZCA9IHJlbmRlcmVyLmZpZWxkO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMCwgaWkgPSByZW5kZXJlci5jbGFzc0JyZWFrSW5mb3MubGVuZ3RoOyBpIDwgaWk7ICsraSkge1xuICAgICAgY29uc3QgY2xhc3NCcmVha0luZm8gPSByZW5kZXJlci5jbGFzc0JyZWFrSW5mb3NbaV07XG4gICAgICBsZXQgbWluO1xuICAgICAgaWYgKFxuICAgICAgICBjbGFzc0JyZWFrSW5mby5jbGFzc01pblZhbHVlID09PSBudWxsIHx8XG4gICAgICAgIGNsYXNzQnJlYWtJbmZvLmNsYXNzTWluVmFsdWUgPT09IHVuZGVmaW5lZFxuICAgICAgKSB7XG4gICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgbWluID0gcmVuZGVyZXIubWluVmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbWluID0gcmVuZGVyZXIuY2xhc3NCcmVha0luZm9zW2kgLSAxXS5jbGFzc01heFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtaW4gPSBjbGFzc0JyZWFrSW5mby5jbGFzc01pblZhbHVlO1xuICAgICAgfVxuICAgICAgY29uc3QgbWF4ID0gY2xhc3NCcmVha0luZm8uY2xhc3NNYXhWYWx1ZTtcbiAgICAgIGNvbnN0IHN5bWJvbCA9IGNsYXNzQnJlYWtJbmZvLnN5bWJvbDtcbiAgICAgIGNvbnN0IHN0eWxlID0gdGhpcy5fY29udmVydGVyc1tzeW1ib2wudHlwZV0uY2FsbCh0aGlzLCBzeW1ib2wpO1xuICAgICAgY2xhc3Nlcy5wdXNoKHsgbWluLCBtYXgsIHN0eWxlIH0pO1xuICAgIH1cbiAgICByZXR1cm4gKCgpID0+IHtcbiAgICAgIHJldHVybiAoZmVhdHVyZSkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGZlYXR1cmUuZ2V0KGZpZWxkKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGlpID0gY2xhc3Nlcy5sZW5ndGg7IGkgPCBpaTsgKytpKSB7XG4gICAgICAgICAgbGV0IGNvbmRpdGlvbjtcbiAgICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgY29uZGl0aW9uID0gdmFsdWUgPj0gY2xhc3Nlc1tpXS5taW4gJiYgdmFsdWUgPD0gY2xhc3Nlc1tpXS5tYXg7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IHZhbHVlID4gY2xhc3Nlc1tpXS5taW4gJiYgdmFsdWUgPD0gY2xhc3Nlc1tpXS5tYXg7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjb25kaXRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBbY2xhc3Nlc1tpXS5zdHlsZV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbZGVmYXVsdFN0eWxlXTtcbiAgICAgIH07XG4gICAgfSkoKTtcbiAgfVxuICBfcmVuZGVyVW5pcXVlVmFsdWUocmVuZGVyZXIpIHtcbiAgICBjb25zdCBkZWZhdWx0U3ltYm9sID0gcmVuZGVyZXIuZGVmYXVsdFN5bWJvbDtcbiAgICBsZXQgZGVmYXVsdFN0eWxlID0gW107XG4gICAgaWYgKGRlZmF1bHRTeW1ib2wpIHtcbiAgICAgIGRlZmF1bHRTdHlsZSA9IFtcbiAgICAgICAgdGhpcy5fY29udmVydGVyc1tkZWZhdWx0U3ltYm9sLnR5cGVdLmNhbGwodGhpcywgZGVmYXVsdFN5bWJvbClcbiAgICAgIF07XG4gICAgfVxuICAgIGNvbnN0IGZpZWxkID0gcmVuZGVyZXIuZmllbGQxO1xuICAgIGNvbnN0IGluZm9zID0gcmVuZGVyZXIudW5pcXVlVmFsdWVJbmZvcztcbiAgICBjb25zdCBtZSA9IHRoaXM7XG4gICAgcmV0dXJuICgoKSA9PiB7XG4gICAgICBjb25zdCBoYXNoID0ge307XG4gICAgICBmb3IgKGxldCBpID0gMCwgaWkgPSBpbmZvcy5sZW5ndGg7IGkgPCBpaTsgKytpKSB7XG4gICAgICAgIGNvbnN0IGluZm8gPSBpbmZvc1tpXTtcbiAgICAgICAgY29uc3Qgc3ltYm9sID0gaW5mby5zeW1ib2w7XG4gICAgICAgIGhhc2hbaW5mby52YWx1ZV0gPSBbbWUuX2NvbnZlcnRlcnNbc3ltYm9sLnR5cGVdLmNhbGwobWUsIHN5bWJvbCldO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gKGZlYXR1cmUpID0+IHtcbiAgICAgICAgY29uc3Qgc3R5bGUgPSBoYXNoW2ZlYXR1cmUuZ2V0KGZpZWxkKV07XG4gICAgICAgIHJldHVybiBzdHlsZSA/IHN0eWxlIDogZGVmYXVsdFN0eWxlO1xuICAgICAgfTtcbiAgICB9KSgpO1xuICB9XG4gIGdlbmVyYXRlU3R5bGUobGF5ZXJJbmZvLCBtYXBVbml0cykge1xuICAgIGNvbnN0IGRyYXdpbmdJbmZvID0gbGF5ZXJJbmZvLmRyYXdpbmdJbmZvO1xuICAgIGxldCBzdHlsZUZ1bmN0aW9ucyA9IFtdO1xuICAgIGNvbnN0IGRyYXdpbmdJbmZvU3R5bGUgPSB0aGlzLl9yZW5kZXJlcnNbZHJhd2luZ0luZm8ucmVuZGVyZXIudHlwZV0uY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICBkcmF3aW5nSW5mby5yZW5kZXJlclxuICAgICk7XG4gICAgaWYgKGRyYXdpbmdJbmZvU3R5bGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgc3R5bGVGdW5jdGlvbnMucHVzaChkcmF3aW5nSW5mb1N0eWxlKTtcbiAgICB9XG4gICAgaWYgKGxheWVySW5mby5sYWJlbGluZ0luZm8pIHtcbiAgICAgIGNvbnN0IGxhYmVsaW5nSW5mb1N0eWxlRnVuY3Rpb25zID0gdGhpcy5fY29udmVydExhYmVsaW5nSW5mbyhcbiAgICAgICAgbGF5ZXJJbmZvLmxhYmVsaW5nSW5mbyxcbiAgICAgICAgbWFwVW5pdHNcbiAgICAgICk7XG4gICAgICBzdHlsZUZ1bmN0aW9ucyA9IHN0eWxlRnVuY3Rpb25zLmNvbmNhdChsYWJlbGluZ0luZm9TdHlsZUZ1bmN0aW9ucyk7XG4gICAgfVxuICAgIGlmIChzdHlsZUZ1bmN0aW9ucy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBzdHlsZUZ1bmN0aW9uc1swXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICgoKSA9PiB7XG4gICAgICAgIHJldHVybiAoZmVhdHVyZSwgcmVzb2x1dGlvbikgPT4ge1xuICAgICAgICAgIGxldCBzdHlsZXMgPSBbXTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMCwgaWkgPSBzdHlsZUZ1bmN0aW9ucy5sZW5ndGg7IGkgPCBpaTsgKytpKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBzdHlsZUZ1bmN0aW9uc1tpXS5jYWxsKG51bGwsIGZlYXR1cmUsIHJlc29sdXRpb24pO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICBzdHlsZXMgPSBzdHlsZXMuY29uY2F0KHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBzdHlsZXM7XG4gICAgICAgIH07XG4gICAgICB9KSgpO1xuICAgIH1cbiAgfVxufVxuIl19
|