@unovis/angular 1.7.0-stellar.2 → 1.7.0-stellar.3

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.
@@ -1,5 +1,5 @@
1
1
  import { AfterViewInit, SimpleChanges } from '@angular/core';
2
- import { TopoJSONMap, TopoJSONMapConfigInterface, ContainerCore, VisEventType, VisEventCallback, NumericAccessor, ColorAccessor, StringAccessor, MapPointLabelPosition, TopoJSONMapPointStyles, TopoJSONMapClusterDatum } from '@unovis/ts';
2
+ import { TopoJSONMap, TopoJSONMapConfigInterface, ContainerCore, VisEventType, VisEventCallback, NumericAccessor, ColorAccessor, StringAccessor, MapPointLabelPosition, TopoJSONMapPointStyles } from '@unovis/ts';
3
3
  import { GeoProjection } from 'd3-geo';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class VisTopoJSONMapComponent<AreaDatum, PointDatum, LinkDatum> implements TopoJSONMapConfigInterface<AreaDatum, PointDatum, LinkDatum>, AfterViewInit {
@@ -78,42 +78,12 @@ export declare class VisTopoJSONMapComponent<AreaDatum, PointDatum, LinkDatum> i
78
78
  linkSource?: ((l: LinkDatum) => number | string | PointDatum);
79
79
  /** Link target accessor function. Default: `d => d.target` */
80
80
  linkTarget?: ((l: LinkDatum) => number | string | PointDatum);
81
- /** Flow source point longitude accessor function or value. Default: `f => f.sourceLongitude` */
82
- sourceLongitude?: NumericAccessor<LinkDatum>;
83
- /** Flow source point latitude accessor function or value. Default: `f => f.sourceLatitude` */
84
- sourceLatitude?: NumericAccessor<LinkDatum>;
85
- /** Flow target point longitude accessor function or value. Default: `f => f.targetLongitude` */
86
- targetLongitude?: NumericAccessor<LinkDatum>;
87
- /** Flow target point latitude accessor function or value. Default: `f => f.targetLatitude` */
88
- targetLatitude?: NumericAccessor<LinkDatum>;
89
- /** Flow source point radius accessor function or value. Default: `3` */
90
- sourcePointRadius?: NumericAccessor<LinkDatum>;
91
- /** Source point color accessor function or value. Default: `'#88919f'` */
92
- sourcePointColor?: ColorAccessor<LinkDatum>;
93
- /** Flow particle color accessor function or value. Default: `'#949dad'` */
94
- flowParticleColor?: ColorAccessor<LinkDatum>;
95
- /** Flow particle radius accessor function or value. Default: `1.1` */
96
- flowParticleRadius?: NumericAccessor<LinkDatum>;
97
- /** Flow particle speed accessor function or value. The unit is arbitrary, recommended range is 0 – 0.2. Default: `0.07` */
98
- flowParticleSpeed?: NumericAccessor<LinkDatum>;
99
- /** Flow particle density accessor function or value on the range of [0, 1]. Default: `0.6` */
100
- flowParticleDensity?: NumericAccessor<LinkDatum>;
101
- /** Enable flow animations. When true, shows animated particles along links. Default: `false` */
102
- enableFlowAnimation?: boolean;
103
- /** Flow source point click callback function. Default: `undefined` */
104
- onSourcePointClick?: (f: LinkDatum, x: number, y: number, event: MouseEvent) => void;
105
- /** Flow source point mouse over callback function. Default: `undefined` */
106
- onSourcePointMouseEnter?: (f: LinkDatum, x: number, y: number, event: MouseEvent) => void;
107
- /** Flow source point mouse leave callback function. Default: `undefined` */
108
- onSourcePointMouseLeave?: (f: LinkDatum, event: MouseEvent) => void;
109
81
  /** Area id accessor function corresponding to the feature id from TopoJSON. Default: `d => d.id ?? ''` */
110
82
  areaId?: StringAccessor<AreaDatum>;
111
83
  /** Area color value or accessor function. Default: `d => d.color ?? null` */
112
84
  areaColor?: ColorAccessor<AreaDatum>;
113
85
  /** Area cursor value or accessor function. Default: `null` */
114
86
  areaCursor?: StringAccessor<AreaDatum>;
115
- /** Area label accessor function. Default: `undefined` */
116
- areaLabel?: StringAccessor<AreaDatum>;
117
87
  /** Point color accessor. Default: `d => d.color ?? null` */
118
88
  pointColor?: ColorAccessor<PointDatum>;
119
89
  /** Point radius accessor. Default: `d => d.radius ?? 8` */
@@ -138,28 +108,24 @@ export declare class VisTopoJSONMapComponent<AreaDatum, PointDatum, LinkDatum> i
138
108
  pointLabelTextBrightnessRatio?: number;
139
109
  /** Point id accessor function. Default: `d => d.id` */
140
110
  pointId?: ((d: PointDatum, i: number) => string);
141
- /** Color map for points with donut/pie chart visualization. Default: `{}` */
111
+ /** A single map point can have multiple properties displayed as a small pie chart.
112
+ * By setting the colorMap configuration you can specify data properties that should be mapped to various pie / donut segments.
113
+ *
114
+ * ```
115
+ * {
116
+ * \[key in keyof PointDatum]?: { color: string, className?: string }
117
+ * }
118
+ * ```
119
+ * e.g.:
120
+ * ```
121
+ * {
122
+ * \healthy: { color: 'green' },
123
+ * \warning: { color: 'orange' },
124
+ * \critical: { color: 'red' }
125
+ * }
126
+ * ```
127
+ * where every data point has the `healthy`, `warning` and `critical` numerical or boolean property. */
142
128
  colorMap?: TopoJSONMapPointStyles<PointDatum>;
143
- /** Cluster color accessor function or constant value. Default: `undefined` */
144
- clusterColor?: ColorAccessor<TopoJSONMapClusterDatum<PointDatum>>;
145
- /** Cluster radius accessor function or constant value. Default: `undefined` */
146
- clusterRadius?: NumericAccessor<TopoJSONMapClusterDatum<PointDatum>>;
147
- /** Cluster inner label accessor function. Default: `d => d.pointCount` */
148
- clusterLabel?: StringAccessor<TopoJSONMapClusterDatum<PointDatum>>;
149
- /** Cluster inner label color accessor function or constant value. Default: `undefined` */
150
- clusterLabelColor?: StringAccessor<TopoJSONMapClusterDatum<PointDatum>>;
151
- /** Cluster bottom label accessor function. Default: `''` */
152
- clusterBottomLabel?: StringAccessor<TopoJSONMapClusterDatum<PointDatum>>;
153
- /** The width of the cluster point ring. Default: `2` */
154
- clusterRingWidth?: number;
155
- /** When cluster is expanded, show a background circle to better separate points from the base map. Default: `true` */
156
- clusterBackground?: boolean;
157
- /** Defines whether the cluster should expand on click or not. Default: `true` */
158
- clusterExpandOnClick?: boolean;
159
- /** Clustering distance in pixels. Default: `55` */
160
- clusteringDistance?: number;
161
- /** Enable point clustering. Default: `false` */
162
- clustering?: boolean;
163
129
  /** Enables blur and blending between neighbouring points. Default: `false` */
164
130
  heatmapMode?: boolean;
165
131
  /** Heatmap blur filter stdDeviation value. Default: `10` */
@@ -177,5 +143,5 @@ export declare class VisTopoJSONMapComponent<AreaDatum, PointDatum, LinkDatum> i
177
143
  ngOnChanges(changes: SimpleChanges): void;
178
144
  private getConfig;
179
145
  static ɵfac: i0.ɵɵFactoryDeclaration<VisTopoJSONMapComponent<any, any, any>, never>;
180
- static ɵcmp: i0.ɵɵComponentDeclaration<VisTopoJSONMapComponent<any, any, any>, "vis-topojson-map", never, { "duration": "duration"; "events": "events"; "attributes": "attributes"; "projection": "projection"; "topojson": "topojson"; "mapFeatureName": "mapFeatureName"; "mapFitToPoints": "mapFitToPoints"; "zoomFactor": "zoomFactor"; "disableZoom": "disableZoom"; "zoomExtent": "zoomExtent"; "zoomDuration": "zoomDuration"; "linkWidth": "linkWidth"; "linkColor": "linkColor"; "linkCursor": "linkCursor"; "linkId": "linkId"; "linkSource": "linkSource"; "linkTarget": "linkTarget"; "sourceLongitude": "sourceLongitude"; "sourceLatitude": "sourceLatitude"; "targetLongitude": "targetLongitude"; "targetLatitude": "targetLatitude"; "sourcePointRadius": "sourcePointRadius"; "sourcePointColor": "sourcePointColor"; "flowParticleColor": "flowParticleColor"; "flowParticleRadius": "flowParticleRadius"; "flowParticleSpeed": "flowParticleSpeed"; "flowParticleDensity": "flowParticleDensity"; "enableFlowAnimation": "enableFlowAnimation"; "onSourcePointClick": "onSourcePointClick"; "onSourcePointMouseEnter": "onSourcePointMouseEnter"; "onSourcePointMouseLeave": "onSourcePointMouseLeave"; "areaId": "areaId"; "areaColor": "areaColor"; "areaCursor": "areaCursor"; "areaLabel": "areaLabel"; "pointColor": "pointColor"; "pointRadius": "pointRadius"; "pointStrokeWidth": "pointStrokeWidth"; "pointShape": "pointShape"; "pointRingWidth": "pointRingWidth"; "pointCursor": "pointCursor"; "longitude": "longitude"; "latitude": "latitude"; "pointLabel": "pointLabel"; "pointLabelPosition": "pointLabelPosition"; "pointLabelTextBrightnessRatio": "pointLabelTextBrightnessRatio"; "pointId": "pointId"; "colorMap": "colorMap"; "clusterColor": "clusterColor"; "clusterRadius": "clusterRadius"; "clusterLabel": "clusterLabel"; "clusterLabelColor": "clusterLabelColor"; "clusterBottomLabel": "clusterBottomLabel"; "clusterRingWidth": "clusterRingWidth"; "clusterBackground": "clusterBackground"; "clusterExpandOnClick": "clusterExpandOnClick"; "clusteringDistance": "clusteringDistance"; "clustering": "clustering"; "heatmapMode": "heatmapMode"; "heatmapModeBlurStdDeviation": "heatmapModeBlurStdDeviation"; "heatmapModeZoomLevelThreshold": "heatmapModeZoomLevelThreshold"; "data": "data"; }, {}, never, never>;
146
+ static ɵcmp: i0.ɵɵComponentDeclaration<VisTopoJSONMapComponent<any, any, any>, "vis-topojson-map", never, { "duration": "duration"; "events": "events"; "attributes": "attributes"; "projection": "projection"; "topojson": "topojson"; "mapFeatureName": "mapFeatureName"; "mapFitToPoints": "mapFitToPoints"; "zoomFactor": "zoomFactor"; "disableZoom": "disableZoom"; "zoomExtent": "zoomExtent"; "zoomDuration": "zoomDuration"; "linkWidth": "linkWidth"; "linkColor": "linkColor"; "linkCursor": "linkCursor"; "linkId": "linkId"; "linkSource": "linkSource"; "linkTarget": "linkTarget"; "areaId": "areaId"; "areaColor": "areaColor"; "areaCursor": "areaCursor"; "pointColor": "pointColor"; "pointRadius": "pointRadius"; "pointStrokeWidth": "pointStrokeWidth"; "pointShape": "pointShape"; "pointRingWidth": "pointRingWidth"; "pointCursor": "pointCursor"; "longitude": "longitude"; "latitude": "latitude"; "pointLabel": "pointLabel"; "pointLabelPosition": "pointLabelPosition"; "pointLabelTextBrightnessRatio": "pointLabelTextBrightnessRatio"; "pointId": "pointId"; "colorMap": "colorMap"; "heatmapMode": "heatmapMode"; "heatmapModeBlurStdDeviation": "heatmapModeBlurStdDeviation"; "heatmapModeZoomLevelThreshold": "heatmapModeZoomLevelThreshold"; "data": "data"; }, {}, never, never>;
181
147
  }
