@igo2/integration 17.0.0-next.6 → 17.0.0-next.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/esm2022/lib/about/about-tool/about-tool.component.mjs +9 -7
  2. package/esm2022/lib/about/about.module.mjs +4 -4
  3. package/esm2022/lib/analytics/analytics-listener.service.mjs +8 -22
  4. package/esm2022/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.mjs +6 -5
  5. package/esm2022/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.mjs +4 -4
  6. package/esm2022/lib/catalog/catalog-library-tool/catalog-library-tool.component.mjs +18 -6
  7. package/esm2022/lib/catalog/catalog-library-tool/catalog-library-tool.module.mjs +4 -4
  8. package/esm2022/lib/catalog/catalog.module.mjs +4 -4
  9. package/esm2022/lib/catalog/catalog.state.mjs +5 -5
  10. package/esm2022/lib/context/context-editor-tool/context-editor-tool.component.mjs +5 -5
  11. package/esm2022/lib/context/context-manager-tool/context-manager-tool.component.mjs +5 -5
  12. package/esm2022/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.mjs +5 -5
  13. package/esm2022/lib/context/context-share-tool/context-share-tool.component.mjs +5 -5
  14. package/esm2022/lib/context/context.directive.mjs +11 -0
  15. package/esm2022/lib/context/context.module.mjs +6 -6
  16. package/esm2022/lib/context/context.state.mjs +6 -6
  17. package/esm2022/lib/context/index.mjs +2 -11
  18. package/esm2022/lib/directions/directions-tool/directions-tool.component.mjs +9 -6
  19. package/esm2022/lib/directions/directions.module.mjs +4 -4
  20. package/esm2022/lib/directions/directions.state.mjs +3 -3
  21. package/esm2022/lib/draw/draw.module.mjs +4 -4
  22. package/esm2022/lib/draw/draw.state.mjs +3 -3
  23. package/esm2022/lib/draw/drawing-tool/drawing-tool.component.mjs +5 -5
  24. package/esm2022/lib/draw/drawing-tool/drawing-tool.module.mjs +4 -4
  25. package/esm2022/lib/environment/environment.interface.mjs +1 -1
  26. package/esm2022/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.mjs +5 -5
  27. package/esm2022/lib/filter/active-time-filter-tool/active-time-filter-tool.component.mjs +5 -5
  28. package/esm2022/lib/filter/filter.module.mjs +4 -4
  29. package/esm2022/lib/filter/ogc-filter-tool/ogc-filter-tool.component.mjs +5 -5
  30. package/esm2022/lib/filter/spatial-filter-tool/spatial-filter-tool.component.mjs +8 -5
  31. package/esm2022/lib/filter/time-filter-tool/time-filter-tool.component.mjs +5 -5
  32. package/esm2022/lib/geometry-form/data-issue-reporter-tool/data-issue-reporter-tool.component.mjs +7 -6
  33. package/esm2022/lib/geometry-form/geometry-form.module.mjs +6 -6
  34. package/esm2022/lib/import-export/import-export-tool/import-export-tool.component.mjs +7 -7
  35. package/esm2022/lib/import-export/import-export.module.mjs +4 -4
  36. package/esm2022/lib/import-export/import-export.state.mjs +3 -3
  37. package/esm2022/lib/integration.module.mjs +4 -4
  38. package/esm2022/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.mjs +37 -29
  39. package/esm2022/lib/map/advanced-map-tool/advanced-map-tool.component.mjs +7 -7
  40. package/esm2022/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.mjs +8 -6
  41. package/esm2022/lib/map/index.mjs +2 -15
  42. package/esm2022/lib/map/layer-list-tool.state.mjs +3 -3
  43. package/esm2022/lib/map/map-details-tool/map-details-tool.component.mjs +8 -8
  44. package/esm2022/lib/map/map-legend/map-legend-tool.component.mjs +8 -8
  45. package/esm2022/lib/map/map-proximity-tool/map-proximity-tool.component.mjs +9 -8
  46. package/esm2022/lib/map/map-proximity.state.mjs +3 -3
  47. package/esm2022/lib/map/map-tool/map-tool.component.mjs +7 -7
  48. package/esm2022/lib/map/map-tools/map-tools.component.mjs +8 -8
  49. package/esm2022/lib/map/map.directive.mjs +15 -0
  50. package/esm2022/lib/map/map.module.mjs +4 -4
  51. package/esm2022/lib/map/map.state.mjs +3 -3
  52. package/esm2022/lib/measure/measure.module.mjs +4 -4
  53. package/esm2022/lib/measure/measure.state.mjs +3 -3
  54. package/esm2022/lib/measure/measurer-tool/measurer-tool.component.mjs +5 -5
  55. package/esm2022/lib/measure/measurer-tool/measurer-tool.module.mjs +4 -4
  56. package/esm2022/lib/print/print-tool/print-tool.component.mjs +5 -5
  57. package/esm2022/lib/print/print.module.mjs +4 -4
  58. package/esm2022/lib/search/index.mjs +1 -7
  59. package/esm2022/lib/search/query.state.mjs +5 -5
  60. package/esm2022/lib/search/search-bar/search-bar-binding.directive.mjs +3 -3
  61. package/esm2022/lib/search/search-bar/search-bar.module.mjs +4 -4
  62. package/esm2022/lib/search/search-results-tool/search-results-tool.component.mjs +11 -7
  63. package/esm2022/lib/search/search-results-tool/search-results-tool.module.mjs +4 -4
  64. package/esm2022/lib/search/search.module.mjs +4 -4
  65. package/esm2022/lib/search/search.state.mjs +6 -9
  66. package/esm2022/lib/storage/storage.state.mjs +3 -3
  67. package/esm2022/lib/tool/tool.state.mjs +6 -6
  68. package/esm2022/lib/workspace/shared/edition-actions.service.mjs +9 -7
  69. package/esm2022/lib/workspace/shared/feature-actions.service.mjs +4 -4
  70. package/esm2022/lib/workspace/shared/wfs-actions.service.mjs +9 -7
  71. package/esm2022/lib/workspace/shared/workspace.utils.mjs +6 -3
  72. package/esm2022/lib/workspace/workspace-button/workspace-button.component.mjs +6 -6
  73. package/esm2022/lib/workspace/workspace.module.mjs +4 -4
  74. package/esm2022/lib/workspace/workspace.state.mjs +6 -5
  75. package/fesm2022/igo2-integration.mjs +343 -322
  76. package/fesm2022/igo2-integration.mjs.map +1 -1
  77. package/lib/analytics/analytics-listener.service.d.ts +1 -4
  78. package/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.d.ts +1 -1
  79. package/lib/catalog/catalog-library-tool/catalog-library-tool.component.d.ts +4 -1
  80. package/lib/catalog/catalog.state.d.ts +1 -1
  81. package/lib/context/context.directive.d.ts +5 -0
  82. package/lib/context/context.state.d.ts +1 -1
  83. package/lib/context/index.d.ts +1 -5
  84. package/lib/directions/directions-tool/directions-tool.component.d.ts +2 -1
  85. package/lib/environment/environment.interface.d.ts +1 -1
  86. package/lib/filter/spatial-filter-tool/spatial-filter-tool.component.d.ts +1 -1
  87. package/lib/geometry-form/data-issue-reporter-tool/data-issue-reporter-tool.component.d.ts +1 -1
  88. package/lib/geometry-form/geometry-form.module.d.ts +1 -1
  89. package/lib/import-export/import-export-tool/import-export-tool.component.d.ts +1 -1
  90. package/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.d.ts +2 -0
  91. package/lib/map/index.d.ts +1 -7
  92. package/lib/map/map-proximity-tool/map-proximity-tool.component.d.ts +1 -1
  93. package/lib/map/map.directive.d.ts +7 -0
  94. package/lib/search/index.d.ts +0 -3
  95. package/lib/search/query.state.d.ts +2 -2
  96. package/lib/search/search-results-tool/search-results-tool.component.d.ts +2 -1
  97. package/lib/search/search.state.d.ts +2 -2
  98. package/lib/tool/tool.state.d.ts +1 -1
  99. package/lib/workspace/shared/edition-actions.service.d.ts +3 -2
  100. package/lib/workspace/shared/feature-actions.service.d.ts +1 -1
  101. package/lib/workspace/shared/wfs-actions.service.d.ts +3 -2
  102. package/lib/workspace/shared/workspace.utils.d.ts +2 -1
  103. package/lib/workspace/workspace.state.d.ts +3 -1
  104. package/package.json +4 -4
@@ -7,11 +7,12 @@ import { MatFormFieldModule } from '@angular/material/form-field';
7
7
  import { MatIconModule } from '@angular/material/icon';
8
8
  import { MatInputModule } from '@angular/material/input';
9
9
  import { MatRadioModule } from '@angular/material/radio';
10
- import { EntityTableComponent, ToolComponent } from '@igo2/common';
10
+ import { EntityTableComponent } from '@igo2/common/entity';
11
+ import { ToolComponent } from '@igo2/common/tool';
11
12
  import { LanguageService } from '@igo2/core/language';
13
+ import { IgoLanguageModule } from '@igo2/core/language';
12
14
  import { MessageService } from '@igo2/core/message';
13
15
  import { Clipboard, NumberUtils } from '@igo2/utils';
14
- import { TranslateModule } from '@ngx-translate/core';
15
16
  import { MapProximityState } from '../map-proximity.state';
16
17
  import { MapState } from '../map.state';
17
18
  import * as i0 from "@angular/core";
@@ -111,14 +112,14 @@ let MapProximityToolComponent = class MapProximityToolComponent {
111
112
  this.messageService.success('igo.integration.map-proximity-tool.copyMsg', 'igo.integration.map-proximity-tool.copyTitle');
112
113
  }
113
114
  }
