@igo2/integration 17.0.0-next.0 → 17.0.0-next.11

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 (114) hide show
  1. package/esm2022/lib/about/about-tool/about-tool.component.mjs +21 -17
  2. package/esm2022/lib/about/about.module.mjs +5 -5
  3. package/esm2022/lib/analytics/analytics-listener.service.mjs +10 -24
  4. package/esm2022/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.mjs +6 -6
  5. package/esm2022/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.mjs +5 -5
  6. package/esm2022/lib/catalog/catalog-library-tool/catalog-library-tool.component.mjs +21 -9
  7. package/esm2022/lib/catalog/catalog-library-tool/catalog-library-tool.module.mjs +5 -5
  8. package/esm2022/lib/catalog/catalog.module.mjs +5 -5
  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 +6 -6
  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 +8 -8
  17. package/esm2022/lib/context/index.mjs +2 -11
  18. package/esm2022/lib/directions/directions-tool/directions-tool.component.mjs +19 -12
  19. package/esm2022/lib/directions/directions.module.mjs +5 -5
  20. package/esm2022/lib/directions/directions.state.mjs +3 -3
  21. package/esm2022/lib/draw/draw.module.mjs +5 -5
  22. package/esm2022/lib/draw/draw.state.mjs +3 -3
  23. package/esm2022/lib/draw/drawing-tool/drawing-tool.component.mjs +6 -6
  24. package/esm2022/lib/draw/drawing-tool/drawing-tool.module.mjs +5 -5
  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 +6 -6
  28. package/esm2022/lib/filter/filter.module.mjs +5 -5
  29. package/esm2022/lib/filter/index.mjs +1 -1
  30. package/esm2022/lib/filter/ogc-filter-tool/ogc-filter-tool.component.mjs +5 -5
  31. package/esm2022/lib/filter/spatial-filter-tool/spatial-filter-tool.component.mjs +18 -13
  32. package/esm2022/lib/filter/time-filter-tool/time-filter-tool.component.mjs +5 -5
  33. package/esm2022/lib/geometry-form/data-issue-reporter-tool/data-issue-reporter-tool.component.mjs +18 -15
  34. package/esm2022/lib/geometry-form/data-issue-reporter-tool/index.mjs +1 -1
  35. package/esm2022/lib/geometry-form/geometry-form.module.mjs +8 -7
  36. package/esm2022/lib/geometry-form/index.mjs +1 -1
  37. package/esm2022/lib/import-export/import-export-tool/import-export-tool.component.mjs +9 -9
  38. package/esm2022/lib/import-export/import-export.module.mjs +5 -5
  39. package/esm2022/lib/import-export/import-export.state.mjs +3 -3
  40. package/esm2022/lib/integration.module.mjs +5 -5
  41. package/esm2022/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.mjs +56 -42
  42. package/esm2022/lib/map/advanced-map-tool/advanced-map-tool.component.mjs +8 -8
  43. package/esm2022/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.mjs +9 -7
  44. package/esm2022/lib/map/index.mjs +2 -15
  45. package/esm2022/lib/map/layer-list-tool.state.mjs +3 -3
  46. package/esm2022/lib/map/map-details-tool/map-details-tool.component.mjs +8 -8
  47. package/esm2022/lib/map/map-legend/map-legend-tool.component.mjs +9 -9
  48. package/esm2022/lib/map/map-proximity-tool/map-proximity-tool.component.mjs +22 -19
  49. package/esm2022/lib/map/map-proximity.state.mjs +6 -6
  50. package/esm2022/lib/map/map-tool/map-tool.component.mjs +8 -8
  51. package/esm2022/lib/map/map-tools/map-tools.component.mjs +8 -8
  52. package/esm2022/lib/map/map.directive.mjs +15 -0
  53. package/esm2022/lib/map/map.module.mjs +5 -5
  54. package/esm2022/lib/map/map.state.mjs +9 -7
  55. package/esm2022/lib/measure/measure.module.mjs +5 -5
  56. package/esm2022/lib/measure/measure.state.mjs +3 -3
  57. package/esm2022/lib/measure/measurer-tool/measurer-tool.component.mjs +6 -6
  58. package/esm2022/lib/measure/measurer-tool/measurer-tool.module.mjs +5 -5
  59. package/esm2022/lib/print/print-tool/print-tool.component.mjs +6 -6
  60. package/esm2022/lib/print/print.module.mjs +5 -5
  61. package/esm2022/lib/search/index.mjs +1 -7
  62. package/esm2022/lib/search/query.state.mjs +7 -7
  63. package/esm2022/lib/search/search-bar/search-bar-binding.directive.mjs +4 -4
  64. package/esm2022/lib/search/search-bar/search-bar.module.mjs +5 -5
  65. package/esm2022/lib/search/search-results-tool/search-results-tool.component.mjs +15 -11
  66. package/esm2022/lib/search/search-results-tool/search-results-tool.module.mjs +5 -5
  67. package/esm2022/lib/search/search.module.mjs +5 -5
  68. package/esm2022/lib/search/search.state.mjs +19 -18
  69. package/esm2022/lib/storage/storage.state.mjs +6 -6
  70. package/esm2022/lib/tool/tool.state.mjs +6 -6
  71. package/esm2022/lib/workspace/shared/edition-actions.service.mjs +17 -12
  72. package/esm2022/lib/workspace/shared/feature-actions.service.mjs +10 -7
  73. package/esm2022/lib/workspace/shared/wfs-actions.service.mjs +17 -12
  74. package/esm2022/lib/workspace/shared/workspace.utils.mjs +10 -7
  75. package/esm2022/lib/workspace/workspace-button/workspace-button.component.mjs +7 -7
  76. package/esm2022/lib/workspace/workspace.module.mjs +5 -5
  77. package/esm2022/lib/workspace/workspace.state.mjs +8 -7
  78. package/esm2022/public_api.mjs +1 -1
  79. package/fesm2022/igo2-integration.mjs +422 -392
  80. package/fesm2022/igo2-integration.mjs.map +1 -1
  81. package/lib/about/about-tool/about-tool.component.d.ts +2 -1
  82. package/lib/analytics/analytics-listener.service.d.ts +2 -5
  83. package/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.d.ts +1 -1
  84. package/lib/catalog/catalog-library-tool/catalog-library-tool.component.d.ts +5 -2
  85. package/lib/catalog/catalog.state.d.ts +1 -1
  86. package/lib/context/context.directive.d.ts +5 -0
  87. package/lib/context/context.state.d.ts +2 -2
  88. package/lib/context/index.d.ts +1 -5
  89. package/lib/directions/directions-tool/directions-tool.component.d.ts +5 -2
  90. package/lib/environment/environment.interface.d.ts +3 -3
  91. package/lib/filter/spatial-filter-tool/spatial-filter-tool.component.d.ts +3 -2
  92. package/lib/geometry-form/data-issue-reporter-tool/data-issue-reporter-tool.component.d.ts +3 -2
  93. package/lib/geometry-form/geometry-form.module.d.ts +4 -3
  94. package/lib/import-export/import-export-tool/import-export-tool.component.d.ts +1 -1
  95. package/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.d.ts +6 -1
  96. package/lib/map/index.d.ts +1 -7
  97. package/lib/map/map-proximity-tool/map-proximity-tool.component.d.ts +3 -2
  98. package/lib/map/map-proximity.state.d.ts +1 -1
  99. package/lib/map/map.directive.d.ts +7 -0
  100. package/lib/map/map.state.d.ts +2 -1
  101. package/lib/search/index.d.ts +0 -3
  102. package/lib/search/query.state.d.ts +3 -3
  103. package/lib/search/search-results-tool/search-results-tool.component.d.ts +3 -2
  104. package/lib/search/search.state.d.ts +4 -3
  105. package/lib/storage/storage.state.d.ts +1 -1
  106. package/lib/tool/tool.state.d.ts +1 -1
  107. package/lib/workspace/shared/edition-actions.service.d.ts +6 -3
  108. package/lib/workspace/shared/feature-actions.service.d.ts +4 -2
  109. package/lib/workspace/shared/wfs-actions.service.d.ts +6 -3
  110. package/lib/workspace/shared/workspace.utils.d.ts +5 -2
  111. package/lib/workspace/workspace.state.d.ts +4 -2
  112. package/locale/en.integration.json +143 -143
  113. package/locale/fr.integration.json +143 -143
  114. package/package.json +4 -4
@@ -7,23 +7,26 @@ 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';
11
- import { LanguageService, MessageService } from '@igo2/core';
10
+ import { EntityTableComponent } from '@igo2/common/entity';
11
+ import { ToolComponent } from '@igo2/common/tool';
12
+ import { LanguageService } from '@igo2/core/language';
13
+ import { IgoLanguageModule } from '@igo2/core/language';
14
+ import { MessageService } from '@igo2/core/message';
12
15
  import { Clipboard, NumberUtils } from '@igo2/utils';
13
- import { TranslateModule } from '@ngx-translate/core';
14
16
  import { MapProximityState } from '../map-proximity.state';
15
17
  import { MapState } from '../map.state';
16
18
  import * as i0 from "@angular/core";
17
19
  import * as i1 from "../map.state";
18
20
  import * as i2 from "../map-proximity.state";
19
- import * as i3 from "@igo2/core";
20
- import * as i4 from "@angular/material/form-field";
21
- import * as i5 from "@angular/material/input";
22
- import * as i6 from "@angular/material/button";
23
- import * as i7 from "@angular/material/icon";
24
- import * as i8 from "@angular/material/radio";
25
- import * as i9 from "@angular/forms";
26
- import * as i10 from "@ngx-translate/core";
21
+ import * as i3 from "@igo2/core/language";
22
+ import * as i4 from "@igo2/core/message";
23
+ import * as i5 from "@angular/material/form-field";
24
+ import * as i6 from "@angular/material/input";
25
+ import * as i7 from "@angular/material/button";
26
+ import * as i8 from "@angular/material/icon";
27
+ import * as i9 from "@angular/material/radio";
28
+ import * as i10 from "@angular/forms";
29
+ import * as i11 from "@ngx-translate/core";
27
30
  let MapProximityToolComponent = class MapProximityToolComponent {
28
31
  mapState;
29
32
  mapProximityState;
@@ -109,14 +112,14 @@ let MapProximityToolComponent = class MapProximityToolComponent {
109
112
  this.messageService.success('igo.integration.map-proximity-tool.copyMsg', 'igo.integration.map-proximity-tool.copyTitle');
110
113
  }
111
114
  }
112
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: MapProximityToolComponent, deps: [{ token: i1.MapState }, { token: i2.MapProximityState }, { token: i3.LanguageService }, { token: i3.MessageService }], target: i0.ɵɵFactoryTarget.Component });
113
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", 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 svgIcon=\"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: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.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: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i8.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i8.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: i9.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: i9.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i9.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: i10.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" }] });
114
117
  };