@@ -21,8 +21,8 @@ export class VisTopoJSONMapComponent {
21
21
  (_c = this.componentContainer) === null || _c === void 0 ? void 0 : _c.render();
22
22
  }
23
23
  getConfig() {
24
- const { duration, events, attributes, projection, topojson, mapFeatureName, mapFitToPoints, zoomFactor, disableZoom, zoomExtent, zoomDuration, linkWidth, linkColor, linkCursor, linkId, linkSource, linkTarget, sourceLongitude, sourceLatitude, targetLongitude, targetLatitude, sourcePointRadius, sourcePointColor, flowParticleColor, flowParticleRadius, flowParticleSpeed, flowParticleDensity, enableFlowAnimation, onSourcePointClick, onSourcePointMouseEnter, onSourcePointMouseLeave, areaId, areaColor, areaCursor, areaLabel, pointColor, pointRadius, pointStrokeWidth, pointShape, pointRingWidth, pointCursor, longitude, latitude, pointLabel, pointLabelPosition, pointLabelTextBrightnessRatio, pointId, colorMap, clusterColor, clusterRadius, clusterLabel, clusterLabelColor, clusterBottomLabel, clusterRingWidth, clusterBackground, clusterExpandOnClick, clusteringDistance, clustering, heatmapMode, heatmapModeBlurStdDeviation, heatmapModeZoomLevelThreshold } = this;
25
- const config = { duration, events, attributes, projection, topojson, mapFeatureName, mapFitToPoints, zoomFactor, disableZoom, zoomExtent, zoomDuration, linkWidth, linkColor, linkCursor, linkId, linkSource, linkTarget, sourceLongitude, sourceLatitude, targetLongitude, targetLatitude, sourcePointRadius, sourcePointColor, flowParticleColor, flowParticleRadius, flowParticleSpeed, flowParticleDensity, enableFlowAnimation, onSourcePointClick, onSourcePointMouseEnter, onSourcePointMouseLeave, areaId, areaColor, areaCursor, areaLabel, pointColor, pointRadius, pointStrokeWidth, pointShape, pointRingWidth, pointCursor, longitude, latitude, pointLabel, pointLabelPosition, pointLabelTextBrightnessRatio, pointId, colorMap, clusterColor, clusterRadius, clusterLabel, clusterLabelColor, clusterBottomLabel, clusterRingWidth, clusterBackground, clusterExpandOnClick, clusteringDistance, clustering, heatmapMode, heatmapModeBlurStdDeviation, heatmapModeZoomLevelThreshold };
24
+ const { duration, events, attributes, projection, topojson, mapFeatureName, mapFitToPoints, zoomFactor, disableZoom, zoomExtent, zoomDuration, linkWidth, linkColor, linkCursor, linkId, linkSource, linkTarget, areaId, areaColor, areaCursor, pointColor, pointRadius, pointStrokeWidth, pointShape, pointRingWidth, pointCursor, longitude, latitude, pointLabel, pointLabelPosition, pointLabelTextBrightnessRatio, pointId, colorMap, heatmapMode, heatmapModeBlurStdDeviation, heatmapModeZoomLevelThreshold } = this;
25
+ const config = { duration, events, attributes, projection, topojson, mapFeatureName, mapFitToPoints, zoomFactor, disableZoom, zoomExtent, zoomDuration, linkWidth, linkColor, linkCursor, linkId, linkSource, linkTarget, areaId, areaColor, areaCursor, pointColor, pointRadius, pointStrokeWidth, pointShape, pointRingWidth, pointCursor, longitude, latitude, pointLabel, pointLabelPosition, pointLabelTextBrightnessRatio, pointId, colorMap, heatmapMode, heatmapModeBlurStdDeviation, heatmapModeZoomLevelThreshold };
26
26
  const keys = Object.keys(config);
27
27
  keys.forEach(key => { if (config[key] === undefined)
28
28
  delete config[key]; });
@@ -30,7 +30,7 @@ export class VisTopoJSONMapComponent {
30
30
  }
31
31
  }
32
32
  VisTopoJSONMapComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: VisTopoJSONMapComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