114
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MapProximityToolComponent, deps: [{ token: i1.MapState }, { token: i2.MapProximityState }, { token: i3.LanguageService }, { token: i4.MessageService }], target: i0.ɵɵFactoryTarget.Component });
115
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: MapProximityToolComponent, isStandalone: true, selector: "igo-map-proximity-tool", viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true, static: true }], ngImport: i0, template: "<igo-entity-table\n #table\n class=\"table-compact\"\n [store]=\"mapProximityState.proximityFeatureStore\"\n [template]=\"tableTemplate\"\n></igo-entity-table>\n<br />\n<mat-form-field\n *ngIf=\"mapProximityState.currentPositionCoordinate$ | async as coord\"\n class=\"coordinates\"\n>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"'igo.integration.map-proximity-tool.lon' | translate\"\n [value]=\"coord[0]\"\n ></textarea>\n</mat-form-field>\n<mat-form-field\n *ngIf=\"mapProximityState.currentPositionCoordinate$ | async as coord2\"\n class=\"coordinates2\"\n>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"'igo.integration.map-proximity-tool.lat' | translate\"\n [value]=\"coord2[1]\"\n ></textarea>\n</mat-form-field>\n\n<button\n *ngIf=\"\n (mapProximityState.currentPositionCoordinate$ | async) &&\n (mapProximityState.currentPositionCoordinate$ | async).length\n \"\n mat-icon-button\n (click)=\"copyTextToClipboard()\"\n>\n <mat-icon>content_copy</mat-icon>\n</button>\n<div class=\"title-container\">\n <mat-label class=\"title mat-typography\">{{\n 'igo.integration.map-proximity-tool.method' | translate\n }}</mat-label>\n</div>\n<div class=\"igo-input-container mat-typography\">\n <mat-radio-group (change)=\"onLocationTypeChange($event)\">\n <mat-radio-button\n [checked]=\"\n (mapProximityState.proximitylocationType$ | async) === 'geolocation'\n \"\n value=\"geolocation\"\n >{{\n 'igo.integration.map-proximity-tool.geolocation' | translate\n }}</mat-radio-button\n >\n <mat-radio-button\n [checked]=\"\n (mapProximityState.proximitylocationType$ | async) === 'mapCenter'\n \"\n value=\"mapCenter\"\n >{{\n 'igo.integration.map-proximity-tool.mapCenter' | translate\n }}</mat-radio-button\n >\n </mat-radio-group>\n</div>\n\n<div class=\"radius-unit\">\n <mat-form-field class=\"radius-field\" floatLabel=\"always\">\n <mat-label>{{\n 'igo.integration.map-proximity-tool.radiusM' | translate\n }}</mat-label>\n <input\n type=\"number\"\n pattern=\"[0-9]*\"\n [(ngModel)]=\"maxDistance\"\n matInput\n placeholder=\"{{\n 'igo.integration.map-proximity-tool.radiusM' | translate\n }}\"\n />\n </mat-form-field>\n</div>\n", styles: [":host .table-compact{height:auto}:host .table-compact ::ng-deep .mat-mdc-header-cell.mat-column-selectionCheckbox{width:52px}:host textarea{resize:none}:host mat-form-field{padding:10px 15px}:host mat-form-field.coordinates{width:110px}:host mat-form-field.coordinates2{width:100px;padding:0 10px 0 3px}:host mat-form-field.igo-input-container{width:60%;padding:0 15px}:host .radius-unit{display:flex;width:90%;margin-left:2px;padding:5px}:host .radius-unit mat-form-field.radius-field{display:flex;flex-flow:column nowrap;width:100%}:host .title-container{padding:10px}:host .title{margin-left:5px;font-size:initial}:host .mat-mdc-radio-group{display:flex;flex-direction:column}:host .mat-mdc-radio-button{display:inline-flex;position:relative;margin-left:12px}\n"], dependencies: [{ kind: "component", type: EntityTableComponent, selector: "igo-entity-table", inputs: ["store", "paginator", "template", "scrollBehavior", "sortNullsFirst", "withPaginator", "paginatorOptions"], outputs: ["entityClick", "entitySelectChange", "entitySortChange"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i9.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i9.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i10.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }] });
115
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MapProximityToolComponent, deps: [{ token: i1.MapState }, { token: i2.MapProximityState }, { token: i3.LanguageService }, { token: i4.MessageService }], target: i0.ɵɵFactoryTarget.Component });
116
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: MapProximityToolComponent, isStandalone: true, selector: "igo-map-proximity-tool", viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true, static: true }], ngImport: i0, template: "<igo-entity-table\n #table\n class=\"table-compact\"\n [store]=\"mapProximityState.proximityFeatureStore\"\n [template]=\"tableTemplate\"\n></igo-entity-table>\n<br />\n<mat-form-field\n *ngIf=\"mapProximityState.currentPositionCoordinate$ | async as coord\"\n class=\"coordinates\"\n>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"'igo.integration.map-proximity-tool.lon' | translate\"\n [value]=\"coord[0]\"\n ></textarea>\n</mat-form-field>\n<mat-form-field\n *ngIf=\"mapProximityState.currentPositionCoordinate$ | async as coord2\"\n class=\"coordinates2\"\n>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"'igo.integration.map-proximity-tool.lat' | translate\"\n [value]=\"coord2[1]\"\n ></textarea>\n</mat-form-field>\n\n<button\n *ngIf=\"\n (mapProximityState.currentPositionCoordinate$ | async) &&\n (mapProximityState.currentPositionCoordinate$ | async).length\n \"\n mat-icon-button\n (click)=\"copyTextToClipboard()\"\n>\n <mat-icon>content_copy</mat-icon>\n</button>\n<div class=\"title-container\">\n <mat-label class=\"title mat-typography\">{{\n 'igo.integration.map-proximity-tool.method' | translate\n }}</mat-label>\n</div>\n<div class=\"igo-input-container mat-typography\">\n <mat-radio-group (change)=\"onLocationTypeChange($event)\">\n <mat-radio-button\n [checked]=\"\n (mapProximityState.proximitylocationType$ | async) === 'geolocation'\n \"\n value=\"geolocation\"\n >{{\n 'igo.integration.map-proximity-tool.geolocation' | translate\n }}</mat-radio-button\n >\n <mat-radio-button\n [checked]=\"\n (mapProximityState.proximitylocationType$ | async) === 'mapCenter'\n \"\n value=\"mapCenter\"\n >{{\n 'igo.integration.map-proximity-tool.mapCenter' | translate\n }}</mat-radio-button\n >\n </mat-radio-group>\n</div>\n\n<div class=\"radius-unit\">\n <mat-form-field class=\"radius-field\" floatLabel=\"always\">\n <mat-label>{{\n 'igo.integration.map-proximity-tool.radiusM' | translate\n }}</mat-label>\n <input\n type=\"number\"\n pattern=\"[0-9]*\"\n [(ngModel)]=\"maxDistance\"\n matInput\n placeholder=\"{{\n 'igo.integration.map-proximity-tool.radiusM' | translate\n }}\"\n />\n </mat-form-field>\n</div>\n", styles: [":host .table-compact{height:auto}:host .table-compact ::ng-deep .mat-mdc-header-cell.mat-column-selectionCheckbox{width:52px}:host textarea{resize:none}:host mat-form-field{padding:10px 15px}:host mat-form-field.coordinates{width:110px}:host mat-form-field.coordinates2{width:100px;padding:0 10px 0 3px}:host mat-form-field.igo-input-container{width:60%;padding:0 15px}:host .radius-unit{display:flex;width:90%;margin-left:2px;padding:5px}:host .radius-unit mat-form-field.radius-field{display:flex;flex-flow:column nowrap;width:100%}:host .title-container{padding:10px}:host .title{margin-left:5px;font-size:initial}:host .mat-mdc-radio-group{display:flex;flex-direction:column}:host .mat-mdc-radio-button{display:inline-flex;position:relative;margin-left:12px}\n"], dependencies: [{ kind: "component", type: EntityTableComponent, selector: "igo-entity-table", inputs: ["store", "paginator", "template", "scrollBehavior", "sortNullsFirst", "withPaginator", "paginatorOptions"], outputs: ["entityClick", "entitySelectChange", "entitySortChange"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i9.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i9.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i10.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }] });
116
117
  };
