@igo2/geo 17.0.0 → 17.0.1-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +4 -4
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +6 -6
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +4 -4
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +4 -4
- package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +3 -3
- package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +3 -3
- package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +4 -4
- package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +4 -4
- package/esm2022/lib/catalog/catalog.module.mjs +4 -4
- package/esm2022/lib/catalog/shared/catalog.abstract.mjs +1 -1
- package/esm2022/lib/catalog/shared/catalog.interface.mjs +1 -1
- package/esm2022/lib/catalog/shared/catalog.service.mjs +17 -21
- package/esm2022/lib/datasource/shared/capabilities.interface.mjs +3 -1
- package/esm2022/lib/datasource/shared/capabilities.service.mjs +3 -3
- package/esm2022/lib/datasource/shared/datasource.service.mjs +6 -5
- package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +5 -3
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +4 -2
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +4 -2
- package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/datasource.mjs +2 -2
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +4 -2
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +4 -2
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +4 -2
- package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +4 -2
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +4 -2
- package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.mjs +4 -2
- package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +6 -5
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +4 -2
- package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +7 -6
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +4 -2
- package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +4 -2
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +4 -2
- package/esm2022/lib/datasource/shared/options/options-api.service.mjs +4 -4
- package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +4 -4
- package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +4 -4
- package/esm2022/lib/directions/directions-results/directions-results.component.mjs +3 -3
- package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +3 -3
- package/esm2022/lib/directions/directions.component.mjs +6 -7
- package/esm2022/lib/directions/directions.module.mjs +4 -4
- package/esm2022/lib/directions/shared/directions.interface.mjs +1 -1
- package/esm2022/lib/directions/shared/directions.service.mjs +12 -11
- package/esm2022/lib/directions/shared/directions.utils.mjs +3 -3
- package/esm2022/lib/directions/shared/store.mjs +1 -1
- package/esm2022/lib/download/download-button/download-button.component.mjs +3 -3
- package/esm2022/lib/download/download.module.mjs +4 -4
- package/esm2022/lib/download/shared/download.service.mjs +3 -3
- package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +4 -4
- package/esm2022/lib/draw/draw/draw-popup.component.mjs +9 -9
- package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +3 -3
- package/esm2022/lib/draw/draw/draw.component.mjs +15 -19
- package/esm2022/lib/draw/draw/draw.module.mjs +4 -4
- package/esm2022/lib/draw/drawingTool.module.mjs +4 -4
- package/esm2022/lib/draw/shared/draw-icon.service.mjs +4 -4
- package/esm2022/lib/draw/shared/draw.interface.mjs +1 -1
- package/esm2022/lib/draw/shared/draw.utils.mjs +3 -3
- package/esm2022/lib/feature/feature-details/feature-details.component.mjs +6 -6
- package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +3 -3
- package/esm2022/lib/feature/feature-details/feature-details.module.mjs +4 -4
- package/esm2022/lib/feature/feature-form/feature-form.component.mjs +5 -6
- package/esm2022/lib/feature/feature-form/feature-form.module.mjs +4 -4
- package/esm2022/lib/feature/feature.module.mjs +4 -4
- package/esm2022/lib/feature/shared/feature.interfaces.mjs +1 -1
- package/esm2022/lib/feature/shared/feature.utils.mjs +1 -2
- package/esm2022/lib/feature/shared/store.mjs +4 -4
- package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +2 -2
- package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +2 -3
- package/esm2022/lib/feature/shared/strategies/search.mjs +2 -3
- package/esm2022/lib/feature/shared/strategies/selection.mjs +1 -1
- package/esm2022/lib/filter/filter.module.mjs +4 -4
- package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +5 -6
- package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +5 -5
- package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +9 -29
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +8 -9
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +5 -5
- package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +5 -6
- package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +4 -4
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +3 -3
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +5 -6
- package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +3 -3
- package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +5 -6
- package/esm2022/lib/filter/shared/ogc-filter.interface.mjs +1 -1
- package/esm2022/lib/filter/shared/ogc-filter.mjs +3 -2
- package/esm2022/lib/filter/shared/ogc-filter.service.mjs +5 -6
- package/esm2022/lib/filter/shared/spatial-filter.service.mjs +7 -7
- package/esm2022/lib/filter/shared/time-filter.service.mjs +5 -6
- package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +5 -5
- package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +3 -3
- package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +7 -8
- package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +5 -6
- package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +17 -17
- package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +4 -4
- package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +3 -3
- package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +3 -3
- package/esm2022/lib/geo.module.mjs +5 -9
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +7 -8
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +4 -4
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +4 -4
- package/esm2022/lib/geometry/geometry.module.mjs +4 -4
- package/esm2022/lib/geometry/shared/controls/draw.mjs +1 -1
- package/esm2022/lib/geometry/shared/controls/modify.mjs +1 -4
- package/esm2022/lib/geometry/shared/controls/slice.mjs +3 -3
- package/esm2022/lib/geometry/shared/geometry.errors.mjs +1 -3
- package/esm2022/lib/geometry/shared/geometry.utils.mjs +2 -11
- package/esm2022/lib/import-export/export-button/export-button.component.mjs +5 -6
- package/esm2022/lib/import-export/import-export/import-export.component.mjs +25 -18
- package/esm2022/lib/import-export/import-export.module.mjs +4 -4
- package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +4 -4
- package/esm2022/lib/import-export/shared/export.service.mjs +5 -4
- package/esm2022/lib/import-export/shared/export.utils.mjs +2 -2
- package/esm2022/lib/import-export/shared/import.service.mjs +6 -6
- package/esm2022/lib/import-export/shared/import.utils.mjs +1 -1
- package/esm2022/lib/layer/layer-item/layer-item.component.mjs +4 -4
- package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +7 -7
- package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +4 -4
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +5 -5
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +5 -6
- package/esm2022/lib/layer/layer-list/layer-list-binding.directive.mjs +3 -3
- package/esm2022/lib/layer/layer-list/layer-list.component.mjs +4 -4
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +4 -4
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +5 -6
- package/esm2022/lib/layer/layer.module.mjs +4 -4
- package/esm2022/lib/layer/shared/clusterParam.mjs +1 -1
- package/esm2022/lib/layer/shared/layer.service.mjs +6 -5
- package/esm2022/lib/layer/shared/layers/image-layer.mjs +2 -2
- package/esm2022/lib/layer/shared/layers/layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/layer.mjs +1 -3
- package/esm2022/lib/layer/shared/layers/tile-layer.mjs +2 -2
- package/esm2022/lib/layer/shared/layers/vector-layer.mjs +5 -5
- package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +3 -3
- package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +6 -7
- package/esm2022/lib/layer/utils/outputLegend.mjs +3 -3
- package/esm2022/lib/layer/utils/vector-watcher.mjs +9 -9
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +3 -3
- package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +3 -3
- package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +7 -7
- package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +3 -3
- package/esm2022/lib/map/info-section/info-section.component.mjs +5 -6
- package/esm2022/lib/map/map-browser/map-browser.component.mjs +3 -3
- package/esm2022/lib/map/map-center/map-center.component.mjs +9 -9
- package/esm2022/lib/map/map.module.mjs +4 -4
- package/esm2022/lib/map/menu-button/menu-button.component.mjs +3 -3
- package/esm2022/lib/map/offline-button/offline-button.component.mjs +5 -6
- package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +5 -6
- package/esm2022/lib/map/shared/controllers/geolocation.mjs +10 -10
- package/esm2022/lib/map/shared/controllers/view.mjs +3 -3
- package/esm2022/lib/map/shared/hover-feature.directive.mjs +8 -11
- package/esm2022/lib/map/shared/linkedLayers.utils.mjs +5 -5
- package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +4 -4
- package/esm2022/lib/map/shared/map.mjs +4 -4
- package/esm2022/lib/map/shared/map.service.mjs +5 -6
- package/esm2022/lib/map/shared/map.utils.mjs +2 -3
- package/esm2022/lib/map/shared/mapOffline.directive.mjs +3 -3
- package/esm2022/lib/map/shared/projection.service.mjs +3 -3
- package/esm2022/lib/map/shared/projection.utils.mjs +2 -3
- package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +7 -6
- package/esm2022/lib/map/utils/layer-watcher.mjs +4 -2
- package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +5 -4
- package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +5 -6
- package/esm2022/lib/measure/measure.module.mjs +4 -4
- package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +5 -5
- package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +3 -3
- package/esm2022/lib/measure/measurer/measurer-item.component.mjs +5 -6
- package/esm2022/lib/measure/measurer/measurer.component.mjs +8 -16
- package/esm2022/lib/measure/measurer/measurer.module.mjs +4 -4
- package/esm2022/lib/measure/shared/measure.interfaces.mjs +1 -1
- package/esm2022/lib/measure/shared/measure.utils.mjs +1 -1
- package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +6 -6
- package/esm2022/lib/metadata/metadata.module.mjs +4 -4
- package/esm2022/lib/metadata/shared/metadata.service.mjs +5 -6
- package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +3 -3
- package/esm2022/lib/offline/geoDB/geoDB.service.mjs +6 -6
- package/esm2022/lib/offline/layerDB/layerDB.service.mjs +4 -4
- package/esm2022/lib/offline/shared/geo-network.service.mjs +4 -4
- package/esm2022/lib/overlay/shared/index.mjs +1 -3
- package/esm2022/lib/print/print/print.component.mjs +3 -3
- package/esm2022/lib/print/print-form/print-form.component.mjs +5 -5
- package/esm2022/lib/print/print.module.mjs +4 -4
- package/esm2022/lib/print/shared/print.service.mjs +32 -44
- package/esm2022/lib/query/query.module.mjs +4 -4
- package/esm2022/lib/query/shared/query-search-source.mjs +3 -3
- package/esm2022/lib/query/shared/query.directive.mjs +4 -4
- package/esm2022/lib/query/shared/query.enums.mjs +3 -1
- package/esm2022/lib/query/shared/query.service.mjs +23 -21
- package/esm2022/lib/search/search-bar/search-bar.component.mjs +4 -4
- package/esm2022/lib/search/search-bar/search-bar.module.mjs +4 -4
- package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +3 -3
- package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +7 -9
- package/esm2022/lib/search/search-results/search-results-item.component.mjs +10 -12
- package/esm2022/lib/search/search-results/search-results.component.mjs +4 -4
- package/esm2022/lib/search/search-results/search-results.module.mjs +4 -4
- package/esm2022/lib/search/search-selector/search-selector.component.mjs +4 -4
- package/esm2022/lib/search/search-selector/search-selector.module.mjs +4 -4
- package/esm2022/lib/search/search-settings/search-settings.component.mjs +4 -4
- package/esm2022/lib/search/search-settings/search-settings.module.mjs +4 -4
- package/esm2022/lib/search/search.module.mjs +4 -4
- package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +5 -4
- package/esm2022/lib/search/shared/search.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/search.service.mjs +4 -4
- package/esm2022/lib/search/shared/search.utils.mjs +1 -1
- package/esm2022/lib/search/shared/sources/cadastre.mjs +3 -3
- package/esm2022/lib/search/shared/sources/coordinates.mjs +6 -6
- package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +2 -2
- package/esm2022/lib/search/shared/sources/icherche-icons.mjs +1 -1
- package/esm2022/lib/search/shared/sources/icherche.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/icherche.mjs +14 -13
- package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/ilayer.mjs +10 -10
- package/esm2022/lib/search/shared/sources/nominatim.mjs +4 -4
- package/esm2022/lib/search/shared/sources/source.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/source.mjs +3 -2
- package/esm2022/lib/search/shared/sources/storedqueries.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/storedqueries.mjs +7 -10
- package/esm2022/lib/search/shared/sources/workspace.mjs +8 -8
- package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +2 -1
- package/esm2022/lib/style/shared/feature/feature-style.mjs +3 -3
- package/esm2022/lib/style/shared/overlay/overlay-marker-style.utils.mjs +10 -16
- package/esm2022/lib/style/shared/overlay/overlay-style.utils.mjs +1 -1
- package/esm2022/lib/style/shared/vector/vector-style.interface.mjs +1 -1
- package/esm2022/lib/style/style-list/style-list.interface.mjs +1 -1
- package/esm2022/lib/style/style-list/style-list.module.mjs +4 -4
- package/esm2022/lib/style/style-list/style-list.provider.mjs +2 -2
- package/esm2022/lib/style/style-list/style-list.service.mjs +5 -5
- package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +4 -4
- package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +4 -4
- package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +5 -5
- package/esm2022/lib/style/style-service/draw-style.service.mjs +5 -6
- package/esm2022/lib/style/style-service/style.service.mjs +4 -4
- package/esm2022/lib/style/style.module.mjs +4 -4
- package/esm2022/lib/toast/toast.component.mjs +5 -6
- package/esm2022/lib/toast/toast.module.mjs +4 -4
- package/esm2022/lib/utils/id-generator.mjs +6 -4
- package/esm2022/lib/utils/osmLinks.mjs +1 -1
- package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +3 -3
- package/esm2022/lib/wkt/shared/wkt.service.mjs +7 -8
- package/esm2022/lib/wkt/wkt.module.mjs +4 -4
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +3 -3
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +4 -4
- package/esm2022/lib/workspace/shared/edition-workspace.mjs +1 -1
- package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +11 -9
- package/esm2022/lib/workspace/shared/feature-workspace.mjs +1 -1
- package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +3 -3
- package/esm2022/lib/workspace/shared/wfs-workspace.mjs +1 -1
- package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +3 -3
- package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +7 -5
- package/esm2022/lib/workspace/shared/workspace.utils.mjs +2 -2
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +3 -3
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +4 -4
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +3 -3
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +4 -4
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +3 -3
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +4 -4
- package/esm2022/lib/workspace/workspace.module.mjs +4 -4
- package/esm2022/public_api.mjs +1 -2
- package/fesm2022/igo2-geo.mjs +943 -1071
- package/fesm2022/igo2-geo.mjs.map +1 -1
- package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +1 -1
- package/lib/catalog/shared/catalog.abstract.d.ts +2 -6
- package/lib/catalog/shared/catalog.interface.d.ts +2 -6
- package/lib/catalog/shared/catalogs.d.ts +2 -2
- package/lib/datasource/shared/datasources/cluster-datasource.interface.d.ts +2 -2
- package/lib/datasource/shared/datasources/datasource.d.ts +2 -2
- package/lib/datasource/shared/datasources/datasource.interface.d.ts +4 -12
- package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +2 -2
- package/lib/datasource/shared/datasources/mvt-datasource.interface.d.ts +2 -2
- package/lib/datasource/shared/datasources/websocket-datasource.d.ts +3 -3
- package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +1 -1
- package/lib/datasource/shared/datasources/xyz-datasource.interface.d.ts +2 -2
- package/lib/directions/shared/directions.interface.d.ts +4 -9
- package/lib/directions/shared/directions.utils.d.ts +2 -2
- package/lib/draw/draw/draw.component.d.ts +1 -1
- package/lib/draw/shared/draw-icon.service.d.ts +1 -1
- package/lib/draw/shared/draw.interface.d.ts +1 -2
- package/lib/draw/shared/draw.utils.d.ts +1 -1
- package/lib/feature/feature-details/feature-details.component.d.ts +1 -3
- package/lib/feature/feature-details/feature-details.directive.d.ts +1 -3
- package/lib/feature/feature-form/feature-form.component.d.ts +3 -8
- package/lib/feature/shared/feature.interfaces.d.ts +11 -17
- package/lib/filter/ogc-filter-button/ogc-filter-button.component.d.ts +0 -1
- package/lib/filter/ogc-filter-form/ogc-filter-form.component.d.ts +1 -3
- package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +2 -4
- package/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.d.ts +2 -2
- package/lib/filter/ogc-filterable-form/ogc-filterable-form.component.d.ts +0 -1
- package/lib/filter/ogc-filterable-list/ogc-filterable-list.component.d.ts +0 -1
- package/lib/filter/shared/ogc-filter-time.service.d.ts +0 -1
- package/lib/filter/shared/ogc-filter.interface.d.ts +2 -4
- package/lib/filter/shared/ogc-filter.service.d.ts +0 -1
- package/lib/filter/shared/spatial-filter.service.d.ts +1 -3
- package/lib/filter/shared/time-filter.service.d.ts +0 -1
- package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +2 -6
- package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +2 -6
- package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +3 -8
- package/lib/filter/time-filter-button/time-filter-button.component.d.ts +0 -1
- package/lib/filter/time-filter-form/time-filter-form.component.d.ts +10 -10
- package/lib/geo.module.d.ts +8 -9
- package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +3 -5
- package/lib/geometry/geometry-form-field/geometry-form-field.component.d.ts +1 -3
- package/lib/geometry/shared/geometry.utils.d.ts +1 -8
- package/lib/import-export/export-button/export-button.component.d.ts +0 -1
- package/lib/layer/layer-legend/layer-legend.component.d.ts +1 -3
- package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +0 -1
- package/lib/layer/layer-list-tool/layer-list-tool.service.d.ts +0 -1
- package/lib/layer/shared/clusterParam.d.ts +1 -3
- package/lib/layer/shared/layers/layer.interface.d.ts +1 -3
- package/lib/layer/shared/layers/vector-layer.d.ts +1 -1
- package/lib/layer/track-feature-button/track-feature-button.component.d.ts +0 -1
- package/lib/layer/utils/outputLegend.d.ts +2 -2
- package/lib/map/info-section/info-section.component.d.ts +0 -1
- package/lib/map/map-center/map-center.component.d.ts +0 -1
- package/lib/map/offline-button/offline-button.component.d.ts +0 -1
- package/lib/map/rotation-button/rotation-button.component.d.ts +3 -2
- package/lib/map/shared/map.d.ts +2 -2
- package/lib/map/shared/map.service.d.ts +0 -1
- package/lib/map/swipe-control/swipe-control.component.d.ts +0 -1
- package/lib/map/zoom-button/zoom-button.component.d.ts +0 -1
- package/lib/measure/measurer/measure-format.pipe.d.ts +1 -1
- package/lib/measure/measurer/measurer-item.component.d.ts +0 -1
- package/lib/measure/shared/measure.interfaces.d.ts +1 -2
- package/lib/metadata/shared/metadata.service.d.ts +0 -1
- package/lib/overlay/shared/index.d.ts +0 -2
- package/lib/print/shared/print.service.d.ts +7 -8
- package/lib/query/shared/query.service.d.ts +0 -1
- package/lib/search/search-results/search-results.component.d.ts +5 -15
- package/lib/search/shared/search.interfaces.d.ts +1 -3
- package/lib/search/shared/sources/coordinates.providers.d.ts +1 -1
- package/lib/search/shared/sources/icherche-icons.d.ts +1 -3
- package/lib/search/shared/sources/icherche.interfaces.d.ts +2 -6
- package/lib/search/shared/sources/ilayer.interfaces.d.ts +4 -8
- package/lib/search/shared/sources/source.interfaces.d.ts +2 -6
- package/lib/search/shared/sources/storedqueries.interfaces.d.ts +2 -6
- package/lib/style/shared/feature/feature-style.d.ts +2 -2
- package/lib/style/shared/vector/vector-style.interface.d.ts +12 -20
- package/lib/style/style-list/style-list.interface.d.ts +1 -3
- package/lib/style/style-list/style-list.provider.d.ts +2 -2
- package/lib/style/style-service/draw-style.service.d.ts +0 -1
- package/lib/style/style-service/style.service.d.ts +1 -3
- package/lib/toast/toast.component.d.ts +0 -1
- package/lib/utils/id-generator.d.ts +1 -2
- package/lib/wkt/shared/wkt.service.d.ts +0 -1
- package/lib/workspace/shared/edition-workspace.service.d.ts +2 -6
- package/package.json +18 -19
- package/public_api.d.ts +0 -1
- package/src/lib/catalog/catalog-browser/catalog-browser.theming.scss +1 -1
- package/src/lib/directions/directions-results/directions-results.theming.scss +1 -1
- package/src/lib/draw/draw.theming.scss +4 -4
- package/src/lib/feature/feature-details/feature-details.theming.scss +1 -1
- package/src/lib/filter/ogc-filter-selection/ogc-filter-selection.theming.scss +3 -3
- package/src/lib/layer/layer-item/layer-item.theme.scss +4 -4
- package/src/lib/layer/layer-legend/layer-legend.theming.scss +1 -1
- package/src/lib/layer/layer-list-tool/layer-list-tool.theming.scss +1 -1
- package/src/lib/map/map-browser/map-browser.theming.scss +5 -5
- package/src/lib/map/menu-button/menu-button.theming.scss +2 -2
- package/src/lib/map/zoom-button/zoom-button.theming.scss +4 -4
- package/src/lib/measure/measurer/measurer.theming.scss +2 -2
- package/src/lib/workspace/confirmation-popup/confirmation-popup.theming.scss +2 -2
- package/esm2022/lib/overlay/overlay.module.mjs +0 -24
- package/esm2022/lib/overlay/shared/overlay.directive.mjs +0 -39
- package/esm2022/lib/overlay/shared/overlay.service.mjs +0 -26
- package/lib/overlay/overlay.module.d.ts +0 -12
- package/lib/overlay/shared/overlay.directive.d.ts +0 -18
- package/lib/overlay/shared/overlay.service.d.ts +0 -14
|
@@ -135,7 +135,7 @@ export class IgoMap {
|
|
|
135
135
|
setTarget(id) {
|
|
136
136
|
this.ol.setTarget(id);
|
|
137
137
|
if (id !== undefined) {
|
|
138
|
-
this.layerWatcher.subscribe(() =>
|
|
138
|
+
this.layerWatcher.subscribe(() => void 1, null);
|
|
139
139
|
}
|
|
140
140
|
else {
|
|
141
141
|
this.layerWatcher.unsubscribe();
|
|
@@ -247,7 +247,7 @@ export class IgoMap {
|
|
|
247
247
|
* @param layer Layer to add
|
|
248
248
|
* @param push DEPRECATED
|
|
249
249
|
*/
|
|
250
|
-
addLayer(layer
|
|
250
|
+
addLayer(layer) {
|
|
251
251
|
this.addLayers([layer]);
|
|
252
252
|
}
|
|
253
253
|
/**
|
|
@@ -255,7 +255,7 @@ export class IgoMap {
|
|
|
255
255
|
* @param layers Layers to add
|
|
256
256
|
* @param push DEPRECATED
|
|
257
257
|
*/
|
|
258
|
-
addLayers(layers
|
|
258
|
+
addLayers(layers) {
|
|
259
259
|
let offsetZIndex = 0;
|
|
260
260
|
let offsetBaseLayerZIndex = 0;
|
|
261
261
|
const addedLayers = layers
|
|
@@ -434,4 +434,4 @@ export class IgoMap {
|
|
|
434
434
|
return this.layers.findIndex((_layer) => _layer === layer);
|
|
435
435
|
}
|
|
436
436
|
}
|
|
437
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxLQUFLLE1BQU0sUUFBUSxDQUFDO0FBRTNCLE9BQU8sTUFBdUIsTUFBTSxTQUFTLENBQUM7QUFDOUMsT0FBTyxvQkFBb0IsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLGtCQUFrQixNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxhQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFFbEMsT0FBTyxLQUFLLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVqQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLGVBQWUsRUFBVyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3JFLE9BQU8sRUFBUyxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFDTCwyQkFBMkIsRUFDM0IsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6QixpQ0FBaUMsRUFDbEMsTUFBTSxzQkFBc0IsQ0FBQztBQVc5Qiw4RUFBOEU7QUFDOUUsb0NBQW9DO0FBQ3BDLE1BQU0sT0FBTyxNQUFNO0lBNENQO0lBQ0E7SUE1Q0gsRUFBRSxDQUFRO0lBQ1YsY0FB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T0FHRztJQUNLLFNBQVMsQ0FBQyxNQUFlO1FBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGtCQUFrQixDQUFDLE1BQWU7UUFDeEMsNEJBQTRCO1FBQzVCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FDaEIsQ0FBQyxNQUFhLEVBQUUsTUFBYSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQ2hFLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGFBQWEsQ0FBQyxLQUFZO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFhLEVBQUUsRUFBRSxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsQ0FBQztJQUNwRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9jb25maWcnO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL3N0b3JhZ2UnO1xuaW1wb3J0IHsgU3ViamVjdFN0YXR1cyB9IGZyb20gJ0BpZ28yL3V0aWxzJztcblxuaW1wb3J0IG9sTWFwIGZyb20gJ29sL01hcCc7XG5pbXBvcnQgeyBPYmplY3RFdmVudCB9IGZyb20gJ29sL09iamVjdCc7XG5pbXBvcnQgb2xWaWV3LCB7IFZpZXdPcHRpb25zIH0gZnJvbSAnb2wvVmlldyc7XG5pbXBvcnQgb2xDb250cm9sQXR0cmlidXRpb24gZnJvbSAnb2wvY29udHJvbC9BdHRyaWJ1dGlvbic7XG5pbXBvcnQgb2xDb250cm9sU2NhbGVMaW5lIGZyb20gJ29sL2NvbnRyb2wvU2NhbGVMaW5lJztcbmltcG9ydCAqIGFzIG9saW50ZXJhY3Rpb24gZnJvbSAnb2wvaW50ZXJhY3Rpb24nO1xuaW1wb3J0IG9sTGF5ZXIgZnJvbSAnb2wvbGF5ZXIvTGF5ZXInO1xuaW1wb3J0ICogYXMgb2xwcm9qIGZyb20gJ29sL3Byb2onO1xuaW1wb3J0IE9sUHJvamVjdGlvbiBmcm9tICdvbC9wcm9qL1Byb2plY3Rpb24nO1xuaW1wb3J0ICogYXMgb2xwcm9qNCBmcm9tICdvbC9wcm9qL3Byb2o0JztcbmltcG9ydCBvbFNvdXJjZSBmcm9tICdvbC9zb3VyY2UvU291cmNlJztcbmltcG9ydCB7IGdldFVpZCB9IGZyb20gJ29sL3V0aWwnO1xuXG5pbXBvcnQgcHJvajQgZnJvbSAncHJvajQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBwYWlyd2lzZSwgc2tpcFdoaWxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZlYXR1cmVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvZmVhdHVyZS1kYXRhc291cmNlJztcbmltcG9ydCB7IExheWVyLCBWZWN0b3JMYXllciB9IGZyb20gJy4uLy4uL2xheWVyL3NoYXJlZC9sYXllcnMnO1xuaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJy4uLy4uL292ZXJsYXkvc2hhcmVkL292ZXJsYXknO1xuaW1wb3J0IHsgTGF5ZXJXYXRjaGVyIH0gZnJvbSAnLi4vdXRpbHMvbGF5ZXItd2F0Y2hlcic7XG5pbXBvcnQgeyBNYXBHZW9sb2NhdGlvbkNvbnRyb2xsZXIgfSBmcm9tICcuL2NvbnRyb2xsZXJzL2dlb2xvY2F0aW9uJztcbmltcG9ydCB7IE1hcFZpZXdDb250cm9sbGVyIH0gZnJvbSAnLi9jb250cm9sbGVycy92aWV3JztcbmltcG9ydCB7XG4gIGdldEFsbENoaWxkTGF5ZXJzQnlEZWxldGlvbixcbiAgZ2V0Um9vdFBhcmVudEJ5RGVsZXRpb24sXG4gIGhhbmRsZUxheWVyUHJvcGVydHlDaGFuZ2UsXG4gIGluaXRMYXllclN5bmNGcm9tUm9vdFBhcmVudExheWVyc1xufSBmcm9tICcuL2xpbmtlZExheWVycy51dGlscyc7XG5pbXBvcnQgdHlwZSB7IE1hcEJhc2UgfSBmcm9tICcuL21hcC5hYnN0cmFjdCc7XG5pbXBvcnQge1xuICBNYXBBdHRyaWJ1dGlvbk9wdGlvbnMsXG4gIE1hcENvbnRyb2xzT3B0aW9ucyxcbiAgTWFwRXh0ZW50LFxuICBNYXBPcHRpb25zLFxuICBNYXBTY2FsZUxpbmVPcHRpb25zLFxuICBNYXBWaWV3T3B0aW9uc1xufSBmcm9tICcuL21hcC5pbnRlcmZhY2UnO1xuXG4vLyBUT0RPOiBUaGlzIGNsYXNzIGlzIG1lc3N5LiBDbGVhcmx5IGRlZmluZSBpdCdzIHNjb3BlIGFuZCB0aGUgbWFwIGJyb3dzZXIncy5cbi8vIE1vdmUgc29tZSBzdHVmZiBpbnRvIGNvbnRyb2xsZXJzLlxuZXhwb3J0IGNsYXNzIElnb01hcCBpbXBsZW1lbnRzIE1hcEJhc2Uge1xuICBwdWJsaWMgb2w6IG9sTWFwO1xuICBwdWJsaWMgZm9yY2VkT2ZmbGluZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIGxheWVycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PExheWVyW10+KFtdKTtcbiAgcHVibGljIGxheWVyc0FkZGVkQnlDbGljayQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PExheWVyW10+KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyBzdGF0dXMkOiBTdWJqZWN0PFN1YmplY3RTdGF0dXM+O1xuICBwdWJsaWMgcHJvcGVydHlDaGFuZ2UkOiBTdWJqZWN0PHsgZXZlbnQ6IE9iamVjdEV2ZW50OyBsYXllcjogTGF5ZXIgfT47XG4gIHB1YmxpYyBvdmVybGF5OiBPdmVybGF5O1xuICBwdWJsaWMgcXVlcnlSZXN1bHRzT3ZlcmxheTogT3ZlcmxheTtcbiAgcHVibGljIHNlYXJjaFJlc3VsdHNPdmVybGF5OiBPdmVybGF5O1xuICBwdWJsaWMgdmlld0NvbnRyb2xsZXI6IE1hcFZpZXdDb250cm9sbGVyO1xuICBwdWJsaWMgZ2VvbG9jYXRpb25Db250cm9sbGVyOiBNYXBHZW9sb2NhdGlvbkNvbnRyb2xsZXI7XG4gIHB1YmxpYyBzd2lwZUVuYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyBtYXBDZW50ZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyBzZWxlY3RlZEZlYXR1cmVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TGF5ZXJbXT4obnVsbCk7XG5cbiAgcHVibGljIGJ1ZmZlckRhdGFTb3VyY2U6IEZlYXR1cmVEYXRhU291cmNlO1xuXG4gIHByaXZhdGUgbGF5ZXJXYXRjaGVyOiBMYXllcldhdGNoZXI7XG4gIHByaXZhdGUgb3B0aW9uczogTWFwT3B0aW9ucztcbiAgcHJpdmF0ZSBtYXBWaWV3T3B0aW9uczogTWFwVmlld09wdGlvbnM7XG4gIHByaXZhdGUgZGVmYXVsdE9wdGlvbnM6IFBhcnRpYWw8TWFwT3B0aW9ucz4gPSB7XG4gICAgY29udHJvbHM6IHsgYXR0cmlidXRpb246IGZhbHNlIH1cbiAgfTtcblxuICBnZXQgbGF5ZXJzKCk6IExheWVyW10ge1xuICAgIHJldHVybiB0aGlzLmxheWVycyQudmFsdWU7XG4gIH1cblxuICAvKiogQGRlcHJlY2F0ZWQgdXNlIHByb2plY3Rpb25Db2RlICovXG4gIGdldCBwcm9qZWN0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvamVjdGlvbkNvZGU7XG4gIH1cblxuICBnZXQgdmlld1Byb2plY3Rpb24oKTogb2xwcm9qLlByb2plY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLnZpZXdDb250cm9sbGVyLmdldE9sUHJvamVjdGlvbigpO1xuICB9XG5cbiAgZ2V0IHByb2plY3Rpb25Db2RlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudmlld1Byb2plY3Rpb24uZ2V0Q29kZSgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgb3B0aW9ucz86IE1hcE9wdGlvbnMsXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZT86IFN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZT86IENvbmZpZ1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5kZWZhdWx0T3B0aW9ucywgb3B0aW9ucyk7XG4gICAgdGhpcy5sYXllcldhdGNoZXIgPSBuZXcgTGF5ZXJXYXRjaGVyKCk7XG4gICAgdGhpcy5zdGF0dXMkID0gdGhpcy5sYXllcldhdGNoZXIuc3RhdHVzJDtcbiAgICB0aGlzLnByb3BlcnR5Q2hhbmdlJCA9IHRoaXMubGF5ZXJXYXRjaGVyLnByb3BlcnR5Q2hhbmdlJDtcbiAgICBvbHByb2o0LnJlZ2lzdGVyKHByb2o0KTtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIGluaXQoKSB7XG4gICAgY29uc3QgY29udHJvbHMgPSBbXTtcbiAgICBpZiAodGhpcy5vcHRpb25zLmNvbnRyb2xzKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmNvbnRyb2xzLmF0dHJpYnV0aW9uKSB7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0aW9uT3B0ID0gKFxuICAgICAgICAgIHRoaXMub3B0aW9ucy5jb250cm9scy5hdHRyaWJ1dGlvbiA9PT0gdHJ1ZVxuICAgICAgICAgICAgPyB7fVxuICAgICAgICAgICAgOiB0aGlzLm9wdGlvbnMuY29udHJvbHMuYXR0cmlidXRpb25cbiAgICAgICAgKSBhcyBNYXBBdHRyaWJ1dGlvbk9wdGlvbnM7XG4gICAgICAgIGNvbnRyb2xzLnB1c2gobmV3IG9sQ29udHJvbEF0dHJpYnV0aW9uKGF0dHJpYnV0aW9uT3B0KSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmNvbnRyb2xzLnNjYWxlTGluZSkge1xuICAgICAgICBjb25zdCBzY2FsZUxpbmVPcHQgPSAoXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmNvbnRyb2xzLnNjYWxlTGluZSA9PT0gdHJ1ZVxuICAgICAgICAgICAgPyB7fVxuICAgICAgICAgICAgOiB0aGlzLm9wdGlvbnMuY29udHJvbHMuc2NhbGVMaW5lXG4gICAgICAgICkgYXMgTWFwU2NhbGVMaW5lT3B0aW9ucztcbiAgICAgICAgY29udHJvbHMucHVzaChuZXcgb2xDb250cm9sU2NhbGVMaW5lKHNjYWxlTGluZU9wdCkpO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgaW50ZXJhY3Rpb25zID0ge307XG4gICAgaWYgKHRoaXMub3B0aW9ucy5pbnRlcmFjdGlvbnMgPT09IGZhbHNlKSB7XG4gICAgICBpbnRlcmFjdGlvbnMgPSB7XG4gICAgICAgIGFsdFNoaWZ0RHJhZ1JvdGF0ZTogZmFsc2UsXG4gICAgICAgIGRvdWJsZUNsaWNrWm9vbTogZmFsc2UsXG4gICAgICAgIGtleWJvYXJkOiBmYWxzZSxcbiAgICAgICAgbW91c2VXaGVlbFpvb206IGZhbHNlLFxuICAgICAgICBzaGlmdERyYWdab29tOiBmYWxzZSxcbiAgICAgICAgZHJhZ1BhbjogZmFsc2UsXG4gICAgICAgIHBpbmNoUm90YXRlOiBmYWxzZSxcbiAgICAgICAgcGluY2hab29tOiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLm9sID0gbmV3IG9sTWFwKHtcbiAgICAgIGludGVyYWN0aW9uczogb2xpbnRlcmFjdGlvbi5kZWZhdWx0cyhpbnRlcmFjdGlvbnMpLFxuICAgICAgY29udHJvbHNcbiAgICB9KTtcblxuICAgIHRoaXMuc2V0Vmlldyh0aGlzLm9wdGlvbnMudmlldyB8fCB7fSk7XG4gICAgdGhpcy52aWV3Q29udHJvbGxlciA9IG5ldyBNYXBWaWV3Q29udHJvbGxlcih7XG4gICAgICBzdGF0ZUhpc3Rvcnk6IHRydWVcbiAgICB9KTtcbiAgICB0aGlzLnZpZXdDb250cm9sbGVyLnNldE9sTWFwKHRoaXMub2wpO1xuICAgIHRoaXMub3ZlcmxheSA9IG5ldyBPdmVybGF5KHRoaXMpO1xuICAgIHRoaXMucXVlcnlSZXN1bHRzT3ZlcmxheSA9IG5ldyBPdmVybGF5KHRoaXMpO1xuICAgIHRoaXMuc2VhcmNoUmVzdWx0c092ZXJsYXkgPSBuZXcgT3ZlcmxheSh0aGlzKTtcbiAgICB0aGlzLm9sLm9uY2UoJ3JlbmRlcmNvbXBsZXRlJywgKCkgPT4ge1xuICAgICAgdGhpcy5nZW9sb2NhdGlvbkNvbnRyb2xsZXIgPSBuZXcgTWFwR2VvbG9jYXRpb25Db250cm9sbGVyKFxuICAgICAgICB0aGlzLFxuICAgICAgICB7XG4gICAgICAgICAgcHJvamVjdGlvbjogdGhpcy52aWV3Q29udHJvbGxlci5nZXRPbFByb2plY3Rpb24oKVxuICAgICAgICB9LFxuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLFxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2VcbiAgICAgICk7XG4gICAgICB0aGlzLmdlb2xvY2F0aW9uQ29udHJvbGxlci5zZXRPbE1hcCh0aGlzLm9sKTtcbiAgICAgIGlmICh0aGlzLmdlb2xvY2F0aW9uQ29udHJvbGxlcikge1xuICAgICAgICB0aGlzLmdlb2xvY2F0aW9uQ29udHJvbGxlci51cGRhdGVHZW9sb2NhdGlvbk9wdGlvbnMoXG4gICAgICAgICAgdGhpcy5tYXBWaWV3T3B0aW9uc1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy5sYXllcnMkLnBpcGUocGFpcndpc2UoKSkuc3Vic2NyaWJlKChbcHJldkxheWVycywgY3VycmVudExheWVyc10pID0+IHtcbiAgICAgICAgbGV0IHByZXZMYXllcnNJZDtcbiAgICAgICAgaWYgKHByZXZMYXllcnMpIHtcbiAgICAgICAgICBwcmV2TGF5ZXJzSWQgPSBwcmV2TGF5ZXJzLm1hcCgobCkgPT4gbC5pZCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGF5ZXJzID0gY3VycmVudExheWVycy5maWx0ZXIoXG4gICAgICAgICAgKGwpID0+ICFwcmV2TGF5ZXJzSWQuaW5jbHVkZXMobC5pZClcbiAgICAgICAgKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGxheWVyIG9mIGxheWVycykge1xuICAgICAgICAgIGlmIChsYXllci5vcHRpb25zLmxpbmtlZExheWVycykge1xuICAgICAgICAgICAgbGF5ZXIub2wub25jZSgncG9zdHJlbmRlcicsICgpID0+IHtcbiAgICAgICAgICAgICAgaW5pdExheWVyU3luY0Zyb21Sb290UGFyZW50TGF5ZXJzKHRoaXMsIGxheWVycyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy52aWV3Q29udHJvbGxlci5tb25pdG9yUm90YXRpb24oKTtcbiAgICB9KTtcbiAgICB0aGlzLnByb3BlcnR5Q2hhbmdlJFxuICAgICAgLnBpcGUoc2tpcFdoaWxlKChwYykgPT4gIXBjKSlcbiAgICAgIC5zdWJzY3JpYmUoKHApID0+IGhhbmRsZUxheWVyUHJvcGVydHlDaGFuZ2UodGhpcywgcC5ldmVudCwgcC5sYXllcikpO1xuICB9XG5cbiAgc2V0VGFyZ2V0KGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9sLnNldFRhcmdldChpZCk7XG4gICAgaWYgKGlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubGF5ZXJXYXRjaGVyLnN1YnNjcmliZSgoKSA9PiB7fSwgbnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGF5ZXJXYXRjaGVyLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlVmlldyhvcHRpb25zOiBNYXBWaWV3T3B0aW9ucykge1xuICAgIGNvbnN0IGN1cnJlbnRWaWV3ID0gdGhpcy5vbC5nZXRWaWV3KCk7XG4gICAgY29uc3Qgdmlld09wdGlvbnM6IE1hcFZpZXdPcHRpb25zID0ge1xuICAgICAgLi4uY3VycmVudFZpZXcuZ2V0UHJvcGVydGllcygpLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH07XG5cbiAgICBpZiAob3B0aW9ucy56b29tICYmIG9wdGlvbnMucmVzb2x1dGlvbiA9PSBudWxsKSB7XG4gICAgICB2aWV3T3B0aW9ucy5yZXNvbHV0aW9uID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHRoaXMuc2V0Vmlldyh2aWV3T3B0aW9ucyk7XG4gICAgaWYgKG9wdGlvbnMubWF4Wm9vbU9uRXh0ZW50KSB7XG4gICAgICB0aGlzLnZpZXdDb250cm9sbGVyLm1heFpvb21PbkV4dGVudCA9IG9wdGlvbnMubWF4Wm9vbU9uRXh0ZW50O1xuICAgIH1cbiAgICB0aGlzLm1hcFZpZXdPcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIG1hcCB2aWV3XG4gICAqIEBwYXJhbSBvcHRpb25zIE1hcCB2aWV3IG9wdGlvbnNcbiAgICovXG4gIHNldFZpZXcob3B0aW9uczogTWFwVmlld09wdGlvbnMpIHtcbiAgICBpZiAodGhpcy52aWV3Q29udHJvbGxlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnZpZXdDb250cm9sbGVyLmNsZWFyU3RhdGVIaXN0b3J5KCk7XG4gICAgfVxuXG4gICAgY29uc3Qgdmlld09wdGlvbnM6IFZpZXdPcHRpb25zID0geyBjb25zdHJhaW5SZXNvbHV0aW9uOiB0cnVlLCAuLi5vcHRpb25zIH07XG4gICAgaWYgKG9wdGlvbnMuY2VudGVyKSB7XG4gICAgICB2aWV3T3B0aW9ucy5jZW50ZXIgPSBvbHByb2ouZnJvbUxvbkxhdChcbiAgICAgICAgb3B0aW9ucy5jZW50ZXIsXG4gICAgICAgIG9wdGlvbnMucHJvamVjdGlvblxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLm9sLnNldFZpZXcobmV3IG9sVmlldyh2aWV3T3B0aW9ucykpO1xuXG4gICAgaWYgKG9wdGlvbnMubWF4TGF5ZXJab29tRXh0ZW50KSB7XG4gICAgICB0aGlzLnZpZXdDb250cm9sbGVyLm1heExheWVyWm9vbUV4dGVudCA9IG9wdGlvbnMubWF4TGF5ZXJab29tRXh0ZW50O1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUNvbnRyb2xzKHZhbHVlOiBNYXBDb250cm9sc09wdGlvbnMpIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRyb2xzID0gW107XG4gICAgaWYgKHZhbHVlLmF0dHJpYnV0aW9uKSB7XG4gICAgICBjb25zdCBhdHRyaWJ1dGlvbk9wdCA9IChcbiAgICAgICAgdmFsdWUuYXR0cmlidXRpb24gPT09IHRydWUgPyB7fSA6IHZhbHVlLmF0dHJpYnV0aW9uXG4gICAgICApIGFzIE1hcEF0dHJpYnV0aW9uT3B0aW9ucztcbiAgICAgIGNvbnRyb2xzLnB1c2gobmV3IG9sQ29udHJvbEF0dHJpYnV0aW9uKGF0dHJpYnV0aW9uT3B0KSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5zY2FsZUxpbmUpIHtcbiAgICAgIGNvbnN0IHNjYWxlTGluZU9wdCA9IChcbiAgICAgICAgdmFsdWUuc2NhbGVMaW5lID09PSB0cnVlID8ge30gOiB2YWx1ZS5zY2FsZUxpbmVcbiAgICAgICkgYXMgTWFwU2NhbGVMaW5lT3B0aW9ucztcbiAgICAgIGNvbnRyb2xzLnB1c2gobmV3IG9sQ29udHJvbFNjYWxlTGluZShzY2FsZUxpbmVPcHQpKTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50Q29udHJvbHMgPSBPYmplY3QuYXNzaWduKFtdLCB0aGlzLm9sLmdldENvbnRyb2xzKCkuZ2V0QXJyYXkoKSk7XG4gICAgY3VycmVudENvbnRyb2xzLmZvckVhY2goKGNvbnRyb2wpID0+IHtcbiAgICAgIHRoaXMub2wucmVtb3ZlQ29udHJvbChjb250cm9sKTtcbiAgICB9KTtcbiAgICBjb250cm9scy5mb3JFYWNoKChjb250cm9sKSA9PiB7XG4gICAgICB0aGlzLm9sLmFkZENvbnRyb2woY29udHJvbCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogVE9ETzogTW92ZSB0byBWaWV3Q29udHJvbGxlciBhbmQgdXBkYXRlIGV2ZXJ5IHBsYWNlIGl0J3MgdXNlZFxuICAgKi9cbiAgZ2V0Q2VudGVyKHByb2plY3Rpb24/OiBzdHJpbmcgfCBPbFByb2plY3Rpb24pOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgICByZXR1cm4gdGhpcy52aWV3Q29udHJvbGxlci5nZXRDZW50ZXIocHJvamVjdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogVE9ETzogTW92ZSB0byBWaWV3Q29udHJvbGxlciBhbmQgdXBkYXRlIGV2ZXJ5IHBsYWNlIGl0J3MgdXNlZFxuICAgKi9cbiAgZ2V0RXh0ZW50KHByb2plY3Rpb24/OiBzdHJpbmcgfCBPbFByb2plY3Rpb24pOiBNYXBFeHRlbnQge1xuICAgIHJldHVybiB0aGlzLnZpZXdDb250cm9sbGVyLmdldEV4dGVudChwcm9qZWN0aW9uKTtcbiAgfVxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogVE9ETzogTW92ZSB0byBWaWV3Q29udHJvbGxlciBhbmQgdXBkYXRlIGV2ZXJ5IHBsYWNlIGl0J3MgdXNlZFxuICAgKi9cbiAgZ2V0Wm9vbSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnZpZXdDb250cm9sbGVyLmdldFpvb20oKTtcbiAgfVxuXG4gIGNoYW5nZUJhc2VMYXllcihiYXNlTGF5ZXI6IExheWVyKSB7XG4gICAgaWYgKCFiYXNlTGF5ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGJsIG9mIHRoaXMuZ2V0QmFzZUxheWVycygpKSB7XG4gICAgICBibC52aXNpYmxlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgYmFzZUxheWVyLnZpc2libGUgPSB0cnVlO1xuXG4gICAgdGhpcy52aWV3Q29udHJvbGxlci5vbFZpZXcuc2V0TWluWm9vbShcbiAgICAgIGJhc2VMYXllci5kYXRhU291cmNlLm9wdGlvbnMubWluWm9vbSB8fCAodGhpcy5vcHRpb25zLnZpZXcgfHwge30pLm1pblpvb21cbiAgICApO1xuICAgIHRoaXMudmlld0NvbnRyb2xsZXIub2xWaWV3LnNldE1heFpvb20oXG4gICAgICBiYXNlTGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLm1heFpvb20gfHwgKHRoaXMub3B0aW9ucy52aWV3IHx8IHt9KS5tYXhab29tXG4gICAgKTtcbiAgfVxuXG4gIGdldEJhc2VMYXllcnMoKTogTGF5ZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMubGF5ZXJzLmZpbHRlcigobGF5ZXI6IExheWVyKSA9PiBsYXllci5iYXNlTGF5ZXIgPT09IHRydWUpO1xuICB9XG5cbiAgZ2V0TGF5ZXJCeUlkKGlkOiBzdHJpbmcpOiBMYXllciB7XG4gICAgcmV0dXJuIHRoaXMubGF5ZXJzLmZpbmQoKGxheWVyOiBMYXllcikgPT4gbGF5ZXIuaWQgJiYgbGF5ZXIuaWQgPT09IGlkKTtcbiAgfVxuXG4gIGdldExheWVyQnlBbGlhcyhhbGlhczogc3RyaW5nKTogTGF5ZXIge1xuICAgIHJldHVybiB0aGlzLmxheWVycy5maW5kKFxuICAgICAgKGxheWVyOiBMYXllcikgPT4gbGF5ZXIuYWxpYXMgJiYgbGF5ZXIuYWxpYXMgPT09IGFsaWFzXG4gICAgKTtcbiAgfVxuXG4gIGdldExheWVyQnlPbFVJZChvbFVJZDogc3RyaW5nKTogTGF5ZXIge1xuICAgIHJldHVybiB0aGlzLmxheWVycy5maW5kKFxuICAgICAgKGxheWVyOiBMYXllcikgPT4gZ2V0VWlkKGxheWVyLm9sKSAmJiBnZXRVaWQobGF5ZXIub2wpID09PSBvbFVJZFxuICAgICk7XG4gIH1cblxuICBnZXRMYXllckJ5T2xMYXllcihvbExheWVyOiBvbExheWVyPG9sU291cmNlPik6IExheWVyIHtcbiAgICBjb25zdCBvbFVJZCA9IGdldFVpZChvbExheWVyKTtcbiAgICByZXR1cm4gdGhpcy5nZXRMYXllckJ5T2xVSWQob2xVSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHNpbmdsZSBsYXllclxuICAgKiBAcGFyYW0gbGF5ZXIgTGF5ZXIgdG8gYWRkXG4gICAqIEBwYXJhbSBwdXNoIERFUFJFQ0FURURcbiAgICovXG4gIGFkZExheWVyKGxheWVyOiBMYXllciwgcHVzaCA9IHRydWUpIHtcbiAgICB0aGlzLmFkZExheWVycyhbbGF5ZXJdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgbWFueSBsYXllcnNcbiAgICogQHBhcmFtIGxheWVycyBMYXllcnMgdG8gYWRkXG4gICAqIEBwYXJhbSBwdXNoIERFUFJFQ0FURURcbiAgICovXG4gIGFkZExheWVycyhsYXllcnM6IExheWVyW10sIHB1c2ggPSB0cnVlKSB7XG4gICAgbGV0IG9mZnNldFpJbmRleCA9IDA7XG4gICAgbGV0IG9mZnNldEJhc2VMYXllclpJbmRleCA9IDA7XG4gICAgY29uc3QgYWRkZWRMYXllcnMgPSBsYXllcnNcbiAgICAgIC5tYXAoKGxheWVyOiBMYXllcikgPT4ge1xuICAgICAgICBpZiAoIWxheWVyKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IGxheWVyLnpJbmRleFxuICAgICAgICAgID8gMFxuICAgICAgICAgIDogbGF5ZXIuYmFzZUxheWVyXG4gICAgICAgICAgICA/IG9mZnNldEJhc2VMYXllclpJbmRleCsrXG4gICAgICAgICAgICA6IG9mZnNldFpJbmRleCsrO1xuICAgICAgICByZXR1cm4gdGhpcy5kb0FkZExheWVyKGxheWVyLCBvZmZzZXQpO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKGxheWVyOiBMYXllciB8IHVuZGVmaW5lZCkgPT4gbGF5ZXIgIT09IHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZXRMYXllcnMoW10uY29uY2F0KHRoaXMubGF5ZXJzLCBhZGRlZExheWVycykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIHNpbmdsZSBsYXllclxuICAgKiBAcGFyYW0gbGF5ZXIgTGF5ZXIgdG8gcmVtb3ZlXG4gICAqL1xuICByZW1vdmVMYXllcihsYXllcjogTGF5ZXIpIHtcbiAgICB0aGlzLnJlbW92ZUxheWVycyhbbGF5ZXJdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgbWFueSBsYXllcnNcbiAgICogQHBhcmFtIGxheWVycyBMYXllcnMgdG8gcmVtb3ZlXG4gICAqL1xuICByZW1vdmVMYXllcnMobGF5ZXJzOiBMYXllcltdKSB7XG4gICAgY29uc3QgbmV3TGF5ZXJzID0gdGhpcy5sYXllcnMkLnZhbHVlLnNsaWNlKDApO1xuICAgIGNvbnN0IGxheWVyc1RvUmVtb3ZlID0gW107XG4gICAgbGF5ZXJzLmZvckVhY2goKGxheWVyOiBMYXllcikgPT4ge1xuICAgICAgaWYgKGxheWVyIGluc3RhbmNlb2YgVmVjdG9yTGF5ZXIpIHtcbiAgICAgICAgbGF5ZXIucmVtb3ZlTGF5ZXJGcm9tSURCKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBpbmRleCA9IG5ld0xheWVycy5pbmRleE9mKGxheWVyKTtcbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgIGxheWVyc1RvUmVtb3ZlLnB1c2gobGF5ZXIpO1xuICAgICAgICBuZXdMYXllcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5oYW5kbGVMaW5rZWRMYXllcnNEZWxldGlvbihsYXllciwgbGF5ZXJzVG9SZW1vdmUpO1xuICAgICAgICBsYXllcnNUb1JlbW92ZS5tYXAoKGxpbmtlZExheWVyKSA9PiB7XG4gICAgICAgICAgY29uc3QgbGlua2VkSW5kZXggPSBuZXdMYXllcnMuaW5kZXhPZihsaW5rZWRMYXllcik7XG4gICAgICAgICAgaWYgKGxpbmtlZEluZGV4ID49IDApIHtcbiAgICAgICAgICAgIG5ld0xheWVycy5zcGxpY2UobGlua2VkSW5kZXgsIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsYXllcnNUb1JlbW92ZS5mb3JFYWNoKChsYXllcjogTGF5ZXIpID0+IHRoaXMuZG9SZW1vdmVMYXllcihsYXllcikpO1xuICAgIHRoaXMuc2V0TGF5ZXJzKG5ld0xheWVycyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSBsaXN0IG9mIGxpbmtlZCBsYXllcnMgdG8gZGVsZXRlXG4gICAqIEBwYXJhbSBzcmNMYXllciBMYXllciB0aGF0IGhhcyB0cmlnZ2VyZWQgdGhlIGRlbGV0aW9uXG4gICAqIEBwYXJhbSBsYXllcnNUb1JlbW92ZSBsaXN0IHRvIGFwcGVuZCB0aGUgbGF5ZXIgdG8gZGVsZXRlIGludG9cbiAgICovXG4gIGhhbmRsZUxpbmtlZExheWVyc0RlbGV0aW9uKHNyY0xheWVyOiBMYXllciwgbGF5ZXJzVG9SZW1vdmU6IExheWVyW10pIHtcbiAgICBsZXQgcm9vdFBhcmVudEJ5RGVsZXRpb24gPSBnZXRSb290UGFyZW50QnlEZWxldGlvbih0aGlzLCBzcmNMYXllcik7XG4gICAgaWYgKCFyb290UGFyZW50QnlEZWxldGlvbikge1xuICAgICAgcm9vdFBhcmVudEJ5RGVsZXRpb24gPSBzcmNMYXllcjtcbiAgICB9XG4gICAgY29uc3QgY2xiZCA9IGdldEFsbENoaWxkTGF5ZXJzQnlEZWxldGlvbih0aGlzLCByb290UGFyZW50QnlEZWxldGlvbiwgW1xuICAgICAgcm9vdFBhcmVudEJ5RGVsZXRpb25cbiAgICBdKTtcbiAgICBmb3IgKGNvbnN0IGxheWVyIG9mIGNsYmQpIHtcbiAgICAgIGxheWVyc1RvUmVtb3ZlLnB1c2gobGF5ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYWxsIGxheWVyc1xuICAgKi9cbiAgcmVtb3ZlQWxsTGF5ZXJzKCkge1xuICAgIHRoaXMubGF5ZXJzLmZvckVhY2goKGxheWVyOiBMYXllcikgPT4gdGhpcy5kb1JlbW92ZUxheWVyKGxheWVyKSk7XG4gICAgdGhpcy5sYXllcnMkLm5leHQoW10pO1xuICB9XG5cbiAgcmFpc2VMYXllcihsYXllcjogTGF5ZXIpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0TGF5ZXJJbmRleChsYXllcik7XG4gICAgaWYgKGluZGV4ID4gMSkge1xuICAgICAgdGhpcy5tb3ZlTGF5ZXIobGF5ZXIsIGluZGV4LCBpbmRleCAtIDEpO1xuICAgIH1cbiAgfVxuXG4gIHJhaXNlTGF5ZXJzKGxheWVyczogTGF5ZXJbXSkge1xuICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgbGF5ZXJzKSB7XG4gICAgICB0aGlzLnJhaXNlTGF5ZXIobGF5ZXIpO1xuICAgIH1cbiAgfVxuXG4gIGxvd2VyTGF5ZXIobGF5ZXI6IExheWVyKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldExheWVySW5kZXgobGF5ZXIpO1xuICAgIGlmIChpbmRleCA8IHRoaXMubGF5ZXJzLmxlbmd0aCAtIDEpIHtcbiAgICAgIHRoaXMubW92ZUxheWVyKGxheWVyLCBpbmRleCwgaW5kZXggKyAxKTtcbiAgICB9XG4gIH1cblxuICBsb3dlckxheWVycyhsYXllcnM6IExheWVyW10pIHtcbiAgICBjb25zdCByZXZlcnNlTGF5ZXJzID0gbGF5ZXJzLnJldmVyc2UoKTtcbiAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHJldmVyc2VMYXllcnMpIHtcbiAgICAgIHRoaXMubG93ZXJMYXllcihsYXllcik7XG4gICAgfVxuICB9XG5cbiAgbW92ZUxheWVyKGxheWVyOiBMYXllciwgZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKSB7XG4gICAgY29uc3QgbGF5ZXJUbyA9IHRoaXMubGF5ZXJzW3RvXTtcbiAgICBjb25zdCB6SW5kZXhUbyA9IGxheWVyVG8uekluZGV4O1xuICAgIGNvbnN0IHpJbmRleEZyb20gPSBsYXllci56SW5kZXg7XG5cbiAgICBpZiAobGF5ZXJUby5iYXNlTGF5ZXIgfHwgbGF5ZXIuYmFzZUxheWVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGF5ZXIuekluZGV4ID0gekluZGV4VG87XG4gICAgbGF5ZXJUby56SW5kZXggPSB6SW5kZXhGcm9tO1xuXG4gICAgdGhpcy5sYXllcnNbdG9dID0gbGF5ZXI7XG4gICAgdGhpcy5sYXllcnNbZnJvbV0gPSBsYXllclRvO1xuICAgIHRoaXMubGF5ZXJzJC5uZXh0KHRoaXMubGF5ZXJzLnNsaWNlKDApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBsYXllciB0byB0aGUgT0wgbWFwIGFuZCBzdGFydCB3YXRjaGluZy4gSWYgdGhlIGxheWVyIGlzIGFscmVhZHlcbiAgICogYWRkZWQgdG8gdGhpcyBtYXAsIG1ha2UgaXQgdmlzaWJsZSBidXQgZG9uJ3QgYWRkIGl0IG9uZSBhZ2Fpbi5cbiAgICogQHBhcmFtIGxheWVyIExheWVyXG4gICAqIEByZXR1cm5zIFRoZSBsYXllciBhZGRlZCwgaWYgYW55XG4gICAqL1xuICBwcml2YXRlIGRvQWRkTGF5ZXIobGF5ZXI6IExheWVyLCBvZmZzZXRaSW5kZXg6IG51bWJlcikge1xuICAgIGlmIChsYXllci5iYXNlTGF5ZXIgJiYgbGF5ZXIudmlzaWJsZSkge1xuICAgICAgdGhpcy5jaGFuZ2VCYXNlTGF5ZXIobGF5ZXIpO1xuICAgIH1cblxuICAgIGNvbnN0IGV4aXN0aW5nTGF5ZXIgPSB0aGlzLmdldExheWVyQnlJZChsYXllci5pZCk7XG4gICAgaWYgKGV4aXN0aW5nTGF5ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZXhpc3RpbmdMYXllci52aXNpYmxlID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWxheWVyLmJhc2VMYXllciAmJiBsYXllci56SW5kZXgpIHtcbiAgICAgIGxheWVyLnpJbmRleCArPSAxMDtcbiAgICB9XG5cbiAgICBpZiAobGF5ZXIuekluZGV4ID09PSB1bmRlZmluZWQgfHwgbGF5ZXIuekluZGV4ID09PSAwKSB7XG4gICAgICBjb25zdCBtYXhaSW5kZXggPSBNYXRoLm1heChcbiAgICAgICAgbGF5ZXIuYmFzZUxheWVyID8gMCA6IDEwLFxuICAgICAgICAuLi50aGlzLmxheWVyc1xuICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAobCkgPT4gbC5iYXNlTGF5ZXIgPT09IGxheWVyLmJhc2VMYXllciAmJiBsLnpJbmRleCA8IDIwMCAvLyB6SW5kZXggPiAyMDAgPSBzeXN0ZW0gbGF5ZXJcbiAgICAgICAgICApXG4gICAgICAgICAgLm1hcCgobCkgPT4gbC56SW5kZXgpXG4gICAgICApO1xuICAgICAgbGF5ZXIuekluZGV4ID0gbWF4WkluZGV4ICsgMSArIG9mZnNldFpJbmRleDtcbiAgICB9XG5cbiAgICBpZiAobGF5ZXIuYmFzZUxheWVyICYmIGxheWVyLnpJbmRleCA+IDkpIHtcbiAgICAgIGxheWVyLnpJbmRleCA9IDEwOyAvLyBiYXNlbGF5ZXIgbXVzdCBoYXZlIHpJbmRleCA8IDEwXG4gICAgfVxuXG4gICAgbGF5ZXIuc2V0TWFwKHRoaXMpO1xuICAgIHRoaXMubGF5ZXJXYXRjaGVyLndhdGNoTGF5ZXIobGF5ZXIpO1xuICAgIHRoaXMub2wuYWRkTGF5ZXIobGF5ZXIub2wpO1xuXG4gICAgcmV0dXJuIGxheWVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIGxheWVyIGZyb20gdGhlIE9MIG1hcCBhbmQgc3RvcCB3YXRjaGluZ1xuICAgKiBAcGFyYW0gbGF5ZXIgTGF5ZXJcbiAgICovXG4gIHByaXZhdGUgZG9SZW1vdmVMYXllcihsYXllcjogTGF5ZXIpIHtcbiAgICB0aGlzLmxheWVyV2F0Y2hlci51bndhdGNoTGF5ZXIobGF5ZXIpO1xuICAgIHRoaXMub2wucmVtb3ZlTGF5ZXIobGF5ZXIub2wpO1xuICAgIGxheWVyLnNldE1hcCh1bmRlZmluZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgbGF5ZXJzIG9ic2VydmFibGVcbiAgICogQHBhcmFtIGxheWVycyBMYXllcnNcbiAgICovXG4gIHByaXZhdGUgc2V0TGF5ZXJzKGxheWVyczogTGF5ZXJbXSkge1xuICAgIHRoaXMubGF5ZXJzJC5uZXh0KHRoaXMuc29ydExheWVyc0J5WkluZGV4KGxheWVycykuc2xpY2UoMCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNvcnQgbGF5ZXJzIGJ5IGRlc2NlbmRpbmcgekluZGV4XG4gICAqIEBwYXJhbSBsYXllcnMgQXJyYXkgb2YgbGF5ZXJzXG4gICAqIEByZXR1cm5zIFRoZSBvcmlnaW5hbCBhcnJheSwgc29ydGVkIGJ5IHpJbmRleFxuICAgKi9cbiAgcHJpdmF0ZSBzb3J0TGF5ZXJzQnlaSW5kZXgobGF5ZXJzOiBMYXllcltdKSB7XG4gICAgLy8gU29ydCBieSBkZXNjZW5kaW5nIHpJbmRleFxuICAgIHJldHVybiBsYXllcnMuc29ydChcbiAgICAgIChsYXllcjE6IExheWVyLCBsYXllcjI6IExheWVyKSA9PiBsYXllcjIuekluZGV4IC0gbGF5ZXIxLnpJbmRleFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGxheWVyIGluZGV4IGluIHRoZSBtYXAncyBpbmVuciBhcnJheSBvZiBsYXllcnNcbiAgICogQHBhcmFtIGxheWVyIExheWVyXG4gICAqIEByZXR1cm5zIFRoZSBsYXllciBpbmRleFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRMYXllckluZGV4KGxheWVyOiBMYXllcikge1xuICAgIHJldHVybiB0aGlzLmxheWVycy5maW5kSW5kZXgoKF9sYXllcjogTGF5ZXIpID0+IF9sYXllciA9PT0gbGF5ZXIpO1xuICB9XG59XG4iXX0=
|
|
437
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxLQUFLLE1BQU0sUUFBUSxDQUFDO0FBRTNCLE9BQU8sTUFBdUIsTUFBTSxTQUFTLENBQUM7QUFDOUMsT0FBTyxvQkFBb0IsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLGtCQUFrQixNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxhQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFFbEMsT0FBTyxLQUFLLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVqQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLGVBQWUsRUFBVyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3JFLE9BQU8sRUFBUyxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFDTCwyQkFBMkIsRUFDM0IsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6QixpQ0FBaUMsRUFDbEMsTUFBTSxzQkFBc0IsQ0FBQztBQVc5Qiw4RUFBOEU7QUFDOUUsb0NBQW9DO0FBQ3BDLE1BQU0sT0FBTyxNQUFNO0lBNENQO0lBQ0E7SUE1Q0gsRUFBRSxDQUFRO0lBQ1YsY0FB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LENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxrQkFBa0IsQ0FBQyxNQUFlO1FBQ3hDLDRCQUE0QjtRQUM1QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQ2hCLENBQUMsTUFBYSxFQUFFLE1BQWEsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUNoRSxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxhQUFhLENBQUMsS0FBWTtRQUNoQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBYSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLENBQUM7SUFDcEUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvY29uZmlnJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9zdG9yYWdlJztcbmltcG9ydCB7IFN1YmplY3RTdGF0dXMgfSBmcm9tICdAaWdvMi91dGlscyc7XG5cbmltcG9ydCBvbE1hcCBmcm9tICdvbC9NYXAnO1xuaW1wb3J0IHsgT2JqZWN0RXZlbnQgfSBmcm9tICdvbC9PYmplY3QnO1xuaW1wb3J0IG9sVmlldywgeyBWaWV3T3B0aW9ucyB9IGZyb20gJ29sL1ZpZXcnO1xuaW1wb3J0IG9sQ29udHJvbEF0dHJpYnV0aW9uIGZyb20gJ29sL2NvbnRyb2wvQXR0cmlidXRpb24nO1xuaW1wb3J0IG9sQ29udHJvbFNjYWxlTGluZSBmcm9tICdvbC9jb250cm9sL1NjYWxlTGluZSc7XG5pbXBvcnQgKiBhcyBvbGludGVyYWN0aW9uIGZyb20gJ29sL2ludGVyYWN0aW9uJztcbmltcG9ydCBvbExheWVyIGZyb20gJ29sL2xheWVyL0xheWVyJztcbmltcG9ydCAqIGFzIG9scHJvaiBmcm9tICdvbC9wcm9qJztcbmltcG9ydCBPbFByb2plY3Rpb24gZnJvbSAnb2wvcHJvai9Qcm9qZWN0aW9uJztcbmltcG9ydCAqIGFzIG9scHJvajQgZnJvbSAnb2wvcHJvai9wcm9qNCc7XG5pbXBvcnQgb2xTb3VyY2UgZnJvbSAnb2wvc291cmNlL1NvdXJjZSc7XG5pbXBvcnQgeyBnZXRVaWQgfSBmcm9tICdvbC91dGlsJztcblxuaW1wb3J0IHByb2o0IGZyb20gJ3Byb2o0JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgcGFpcndpc2UsIHNraXBXaGlsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGZWF0dXJlRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzL2ZlYXR1cmUtZGF0YXNvdXJjZSc7XG5pbXBvcnQgeyBMYXllciwgVmVjdG9yTGF5ZXIgfSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvbGF5ZXJzJztcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICcuLi8uLi9vdmVybGF5L3NoYXJlZC9vdmVybGF5JztcbmltcG9ydCB7IExheWVyV2F0Y2hlciB9IGZyb20gJy4uL3V0aWxzL2xheWVyLXdhdGNoZXInO1xuaW1wb3J0IHsgTWFwR2VvbG9jYXRpb25Db250cm9sbGVyIH0gZnJvbSAnLi9jb250cm9sbGVycy9nZW9sb2NhdGlvbic7XG5pbXBvcnQgeyBNYXBWaWV3Q29udHJvbGxlciB9IGZyb20gJy4vY29udHJvbGxlcnMvdmlldyc7XG5pbXBvcnQge1xuICBnZXRBbGxDaGlsZExheWVyc0J5RGVsZXRpb24sXG4gIGdldFJvb3RQYXJlbnRCeURlbGV0aW9uLFxuICBoYW5kbGVMYXllclByb3BlcnR5Q2hhbmdlLFxuICBpbml0TGF5ZXJTeW5jRnJvbVJvb3RQYXJlbnRMYXllcnNcbn0gZnJvbSAnLi9saW5rZWRMYXllcnMudXRpbHMnO1xuaW1wb3J0IHR5cGUgeyBNYXBCYXNlIH0gZnJvbSAnLi9tYXAuYWJzdHJhY3QnO1xuaW1wb3J0IHtcbiAgTWFwQXR0cmlidXRpb25PcHRpb25zLFxuICBNYXBDb250cm9sc09wdGlvbnMsXG4gIE1hcEV4dGVudCxcbiAgTWFwT3B0aW9ucyxcbiAgTWFwU2NhbGVMaW5lT3B0aW9ucyxcbiAgTWFwVmlld09wdGlvbnNcbn0gZnJvbSAnLi9tYXAuaW50ZXJmYWNlJztcblxuLy8gVE9ETzogVGhpcyBjbGFzcyBpcyBtZXNzeS4gQ2xlYXJseSBkZWZpbmUgaXQncyBzY29wZSBhbmQgdGhlIG1hcCBicm93c2VyJ3MuXG4vLyBNb3ZlIHNvbWUgc3R1ZmYgaW50byBjb250cm9sbGVycy5cbmV4cG9ydCBjbGFzcyBJZ29NYXAgaW1wbGVtZW50cyBNYXBCYXNlIHtcbiAgcHVibGljIG9sOiBvbE1hcDtcbiAgcHVibGljIGZvcmNlZE9mZmxpbmUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyBsYXllcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxMYXllcltdPihbXSk7XG4gIHB1YmxpYyBsYXllcnNBZGRlZEJ5Q2xpY2skID0gbmV3IEJlaGF2aW9yU3ViamVjdDxMYXllcltdPih1bmRlZmluZWQpO1xuICBwdWJsaWMgc3RhdHVzJDogU3ViamVjdDxTdWJqZWN0U3RhdHVzPjtcbiAgcHVibGljIHByb3BlcnR5Q2hhbmdlJDogU3ViamVjdDx7IGV2ZW50OiBPYmplY3RFdmVudDsgbGF5ZXI6IExheWVyIH0+O1xuICBwdWJsaWMgb3ZlcmxheTogT3ZlcmxheTtcbiAgcHVibGljIHF1ZXJ5UmVzdWx0c092ZXJsYXk6IE92ZXJsYXk7XG4gIHB1YmxpYyBzZWFyY2hSZXN1bHRzT3ZlcmxheTogT3ZlcmxheTtcbiAgcHVibGljIHZpZXdDb250cm9sbGVyOiBNYXBWaWV3Q29udHJvbGxlcjtcbiAgcHVibGljIGdlb2xvY2F0aW9uQ29udHJvbGxlcjogTWFwR2VvbG9jYXRpb25Db250cm9sbGVyO1xuICBwdWJsaWMgc3dpcGVFbmFibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgbWFwQ2VudGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgc2VsZWN0ZWRGZWF0dXJlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PExheWVyW10+KG51bGwpO1xuXG4gIHB1YmxpYyBidWZmZXJEYXRhU291cmNlOiBGZWF0dXJlRGF0YVNvdXJjZTtcblxuICBwcml2YXRlIGxheWVyV2F0Y2hlcjogTGF5ZXJXYXRjaGVyO1xuICBwcml2YXRlIG9wdGlvbnM6IE1hcE9wdGlvbnM7XG4gIHByaXZhdGUgbWFwVmlld09wdGlvbnM6IE1hcFZpZXdPcHRpb25zO1xuICBwcml2YXRlIGRlZmF1bHRPcHRpb25zOiBQYXJ0aWFsPE1hcE9wdGlvbnM+ID0ge1xuICAgIGNvbnRyb2xzOiB7IGF0dHJpYnV0aW9uOiBmYWxzZSB9XG4gIH07XG5cbiAgZ2V0IGxheWVycygpOiBMYXllcltdIHtcbiAgICByZXR1cm4gdGhpcy5sYXllcnMkLnZhbHVlO1xuICB9XG5cbiAgLyoqIEBkZXByZWNhdGVkIHVzZSBwcm9qZWN0aW9uQ29kZSAqL1xuICBnZXQgcHJvamVjdGlvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb2plY3Rpb25Db2RlO1xuICB9XG5cbiAgZ2V0IHZpZXdQcm9qZWN0aW9uKCk6IG9scHJvai5Qcm9qZWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy52aWV3Q29udHJvbGxlci5nZXRPbFByb2plY3Rpb24oKTtcbiAgfVxuXG4gIGdldCBwcm9qZWN0aW9uQ29kZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnZpZXdQcm9qZWN0aW9uLmdldENvZGUoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG9wdGlvbnM/OiBNYXBPcHRpb25zLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U/OiBTdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U/OiBDb25maWdTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZGVmYXVsdE9wdGlvbnMsIG9wdGlvbnMpO1xuICAgIHRoaXMubGF5ZXJXYXRjaGVyID0gbmV3IExheWVyV2F0Y2hlcigpO1xuICAgIHRoaXMuc3RhdHVzJCA9IHRoaXMubGF5ZXJXYXRjaGVyLnN0YXR1cyQ7XG4gICAgdGhpcy5wcm9wZXJ0eUNoYW5nZSQgPSB0aGlzLmxheWVyV2F0Y2hlci5wcm9wZXJ0eUNoYW5nZSQ7XG4gICAgb2xwcm9qNC5yZWdpc3Rlcihwcm9qNCk7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBpbml0KCkge1xuICAgIGNvbnN0IGNvbnRyb2xzID0gW107XG4gICAgaWYgKHRoaXMub3B0aW9ucy5jb250cm9scykge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5jb250cm9scy5hdHRyaWJ1dGlvbikge1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGlvbk9wdCA9IChcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuY29udHJvbHMuYXR0cmlidXRpb24gPT09IHRydWVcbiAgICAgICAgICAgID8ge31cbiAgICAgICAgICAgIDogdGhpcy5vcHRpb25zLmNvbnRyb2xzLmF0dHJpYnV0aW9uXG4gICAgICAgICkgYXMgTWFwQXR0cmlidXRpb25PcHRpb25zO1xuICAgICAgICBjb250cm9scy5wdXNoKG5ldyBvbENvbnRyb2xBdHRyaWJ1dGlvbihhdHRyaWJ1dGlvbk9wdCkpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5jb250cm9scy5zY2FsZUxpbmUpIHtcbiAgICAgICAgY29uc3Qgc2NhbGVMaW5lT3B0ID0gKFxuICAgICAgICAgIHRoaXMub3B0aW9ucy5jb250cm9scy5zY2FsZUxpbmUgPT09IHRydWVcbiAgICAgICAgICAgID8ge31cbiAgICAgICAgICAgIDogdGhpcy5vcHRpb25zLmNvbnRyb2xzLnNjYWxlTGluZVxuICAgICAgICApIGFzIE1hcFNjYWxlTGluZU9wdGlvbnM7XG4gICAgICAgIGNvbnRyb2xzLnB1c2gobmV3IG9sQ29udHJvbFNjYWxlTGluZShzY2FsZUxpbmVPcHQpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IGludGVyYWN0aW9ucyA9IHt9O1xuICAgIGlmICh0aGlzLm9wdGlvbnMuaW50ZXJhY3Rpb25zID09PSBmYWxzZSkge1xuICAgICAgaW50ZXJhY3Rpb25zID0ge1xuICAgICAgICBhbHRTaGlmdERyYWdSb3RhdGU6IGZhbHNlLFxuICAgICAgICBkb3VibGVDbGlja1pvb206IGZhbHNlLFxuICAgICAgICBrZXlib2FyZDogZmFsc2UsXG4gICAgICAgIG1vdXNlV2hlZWxab29tOiBmYWxzZSxcbiAgICAgICAgc2hpZnREcmFnWm9vbTogZmFsc2UsXG4gICAgICAgIGRyYWdQYW46IGZhbHNlLFxuICAgICAgICBwaW5jaFJvdGF0ZTogZmFsc2UsXG4gICAgICAgIHBpbmNoWm9vbTogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhpcy5vbCA9IG5ldyBvbE1hcCh7XG4gICAgICBpbnRlcmFjdGlvbnM6IG9saW50ZXJhY3Rpb24uZGVmYXVsdHMoaW50ZXJhY3Rpb25zKSxcbiAgICAgIGNvbnRyb2xzXG4gICAgfSk7XG5cbiAgICB0aGlzLnNldFZpZXcodGhpcy5vcHRpb25zLnZpZXcgfHwge30pO1xuICAgIHRoaXMudmlld0NvbnRyb2xsZXIgPSBuZXcgTWFwVmlld0NvbnRyb2xsZXIoe1xuICAgICAgc3RhdGVIaXN0b3J5OiB0cnVlXG4gICAgfSk7XG4gICAgdGhpcy52aWV3Q29udHJvbGxlci5zZXRPbE1hcCh0aGlzLm9sKTtcbiAgICB0aGlzLm92ZXJsYXkgPSBuZXcgT3ZlcmxheSh0aGlzKTtcbiAgICB0aGlzLnF1ZXJ5UmVzdWx0c092ZXJsYXkgPSBuZXcgT3ZlcmxheSh0aGlzKTtcbiAgICB0aGlzLnNlYXJjaFJlc3VsdHNPdmVybGF5ID0gbmV3IE92ZXJsYXkodGhpcyk7XG4gICAgdGhpcy5vbC5vbmNlKCdyZW5kZXJjb21wbGV0ZScsICgpID0+IHtcbiAgICAgIHRoaXMuZ2VvbG9jYXRpb25Db250cm9sbGVyID0gbmV3IE1hcEdlb2xvY2F0aW9uQ29udHJvbGxlcihcbiAgICAgICAgdGhpcyxcbiAgICAgICAge1xuICAgICAgICAgIHByb2plY3Rpb246IHRoaXMudmlld0NvbnRyb2xsZXIuZ2V0T2xQcm9qZWN0aW9uKClcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZSxcbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlXG4gICAgICApO1xuICAgICAgdGhpcy5nZW9sb2NhdGlvbkNvbnRyb2xsZXIuc2V0T2xNYXAodGhpcy5vbCk7XG4gICAgICBpZiAodGhpcy5nZW9sb2NhdGlvbkNvbnRyb2xsZXIpIHtcbiAgICAgICAgdGhpcy5nZW9sb2NhdGlvbkNvbnRyb2xsZXIudXBkYXRlR2VvbG9jYXRpb25PcHRpb25zKFxuICAgICAgICAgIHRoaXMubWFwVmlld09wdGlvbnNcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubGF5ZXJzJC5waXBlKHBhaXJ3aXNlKCkpLnN1YnNjcmliZSgoW3ByZXZMYXllcnMsIGN1cnJlbnRMYXllcnNdKSA9PiB7XG4gICAgICAgIGxldCBwcmV2TGF5ZXJzSWQ7XG4gICAgICAgIGlmIChwcmV2TGF5ZXJzKSB7XG4gICAgICAgICAgcHJldkxheWVyc0lkID0gcHJldkxheWVycy5tYXAoKGwpID0+IGwuaWQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxheWVycyA9IGN1cnJlbnRMYXllcnMuZmlsdGVyKFxuICAgICAgICAgIChsKSA9PiAhcHJldkxheWVyc0lkLmluY2x1ZGVzKGwuaWQpXG4gICAgICAgICk7XG5cbiAgICAgICAgZm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcbiAgICAgICAgICBpZiAobGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMpIHtcbiAgICAgICAgICAgIGxheWVyLm9sLm9uY2UoJ3Bvc3RyZW5kZXInLCAoKSA9PiB7XG4gICAgICAgICAgICAgIGluaXRMYXllclN5bmNGcm9tUm9vdFBhcmVudExheWVycyh0aGlzLCBsYXllcnMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMudmlld0NvbnRyb2xsZXIubW9uaXRvclJvdGF0aW9uKCk7XG4gICAgfSk7XG4gICAgdGhpcy5wcm9wZXJ0eUNoYW5nZSRcbiAgICAgIC5waXBlKHNraXBXaGlsZSgocGMpID0+ICFwYykpXG4gICAgICAuc3Vic2NyaWJlKChwKSA9PiBoYW5kbGVMYXllclByb3BlcnR5Q2hhbmdlKHRoaXMsIHAuZXZlbnQsIHAubGF5ZXIpKTtcbiAgfVxuXG4gIHNldFRhcmdldChpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5vbC5zZXRUYXJnZXQoaWQpO1xuICAgIGlmIChpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmxheWVyV2F0Y2hlci5zdWJzY3JpYmUoKCkgPT4gdm9pZCAxLCBudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sYXllcldhdGNoZXIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVWaWV3KG9wdGlvbnM6IE1hcFZpZXdPcHRpb25zKSB7XG4gICAgY29uc3QgY3VycmVudFZpZXcgPSB0aGlzLm9sLmdldFZpZXcoKTtcbiAgICBjb25zdCB2aWV3T3B0aW9uczogTWFwVmlld09wdGlvbnMgPSB7XG4gICAgICAuLi5jdXJyZW50Vmlldy5nZXRQcm9wZXJ0aWVzKCksXG4gICAgICAuLi5vcHRpb25zXG4gICAgfTtcblxuICAgIGlmIChvcHRpb25zLnpvb20gJiYgb3B0aW9ucy5yZXNvbHV0aW9uID09IG51bGwpIHtcbiAgICAgIHZpZXdPcHRpb25zLnJlc29sdXRpb24gPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRWaWV3KHZpZXdPcHRpb25zKTtcbiAgICBpZiAob3B0aW9ucy5tYXhab29tT25FeHRlbnQpIHtcbiAgICAgIHRoaXMudmlld0NvbnRyb2xsZXIubWF4Wm9vbU9uRXh0ZW50ID0gb3B0aW9ucy5tYXhab29tT25FeHRlbnQ7XG4gICAgfVxuICAgIHRoaXMubWFwVmlld09wdGlvbnMgPSBvcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbWFwIHZpZXdcbiAgICogQHBhcmFtIG9wdGlvbnMgTWFwIHZpZXcgb3B0aW9uc1xuICAgKi9cbiAgc2V0VmlldyhvcHRpb25zOiBNYXBWaWV3T3B0aW9ucykge1xuICAgIGlmICh0aGlzLnZpZXdDb250cm9sbGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudmlld0NvbnRyb2xsZXIuY2xlYXJTdGF0ZUhpc3RvcnkoKTtcbiAgICB9XG5cbiAgICBjb25zdCB2aWV3T3B0aW9uczogVmlld09wdGlvbnMgPSB7IGNvbnN0cmFpblJlc29sdXRpb246IHRydWUsIC4uLm9wdGlvbnMgfTtcbiAgICBpZiAob3B0aW9ucy5jZW50ZXIpIHtcbiAgICAgIHZpZXdPcHRpb25zLmNlbnRlciA9IG9scHJvai5mcm9tTG9uTGF0KFxuICAgICAgICBvcHRpb25zLmNlbnRlcixcbiAgICAgICAgb3B0aW9ucy5wcm9qZWN0aW9uXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMub2wuc2V0VmlldyhuZXcgb2xWaWV3KHZpZXdPcHRpb25zKSk7XG5cbiAgICBpZiAob3B0aW9ucy5tYXhMYXllclpvb21FeHRlbnQpIHtcbiAgICAgIHRoaXMudmlld0NvbnRyb2xsZXIubWF4TGF5ZXJab29tRXh0ZW50ID0gb3B0aW9ucy5tYXhMYXllclpvb21FeHRlbnQ7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQ29udHJvbHModmFsdWU6IE1hcENvbnRyb2xzT3B0aW9ucykge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29udHJvbHMgPSBbXTtcbiAgICBpZiAodmFsdWUuYXR0cmlidXRpb24pIHtcbiAgICAgIGNvbnN0IGF0dHJpYnV0aW9uT3B0ID0gKFxuICAgICAgICB2YWx1ZS5hdHRyaWJ1dGlvbiA9PT0gdHJ1ZSA/IHt9IDogdmFsdWUuYXR0cmlidXRpb25cbiAgICAgICkgYXMgTWFwQXR0cmlidXRpb25PcHRpb25zO1xuICAgICAgY29udHJvbHMucHVzaChuZXcgb2xDb250cm9sQXR0cmlidXRpb24oYXR0cmlidXRpb25PcHQpKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLnNjYWxlTGluZSkge1xuICAgICAgY29uc3Qgc2NhbGVMaW5lT3B0ID0gKFxuICAgICAgICB2YWx1ZS5zY2FsZUxpbmUgPT09IHRydWUgPyB7fSA6IHZhbHVlLnNjYWxlTGluZVxuICAgICAgKSBhcyBNYXBTY2FsZUxpbmVPcHRpb25zO1xuICAgICAgY29udHJvbHMucHVzaChuZXcgb2xDb250cm9sU2NhbGVMaW5lKHNjYWxlTGluZU9wdCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRDb250cm9scyA9IE9iamVjdC5hc3NpZ24oW10sIHRoaXMub2wuZ2V0Q29udHJvbHMoKS5nZXRBcnJheSgpKTtcbiAgICBjdXJyZW50Q29udHJvbHMuZm9yRWFjaCgoY29udHJvbCkgPT4ge1xuICAgICAgdGhpcy5vbC5yZW1vdmVDb250cm9sKGNvbnRyb2wpO1xuICAgIH0pO1xuICAgIGNvbnRyb2xzLmZvckVhY2goKGNvbnRyb2wpID0+IHtcbiAgICAgIHRoaXMub2wuYWRkQ29udHJvbChjb250cm9sKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBUT0RPOiBNb3ZlIHRvIFZpZXdDb250cm9sbGVyIGFuZCB1cGRhdGUgZXZlcnkgcGxhY2UgaXQncyB1c2VkXG4gICAqL1xuICBnZXRDZW50ZXIocHJvamVjdGlvbj86IHN0cmluZyB8IE9sUHJvamVjdGlvbik6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgIHJldHVybiB0aGlzLnZpZXdDb250cm9sbGVyLmdldENlbnRlcihwcm9qZWN0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBUT0RPOiBNb3ZlIHRvIFZpZXdDb250cm9sbGVyIGFuZCB1cGRhdGUgZXZlcnkgcGxhY2UgaXQncyB1c2VkXG4gICAqL1xuICBnZXRFeHRlbnQocHJvamVjdGlvbj86IHN0cmluZyB8IE9sUHJvamVjdGlvbik6IE1hcEV4dGVudCB7XG4gICAgcmV0dXJuIHRoaXMudmlld0NvbnRyb2xsZXIuZ2V0RXh0ZW50KHByb2plY3Rpb24pO1xuICB9XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBUT0RPOiBNb3ZlIHRvIFZpZXdDb250cm9sbGVyIGFuZCB1cGRhdGUgZXZlcnkgcGxhY2UgaXQncyB1c2VkXG4gICAqL1xuICBnZXRab29tKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudmlld0NvbnRyb2xsZXIuZ2V0Wm9vbSgpO1xuICB9XG5cbiAgY2hhbmdlQmFzZUxheWVyKGJhc2VMYXllcjogTGF5ZXIpIHtcbiAgICBpZiAoIWJhc2VMYXllcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgYmwgb2YgdGhpcy5nZXRCYXNlTGF5ZXJzKCkpIHtcbiAgICAgIGJsLnZpc2libGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBiYXNlTGF5ZXIudmlzaWJsZSA9IHRydWU7XG5cbiAgICB0aGlzLnZpZXdDb250cm9sbGVyLm9sVmlldy5zZXRNaW5ab29tKFxuICAgICAgYmFzZUxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5taW5ab29tIHx8ICh0aGlzLm9wdGlvbnMudmlldyB8fCB7fSkubWluWm9vbVxuICAgICk7XG4gICAgdGhpcy52aWV3Q29udHJvbGxlci5vbFZpZXcuc2V0TWF4Wm9vbShcbiAgICAgIGJhc2VMYXllci5kYXRhU291cmNlLm9wdGlvbnMubWF4Wm9vbSB8fCAodGhpcy5vcHRpb25zLnZpZXcgfHwge30pLm1heFpvb21cbiAgICApO1xuICB9XG5cbiAgZ2V0QmFzZUxheWVycygpOiBMYXllcltdIHtcbiAgICByZXR1cm4gdGhpcy5sYXllcnMuZmlsdGVyKChsYXllcjogTGF5ZXIpID0+IGxheWVyLmJhc2VMYXllciA9PT0gdHJ1ZSk7XG4gIH1cblxuICBnZXRMYXllckJ5SWQoaWQ6IHN0cmluZyk6IExheWVyIHtcbiAgICByZXR1cm4gdGhpcy5sYXllcnMuZmluZCgobGF5ZXI6IExheWVyKSA9PiBsYXllci5pZCAmJiBsYXllci5pZCA9PT0gaWQpO1xuICB9XG5cbiAgZ2V0TGF5ZXJCeUFsaWFzKGFsaWFzOiBzdHJpbmcpOiBMYXllciB7XG4gICAgcmV0dXJuIHRoaXMubGF5ZXJzLmZpbmQoXG4gICAgICAobGF5ZXI6IExheWVyKSA9PiBsYXllci5hbGlhcyAmJiBsYXllci5hbGlhcyA9PT0gYWxpYXNcbiAgICApO1xuICB9XG5cbiAgZ2V0TGF5ZXJCeU9sVUlkKG9sVUlkOiBzdHJpbmcpOiBMYXllciB7XG4gICAgcmV0dXJuIHRoaXMubGF5ZXJzLmZpbmQoXG4gICAgICAobGF5ZXI6IExheWVyKSA9PiBnZXRVaWQobGF5ZXIub2wpICYmIGdldFVpZChsYXllci5vbCkgPT09IG9sVUlkXG4gICAgKTtcbiAgfVxuXG4gIGdldExheWVyQnlPbExheWVyKG9sTGF5ZXI6IG9sTGF5ZXI8b2xTb3VyY2U+KTogTGF5ZXIge1xuICAgIGNvbnN0IG9sVUlkID0gZ2V0VWlkKG9sTGF5ZXIpO1xuICAgIHJldHVybiB0aGlzLmdldExheWVyQnlPbFVJZChvbFVJZCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgc2luZ2xlIGxheWVyXG4gICAqIEBwYXJhbSBsYXllciBMYXllciB0byBhZGRcbiAgICogQHBhcmFtIHB1c2ggREVQUkVDQVRFRFxuICAgKi9cbiAgYWRkTGF5ZXIobGF5ZXI6IExheWVyKSB7XG4gICAgdGhpcy5hZGRMYXllcnMoW2xheWVyXSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIG1hbnkgbGF5ZXJzXG4gICAqIEBwYXJhbSBsYXllcnMgTGF5ZXJzIHRvIGFkZFxuICAgKiBAcGFyYW0gcHVzaCBERVBSRUNBVEVEXG4gICAqL1xuICBhZGRMYXllcnMobGF5ZXJzOiBMYXllcltdKSB7XG4gICAgbGV0IG9mZnNldFpJbmRleCA9IDA7XG4gICAgbGV0IG9mZnNldEJhc2VMYXllclpJbmRleCA9IDA7XG4gICAgY29uc3QgYWRkZWRMYXllcnMgPSBsYXllcnNcbiAgICAgIC5tYXAoKGxheWVyOiBMYXllcikgPT4ge1xuICAgICAgICBpZiAoIWxheWVyKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IGxheWVyLnpJbmRleFxuICAgICAgICAgID8gMFxuICAgICAgICAgIDogbGF5ZXIuYmFzZUxheWVyXG4gICAgICAgICAgICA/IG9mZnNldEJhc2VMYXllclpJbmRleCsrXG4gICAgICAgICAgICA6IG9mZnNldFpJbmRleCsrO1xuICAgICAgICByZXR1cm4gdGhpcy5kb0FkZExheWVyKGxheWVyLCBvZmZzZXQpO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKGxheWVyOiBMYXllciB8IHVuZGVmaW5lZCkgPT4gbGF5ZXIgIT09IHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZXRMYXllcnMoW10uY29uY2F0KHRoaXMubGF5ZXJzLCBhZGRlZExheWVycykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIHNpbmdsZSBsYXllclxuICAgKiBAcGFyYW0gbGF5ZXIgTGF5ZXIgdG8gcmVtb3ZlXG4gICAqL1xuICByZW1vdmVMYXllcihsYXllcjogTGF5ZXIpIHtcbiAgICB0aGlzLnJlbW92ZUxheWVycyhbbGF5ZXJdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgbWFueSBsYXllcnNcbiAgICogQHBhcmFtIGxheWVycyBMYXllcnMgdG8gcmVtb3ZlXG4gICAqL1xuICByZW1vdmVMYXllcnMobGF5ZXJzOiBMYXllcltdKSB7XG4gICAgY29uc3QgbmV3TGF5ZXJzID0gdGhpcy5sYXllcnMkLnZhbHVlLnNsaWNlKDApO1xuICAgIGNvbnN0IGxheWVyc1RvUmVtb3ZlID0gW107XG4gICAgbGF5ZXJzLmZvckVhY2goKGxheWVyOiBMYXllcikgPT4ge1xuICAgICAgaWYgKGxheWVyIGluc3RhbmNlb2YgVmVjdG9yTGF5ZXIpIHtcbiAgICAgICAgbGF5ZXIucmVtb3ZlTGF5ZXJGcm9tSURCKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBpbmRleCA9IG5ld0xheWVycy5pbmRleE9mKGxheWVyKTtcbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgIGxheWVyc1RvUmVtb3ZlLnB1c2gobGF5ZXIpO1xuICAgICAgICBuZXdMYXllcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5oYW5kbGVMaW5rZWRMYXllcnNEZWxldGlvbihsYXllciwgbGF5ZXJzVG9SZW1vdmUpO1xuICAgICAgICBsYXllcnNUb1JlbW92ZS5tYXAoKGxpbmtlZExheWVyKSA9PiB7XG4gICAgICAgICAgY29uc3QgbGlua2VkSW5kZXggPSBuZXdMYXllcnMuaW5kZXhPZihsaW5rZWRMYXllcik7XG4gICAgICAgICAgaWYgKGxpbmtlZEluZGV4ID49IDApIHtcbiAgICAgICAgICAgIG5ld0xheWVycy5zcGxpY2UobGlua2VkSW5kZXgsIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsYXllcnNUb1JlbW92ZS5mb3JFYWNoKChsYXllcjogTGF5ZXIpID0+IHRoaXMuZG9SZW1vdmVMYXllcihsYXllcikpO1xuICAgIHRoaXMuc2V0TGF5ZXJzKG5ld0xheWVycyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSBsaXN0IG9mIGxpbmtlZCBsYXllcnMgdG8gZGVsZXRlXG4gICAqIEBwYXJhbSBzcmNMYXllciBMYXllciB0aGF0IGhhcyB0cmlnZ2VyZWQgdGhlIGRlbGV0aW9uXG4gICAqIEBwYXJhbSBsYXllcnNUb1JlbW92ZSBsaXN0IHRvIGFwcGVuZCB0aGUgbGF5ZXIgdG8gZGVsZXRlIGludG9cbiAgICovXG4gIGhhbmRsZUxpbmtlZExheWVyc0RlbGV0aW9uKHNyY0xheWVyOiBMYXllciwgbGF5ZXJzVG9SZW1vdmU6IExheWVyW10pIHtcbiAgICBsZXQgcm9vdFBhcmVudEJ5RGVsZXRpb24gPSBnZXRSb290UGFyZW50QnlEZWxldGlvbih0aGlzLCBzcmNMYXllcik7XG4gICAgaWYgKCFyb290UGFyZW50QnlEZWxldGlvbikge1xuICAgICAgcm9vdFBhcmVudEJ5RGVsZXRpb24gPSBzcmNMYXllcjtcbiAgICB9XG4gICAgY29uc3QgY2xiZCA9IGdldEFsbENoaWxkTGF5ZXJzQnlEZWxldGlvbih0aGlzLCByb290UGFyZW50QnlEZWxldGlvbiwgW1xuICAgICAgcm9vdFBhcmVudEJ5RGVsZXRpb25cbiAgICBdKTtcbiAgICBmb3IgKGNvbnN0IGxheWVyIG9mIGNsYmQpIHtcbiAgICAgIGxheWVyc1RvUmVtb3ZlLnB1c2gobGF5ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYWxsIGxheWVyc1xuICAgKi9cbiAgcmVtb3ZlQWxsTGF5ZXJzKCkge1xuICAgIHRoaXMubGF5ZXJzLmZvckVhY2goKGxheWVyOiBMYXllcikgPT4gdGhpcy5kb1JlbW92ZUxheWVyKGxheWVyKSk7XG4gICAgdGhpcy5sYXllcnMkLm5leHQoW10pO1xuICB9XG5cbiAgcmFpc2VMYXllcihsYXllcjogTGF5ZXIpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0TGF5ZXJJbmRleChsYXllcik7XG4gICAgaWYgKGluZGV4ID4gMSkge1xuICAgICAgdGhpcy5tb3ZlTGF5ZXIobGF5ZXIsIGluZGV4LCBpbmRleCAtIDEpO1xuICAgIH1cbiAgfVxuXG4gIHJhaXNlTGF5ZXJzKGxheWVyczogTGF5ZXJbXSkge1xuICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgbGF5ZXJzKSB7XG4gICAgICB0aGlzLnJhaXNlTGF5ZXIobGF5ZXIpO1xuICAgIH1cbiAgfVxuXG4gIGxvd2VyTGF5ZXIobGF5ZXI6IExheWVyKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldExheWVySW5kZXgobGF5ZXIpO1xuICAgIGlmIChpbmRleCA8IHRoaXMubGF5ZXJzLmxlbmd0aCAtIDEpIHtcbiAgICAgIHRoaXMubW92ZUxheWVyKGxheWVyLCBpbmRleCwgaW5kZXggKyAxKTtcbiAgICB9XG4gIH1cblxuICBsb3dlckxheWVycyhsYXllcnM6IExheWVyW10pIHtcbiAgICBjb25zdCByZXZlcnNlTGF5ZXJzID0gbGF5ZXJzLnJldmVyc2UoKTtcbiAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHJldmVyc2VMYXllcnMpIHtcbiAgICAgIHRoaXMubG93ZXJMYXllcihsYXllcik7XG4gICAgfVxuICB9XG5cbiAgbW92ZUxheWVyKGxheWVyOiBMYXllciwgZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKSB7XG4gICAgY29uc3QgbGF5ZXJUbyA9IHRoaXMubGF5ZXJzW3RvXTtcbiAgICBjb25zdCB6SW5kZXhUbyA9IGxheWVyVG8uekluZGV4O1xuICAgIGNvbnN0IHpJbmRleEZyb20gPSBsYXllci56SW5kZXg7XG5cbiAgICBpZiAobGF5ZXJUby5iYXNlTGF5ZXIgfHwgbGF5ZXIuYmFzZUxheWVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGF5ZXIuekluZGV4ID0gekluZGV4VG87XG4gICAgbGF5ZXJUby56SW5kZXggPSB6SW5kZXhGcm9tO1xuXG4gICAgdGhpcy5sYXllcnNbdG9dID0gbGF5ZXI7XG4gICAgdGhpcy5sYXllcnNbZnJvbV0gPSBsYXllclRvO1xuICAgIHRoaXMubGF5ZXJzJC5uZXh0KHRoaXMubGF5ZXJzLnNsaWNlKDApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBsYXllciB0byB0aGUgT0wgbWFwIGFuZCBzdGFydCB3YXRjaGluZy4gSWYgdGhlIGxheWVyIGlzIGFscmVhZHlcbiAgICogYWRkZWQgdG8gdGhpcyBtYXAsIG1ha2UgaXQgdmlzaWJsZSBidXQgZG9uJ3QgYWRkIGl0IG9uZSBhZ2Fpbi5cbiAgICogQHBhcmFtIGxheWVyIExheWVyXG4gICAqIEByZXR1cm5zIFRoZSBsYXllciBhZGRlZCwgaWYgYW55XG4gICAqL1xuICBwcml2YXRlIGRvQWRkTGF5ZXIobGF5ZXI6IExheWVyLCBvZmZzZXRaSW5kZXg6IG51bWJlcikge1xuICAgIGlmIChsYXllci5iYXNlTGF5ZXIgJiYgbGF5ZXIudmlzaWJsZSkge1xuICAgICAgdGhpcy5jaGFuZ2VCYXNlTGF5ZXIobGF5ZXIpO1xuICAgIH1cblxuICAgIGNvbnN0IGV4aXN0aW5nTGF5ZXIgPSB0aGlzLmdldExheWVyQnlJZChsYXllci5pZCk7XG4gICAgaWYgKGV4aXN0aW5nTGF5ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZXhpc3RpbmdMYXllci52aXNpYmxlID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWxheWVyLmJhc2VMYXllciAmJiBsYXllci56SW5kZXgpIHtcbiAgICAgIGxheWVyLnpJbmRleCArPSAxMDtcbiAgICB9XG5cbiAgICBpZiAobGF5ZXIuekluZGV4ID09PSB1bmRlZmluZWQgfHwgbGF5ZXIuekluZGV4ID09PSAwKSB7XG4gICAgICBjb25zdCBtYXhaSW5kZXggPSBNYXRoLm1heChcbiAgICAgICAgbGF5ZXIuYmFzZUxheWVyID8gMCA6IDEwLFxuICAgICAgICAuLi50aGlzLmxheWVyc1xuICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAobCkgPT4gbC5iYXNlTGF5ZXIgPT09IGxheWVyLmJhc2VMYXllciAmJiBsLnpJbmRleCA8IDIwMCAvLyB6SW5kZXggPiAyMDAgPSBzeXN0ZW0gbGF5ZXJcbiAgICAgICAgICApXG4gICAgICAgICAgLm1hcCgobCkgPT4gbC56SW5kZXgpXG4gICAgICApO1xuICAgICAgbGF5ZXIuekluZGV4ID0gbWF4WkluZGV4ICsgMSArIG9mZnNldFpJbmRleDtcbiAgICB9XG5cbiAgICBpZiAobGF5ZXIuYmFzZUxheWVyICYmIGxheWVyLnpJbmRleCA+IDkpIHtcbiAgICAgIGxheWVyLnpJbmRleCA9IDEwOyAvLyBiYXNlbGF5ZXIgbXVzdCBoYXZlIHpJbmRleCA8IDEwXG4gICAgfVxuXG4gICAgbGF5ZXIuc2V0TWFwKHRoaXMpO1xuICAgIHRoaXMubGF5ZXJXYXRjaGVyLndhdGNoTGF5ZXIobGF5ZXIpO1xuICAgIHRoaXMub2wuYWRkTGF5ZXIobGF5ZXIub2wpO1xuXG4gICAgcmV0dXJuIGxheWVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIGxheWVyIGZyb20gdGhlIE9MIG1hcCBhbmQgc3RvcCB3YXRjaGluZ1xuICAgKiBAcGFyYW0gbGF5ZXIgTGF5ZXJcbiAgICovXG4gIHByaXZhdGUgZG9SZW1vdmVMYXllcihsYXllcjogTGF5ZXIpIHtcbiAgICB0aGlzLmxheWVyV2F0Y2hlci51bndhdGNoTGF5ZXIobGF5ZXIpO1xuICAgIHRoaXMub2wucmVtb3ZlTGF5ZXIobGF5ZXIub2wpO1xuICAgIGxheWVyLnNldE1hcCh1bmRlZmluZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgbGF5ZXJzIG9ic2VydmFibGVcbiAgICogQHBhcmFtIGxheWVycyBMYXllcnNcbiAgICovXG4gIHByaXZhdGUgc2V0TGF5ZXJzKGxheWVyczogTGF5ZXJbXSkge1xuICAgIHRoaXMubGF5ZXJzJC5uZXh0KHRoaXMuc29ydExheWVyc0J5WkluZGV4KGxheWVycykuc2xpY2UoMCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNvcnQgbGF5ZXJzIGJ5IGRlc2NlbmRpbmcgekluZGV4XG4gICAqIEBwYXJhbSBsYXllcnMgQXJyYXkgb2YgbGF5ZXJzXG4gICAqIEByZXR1cm5zIFRoZSBvcmlnaW5hbCBhcnJheSwgc29ydGVkIGJ5IHpJbmRleFxuICAgKi9cbiAgcHJpdmF0ZSBzb3J0TGF5ZXJzQnlaSW5kZXgobGF5ZXJzOiBMYXllcltdKSB7XG4gICAgLy8gU29ydCBieSBkZXNjZW5kaW5nIHpJbmRleFxuICAgIHJldHVybiBsYXllcnMuc29ydChcbiAgICAgIChsYXllcjE6IExheWVyLCBsYXllcjI6IExheWVyKSA9PiBsYXllcjIuekluZGV4IC0gbGF5ZXIxLnpJbmRleFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGxheWVyIGluZGV4IGluIHRoZSBtYXAncyBpbmVuciBhcnJheSBvZiBsYXllcnNcbiAgICogQHBhcmFtIGxheWVyIExheWVyXG4gICAqIEByZXR1cm5zIFRoZSBsYXllciBpbmRleFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRMYXllckluZGV4KGxheWVyOiBMYXllcikge1xuICAgIHJldHVybiB0aGlzLmxheWVycy5maW5kSW5kZXgoKF9sYXllcjogTGF5ZXIpID0+IF9sYXllciA9PT0gbGF5ZXIpO1xuICB9XG59XG4iXX0=
|
|
@@ -11,20 +11,19 @@ import * as i0 from "@angular/core";
|
|
|
11
11
|
*/
|
|
12
12
|
export class MapService {
|
|
13
13
|
map;
|
|
14
|
-
constructor() { }
|
|
15
14
|
getMap() {
|
|
16
15
|
return this.map;
|
|
17
16
|
}
|
|
18
17
|
setMap(map) {
|
|
19
18
|
this.map = map;
|
|
20
19
|
}
|
|
21
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
22
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
20
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: MapService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
21
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: MapService, providedIn: 'root' });
|
|
23
22
|
}
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: MapService, decorators: [{
|
|
25
24
|
type: Injectable,
|
|
26
25
|
args: [{
|
|
27
26
|
providedIn: 'root'
|
|
28
27
|
}]
|
|
29
|
-
}]
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
}] });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL21hcC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSTNDOzs7Ozs7OztHQVFHO0FBSUgsTUFBTSxPQUFPLFVBQVU7SUFDYixHQUFHLENBQVM7SUFFcEIsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQVc7UUFDaEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDakIsQ0FBQzt1R0FUVSxVQUFVOzJHQUFWLFVBQVUsY0FGVCxNQUFNOzsyRkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi9tYXAnO1xuXG4vKipcbiAqIE1hcFNlcnZpY2VcbiAqXG4gKiBUaGlzIHNlcnZpY2UgdHJhY2tzIHRoZSBJZ29NYXAgaW5zdGFuY2UsIGlmIGFueS5cbiAqIEN1cnJlbnRseSwgb25seSBvbmUgbWFwIGluc3RhbmNlIGlzIHN1cHBvcnRlZFxuICogYnV0IHN1cHBvcnQgZm9yIG11bHRpcGxlIG1hcHMgbWF5IGJlIGFkZGVkIGluIHRoZSBmdXR1cmUuXG4gKiBUaGlzIHdpbGwgaW1wYWN0IG90aGVyIHNlcnZpY2VzIHN1Y2ggYXMgdGhlIE92ZXJsYXlTZXJ2aWNlXG4gKiBiZWNhdXNlIHRoZXNlIG1hcHMgd29uJ3QgYmUgc2hhcmluZyBvdmVybGF5ZWQgZmVhdHVyZXMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1hcFNlcnZpY2Uge1xuICBwcml2YXRlIG1hcDogSWdvTWFwO1xuXG4gIGdldE1hcCgpOiBJZ29NYXAge1xuICAgIHJldHVybiB0aGlzLm1hcDtcbiAgfVxuXG4gIHNldE1hcChtYXA6IElnb01hcCkge1xuICAgIHRoaXMubWFwID0gbWFwO1xuICB9XG59XG4iXX0=
|
|
@@ -52,7 +52,6 @@ export function stringToLonLat(str, mapProjection, opts = {}) {
|
|
|
52
52
|
const dmdCoord = '([-+])?(\\d{1,3})[\\s,.]{1}(\\d{1,2})[\\s,.]{1}(\\d{1,2})[.,]?(\\d{1,5})?';
|
|
53
53
|
const patternDmd = `${dmdCoord}\\s*[,.]?\\s*${dmdCoord}`;
|
|
54
54
|
const dmdRegex = new RegExp(`^${patternDmd}`, 'g');
|
|
55
|
-
/* eslint-disable max-len */
|
|
56
55
|
const patternBELL = 'LAT\\s*[\\s:]*\\s*([-+])?(\\d{1,2})[\\s.,]?(\\d+)?[\\s.,]?\\s*(\\d{1,2}([.,]\\d+)?)?\\s*(N|S|E|W)?\\s*LONG\\s*[\\s:]*\\s*([-+])?(\\d{1,3})[\\s.,]?(\\d+)?[\\s.,]?\\s*(\\d{1,2}([.,]\\d+)?)?\\s*(N|S|E|W)?\\s*UNC\\s*[\\s:]?\\s*(\\d+)\\s*CONF\\s*[\\s:]?\\s*(\\d{1,3})';
|
|
57
56
|
const bellRegex = new RegExp(`^${patternBELL}?`, 'gi');
|
|
58
57
|
const mmCoord = '([-+]?\\d+)[,.]?(\\d+)?';
|
|
@@ -217,7 +216,7 @@ export function stringToLonLat(str, mapProjection, opts = {}) {
|
|
|
217
216
|
try {
|
|
218
217
|
lonLat = olproj.transform(lonLat, source, dest);
|
|
219
218
|
}
|
|
220
|
-
catch
|
|
219
|
+
catch {
|
|
221
220
|
return {
|
|
222
221
|
lonLat: undefined,
|
|
223
222
|
message: 'Projection ' + source + ' not supported',
|
|
@@ -453,4 +452,4 @@ export function mtmZoneFromLonLat(lonLat) {
|
|
|
453
452
|
}
|
|
454
453
|
return mtmZone;
|
|
455
454
|
}
|
|
456
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9tYXAudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUcxQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzdCLE9BQU8sS0FBSyxNQUFNLE1BQU0sU0FBUyxDQUFDO0FBS2xDOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUM1QixHQUFXLEVBQ1gsYUFBcUIsRUFDckIsT0FBOEIsRUFBRTtJQU9oQyxJQUFJLE1BQXdCLENBQUM7SUFDN0IsSUFBSSxRQUFnQixDQUFDO0lBQ3JCLElBQUksV0FBbUIsQ0FBQztJQUN4QixJQUFJLFVBQWtCLENBQUM7SUFDdkIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksVUFBa0IsQ0FBQztJQUN2QixJQUFJLFlBQW9CLENBQUM7SUFDekIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksV0FBbUIsQ0FBQztJQUN4QixJQUFJLFVBQWtCLENBQUM7SUFDdkIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksVUFBa0IsQ0FBQztJQUN2QixJQUFJLFlBQW9CLENBQUM7SUFDekIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksSUFBWSxDQUFDO0lBQ2pCLElBQUksTUFBYyxDQUFDO0lBQ25CLElBQUksSUFBWSxDQUFDO0lBQ2pCLElBQUksR0FBUSxDQUFDO0lBQ2IsSUFBSSxHQUFRLENBQUM7SUFFYixNQUFNLGlCQUFpQixHQUFHLHVCQUF1QixDQUFDO0lBQ2xELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQztJQUM1QixJQUFJLGFBQXFCLENBQUM7SUFDMUIsTUFBTSxlQUFlLEdBQUcsSUFBSSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxD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SSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDN0IsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUM3QixPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUNELElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzdCLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDZCxDQUFDO0lBQ0QsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDN0IsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUM3QixPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOdW1iZXJVdGlscyB9IGZyb20gJ0BpZ28yL3V0aWxzJztcblxuaW1wb3J0IE1hcEJyb3dzZXJQb2ludGVyRXZlbnQgZnJvbSAnb2wvTWFwQnJvd3NlckV2ZW50JztcbmltcG9ydCB7IE1BQyB9IGZyb20gJ29sL2hhcyc7XG5pbXBvcnQgKiBhcyBvbHByb2ogZnJvbSAnb2wvcHJvaic7XG5cbmltcG9ydCB7IE1hcFZpZXdTdGF0ZSB9IGZyb20gJy4vbWFwLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQcm9qZWN0aW9uIH0gZnJvbSAnLi9wcm9qZWN0aW9uLmludGVyZmFjZXMnO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGV4dHJhY3RzIGEgY29vcmRpbmF0ZSB0dXBsZSBmcm9tIGEgc3RyaW5nLlxuICogQHBhcmFtIHN0ciBBbnkgc3RyaW5nXG4gKiBAcGFyYW0gbWFwUHJvamVjdGlvbiBzdHJpbmcgTWFwIFByb2plY3Rpb25cbiAqIEBwYXJhbSBvcHRzLmZvcmNlTkEgYm9vbGVhbiBGb3JjZSBOb3J0aCBBbWVyaWNhIFpvbmVcbiAqIEByZXR1cm5zIG9iamVjdDpcbiAqICAgICAgICAgICAgIGxvbkxhdDogQ29vcmRpbmF0ZSxcbiAqICAgICAgICAgICAgIG1lc3NhZ2U6IE1lc3NhZ2Ugb2YgZXJyb3IsXG4gKiAgICAgICAgICAgICByYWRpdXM6IHJhZGl1cyBvZiB0aGUgY29uZmllbmNlIG9mIGNvb3JkaW5hdGUsXG4gKiAgICAgICAgICAgICBjb25mOiBjb25maWRlbmNlIG9mIHRoZSBjb29yZGluYXRlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nVG9Mb25MYXQoXG4gIHN0cjogc3RyaW5nLFxuICBtYXBQcm9qZWN0aW9uOiBzdHJpbmcsXG4gIG9wdHM6IHsgZm9yY2VOQT86IGJvb2xlYW4gfSA9IHt9XG4pOiB7XG4gIGxvbkxhdDogW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZDtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICByYWRpdXM6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgY29uZjogbnVtYmVyIHwgdW5kZWZpbmVkO1xufSB7XG4gIGxldCBsb25MYXQ6IFtudW1iZXIsIG51bWJlcl07XG4gIGxldCBjb29yZFN0cjogc3RyaW5nO1xuICBsZXQgbmVnYXRpdmVMb246IHN0cmluZztcbiAgbGV0IGRlZ3JlZXNMb246IHN0cmluZztcbiAgbGV0IG1pbnV0ZXNMb246IHN0cmluZztcbiAgbGV0IHNlY29uZHNMb246IHN0cmluZztcbiAgbGV0IGRpcmVjdGlvbkxvbjogc3RyaW5nO1xuICBsZXQgZGVjaW1hbExvbjogc3RyaW5nO1xuICBsZXQgbmVnYXRpdmVMYXQ6IHN0cmluZztcbiAgbGV0IGRlZ3JlZXNMYXQ6IHN0cmluZztcbiAgbGV0IG1pbnV0ZXNMYXQ6IHN0cmluZztcbiAgbGV0IHNlY29uZHNMYXQ6IHN0cmluZztcbiAgbGV0IGRpcmVjdGlvbkxhdDogc3RyaW5nO1xuICBsZXQgZGVjaW1hbExhdDogc3RyaW5nO1xuICBsZXQgem9uZTogc3RyaW5nO1xuICBsZXQgcmFkaXVzOiBzdHJpbmc7XG4gIGxldCBjb25mOiBzdHJpbmc7XG4gIGxldCBsb246IGFueTtcbiAgbGV0IGxhdDogYW55O1xuXG4gIGNvbnN0IHByb2plY3Rpb25QYXR0ZXJuID0gJyhcXFxccyo7XFxcXHMqW1xcXFxkXXs0LDZ9KSc7XG4gIGNvbnN0IHRvUHJvamVjdGlvbiA9ICc0MzI2JztcbiAgbGV0IHByb2plY3Rpb25TdHI6IHN0cmluZztcbiAgY29uc3QgcHJvamVjdGlvblJlZ2V4ID0gbmV3IFJlZ0V4cChwcm9qZWN0aW9uUGF0dGVybiwgJ2cnKTtcblxuICBjb25zdCBsb25sYXRDb29yZCA9ICcoWy0rXSk/KFtcXFxcZF17MSwzfSkoWywuXShcXFxcZCspKT8nO1xuICBjb25zdCBsb25MYXRQYXR0ZXJuID0gYCR7bG9ubGF0Q29vcmR9W1xcXFxzLF0rJHtsb25sYXRDb29yZH1gO1xuICBjb25zdCBsb25MYXRSZWdleCA9IG5ldyBSZWdFeHAoYF4ke2xvbkxhdFBhdHRlcm59JGAsICdnJyk7XG5cbiAgY29uc3QgZG1zQ29vcmQgPVxuICAgICcoWzAtOV17MSwyfSlbOnzCsF0/XFxcXHMqKFswLTldezEsMn0pP1s6fFxcJ3zigLJ84oCZXT9cXFxccyooWzAtOV17MSwyfSg/Oi5bMC05XSspezAsMX0pP1xcXFxzKltcInzigLN84oCdXT9cXFxccyonO1xuICBjb25zdCBkbXNDb29yZFBhdHRlcm4gPSBgJHtkbXNDb29yZH0oW058U3xFfFd8T10pLD9cXFxccyoke2Rtc0Nvb3JkfShbTnxTfEV8V3xPXSlgO1xuICBjb25zdCBkbXNSZWdleCA9IG5ldyBSZWdFeHAoYF4ke2Rtc0Nvb3JkUGF0dGVybn0kYCwgJ2dpJyk7XG5cbiAgY29uc3QgcGF0dGVyblV0bSA9XG4gICAgJyhVVE0pLT8oXFxcXGR7MSwyfSlbXFxcXHMsXSooXFxcXGQrWy4sXT9cXFxcZCspW1xcXFxzLF0rKFxcXFxkK1suLF0/XFxcXGQrKSc7XG4gIGNvbnN0IHV0bVJlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7cGF0dGVyblV0bX1gLCAnZ2knKTtcblxuICBjb25zdCBwYXR0ZXJuTXRtID1cbiAgICAnKE1UTSktPyhcXFxcZHsxLDJ9KVtcXFxccyxdKihcXFxcZCtbLixdP1xcXFxkKylbXFxcXHMsXSsoXFxcXGQrWy4sXT9cXFxcZCspJztcbiAgY29uc3QgbXRtUmVnZXggPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuTXRtfWAsICdnaScpO1xuXG4gIGNvbnN0IGRkQ29vcmQgPSAnKFstK10pPyhcXFxcZHsxLDN9KVssLl0oXFxcXGQrKSc7XG4gIGNvbnN0IHBhdHRlcm5EZCA9IGAke2RkQ29vcmR9XFxcXHMqWyxdP1xcXFxzKiR7ZGRDb29yZH1gO1xuICBjb25zdCBkZFJlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7cGF0dGVybkRkfWAsICdnJyk7XG5cbiAgY29uc3QgZG1kQ29vcmQgPVxuICAgICcoWy0rXSk/KFxcXFxkezEsM30pW1xcXFxzLC5dezF9KFxcXFxkezEsMn0pW1xcXFxzLC5dezF9KFxcXFxkezEsMn0pWy4sXT8oXFxcXGR7MSw1fSk/JztcbiAgY29uc3QgcGF0dGVybkRtZCA9IGAke2RtZENvb3JkfVxcXFxzKlssLl0/XFxcXHMqJHtkbWRDb29yZH1gO1xuICBjb25zdCBkbWRSZWdleCA9IG5ldyBSZWdFeHAoYF4ke3BhdHRlcm5EbWR9YCwgJ2cnKTtcblxuICAvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG4gIGNvbnN0IHBhdHRlcm5CRUxMID1cbiAgICAnTEFUXFxcXHMqW1xcXFxzOl0qXFxcXHMqKFstK10pPyhcXFxcZHsxLDJ9KVtcXFxccy4sXT8oXFxcXGQrKT9bXFxcXHMuLF0/XFxcXHMqKFxcXFxkezEsMn0oWy4sXVxcXFxkKyk/KT9cXFxccyooTnxTfEV8Vyk/XFxcXHMqTE9OR1xcXFxzKltcXFxcczpdKlxcXFxzKihbLStdKT8oXFxcXGR7MSwzfSlbXFxcXHMuLF0/KFxcXFxkKyk/W1xcXFxzLixdP1xcXFxzKihcXFxcZHsxLDJ9KFsuLF1cXFxcZCspPyk/XFxcXHMqKE58U3xFfFcpP1xcXFxzKlVOQ1xcXFxzKltcXFxcczpdP1xcXFxzKihcXFxcZCspXFxcXHMqQ09ORlxcXFxzKltcXFxcczpdP1xcXFxzKihcXFxcZHsxLDN9KSc7XG4gIGNvbnN0IGJlbGxSZWdleCA9IG5ldyBSZWdFeHAoYF4ke3BhdHRlcm5CRUxMfT9gLCAnZ2knKTtcblxuICBjb25zdCBtbUNvb3JkID0gJyhbLStdP1xcXFxkKylbLC5dPyhcXFxcZCspPyc7XG4gIGNvbnN0IG1tUGF0dGVybiA9IGAke21tQ29vcmR9W1xcXFxzLF0rJHttbUNvb3JkfWA7XG4gIGNvbnN0IG1tUmVnZXggPSBuZXcgUmVnRXhwKGBeJHttbVBhdHRlcm59JGAsICdnJyk7XG5cbiAgbGV0IGlzWFlDb29yZHMgPSBmYWxzZTtcblxuICBzdHIgPSBzdHIudG9Mb2NhbGVVcHBlckNhc2UoKS50cmltKCk7XG5cbiAgLy8gRXh0cmFjdCBwcm9qZWN0aW9uXG4gIGlmIChwcm9qZWN0aW9uUmVnZXgudGVzdChzdHIpKSB7XG4gICAgW2Nvb3JkU3RyLCBwcm9qZWN0aW9uU3RyXSA9IHN0ci5zcGxpdCgnOycpLm1hcCgocykgPT4gcy50cmltKCkpO1xuICB9IGVsc2Uge1xuICAgIGNvb3JkU3RyID0gc3RyO1xuICB9XG4gIGlmIChsb25MYXRSZWdleC50ZXN0KGNvb3JkU3RyKSkge1xuICAgIFssIG5lZ2F0aXZlTG9uLCBsb24sICwgZGVjaW1hbExvbiwgbmVnYXRpdmVMYXQsIGxhdCwgLCBkZWNpbWFsTGF0XSA9XG4gICAgICBjb29yZFN0ci5tYXRjaChsb25MYXRQYXR0ZXJuKTtcblxuICAgIGxvbiA9IHBhcnNlRmxvYXQoKG5lZ2F0aXZlTG9uID8gbmVnYXRpdmVMb24gOiAnJykgKyBsb24gKyAnLicgKyBkZWNpbWFsTG9uKTtcbiAgICBsYXQgPSBwYXJzZUZsb2F0KChuZWdhdGl2ZUxhdCA/IG5lZ2F0aXZlTGF0IDogJycpICsgbGF0ICsgJy4nICsgZGVjaW1hbExhdCk7XG4gIH0gZWxzZSBpZiAoZG1zUmVnZXgudGVzdChjb29yZFN0cikpIHtcbiAgICBbXG4gICAgICAsXG4gICAgICBkZWdyZWVzTG9uLFxuICAgICAgbWludXRlc0xvbixcbiAgICAgIHNlY29uZHNMb24sXG4gICAgICBkaXJlY3Rpb25Mb24sXG4gICAgICBkZWdyZWVzTGF0LFxuICAgICAgbWludXRlc0xhdCxcbiAgICAgIHNlY29uZHNMYXQsXG4gICAgICBkaXJlY3Rpb25MYXRcbiAgICBdID0gY29vcmRTdHIubWF0Y2goZG1zQ29vcmRQYXR0ZXJuKTtcblxuICAgIGlmIChkaXJlY3Rpb25Mb24gPT09ICdTJyB8fCBkaXJlY3Rpb25Mb24gPT09ICdOJykge1xuICAgICAgZGVncmVlc0xvbiA9IFtkZWdyZWVzTGF0LCAoZGVncmVlc0xhdCA9IGRlZ3JlZXNMb24pXVswXTtcbiAgICAgIG1pbnV0ZXNMb24gPSBbbWludXRlc0xhdCwgKG1pbnV0ZXNMYXQgPSBtaW51dGVzTG9uKV1bMF07XG4gICAgICBzZWNvbmRzTG9uID0gW3NlY29uZHNMYXQsIChzZWNvbmRzTGF0ID0gc2Vjb25kc0xvbildWzBdO1xuICAgICAgZGlyZWN0aW9uTG9uID0gW2RpcmVjdGlvbkxhdCwgKGRpcmVjdGlvbkxhdCA9IGRpcmVjdGlvbkxvbildWzBdO1xuICAgIH1cblxuICAgIGxvbiA9IGNvbnZlcnRETVNUb0REKFxuICAgICAgcGFyc2VGbG9hdChkZWdyZWVzTG9uKSxcbiAgICAgIHBhcnNlRmxvYXQobWludXRlc0xvbiksXG4gICAgICBwYXJzZUZsb2F0KHNlY29uZHNMb24pLFxuICAgICAgZGlyZWN0aW9uTG9uXG4gICAgKTtcbiAgICBsYXQgPSBjb252ZXJ0RE1TVG9ERChcbiAgICAgIHBhcnNlRmxvYXQoZGVncmVlc0xhdCksXG4gICAgICBwYXJzZUZsb2F0KG1pbnV0ZXNMYXQpLFxuICAgICAgcGFyc2VGbG9hdChzZWNvbmRzTGF0KSxcbiAgICAgIGRpcmVjdGlvbkxhdFxuICAgICk7XG4gIH0gZWxzZSBpZiAodXRtUmVnZXgudGVzdChjb29yZFN0cikpIHtcbiAgICBpc1hZQ29vcmRzID0gdHJ1ZTtcbiAgICBbLCAsIHpvbmUsIGxvbiwgbGF0XSA9IGNvb3JkU3RyLm1hdGNoKHBhdHRlcm5VdG0pO1xuICAgIGNvbnN0IGVwc2dVdG0gPSBOdW1iZXIoem9uZSkgPCAxMCA/IGBFUFNHOjMyNjAke3pvbmV9YCA6IGBFUFNHOjMyNiR7em9uZX1gO1xuICAgIFtsb24sIGxhdF0gPSBvbHByb2oudHJhbnNmb3JtKFxuICAgICAgW3BhcnNlRmxvYXQobG9uKSwgcGFyc2VGbG9hdChsYXQpXSxcbiAgICAgIGVwc2dVdG0sXG4gICAgICAnRVBTRzo0MzI2J1xuICAgICk7XG4gIH0gZWxzZSBpZiAobXRtUmVnZXgudGVzdChjb29yZFN0cikpIHtcbiAgICBpc1hZQ29vcmRzID0gdHJ1ZTtcbiAgICBbLCAsIHpvbmUsIGxvbiwgbGF0XSA9IGNvb3JkU3RyLm1hdGNoKHBhdHRlcm5NdG0pO1xuICAgIGNvbnN0IGVwc2dNdG0gPVxuICAgICAgTnVtYmVyKHpvbmUpIDwgMTAgPyBgRVBTRzozMjE4JHt6b25lfWAgOiBgRVBTRzozMjEkezgwICsgTnVtYmVyKHpvbmUpfWA7XG4gICAgW2xvbiwgbGF0XSA9IG9scHJvai50cmFuc2Zvcm0oXG4gICAgICBbcGFyc2VGbG9hdChsb24pLCBwYXJzZUZsb2F0KGxhdCldLFxuICAgICAgZXBzZ010bSxcbiAgICAgICdFUFNHOjQzMjYnXG4gICAgKTtcbiAgfSBlbHNlIGlmIChkbWRSZWdleC50ZXN0KGNvb3JkU3RyKSkge1xuICAgIFtcbiAgICAgICxcbiAgICAgIG5lZ2F0aXZlTG9uLFxuICAgICAgZGVncmVlc0xvbixcbiAgICAgIG1pbnV0ZXNMb24sXG4gICAgICBzZWNvbmRzTG9uLFxuICAgICAgZGVjaW1hbExvbixcbiAgICAgIG5lZ2F0aXZlTGF0LFxuICAgICAgZGVncmVlc0xhdCxcbiAgICAgIG1pbnV0ZXNMYXQsXG4gICAgICBzZWNvbmRzTGF0LFxuICAgICAgZGVjaW1hbExhdFxuICAgIF0gPSBjb29yZFN0ci5tYXRjaChwYXR0ZXJuRG1kKTtcblxuICAgIGxvbiA9IGNvbnZlcnRETVNUb0REKFxuICAgICAgcGFyc2VGbG9hdCgobmVnYXRpdmVMb24gPyBuZWdhdGl2ZUxvbiA6ICcnKSArIGRlZ3JlZXNMb24pLFxuICAgICAgcGFyc2VGbG9hdChtaW51dGVzTG9uKSxcbiAgICAgIHBhcnNlRmxvYXQoc2Vjb25kc0xvbiksXG4gICAgICBkaXJlY3Rpb25Mb25cbiAgICApO1xuICAgIGxhdCA9IGNvbnZlcnRETVNUb0REKFxuICAgICAgcGFyc2VGbG9hdCgobmVnYXRpdmVMYXQgPyBuZWdhdGl2ZUxhdCA6ICcnKSArIGRlZ3JlZXNMYXQpLFxuICAgICAgcGFyc2VGbG9hdChtaW51dGVzTGF0KSxcbiAgICAgIHBhcnNlRmxvYXQoc2Vjb25kc0xhdCksXG4gICAgICBkaXJlY3Rpb25MYXRcbiAgICApO1xuICB9IGVsc2UgaWYgKGRkUmVnZXgudGVzdChjb29yZFN0cikpIHtcbiAgICBbXG4gICAgICAsXG4gICAgICBuZWdhdGl2ZUxvbixcbiAgICAgIGRlZ3JlZXNMb24sXG4gICAgICBkZWNpbWFsTG9uLFxuICAgICAgbmVnYXRpdmVMYXQsXG4gICAgICBkZWdyZWVzTGF0LFxuICAgICAgZGVjaW1hbExhdFxuICAgIF0gPSBjb29yZFN0ci5tYXRjaChwYXR0ZXJuRGQpO1xuXG4gICAgbG9uID0gY29udmVydERNU1RvREQoXG4gICAgICBwYXJzZUZsb2F0KChuZWdhdGl2ZUxvbiA/IG5lZ2F0aXZlTG9uIDogJycpICsgZGVncmVlc0xvbiksXG4gICAgICBwYXJzZUZsb2F0KG1pbnV0ZXNMb24pLFxuICAgICAgcGFyc2VGbG9hdChzZWNvbmRzTG9uKSxcbiAgICAgIGRpcmVjdGlvbkxvblxuICAgICk7XG4gICAgbGF0ID0gY29udmVydERNU1RvREQoXG4gICAgICBwYXJzZUZsb2F0KChuZWdhdGl2ZUxhdCA/IG5lZ2F0aXZlTGF0IDogJycpICsgZGVncmVlc0xhdCksXG4gICAgICBwYXJzZUZsb2F0KG1pbnV0ZXNMYXQpLFxuICAgICAgcGFyc2VGbG9hdChzZWNvbmRzTGF0KSxcbiAgICAgIGRpcmVjdGlvbkxhdFxuICAgICk7XG4gIH0gZWxzZSBpZiAoYmVsbFJlZ2V4LnRlc3QoY29vcmRTdHIpKSB7XG4gICAgW1xuICAgICAgLFxuICAgICAgbmVnYXRpdmVMYXQsXG4gICAgICBkZWdyZWVzTGF0LFxuICAgICAgbWludXRlc0xhdCxcbiAgICAgIHNlY29uZHNMYXQsXG4gICAgICAsXG4gICAgICBkaXJlY3Rpb25MYXQsXG4gICAgICBuZWdhdGl2ZUxvbixcbiAgICAgIGRlZ3JlZXNMb24sXG4gICAgICBtaW51dGVzTG9uLFxuICAgICAgc2Vjb25kc0xvbixcbiAgICAgICxcbiAgICAgIGRpcmVjdGlvbkxvbixcbiAgICAgIHJhZGl1cyxcbiAgICAgIGNvbmZcbiAgICBdID0gY29vcmRTdHIubWF0Y2gocGF0dGVybkJFTEwpO1xuXG4gICAgLy8gU2V0IGRlZmF1bHQgdmFsdWUgZm9yIE5vcnRoIEFtZXJpY2FcbiAgICBpZiAoIWRpcmVjdGlvbkxvbikge1xuICAgICAgZGlyZWN0aW9uTG9uID0gJ1cnO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHJlYWwgbWludXRlcyBvciBkZWNpbWFsc1xuICAgIGlmIChtaW51dGVzTG9uICYmIG1pbnV0ZXNMb24ubGVuZ3RoID4gMikge1xuICAgICAgbG9uID0gcGFyc2VGbG9hdChcbiAgICAgICAgKG5lZ2F0aXZlTG9uID8gbmVnYXRpdmVMb24gOiAnJykgKyBkZWdyZWVzTG9uICsgJy4nICsgbWludXRlc0xvblxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9uID0gY29udmVydERNU1RvREQoXG4gICAgICAgIHBhcnNlRmxvYXQoZGVncmVlc0xvbiksXG4gICAgICAgIHBhcnNlRmxvYXQobWludXRlc0xvbiksXG4gICAgICAgIHBhcnNlRmxvYXQoc2Vjb25kc0xvbiksXG4gICAgICAgIGRpcmVjdGlvbkxvblxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAobWludXRlc0xhdCAmJiBtaW51dGVzTGF0Lmxlbmd0aCA+IDIpIHtcbiAgICAgIGxhdCA9IHBhcnNlRmxvYXQoXG4gICAgICAgIChuZWdhdGl2ZUxhdCA/IG5lZ2F0aXZlTGF0IDogJycpICsgZGVncmVlc0xhdCArICcuJyArIG1pbnV0ZXNMYXRcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxhdCA9IGNvbnZlcnRETVNUb0REKFxuICAgICAgICBwYXJzZUZsb2F0KGRlZ3JlZXNMYXQpLFxuICAgICAgICBwYXJzZUZsb2F0KG1pbnV0ZXNMYXQpLFxuICAgICAgICBwYXJzZUZsb2F0KHNlY29uZHNMYXQpLFxuICAgICAgICBkaXJlY3Rpb25MYXRcbiAgICAgICk7XG4gICAgfVxuICB9IGVsc2UgaWYgKG1tUmVnZXgudGVzdChjb29yZFN0cikpIHtcbiAgICBpc1hZQ29vcmRzID0gdHJ1ZTtcbiAgICBbLCBsb24sIGRlY2ltYWxMb24sIGxhdCwgZGVjaW1hbExhdF0gPSBjb29yZFN0ci5tYXRjaChtbVBhdHRlcm4pO1xuXG4gICAgaWYgKGRlY2ltYWxMb24pIHtcbiAgICAgIGxvbiA9IHBhcnNlRmxvYXQobG9uICsgJy4nICsgZGVjaW1hbExvbik7XG4gICAgfVxuXG4gICAgaWYgKGRlY2ltYWxMYXQpIHtcbiAgICAgIGxhdCA9IHBhcnNlRmxvYXQobGF0ICsgJy4nICsgZGVjaW1hbExhdCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiB7XG4gICAgICBsb25MYXQ6IHVuZGVmaW5lZCxcbiAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgcmFkaXVzOiB1bmRlZmluZWQsXG4gICAgICBjb25mOiB1bmRlZmluZWRcbiAgICB9O1xuICB9XG5cbiAgaWYgKG9wdHMuZm9yY2VOQSAmJiAhaXNYWUNvb3Jkcykge1xuICAgIC8vIFNldCBhIG5lZ2F0aXZlIGNvb3JkaW5hdGUgZm9yIE5vcnRoIEFtZXJpY2Egem9uZVxuICAgIGlmIChsb24gPiAwICYmIGxhdCA+IDApIHtcbiAgICAgIGlmIChsb24gPiBsYXQpIHtcbiAgICAgICAgbG9uID0gLWxvbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxhdCA9IC1sYXQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV2ZXJzZSBjb29yZGluYXRlIHRvIHJlc3BlY3QgbG9uTGF0IGNvbnZlbnRpb25cbiAgICBpZiAobG9uID4gbGF0KSB7XG4gICAgICBsb24gPSBbbGF0LCAobGF0ID0gbG9uKV1bMF07XG4gICAgfVxuICB9XG5cbiAgbG9uTGF0ID0gW051bWJlcihsb24pLCBOdW1iZXIobGF0KV0gYXMgW251bWJlciwgbnVtYmVyXTtcblxuICAvLyBSZXByb2plY3QgdGhlIGNvb3JkaW5hdGUgaWYgcHJvamVjdGlvbiBwYXJhbWV0ZXIgaGF2ZSBiZWVuIHNldCBhbmQgY29vcmQgaXMgbm90IDQzMjZcbiAgaWYgKFxuICAgIChwcm9qZWN0aW9uU3RyICE9PSB1bmRlZmluZWQgJiYgcHJvamVjdGlvblN0ciAhPT0gdG9Qcm9qZWN0aW9uKSB8fFxuICAgIGxvbkxhdFswXSA+IDE4MCB8fFxuICAgIGxvbkxhdFswXSA8IC0xODAgfHxcbiAgICBsb25MYXRbMV0gPiA5MCB8fFxuICAgIGxvbkxhdFsxXSA8IC05MFxuICApIHtcbiAgICBjb25zdCBzb3VyY2UgPSBwcm9qZWN0aW9uU3RyID8gJ0VQU0c6JyArIHByb2plY3Rpb25TdHIgOiBtYXBQcm9qZWN0aW9uO1xuICAgIGNvbnN0IGRlc3QgPSAnRVBTRzonICsgdG9Qcm9qZWN0aW9uO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxvbkxhdCA9IG9scHJvai50cmFuc2Zvcm0obG9uTGF0LCBzb3VyY2UsIGRlc3QpIGFzIFtudW1iZXIsIG51bWJlcl07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbG9uTGF0OiB1bmRlZmluZWQsXG4gICAgICAgIG1lc3NhZ2U6ICdQcm9qZWN0aW9uICcgKyBzb3VyY2UgKyAnIG5vdCBzdXBwb3J0ZWQnLFxuICAgICAgICByYWRpdXM6IHVuZGVmaW5lZCxcbiAgICAgICAgY29uZjogdW5kZWZpbmVkXG4gICAgICB9O1xuICAgIH1cbiAgfVxuICBpZiAoTWF0aC5hYnMobG9uTGF0WzBdKSA8PSAxODAgJiYgTWF0aC5hYnMobG9uTGF0WzFdKSA8PSA5MCkge1xuICAgIHJldHVybiB7XG4gICAgICBsb25MYXQsXG4gICAgICBtZXNzYWdlOiAnJyxcbiAgICAgIHJhZGl1czogcmFkaXVzID8gcGFyc2VJbnQocmFkaXVzLCAxMCkgOiB1bmRlZmluZWQsXG4gICAgICBjb25mOiBjb25mID8gcGFyc2VJbnQoY29uZiwgMTApIDogdW5kZWZpbmVkXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9uTGF0OiB1bmRlZmluZWQsXG4gICAgICBtZXNzYWdlOiAnQ29vcmRpbmF0ZSBvdXQgb2YgTG9uZ2l0dWRlL0xhdGl0dWRlIGJvdW5kcycsXG4gICAgICByYWRpdXM6IHVuZGVmaW5lZCxcbiAgICAgIGNvbmY6IHVuZGVmaW5lZFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBDb252ZXJ0IGRlZ3JlZXMgbWludXRlcyBzZWNvbmRzIHRvIGRkXG4gKiBAcGFyYW0gZGVncmVlcyBEZWdyZWVzXG4gKiBAcGFyYW0gbWludXRlcyBNaW51dGVzXG4gKiBAcGFyYW0gc2Vjb25kcyBTZWNvbmRzXG4gKiBAcGFyYW0gZGlyZWN0aW9uIERpcmVjdGlvblxuICovXG5mdW5jdGlvbiBjb252ZXJ0RE1TVG9ERChcbiAgZGVncmVlczogbnVtYmVyLFxuICBtaW51dGVzOiBudW1iZXIsXG4gIHNlY29uZHM6IG51bWJlcixcbiAgZGlyZWN0aW9uOiBzdHJpbmdcbikge1xuICBtaW51dGVzID0gbWludXRlcyB8fCAwO1xuICBzZWNvbmRzID0gc2Vjb25kcyB8fCAwO1xuXG4gIGNvbnN0IG5lZyA9IGRlZ3JlZXMgPCAwO1xuICBsZXQgZGQgPSBNYXRoLmFicyhkZWdyZWVzKSArIG1pbnV0ZXMgLyA2MCArIHNlY29uZHMgLyAzNjAwO1xuXG4gIGlmIChuZWcgfHwgZGlyZWN0aW9uID09PSAnUycgfHwgZGlyZWN0aW9uID09PSAnVycpIHtcbiAgICBkZCA9IC1kZDtcbiAgfSAvLyBEb24ndCBkbyBhbnl0aGluZyBmb3IgTiBvciBFXG4gIHJldHVybiBkZDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGRkIHRvIGRlZ3JlZXMgbWludXRlcyBzZWNvbmRzXG4gKiBAcGFyYW0gbG9uTGF0REQgbG9uZ2l0dWRlIGFuZCBsYXRpdHVkZSBpbiBkZFxuICogQHBhcmFtIGRlY2ltYWwgbnVtYmVyIG9mIGRlY2ltYWxzIGZvciBzZWNvbmRzXG4gKiBAcmV0dXJucyBsb25naXR1ZGUgYW5kIGxhdGl0dWRlIGluIGRtc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydEREVG9ETVMoXG4gIGxvbkxhdEREOiBbbnVtYmVyLCBudW1iZXJdLFxuICBkZWNpbWFsOiBudW1iZXIgPSAzXG4pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGxvbkxhdERNUyA9IFtdO1xuXG4gIGxvbkxhdERELmZvckVhY2goKGRkKSA9PiB7XG4gICAgY29uc3QgZGVncmVlcyA9IGRkIDwgMCA/IE1hdGguY2VpbChkZCkgOiBNYXRoLmZsb29yKGRkKTtcbiAgICBjb25zdCBpbnQgPSBkZCA8IDAgPyAoZGVncmVlcyAtIGRkKSAqIDYwIDogKGRkIC0gZGVncmVlcykgKiA2MDtcbiAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcihpbnQpO1xuICAgIGNvbnN0IHNlY29uZHMgPSAoKGludCAtIG1pbnV0ZXMpICogNjApLnRvRml4ZWQoZGVjaW1hbCk7XG5cbiAgICBsb25MYXRETVMucHVzaChgJHtkZWdyZWVzfcKwICR7bWludXRlc30nICR7c2Vjb25kc31cImApO1xuICB9KTtcbiAgcmV0dXJuIGxvbkxhdERNUztcbn1cblxuLyoqXG4gKiBSZXR1cm4gdHJ1ZSBvZiB0d28gdmlldyBzdGF0ZXMgYXJlIGVxdWFsLlxuICogQHBhcmFtIHN0YXRlMSBWaWV3IHN0YXRlXG4gKiBAcGFyYW0gc3RhdGUyIFZpZXcgc3RhdGVcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHZpZXcgc3RhdGVzIGFyZSBlcXVhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmlld1N0YXRlc0FyZUVxdWFsKFxuICBzdGF0ZTE6IE1hcFZpZXdTdGF0ZSxcbiAgc3RhdGUyOiBNYXBWaWV3U3RhdGVcbik6IGJvb2xlYW4ge1xuICBpZiAoc3RhdGUxID09PSB1bmRlZmluZWQgfHwgc3RhdGUyID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCB0b2xlcmFuY2UgPSAxIC8gMTAwMDA7XG4gIHJldHVybiAoXG4gICAgc3RhdGUxLnpvb20gPT09IHN0YXRlMi56b29tICYmXG4gICAgTWF0aC50cnVuYyhzdGF0ZTEuY2VudGVyWzBdIC8gdG9sZXJhbmNlKSA9PT1cbiAgICAgIE1hdGgudHJ1bmMoc3RhdGUyLmNlbnRlclswXSAvIHRvbGVyYW5jZSkgJiZcbiAgICBNYXRoLnRydW5jKHN0YXRlMS5jZW50ZXJbMV0gLyB0b2xlcmFuY2UpID09PVxuICAgICAgTWF0aC50cnVuYyhzdGF0ZTIuY2VudGVyWzFdIC8gdG9sZXJhbmNlKVxuICApO1xufVxuXG4vKipcbiAqIEZvcm1hdCB0aGUgc2NhbGUgdG8gYSBodW1hbiByZWFkYWJsZSB0ZXh0XG4gKiBAcGFyYW0gU2NhbGUgb2YgdGhlIG1hcFxuICogQHJldHVybnMgSHVtYW4gcmVhZGFibGUgc2NhbGUgdGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0U2NhbGUoc2NhbGUpIHtcbiAgc2NhbGUgPSBNYXRoLnJvdW5kKHNjYWxlKTtcbiAgaWYgKHNjYWxlIDwgMTAwMDApIHtcbiAgICByZXR1cm4gc2NhbGUgKyAnJztcbiAgfVxuXG4gIHNjYWxlID0gTWF0aC5yb3VuZChzY2FsZSAvIDEwMDApO1xuICBpZiAoc2NhbGUgPCAxMDAwKSB7XG4gICAgcmV0dXJuIHNjYWxlICsgJ0snO1xuICB9XG5cbiAgc2NhbGUgPSBNYXRoLnJvdW5kKHNjYWxlIC8gMTAwMCk7XG4gIHJldHVybiBzY2FsZSArICdNJztcbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIHJlc29sdXRpb24gZnJvbSBhIHNjYWxlIGRlbm9tXG4gKiBAcGFyYW0gc2NhbGUgU2NhbGUgZGVub21cbiAqIEBwYXJhbSBkcGkgRFBJXG4gKiBAcmV0dXJucyBSZXNvbHV0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXNvbHV0aW9uRnJvbVNjYWxlKFxuICBzY2FsZTogbnVtYmVyLFxuICBkcGk6IG51bWJlciA9IDk2XG4pOiBudW1iZXIge1xuICBjb25zdCBpbmNoZXNQZXJNZXRlciA9IDM5LjM3MDE7XG4gIHJldHVybiBzY2FsZSAvIChpbmNoZXNQZXJNZXRlciAqIGRwaSk7XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSByZXNvbHV0aW9uIGZyb20gYSBzY2FsZSBkZW5vbVxuICogQHBhcmFtIFNjYWxlIGRlbm9tXG4gKiBAcmV0dXJucyBSZXNvbHV0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY2FsZUZyb21SZXNvbHV0aW9uKFxuICByZXNvbHV0aW9uOiBudW1iZXIsXG4gIHVuaXQ6IHN0cmluZyA9ICdtJyxcbiAgZHBpOiBudW1iZXIgPSA5NlxuKTogbnVtYmVyIHtcbiAgY29uc3QgaW5jaGVzUGVyTWV0ZXIgPSAzOS4zNzAxO1xuICByZXR1cm4gcmVzb2x1dGlvbiAqIG9scHJvai5NRVRFUlNfUEVSX1VOSVRbdW5pdF0gKiBpbmNoZXNQZXJNZXRlciAqIGRwaTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIENUUkwga2V5IGlzIHB1c2hlZCBkdXJpbmcgYW4gT2wgTWFwQnJvd3NlclBvaW50ZXJFdmVudFxuICogQHBhcmFtIGV2ZW50IE9MIE1hcEJyb3dzZXJQb2ludGVyRXZlbnRcbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIENUUkwga2V5IGlzIHB1c2hlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3RybEtleURvd24oZXZlbnQ6IE1hcEJyb3dzZXJQb2ludGVyRXZlbnQ8YW55Pik6IGJvb2xlYW4ge1xuICBjb25zdCBvcmlnaW5hbEV2ZW50ID0gZXZlbnQub3JpZ2luYWxFdmVudDtcbiAgcmV0dXJuIChcbiAgICAhb3JpZ2luYWxFdmVudC5hbHRLZXkgJiZcbiAgICAoTUFDID8gb3JpZ2luYWxFdmVudC5tZXRhS2V5IDogb3JpZ2luYWxFdmVudC5jdHJsS2V5KSAmJlxuICAgICFvcmlnaW5hbEV2ZW50LnNoaWZ0S2V5XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByb3VuZENvb3JkVG8oXG4gIGNvb3JkOiBbbnVtYmVyLCBudW1iZXJdLFxuICBkZWNpbWFsOiBudW1iZXIgPSAzXG4pOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgcmV0dXJuIFtcbiAgICBOdW1iZXJVdGlscy5yb3VuZFRvTkRlY2ltYWwoY29vcmRbMF0sIGRlY2ltYWwpLFxuICAgIE51bWJlclV0aWxzLnJvdW5kVG9ORGVjaW1hbChjb29yZFsxXSwgZGVjaW1hbClcbiAgXSBhcyBbbnVtYmVyLCBudW1iZXJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcm91bmRDb29yZFRvU3RyaW5nKFxuICBjb29yZDogW251bWJlciwgbnVtYmVyXSxcbiAgZGVjaW1hbDogbnVtYmVyID0gM1xuKTogW3N0cmluZywgc3RyaW5nXSB7XG4gIHJldHVybiByb3VuZENvb3JkVG8oY29vcmQsIGRlY2ltYWwpLm1hcCgocikgPT4gci50b1N0cmluZygpKSBhcyBbXG4gICAgc3RyaW5nLFxuICAgIHN0cmluZ1xuICBdO1xufVxuXG4vKipcbiAqIFJldHVybnMgYW4gYXJyYXkgb2YgY29udmVydGVkIGNvb3JkaW5hdGVzLlxuICogQ29udmVyc2lvbiBpcyBkb25lIGZvciBldmVyeSBjb25maWd1cmVkIHByb2plY3Rpb25zXG4gKiBhbmQgZm9yIHRoZSBjdXJyZW50IFVUTSB6b25lIGFuZCBNVE0gem9uZS5cbiAqIEBwYXJhbSBsb25MYXQgW251bWJlciwgbnVtYmVyXSBhcnJheSBvZiB0aGUgY29vcmRpbmF0ZSB0byB0cmFuc2Zvcm0uXG4gKiBAcGFyYW0gcHJvamVjdGlvbnMgIFByb2plY3Rpb25bXSBBcnJheSBvZiBkZXN0aW5hdGlvbiBwcm9qZWN0aW9uLlxuICogQHBhcmFtIHJldmVyc2VDb29yZHMgVG8gcmV2ZXJzZSBjb29yZHMgZnJvbSBsYXRMb24gdG8gbG9uTGF0IChzZWFyY2ggb3B0aW9uKVxuICogQHJldHVybnMgUmV0dXJucyBhbiBhcnJheSBvZiBjb252ZXJ0ZWQgY29vcmRpbmF0ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb25MYXRDb252ZXJzaW9uKFxuICBsb25MYXQ6IFtudW1iZXIsIG51bWJlcl0sXG4gIHByb2plY3Rpb25zOiBQcm9qZWN0aW9uW11cbik6IHtcbiAgY29kZTogc3RyaW5nO1xuICBhbGlhczogc3RyaW5nO1xuICBjb29yZDogW251bWJlciwgbnVtYmVyXTtcbiAgaWdvMkNvb3JkRm9ybWF0OiBzdHJpbmc7XG59W10ge1xuICBjb25zdCByYXdDb29yZDM4NTcgPSBvbHByb2oudHJhbnNmb3JtKGxvbkxhdCwgJ0VQU0c6NDMyNicsICdFUFNHOjM4NTcnKSBhcyBbXG4gICAgbnVtYmVyLFxuICAgIG51bWJlclxuICBdO1xuICBjb25zdCBjb252ZXJ0ZWRMb25MYXQgPSBbXG4gICAge1xuICAgICAgY29kZTogJ0VQU0c6Mzg1NycsXG4gICAgICBhbGlhczogJ1dlYiBNZXJjYXRvcicsXG4gICAgICBjb29yZDogcmF3Q29vcmQzODU3LFxuICAgICAgaWdvMkNvb3JkRm9ybWF0OiBgJHtyb3VuZENvb3JkVG8ocmF3Q29vcmQzODU3KS5qb2luKCcsICcpfSA7IDM4NTdgXG4gICAgfVxuICBdO1xuXG4gIC8vIGRldGVjdCB0aGUgY3VycmVudCB1dG0gem9uZS5cbiAgY29uc3QgdXRtWm9uZSA9IHV0bVpvbmVGcm9tTG9uTGF0KGxvbkxhdCk7XG4gIGNvbnN0IGVwc2dVdG0gPSB1dG1ab25lIDwgMTAgPyBgRVBTRzozMjYwJHt1dG1ab25lfWAgOiBgRVBTRzozMjYke3V0bVpvbmV9YDtcbiAgY29uc3QgdXRtTmFtZSA9IGBVVE0tJHt1dG1ab25lfWA7XG4gIGNvbnN0IHJhd0Nvb3JkVXRtID0gb2xwcm9qLnRyYW5zZm9ybShsb25MYXQsICdFUFNHOjQzMjYnLCBlcHNnVXRtKSBhcyBbXG4gICAgbnVtYmVyLFxuICAgIG51bWJlclxuICBdO1xuICBjb252ZXJ0ZWRMb25MYXQucHVzaCh7XG4gICAgY29kZTogZXBzZ1V0bSxcbiAgICBhbGlhczogJ1VUTScsXG4gICAgY29vcmQ6IHJhd0Nvb3JkVXRtLFxuICAgIGlnbzJDb29yZEZvcm1hdDogYCR7dXRtTmFtZX0gJHtyb3VuZENvb3JkVG8ocmF3Q29vcmRVdG0pLmpvaW4oJywgJyl9YFxuICB9KTtcblxuICAvLyBkZXRlY3QgdGhlIGN1cnJlbnQgbXRtIHpvbmUuXG4gIGNvbnN0IG10bVpvbmUgPSBtdG1ab25lRnJvbUxvbkxhdChsb25MYXQpO1xuICBpZiAobXRtWm9uZSkge1xuICAgIGNvbnN0IGVwc2dNdG0gPVxuICAgICAgbXRtWm9uZSA8IDEwID8gYEVQU0c6MzIxOCR7bXRtWm9uZX1gIDogYEVQU0c6MzIxJHs4MCArIG10bVpvbmV9YDtcbiAgICBjb25zdCBtdG1OYW1lID0gYE1UTS0ke210bVpvbmV9YDtcbiAgICBjb25zdCByYXdDb29yZE10bSA9IG9scHJvai50cmFuc2Zvcm0obG9uTGF0LCAnRVBTRzo0MzI2JywgZXBzZ010bSkgYXMgW1xuICAgICAgbnVtYmVyLFxuICAgICAgbnVtYmVyXG4gICAgXTtcbiAgICBjb252ZXJ0ZWRMb25MYXQucHVzaCh7XG4gICAgICBjb2RlOiBlcHNnTXRtLFxuICAgICAgYWxpYXM6ICdNVE0nLFxuICAgICAgY29vcmQ6IHJhd0Nvb3JkTXRtLFxuICAgICAgaWdvMkNvb3JkRm9ybWF0OiBgJHttdG1OYW1lfSAke3JvdW5kQ29vcmRUbyhyYXdDb29yZE10bSkuam9pbignLCAnKX1gXG4gICAgfSk7XG4gIH1cblxuICBwcm9qZWN0aW9ucy5mb3JFYWNoKChwcm9qZWN0aW9uKSA9PiB7XG4gICAgY29uc3QgcmF3Q29vcmQgPSBvbHByb2oudHJhbnNmb3JtKGxvbkxhdCwgJ0VQU0c6NDMyNicsIHByb2plY3Rpb24uY29kZSkgYXMgW1xuICAgICAgbnVtYmVyLFxuICAgICAgbnVtYmVyXG4gICAgXTtcbiAgICBjb25zdCBudW1lcmljRXBzZ0NvZGUgPSBwcm9qZWN0aW9uLmNvZGUuc3BsaXQoJzonKVsxXTtcbiAgICBjb252ZXJ0ZWRMb25MYXQucHVzaCh7XG4gICAgICBjb2RlOiBwcm9qZWN0aW9uLmNvZGUsXG4gICAgICBhbGlhczogcHJvamVjdGlvbi5hbGlhcyB8fCBwcm9qZWN0aW9uLmNvZGUsXG4gICAgICBjb29yZDogcmF3Q29vcmQsXG4gICAgICBpZ28yQ29vcmRGb3JtYXQ6IGAke3JvdW5kQ29vcmRUbyhyYXdDb29yZCkuam9pbihcbiAgICAgICAgJywgJ1xuICAgICAgKX0gOyAke251bWVyaWNFcHNnQ29kZX1gXG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBjb252ZXJ0ZWRMb25MYXQ7XG59XG5cbi8qKlxuICogRGV0ZWN0IHRoZSBjdXJyZW50IHV0bSB6b25lIG9mIHRoZSBsb24vbGF0IGNvb3JkaW5hdGUuXG4gKiBAcGFyYW0gbG9uTGF0IFtudW1iZXIsIG51bWJlcl0gYXJyYXkgb2YgdGhlIGNvb3JkaW5hdGUgdG8gZGV0ZWN0IHRoZSBVVE0gem9uZS5cbiAqIEByZXR1cm5zIG51bWJlciBUaGUgVVRNIHpvbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1dG1ab25lRnJvbUxvbkxhdChsb25MYXQ6IFtudW1iZXIsIG51bWJlcl0pIHtcbiAgcmV0dXJuIE1hdGguY2VpbCgobG9uTGF0WzBdICsgMTgwKSAvIDYpO1xufVxuXG4vKipcbiAqIERldGVjdCB0aGUgY3VycmVudCBtdG0gem9uZSBvZiB0aGUgbG9uL2xhdCBjb29yZGluYXRlLlxuICogQHBhcmFtIGxvbkxhdCBbbnVtYmVyLCBudW1iZXJdIGFycmF5IG9mIHRoZSBjb29yZGluYXRlIHRvIGRldGVjdCB0aGUgTVRNIHpvbmUuXG4gKiBAcmV0dXJucyBudW1iZXIgVGhlIE1UTSB6b25lLiBVbmRlZmluZWQgaWYgb3V0c2lkZSBvZiB0aGUgbXRtIGFwcGxpY2F0aW9uIHpvbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtdG1ab25lRnJvbUxvbkxhdChsb25MYXQ6IFtudW1iZXIsIG51bWJlcl0pIHtcbiAgY29uc3QgbG9uZyA9IGxvbkxhdFswXTtcbiAgbGV0IG10bVpvbmU7XG4gIGlmIChsb25nIDwgLTUxICYmIGxvbmcgPiAtNTQpIHtcbiAgICBtdG1ab25lID0gMTtcbiAgfVxuICBpZiAobG9uZyA8IC01NCAmJiBsb25nID4gLTU3KSB7XG4gICAgbXRtWm9uZSA9IDI7XG4gIH1cbiAgaWYgKGxvbmcgPCAtNTcgJiYgbG9uZyA+IC02MCkge1xuICAgIG10bVpvbmUgPSAzO1xuICB9XG4gIGlmIChsb25nIDwgLTYwICYmIGxvbmcgPiAtNjMpIHtcbiAgICBtdG1ab25lID0gNDtcbiAgfVxuICBpZiAobG9uZyA8IC02MyAmJiBsb25nID4gLTY2KSB7XG4gICAgbXRtWm9uZSA9IDU7XG4gIH1cbiAgaWYgKGxvbmcgPCAtNjYgJiYgbG9uZyA+IC02OSkge1xuICAgIG10bVpvbmUgPSA2O1xuICB9XG4gIGlmIChsb25nIDwgLTY5ICYmIGxvbmcgPiAtNzIpIHtcbiAgICBtdG1ab25lID0gNztcbiAgfVxuICBpZiAobG9uZyA8IC03MiAmJiBsb25nID4gLTc1KSB7XG4gICAgbXRtWm9uZSA9IDg7XG4gIH1cbiAgaWYgKGxvbmcgPCAtNzUgJiYgbG9uZyA+IC03OCkge1xuICAgIG10bVpvbmUgPSA5O1xuICB9XG4gIGlmIChsb25nIDwgLTc4ICYmIGxvbmcgPiAtODEpIHtcbiAgICBtdG1ab25lID0gMTA7XG4gIH1cbiAgcmV0dXJuIG10bVpvbmU7XG59XG4iXX0=
|
|
455
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9tYXAudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUcxQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzdCLE9BQU8sS0FBSyxNQUFNLE1BQU0sU0FBUyxDQUFDO0FBS2xDOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUM1QixHQUFXLEVBQ1gsYUFBcUIsRUFDckIsT0FBOEIsRUFBRTtJQU9oQyxJQUFJLE1BQXdCLENBQUM7SUFDN0IsSUFBSSxRQUFnQixDQUFDO0lBQ3JCLElBQUksV0FBbUIsQ0FBQztJQUN4QixJQUFJLFVBQWtCLENBQUM7SUFDdkIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksVUFBa0IsQ0FBQztJQUN2QixJQUFJLFlBQW9CLENBQUM7SUFDekIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksV0FBbUIsQ0FBQztJQUN4QixJQUFJLFVBQWtCLENBQUM7SUFDdkIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksVUFBa0IsQ0FBQztJQUN2QixJQUFJLFlBQW9CLENBQUM7SUFDekIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksSUFBWSxDQUFDO0lBQ2pCLElBQUksTUFBYyxDQUFDO0lBQ25CLElBQUksSUFBWSxDQUFDO0lBQ2pCLElBQUksR0FBUSxDQUFDO0lBQ2IsSUFBSSxHQUFRLENBQUM7SUFFYixNQUFNLGlCQUFpQixHQUFHLHVCQUF1QixDQUFDO0lBQ2xELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQztJQUM1QixJQUFJLGFBQXFCLENBQUM7SUFDMUIsTUFBTSxlQUFlLEdBQUcsSUFBSSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxD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LENBQUM7SUFDSixDQUFDO1NBQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDbkMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixDQUFDLEVBQUUsQUFBRCxFQUFHLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1FBQzNFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQzNCLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUNsQyxPQUFPLEVBQ1AsV0FBVyxDQUNaLENBQUM7SUFDSixDQUFDO1NBQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDbkMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixDQUFDLEVBQUUsQUFBRCxFQUFHLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsRCxNQUFNLE9BQU8sR0FDWCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMxRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUMzQixDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDbEMsT0FBTyxFQUNQLFdB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R0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzdCLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDZCxDQUFDO0lBQ0QsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDN0IsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUM3QixPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUNELElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzdCLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDZCxDQUFDO0lBQ0QsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDN0IsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTnVtYmVyVXRpbHMgfSBmcm9tICdAaWdvMi91dGlscyc7XG5cbmltcG9ydCBNYXBCcm93c2VyUG9pbnRlckV2ZW50IGZyb20gJ29sL01hcEJyb3dzZXJFdmVudCc7XG5pbXBvcnQgeyBNQUMgfSBmcm9tICdvbC9oYXMnO1xuaW1wb3J0ICogYXMgb2xwcm9qIGZyb20gJ29sL3Byb2onO1xuXG5pbXBvcnQgeyBNYXBWaWV3U3RhdGUgfSBmcm9tICcuL21hcC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUHJvamVjdGlvbiB9IGZyb20gJy4vcHJvamVjdGlvbi5pbnRlcmZhY2VzJztcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBleHRyYWN0cyBhIGNvb3JkaW5hdGUgdHVwbGUgZnJvbSBhIHN0cmluZy5cbiAqIEBwYXJhbSBzdHIgQW55IHN0cmluZ1xuICogQHBhcmFtIG1hcFByb2plY3Rpb24gc3RyaW5nIE1hcCBQcm9qZWN0aW9uXG4gKiBAcGFyYW0gb3B0cy5mb3JjZU5BIGJvb2xlYW4gRm9yY2UgTm9ydGggQW1lcmljYSBab25lXG4gKiBAcmV0dXJucyBvYmplY3Q6XG4gKiAgICAgICAgICAgICBsb25MYXQ6IENvb3JkaW5hdGUsXG4gKiAgICAgICAgICAgICBtZXNzYWdlOiBNZXNzYWdlIG9mIGVycm9yLFxuICogICAgICAgICAgICAgcmFkaXVzOiByYWRpdXMgb2YgdGhlIGNvbmZpZW5jZSBvZiBjb29yZGluYXRlLFxuICogICAgICAgICAgICAgY29uZjogY29uZmlkZW5jZSBvZiB0aGUgY29vcmRpbmF0ZX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ1RvTG9uTGF0KFxuICBzdHI6IHN0cmluZyxcbiAgbWFwUHJvamVjdGlvbjogc3RyaW5nLFxuICBvcHRzOiB7IGZvcmNlTkE/OiBib29sZWFuIH0gPSB7fVxuKToge1xuICBsb25MYXQ6IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQ7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgcmFkaXVzOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIGNvbmY6IG51bWJlciB8IHVuZGVmaW5lZDtcbn0ge1xuICBsZXQgbG9uTGF0OiBbbnVtYmVyLCBudW1iZXJdO1xuICBsZXQgY29vcmRTdHI6IHN0cmluZztcbiAgbGV0IG5lZ2F0aXZlTG9uOiBzdHJpbmc7XG4gIGxldCBkZWdyZWVzTG9uOiBzdHJpbmc7XG4gIGxldCBtaW51dGVzTG9uOiBzdHJpbmc7XG4gIGxldCBzZWNvbmRzTG9uOiBzdHJpbmc7XG4gIGxldCBkaXJlY3Rpb25Mb246IHN0cmluZztcbiAgbGV0IGRlY2ltYWxMb246IHN0cmluZztcbiAgbGV0IG5lZ2F0aXZlTGF0OiBzdHJpbmc7XG4gIGxldCBkZWdyZWVzTGF0OiBzdHJpbmc7XG4gIGxldCBtaW51dGVzTGF0OiBzdHJpbmc7XG4gIGxldCBzZWNvbmRzTGF0OiBzdHJpbmc7XG4gIGxldCBkaXJlY3Rpb25MYXQ6IHN0cmluZztcbiAgbGV0IGRlY2ltYWxMYXQ6IHN0cmluZztcbiAgbGV0IHpvbmU6IHN0cmluZztcbiAgbGV0IHJhZGl1czogc3RyaW5nO1xuICBsZXQgY29uZjogc3RyaW5nO1xuICBsZXQgbG9uOiBhbnk7XG4gIGxldCBsYXQ6IGFueTtcblxuICBjb25zdCBwcm9qZWN0aW9uUGF0dGVybiA9ICcoXFxcXHMqO1xcXFxzKltcXFxcZF17NCw2fSknO1xuICBjb25zdCB0b1Byb2plY3Rpb24gPSAnNDMyNic7XG4gIGxldCBwcm9qZWN0aW9uU3RyOiBzdHJpbmc7XG4gIGNvbnN0IHByb2plY3Rpb25SZWdleCA9IG5ldyBSZWdFeHAocHJvamVjdGlvblBhdHRlcm4sICdnJyk7XG5cbiAgY29uc3QgbG9ubGF0Q29vcmQgPSAnKFstK10pPyhbXFxcXGRdezEsM30pKFssLl0oXFxcXGQrKSk/JztcbiAgY29uc3QgbG9uTGF0UGF0dGVybiA9IGAke2xvbmxhdENvb3JkfVtcXFxccyxdKyR7bG9ubGF0Q29vcmR9YDtcbiAgY29uc3QgbG9uTGF0UmVnZXggPSBuZXcgUmVnRXhwKGBeJHtsb25MYXRQYXR0ZXJufSRgLCAnZycpO1xuXG4gIGNvbnN0IGRtc0Nvb3JkID1cbiAgICAnKFswLTldezEsMn0pWzp8wrBdP1xcXFxzKihbMC05XXsxLDJ9KT9bOnxcXCd84oCyfOKAmV0/XFxcXHMqKFswLTldezEsMn0oPzouWzAtOV0rKXswLDF9KT9cXFxccypbXCJ84oCzfOKAnV0/XFxcXHMqJztcbiAgY29uc3QgZG1zQ29vcmRQYXR0ZXJuID0gYCR7ZG1zQ29vcmR9KFtOfFN8RXxXfE9dKSw/XFxcXHMqJHtkbXNDb29yZH0oW058U3xFfFd8T10pYDtcbiAgY29uc3QgZG1zUmVnZXggPSBuZXcgUmVnRXhwKGBeJHtkbXNDb29yZFBhdHRlcm59JGAsICdnaScpO1xuXG4gIGNvbnN0IHBhdHRlcm5VdG0gPVxuICAgICcoVVRNKS0/KFxcXFxkezEsMn0pW1xcXFxzLF0qKFxcXFxkK1suLF0/XFxcXGQrKVtcXFxccyxdKyhcXFxcZCtbLixdP1xcXFxkKyknO1xuICBjb25zdCB1dG1SZWdleCA9IG5ldyBSZWdFeHAoYF4ke3BhdHRlcm5VdG19YCwgJ2dpJyk7XG5cbiAgY29uc3QgcGF0dGVybk10bSA9XG4gICAgJyhNVE0pLT8oXFxcXGR7MSwyfSlbXFxcXHMsXSooXFxcXGQrWy4sXT9cXFxcZCspW1xcXFxzLF0rKFxcXFxkK1suLF0/XFxcXGQrKSc7XG4gIGNvbnN0IG10bVJlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7cGF0dGVybk10bX1gLCAnZ2knKTtcblxuICBjb25zdCBkZENvb3JkID0gJyhbLStdKT8oXFxcXGR7MSwzfSlbLC5dKFxcXFxkKyknO1xuICBjb25zdCBwYXR0ZXJuRGQgPSBgJHtkZENvb3JkfVxcXFxzKlssXT9cXFxccyoke2RkQ29vcmR9YDtcbiAgY29uc3QgZGRSZWdleCA9IG5ldyBSZWdFeHAoYF4ke3BhdHRlcm5EZH1gLCAnZycpO1xuXG4gIGNvbnN0IGRtZENvb3JkID1cbiAgICAnKFstK10pPyhcXFxcZHsxLDN9KVtcXFxccywuXXsxfShcXFxcZHsxLDJ9KVtcXFxccywuXXsxfShcXFxcZHsxLDJ9KVsuLF0/KFxcXFxkezEsNX0pPyc7XG4gIGNvbnN0IHBhdHRlcm5EbWQgPSBgJHtkbWRDb29yZH1cXFxccypbLC5dP1xcXFxzKiR7ZG1kQ29vcmR9YDtcbiAgY29uc3QgZG1kUmVnZXggPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuRG1kfWAsICdnJyk7XG5cbiAgY29uc3QgcGF0dGVybkJFTEwgPVxuICAgICdMQVRcXFxccypbXFxcXHM6XSpcXFxccyooWy0rXSk/KFxcXFxkezEsMn0pW1xcXFxzLixdPyhcXFxcZCspP1tcXFxccy4sXT9cXFxccyooXFxcXGR7MSwyfShbLixdXFxcXGQrKT8pP1xcXFxzKihOfFN8RXxXKT9cXFxccypMT05HXFxcXHMqW1xcXFxzOl0qXFxcXHMqKFstK10pPyhcXFxcZHsxLDN9KVtcXFxccy4sXT8oXFxcXGQrKT9bXFxcXHMuLF0/XFxcXHMqKFxcXFxkezEsMn0oWy4sXVxcXFxkKyk/KT9cXFxccyooTnxTfEV8Vyk/XFxcXHMqVU5DXFxcXHMqW1xcXFxzOl0/XFxcXHMqKFxcXFxkKylcXFxccypDT05GXFxcXHMqW1xcXFxzOl0/XFxcXHMqKFxcXFxkezEsM30pJztcbiAgY29uc3QgYmVsbFJlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7cGF0dGVybkJFTEx9P2AsICdnaScpO1xuXG4gIGNvbnN0IG1tQ29vcmQgPSAnKFstK10/XFxcXGQrKVssLl0/KFxcXFxkKyk/JztcbiAgY29uc3QgbW1QYXR0ZXJuID0gYCR7bW1Db29yZH1bXFxcXHMsXSske21tQ29vcmR9YDtcbiAgY29uc3QgbW1SZWdleCA9IG5ldyBSZWdFeHAoYF4ke21tUGF0dGVybn0kYCwgJ2cnKTtcblxuICBsZXQgaXNYWUNvb3JkcyA9IGZhbHNlO1xuXG4gIHN0ciA9IHN0ci50b0xvY2FsZVVwcGVyQ2FzZSgpLnRyaW0oKTtcblxuICAvLyBFeHRyYWN0IHByb2plY3Rpb25cbiAgaWYgKHByb2plY3Rpb25SZWdleC50ZXN0KHN0cikpIHtcbiAgICBbY29vcmRTdHIsIHByb2plY3Rpb25TdHJdID0gc3RyLnNwbGl0KCc7JykubWFwKChzKSA9PiBzLnRyaW0oKSk7XG4gIH0gZWxzZSB7XG4gICAgY29vcmRTdHIgPSBzdHI7XG4gIH1cbiAgaWYgKGxvbkxhdFJlZ2V4LnRlc3QoY29vcmRTdHIpKSB7XG4gICAgWywgbmVnYXRpdmVMb24sIGxvbiwgLCBkZWNpbWFsTG9uLCBuZWdhdGl2ZUxhdCwgbGF0LCAsIGRlY2ltYWxMYXRdID1cbiAgICAgIGNvb3JkU3RyLm1hdGNoKGxvbkxhdFBhdHRlcm4pO1xuXG4gICAgbG9uID0gcGFyc2VGbG9hdCgobmVnYXRpdmVMb24gPyBuZWdhdGl2ZUxvbiA6ICcnKSArIGxvbiArICcuJyArIGRlY2ltYWxMb24pO1xuICAgIGxhdCA9IHBhcnNlRmxvYXQoKG5lZ2F0aXZlTGF0ID8gbmVnYXRpdmVMYXQgOiAnJykgKyBsYXQgKyAnLicgKyBkZWNpbWFsTGF0KTtcbiAgfSBlbHNlIGlmIChkbXNSZWdleC50ZXN0KGNvb3JkU3RyKSkge1xuICAgIFtcbiAgICAgICxcbiAgICAgIGRlZ3JlZXNMb24sXG4gICAgICBtaW51dGVzTG9uLFxuICAgICAgc2Vjb25kc0xvbixcbiAgICAgIGRpcmVjdGlvbkxvbixcbiAgICAgIGRlZ3JlZXNMYXQsXG4gICAgICBtaW51dGVzTGF0LFxuICAgICAgc2Vjb25kc0xhdCxcbiAgICAgIGRpcmVjdGlvbkxhdFxuICAgIF0gPSBjb29yZFN0ci5tYXRjaChkbXNDb29yZFBhdHRlcm4pO1xuXG4gICAgaWYgKGRpcmVjdGlvbkxvbiA9PT0gJ1MnIHx8IGRpcmVjdGlvbkxvbiA9PT0gJ04nKSB7XG4gICAgICBkZWdyZWVzTG9uID0gW2RlZ3JlZXNMYXQsIChkZWdyZWVzTGF0ID0gZGVncmVlc0xvbildWzBdO1xuICAgICAgbWludXRlc0xvbiA9IFttaW51dGVzTGF0LCAobWludXRlc0xhdCA9IG1pbnV0ZXNMb24pXVswXTtcbiAgICAgIHNlY29uZHNMb24gPSBbc2Vjb25kc0xhdCwgKHNlY29uZHNMYXQgPSBzZWNvbmRzTG9uKV1bMF07XG4gICAgICBkaXJlY3Rpb25Mb24gPSBbZGlyZWN0aW9uTGF0LCAoZGlyZWN0aW9uTGF0ID0gZGlyZWN0aW9uTG9uKV1bMF07XG4gICAgfVxuXG4gICAgbG9uID0gY29udmVydERNU1RvREQoXG4gICAgICBwYXJzZUZsb2F0KGRlZ3JlZXNMb24pLFxuICAgICAgcGFyc2VGbG9hdChtaW51dGVzTG9uKSxcbiAgICAgIHBhcnNlRmxvYXQoc2Vjb25kc0xvbiksXG4gICAgICBkaXJlY3Rpb25Mb25cbiAgICApO1xuICAgIGxhdCA9IGNvbnZlcnRETVNUb0REKFxuICAgICAgcGFyc2VGbG9hdChkZWdyZWVzTGF0KSxcbiAgICAgIHBhcnNlRmxvYXQobWludXRlc0xhdCksXG4gICAgICBwYXJzZUZsb2F0KHNlY29uZHNMYXQpLFxuICAgICAgZGlyZWN0aW9uTGF0XG4gICAgKTtcbiAgfSBlbHNlIGlmICh1dG1SZWdleC50ZXN0KGNvb3JkU3RyKSkge1xuICAgIGlzWFlDb29yZHMgPSB0cnVlO1xuICAgIFssICwgem9uZSwgbG9uLCBsYXRdID0gY29vcmRTdHIubWF0Y2gocGF0dGVyblV0bSk7XG4gICAgY29uc3QgZXBzZ1V0bSA9IE51bWJlcih6b25lKSA8IDEwID8gYEVQU0c6MzI2MCR7em9uZX1gIDogYEVQU0c6MzI2JHt6b25lfWA7XG4gICAgW2xvbiwgbGF0XSA9IG9scHJvai50cmFuc2Zvcm0oXG4gICAgICBbcGFyc2VGbG9hdChsb24pLCBwYXJzZUZsb2F0KGxhdCldLFxuICAgICAgZXBzZ1V0bSxcbiAgICAgICdFUFNHOjQzMjYnXG4gICAgKTtcbiAgfSBlbHNlIGlmIChtdG1SZWdleC50ZXN0KGNvb3JkU3RyKSkge1xuICAgIGlzWFlDb29yZHMgPSB0cnVlO1xuICAgIFssICwgem9uZSwgbG9uLCBsYXRdID0gY29vcmRTdHIubWF0Y2gocGF0dGVybk10bSk7XG4gICAgY29uc3QgZXBzZ010bSA9XG4gICAgICBOdW1iZXIoem9uZSkgPCAxMCA/IGBFUFNHOjMyMTgke3pvbmV9YCA6IGBFUFNHOjMyMSR7ODAgKyBOdW1iZXIoem9uZSl9YDtcbiAgICBbbG9uLCBsYXRdID0gb2xwcm9qLnRyYW5zZm9ybShcbiAgICAgIFtwYXJzZUZsb2F0KGxvbiksIHBhcnNlRmxvYXQobGF0KV0sXG4gICAgICBlcHNnTXRtLFxuICAgICAgJ0VQU0c6NDMyNidcbiAgICApO1xuICB9IGVsc2UgaWYgKGRtZFJlZ2V4LnRlc3QoY29vcmRTdHIpKSB7XG4gICAgW1xuICAgICAgLFxuICAgICAgbmVnYXRpdmVMb24sXG4gICAgICBkZWdyZWVzTG9uLFxuICAgICAgbWludXRlc0xvbixcbiAgICAgIHNlY29uZHNMb24sXG4gICAgICBkZWNpbWFsTG9uLFxuICAgICAgbmVnYXRpdmVMYXQsXG4gICAgICBkZWdyZWVzTGF0LFxuICAgICAgbWludXRlc0xhdCxcbiAgICAgIHNlY29uZHNMYXQsXG4gICAgICBkZWNpbWFsTGF0XG4gICAgXSA9IGNvb3JkU3RyLm1hdGNoKHBhdHRlcm5EbWQpO1xuXG4gICAgbG9uID0gY29udmVydERNU1RvREQoXG4gICAgICBwYXJzZUZsb2F0KChuZWdhdGl2ZUxvbiA/IG5lZ2F0aXZlTG9uIDogJycpICsgZGVncmVlc0xvbiksXG4gICAgICBwYXJzZUZsb2F0KG1pbnV0ZXNMb24pLFxuICAgICAgcGFyc2VGbG9hdChzZWNvbmRzTG9uKSxcbiAgICAgIGRpcmVjdGlvbkxvblxuICAgICk7XG4gICAgbGF0ID0gY29udmVydERNU1RvREQoXG4gICAgICBwYXJzZUZsb2F0KChuZWdhdGl2ZUxhdCA/IG5lZ2F0aXZlTGF0IDogJycpICsgZGVncmVlc0xhdCksXG4gICAgICBwYXJzZUZsb2F0KG1pbnV0ZXNMYXQpLFxuICAgICAgcGFyc2VGbG9hdChzZWNvbmRzTGF0KSxcbiAgICAgIGRpcmVjdGlvbkxhdFxuICAgICk7XG4gIH0gZWxzZSBpZiAoZGRSZWdleC50ZXN0KGNvb3JkU3RyKSkge1xuICAgIFtcbiAgICAgICxcbiAgICAgIG5lZ2F0aXZlTG9uLFxuICAgICAgZGVncmVlc0xvbixcbiAgICAgIGRlY2ltYWxMb24sXG4gICAgICBuZWdhdGl2ZUxhdCxcbiAgICAgIGRlZ3JlZXNMYXQsXG4gICAgICBkZWNpbWFsTGF0XG4gICAgXSA9IGNvb3JkU3RyLm1hdGNoKHBhdHRlcm5EZCk7XG5cbiAgICBsb24gPSBjb252ZXJ0RE1TVG9ERChcbiAgICAgIHBhcnNlRmxvYXQoKG5lZ2F0aXZlTG9uID8gbmVnYXRpdmVMb24gOiAnJykgKyBkZWdyZWVzTG9uKSxcbiAgICAgIHBhcnNlRmxvYXQobWludXRlc0xvbiksXG4gICAgICBwYXJzZUZsb2F0KHNlY29uZHNMb24pLFxuICAgICAgZGlyZWN0aW9uTG9uXG4gICAgKTtcbiAgICBsYXQgPSBjb252ZXJ0RE1TVG9ERChcbiAgICAgIHBhcnNlRmxvYXQoKG5lZ2F0aXZlTGF0ID8gbmVnYXRpdmVMYXQgOiAnJykgKyBkZWdyZWVzTGF0KSxcbiAgICAgIHBhcnNlRmxvYXQobWludXRlc0xhdCksXG4gICAgICBwYXJzZUZsb2F0KHNlY29uZHNMYXQpLFxuICAgICAgZGlyZWN0aW9uTGF0XG4gICAgKTtcbiAgfSBlbHNlIGlmIChiZWxsUmVnZXgudGVzdChjb29yZFN0cikpIHtcbiAgICBbXG4gICAgICAsXG4gICAgICBuZWdhdGl2ZUxhdCxcbiAgICAgIGRlZ3JlZXNMYXQsXG4gICAgICBtaW51dGVzTGF0LFxuICAgICAgc2Vjb25kc0xhdCxcbiAgICAgICxcbiAgICAgIGRpcmVjdGlvbkxhdCxcbiAgICAgIG5lZ2F0aXZlTG9uLFxuICAgICAgZGVncmVlc0xvbixcbiAgICAgIG1pbnV0ZXNMb24sXG4gICAgICBzZWNvbmRzTG9uLFxuICAgICAgLFxuICAgICAgZGlyZWN0aW9uTG9uLFxuICAgICAgcmFkaXVzLFxuICAgICAgY29uZlxuICAgIF0gPSBjb29yZFN0ci5tYXRjaChwYXR0ZXJuQkVMTCk7XG5cbiAgICAvLyBTZXQgZGVmYXVsdCB2YWx1ZSBmb3IgTm9ydGggQW1lcmljYVxuICAgIGlmICghZGlyZWN0aW9uTG9uKSB7XG4gICAgICBkaXJlY3Rpb25Mb24gPSAnVyc7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgcmVhbCBtaW51dGVzIG9yIGRlY2ltYWxzXG4gICAgaWYgKG1pbnV0ZXNMb24gJiYgbWludXRlc0xvbi5sZW5ndGggPiAyKSB7XG4gICAgICBsb24gPSBwYXJzZUZsb2F0KFxuICAgICAgICAobmVnYXRpdmVMb24gPyBuZWdhdGl2ZUxvbiA6ICcnKSArIGRlZ3JlZXNMb24gKyAnLicgKyBtaW51dGVzTG9uXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb24gPSBjb252ZXJ0RE1TVG9ERChcbiAgICAgICAgcGFyc2VGbG9hdChkZWdyZWVzTG9uKSxcbiAgICAgICAgcGFyc2VGbG9hdChtaW51dGVzTG9uKSxcbiAgICAgICAgcGFyc2VGbG9hdChzZWNvbmRzTG9uKSxcbiAgICAgICAgZGlyZWN0aW9uTG9uXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChtaW51dGVzTGF0ICYmIG1pbnV0ZXNMYXQubGVuZ3RoID4gMikge1xuICAgICAgbGF0ID0gcGFyc2VGbG9hdChcbiAgICAgICAgKG5lZ2F0aXZlTGF0ID8gbmVnYXRpdmVMYXQgOiAnJykgKyBkZWdyZWVzTGF0ICsgJy4nICsgbWludXRlc0xhdFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGF0ID0gY29udmVydERNU1RvREQoXG4gICAgICAgIHBhcnNlRmxvYXQoZGVncmVlc0xhdCksXG4gICAgICAgIHBhcnNlRmxvYXQobWludXRlc0xhdCksXG4gICAgICAgIHBhcnNlRmxvYXQoc2Vjb25kc0xhdCksXG4gICAgICAgIGRpcmVjdGlvbkxhdFxuICAgICAgKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAobW1SZWdleC50ZXN0KGNvb3JkU3RyKSkge1xuICAgIGlzWFlDb29yZHMgPSB0cnVlO1xuICAgIFssIGxvbiwgZGVjaW1hbExvbiwgbGF0LCBkZWNpbWFsTGF0XSA9IGNvb3JkU3RyLm1hdGNoKG1tUGF0dGVybik7XG5cbiAgICBpZiAoZGVjaW1hbExvbikge1xuICAgICAgbG9uID0gcGFyc2VGbG9hdChsb24gKyAnLicgKyBkZWNpbWFsTG9uKTtcbiAgICB9XG5cbiAgICBpZiAoZGVjaW1hbExhdCkge1xuICAgICAgbGF0ID0gcGFyc2VGbG9hdChsYXQgKyAnLicgKyBkZWNpbWFsTGF0KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvbkxhdDogdW5kZWZpbmVkLFxuICAgICAgbWVzc2FnZTogJycsXG4gICAgICByYWRpdXM6IHVuZGVmaW5lZCxcbiAgICAgIGNvbmY6IHVuZGVmaW5lZFxuICAgIH07XG4gIH1cblxuICBpZiAob3B0cy5mb3JjZU5BICYmICFpc1hZQ29vcmRzKSB7XG4gICAgLy8gU2V0IGEgbmVnYXRpdmUgY29vcmRpbmF0ZSBmb3IgTm9ydGggQW1lcmljYSB6b25lXG4gICAgaWYgKGxvbiA+IDAgJiYgbGF0ID4gMCkge1xuICAgICAgaWYgKGxvbiA+IGxhdCkge1xuICAgICAgICBsb24gPSAtbG9uO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGF0ID0gLWxhdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXZlcnNlIGNvb3JkaW5hdGUgdG8gcmVzcGVjdCBsb25MYXQgY29udmVudGlvblxuICAgIGlmIChsb24gPiBsYXQpIHtcbiAgICAgIGxvbiA9IFtsYXQsIChsYXQgPSBsb24pXVswXTtcbiAgICB9XG4gIH1cblxuICBsb25MYXQgPSBbTnVtYmVyKGxvbiksIE51bWJlcihsYXQpXSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuXG4gIC8vIFJlcHJvamVjdCB0aGUgY29vcmRpbmF0ZSBpZiBwcm9qZWN0aW9uIHBhcmFtZXRlciBoYXZlIGJlZW4gc2V0IGFuZCBjb29yZCBpcyBub3QgNDMyNlxuICBpZiAoXG4gICAgKHByb2plY3Rpb25TdHIgIT09IHVuZGVmaW5lZCAmJiBwcm9qZWN0aW9uU3RyICE9PSB0b1Byb2plY3Rpb24pIHx8XG4gICAgbG9uTGF0WzBdID4gMTgwIHx8XG4gICAgbG9uTGF0WzBdIDwgLTE4MCB8fFxuICAgIGxvbkxhdFsxXSA+IDkwIHx8XG4gICAgbG9uTGF0WzFdIDwgLTkwXG4gICkge1xuICAgIGNvbnN0IHNvdXJjZSA9IHByb2plY3Rpb25TdHIgPyAnRVBTRzonICsgcHJvamVjdGlvblN0ciA6IG1hcFByb2plY3Rpb247XG4gICAgY29uc3QgZGVzdCA9ICdFUFNHOicgKyB0b1Byb2plY3Rpb247XG5cbiAgICB0cnkge1xuICAgICAgbG9uTGF0ID0gb2xwcm9qLnRyYW5zZm9ybShsb25MYXQsIHNvdXJjZSwgZGVzdCkgYXMgW251bWJlciwgbnVtYmVyXTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxvbkxhdDogdW5kZWZpbmVkLFxuICAgICAgICBtZXNzYWdlOiAnUHJvamVjdGlvbiAnICsgc291cmNlICsgJyBub3Qgc3VwcG9ydGVkJyxcbiAgICAgICAgcmFkaXVzOiB1bmRlZmluZWQsXG4gICAgICAgIGNvbmY6IHVuZGVmaW5lZFxuICAgICAgfTtcbiAgICB9XG4gIH1cbiAgaWYgKE1hdGguYWJzKGxvbkxhdFswXSkgPD0gMTgwICYmIE1hdGguYWJzKGxvbkxhdFsxXSkgPD0gOTApIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9uTGF0LFxuICAgICAgbWVzc2FnZTogJycsXG4gICAgICByYWRpdXM6IHJhZGl1cyA/IHBhcnNlSW50KHJhZGl1cywgMTApIDogdW5kZWZpbmVkLFxuICAgICAgY29uZjogY29uZiA/IHBhcnNlSW50KGNvbmYsIDEwKSA6IHVuZGVmaW5lZFxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvbkxhdDogdW5kZWZpbmVkLFxuICAgICAgbWVzc2FnZTogJ0Nvb3JkaW5hdGUgb3V0IG9mIExvbmdpdHVkZS9MYXRpdHVkZSBib3VuZHMnLFxuICAgICAgcmFkaXVzOiB1bmRlZmluZWQsXG4gICAgICBjb25mOiB1bmRlZmluZWRcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQ29udmVydCBkZWdyZWVzIG1pbnV0ZXMgc2Vjb25kcyB0byBkZFxuICogQHBhcmFtIGRlZ3JlZXMgRGVncmVlc1xuICogQHBhcmFtIG1pbnV0ZXMgTWludXRlc1xuICogQHBhcmFtIHNlY29uZHMgU2Vjb25kc1xuICogQHBhcmFtIGRpcmVjdGlvbiBEaXJlY3Rpb25cbiAqL1xuZnVuY3Rpb24gY29udmVydERNU1RvREQoXG4gIGRlZ3JlZXM6IG51bWJlcixcbiAgbWludXRlczogbnVtYmVyLFxuICBzZWNvbmRzOiBudW1iZXIsXG4gIGRpcmVjdGlvbjogc3RyaW5nXG4pIHtcbiAgbWludXRlcyA9IG1pbnV0ZXMgfHwgMDtcbiAgc2Vjb25kcyA9IHNlY29uZHMgfHwgMDtcblxuICBjb25zdCBuZWcgPSBkZWdyZWVzIDwgMDtcbiAgbGV0IGRkID0gTWF0aC5hYnMoZGVncmVlcykgKyBtaW51dGVzIC8gNjAgKyBzZWNvbmRzIC8gMzYwMDtcblxuICBpZiAobmVnIHx8IGRpcmVjdGlvbiA9PT0gJ1MnIHx8IGRpcmVjdGlvbiA9PT0gJ1cnKSB7XG4gICAgZGQgPSAtZGQ7XG4gIH0gLy8gRG9uJ3QgZG8gYW55dGhpbmcgZm9yIE4gb3IgRVxuICByZXR1cm4gZGQ7XG59XG5cbi8qKlxuICogQ29udmVydCBkZCB0byBkZWdyZWVzIG1pbnV0ZXMgc2Vjb25kc1xuICogQHBhcmFtIGxvbkxhdEREIGxvbmdpdHVkZSBhbmQgbGF0aXR1ZGUgaW4gZGRcbiAqIEBwYXJhbSBkZWNpbWFsIG51bWJlciBvZiBkZWNpbWFscyBmb3Igc2Vjb25kc1xuICogQHJldHVybnMgbG9uZ2l0dWRlIGFuZCBsYXRpdHVkZSBpbiBkbXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRERFRvRE1TKFxuICBsb25MYXRERDogW251bWJlciwgbnVtYmVyXSxcbiAgZGVjaW1hbCA9IDNcbik6IHN0cmluZ1tdIHtcbiAgY29uc3QgbG9uTGF0RE1TID0gW107XG5cbiAgbG9uTGF0REQuZm9yRWFjaCgoZGQpID0+IHtcbiAgICBjb25zdCBkZWdyZWVzID0gZGQgPCAwID8gTWF0aC5jZWlsKGRkKSA6IE1hdGguZmxvb3IoZGQpO1xuICAgIGNvbnN0IGludCA9IGRkIDwgMCA/IChkZWdyZWVzIC0gZGQpICogNjAgOiAoZGQgLSBkZWdyZWVzKSAqIDYwO1xuICAgIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKGludCk7XG4gICAgY29uc3Qgc2Vjb25kcyA9ICgoaW50IC0gbWludXRlcykgKiA2MCkudG9GaXhlZChkZWNpbWFsKTtcblxuICAgIGxvbkxhdERNUy5wdXNoKGAke2RlZ3JlZXN9wrAgJHttaW51dGVzfScgJHtzZWNvbmRzfVwiYCk7XG4gIH0pO1xuICByZXR1cm4gbG9uTGF0RE1TO1xufVxuXG4vKipcbiAqIFJldHVybiB0cnVlIG9mIHR3byB2aWV3IHN0YXRlcyBhcmUgZXF1YWwuXG4gKiBAcGFyYW0gc3RhdGUxIFZpZXcgc3RhdGVcbiAqIEBwYXJhbSBzdGF0ZTIgVmlldyBzdGF0ZVxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgdmlldyBzdGF0ZXMgYXJlIGVxdWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2aWV3U3RhdGVzQXJlRXF1YWwoXG4gIHN0YXRlMTogTWFwVmlld1N0YXRlLFxuICBzdGF0ZTI6IE1hcFZpZXdTdGF0ZVxuKTogYm9vbGVhbiB7XG4gIGlmIChzdGF0ZTEgPT09IHVuZGVmaW5lZCB8fCBzdGF0ZTIgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHRvbGVyYW5jZSA9IDEgLyAxMDAwMDtcbiAgcmV0dXJuIChcbiAgICBzdGF0ZTEuem9vbSA9PT0gc3RhdGUyLnpvb20gJiZcbiAgICBNYXRoLnRydW5jKHN0YXRlMS5jZW50ZXJbMF0gLyB0b2xlcmFuY2UpID09PVxuICAgICAgTWF0aC50cnVuYyhzdGF0ZTIuY2VudGVyWzBdIC8gdG9sZXJhbmNlKSAmJlxuICAgIE1hdGgudHJ1bmMoc3RhdGUxLmNlbnRlclsxXSAvIHRvbGVyYW5jZSkgPT09XG4gICAgICBNYXRoLnRydW5jKHN0YXRlMi5jZW50ZXJbMV0gLyB0b2xlcmFuY2UpXG4gICk7XG59XG5cbi8qKlxuICogRm9ybWF0IHRoZSBzY2FsZSB0byBhIGh1bWFuIHJlYWRhYmxlIHRleHRcbiAqIEBwYXJhbSBTY2FsZSBvZiB0aGUgbWFwXG4gKiBAcmV0dXJucyBIdW1hbiByZWFkYWJsZSBzY2FsZSB0ZXh0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRTY2FsZShzY2FsZSkge1xuICBzY2FsZSA9IE1hdGgucm91bmQoc2NhbGUpO1xuICBpZiAoc2NhbGUgPCAxMDAwMCkge1xuICAgIHJldHVybiBzY2FsZSArICcnO1xuICB9XG5cbiAgc2NhbGUgPSBNYXRoLnJvdW5kKHNjYWxlIC8gMTAwMCk7XG4gIGlmIChzY2FsZSA8IDEwMDApIHtcbiAgICByZXR1cm4gc2NhbGUgKyAnSyc7XG4gIH1cblxuICBzY2FsZSA9IE1hdGgucm91bmQoc2NhbGUgLyAxMDAwKTtcbiAgcmV0dXJuIHNjYWxlICsgJ00nO1xufVxuXG4vKipcbiAqIFJldHVybiB0aGUgcmVzb2x1dGlvbiBmcm9tIGEgc2NhbGUgZGVub21cbiAqIEBwYXJhbSBzY2FsZSBTY2FsZSBkZW5vbVxuICogQHBhcmFtIGRwaSBEUElcbiAqIEByZXR1cm5zIFJlc29sdXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc29sdXRpb25Gcm9tU2NhbGUoc2NhbGU6IG51bWJlciwgZHBpID0gOTYpOiBudW1iZXIge1xuICBjb25zdCBpbmNoZXNQZXJNZXRlciA9IDM5LjM3MDE7XG4gIHJldHVybiBzY2FsZSAvIChpbmNoZXNQZXJNZXRlciAqIGRwaSk7XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSByZXNvbHV0aW9uIGZyb20gYSBzY2FsZSBkZW5vbVxuICogQHBhcmFtIFNjYWxlIGRlbm9tXG4gKiBAcmV0dXJucyBSZXNvbHV0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY2FsZUZyb21SZXNvbHV0aW9uKFxuICByZXNvbHV0aW9uOiBudW1iZXIsXG4gIHVuaXQgPSAnbScsXG4gIGRwaSA9IDk2XG4pOiBudW1iZXIge1xuICBjb25zdCBpbmNoZXNQZXJNZXRlciA9IDM5LjM3MDE7XG4gIHJldHVybiByZXNvbHV0aW9uICogb2xwcm9qLk1FVEVSU19QRVJfVU5JVFt1bml0XSAqIGluY2hlc1Blck1ldGVyICogZHBpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgQ1RSTCBrZXkgaXMgcHVzaGVkIGR1cmluZyBhbiBPbCBNYXBCcm93c2VyUG9pbnRlckV2ZW50XG4gKiBAcGFyYW0gZXZlbnQgT0wgTWFwQnJvd3NlclBvaW50ZXJFdmVudFxuICogQHJldHVybnMgV2hldGhlciB0aGUgQ1RSTCBrZXkgaXMgcHVzaGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjdHJsS2V5RG93bihldmVudDogTWFwQnJvd3NlclBvaW50ZXJFdmVudDxhbnk+KTogYm9vbGVhbiB7XG4gIGNvbnN0IG9yaWdpbmFsRXZlbnQgPSBldmVudC5vcmlnaW5hbEV2ZW50O1xuICByZXR1cm4gKFxuICAgICFvcmlnaW5hbEV2ZW50LmFsdEtleSAmJlxuICAgIChNQUMgPyBvcmlnaW5hbEV2ZW50Lm1ldGFLZXkgOiBvcmlnaW5hbEV2ZW50LmN0cmxLZXkpICYmXG4gICAgIW9yaWdpbmFsRXZlbnQuc2hpZnRLZXlcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJvdW5kQ29vcmRUbyhcbiAgY29vcmQ6IFtudW1iZXIsIG51bWJlcl0sXG4gIGRlY2ltYWwgPSAzXG4pOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgcmV0dXJuIFtcbiAgICBOdW1iZXJVdGlscy5yb3VuZFRvTkRlY2ltYWwoY29vcmRbMF0sIGRlY2ltYWwpLFxuICAgIE51bWJlclV0aWxzLnJvdW5kVG9ORGVjaW1hbChjb29yZFsxXSwgZGVjaW1hbClcbiAgXSBhcyBbbnVtYmVyLCBudW1iZXJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcm91bmRDb29yZFRvU3RyaW5nKFxuICBjb29yZDogW251bWJlciwgbnVtYmVyXSxcbiAgZGVjaW1hbCA9IDNcbik6IFtzdHJpbmcsIHN0cmluZ10ge1xuICByZXR1cm4gcm91bmRDb29yZFRvKGNvb3JkLCBkZWNpbWFsKS5tYXAoKHIpID0+IHIudG9TdHJpbmcoKSkgYXMgW1xuICAgIHN0cmluZyxcbiAgICBzdHJpbmdcbiAgXTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFuIGFycmF5IG9mIGNvbnZlcnRlZCBjb29yZGluYXRlcy5cbiAqIENvbnZlcnNpb24gaXMgZG9uZSBmb3IgZXZlcnkgY29uZmlndXJlZCBwcm9qZWN0aW9uc1xuICogYW5kIGZvciB0aGUgY3VycmVudCBVVE0gem9uZSBhbmQgTVRNIHpvbmUuXG4gKiBAcGFyYW0gbG9uTGF0IFtudW1iZXIsIG51bWJlcl0gYXJyYXkgb2YgdGhlIGNvb3JkaW5hdGUgdG8gdHJhbnNmb3JtLlxuICogQHBhcmFtIHByb2plY3Rpb25zICBQcm9qZWN0aW9uW10gQXJyYXkgb2YgZGVzdGluYXRpb24gcHJvamVjdGlvbi5cbiAqIEBwYXJhbSByZXZlcnNlQ29vcmRzIFRvIHJldmVyc2UgY29vcmRzIGZyb20gbGF0TG9uIHRvIGxvbkxhdCAoc2VhcmNoIG9wdGlvbilcbiAqIEByZXR1cm5zIFJldHVybnMgYW4gYXJyYXkgb2YgY29udmVydGVkIGNvb3JkaW5hdGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9uTGF0Q29udmVyc2lvbihcbiAgbG9uTGF0OiBbbnVtYmVyLCBudW1iZXJdLFxuICBwcm9qZWN0aW9uczogUHJvamVjdGlvbltdXG4pOiB7XG4gIGNvZGU6IHN0cmluZztcbiAgYWxpYXM6IHN0cmluZztcbiAgY29vcmQ6IFtudW1iZXIsIG51bWJlcl07XG4gIGlnbzJDb29yZEZvcm1hdDogc3RyaW5nO1xufVtdIHtcbiAgY29uc3QgcmF3Q29vcmQzODU3ID0gb2xwcm9qLnRyYW5zZm9ybShsb25MYXQsICdFUFNHOjQzMjYnLCAnRVBTRzozODU3JykgYXMgW1xuICAgIG51bWJlcixcbiAgICBudW1iZXJcbiAgXTtcbiAgY29uc3QgY29udmVydGVkTG9uTGF0ID0gW1xuICAgIHtcbiAgICAgIGNvZGU6ICdFUFNHOjM4NTcnLFxuICAgICAgYWxpYXM6ICdXZWIgTWVyY2F0b3InLFxuICAgICAgY29vcmQ6IHJhd0Nvb3JkMzg1NyxcbiAgICAgIGlnbzJDb29yZEZvcm1hdDogYCR7cm91bmRDb29yZFRvKHJhd0Nvb3JkMzg1Nykuam9pbignLCAnKX0gOyAzODU3YFxuICAgIH1cbiAgXTtcblxuICAvLyBkZXRlY3QgdGhlIGN1cnJlbnQgdXRtIHpvbmUuXG4gIGNvbnN0IHV0bVpvbmUgPSB1dG1ab25lRnJvbUxvbkxhdChsb25MYXQpO1xuICBjb25zdCBlcHNnVXRtID0gdXRtWm9uZSA8IDEwID8gYEVQU0c6MzI2MCR7dXRtWm9uZX1gIDogYEVQU0c6MzI2JHt1dG1ab25lfWA7XG4gIGNvbnN0IHV0bU5hbWUgPSBgVVRNLSR7dXRtWm9uZX1gO1xuICBjb25zdCByYXdDb29yZFV0bSA9IG9scHJvai50cmFuc2Zvcm0obG9uTGF0LCAnRVBTRzo0MzI2JywgZXBzZ1V0bSkgYXMgW1xuICAgIG51bWJlcixcbiAgICBudW1iZXJcbiAgXTtcbiAgY29udmVydGVkTG9uTGF0LnB1c2goe1xuICAgIGNvZGU6IGVwc2dVdG0sXG4gICAgYWxpYXM6ICdVVE0nLFxuICAgIGNvb3JkOiByYXdDb29yZFV0bSxcbiAgICBpZ28yQ29vcmRGb3JtYXQ6IGAke3V0bU5hbWV9ICR7cm91bmRDb29yZFRvKHJhd0Nvb3JkVXRtKS5qb2luKCcsICcpfWBcbiAgfSk7XG5cbiAgLy8gZGV0ZWN0IHRoZSBjdXJyZW50IG10bSB6b25lLlxuICBjb25zdCBtdG1ab25lID0gbXRtWm9uZUZyb21Mb25MYXQobG9uTGF0KTtcbiAgaWYgKG10bVpvbmUpIHtcbiAgICBjb25zdCBlcHNnTXRtID1cbiAgICAgIG10bVpvbmUgPCAxMCA/IGBFUFNHOjMyMTgke210bVpvbmV9YCA6IGBFUFNHOjMyMSR7ODAgKyBtdG1ab25lfWA7XG4gICAgY29uc3QgbXRtTmFtZSA9IGBNVE0tJHttdG1ab25lfWA7XG4gICAgY29uc3QgcmF3Q29vcmRNdG0gPSBvbHByb2oudHJhbnNmb3JtKGxvbkxhdCwgJ0VQU0c6NDMyNicsIGVwc2dNdG0pIGFzIFtcbiAgICAgIG51bWJlcixcbiAgICAgIG51bWJlclxuICAgIF07XG4gICAgY29udmVydGVkTG9uTGF0LnB1c2goe1xuICAgICAgY29kZTogZXBzZ010bSxcbiAgICAgIGFsaWFzOiAnTVRNJyxcbiAgICAgIGNvb3JkOiByYXdDb29yZE10bSxcbiAgICAgIGlnbzJDb29yZEZvcm1hdDogYCR7bXRtTmFtZX0gJHtyb3VuZENvb3JkVG8ocmF3Q29vcmRNdG0pLmpvaW4oJywgJyl9YFxuICAgIH0pO1xuICB9XG5cbiAgcHJvamVjdGlvbnMuZm9yRWFjaCgocHJvamVjdGlvbikgPT4ge1xuICAgIGNvbnN0IHJhd0Nvb3JkID0gb2xwcm9qLnRyYW5zZm9ybShsb25MYXQsICdFUFNHOjQzMjYnLCBwcm9qZWN0aW9uLmNvZGUpIGFzIFtcbiAgICAgIG51bWJlcixcbiAgICAgIG51bWJlclxuICAgIF07XG4gICAgY29uc3QgbnVtZXJpY0Vwc2dDb2RlID0gcHJvamVjdGlvbi5jb2RlLnNwbGl0KCc6JylbMV07XG4gICAgY29udmVydGVkTG9uTGF0LnB1c2goe1xuICAgICAgY29kZTogcHJvamVjdGlvbi5jb2RlLFxuICAgICAgYWxpYXM6IHByb2plY3Rpb24uYWxpYXMgfHwgcHJvamVjdGlvbi5jb2RlLFxuICAgICAgY29vcmQ6IHJhd0Nvb3JkLFxuICAgICAgaWdvMkNvb3JkRm9ybWF0OiBgJHtyb3VuZENvb3JkVG8ocmF3Q29vcmQpLmpvaW4oXG4gICAgICAgICcsICdcbiAgICAgICl9IDsgJHtudW1lcmljRXBzZ0NvZGV9YFxuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gY29udmVydGVkTG9uTGF0O1xufVxuXG4vKipcbiAqIERldGVjdCB0aGUgY3VycmVudCB1dG0gem9uZSBvZiB0aGUgbG9uL2xhdCBjb29yZGluYXRlLlxuICogQHBhcmFtIGxvbkxhdCBbbnVtYmVyLCBudW1iZXJdIGFycmF5IG9mIHRoZSBjb29yZGluYXRlIHRvIGRldGVjdCB0aGUgVVRNIHpvbmUuXG4gKiBAcmV0dXJucyBudW1iZXIgVGhlIFVUTSB6b25lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXRtWm9uZUZyb21Mb25MYXQobG9uTGF0OiBbbnVtYmVyLCBudW1iZXJdKSB7XG4gIHJldHVybiBNYXRoLmNlaWwoKGxvbkxhdFswXSArIDE4MCkgLyA2KTtcbn1cblxuLyoqXG4gKiBEZXRlY3QgdGhlIGN1cnJlbnQgbXRtIHpvbmUgb2YgdGhlIGxvbi9sYXQgY29vcmRpbmF0ZS5cbiAqIEBwYXJhbSBsb25MYXQgW251bWJlciwgbnVtYmVyXSBhcnJheSBvZiB0aGUgY29vcmRpbmF0ZSB0byBkZXRlY3QgdGhlIE1UTSB6b25lLlxuICogQHJldHVybnMgbnVtYmVyIFRoZSBNVE0gem9uZS4gVW5kZWZpbmVkIGlmIG91dHNpZGUgb2YgdGhlIG10bSBhcHBsaWNhdGlvbiB6b25lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbXRtWm9uZUZyb21Mb25MYXQobG9uTGF0OiBbbnVtYmVyLCBudW1iZXJdKSB7XG4gIGNvbnN0IGxvbmcgPSBsb25MYXRbMF07XG4gIGxldCBtdG1ab25lO1xuICBpZiAobG9uZyA8IC01MSAmJiBsb25nID4gLTU0KSB7XG4gICAgbXRtWm9uZSA9IDE7XG4gIH1cbiAgaWYgKGxvbmcgPCAtNTQgJiYgbG9uZyA+IC01Nykge1xuICAgIG10bVpvbmUgPSAyO1xuICB9XG4gIGlmIChsb25nIDwgLTU3ICYmIGxvbmcgPiAtNjApIHtcbiAgICBtdG1ab25lID0gMztcbiAgfVxuICBpZiAobG9uZyA8IC02MCAmJiBsb25nID4gLTYzKSB7XG4gICAgbXRtWm9uZSA9IDQ7XG4gIH1cbiAgaWYgKGxvbmcgPCAtNjMgJiYgbG9uZyA+IC02Nikge1xuICAgIG10bVpvbmUgPSA1O1xuICB9XG4gIGlmIChsb25nIDwgLTY2ICYmIGxvbmcgPiAtNjkpIHtcbiAgICBtdG1ab25lID0gNjtcbiAgfVxuICBpZiAobG9uZyA8IC02OSAmJiBsb25nID4gLTcyKSB7XG4gICAgbXRtWm9uZSA9IDc7XG4gIH1cbiAgaWYgKGxvbmcgPCAtNzIgJiYgbG9uZyA+IC03NSkge1xuICAgIG10bVpvbmUgPSA4O1xuICB9XG4gIGlmIChsb25nIDwgLTc1ICYmIGxvbmcgPiAtNzgpIHtcbiAgICBtdG1ab25lID0gOTtcbiAgfVxuICBpZiAobG9uZyA8IC03OCAmJiBsb25nID4gLTgxKSB7XG4gICAgbXRtWm9uZSA9IDEwO1xuICB9XG4gIHJldHVybiBtdG1ab25lO1xufVxuIl19
|
|
@@ -97,10 +97,10 @@ export class MapOfflineDirective {
|
|
|
97
97
|
}
|
|
98
98
|
});
|
|
99
99
|
}
|
|
100
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
101
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
100
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: MapOfflineDirective, deps: [{ token: i1.MapBrowserComponent }, { token: i2.NetworkService }, { token: i3.MessageService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
101
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: MapOfflineDirective, isStandalone: true, selector: "[igoMapOffline]", ngImport: i0 });
|
|
102
102
|
}
|
|
103
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
103
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: MapOfflineDirective, decorators: [{
|
|
104
104
|
type: Directive,
|
|
105
105
|
args: [{
|
|
106
106
|
selector: '[igoMapOffline]',
|
|
@@ -55,10 +55,10 @@ export class ProjectionService {
|
|
|
55
55
|
olproj.get(projection.code).setExtent(projection.extent);
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
59
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
58
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ProjectionService, deps: [{ token: i1.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
59
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ProjectionService, providedIn: 'root' });
|
|
60
60
|
}
|
|
61
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ProjectionService, decorators: [{
|
|
62
62
|
type: Injectable,
|
|
63
63
|
args: [{
|
|
64
64
|
providedIn: 'root'
|
|
@@ -27,7 +27,6 @@ export function zoneMtm(lon) {
|
|
|
27
27
|
*/
|
|
28
28
|
export function zoneUtm(lon) {
|
|
29
29
|
let lonMin = -180;
|
|
30
|
-
const lonMax = 180;
|
|
31
30
|
const deltaLon = 6;
|
|
32
31
|
let zone = 1;
|
|
33
32
|
while (Math.abs(lon - lonMin) > deltaLon) {
|
|
@@ -79,7 +78,7 @@ export function detectFileEPSG(options) {
|
|
|
79
78
|
resolve('epsgNotDefined');
|
|
80
79
|
return;
|
|
81
80
|
}
|
|
82
|
-
reader.onload = (
|
|
81
|
+
reader.onload = () => {
|
|
83
82
|
if (file.name.toLowerCase().endsWith('.geojson') ||
|
|
84
83
|
file.name.toLowerCase().endsWith('.json')) {
|
|
85
84
|
const geojson = JSON.parse(reader.result);
|
|
@@ -120,4 +119,4 @@ export function detectFileEPSG(options) {
|
|
|
120
119
|
reader.readAsText(file, 'UTF-8');
|
|
121
120
|
}));
|
|
122
121
|
}
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdGlvbi51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL21hcC9zaGFyZWQvcHJvamVjdGlvbi51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSXhDOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsT0FBTyxDQUFDLEdBQVc7SUFDakMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDakIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDbkIsSUFBSSxHQUFHLEdBQUcsTUFBTSxJQUFJLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUNqQyxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNiLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUM7WUFDekMsTUFBTSxHQUFHLE1BQU0sR0FBRyxRQUFRLENBQUM7WUFDM0IsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQUNEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsT0FBTyxDQUFDLEdBQVc7SUFDakMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDbEIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDO0lBQ25CLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNuQixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7SUFDYixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLFFBQVEsRUFBRSxDQUFDO1FB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SSxDQUFDLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7b0JBQ2pELElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ2pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDakIsTUFBTTtvQkFDUixDQUFDO3lCQUFNLENBQUM7d0JBQ04sT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUNyQixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDNUIsQ0FBQztRQUNILENBQUMsQ0FBQztRQUNGLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZnJvbSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBQcm9qZWN0aW9uc0xpbWl0YXRpb25zT3B0aW9ucyB9IGZyb20gJy4vcHJvamVjdGlvbi5pbnRlcmZhY2VzJztcblxuLyoqXG4gKiBSZXR1cm4gYSBudW1iZXIgb2Ygem9uZSBNVE0gZm9yIGEgbG9uZ2l0dWRlIGZvciBwcm92aW5jZSBvZiBRdWViZWMgb25seVxuICogQHBhcmFtIGxvbiBudW1iZXJcbiAqIEByZXR1cm5zIHpvbmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHpvbmVNdG0obG9uOiBudW1iZXIpOiBudW1iZXIge1xuICBsZXQgbG9uTWluID0gLTU0O1xuICBjb25zdCBsb25NYXggPSAtODE7XG4gIGlmIChsb24gPCBsb25NYXggfHwgbG9uID4gbG9uTWluKSB7XG4gICAgcmV0dXJuIDA7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZGVsdGFMb24gPSAzO1xuICAgIGxldCB6b25lID0gMjtcbiAgICB3aGlsZSAoTWF0aC5hYnMobG9uIC0gbG9uTWluKSA+IGRlbHRhTG9uKSB7XG4gICAgICBsb25NaW4gPSBsb25NaW4gLSBkZWx0YUxvbjtcbiAgICAgIHpvbmUrKztcbiAgICB9XG4gICAgcmV0dXJuIHpvbmU7XG4gIH1cbn1cbi8qKlxuICogUmV0dXJuIGEgbnVtYmVyIG9mIHpvbmUgVVRNIGZvciBhIGxvbmdpdHVkZVxuICogQHBhcmFtIGxvbiBudW1iZXJcbiAqIEByZXR1cm5zIHpvbmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHpvbmVVdG0obG9uOiBudW1iZXIpOiBudW1iZXIge1xuICBsZXQgbG9uTWluID0gLTE4MDtcbiAgY29uc3QgbG9uTWF4ID0gMTgwO1xuICBjb25zdCBkZWx0YUxvbiA9IDY7XG4gIGxldCB6b25lID0gMTtcbiAgd2hpbGUgKE1hdGguYWJzKGxvbiAtIGxvbk1pbikgPiBkZWx0YUxvbikge1xuICAgIGxvbk1pbiA9IGxvbk1pbiArIGRlbHRhTG9uO1xuICAgIHpvbmUrKztcbiAgfVxuICByZXR1cm4gem9uZTtcbn1cblxuLyoqXG4gKiBDb21wdXRlIHRoZSBjb250cmFpbnRzIG9mIHByb2plY3Rpb25zXG4gKiBAcGFyYW0gcHJvamVjdGlvbnNMaW1pdGF0aW9uczogUHJvamVjdGlvbnNMaW1pdGF0aW9uc09wdGlvbnNcbiAqIEByZXR1cm5zIHByb2plY3Rpb25zQ29udHJhaW50czogUHJvamVjdGlvbnNMaW1pdGF0aW9uc09wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVQcm9qZWN0aW9uc0NvbnN0cmFpbnRzKFxuICBwcm9qZWN0aW9uc0xpbWl0YXRpb25zOiBQcm9qZWN0aW9uc0xpbWl0YXRpb25zT3B0aW9uc1xuKTogUHJvamVjdGlvbnNMaW1pdGF0aW9uc09wdGlvbnMge1xuICBjb25zdCBtdG1ab25lID0gcHJvamVjdGlvbnNMaW1pdGF0aW9ucy5tdG1ab25lO1xuICBjb25zdCB1dG1ab25lID0gcHJvamVjdGlvbnNMaW1pdGF0aW9ucy51dG1ab25lO1xuICBjb25zdCBwcm9qZWN0aW9uc0NvbnN0cmFpbnRzID0ge1xuICAgIHByb2pGcm9tQ29uZmlnOlxuICAgICAgcHJvamVjdGlvbnNMaW1pdGF0aW9ucy5wcm9qRnJvbUNvbmZpZyA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWUsXG4gICAgbmFkODM6IHByb2plY3Rpb25zTGltaXRhdGlvbnMubmFkODMgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlLFxuICAgIHdnczg0OiBwcm9qZWN0aW9uc0xpbWl0YXRpb25zLndnczg0ID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZSxcbiAgICB3ZWJNZXJjYXRvcjogcHJvamVjdGlvbnNMaW1pdGF0aW9ucy53ZWJNZXJjYXRvciA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWUsXG4gICAgdXRtOiBwcm9qZWN0aW9uc0xpbWl0YXRpb25zLnV0bSA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWUsXG4gICAgbXRtOiBwcm9qZWN0aW9uc0xpbWl0YXRpb25zLm10bSA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWUsXG4gICAgdXRtWm9uZToge1xuICAgICAgbWluWm9uZTogdXRtWm9uZSAmJiB1dG1ab25lLm1pblpvbmUgPyB1dG1ab25lLm1pblpvbmUgOiAxNyxcbiAgICAgIG1heFpvbmU6IHV0bVpvbmUgJiYgdXRtWm9uZS5tYXhab25lID8gdXRtWm9uZS5tYXhab25lIDogMjFcbiAgICB9LFxuICAgIG10bVpvbmU6IHtcbiAgICAgIG1pblpvbmU6IG10bVpvbmUgJiYgbXRtWm9uZS5taW5ab25lID8gbXRtWm9uZS5taW5ab25lIDogMixcbiAgICAgIG1heFpvbmU6IG10bVpvbmUgJiYgbXRtWm9uZS5tYXhab25lID8gbXRtWm9uZS5tYXhab25lIDogMTBcbiAgICB9XG4gIH07XG4gIHJldHVybiBwcm9qZWN0aW9uc0NvbnN0cmFpbnRzO1xufVxuLyoqXG4gKiBNZXRob2QgYWxsb3dpbmcgdG8gcmVhZCB0aGUgZmlsZSBhbmQgdHJ5IHRvIGRldGVjdCBwcm9qZWN0aW9uL0Nvb3JkIHN5c3RlbVxuICogT25seSBnZW9qc29uL2pzb24vZ21sIGNvdWxkIGJlIGRldGVjdGVkIGF0IHRoaXMgbW9tZW50LlxuICogQHBhcmFtIG9wdGlvbnMgQSBmaWxlIGFuZCBhbiBvcHRpb25hbCBudW1iZXIgb2YgbGluZSB0byByZWFkIHRoZSBFUFNHIENvZGUuIFVzZWQgb25seSBmb3IgR01MIGZpbGVzXG4gKiBAcmV0dXJucyBPYnNlcnZhYmxlIHN0cmluZywgZXBzZ05vdERlZmluZWQgaWYgdGhlIEVQU0cgaXMgbm90IGRldGVjdGVkIG9yIGEgRVBTRyBzdHJpbmcgZXg6IEVQU0c6Mzg1N1xuICovXG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0RmlsZUVQU0cob3B0aW9uczoge1xuICBmaWxlOiBGaWxlO1xuICBuYkxpbmVzPzogbnVtYmVyO1xufSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gIGNvbnN0IGZpbGUgPSBvcHRpb25zLmZpbGU7XG4gIGNvbnN0IG5iTGluZXMgPSBvcHRpb25zLm5iTGluZXMgPz8gNTAwO1xuXG4gIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gIHJldHVybiBmcm9tKFxuICAgIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCcuZ2VvanNvbicpICYmXG4gICAgICAgICFmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgnLmpzb24nKSAmJlxuICAgICAgICAhZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoJy5nbWwnKVxuICAgICAgKSB7XG4gICAgICAgIHJlc29sdmUoJ2Vwc2dOb3REZWZpbmVkJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmVhZGVyLm9ubG9hZCA9IChlKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgnLmdlb2pzb24nKSB8fFxuICAgICAgICAgIGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCcuanNvbicpXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGdlb2pzb24gPSBKU09OLnBhcnNlKHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nKTtcbiAgICAgICAgICBpZiAoZ2VvanNvbi5jcnM/LnByb3BlcnRpZXM/Lm5hbWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGVwc2cgPVxuICAgICAgICAgICAgICBnZW9qc29uLmNycy5wcm9wZXJ0aWVzLm5hbWUubWF0Y2goL0VQU0c6ezEsMn1cXGR7MCw2fS9nbSk7XG4gICAgICAgICAgICBpZiAoZXBzZyAhPT0gbnVsbCAmJiBlcHNnLmxlbmd0aCkge1xuICAgICAgICAgICAgICByZXNvbHZlKGVwc2dbMF0ucmVwbGFjZSgvOjovZywgJzonKSk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc29sdmUoJ2Vwc2dOb3REZWZpbmVkJyk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZSgnZXBzZ05vdERlZmluZWQnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoJy5nbWwnKSkge1xuICAgICAgICAgIGNvbnN0IHRleHQgPSByZWFkZXIucmVzdWx0IGFzIHN0cmluZztcbiAgICAgICAgICBjb25zdCBsaW5lcyA9ICh0ZXh0IGFzIHN0cmluZykuc3BsaXQoJ1xcbicpO1xuICAgICAgICAgIGZvciAobGV0IGxpbmUgPSAwOyBsaW5lIDw9IG5iTGluZXM7IGxpbmUrKykge1xuICAgICAgICAgICAgY29uc3QgZXBzZyA9IGxpbmVzW2xpbmVdLm1hdGNoKC9FUFNHOlxcZHswLDZ9L2dtKTtcbiAgICAgICAgICAgIGlmIChlcHNnICE9PSBudWxsICYmIGVwc2cubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHJlc29sdmUoZXBzZ1swXSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKCdlcHNnTm90RGVmaW5lZCcpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgcmVhZGVyLnJlYWRBc1RleHQoZmlsZSwgJ1VURi04Jyk7XG4gICAgfSlcbiAgKTtcbn1cbiJdfQ==
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdGlvbi51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL21hcC9zaGFyZWQvcHJvamVjdGlvbi51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSXhDOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsT0FBTyxDQUFDLEdBQVc7SUFDakMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDakIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDbkIsSUFBSSxHQUFHLEdBQUcsTUFBTSxJQUFJLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUNqQyxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNiLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUM7WUFDekMsTUFBTSxHQUFHLE1BQU0sR0FBRyxRQUFRLENBQUM7WUFDM0IsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQUNEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsT0FBTyxDQUFDLEdBQVc7SUFDakMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDbEIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNiLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUM7UUFDekMsTUFBTSxHQUFHLE1BQU0sR0FBRyxRQUFRLENB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QUNqRCxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUNqQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ2pCLE1BQU07b0JBQ1IsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDckIsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzVCLENBQUM7UUFDSCxDQUFDLENBQUM7UUFDRixNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIGZyb20gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUHJvamVjdGlvbnNMaW1pdGF0aW9uc09wdGlvbnMgfSBmcm9tICcuL3Byb2plY3Rpb24uaW50ZXJmYWNlcyc7XG5cbi8qKlxuICogUmV0dXJuIGEgbnVtYmVyIG9mIHpvbmUgTVRNIGZvciBhIGxvbmdpdHVkZSBmb3IgcHJvdmluY2Ugb2YgUXVlYmVjIG9ubHlcbiAqIEBwYXJhbSBsb24gbnVtYmVyXG4gKiBAcmV0dXJucyB6b25lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB6b25lTXRtKGxvbjogbnVtYmVyKTogbnVtYmVyIHtcbiAgbGV0IGxvbk1pbiA9IC01NDtcbiAgY29uc3QgbG9uTWF4ID0gLTgxO1xuICBpZiAobG9uIDwgbG9uTWF4IHx8IGxvbiA+IGxvbk1pbikge1xuICAgIHJldHVybiAwO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGRlbHRhTG9uID0gMztcbiAgICBsZXQgem9uZSA9IDI7XG4gICAgd2hpbGUgKE1hdGguYWJzKGxvbiAtIGxvbk1pbikgPiBkZWx0YUxvbikge1xuICAgICAgbG9uTWluID0gbG9uTWluIC0gZGVsdGFMb247XG4gICAgICB6b25lKys7XG4gICAgfVxuICAgIHJldHVybiB6b25lO1xuICB9XG59XG4vKipcbiAqIFJldHVybiBhIG51bWJlciBvZiB6b25lIFVUTSBmb3IgYSBsb25naXR1ZGVcbiAqIEBwYXJhbSBsb24gbnVtYmVyXG4gKiBAcmV0dXJucyB6b25lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB6b25lVXRtKGxvbjogbnVtYmVyKTogbnVtYmVyIHtcbiAgbGV0IGxvbk1pbiA9IC0xODA7XG4gIGNvbnN0IGRlbHRhTG9uID0gNjtcbiAgbGV0IHpvbmUgPSAxO1xuICB3aGlsZSAoTWF0aC5hYnMobG9uIC0gbG9uTWluKSA+IGRlbHRhTG9uKSB7XG4gICAgbG9uTWluID0gbG9uTWluICsgZGVsdGFMb247XG4gICAgem9uZSsrO1xuICB9XG4gIHJldHVybiB6b25lO1xufVxuXG4vKipcbiAqIENvbXB1dGUgdGhlIGNvbnRyYWludHMgb2YgcHJvamVjdGlvbnNcbiAqIEBwYXJhbSBwcm9qZWN0aW9uc0xpbWl0YXRpb25zOiBQcm9qZWN0aW9uc0xpbWl0YXRpb25zT3B0aW9uc1xuICogQHJldHVybnMgcHJvamVjdGlvbnNDb250cmFpbnRzOiBQcm9qZWN0aW9uc0xpbWl0YXRpb25zT3B0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVByb2plY3Rpb25zQ29uc3RyYWludHMoXG4gIHByb2plY3Rpb25zTGltaXRhdGlvbnM6IFByb2plY3Rpb25zTGltaXRhdGlvbnNPcHRpb25zXG4pOiBQcm9qZWN0aW9uc0xpbWl0YXRpb25zT3B0aW9ucyB7XG4gIGNvbnN0IG10bVpvbmUgPSBwcm9qZWN0aW9uc0xpbWl0YXRpb25zLm10bVpvbmU7XG4gIGNvbnN0IHV0bVpvbmUgPSBwcm9qZWN0aW9uc0xpbWl0YXRpb25zLnV0bVpvbmU7XG4gIGNvbnN0IHByb2plY3Rpb25zQ29uc3RyYWludHMgPSB7XG4gICAgcHJvakZyb21Db25maWc6XG4gICAgICBwcm9qZWN0aW9uc0xpbWl0YXRpb25zLnByb2pGcm9tQ29uZmlnID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZSxcbiAgICBuYWQ4MzogcHJvamVjdGlvbnNMaW1pdGF0aW9ucy5uYWQ4MyA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWUsXG4gICAgd2dzODQ6IHByb2plY3Rpb25zTGltaXRhdGlvbnMud2dzODQgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlLFxuICAgIHdlYk1lcmNhdG9yOiBwcm9qZWN0aW9uc0xpbWl0YXRpb25zLndlYk1lcmNhdG9yID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZSxcbiAgICB1dG06IHByb2plY3Rpb25zTGltaXRhdGlvbnMudXRtID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZSxcbiAgICBtdG06IHByb2plY3Rpb25zTGltaXRhdGlvbnMubXRtID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZSxcbiAgICB1dG1ab25lOiB7XG4gICAgICBtaW5ab25lOiB1dG1ab25lICYmIHV0bVpvbmUubWluWm9uZSA/IHV0bVpvbmUubWluWm9uZSA6IDE3LFxuICAgICAgbWF4Wm9uZTogdXRtWm9uZSAmJiB1dG1ab25lLm1heFpvbmUgPyB1dG1ab25lLm1heFpvbmUgOiAyMVxuICAgIH0sXG4gICAgbXRtWm9uZToge1xuICAgICAgbWluWm9uZTogbXRtWm9uZSAmJiBtdG1ab25lLm1pblpvbmUgPyBtdG1ab25lLm1pblpvbmUgOiAyLFxuICAgICAgbWF4Wm9uZTogbXRtWm9uZSAmJiBtdG1ab25lLm1heFpvbmUgPyBtdG1ab25lLm1heFpvbmUgOiAxMFxuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHByb2plY3Rpb25zQ29uc3RyYWludHM7XG59XG4vKipcbiAqIE1ldGhvZCBhbGxvd2luZyB0byByZWFkIHRoZSBmaWxlIGFuZCB0cnkgdG8gZGV0ZWN0IHByb2plY3Rpb24vQ29vcmQgc3lzdGVtXG4gKiBPbmx5IGdlb2pzb24vanNvbi9nbWwgY291bGQgYmUgZGV0ZWN0ZWQgYXQgdGhpcyBtb21lbnQuXG4gKiBAcGFyYW0gb3B0aW9ucyBBIGZpbGUgYW5kIGFuIG9wdGlvbmFsIG51bWJlciBvZiBsaW5lIHRvIHJlYWQgdGhlIEVQU0cgQ29kZS4gVXNlZCBvbmx5IGZvciBHTUwgZmlsZXNcbiAqIEByZXR1cm5zIE9ic2VydmFibGUgc3RyaW5nLCBlcHNnTm90RGVmaW5lZCBpZiB0aGUgRVBTRyBpcyBub3QgZGV0ZWN0ZWQgb3IgYSBFUFNHIHN0cmluZyBleDogRVBTRzozODU3XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXRlY3RGaWxlRVBTRyhvcHRpb25zOiB7XG4gIGZpbGU6IEZpbGU7XG4gIG5iTGluZXM/OiBudW1iZXI7XG59KTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgY29uc3QgZmlsZSA9IG9wdGlvbnMuZmlsZTtcbiAgY29uc3QgbmJMaW5lcyA9IG9wdGlvbnMubmJMaW5lcyA/PyA1MDA7XG5cbiAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgcmV0dXJuIGZyb20oXG4gICAgbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICAhZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoJy5nZW9qc29uJykgJiZcbiAgICAgICAgIWZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCcuanNvbicpICYmXG4gICAgICAgICFmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgnLmdtbCcpXG4gICAgICApIHtcbiAgICAgICAgcmVzb2x2ZSgnZXBzZ05vdERlZmluZWQnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoJy5nZW9qc29uJykgfHxcbiAgICAgICAgICBmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgnLmpzb24nKVxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBnZW9qc29uID0gSlNPTi5wYXJzZShyZWFkZXIucmVzdWx0IGFzIHN0cmluZyk7XG4gICAgICAgICAgaWYgKGdlb2pzb24uY3JzPy5wcm9wZXJ0aWVzPy5uYW1lKSB7XG4gICAgICAgICAgICBjb25zdCBlcHNnID1cbiAgICAgICAgICAgICAgZ2VvanNvbi5jcnMucHJvcGVydGllcy5uYW1lLm1hdGNoKC9FUFNHOnsxLDJ9XFxkezAsNn0vZ20pO1xuICAgICAgICAgICAgaWYgKGVwc2cgIT09IG51bGwgJiYgZXBzZy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmVzb2x2ZShlcHNnWzBdLnJlcGxhY2UoLzo6L2csICc6JykpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXNvbHZlKCdlcHNnTm90RGVmaW5lZCcpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmUoJ2Vwc2dOb3REZWZpbmVkJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCcuZ21sJykpIHtcbiAgICAgICAgICBjb25zdCB0ZXh0ID0gcmVhZGVyLnJlc3VsdCBhcyBzdHJpbmc7XG4gICAgICAgICAgY29uc3QgbGluZXMgPSAodGV4dCBhcyBzdHJpbmcpLnNwbGl0KCdcXG4nKTtcbiAgICAgICAgICBmb3IgKGxldCBsaW5lID0gMDsgbGluZSA8PSBuYkxpbmVzOyBsaW5lKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGVwc2cgPSBsaW5lc1tsaW5lXS5tYXRjaCgvRVBTRzpcXGR7MCw2fS9nbSk7XG4gICAgICAgICAgICBpZiAoZXBzZyAhPT0gbnVsbCAmJiBlcHNnLmxlbmd0aCkge1xuICAgICAgICAgICAgICByZXNvbHZlKGVwc2dbMF0pO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc29sdmUodW5kZWZpbmVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZSgnZXBzZ05vdERlZmluZWQnKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUsICdVVEYtOCcpO1xuICAgIH0pXG4gICk7XG59XG4iXX0=
|