33
- VisTopoJSONMapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: VisTopoJSONMapComponent, selector: "vis-topojson-map", inputs: { duration: "duration", events: "events", attributes: "attributes", projection: "projection", topojson: "topojson", mapFeatureName: "mapFeatureName", mapFitToPoints: "mapFitToPoints", zoomFactor: "zoomFactor", disableZoom: "disableZoom", zoomExtent: "zoomExtent", zoomDuration: "zoomDuration", linkWidth: "linkWidth", linkColor: "linkColor", linkCursor: "linkCursor", linkId: "linkId", linkSource: "linkSource", linkTarget: "linkTarget", sourceLongitude: "sourceLongitude", sourceLatitude: "sourceLatitude", targetLongitude: "targetLongitude", targetLatitude: "targetLatitude", sourcePointRadius: "sourcePointRadius", sourcePointColor: "sourcePointColor", flowParticleColor: "flowParticleColor", flowParticleRadius: "flowParticleRadius", flowParticleSpeed: "flowParticleSpeed", flowParticleDensity: "flowParticleDensity", enableFlowAnimation: "enableFlowAnimation", onSourcePointClick: "onSourcePointClick", onSourcePointMouseEnter: "onSourcePointMouseEnter", onSourcePointMouseLeave: "onSourcePointMouseLeave", areaId: "areaId", areaColor: "areaColor", areaCursor: "areaCursor", areaLabel: "areaLabel", pointColor: "pointColor", pointRadius: "pointRadius", pointStrokeWidth: "pointStrokeWidth", pointShape: "pointShape", pointRingWidth: "pointRingWidth", pointCursor: "pointCursor", longitude: "longitude", latitude: "latitude", pointLabel: "pointLabel", pointLabelPosition: "pointLabelPosition", pointLabelTextBrightnessRatio: "pointLabelTextBrightnessRatio", pointId: "pointId", colorMap: "colorMap", clusterColor: "clusterColor", clusterRadius: "clusterRadius", clusterLabel: "clusterLabel", clusterLabelColor: "clusterLabelColor", clusterBottomLabel: "clusterBottomLabel", clusterRingWidth: "clusterRingWidth", clusterBackground: "clusterBackground", clusterExpandOnClick: "clusterExpandOnClick", clusteringDistance: "clusteringDistance", clustering: "clustering", heatmapMode: "heatmapMode", heatmapModeBlurStdDeviation: "heatmapModeBlurStdDeviation", heatmapModeZoomLevelThreshold: "heatmapModeZoomLevelThreshold", data: "data" }, providers: [{ provide: VisCoreComponent, useExisting: VisTopoJSONMapComponent }], usesOnChanges: true, ngImport: i0, template: '', isInline: true });
33
+ VisTopoJSONMapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: VisTopoJSONMapComponent, selector: "vis-topojson-map", inputs: { duration: "duration", events: "events", attributes: "attributes", projection: "projection", topojson: "topojson", mapFeatureName: "mapFeatureName", mapFitToPoints: "mapFitToPoints", zoomFactor: "zoomFactor", disableZoom: "disableZoom", zoomExtent: "zoomExtent", zoomDuration: "zoomDuration", linkWidth: "linkWidth", linkColor: "linkColor", linkCursor: "linkCursor", linkId: "linkId", linkSource: "linkSource", linkTarget: "linkTarget", areaId: "areaId", areaColor: "areaColor", areaCursor: "areaCursor", pointColor: "pointColor", pointRadius: "pointRadius", pointStrokeWidth: "pointStrokeWidth", pointShape: "pointShape", pointRingWidth: "pointRingWidth", pointCursor: "pointCursor", longitude: "longitude", latitude: "latitude", pointLabel: "pointLabel", pointLabelPosition: "pointLabelPosition", pointLabelTextBrightnessRatio: "pointLabelTextBrightnessRatio", pointId: "pointId", colorMap: "colorMap", heatmapMode: "heatmapMode", heatmapModeBlurStdDeviation: "heatmapModeBlurStdDeviation", heatmapModeZoomLevelThreshold: "heatmapModeZoomLevelThreshold", data: "data" }, providers: [{ provide: VisCoreComponent, useExisting: VisTopoJSONMapComponent }], usesOnChanges: true, ngImport: i0, template: '', isInline: true });
34
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: VisTopoJSONMapComponent, decorators: [{
35
35
  type: Component,
36
36
  args: [{
@@ -73,42 +73,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
73
73
  type: Input
74
74
  }], linkTarget: [{
75
75
  type: Input
76
- }], sourceLongitude: [{
77
- type: Input
78
- }], sourceLatitude: [{
79
- type: Input
80
- }], targetLongitude: [{
81
- type: Input
82
- }], targetLatitude: [{
83
- type: Input
84
- }], sourcePointRadius: [{
85
- type: Input
86
- }], sourcePointColor: [{
87
- type: Input
88
- }], flowParticleColor: [{
89
- type: Input
90
- }], flowParticleRadius: [{
91
- type: Input
92
- }], flowParticleSpeed: [{
93
- type: Input
94
- }], flowParticleDensity: [{
95
- type: Input
96
- }], enableFlowAnimation: [{
97
- type: Input
98
- }], onSourcePointClick: [{
99
- type: Input
100
- }], onSourcePointMouseEnter: [{
101
- type: Input
102
- }], onSourcePointMouseLeave: [{
103
- type: Input
104
76
  }], areaId: [{
105
77
  type: Input
106
78
  }], areaColor: [{
107
79
  type: Input
108
80
  }], areaCursor: [{
109
81
  type: Input
110
- }], areaLabel: [{
111
- type: Input
112
82
  }], pointColor: [{
113
83
  type: Input
114
84
  }], pointRadius: [{
@@ -135,26 +105,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
135
105
  type: Input
136
106
  }], colorMap: [{
137
107
  type: Input
138
- }], clusterColor: [{
139
- type: Input
140
- }], clusterRadius: [{
141
- type: Input
142
- }], clusterLabel: [{
143
- type: Input
144
- }], clusterLabelColor: [{
145
- type: Input
146
- }], clusterBottomLabel: [{
147
- type: Input
148
- }], clusterRingWidth: [{
149
- type: Input
150
- }], clusterBackground: [{
151
- type: Input
152
- }], clusterExpandOnClick: [{
153
- type: Input
154
- }], clusteringDistance: [{
155
- type: Input
156
- }], clustering: [{
157
- type: Input
158
108
  }], heatmapMode: [{
159
109
  type: Input
160
110
  }], heatmapModeBlurStdDeviation: [{
@@ -164,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
164
114
  }], data: [{
165
115
  type: Input
166
116
  }] } });
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wb2pzb24tbWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3RvcG9qc29uLW1hcC90b3BvanNvbi1tYXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFpQixLQUFLLEVBQWlCLE1BQU0sZUFBZSxDQUFBO0FBQzlFLE9BQU8sRUFDTCxXQUFXLEdBV1osTUFBTSxZQUFZLENBQUE7QUFFbkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFBOztBQVE3QyxNQUFNLE9BQU8sdUJBQXVCO0lBcU9sQyxlQUFlOztRQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxXQUFXLENBQW1DLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO1FBRXBGLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNqQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7U0FDbEM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFFLE9BQXNCOztRQUNqQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFBRSxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7U0FBRTtRQUN4RCxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtRQUMzQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7SUFDbkMsQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxF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QUF4QixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csUUFBUTtzQkFBaEIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFHRyw2QkFBNkI7c0JBQXJDLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csWUFBWTtzQkFBcEIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFHRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBR0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFHRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdHLDJCQUEyQjtzQkFBbkMsS0FBSztnQkFHRyw2QkFBNkI7c0JBQXJDLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8gISEhIFRoaXMgY29kZSB3YXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQuIFlvdSBzaG91bGQgbm90IGNoYW5nZSBpdCAhISFcbmltcG9ydCB7IENvbXBvbmVudCwgQWZ0ZXJWaWV3SW5pdCwgSW5wdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgVG9wb0pTT05NYXAsXG4gIFRvcG9KU09OTWFwQ29uZmlnSW50ZXJmYWNlLFxuICBDb250YWluZXJDb3JlLFxuICBWaXNFdmVudFR5cGUsXG4gIFZpc0V2ZW50Q2FsbGJhY2ssXG4gIE51bWVyaWNBY2Nlc3NvcixcbiAgQ29sb3JBY2Nlc3NvcixcbiAgU3RyaW5nQWNjZXNzb3IsXG4gIE1hcFBvaW50TGFiZWxQb3NpdGlvbixcbiAgVG9wb0pTT05NYXBQb2ludFN0eWxlcyxcbiAgVG9wb0pTT05NYXBDbHVzdGVyRGF0dW0sXG59IGZyb20gJ0B1bm92aXMvdHMnXG5pbXBvcnQgeyBHZW9Qcm9qZWN0aW9uIH0gZnJvbSAnZDMtZ2VvJ1xuaW1wb3J0IHsgVmlzQ29yZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Zpcy10b3BvanNvbi1tYXAnLFxuICB0ZW1wbGF0ZTogJycsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFZpc0NvcmVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBWaXNUb3BvSlNPTk1hcENvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgVmlzVG9wb0pTT05NYXBDb21wb25lbnQ8QXJlYURhdHVtLCBQb2ludERhdHVtLCBMaW5rRGF0dW0+IGltcGxlbWVudHMgVG9wb0pTT05NYXBDb25maWdJbnRlcmZhY2U8QXJlYURhdHVtLCBQb2ludERhdHVtLCBMaW5rRGF0dW0+LCBBZnRlclZpZXdJbml0IHtcbiAgLyoqIEFuaW1hdGlvbiBkdXJhdGlvbiBvZiB0aGUgZGF0YSB1cGRhdGUgdHJhbnNpdGlvbnMgaW4gbWlsbGlzZWNvbmRzLiBEZWZhdWx0OiBgNjAwYCAqL1xuICBASW5wdXQoKSBkdXJhdGlvbj86IG51bWJlclxuXG4gIC8qKiBFdmVudHMgY29uZmlndXJhdGlvbi4gQW4gb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcyBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDpcbiAgICpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbc2VsZWN0b3JTdHJpbmddOiB7XG4gICAqICAgICBcXFtldmVudFR5cGVdOiBjYWxsYmFja0Z1bmN0aW9uXG4gICAqICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqIGUuZy46XG4gICAqIGBgYFxuICAgKiB7XG4gICAqIFxcW0FyZWEuc2VsZWN0b3JzLmFyZWFdOiB7XG4gICAqICAgIGNsaWNrOiAoZCkgPT4gY29uc29sZS5sb2coXCJDbGlja2VkIEFyZWFcIiwgZClcbiAgICogIH1cbiAgICogfVxuICAgKiBgYGAgKi9cbiAgQElucHV0KCkgZXZlbnRzPzoge1xuICAgIFtzZWxlY3Rvcjogc3RyaW5nXToge1xuICAgICAgW2V2ZW50VHlwZSBpbiBWaXNFdmVudFR5cGVdPzogVmlzRXZlbnRDYWxsYmFja1xuICAgIH07XG4gIH1cblxuICAvKiogWW91IGNhbiBzZXQgZXZlcnkgU1ZHIGFuZCBIVE1MIHZpc3VhbGl6YXRpb24gb2JqZWN0IHRvIGhhdmUgYSBjdXN0b20gRE9NIGF0dHJpYnV0ZXMsIHdoaWNoIGlzIHVzZWZ1bFxuICAgKiB3aGVuIHlvdSB3YW50IHRvIGRvIHVuaXQgb3IgZW5kLXRvLWVuZCB0ZXN0aW5nLiBBdHRyaWJ1dGVzIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTpcbiAgICpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbc2VsZWN0b3JTdHJpbmddOiB7XG4gICAqICAgICBcXFthdHRyaWJ1dGVOYW1lXTogYXR0cmlidXRlIGNvbnN0YW50IHZhbHVlIG9yIGFjY2Vzc29yIGZ1bmN0aW9uXG4gICAqICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqIGUuZy46XG4gICAqIGBgYFxuICAgKiB7XG4gICAqIFxcW0FyZWEuc2VsZWN0b3JzLmFyZWFdOiB7XG4gICAqICAgIFwidGVzdC12YWx1ZVwiOiBkID0+IGQudmFsdWVcbiAgICogIH1cbiAgICogfVxuICAgKiBgYGAgKi9cbiAgQElucHV0KCkgYXR0cmlidXRlcz86IHtcbiAgICBbc2VsZWN0b3I6IHN0cmluZ106IHtcbiAgICAgIFthdHRyOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgKChkYXR1bTogYW55KSA9PiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIE1hcFByb2plY3Rpb24gKGFrYSBEMydzIEdlb1Byb2plY3Rpb24pIGluc3RhbmNlLiBEZWZhdWx0OiBgTWFwUHJvamVjdGlvbi5LYXZyYXlza2l5NygpYCAqL1xuICBASW5wdXQoKSBwcm9qZWN0aW9uPzogR2VvUHJvamVjdGlvblxuXG4gIC8qKiBNYXAgZGF0YSBpbiB0aGUgVG9wb0pTT04gdG9wb2xvZ3kgZm9ybWF0LiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB0b3BvanNvbj86IFRvcG9KU09OLlRvcG9sb2d5XG5cbiAgLyoqIE5hbWUgb2YgdGhlIG1hcCBmZWF0dXJlcyB0byBiZSBkaXNwbGF5ZWQsIGUuZy4gJ2NvdW50cmllcycgb3IgJ2NvdW50aWVzJy4gRGVmYXVsdDogYGNvdW50cmllc2AgKi9cbiAgQElucHV0KCkgbWFwRmVhdHVyZU5hbWU/OiBzdHJpbmdcblxuICAvKiogU2V0IGluaXRpYWwgbWFwIGZpdCB0byBwb2ludHMgaW5zdGVhZCBvZiB0b3BvanNvbiBmZWF0dXJlcy4gRGVmYXVsdDogYGZhbHNlYCAqL1xuICBASW5wdXQoKSBtYXBGaXRUb1BvaW50cz86IGJvb2xlYW5cblxuICAvKiogSW5pdGlhbCB6b29tIGxldmVsLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB6b29tRmFjdG9yPzogbnVtYmVyXG5cbiAgLyoqIERpc2FibGUgcGFuIC8gem9vbSBpbnRlcmFjdGlvbnMuIERlZmF1bHQ6IGBmYWxzZWAgKi9cbiAgQElucHV0KCkgZGlzYWJsZVpvb20/OiBib29sZWFuXG5cbiAgLyoqIFpvb20gZXh0ZW50LiBEZWZhdWx0OiBgWzAuNSwgNl1gICovXG4gIEBJbnB1dCgpIHpvb21FeHRlbnQ/OiBudW1iZXJbXVxuXG4gIC8qKiBab29tIGFuaW1hdGlvbiBkdXJhdGlvbi4gRGVmYXVsdDogYDQwMGAgKi9cbiAgQElucHV0KCkgem9vbUR1cmF0aW9uPzogbnVtYmVyXG5cbiAgLyoqIExpbmsgd2lkdGggdmFsdWUgb3IgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGBkID0+IGQud2lkdGggPz8gMWAgKi9cbiAgQElucHV0KCkgbGlua1dpZHRoPzogTnVtZXJpY0FjY2Vzc29yPExpbmtEYXR1bT5cblxuICAvKiogTGluayBjb2xvciB2YWx1ZSBvciBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYGQgPT4gZC5jb2xvciA/PyBudWxsYCAqL1xuICBASW5wdXQoKSBsaW5rQ29sb3I/OiBDb2xvckFjY2Vzc29yPExpbmtEYXR1bT5cblxuICAvKiogTGluayBjdXJzb3IgdmFsdWUgb3IgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGBudWxsYCAqL1xuICBASW5wdXQoKSBsaW5rQ3Vyc29yPzogU3RyaW5nQWNjZXNzb3I8TGlua0RhdHVtPlxuXG4gIC8qKiBMaW5rIGlkIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgZCA9PiBkLmlkYCAqL1xuICBASW5wdXQoKSBsaW5rSWQ/OiBTdHJpbmdBY2Nlc3NvcjxMaW5rRGF0dW0+XG5cbiAgLyoqIExpbmsgc291cmNlIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgZCA9PiBkLnNvdXJjZWAgKi9cbiAgQElucHV0KCkgbGlua1NvdXJjZT86ICgobDogTGlua0RhdHVtKSA9PiBudW1iZXIgfCBzdHJpbmcgfCBQb2ludERhdHVtKVxuXG4gIC8qKiBMaW5rIHRhcmdldCBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYGQgPT4gZC50YXJnZXRgICovXG4gIEBJbnB1dCgpIGxpbmtUYXJnZXQ/OiAoKGw6IExpbmtEYXR1bSkgPT4gbnVtYmVyIHwgc3RyaW5nIHwgUG9pbnREYXR1bSlcblxuICAvKiogRmxvdyBzb3VyY2UgcG9pbnQgbG9uZ2l0dWRlIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHZhbHVlLiBEZWZhdWx0OiBgZiA9PiBmLnNvdXJjZUxvbmdpdHVkZWAgKi9cbiAgQElucHV0KCkgc291cmNlTG9uZ2l0dWRlPzogTnVtZXJpY0FjY2Vzc29yPExpbmtEYXR1bT5cblxuICAvKiogRmxvdyBzb3VyY2UgcG9pbnQgbGF0aXR1ZGUgYWNjZXNzb3IgZnVuY3Rpb24gb3IgdmFsdWUuIERlZmF1bHQ6IGBmID0+IGYuc291cmNlTGF0aXR1ZGVgICovXG4gIEBJbnB1dCgpIHNvdXJjZUxhdGl0dWRlPzogTnVtZXJpY0FjY2Vzc29yPExpbmtEYXR1bT5cblxuICAvKiogRmxvdyB0YXJnZXQgcG9pbnQgbG9uZ2l0dWRlIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHZhbHVlLiBEZWZhdWx0OiBgZiA9PiBmLnRhcmdldExvbmdpdHVkZWAgKi9cbiAgQElucHV0KCkgdGFyZ2V0TG9uZ2l0dWRlPzogTnVtZXJpY0FjY2Vzc29yPExpbmtEYXR1bT5cblxuICAvKiogRmxvdyB0YXJnZXQgcG9pbnQgbGF0aXR1ZGUgYWNjZXNzb3IgZnVuY3Rpb24gb3IgdmFsdWUuIERlZmF1bHQ6IGBmID0+IGYudGFyZ2V0TGF0aXR1ZGVgICovXG4gIEBJbnB1dCgpIHRhcmdldExhdGl0dWRlPzogTnVtZXJpY0FjY2Vzc29yPExpbmtEYXR1bT5cblxuICAvKiogRmxvdyBzb3VyY2UgcG9pbnQgcmFkaXVzIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHZhbHVlLiBEZWZhdWx0OiBgM2AgKi9cbiAgQElucHV0KCkgc291cmNlUG9pbnRSYWRpdXM/OiBOdW1lcmljQWNjZXNzb3I8TGlua0RhdHVtPlxuXG4gIC8qKiBTb3VyY2UgcG9pbnQgY29sb3IgYWNjZXNzb3IgZnVuY3Rpb24gb3IgdmFsdWUuIERlZmF1bHQ6IGAnIzg4OTE5ZidgICovXG4gIEBJbnB1dCgpIHNvdXJjZVBvaW50Q29sb3I/OiBDb2xvckFjY2Vzc29yPExpbmtEYXR1bT5cblxuICAvKiogRmxvdyBwYXJ0aWNsZSBjb2xvciBhY2Nlc3NvciBmdW5jdGlvbiBvciB2YWx1ZS4gRGVmYXVsdDogYCcjOTQ5ZGFkJ2AgKi9cbiAgQElucHV0KCkgZmxvd1BhcnRpY2xlQ29sb3I/OiBDb2xvckFjY2Vzc29yPExpbmtEYXR1bT5cblxuICAvKiogRmxvdyBwYXJ0aWNsZSByYWRpdXMgYWNjZXNzb3IgZnVuY3Rpb24gb3IgdmFsdWUuIERlZmF1bHQ6IGAxLjFgICovXG4gIEBJbnB1dCgpIGZsb3dQYXJ0aWNsZVJhZGl1cz86IE51bWVyaWNBY2Nlc3NvcjxMaW5rRGF0dW0+XG5cbiAgLyoqIEZsb3cgcGFydGljbGUgc3BlZWQgYWNjZXNzb3IgZnVuY3Rpb24gb3IgdmFsdWUuIFRoZSB1bml0IGlzIGFyYml0cmFyeSwgcmVjb21tZW5kZWQgcmFuZ2UgaXMgMCDigJMgMC4yLiBEZWZhdWx0OiBgMC4wN2AgKi9cbiAgQElucHV0KCkgZmxvd1BhcnRpY2xlU3BlZWQ/OiBOdW1lcmljQWNjZXNzb3I8TGlua0RhdHVtPlxuXG4gIC8qKiBGbG93IHBhcnRpY2xlIGRlbnNpdHkgYWNjZXNzb3IgZnVuY3Rpb24gb3IgdmFsdWUgb24gdGhlIHJhbmdlIG9mIFswLCAxXS4gRGVmYXVsdDogYDAuNmAgKi9cbiAgQElucHV0KCkgZmxvd1BhcnRpY2xlRGVuc2l0eT86IE51bWVyaWNBY2Nlc3NvcjxMaW5rRGF0dW0+XG5cbiAgLyoqIEVuYWJsZSBmbG93IGFuaW1hdGlvbnMuIFdoZW4gdHJ1ZSwgc2hvd3MgYW5pbWF0ZWQgcGFydGljbGVzIGFsb25nIGxpbmtzLiBEZWZhdWx0OiBgZmFsc2VgICovXG4gIEBJbnB1dCgpIGVuYWJsZUZsb3dBbmltYXRpb24/OiBib29sZWFuXG5cbiAgLyoqIEZsb3cgc291cmNlIHBvaW50IGNsaWNrIGNhbGxiYWNrIGZ1bmN0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBvblNvdXJjZVBvaW50Q2xpY2s/OiAoZjogTGlua0RhdHVtLCB4OiBudW1iZXIsIHk6IG51bWJlciwgZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWRcblxuICAvKiogRmxvdyBzb3VyY2UgcG9pbnQgbW91c2Ugb3ZlciBjYWxsYmFjayBmdW5jdGlvbi4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgb25Tb3VyY2VQb2ludE1vdXNlRW50ZXI/OiAoZjogTGlua0RhdHVtLCB4OiBudW1iZXIsIHk6IG51bWJlciwgZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWRcblxuICAvKiogRmxvdyBzb3VyY2UgcG9pbnQgbW91c2UgbGVhdmUgY2FsbGJhY2sgZnVuY3Rpb24uIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG9uU291cmNlUG9pbnRNb3VzZUxlYXZlPzogKGY6IExpbmtEYXR1bSwgZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWRcblxuICAvKiogQXJlYSBpZCBhY2Nlc3NvciBmdW5jdGlvbiBjb3JyZXNwb25kaW5nIHRvIHRoZSBmZWF0dXJlIGlkIGZyb20gVG9wb0pTT04uIERlZmF1bHQ6IGBkID0+IGQuaWQgPz8gJydgICovXG4gIEBJbnB1dCgpIGFyZWFJZD86IFN0cmluZ0FjY2Vzc29yPEFyZWFEYXR1bT5cblxuICAvKiogQXJlYSBjb2xvciB2YWx1ZSBvciBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYGQgPT4gZC5jb2xvciA/PyBudWxsYCAqL1xuICBASW5wdXQoKSBhcmVhQ29sb3I/OiBDb2xvckFjY2Vzc29yPEFyZWFEYXR1bT5cblxuICAvKiogQXJlYSBjdXJzb3IgdmFsdWUgb3IgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGBudWxsYCAqL1xuICBASW5wdXQoKSBhcmVhQ3Vyc29yPzogU3RyaW5nQWNjZXNzb3I8QXJlYURhdHVtPlxuXG4gIC8qKiBBcmVhIGxhYmVsIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBhcmVhTGFiZWw/OiBTdHJpbmdBY2Nlc3NvcjxBcmVhRGF0dW0+XG5cbiAgLyoqIFBvaW50IGNvbG9yIGFjY2Vzc29yLiBEZWZhdWx0OiBgZCA9PiBkLmNvbG9yID8/IG51bGxgICovXG4gIEBJbnB1dCgpIHBvaW50Q29sb3I/OiBDb2xvckFjY2Vzc29yPFBvaW50RGF0dW0+XG5cbiAgLyoqIFBvaW50IHJhZGl1cyBhY2Nlc3Nvci4gRGVmYXVsdDogYGQgPT4gZC5yYWRpdXMgPz8gOGAgKi9cbiAgQElucHV0KCkgcG9pbnRSYWRpdXM/OiBOdW1lcmljQWNjZXNzb3I8UG9pbnREYXR1bT5cblxuICAvKiogUG9pbnQgc3Ryb2tlIHdpZHRoIGFjY2Vzc29yLiBEZWZhdWx0OiBgZCA9PiBkLnN0cm9rZVdpZHRoID8/IG51bGxgICovXG4gIEBJbnB1dCgpIHBvaW50U3Ryb2tlV2lkdGg/OiBOdW1lcmljQWNjZXNzb3I8UG9pbnREYXR1bT5cblxuICAvKiogUG9pbnQgc2hhcGUgYWNjZXNzb3IuIERlZmF1bHQ6IGBUb3BvSlNPTk1hcFBvaW50U2hhcGUuQ2lyY2xlYCAqL1xuICBASW5wdXQoKSBwb2ludFNoYXBlPzogU3RyaW5nQWNjZXNzb3I8UG9pbnREYXR1bT5cblxuICAvKiogUG9pbnQgcmluZyB3aWR0aCBmb3IgcmluZy1zaGFwZWQgcG9pbnRzLiBEZWZhdWx0OiBgMmAgKi9cbiAgQElucHV0KCkgcG9pbnRSaW5nV2lkdGg/OiBOdW1lcmljQWNjZXNzb3I8UG9pbnREYXR1bT5cblxuICAvKiogUG9pbnQgY3Vyc29yIGNvbnN0YW50IHZhbHVlIG9yIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgbnVsbGAgKi9cbiAgQElucHV0KCkgcG9pbnRDdXJzb3I/OiBTdHJpbmdBY2Nlc3NvcjxQb2ludERhdHVtPlxuXG4gIC8qKiBQb2ludCBsb25naXR1ZGUgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGBkID0+IGQubG9uZ2l0dWRlID8/IG51bGxgICovXG4gIEBJbnB1dCgpIGxvbmdpdHVkZT86IE51bWVyaWNBY2Nlc3NvcjxQb2ludERhdHVtPlxuXG4gIC8qKiBQb2ludCBsYXRpdHVkZSBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYGQgPT4gZC5sYXRpdHVkZSA/PyBudWxsYCAqL1xuICBASW5wdXQoKSBsYXRpdHVkZT86IE51bWVyaWNBY2Nlc3NvcjxQb2ludERhdHVtPlxuXG4gIC8qKiBQb2ludCBsYWJlbCBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgcG9pbnRMYWJlbD86IFN0cmluZ0FjY2Vzc29yPFBvaW50RGF0dW0+XG5cbiAgLyoqIFBvaW50IGxhYmVsIHBvc2l0aW9uLiBEZWZhdWx0OiBgUG9zaXRpb24uQm90dG9tYCAqL1xuICBASW5wdXQoKSBwb2ludExhYmVsUG9zaXRpb24/OiBNYXBQb2ludExhYmVsUG9zaXRpb25cblxuICAvKiogUG9pbnQgY29sb3IgYnJpZ2h0bmVzcyByYXRpbyBmb3Igc3dpdGNoaW5nIGJldHdlZW4gZGFyayBhbmQgbGlnaHQgdGV4dCBsYWJlbCBjb2xvci4gRGVmYXVsdDogYDAuNjVgICovXG4gIEBJbnB1dCgpIHBvaW50TGFiZWxUZXh0QnJpZ2h0bmVzc1JhdGlvPzogbnVtYmVyXG5cbiAgLyoqIFBvaW50IGlkIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgZCA9PiBkLmlkYCAqL1xuICBASW5wdXQoKSBwb2ludElkPzogKChkOiBQb2ludERhdHVtLCBpOiBudW1iZXIpID0+IHN0cmluZylcblxuICAvKiogQ29sb3IgbWFwIGZvciBwb2ludHMgd2l0aCBkb251dC9waWUgY2hhcnQgdmlzdWFsaXphdGlvbi4gRGVmYXVsdDogYHt9YCAqL1xuICBASW5wdXQoKSBjb2xvck1hcD86IFRvcG9KU09OTWFwUG9pbnRTdHlsZXM8UG9pbnREYXR1bT5cblxuICAvKiogQ2x1c3RlciBjb2xvciBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgY2x1c3RlckNvbG9yPzogQ29sb3JBY2Nlc3NvcjxUb3BvSlNPTk1hcENsdXN0ZXJEYXR1bTxQb2ludERhdHVtPj5cblxuICAvKiogQ2x1c3RlciByYWRpdXMgYWNjZXNzb3IgZnVuY3Rpb24gb3IgY29uc3RhbnQgdmFsdWUuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIGNsdXN0ZXJSYWRpdXM/OiBOdW1lcmljQWNjZXNzb3I8VG9wb0pTT05NYXBDbHVzdGVyRGF0dW08UG9pbnREYXR1bT4+XG5cbiAgLyoqIENsdXN0ZXIgaW5uZXIgbGFiZWwgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGBkID0+IGQucG9pbnRDb3VudGAgKi9cbiAgQElucHV0KCkgY2x1c3RlckxhYmVsPzogU3RyaW5nQWNjZXNzb3I8VG9wb0pTT05NYXBDbHVzdGVyRGF0dW08UG9pbnREYXR1bT4+XG5cbiAgLyoqIENsdXN0ZXIgaW5uZXIgbGFiZWwgY29sb3IgYWNjZXNzb3IgZnVuY3Rpb24gb3IgY29uc3RhbnQgdmFsdWUuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIGNsdXN0ZXJMYWJlbENvbG9yPzogU3RyaW5nQWNjZXNzb3I8VG9wb0pTT05NYXBDbHVzdGVyRGF0dW08UG9pbnREYXR1bT4+XG5cbiAgLyoqIENsdXN0ZXIgYm90dG9tIGxhYmVsIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgJydgICovXG4gIEBJbnB1dCgpIGNsdXN0ZXJCb3R0b21MYWJlbD86IFN0cmluZ0FjY2Vzc29yPFRvcG9KU09OTWFwQ2x1c3RlckRhdHVtPFBvaW50RGF0dW0+PlxuXG4gIC8qKiBUaGUgd2lkdGggb2YgdGhlIGNsdXN0ZXIgcG9pbnQgcmluZy4gRGVmYXVsdDogYDJgICovXG4gIEBJbnB1dCgpIGNsdXN0ZXJSaW5nV2lkdGg/OiBudW1iZXJcblxuICAvKiogV2hlbiBjbHVzdGVyIGlzIGV4cGFuZGVkLCBzaG93IGEgYmFja2dyb3VuZCBjaXJjbGUgdG8gYmV0dGVyIHNlcGFyYXRlIHBvaW50cyBmcm9tIHRoZSBiYXNlIG1hcC4gRGVmYXVsdDogYHRydWVgICovXG4gIEBJbnB1dCgpIGNsdXN0ZXJCYWNrZ3JvdW5kPzogYm9vbGVhblxuXG4gIC8qKiBEZWZpbmVzIHdoZXRoZXIgdGhlIGNsdXN0ZXIgc2hvdWxkIGV4cGFuZCBvbiBjbGljayBvciBub3QuIERlZmF1bHQ6IGB0cnVlYCAqL1xuICBASW5wdXQoKSBjbHVzdGVyRXhwYW5kT25DbGljaz86IGJvb2xlYW5cblxuICAvKiogQ2x1c3RlcmluZyBkaXN0YW5jZSBpbiBwaXhlbHMuIERlZmF1bHQ6IGA1NWAgKi9cbiAgQElucHV0KCkgY2x1c3RlcmluZ0Rpc3RhbmNlPzogbnVtYmVyXG5cbiAgLyoqIEVuYWJsZSBwb2ludCBjbHVzdGVyaW5nLiBEZWZhdWx0OiBgZmFsc2VgICovXG4gIEBJbnB1dCgpIGNsdXN0ZXJpbmc/OiBib29sZWFuXG5cbiAgLyoqIEVuYWJsZXMgYmx1ciBhbmQgYmxlbmRpbmcgYmV0d2VlbiBuZWlnaGJvdXJpbmcgcG9pbnRzLiBEZWZhdWx0OiBgZmFsc2VgICovXG4gIEBJbnB1dCgpIGhlYXRtYXBNb2RlPzogYm9vbGVhblxuXG4gIC8qKiBIZWF0bWFwIGJsdXIgZmlsdGVyIHN0ZERldmlhdGlvbiB2YWx1ZS4gRGVmYXVsdDogYDEwYCAqL1xuICBASW5wdXQoKSBoZWF0bWFwTW9kZUJsdXJTdGREZXZpYXRpb24/OiBudW1iZXJcblxuICAvKiogWm9vbSBsZXZlbCBhdCB3aGljaCB0aGUgaGVhdG1hcCBtb2RlIHdpbGwgYmUgZGlzYWJsZWQuIERlZmF1bHQ6IGAyLjVgICovXG4gIEBJbnB1dCgpIGhlYXRtYXBNb2RlWm9vbUxldmVsVGhyZXNob2xkPzogbnVtYmVyXG4gIEBJbnB1dCgpIGRhdGE6IHthcmVhcz86IEFyZWFEYXR1bVtdOyBwb2ludHM/OiBQb2ludERhdHVtW107IGxpbmtzPzogTGlua0RhdHVtW119XG5cbiAgY29tcG9uZW50OiBUb3BvSlNPTk1hcDxBcmVhRGF0dW0sIFBvaW50RGF0dW0sIExpbmtEYXR1bT4gfCB1bmRlZmluZWRcbiAgcHVibGljIGNvbXBvbmVudENvbnRhaW5lcjogQ29udGFpbmVyQ29yZSB8IHVuZGVmaW5lZFxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCAoKTogdm9pZCB7XG4gICAgdGhpcy5jb21wb25lbnQgPSBuZXcgVG9wb0pTT05NYXA8QXJlYURhdHVtLCBQb2ludERhdHVtLCBMaW5rRGF0dW0+KHRoaXMuZ2V0Q29uZmlnKCkpXG5cbiAgICBpZiAodGhpcy5kYXRhKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudC5zZXREYXRhKHRoaXMuZGF0YSlcbiAgICAgIHRoaXMuY29tcG9uZW50Q29udGFpbmVyPy5yZW5kZXIoKVxuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzIChjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuZGF0YSkgeyB0aGlzLmNvbXBvbmVudD8uc2V0RGF0YSh0aGlzLmRhdGEpIH1cbiAgICB0aGlzLmNvbXBvbmVudD8uc2V0Q29uZmlnKHRoaXMuZ2V0Q29uZmlnKCkpXG4gICAgdGhpcy5jb21wb25lbnRDb250YWluZXI/LnJlbmRlcigpXG4gIH1cblxuICBwcml2YXRlIGdldENvbmZpZyAoKTogVG9wb0pTT05NYXBDb25maWdJbnRlcmZhY2U8QXJlYURhdHVtLCBQb2ludERhdHVtLCBMaW5rRGF0dW0+IHtcbiAgICBjb25zdCB7IGR1cmF0aW9uLCBldmVudHMsIGF0dHJpYnV0ZXMsIHByb2plY3Rpb24sIHRvcG9qc29uLCBtYXBGZWF0dXJlTmFtZSwgbWFwRml0VG9Qb2ludHMsIHpvb21GYWN0b3IsIGRpc2FibGVab29tLCB6b29tRXh0ZW50LCB6b29tRHVyYXRpb24sIGxpbmtXaWR0aCwgbGlua0NvbG9yLCBsaW5rQ3Vyc29yLCBsaW5rSWQsIGxpbmtTb3VyY2UsIGxpbmtUYXJnZXQsIHNvdXJjZUxvbmdpdHVkZSwgc291cmNlTGF0aXR1ZGUsIHRhcmdldExvbmdpdHVkZSwgdGFyZ2V0TGF0aXR1ZGUsIHNvdXJjZVBvaW50UmFkaXVzLCBzb3VyY2VQb2ludENvbG9yLCBmbG93UGFydGljbGVDb2xvciwgZmxvd1BhcnRpY2xlUmFkaXVzLCBmbG93UGFydGljbGVTcGVlZCwgZmxvd1BhcnRpY2xlRGVuc2l0eSwgZW5hYmxlRmxvd0FuaW1hdGlvbiwgb25Tb3VyY2VQb2ludENsaWNrLCBvblNvdXJjZVBvaW50TW91c2VFbnRlciwgb25Tb3VyY2VQb2ludE1vdXNlTGVhdmUsIGFyZWFJZCwgYXJlYUNvbG9yLCBhcmVhQ3Vyc29yLCBhcmVhTGFiZWwsIHBvaW50Q29sb3IsIHBvaW50UmFkaXVzLCBwb2ludFN0cm9rZVdpZHRoLCBwb2ludFNoYXBlLCBwb2ludFJpbmdXaWR0aCwgcG9pbnRDdXJzb3IsIGxvbmdpdHVkZSwgbGF0aXR1ZGUsIHBvaW50TGFiZWwsIHBvaW50TGFiZWxQb3NpdGlvbiwgcG9pbnRMYWJlbFRleHRCcmlnaHRuZXNzUmF0aW8sIHBvaW50SWQsIGNvbG9yTWFwLCBjbHVzdGVyQ29sb3IsIGNsdXN0ZXJSYWRpdXMsIGNsdXN0ZXJMYWJlbCwgY2x1c3RlckxhYmVsQ29sb3IsIGNsdXN0ZXJCb3R0b21MYWJlbCwgY2x1c3RlclJpbmdXaWR0aCwgY2x1c3RlckJhY2tncm91bmQsIGNsdXN0ZXJFeHBhbmRPbkNsaWNrLCBjbHVzdGVyaW5nRGlzdGFuY2UsIGNsdXN0ZXJpbmcsIGhlYXRtYXBNb2RlLCBoZWF0bWFwTW9kZUJsdXJTdGREZXZpYXRpb24sIGhlYXRtYXBNb2RlWm9vbUxldmVsVGhyZXNob2xkIH0gPSB0aGlzXG4gICAgY29uc3QgY29uZmlnID0geyBkdXJhdGlvbiwgZXZlbnRzLCBhdHRyaWJ1dGVzLCBwcm9qZWN0aW9uLCB0b3BvanNvbiwgbWFwRmVhdHVyZU5hbWUsIG1hcEZpdFRvUG9pbnRzLCB6b29tRmFjdG9yLCBkaXNhYmxlWm9vbSwgem9vbUV4dGVudCwgem9vbUR1cmF0aW9uLCBsaW5rV2lkdGgsIGxpbmtDb2xvciwgbGlua0N1cnNvciwgbGlua0lkLCBsaW5rU291cmNlLCBsaW5rVGFyZ2V0LCBzb3VyY2VMb25naXR1ZGUsIHNvdXJjZUxhdGl0dWRlLCB0YXJnZXRMb25naXR1ZGUsIHRhcmdldExhdGl0dWRlLCBzb3VyY2VQb2ludFJhZGl1cywgc291cmNlUG9pbnRDb2xvciwgZmxvd1BhcnRpY2xlQ29sb3IsIGZsb3dQYXJ0aWNsZVJhZGl1cywgZmxvd1BhcnRpY2xlU3BlZWQsIGZsb3dQYXJ0aWNsZURlbnNpdHksIGVuYWJsZUZsb3dBbmltYXRpb24sIG9uU291cmNlUG9pbnRDbGljaywgb25Tb3VyY2VQb2ludE1vdXNlRW50ZXIsIG9uU291cmNlUG9pbnRNb3VzZUxlYXZlLCBhcmVhSWQsIGFyZWFDb2xvciwgYXJlYUN1cnNvciwgYXJlYUxhYmVsLCBwb2ludENvbG9yLCBwb2ludFJhZGl1cywgcG9pbnRTdHJva2VXaWR0aCwgcG9pbnRTaGFwZSwgcG9pbnRSaW5nV2lkdGgsIHBvaW50Q3Vyc29yLCBsb25naXR1ZGUsIGxhdGl0dWRlLCBwb2ludExhYmVsLCBwb2ludExhYmVsUG9zaXRpb24sIHBvaW50TGFiZWxUZXh0QnJpZ2h0bmVzc1JhdGlvLCBwb2ludElkLCBjb2xvck1hcCwgY2x1c3RlckNvbG9yLCBjbHVzdGVyUmFkaXVzLCBjbHVzdGVyTGFiZWwsIGNsdXN0ZXJMYWJlbENvbG9yLCBjbHVzdGVyQm90dG9tTGFiZWwsIGNsdXN0ZXJSaW5nV2lkdGgsIGNsdXN0ZXJCYWNrZ3JvdW5kLCBjbHVzdGVyRXhwYW5kT25DbGljaywgY2x1c3RlcmluZ0Rpc3RhbmNlLCBjbHVzdGVyaW5nLCBoZWF0bWFwTW9kZSwgaGVhdG1hcE1vZGVCbHVyU3RkRGV2aWF0aW9uLCBoZWF0bWFwTW9kZVpvb21MZXZlbFRocmVzaG9sZCB9XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGNvbmZpZykgYXMgKGtleW9mIFRvcG9KU09OTWFwQ29uZmlnSW50ZXJmYWNlPEFyZWFEYXR1bSwgUG9pbnREYXR1bSwgTGlua0RhdHVtPilbXVxuICAgIGtleXMuZm9yRWFjaChrZXkgPT4geyBpZiAoY29uZmlnW2tleV0gPT09IHVuZGVmaW5lZCkgZGVsZXRlIGNvbmZpZ1trZXldIH0pXG5cbiAgICByZXR1cm4gY29uZmlnXG4gIH1cbn1cbiJdfQ==
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wb2pzb24tbWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3RvcG9qc29uLW1hcC90b3BvanNvbi1tYXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFpQixLQUFLLEVBQWlCLE1BQU0sZUFBZSxDQUFBO0FBQzlFLE9BQU8sRUFDTCxXQUFXLEdBVVosTUFBTSxZQUFZLENBQUE7QUFFbkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFBOztBQVE3QyxNQUFNLE9BQU8sdUJBQXVCO0lBMEtsQyxlQUFlOztRQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxXQUFXLENBQW1DLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO1FBRXBGLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNqQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7U0FDbEM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFFLE9BQXNCOztRQUNqQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFBRSxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7U0FBRTtRQUN4RCxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtRQUMzQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7SUFDbkMsQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxF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SztnQkFHRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUdHLDZCQUE2QjtzQkFBckMsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBbUJHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFHRywyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBR0csNkJBQTZCO3NCQUFyQyxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vICEhISBUaGlzIGNvZGUgd2FzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkLiBZb3Ugc2hvdWxkIG5vdCBjaGFuZ2UgaXQgISEhXG5pbXBvcnQgeyBDb21wb25lbnQsIEFmdGVyVmlld0luaXQsIElucHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIFRvcG9KU09OTWFwLFxuICBUb3BvSlNPTk1hcENvbmZpZ0ludGVyZmFjZSxcbiAgQ29udGFpbmVyQ29yZSxcbiAgVmlzRXZlbnRUeXBlLFxuICBWaXNFdmVudENhbGxiYWNrLFxuICBOdW1lcmljQWNjZXNzb3IsXG4gIENvbG9yQWNjZXNzb3IsXG4gIFN0cmluZ0FjY2Vzc29yLFxuICBNYXBQb2ludExhYmVsUG9zaXRpb24sXG4gIFRvcG9KU09OTWFwUG9pbnRTdHlsZXMsXG59IGZyb20gJ0B1bm92aXMvdHMnXG5pbXBvcnQgeyBHZW9Qcm9qZWN0aW9uIH0gZnJvbSAnZDMtZ2VvJ1xuaW1wb3J0IHsgVmlzQ29yZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Zpcy10b3BvanNvbi1tYXAnLFxuICB0ZW1wbGF0ZTogJycsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFZpc0NvcmVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBWaXNUb3BvSlNPTk1hcENvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgVmlzVG9wb0pTT05NYXBDb21wb25lbnQ8QXJlYURhdHVtLCBQb2ludERhdHVtLCBMaW5rRGF0dW0+IGltcGxlbWVudHMgVG9wb0pTT05NYXBDb25maWdJbnRlcmZhY2U8QXJlYURhdHVtLCBQb2ludERhdHVtLCBMaW5rRGF0dW0+LCBBZnRlclZpZXdJbml0IHtcbiAgLyoqIEFuaW1hdGlvbiBkdXJhdGlvbiBvZiB0aGUgZGF0YSB1cGRhdGUgdHJhbnNpdGlvbnMgaW4gbWlsbGlzZWNvbmRzLiBEZWZhdWx0OiBgNjAwYCAqL1xuICBASW5wdXQoKSBkdXJhdGlvbj86IG51bWJlclxuXG4gIC8qKiBFdmVudHMgY29uZmlndXJhdGlvbi4gQW4gb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcyBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDpcbiAgICpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbc2VsZWN0b3JTdHJpbmddOiB7XG4gICAqICAgICBcXFtldmVudFR5cGVdOiBjYWxsYmFja0Z1bmN0aW9uXG4gICAqICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqIGUuZy46XG4gICAqIGBgYFxuICAgKiB7XG4gICAqIFxcW0FyZWEuc2VsZWN0b3JzLmFyZWFdOiB7XG4gICAqICAgIGNsaWNrOiAoZCkgPT4gY29uc29sZS5sb2coXCJDbGlja2VkIEFyZWFcIiwgZClcbiAgICogIH1cbiAgICogfVxuICAgKiBgYGAgKi9cbiAgQElucHV0KCkgZXZlbnRzPzoge1xuICAgIFtzZWxlY3Rvcjogc3RyaW5nXToge1xuICAgICAgW2V2ZW50VHlwZSBpbiBWaXNFdmVudFR5cGVdPzogVmlzRXZlbnRDYWxsYmFja1xuICAgIH07XG4gIH1cblxuICAvKiogWW91IGNhbiBzZXQgZXZlcnkgU1ZHIGFuZCBIVE1MIHZpc3VhbGl6YXRpb24gb2JqZWN0IHRvIGhhdmUgYSBjdXN0b20gRE9NIGF0dHJpYnV0ZXMsIHdoaWNoIGlzIHVzZWZ1bFxuICAgKiB3aGVuIHlvdSB3YW50IHRvIGRvIHVuaXQgb3IgZW5kLXRvLWVuZCB0ZXN0aW5nLiBBdHRyaWJ1dGVzIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTpcbiAgICpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbc2VsZWN0b3JTdHJpbmddOiB7XG4gICAqICAgICBcXFthdHRyaWJ1dGVOYW1lXTogYXR0cmlidXRlIGNvbnN0YW50IHZhbHVlIG9yIGFjY2Vzc29yIGZ1bmN0aW9uXG4gICAqICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqIGUuZy46XG4gICAqIGBgYFxuICAgKiB7XG4gICAqIFxcW0FyZWEuc2VsZWN0b3JzLmFyZWFdOiB7XG4gICAqICAgIFwidGVzdC12YWx1ZVwiOiBkID0+IGQudmFsdWVcbiAgICogIH1cbiAgICogfVxuICAgKiBgYGAgKi9cbiAgQElucHV0KCkgYXR0cmlidXRlcz86IHtcbiAgICBbc2VsZWN0b3I6IHN0cmluZ106IHtcbiAgICAgIFthdHRyOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgKChkYXR1bTogYW55KSA9PiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIE1hcFByb2plY3Rpb24gKGFrYSBEMydzIEdlb1Byb2plY3Rpb24pIGluc3RhbmNlLiBEZWZhdWx0OiBgTWFwUHJvamVjdGlvbi5LYXZyYXlza2l5NygpYCAqL1xuICBASW5wdXQoKSBwcm9qZWN0aW9uPzogR2VvUHJvamVjdGlvblxuXG4gIC8qKiBNYXAgZGF0YSBpbiB0aGUgVG9wb0pTT04gdG9wb2xvZ3kgZm9ybWF0LiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB0b3BvanNvbj86IFRvcG9KU09OLlRvcG9sb2d5XG5cbiAgLyoqIE5hbWUgb2YgdGhlIG1hcCBmZWF0dXJlcyB0byBiZSBkaXNwbGF5ZWQsIGUuZy4gJ2NvdW50cmllcycgb3IgJ2NvdW50aWVzJy4gRGVmYXVsdDogYGNvdW50cmllc2AgKi9cbiAgQElucHV0KCkgbWFwRmVhdHVyZU5hbWU/OiBzdHJpbmdcblxuICAvKiogU2V0IGluaXRpYWwgbWFwIGZpdCB0byBwb2ludHMgaW5zdGVhZCBvZiB0b3BvanNvbiBmZWF0dXJlcy4gRGVmYXVsdDogYGZhbHNlYCAqL1xuICBASW5wdXQoKSBtYXBGaXRUb1BvaW50cz86IGJvb2xlYW5cblxuICAvKiogSW5pdGlhbCB6b29tIGxldmVsLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB6b29tRmFjdG9yPzogbnVtYmVyXG5cbiAgLyoqIERpc2FibGUgcGFuIC8gem9vbSBpbnRlcmFjdGlvbnMuIERlZmF1bHQ6IGBmYWxzZWAgKi9cbiAgQElucHV0KCkgZGlzYWJsZVpvb20/OiBib29sZWFuXG5cbiAgLyoqIFpvb20gZXh0ZW50LiBEZWZhdWx0OiBgWzAuNSwgNl1gICovXG4gIEBJbnB1dCgpIHpvb21FeHRlbnQ/OiBudW1iZXJbXVxuXG4gIC8qKiBab29tIGFuaW1hdGlvbiBkdXJhdGlvbi4gRGVmYXVsdDogYDQwMGAgKi9cbiAgQElucHV0KCkgem9vbUR1cmF0aW9uPzogbnVtYmVyXG5cbiAgLyoqIExpbmsgd2lkdGggdmFsdWUgb3IgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGBkID0+IGQud2lkdGggPz8gMWAgKi9cbiAgQElucHV0KCkgbGlua1dpZHRoPzogTnVtZXJpY0FjY2Vzc29yPExpbmtEYXR1bT5cblxuICAvKiogTGluayBjb2xvciB2YWx1ZSBvciBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYGQgPT4gZC5jb2xvciA/PyBudWxsYCAqL1xuICBASW5wdXQoKSBsaW5rQ29sb3I/OiBDb2xvckFjY2Vzc29yPExpbmtEYXR1bT5cblxuICAvKiogTGluayBjdXJzb3IgdmFsdWUgb3IgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGBudWxsYCAqL1xuICBASW5wdXQoKSBsaW5rQ3Vyc29yPzogU3RyaW5nQWNjZXNzb3I8TGlua0RhdHVtPlxuXG4gIC8qKiBMaW5rIGlkIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgZCA9PiBkLmlkYCAqL1xuICBASW5wdXQoKSBsaW5rSWQ/OiBTdHJpbmdBY2Nlc3NvcjxMaW5rRGF0dW0+XG5cbiAgLyoqIExpbmsgc291cmNlIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgZCA9PiBkLnNvdXJjZWAgKi9cbiAgQElucHV0KCkgbGlua1NvdXJjZT86ICgobDogTGlua0RhdHVtKSA9PiBudW1iZXIgfCBzdHJpbmcgfCBQb2ludERhdHVtKVxuXG4gIC8qKiBMaW5rIHRhcmdldCBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYGQgPT4gZC50YXJnZXRgICovXG4gIEBJbnB1dCgpIGxpbmtUYXJnZXQ/OiAoKGw6IExpbmtEYXR1bSkgPT4gbnVtYmVyIHwgc3RyaW5nIHwgUG9pbnREYXR1bSlcblxuICAvKiogQXJlYSBpZCBhY2Nlc3NvciBmdW5jdGlvbiBjb3JyZXNwb25kaW5nIHRvIHRoZSBmZWF0dXJlIGlkIGZyb20gVG9wb0pTT04uIERlZmF1bHQ6IGBkID0+IGQuaWQgPz8gJydgICovXG4gIEBJbnB1dCgpIGFyZWFJZD86IFN0cmluZ0FjY2Vzc29yPEFyZWFEYXR1bT5cblxuICAvKiogQXJlYSBjb2xvciB2YWx1ZSBvciBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYGQgPT4gZC5jb2xvciA/PyBudWxsYCAqL1xuICBASW5wdXQoKSBhcmVhQ29sb3I/OiBDb2xvckFjY2Vzc29yPEFyZWFEYXR1bT5cblxuICAvKiogQXJlYSBjdXJzb3IgdmFsdWUgb3IgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGBudWxsYCAqL1xuICBASW5wdXQoKSBhcmVhQ3Vyc29yPzogU3RyaW5nQWNjZXNzb3I8QXJlYURhdHVtPlxuXG4gIC8qKiBQb2ludCBjb2xvciBhY2Nlc3Nvci4gRGVmYXVsdDogYGQgPT4gZC5jb2xvciA/PyBudWxsYCAqL1xuICBASW5wdXQoKSBwb2ludENvbG9yPzogQ29sb3JBY2Nlc3NvcjxQb2ludERhdHVtPlxuXG4gIC8qKiBQb2ludCByYWRpdXMgYWNjZXNzb3IuIERlZmF1bHQ6IGBkID0+IGQucmFkaXVzID8/IDhgICovXG4gIEBJbnB1dCgpIHBvaW50UmFkaXVzPzogTnVtZXJpY0FjY2Vzc29yPFBvaW50RGF0dW0+XG5cbiAgLyoqIFBvaW50IHN0cm9rZSB3aWR0aCBhY2Nlc3Nvci4gRGVmYXVsdDogYGQgPT4gZC5zdHJva2VXaWR0aCA/PyBudWxsYCAqL1xuICBASW5wdXQoKSBwb2ludFN0cm9rZVdpZHRoPzogTnVtZXJpY0FjY2Vzc29yPFBvaW50RGF0dW0+XG5cbiAgLyoqIFBvaW50IHNoYXBlIGFjY2Vzc29yLiBEZWZhdWx0OiBgVG9wb0pTT05NYXBQb2ludFNoYXBlLkNpcmNsZWAgKi9cbiAgQElucHV0KCkgcG9pbnRTaGFwZT86IFN0cmluZ0FjY2Vzc29yPFBvaW50RGF0dW0+XG5cbiAgLyoqIFBvaW50IHJpbmcgd2lkdGggZm9yIHJpbmctc2hhcGVkIHBvaW50cy4gRGVmYXVsdDogYDJgICovXG4gIEBJbnB1dCgpIHBvaW50UmluZ1dpZHRoPzogTnVtZXJpY0FjY2Vzc29yPFBvaW50RGF0dW0+XG5cbiAgLyoqIFBvaW50IGN1cnNvciBjb25zdGFudCB2YWx1ZSBvciBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYG51bGxgICovXG4gIEBJbnB1dCgpIHBvaW50Q3Vyc29yPzogU3RyaW5nQWNjZXNzb3I8UG9pbnREYXR1bT5cblxuICAvKiogUG9pbnQgbG9uZ2l0dWRlIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgZCA9PiBkLmxvbmdpdHVkZSA/PyBudWxsYCAqL1xuICBASW5wdXQoKSBsb25naXR1ZGU/OiBOdW1lcmljQWNjZXNzb3I8UG9pbnREYXR1bT5cblxuICAvKiogUG9pbnQgbGF0aXR1ZGUgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGBkID0+IGQubGF0aXR1ZGUgPz8gbnVsbGAgKi9cbiAgQElucHV0KCkgbGF0aXR1ZGU/OiBOdW1lcmljQWNjZXNzb3I8UG9pbnREYXR1bT5cblxuICAvKiogUG9pbnQgbGFiZWwgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHBvaW50TGFiZWw/OiBTdHJpbmdBY2Nlc3NvcjxQb2ludERhdHVtPlxuXG4gIC8qKiBQb2ludCBsYWJlbCBwb3NpdGlvbi4gRGVmYXVsdDogYFBvc2l0aW9uLkJvdHRvbWAgKi9cbiAgQElucHV0KCkgcG9pbnRMYWJlbFBvc2l0aW9uPzogTWFwUG9pbnRMYWJlbFBvc2l0aW9uXG5cbiAgLyoqIFBvaW50IGNvbG9yIGJyaWdodG5lc3MgcmF0aW8gZm9yIHN3aXRjaGluZyBiZXR3ZWVuIGRhcmsgYW5kIGxpZ2h0IHRleHQgbGFiZWwgY29sb3IuIERlZmF1bHQ6IGAwLjY1YCAqL1xuICBASW5wdXQoKSBwb2ludExhYmVsVGV4dEJyaWdodG5lc3NSYXRpbz86IG51bWJlclxuXG4gIC8qKiBQb2ludCBpZCBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYGQgPT4gZC5pZGAgKi9cbiAgQElucHV0KCkgcG9pbnRJZD86ICgoZDogUG9pbnREYXR1bSwgaTogbnVtYmVyKSA9PiBzdHJpbmcpXG5cbiAgLyoqIEEgc2luZ2xlIG1hcCBwb2ludCBjYW4gaGF2ZSBtdWx0aXBsZSBwcm9wZXJ0aWVzIGRpc3BsYXllZCBhcyBhIHNtYWxsIHBpZSBjaGFydC5cbiAgICogQnkgc2V0dGluZyB0aGUgY29sb3JNYXAgY29uZmlndXJhdGlvbiB5b3UgY2FuIHNwZWNpZnkgZGF0YSBwcm9wZXJ0aWVzIHRoYXQgc2hvdWxkIGJlIG1hcHBlZCB0byB2YXJpb3VzIHBpZSAvIGRvbnV0IHNlZ21lbnRzLlxuICAgKlxuICAgKiBgYGBcbiAgICoge1xuICAgKiBcXFtrZXkgaW4ga2V5b2YgUG9pbnREYXR1bV0/OiB7IGNvbG9yOiBzdHJpbmcsIGNsYXNzTmFtZT86IHN0cmluZyB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqIGUuZy46XG4gICAqIGBgYFxuICAgKiB7XG4gICAqIFxcaGVhbHRoeTogeyBjb2xvcjogJ2dyZWVuJyB9LFxuICAgKiBcXHdhcm5pbmc6IHsgY29sb3I6ICdvcmFuZ2UnIH0sXG4gICAqIFxcY3JpdGljYWw6IHsgY29sb3I6ICdyZWQnIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICogd2hlcmUgZXZlcnkgZGF0YSBwb2ludCBoYXMgdGhlIGBoZWFsdGh5YCwgYHdhcm5pbmdgIGFuZCBgY3JpdGljYWxgIG51bWVyaWNhbCBvciBib29sZWFuIHByb3BlcnR5LiAqL1xuICBASW5wdXQoKSBjb2xvck1hcD86IFRvcG9KU09OTWFwUG9pbnRTdHlsZXM8UG9pbnREYXR1bT5cblxuICAvKiogRW5hYmxlcyBibHVyIGFuZCBibGVuZGluZyBiZXR3ZWVuIG5laWdoYm91cmluZyBwb2ludHMuIERlZmF1bHQ6IGBmYWxzZWAgKi9cbiAgQElucHV0KCkgaGVhdG1hcE1vZGU/OiBib29sZWFuXG5cbiAgLyoqIEhlYXRtYXAgYmx1ciBmaWx0ZXIgc3RkRGV2aWF0aW9uIHZhbHVlLiBEZWZhdWx0OiBgMTBgICovXG4gIEBJbnB1dCgpIGhlYXRtYXBNb2RlQmx1clN0ZERldmlhdGlvbj86IG51bWJlclxuXG4gIC8qKiBab29tIGxldmVsIGF0IHdoaWNoIHRoZSBoZWF0bWFwIG1vZGUgd2lsbCBiZSBkaXNhYmxlZC4gRGVmYXVsdDogYDIuNWAgKi9cbiAgQElucHV0KCkgaGVhdG1hcE1vZGVab29tTGV2ZWxUaHJlc2hvbGQ/OiBudW1iZXJcbiAgQElucHV0KCkgZGF0YToge2FyZWFzPzogQXJlYURhdHVtW107IHBvaW50cz86IFBvaW50RGF0dW1bXTsgbGlua3M/OiBMaW5rRGF0dW1bXX1cblxuICBjb21wb25lbnQ6IFRvcG9KU09OTWFwPEFyZWFEYXR1bSwgUG9pbnREYXR1bSwgTGlua0RhdHVtPiB8IHVuZGVmaW5lZFxuICBwdWJsaWMgY29tcG9uZW50Q29udGFpbmVyOiBDb250YWluZXJDb3JlIHwgdW5kZWZpbmVkXG5cbiAgbmdBZnRlclZpZXdJbml0ICgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudCA9IG5ldyBUb3BvSlNPTk1hcDxBcmVhRGF0dW0sIFBvaW50RGF0dW0sIExpbmtEYXR1bT4odGhpcy5nZXRDb25maWcoKSlcblxuICAgIGlmICh0aGlzLmRhdGEpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50LnNldERhdGEodGhpcy5kYXRhKVxuICAgICAgdGhpcy5jb21wb25lbnRDb250YWluZXI/LnJlbmRlcigpXG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMgKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5kYXRhKSB7IHRoaXMuY29tcG9uZW50Py5zZXREYXRhKHRoaXMuZGF0YSkgfVxuICAgIHRoaXMuY29tcG9uZW50Py5zZXRDb25maWcodGhpcy5nZXRDb25maWcoKSlcbiAgICB0aGlzLmNvbXBvbmVudENvbnRhaW5lcj8ucmVuZGVyKClcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29uZmlnICgpOiBUb3BvSlNPTk1hcENvbmZpZ0ludGVyZmFjZTxBcmVhRGF0dW0sIFBvaW50RGF0dW0sIExpbmtEYXR1bT4ge1xuICAgIGNvbnN0IHsgZHVyYXRpb24sIGV2ZW50cywgYXR0cmlidXRlcywgcHJvamVjdGlvbiwgdG9wb2pzb24sIG1hcEZlYXR1cmVOYW1lLCBtYXBGaXRUb1BvaW50cywgem9vbUZhY3RvciwgZGlzYWJsZVpvb20sIHpvb21FeHRlbnQsIHpvb21EdXJhdGlvbiwgbGlua1dpZHRoLCBsaW5rQ29sb3IsIGxpbmtDdXJzb3IsIGxpbmtJZCwgbGlua1NvdXJjZSwgbGlua1RhcmdldCwgYXJlYUlkLCBhcmVhQ29sb3IsIGFyZWFDdXJzb3IsIHBvaW50Q29sb3IsIHBvaW50UmFkaXVzLCBwb2ludFN0cm9rZVdpZHRoLCBwb2ludFNoYXBlLCBwb2ludFJpbmdXaWR0aCwgcG9pbnRDdXJzb3IsIGxvbmdpdHVkZSwgbGF0aXR1ZGUsIHBvaW50TGFiZWwsIHBvaW50TGFiZWxQb3NpdGlvbiwgcG9pbnRMYWJlbFRleHRCcmlnaHRuZXNzUmF0aW8sIHBvaW50SWQsIGNvbG9yTWFwLCBoZWF0bWFwTW9kZSwgaGVhdG1hcE1vZGVCbHVyU3RkRGV2aWF0aW9uLCBoZWF0bWFwTW9kZVpvb21MZXZlbFRocmVzaG9sZCB9ID0gdGhpc1xuICAgIGNvbnN0IGNvbmZpZyA9IHsgZHVyYXRpb24sIGV2ZW50cywgYXR0cmlidXRlcywgcHJvamVjdGlvbiwgdG9wb2pzb24sIG1hcEZlYXR1cmVOYW1lLCBtYXBGaXRUb1BvaW50cywgem9vbUZhY3RvciwgZGlzYWJsZVpvb20sIHpvb21FeHRlbnQsIHpvb21EdXJhdGlvbiwgbGlua1dpZHRoLCBsaW5rQ29sb3IsIGxpbmtDdXJzb3IsIGxpbmtJZCwgbGlua1NvdXJjZSwgbGlua1RhcmdldCwgYXJlYUlkLCBhcmVhQ29sb3IsIGFyZWFDdXJzb3IsIHBvaW50Q29sb3IsIHBvaW50UmFkaXVzLCBwb2ludFN0cm9rZVdpZHRoLCBwb2ludFNoYXBlLCBwb2ludFJpbmdXaWR0aCwgcG9pbnRDdXJzb3IsIGxvbmdpdHVkZSwgbGF0aXR1ZGUsIHBvaW50TGFiZWwsIHBvaW50TGFiZWxQb3NpdGlvbiwgcG9pbnRMYWJlbFRleHRCcmlnaHRuZXNzUmF0aW8sIHBvaW50SWQsIGNvbG9yTWFwLCBoZWF0bWFwTW9kZSwgaGVhdG1hcE1vZGVCbHVyU3RkRGV2aWF0aW9uLCBoZWF0bWFwTW9kZVpvb21MZXZlbFRocmVzaG9sZCB9XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGNvbmZpZykgYXMgKGtleW9mIFRvcG9KU09OTWFwQ29uZmlnSW50ZXJmYWNlPEFyZWFEYXR1bSwgUG9pbnREYXR1bSwgTGlua0RhdHVtPilbXVxuICAgIGtleXMuZm9yRWFjaChrZXkgPT4geyBpZiAoY29uZmlnW2tleV0gPT09IHVuZGVmaW5lZCkgZGVsZXRlIGNvbmZpZ1trZXldIH0pXG5cbiAgICByZXR1cm4gY29uZmlnXG4gIH1cbn1cbiJdfQ==
@@ -2262,8 +2262,8 @@ class VisTopoJSONMapComponent {
2262
2262
  (_c = this.componentContainer) === null || _c === void 0 ? void 0 : _c.render();
2263
2263
  }