117
118
  MapProximityToolComponent = __decorate([
118
119
  ToolComponent({
119
120
  name: 'map-proximity',
120
121
  title: 'igo.integration.tools.closestFeature',
121
- icon: 'output_circle'
122
+ icon: 'radar'
122
123
  })
123
124
  /**
124
125
  * Tool to handle the advanced map tools
@@ -130,7 +131,7 @@ MapProximityToolComponent = __decorate([
130
131
  MessageService])
131
132
  ], MapProximityToolComponent);
132
133
  export { MapProximityToolComponent };
133
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MapProximityToolComponent, decorators: [{
134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MapProximityToolComponent, decorators: [{
134
135
  type: Component,
135
136
  args: [{ selector: 'igo-map-proximity-tool', standalone: true, imports: [
136
137
  EntityTableComponent,
@@ -142,10 +143,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
142
143
  MatRadioModule,
143
144
  FormsModule,
144
145
  AsyncPipe,
145
- TranslateModule
146
+ IgoLanguageModule
146
147
  ], template: "<igo-entity-table\n #table\n class=\"table-compact\"\n [store]=\"mapProximityState.proximityFeatureStore\"\n [template]=\"tableTemplate\"\n></igo-entity-table>\n<br />\n<mat-form-field\n *ngIf=\"mapProximityState.currentPositionCoordinate$ | async as coord\"\n class=\"coordinates\"\n>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"'igo.integration.map-proximity-tool.lon' | translate\"\n [value]=\"coord[0]\"\n ></textarea>\n</mat-form-field>\n<mat-form-field\n *ngIf=\"mapProximityState.currentPositionCoordinate$ | async as coord2\"\n class=\"coordinates2\"\n>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"'igo.integration.map-proximity-tool.lat' | translate\"\n [value]=\"coord2[1]\"\n ></textarea>\n</mat-form-field>\n\n<button\n *ngIf=\"\n (mapProximityState.currentPositionCoordinate$ | async) &&\n (mapProximityState.currentPositionCoordinate$ | async).length\n \"\n mat-icon-button\n (click)=\"copyTextToClipboard()\"\n>\n <mat-icon>content_copy</mat-icon>\n</button>\n<div class=\"title-container\">\n <mat-label class=\"title mat-typography\">{{\n 'igo.integration.map-proximity-tool.method' | translate\n }}</mat-label>\n</div>\n<div class=\"igo-input-container mat-typography\">\n <mat-radio-group (change)=\"onLocationTypeChange($event)\">\n <mat-radio-button\n [checked]=\"\n (mapProximityState.proximitylocationType$ | async) === 'geolocation'\n \"\n value=\"geolocation\"\n >{{\n 'igo.integration.map-proximity-tool.geolocation' | translate\n }}</mat-radio-button\n >\n <mat-radio-button\n [checked]=\"\n (mapProximityState.proximitylocationType$ | async) === 'mapCenter'\n \"\n value=\"mapCenter\"\n >{{\n 'igo.integration.map-proximity-tool.mapCenter' | translate\n }}</mat-radio-button\n >\n </mat-radio-group>\n</div>\n\n<div class=\"radius-unit\">\n <mat-form-field class=\"radius-field\" floatLabel=\"always\">\n <mat-label>{{\n 'igo.integration.map-proximity-tool.radiusM' | translate\n }}</mat-label>\n <input\n type=\"number\"\n pattern=\"[0-9]*\"\n [(ngModel)]=\"maxDistance\"\n matInput\n placeholder=\"{{\n 'igo.integration.map-proximity-tool.radiusM' | translate\n }}\"\n />\n </mat-form-field>\n</div>\n", styles: [":host .table-compact{height:auto}:host .table-compact ::ng-deep .mat-mdc-header-cell.mat-column-selectionCheckbox{width:52px}:host textarea{resize:none}:host mat-form-field{padding:10px 15px}:host mat-form-field.coordinates{width:110px}:host mat-form-field.coordinates2{width:100px;padding:0 10px 0 3px}:host mat-form-field.igo-input-container{width:60%;padding:0 15px}:host .radius-unit{display:flex;width:90%;margin-left:2px;padding:5px}:host .radius-unit mat-form-field.radius-field{display:flex;flex-flow:column nowrap;width:100%}:host .title-container{padding:10px}:host .title{margin-left:5px;font-size:initial}:host .mat-mdc-radio-group{display:flex;flex-direction:column}:host .mat-mdc-radio-button{display:inline-flex;position:relative;margin-left:12px}\n"] }]
147
148
  }], ctorParameters: () => [{ type: i1.MapState }, { type: i2.MapProximityState }, { type: i3.LanguageService }, { type: i4.MessageService }], propDecorators: { table: [{
148
149
  type: ViewChild,
149
150
  args: ['table', { static: true }]
150
151
  }] } });
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXByb3hpbWl0eS10b29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1wcm94aW1pdHktdG9vbC9tYXAtcHJveGltaXR5LXRvb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9tYXAvbWFwLXByb3hpbWl0eS10b29sL21hcC1wcm94aW1pdHktdG9vbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBa0IsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFekUsT0FBTyxFQUNMLG9CQUFvQixFQUVwQixhQUFhLEVBQ2QsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1B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YyxzaUJBQ2QsV0FBVywwNkJBQ1gsU0FBUyw2Q0FDVCxlQUFlOztBQUdOLHlCQUF5QjtJQTFCckMsYUFBYSxDQUFDO1FBQ2IsSUFBSSxFQUFFLGVBQWU7UUFDckIsS0FBSyxFQUFFLHNDQUFzQztRQUM3QyxJQUFJLEVBQUUsZUFBZTtLQUN0QixDQUFDO0lBQ0Y7O09BRUc7O3FDQTBDa0IsUUFBUTtRQUNDLGlCQUFpQjtRQUNsQixlQUFlO1FBQ2hCLGNBQWM7R0ExQjdCLHlCQUF5QixDQXVHckM7OzJGQXZHWSx5QkFBeUI7a0JBbEJyQyxTQUFTOytCQUNFLHdCQUF3QixjQUd0QixJQUFJLFdBQ1A7d0JBQ1Asb0JBQW9CO3dCQUNwQixJQUFJO3dCQUNKLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxXQUFXO3dCQUNYLFNBQVM7d0JBQ1QsZUFBZTtxQkFDaEI7d0tBSXFDLEtBQUs7c0JBQTFDLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRSYWRpb0NoYW5nZSwgTWF0UmFkaW9Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9yYWRpbyc7XG5cbmltcG9ydCB7XG4gIEVudGl0eVRhYmxlQ29tcG9uZW50LFxuICBFbnRpdHlUYWJsZVRlbXBsYXRlLFxuICBUb29sQ29tcG9uZW50XG59IGZyb20gJ0BpZ28yL2NvbW1vbic7XG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9tZXNzYWdlJztcbmltcG9ydCB7IEZlYXR1cmUsIElnb01hcCB9IGZyb20gJ0BpZ28yL2dlbyc7XG5pbXBvcnQgeyBDbGlwYm9hcmQsIE51bWJlclV0aWxzIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBNYXBQcm94aW1pdHlTdGF0ZSB9IGZyb20gJy4uL21hcC1wcm94aW1pdHkuc3RhdGUnO1xuaW1wb3J0IHsgTWFwU3RhdGUgfSBmcm9tICcuLi9tYXAuc3RhdGUnO1xuXG5AVG9vbENvbXBvbmVudCh7XG4gIG5hbWU6ICdtYXAtcHJveGltaXR5JyxcbiAgdGl0bGU6ICdpZ28uaW50ZWdyYXRpb24udG9vbHMuY2xvc2VzdEZlYXR1cmUnLFxuICBpY29uOiAnb3V0cHV0X2NpcmNsZSdcbn0pXG4vKipcbiAqIFRvb2wgdG8gaGFuZGxlIHRoZSBhZHZhbmNlZCBtYXAgdG9vbHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWdvLW1hcC1wcm94aW1pdHktdG9vbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXAtcHJveGltaXR5LXRvb2wuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYXAtcHJveGltaXR5LXRvb2wuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEVudGl0eVRhYmxlQ29tcG9uZW50LFxuICAgIE5nSWYsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdFJhZGlvTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBUcmFuc2xhdGVNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBNYXBQcm94aW1pdHlUb29sQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHN1YnMkJDogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgQFZpZXdDaGlsZCgndGFibGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0YWJsZTogRW50aXR5VGFibGVDb21wb25lbnQ7XG5cbiAgZ2V0IG1heERpc3RhbmNlKCkge1xuICAgIHJldHVybiB0aGlzLm1hcFByb3hpbWl0eVN0YXRlLnByb3hpbWl0eVJhZGl1c1ZhbHVlJC52YWx1ZTtcbiAgfVxuICBzZXQgbWF4RGlzdGFuY2UodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMubWFwUHJveGltaXR5U3RhdGUucHJveGltaXR5UmFkaXVzVmFsdWUkLm5leHQodmFsdWUpO1xuICB9XG5cbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xuICAgIHJldHVybiB0aGlzLm1hcFN0YXRlLm1hcDtcbiAgfVxuICBwdWJsaWMgdXNlckRlZmluZWRNYXBDZW50ZXI6IGJvb2xlYW47XG4gIHB1YmxpYyB1c2VyRGVmaW5lZEZvbGxvd1Bvc2l0aW9uOiBib29sZWFuO1xuICAvKipcbiAgICogVGFibGUgdGVtcGxhdGVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgdGFibGVUZW1wbGF0ZTogRW50aXR5VGFibGVUZW1wbGF0ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbWFwU3RhdGU6IE1hcFN0YXRlLFxuICAgIHB1YmxpYyBtYXBQcm94aW1pdHlTdGF0ZTogTWFwUHJveGltaXR5U3RhdGUsXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcbiAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZVxuICApIHtcbiAgICB0aGlzLnRhYmxlVGVtcGxhdGUgPSB7XG4gICAgICBzZWxlY3Rpb246IHRydWUsXG4gICAgICBzZWxlY3RNYW55OiBmYWxzZSxcbiAgICAgIHNlbGVjdGlvbkNoZWNrYm94OiBmYWxzZSxcbiAgICAgIHNvcnQ6IHRydWUsXG4gICAgICBjb2x1bW5zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnZWxlbWVudCcsXG4gICAgICAgICAgdGl0bGU6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgJ2lnby5pbnRlZ3JhdGlvbi5tYXAtcHJveGltaXR5LXRvb2wuZmVhdHVyZSdcbiAgICAgICAgICApLFxuICAgICAgICAgIHZhbHVlQWNjZXNzb3I6IChsb2NhbEZlYXR1cmU6IEZlYXR1cmUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBsb2NhbEZlYXR1cmUucHJvcGVydGllcy5lbGVtZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdkaXN0YW5jZScsXG4gICAgICAgICAgdGl0bGU6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgJ2lnby5pbnRlZ3JhdGlvbi5tYXAtcHJveGltaXR5LXRvb2wuZGlzdGFuY2UnXG4gICAgICAgICAgKSxcbiAgICAgICAgICB2YWx1ZUFjY2Vzc29yOiAobG9jYWxGZWF0dXJlOiBGZWF0dXJlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYCR7TnVtYmVyVXRpbHMucm91bmRUb05EZWNpbWFsKFxuICAgICAgICAgICAgICBsb2NhbEZlYXR1cmUucHJvcGVydGllcy5kaXN0YW5jZSxcbiAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgKX1tYDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tYXBQcm94aW1pdHlTdGF0ZS5lbmFibGVkJC5uZXh0KHRydWUpO1xuICAgIHRoaXMudXNlckRlZmluZWRGb2xsb3dQb3NpdGlvbiA9XG4gICAgICB0aGlzLm1hcC5nZW9sb2NhdGlvbkNvbnRyb2xsZXIuZm9sbG93UG9zaXRpb24gPT09IHRydWU7XG4gICAgdGhpcy51c2VyRGVmaW5lZE1hcENlbnRlciA9IHRoaXMubWFwLm1hcENlbnRlciQudmFsdWUgPT09IHRydWU7XG5cbiAgICB0aGlzLnN1YnMkJC5wdXNoKFxuICAgICAgdGhpcy5tYXBQcm94aW1pdHlTdGF0ZS5wcm94aW1pdHlsb2NhdGlvblR5cGUkLnN1YnNjcmliZSgodikgPT4ge1xuICAgICAgICB0aGlzLm1hcC5tYXBDZW50ZXIkLm5leHQodiAhPT0gJ2dlb2xvY2F0aW9uJyk7XG4gICAgICAgIGlmICh2ID09PSAnZ2VvbG9jYXRpb24nKSB7XG4gICAgICAgICAgdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLmZvbGxvd1Bvc2l0aW9uID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm1hcC5nZW9sb2NhdGlvbkNvbnRyb2xsZXIuZm9sbG93UG9zaXRpb24gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5tYXBQcm94aW1pdHlTdGF0ZS5lbmFibGVkJC5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLm1hcC5tYXBDZW50ZXIkLm5leHQodGhpcy51c2VyRGVmaW5lZE1hcENlbnRlcik7XG4gICAgdGhpcy5zdWJzJCQubWFwKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgIHRoaXMubWFwLmdlb2xvY2F0aW9uQ29udHJvbGxlci5mb2xsb3dQb3NpdGlvbiA9XG4gICAgICB0aGlzLnVzZXJEZWZpbmVkRm9sbG93UG9zaXRpb247XG4gIH1cblxuICBvbkxvY2F0aW9uVHlwZUNoYW5nZShlOiBNYXRSYWRpb0NoYW5nZSkge1xuICAgIHRoaXMubWFwUHJveGltaXR5U3RhdGUucHJveGltaXR5bG9jYXRpb25UeXBlJC5uZXh0KGUudmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvcHkgdGhlIGNvb3JkaW5hdGVzIHRvIGEgY2xpcGJvYXJkXG4gICAqL1xuICBjb3B5VGV4dFRvQ2xpcGJvYXJkKCk6IHZvaWQge1xuICAgIGNvbnN0IHN1Y2Nlc3NmdWwgPSBDbGlwYm9hcmQuY29weShcbiAgICAgIHRoaXMubWFwUHJveGltaXR5U3RhdGUuY3VycmVudFBvc2l0aW9uQ29vcmRpbmF0ZSQ/LnZhbHVlLnRvU3RyaW5nKClcbiAgICApO1xuICAgIGlmIChzdWNjZXNzZnVsKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnN1Y2Nlc3MoXG4gICAgICAgICdpZ28uaW50ZWdyYXRpb24ubWFwLXByb3hpbWl0eS10b29sLmNvcHlNc2cnLFxuICAgICAgICAnaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5jb3B5VGl0bGUnXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIiwiPGlnby1lbnRpdHktdGFibGVcbiAgI3RhYmxlXG4gIGNsYXNzPVwidGFibGUtY29tcGFjdFwiXG4gIFtzdG9yZV09XCJtYXBQcm94aW1pdHlTdGF0ZS5wcm94aW1pdHlGZWF0dXJlU3RvcmVcIlxuICBbdGVtcGxhdGVdPVwidGFibGVUZW1wbGF0ZVwiXG4+PC9pZ28tZW50aXR5LXRhYmxlPlxuPGJyIC8+XG48bWF0LWZvcm0tZmllbGRcbiAgKm5nSWY9XCJtYXBQcm94aW1pdHlTdGF0ZS5jdXJyZW50UG9zaXRpb25Db29yZGluYXRlJCB8IGFzeW5jIGFzIGNvb3JkXCJcbiAgY2xhc3M9XCJjb29yZGluYXRlc1wiXG4+XG4gIDx0ZXh0YXJlYVxuICAgICN0ZXh0QXJlYVxuICAgIG1hdElucHV0XG4gICAgcmVhZG9ubHlcbiAgICByb3dzPVwiMVwiXG4gICAgW3BsYWNlaG9sZGVyXT1cIidpZ28uaW50ZWdyYXRpb24ubWFwLXByb3hpbWl0eS10b29sLmxvbicgfCB0cmFuc2xhdGVcIlxuICAgIFt2YWx1ZV09XCJjb29yZFswXVwiXG4gID48L3RleHRhcmVhPlxuPC9tYXQtZm9ybS1maWVsZD5cbjxtYXQtZm9ybS1maWVsZFxuICAqbmdJZj1cIm1hcFByb3hpbWl0eVN0YXRlLmN1cnJlbnRQb3NpdGlvbkNvb3JkaW5hdGUkIHwgYXN5bmMgYXMgY29vcmQyXCJcbiAgY2xhc3M9XCJjb29yZGluYXRlczJcIlxuPlxuICA8dGV4dGFyZWFcbiAgICAjdGV4dEFyZWFcbiAgICBtYXRJbnB1dFxuICAgIHJlYWRvbmx5XG4gICAgcm93cz1cIjFcIlxuICAgIFtwbGFjZWhvbGRlcl09XCInaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5sYXQnIHwgdHJhbnNsYXRlXCJcbiAgICBbdmFsdWVdPVwiY29vcmQyWzFdXCJcbiAgPjwvdGV4dGFyZWE+XG48L21hdC1mb3JtLWZpZWxkPlxuXG48YnV0dG9uXG4gICpuZ0lmPVwiXG4gICAgKG1hcFByb3hpbWl0eVN0YXRlLmN1cnJlbnRQb3NpdGlvbkNvb3JkaW5hdGUkIHwgYXN5bmMpICYmXG4gICAgKG1hcFByb3hpbWl0eVN0YXRlLmN1cnJlbnRQb3NpdGlvbkNvb3JkaW5hdGUkIHwgYXN5bmMpLmxlbmd0aFxuICBcIlxuICBtYXQtaWNvbi1idXR0b25cbiAgKGNsaWNrKT1cImNvcHlUZXh0VG9DbGlwYm9hcmQoKVwiXG4+XG4gIDxtYXQtaWNvbj5jb250ZW50X2NvcHk8L21hdC1pY29uPlxuPC9idXR0b24+XG48ZGl2IGNsYXNzPVwidGl0bGUtY29udGFpbmVyXCI+XG4gIDxtYXQtbGFiZWwgY2xhc3M9XCJ0aXRsZSBtYXQtdHlwb2dyYXBoeVwiPnt7XG4gICAgJ2lnby5pbnRlZ3JhdGlvbi5tYXAtcHJveGltaXR5LXRvb2wubWV0aG9kJyB8IHRyYW5zbGF0ZVxuICB9fTwvbWF0LWxhYmVsPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiaWdvLWlucHV0LWNvbnRhaW5lciBtYXQtdHlwb2dyYXBoeVwiPlxuICA8bWF0LXJhZGlvLWdyb3VwIChjaGFuZ2UpPVwib25Mb2NhdGlvblR5cGVDaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDxtYXQtcmFkaW8tYnV0dG9uXG4gICAgICBbY2hlY2tlZF09XCJcbiAgICAgICAgKG1hcFByb3hpbWl0eVN0YXRlLnByb3hpbWl0eWxvY2F0aW9uVHlwZSQgfCBhc3luYykgPT09ICdnZW9sb2NhdGlvbidcbiAgICAgIFwiXG4gICAgICB2YWx1ZT1cImdlb2xvY2F0aW9uXCJcbiAgICAgID57e1xuICAgICAgICAnaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5nZW9sb2NhdGlvbicgfCB0cmFuc2xhdGVcbiAgICAgIH19PC9tYXQtcmFkaW8tYnV0dG9uXG4gICAgPlxuICAgIDxtYXQtcmFkaW8tYnV0dG9uXG4gICAgICBbY2hlY2tlZF09XCJcbiAgICAgICAgKG1hcFByb3hpbWl0eVN0YXRlLnByb3hpbWl0eWxvY2F0aW9uVHlwZSQgfCBhc3luYykgPT09ICdtYXBDZW50ZXInXG4gICAgICBcIlxuICAgICAgdmFsdWU9XCJtYXBDZW50ZXJcIlxuICAgICAgPnt7XG4gICAgICAgICdpZ28uaW50ZWdyYXRpb24ubWFwLXByb3hpbWl0eS10b29sLm1hcENlbnRlcicgfCB0cmFuc2xhdGVcbiAgICAgIH19PC9tYXQtcmFkaW8tYnV0dG9uXG4gICAgPlxuICA8L21hdC1yYWRpby1ncm91cD5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwicmFkaXVzLXVuaXRcIj5cbiAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwicmFkaXVzLWZpZWxkXCIgZmxvYXRMYWJlbD1cImFsd2F5c1wiPlxuICAgIDxtYXQtbGFiZWw+e3tcbiAgICAgICdpZ28uaW50ZWdyYXRpb24ubWFwLXByb3hpbWl0eS10b29sLnJhZGl1c00nIHwgdHJhbnNsYXRlXG4gICAgfX08L21hdC1sYWJlbD5cbiAgICA8aW5wdXRcbiAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgcGF0dGVybj1cIlswLTldKlwiXG4gICAgICBbKG5nTW9kZWwpXT1cIm1heERpc3RhbmNlXCJcbiAgICAgIG1hdElucHV0XG4gICAgICBwbGFjZWhvbGRlcj1cInt7XG4gICAgICAgICdpZ28uaW50ZWdyYXRpb24ubWFwLXByb3hpbWl0eS10b29sLnJhZGl1c00nIHwgdHJhbnNsYXRlXG4gICAgICB9fVwiXG4gICAgLz5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbjwvZGl2PlxuIl19
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXByb3hpbWl0eS10b29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1wcm94aW1pdHktdG9vbC9tYXAtcHJveGltaXR5LXRvb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9tYXAvbWFwLXByb3hpbWl0eS10b29sL21hcC1wcm94aW1pdHktdG9vbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBa0IsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFekUsT0FBTyxFQUFFLG9CQUFvQixFQUF1QixNQUFNLHFCQUFxQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFD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LGNBQWMsMFdBQ2QsZUFBZSwySUFDZixhQUFhLG1MQUNiLGNBQWMsc2lCQUNkLFdBQVcsMDZCQUNYLFNBQVMsNkNBQ1QsaUJBQWlCOztBQUdSLHlCQUF5QjtJQTFCckMsYUFBYSxDQUFDO1FBQ2IsSUFBSSxFQUFFLGVBQWU7UUFDckIsS0FBSyxFQUFFLHNDQUFzQztRQUM3QyxJQUFJLEVBQUUsT0FBTztLQUNkLENBQUM7SUFDRjs7T0FFRzs7cUNBMENrQixRQUFRO1FBQ0MsaUJBQWlCO1FBQ2xCLGVBQWU7UUFDaEIsY0FBYztHQTFCN0IseUJBQXlCLENBdUdyQzs7MkZBdkdZLHlCQUF5QjtrQkFsQnJDLFNBQVM7K0JBQ0Usd0JBQXdCLGNBR3RCLElBQUksV0FDUDt3QkFDUCxvQkFBb0I7d0JBQ3BCLElBQUk7d0JBQ0osa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixjQUFjO3dCQUNkLFdBQVc7d0JBQ1gsU0FBUzt3QkFDVCxpQkFBaUI7cUJBQ2xCO3dLQUlxQyxLQUFLO3NCQUExQyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0UmFkaW9DaGFuZ2UsIE1hdFJhZGlvTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xuXG5pbXBvcnQgeyBFbnRpdHlUYWJsZUNvbXBvbmVudCwgRW50aXR5VGFibGVUZW1wbGF0ZSB9IGZyb20gJ0BpZ28yL2NvbW1vbi9lbnRpdHknO1xuaW1wb3J0IHsgVG9vbENvbXBvbmVudCB9IGZyb20gJ0BpZ28yL2NvbW1vbi90b29sJztcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuaW1wb3J0IHsgSWdvTGFuZ3VhZ2VNb2R1bGUgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9tZXNzYWdlJztcbmltcG9ydCB7IEZlYXR1cmUsIElnb01hcCB9IGZyb20gJ0BpZ28yL2dlbyc7XG5pbXBvcnQgeyBDbGlwYm9hcmQsIE51bWJlclV0aWxzIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTWFwUHJveGltaXR5U3RhdGUgfSBmcm9tICcuLi9tYXAtcHJveGltaXR5LnN0YXRlJztcbmltcG9ydCB7IE1hcFN0YXRlIH0gZnJvbSAnLi4vbWFwLnN0YXRlJztcblxuQFRvb2xDb21wb25lbnQoe1xuICBuYW1lOiAnbWFwLXByb3hpbWl0eScsXG4gIHRpdGxlOiAnaWdvLmludGVncmF0aW9uLnRvb2xzLmNsb3Nlc3RGZWF0dXJlJyxcbiAgaWNvbjogJ3JhZGFyJ1xufSlcbi8qKlxuICogVG9vbCB0byBoYW5kbGUgdGhlIGFkdmFuY2VkIG1hcCB0b29sc1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tbWFwLXByb3hpbWl0eS10b29sJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hcC1wcm94aW1pdHktdG9vbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21hcC1wcm94aW1pdHktdG9vbC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRW50aXR5VGFibGVDb21wb25lbnQsXG4gICAgTmdJZixcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0UmFkaW9Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQXN5bmNQaXBlLFxuICAgIElnb0xhbmd1YWdlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTWFwUHJveGltaXR5VG9vbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBzdWJzJCQ6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJywgeyBzdGF0aWM6IHRydWUgfSkgdGFibGU6IEVudGl0eVRhYmxlQ29tcG9uZW50O1xuXG4gIGdldCBtYXhEaXN0YW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tYXBQcm94aW1pdHlTdGF0ZS5wcm94aW1pdHlSYWRpdXNWYWx1ZSQudmFsdWU7XG4gIH1cbiAgc2V0IG1heERpc3RhbmNlKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLm1hcFByb3hpbWl0eVN0YXRlLnByb3hpbWl0eVJhZGl1c1ZhbHVlJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcbiAgICByZXR1cm4gdGhpcy5tYXBTdGF0ZS5tYXA7XG4gIH1cbiAgcHVibGljIHVzZXJEZWZpbmVkTWFwQ2VudGVyOiBib29sZWFuO1xuICBwdWJsaWMgdXNlckRlZmluZWRGb2xsb3dQb3NpdGlvbjogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRhYmxlIHRlbXBsYXRlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHRhYmxlVGVtcGxhdGU6IEVudGl0eVRhYmxlVGVtcGxhdGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG1hcFN0YXRlOiBNYXBTdGF0ZSxcbiAgICBwdWJsaWMgbWFwUHJveGltaXR5U3RhdGU6IE1hcFByb3hpbWl0eVN0YXRlLFxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy50YWJsZVRlbXBsYXRlID0ge1xuICAgICAgc2VsZWN0aW9uOiB0cnVlLFxuICAgICAgc2VsZWN0TWFueTogZmFsc2UsXG4gICAgICBzZWxlY3Rpb25DaGVja2JveDogZmFsc2UsXG4gICAgICBzb3J0OiB0cnVlLFxuICAgICAgY29sdW1uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2VsZW1lbnQnLFxuICAgICAgICAgIHRpdGxlOiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICdpZ28uaW50ZWdyYXRpb24ubWFwLXByb3hpbWl0eS10b29sLmZlYXR1cmUnXG4gICAgICAgICAgKSxcbiAgICAgICAgICB2YWx1ZUFjY2Vzc29yOiAobG9jYWxGZWF0dXJlOiBGZWF0dXJlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxGZWF0dXJlLnByb3BlcnRpZXMuZWxlbWVudDtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnZGlzdGFuY2UnLFxuICAgICAgICAgIHRpdGxlOiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICdpZ28uaW50ZWdyYXRpb24ubWFwLXByb3hpbWl0eS10b29sLmRpc3RhbmNlJ1xuICAgICAgICAgICksXG4gICAgICAgICAgdmFsdWVBY2Nlc3NvcjogKGxvY2FsRmVhdHVyZTogRmVhdHVyZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGAke051bWJlclV0aWxzLnJvdW5kVG9ORGVjaW1hbChcbiAgICAgICAgICAgICAgbG9jYWxGZWF0dXJlLnByb3BlcnRpZXMuZGlzdGFuY2UsXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICl9bWA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubWFwUHJveGltaXR5U3RhdGUuZW5hYmxlZCQubmV4dCh0cnVlKTtcbiAgICB0aGlzLnVzZXJEZWZpbmVkRm9sbG93UG9zaXRpb24gPVxuICAgICAgdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLmZvbGxvd1Bvc2l0aW9uID09PSB0cnVlO1xuICAgIHRoaXMudXNlckRlZmluZWRNYXBDZW50ZXIgPSB0aGlzLm1hcC5tYXBDZW50ZXIkLnZhbHVlID09PSB0cnVlO1xuXG4gICAgdGhpcy5zdWJzJCQucHVzaChcbiAgICAgIHRoaXMubWFwUHJveGltaXR5U3RhdGUucHJveGltaXR5bG9jYXRpb25UeXBlJC5zdWJzY3JpYmUoKHYpID0+IHtcbiAgICAgICAgdGhpcy5tYXAubWFwQ2VudGVyJC5uZXh0KHYgIT09ICdnZW9sb2NhdGlvbicpO1xuICAgICAgICBpZiAodiA9PT0gJ2dlb2xvY2F0aW9uJykge1xuICAgICAgICAgIHRoaXMubWFwLmdlb2xvY2F0aW9uQ29udHJvbGxlci5mb2xsb3dQb3NpdGlvbiA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLmZvbGxvd1Bvc2l0aW9uID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubWFwUHJveGltaXR5U3RhdGUuZW5hYmxlZCQubmV4dChmYWxzZSk7XG4gICAgdGhpcy5tYXAubWFwQ2VudGVyJC5uZXh0KHRoaXMudXNlckRlZmluZWRNYXBDZW50ZXIpO1xuICAgIHRoaXMuc3VicyQkLm1hcCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLm1hcC5nZW9sb2NhdGlvbkNvbnRyb2xsZXIuZm9sbG93UG9zaXRpb24gPVxuICAgICAgdGhpcy51c2VyRGVmaW5lZEZvbGxvd1Bvc2l0aW9uO1xuICB9XG5cbiAgb25Mb2NhdGlvblR5cGVDaGFuZ2UoZTogTWF0UmFkaW9DaGFuZ2UpIHtcbiAgICB0aGlzLm1hcFByb3hpbWl0eVN0YXRlLnByb3hpbWl0eWxvY2F0aW9uVHlwZSQubmV4dChlLnZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb3B5IHRoZSBjb29yZGluYXRlcyB0byBhIGNsaXBib2FyZFxuICAgKi9cbiAgY29weVRleHRUb0NsaXBib2FyZCgpOiB2b2lkIHtcbiAgICBjb25zdCBzdWNjZXNzZnVsID0gQ2xpcGJvYXJkLmNvcHkoXG4gICAgICB0aGlzLm1hcFByb3hpbWl0eVN0YXRlLmN1cnJlbnRQb3NpdGlvbkNvb3JkaW5hdGUkPy52YWx1ZS50b1N0cmluZygpXG4gICAgKTtcbiAgICBpZiAoc3VjY2Vzc2Z1bCkge1xuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKFxuICAgICAgICAnaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5jb3B5TXNnJyxcbiAgICAgICAgJ2lnby5pbnRlZ3JhdGlvbi5tYXAtcHJveGltaXR5LXRvb2wuY29weVRpdGxlJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxpZ28tZW50aXR5LXRhYmxlXG4gICN0YWJsZVxuICBjbGFzcz1cInRhYmxlLWNvbXBhY3RcIlxuICBbc3RvcmVdPVwibWFwUHJveGltaXR5U3RhdGUucHJveGltaXR5RmVhdHVyZVN0b3JlXCJcbiAgW3RlbXBsYXRlXT1cInRhYmxlVGVtcGxhdGVcIlxuPjwvaWdvLWVudGl0eS10YWJsZT5cbjxiciAvPlxuPG1hdC1mb3JtLWZpZWxkXG4gICpuZ0lmPVwibWFwUHJveGltaXR5U3RhdGUuY3VycmVudFBvc2l0aW9uQ29vcmRpbmF0ZSQgfCBhc3luYyBhcyBjb29yZFwiXG4gIGNsYXNzPVwiY29vcmRpbmF0ZXNcIlxuPlxuICA8dGV4dGFyZWFcbiAgICAjdGV4dEFyZWFcbiAgICBtYXRJbnB1dFxuICAgIHJlYWRvbmx5XG4gICAgcm93cz1cIjFcIlxuICAgIFtwbGFjZWhvbGRlcl09XCInaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5sb24nIHwgdHJhbnNsYXRlXCJcbiAgICBbdmFsdWVdPVwiY29vcmRbMF1cIlxuICA+PC90ZXh0YXJlYT5cbjwvbWF0LWZvcm0tZmllbGQ+XG48bWF0LWZvcm0tZmllbGRcbiAgKm5nSWY9XCJtYXBQcm94aW1pdHlTdGF0ZS5jdXJyZW50UG9zaXRpb25Db29yZGluYXRlJCB8IGFzeW5jIGFzIGNvb3JkMlwiXG4gIGNsYXNzPVwiY29vcmRpbmF0ZXMyXCJcbj5cbiAgPHRleHRhcmVhXG4gICAgI3RleHRBcmVhXG4gICAgbWF0SW5wdXRcbiAgICByZWFkb25seVxuICAgIHJvd3M9XCIxXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwiJ2lnby5pbnRlZ3JhdGlvbi5tYXAtcHJveGltaXR5LXRvb2wubGF0JyB8IHRyYW5zbGF0ZVwiXG4gICAgW3ZhbHVlXT1cImNvb3JkMlsxXVwiXG4gID48L3RleHRhcmVhPlxuPC9tYXQtZm9ybS1maWVsZD5cblxuPGJ1dHRvblxuICAqbmdJZj1cIlxuICAgIChtYXBQcm94aW1pdHlTdGF0ZS5jdXJyZW50UG9zaXRpb25Db29yZGluYXRlJCB8IGFzeW5jKSAmJlxuICAgIChtYXBQcm94aW1pdHlTdGF0ZS5jdXJyZW50UG9zaXRpb25Db29yZGluYXRlJCB8IGFzeW5jKS5sZW5ndGhcbiAgXCJcbiAgbWF0LWljb24tYnV0dG9uXG4gIChjbGljayk9XCJjb3B5VGV4dFRvQ2xpcGJvYXJkKClcIlxuPlxuICA8bWF0LWljb24+Y29udGVudF9jb3B5PC9tYXQtaWNvbj5cbjwvYnV0dG9uPlxuPGRpdiBjbGFzcz1cInRpdGxlLWNvbnRhaW5lclwiPlxuICA8bWF0LWxhYmVsIGNsYXNzPVwidGl0bGUgbWF0LXR5cG9ncmFwaHlcIj57e1xuICAgICdpZ28uaW50ZWdyYXRpb24ubWFwLXByb3hpbWl0eS10b29sLm1ldGhvZCcgfCB0cmFuc2xhdGVcbiAgfX08L21hdC1sYWJlbD5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImlnby1pbnB1dC1jb250YWluZXIgbWF0LXR5cG9ncmFwaHlcIj5cbiAgPG1hdC1yYWRpby1ncm91cCAoY2hhbmdlKT1cIm9uTG9jYXRpb25UeXBlQ2hhbmdlKCRldmVudClcIj5cbiAgICA8bWF0LXJhZGlvLWJ1dHRvblxuICAgICAgW2NoZWNrZWRdPVwiXG4gICAgICAgIChtYXBQcm94aW1pdHlTdGF0ZS5wcm94aW1pdHlsb2NhdGlvblR5cGUkIHwgYXN5bmMpID09PSAnZ2VvbG9jYXRpb24nXG4gICAgICBcIlxuICAgICAgdmFsdWU9XCJnZW9sb2NhdGlvblwiXG4gICAgICA+e3tcbiAgICAgICAgJ2lnby5pbnRlZ3JhdGlvbi5tYXAtcHJveGltaXR5LXRvb2wuZ2VvbG9jYXRpb24nIHwgdHJhbnNsYXRlXG4gICAgICB9fTwvbWF0LXJhZGlvLWJ1dHRvblxuICAgID5cbiAgICA8bWF0LXJhZGlvLWJ1dHRvblxuICAgICAgW2NoZWNrZWRdPVwiXG4gICAgICAgIChtYXBQcm94aW1pdHlTdGF0ZS5wcm94aW1pdHlsb2NhdGlvblR5cGUkIHwgYXN5bmMpID09PSAnbWFwQ2VudGVyJ1xuICAgICAgXCJcbiAgICAgIHZhbHVlPVwibWFwQ2VudGVyXCJcbiAgICAgID57e1xuICAgICAgICAnaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5tYXBDZW50ZXInIHwgdHJhbnNsYXRlXG4gICAgICB9fTwvbWF0LXJhZGlvLWJ1dHRvblxuICAgID5cbiAgPC9tYXQtcmFkaW8tZ3JvdXA+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cInJhZGl1cy11bml0XCI+XG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInJhZGl1cy1maWVsZFwiIGZsb2F0TGFiZWw9XCJhbHdheXNcIj5cbiAgICA8bWF0LWxhYmVsPnt7XG4gICAgICAnaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5yYWRpdXNNJyB8IHRyYW5zbGF0ZVxuICAgIH19PC9tYXQtbGFiZWw+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgIHBhdHRlcm49XCJbMC05XSpcIlxuICAgICAgWyhuZ01vZGVsKV09XCJtYXhEaXN0YW5jZVwiXG4gICAgICBtYXRJbnB1dFxuICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xuICAgICAgICAnaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5yYWRpdXNNJyB8IHRyYW5zbGF0ZVxuICAgICAgfX1cIlxuICAgIC8+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cbiJdfQ==
@@ -168,10 +168,10 @@ export class MapProximityState {
168
168
  }
169
169
  return label;
170
170
  }
171
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MapProximityState, deps: [{ token: i1.MapState }, { token: i2.StorageService }], target: i0.ɵɵFactoryTarget.Injectable });
172
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MapProximityState, providedIn: 'root' });
171
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MapProximityState, deps: [{ token: i1.MapState }, { token: i2.StorageService }], target: i0.ɵɵFactoryTarget.Injectable });
172
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MapProximityState, providedIn: 'root' });
173
173
  }
174
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MapProximityState, decorators: [{
174
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MapProximityState, decorators: [{
175
175
  type: Injectable,
176
176
  args: [{
177
177
  providedIn: 'root'
@@ -1,10 +1,10 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
3
3
  import { MatTabsModule } from '@angular/material/tabs';
4
- import { ToolComponent } from '@igo2/common';
4
+ import { ToolComponent } from '@igo2/common/tool';
5
5
  import { ContextListBindingDirective, ContextListComponent } from '@igo2/context';
6
+ import { IgoLanguageModule } from '@igo2/core/language';
6
7
  import { ExportButtonComponent, LayerListBindingDirective, LayerListComponent, LayerListControlsEnum, MetadataButtonComponent, OgcFilterButtonComponent, TimeFilterButtonComponent, TrackFeatureButtonComponent } from '@igo2/geo';
7
- import { TranslateModule } from '@ngx-translate/core';
8
8
  import { ImportExportMode, ImportExportState } from '../../import-export/import-export.state';
9
9
  import { ToolState } from '../../tool/tool.state';
10
10
  import { WorkspaceButtonComponent } from '../../workspace/workspace-button/workspace-button.component';
@@ -68,8 +68,8 @@ let MapToolComponent = class MapToolComponent {
68
68
  this.importExportState.setMode(ImportExportMode.export);
69
69
  this.toolState.toolbox.activateTool('importExport');
70
70
  }
71
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MapToolComponent, deps: [{ token: i1.MapState }, { token: i2.ToolState }, { token: i3.ImportExportState }], target: i0.ɵɵFactoryTarget.Component });
72
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: MapToolComponent, isStandalone: true, selector: "igo-map-tool", inputs: { toggleLegendOnVisibilityChange: "toggleLegendOnVisibilityChange", expandLegendOfVisibleLayers: "expandLegendOfVisibleLayers", updateLegendOnResolutionChange: "updateLegendOnResolutionChange", ogcButton: "ogcButton", timeButton: "timeButton", layerListControls: "layerListControls", queryBadge: "queryBadge" }, ngImport: i0, template: "<mat-tab-group>\n <mat-tab [label]=\"'igo.integration.tools.map' | translate\">\n <igo-layer-list\n [map]=\"map\"\n igoLayerListBinding\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [layerFilterAndSortOptions]=\"layerFilterAndSortOptions\"\n [expandLegendOfVisibleLayers]=\"expandLegendOfVisibleLayers\"\n [toggleLegendOnVisibilityChange]=\"toggleLegendOnVisibilityChange\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\n [queryBadge]=\"queryBadge\"\n >\n <ng-template #igoLayerItemToolbar let-layer=\"layer\">\n <!-- <igo-download-button [layer]=\"layer\"></igo-download-button> -->\n <igo-workspace-button [layer]=\"layer\"></igo-workspace-button>\n <igo-export-button\n [layer]=\"layer\"\n (click)=\"activateExport(layer)\"\n ></igo-export-button>\n <igo-ogc-filter-button\n [header]=\"ogcButton\"\n [layer]=\"layer\"\n ></igo-ogc-filter-button>\n <igo-time-filter-button\n [header]=\"timeButton\"\n [layer]=\"layer\"\n ></igo-time-filter-button>\n <igo-track-feature-button\n [trackFeature]=\"true\"\n [layer]=\"layer\"\n ></igo-track-feature-button>\n <igo-metadata-button [layer]=\"layer\"></igo-metadata-button>\n </ng-template>\n </igo-layer-list>\n </mat-tab>\n\n <mat-tab [label]=\"'igo.integration.tools.contexts' | translate\">\n <igo-context-list igoContextListBinding></igo-context-list>\n </mat-tab>\n</mat-tab-group>\n", styles: [":host ::ng-deep .mat-mdc-tab-body-content{overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i4.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: LayerListComponent, selector: "igo-layer-list", inputs: ["layersAreAllVisible", "ogcButton", "timeButton", "map", "layers", "floatLabel", "layerFilterAndSortOptions", "excludeBaseLayers", "toggleLegendOnVisibilityChange", "expandLegendOfVisibleLayers", "updateLegendOnResolutionChange", "queryBadge"], outputs: ["appliedFilterAndSort"] }, { kind: "directive", type: LayerListBindingDirective, selector: "[igoLayerListBinding]" }, { kind: "component", type: WorkspaceButtonComponent, selector: "igo-workspace-button", inputs: ["layer", "color"] }, { kind: "component", type: ExportButtonComponent, selector: "igo-export-button", inputs: ["layer", "color"] }, { kind: "component", type: OgcFilterButtonComponent, selector: "igo-ogc-filter-button", inputs: ["layer", "map", "color", "header"] }, { kind: "component", type: TimeFilterButtonComponent, selector: "igo-time-filter-button", inputs: ["layer", "map", "color", "header"] }, { kind: "component", type: TrackFeatureButtonComponent, selector: "igo-track-feature-button", inputs: ["layer", "trackFeature"] }, { kind: "component", type: MetadataButtonComponent, selector: "igo-metadata-button", inputs: ["layer", "color"] }, { kind: "component", type: ContextListComponent, selector: "igo-context-list", inputs: ["contexts", "selectedContext", "map", "defaultContextId", "term"], outputs: ["select", "unselect", "edit", "delete", "save", "clone", "create", "hide", "show", "showHiddenContexts", "favorite", "managePermissions", "manageTools", "filterPermissionsChanged"] }, { kind: "directive", type: ContextListBindingDirective, selector: "[igoContextListBinding]" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
71
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MapToolComponent, deps: [{ token: i1.MapState }, { token: i2.ToolState }, { token: i3.ImportExportState }], target: i0.ɵɵFactoryTarget.Component });
72
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: MapToolComponent, isStandalone: true, selector: "igo-map-tool", inputs: { toggleLegendOnVisibilityChange: "toggleLegendOnVisibilityChange", expandLegendOfVisibleLayers: "expandLegendOfVisibleLayers", updateLegendOnResolutionChange: "updateLegendOnResolutionChange", ogcButton: "ogcButton", timeButton: "timeButton", layerListControls: "layerListControls", queryBadge: "queryBadge" }, ngImport: i0, template: "<mat-tab-group>\n <mat-tab [label]=\"'igo.integration.tools.map' | translate\">\n <igo-layer-list\n [map]=\"map\"\n igoLayerListBinding\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [layerFilterAndSortOptions]=\"layerFilterAndSortOptions\"\n [expandLegendOfVisibleLayers]=\"expandLegendOfVisibleLayers\"\n [toggleLegendOnVisibilityChange]=\"toggleLegendOnVisibilityChange\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\n [queryBadge]=\"queryBadge\"\n >\n <ng-template #igoLayerItemToolbar let-layer=\"layer\">\n <!-- <igo-download-button [layer]=\"layer\"></igo-download-button> -->\n <igo-workspace-button [layer]=\"layer\"></igo-workspace-button>\n <igo-export-button\n [layer]=\"layer\"\n (click)=\"activateExport(layer)\"\n ></igo-export-button>\n <igo-ogc-filter-button\n [header]=\"ogcButton\"\n [layer]=\"layer\"\n ></igo-ogc-filter-button>\n <igo-time-filter-button\n [header]=\"timeButton\"\n [layer]=\"layer\"\n ></igo-time-filter-button>\n <igo-track-feature-button\n [trackFeature]=\"true\"\n [layer]=\"layer\"\n ></igo-track-feature-button>\n <igo-metadata-button [layer]=\"layer\"></igo-metadata-button>\n </ng-template>\n </igo-layer-list>\n </mat-tab>\n\n <mat-tab [label]=\"'igo.integration.tools.contexts' | translate\">\n <igo-context-list igoContextListBinding></igo-context-list>\n </mat-tab>\n</mat-tab-group>\n", styles: [":host ::ng-deep .mat-mdc-tab-body-content{overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i4.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: LayerListComponent, selector: "igo-layer-list", inputs: ["layersAreAllVisible", "ogcButton", "timeButton", "map", "layers", "floatLabel", "layerFilterAndSortOptions", "excludeBaseLayers", "toggleLegendOnVisibilityChange", "expandLegendOfVisibleLayers", "updateLegendOnResolutionChange", "queryBadge"], outputs: ["appliedFilterAndSort"] }, { kind: "directive", type: LayerListBindingDirective, selector: "[igoLayerListBinding]" }, { kind: "component", type: WorkspaceButtonComponent, selector: "igo-workspace-button", inputs: ["layer", "color"] }, { kind: "component", type: ExportButtonComponent, selector: "igo-export-button", inputs: ["layer", "color"] }, { kind: "component", type: OgcFilterButtonComponent, selector: "igo-ogc-filter-button", inputs: ["layer", "map", "color", "header"] }, { kind: "component", type: TimeFilterButtonComponent, selector: "igo-time-filter-button", inputs: ["layer", "map", "color", "header"] }, { kind: "component", type: TrackFeatureButtonComponent, selector: "igo-track-feature-button", inputs: ["layer", "trackFeature"] }, { kind: "component", type: MetadataButtonComponent, selector: "igo-metadata-button", inputs: ["layer", "color"] }, { kind: "component", type: ContextListComponent, selector: "igo-context-list", inputs: ["contexts", "selectedContext", "map", "defaultContextId", "term"], outputs: ["select", "unselect", "edit", "delete", "save", "clone", "create", "hide", "show", "showHiddenContexts", "favorite", "managePermissions", "manageTools", "filterPermissionsChanged"] }, { kind: "directive", type: ContextListBindingDirective, selector: "[igoContextListBinding]" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
73
73
  };
74
74
  MapToolComponent = __decorate([
75
75
  ToolComponent({
@@ -82,7 +82,7 @@ MapToolComponent = __decorate([
82
82
  ImportExportState])
83
83
  ], MapToolComponent);
84
84
  export { MapToolComponent };
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MapToolComponent, decorators: [{
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MapToolComponent, decorators: [{
86
86
  type: Component,
87
87
  args: [{ selector: 'igo-map-tool', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
88
88
  MatTabsModule,
@@ -96,7 +96,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
96
96
  MetadataButtonComponent,
97
97
  ContextListComponent,
98
98
  ContextListBindingDirective,
99
- TranslateModule
99
+ IgoLanguageModule
100
100
  ], template: "<mat-tab-group>\n <mat-tab [label]=\"'igo.integration.tools.map' | translate\">\n <igo-layer-list\n [map]=\"map\"\n igoLayerListBinding\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [layerFilterAndSortOptions]=\"layerFilterAndSortOptions\"\n [expandLegendOfVisibleLayers]=\"expandLegendOfVisibleLayers\"\n [toggleLegendOnVisibilityChange]=\"toggleLegendOnVisibilityChange\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\n [queryBadge]=\"queryBadge\"\n >\n <ng-template #igoLayerItemToolbar let-layer=\"layer\">\n <!-- <igo-download-button [layer]=\"layer\"></igo-download-button> -->\n <igo-workspace-button [layer]=\"layer\"></igo-workspace-button>\n <igo-export-button\n [layer]=\"layer\"\n (click)=\"activateExport(layer)\"\n ></igo-export-button>\n <igo-ogc-filter-button\n [header]=\"ogcButton\"\n [layer]=\"layer\"\n ></igo-ogc-filter-button>\n <igo-time-filter-button\n [header]=\"timeButton\"\n [layer]=\"layer\"\n ></igo-time-filter-button>\n <igo-track-feature-button\n [trackFeature]=\"true\"\n [layer]=\"layer\"\n ></igo-track-feature-button>\n <igo-metadata-button [layer]=\"layer\"></igo-metadata-button>\n </ng-template>\n </igo-layer-list>\n </mat-tab>\n\n <mat-tab [label]=\"'igo.integration.tools.contexts' | translate\">\n <igo-context-list igoContextListBinding></igo-context-list>\n </mat-tab>\n</mat-tab-group>\n", styles: [":host ::ng-deep .mat-mdc-tab-body-content{overflow:hidden}\n"] }]
101
101
  }], ctorParameters: () => [{ type: i1.MapState }, { type: i2.ToolState }, { type: i3.ImportExportState }], propDecorators: { toggleLegendOnVisibilityChange: [{
102
102
  type: Input
@@ -113,4 +113,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
113
113
  }], queryBadge: [{
114
114
  type: Input
115
115
  }] } });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXRvb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9tYXAvbWFwLXRvb2wvbWFwLXRvb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9tYXAvbWFwLXRvb2wvbWFwLXRvb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFDTCwyQkFBMkIsRUFDM0Isb0JBQW9CLEVBQ3JCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxxQkFBcUIsRUFJckIseUJBQXlCLEVBQ3pCLGtCQUFrQixFQUNsQixxQkFBcUIsRUFFckIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsMkJBQTJCLEVBQzVCLE1BQU0sV0FBVyxDQUFDO0FBRW5CLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNsQixNQUFNLHlDQUF5QyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFFMUM7O0dBRUc7QUEyQkksSUFBTSxnQkFBZ0IsR0FBdEIsTUFBTSxnQkFBZ0I7SUE2Q2pCO0lB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QjVCLFNBQVM7K0JBQ0UsY0FBYyxtQkFHUCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIseUJBQXlCO3dCQUN6Qix3QkFBd0I7d0JBQ3hCLHFCQUFxQjt3QkFDckIsd0JBQXdCO3dCQUN4Qix5QkFBeUI7d0JBQ3pCLDJCQUEyQjt3QkFDM0IsdUJBQXVCO3dCQUN2QixvQkFBb0I7d0JBQ3BCLDJCQUEyQjt3QkFDM0IsZUFBZTtxQkFDaEI7cUlBR1EsOEJBQThCO3NCQUF0QyxLQUFLO2dCQUVHLDJCQUEyQjtzQkFBbkMsS0FBSztnQkFFRyw4QkFBOEI7c0JBQXRDLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFRhYnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcblxuaW1wb3J0IHsgVG9vbENvbXBvbmVudCB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb250ZXh0TGlzdEJpbmRpbmdEaXJlY3RpdmUsXG4gIENvbnRleHRMaXN0Q29tcG9uZW50XG59IGZyb20gJ0BpZ28yL2NvbnRleHQnO1xuaW1wb3J0IHtcbiAgRXhwb3J0QnV0dG9uQ29tcG9uZW50LFxuICBFeHBvcnRPcHRpb25zLFxuICBJZ29NYXAsXG4gIExheWVyLFxuICBMYXllckxpc3RCaW5kaW5nRGlyZWN0aXZlLFxuICBMYXllckxpc3RDb21wb25lbnQsXG4gIExheWVyTGlzdENvbnRyb2xzRW51bSxcbiAgTGF5ZXJMaXN0Q29udHJvbHNPcHRpb25zLFxuICBNZXRhZGF0YUJ1dHRvbkNvbXBvbmVudCxcbiAgT2djRmlsdGVyQnV0dG9uQ29tcG9uZW50LFxuICBUaW1lRmlsdGVyQnV0dG9uQ29tcG9uZW50LFxuICBUcmFja0ZlYXR1cmVCdXR0b25Db21wb25lbnRcbn0gZnJvbSAnQGlnbzIvZ2VvJztcblxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbmltcG9ydCB7XG4gIEltcG9ydEV4cG9ydE1vZGUsXG4gIEltcG9ydEV4cG9ydFN0YXRlXG59IGZyb20gJy4uLy4uL2ltcG9ydC1leHBvcnQvaW1wb3J0LWV4cG9ydC5zdGF0ZSc7XG5pbXBvcnQgeyBUb29sU3RhdGUgfSBmcm9tICcuLi8uLi90b29sL3Rvb2wuc3RhdGUnO1xuaW1wb3J0IHsgV29ya3NwYWNlQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vd29ya3NwYWNlL3dvcmtzcGFjZS1idXR0b24vd29ya3NwYWNlLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWFwU3RhdGUgfSBmcm9tICcuLy4uL21hcC5zdGF0ZSc7XG5cbi8qKlxuICogVG9vbCB0byBicm93c2UgYSBtYXAncyBsYXllcnMgb3IgdG8gY2hvb3NlIGEgZGlmZmVyZW50IG1hcFxuICovXG5AVG9vbENvbXBvbmVudCh7XG4gIG5hbWU6ICdtYXAnLFxuICB0aXRsZTogJ2lnby5pbnRlZ3JhdGlvbi50b29scy5tYXAnLFxuICBpY29uOiAnbWFwJ1xufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1tYXAtdG9vbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXAtdG9vbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21hcC10b29sLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0VGFic01vZHVsZSxcbiAgICBMYXllckxpc3RDb21wb25lbnQsXG4gICAgTGF5ZXJMaXN0QmluZGluZ0RpcmVjdGl2ZSxcbiAgICBXb3Jrc3BhY2VCdXR0b25Db21wb25lbnQsXG4gICAgRXhwb3J0QnV0dG9uQ29tcG9uZW50LFxuICAgIE9nY0ZpbHRlckJ1dHRvbkNvbXBvbmVudCxcbiAgICBUaW1lRmlsdGVyQnV0dG9uQ29tcG9uZW50LFxuICAgIFRyYWNrRmVhdHVyZUJ1dHRvbkNvbXBvbmVudCxcbiAgICBNZXRhZGF0YUJ1dHRvbkNvbXBvbmVudCxcbiAgICBDb250ZXh0TGlzdENvbXBvbmVudCxcbiAgICBDb250ZXh0TGlzdEJpbmRpbmdEaXJlY3RpdmUsXG4gICAgVHJhbnNsYXRlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTWFwVG9vbENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRvZ2dsZUxlZ2VuZE9uVmlzaWJpbGl0eUNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGV4cGFuZExlZ2VuZE9mVmlzaWJsZUxheWVyczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHVwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIG9nY0J1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KCkgdGltZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KCkgbGF5ZXJMaXN0Q29udHJvbHM6IExheWVyTGlzdENvbnRyb2xzT3B0aW9ucyA9IHt9O1xuXG4gIEBJbnB1dCgpIHF1ZXJ5QmFkZ2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBnZXQgbWFwKCk6IElnb01hcCB7XG4gICAgcmV0dXJuIHRoaXMubWFwU3RhdGUubWFwO1xuICB9XG5cbiAgZ2V0IGV4Y2x1ZGVCYXNlTGF5ZXJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxheWVyTGlzdENvbnRyb2xzLmV4Y2x1ZGVCYXNlTGF5ZXJzIHx8IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGxheWVyRmlsdGVyQW5kU29ydE9wdGlvbnMoKTogYW55IHtcbiAgICBjb25zdCBmaWx0ZXJTb3J0T3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7XG4gICAgICAgIHNob3dUb29sYmFyOiBMYXllckxpc3RDb250cm9sc0VudW0uZGVmYXVsdFxuICAgICAgfSxcbiAgICAgIHRoaXMubGF5ZXJMaXN0Q29udHJvbHNcbiAgICApO1xuXG4gICAgc3dpdGNoICh0aGlzLmxheWVyTGlzdENvbnRyb2xzLnNob3dUb29sYmFyKSB7XG4gICAgICBjYXNlIExheWVyTGlzdENvbnRyb2xzRW51bS5hbHdheXM6XG4gICAgICAgIGZpbHRlclNvcnRPcHRpb25zLnNob3dUb29sYmFyID0gTGF5ZXJMaXN0Q29udHJvbHNFbnVtLmFsd2F5cztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIExheWVyTGlzdENvbnRyb2xzRW51bS5uZXZlcjpcbiAgICAgICAgZmlsdGVyU29ydE9wdGlvbnMuc2hvd1Rvb2xiYXIgPSBMYXllckxpc3RDb250cm9sc0VudW0ubmV2ZXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXJTb3J0T3B0aW9ucztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWFwU3RhdGU6IE1hcFN0YXRlLFxuICAgIHByaXZhdGUgdG9vbFN0YXRlOiBUb29sU3RhdGUsXG4gICAgcHJpdmF0ZSBpbXBvcnRFeHBvcnRTdGF0ZTogSW1wb3J0RXhwb3J0U3RhdGVcbiAgKSB7fVxuXG4gIGFjdGl2YXRlRXhwb3J0KGxheWVyOiBMYXllcikge1xuICAgIGxldCBpZCA9IGxheWVyLmlkO1xuICAgIGlmIChsYXllci5vcHRpb25zLndvcmtzcGFjZT8ud29ya3NwYWNlSWQpIHtcbiAgICAgIGlkID1cbiAgICAgICAgbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2Uud29ya3NwYWNlSWQgIT09IGxheWVyLmlkXG4gICAgICAgICAgPyBsYXllci5vcHRpb25zLndvcmtzcGFjZS53b3Jrc3BhY2VJZFxuICAgICAgICAgIDogbGF5ZXIuaWQ7XG4gICAgfVxuICAgIHRoaXMuaW1wb3J0RXhwb3J0U3RhdGUuc2V0c0V4cG9ydE9wdGlvbnMoeyBsYXllcnM6IFtpZF0gfSBhcyBFeHBvcnRPcHRpb25zKTtcbiAgICB0aGlzLmltcG9ydEV4cG9ydFN0YXRlLnNldE1vZGUoSW1wb3J0RXhwb3J0TW9kZS5leHBvcnQpO1xuICAgIHRoaXMudG9vbFN0YXRlLnRvb2xib3guYWN0aXZhdGVUb29sKCdpbXBvcnRFeHBvcnQnKTtcbiAgfVxufVxuIiwiPG1hdC10YWItZ3JvdXA+XG4gIDxtYXQtdGFiIFtsYWJlbF09XCInaWdvLmludGVncmF0aW9uLnRvb2xzLm1hcCcgfCB0cmFuc2xhdGVcIj5cbiAgICA8aWdvLWxheWVyLWxpc3RcbiAgICAgIFttYXBdPVwibWFwXCJcbiAgICAgIGlnb0xheWVyTGlzdEJpbmRpbmdcbiAgICAgIFtleGNsdWRlQmFzZUxheWVyc109XCJleGNsdWRlQmFzZUxheWVyc1wiXG4gICAgICBbbGF5ZXJGaWx0ZXJBbmRTb3J0T3B0aW9uc109XCJsYXllckZpbHRlckFuZFNvcnRPcHRpb25zXCJcbiAgICAgIFtleHBhbmRMZWdlbmRPZlZpc2libGVMYXllcnNdPVwiZXhwYW5kTGVnZW5kT2ZWaXNpYmxlTGF5ZXJzXCJcbiAgICAgIFt0b2dnbGVMZWdlbmRPblZpc2liaWxpdHlDaGFuZ2VdPVwidG9nZ2xlTGVnZW5kT25WaXNpYmlsaXR5Q2hhbmdlXCJcbiAgICAgIFt1cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2VdPVwidXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlXCJcbiAgICAgIFtxdWVyeUJhZGdlXT1cInF1ZXJ5QmFkZ2VcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjaWdvTGF5ZXJJdGVtVG9vbGJhciBsZXQtbGF5ZXI9XCJsYXllclwiPlxuICAgICAgICA8IS0tIDxpZ28tZG93bmxvYWQtYnV0dG9uIFtsYXllcl09XCJsYXllclwiPjwvaWdvLWRvd25sb2FkLWJ1dHRvbj4gLS0+XG4gICAgICAgIDxpZ28td29ya3NwYWNlLWJ1dHRvbiBbbGF5ZXJdPVwibGF5ZXJcIj48L2lnby13b3Jrc3BhY2UtYnV0dG9uPlxuICAgICAgICA8aWdvLWV4cG9ydC1idXR0b25cbiAgICAgICAgICBbbGF5ZXJdPVwibGF5ZXJcIlxuICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZUV4cG9ydChsYXllcilcIlxuICAgICAgICA+PC9pZ28tZXhwb3J0LWJ1dHRvbj5cbiAgICAgICAgPGlnby1vZ2MtZmlsdGVyLWJ1dHRvblxuICAgICAgICAgIFtoZWFkZXJdPVwib2djQnV0dG9uXCJcbiAgICAgICAgICBbbGF5ZXJdPVwibGF5ZXJcIlxuICAgICAgICA+PC9pZ28tb2djLWZpbHRlci1idXR0b24+XG4gICAgICAgIDxpZ28tdGltZS1maWx0ZXItYnV0dG9uXG4gICAgICAgICAgW2hlYWRlcl09XCJ0aW1lQnV0dG9uXCJcbiAgICAgICAgICBbbGF5ZXJdPVwibGF5ZXJcIlxuICAgICAgICA+PC9pZ28tdGltZS1maWx0ZXItYnV0dG9uPlxuICAgICAgICA8aWdvLXRyYWNrLWZlYXR1cmUtYnV0dG9uXG4gICAgICAgICAgW3RyYWNrRmVhdHVyZV09XCJ0cnVlXCJcbiAgICAgICAgICBbbGF5ZXJdPVwibGF5ZXJcIlxuICAgICAgICA+PC9pZ28tdHJhY2stZmVhdHVyZS1idXR0b24+XG4gICAgICAgIDxpZ28tbWV0YWRhdGEtYnV0dG9uIFtsYXllcl09XCJsYXllclwiPjwvaWdvLW1ldGFkYXRhLWJ1dHRvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pZ28tbGF5ZXItbGlzdD5cbiAgPC9tYXQtdGFiPlxuXG4gIDxtYXQtdGFiIFtsYWJlbF09XCInaWdvLmludGVncmF0aW9uLnRvb2xzLmNvbnRleHRzJyB8IHRyYW5zbGF0ZVwiPlxuICAgIDxpZ28tY29udGV4dC1saXN0IGlnb0NvbnRleHRMaXN0QmluZGluZz48L2lnby1jb250ZXh0LWxpc3Q+XG4gIDwvbWF0LXRhYj5cbjwvbWF0LXRhYi1ncm91cD5cbiJdfQ==
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXRvb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9tYXAvbWFwLXRvb2wvbWFwLXRvb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9tYXAvbWFwLXRvb2wvbWFwLXRvb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUNMLDJCQUEyQixFQUMzQixvQkFBb0IsRUFDckIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUNMLHFCQUFxQixFQUlyQix5QkFBeUIsRUFDekIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUVyQix1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6QiwyQkFBMkIsRUFDNUIsTUFBTSxXQUFXLENBQUM7QUFFbkIsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDbEIsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDdkcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBRTFDOztHQUVHO0FBMkJJLElBQU0sZ0JBQWdCLEdBQXRCLE1BQU0sZ0JBQWdCO0lBNkNq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QjtrQkFyQjVCLFNBQVM7K0JBQ0UsY0FBYyxtQkFHUCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIseUJBQXlCO3dCQUN6Qix3QkFBd0I7d0JBQ3hCLHFCQUFxQjt3QkFDckIsd0JBQXdCO3dCQUN4Qix5QkFBeUI7d0JBQ3pCLDJCQUEyQjt3QkFDM0IsdUJBQXVCO3dCQUN2QixvQkFBb0I7d0JBQ3BCLDJCQUEyQjt3QkFDM0IsaUJBQWlCO3FCQUNsQjtxSUFHUSw4QkFBOEI7c0JBQXRDLEtBQUs7Z0JBRUcsMkJBQTJCO3NCQUFuQyxLQUFLO2dCQUVHLDhCQUE4QjtzQkFBdEMsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0VGFic01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuXG5pbXBvcnQgeyBUb29sQ29tcG9uZW50IH0gZnJvbSAnQGlnbzIvY29tbW9uL3Rvb2wnO1xuaW1wb3J0IHtcbiAgQ29udGV4dExpc3RCaW5kaW5nRGlyZWN0aXZlLFxuICBDb250ZXh0TGlzdENvbXBvbmVudFxufSBmcm9tICdAaWdvMi9jb250ZXh0JztcbmltcG9ydCB7IElnb0xhbmd1YWdlTW9kdWxlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5pbXBvcnQge1xuICBFeHBvcnRCdXR0b25Db21wb25lbnQsXG4gIEV4cG9ydE9wdGlvbnMsXG4gIElnb01hcCxcbiAgTGF5ZXIsXG4gIExheWVyTGlzdEJpbmRpbmdEaXJlY3RpdmUsXG4gIExheWVyTGlzdENvbXBvbmVudCxcbiAgTGF5ZXJMaXN0Q29udHJvbHNFbnVtLFxuICBMYXllckxpc3RDb250cm9sc09wdGlvbnMsXG4gIE1ldGFkYXRhQnV0dG9uQ29tcG9uZW50LFxuICBPZ2NGaWx0ZXJCdXR0b25Db21wb25lbnQsXG4gIFRpbWVGaWx0ZXJCdXR0b25Db21wb25lbnQsXG4gIFRyYWNrRmVhdHVyZUJ1dHRvbkNvbXBvbmVudFxufSBmcm9tICdAaWdvMi9nZW8nO1xuXG5pbXBvcnQge1xuICBJbXBvcnRFeHBvcnRNb2RlLFxuICBJbXBvcnRFeHBvcnRTdGF0ZVxufSBmcm9tICcuLi8uLi9pbXBvcnQtZXhwb3J0L2ltcG9ydC1leHBvcnQuc3RhdGUnO1xuaW1wb3J0IHsgVG9vbFN0YXRlIH0gZnJvbSAnLi4vLi4vdG9vbC90b29sLnN0YXRlJztcbmltcG9ydCB7IFdvcmtzcGFjZUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3dvcmtzcGFjZS93b3Jrc3BhY2UtYnV0dG9uL3dvcmtzcGFjZS1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IE1hcFN0YXRlIH0gZnJvbSAnLi8uLi9tYXAuc3RhdGUnO1xuXG4vKipcbiAqIFRvb2wgdG8gYnJvd3NlIGEgbWFwJ3MgbGF5ZXJzIG9yIHRvIGNob29zZSBhIGRpZmZlcmVudCBtYXBcbiAqL1xuQFRvb2xDb21wb25lbnQoe1xuICBuYW1lOiAnbWFwJyxcbiAgdGl0bGU6ICdpZ28uaW50ZWdyYXRpb24udG9vbHMubWFwJyxcbiAgaWNvbjogJ21hcCdcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tbWFwLXRvb2wnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFwLXRvb2wuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYXAtdG9vbC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdFRhYnNNb2R1bGUsXG4gICAgTGF5ZXJMaXN0Q29tcG9uZW50LFxuICAgIExheWVyTGlzdEJpbmRpbmdEaXJlY3RpdmUsXG4gICAgV29ya3NwYWNlQnV0dG9uQ29tcG9uZW50LFxuICAgIEV4cG9ydEJ1dHRvbkNvbXBvbmVudCxcbiAgICBPZ2NGaWx0ZXJCdXR0b25Db21wb25lbnQsXG4gICAgVGltZUZpbHRlckJ1dHRvbkNvbXBvbmVudCxcbiAgICBUcmFja0ZlYXR1cmVCdXR0b25Db21wb25lbnQsXG4gICAgTWV0YWRhdGFCdXR0b25Db21wb25lbnQsXG4gICAgQ29udGV4dExpc3RDb21wb25lbnQsXG4gICAgQ29udGV4dExpc3RCaW5kaW5nRGlyZWN0aXZlLFxuICAgIElnb0xhbmd1YWdlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTWFwVG9vbENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRvZ2dsZUxlZ2VuZE9uVmlzaWJpbGl0eUNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGV4cGFuZExlZ2VuZE9mVmlzaWJsZUxheWVyczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHVwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIG9nY0J1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KCkgdGltZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KCkgbGF5ZXJMaXN0Q29udHJvbHM6IExheWVyTGlzdENvbnRyb2xzT3B0aW9ucyA9IHt9O1xuXG4gIEBJbnB1dCgpIHF1ZXJ5QmFkZ2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBnZXQgbWFwKCk6IElnb01hcCB7XG4gICAgcmV0dXJuIHRoaXMubWFwU3RhdGUubWFwO1xuICB9XG5cbiAgZ2V0IGV4Y2x1ZGVCYXNlTGF5ZXJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxheWVyTGlzdENvbnRyb2xzLmV4Y2x1ZGVCYXNlTGF5ZXJzIHx8IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGxheWVyRmlsdGVyQW5kU29ydE9wdGlvbnMoKTogYW55IHtcbiAgICBjb25zdCBmaWx0ZXJTb3J0T3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7XG4gICAgICAgIHNob3dUb29sYmFyOiBMYXllckxpc3RDb250cm9sc0VudW0uZGVmYXVsdFxuICAgICAgfSxcbiAgICAgIHRoaXMubGF5ZXJMaXN0Q29udHJvbHNcbiAgICApO1xuXG4gICAgc3dpdGNoICh0aGlzLmxheWVyTGlzdENvbnRyb2xzLnNob3dUb29sYmFyKSB7XG4gICAgICBjYXNlIExheWVyTGlzdENvbnRyb2xzRW51bS5hbHdheXM6XG4gICAgICAgIGZpbHRlclNvcnRPcHRpb25zLnNob3dUb29sYmFyID0gTGF5ZXJMaXN0Q29udHJvbHNFbnVtLmFsd2F5cztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIExheWVyTGlzdENvbnRyb2xzRW51bS5uZXZlcjpcbiAgICAgICAgZmlsdGVyU29ydE9wdGlvbnMuc2hvd1Rvb2xiYXIgPSBMYXllckxpc3RDb250cm9sc0VudW0ubmV2ZXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXJTb3J0T3B0aW9ucztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWFwU3RhdGU6IE1hcFN0YXRlLFxuICAgIHByaXZhdGUgdG9vbFN0YXRlOiBUb29sU3RhdGUsXG4gICAgcHJpdmF0ZSBpbXBvcnRFeHBvcnRTdGF0ZTogSW1wb3J0RXhwb3J0U3RhdGVcbiAgKSB7fVxuXG4gIGFjdGl2YXRlRXhwb3J0KGxheWVyOiBMYXllcikge1xuICAgIGxldCBpZCA9IGxheWVyLmlkO1xuICAgIGlmIChsYXllci5vcHRpb25zLndvcmtzcGFjZT8ud29ya3NwYWNlSWQpIHtcbiAgICAgIGlkID1cbiAgICAgICAgbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2Uud29ya3NwYWNlSWQgIT09IGxheWVyLmlkXG4gICAgICAgICAgPyBsYXllci5vcHRpb25zLndvcmtzcGFjZS53b3Jrc3BhY2VJZFxuICAgICAgICAgIDogbGF5ZXIuaWQ7XG4gICAgfVxuICAgIHRoaXMuaW1wb3J0RXhwb3J0U3RhdGUuc2V0c0V4cG9ydE9wdGlvbnMoeyBsYXllcnM6IFtpZF0gfSBhcyBFeHBvcnRPcHRpb25zKTtcbiAgICB0aGlzLmltcG9ydEV4cG9ydFN0YXRlLnNldE1vZGUoSW1wb3J0RXhwb3J0TW9kZS5leHBvcnQpO1xuICAgIHRoaXMudG9vbFN0YXRlLnRvb2xib3guYWN0aXZhdGVUb29sKCdpbXBvcnRFeHBvcnQnKTtcbiAgfVxufVxuIiwiPG1hdC10YWItZ3JvdXA+XG4gIDxtYXQtdGFiIFtsYWJlbF09XCInaWdvLmludGVncmF0aW9uLnRvb2xzLm1hcCcgfCB0cmFuc2xhdGVcIj5cbiAgICA8aWdvLWxheWVyLWxpc3RcbiAgICAgIFttYXBdPVwibWFwXCJcbiAgICAgIGlnb0xheWVyTGlzdEJpbmRpbmdcbiAgICAgIFtleGNsdWRlQmFzZUxheWVyc109XCJleGNsdWRlQmFzZUxheWVyc1wiXG4gICAgICBbbGF5ZXJGaWx0ZXJBbmRTb3J0T3B0aW9uc109XCJsYXllckZpbHRlckFuZFNvcnRPcHRpb25zXCJcbiAgICAgIFtleHBhbmRMZWdlbmRPZlZpc2libGVMYXllcnNdPVwiZXhwYW5kTGVnZW5kT2ZWaXNpYmxlTGF5ZXJzXCJcbiAgICAgIFt0b2dnbGVMZWdlbmRPblZpc2liaWxpdHlDaGFuZ2VdPVwidG9nZ2xlTGVnZW5kT25WaXNpYmlsaXR5Q2hhbmdlXCJcbiAgICAgIFt1cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2VdPVwidXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlXCJcbiAgICAgIFtxdWVyeUJhZGdlXT1cInF1ZXJ5QmFkZ2VcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjaWdvTGF5ZXJJdGVtVG9vbGJhciBsZXQtbGF5ZXI9XCJsYXllclwiPlxuICAgICAgICA8IS0tIDxpZ28tZG93bmxvYWQtYnV0dG9uIFtsYXllcl09XCJsYXllclwiPjwvaWdvLWRvd25sb2FkLWJ1dHRvbj4gLS0+XG4gICAgICAgIDxpZ28td29ya3NwYWNlLWJ1dHRvbiBbbGF5ZXJdPVwibGF5ZXJcIj48L2lnby13b3Jrc3BhY2UtYnV0dG9uPlxuICAgICAgICA8aWdvLWV4cG9ydC1idXR0b25cbiAgICAgICAgICBbbGF5ZXJdPVwibGF5ZXJcIlxuICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZUV4cG9ydChsYXllcilcIlxuICAgICAgICA+PC9pZ28tZXhwb3J0LWJ1dHRvbj5cbiAgICAgICAgPGlnby1vZ2MtZmlsdGVyLWJ1dHRvblxuICAgICAgICAgIFtoZWFkZXJdPVwib2djQnV0dG9uXCJcbiAgICAgICAgICBbbGF5ZXJdPVwibGF5ZXJcIlxuICAgICAgICA+PC9pZ28tb2djLWZpbHRlci1idXR0b24+XG4gICAgICAgIDxpZ28tdGltZS1maWx0ZXItYnV0dG9uXG4gICAgICAgICAgW2hlYWRlcl09XCJ0aW1lQnV0dG9uXCJcbiAgICAgICAgICBbbGF5ZXJdPVwibGF5ZXJcIlxuICAgICAgICA+PC9pZ28tdGltZS1maWx0ZXItYnV0dG9uPlxuICAgICAgICA8aWdvLXRyYWNrLWZlYXR1cmUtYnV0dG9uXG4gICAgICAgICAgW3RyYWNrRmVhdHVyZV09XCJ0cnVlXCJcbiAgICAgICAgICBbbGF5ZXJdPVwibGF5ZXJcIlxuICAgICAgICA+PC9pZ28tdHJhY2stZmVhdHVyZS1idXR0b24+XG4gICAgICAgIDxpZ28tbWV0YWRhdGEtYnV0dG9uIFtsYXllcl09XCJsYXllclwiPjwvaWdvLW1ldGFkYXRhLWJ1dHRvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pZ28tbGF5ZXItbGlzdD5cbiAgPC9tYXQtdGFiPlxuXG4gIDxtYXQtdGFiIFtsYWJlbF09XCInaWdvLmludGVncmF0aW9uLnRvb2xzLmNvbnRleHRzJyB8IHRyYW5zbGF0ZVwiPlxuICAgIDxpZ28tY29udGV4dC1saXN0IGlnb0NvbnRleHRMaXN0QmluZGluZz48L2lnby1jb250ZXh0LWxpc3Q+XG4gIDwvbWF0LXRhYj5cbjwvbWF0LXRhYi1ncm91cD5cbiJdfQ==