115
118
  MapProximityToolComponent = __decorate([
116
119
  ToolComponent({
117
120
  name: 'map-proximity',
118
121
  title: 'igo.integration.tools.closestFeature',
119
- icon: 'radius'
122
+ icon: 'radar'
120
123
  })
121
124
  /**
122
125
  * Tool to handle the advanced map tools
@@ -128,7 +131,7 @@ MapProximityToolComponent = __decorate([
128
131
  MessageService])
129
132
  ], MapProximityToolComponent);
130
133
  export { MapProximityToolComponent };
131
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: MapProximityToolComponent, decorators: [{
134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MapProximityToolComponent, decorators: [{
132
135
  type: Component,
133
136
  args: [{ selector: 'igo-map-proximity-tool', standalone: true, imports: [
134
137
  EntityTableComponent,
@@ -140,10 +143,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
140
143
  MatRadioModule,
141
144
  FormsModule,
142
145
  AsyncPipe,
143
- TranslateModule
144
- ], 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 svgIcon=\"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"] }]
145
- }], ctorParameters: () => [{ type: i1.MapState }, { type: i2.MapProximityState }, { type: i3.LanguageService }, { type: i3.MessageService }], propDecorators: { table: [{
146
+ IgoLanguageModule
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"] }]
148
+ }], ctorParameters: () => [{ type: i1.MapState }, { type: i2.MapProximityState }, { type: i3.LanguageService }, { type: i4.MessageService }], propDecorators: { table: [{
146
149
  type: ViewChild,
147
150
  args: ['table', { static: true }]
148
151
  }] } });
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXByb3hpbWl0eS10b29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1wcm94aW1pdHktdG9vbC9tYXAtcHJveGltaXR5LXRvb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9tYXAvbWFwLXByb3hpbWl0eS10b29sL21hcC1wcm94aW1pdHktdG9vbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBa0IsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFekUsT0FBTyxFQUNMLG9CQUFvQixFQUVwQixhQUFhLEVBQ2QsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3RELE9BQU8sRUFBRSxpQkFB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OztBQUdOLHlCQUF5QjtJQTFCckMsYUFBYSxDQUFDO1FBQ2IsSUFBSSxFQUFFLGVBQWU7UUFDckIsS0FBSyxFQUFFLHNDQUFzQztRQUM3QyxJQUFJLEVBQUUsUUFBUTtLQUNmLENBQUM7SUFDRjs7T0FFRzs7cUNBMENrQixRQUFRO1FBQ0MsaUJBQWlCO1FBQ2xCLGVBQWU7UUFDaEIsY0FBYztHQTFCN0IseUJBQXlCLENBdUdyQzs7MkZBdkdZLHlCQUF5QjtrQkFsQnJDLFNBQVM7K0JBQ0Usd0JBQXdCLGNBR3RCLElBQUksV0FDUDt3QkFDUCxvQkFBb0I7d0JBQ3BCLElBQUk7d0JBQ0osa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixjQUFjO3dCQUNkLFdBQVc7d0JBQ1gsU0FBUzt3QkFDVCxlQUFlO3FCQUNoQjt3S0FJcUMsS0FBSztzQkFBMUMsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgTWF0UmFkaW9DaGFuZ2UsIE1hdFJhZGlvTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xyXG5cclxuaW1wb3J0IHtcclxuICBFbnRpdHlUYWJsZUNvbXBvbmVudCxcclxuICBFbnRpdHlUYWJsZVRlbXBsYXRlLFxyXG4gIFRvb2xDb21wb25lbnRcclxufSBmcm9tICdAaWdvMi9jb21tb24nO1xyXG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcbmltcG9ydCB7IEZlYXR1cmUsIElnb01hcCB9IGZyb20gJ0BpZ28yL2dlbyc7XHJcbmltcG9ydCB7IENsaXBib2FyZCwgTnVtYmVyVXRpbHMgfSBmcm9tICdAaWdvMi91dGlscyc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBNYXBQcm94aW1pdHlTdGF0ZSB9IGZyb20gJy4uL21hcC1wcm94aW1pdHkuc3RhdGUnO1xyXG5pbXBvcnQgeyBNYXBTdGF0ZSB9IGZyb20gJy4uL21hcC5zdGF0ZSc7XHJcblxyXG5AVG9vbENvbXBvbmVudCh7XHJcbiAgbmFtZTogJ21hcC1wcm94aW1pdHknLFxyXG4gIHRpdGxlOiAnaWdvLmludGVncmF0aW9uLnRvb2xzLmNsb3Nlc3RGZWF0dXJlJyxcclxuICBpY29uOiAncmFkaXVzJ1xyXG59KVxyXG4vKipcclxuICogVG9vbCB0byBoYW5kbGUgdGhlIGFkdmFuY2VkIG1hcCB0b29sc1xyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZ28tbWFwLXByb3hpbWl0eS10b29sJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWFwLXByb3hpbWl0eS10b29sLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tYXAtcHJveGltaXR5LXRvb2wuY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEVudGl0eVRhYmxlQ29tcG9uZW50LFxyXG4gICAgTmdJZixcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdFJhZGlvTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBBc3luY1BpcGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXBQcm94aW1pdHlUb29sQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgc3VicyQkOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJywgeyBzdGF0aWM6IHRydWUgfSkgdGFibGU6IEVudGl0eVRhYmxlQ29tcG9uZW50O1xyXG5cclxuICBnZXQgbWF4RGlzdGFuY2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5tYXBQcm94aW1pdHlTdGF0ZS5wcm94aW1pdHlSYWRpdXNWYWx1ZSQudmFsdWU7XHJcbiAgfVxyXG4gIHNldCBtYXhEaXN0YW5jZSh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm1hcFByb3hpbWl0eVN0YXRlLnByb3hpbWl0eVJhZGl1c1ZhbHVlJC5uZXh0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcclxuICAgIHJldHVybiB0aGlzLm1hcFN0YXRlLm1hcDtcclxuICB9XHJcbiAgcHVibGljIHVzZXJEZWZpbmVkTWFwQ2VudGVyOiBib29sZWFuO1xyXG4gIHB1YmxpYyB1c2VyRGVmaW5lZEZvbGxvd1Bvc2l0aW9uOiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIFRhYmxlIHRlbXBsYXRlXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgcHVibGljIHRhYmxlVGVtcGxhdGU6IEVudGl0eVRhYmxlVGVtcGxhdGU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIG1hcFN0YXRlOiBNYXBTdGF0ZSxcclxuICAgIHB1YmxpYyBtYXBQcm94aW1pdHlTdGF0ZTogTWFwUHJveGltaXR5U3RhdGUsXHJcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMudGFibGVUZW1wbGF0ZSA9IHtcclxuICAgICAgc2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgICBzZWxlY3RNYW55OiBmYWxzZSxcclxuICAgICAgc2VsZWN0aW9uQ2hlY2tib3g6IGZhbHNlLFxyXG4gICAgICBzb3J0OiB0cnVlLFxyXG4gICAgICBjb2x1bW5zOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ2VsZW1lbnQnLFxyXG4gICAgICAgICAgdGl0bGU6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgICAnaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5mZWF0dXJlJ1xyXG4gICAgICAgICAgKSxcclxuICAgICAgICAgIHZhbHVlQWNjZXNzb3I6IChsb2NhbEZlYXR1cmU6IEZlYXR1cmUpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGxvY2FsRmVhdHVyZS5wcm9wZXJ0aWVzLmVsZW1lbnQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAnZGlzdGFuY2UnLFxyXG4gICAgICAgICAgdGl0bGU6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgICAnaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5kaXN0YW5jZSdcclxuICAgICAgICAgICksXHJcbiAgICAgICAgICB2YWx1ZUFjY2Vzc29yOiAobG9jYWxGZWF0dXJlOiBGZWF0dXJlKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBgJHtOdW1iZXJVdGlscy5yb3VuZFRvTkRlY2ltYWwoXHJcbiAgICAgICAgICAgICAgbG9jYWxGZWF0dXJlLnByb3BlcnRpZXMuZGlzdGFuY2UsXHJcbiAgICAgICAgICAgICAgMVxyXG4gICAgICAgICAgICApfW1gO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tYXBQcm94aW1pdHlTdGF0ZS5lbmFibGVkJC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy51c2VyRGVmaW5lZEZvbGxvd1Bvc2l0aW9uID1cclxuICAgICAgdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLmZvbGxvd1Bvc2l0aW9uID09PSB0cnVlO1xyXG4gICAgdGhpcy51c2VyRGVmaW5lZE1hcENlbnRlciA9IHRoaXMubWFwLm1hcENlbnRlciQudmFsdWUgPT09IHRydWU7XHJcblxyXG4gICAgdGhpcy5zdWJzJCQucHVzaChcclxuICAgICAgdGhpcy5tYXBQcm94aW1pdHlTdGF0ZS5wcm94aW1pdHlsb2NhdGlvblR5cGUkLnN1YnNjcmliZSgodikgPT4ge1xyXG4gICAgICAgIHRoaXMubWFwLm1hcENlbnRlciQubmV4dCh2ICE9PSAnZ2VvbG9jYXRpb24nKTtcclxuICAgICAgICBpZiAodiA9PT0gJ2dlb2xvY2F0aW9uJykge1xyXG4gICAgICAgICAgdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLmZvbGxvd1Bvc2l0aW9uID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLmZvbGxvd1Bvc2l0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tYXBQcm94aW1pdHlTdGF0ZS5lbmFibGVkJC5uZXh0KGZhbHNlKTtcclxuICAgIHRoaXMubWFwLm1hcENlbnRlciQubmV4dCh0aGlzLnVzZXJEZWZpbmVkTWFwQ2VudGVyKTtcclxuICAgIHRoaXMuc3VicyQkLm1hcCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICAgIHRoaXMubWFwLmdlb2xvY2F0aW9uQ29udHJvbGxlci5mb2xsb3dQb3NpdGlvbiA9XHJcbiAgICAgIHRoaXMudXNlckRlZmluZWRGb2xsb3dQb3NpdGlvbjtcclxuICB9XHJcblxyXG4gIG9uTG9jYXRpb25UeXBlQ2hhbmdlKGU6IE1hdFJhZGlvQ2hhbmdlKSB7XHJcbiAgICB0aGlzLm1hcFByb3hpbWl0eVN0YXRlLnByb3hpbWl0eWxvY2F0aW9uVHlwZSQubmV4dChlLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvcHkgdGhlIGNvb3JkaW5hdGVzIHRvIGEgY2xpcGJvYXJkXHJcbiAgICovXHJcbiAgY29weVRleHRUb0NsaXBib2FyZCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN1Y2Nlc3NmdWwgPSBDbGlwYm9hcmQuY29weShcclxuICAgICAgdGhpcy5tYXBQcm94aW1pdHlTdGF0ZS5jdXJyZW50UG9zaXRpb25Db29yZGluYXRlJD8udmFsdWUudG9TdHJpbmcoKVxyXG4gICAgKTtcclxuICAgIGlmIChzdWNjZXNzZnVsKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3VjY2VzcyhcclxuICAgICAgICAnaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5jb3B5TXNnJyxcclxuICAgICAgICAnaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5jb3B5VGl0bGUnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxpZ28tZW50aXR5LXRhYmxlXG4gICN0YWJsZVxuICBjbGFzcz1cInRhYmxlLWNvbXBhY3RcIlxuICBbc3RvcmVdPVwibWFwUHJveGltaXR5U3RhdGUucHJveGltaXR5RmVhdHVyZVN0b3JlXCJcbiAgW3RlbXBsYXRlXT1cInRhYmxlVGVtcGxhdGVcIlxuPjwvaWdvLWVudGl0eS10YWJsZT5cbjxiciAvPlxuPG1hdC1mb3JtLWZpZWxkXG4gICpuZ0lmPVwibWFwUHJveGltaXR5U3RhdGUuY3VycmVudFBvc2l0aW9uQ29vcmRpbmF0ZSQgfCBhc3luYyBhcyBjb29yZFwiXG4gIGNsYXNzPVwiY29vcmRpbmF0ZXNcIlxuPlxuICA8dGV4dGFyZWFcbiAgICAjdGV4dEFyZWFcbiAgICBtYXRJbnB1dFxuICAgIHJlYWRvbmx5XG4gICAgcm93cz1cIjFcIlxuICAgIFtwbGFjZWhvbGRlcl09XCInaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5sb24nIHwgdHJhbnNsYXRlXCJcbiAgICBbdmFsdWVdPVwiY29vcmRbMF1cIlxuICA+PC90ZXh0YXJlYT5cbjwvbWF0LWZvcm0tZmllbGQ+XG48bWF0LWZvcm0tZmllbGRcbiAgKm5nSWY9XCJtYXBQcm94aW1pdHlTdGF0ZS5jdXJyZW50UG9zaXRpb25Db29yZGluYXRlJCB8IGFzeW5jIGFzIGNvb3JkMlwiXG4gIGNsYXNzPVwiY29vcmRpbmF0ZXMyXCJcbj5cbiAgPHRleHRhcmVhXG4gICAgI3RleHRBcmVhXG4gICAgbWF0SW5wdXRcbiAgICByZWFkb25seVxuICAgIHJvd3M9XCIxXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwiJ2lnby5pbnRlZ3JhdGlvbi5tYXAtcHJveGltaXR5LXRvb2wubGF0JyB8IHRyYW5zbGF0ZVwiXG4gICAgW3ZhbHVlXT1cImNvb3JkMlsxXVwiXG4gID48L3RleHRhcmVhPlxuPC9tYXQtZm9ybS1maWVsZD5cblxuPGJ1dHRvblxuICAqbmdJZj1cIlxuICAgIChtYXBQcm94aW1pdHlTdGF0ZS5jdXJyZW50UG9zaXRpb25Db29yZGluYXRlJCB8IGFzeW5jKSAmJlxuICAgIChtYXBQcm94aW1pdHlTdGF0ZS5jdXJyZW50UG9zaXRpb25Db29yZGluYXRlJCB8IGFzeW5jKS5sZW5ndGhcbiAgXCJcbiAgbWF0LWljb24tYnV0dG9uXG4gIChjbGljayk9XCJjb3B5VGV4dFRvQ2xpcGJvYXJkKClcIlxuPlxuICA8bWF0LWljb24gc3ZnSWNvbj1cImNvbnRlbnQtY29weVwiPjwvbWF0LWljb24+XG48L2J1dHRvbj5cbjxkaXYgY2xhc3M9XCJ0aXRsZS1jb250YWluZXJcIj5cbiAgPG1hdC1sYWJlbCBjbGFzcz1cInRpdGxlIG1hdC10eXBvZ3JhcGh5XCI+e3tcbiAgICAnaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5tZXRob2QnIHwgdHJhbnNsYXRlXG4gIH19PC9tYXQtbGFiZWw+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJpZ28taW5wdXQtY29udGFpbmVyIG1hdC10eXBvZ3JhcGh5XCI+XG4gIDxtYXQtcmFkaW8tZ3JvdXAgKGNoYW5nZSk9XCJvbkxvY2F0aW9uVHlwZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgPG1hdC1yYWRpby1idXR0b25cbiAgICAgIFtjaGVja2VkXT1cIlxuICAgICAgICAobWFwUHJveGltaXR5U3RhdGUucHJveGltaXR5bG9jYXRpb25UeXBlJCB8IGFzeW5jKSA9PT0gJ2dlb2xvY2F0aW9uJ1xuICAgICAgXCJcbiAgICAgIHZhbHVlPVwiZ2VvbG9jYXRpb25cIlxuICAgICAgPnt7XG4gICAgICAgICdpZ28uaW50ZWdyYXRpb24ubWFwLXByb3hpbWl0eS10b29sLmdlb2xvY2F0aW9uJyB8IHRyYW5zbGF0ZVxuICAgICAgfX08L21hdC1yYWRpby1idXR0b25cbiAgICA+XG4gICAgPG1hdC1yYWRpby1idXR0b25cbiAgICAgIFtjaGVja2VkXT1cIlxuICAgICAgICAobWFwUHJveGltaXR5U3RhdGUucHJveGltaXR5bG9jYXRpb25UeXBlJCB8IGFzeW5jKSA9PT0gJ21hcENlbnRlcidcbiAgICAgIFwiXG4gICAgICB2YWx1ZT1cIm1hcENlbnRlclwiXG4gICAgICA+e3tcbiAgICAgICAgJ2lnby5pbnRlZ3JhdGlvbi5tYXAtcHJveGltaXR5LXRvb2wubWFwQ2VudGVyJyB8IHRyYW5zbGF0ZVxuICAgICAgfX08L21hdC1yYWRpby1idXR0b25cbiAgICA+XG4gIDwvbWF0LXJhZGlvLWdyb3VwPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJyYWRpdXMtdW5pdFwiPlxuICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJyYWRpdXMtZmllbGRcIiBmbG9hdExhYmVsPVwiYWx3YXlzXCI+XG4gICAgPG1hdC1sYWJlbD57e1xuICAgICAgJ2lnby5pbnRlZ3JhdGlvbi5tYXAtcHJveGltaXR5LXRvb2wucmFkaXVzTScgfCB0cmFuc2xhdGVcbiAgICB9fTwvbWF0LWxhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICBwYXR0ZXJuPVwiWzAtOV0qXCJcbiAgICAgIFsobmdNb2RlbCldPVwibWF4RGlzdGFuY2VcIlxuICAgICAgbWF0SW5wdXRcbiAgICAgIHBsYWNlaG9sZGVyPVwie3tcbiAgICAgICAgJ2lnby5pbnRlZ3JhdGlvbi5tYXAtcHJveGltaXR5LXRvb2wucmFkaXVzTScgfCB0cmFuc2xhdGVcbiAgICAgIH19XCJcbiAgICAvPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9kaXY+XG4iXX0=
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXByb3hpbWl0eS10b29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1wcm94aW1pdHktdG9vbC9tYXAtcHJveGltaXR5LXRvb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9tYXAvbWFwLXByb3hpbWl0eS10b29sL21hcC1wcm94aW1pdHktdG9vbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBa0IsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFekUsT0FBTyxFQUFFLG9CQUFvQixFQUF1QixNQUFNLHFCQUFxQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFD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LGNBQWMsMFdBQ2QsZUFBZSwySUFDZixhQUFhLG1MQUNiLGNBQWMsc2lCQUNkLFdBQVcsMDZCQUNYLFNBQVMsNkNBQ1QsaUJBQWlCOztBQUdSLHlCQUF5QjtJQTFCckMsYUFBYSxDQUFDO1FBQ2IsSUFBSSxFQUFFLGVBQWU7UUFDckIsS0FBSyxFQUFFLHNDQUFzQztRQUM3QyxJQUFJLEVBQUUsT0FBTztLQUNkLENBQUM7SUFDRjs7T0FFRzs7cUNBMENrQixRQUFRO1FBQ0MsaUJBQWlCO1FBQ2xCLGVBQWU7UUFDaEIsY0FBYztHQTFCN0IseUJBQXlCLENBdUdyQzs7MkZBdkdZLHlCQUF5QjtrQkFsQnJDLFNBQVM7K0JBQ0Usd0JBQXdCLGNBR3RCLElBQUksV0FDUDt3QkFDUCxvQkFBb0I7d0JBQ3BCLElBQUk7d0JBQ0osa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixjQUFjO3dCQUNkLFdBQVc7d0JBQ1gsU0FBUzt3QkFDVCxpQkFBaUI7cUJBQ2xCO3dLQUlxQyxLQUFLO3NCQUExQyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0UmFkaW9DaGFuZ2UsIE1hdFJhZGlvTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xuXG5pbXBvcnQgeyBFbnRpdHlUYWJsZUNvbXBvbmVudCwgRW50aXR5VGFibGVUZW1wbGF0ZSB9IGZyb20gJ0BpZ28yL2NvbW1vbi9lbnRpdHknO1xuaW1wb3J0IHsgVG9vbENvbXBvbmVudCB9IGZyb20gJ0BpZ28yL2NvbW1vbi90b29sJztcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuaW1wb3J0IHsgSWdvTGFuZ3VhZ2VNb2R1bGUgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9tZXNzYWdlJztcbmltcG9ydCB7IEZlYXR1cmUsIElnb01hcCB9IGZyb20gJ0BpZ28yL2dlbyc7XG5pbXBvcnQgeyBDbGlwYm9hcmQsIE51bWJlclV0aWxzIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTWFwUHJveGltaXR5U3RhdGUgfSBmcm9tICcuLi9tYXAtcHJveGltaXR5LnN0YXRlJztcbmltcG9ydCB7IE1hcFN0YXRlIH0gZnJvbSAnLi4vbWFwLnN0YXRlJztcblxuQFRvb2xDb21wb25lbnQoe1xuICBuYW1lOiAnbWFwLXByb3hpbWl0eScsXG4gIHRpdGxlOiAnaWdvLmludGVncmF0aW9uLnRvb2xzLmNsb3Nlc3RGZWF0dXJlJyxcbiAgaWNvbjogJ3JhZGFyJ1xufSlcbi8qKlxuICogVG9vbCB0byBoYW5kbGUgdGhlIGFkdmFuY2VkIG1hcCB0b29sc1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tbWFwLXByb3hpbWl0eS10b29sJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hcC1wcm94aW1pdHktdG9vbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21hcC1wcm94aW1pdHktdG9vbC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRW50aXR5VGFibGVDb21wb25lbnQsXG4gICAgTmdJZixcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0UmFkaW9Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQXN5bmNQaXBlLFxuICAgIElnb0xhbmd1YWdlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTWFwUHJveGltaXR5VG9vbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBzdWJzJCQ6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJywgeyBzdGF0aWM6IHRydWUgfSkgdGFibGU6IEVudGl0eVRhYmxlQ29tcG9uZW50O1xuXG4gIGdldCBtYXhEaXN0YW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tYXBQcm94aW1pdHlTdGF0ZS5wcm94aW1pdHlSYWRpdXNWYWx1ZSQudmFsdWU7XG4gIH1cbiAgc2V0IG1heERpc3RhbmNlKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLm1hcFByb3hpbWl0eVN0YXRlLnByb3hpbWl0eVJhZGl1c1ZhbHVlJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcbiAgICByZXR1cm4gdGhpcy5tYXBTdGF0ZS5tYXA7XG4gIH1cbiAgcHVibGljIHVzZXJEZWZpbmVkTWFwQ2VudGVyOiBib29sZWFuO1xuICBwdWJsaWMgdXNlckRlZmluZWRGb2xsb3dQb3NpdGlvbjogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRhYmxlIHRlbXBsYXRlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHRhYmxlVGVtcGxhdGU6IEVudGl0eVRhYmxlVGVtcGxhdGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG1hcFN0YXRlOiBNYXBTdGF0ZSxcbiAgICBwdWJsaWMgbWFwUHJveGltaXR5U3RhdGU6IE1hcFByb3hpbWl0eVN0YXRlLFxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy50YWJsZVRlbXBsYXRlID0ge1xuICAgICAgc2VsZWN0aW9uOiB0cnVlLFxuICAgICAgc2VsZWN0TWFueTogZmFsc2UsXG4gICAgICBzZWxlY3Rpb25DaGVja2JveDogZmFsc2UsXG4gICAgICBzb3J0OiB0cnVlLFxuICAgICAgY29sdW1uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2VsZW1lbnQnLFxuICAgICAgICAgIHRpdGxlOiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICdpZ28uaW50ZWdyYXRpb24ubWFwLXByb3hpbWl0eS10b29sLmZlYXR1cmUnXG4gICAgICAgICAgKSxcbiAgICAgICAgICB2YWx1ZUFjY2Vzc29yOiAobG9jYWxGZWF0dXJlOiBGZWF0dXJlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxGZWF0dXJlLnByb3BlcnRpZXMuZWxlbWVudDtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnZGlzdGFuY2UnLFxuICAgICAgICAgIHRpdGxlOiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICdpZ28uaW50ZWdyYXRpb24ubWFwLXByb3hpbWl0eS10b29sLmRpc3RhbmNlJ1xuICAgICAgICAgICksXG4gICAgICAgICAgdmFsdWVBY2Nlc3NvcjogKGxvY2FsRmVhdHVyZTogRmVhdHVyZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGAke051bWJlclV0aWxzLnJvdW5kVG9ORGVjaW1hbChcbiAgICAgICAgICAgICAgbG9jYWxGZWF0dXJlLnByb3BlcnRpZXMuZGlzdGFuY2UsXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICl9bWA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubWFwUHJveGltaXR5U3RhdGUuZW5hYmxlZCQubmV4dCh0cnVlKTtcbiAgICB0aGlzLnVzZXJEZWZpbmVkRm9sbG93UG9zaXRpb24gPVxuICAgICAgdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLmZvbGxvd1Bvc2l0aW9uID09PSB0cnVlO1xuICAgIHRoaXMudXNlckRlZmluZWRNYXBDZW50ZXIgPSB0aGlzLm1hcC5tYXBDZW50ZXIkLnZhbHVlID09PSB0cnVlO1xuXG4gICAgdGhpcy5zdWJzJCQucHVzaChcbiAgICAgIHRoaXMubWFwUHJveGltaXR5U3RhdGUucHJveGltaXR5bG9jYXRpb25UeXBlJC5zdWJzY3JpYmUoKHYpID0+IHtcbiAgICAgICAgdGhpcy5tYXAubWFwQ2VudGVyJC5uZXh0KHYgIT09ICdnZW9sb2NhdGlvbicpO1xuICAgICAgICBpZiAodiA9PT0gJ2dlb2xvY2F0aW9uJykge1xuICAgICAgICAgIHRoaXMubWFwLmdlb2xvY2F0aW9uQ29udHJvbGxlci5mb2xsb3dQb3NpdGlvbiA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLmZvbGxvd1Bvc2l0aW9uID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubWFwUHJveGltaXR5U3RhdGUuZW5hYmxlZCQubmV4dChmYWxzZSk7XG4gICAgdGhpcy5tYXAubWFwQ2VudGVyJC5uZXh0KHRoaXMudXNlckRlZmluZWRNYXBDZW50ZXIpO1xuICAgIHRoaXMuc3VicyQkLm1hcCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLm1hcC5nZW9sb2NhdGlvbkNvbnRyb2xsZXIuZm9sbG93UG9zaXRpb24gPVxuICAgICAgdGhpcy51c2VyRGVmaW5lZEZvbGxvd1Bvc2l0aW9uO1xuICB9XG5cbiAgb25Mb2NhdGlvblR5cGVDaGFuZ2UoZTogTWF0UmFkaW9DaGFuZ2UpIHtcbiAgICB0aGlzLm1hcFByb3hpbWl0eVN0YXRlLnByb3hpbWl0eWxvY2F0aW9uVHlwZSQubmV4dChlLnZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb3B5IHRoZSBjb29yZGluYXRlcyB0byBhIGNsaXBib2FyZFxuICAgKi9cbiAgY29weVRleHRUb0NsaXBib2FyZCgpOiB2b2lkIHtcbiAgICBjb25zdCBzdWNjZXNzZnVsID0gQ2xpcGJvYXJkLmNvcHkoXG4gICAgICB0aGlzLm1hcFByb3hpbWl0eVN0YXRlLmN1cnJlbnRQb3NpdGlvbkNvb3JkaW5hdGUkPy52YWx1ZS50b1N0cmluZygpXG4gICAgKTtcbiAgICBpZiAoc3VjY2Vzc2Z1bCkge1xuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKFxuICAgICAgICAnaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5jb3B5TXNnJyxcbiAgICAgICAgJ2lnby5pbnRlZ3JhdGlvbi5tYXAtcHJveGltaXR5LXRvb2wuY29weVRpdGxlJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxpZ28tZW50aXR5LXRhYmxlXG4gICN0YWJsZVxuICBjbGFzcz1cInRhYmxlLWNvbXBhY3RcIlxuICBbc3RvcmVdPVwibWFwUHJveGltaXR5U3RhdGUucHJveGltaXR5RmVhdHVyZVN0b3JlXCJcbiAgW3RlbXBsYXRlXT1cInRhYmxlVGVtcGxhdGVcIlxuPjwvaWdvLWVudGl0eS10YWJsZT5cbjxiciAvPlxuPG1hdC1mb3JtLWZpZWxkXG4gICpuZ0lmPVwibWFwUHJveGltaXR5U3RhdGUuY3VycmVudFBvc2l0aW9uQ29vcmRpbmF0ZSQgfCBhc3luYyBhcyBjb29yZFwiXG4gIGNsYXNzPVwiY29vcmRpbmF0ZXNcIlxuPlxuICA8dGV4dGFyZWFcbiAgICAjdGV4dEFyZWFcbiAgICBtYXRJbnB1dFxuICAgIHJlYWRvbmx5XG4gICAgcm93cz1cIjFcIlxuICAgIFtwbGFjZWhvbGRlcl09XCInaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5sb24nIHwgdHJhbnNsYXRlXCJcbiAgICBbdmFsdWVdPVwiY29vcmRbMF1cIlxuICA+PC90ZXh0YXJlYT5cbjwvbWF0LWZvcm0tZmllbGQ+XG48bWF0LWZvcm0tZmllbGRcbiAgKm5nSWY9XCJtYXBQcm94aW1pdHlTdGF0ZS5jdXJyZW50UG9zaXRpb25Db29yZGluYXRlJCB8IGFzeW5jIGFzIGNvb3JkMlwiXG4gIGNsYXNzPVwiY29vcmRpbmF0ZXMyXCJcbj5cbiAgPHRleHRhcmVhXG4gICAgI3RleHRBcmVhXG4gICAgbWF0SW5wdXRcbiAgICByZWFkb25seVxuICAgIHJvd3M9XCIxXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwiJ2lnby5pbnRlZ3JhdGlvbi5tYXAtcHJveGltaXR5LXRvb2wubGF0JyB8IHRyYW5zbGF0ZVwiXG4gICAgW3ZhbHVlXT1cImNvb3JkMlsxXVwiXG4gID48L3RleHRhcmVhPlxuPC9tYXQtZm9ybS1maWVsZD5cblxuPGJ1dHRvblxuICAqbmdJZj1cIlxuICAgIChtYXBQcm94aW1pdHlTdGF0ZS5jdXJyZW50UG9zaXRpb25Db29yZGluYXRlJCB8IGFzeW5jKSAmJlxuICAgIChtYXBQcm94aW1pdHlTdGF0ZS5jdXJyZW50UG9zaXRpb25Db29yZGluYXRlJCB8IGFzeW5jKS5sZW5ndGhcbiAgXCJcbiAgbWF0LWljb24tYnV0dG9uXG4gIChjbGljayk9XCJjb3B5VGV4dFRvQ2xpcGJvYXJkKClcIlxuPlxuICA8bWF0LWljb24+Y29udGVudF9jb3B5PC9tYXQtaWNvbj5cbjwvYnV0dG9uPlxuPGRpdiBjbGFzcz1cInRpdGxlLWNvbnRhaW5lclwiPlxuICA8bWF0LWxhYmVsIGNsYXNzPVwidGl0bGUgbWF0LXR5cG9ncmFwaHlcIj57e1xuICAgICdpZ28uaW50ZWdyYXRpb24ubWFwLXByb3hpbWl0eS10b29sLm1ldGhvZCcgfCB0cmFuc2xhdGVcbiAgfX08L21hdC1sYWJlbD5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImlnby1pbnB1dC1jb250YWluZXIgbWF0LXR5cG9ncmFwaHlcIj5cbiAgPG1hdC1yYWRpby1ncm91cCAoY2hhbmdlKT1cIm9uTG9jYXRpb25UeXBlQ2hhbmdlKCRldmVudClcIj5cbiAgICA8bWF0LXJhZGlvLWJ1dHRvblxuICAgICAgW2NoZWNrZWRdPVwiXG4gICAgICAgIChtYXBQcm94aW1pdHlTdGF0ZS5wcm94aW1pdHlsb2NhdGlvblR5cGUkIHwgYXN5bmMpID09PSAnZ2VvbG9jYXRpb24nXG4gICAgICBcIlxuICAgICAgdmFsdWU9XCJnZW9sb2NhdGlvblwiXG4gICAgICA+e3tcbiAgICAgICAgJ2lnby5pbnRlZ3JhdGlvbi5tYXAtcHJveGltaXR5LXRvb2wuZ2VvbG9jYXRpb24nIHwgdHJhbnNsYXRlXG4gICAgICB9fTwvbWF0LXJhZGlvLWJ1dHRvblxuICAgID5cbiAgICA8bWF0LXJhZGlvLWJ1dHRvblxuICAgICAgW2NoZWNrZWRdPVwiXG4gICAgICAgIChtYXBQcm94aW1pdHlTdGF0ZS5wcm94aW1pdHlsb2NhdGlvblR5cGUkIHwgYXN5bmMpID09PSAnbWFwQ2VudGVyJ1xuICAgICAgXCJcbiAgICAgIHZhbHVlPVwibWFwQ2VudGVyXCJcbiAgICAgID57e1xuICAgICAgICAnaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5tYXBDZW50ZXInIHwgdHJhbnNsYXRlXG4gICAgICB9fTwvbWF0LXJhZGlvLWJ1dHRvblxuICAgID5cbiAgPC9tYXQtcmFkaW8tZ3JvdXA+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cInJhZGl1cy11bml0XCI+XG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInJhZGl1cy1maWVsZFwiIGZsb2F0TGFiZWw9XCJhbHdheXNcIj5cbiAgICA8bWF0LWxhYmVsPnt7XG4gICAgICAnaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5yYWRpdXNNJyB8IHRyYW5zbGF0ZVxuICAgIH19PC9tYXQtbGFiZWw+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgIHBhdHRlcm49XCJbMC05XSpcIlxuICAgICAgWyhuZ01vZGVsKV09XCJtYXhEaXN0YW5jZVwiXG4gICAgICBtYXRJbnB1dFxuICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xuICAgICAgICAnaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5yYWRpdXNNJyB8IHRyYW5zbGF0ZVxuICAgICAgfX1cIlxuICAgIC8+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { StorageService } from '@igo2/core';
2
+ import { StorageService } from '@igo2/core/storage';
3
3
  import { FEATURE, FeatureStore, featureFromOl, measureOlGeometryLength, roundCoordTo } from '@igo2/geo';
4
4
  import { uuid } from '@igo2/utils';
5
5
  import GeoJSON from 'ol/format/GeoJSON';
@@ -11,7 +11,7 @@ import { debounceTime } from 'rxjs/operators';
11
11
  import { MapState } from '../map/map.state';
12
12
  import * as i0 from "@angular/core";
13
13
  import * as i1 from "../map/map.state";
14
- import * as i2 from "@igo2/core";
14
+ import * as i2 from "@igo2/core/storage";
15
15
  /**
16
16
  * Service that holds the state of the direction module
17
17
  */
@@ -168,13 +168,13 @@ export class MapProximityState {
168
168
  }
169
169
  return label;
170
170
  }
171
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", 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.1", 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.1", 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'
178
178
  }]
