@igo2/geo 16.3.0 → 17.0.0-next.10
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/assets/images/north-direction.png +0 -0
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +32 -14
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +38 -19
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +19 -11
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +8 -62
- package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +49 -20
- package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +23 -11
- package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +48 -16
- package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +12 -71
- package/esm2022/lib/catalog/catalog-library/index.mjs +4 -0
- package/esm2022/lib/catalog/catalog.module.mjs +18 -39
- package/esm2022/lib/catalog/index.mjs +2 -1
- package/esm2022/lib/catalog/shared/catalog.abstract.mjs +1 -1
- package/esm2022/lib/catalog/shared/catalog.enum.mjs +1 -1
- package/esm2022/lib/catalog/shared/catalog.interface.mjs +1 -1
- package/esm2022/lib/catalog/shared/catalog.service.mjs +16 -9
- package/esm2022/lib/catalog/shared/catalogs.mjs +1 -1
- package/esm2022/lib/datasource/shared/capabilities.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/capabilities.service.mjs +5 -5
- package/esm2022/lib/datasource/shared/datasource.service.mjs +11 -13
- package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/any-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/data.service.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/index.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +5 -5
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/index.mjs +1 -1
- package/esm2022/lib/datasource/shared/options/options-api.providers.mjs +2 -2
- package/esm2022/lib/datasource/shared/options/options-api.service.mjs +6 -6
- package/esm2022/lib/datasource/shared/options/options.service.mjs +1 -1
- package/esm2022/lib/datasource/utils/tilegrid.mjs +1 -1
- package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +28 -13
- package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +44 -19
- package/esm2022/lib/directions/directions-results/directions-results.component.mjs +36 -16
- package/esm2022/lib/directions/directions-sources/directions-source.interface.mjs +5 -2
- package/esm2022/lib/directions/directions-sources/directions-source.mjs +1 -1
- package/esm2022/lib/directions/directions-sources/directions-source.provider.mjs +9 -2
- package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +72 -41
- package/esm2022/lib/directions/directions.component.mjs +83 -21
- package/esm2022/lib/directions/directions.module.mjs +14 -73
- package/esm2022/lib/directions/directions.provider.mjs +16 -0
- package/esm2022/lib/directions/index.mjs +2 -1
- package/esm2022/lib/directions/shared/directions.interface.mjs +1 -1
- package/esm2022/lib/directions/shared/directions.service.mjs +37 -27
- package/esm2022/lib/directions/shared/directions.utils.mjs +22 -22
- package/esm2022/lib/directions/shared/store.mjs +2 -2
- package/esm2022/lib/download/download-button/download-button.component.mjs +21 -11
- package/esm2022/lib/download/download.module.mjs +10 -27
- package/esm2022/lib/download/shared/download.service.mjs +7 -7
- package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +21 -10
- package/esm2022/lib/draw/draw/draw-popup.component.mjs +41 -18
- package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +22 -9
- package/esm2022/lib/draw/draw/draw.component.mjs +55 -25
- package/esm2022/lib/draw/draw/draw.module.mjs +7 -104
- package/esm2022/lib/draw/drawingTool.module.mjs +8 -7
- package/esm2022/lib/draw/shared/draw-icon.service.mjs +7 -7
- package/esm2022/lib/draw/shared/draw.enum.mjs +1 -1
- package/esm2022/lib/draw/shared/draw.interface.mjs +1 -1
- package/esm2022/lib/draw/shared/draw.utils.mjs +1 -1
- package/esm2022/lib/environment/environment.interface.mjs +1 -1
- package/esm2022/lib/environment/index.mjs +1 -1
- package/esm2022/lib/feature/feature-details/feature-details.component.mjs +29 -13
- package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +8 -7
- package/esm2022/lib/feature/feature-details/feature-details.module.mjs +14 -27
- package/esm2022/lib/feature/feature-details/index.mjs +4 -0
- package/esm2022/lib/feature/feature-form/feature-form.component.mjs +9 -9
- package/esm2022/lib/feature/feature-form/feature-form.module.mjs +8 -11
- package/esm2022/lib/feature/feature.module.mjs +18 -12
- package/esm2022/lib/feature/index.mjs +3 -2
- package/esm2022/lib/feature/shared/feature-store.utils.mjs +1 -1
- package/esm2022/lib/feature/shared/feature.interfaces.mjs +1 -1
- package/esm2022/lib/feature/shared/feature.utils.mjs +2 -2
- package/esm2022/lib/feature/shared/index.mjs +1 -1
- package/esm2022/lib/feature/shared/store.mjs +2 -2
- package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +2 -2
- package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +2 -2
- package/esm2022/lib/feature/shared/strategies/in-map-resolution.mjs +2 -2
- package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +2 -2
- package/esm2022/lib/feature/shared/strategies/loading.mjs +2 -2
- package/esm2022/lib/feature/shared/strategies/search.mjs +5 -5
- package/esm2022/lib/feature/shared/strategies/selection.mjs +2 -2
- package/esm2022/lib/feature/shared/strategies.utils.mjs +1 -1
- package/esm2022/lib/filter/filter.module.mjs +47 -177
- package/esm2022/lib/filter/index.mjs +2 -1
- package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +29 -15
- package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +46 -20
- package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +56 -25
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +17 -14
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +59 -34
- package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +18 -12
- package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +42 -18
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +8 -7
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +21 -12
- package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +6 -5
- package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +5 -5
- package/esm2022/lib/filter/shared/ogc-filter.enum.mjs +1 -1
- package/esm2022/lib/filter/shared/ogc-filter.interface.mjs +1 -1
- package/esm2022/lib/filter/shared/ogc-filter.mjs +46 -3
- package/esm2022/lib/filter/shared/ogc-filter.service.mjs +5 -5
- package/esm2022/lib/filter/shared/spatial-filter.enum.mjs +1 -1
- package/esm2022/lib/filter/shared/spatial-filter.service.mjs +9 -7
- package/esm2022/lib/filter/shared/time-filter.enum.mjs +1 -1
- package/esm2022/lib/filter/shared/time-filter.interface.mjs +1 -1
- package/esm2022/lib/filter/shared/time-filter.service.mjs +5 -5
- package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +66 -28
- package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +35 -18
- package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +35 -16
- package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +28 -14
- package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +51 -24
- package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +31 -13
- package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +8 -7
- package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +16 -10
- package/esm2022/lib/geo.module.mjs +5 -43
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +7 -7
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +34 -17
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +12 -43
- package/esm2022/lib/geometry/geometry-form-field/index.mjs +4 -0
- package/esm2022/lib/geometry/geometry.module.mjs +9 -10
- package/esm2022/lib/geometry/index.mjs +2 -3
- package/esm2022/lib/geometry/shared/controls/draw.mjs +1 -1
- package/esm2022/lib/geometry/shared/controls/modify.mjs +1 -1
- package/esm2022/lib/geometry/shared/controls/slice.mjs +1 -1
- package/esm2022/lib/geometry/shared/geometry.errors.mjs +1 -1
- package/esm2022/lib/geometry/shared/geometry.interfaces.mjs +1 -1
- package/esm2022/lib/geometry/shared/geometry.utils.mjs +1 -1
- package/esm2022/lib/import-export/export-button/export-button.component.mjs +20 -10
- package/esm2022/lib/import-export/import-export/import-export.component.mjs +58 -22
- package/esm2022/lib/import-export/import-export.module.mjs +15 -81
- package/esm2022/lib/import-export/index.mjs +2 -1
- package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +19 -66
- package/esm2022/lib/import-export/shared/export.interface.mjs +1 -1
- package/esm2022/lib/import-export/shared/export.service.mjs +14 -8
- package/esm2022/lib/import-export/shared/export.type.mjs +1 -1
- package/esm2022/lib/import-export/shared/export.utils.mjs +2 -2
- package/esm2022/lib/import-export/shared/import.errors.mjs +1 -1
- package/esm2022/lib/import-export/shared/import.interface.mjs +1 -1
- package/esm2022/lib/import-export/shared/import.service.mjs +7 -7
- package/esm2022/lib/import-export/shared/import.utils.mjs +1 -1
- package/esm2022/lib/layer/index.mjs +2 -1
- package/esm2022/lib/layer/layer-item/layer-item.component.mjs +35 -16
- package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +45 -17
- package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +13 -11
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +8 -7
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +28 -13
- package/esm2022/lib/layer/layer-list/layer-list-binding.directive.mjs +10 -9
- package/esm2022/lib/layer/layer-list/layer-list.component.mjs +49 -18
- package/esm2022/lib/layer/layer-list/layer-list.enum.mjs +1 -1
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +33 -14
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +5 -5
- package/esm2022/lib/layer/layer.module.mjs +27 -93
- package/esm2022/lib/layer/shared/clusterParam.mjs +1 -1
- package/esm2022/lib/layer/shared/layer.service.mjs +13 -13
- package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/any-layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/image-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/image-layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/legend.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/tile-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/tile-layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/vector-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/vector-layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/vectortile-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +1 -1
- package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +21 -11
- package/esm2022/lib/layer/utils/image-watcher.mjs +1 -1
- package/esm2022/lib/layer/utils/layer.utils.mjs +1 -1
- package/esm2022/lib/layer/utils/outputLegend.mjs +1 -1
- package/esm2022/lib/layer/utils/tile-watcher.mjs +1 -1
- package/esm2022/lib/layer/utils/vector-watcher.mjs +1 -1
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +1 -1
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +27 -14
- package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +8 -8
- package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +28 -17
- package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +15 -11
- package/esm2022/lib/map/home-extent-button/home-extent-button.interface.mjs +1 -1
- package/esm2022/lib/map/home-extent-button/index.mjs +1 -1
- package/esm2022/lib/map/index.mjs +1 -1
- package/esm2022/lib/map/info-section/info-section.component.mjs +7 -7
- package/esm2022/lib/map/map-browser/map-browser.component.mjs +8 -8
- package/esm2022/lib/map/map-center/map-center.component.mjs +6 -6
- package/esm2022/lib/map/map.module.mjs +51 -81
- package/esm2022/lib/map/menu-button/menu-button.component.mjs +23 -13
- package/esm2022/lib/map/offline-button/offline-button.component.mjs +21 -11
- package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +23 -11
- package/esm2022/lib/map/shared/controllers/controller.mjs +1 -1
- package/esm2022/lib/map/shared/controllers/geolocation.interface.mjs +1 -1
- package/esm2022/lib/map/shared/controllers/geolocation.mjs +1 -1
- package/esm2022/lib/map/shared/controllers/index.mjs +1 -1
- package/esm2022/lib/map/shared/controllers/view.mjs +1 -1
- package/esm2022/lib/map/shared/hover-feature.directive.mjs +11 -10
- package/esm2022/lib/map/shared/index.mjs +1 -1
- package/esm2022/lib/map/shared/linkedLayers.utils.mjs +3 -3
- package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +10 -9
- package/esm2022/lib/map/shared/map.abstract.mjs +1 -1
- package/esm2022/lib/map/shared/map.interface.mjs +1 -1
- package/esm2022/lib/map/shared/map.mjs +1 -1
- package/esm2022/lib/map/shared/map.service.mjs +5 -5
- package/esm2022/lib/map/shared/map.utils.mjs +1 -1
- package/esm2022/lib/map/shared/mapOffline.directive.mjs +11 -8
- package/esm2022/lib/map/shared/projection.interfaces.mjs +1 -1
- package/esm2022/lib/map/shared/projection.service.mjs +7 -7
- package/esm2022/lib/map/shared/projection.utils.mjs +60 -1
- package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +6 -6
- package/esm2022/lib/map/utils/layer-watcher.mjs +1 -1
- package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +26 -16
- package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +13 -9
- package/esm2022/lib/measure/index.mjs +2 -3
- package/esm2022/lib/measure/measure.module.mjs +8 -5
- package/esm2022/lib/measure/measurer/index.mjs +6 -0
- package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +6 -5
- package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +18 -11
- package/esm2022/lib/measure/measurer/measurer-item.component.mjs +27 -13
- package/esm2022/lib/measure/measurer/measurer.component.mjs +40 -20
- package/esm2022/lib/measure/measurer/measurer.module.mjs +7 -69
- package/esm2022/lib/measure/shared/measure.enum.mjs +1 -1
- package/esm2022/lib/measure/shared/measure.interfaces.mjs +1 -1
- package/esm2022/lib/measure/shared/measure.utils.mjs +1 -1
- package/esm2022/lib/metadata/index.mjs +2 -1
- package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +35 -18
- package/esm2022/lib/metadata/metadata.module.mjs +14 -31
- package/esm2022/lib/metadata/shared/metadata.interface.mjs +1 -1
- package/esm2022/lib/metadata/shared/metadata.service.mjs +5 -5
- package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +7 -7
- package/esm2022/lib/offline/geoDB/geoDB.enums.mjs +1 -1
- package/esm2022/lib/offline/geoDB/geoDB.interface.mjs +1 -1
- package/esm2022/lib/offline/geoDB/geoDB.service.mjs +8 -10
- package/esm2022/lib/offline/layerDB/index.mjs +1 -1
- package/esm2022/lib/offline/layerDB/layerDB.interface.mjs +1 -1
- package/esm2022/lib/offline/layerDB/layerDB.service.mjs +5 -5
- package/esm2022/lib/offline/shared/geo-network.service.mjs +7 -7
- package/esm2022/lib/overlay/overlay.module.mjs +10 -8
- package/esm2022/lib/overlay/shared/overlay.directive.mjs +8 -7
- package/esm2022/lib/overlay/shared/overlay.enum.mjs +1 -1
- package/esm2022/lib/overlay/shared/overlay.mjs +1 -1
- package/esm2022/lib/overlay/shared/overlay.service.mjs +5 -5
- package/esm2022/lib/overlay/shared/overlay.utils.mjs +1 -1
- package/esm2022/lib/print/print/print.component.mjs +8 -8
- package/esm2022/lib/print/print-form/print-form.component.mjs +49 -17
- package/esm2022/lib/print/print.module.mjs +10 -54
- package/esm2022/lib/print/shared/geopdf.mjs +1 -1
- package/esm2022/lib/print/shared/print.interface.mjs +1 -1
- package/esm2022/lib/print/shared/print.service.mjs +180 -127
- package/esm2022/lib/print/shared/print.type.mjs +1 -1
- package/esm2022/lib/query/query.module.mjs +7 -8
- package/esm2022/lib/query/shared/index.mjs +2 -1
- package/esm2022/lib/query/shared/query-search-source.mjs +6 -6
- package/esm2022/lib/query/shared/query-search-source.providers.mjs +2 -2
- package/esm2022/lib/query/shared/query.directive.mjs +8 -7
- package/esm2022/lib/query/shared/query.interfaces.mjs +1 -1
- package/esm2022/lib/query/shared/query.service.mjs +8 -10
- package/esm2022/lib/query/shared/query.utils.mjs +1 -1
- package/esm2022/lib/search/index.mjs +3 -5
- package/esm2022/lib/search/search-bar/search-bar.component.mjs +42 -19
- package/esm2022/lib/search/search-bar/search-bar.module.mjs +8 -61
- package/esm2022/lib/search/search-results/index.mjs +5 -0
- package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +44 -19
- package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +34 -18
- package/esm2022/lib/search/search-results/search-results-item.component.mjs +23 -12
- package/esm2022/lib/search/search-results/search-results.component.mjs +28 -14
- package/esm2022/lib/search/search-results/search-results.directive.mjs +7 -0
- package/esm2022/lib/search/search-results/search-results.module.mjs +8 -91
- package/esm2022/lib/search/search-selector/search-selector.component.mjs +27 -12
- package/esm2022/lib/search/search-selector/search-selector.module.mjs +8 -44
- package/esm2022/lib/search/search-settings/search-settings.component.mjs +40 -15
- package/esm2022/lib/search/search-settings/search-settings.module.mjs +7 -47
- package/esm2022/lib/search/search.module.mjs +24 -13
- package/esm2022/lib/search/shared/index.mjs +2 -1
- package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +11 -10
- package/esm2022/lib/search/shared/search-source-service.providers.mjs +1 -1
- package/esm2022/lib/search/shared/search-source.service.mjs +1 -1
- package/esm2022/lib/search/shared/search.enums.mjs +1 -1
- package/esm2022/lib/search/shared/search.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/search.provider.mjs +20 -0
- package/esm2022/lib/search/shared/search.service.mjs +32 -13
- package/esm2022/lib/search/shared/search.utils.mjs +2 -2
- package/esm2022/lib/search/shared/sources/cadastre.mjs +13 -10
- package/esm2022/lib/search/shared/sources/cadastre.providers.mjs +11 -2
- package/esm2022/lib/search/shared/sources/coordinates.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/coordinates.mjs +16 -14
- package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +14 -2
- package/esm2022/lib/search/shared/sources/icherche-icons.mjs +32 -0
- package/esm2022/lib/search/shared/sources/icherche.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/icherche.mjs +28 -21
- package/esm2022/lib/search/shared/sources/icherche.providers.mjs +23 -2
- package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/ilayer.mjs +14 -12
- package/esm2022/lib/search/shared/sources/ilayer.providers.mjs +14 -2
- package/esm2022/lib/search/shared/sources/index.mjs +1 -1
- package/esm2022/lib/search/shared/sources/nominatim.mjs +10 -10
- package/esm2022/lib/search/shared/sources/nominatim.providers.mjs +10 -2
- package/esm2022/lib/search/shared/sources/source.interfaces.mjs +13 -2
- package/esm2022/lib/search/shared/sources/source.mjs +1 -1
- package/esm2022/lib/search/shared/sources/storedqueries.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/storedqueries.mjs +17 -15
- package/esm2022/lib/search/shared/sources/storedqueries.providers.mjs +17 -2
- package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/workspace.mjs +12 -11
- package/esm2022/lib/search/shared/sources/workspace.providers.mjs +11 -2
- package/esm2022/lib/style/index.mjs +1 -1
- package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +1 -1
- package/esm2022/lib/style/shared/feature/feature-style.mjs +3 -2
- package/esm2022/lib/style/shared/font.enum.mjs +1 -1
- package/esm2022/lib/style/shared/index.mjs +1 -1
- package/esm2022/lib/style/shared/overlay/overlay-marker-style.utils.mjs +1 -1
- package/esm2022/lib/style/shared/overlay/overlay-style.utils.mjs +1 -1
- package/esm2022/lib/style/shared/vector/commonVectorStyle.mjs +1 -1
- package/esm2022/lib/style/shared/vector/conversion.utils.mjs +1 -1
- package/esm2022/lib/style/shared/vector/vector-style.interface.mjs +1 -1
- package/esm2022/lib/style/style-list/style-list.module.mjs +5 -5
- package/esm2022/lib/style/style-list/style-list.provider.mjs +1 -1
- package/esm2022/lib/style/style-list/style-list.service.mjs +5 -5
- package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +40 -17
- package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +28 -14
- package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +13 -9
- package/esm2022/lib/style/style-modal/shared/style-modal.interface.mjs +1 -1
- package/esm2022/lib/style/style-service/draw-style.service.mjs +5 -5
- package/esm2022/lib/style/style-service/style.service.mjs +4 -4
- package/esm2022/lib/style/style.module.mjs +12 -57
- package/esm2022/lib/toast/toast.component.mjs +21 -11
- package/esm2022/lib/toast/toast.module.mjs +10 -30
- package/esm2022/lib/utils/googleLinks.mjs +1 -1
- package/esm2022/lib/utils/id-generator.mjs +1 -1
- package/esm2022/lib/utils/osmLinks.mjs +1 -1
- package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.interface.mjs +1 -1
- package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +7 -7
- package/esm2022/lib/wkt/shared/wkt.service.mjs +19 -19
- package/esm2022/lib/wkt/wkt.module.mjs +8 -5
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +11 -10
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +8 -24
- package/esm2022/lib/workspace/confirmation-popup/index.mjs +1 -1
- package/esm2022/lib/workspace/shared/edition-workspace.mjs +2 -2
- package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +19 -14
- package/esm2022/lib/workspace/shared/feature-workspace.mjs +2 -2
- package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +14 -11
- package/esm2022/lib/workspace/shared/wfs-workspace.mjs +2 -2
- package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +14 -11
- package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +12 -9
- package/esm2022/lib/workspace/shared/workspace.utils.mjs +4 -4
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +7 -7
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +8 -13
- package/esm2022/lib/workspace/widgets/widgets.mjs +2 -2
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +9 -8
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +8 -10
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +7 -6
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +8 -10
- package/esm2022/lib/workspace/workspace.module.mjs +11 -36
- package/esm2022/public_api.mjs +11 -12
- package/fesm2022/igo2-geo.mjs +23027 -22793
- package/fesm2022/igo2-geo.mjs.map +1 -1
- package/lib/catalog/catalog-browser/catalog-browser-group.component.d.ts +3 -3
- package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +2 -2
- package/lib/catalog/catalog-browser/catalog-browser.component.d.ts +2 -2
- package/lib/catalog/catalog-browser/catalog-browser.module.d.ts +2 -14
- package/lib/catalog/catalog-library/add-catalog-dialog.component.d.ts +4 -3
- package/lib/catalog/catalog-library/catalog-library-item.component.d.ts +1 -1
- package/lib/catalog/catalog-library/catalog-library.component.d.ts +6 -3
- package/lib/catalog/catalog-library/catalog-library.module.d.ts +6 -18
- package/lib/catalog/catalog-library/index.d.ts +3 -0
- package/lib/catalog/catalog.module.d.ts +9 -9
- package/lib/catalog/index.d.ts +1 -0
- package/lib/catalog/shared/catalog.interface.d.ts +1 -1
- package/lib/catalog/shared/catalog.service.d.ts +3 -1
- package/lib/datasource/shared/datasource.service.d.ts +4 -5
- package/lib/datasource/shared/datasources/arcgisrest-datasource.d.ts +2 -3
- package/lib/datasource/shared/datasources/cluster-datasource.interface.d.ts +2 -3
- package/lib/datasource/shared/datasources/datasource.d.ts +1 -2
- package/lib/datasource/shared/datasources/feature-datasource.d.ts +2 -3
- package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +2 -3
- package/lib/datasource/shared/datasources/websocket-datasource.d.ts +1 -2
- package/lib/datasource/shared/datasources/wfs-datasource.d.ts +2 -3
- package/lib/datasource/shared/datasources/wfs-datasource.interface.d.ts +1 -2
- package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +1 -2
- package/lib/datasource/shared/options/options-api.providers.d.ts +1 -1
- package/lib/directions/directions-buttons/directions-buttons.component.d.ts +4 -2
- package/lib/directions/directions-inputs/directions-inputs.component.d.ts +2 -2
- package/lib/directions/directions-results/directions-results.component.d.ts +2 -2
- package/lib/directions/directions-sources/directions-source.d.ts +7 -3
- package/lib/directions/directions-sources/directions-source.interface.d.ts +19 -6
- package/lib/directions/directions-sources/directions-source.provider.d.ts +3 -1
- package/lib/directions/directions-sources/osrm-directions-source.d.ts +20 -11
- package/lib/directions/directions.component.d.ts +16 -4
- package/lib/directions/directions.module.d.ts +4 -16
- package/lib/directions/directions.provider.d.ts +3 -0
- package/lib/directions/index.d.ts +1 -0
- package/lib/directions/shared/directions.interface.d.ts +2 -9
- package/lib/directions/shared/directions.service.d.ts +7 -3
- package/lib/directions/shared/directions.utils.d.ts +2 -2
- package/lib/directions/shared/store.d.ts +1 -1
- package/lib/download/download-button/download-button.component.d.ts +1 -1
- package/lib/download/download.module.d.ts +4 -6
- package/lib/download/shared/download.service.d.ts +1 -1
- package/lib/draw/draw/draw-layer-popup.component.d.ts +1 -1
- package/lib/draw/draw/draw-popup.component.d.ts +5 -5
- package/lib/draw/draw/draw-shorcuts.component.d.ts +3 -1
- package/lib/draw/draw/draw.component.d.ts +3 -3
- package/lib/draw/draw/draw.module.d.ts +2 -25
- package/lib/draw/drawingTool.module.d.ts +3 -0
- package/lib/draw/shared/draw-icon.service.d.ts +1 -1
- package/lib/environment/environment.interface.d.ts +2 -1
- package/lib/feature/feature-details/feature-details.component.d.ts +8 -5
- package/lib/feature/feature-details/feature-details.directive.d.ts +1 -1
- package/lib/feature/feature-details/feature-details.module.d.ts +5 -6
- package/lib/feature/feature-details/index.d.ts +3 -0
- package/lib/feature/feature-form/feature-form.component.d.ts +2 -3
- package/lib/feature/feature-form/feature-form.module.d.ts +2 -4
- package/lib/feature/feature.module.d.ts +9 -4
- package/lib/feature/index.d.ts +2 -1
- package/lib/feature/shared/feature.interfaces.d.ts +1 -1
- package/lib/feature/shared/feature.utils.d.ts +1 -1
- package/lib/feature/shared/store.d.ts +1 -1
- package/lib/feature/shared/strategies/geo-properties.d.ts +1 -1
- package/lib/feature/shared/strategies/in-map-extent.d.ts +1 -1
- package/lib/feature/shared/strategies/in-map-resolution.d.ts +1 -1
- package/lib/feature/shared/strategies/loading-layer.d.ts +1 -1
- package/lib/feature/shared/strategies/loading.d.ts +1 -1
- package/lib/feature/shared/strategies/search.d.ts +1 -1
- package/lib/feature/shared/strategies/selection.d.ts +1 -1
- package/lib/filter/filter.module.d.ts +23 -28
- package/lib/filter/index.d.ts +1 -0
- package/lib/filter/ogc-filter-button/ogc-filter-button.component.d.ts +3 -3
- package/lib/filter/ogc-filter-form/ogc-filter-form.component.d.ts +3 -3
- package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +5 -5
- package/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.d.ts +1 -1
- package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +5 -5
- package/lib/filter/ogc-filterable-form/ogc-filterable-form.component.d.ts +3 -3
- package/lib/filter/ogc-filterable-item/ogc-filterable-item.component.d.ts +3 -3
- package/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.d.ts +1 -1
- package/lib/filter/ogc-filterable-list/ogc-filterable-list.component.d.ts +3 -3
- package/lib/filter/shared/filterable-datasource.pipe.d.ts +1 -1
- package/lib/filter/shared/ogc-filter.d.ts +7 -0
- package/lib/filter/shared/ogc-filter.interface.d.ts +2 -3
- package/lib/filter/shared/spatial-filter.service.d.ts +2 -1
- package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +7 -6
- package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +3 -3
- package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +2 -2
- package/lib/filter/time-filter-button/time-filter-button.component.d.ts +1 -1
- package/lib/filter/time-filter-form/time-filter-form.component.d.ts +3 -3
- package/lib/filter/time-filter-item/time-filter-item.component.d.ts +1 -1
- package/lib/filter/time-filter-list/time-filter-list-binding.directive.d.ts +1 -1
- package/lib/filter/time-filter-list/time-filter-list.component.d.ts +1 -1
- package/lib/geo.module.d.ts +14 -24
- package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +2 -3
- package/lib/geometry/geometry-form-field/geometry-form-field.component.d.ts +1 -1
- package/lib/geometry/geometry-form-field/geometry-form-field.module.d.ts +5 -10
- package/lib/geometry/geometry-form-field/index.d.ts +3 -0
- package/lib/geometry/geometry.module.d.ts +5 -3
- package/lib/geometry/index.d.ts +1 -2
- package/lib/geometry/shared/controls/draw.d.ts +4 -4
- package/lib/geometry/shared/controls/slice.d.ts +4 -4
- package/lib/geometry/shared/geometry.interfaces.d.ts +1 -1
- package/lib/import-export/export-button/export-button.component.d.ts +1 -1
- package/lib/import-export/import-export/import-export.component.d.ts +7 -4
- package/lib/import-export/import-export.module.d.ts +8 -15
- package/lib/import-export/index.d.ts +1 -0
- package/lib/import-export/shared/drop-geo-file.directive.d.ts +5 -5
- package/lib/import-export/shared/export.service.d.ts +1 -1
- package/lib/import-export/shared/export.utils.d.ts +2 -2
- package/lib/import-export/shared/import.service.d.ts +1 -1
- package/lib/import-export/shared/import.utils.d.ts +2 -2
- package/lib/layer/index.d.ts +1 -0
- package/lib/layer/layer-item/layer-item.component.d.ts +2 -2
- package/lib/layer/layer-legend/layer-legend.component.d.ts +3 -2
- package/lib/layer/layer-legend-item/layer-legend-item.component.d.ts +2 -2
- package/lib/layer/layer-legend-list/layer-legend-list-binding.directive.d.ts +1 -1
- package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +1 -1
- package/lib/layer/layer-list/layer-list-binding.directive.d.ts +2 -2
- package/lib/layer/layer-list/layer-list.component.d.ts +1 -1
- package/lib/layer/layer-list-tool/layer-list-tool.component.d.ts +1 -1
- package/lib/layer/layer.module.d.ts +14 -18
- package/lib/layer/shared/layer.service.d.ts +1 -1
- package/lib/layer/shared/layers/image-layer.d.ts +1 -1
- package/lib/layer/shared/layers/layer.d.ts +1 -1
- package/lib/layer/shared/layers/layer.interface.d.ts +1 -1
- package/lib/layer/shared/layers/tile-layer.d.ts +1 -1
- package/lib/layer/shared/layers/vector-layer.d.ts +4 -5
- package/lib/layer/shared/layers/vector-layer.interface.d.ts +1 -2
- package/lib/layer/shared/layers/vectortile-layer.d.ts +1 -1
- package/lib/layer/track-feature-button/track-feature-button.component.d.ts +1 -1
- package/lib/layer/utils/image-watcher.d.ts +1 -1
- package/lib/map/baselayers-switcher/baselayers-switcher.component.d.ts +2 -2
- package/lib/map/baselayers-switcher/mini-basemap.component.d.ts +1 -1
- package/lib/map/geolocate-button/geolocate-button.component.d.ts +2 -2
- package/lib/map/home-extent-button/home-extent-button.component.d.ts +2 -2
- package/lib/map/info-section/info-section.component.d.ts +1 -1
- package/lib/map/map-browser/map-browser.component.d.ts +2 -2
- package/lib/map/map-center/map-center.component.d.ts +1 -1
- package/lib/map/map.module.d.ts +35 -21
- package/lib/map/menu-button/menu-button.component.d.ts +2 -2
- package/lib/map/offline-button/offline-button.component.d.ts +2 -2
- package/lib/map/rotation-button/rotation-button.component.d.ts +1 -1
- package/lib/map/shared/controllers/geolocation.d.ts +2 -1
- package/lib/map/shared/hover-feature.directive.d.ts +2 -2
- package/lib/map/shared/map-pointer-position.directive.d.ts +2 -2
- package/lib/map/shared/map.d.ts +2 -1
- package/lib/map/shared/mapOffline.directive.d.ts +3 -2
- package/lib/map/shared/projection.service.d.ts +1 -1
- package/lib/map/shared/projection.utils.d.ts +11 -0
- package/lib/map/swipe-control/swipe-control.component.d.ts +1 -1
- package/lib/map/wake-lock-button/wake-lock-button.component.d.ts +2 -2
- package/lib/map/zoom-button/zoom-button.component.d.ts +1 -1
- package/lib/measure/index.d.ts +1 -2
- package/lib/measure/measure.module.d.ts +3 -0
- package/lib/measure/measurer/index.d.ts +5 -0
- package/lib/measure/measurer/measure-format.pipe.d.ts +1 -1
- package/lib/measure/measurer/measurer-dialog.component.d.ts +1 -1
- package/lib/measure/measurer/measurer-item.component.d.ts +1 -1
- package/lib/measure/measurer/measurer.component.d.ts +4 -4
- package/lib/measure/measurer/measurer.module.d.ts +3 -18
- package/lib/measure/shared/measure.utils.d.ts +1 -1
- package/lib/metadata/index.d.ts +1 -0
- package/lib/metadata/metadata-button/metadata-button.component.d.ts +2 -2
- package/lib/metadata/metadata.module.d.ts +6 -7
- package/lib/offline/geoDB/configFileToGeoDB.service.d.ts +1 -1
- package/lib/offline/geoDB/geoDB.service.d.ts +2 -3
- package/lib/offline/shared/geo-network.service.d.ts +1 -1
- package/lib/overlay/overlay.module.d.ts +4 -1
- package/lib/overlay/shared/overlay.directive.d.ts +1 -1
- package/lib/print/print/print.component.d.ts +1 -1
- package/lib/print/print-form/print-form.component.d.ts +5 -2
- package/lib/print/print.module.d.ts +4 -12
- package/lib/print/shared/print.interface.d.ts +1 -0
- package/lib/print/shared/print.service.d.ts +31 -18
- package/lib/query/query.module.d.ts +4 -4
- package/lib/query/shared/index.d.ts +1 -0
- package/lib/query/shared/query-search-source.providers.d.ts +1 -1
- package/lib/query/shared/query.directive.d.ts +1 -1
- package/lib/query/shared/query.interfaces.d.ts +1 -2
- package/lib/query/shared/query.service.d.ts +2 -3
- package/lib/search/index.d.ts +2 -4
- package/lib/search/search-bar/search-bar.component.d.ts +4 -3
- package/lib/search/search-bar/search-bar.module.d.ts +2 -16
- package/lib/search/search-results/index.d.ts +4 -0
- package/lib/search/search-results/save-feature-dialog.component.d.ts +2 -2
- package/lib/search/search-results/search-results-add-button.component.d.ts +4 -4
- package/lib/search/search-results/search-results-item.component.d.ts +1 -1
- package/lib/search/search-results/search-results.component.d.ts +3 -3
- package/lib/search/search-results/search-results.directive.d.ts +3 -0
- package/lib/search/search-results/search-results.module.d.ts +3 -21
- package/lib/search/search-selector/search-selector.component.d.ts +1 -1
- package/lib/search/search-selector/search-selector.module.d.ts +2 -11
- package/lib/search/search-settings/search-settings.component.d.ts +3 -2
- package/lib/search/search-settings/search-settings.module.d.ts +2 -12
- package/lib/search/search.module.d.ts +14 -7
- package/lib/search/shared/index.d.ts +1 -0
- package/lib/search/shared/search-pointer-summary.directive.d.ts +2 -2
- package/lib/search/shared/search-source.service.d.ts +1 -1
- package/lib/search/shared/search.interfaces.d.ts +12 -10
- package/lib/search/shared/search.provider.d.ts +8 -0
- package/lib/search/shared/search.service.d.ts +8 -3
- package/lib/search/shared/sources/cadastre.d.ts +2 -1
- package/lib/search/shared/sources/cadastre.providers.d.ts +6 -2
- package/lib/search/shared/sources/coordinates.d.ts +2 -1
- package/lib/search/shared/sources/coordinates.providers.d.ts +6 -2
- package/lib/search/shared/sources/icherche-icons.d.ts +7 -0
- package/lib/search/shared/sources/icherche.d.ts +2 -1
- package/lib/search/shared/sources/icherche.providers.d.ts +10 -14
- package/lib/search/shared/sources/ilayer.d.ts +2 -1
- package/lib/search/shared/sources/ilayer.providers.d.ts +6 -2
- package/lib/search/shared/sources/nominatim.d.ts +1 -1
- package/lib/search/shared/sources/nominatim.providers.d.ts +5 -2
- package/lib/search/shared/sources/source.d.ts +2 -2
- package/lib/search/shared/sources/source.interfaces.d.ts +16 -0
- package/lib/search/shared/sources/storedqueries.d.ts +2 -1
- package/lib/search/shared/sources/storedqueries.providers.d.ts +8 -3
- package/lib/search/shared/sources/workspace.d.ts +2 -1
- package/lib/search/shared/sources/workspace.providers.d.ts +6 -2
- package/lib/style/shared/vector/conversion.utils.d.ts +2 -3
- package/lib/style/style-modal/drawing/style-modal-drawing.component.d.ts +1 -1
- package/lib/style/style-modal/layer/style-modal-layer.component.d.ts +1 -1
- package/lib/style/style-modal/layer-button/style-modal-layer-button.component.d.ts +1 -1
- package/lib/style/style.module.d.ts +5 -16
- package/lib/toast/toast.component.d.ts +2 -2
- package/lib/toast/toast.module.d.ts +4 -6
- package/lib/utils/propertyTypeDetector/propertyTypeDetector.service.d.ts +1 -1
- package/lib/wkt/shared/wkt.service.d.ts +1 -1
- package/lib/wkt/wkt.module.d.ts +3 -0
- package/lib/workspace/confirmation-popup/confirmation-popup.component.d.ts +2 -2
- package/lib/workspace/confirmation-popup/confirmation-popup.module.d.ts +2 -6
- package/lib/workspace/shared/edition-workspace.d.ts +2 -2
- package/lib/workspace/shared/edition-workspace.service.d.ts +5 -2
- package/lib/workspace/shared/feature-workspace.d.ts +1 -1
- package/lib/workspace/shared/feature-workspace.service.d.ts +2 -1
- package/lib/workspace/shared/wfs-workspace.d.ts +1 -1
- package/lib/workspace/shared/wfs-workspace.service.d.ts +2 -1
- package/lib/workspace/shared/wms-workspace.service.d.ts +2 -1
- package/lib/workspace/shared/workspace.utils.d.ts +2 -1
- package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +3 -2
- package/lib/workspace/widgets/ogc-filter/ogc-filter.module.d.ts +2 -6
- package/lib/workspace/widgets/widgets.d.ts +1 -1
- package/lib/workspace/workspace-selector/workspace-selector.directive.d.ts +2 -2
- package/lib/workspace/workspace-selector/workspace-selector.module.d.ts +2 -3
- package/lib/workspace/workspace-updator/workspace-updator.directive.d.ts +2 -2
- package/lib/workspace/workspace-updator/workspace-updator.module.d.ts +2 -3
- package/lib/workspace/workspace.module.d.ts +5 -9
- package/locale/en.geo.json +824 -818
- package/locale/fr.geo.json +825 -819
- package/package.json +14 -12
- package/public_api.d.ts +10 -11
- package/src/_index.scss +2 -2
- package/src/geo-theme.scss +23 -23
- package/src/lib/catalog/catalog-browser/catalog-browser.theming.scss +22 -22
- package/src/lib/catalog/catalog.theming.scss +5 -5
- package/src/lib/directions/directions-results/directions-results.theming.scss +10 -10
- package/src/lib/directions/directions.theming.scss +6 -6
- package/src/lib/draw/draw.theming.scss +32 -32
- package/src/lib/feature/feature-details/feature-details.theming.scss +16 -16
- package/src/lib/feature/feature.theming.scss +4 -4
- package/src/lib/filter/filter.theming.scss +13 -13
- package/src/lib/filter/ogc-filter-selection/ogc-filter-selection.theming.scss +18 -18
- package/src/lib/filter/time-filter-form/time-filter-form.theming.scss +5 -5
- package/src/lib/layer/layer-item/layer-item.theme.scss +33 -33
- package/src/lib/layer/layer-legend/layer-legend.theming.scss +10 -10
- package/src/lib/layer/layer-list-tool/layer-list-tool.theming.scss +34 -34
- package/src/lib/layer/layer.theming.scss +10 -10
- package/src/lib/map/map-browser/map-browser.theming.scss +46 -46
- package/src/lib/map/map.theming.scss +9 -9
- package/src/lib/map/menu-button/menu-button.theming.scss +20 -20
- package/src/lib/map/zoom-button/zoom-button.theming.scss +32 -32
- package/src/lib/measure/measure.theming.scss +5 -5
- package/src/lib/measure/measurer/measurer.theming.scss +26 -26
- package/src/lib/search/search-bar/search-bar.theming.scss +33 -33
- package/src/lib/search/search-results/search-results-item.theme.scss +20 -20
- package/src/lib/search/search.theming.scss +7 -7
- package/src/lib/workspace/confirmation-popup/confirmation-popup.theming.scss +14 -14
- package/src/lib/workspace/workspace.theming.scss +6 -6
- package/src/style/style.scss +1 -1
- package/style/style.css +2 -1
- package/esm2022/lib/datasource/datasource.module.mjs +0 -22
- package/esm2022/lib/search/search-bar/search-url-param.directive.mjs +0 -40
- package/lib/datasource/datasource.module.d.ts +0 -8
- package/lib/search/search-bar/search-url-param.directive.d.ts +0 -13
|
@@ -1,38 +1,53 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { HttpClient } from '@angular/common/http';
|
|
1
3
|
import { ChangeDetectorRef, Component, Input } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
+
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
5
|
+
import { EntityStoreWatcher } from '@igo2/common/entity';
|
|
6
|
+
import { LanguageService } from '@igo2/core/language';
|
|
7
|
+
import { IgoLanguageModule } from '@igo2/core/language';
|
|
8
|
+
import { MessageService } from '@igo2/core/message';
|
|
4
9
|
import { ChangeUtils, ObjectUtils } from '@igo2/utils';
|
|
5
10
|
import * as olCondition from 'ol/events/condition';
|
|
6
11
|
import * as olInteraction from 'ol/interaction';
|
|
7
12
|
import * as olProj from 'ol/proj';
|
|
8
|
-
import { Subject } from 'rxjs';
|
|
13
|
+
import { BehaviorSubject, Subject } from 'rxjs';
|
|
9
14
|
import { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';
|
|
10
15
|
import { FeatureStoreLoadingStrategy } from '../feature/shared/strategies/loading';
|
|
11
16
|
import { roundCoordTo, stringToLonLat } from '../map';
|
|
12
17
|
import { QueryService } from '../query/shared/query.service';
|
|
13
18
|
import { SearchService } from '../search/shared/search.service';
|
|
19
|
+
import { DirectionsButtonsComponent } from './directions-buttons/directions-buttons.component';
|
|
20
|
+
import { DirectionsInputsComponent } from './directions-inputs/directions-inputs.component';
|
|
21
|
+
import { DirectionsResultsComponent } from './directions-results/directions-results.component';
|
|
22
|
+
import { DirectionsSourceService } from './shared/directions-source.service';
|
|
14
23
|
import { DirectionType, ProposalType } from './shared/directions.enum';
|
|
15
24
|
import { DirectionsService } from './shared/directions.service';
|
|
16
25
|
import { addDirectionToRoutesFeatureStore, addStopToStopsFeatureStore, addStopToStore, initRoutesFeatureStore, initStepFeatureStore, initStopsFeatureStore, updateStoreSorting } from './shared/directions.utils';
|
|
17
26
|
import { RoutesFeatureStore, StepFeatureStore, StopsFeatureStore, StopsStore } from './shared/store';
|
|
18
27
|
import * as i0 from "@angular/core";
|
|
19
|
-
import * as i1 from "@
|
|
20
|
-
import * as i2 from "
|
|
21
|
-
import * as i3 from "
|
|
22
|
-
import * as i4 from "
|
|
23
|
-
import * as i5 from "
|
|
24
|
-
import * as i6 from "
|
|
25
|
-
import * as i7 from "
|
|
26
|
-
import * as i8 from "
|
|
27
|
-
import * as i9 from "@
|
|
28
|
+
import * as i1 from "@angular/common/http";
|
|
29
|
+
import * as i2 from "@igo2/core/language";
|
|
30
|
+
import * as i3 from "./shared/directions.service";
|
|
31
|
+
import * as i4 from "./shared/directions-source.service";
|
|
32
|
+
import * as i5 from "../search/shared/search.service";
|
|
33
|
+
import * as i6 from "../query/shared/query.service";
|
|
34
|
+
import * as i7 from "@igo2/core/message";
|
|
35
|
+
import * as i8 from "@angular/common";
|
|
36
|
+
import * as i9 from "@angular/material/slide-toggle";
|
|
37
|
+
import * as i10 from "@ngx-translate/core";
|
|
28
38
|
export class DirectionsComponent {
|
|
29
39
|
cdRef;
|
|
40
|
+
http;
|
|
30
41
|
languageService;
|
|
31
42
|
directionsService;
|
|
43
|
+
directionsSourceService;
|
|
32
44
|
searchService;
|
|
33
45
|
queryService;
|
|
46
|
+
messageService;
|
|
34
47
|
watcher;
|
|
35
48
|
projection = 'EPSG:4326';
|
|
49
|
+
hasOsrmPrivateAccess = false;
|
|
50
|
+
twoSourcesAvailable = false;
|
|
36
51
|
zoomRoute$$;
|
|
37
52
|
storeEmpty$$;
|
|
38
53
|
storeChange$$;
|
|
@@ -44,6 +59,7 @@ export class DirectionsComponent {
|
|
|
44
59
|
isTranslating = false;
|
|
45
60
|
previousStops = [];
|
|
46
61
|
searchs$$ = [];
|
|
62
|
+
authenticated$$;
|
|
47
63
|
contextUri;
|
|
48
64
|
stopsStore;
|
|
49
65
|
stopsFeatureStore;
|
|
@@ -53,6 +69,7 @@ export class DirectionsComponent {
|
|
|
53
69
|
length = 2;
|
|
54
70
|
coordRoundedDecimals = 6;
|
|
55
71
|
zoomToActiveRoute$ = new Subject();
|
|
72
|
+
authenticated$;
|
|
56
73
|
/**
|
|
57
74
|
* Wheter one of the direction control is active
|
|
58
75
|
* @internal
|
|
@@ -63,14 +80,38 @@ export class DirectionsComponent {
|
|
|
63
80
|
get interactions() {
|
|
64
81
|
return [this.selectStopInteraction, this.translateStop, this.selectedRoute];
|
|
65
82
|
}
|
|
66
|
-
|
|
83
|
+
get enabledProfileHasAuthorization() {
|
|
84
|
+
return this.directionsSourceService.sources[0].getEnabledProfile()
|
|
85
|
+
.authorization;
|
|
86
|
+
}
|
|
87
|
+
constructor(cdRef, http, languageService, directionsService, directionsSourceService, searchService, queryService, messageService) {
|
|
67
88
|
this.cdRef = cdRef;
|
|
89
|
+
this.http = http;
|
|
68
90
|
this.languageService = languageService;
|
|
69
91
|
this.directionsService = directionsService;
|
|
92
|
+
this.directionsSourceService = directionsSourceService;
|
|
70
93
|
this.searchService = searchService;
|
|
71
94
|
this.queryService = queryService;
|
|
95
|
+
this.messageService = messageService;
|
|
72
96
|
}
|
|
73
97
|
ngOnInit() {
|
|
98
|
+
this.authenticated$$ = this.authenticated$.subscribe((authenticated) => {
|
|
99
|
+
if (authenticated) {
|
|
100
|
+
const profileWithAuth = this.directionsSourceService.sources[0].getProfileWithAuthorization();
|
|
101
|
+
if (profileWithAuth) {
|
|
102
|
+
this.http
|
|
103
|
+
.get(profileWithAuth.authorization.url)
|
|
104
|
+
.subscribe((user) => {
|
|
105
|
+
this.hasOsrmPrivateAccess =
|
|
106
|
+
user[profileWithAuth.authorization.property];
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
this.twoSourcesAvailable =
|
|
112
|
+
this.directionsSourceService.sources[0].profiles.length === 2
|
|
113
|
+
? true
|
|
114
|
+
: false;
|
|
74
115
|
this.queryService.queryEnabled = false;
|
|
75
116
|
this.initEntityStores();
|
|
76
117
|
setTimeout(() => {
|
|
@@ -86,6 +127,7 @@ export class DirectionsComponent {
|
|
|
86
127
|
this.storeChange$$.unsubscribe();
|
|
87
128
|
this.routesQueries$$.map((u) => u.unsubscribe());
|
|
88
129
|
this.zoomRoute$$.unsubscribe();
|
|
130
|
+
this.authenticated$$.unsubscribe();
|
|
89
131
|
this.freezeStores();
|
|
90
132
|
}
|
|
91
133
|
freezeStores() {
|
|
@@ -308,10 +350,10 @@ export class DirectionsComponent {
|
|
|
308
350
|
this.routesQueries$$.map((u) => u.unsubscribe());
|
|
309
351
|
const routeResponse = this.directionsService.route(roundedCoordinates, isOverview ? overviewDirectionsOptions : undefined);
|
|
310
352
|
if (routeResponse) {
|
|
311
|
-
|
|
353
|
+
this.routesQueries$$.push(routeResponse.subscribe((directions) => {
|
|
312
354
|
this.routesFeatureStore.deleteMany(this.routesFeatureStore.all());
|
|
313
355
|
directions.map((direction) => addDirectionToRoutesFeatureStore(this.routesFeatureStore, direction, this.projection, direction === directions[0] ? true : false));
|
|
314
|
-
}))
|
|
356
|
+
}));
|
|
315
357
|
}
|
|
316
358
|
}
|
|
317
359
|
addStopOverlay(stop) {
|
|
@@ -324,13 +366,31 @@ export class DirectionsComponent {
|
|
|
324
366
|
? ol.addInteraction(interaction)
|
|
325
367
|
: ol.removeInteraction(interaction));
|
|
326
368
|
}
|
|
327
|
-
|
|
328
|
-
|
|
369
|
+
onTogglePrivateModeControl(isActive) {
|
|
370
|
+
this.directionsSourceService.sources[0].profiles.forEach((profile) => (profile.enabled = false));
|
|
371
|
+
if (isActive) {
|
|
372
|
+
this.directionsSourceService.sources[0].profiles.find((profile) => profile.authorization).enabled = true;
|
|
373
|
+
this.messageService.alert(this.languageService.translate.instant('igo.geo.directionsForm.forestRoadsWarning.text'), this.languageService.translate.instant('igo.geo.directionsForm.forestRoadsWarning.title'));
|
|
374
|
+
}
|
|
375
|
+
else {
|
|
376
|
+
this.directionsSourceService.sources[0].profiles.find((profile) => !profile.authorization).enabled = true;
|
|
377
|
+
}
|
|
378
|
+
this.getRoutes();
|
|
379
|
+
}
|
|
380
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: DirectionsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.HttpClient }, { token: i2.LanguageService }, { token: i3.DirectionsService }, { token: i4.DirectionsSourceService }, { token: i5.SearchService }, { token: i6.QueryService }, { token: i7.MessageService }], target: i0.ɵɵFactoryTarget.Component });
|
|
381
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: DirectionsComponent, isStandalone: true, selector: "igo-directions", inputs: { contextUri: "contextUri", stopsStore: "stopsStore", stopsFeatureStore: "stopsFeatureStore", routesFeatureStore: "routesFeatureStore", stepFeatureStore: "stepFeatureStore", debounce: "debounce", length: "length", coordRoundedDecimals: "coordRoundedDecimals", zoomToActiveRoute$: "zoomToActiveRoute$", authenticated$: "authenticated$" }, ngImport: i0, template: "<div class=\"directions-options\">\n <mat-slide-toggle\n [checked]=\"directionControlIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDirectionsControl($event.checked)\"\n >\n {{ 'igo.geo.directionsForm.toggleActive' | translate }}\n </mat-slide-toggle>\n <mat-slide-toggle\n *ngIf=\"hasOsrmPrivateAccess && twoSourcesAvailable\"\n [checked]=\"enabledProfileHasAuthorization\"\n [labelPosition]=\"'before'\"\n (change)=\"onTogglePrivateModeControl($event.checked)\"\n >\n {{ 'igo.geo.directionsForm.toggleType' | translate }}\n </mat-slide-toggle>\n</div>\n\n<igo-directions-buttons\n [stepFeatureStore]=\"stepFeatureStore\"\n [contextUri]=\"contextUri\"\n [zoomToActiveRoute$]=\"zoomToActiveRoute$\"\n [routesFeatureStore]=\"routesFeatureStore\"\n [stopsStore]=\"stopsStore\"\n></igo-directions-buttons>\n\n<igo-directions-inputs\n (stopInputHasFocus)=\"onStopInputHasFocusChange($event)\"\n [coordRoundedDecimals]=\"coordRoundedDecimals\"\n [projection]=\"projection\"\n [stopsFeatureStore]=\"stopsFeatureStore\"\n [stopsStore]=\"stopsStore\"\n [debounce]=\"debounce\"\n [length]=\"length\"\n></igo-directions-inputs>\n\n<igo-directions-results\n [stepFeatureStore]=\"stepFeatureStore\"\n [routesFeatureStore]=\"routesFeatureStore\"\n></igo-directions-results>\n", styles: [".directions-options mat-slide-toggle{width:100%;padding:10px}.directions-options mat-slide-toggle ::ng-deep .mdc-form-field{width:100%}.directions-options mat-slide-toggle ::ng-deep .mdc-label{margin-left:0;width:calc(100% - 60px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i9.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: DirectionsButtonsComponent, selector: "igo-directions-buttons", inputs: ["contextUri", "zoomToActiveRoute$", "stopsStore", "routesFeatureStore", "stepFeatureStore"] }, { kind: "component", type: DirectionsInputsComponent, selector: "igo-directions-inputs", inputs: ["stopsStore", "stopsFeatureStore", "projection", "coordRoundedDecimals", "debounce", "length"], outputs: ["stopInputHasFocus"] }, { kind: "component", type: DirectionsResultsComponent, selector: "igo-directions-results", inputs: ["routesFeatureStore", "stepFeatureStore"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }] });
|
|
329
382
|
}
|
|
330
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
383
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: DirectionsComponent, decorators: [{
|
|
331
384
|
type: Component,
|
|
332
|
-
args: [{ selector: 'igo-directions',
|
|
333
|
-
|
|
385
|
+
args: [{ selector: 'igo-directions', standalone: true, imports: [
|
|
386
|
+
CommonModule,
|
|
387
|
+
MatSlideToggleModule,
|
|
388
|
+
DirectionsButtonsComponent,
|
|
389
|
+
DirectionsInputsComponent,
|
|
390
|
+
DirectionsResultsComponent,
|
|
391
|
+
IgoLanguageModule
|
|
392
|
+
], template: "<div class=\"directions-options\">\n <mat-slide-toggle\n [checked]=\"directionControlIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDirectionsControl($event.checked)\"\n >\n {{ 'igo.geo.directionsForm.toggleActive' | translate }}\n </mat-slide-toggle>\n <mat-slide-toggle\n *ngIf=\"hasOsrmPrivateAccess && twoSourcesAvailable\"\n [checked]=\"enabledProfileHasAuthorization\"\n [labelPosition]=\"'before'\"\n (change)=\"onTogglePrivateModeControl($event.checked)\"\n >\n {{ 'igo.geo.directionsForm.toggleType' | translate }}\n </mat-slide-toggle>\n</div>\n\n<igo-directions-buttons\n [stepFeatureStore]=\"stepFeatureStore\"\n [contextUri]=\"contextUri\"\n [zoomToActiveRoute$]=\"zoomToActiveRoute$\"\n [routesFeatureStore]=\"routesFeatureStore\"\n [stopsStore]=\"stopsStore\"\n></igo-directions-buttons>\n\n<igo-directions-inputs\n (stopInputHasFocus)=\"onStopInputHasFocusChange($event)\"\n [coordRoundedDecimals]=\"coordRoundedDecimals\"\n [projection]=\"projection\"\n [stopsFeatureStore]=\"stopsFeatureStore\"\n [stopsStore]=\"stopsStore\"\n [debounce]=\"debounce\"\n [length]=\"length\"\n></igo-directions-inputs>\n\n<igo-directions-results\n [stepFeatureStore]=\"stepFeatureStore\"\n [routesFeatureStore]=\"routesFeatureStore\"\n></igo-directions-results>\n", styles: [".directions-options mat-slide-toggle{width:100%;padding:10px}.directions-options mat-slide-toggle ::ng-deep .mdc-form-field{width:100%}.directions-options mat-slide-toggle ::ng-deep .mdc-label{margin-left:0;width:calc(100% - 60px)}\n"] }]
|
|
393
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.HttpClient }, { type: i2.LanguageService }, { type: i3.DirectionsService }, { type: i4.DirectionsSourceService }, { type: i5.SearchService }, { type: i6.QueryService }, { type: i7.MessageService }], propDecorators: { contextUri: [{
|
|
334
394
|
type: Input
|
|
335
395
|
}], stopsStore: [{
|
|
336
396
|
type: Input
|
|
@@ -348,5 +408,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
348
408
|
type: Input
|
|
349
409
|
}], zoomToActiveRoute$: [{
|
|
350
410
|
type: Input
|
|
411
|
+
}], authenticated$: [{
|
|
412
|
+
type: Input
|
|
351
413
|
}] } });
|
|
352
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kaXJlY3Rpb25zL2RpcmVjdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZGlyZWN0aW9ucy9kaXJlY3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULEtBQUssRUFHTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUd2RCxPQUFPLEtBQUssV0FBVyxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxhQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFHaEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFFbEMsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFN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SSxDQUFDLGlCQUFpQixFQUN0QixJQUFJLENBQUMsVUFBVSxFQUNmLElBQUksQ0FBQyxlQUFlLENBQ3JCLENBQUM7SUFDSixDQUFDO0lBRUQseUJBQXlCLENBQUMsUUFBaUI7UUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDM0MsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FDcEMsUUFBUTtZQUNOLENBQUMsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQztZQUNoQyxDQUFDLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUN0QyxDQUFDO0lBQ0osQ0FBQzt3R0E5WVUsbUJBQW1COzRGQUFuQixtQkFBbUIsOFdDeERoQyx1akNBZ0NBOzs0RkR3QmEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGdCQUFnQjs2TkF3QmpCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRW50aXR5U3RvcmVXYXRjaGVyIH0gZnJvbSAnQGlnbzIvY29tbW9uJztcclxuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcbmltcG9ydCB7IENoYW5nZVV0aWxzLCBPYmplY3RVdGlscyB9IGZyb20gJ0BpZ28yL3V0aWxzJztcclxuXHJcbmltcG9ydCBDb2xsZWN0aW9uIGZyb20gJ29sL0NvbGxlY3Rpb24nO1xyXG5pbXBvcnQgKiBhcyBvbENvbmRpdGlvbiBmcm9tICdvbC9ldmVudHMvY29uZGl0aW9uJztcclxuaW1wb3J0ICogYXMgb2xJbnRlcmFjdGlvbiBmcm9tICdvbC9pbnRlcmFjdGlvbic7XHJcbmltcG9ydCB7IFNlbGVjdEV2ZW50IH0gZnJvbSAnb2wvaW50ZXJhY3Rpb24vU2VsZWN0JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlRXZlbnQgfSBmcm9tICdvbC9pbnRlcmFjdGlvbi9UcmFuc2xhdGUnO1xyXG5pbXBvcnQgKiBhcyBvbFByb2ogZnJvbSAnb2wvcHJvaic7XHJcblxyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gJy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUuaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEZlYXR1cmVTdG9yZUxvYWRpbmdTdHJhdGVneSB9IGZyb20gJy4uL2ZlYXR1cmUvc2hhcmVkL3N0cmF0ZWdpZXMvbG9hZGluZyc7XHJcbmltcG9ydCB7IHJvdW5kQ29vcmRUbywgc3RyaW5nVG9Mb25MYXQgfSBmcm9tICcuLi9tYXAnO1xyXG5pbXBvcnQgeyBRdWVyeVNlcnZpY2UgfSBmcm9tICcuLi9xdWVyeS9zaGFyZWQvcXVlcnkuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlc2VhcmNoLCBTZWFyY2hSZXN1bHQgfSBmcm9tICcuLi9zZWFyY2gvc2hhcmVkL3NlYXJjaC5pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgU2VhcmNoU2VydmljZSB9IGZyb20gJy4uL3NlYXJjaC9zaGFyZWQvc2VhcmNoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb25UeXBlLCBQcm9wb3NhbFR5cGUgfSBmcm9tICcuL3NoYXJlZC9kaXJlY3Rpb25zLmVudW0nO1xyXG5pbXBvcnQge1xyXG4gIERpcmVjdGlvbk9wdGlvbnMsXHJcbiAgRmVhdHVyZVdpdGhTdG9wUHJvcGVydGllcyxcclxuICBTdG9wXHJcbn0gZnJvbSAnLi9zaGFyZWQvZGlyZWN0aW9ucy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb25zU2VydmljZSB9IGZyb20gJy4vc2hhcmVkL2RpcmVjdGlvbnMuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgYWRkRGlyZWN0aW9uVG9Sb3V0ZXNGZWF0dXJlU3RvcmUsXHJcbiAgYWRkU3RvcFRvU3RvcHNGZWF0dXJlU3RvcmUsXHJcbiAgYWRkU3RvcFRvU3RvcmUsXHJcbiAgaW5pdFJvdXRlc0ZlYXR1cmVTdG9yZSxcclxuICBpbml0U3RlcEZlYXR1cmVTdG9yZSxcclxuICBpbml0U3RvcHNGZWF0dXJlU3RvcmUsXHJcbiAgdXBkYXRlU3RvcmVTb3J0aW5nXHJcbn0gZnJvbSAnLi9zaGFyZWQvZGlyZWN0aW9ucy51dGlscyc7XHJcbmltcG9ydCB7XHJcbiAgUm91dGVzRmVhdHVyZVN0b3JlLFxyXG4gIFN0ZXBGZWF0dXJlU3RvcmUsXHJcbiAgU3RvcHNGZWF0dXJlU3RvcmUsXHJcbiAgU3RvcHNTdG9yZVxyXG59IGZyb20gJy4vc2hhcmVkL3N0b3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWdvLWRpcmVjdGlvbnMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kaXJlY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kaXJlY3Rpb25zLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIERpcmVjdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSB3YXRjaGVyOiBFbnRpdHlTdG9yZVdhdGNoZXI8U3RvcD47XHJcblxyXG4gIHB1YmxpYyBwcm9qZWN0aW9uOiBzdHJpbmcgPSAnRVBTRzo0MzI2JztcclxuXHJcbiAgcHJpdmF0ZSB6b29tUm91dGUkJDogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgc3RvcmVFbXB0eSQkOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBzdG9yZUNoYW5nZSQkOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSByb3V0ZXNRdWVyaWVzJCQ6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIHByaXZhdGUgc2VsZWN0U3RvcEludGVyYWN0aW9uOiBvbEludGVyYWN0aW9uLlNlbGVjdDtcclxuICBwcml2YXRlIHRyYW5zbGF0ZVN0b3A6IG9sSW50ZXJhY3Rpb24uVHJhbnNsYXRlO1xyXG4gIHByaXZhdGUgc2VsZWN0ZWRSb3V0ZTogb2xJbnRlcmFjdGlvbi5TZWxlY3Q7XHJcbiAgcHJpdmF0ZSBmb2N1c09uU3RvcDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgaXNUcmFuc2xhdGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgcHJldmlvdXNTdG9wczogU3RvcFtdID0gW107XHJcblxyXG4gIHByaXZhdGUgc2VhcmNocyQkOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBjb250ZXh0VXJpOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc3RvcHNTdG9yZTogU3RvcHNTdG9yZTtcclxuICBASW5wdXQoKSBzdG9wc0ZlYXR1cmVTdG9yZTogU3RvcHNGZWF0dXJlU3RvcmU7XHJcbiAgQElucHV0KCkgcm91dGVzRmVhdHVyZVN0b3JlOiBSb3V0ZXNGZWF0dXJlU3RvcmU7XHJcbiAgQElucHV0KCkgc3RlcEZlYXR1cmVTdG9yZTogU3RlcEZlYXR1cmVTdG9yZTtcclxuICBASW5wdXQoKSBkZWJvdW5jZTogbnVtYmVyID0gMjAwO1xyXG4gIEBJbnB1dCgpIGxlbmd0aDogbnVtYmVyID0gMjtcclxuICBASW5wdXQoKSBjb29yZFJvdW5kZWREZWNpbWFsczogbnVtYmVyID0gNjtcclxuICBASW5wdXQoKSB6b29tVG9BY3RpdmVSb3V0ZSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0ZXIgb25lIG9mIHRoZSBkaXJlY3Rpb24gY29udHJvbCBpcyBhY3RpdmVcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBnZXQgZGlyZWN0aW9uQ29udHJvbElzQWN0aXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLnF1ZXJ5U2VydmljZS5xdWVyeUVuYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgaW50ZXJhY3Rpb25zKCk6IG9sSW50ZXJhY3Rpb24uSW50ZXJhY3Rpb25bXSB7XHJcbiAgICByZXR1cm4gW3RoaXMuc2VsZWN0U3RvcEludGVyYWN0aW9uLCB0aGlzLnRyYW5zbGF0ZVN0b3AsIHRoaXMuc2VsZWN0ZWRSb3V0ZV07XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgZGlyZWN0aW9uc1NlcnZpY2U6IERpcmVjdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBxdWVyeVNlcnZpY2U6IFF1ZXJ5U2VydmljZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnF1ZXJ5U2VydmljZS5xdWVyeUVuYWJsZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaW5pdEVudGl0eVN0b3JlcygpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGluaXRTdG9wc0ZlYXR1cmVTdG9yZSh0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLCB0aGlzLmxhbmd1YWdlU2VydmljZSk7XHJcbiAgICAgIGluaXRSb3V0ZXNGZWF0dXJlU3RvcmUodGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUsIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlKTtcclxuICAgICAgaW5pdFN0ZXBGZWF0dXJlU3RvcmUodGhpcy5zdGVwRmVhdHVyZVN0b3JlKTtcclxuICAgICAgdGhpcy5pbml0T2xJbnRlcmFjdGlvbigpO1xyXG4gICAgfSwgMSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucXVlcnlTZXJ2aWNlLnF1ZXJ5RW5hYmxlZCA9IHRydWU7XHJcbiAgICB0aGlzLnN0b3JlRW1wdHkkJC51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5zdG9yZUNoYW5nZSQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnJvdXRlc1F1ZXJpZXMkJC5tYXAoKHUpID0+IHUudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLnpvb21Sb3V0ZSQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmZyZWV6ZVN0b3JlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmcmVlemVTdG9yZXMoKSB7XHJcbiAgICB0aGlzLmludGVyYWN0aW9ucy5tYXAoKGludGVyYWN0aW9uKSA9PlxyXG4gICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAub2wucmVtb3ZlSW50ZXJhY3Rpb24oaW50ZXJhY3Rpb24pXHJcbiAgICApO1xyXG4gICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZS5kZWFjdGl2YXRlU3RyYXRlZ3lPZlR5cGUoXHJcbiAgICAgIEZlYXR1cmVTdG9yZUxvYWRpbmdTdHJhdGVneVxyXG4gICAgKTtcclxuICAgIHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmRlYWN0aXZhdGVTdHJhdGVneU9mVHlwZShcclxuICAgICAgRmVhdHVyZVN0b3JlTG9hZGluZ1N0cmF0ZWd5XHJcbiAgICApO1xyXG4gICAgdGhpcy5zdGVwRmVhdHVyZVN0b3JlLmRlYWN0aXZhdGVTdHJhdGVneU9mVHlwZShGZWF0dXJlU3RvcmVMb2FkaW5nU3RyYXRlZ3kpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0RW50aXR5U3RvcmVzKCkge1xyXG4gICAgdGhpcy53YXRjaGVyID0gbmV3IEVudGl0eVN0b3JlV2F0Y2hlcih0aGlzLnN0b3BzU3RvcmUsIHRoaXMuY2RSZWYpO1xyXG4gICAgdGhpcy5tb25pdG9yRW1wdHlFbnRpdHlTdG9yZSgpO1xyXG4gICAgdGhpcy5tb25pdG9yRW50aXR5U3RvcmVDaGFuZ2UoKTtcclxuICAgIHRoaXMubW9uaXRvckFjdGl2ZVJvdXRlWm9vbSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtb25pdG9yQWN0aXZlUm91dGVab29tKCkge1xyXG4gICAgdGhpcy56b29tUm91dGUkJCA9IHRoaXMuem9vbVRvQWN0aXZlUm91dGUkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5jb3VudCA+PSAxKSB7XHJcbiAgICAgICAgY29uc3QgYWN0aXZlUm91dGUgPSB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZVxyXG4gICAgICAgICAgLmFsbCgpXHJcbiAgICAgICAgICAuZmluZCgocm91dGUpID0+IHJvdXRlLnByb3BlcnRpZXMuYWN0aXZlKTtcclxuXHJcbiAgICAgICAgaWYgKGFjdGl2ZVJvdXRlKSB7XHJcbiAgICAgICAgICBhY3RpdmVSb3V0ZS5vbC5nZXRHZW9tZXRyeSgpO1xyXG4gICAgICAgICAgY29uc3Qgcm91dGVFeHRlbnQgPSBhY3RpdmVSb3V0ZS5vbC5nZXRHZW9tZXRyeSgpLmdldEV4dGVudCgpO1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLnZpZXdDb250cm9sbGVyLnpvb21Ub0V4dGVudChcclxuICAgICAgICAgICAgcm91dGVFeHRlbnQgYXMgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdE9sSW50ZXJhY3Rpb24oKSB7XHJcbiAgICB0aGlzLnNlbGVjdFN0b3BJbnRlcmFjdGlvbiA9IG5ldyBvbEludGVyYWN0aW9uLlNlbGVjdCh7XHJcbiAgICAgIGxheWVyczogW3RoaXMuc3RvcHNGZWF0dXJlU3RvcmUubGF5ZXIub2xdLFxyXG4gICAgICBoaXRUb2xlcmFuY2U6IDcsXHJcbiAgICAgIGNvbmRpdGlvbjogKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGV2ZW50LnR5cGUgPT09ICdwb2ludGVybW92ZScgJiYgIWV2ZW50LmRyYWdnaW5nO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnRyYW5zbGF0ZVN0b3AgPSBuZXcgb2xJbnRlcmFjdGlvbi5UcmFuc2xhdGUoe1xyXG4gICAgICBmZWF0dXJlczogdGhpcy5zZWxlY3RTdG9wSW50ZXJhY3Rpb24uZ2V0RmVhdHVyZXMoKVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVN0b3Aub24oJ3RyYW5zbGF0aW5nJywgKGV2dDogVHJhbnNsYXRlRXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5pc1RyYW5zbGF0aW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5leGVjdXRlU3RvcFRyYW5zbGF0aW9uKGV2dC5mZWF0dXJlcyk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMudHJhbnNsYXRlU3RvcC5vbigndHJhbnNsYXRlZW5kJywgKGV2dDogVHJhbnNsYXRlRXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5pc1RyYW5zbGF0aW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZXhlY3V0ZVN0b3BUcmFuc2xhdGlvbihldnQuZmVhdHVyZXMpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZFJvdXRlID0gbmV3IG9sSW50ZXJhY3Rpb24uU2VsZWN0KHtcclxuICAgICAgbGF5ZXJzOiBbdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIub2xdLFxyXG4gICAgICBjb25kaXRpb246IG9sQ29uZGl0aW9uLmNsaWNrLFxyXG4gICAgICBoaXRUb2xlcmFuY2U6IDcsXHJcbiAgICAgIGZpbHRlcjogKGZlYXR1cmUpID0+IHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgZmVhdHVyZS5nZXQoJ3R5cGUnKSA9PT0gRGlyZWN0aW9uVHlwZS5Sb3V0ZSAmJlxyXG4gICAgICAgICAgZmVhdHVyZS5nZXQoJ2FjdGl2ZScpICYmXHJcbiAgICAgICAgICAhdGhpcy5pc1RyYW5zbGF0aW5nXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm91dGUub24oJ3NlbGVjdCcsIChldnQ6IFNlbGVjdEV2ZW50KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmZvY3VzT25TdG9wID09PSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdENvb3JkaW5hdGVzID0gcm91bmRDb29yZFRvKFxyXG4gICAgICAgICAgb2xQcm9qLnRyYW5zZm9ybShcclxuICAgICAgICAgICAgKGV2dCBhcyBhbnkpLm1hcEJyb3dzZXJFdmVudC5jb29yZGluYXRlLFxyXG4gICAgICAgICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAucHJvamVjdGlvbixcclxuICAgICAgICAgICAgdGhpcy5wcm9qZWN0aW9uXHJcbiAgICAgICAgICApIGFzIFtudW1iZXIsIG51bWJlcl0sXHJcbiAgICAgICAgICB0aGlzLmNvb3JkUm91bmRlZERlY2ltYWxzXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBhZGRlZFN0b3AgPSBhZGRTdG9wVG9TdG9yZSh0aGlzLnN0b3BzU3RvcmUpO1xyXG4gICAgICAgIGFkZGVkU3RvcC50ZXh0ID0gc2VsZWN0Q29vcmRpbmF0ZXMuam9pbignLCcpO1xyXG4gICAgICAgIGFkZGVkU3RvcC5jb29yZGluYXRlcyA9IFtzZWxlY3RDb29yZGluYXRlc1swXSwgc2VsZWN0Q29vcmRpbmF0ZXNbMV1dO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmludGVyYWN0aW9ucy5tYXAoKGludGVyYWN0aW9uKSA9PlxyXG4gICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAub2wuYWRkSW50ZXJhY3Rpb24oaW50ZXJhY3Rpb24pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25TdG9wSW5wdXRIYXNGb2N1c0NoYW5nZShzdG9wSW5wdXRIYXNGb2N1czogYm9vbGVhbikge1xyXG4gICAgc3RvcElucHV0SGFzRm9jdXNcclxuICAgICAgPyB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAub2wucmVtb3ZlSW50ZXJhY3Rpb24oXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm91dGVcclxuICAgICAgICApXHJcbiAgICAgIDogdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLm9sLmFkZEludGVyYWN0aW9uKHRoaXMuc2VsZWN0ZWRSb3V0ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4ZWN1dGVTdG9wVHJhbnNsYXRpb24oZmVhdHVyZXM6IENvbGxlY3Rpb248YW55Pikge1xyXG4gICAgaWYgKGZlYXR1cmVzLmdldExlbmd0aCgpID09PSAwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZpcnN0RmVhdHVyZSA9IGZlYXR1cmVzLmdldEFycmF5KClbMF07XHJcbiAgICBjb25zdCB0cmFuc2xhdGVkU3RvcElkID0gZmlyc3RGZWF0dXJlLmdldElkKCk7XHJcblxyXG4gICAgY29uc3QgdHJhbnNsYXRpb25Db29yZGluYXRlcyA9IG9sUHJvai50cmFuc2Zvcm0oXHJcbiAgICAgIGZpcnN0RmVhdHVyZS5nZXRHZW9tZXRyeSgpLmdldENvb3JkaW5hdGVzKCksXHJcbiAgICAgIHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLnByb2plY3Rpb24sXHJcbiAgICAgIHRoaXMucHJvamVjdGlvblxyXG4gICAgKTtcclxuICAgIGNvbnN0IHRyYW5zbGF0ZWRTdG9wID0gdGhpcy5zdG9wc1N0b3JlLmdldCh0cmFuc2xhdGVkU3RvcElkKTtcclxuICAgIGNvbnN0IHJvdW5kZWRDb29yZCA9IHJvdW5kQ29vcmRUbyhcclxuICAgICAgdHJhbnNsYXRpb25Db29yZGluYXRlcyBhcyBbbnVtYmVyLCBudW1iZXJdLFxyXG4gICAgICB0aGlzLmNvb3JkUm91bmRlZERlY2ltYWxzXHJcbiAgICApO1xyXG4gICAgdHJhbnNsYXRlZFN0b3AuY29vcmRpbmF0ZXMgPSByb3VuZGVkQ29vcmQ7XHJcbiAgICB0cmFuc2xhdGVkU3RvcC50ZXh0ID0gcm91bmRlZENvb3JkLmpvaW4oJywnKTtcclxuICAgIHRoaXMuc3RvcHNTdG9yZS51cGRhdGUodHJhbnNsYXRlZFN0b3ApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtb25pdG9yRW1wdHlFbnRpdHlTdG9yZSgpIHtcclxuICAgIC8vIFdhdGNoIGlmIHRoZSBzdG9yZSBpcyBlbXB0eSB0byByZXNldCBpdFxyXG4gICAgdGhpcy5zdG9yZUVtcHR5JCQgPSB0aGlzLnN0b3BzU3RvcmUuY291bnQkXHJcbiAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGNvdW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGNvdW50IDwgMikge1xyXG4gICAgICAgICAgYWRkU3RvcFRvU3RvcmUodGhpcy5zdG9wc1N0b3JlKTtcclxuICAgICAgICAgIGlmICh0aGlzLnN0b3BzU3RvcmUuY291bnQgPT09IDIpIHtcclxuICAgICAgICAgICAgdGhpcy5zdG9wc1N0b3JlLnN0b3JlSW5pdGlhbGl6ZWQkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc3RvcHNTdG9yZS5zdG9yZUluaXRpYWxpemVkJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yb3V0ZXNRdWVyaWVzJCQubWFwKCh1KSA9PiB1LnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbW9uaXRvckVudGl0eVN0b3JlQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5zdG9yZUNoYW5nZSQkID0gdGhpcy5zdG9wc1N0b3JlLmVudGl0aWVzJFxyXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHN0b3BzOiBTdG9wW10pID0+IHtcclxuICAgICAgICB0aGlzLmhhbmRsZVN0b3BEaWZmKHN0b3BzKTtcclxuICAgICAgICB1cGRhdGVTdG9yZVNvcnRpbmcodGhpcy5zdG9wc1N0b3JlKTtcclxuICAgICAgICB0aGlzLmhhbmRsZVN0b3BzRmVhdHVyZSgpO1xyXG4gICAgICAgIHRoaXMuZ2V0Um91dGVzKHRoaXMuaXNUcmFuc2xhdGluZyk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsU2VhcmNoKCkge1xyXG4gICAgdGhpcy5zZWFyY2hzJCQubWFwKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVTdG9wRGlmZihzdG9wczogU3RvcFtdKSB7XHJcbiAgICBjb25zdCBzaW1wbGlmaWVkU3RvcHMgPSBzdG9wcy5tYXAoKHN0b3A6IFN0b3ApID0+IHtcclxuICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLnJlbW92ZVVuZGVmaW5lZCh7XHJcbiAgICAgICAgLi4ueyBpZDogc3RvcC5pZCwgdGV4dDogc3RvcC50ZXh0LCBjb29yZGluYXRlczogc3RvcC5jb29yZGluYXRlcyB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBkaWZmID0gQ2hhbmdlVXRpbHMuZmluZENoYW5nZXModGhpcy5wcmV2aW91c1N0b3BzLCBzaW1wbGlmaWVkU3RvcHMsIFtcclxuICAgICAgJ2Nvb3JkaW5hdGVzJ1xyXG4gICAgXSk7XHJcbiAgICBjb25zdCBzdG9wSWRUb1Byb2Nlc3MgPSBkaWZmLmFkZGVkLmNvbmNhdChkaWZmLm1vZGlmaWVkKTtcclxuICAgIGlmIChzdG9wSWRUb1Byb2Nlc3MpIHtcclxuICAgICAgc3RvcElkVG9Qcm9jZXNzLm1hcCgoY2hhbmdlKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY2hhbmdlZFN0b3AgPSBjaGFuZ2UubmV3VmFsdWUgYXMgU3RvcDtcclxuICAgICAgICBpZiAoY2hhbmdlZFN0b3ApIHtcclxuICAgICAgICAgIGNvbnN0IHN0b3A6IFN0b3AgPSB0aGlzLnN0b3BzU3RvcmUuZ2V0KGNoYW5nZWRTdG9wLmlkKTtcclxuICAgICAgICAgIGNvbnN0IHRlcm0gPSBzdG9wLnRleHQ7XHJcbiAgICAgICAgICBpZiAoIXRlcm0gfHwgdGVybS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBzdHJpbmdUb0xvbkxhdChcclxuICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAucHJvamVjdGlvblxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGxldCByZXNlYXJjaGVzOiBSZXNlYXJjaFtdO1xyXG4gICAgICAgICAgbGV0IGlzQ29vcmQgPSBmYWxzZTtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5sb25MYXQpIHtcclxuICAgICAgICAgICAgaXNDb29yZCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXNlYXJjaGVzID0gdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaCh0ZXJtLCB7XHJcbiAgICAgICAgICAgIHNlYXJjaFR5cGU6ICdGZWF0dXJlJ1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNhbmNlbFNlYXJjaCgpO1xyXG4gICAgICAgICAgY29uc3QgcmVxdWVzdHMkID0gcmVzZWFyY2hlcy5tYXAoKHJlcykgPT5cclxuICAgICAgICAgICAgcmVzLnJlcXVlc3QucGlwZShcclxuICAgICAgICAgICAgICBtYXAoKHJlc3VsdHM6IFNlYXJjaFJlc3VsdFtdKSA9PlxyXG4gICAgICAgICAgICAgICAgcmVzdWx0cy5maWx0ZXIoKHIpID0+XHJcbiAgICAgICAgICAgICAgICAgIGlzQ29vcmRcclxuICAgICAgICAgICAgICAgICAgICA/IHIuZGF0YS5nZW9tZXRyeS50eXBlID09PSAnUG9pbnQnICYmIHIuZGF0YS5nZW9tZXRyeVxyXG4gICAgICAgICAgICAgICAgICAgIDogci5kYXRhLmdlb21ldHJ5XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hzJCQgPSByZXF1ZXN0cyQubWFwKChyZXF1ZXN0KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXF1ZXN0XHJcbiAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3VsdHM6IFNlYXJjaFJlc3VsdFtdKSA9PlxyXG4gICAgICAgICAgICAgICAgICByZXN1bHRzLmZpbHRlcigocikgPT5cclxuICAgICAgICAgICAgICAgICAgICBpc0Nvb3JkXHJcbiAgICAgICAgICAgICAgICAgICAgICA/IHIuZGF0YS5nZW9tZXRyeS50eXBlID09PSAnUG9pbnQnICYmIHIuZGF0YS5nZW9tZXRyeVxyXG4gICAgICAgICAgICAgICAgICAgICAgOiByLmRhdGEuZ2VvbWV0cnlcclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXM6IFNlYXJjaFJlc3VsdFtdKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgY29uc3Qgc291cmNlID0gcmVzWzBdLnNvdXJjZTtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgbWV0YSA9IHJlc1swXS5tZXRhO1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHRzID0gcmVzLm1hcCgocikgPT4gci5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKCFzdG9wLnNlYXJjaFByb3Bvc2Fscykge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0b3Auc2VhcmNoUHJvcG9zYWxzID0gW107XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgc3RvcC5zZWFyY2hQcm9wb3NhbHMgPSBzdG9wLnNlYXJjaFByb3Bvc2Fscy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgKHNwKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3AudHlwZSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAgIChpc0Nvb3JkID8gUHJvcG9zYWxUeXBlLkNvb3JkIDogUHJvcG9zYWxUeXBlLlRleHQpXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBzdG9yZWRTb3VyY2UgPSBzdG9wLnNlYXJjaFByb3Bvc2Fscy5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgIChzcCkgPT4gc3Auc291cmNlID09PSBzb3VyY2VcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKHN0b3JlZFNvdXJjZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0b3JlZFNvdXJjZS5yZXN1bHRzID0gcmVzdWx0cztcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBzdG9wLnNlYXJjaFByb3Bvc2Fscy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGlzQ29vcmQgPyBQcm9wb3NhbFR5cGUuQ29vcmQgOiBQcm9wb3NhbFR5cGUuVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSxcclxuICAgICAgICAgICAgICAgICAgICAgIG1ldGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMucHJldmlvdXNTdG9wcyA9IHNpbXBsaWZpZWRTdG9wcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlU3RvcHNGZWF0dXJlKCkge1xyXG4gICAgY29uc3Qgc3RvcHMgPSB0aGlzLnN0b3BzU3RvcmUuYWxsKCk7XHJcbiAgICBjb25zdCBzdG9wc1dpdGhDb29yZGluYXRlcyA9IHN0b3BzLmZpbHRlcigoc3RvcCkgPT4gc3RvcC5jb29yZGluYXRlcyk7XHJcbiAgICBzdG9wc1dpdGhDb29yZGluYXRlcy5tYXAoKHN0b3ApID0+IHRoaXMuYWRkU3RvcE92ZXJsYXkoc3RvcCkpO1xyXG4gICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZVxyXG4gICAgICAuYWxsKClcclxuICAgICAgLm1hcCgoc3RvcEZlYXR1cmU6IEZlYXR1cmU8RmVhdHVyZVdpdGhTdG9wUHJvcGVydGllcz4pID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuc3RvcHNTdG9yZS5nZXQoc3RvcEZlYXR1cmUucHJvcGVydGllcy5pZCkpIHtcclxuICAgICAgICAgIHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUuZGVsZXRlKHN0b3BGZWF0dXJlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgY29uc3Qgc3RvcHNXaXRob3V0Q29vcmRpbmF0ZXMgPSBzdG9wcy5maWx0ZXIoKHN0b3ApID0+ICFzdG9wLmNvb3JkaW5hdGVzKTtcclxuICAgIHN0b3BzV2l0aG91dENvb3JkaW5hdGVzLm1hcCgoc3RvcCkgPT4ge1xyXG4gICAgICBjb25zdCBzdG9wRmVhdHVyZSA9IHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUuZ2V0KHN0b3AuaWQpO1xyXG4gICAgICBpZiAoc3RvcEZlYXR1cmUpIHtcclxuICAgICAgICB0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLmRlbGV0ZShzdG9wRmVhdHVyZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSb3V0ZXMoaXNPdmVydmlldzogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBzdG9wc1dpdGhDb29yZGluYXRlcyA9IHRoaXMuc3RvcHNTdG9yZS52aWV3XHJcbiAgICAgIC5hbGwoKVxyXG4gICAgICAuZmlsdGVyKChzdG9wKSA9PiBzdG9wLmNvb3JkaW5hdGVzKTtcclxuICAgIGlmIChzdG9wc1dpdGhDb29yZGluYXRlcy5sZW5ndGggPCAyKSB7XHJcbiAgICAgIHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmRlbGV0ZU1hbnkodGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUuYWxsKCkpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgcm91bmRlZENvb3JkaW5hdGVzID0gc3RvcHNXaXRoQ29vcmRpbmF0ZXMubWFwKChzdG9wKSA9PiB7XHJcbiAgICAgIGNvbnN0IHJvdW5kZWRDb29yZCA9IHJvdW5kQ29vcmRUbyhcclxuICAgICAgICBzdG9wLmNvb3JkaW5hdGVzLFxyXG4gICAgICAgIHRoaXMuY29vcmRSb3VuZGVkRGVjaW1hbHNcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIHJvdW5kZWRDb29yZDtcclxuICAgIH0pO1xyXG4gICAgY29uc3Qgb3ZlcnZpZXdEaXJlY3Rpb25zT3B0aW9uczogRGlyZWN0aW9uT3B0aW9ucyA9IHtcclxuICAgICAgb3ZlcnZpZXc6IHRydWUsXHJcbiAgICAgIHN0ZXBzOiBmYWxzZSxcclxuICAgICAgYWx0ZXJuYXRpdmVzOiBmYWxzZSxcclxuICAgICAgY29udGludWVfc3RyYWlnaHQ6IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5yb3V0ZXNRdWVyaWVzJCQubWFwKCh1KSA9PiB1LnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgY29uc3Qgcm91dGVSZXNwb25zZSA9IHRoaXMuZGlyZWN0aW9uc1NlcnZpY2Uucm91dGUoXHJcbiAgICAgIHJvdW5kZWRDb29yZGluYXRlcyxcclxuICAgICAgaXNPdmVydmlldyA/IG92ZXJ2aWV3RGlyZWN0aW9uc09wdGlvbnMgOiB1bmRlZmluZWRcclxuICAgICk7XHJcbiAgICBpZiAocm91dGVSZXNwb25zZSkge1xyXG4gICAgICByb3V0ZVJlc3BvbnNlLm1hcCgocmVzKSA9PlxyXG4gICAgICAgIHRoaXMucm91dGVzUXVlcmllcyQkLnB1c2goXHJcbiAgICAgICAgICByZXMuc3Vic2NyaWJlKChkaXJlY3Rpb25zKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmRlbGV0ZU1hbnkodGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUuYWxsKCkpO1xyXG4gICAgICAgICAgICBkaXJlY3Rpb25zLm1hcCgoZGlyZWN0aW9uKSA9PlxyXG4gICAgICAgICAgICAgIGFkZERpcmVjdGlvblRvUm91dGVzRmVhdHVyZVN0b3JlKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUsXHJcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24sXHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb2plY3Rpb24sXHJcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPT09IGRpcmVjdGlvbnNbMF0gPyB0cnVlIDogZmFsc2VcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRTdG9wT3ZlcmxheShzdG9wOiBTdG9wKSB7XHJcbiAgICBhZGRTdG9wVG9TdG9wc0ZlYXR1cmVTdG9yZShcclxuICAgICAgc3RvcCxcclxuICAgICAgdGhpcy5zdG9wc1N0b3JlLFxyXG4gICAgICB0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLFxyXG4gICAgICB0aGlzLnByb2plY3Rpb24sXHJcbiAgICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25Ub2dnbGVEaXJlY3Rpb25zQ29udHJvbChpc0FjdGl2ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5xdWVyeVNlcnZpY2UucXVlcnlFbmFibGVkID0gIWlzQWN0aXZlO1xyXG4gICAgY29uc3Qgb2wgPSB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAub2w7XHJcbiAgICB0aGlzLmludGVyYWN0aW9ucy5tYXAoKGludGVyYWN0aW9uKSA9PlxyXG4gICAgICBpc0FjdGl2ZVxyXG4gICAgICAgID8gb2wuYWRkSW50ZXJhY3Rpb24oaW50ZXJhY3Rpb24pXHJcbiAgICAgICAgOiBvbC5yZW1vdmVJbnRlcmFjdGlvbihpbnRlcmFjdGlvbilcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkaXJlY3Rpb25zLW9wdGlvbnNcIj5cclxuICA8bWF0LXNsaWRlLXRvZ2dsZVxyXG4gICAgW2NoZWNrZWRdPVwiZGlyZWN0aW9uQ29udHJvbElzQWN0aXZlXCJcclxuICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCJcclxuICAgIChjaGFuZ2UpPVwib25Ub2dnbGVEaXJlY3Rpb25zQ29udHJvbCgkZXZlbnQuY2hlY2tlZClcIlxyXG4gID5cclxuICAgIHt7ICdpZ28uZ2VvLmRpcmVjdGlvbnNGb3JtLnRvZ2dsZUFjdGl2ZScgfCB0cmFuc2xhdGUgfX1cclxuICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbjwvZGl2PlxyXG5cclxuPGlnby1kaXJlY3Rpb25zLWJ1dHRvbnNcclxuICBbc3RlcEZlYXR1cmVTdG9yZV09XCJzdGVwRmVhdHVyZVN0b3JlXCJcclxuICBbY29udGV4dFVyaV09XCJjb250ZXh0VXJpXCJcclxuICBbem9vbVRvQWN0aXZlUm91dGUkXT1cInpvb21Ub0FjdGl2ZVJvdXRlJFwiXHJcbiAgW3JvdXRlc0ZlYXR1cmVTdG9yZV09XCJyb3V0ZXNGZWF0dXJlU3RvcmVcIlxyXG4gIFtzdG9wc1N0b3JlXT1cInN0b3BzU3RvcmVcIlxyXG4+PC9pZ28tZGlyZWN0aW9ucy1idXR0b25zPlxyXG5cclxuPGlnby1kaXJlY3Rpb25zLWlucHV0c1xyXG4gIChzdG9wSW5wdXRIYXNGb2N1cyk9XCJvblN0b3BJbnB1dEhhc0ZvY3VzQ2hhbmdlKCRldmVudClcIlxyXG4gIFtjb29yZFJvdW5kZWREZWNpbWFsc109XCJjb29yZFJvdW5kZWREZWNpbWFsc1wiXHJcbiAgW3Byb2plY3Rpb25dPVwicHJvamVjdGlvblwiXHJcbiAgW3N0b3BzRmVhdHVyZVN0b3JlXT1cInN0b3BzRmVhdHVyZVN0b3JlXCJcclxuICBbc3RvcHNTdG9yZV09XCJzdG9wc1N0b3JlXCJcclxuICBbZGVib3VuY2VdPVwiZGVib3VuY2VcIlxyXG4gIFtsZW5ndGhdPVwibGVuZ3RoXCJcclxuPjwvaWdvLWRpcmVjdGlvbnMtaW5wdXRzPlxyXG5cclxuPGlnby1kaXJlY3Rpb25zLXJlc3VsdHNcclxuICBbc3RlcEZlYXR1cmVTdG9yZV09XCJzdGVwRmVhdHVyZVN0b3JlXCJcclxuICBbcm91dGVzRmVhdHVyZVN0b3JlXT1cInJvdXRlc0ZlYXR1cmVTdG9yZVwiXHJcbj48L2lnby1kaXJlY3Rpb25zLXJlc3VsdHM+XHJcbiJdfQ==
|
|
414
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kaXJlY3Rpb25zL2RpcmVjdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZGlyZWN0aW9ucy9kaXJlY3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsS0FBSyxFQUdOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHdkQsT0FBTyxLQUFLLFdBQVcsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssYUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBR2hELE9BQU8sS0FBSyxNQUFNLE1BQU0sU0FBUyxDQUFDO0FBRWxDLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3pF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d0NBLGtTRDJCSSxZQUFZLGtJQUNaLG9CQUFvQixtV0FDcEIsMEJBQTBCLHlLQUMxQix5QkFBeUIsMk1BQ3pCLDBCQUEwQixzSEFDMUIsaUJBQWlCOzsyRkFHUixtQkFBbUI7a0JBZC9CLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBR2QsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQiwwQkFBMEI7d0JBQzFCLHlCQUF5Qjt3QkFDekIsMEJBQTBCO3dCQUMxQixpQkFBaUI7cUJBQ2xCO3VTQXlCUSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XG5cbmltcG9ydCB7IEVudGl0eVN0b3JlV2F0Y2hlciB9IGZyb20gJ0BpZ28yL2NvbW1vbi9lbnRpdHknO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5pbXBvcnQgeyBJZ29MYW5ndWFnZU1vZHVsZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL21lc3NhZ2UnO1xuaW1wb3J0IHsgQ2hhbmdlVXRpbHMsIE9iamVjdFV0aWxzIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgQ29sbGVjdGlvbiBmcm9tICdvbC9Db2xsZWN0aW9uJztcbmltcG9ydCAqIGFzIG9sQ29uZGl0aW9uIGZyb20gJ29sL2V2ZW50cy9jb25kaXRpb24nO1xuaW1wb3J0ICogYXMgb2xJbnRlcmFjdGlvbiBmcm9tICdvbC9pbnRlcmFjdGlvbic7XG5pbXBvcnQgeyBTZWxlY3RFdmVudCB9IGZyb20gJ29sL2ludGVyYWN0aW9uL1NlbGVjdCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVFdmVudCB9IGZyb20gJ29sL2ludGVyYWN0aW9uL1RyYW5zbGF0ZSc7XG5pbXBvcnQgKiBhcyBvbFByb2ogZnJvbSAnb2wvcHJvaic7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tICcuLi9mZWF0dXJlL3NoYXJlZC9mZWF0dXJlLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgRmVhdHVyZVN0b3JlTG9hZGluZ1N0cmF0ZWd5IH0gZnJvbSAnLi4vZmVhdHVyZS9zaGFyZWQvc3RyYXRlZ2llcy9sb2FkaW5nJztcbmltcG9ydCB7IHJvdW5kQ29vcmRUbywgc3RyaW5nVG9Mb25MYXQgfSBmcm9tICcuLi9tYXAnO1xuaW1wb3J0IHsgUXVlcnlTZXJ2aWNlIH0gZnJvbSAnLi4vcXVlcnkvc2hhcmVkL3F1ZXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzZWFyY2gsIFNlYXJjaFJlc3VsdCB9IGZyb20gJy4uL3NlYXJjaC9zaGFyZWQvc2VhcmNoLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgU2VhcmNoU2VydmljZSB9IGZyb20gJy4uL3NlYXJjaC9zaGFyZWQvc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGlyZWN0aW9uc0J1dHRvbnNDb21wb25lbnQgfSBmcm9tICcuL2RpcmVjdGlvbnMtYnV0dG9ucy9kaXJlY3Rpb25zLWJ1dHRvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IERpcmVjdGlvbnNJbnB1dHNDb21wb25lbnQgfSBmcm9tICcuL2RpcmVjdGlvbnMtaW5wdXRzL2RpcmVjdGlvbnMtaW5wdXRzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXJlY3Rpb25zUmVzdWx0c0NvbXBvbmVudCB9IGZyb20gJy4vZGlyZWN0aW9ucy1yZXN1bHRzL2RpcmVjdGlvbnMtcmVzdWx0cy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmFzZURpcmVjdGlvbnNTb3VyY2VPcHRpb25zUHJvZmlsZSB9IGZyb20gJy4vZGlyZWN0aW9ucy1zb3VyY2VzJztcbmltcG9ydCB7IERpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvZGlyZWN0aW9ucy1zb3VyY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBEaXJlY3Rpb25UeXBlLCBQcm9wb3NhbFR5cGUgfSBmcm9tICcuL3NoYXJlZC9kaXJlY3Rpb25zLmVudW0nO1xuaW1wb3J0IHtcbiAgRGlyZWN0aW9uT3B0aW9ucyxcbiAgRmVhdHVyZVdpdGhTdG9wUHJvcGVydGllcyxcbiAgU3RvcFxufSBmcm9tICcuL3NoYXJlZC9kaXJlY3Rpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEaXJlY3Rpb25zU2VydmljZSB9IGZyb20gJy4vc2hhcmVkL2RpcmVjdGlvbnMuc2VydmljZSc7XG5pbXBvcnQge1xuICBhZGREaXJlY3Rpb25Ub1JvdXRlc0ZlYXR1cmVTdG9yZSxcbiAgYWRkU3RvcFRvU3RvcHNGZWF0dXJlU3RvcmUsXG4gIGFkZFN0b3BUb1N0b3JlLFxuICBpbml0Um91dGVzRmVhdHVyZVN0b3JlLFxuICBpbml0U3RlcEZlYXR1cmVTdG9yZSxcbiAgaW5pdFN0b3BzRmVhdHVyZVN0b3JlLFxuICB1cGRhdGVTdG9yZVNvcnRpbmdcbn0gZnJvbSAnLi9zaGFyZWQvZGlyZWN0aW9ucy51dGlscyc7XG5pbXBvcnQge1xuICBSb3V0ZXNGZWF0dXJlU3RvcmUsXG4gIFN0ZXBGZWF0dXJlU3RvcmUsXG4gIFN0b3BzRmVhdHVyZVN0b3JlLFxuICBTdG9wc1N0b3JlXG59IGZyb20gJy4vc2hhcmVkL3N0b3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWdvLWRpcmVjdGlvbnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGlyZWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RpcmVjdGlvbnMuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBEaXJlY3Rpb25zQnV0dG9uc0NvbXBvbmVudCxcbiAgICBEaXJlY3Rpb25zSW5wdXRzQ29tcG9uZW50LFxuICAgIERpcmVjdGlvbnNSZXN1bHRzQ29tcG9uZW50LFxuICAgIElnb0xhbmd1YWdlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGlyZWN0aW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSB3YXRjaGVyOiBFbnRpdHlTdG9yZVdhdGNoZXI8U3RvcD47XG5cbiAgcHVibGljIHByb2plY3Rpb246IHN0cmluZyA9ICdFUFNHOjQzMjYnO1xuICBwdWJsaWMgaGFzT3NybVByaXZhdGVBY2Nlc3M6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHR3b1NvdXJjZXNBdmFpbGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIHpvb21Sb3V0ZSQkOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc3RvcmVFbXB0eSQkOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc3RvcmVDaGFuZ2UkJDogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHJvdXRlc1F1ZXJpZXMkJDogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBwcml2YXRlIHNlbGVjdFN0b3BJbnRlcmFjdGlvbjogb2xJbnRlcmFjdGlvbi5TZWxlY3Q7XG4gIHByaXZhdGUgdHJhbnNsYXRlU3RvcDogb2xJbnRlcmFjdGlvbi5UcmFuc2xhdGU7XG4gIHByaXZhdGUgc2VsZWN0ZWRSb3V0ZTogb2xJbnRlcmFjdGlvbi5TZWxlY3Q7XG4gIHByaXZhdGUgZm9jdXNPblN0b3A6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc1RyYW5zbGF0aW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIHByZXZpb3VzU3RvcHM6IFN0b3BbXSA9IFtdO1xuXG4gIHByaXZhdGUgc2VhcmNocyQkOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIGF1dGhlbnRpY2F0ZWQkJDogU3Vic2NyaXB0aW9uO1xuXG4gIEBJbnB1dCgpIGNvbnRleHRVcmk6IHN0cmluZztcbiAgQElucHV0KCkgc3RvcHNTdG9yZTogU3RvcHNTdG9yZTtcbiAgQElucHV0KCkgc3RvcHNGZWF0dXJlU3RvcmU6IFN0b3BzRmVhdHVyZVN0b3JlO1xuICBASW5wdXQoKSByb3V0ZXNGZWF0dXJlU3RvcmU6IFJvdXRlc0ZlYXR1cmVTdG9yZTtcbiAgQElucHV0KCkgc3RlcEZlYXR1cmVTdG9yZTogU3RlcEZlYXR1cmVTdG9yZTtcbiAgQElucHV0KCkgZGVib3VuY2U6IG51bWJlciA9IDIwMDtcbiAgQElucHV0KCkgbGVuZ3RoOiBudW1iZXIgPSAyO1xuICBASW5wdXQoKSBjb29yZFJvdW5kZWREZWNpbWFsczogbnVtYmVyID0gNjtcbiAgQElucHV0KCkgem9vbVRvQWN0aXZlUm91dGUkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgQElucHV0KCkgYXV0aGVudGljYXRlZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcblxuICAvKipcbiAgICogV2hldGVyIG9uZSBvZiB0aGUgZGlyZWN0aW9uIGNvbnRyb2wgaXMgYWN0aXZlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0IGRpcmVjdGlvbkNvbnRyb2xJc0FjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMucXVlcnlTZXJ2aWNlLnF1ZXJ5RW5hYmxlZDtcbiAgfVxuXG4gIGdldCBpbnRlcmFjdGlvbnMoKTogb2xJbnRlcmFjdGlvbi5JbnRlcmFjdGlvbltdIHtcbiAgICByZXR1cm4gW3RoaXMuc2VsZWN0U3RvcEludGVyYWN0aW9uLCB0aGlzLnRyYW5zbGF0ZVN0b3AsIHRoaXMuc2VsZWN0ZWRSb3V0ZV07XG4gIH1cblxuICBnZXQgZW5hYmxlZFByb2ZpbGVIYXNBdXRob3JpemF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmRpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlLnNvdXJjZXNbMF0uZ2V0RW5hYmxlZFByb2ZpbGUoKVxuICAgICAgLmF1dGhvcml6YXRpb247XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcbiAgICBwcml2YXRlIGRpcmVjdGlvbnNTZXJ2aWNlOiBEaXJlY3Rpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGRpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlOiBEaXJlY3Rpb25zU291cmNlU2VydmljZSxcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBxdWVyeVNlcnZpY2U6IFF1ZXJ5U2VydmljZSxcbiAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hdXRoZW50aWNhdGVkJCQgPSB0aGlzLmF1dGhlbnRpY2F0ZWQkLnN1YnNjcmliZShcbiAgICAgIChhdXRoZW50aWNhdGVkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmIChhdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgY29uc3QgcHJvZmlsZVdpdGhBdXRoOiBCYXNlRGlyZWN0aW9uc1NvdXJjZU9wdGlvbnNQcm9maWxlID1cbiAgICAgICAgICAgIHRoaXMuZGlyZWN0aW9uc1NvdXJjZVNlcnZpY2Uuc291cmNlc1swXS5nZXRQcm9maWxlV2l0aEF1dGhvcml6YXRpb24oKTtcbiAgICAgICAgICBpZiAocHJvZmlsZVdpdGhBdXRoKSB7XG4gICAgICAgICAgICB0aGlzLmh0dHBcbiAgICAgICAgICAgICAgLmdldChwcm9maWxlV2l0aEF1dGguYXV0aG9yaXphdGlvbi51cmwpXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHVzZXIpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhc09zcm1Qcml2YXRlQWNjZXNzID1cbiAgICAgICAgICAgICAgICAgIHVzZXJbcHJvZmlsZVdpdGhBdXRoLmF1dGhvcml6YXRpb24ucHJvcGVydHldO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMudHdvU291cmNlc0F2YWlsYWJsZSA9XG4gICAgICB0aGlzLmRpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlLnNvdXJjZXNbMF0ucHJvZmlsZXMubGVuZ3RoID09PSAyXG4gICAgICAgID8gdHJ1ZVxuICAgICAgICA6IGZhbHNlO1xuICAgIHRoaXMucXVlcnlTZXJ2aWNlLnF1ZXJ5RW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuaW5pdEVudGl0eVN0b3JlcygpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaW5pdFN0b3BzRmVhdHVyZVN0b3JlKHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUsIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlKTtcbiAgICAgIGluaXRSb3V0ZXNGZWF0dXJlU3RvcmUodGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUsIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlKTtcbiAgICAgIGluaXRTdGVwRmVhdHVyZVN0b3JlKHRoaXMuc3RlcEZlYXR1cmVTdG9yZSk7XG4gICAgICB0aGlzLmluaXRPbEludGVyYWN0aW9uKCk7XG4gICAgfSwgMSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5U2VydmljZS5xdWVyeUVuYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMuc3RvcmVFbXB0eSQkLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zdG9yZUNoYW5nZSQkLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5yb3V0ZXNRdWVyaWVzJCQubWFwKCh1KSA9PiB1LnVuc3Vic2NyaWJlKCkpO1xuICAgIHRoaXMuem9vbVJvdXRlJCQudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmF1dGhlbnRpY2F0ZWQkJC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZnJlZXplU3RvcmVzKCk7XG4gIH1cblxuICBwcml2YXRlIGZyZWV6ZVN0b3JlcygpIHtcbiAgICB0aGlzLmludGVyYWN0aW9ucy5tYXAoKGludGVyYWN0aW9uKSA9PlxuICAgICAgdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLm9sLnJlbW92ZUludGVyYWN0aW9uKGludGVyYWN0aW9uKVxuICAgICk7XG4gICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZS5kZWFjdGl2YXRlU3RyYXRlZ3lPZlR5cGUoXG4gICAgICBGZWF0dXJlU3RvcmVMb2FkaW5nU3RyYXRlZ3lcbiAgICApO1xuICAgIHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmRlYWN0aXZhdGVTdHJhdGVneU9mVHlwZShcbiAgICAgIEZlYXR1cmVTdG9yZUxvYWRpbmdTdHJhdGVneVxuICAgICk7XG4gICAgdGhpcy5zdGVwRmVhdHVyZVN0b3JlLmRlYWN0aXZhdGVTdHJhdGVneU9mVHlwZShGZWF0dXJlU3RvcmVMb2FkaW5nU3RyYXRlZ3kpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0RW50aXR5U3RvcmVzKCkge1xuICAgIHRoaXMud2F0Y2hlciA9IG5ldyBFbnRpdHlTdG9yZVdhdGNoZXIodGhpcy5zdG9wc1N0b3JlLCB0aGlzLmNkUmVmKTtcbiAgICB0aGlzLm1vbml0b3JFbXB0eUVudGl0eVN0b3JlKCk7XG4gICAgdGhpcy5tb25pdG9yRW50aXR5U3RvcmVDaGFuZ2UoKTtcbiAgICB0aGlzLm1vbml0b3JBY3RpdmVSb3V0ZVpvb20oKTtcbiAgfVxuXG4gIHByaXZhdGUgbW9uaXRvckFjdGl2ZVJvdXRlWm9vbSgpIHtcbiAgICB0aGlzLnpvb21Sb3V0ZSQkID0gdGhpcy56b29tVG9BY3RpdmVSb3V0ZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5jb3VudCA+PSAxKSB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVJvdXRlID0gdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmVcbiAgICAgICAgICAuYWxsKClcbiAgICAgICAgICAuZmluZCgocm91dGUpID0+IHJvdXRlLnByb3BlcnRpZXMuYWN0aXZlKTtcblxuICAgICAgICBpZiAoYWN0aXZlUm91dGUpIHtcbiAgICAgICAgICBhY3RpdmVSb3V0ZS5vbC5nZXRHZW9tZXRyeSgpO1xuICAgICAgICAgIGNvbnN0IHJvdXRlRXh0ZW50ID0gYWN0aXZlUm91dGUub2wuZ2V0R2VvbWV0cnkoKS5nZXRFeHRlbnQoKTtcbiAgICAgICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAudmlld0NvbnRyb2xsZXIuem9vbVRvRXh0ZW50KFxuICAgICAgICAgICAgcm91dGVFeHRlbnQgYXMgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRPbEludGVyYWN0aW9uKCkge1xuICAgIHRoaXMuc2VsZWN0U3RvcEludGVyYWN0aW9uID0gbmV3IG9sSW50ZXJhY3Rpb24uU2VsZWN0KHtcbiAgICAgIGxheWVyczogW3RoaXMuc3RvcHNGZWF0dXJlU3RvcmUubGF5ZXIub2xdLFxuICAgICAgaGl0VG9sZXJhbmNlOiA3LFxuICAgICAgY29uZGl0aW9uOiAoZXZlbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIGV2ZW50LnR5cGUgPT09ICdwb2ludGVybW92ZScgJiYgIWV2ZW50LmRyYWdnaW5nO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy50cmFuc2xhdGVTdG9wID0gbmV3IG9sSW50ZXJhY3Rpb24uVHJhbnNsYXRlKHtcbiAgICAgIGZlYXR1cmVzOiB0aGlzLnNlbGVjdFN0b3BJbnRlcmFjdGlvbi5nZXRGZWF0dXJlcygpXG4gICAgfSk7XG4gICAgdGhpcy50cmFuc2xhdGVTdG9wLm9uKCd0cmFuc2xhdGluZycsIChldnQ6IFRyYW5zbGF0ZUV2ZW50KSA9PiB7XG4gICAgICB0aGlzLmlzVHJhbnNsYXRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5leGVjdXRlU3RvcFRyYW5zbGF0aW9uKGV2dC5mZWF0dXJlcyk7XG4gICAgfSk7XG4gICAgdGhpcy50cmFuc2xhdGVTdG9wLm9uKCd0cmFuc2xhdGVlbmQnLCAoZXZ0OiBUcmFuc2xhdGVFdmVudCkgPT4ge1xuICAgICAgdGhpcy5pc1RyYW5zbGF0aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmV4ZWN1dGVTdG9wVHJhbnNsYXRpb24oZXZ0LmZlYXR1cmVzKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZSA9IG5ldyBvbEludGVyYWN0aW9uLlNlbGVjdCh7XG4gICAgICBsYXllcnM6IFt0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5vbF0sXG4gICAgICBjb25kaXRpb246IG9sQ29uZGl0aW9uLmNsaWNrLFxuICAgICAgaGl0VG9sZXJhbmNlOiA3LFxuICAgICAgZmlsdGVyOiAoZmVhdHVyZSkgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGZlYXR1cmUuZ2V0KCd0eXBlJykgPT09IERpcmVjdGlvblR5cGUuUm91dGUgJiZcbiAgICAgICAgICBmZWF0dXJlLmdldCgnYWN0aXZlJykgJiZcbiAgICAgICAgICAhdGhpcy5pc1RyYW5zbGF0aW5nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zZWxlY3RlZFJvdXRlLm9uKCdzZWxlY3QnLCAoZXZ0OiBTZWxlY3RFdmVudCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZm9jdXNPblN0b3AgPT09IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdENvb3JkaW5hdGVzID0gcm91bmRDb29yZFRvKFxuICAgICAgICAgIG9sUHJvai50cmFuc2Zvcm0oXG4gICAgICAgICAgICAoZXZ0IGFzIGFueSkubWFwQnJvd3NlckV2ZW50LmNvb3JkaW5hdGUsXG4gICAgICAgICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAucHJvamVjdGlvbixcbiAgICAgICAgICAgIHRoaXMucHJvamVjdGlvblxuICAgICAgICAgICkgYXMgW251bWJlciwgbnVtYmVyXSxcbiAgICAgICAgICB0aGlzLmNvb3JkUm91bmRlZERlY2ltYWxzXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGFkZGVkU3RvcCA9IGFkZFN0b3BUb1N0b3JlKHRoaXMuc3RvcHNTdG9yZSk7XG4gICAgICAgIGFkZGVkU3RvcC50ZXh0ID0gc2VsZWN0Q29vcmRpbmF0ZXMuam9pbignLCcpO1xuICAgICAgICBhZGRlZFN0b3AuY29vcmRpbmF0ZXMgPSBbc2VsZWN0Q29vcmRpbmF0ZXNbMF0sIHNlbGVjdENvb3JkaW5hdGVzWzFdXTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuaW50ZXJhY3Rpb25zLm1hcCgoaW50ZXJhY3Rpb24pID0+XG4gICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAub2wuYWRkSW50ZXJhY3Rpb24oaW50ZXJhY3Rpb24pXG4gICAgKTtcbiAgfVxuXG4gIG9uU3RvcElucHV0SGFzRm9jdXNDaGFuZ2Uoc3RvcElucHV0SGFzRm9jdXM6IGJvb2xlYW4pIHtcbiAgICBzdG9wSW5wdXRIYXNGb2N1c1xuICAgICAgPyB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAub2wucmVtb3ZlSW50ZXJhY3Rpb24oXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvdXRlXG4gICAgICAgIClcbiAgICAgIDogdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLm9sLmFkZEludGVyYWN0aW9uKHRoaXMuc2VsZWN0ZWRSb3V0ZSk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVTdG9wVHJhbnNsYXRpb24oZmVhdHVyZXM6IENvbGxlY3Rpb248YW55Pikge1xuICAgIGlmIChmZWF0dXJlcy5nZXRMZW5ndGgoKSA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmaXJzdEZlYXR1cmUgPSBmZWF0dXJlcy5nZXRBcnJheSgpWzBdO1xuICAgIGNvbnN0IHRyYW5zbGF0ZWRTdG9wSWQgPSBmaXJzdEZlYXR1cmUuZ2V0SWQoKTtcblxuICAgIGNvbnN0IHRyYW5zbGF0aW9uQ29vcmRpbmF0ZXMgPSBvbFByb2oudHJhbnNmb3JtKFxuICAgICAgZmlyc3RGZWF0dXJlLmdldEdlb21ldHJ5KCkuZ2V0Q29vcmRpbmF0ZXMoKSxcbiAgICAgIHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLnByb2plY3Rpb24sXG4gICAgICB0aGlzLnByb2plY3Rpb25cbiAgICApO1xuICAgIGNvbnN0IHRyYW5zbGF0ZWRTdG9wID0gdGhpcy5zdG9wc1N0b3JlLmdldCh0cmFuc2xhdGVkU3RvcElkKTtcbiAgICBjb25zdCByb3VuZGVkQ29vcmQgPSByb3VuZENvb3JkVG8oXG4gICAgICB0cmFuc2xhdGlvbkNvb3JkaW5hdGVzIGFzIFtudW1iZXIsIG51bWJlcl0sXG4gICAgICB0aGlzLmNvb3JkUm91bmRlZERlY2ltYWxzXG4gICAgKTtcbiAgICB0cmFuc2xhdGVkU3RvcC5jb29yZGluYXRlcyA9IHJvdW5kZWRDb29yZDtcbiAgICB0cmFuc2xhdGVkU3RvcC50ZXh0ID0gcm91bmRlZENvb3JkLmpvaW4oJywnKTtcbiAgICB0aGlzLnN0b3BzU3RvcmUudXBkYXRlKHRyYW5zbGF0ZWRTdG9wKTtcbiAgfVxuXG4gIHByaXZhdGUgbW9uaXRvckVtcHR5RW50aXR5U3RvcmUoKSB7XG4gICAgLy8gV2F0Y2ggaWYgdGhlIHN0b3JlIGlzIGVtcHR5IHRvIHJlc2V0IGl0XG4gICAgdGhpcy5zdG9yZUVtcHR5JCQgPSB0aGlzLnN0b3BzU3RvcmUuY291bnQkXG4gICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgLnN1YnNjcmliZSgoY291bnQpID0+IHtcbiAgICAgICAgaWYgKGNvdW50IDwgMikge1xuICAgICAgICAgIGFkZFN0b3BUb1N0b3JlKHRoaXMuc3RvcHNTdG9yZSk7XG4gICAgICAgICAgaWYgKHRoaXMuc3RvcHNTdG9yZS5jb3VudCA9PT0gMikge1xuICAgICAgICAgICAgdGhpcy5zdG9wc1N0b3JlLnN0b3JlSW5pdGlhbGl6ZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc3RvcHNTdG9yZS5zdG9yZUluaXRpYWxpemVkJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJvdXRlc1F1ZXJpZXMkJC5tYXAoKHUpID0+IHUudW5zdWJzY3JpYmUoKSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbW9uaXRvckVudGl0eVN0b3JlQ2hhbmdlKCkge1xuICAgIHRoaXMuc3RvcmVDaGFuZ2UkJCA9IHRoaXMuc3RvcHNTdG9yZS5lbnRpdGllcyRcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHN0b3BzOiBTdG9wW10pID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVTdG9wRGlmZihzdG9wcyk7XG4gICAgICAgIHVwZGF0ZVN0b3JlU29ydGluZyh0aGlzLnN0b3BzU3RvcmUpO1xuICAgICAgICB0aGlzLmhhbmRsZVN0b3BzRmVhdHVyZSgpO1xuICAgICAgICB0aGlzLmdldFJvdXRlcyh0aGlzLmlzVHJhbnNsYXRpbmcpO1xuICAgICAgfSk7XG4gIH1cblxuICBjYW5jZWxTZWFyY2goKSB7XG4gICAgdGhpcy5zZWFyY2hzJCQubWFwKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTdG9wRGlmZihzdG9wczogU3RvcFtdKSB7XG4gICAgY29uc3Qgc2ltcGxpZmllZFN0b3BzID0gc3RvcHMubWFwKChzdG9wOiBTdG9wKSA9PiB7XG4gICAgICByZXR1cm4gT2JqZWN0VXRpbHMucmVtb3ZlVW5kZWZpbmVkKHtcbiAgICAgICAgLi4ueyBpZDogc3RvcC5pZCwgdGV4dDogc3RvcC50ZXh0LCBjb29yZGluYXRlczogc3RvcC5jb29yZGluYXRlcyB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBjb25zdCBkaWZmID0gQ2hhbmdlVXRpbHMuZmluZENoYW5nZXModGhpcy5wcmV2aW91c1N0b3BzLCBzaW1wbGlmaWVkU3RvcHMsIFtcbiAgICAgICdjb29yZGluYXRlcydcbiAgICBdKTtcbiAgICBjb25zdCBzdG9wSWRUb1Byb2Nlc3MgPSBkaWZmLmFkZGVkLmNvbmNhdChkaWZmLm1vZGlmaWVkKTtcbiAgICBpZiAoc3RvcElkVG9Qcm9jZXNzKSB7XG4gICAgICBzdG9wSWRUb1Byb2Nlc3MubWFwKChjaGFuZ2UpID0+IHtcbiAgICAgICAgY29uc3QgY2hhbmdlZFN0b3AgPSBjaGFuZ2UubmV3VmFsdWUgYXMgU3RvcDtcbiAgICAgICAgaWYgKGNoYW5nZWRTdG9wKSB7XG4gICAgICAgICAgY29uc3Qgc3RvcDogU3RvcCA9IHRoaXMuc3RvcHNTdG9yZS5nZXQoY2hhbmdlZFN0b3AuaWQpO1xuICAgICAgICAgIGNvbnN0IHRlcm0gPSBzdG9wLnRleHQ7XG4gICAgICAgICAgaWYgKCF0ZXJtIHx8IHRlcm0ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gc3RyaW5nVG9Mb25MYXQoXG4gICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAucHJvamVjdGlvblxuICAgICAgICAgICk7XG4gICAgICAgICAgbGV0IHJlc2VhcmNoZXM6IFJlc2VhcmNoW107XG4gICAgICAgICAgbGV0IGlzQ29vcmQgPSBmYWxzZTtcbiAgICAgICAgICBpZiAocmVzcG9uc2UubG9uTGF0KSB7XG4gICAgICAgICAgICBpc0Nvb3JkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzZWFyY2hlcyA9IHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2godGVybSwge1xuICAgICAgICAgICAgc2VhcmNoVHlwZTogJ0ZlYXR1cmUnXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5jYW5jZWxTZWFyY2goKTtcbiAgICAgICAgICBjb25zdCByZXF1ZXN0cyQgPSByZXNlYXJjaGVzLm1hcCgocmVzKSA9PlxuICAgICAgICAgICAgcmVzLnJlcXVlc3QucGlwZShcbiAgICAgICAgICAgICAgbWFwKChyZXN1bHRzOiBTZWFyY2hSZXN1bHRbXSkgPT5cbiAgICAgICAgICAgICAgICByZXN1bHRzLmZpbHRlcigocikgPT5cbiAgICAgICAgICAgICAgICAgIGlzQ29vcmRcbiAgICAgICAgICAgICAgICAgICAgPyByLmRhdGEuZ2VvbWV0cnkudHlwZSA9PT0gJ1BvaW50JyAmJiByLmRhdGEuZ2VvbWV0cnlcbiAgICAgICAgICAgICAgICAgICAgOiByLmRhdGEuZ2VvbWV0cnlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuc2VhcmNocyQkID0gcmVxdWVzdHMkLm1hcCgocmVxdWVzdCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChyZXN1bHRzOiBTZWFyY2hSZXN1bHRbXSkgPT5cbiAgICAgICAgICAgICAgICAgIHJlc3VsdHMuZmlsdGVyKChyKSA9PlxuICAgICAgICAgICAgICAgICAgICBpc0Nvb3JkXG4gICAgICAgICAgICAgICAgICAgICAgPyByLmRhdGEuZ2VvbWV0cnkudHlwZSA9PT0gJ1BvaW50JyAmJiByLmRhdGEuZ2VvbWV0cnlcbiAgICAgICAgICAgICAgICAgICAgICA6IHIuZGF0YS5nZW9tZXRyeVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXM6IFNlYXJjaFJlc3VsdFtdKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBzb3VyY2UgPSByZXNbMF0uc291cmNlO1xuICAgICAgICAgICAgICAgICAgY29uc3QgbWV0YSA9IHJlc1swXS5tZXRhO1xuICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IHJlcy5tYXAoKHIpID0+IHIuZGF0YSk7XG4gICAgICAgICAgICAgICAgICBpZiAoIXN0b3Auc2VhcmNoUHJvcG9zYWxzKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0b3Auc2VhcmNoUHJvcG9zYWxzID0gW107XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBzdG9wLnNlYXJjaFByb3Bvc2FscyA9IHN0b3Auc2VhcmNoUHJvcG9zYWxzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKHNwKSA9PlxuICAgICAgICAgICAgICAgICAgICAgIHNwLnR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgKGlzQ29vcmQgPyBQcm9wb3NhbFR5cGUuQ29vcmQgOiBQcm9wb3NhbFR5cGUuVGV4dClcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBsZXQgc3RvcmVkU291cmNlID0gc3RvcC5zZWFyY2hQcm9wb3NhbHMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgKHNwKSA9PiBzcC5zb3VyY2UgPT09IHNvdXJjZVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGlmIChzdG9yZWRTb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RvcmVkU291cmNlLnJlc3VsdHMgPSByZXN1bHRzO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RvcC5zZWFyY2hQcm9wb3NhbHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogaXNDb29yZCA/IFByb3Bvc2FsVHlwZS5Db29yZCA6IFByb3Bvc2FsVHlwZS5UZXh0LFxuICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICBtZXRhLFxuICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMucHJldmlvdXNTdG9wcyA9IHNpbXBsaWZpZWRTdG9wcztcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU3RvcHNGZWF0dXJlKCkge1xuICAgIGNvbnN0IHN0b3BzID0gdGhpcy5zdG9wc1N0b3JlLmFsbCgpO1xuICAgIGNvbnN0IHN0b3BzV2l0aENvb3JkaW5hdGVzID0gc3RvcHMuZmlsdGVyKChzdG9wKSA9PiBzdG9wLmNvb3JkaW5hdGVzKTtcbiAgICBzdG9wc1dpdGhDb29yZGluYXRlcy5tYXAoKHN0b3ApID0+IHRoaXMuYWRkU3RvcE92ZXJsYXkoc3RvcCkpO1xuICAgIHRoaXMuc3RvcHNGZWF0dXJlU3RvcmVcbiAgICAgIC5hbGwoKVxuICAgICAgLm1hcCgoc3RvcEZlYXR1cmU6IEZlYXR1cmU8RmVhdHVyZVdpdGhTdG9wUHJvcGVydGllcz4pID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnN0b3BzU3RvcmUuZ2V0KHN0b3BGZWF0dXJlLnByb3BlcnRpZXMuaWQpKSB7XG4gICAgICAgICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZS5kZWxldGUoc3RvcEZlYXR1cmUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICBjb25zdCBzdG9wc1dpdGhvdXRDb29yZGluYXRlcyA9IHN0b3BzLmZpbHRlcigoc3RvcCkgPT4gIXN0b3AuY29vcmRpbmF0ZXMpO1xuICAgIHN0b3BzV2l0aG91dENvb3JkaW5hdGVzLm1hcCgoc3RvcCkgPT4ge1xuICAgICAgY29uc3Qgc3RvcEZlYXR1cmUgPSB0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLmdldChzdG9wLmlkKTtcbiAgICAgIGlmIChzdG9wRmVhdHVyZSkge1xuICAgICAgICB0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLmRlbGV0ZShzdG9wRmVhdHVyZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFJvdXRlcyhpc092ZXJ2aWV3OiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBjb25zdCBzdG9wc1dpdGhDb29yZGluYXRlcyA9IHRoaXMuc3RvcHNTdG9yZS52aWV3XG4gICAgICAuYWxsKClcbiAgICAgIC5maWx0ZXIoKHN0b3ApID0+IHN0b3AuY29vcmRpbmF0ZXMpO1xuICAgIGlmIChzdG9wc1dpdGhDb29yZGluYXRlcy5sZW5ndGggPCAyKSB7XG4gICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5kZWxldGVNYW55KHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmFsbCgpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByb3VuZGVkQ29vcmRpbmF0ZXMgPSBzdG9wc1dpdGhDb29yZGluYXRlcy5tYXAoKHN0b3ApID0+IHtcbiAgICAgIGNvbnN0IHJvdW5kZWRDb29yZCA9IHJvdW5kQ29vcmRUbyhcbiAgICAgICAgc3RvcC5jb29yZGluYXRlcyxcbiAgICAgICAgdGhpcy5jb29yZFJvdW5kZWREZWNpbWFsc1xuICAgICAgKTtcbiAgICAgIHJldHVybiByb3VuZGVkQ29vcmQ7XG4gICAgfSk7XG4gICAgY29uc3Qgb3ZlcnZpZXdEaXJlY3Rpb25zT3B0aW9uczogRGlyZWN0aW9uT3B0aW9ucyA9IHtcbiAgICAgIG92ZXJ2aWV3OiB0cnVlLFxuICAgICAgc3RlcHM6IGZhbHNlLFxuICAgICAgYWx0ZXJuYXRpdmVzOiBmYWxzZSxcbiAgICAgIGNvbnRpbnVlX3N0cmFpZ2h0OiBmYWxzZVxuICAgIH07XG4gICAgdGhpcy5yb3V0ZXNRdWVyaWVzJCQubWFwKCh1KSA9PiB1LnVuc3Vic2NyaWJlKCkpO1xuICAgIGNvbnN0IHJvdXRlUmVzcG9uc2UgPSB0aGlzLmRpcmVjdGlvbnNTZXJ2aWNlLnJvdXRlKFxuICAgICAgcm91bmRlZENvb3JkaW5hdGVzLFxuICAgICAgaXNPdmVydmlldyA/IG92ZXJ2aWV3RGlyZWN0aW9uc09wdGlvbnMgOiB1bmRlZmluZWRcbiAgICApO1xuICAgIGlmIChyb3V0ZVJlc3BvbnNlKSB7XG4gICAgICB0aGlzLnJvdXRlc1F1ZXJpZXMkJC5wdXNoKFxuICAgICAgICByb3V0ZVJlc3BvbnNlLnN1YnNjcmliZSgoZGlyZWN0aW9ucykgPT4ge1xuICAgICAgICAgIHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmRlbGV0ZU1hbnkodGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUuYWxsKCkpO1xuICAgICAgICAgIGRpcmVjdGlvbnMubWFwKChkaXJlY3Rpb24pID0+XG4gICAgICAgICAgICBhZGREaXJlY3Rpb25Ub1JvdXRlc0ZlYXR1cmVTdG9yZShcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUsXG4gICAgICAgICAgICAgIGRpcmVjdGlvbixcbiAgICAgICAgICAgICAgdGhpcy5wcm9qZWN0aW9uLFxuICAgICAgICAgICAgICBkaXJlY3Rpb24gPT09IGRpcmVjdGlvbnNbMF0gPyB0cnVlIDogZmFsc2VcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkU3RvcE92ZXJsYXkoc3RvcDogU3RvcCkge1xuICAgIGFkZFN0b3BUb1N0b3BzRmVhdHVyZVN0b3JlKFxuICAgICAgc3RvcCxcbiAgICAgIHRoaXMuc3RvcHNTdG9yZSxcbiAgICAgIHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUsXG4gICAgICB0aGlzLnByb2plY3Rpb24sXG4gICAgICB0aGlzLmxhbmd1YWdlU2VydmljZVxuICAgICk7XG4gIH1cblxuICBvblRvZ2dsZURpcmVjdGlvbnNDb250cm9sKGlzQWN0aXZlOiBib29sZWFuKSB7XG4gICAgdGhpcy5xdWVyeVNlcnZpY2UucXVlcnlFbmFibGVkID0gIWlzQWN0aXZlO1xuICAgIGNvbnN0IG9sID0gdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLm9sO1xuICAgIHRoaXMuaW50ZXJhY3Rpb25zLm1hcCgoaW50ZXJhY3Rpb24pID0+XG4gICAgICBpc0FjdGl2ZVxuICAgICAgICA/IG9sLmFkZEludGVyYWN0aW9uKGludGVyYWN0aW9uKVxuICAgICAgICA6IG9sLnJlbW92ZUludGVyYWN0aW9uKGludGVyYWN0aW9uKVxuICAgICk7XG4gIH1cblxuICBvblRvZ2dsZVByaXZhdGVNb2RlQ29udHJvbChpc0FjdGl2ZTogYm9vbGVhbikge1xuICAgIHRoaXMuZGlyZWN0aW9uc1NvdXJjZVNlcnZpY2Uuc291cmNlc1swXS5wcm9maWxlcy5mb3JFYWNoKFxuICAgICAgKHByb2ZpbGUpID0+IChwcm9maWxlLmVuYWJsZWQgPSBmYWxzZSlcbiAgICApO1xuICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgdGhpcy5kaXJlY3Rpb25zU291cmNlU2VydmljZS5zb3VyY2VzWzBdLnByb2ZpbGVzLmZpbmQoXG4gICAgICAgIChwcm9maWxlKSA9PiBwcm9maWxlLmF1dGhvcml6YXRpb25cbiAgICAgICkuZW5hYmxlZCA9IHRydWU7XG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFsZXJ0KFxuICAgICAgICB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAnaWdvLmdlby5kaXJlY3Rpb25zRm9ybS5mb3Jlc3RSb2Fkc1dhcm5pbmcudGV4dCdcbiAgICAgICAgKSxcbiAgICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgJ2lnby5nZW8uZGlyZWN0aW9uc0Zvcm0uZm9yZXN0Um9hZHNXYXJuaW5nLnRpdGxlJ1xuICAgICAgICApXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlLnNvdXJjZXNbMF0ucHJvZmlsZXMuZmluZChcbiAgICAgICAgKHByb2ZpbGUpID0+ICFwcm9maWxlLmF1dGhvcml6YXRpb25cbiAgICAgICkuZW5hYmxlZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuZ2V0Um91dGVzKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkaXJlY3Rpb25zLW9wdGlvbnNcIj5cbiAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICBbY2hlY2tlZF09XCJkaXJlY3Rpb25Db250cm9sSXNBY3RpdmVcIlxuICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCJcbiAgICAoY2hhbmdlKT1cIm9uVG9nZ2xlRGlyZWN0aW9uc0NvbnRyb2woJGV2ZW50LmNoZWNrZWQpXCJcbiAgPlxuICAgIHt7ICdpZ28uZ2VvLmRpcmVjdGlvbnNGb3JtLnRvZ2dsZUFjdGl2ZScgfCB0cmFuc2xhdGUgfX1cbiAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICA8bWF0LXNsaWRlLXRvZ2dsZVxuICAgICpuZ0lmPVwiaGFzT3NybVByaXZhdGVBY2Nlc3MgJiYgdHdvU291cmNlc0F2YWlsYWJsZVwiXG4gICAgW2NoZWNrZWRdPVwiZW5hYmxlZFByb2ZpbGVIYXNBdXRob3JpemF0aW9uXCJcbiAgICBbbGFiZWxQb3NpdGlvbl09XCInYmVmb3JlJ1wiXG4gICAgKGNoYW5nZSk9XCJvblRvZ2dsZVByaXZhdGVNb2RlQ29udHJvbCgkZXZlbnQuY2hlY2tlZClcIlxuICA+XG4gICAge3sgJ2lnby5nZW8uZGlyZWN0aW9uc0Zvcm0udG9nZ2xlVHlwZScgfCB0cmFuc2xhdGUgfX1cbiAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuPC9kaXY+XG5cbjxpZ28tZGlyZWN0aW9ucy1idXR0b25zXG4gIFtzdGVwRmVhdHVyZVN0b3JlXT1cInN0ZXBGZWF0dXJlU3RvcmVcIlxuICBbY29udGV4dFVyaV09XCJjb250ZXh0VXJpXCJcbiAgW3pvb21Ub0FjdGl2ZVJvdXRlJF09XCJ6b29tVG9BY3RpdmVSb3V0ZSRcIlxuICBbcm91dGVzRmVhdHVyZVN0b3JlXT1cInJvdXRlc0ZlYXR1cmVTdG9yZVwiXG4gIFtzdG9wc1N0b3JlXT1cInN0b3BzU3RvcmVcIlxuPjwvaWdvLWRpcmVjdGlvbnMtYnV0dG9ucz5cblxuPGlnby1kaXJlY3Rpb25zLWlucHV0c1xuICAoc3RvcElucHV0SGFzRm9jdXMpPVwib25TdG9wSW5wdXRIYXNGb2N1c0NoYW5nZSgkZXZlbnQpXCJcbiAgW2Nvb3JkUm91bmRlZERlY2ltYWxzXT1cImNvb3JkUm91bmRlZERlY2ltYWxzXCJcbiAgW3Byb2plY3Rpb25dPVwicHJvamVjdGlvblwiXG4gIFtzdG9wc0ZlYXR1cmVTdG9yZV09XCJzdG9wc0ZlYXR1cmVTdG9yZVwiXG4gIFtzdG9wc1N0b3JlXT1cInN0b3BzU3RvcmVcIlxuICBbZGVib3VuY2VdPVwiZGVib3VuY2VcIlxuICBbbGVuZ3RoXT1cImxlbmd0aFwiXG4+PC9pZ28tZGlyZWN0aW9ucy1pbnB1dHM+XG5cbjxpZ28tZGlyZWN0aW9ucy1yZXN1bHRzXG4gIFtzdGVwRmVhdHVyZVN0b3JlXT1cInN0ZXBGZWF0dXJlU3RvcmVcIlxuICBbcm91dGVzRmVhdHVyZVN0b3JlXT1cInJvdXRlc0ZlYXR1cmVTdG9yZVwiXG4+PC9pZ28tZGlyZWN0aW9ucy1yZXN1bHRzPlxuIl19
|
|
@@ -1,105 +1,46 @@
|
|
|
1
|
-
import { DragDropModule } from '@angular/cdk/drag-drop';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
1
|
import { NgModule } from '@angular/core';
|
|
4
|
-
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
-
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
6
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
7
|
-
import { MatOptionModule } from '@angular/material/core';
|
|
8
|
-
import { MatDividerModule } from '@angular/material/divider';
|
|
9
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
10
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
11
|
-
import { MatInputModule } from '@angular/material/input';
|
|
12
|
-
import { MatListModule } from '@angular/material/list';
|
|
13
|
-
import { MatSelectModule } from '@angular/material/select';
|
|
14
|
-
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
15
|
-
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
16
|
-
import { IgoLanguageModule } from '@igo2/core';
|
|
17
2
|
import { DirectionsButtonsComponent } from './directions-buttons/directions-buttons.component';
|
|
18
3
|
import { DirectionsInputsComponent } from './directions-inputs/directions-inputs.component';
|
|
19
4
|
import { DirectionsResultsComponent } from './directions-results/directions-results.component';
|
|
20
5
|
import { DirectionsComponent } from './directions.component';
|
|
21
|
-
import { provideDirectionsSourceService } from './shared/directions-source.service';
|
|
22
6
|
import * as i0 from "@angular/core";
|
|
23
7
|
export class IgoDirectionsModule {
|
|
8
|
+
/**
|
|
9
|
+
* @deprecated it has no effect
|
|
10
|
+
*/
|
|
24
11
|
static forRoot() {
|
|
25
12
|
return {
|
|
26
13
|
ngModule: IgoDirectionsModule
|
|
27
14
|
};
|
|
28
15
|
}
|
|
29
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
30
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
16
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: IgoDirectionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
17
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.9", ngImport: i0, type: IgoDirectionsModule, imports: [DirectionsComponent,
|
|
31
18
|
DirectionsInputsComponent,
|
|
32
19
|
DirectionsButtonsComponent,
|
|
33
|
-
DirectionsResultsComponent],
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
MatButtonModule,
|
|
39
|
-
MatListModule,
|
|
40
|
-
MatDividerModule,
|
|
41
|
-
MatFormFieldModule,
|
|
42
|
-
MatInputModule,
|
|
43
|
-
MatOptionModule,
|
|
44
|
-
MatSelectModule,
|
|
45
|
-
MatSlideToggleModule,
|
|
46
|
-
MatTooltipModule,
|
|
47
|
-
MatAutocompleteModule,
|
|
48
|
-
IgoLanguageModule], exports: [DirectionsComponent,
|
|
20
|
+
DirectionsResultsComponent], exports: [DirectionsComponent,
|
|
21
|
+
DirectionsInputsComponent,
|
|
22
|
+
DirectionsButtonsComponent,
|
|
23
|
+
DirectionsResultsComponent] });
|
|
24
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: IgoDirectionsModule, imports: [DirectionsComponent,
|
|
49
25
|
DirectionsInputsComponent,
|
|
50
26
|
DirectionsButtonsComponent,
|
|
51
27
|
DirectionsResultsComponent] });
|
|
52
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IgoDirectionsModule, providers: [provideDirectionsSourceService()], imports: [CommonModule,
|
|
53
|
-
DragDropModule,
|
|
54
|
-
FormsModule,
|
|
55
|
-
ReactiveFormsModule,
|
|
56
|
-
MatIconModule,
|
|
57
|
-
MatButtonModule,
|
|
58
|
-
MatListModule,
|
|
59
|
-
MatDividerModule,
|
|
60
|
-
MatFormFieldModule,
|
|
61
|
-
MatInputModule,
|
|
62
|
-
MatOptionModule,
|
|
63
|
-
MatSelectModule,
|
|
64
|
-
MatSlideToggleModule,
|
|
65
|
-
MatTooltipModule,
|
|
66
|
-
MatAutocompleteModule,
|
|
67
|
-
IgoLanguageModule] });
|
|
68
28
|
}
|
|
69
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: IgoDirectionsModule, decorators: [{
|
|
70
30
|
type: NgModule,
|
|
71
31
|
args: [{
|
|
72
32
|
imports: [
|
|
73
|
-
CommonModule,
|
|
74
|
-
DragDropModule,
|
|
75
|
-
FormsModule,
|
|
76
|
-
ReactiveFormsModule,
|
|
77
|
-
MatIconModule,
|
|
78
|
-
MatButtonModule,
|
|
79
|
-
MatListModule,
|
|
80
|
-
MatDividerModule,
|
|
81
|
-
MatFormFieldModule,
|
|
82
|
-
MatInputModule,
|
|
83
|
-
MatOptionModule,
|
|
84
|
-
MatSelectModule,
|
|
85
|
-
MatSlideToggleModule,
|
|
86
|
-
MatTooltipModule,
|
|
87
|
-
MatAutocompleteModule,
|
|
88
|
-
IgoLanguageModule
|
|
89
|
-
],
|
|
90
|
-
exports: [
|
|
91
33
|
DirectionsComponent,
|
|
92
34
|
DirectionsInputsComponent,
|
|
93
35
|
DirectionsButtonsComponent,
|
|
94
36
|
DirectionsResultsComponent
|
|
95
37
|
],
|
|
96
|
-
|
|
38
|
+
exports: [
|
|
97
39
|
DirectionsComponent,
|
|
98
40
|
DirectionsInputsComponent,
|
|
99
41
|
DirectionsButtonsComponent,
|
|
100
42
|
DirectionsResultsComponent
|
|
101
|
-
]
|
|
102
|
-
providers: [provideDirectionsSourceService()]
|
|
43
|
+
]
|
|
103
44
|
}]
|
|
104
45
|
}] });
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9ucy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kaXJlY3Rpb25zL2RpcmVjdGlvbnMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQWdCN0QsTUFBTSxPQUFPLG1CQUFtQjtJQUM5Qjs7T0FFRztJQUNILE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBTztZQUNMLFFBQVEsRUFBRSxtQkFBbUI7U0FDOUIsQ0FBQztJQUNKLENBQUM7dUdBUlUsbUJBQW1CO3dHQUFuQixtQkFBbUIsWUFaNUIsbUJBQW1CO1lBQ25CLHlCQUF5QjtZQUN6QiwwQkFBMEI7WUFDMUIsMEJBQTBCLGFBRzFCLG1CQUFtQjtZQUNuQix5QkFBeUI7WUFDekIsMEJBQTBCO1lBQzFCLDBCQUEwQjt3R0FHakIsbUJBQW1CLFlBWjVCLG1CQUFtQjtZQUNuQix5QkFBeUI7WUFDekIsMEJBQTBCO1lBQzFCLDBCQUEwQjs7MkZBU2pCLG1CQUFtQjtrQkFkL0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsbUJBQW1CO3dCQUNuQix5QkFBeUI7d0JBQ3pCLDBCQUEwQjt3QkFDMUIsMEJBQTBCO3FCQUMzQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsbUJBQW1CO3dCQUNuQix5QkFBeUI7d0JBQ3pCLDBCQUEwQjt3QkFDMUIsMEJBQTBCO3FCQUMzQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERpcmVjdGlvbnNCdXR0b25zQ29tcG9uZW50IH0gZnJvbSAnLi9kaXJlY3Rpb25zLWJ1dHRvbnMvZGlyZWN0aW9ucy1idXR0b25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXJlY3Rpb25zSW5wdXRzQ29tcG9uZW50IH0gZnJvbSAnLi9kaXJlY3Rpb25zLWlucHV0cy9kaXJlY3Rpb25zLWlucHV0cy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlyZWN0aW9uc1Jlc3VsdHNDb21wb25lbnQgfSBmcm9tICcuL2RpcmVjdGlvbnMtcmVzdWx0cy9kaXJlY3Rpb25zLXJlc3VsdHMuY29tcG9uZW50JztcbmltcG9ydCB7IERpcmVjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL2RpcmVjdGlvbnMuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIERpcmVjdGlvbnNDb21wb25lbnQsXG4gICAgRGlyZWN0aW9uc0lucHV0c0NvbXBvbmVudCxcbiAgICBEaXJlY3Rpb25zQnV0dG9uc0NvbXBvbmVudCxcbiAgICBEaXJlY3Rpb25zUmVzdWx0c0NvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRGlyZWN0aW9uc0NvbXBvbmVudCxcbiAgICBEaXJlY3Rpb25zSW5wdXRzQ29tcG9uZW50LFxuICAgIERpcmVjdGlvbnNCdXR0b25zQ29tcG9uZW50LFxuICAgIERpcmVjdGlvbnNSZXN1bHRzQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSWdvRGlyZWN0aW9uc01vZHVsZSB7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBpdCBoYXMgbm8gZWZmZWN0XG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPElnb0RpcmVjdGlvbnNNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IElnb0RpcmVjdGlvbnNNb2R1bGVcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { DirectionsService } from './shared';
|
|
2
|
+
import { provideDirectionsSourceService } from './shared/directions-source.service';
|
|
3
|
+
export function provideDirection(...sources) {
|
|
4
|
+
const providers = [
|
|
5
|
+
{
|
|
6
|
+
provide: DirectionsService,
|
|
7
|
+
useClass: DirectionsService
|
|
8
|
+
},
|
|
9
|
+
provideDirectionsSourceService()
|
|
10
|
+
];
|
|
11
|
+
for (const source of sources) {
|
|
12
|
+
providers.push(...source.providers);
|
|
13
|
+
}
|
|
14
|
+
return providers;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9ucy5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2RpcmVjdGlvbnMvZGlyZWN0aW9ucy5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDN0MsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFcEYsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixHQUFHLE9BQXNEO0lBRXpELE1BQU0sU0FBUyxHQUFlO1FBQzVCO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixRQUFRLEVBQUUsaUJBQWlCO1NBQzVCO1FBQ0QsOEJBQThCLEVBQUU7S0FDakMsQ0FBQztJQUVGLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7UUFDN0IsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIERpcmVjdGlvblNvdXJjZUZlYXR1cmUsXG4gIERpcmVjdGlvblNvdXJjZUtpbmRcbn0gZnJvbSAnLi9kaXJlY3Rpb25zLXNvdXJjZXMnO1xuaW1wb3J0IHsgRGlyZWN0aW9uc1NlcnZpY2UgfSBmcm9tICcuL3NoYXJlZCc7XG5pbXBvcnQgeyBwcm92aWRlRGlyZWN0aW9uc1NvdXJjZVNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9kaXJlY3Rpb25zLXNvdXJjZS5zZXJ2aWNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVEaXJlY3Rpb24oXG4gIC4uLnNvdXJjZXM6IERpcmVjdGlvblNvdXJjZUZlYXR1cmU8RGlyZWN0aW9uU291cmNlS2luZD5bXVxuKTogUHJvdmlkZXJbXSB7XG4gIGNvbnN0IHByb3ZpZGVyczogUHJvdmlkZXJbXSA9IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBEaXJlY3Rpb25zU2VydmljZSxcbiAgICAgIHVzZUNsYXNzOiBEaXJlY3Rpb25zU2VydmljZVxuICAgIH0sXG4gICAgcHJvdmlkZURpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlKClcbiAgXTtcblxuICBmb3IgKGNvbnN0IHNvdXJjZSBvZiBzb3VyY2VzKSB7XG4gICAgcHJvdmlkZXJzLnB1c2goLi4uc291cmNlLnByb3ZpZGVycyk7XG4gIH1cblxuICByZXR1cm4gcHJvdmlkZXJzO1xufVxuIl19
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export * from './shared';
|
|
2
2
|
export * from './directions.component';
|
|
3
|
+
export * from './directions.provider';
|
|
3
4
|
export * from './directions-sources';
|
|
4
5
|
export * from './directions-inputs';
|
|
5
6
|
export * from './directions-buttons';
|
|
6
7
|
export * from './directions-results';
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kaXJlY3Rpb25zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zaGFyZWQnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3Rpb25zLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGlvbnMucHJvdmlkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3Rpb25zLXNvdXJjZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3Rpb25zLWlucHV0cyc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGlvbnMtYnV0dG9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGlvbnMtcmVzdWx0cyc7XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9ucy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kaXJlY3Rpb25zL3NoYXJlZC9kaXJlY3Rpb25zLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2VvSnNvbkdlb21ldHJ5VHlwZXMgfSBmcm9tICdnZW9qc29uJztcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gJy4uLy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBTZWFyY2hNZXRhIH0gZnJvbSAnLi4vLi4vc2VhcmNoJztcbmltcG9ydCB7IFNlYXJjaFNvdXJjZSB9IGZyb20gJy4uLy4uL3NlYXJjaC9zaGFyZWQvc291cmNlcy9zb3VyY2UnO1xuaW1wb3J0IHtcbiAgRGlyZWN0aW9uUmVsYXRpdmVQb3NpdGlvblR5cGUsXG4gIERpcmVjdGlvblR5cGUsXG4gIERpcmVjdGlvbnNGb3JtYXQsXG4gIFByb3Bvc2FsVHlwZSxcbiAgU291cmNlRGlyZWN0aW9uc1R5cGVcbn0gZnJvbSAnLi9kaXJlY3Rpb25zLmVudW0nO1xuXG5leHBvcnQgaW50ZXJmYWNlIERpcmVjdGlvbk9wdGlvbnMge1xuICBvdmVydmlldz86IGJvb2xlYW47XG4gIHN0ZXBzPzogYm9vbGVhbjtcbiAgZ2VvbWV0cmllcz86IHN0cmluZztcbiAgYWx0ZXJuYXRpdmVzPzogYm9vbGVhbjtcbiAgY29udGludWVfc3RyYWlnaHQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVXaXRoU3RvcCBleHRlbmRzIEZlYXR1cmU8RmVhdHVyZVdpdGhTdG9wUHJvcGVydGllcz4ge31cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZVdpdGhEaXJlY3Rpb25cbiAgZXh0ZW5kcyBGZWF0dXJlPEZlYXR1cmVXaXRoRGlyZWN0aW9uUHJvcGVydGllcz4ge31cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZVdpdGhTdGVwIGV4dGVuZHMgRmVhdHVyZTxGZWF0dXJlV2l0aFN0ZXBQcm9wZXJ0aWVzPiB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVXaXRoU3RlcFByb3BlcnRpZXMge1xuICBpZDogc3RyaW5nO1xuICBzdGVwOiBJZ29TdGVwO1xuICB0eXBlOiBEaXJlY3Rpb25UeXBlO1xufVxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlV2l0aERpcmVjdGlvblByb3BlcnRpZXMge1xuICBpZDogc3RyaW5nO1xuICBkaXJlY3Rpb246IERpcmVjdGlvbjtcbiAgdHlwZTogRGlyZWN0aW9uVHlwZTtcbiAgYWN0aXZlOiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlV2l0aFN0b3BQcm9wZXJ0aWVzIHtcbiAgaWQ6IHN0cmluZztcbiAgc3RvcDogU3RvcDtcbiAgdHlwZTogRGlyZWN0aW9uVHlwZTtcbiAgc3RvcFRleHQ6IHN0cmluZztcbiAgc3RvcENvbG9yOiBzdHJpbmc7XG4gIHN0b3BPcGFjaXR5OiAxO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0b3Age1xuICBpZDogc3RyaW5nO1xuICB0ZXh0Pzogc3RyaW5nO1xuICBzZWFyY2hQcm9wb3NhbHM/OiBTb3VyY2VQcm9wb3NhbFtdO1xuICBjb29yZGluYXRlcz86IFtudW1iZXIsIG51bWJlcl07XG4gIHBvc2l0aW9uOiBudW1iZXI7XG4gIHJlbGF0aXZlUG9zaXRpb246IERpcmVjdGlvblJlbGF0aXZlUG9zaXRpb25UeXBlO1xuICBzdG9wUG9pbnQ/OiBzdHJpbmc7XG4gIHN0b3BQcm9wb3NhbHM/OiBbXTtcbiAgZGlyZWN0aW9uc1RleHQ/OiBzdHJpbmc7XG4gIHN0b3BDb29yZGluYXRlcz86IFtudW1iZXIsIG51bWJlcl07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlUHJvcG9zYWwge1xuICB0eXBlOiBQcm9wb3NhbFR5cGU7XG4gIHNvdXJjZTogU2VhcmNoU291cmNlO1xuICByZXN1bHRzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9W107XG4gIG1ldGE6IFNlYXJjaE1ldGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgc291cmNlOiBzdHJpbmc7XG4gIHNvdXJjZVR5cGU/OiBTb3VyY2VEaXJlY3Rpb25zVHlwZTtcbiAgb3JkZXI/OiBudW1iZXI7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBmb3JtYXQ/OiBEaXJlY3Rpb25zRm9ybWF0O1xuICBpY29uPzogc3RyaW5nO1xuICBwcm9qZWN0aW9uPzogc3RyaW5nO1xuICB3YXlwb2ludHM/OiBhbnk7XG4gIGRpc3RhbmNlPzogbnVtYmVyO1xuICBkdXJhdGlvbj86IG51bWJlcjtcbiAgZ2VvbWV0cnk/OiBEaXJlY3Rpb25zR2VvbWV0cnk7XG4gIGxlZ3M/OiBPc3JtTGVnW107XG4gIHN0ZXBzPzogSWdvU3RlcFtdO1xuICB3ZWlnaHQ/OiBudW1iZXI7XG4gIHdlaWdodF9uYW1lPzogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBEaXJlY3Rpb25zR2VvbWV0cnkge1xuICB0eXBlOiBHZW9Kc29uR2VvbWV0cnlUeXBlcztcbiAgY29vcmRpbmF0ZXM6IFthbnldO1xufVxuZXhwb3J0IGludGVyZmFjZSBPc3JtTGVnIHtcbiAgZGlzdGFuY2U/OiBudW1iZXI7XG4gIGR1cmF0aW9uPzogbnVtYmVyO1xuICBzdGVwcz86IE9zcm1TdGVwW107XG4gIHN1bW1hcnk6IHN0cmluZztcbiAgd2VpZ2h0PzogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBJZ29TdGVwIHtcbiAgLy8gUkVGRVIgVE8gVEhJUyBJTlRFUkZBQ0UgRk9SIFZBUklPVVMgU09VUkNFXG4gIGRpc3RhbmNlPzogbnVtYmVyO1xuICBkcml2aW5nX3NpZGU/OiBzdHJpbmc7XG4gIGR1cmF0aW9uPzogbnVtYmVyO1xuICBnZW9tZXRyeT86IERpcmVjdGlvbnNHZW9tZXRyeTtcbiAgaW50ZXJzZWN0aW9ucz86IE9zcm1JbnRlcnNlY3Rpb25bXTtcbiAgbWFuZXV2ZXI/OiBPc3JtTWFuZXV2ZXI7XG4gIG1vZGU/OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIE9zcm1TdGVwIHtcbiAgZGlzdGFuY2U/OiBudW1iZXI7XG4gIGRyaXZpbmdfc2lkZT86IHN0cmluZztcbiAgZHVyYXRpb24/OiBudW1iZXI7XG4gIGdlb21ldHJ5PzogRGlyZWN0aW9uc0dlb21ldHJ5O1xuICBpbnRlcnNlY3Rpb25zPzogT3NybUludGVyc2VjdGlvbltdO1xuICBtYW5ldXZlcj86IE9zcm1NYW5ldXZlcjtcbiAgbW9kZT86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgT3NybUludGVyc2VjdGlvbiB7XG4gIGJlYXJpbmc/OiBbYW55XTtcbiAgZW50cnk/OiBbYm9vbGVhbl07XG4gIGxvY2F0aW9uPzogW251bWJlciwgbnVtYmVyXTtcbiAgb3V0PzogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBPc3JtTWFuZXV2ZXIge1xuICBiZWFyaW5nX2FmdGVyPzogbnVtYmVyO1xuICBiZWFyaW5nX2JlZm9yZT86IG51bWJlcjtcbiAgbG9jYXRpb24/OiBbbnVtYmVyLCBudW1iZXJdO1xuICBtb2RpZmllcj86IHN0cmluZztcbiAgdHlwZT86IHN0cmluZztcbn1cbiJdfQ==
|