2264
2264
  getConfig() {
2265
- const { duration, events, attributes, projection, topojson, mapFeatureName, mapFitToPoints, zoomFactor, disableZoom, zoomExtent, zoomDuration, linkWidth, linkColor, linkCursor, linkId, linkSource, linkTarget, sourceLongitude, sourceLatitude, targetLongitude, targetLatitude, sourcePointRadius, sourcePointColor, flowParticleColor, flowParticleRadius, flowParticleSpeed, flowParticleDensity, enableFlowAnimation, onSourcePointClick, onSourcePointMouseEnter, onSourcePointMouseLeave, areaId, areaColor, areaCursor, areaLabel, pointColor, pointRadius, pointStrokeWidth, pointShape, pointRingWidth, pointCursor, longitude, latitude, pointLabel, pointLabelPosition, pointLabelTextBrightnessRatio, pointId, colorMap, clusterColor, clusterRadius, clusterLabel, clusterLabelColor, clusterBottomLabel, clusterRingWidth, clusterBackground, clusterExpandOnClick, clusteringDistance, clustering, heatmapMode, heatmapModeBlurStdDeviation, heatmapModeZoomLevelThreshold } = this;
2266
- const config = { duration, events, attributes, projection, topojson, mapFeatureName, mapFitToPoints, zoomFactor, disableZoom, zoomExtent, zoomDuration, linkWidth, linkColor, linkCursor, linkId, linkSource, linkTarget, sourceLongitude, sourceLatitude, targetLongitude, targetLatitude, sourcePointRadius, sourcePointColor, flowParticleColor, flowParticleRadius, flowParticleSpeed, flowParticleDensity, enableFlowAnimation, onSourcePointClick, onSourcePointMouseEnter, onSourcePointMouseLeave, areaId, areaColor, areaCursor, areaLabel, pointColor, pointRadius, pointStrokeWidth, pointShape, pointRingWidth, pointCursor, longitude, latitude, pointLabel, pointLabelPosition, pointLabelTextBrightnessRatio, pointId, colorMap, clusterColor, clusterRadius, clusterLabel, clusterLabelColor, clusterBottomLabel, clusterRingWidth, clusterBackground, clusterExpandOnClick, clusteringDistance, clustering, heatmapMode, heatmapModeBlurStdDeviation, heatmapModeZoomLevelThreshold };
2265
+ const { duration, events, attributes, projection, topojson, mapFeatureName, mapFitToPoints, zoomFactor, disableZoom, zoomExtent, zoomDuration, linkWidth, linkColor, linkCursor, linkId, linkSource, linkTarget, areaId, areaColor, areaCursor, pointColor, pointRadius, pointStrokeWidth, pointShape, pointRingWidth, pointCursor, longitude, latitude, pointLabel, pointLabelPosition, pointLabelTextBrightnessRatio, pointId, colorMap, heatmapMode, heatmapModeBlurStdDeviation, heatmapModeZoomLevelThreshold } = this;
2266
+ const config = { duration, events, attributes, projection, topojson, mapFeatureName, mapFitToPoints, zoomFactor, disableZoom, zoomExtent, zoomDuration, linkWidth, linkColor, linkCursor, linkId, linkSource, linkTarget, areaId, areaColor, areaCursor, pointColor, pointRadius, pointStrokeWidth, pointShape, pointRingWidth, pointCursor, longitude, latitude, pointLabel, pointLabelPosition, pointLabelTextBrightnessRatio, pointId, colorMap, heatmapMode, heatmapModeBlurStdDeviation, heatmapModeZoomLevelThreshold };
2267
2267
  const keys = Object.keys(config);
2268
2268
  keys.forEach(key => { if (config[key] === undefined)
2269
2269
  delete config[key]; });
@@ -2271,7 +2271,7 @@ class VisTopoJSONMapComponent {
2271
2271
  }
2272
2272
  }