179
179
  }], ctorParameters: () => [{ type: i1.MapState }, { type: i2.StorageService }] });
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXByb3hpbWl0eS5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1wcm94aW1pdHkuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzVDLE9BQU8sRUFDTCxPQUFPLEVBRVAsWUFBWSxFQU1aLGFBQWEsRUFDYix1QkFBdUIsRUFDdkIsWUFBWSxFQUNiLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbkMsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUM7QUFFeEMsT0FBTyxZQUFZLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxhQUFhLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFHbEMsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7O0FBRTVDOztHQUVHO0FBSUgsTUFBTSxPQUFPLGlCQUFpQjtJQW1CbEI7SUFDQTtJQW5CRiwyQkFBMkIsR0FBVyxFQUFFLENBQUM7SUFFMUMsUUFBUSxHQUE2QixJQUFJLGVBQWUsQ0FDN0QsS0FBSyxDQUNOLENBQUM7SUFDSyxxQkFBcUIsQ0FBMEI7SUFDL0Msc0JBQXNCLEdBQzNCLElBQUksZUFBZSxDQUFTLGFBQWEsQ0FBQyxDQUFDO0lBQ3RDLHFCQUFxQixDQUF3QjtJQUM1QyxNQUFNLEdBQW1CLEVBQUUsQ0FBQztJQUM3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UUFDSCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQWdCLEVBQUUsVUFBVTtRQUN4QyxJQUFJLEtBQUssR0FBRyxVQUFVLENBQUM7UUFDdkIsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUV4RSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDdkIsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztRQUVILDBDQUEwQztRQUMxQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNwRCxLQUFLLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUM7UUFDdkQsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzt1R0F2T1UsaUJBQWlCOzJHQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs7MkZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgRkVBVFVSRSxcclxuICBGZWF0dXJlLFxyXG4gIEZlYXR1cmVTdG9yZSxcclxuICBJZ29NYXAsXHJcbiAgTGF5ZXIsXHJcbiAgTWFwR2VvbG9jYXRpb25TdGF0ZSxcclxuICBRdWVyeWFibGVEYXRhU291cmNlLFxyXG4gIFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zLFxyXG4gIGZlYXR1cmVGcm9tT2wsXHJcbiAgbWVhc3VyZU9sR2VvbWV0cnlMZW5ndGgsXHJcbiAgcm91bmRDb29yZFRvXHJcbn0gZnJvbSAnQGlnbzIvZ2VvJztcclxuaW1wb3J0IHsgdXVpZCB9IGZyb20gJ0BpZ28yL3V0aWxzJztcclxuXHJcbmltcG9ydCBHZW9KU09OIGZyb20gJ29sL2Zvcm1hdC9HZW9KU09OJztcclxuaW1wb3J0IEdlb21ldHJ5IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xyXG5pbXBvcnQgb2xMaW5lU3RyaW5nIGZyb20gJ29sL2dlb20vTGluZVN0cmluZyc7XHJcbmltcG9ydCBvbExheWVyVmVjdG9yIGZyb20gJ29sL2xheWVyL1ZlY3Rvcic7XHJcbmltcG9ydCAqIGFzIG9sUHJvaiBmcm9tICdvbC9wcm9qJztcclxuaW1wb3J0IG9sVmVjdG9yU291cmNlIGZyb20gJ29sL3NvdXJjZS9WZWN0b3InO1xyXG5cclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGNvbWJpbmVMYXRlc3QsIGludGVydmFsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IE1hcFN0YXRlIH0gZnJvbSAnLi4vbWFwL21hcC5zdGF0ZSc7XHJcblxyXG4vKipcclxuICogU2VydmljZSB0aGF0IGhvbGRzIHRoZSBzdGF0ZSBvZiB0aGUgZGlyZWN0aW9uIG1vZHVsZVxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFwUHJveGltaXR5U3RhdGUge1xyXG4gIHByaXZhdGUgZGVmYXVsdFByb3hpbWl0eVJhZGl1c1ZhbHVlOiBudW1iZXIgPSAzMDtcclxuXHJcbiAgcHVibGljIGVuYWJsZWQkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KFxyXG4gICAgZmFsc2VcclxuICApO1xyXG4gIHB1YmxpYyBwcm94aW1pdHlSYWRpdXNWYWx1ZSQ6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+O1xyXG4gIHB1YmxpYyBwcm94aW1pdHlsb2NhdGlvblR5cGUkOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9XHJcbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJ2dlb2xvY2F0aW9uJyk7XHJcbiAgcHVibGljIHByb3hpbWl0eUZlYXR1cmVTdG9yZTogRmVhdHVyZVN0b3JlPEZlYXR1cmU+O1xyXG4gIHByaXZhdGUgc3VicyQkOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIHB1YmxpYyBjdXJyZW50UG9zaXRpb25Db29yZGluYXRlJDogQmVoYXZpb3JTdWJqZWN0PFtudW1iZXIsIG51bWJlcl0+ID1cclxuICAgIG5ldyBCZWhhdmlvclN1YmplY3QodW5kZWZpbmVkKTtcclxuXHJcbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xyXG4gICAgcmV0dXJuIHRoaXMubWFwU3RhdGUubWFwO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG1hcFN0YXRlOiBNYXBTdGF0ZSxcclxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLnByb3hpbWl0eUZlYXR1cmVTdG9yZSA9IG5ldyBGZWF0dXJlU3RvcmU8RmVhdHVyZT4oW10sIHtcclxuICAgICAgbWFwOiB0aGlzLm1hcFN0YXRlLm1hcFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5wcm94aW1pdHlSYWRpdXNWYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oXHJcbiAgICAgICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldCgnbWFwUHJveGltaXR5UmFkaXVzJykgYXMgbnVtYmVyKSB8fFxyXG4gICAgICAgIHRoaXMuZGVmYXVsdFByb3hpbWl0eVJhZGl1c1ZhbHVlXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMubWFwU3RhdGUubWFwLm9sLm9uY2UoJ3JlbmRlcmNvbXBsZXRlJywgKCkgPT4ge1xyXG4gICAgICB0aGlzLnN1YnNjcmliZVByb3hpbWl0eU1vbml0b3IoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc3Vic2NyaWJlUHJveGltaXR5TW9uaXRvcigpIHtcclxuICAgIHRoaXMuc3VicyQkLnB1c2goXHJcbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgICAgIHRoaXMuZW5hYmxlZCQsXHJcbiAgICAgICAgdGhpcy5wcm94aW1pdHlsb2NhdGlvblR5cGUkLFxyXG4gICAgICAgIHRoaXMucHJveGltaXR5UmFkaXVzVmFsdWUkLFxyXG4gICAgICAgIGludGVydmFsKDUwMDApLFxyXG4gICAgICAgIHRoaXMubWFwLmdlb2xvY2F0aW9uQ29udHJvbGxlci5wb3NpdGlvbiRcclxuICAgICAgXSlcclxuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoNzUwKSlcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKGJ1bmNoOiBbYm9vbGVhbiwgc3RyaW5nLCBudW1iZXIsIG51bWJlciwgTWFwR2VvbG9jYXRpb25TdGF0ZV0pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wcm94aW1pdHlGZWF0dXJlU3RvcmUuY2xlYXIoKTtcclxuICAgICAgICAgICAgY29uc3QgZW5hYmxlZCA9IGJ1bmNoWzBdO1xyXG4gICAgICAgICAgICBjb25zdCBsYXllcnMgPSB0aGlzLm1hcC5sYXllcnM7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQb3MgPSB0aGlzLm1hcC5nZW9sb2NhdGlvbkNvbnRyb2xsZXIucG9zaXRpb24kLnZhbHVlO1xyXG4gICAgICAgICAgICBjb25zdCBsb2NhdGlvblR5cGUgPSBidW5jaFsxXTtcclxuICAgICAgICAgICAgY29uc3QgcHJveGltaXR5UmFkaXVzVmFsdWUgPSBidW5jaFsyXTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXQoXHJcbiAgICAgICAgICAgICAgJ21hcFByb3hpbWl0eVJhZGl1cycsXHJcbiAgICAgICAgICAgICAgcHJveGltaXR5UmFkaXVzVmFsdWUgfHwgdGhpcy5kZWZhdWx0UHJveGltaXR5UmFkaXVzVmFsdWVcclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGlmICghZW5hYmxlZCkge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IGNvb3JkOiBudW1iZXJbXTtcclxuICAgICAgICAgICAgaWYgKGxvY2F0aW9uVHlwZSA9PT0gJ2dlb2xvY2F0aW9uJykge1xyXG4gICAgICAgICAgICAgIGlmICghY3VycmVudFBvcyB8fCAhY3VycmVudFBvcy5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgY29vcmQgPSBvbFByb2oudHJhbnNmb3JtKFxyXG4gICAgICAgICAgICAgICAgY3VycmVudFBvcy5wb3NpdGlvbixcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRQb3MucHJvamVjdGlvbixcclxuICAgICAgICAgICAgICAgIHRoaXMubWFwLnByb2plY3Rpb25cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIHRoaXMubWFwLm1hcENlbnRlciQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29vcmQgPSB0aGlzLm1hcC52aWV3Q29udHJvbGxlci5nZXRDZW50ZXIoKTtcclxuICAgICAgICAgICAgICB0aGlzLm1hcC5tYXBDZW50ZXIkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGNvb3JkTG9uTGF0ID0gb2xQcm9qLnRyYW5zZm9ybShcclxuICAgICAgICAgICAgICBjb29yZCxcclxuICAgICAgICAgICAgICB0aGlzLm1hcC5wcm9qZWN0aW9uLFxyXG4gICAgICAgICAgICAgICdFUFNHOjQyNjknXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJvdW5kZWRDb29yZExvbkxhdCA9IHJvdW5kQ29vcmRUbyhcclxuICAgICAgICAgICAgICBjb29yZExvbkxhdCBhcyBbbnVtYmVyLCBudW1iZXJdLFxyXG4gICAgICAgICAgICAgIDZcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50UG9zaXRpb25Db29yZGluYXRlJC5uZXh0KHJvdW5kZWRDb29yZExvbkxhdCk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBsYXllcnNUb01vbml0b3IgPSBsYXllcnMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgIChsYXllcikgPT5cclxuICAgICAgICAgICAgICAgIGxheWVyLm9sIGluc3RhbmNlb2Ygb2xMYXllclZlY3RvciAmJlxyXG4gICAgICAgICAgICAgICAgKGxheWVyLmRhdGFTb3VyY2UgYXMgUXVlcnlhYmxlRGF0YVNvdXJjZSkub3B0aW9ucy5xdWVyeWFibGUgJiZcclxuICAgICAgICAgICAgICAgIGxheWVyLnZpc2libGUgJiZcclxuICAgICAgICAgICAgICAgIGxheWVyLmlzSW5SZXNvbHV0aW9uc1JhbmdlXHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBsYXllcnNUb01vbml0b3IubWFwKChsYXllclRvTW9uaXRvcikgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGxheWVyU291cmNlID1cclxuICAgICAgICAgICAgICAgIGxheWVyVG9Nb25pdG9yLm9sLmdldFNvdXJjZSgpIGFzIG9sVmVjdG9yU291cmNlPEdlb21ldHJ5PjtcclxuXHJcbiAgICAgICAgICAgICAgLy8gTW9zdGx5IGZvciBwb2x5Z29uIGZlYXR1cmVzLlxyXG4gICAgICAgICAgICAgIGNvbnN0IG9sRmVhdHVyZXNBdENvb3JkaW5hdGUgPVxyXG4gICAgICAgICAgICAgICAgbGF5ZXJTb3VyY2UuZ2V0RmVhdHVyZXNBdENvb3JkaW5hdGUoY29vcmQpO1xyXG4gICAgICAgICAgICAgIGlmIChvbEZlYXR1cmVzQXRDb29yZGluYXRlICYmIG9sRmVhdHVyZXNBdENvb3JkaW5hdGUubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBvbEZlYXR1cmVzQXRDb29yZGluYXRlLm1hcCgob2xGZWF0dXJlQXRDb29yZGluYXRlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZlYXR1cmVBdFRoaXNQb3NpdGlvbiA9IGZlYXR1cmVGcm9tT2woXHJcbiAgICAgICAgICAgICAgICAgICAgb2xGZWF0dXJlQXRDb29yZGluYXRlLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFwLnByb2plY3Rpb25cclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gdGhpcy5nZXRRdWVyeVRpdGxlKFxyXG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVBdFRoaXNQb3NpdGlvbixcclxuICAgICAgICAgICAgICAgICAgICBsYXllclRvTW9uaXRvclxyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAvLyB0b2RvIGhhbmRsZSBpbXBvcnRlZCBsYXllcnMgd2l0aG91dCBxdWVyeXRpdGxlPyBwcm9tcHQgdGl0bGUgb3IgZGV0ZWN0IGZpcnN0IGNvbHVtbj9cclxuICAgICAgICAgICAgICAgICAgdGhpcy5hZGRGZWF0dXJlVG9TdG9yZShcclxuICAgICAgICAgICAgICAgICAgICBsYXllclRvTW9uaXRvcixcclxuICAgICAgICAgICAgICAgICAgICBjb29yZCxcclxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlQXRUaGlzUG9zaXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgMFxyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbXB1dGUgcHJveGltaXR5IGZvciByZW1haW5pbmcgc291cmNlc1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdE9sRmVhdHVyZSA9XHJcbiAgICAgICAgICAgICAgICAgIGxheWVyU291cmNlLmdldENsb3Nlc3RGZWF0dXJlVG9Db29yZGluYXRlKGNvb3JkKTtcclxuICAgICAgICAgICAgICAgIGlmIChjbG9zZXN0T2xGZWF0dXJlKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNsb3Nlc3RPbEdlb20gPSBjbG9zZXN0T2xGZWF0dXJlLmdldEdlb21ldHJ5KCk7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNsb3Nlc3RGZWF0dXJlID0gZmVhdHVyZUZyb21PbChcclxuICAgICAgICAgICAgICAgICAgICBjbG9zZXN0T2xGZWF0dXJlLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFwLnByb2plY3Rpb25cclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgZ2VvbWV0cnlDbG9zZXN0UG9pbnQgPVxyXG4gICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RPbEdlb20uZ2V0Q2xvc2VzdFBvaW50KGNvb3JkKTtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgbGluZWJldHdlZW4gPSBuZXcgb2xMaW5lU3RyaW5nKFtcclxuICAgICAgICAgICAgICAgICAgICBjb29yZCxcclxuICAgICAgICAgICAgICAgICAgICBnZW9tZXRyeUNsb3Nlc3RQb2ludFxyXG4gICAgICAgICAgICAgICAgICBdKTtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgbGluZUxlbmd0aCA9IG1lYXN1cmVPbEdlb21ldHJ5TGVuZ3RoKFxyXG4gICAgICAgICAgICAgICAgICAgIGxpbmViZXR3ZWVuLFxyXG4gICAgICAgICAgICAgICAgICAgICdFUFNHOjM4NTcnXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChsaW5lTGVuZ3RoIDw9IHByb3hpbWl0eVJhZGl1c1ZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gdGhpcy5nZXRRdWVyeVRpdGxlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xvc2VzdEZlYXR1cmUsXHJcbiAgICAgICAgICAgICAgICAgICAgICBsYXllclRvTW9uaXRvclxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdG9kbyBoYW5kbGUgaW1wb3J0ZWQgbGF5ZXJzIHdpdGhvdXQgcXVlcnl0aXRsZT8gcHJvbXB0IHRpdGxlIG9yIGRldGVjdCBmaXJzdCBjb2x1bW4/XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRGZWF0dXJlVG9TdG9yZShcclxuICAgICAgICAgICAgICAgICAgICAgIGxheWVyVG9Nb25pdG9yLFxyXG4gICAgICAgICAgICAgICAgICAgICAgY29vcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbG9zZXN0RmVhdHVyZSxcclxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgbGluZUxlbmd0aFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgYSBmZWF0dXJlIHdpdGggcHJveGltaXR5IHByb3BlcnRpZXMgdG8gdGhlIHN0b3JlXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhZGRGZWF0dXJlVG9TdG9yZShcclxuICAgIGxheWVyOiBMYXllcixcclxuICAgIGNvb3JkRnJvbUNhbGN1bGF0ZWREaXN0YW5jZSxcclxuICAgIGZlYXR1cmU6IEZlYXR1cmUsXHJcbiAgICB0aXRsZSxcclxuICAgIGRpc3RhbmNlXHJcbiAgKSB7XHJcbiAgICBjb25zdCBmZWF0dXJlSWQgPSB1dWlkKCk7XHJcbiAgICBjb25zdCBwcm9qZWN0aW9uID0gdGhpcy5tYXAub2wuZ2V0VmlldygpLmdldFByb2plY3Rpb24oKTtcclxuICAgIGNvbnN0IG9sR2VvbWV0cnkgPSBmZWF0dXJlLm9sLmdldEdlb21ldHJ5KCkgYXMgR2VvbWV0cnk7XHJcbiAgICBjb25zdCBnZW9tZXRyeSA9IG5ldyBHZW9KU09OKCkud3JpdGVHZW9tZXRyeU9iamVjdChvbEdlb21ldHJ5LCB7XHJcbiAgICAgIGZlYXR1cmVQcm9qZWN0aW9uOiBwcm9qZWN0aW9uLFxyXG4gICAgICBkYXRhUHJvamVjdGlvbjogcHJvamVjdGlvblxyXG4gICAgfSkgYXMgYW55O1xyXG4gICAgdGhpcy5wcm94aW1pdHlGZWF0dXJlU3RvcmUudXBkYXRlKHtcclxuICAgICAgdHlwZTogRkVBVFVSRSxcclxuICAgICAgZ2VvbWV0cnksXHJcbiAgICAgIHByb2plY3Rpb246IHByb2plY3Rpb24uZ2V0Q29kZSgpLFxyXG4gICAgICBwcm9wZXJ0aWVzOiB7XHJcbiAgICAgICAgLi4uZmVhdHVyZS5wcm9wZXJ0aWVzLFxyXG4gICAgICAgIC4uLntcclxuICAgICAgICAgIGlkOiBmZWF0dXJlSWQsXHJcbiAgICAgICAgICBlbGVtZW50OiB0aXRsZSxcclxuICAgICAgICAgIGRpc3RhbmNlLFxyXG4gICAgICAgICAgY29vcmRGcm9tQ2FsY3VsYXRlZERpc3RhbmNlLFxyXG4gICAgICAgICAgbGF5ZXJTcmNJZDogbGF5ZXIuaWQsXHJcbiAgICAgICAgICBsYXllclNyY1RpdGxlOiBsYXllci50aXRsZVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgbWV0YToge1xyXG4gICAgICAgIGlkOiBmZWF0dXJlSWRcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRRdWVyeVRpdGxlKGZlYXR1cmU6IEZlYXR1cmUsIGxheWVyOiBMYXllcik6IHN0cmluZyB7XHJcbiAgICBsZXQgdGl0bGU7XHJcbiAgICBpZiAobGF5ZXIub3B0aW9ucz8uc291cmNlPy5vcHRpb25zKSB7XHJcbiAgICAgIGNvbnN0IGRhdGFTb3VyY2VPcHRpb25zID0gbGF5ZXIub3B0aW9ucy5zb3VyY2VcclxuICAgICAgICAub3B0aW9ucyBhcyBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9ucztcclxuICAgICAgaWYgKGRhdGFTb3VyY2VPcHRpb25zLnF1ZXJ5VGl0bGUpIHtcclxuICAgICAgICB0aXRsZSA9IHRoaXMuZ2V0TGFiZWxNYXRjaChmZWF0dXJlLCBkYXRhU291cmNlT3B0aW9ucy5xdWVyeVRpdGxlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRpdGxlO1xyXG4gIH1cclxuXHJcbiAgZ2V0TGFiZWxNYXRjaChmZWF0dXJlOiBGZWF0dXJlLCBsYWJlbE1hdGNoKTogc3RyaW5nIHtcclxuICAgIGxldCBsYWJlbCA9IGxhYmVsTWF0Y2g7XHJcbiAgICBjb25zdCBsYWJlbFRvR2V0ID0gQXJyYXkuZnJvbShsYWJlbE1hdGNoLm1hdGNoQWxsKC9cXCRcXHsoW15cXHtcXH1dKylcXH0vZykpO1xyXG5cclxuICAgIGxhYmVsVG9HZXQuZm9yRWFjaCgodikgPT4ge1xyXG4gICAgICBsYWJlbCA9IGxhYmVsLnJlcGxhY2UodlswXSwgZmVhdHVyZS5wcm9wZXJ0aWVzW3ZbMV1dKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIE5vdGhpbmcgZG9uZT8gY2hlY2sgZmVhdHVyZSdzIGF0dHJpYnV0ZVxyXG4gICAgaWYgKGxhYmVsVG9HZXQubGVuZ3RoID09PSAwICYmIGxhYmVsID09PSBsYWJlbE1hdGNoKSB7XHJcbiAgICAgIGxhYmVsID0gZmVhdHVyZS5wcm9wZXJ0aWVzW2xhYmVsTWF0Y2hdIHx8IGxhYmVsTWF0Y2g7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbGFiZWw7XHJcbiAgfVxyXG59XHJcbiJdfQ==
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXByb3hpbWl0eS5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1wcm94aW1pdHkuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUNMLE9BQU8sRUFFUCxZQUFZLEVBTVosYUFBYSxFQUNiLHVCQUF1QixFQUN2QixZQUFZLEVBQ2IsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuQyxPQUFPLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQztBQUV4QyxPQUFPLFlBQVksTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLGFBQWEsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUdsQyxPQUFPLEVBQUUsZUFBZSxFQUFnQixhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFFNUM7O0dBRUc7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBbUJsQjtJQUNBO0lBbkJGLDJCQUEyQixHQUFXLEVBQUUsQ0FBQztJQUUxQyxRQUFRLEdBQTZCLElBQUksZUFBZSxDQUM3RCxLQUFLLENBQ04sQ0FBQztJQUNLLHFCQUFxQixDQUEwQjtJQUMvQyxzQkFBc0IsR0FDM0IsSUFBSSxlQUFlLENBQVMsYUFBYSxDQUFDLENBQUM7SUFDdEMscUJBQXFCLENBQXdCO0lBQzVDLE1BQU0sR0FBbUIsRUFBRSxDQUFDO0lB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QztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBZ0IsRUFBRSxVQUFVO1FBQ3hDLElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQztRQUN2QixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1FBRXhFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN2QixLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FBQyxDQUFDO1FBRUgsMENBQTBDO1FBQzFDLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3BELEtBQUssR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQztRQUN2RCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO3VHQXZPVSxpQkFBaUI7MkdBQWpCLGlCQUFpQixjQUZoQixNQUFNOzsyRkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvc3RvcmFnZSc7XG5pbXBvcnQge1xuICBGRUFUVVJFLFxuICBGZWF0dXJlLFxuICBGZWF0dXJlU3RvcmUsXG4gIElnb01hcCxcbiAgTGF5ZXIsXG4gIE1hcEdlb2xvY2F0aW9uU3RhdGUsXG4gIFF1ZXJ5YWJsZURhdGFTb3VyY2UsXG4gIFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zLFxuICBmZWF0dXJlRnJvbU9sLFxuICBtZWFzdXJlT2xHZW9tZXRyeUxlbmd0aCxcbiAgcm91bmRDb29yZFRvXG59IGZyb20gJ0BpZ28yL2dlbyc7XG5pbXBvcnQgeyB1dWlkIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgR2VvSlNPTiBmcm9tICdvbC9mb3JtYXQvR2VvSlNPTic7XG5pbXBvcnQgR2VvbWV0cnkgZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XG5pbXBvcnQgb2xMaW5lU3RyaW5nIGZyb20gJ29sL2dlb20vTGluZVN0cmluZyc7XG5pbXBvcnQgb2xMYXllclZlY3RvciBmcm9tICdvbC9sYXllci9WZWN0b3InO1xuaW1wb3J0ICogYXMgb2xQcm9qIGZyb20gJ29sL3Byb2onO1xuaW1wb3J0IG9sVmVjdG9yU291cmNlIGZyb20gJ29sL3NvdXJjZS9WZWN0b3InO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiwgY29tYmluZUxhdGVzdCwgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTWFwU3RhdGUgfSBmcm9tICcuLi9tYXAvbWFwLnN0YXRlJztcblxuLyoqXG4gKiBTZXJ2aWNlIHRoYXQgaG9sZHMgdGhlIHN0YXRlIG9mIHRoZSBkaXJlY3Rpb24gbW9kdWxlXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1hcFByb3hpbWl0eVN0YXRlIHtcbiAgcHJpdmF0ZSBkZWZhdWx0UHJveGltaXR5UmFkaXVzVmFsdWU6IG51bWJlciA9IDMwO1xuXG4gIHB1YmxpYyBlbmFibGVkJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihcbiAgICBmYWxzZVxuICApO1xuICBwdWJsaWMgcHJveGltaXR5UmFkaXVzVmFsdWUkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPjtcbiAgcHVibGljIHByb3hpbWl0eWxvY2F0aW9uVHlwZSQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJ2dlb2xvY2F0aW9uJyk7XG4gIHB1YmxpYyBwcm94aW1pdHlGZWF0dXJlU3RvcmU6IEZlYXR1cmVTdG9yZTxGZWF0dXJlPjtcbiAgcHJpdmF0ZSBzdWJzJCQ6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHB1YmxpYyBjdXJyZW50UG9zaXRpb25Db29yZGluYXRlJDogQmVoYXZpb3JTdWJqZWN0PFtudW1iZXIsIG51bWJlcl0+ID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0KHVuZGVmaW5lZCk7XG5cbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xuICAgIHJldHVybiB0aGlzLm1hcFN0YXRlLm1hcDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWFwU3RhdGU6IE1hcFN0YXRlLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMucHJveGltaXR5RmVhdHVyZVN0b3JlID0gbmV3IEZlYXR1cmVTdG9yZTxGZWF0dXJlPihbXSwge1xuICAgICAgbWFwOiB0aGlzLm1hcFN0YXRlLm1hcFxuICAgIH0pO1xuXG4gICAgdGhpcy5wcm94aW1pdHlSYWRpdXNWYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oXG4gICAgICAodGhpcy5zdG9yYWdlU2VydmljZS5nZXQoJ21hcFByb3hpbWl0eVJhZGl1cycpIGFzIG51bWJlcikgfHxcbiAgICAgICAgdGhpcy5kZWZhdWx0UHJveGltaXR5UmFkaXVzVmFsdWVcbiAgICApO1xuXG4gICAgdGhpcy5tYXBTdGF0ZS5tYXAub2wub25jZSgncmVuZGVyY29tcGxldGUnLCAoKSA9PiB7XG4gICAgICB0aGlzLnN1YnNjcmliZVByb3hpbWl0eU1vbml0b3IoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN1YnNjcmliZVByb3hpbWl0eU1vbml0b3IoKSB7XG4gICAgdGhpcy5zdWJzJCQucHVzaChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmVuYWJsZWQkLFxuICAgICAgICB0aGlzLnByb3hpbWl0eWxvY2F0aW9uVHlwZSQsXG4gICAgICAgIHRoaXMucHJveGltaXR5UmFkaXVzVmFsdWUkLFxuICAgICAgICBpbnRlcnZhbCg1MDAwKSxcbiAgICAgICAgdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLnBvc2l0aW9uJFxuICAgICAgXSlcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDc1MCkpXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgKGJ1bmNoOiBbYm9vbGVhbiwgc3RyaW5nLCBudW1iZXIsIG51bWJlciwgTWFwR2VvbG9jYXRpb25TdGF0ZV0pID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJveGltaXR5RmVhdHVyZVN0b3JlLmNsZWFyKCk7XG4gICAgICAgICAgICBjb25zdCBlbmFibGVkID0gYnVuY2hbMF07XG4gICAgICAgICAgICBjb25zdCBsYXllcnMgPSB0aGlzLm1hcC5sYXllcnM7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50UG9zID0gdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLnBvc2l0aW9uJC52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uVHlwZSA9IGJ1bmNoWzFdO1xuICAgICAgICAgICAgY29uc3QgcHJveGltaXR5UmFkaXVzVmFsdWUgPSBidW5jaFsyXTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KFxuICAgICAgICAgICAgICAnbWFwUHJveGltaXR5UmFkaXVzJyxcbiAgICAgICAgICAgICAgcHJveGltaXR5UmFkaXVzVmFsdWUgfHwgdGhpcy5kZWZhdWx0UHJveGltaXR5UmFkaXVzVmFsdWVcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmICghZW5hYmxlZCkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBjb29yZDogbnVtYmVyW107XG4gICAgICAgICAgICBpZiAobG9jYXRpb25UeXBlID09PSAnZ2VvbG9jYXRpb24nKSB7XG4gICAgICAgICAgICAgIGlmICghY3VycmVudFBvcyB8fCAhY3VycmVudFBvcy5wb3NpdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvb3JkID0gb2xQcm9qLnRyYW5zZm9ybShcbiAgICAgICAgICAgICAgICBjdXJyZW50UG9zLnBvc2l0aW9uLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRQb3MucHJvamVjdGlvbixcbiAgICAgICAgICAgICAgICB0aGlzLm1hcC5wcm9qZWN0aW9uXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHRoaXMubWFwLm1hcENlbnRlciQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb29yZCA9IHRoaXMubWFwLnZpZXdDb250cm9sbGVyLmdldENlbnRlcigpO1xuICAgICAgICAgICAgICB0aGlzLm1hcC5tYXBDZW50ZXIkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNvb3JkTG9uTGF0ID0gb2xQcm9qLnRyYW5zZm9ybShcbiAgICAgICAgICAgICAgY29vcmQsXG4gICAgICAgICAgICAgIHRoaXMubWFwLnByb2plY3Rpb24sXG4gICAgICAgICAgICAgICdFUFNHOjQyNjknXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3Qgcm91bmRlZENvb3JkTG9uTGF0ID0gcm91bmRDb29yZFRvKFxuICAgICAgICAgICAgICBjb29yZExvbkxhdCBhcyBbbnVtYmVyLCBudW1iZXJdLFxuICAgICAgICAgICAgICA2XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50UG9zaXRpb25Db29yZGluYXRlJC5uZXh0KHJvdW5kZWRDb29yZExvbkxhdCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGxheWVyc1RvTW9uaXRvciA9IGxheWVycy5maWx0ZXIoXG4gICAgICAgICAgICAgIChsYXllcikgPT5cbiAgICAgICAgICAgICAgICBsYXllci5vbCBpbnN0YW5jZW9mIG9sTGF5ZXJWZWN0b3IgJiZcbiAgICAgICAgICAgICAgICAobGF5ZXIuZGF0YVNvdXJjZSBhcyBRdWVyeWFibGVEYXRhU291cmNlKS5vcHRpb25zLnF1ZXJ5YWJsZSAmJlxuICAgICAgICAgICAgICAgIGxheWVyLnZpc2libGUgJiZcbiAgICAgICAgICAgICAgICBsYXllci5pc0luUmVzb2x1dGlvbnNSYW5nZVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgbGF5ZXJzVG9Nb25pdG9yLm1hcCgobGF5ZXJUb01vbml0b3IpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbGF5ZXJTb3VyY2UgPVxuICAgICAgICAgICAgICAgIGxheWVyVG9Nb25pdG9yLm9sLmdldFNvdXJjZSgpIGFzIG9sVmVjdG9yU291cmNlO1xuXG4gICAgICAgICAgICAgIC8vIE1vc3RseSBmb3IgcG9seWdvbiBmZWF0dXJlcy5cbiAgICAgICAgICAgICAgY29uc3Qgb2xGZWF0dXJlc0F0Q29vcmRpbmF0ZSA9XG4gICAgICAgICAgICAgICAgbGF5ZXJTb3VyY2UuZ2V0RmVhdHVyZXNBdENvb3JkaW5hdGUoY29vcmQpO1xuICAgICAgICAgICAgICBpZiAob2xGZWF0dXJlc0F0Q29vcmRpbmF0ZSAmJiBvbEZlYXR1cmVzQXRDb29yZGluYXRlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIG9sRmVhdHVyZXNBdENvb3JkaW5hdGUubWFwKChvbEZlYXR1cmVBdENvb3JkaW5hdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZlYXR1cmVBdFRoaXNQb3NpdGlvbiA9IGZlYXR1cmVGcm9tT2woXG4gICAgICAgICAgICAgICAgICAgIG9sRmVhdHVyZUF0Q29vcmRpbmF0ZSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAucHJvamVjdGlvblxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IHRoaXMuZ2V0UXVlcnlUaXRsZShcbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZUF0VGhpc1Bvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICBsYXllclRvTW9uaXRvclxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIC8vIHRvZG8gaGFuZGxlIGltcG9ydGVkIGxheWVycyB3aXRob3V0IHF1ZXJ5dGl0bGU/IHByb21wdCB0aXRsZSBvciBkZXRlY3QgZmlyc3QgY29sdW1uP1xuICAgICAgICAgICAgICAgICAgdGhpcy5hZGRGZWF0dXJlVG9TdG9yZShcbiAgICAgICAgICAgICAgICAgICAgbGF5ZXJUb01vbml0b3IsXG4gICAgICAgICAgICAgICAgICAgIGNvb3JkLFxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlQXRUaGlzUG9zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGNvbXB1dGUgcHJveGltaXR5IGZvciByZW1haW5pbmcgc291cmNlc1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsb3Nlc3RPbEZlYXR1cmUgPVxuICAgICAgICAgICAgICAgICAgbGF5ZXJTb3VyY2UuZ2V0Q2xvc2VzdEZlYXR1cmVUb0Nvb3JkaW5hdGUoY29vcmQpO1xuICAgICAgICAgICAgICAgIGlmIChjbG9zZXN0T2xGZWF0dXJlKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0T2xHZW9tID0gY2xvc2VzdE9sRmVhdHVyZS5nZXRHZW9tZXRyeSgpO1xuICAgICAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdEZlYXR1cmUgPSBmZWF0dXJlRnJvbU9sKFxuICAgICAgICAgICAgICAgICAgICBjbG9zZXN0T2xGZWF0dXJlLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcC5wcm9qZWN0aW9uXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgY29uc3QgZ2VvbWV0cnlDbG9zZXN0UG9pbnQgPVxuICAgICAgICAgICAgICAgICAgICBjbG9zZXN0T2xHZW9tLmdldENsb3Nlc3RQb2ludChjb29yZCk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBsaW5lYmV0d2VlbiA9IG5ldyBvbExpbmVTdHJpbmcoW1xuICAgICAgICAgICAgICAgICAgICBjb29yZCxcbiAgICAgICAgICAgICAgICAgICAgZ2VvbWV0cnlDbG9zZXN0UG9pbnRcbiAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgY29uc3QgbGluZUxlbmd0aCA9IG1lYXN1cmVPbEdlb21ldHJ5TGVuZ3RoKFxuICAgICAgICAgICAgICAgICAgICBsaW5lYmV0d2VlbixcbiAgICAgICAgICAgICAgICAgICAgJ0VQU0c6Mzg1NydcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBpZiAobGluZUxlbmd0aCA8PSBwcm94aW1pdHlSYWRpdXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSB0aGlzLmdldFF1ZXJ5VGl0bGUoXG4gICAgICAgICAgICAgICAgICAgICAgY2xvc2VzdEZlYXR1cmUsXG4gICAgICAgICAgICAgICAgICAgICAgbGF5ZXJUb01vbml0b3JcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gdG9kbyBoYW5kbGUgaW1wb3J0ZWQgbGF5ZXJzIHdpdGhvdXQgcXVlcnl0aXRsZT8gcHJvbXB0IHRpdGxlIG9yIGRldGVjdCBmaXJzdCBjb2x1bW4/XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRmVhdHVyZVRvU3RvcmUoXG4gICAgICAgICAgICAgICAgICAgICAgbGF5ZXJUb01vbml0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgY29vcmQsXG4gICAgICAgICAgICAgICAgICAgICAgY2xvc2VzdEZlYXR1cmUsXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgbGluZUxlbmd0aFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBmZWF0dXJlIHdpdGggcHJveGltaXR5IHByb3BlcnRpZXMgdG8gdGhlIHN0b3JlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBhZGRGZWF0dXJlVG9TdG9yZShcbiAgICBsYXllcjogTGF5ZXIsXG4gICAgY29vcmRGcm9tQ2FsY3VsYXRlZERpc3RhbmNlLFxuICAgIGZlYXR1cmU6IEZlYXR1cmUsXG4gICAgdGl0bGUsXG4gICAgZGlzdGFuY2VcbiAgKSB7XG4gICAgY29uc3QgZmVhdHVyZUlkID0gdXVpZCgpO1xuICAgIGNvbnN0IHByb2plY3Rpb24gPSB0aGlzLm1hcC5vbC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpO1xuICAgIGNvbnN0IG9sR2VvbWV0cnkgPSBmZWF0dXJlLm9sLmdldEdlb21ldHJ5KCkgYXMgR2VvbWV0cnk7XG4gICAgY29uc3QgZ2VvbWV0cnkgPSBuZXcgR2VvSlNPTigpLndyaXRlR2VvbWV0cnlPYmplY3Qob2xHZW9tZXRyeSwge1xuICAgICAgZmVhdHVyZVByb2plY3Rpb246IHByb2plY3Rpb24sXG4gICAgICBkYXRhUHJvamVjdGlvbjogcHJvamVjdGlvblxuICAgIH0pIGFzIGFueTtcbiAgICB0aGlzLnByb3hpbWl0eUZlYXR1cmVTdG9yZS51cGRhdGUoe1xuICAgICAgdHlwZTogRkVBVFVSRSxcbiAgICAgIGdlb21ldHJ5LFxuICAgICAgcHJvamVjdGlvbjogcHJvamVjdGlvbi5nZXRDb2RlKCksXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIC4uLmZlYXR1cmUucHJvcGVydGllcyxcbiAgICAgICAgLi4ue1xuICAgICAgICAgIGlkOiBmZWF0dXJlSWQsXG4gICAgICAgICAgZWxlbWVudDogdGl0bGUsXG4gICAgICAgICAgZGlzdGFuY2UsXG4gICAgICAgICAgY29vcmRGcm9tQ2FsY3VsYXRlZERpc3RhbmNlLFxuICAgICAgICAgIGxheWVyU3JjSWQ6IGxheWVyLmlkLFxuICAgICAgICAgIGxheWVyU3JjVGl0bGU6IGxheWVyLnRpdGxlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBtZXRhOiB7XG4gICAgICAgIGlkOiBmZWF0dXJlSWRcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldFF1ZXJ5VGl0bGUoZmVhdHVyZTogRmVhdHVyZSwgbGF5ZXI6IExheWVyKTogc3RyaW5nIHtcbiAgICBsZXQgdGl0bGU7XG4gICAgaWYgKGxheWVyLm9wdGlvbnM/LnNvdXJjZT8ub3B0aW9ucykge1xuICAgICAgY29uc3QgZGF0YVNvdXJjZU9wdGlvbnMgPSBsYXllci5vcHRpb25zLnNvdXJjZVxuICAgICAgICAub3B0aW9ucyBhcyBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9ucztcbiAgICAgIGlmIChkYXRhU291cmNlT3B0aW9ucy5xdWVyeVRpdGxlKSB7XG4gICAgICAgIHRpdGxlID0gdGhpcy5nZXRMYWJlbE1hdGNoKGZlYXR1cmUsIGRhdGFTb3VyY2VPcHRpb25zLnF1ZXJ5VGl0bGUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGl0bGU7XG4gIH1cblxuICBnZXRMYWJlbE1hdGNoKGZlYXR1cmU6IEZlYXR1cmUsIGxhYmVsTWF0Y2gpOiBzdHJpbmcge1xuICAgIGxldCBsYWJlbCA9IGxhYmVsTWF0Y2g7XG4gICAgY29uc3QgbGFiZWxUb0dldCA9IEFycmF5LmZyb20obGFiZWxNYXRjaC5tYXRjaEFsbCgvXFwkXFx7KFteXFx7XFx9XSspXFx9L2cpKTtcblxuICAgIGxhYmVsVG9HZXQuZm9yRWFjaCgodikgPT4ge1xuICAgICAgbGFiZWwgPSBsYWJlbC5yZXBsYWNlKHZbMF0sIGZlYXR1cmUucHJvcGVydGllc1t2WzFdXSk7XG4gICAgfSk7XG5cbiAgICAvLyBOb3RoaW5nIGRvbmU/IGNoZWNrIGZlYXR1cmUncyBhdHRyaWJ1dGVcbiAgICBpZiAobGFiZWxUb0dldC5sZW5ndGggPT09IDAgJiYgbGFiZWwgPT09IGxhYmVsTWF0Y2gpIHtcbiAgICAgIGxhYmVsID0gZmVhdHVyZS5wcm9wZXJ0aWVzW2xhYmVsTWF0Y2hdIHx8IGxhYmVsTWF0Y2g7XG4gICAgfVxuICAgIHJldHVybiBsYWJlbDtcbiAgfVxufVxuIl19
@@ -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.1", 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.1", 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>\r\n <mat-tab [label]=\"'igo.integration.tools.map' | translate\">\r\n <igo-layer-list\r\n [map]=\"map\"\r\n igoLayerListBinding\r\n [excludeBaseLayers]=\"excludeBaseLayers\"\r\n [layerFilterAndSortOptions]=\"layerFilterAndSortOptions\"\r\n [expandLegendOfVisibleLayers]=\"expandLegendOfVisibleLayers\"\r\n [toggleLegendOnVisibilityChange]=\"toggleLegendOnVisibilityChange\"\r\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\r\n [queryBadge]=\"queryBadge\"\r\n >\r\n <ng-template #igoLayerItemToolbar let-layer=\"layer\">\r\n <!-- <igo-download-button [layer]=\"layer\"></igo-download-button> -->\r\n <igo-workspace-button [layer]=\"layer\"></igo-workspace-button>\r\n <igo-export-button\r\n [layer]=\"layer\"\r\n (click)=\"activateExport(layer)\"\r\n ></igo-export-button>\r\n <igo-ogc-filter-button\r\n [header]=\"ogcButton\"\r\n [layer]=\"layer\"\r\n ></igo-ogc-filter-button>\r\n <igo-time-filter-button\r\n [header]=\"timeButton\"\r\n [layer]=\"layer\"\r\n ></igo-time-filter-button>\r\n <igo-track-feature-button\r\n [trackFeature]=\"true\"\r\n [layer]=\"layer\"\r\n ></igo-track-feature-button>\r\n <igo-metadata-button [layer]=\"layer\"></igo-metadata-button>\r\n </ng-template>\r\n </igo-layer-list>\r\n </mat-tab>\r\n\r\n <mat-tab [label]=\"'igo.integration.tools.contexts' | translate\">\r\n <igo-context-list igoContextListBinding></igo-context-list>\r\n </mat-tab>\r\n</mat-tab-group>\r\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.1", 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,8 +96,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
96
96
  MetadataButtonComponent,
97
97
  ContextListComponent,
98
98
  ContextListBindingDirective,
99
- TranslateModule
100
- ], template: "<mat-tab-group>\r\n <mat-tab [label]=\"'igo.integration.tools.map' | translate\">\r\n <igo-layer-list\r\n [map]=\"map\"\r\n igoLayerListBinding\r\n [excludeBaseLayers]=\"excludeBaseLayers\"\r\n [layerFilterAndSortOptions]=\"layerFilterAndSortOptions\"\r\n [expandLegendOfVisibleLayers]=\"expandLegendOfVisibleLayers\"\r\n [toggleLegendOnVisibilityChange]=\"toggleLegendOnVisibilityChange\"\r\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\r\n [queryBadge]=\"queryBadge\"\r\n >\r\n <ng-template #igoLayerItemToolbar let-layer=\"layer\">\r\n <!-- <igo-download-button [layer]=\"layer\"></igo-download-button> -->\r\n <igo-workspace-button [layer]=\"layer\"></igo-workspace-button>\r\n <igo-export-button\r\n [layer]=\"layer\"\r\n (click)=\"activateExport(layer)\"\r\n ></igo-export-button>\r\n <igo-ogc-filter-button\r\n [header]=\"ogcButton\"\r\n [layer]=\"layer\"\r\n ></igo-ogc-filter-button>\r\n <igo-time-filter-button\r\n [header]=\"timeButton\"\r\n [layer]=\"layer\"\r\n ></igo-time-filter-button>\r\n <igo-track-feature-button\r\n [trackFeature]=\"true\"\r\n [layer]=\"layer\"\r\n ></igo-track-feature-button>\r\n <igo-metadata-button [layer]=\"layer\"></igo-metadata-button>\r\n </ng-template>\r\n </igo-layer-list>\r\n </mat-tab>\r\n\r\n <mat-tab [label]=\"'igo.integration.tools.contexts' | translate\">\r\n <igo-context-list igoContextListBinding></igo-context-list>\r\n </mat-tab>\r\n</mat-tab-group>\r\n", styles: [":host ::ng-deep .mat-mdc-tab-body-content{overflow:hidden}\n"] }]
99
+ IgoLanguageModule
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
103
103
  }], expandLegendOfVisibleLayers: [{
@@ -113,4 +113,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
113
113
  }], queryBadge: [{
114
114
  type: Input
115
115
  }] } });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXRvb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9tYXAvbWFwLXRvb2wvbWFwLXRvb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9tYXAvbWFwLXRvb2wvbWFwLXRvb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFDTCwyQkFBMkIsRUFDM0Isb0JBQW9CLEVBQ3JCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxxQkFBcUIsRUFJckIseUJBQXlCLEVBQ3pCLGtCQUFrQixFQUNsQixxQkFBcUIsRUFFckIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsMkJBQTJCLEVBQzVCLE1BQU0sV0FBVyxDQUFDO0FBRW5CLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNsQixNQUFNLHlDQUF5QyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFFMUM7O0dBRUc7QUEyQkksSUFBTSxnQkFBZ0IsR0FBdEIsTUFBTSxnQkFBZ0I7SUE2Q2pCO0lB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QjVCLFNBQVM7K0JBQ0UsY0FBYyxtQkFHUCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIseUJBQXlCO3dCQUN6Qix3QkFBd0I7d0JBQ3hCLHFCQUFxQjt3QkFDckIsd0JBQXdCO3dCQUN4Qix5QkFBeUI7d0JBQ3pCLDJCQUEyQjt3QkFDM0IsdUJBQXVCO3dCQUN2QixvQkFBb0I7d0JBQ3BCLDJCQUEyQjt3QkFDM0IsZUFBZTtxQkFDaEI7cUlBR1EsOEJBQThCO3NCQUF0QyxLQUFLO2dCQUVHLDJCQUEyQjtzQkFBbkMsS0FBSztnQkFFRyw4QkFBOEI7c0JBQXRDLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0VGFic01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xyXG5cclxuaW1wb3J0IHsgVG9vbENvbXBvbmVudCB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ29udGV4dExpc3RCaW5kaW5nRGlyZWN0aXZlLFxyXG4gIENvbnRleHRMaXN0Q29tcG9uZW50XHJcbn0gZnJvbSAnQGlnbzIvY29udGV4dCc7XHJcbmltcG9ydCB7XHJcbiAgRXhwb3J0QnV0dG9uQ29tcG9uZW50LFxyXG4gIEV4cG9ydE9wdGlvbnMsXHJcbiAgSWdvTWFwLFxyXG4gIExheWVyLFxyXG4gIExheWVyTGlzdEJpbmRpbmdEaXJlY3RpdmUsXHJcbiAgTGF5ZXJMaXN0Q29tcG9uZW50LFxyXG4gIExheWVyTGlzdENvbnRyb2xzRW51bSxcclxuICBMYXllckxpc3RDb250cm9sc09wdGlvbnMsXHJcbiAgTWV0YWRhdGFCdXR0b25Db21wb25lbnQsXHJcbiAgT2djRmlsdGVyQnV0dG9uQ29tcG9uZW50LFxyXG4gIFRpbWVGaWx0ZXJCdXR0b25Db21wb25lbnQsXHJcbiAgVHJhY2tGZWF0dXJlQnV0dG9uQ29tcG9uZW50XHJcbn0gZnJvbSAnQGlnbzIvZ2VvJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5cclxuaW1wb3J0IHtcclxuICBJbXBvcnRFeHBvcnRNb2RlLFxyXG4gIEltcG9ydEV4cG9ydFN0YXRlXHJcbn0gZnJvbSAnLi4vLi4vaW1wb3J0LWV4cG9ydC9pbXBvcnQtZXhwb3J0LnN0YXRlJztcclxuaW1wb3J0IHsgVG9vbFN0YXRlIH0gZnJvbSAnLi4vLi4vdG9vbC90b29sLnN0YXRlJztcclxuaW1wb3J0IHsgV29ya3NwYWNlQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vd29ya3NwYWNlL3dvcmtzcGFjZS1idXR0b24vd29ya3NwYWNlLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYXBTdGF0ZSB9IGZyb20gJy4vLi4vbWFwLnN0YXRlJztcclxuXHJcbi8qKlxyXG4gKiBUb29sIHRvIGJyb3dzZSBhIG1hcCdzIGxheWVycyBvciB0byBjaG9vc2UgYSBkaWZmZXJlbnQgbWFwXHJcbiAqL1xyXG5AVG9vbENvbXBvbmVudCh7XHJcbiAgbmFtZTogJ21hcCcsXHJcbiAgdGl0bGU6ICdpZ28uaW50ZWdyYXRpb24udG9vbHMubWFwJyxcclxuICBpY29uOiAnbWFwJ1xyXG59KVxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lnby1tYXAtdG9vbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21hcC10b29sLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tYXAtdG9vbC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTWF0VGFic01vZHVsZSxcclxuICAgIExheWVyTGlzdENvbXBvbmVudCxcclxuICAgIExheWVyTGlzdEJpbmRpbmdEaXJlY3RpdmUsXHJcbiAgICBXb3Jrc3BhY2VCdXR0b25Db21wb25lbnQsXHJcbiAgICBFeHBvcnRCdXR0b25Db21wb25lbnQsXHJcbiAgICBPZ2NGaWx0ZXJCdXR0b25Db21wb25lbnQsXHJcbiAgICBUaW1lRmlsdGVyQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgVHJhY2tGZWF0dXJlQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgTWV0YWRhdGFCdXR0b25Db21wb25lbnQsXHJcbiAgICBDb250ZXh0TGlzdENvbXBvbmVudCxcclxuICAgIENvbnRleHRMaXN0QmluZGluZ0RpcmVjdGl2ZSxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIE1hcFRvb2xDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIHRvZ2dsZUxlZ2VuZE9uVmlzaWJpbGl0eUNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBleHBhbmRMZWdlbmRPZlZpc2libGVMYXllcnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgdXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIG9nY0J1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIHRpbWVCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSBsYXllckxpc3RDb250cm9sczogTGF5ZXJMaXN0Q29udHJvbHNPcHRpb25zID0ge307XHJcblxyXG4gIEBJbnB1dCgpIHF1ZXJ5QmFkZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xyXG4gICAgcmV0dXJuIHRoaXMubWFwU3RhdGUubWFwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGV4Y2x1ZGVCYXNlTGF5ZXJzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMubGF5ZXJMaXN0Q29udHJvbHMuZXhjbHVkZUJhc2VMYXllcnMgfHwgZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXQgbGF5ZXJGaWx0ZXJBbmRTb3J0T3B0aW9ucygpOiBhbnkge1xyXG4gICAgY29uc3QgZmlsdGVyU29ydE9wdGlvbnMgPSBPYmplY3QuYXNzaWduKFxyXG4gICAgICB7XHJcbiAgICAgICAgc2hvd1Rvb2xiYXI6IExheWVyTGlzdENvbnRyb2xzRW51bS5kZWZhdWx0XHJcbiAgICAgIH0sXHJcbiAgICAgIHRoaXMubGF5ZXJMaXN0Q29udHJvbHNcclxuICAgICk7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLmxheWVyTGlzdENvbnRyb2xzLnNob3dUb29sYmFyKSB7XHJcbiAgICAgIGNhc2UgTGF5ZXJMaXN0Q29udHJvbHNFbnVtLmFsd2F5czpcclxuICAgICAgICBmaWx0ZXJTb3J0T3B0aW9ucy5zaG93VG9vbGJhciA9IExheWVyTGlzdENvbnRyb2xzRW51bS5hbHdheXM7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGF5ZXJMaXN0Q29udHJvbHNFbnVtLm5ldmVyOlxyXG4gICAgICAgIGZpbHRlclNvcnRPcHRpb25zLnNob3dUb29sYmFyID0gTGF5ZXJMaXN0Q29udHJvbHNFbnVtLm5ldmVyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZpbHRlclNvcnRPcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG1hcFN0YXRlOiBNYXBTdGF0ZSxcclxuICAgIHByaXZhdGUgdG9vbFN0YXRlOiBUb29sU3RhdGUsXHJcbiAgICBwcml2YXRlIGltcG9ydEV4cG9ydFN0YXRlOiBJbXBvcnRFeHBvcnRTdGF0ZVxyXG4gICkge31cclxuXHJcbiAgYWN0aXZhdGVFeHBvcnQobGF5ZXI6IExheWVyKSB7XHJcbiAgICBsZXQgaWQgPSBsYXllci5pZDtcclxuICAgIGlmIChsYXllci5vcHRpb25zLndvcmtzcGFjZT8ud29ya3NwYWNlSWQpIHtcclxuICAgICAgaWQgPVxyXG4gICAgICAgIGxheWVyLm9wdGlvbnMud29ya3NwYWNlLndvcmtzcGFjZUlkICE9PSBsYXllci5pZFxyXG4gICAgICAgICAgPyBsYXllci5vcHRpb25zLndvcmtzcGFjZS53b3Jrc3BhY2VJZFxyXG4gICAgICAgICAgOiBsYXllci5pZDtcclxuICAgIH1cclxuICAgIHRoaXMuaW1wb3J0RXhwb3J0U3RhdGUuc2V0c0V4cG9ydE9wdGlvbnMoeyBsYXllcnM6IFtpZF0gfSBhcyBFeHBvcnRPcHRpb25zKTtcclxuICAgIHRoaXMuaW1wb3J0RXhwb3J0U3RhdGUuc2V0TW9kZShJbXBvcnRFeHBvcnRNb2RlLmV4cG9ydCk7XHJcbiAgICB0aGlzLnRvb2xTdGF0ZS50b29sYm94LmFjdGl2YXRlVG9vbCgnaW1wb3J0RXhwb3J0Jyk7XHJcbiAgfVxyXG59XHJcbiIsIjxtYXQtdGFiLWdyb3VwPlxyXG4gIDxtYXQtdGFiIFtsYWJlbF09XCInaWdvLmludGVncmF0aW9uLnRvb2xzLm1hcCcgfCB0cmFuc2xhdGVcIj5cclxuICAgIDxpZ28tbGF5ZXItbGlzdFxyXG4gICAgICBbbWFwXT1cIm1hcFwiXHJcbiAgICAgIGlnb0xheWVyTGlzdEJpbmRpbmdcclxuICAgICAgW2V4Y2x1ZGVCYXNlTGF5ZXJzXT1cImV4Y2x1ZGVCYXNlTGF5ZXJzXCJcclxuICAgICAgW2xheWVyRmlsdGVyQW5kU29ydE9wdGlvbnNdPVwibGF5ZXJGaWx0ZXJBbmRTb3J0T3B0aW9uc1wiXHJcbiAgICAgIFtleHBhbmRMZWdlbmRPZlZpc2libGVMYXllcnNdPVwiZXhwYW5kTGVnZW5kT2ZWaXNpYmxlTGF5ZXJzXCJcclxuICAgICAgW3RvZ2dsZUxlZ2VuZE9uVmlzaWJpbGl0eUNoYW5nZV09XCJ0b2dnbGVMZWdlbmRPblZpc2liaWxpdHlDaGFuZ2VcIlxyXG4gICAgICBbdXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlXT1cInVwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZVwiXHJcbiAgICAgIFtxdWVyeUJhZGdlXT1cInF1ZXJ5QmFkZ2VcIlxyXG4gICAgPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2lnb0xheWVySXRlbVRvb2xiYXIgbGV0LWxheWVyPVwibGF5ZXJcIj5cclxuICAgICAgICA8IS0tIDxpZ28tZG93bmxvYWQtYnV0dG9uIFtsYXllcl09XCJsYXllclwiPjwvaWdvLWRvd25sb2FkLWJ1dHRvbj4gLS0+XHJcbiAgICAgICAgPGlnby13b3Jrc3BhY2UtYnV0dG9uIFtsYXllcl09XCJsYXllclwiPjwvaWdvLXdvcmtzcGFjZS1idXR0b24+XHJcbiAgICAgICAgPGlnby1leHBvcnQtYnV0dG9uXHJcbiAgICAgICAgICBbbGF5ZXJdPVwibGF5ZXJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlRXhwb3J0KGxheWVyKVwiXHJcbiAgICAgICAgPjwvaWdvLWV4cG9ydC1idXR0b24+XHJcbiAgICAgICAgPGlnby1vZ2MtZmlsdGVyLWJ1dHRvblxyXG4gICAgICAgICAgW2hlYWRlcl09XCJvZ2NCdXR0b25cIlxyXG4gICAgICAgICAgW2xheWVyXT1cImxheWVyXCJcclxuICAgICAgICA+PC9pZ28tb2djLWZpbHRlci1idXR0b24+XHJcbiAgICAgICAgPGlnby10aW1lLWZpbHRlci1idXR0b25cclxuICAgICAgICAgIFtoZWFkZXJdPVwidGltZUJ1dHRvblwiXHJcbiAgICAgICAgICBbbGF5ZXJdPVwibGF5ZXJcIlxyXG4gICAgICAgID48L2lnby10aW1lLWZpbHRlci1idXR0b24+XHJcbiAgICAgICAgPGlnby10cmFjay1mZWF0dXJlLWJ1dHRvblxyXG4gICAgICAgICAgW3RyYWNrRmVhdHVyZV09XCJ0cnVlXCJcclxuICAgICAgICAgIFtsYXllcl09XCJsYXllclwiXHJcbiAgICAgICAgPjwvaWdvLXRyYWNrLWZlYXR1cmUtYnV0dG9uPlxyXG4gICAgICAgIDxpZ28tbWV0YWRhdGEtYnV0dG9uIFtsYXllcl09XCJsYXllclwiPjwvaWdvLW1ldGFkYXRhLWJ1dHRvbj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvaWdvLWxheWVyLWxpc3Q+XHJcbiAgPC9tYXQtdGFiPlxyXG5cclxuICA8bWF0LXRhYiBbbGFiZWxdPVwiJ2lnby5pbnRlZ3JhdGlvbi50b29scy5jb250ZXh0cycgfCB0cmFuc2xhdGVcIj5cclxuICAgIDxpZ28tY29udGV4dC1saXN0IGlnb0NvbnRleHRMaXN0QmluZGluZz48L2lnby1jb250ZXh0LWxpc3Q+XHJcbiAgPC9tYXQtdGFiPlxyXG48L21hdC10YWItZ3JvdXA+XHJcbiJdfQ==
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXRvb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9tYXAvbWFwLXRvb2wvbWFwLXRvb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9tYXAvbWFwLXRvb2wvbWFwLXRvb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUNMLDJCQUEyQixFQUMzQixvQkFBb0IsRUFDckIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUNMLHFCQUFxQixFQUlyQix5QkFBeUIsRUFDekIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUVyQix1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6QiwyQkFBMkIsRUFDNUIsTUFBTSxXQUFXLENBQUM7QUFFbkIsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDbEIsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDdkcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBRTFDOztHQUVHO0FBMkJJLElBQU0sZ0JBQWdCLEdBQXRCLE1BQU0sZ0JBQWdCO0lBNkNq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QjtrQkFyQjVCLFNBQVM7K0JBQ0UsY0FBYyxtQkFHUCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIseUJBQXlCO3dCQUN6Qix3QkFBd0I7d0JBQ3hCLHFCQUFxQjt3QkFDckIsd0JBQXdCO3dCQUN4Qix5QkFBeUI7d0JBQ3pCLDJCQUEyQjt3QkFDM0IsdUJBQXVCO3dCQUN2QixvQkFBb0I7d0JBQ3BCLDJCQUEyQjt3QkFDM0IsaUJBQWlCO3FCQUNsQjtxSUFHUSw4QkFBOEI7c0JBQXRDLEtBQUs7Z0JBRUcsMkJBQTJCO3NCQUFuQyxLQUFLO2dCQUVHLDhCQUE4QjtzQkFBdEMsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0VGFic01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuXG5pbXBvcnQgeyBUb29sQ29tcG9uZW50IH0gZnJvbSAnQGlnbzIvY29tbW9uL3Rvb2wnO1xuaW1wb3J0IHtcbiAgQ29udGV4dExpc3RCaW5kaW5nRGlyZWN0aXZlLFxuICBDb250ZXh0TGlzdENvbXBvbmVudFxufSBmcm9tICdAaWdvMi9jb250ZXh0JztcbmltcG9ydCB7IElnb0xhbmd1YWdlTW9kdWxlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5pbXBvcnQge1xuICBFeHBvcnRCdXR0b25Db21wb25lbnQsXG4gIEV4cG9ydE9wdGlvbnMsXG4gIElnb01hcCxcbiAgTGF5ZXIsXG4gIExheWVyTGlzdEJpbmRpbmdEaXJlY3RpdmUsXG4gIExheWVyTGlzdENvbXBvbmVudCxcbiAgTGF5ZXJMaXN0Q29udHJvbHNFbnVtLFxuICBMYXllckxpc3RDb250cm9sc09wdGlvbnMsXG4gIE1ldGFkYXRhQnV0dG9uQ29tcG9uZW50LFxuICBPZ2NGaWx0ZXJCdXR0b25Db21wb25lbnQsXG4gIFRpbWVGaWx0ZXJCdXR0b25Db21wb25lbnQsXG4gIFRyYWNrRmVhdHVyZUJ1dHRvbkNvbXBvbmVudFxufSBmcm9tICdAaWdvMi9nZW8nO1xuXG5pbXBvcnQge1xuICBJbXBvcnRFeHBvcnRNb2RlLFxuICBJbXBvcnRFeHBvcnRTdGF0ZVxufSBmcm9tICcuLi8uLi9pbXBvcnQtZXhwb3J0L2ltcG9ydC1leHBvcnQuc3RhdGUnO1xuaW1wb3J0IHsgVG9vbFN0YXRlIH0gZnJvbSAnLi4vLi4vdG9vbC90b29sLnN0YXRlJztcbmltcG9ydCB7IFdvcmtzcGFjZUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3dvcmtzcGFjZS93b3Jrc3BhY2UtYnV0dG9uL3dvcmtzcGFjZS1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IE1hcFN0YXRlIH0gZnJvbSAnLi8uLi9tYXAuc3RhdGUnO1xuXG4vKipcbiAqIFRvb2wgdG8gYnJvd3NlIGEgbWFwJ3MgbGF5ZXJzIG9yIHRvIGNob29zZSBhIGRpZmZlcmVudCBtYXBcbiAqL1xuQFRvb2xDb21wb25lbnQoe1xuICBuYW1lOiAnbWFwJyxcbiAgdGl0bGU6ICdpZ28uaW50ZWdyYXRpb24udG9vbHMubWFwJyxcbiAgaWNvbjogJ21hcCdcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tbWFwLXRvb2wnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFwLXRvb2wuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYXAtdG9vbC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdFRhYnNNb2R1bGUsXG4gICAgTGF5ZXJMaXN0Q29tcG9uZW50LFxuICAgIExheWVyTGlzdEJpbmRpbmdEaXJlY3RpdmUsXG4gICAgV29ya3NwYWNlQnV0dG9uQ29tcG9uZW50LFxuICAgIEV4cG9ydEJ1dHRvbkNvbXBvbmVudCxcbiAgICBPZ2NGaWx0ZXJCdXR0b25Db21wb25lbnQsXG4gICAgVGltZUZpbHRlckJ1dHRvbkNvbXBvbmVudCxcbiAgICBUcmFja0ZlYXR1cmVCdXR0b25Db21wb25lbnQsXG4gICAgTWV0YWRhdGFCdXR0b25Db21wb25lbnQsXG4gICAgQ29udGV4dExpc3RDb21wb25lbnQsXG4gICAgQ29udGV4dExpc3RCaW5kaW5nRGlyZWN0aXZlLFxuICAgIElnb0xhbmd1YWdlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTWFwVG9vbENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRvZ2dsZUxlZ2VuZE9uVmlzaWJpbGl0eUNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGV4cGFuZExlZ2VuZE9mVmlzaWJsZUxheWVyczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHVwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIG9nY0J1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KCkgdGltZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KCkgbGF5ZXJMaXN0Q29udHJvbHM6IExheWVyTGlzdENvbnRyb2xzT3B0aW9ucyA9IHt9O1xuXG4gIEBJbnB1dCgpIHF1ZXJ5QmFkZ2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBnZXQgbWFwKCk6IElnb01hcCB7XG4gICAgcmV0dXJuIHRoaXMubWFwU3RhdGUubWFwO1xuICB9XG5cbiAgZ2V0IGV4Y2x1ZGVCYXNlTGF5ZXJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxheWVyTGlzdENvbnRyb2xzLmV4Y2x1ZGVCYXNlTGF5ZXJzIHx8IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGxheWVyRmlsdGVyQW5kU29ydE9wdGlvbnMoKTogYW55IHtcbiAgICBjb25zdCBmaWx0ZXJTb3J0T3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7XG4gICAgICAgIHNob3dUb29sYmFyOiBMYXllckxpc3RDb250cm9sc0VudW0uZGVmYXVsdFxuICAgICAgfSxcbiAgICAgIHRoaXMubGF5ZXJMaXN0Q29udHJvbHNcbiAgICApO1xuXG4gICAgc3dpdGNoICh0aGlzLmxheWVyTGlzdENvbnRyb2xzLnNob3dUb29sYmFyKSB7XG4gICAgICBjYXNlIExheWVyTGlzdENvbnRyb2xzRW51bS5hbHdheXM6XG4gICAgICAgIGZpbHRlclNvcnRPcHRpb25zLnNob3dUb29sYmFyID0gTGF5ZXJMaXN0Q29udHJvbHNFbnVtLmFsd2F5cztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIExheWVyTGlzdENvbnRyb2xzRW51bS5uZXZlcjpcbiAgICAgICAgZmlsdGVyU29ydE9wdGlvbnMuc2hvd1Rvb2xiYXIgPSBMYXllckxpc3RDb250cm9sc0VudW0ubmV2ZXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXJTb3J0T3B0aW9ucztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWFwU3RhdGU6IE1hcFN0YXRlLFxuICAgIHByaXZhdGUgdG9vbFN0YXRlOiBUb29sU3RhdGUsXG4gICAgcHJpdmF0ZSBpbXBvcnRFeHBvcnRTdGF0ZTogSW1wb3J0RXhwb3J0U3RhdGVcbiAgKSB7fVxuXG4gIGFjdGl2YXRlRXhwb3J0KGxheWVyOiBMYXllcikge1xuICAgIGxldCBpZCA9IGxheWVyLmlkO1xuICAgIGlmIChsYXllci5vcHRpb25zLndvcmtzcGFjZT8ud29ya3NwYWNlSWQpIHtcbiAgICAgIGlkID1cbiAgICAgICAgbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2Uud29ya3NwYWNlSWQgIT09IGxheWVyLmlkXG4gICAgICAgICAgPyBsYXllci5vcHRpb25zLndvcmtzcGFjZS53b3Jrc3BhY2VJZFxuICAgICAgICAgIDogbGF5ZXIuaWQ7XG4gICAgfVxuICAgIHRoaXMuaW1wb3J0RXhwb3J0U3RhdGUuc2V0c0V4cG9ydE9wdGlvbnMoeyBsYXllcnM6IFtpZF0gfSBhcyBFeHBvcnRPcHRpb25zKTtcbiAgICB0aGlzLmltcG9ydEV4cG9ydFN0YXRlLnNldE1vZGUoSW1wb3J0RXhwb3J0TW9kZS5leHBvcnQpO1xuICAgIHRoaXMudG9vbFN0YXRlLnRvb2xib3guYWN0aXZhdGVUb29sKCdpbXBvcnRFeHBvcnQnKTtcbiAgfVxufVxuIiwiPG1hdC10YWItZ3JvdXA+XG4gIDxtYXQtdGFiIFtsYWJlbF09XCInaWdvLmludGVncmF0aW9uLnRvb2xzLm1hcCcgfCB0cmFuc2xhdGVcIj5cbiAgICA8aWdvLWxheWVyLWxpc3RcbiAgICAgIFttYXBdPVwibWFwXCJcbiAgICAgIGlnb0xheWVyTGlzdEJpbmRpbmdcbiAgICAgIFtleGNsdWRlQmFzZUxheWVyc109XCJleGNsdWRlQmFzZUxheWVyc1wiXG4gICAgICBbbGF5ZXJGaWx0ZXJBbmRTb3J0T3B0aW9uc109XCJsYXllckZpbHRlckFuZFNvcnRPcHRpb25zXCJcbiAgICAgIFtleHBhbmRMZWdlbmRPZlZpc2libGVMYXllcnNdPVwiZXhwYW5kTGVnZW5kT2ZWaXNpYmxlTGF5ZXJzXCJcbiAgICAgIFt0b2dnbGVMZWdlbmRPblZpc2liaWxpdHlDaGFuZ2VdPVwidG9nZ2xlTGVnZW5kT25WaXNpYmlsaXR5Q2hhbmdlXCJcbiAgICAgIFt1cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2VdPVwidXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlXCJcbiAgICAgIFtxdWVyeUJhZGdlXT1cInF1ZXJ5QmFkZ2VcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjaWdvTGF5ZXJJdGVtVG9vbGJhciBsZXQtbGF5ZXI9XCJsYXllclwiPlxuICAgICAgICA8IS0tIDxpZ28tZG93bmxvYWQtYnV0dG9uIFtsYXllcl09XCJsYXllclwiPjwvaWdvLWRvd25sb2FkLWJ1dHRvbj4gLS0+XG4gICAgICAgIDxpZ28td29ya3NwYWNlLWJ1dHRvbiBbbGF5ZXJdPVwibGF5ZXJcIj48L2lnby13b3Jrc3BhY2UtYnV0dG9uPlxuICAgICAgICA8aWdvLWV4cG9ydC1idXR0b25cbiAgICAgICAgICBbbGF5ZXJdPVwibGF5ZXJcIlxuICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZUV4cG9ydChsYXllcilcIlxuICAgICAgICA+PC9pZ28tZXhwb3J0LWJ1dHRvbj5cbiAgICAgICAgPGlnby1vZ2MtZmlsdGVyLWJ1dHRvblxuICAgICAgICAgIFtoZWFkZXJdPVwib2djQnV0dG9uXCJcbiAgICAgICAgICBbbGF5ZXJdPVwibGF5ZXJcIlxuICAgICAgICA+PC9pZ28tb2djLWZpbHRlci1idXR0b24+XG4gICAgICAgIDxpZ28tdGltZS1maWx0ZXItYnV0dG9uXG4gICAgICAgICAgW2hlYWRlcl09XCJ0aW1lQnV0dG9uXCJcbiAgICAgICAgICBbbGF5ZXJdPVwibGF5ZXJcIlxuICAgICAgICA+PC9pZ28tdGltZS1maWx0ZXItYnV0dG9uPlxuICAgICAgICA8aWdvLXRyYWNrLWZlYXR1cmUtYnV0dG9uXG4gICAgICAgICAgW3RyYWNrRmVhdHVyZV09XCJ0cnVlXCJcbiAgICAgICAgICBbbGF5ZXJdPVwibGF5ZXJcIlxuICAgICAgICA+PC9pZ28tdHJhY2stZmVhdHVyZS1idXR0b24+XG4gICAgICAgIDxpZ28tbWV0YWRhdGEtYnV0dG9uIFtsYXllcl09XCJsYXllclwiPjwvaWdvLW1ldGFkYXRhLWJ1dHRvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pZ28tbGF5ZXItbGlzdD5cbiAgPC9tYXQtdGFiPlxuXG4gIDxtYXQtdGFiIFtsYWJlbF09XCInaWdvLmludGVncmF0aW9uLnRvb2xzLmNvbnRleHRzJyB8IHRyYW5zbGF0ZVwiPlxuICAgIDxpZ28tY29udGV4dC1saXN0IGlnb0NvbnRleHRMaXN0QmluZGluZz48L2lnby1jb250ZXh0LWxpc3Q+XG4gIDwvbWF0LXRhYj5cbjwvbWF0LXRhYi1ncm91cD5cbiJdfQ==