2273
2273
  VisTopoJSONMapComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: VisTopoJSONMapComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2274
- VisTopoJSONMapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: VisTopoJSONMapComponent, selector: "vis-topojson-map", inputs: { duration: "duration", events: "events", attributes: "attributes", projection: "projection", topojson: "topojson", mapFeatureName: "mapFeatureName", mapFitToPoints: "mapFitToPoints", zoomFactor: "zoomFactor", disableZoom: "disableZoom", zoomExtent: "zoomExtent", zoomDuration: "zoomDuration", linkWidth: "linkWidth", linkColor: "linkColor", linkCursor: "linkCursor", linkId: "linkId", linkSource: "linkSource", linkTarget: "linkTarget", sourceLongitude: "sourceLongitude", sourceLatitude: "sourceLatitude", targetLongitude: "targetLongitude", targetLatitude: "targetLatitude", sourcePointRadius: "sourcePointRadius", sourcePointColor: "sourcePointColor", flowParticleColor: "flowParticleColor", flowParticleRadius: "flowParticleRadius", flowParticleSpeed: "flowParticleSpeed", flowParticleDensity: "flowParticleDensity", enableFlowAnimation: "enableFlowAnimation", onSourcePointClick: "onSourcePointClick", onSourcePointMouseEnter: "onSourcePointMouseEnter", onSourcePointMouseLeave: "onSourcePointMouseLeave", areaId: "areaId", areaColor: "areaColor", areaCursor: "areaCursor", areaLabel: "areaLabel", pointColor: "pointColor", pointRadius: "pointRadius", pointStrokeWidth: "pointStrokeWidth", pointShape: "pointShape", pointRingWidth: "pointRingWidth", pointCursor: "pointCursor", longitude: "longitude", latitude: "latitude", pointLabel: "pointLabel", pointLabelPosition: "pointLabelPosition", pointLabelTextBrightnessRatio: "pointLabelTextBrightnessRatio", pointId: "pointId", colorMap: "colorMap", clusterColor: "clusterColor", clusterRadius: "clusterRadius", clusterLabel: "clusterLabel", clusterLabelColor: "clusterLabelColor", clusterBottomLabel: "clusterBottomLabel", clusterRingWidth: "clusterRingWidth", clusterBackground: "clusterBackground", clusterExpandOnClick: "clusterExpandOnClick", clusteringDistance: "clusteringDistance", clustering: "clustering", heatmapMode: "heatmapMode", heatmapModeBlurStdDeviation: "heatmapModeBlurStdDeviation", heatmapModeZoomLevelThreshold: "heatmapModeZoomLevelThreshold", data: "data" }, providers: [{ provide: VisCoreComponent, useExisting: VisTopoJSONMapComponent }], usesOnChanges: true, ngImport: i0, template: '', isInline: true });
2274
+ VisTopoJSONMapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: VisTopoJSONMapComponent, selector: "vis-topojson-map", inputs: { duration: "duration", events: "events", attributes: "attributes", projection: "projection", topojson: "topojson", mapFeatureName: "mapFeatureName", mapFitToPoints: "mapFitToPoints", zoomFactor: "zoomFactor", disableZoom: "disableZoom", zoomExtent: "zoomExtent", zoomDuration: "zoomDuration", linkWidth: "linkWidth", linkColor: "linkColor", linkCursor: "linkCursor", linkId: "linkId", linkSource: "linkSource", linkTarget: "linkTarget", areaId: "areaId", areaColor: "areaColor", areaCursor: "areaCursor", pointColor: "pointColor", pointRadius: "pointRadius", pointStrokeWidth: "pointStrokeWidth", pointShape: "pointShape", pointRingWidth: "pointRingWidth", pointCursor: "pointCursor", longitude: "longitude", latitude: "latitude", pointLabel: "pointLabel", pointLabelPosition: "pointLabelPosition", pointLabelTextBrightnessRatio: "pointLabelTextBrightnessRatio", pointId: "pointId", colorMap: "colorMap", heatmapMode: "heatmapMode", heatmapModeBlurStdDeviation: "heatmapModeBlurStdDeviation", heatmapModeZoomLevelThreshold: "heatmapModeZoomLevelThreshold", data: "data" }, providers: [{ provide: VisCoreComponent, useExisting: VisTopoJSONMapComponent }], usesOnChanges: true, ngImport: i0, template: '', isInline: true });
2275
2275
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: VisTopoJSONMapComponent, decorators: [{
2276
2276
  type: Component,
2277
2277
  args: [{
@@ -2314,42 +2314,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
2314
2314
  type: Input
2315
2315
  }], linkTarget: [{
2316
2316
  type: Input
2317
- }], sourceLongitude: [{
2318
- type: Input
2319
- }], sourceLatitude: [{
2320
- type: Input
2321
- }], targetLongitude: [{
2322
- type: Input
2323
- }], targetLatitude: [{
2324
- type: Input
2325
- }], sourcePointRadius: [{
2326
- type: Input
2327
- }], sourcePointColor: [{
2328
- type: Input
2329
- }], flowParticleColor: [{
2330
- type: Input
2331
- }], flowParticleRadius: [{
2332
- type: Input
2333
- }], flowParticleSpeed: [{
2334
- type: Input
2335
- }], flowParticleDensity: [{
2336
- type: Input
2337
- }], enableFlowAnimation: [{
2338
- type: Input
2339
- }], onSourcePointClick: [{
2340
- type: Input
2341
- }], onSourcePointMouseEnter: [{
2342
- type: Input
2343
- }], onSourcePointMouseLeave: [{
2344
- type: Input
2345
2317
  }], areaId: [{
2346
2318
  type: Input
2347
2319
  }], areaColor: [{
2348
2320
  type: Input
2349
2321
  }], areaCursor: [{
2350
2322
  type: Input
2351
- }], areaLabel: [{
2352
- type: Input
2353
2323
  }], pointColor: [{
2354
2324
  type: Input
2355
2325
  }], pointRadius: [{
@@ -2376,26 +2346,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
2376
2346
  type: Input
2377
2347
  }], colorMap: [{
2378
2348
  type: Input
2379
- }], clusterColor: [{
2380
- type: Input
2381
- }], clusterRadius: [{
2382
- type: Input
2383
- }], clusterLabel: [{
2384
- type: Input
2385
- }], clusterLabelColor: [{
2386
- type: Input
2387
- }], clusterBottomLabel: [{
2388
- type: Input
2389
- }], clusterRingWidth: [{
2390
- type: Input
2391
- }], clusterBackground: [{
2392
- type: Input
2393
- }], clusterExpandOnClick: [{
2394
- type: Input
2395
- }], clusteringDistance: [{
2396
- type: Input
2397
- }], clustering: [{
2398
- type: Input
2399
2349
  }], heatmapMode: [{
2400
2350
  type: Input
2401
2351
  }], heatmapModeBlurStdDeviation: [{