@flowmap.gl/data 8.0.0-alpha.1 → 8.0.0-alpha.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/FlowmapAggregateAccessors.d.ts +16 -0
- package/dist/FlowmapAggregateAccessors.d.ts.map +1 -0
- package/dist/FlowmapAggregateAccessors.js +46 -0
- package/dist/FlowmapSelectors.d.ts +188 -0
- package/dist/FlowmapSelectors.d.ts.map +1 -0
- package/dist/FlowmapSelectors.js +863 -0
- package/dist/FlowmapState.d.ts +27 -0
- package/dist/FlowmapState.d.ts.map +1 -0
- package/dist/FlowmapState.js +2 -0
- package/dist/cluster/cluster.d.ts.map +1 -1
- package/dist/cluster/cluster.js +8 -5
- package/dist/colors.d.ts +7 -7
- package/dist/colors.d.ts.map +1 -1
- package/dist/colors.js +55 -20
- package/dist/getViewStateForLocations.d.ts +18 -11
- package/dist/getViewStateForLocations.d.ts.map +1 -1
- package/dist/getViewStateForLocations.js +23 -20
- package/dist/index.d.ts +6 -6
- package/dist/index.js +6 -6
- package/dist/provider/FlowmapDataProvider.d.ts +16 -0
- package/dist/provider/FlowmapDataProvider.d.ts.map +1 -0
- package/dist/provider/FlowmapDataProvider.js +17 -0
- package/dist/provider/LocalFlowmapDataProvider.d.ts +20 -0
- package/dist/provider/LocalFlowmapDataProvider.d.ts.map +1 -0
- package/dist/provider/LocalFlowmapDataProvider.js +98 -0
- package/dist/types.d.ts +6 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/util.d.ts +0 -1
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +1 -4
- package/dist-es5/FlowmapAggregateAccessors.d.ts +16 -0
- package/dist-es5/FlowmapAggregateAccessors.d.ts.map +1 -0
- package/dist-es5/FlowmapAggregateAccessors.js +57 -0
- package/{dist/FlowMapSelectors.d.ts → dist-es5/FlowmapSelectors.d.ts} +55 -49
- package/dist-es5/FlowmapSelectors.d.ts.map +1 -0
- package/dist-es5/FlowmapSelectors.js +1507 -0
- package/{dist/FlowMapState.d.ts → dist-es5/FlowmapState.d.ts} +6 -3
- package/dist-es5/FlowmapState.d.ts.map +1 -0
- package/dist-es5/FlowmapState.js +3 -0
- package/dist-es5/cluster/ClusterIndex.d.ts +42 -0
- package/dist-es5/cluster/ClusterIndex.d.ts.map +1 -0
- package/dist-es5/cluster/ClusterIndex.js +297 -0
- package/dist-es5/cluster/cluster.d.ts +31 -0
- package/dist-es5/cluster/cluster.d.ts.map +1 -0
- package/dist-es5/cluster/cluster.js +266 -0
- package/dist-es5/colors.d.ts +103 -0
- package/dist-es5/colors.d.ts.map +1 -0
- package/dist-es5/colors.js +510 -0
- package/dist-es5/getViewStateForLocations.d.ts +23 -0
- package/dist-es5/getViewStateForLocations.d.ts.map +1 -0
- package/dist-es5/getViewStateForLocations.js +64 -0
- package/dist-es5/index.d.ts +11 -0
- package/dist-es5/index.d.ts.map +1 -0
- package/dist-es5/index.js +28 -0
- package/dist-es5/provider/FlowmapDataProvider.d.ts +16 -0
- package/dist-es5/provider/FlowmapDataProvider.d.ts.map +1 -0
- package/dist-es5/provider/FlowmapDataProvider.js +22 -0
- package/dist-es5/provider/LocalFlowmapDataProvider.d.ts +20 -0
- package/dist-es5/provider/LocalFlowmapDataProvider.d.ts.map +1 -0
- package/dist-es5/provider/LocalFlowmapDataProvider.js +154 -0
- package/dist-es5/time.d.ts +24 -0
- package/dist-es5/time.d.ts.map +1 -0
- package/dist-es5/time.js +168 -0
- package/dist-es5/types.d.ts +118 -0
- package/dist-es5/types.d.ts.map +1 -0
- package/dist-es5/types.js +29 -0
- package/dist-es5/util.d.ts +5 -0
- package/dist-es5/util.d.ts.map +1 -0
- package/dist-es5/util.js +14 -0
- package/package.json +7 -5
- package/src/{FlowMapAggregateAccessors.ts → FlowmapAggregateAccessors.ts} +14 -9
- package/src/{FlowMapSelectors.ts → FlowmapSelectors.ts} +213 -178
- package/src/{FlowMapState.ts → FlowmapState.ts} +5 -2
- package/src/cluster/cluster.ts +7 -4
- package/src/colors.ts +65 -21
- package/src/getViewStateForLocations.ts +41 -35
- package/src/index.ts +6 -6
- package/src/provider/{FlowMapDataProvider.ts → FlowmapDataProvider.ts} +14 -12
- package/src/provider/LocalFlowmapDataProvider.ts +122 -0
- package/src/types.ts +6 -4
- package/src/util.ts +0 -4
- package/tsconfig.es5.json +11 -0
- package/dist/FlowMapAggregateAccessors.d.ts +0 -15
- package/dist/FlowMapAggregateAccessors.d.ts.map +0 -1
- package/dist/FlowMapAggregateAccessors.js +0 -43
- package/dist/FlowMapSelectors.d.ts.map +0 -1
- package/dist/FlowMapSelectors.js +0 -834
- package/dist/FlowMapState.d.ts.map +0 -1
- package/dist/FlowMapState.js +0 -2
- package/dist/provider/FlowMapDataProvider.d.ts +0 -16
- package/dist/provider/FlowMapDataProvider.d.ts.map +0 -1
- package/dist/provider/FlowMapDataProvider.js +0 -17
- package/dist/provider/LocalFlowMapDataProvider.d.ts +0 -20
- package/dist/provider/LocalFlowMapDataProvider.d.ts.map +0 -1
- package/dist/provider/LocalFlowMapDataProvider.js +0 -87
- package/src/provider/LocalFlowMapDataProvider.ts +0 -105
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2022 FlowmapBlue
|
|
4
|
+
* Copyright 2018-2020 Teralytics, modified by FlowmapBlue
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*
|
|
18
|
+
*/
|
|
19
|
+
var __assign = (this && this.__assign) || function () {
|
|
20
|
+
__assign = Object.assign || function(t) {
|
|
21
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
22
|
+
s = arguments[i];
|
|
23
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
24
|
+
t[p] = s[p];
|
|
25
|
+
}
|
|
26
|
+
return t;
|
|
27
|
+
};
|
|
28
|
+
return __assign.apply(this, arguments);
|
|
29
|
+
};
|
|
30
|
+
var __values = (this && this.__values) || function(o) {
|
|
31
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
32
|
+
if (m) return m.call(o);
|
|
33
|
+
if (o && typeof o.length === "number") return {
|
|
34
|
+
next: function () {
|
|
35
|
+
if (o && i >= o.length) o = void 0;
|
|
36
|
+
return { value: o && o[i++], done: !o };
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
40
|
+
};
|
|
41
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
42
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.clusterLocations = exports.isClusterPoint = exports.isLeafPoint = void 0;
|
|
46
|
+
/**
|
|
47
|
+
* The code in this file is a based on https://github.com/mapbox/supercluster
|
|
48
|
+
*/
|
|
49
|
+
// ISC License
|
|
50
|
+
//
|
|
51
|
+
// Copyright (c) 2016, Mapbox
|
|
52
|
+
//
|
|
53
|
+
// Permission to use, copy, modify, and/or distribute this software for any purpose
|
|
54
|
+
// with or without fee is hereby granted, provided that the above copyright notice
|
|
55
|
+
// and this permission notice appear in all copies.
|
|
56
|
+
//
|
|
57
|
+
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
58
|
+
// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
59
|
+
// FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
60
|
+
// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
|
61
|
+
// OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
62
|
+
// TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
|
|
63
|
+
// THIS SOFTWARE.
|
|
64
|
+
var d3_array_1 = require("d3-array");
|
|
65
|
+
var kdbush_1 = __importDefault(require("kdbush"));
|
|
66
|
+
var defaultOptions = {
|
|
67
|
+
minZoom: 0,
|
|
68
|
+
maxZoom: 16,
|
|
69
|
+
radius: 40,
|
|
70
|
+
extent: 512,
|
|
71
|
+
nodeSize: 64,
|
|
72
|
+
makeClusterName: function (id, numPoints) { return undefined; },
|
|
73
|
+
makeClusterId: function (id) { return "{[".concat(id, "]}"); },
|
|
74
|
+
};
|
|
75
|
+
function isLeafPoint(p) {
|
|
76
|
+
var index = p.index;
|
|
77
|
+
return index != null;
|
|
78
|
+
}
|
|
79
|
+
exports.isLeafPoint = isLeafPoint;
|
|
80
|
+
function isClusterPoint(p) {
|
|
81
|
+
var id = p.id;
|
|
82
|
+
return id != null;
|
|
83
|
+
}
|
|
84
|
+
exports.isClusterPoint = isClusterPoint;
|
|
85
|
+
function clusterLocations(locations, locationAccessors, getLocationWeight, options) {
|
|
86
|
+
var e_1, _a;
|
|
87
|
+
var getLocationLon = locationAccessors.getLocationLon, getLocationLat = locationAccessors.getLocationLat, getLocationId = locationAccessors.getLocationId;
|
|
88
|
+
var opts = __assign(__assign({}, defaultOptions), options);
|
|
89
|
+
var minZoom = opts.minZoom, maxZoom = opts.maxZoom, nodeSize = opts.nodeSize, makeClusterName = opts.makeClusterName, makeClusterId = opts.makeClusterId;
|
|
90
|
+
var trees = new Array(maxZoom + 1);
|
|
91
|
+
// generate a cluster object for each point and index input points into a KD-tree
|
|
92
|
+
var clusters = new Array();
|
|
93
|
+
for (var i = 0; i < locations.length; i++) {
|
|
94
|
+
var x = getLocationLon(locations[i]);
|
|
95
|
+
var y = getLocationLat(locations[i]);
|
|
96
|
+
clusters.push({
|
|
97
|
+
x: lngX(x),
|
|
98
|
+
y: latY(y),
|
|
99
|
+
weight: getLocationWeight(getLocationId(locations[i])),
|
|
100
|
+
zoom: Infinity,
|
|
101
|
+
index: i,
|
|
102
|
+
parentId: -1, // parent cluster id
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
trees[maxZoom + 1] = new kdbush_1.default(clusters, getX, getY, nodeSize, Float32Array);
|
|
106
|
+
// cluster points on max zoom, then cluster the results on previous zoom, etc.;
|
|
107
|
+
// results in a cluster hierarchy across zoom levels
|
|
108
|
+
for (var z = maxZoom; z >= minZoom; z--) {
|
|
109
|
+
// create a new set of clusters for the zoom and index them with a KD-tree
|
|
110
|
+
clusters = cluster(clusters, z, trees[z + 1], opts);
|
|
111
|
+
trees[z] = new kdbush_1.default(clusters, getX, getY, nodeSize, Float32Array);
|
|
112
|
+
}
|
|
113
|
+
if (trees.length === 0) {
|
|
114
|
+
return [];
|
|
115
|
+
}
|
|
116
|
+
var numbersOfClusters = trees.map(function (d) { return d.points.length; });
|
|
117
|
+
var maxAvailZoom = numbersOfClusters.indexOf(numbersOfClusters[numbersOfClusters.length - 1]);
|
|
118
|
+
var minAvailZoom = Math.min(maxAvailZoom, numbersOfClusters.lastIndexOf(numbersOfClusters[0]));
|
|
119
|
+
var clusterLevels = new Array();
|
|
120
|
+
for (var zoom = minAvailZoom; zoom <= maxAvailZoom; zoom++) {
|
|
121
|
+
var childrenByParent = void 0;
|
|
122
|
+
var tree = trees[zoom];
|
|
123
|
+
if (zoom < maxAvailZoom) {
|
|
124
|
+
childrenByParent = (0, d3_array_1.rollup)(trees[zoom + 1].points, function (points) {
|
|
125
|
+
return points.map(function (p) {
|
|
126
|
+
return p.id ? makeClusterId(p.id) : getLocationId(locations[p.index]);
|
|
127
|
+
});
|
|
128
|
+
}, function (point) { return point.parentId; });
|
|
129
|
+
}
|
|
130
|
+
var nodes = [];
|
|
131
|
+
try {
|
|
132
|
+
for (var _b = (e_1 = void 0, __values(tree.points)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
133
|
+
var point = _c.value;
|
|
134
|
+
var x = point.x, y = point.y, numPoints = point.numPoints;
|
|
135
|
+
if (isLeafPoint(point)) {
|
|
136
|
+
var location_1 = locations[point.index];
|
|
137
|
+
nodes.push({
|
|
138
|
+
id: getLocationId(location_1),
|
|
139
|
+
zoom: zoom,
|
|
140
|
+
lat: getLocationLat(location_1),
|
|
141
|
+
lon: getLocationLon(location_1),
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
else if (isClusterPoint(point)) {
|
|
145
|
+
var id = point.id;
|
|
146
|
+
var children = childrenByParent && childrenByParent.get(id);
|
|
147
|
+
if (!children) {
|
|
148
|
+
throw new Error("Cluster ".concat(id, " doesn't have children"));
|
|
149
|
+
}
|
|
150
|
+
nodes.push({
|
|
151
|
+
id: makeClusterId(id),
|
|
152
|
+
name: makeClusterName(id, numPoints),
|
|
153
|
+
zoom: zoom,
|
|
154
|
+
lat: yLat(y),
|
|
155
|
+
lon: xLng(x),
|
|
156
|
+
children: children,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
162
|
+
finally {
|
|
163
|
+
try {
|
|
164
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
165
|
+
}
|
|
166
|
+
finally { if (e_1) throw e_1.error; }
|
|
167
|
+
}
|
|
168
|
+
clusterLevels.push({
|
|
169
|
+
zoom: zoom,
|
|
170
|
+
nodes: nodes,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
return clusterLevels;
|
|
174
|
+
}
|
|
175
|
+
exports.clusterLocations = clusterLocations;
|
|
176
|
+
function createCluster(x, y, id, numPoints, weight) {
|
|
177
|
+
return {
|
|
178
|
+
x: x,
|
|
179
|
+
y: y,
|
|
180
|
+
zoom: Infinity,
|
|
181
|
+
id: id,
|
|
182
|
+
parentId: -1,
|
|
183
|
+
numPoints: numPoints,
|
|
184
|
+
weight: weight,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
function cluster(points, zoom, tree, options) {
|
|
188
|
+
var e_2, _a;
|
|
189
|
+
var clusters = [];
|
|
190
|
+
var radius = options.radius, extent = options.extent;
|
|
191
|
+
var r = radius / (extent * Math.pow(2, zoom));
|
|
192
|
+
// loop through each point
|
|
193
|
+
for (var i = 0; i < points.length; i++) {
|
|
194
|
+
var p = points[i];
|
|
195
|
+
// if we've already visited the point at this zoom level, skip it
|
|
196
|
+
if (p.zoom <= zoom) {
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
p.zoom = zoom;
|
|
200
|
+
// find all nearby points
|
|
201
|
+
var neighborIds = tree.within(p.x, p.y, r);
|
|
202
|
+
var weight = p.weight || 1;
|
|
203
|
+
var numPoints = isClusterPoint(p) ? p.numPoints : 1;
|
|
204
|
+
var wx = p.x * weight;
|
|
205
|
+
var wy = p.y * weight;
|
|
206
|
+
// encode both zoom and point index on which the cluster originated
|
|
207
|
+
var id = (i << 5) + (zoom + 1);
|
|
208
|
+
try {
|
|
209
|
+
for (var neighborIds_1 = (e_2 = void 0, __values(neighborIds)), neighborIds_1_1 = neighborIds_1.next(); !neighborIds_1_1.done; neighborIds_1_1 = neighborIds_1.next()) {
|
|
210
|
+
var neighborId = neighborIds_1_1.value;
|
|
211
|
+
var b = tree.points[neighborId];
|
|
212
|
+
// filter out neighbors that are already processed
|
|
213
|
+
if (b.zoom <= zoom) {
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
b.zoom = zoom; // save the zoom (so it doesn't get processed twice)
|
|
217
|
+
var weight2 = b.weight || 1;
|
|
218
|
+
var numPoints2 = b.numPoints || 1;
|
|
219
|
+
wx += b.x * weight2; // accumulate coordinates for calculating weighted center
|
|
220
|
+
wy += b.y * weight2;
|
|
221
|
+
weight += weight2;
|
|
222
|
+
numPoints += numPoints2;
|
|
223
|
+
b.parentId = id;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
227
|
+
finally {
|
|
228
|
+
try {
|
|
229
|
+
if (neighborIds_1_1 && !neighborIds_1_1.done && (_a = neighborIds_1.return)) _a.call(neighborIds_1);
|
|
230
|
+
}
|
|
231
|
+
finally { if (e_2) throw e_2.error; }
|
|
232
|
+
}
|
|
233
|
+
if (numPoints === 1) {
|
|
234
|
+
clusters.push(p);
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
p.parentId = id;
|
|
238
|
+
clusters.push(createCluster(wx / weight, wy / weight, id, numPoints, weight));
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
return clusters;
|
|
242
|
+
}
|
|
243
|
+
// spherical mercator to longitude/latitude
|
|
244
|
+
function xLng(x) {
|
|
245
|
+
return (x - 0.5) * 360;
|
|
246
|
+
}
|
|
247
|
+
function yLat(y) {
|
|
248
|
+
var y2 = ((180 - y * 360) * Math.PI) / 180;
|
|
249
|
+
return (360 * Math.atan(Math.exp(y2))) / Math.PI - 90;
|
|
250
|
+
}
|
|
251
|
+
// longitude/latitude to spherical mercator in [0..1] range
|
|
252
|
+
function lngX(lng) {
|
|
253
|
+
return lng / 360 + 0.5;
|
|
254
|
+
}
|
|
255
|
+
function latY(lat) {
|
|
256
|
+
var sin = Math.sin((lat * Math.PI) / 180);
|
|
257
|
+
var y = 0.5 - (0.25 * Math.log((1 + sin) / (1 - sin))) / Math.PI;
|
|
258
|
+
return y < 0 ? 0 : y > 1 ? 1 : y;
|
|
259
|
+
}
|
|
260
|
+
function getX(p) {
|
|
261
|
+
return p.x;
|
|
262
|
+
}
|
|
263
|
+
function getY(p) {
|
|
264
|
+
return p.y;
|
|
265
|
+
}
|
|
266
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbHVzdGVyL2NsdXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUg7O0dBRUc7QUFFSCxjQUFjO0FBQ2QsRUFBRTtBQUNGLDZCQUE2QjtBQUM3QixFQUFFO0FBQ0YsbUZBQW1GO0FBQ25GLGtGQUFrRjtBQUNsRixtREFBbUQ7QUFDbkQsRUFBRTtBQUNGLGdGQUFnRjtBQUNoRixrRkFBa0Y7QUFDbEYsMkVBQTJFO0FBQzNFLG1GQUFtRjtBQUNuRixpRkFBaUY7QUFDakYsa0ZBQWtGO0FBQ2xGLGlCQUFpQjtBQUVqQixxQ0FBZ0M7QUFDaEMsa0RBQTRCO0FBYzVCLElBQU0sY0FBYyxHQUFZO0lBQzlCLE9BQU8sRUFBRSxDQUFDO0lBQ1YsT0FBTyxFQUFFLEVBQUU7SUFDWCxNQUFNLEVBQUUsRUFBRTtJQUNWLE1BQU0sRUFBRSxHQUFHO0lBQ1gsUUFBUSxFQUFFLEVBQUU7SUFDWixlQUFlLEVBQUUsVUFBQyxFQUFVLEVBQUUsU0FBaUIsSUFBSyxPQUFBLFNBQVMsRUFBVCxDQUFTO0lBQzdELGFBQWEsRUFBRSxVQUFDLEVBQVUsSUFBSyxPQUFBLFlBQUssRUFBRSxPQUFJLEVBQVgsQ0FBVztDQUMzQyxDQUFDO0FBcUJGLFNBQWdCLFdBQVcsQ0FBQyxDQUFRO0lBQzNCLElBQUEsS0FBSyxHQUFJLENBQWMsTUFBbEIsQ0FBbUI7SUFDL0IsT0FBTyxLQUFLLElBQUksSUFBSSxDQUFDO0FBQ3ZCLENBQUM7QUFIRCxrQ0FHQztBQUVELFNBQWdCLGNBQWMsQ0FBQyxDQUFRO0lBQzlCLElBQUEsRUFBRSxHQUFJLENBQWlCLEdBQXJCLENBQXNCO0lBQy9CLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQztBQUNwQixDQUFDO0FBSEQsd0NBR0M7QUFJRCxTQUFnQixnQkFBZ0IsQ0FD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QUM7QUFDYixDQUFDO0FBRUQsU0FBUyxJQUFJLENBQUMsQ0FBUTtJQUNwQixPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIyIEZsb3dtYXBCbHVlXG4gKiBDb3B5cmlnaHQgMjAxOC0yMDIwIFRlcmFseXRpY3MsIG1vZGlmaWVkIGJ5IEZsb3dtYXBCbHVlXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICovXG5cbi8qKlxuICogVGhlIGNvZGUgaW4gdGhpcyBmaWxlIGlzIGEgYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL21hcGJveC9zdXBlcmNsdXN0ZXJcbiAqL1xuXG4vLyBJU0MgTGljZW5zZVxuLy9cbi8vIENvcHlyaWdodCAoYykgMjAxNiwgTWFwYm94XG4vL1xuLy8gUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2Vcbi8vIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Vcbi8vIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcbi8vIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkRcbi8vIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxuLy8gSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1Ncbi8vIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUlxuLy8gVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRlxuLy8gVEhJUyBTT0ZUV0FSRS5cblxuaW1wb3J0IHtyb2xsdXB9IGZyb20gJ2QzLWFycmF5JztcbmltcG9ydCBLREJ1c2ggZnJvbSAna2RidXNoJztcbmltcG9ydCB7TG9jYXRpb25XZWlnaHRHZXR0ZXJ9IGZyb20gJy4vQ2x1c3RlckluZGV4JztcbmltcG9ydCB7Q2x1c3RlciwgQ2x1c3RlckxldmVsLCBDbHVzdGVyTm9kZSwgTG9jYXRpb25BY2Nlc3NvcnN9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIHtcbiAgbWluWm9vbTogbnVtYmVyOyAvLyBtaW4gem9vbSB0byBnZW5lcmF0ZSBjbHVzdGVycyBvblxuICBtYXhab29tOiBudW1iZXI7IC8vIG1heCB6b29tIGxldmVsIHRvIGNsdXN0ZXIgdGhlIHBvaW50cyBvblxuICByYWRpdXM6IG51bWJlcjsgLy8gY2x1c3RlciByYWRpdXMgaW4gcGl4ZWxzXG4gIGV4dGVudDogbnVtYmVyOyAvLyB0aWxlIGV4dGVudCAocmFkaXVzIGlzIGNhbGN1bGF0ZWQgcmVsYXRpdmUgdG8gaXQpXG4gIG5vZGVTaXplOiBudW1iZXI7IC8vIHNpemUgb2YgdGhlIEtELXRyZWUgbGVhZiBub2RlLCBhZmZlY3RzIHBlcmZvcm1hbmNlXG4gIG1ha2VDbHVzdGVyTmFtZTogKGlkOiBudW1iZXIsIG51bVBvaW50czogbnVtYmVyKSA9PiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIG1ha2VDbHVzdGVySWQ6IChpZDogbnVtYmVyKSA9PiBzdHJpbmc7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBPcHRpb25zID0ge1xuICBtaW5ab29tOiAwLFxuICBtYXhab29tOiAxNixcbiAgcmFkaXVzOiA0MCxcbiAgZXh0ZW50OiA1MTIsXG4gIG5vZGVTaXplOiA2NCxcbiAgbWFrZUNsdXN0ZXJOYW1lOiAoaWQ6IG51bWJlciwgbnVtUG9pbnRzOiBudW1iZXIpID0+IHVuZGVmaW5lZCxcbiAgbWFrZUNsdXN0ZXJJZDogKGlkOiBudW1iZXIpID0+IGB7WyR7aWR9XX1gLFxufTtcblxuaW50ZXJmYWNlIEJhc2VQb2ludCB7XG4gIHg6IG51bWJlcjsgLy8gcHJvamVjdGVkIHBvaW50IGNvb3JkaW5hdGVzXG4gIHk6IG51bWJlcjtcbiAgd2VpZ2h0OiBudW1iZXI7XG4gIHpvb206IG51bWJlcjsgLy8gdGhlIGxhc3Qgem9vbSB0aGUgcG9pbnQgd2FzIHByb2Nlc3NlZCBhdFxuICBwYXJlbnRJZDogbnVtYmVyOyAvLyBwYXJlbnQgY2x1c3RlciBpZFxufVxuXG5pbnRlcmZhY2UgTGVhZlBvaW50IGV4dGVuZHMgQmFzZVBvaW50IHtcbiAgaW5kZXg6IG51bWJlcjsgLy8gaW5kZXggb2YgdGhlIHNvdXJjZSBmZWF0dXJlIGluIHRoZSBvcmlnaW5hbCBpbnB1dCBhcnJheSxcbn1cblxuaW50ZXJmYWNlIENsdXN0ZXJQb2ludCBleHRlbmRzIEJhc2VQb2ludCB7XG4gIGlkOiBudW1iZXI7XG4gIG51bVBvaW50czogbnVtYmVyO1xufVxuXG50eXBlIFBvaW50ID0gTGVhZlBvaW50IHwgQ2x1c3RlclBvaW50O1xuXG5leHBvcnQgZnVuY3Rpb24gaXNMZWFmUG9pbnQocDogUG9pbnQpOiBwIGlzIExlYWZQb2ludCB7XG4gIGNvbnN0IHtpbmRleH0gPSBwIGFzIExlYWZQb2ludDtcbiAgcmV0dXJuIGluZGV4ICE9IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NsdXN0ZXJQb2ludChwOiBQb2ludCk6IHAgaXMgQ2x1c3RlclBvaW50IHtcbiAgY29uc3Qge2lkfSA9IHAgYXMgQ2x1c3RlclBvaW50O1xuICByZXR1cm4gaWQgIT0gbnVsbDtcbn1cblxudHlwZSBab29tTGV2ZWxLREJ1c2ggPSBhbnk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjbHVzdGVyTG9jYXRpb25zPEw+KFxuICBsb2NhdGlvbnM6IExbXSxcbiAgbG9jYXRpb25BY2Nlc3NvcnM6IExvY2F0aW9uQWNjZXNzb3JzPEw+LFxuICBnZXRMb2NhdGlvbldlaWdodDogTG9jYXRpb25XZWlnaHRHZXR0ZXIsXG4gIG9wdGlvbnM/OiBQYXJ0aWFsPE9wdGlvbnM+LFxuKTogQ2x1c3RlckxldmVsW10ge1xuICBjb25zdCB7Z2V0TG9jYXRpb25Mb24sIGdldExvY2F0aW9uTGF0LCBnZXRMb2NhdGlvbklkfSA9IGxvY2F0aW9uQWNjZXNzb3JzO1xuICBjb25zdCBvcHRzID0ge1xuICAgIC4uLmRlZmF1bHRPcHRpb25zLFxuICAgIC4uLm9wdGlvbnMsXG4gIH07XG4gIGNvbnN0IHttaW5ab29tLCBtYXhab29tLCBub2RlU2l6ZSwgbWFrZUNsdXN0ZXJOYW1lLCBtYWtlQ2x1c3RlcklkfSA9IG9wdHM7XG5cbiAgY29uc3QgdHJlZXMgPSBuZXcgQXJyYXk8Wm9vbUxldmVsS0RCdXNoPihtYXhab29tICsgMSk7XG5cbiAgLy8gZ2VuZXJhdGUgYSBjbHVzdGVyIG9iamVjdCBmb3IgZWFjaCBwb2ludCBhbmQgaW5kZXggaW5wdXQgcG9pbnRzIGludG8gYSBLRC10cmVlXG4gIGxldCBjbHVzdGVycyA9IG5ldyBBcnJheTxQb2ludD4oKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsb2NhdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB4ID0gZ2V0TG9jYXRpb25Mb24obG9jYXRpb25zW2ldKTtcbiAgICBjb25zdCB5ID0gZ2V0TG9jYXRpb25MYXQobG9jYXRpb25zW2ldKTtcbiAgICBjbHVzdGVycy5wdXNoKHtcbiAgICAgIHg6IGxuZ1goeCksIC8vIHByb2plY3RlZCBwb2ludCBjb29yZGluYXRlc1xuICAgICAgeTogbGF0WSh5KSxcbiAgICAgIHdlaWdodDogZ2V0TG9jYXRpb25XZWlnaHQoZ2V0TG9jYXRpb25JZChsb2NhdGlvbnNbaV0pKSxcbiAgICAgIHpvb206IEluZmluaXR5LCAvLyB0aGUgbGFzdCB6b29tIHRoZSBwb2ludCB3YXMgcHJvY2Vzc2VkIGF0XG4gICAgICBpbmRleDogaSwgLy8gaW5kZXggb2YgdGhlIHNvdXJjZSBmZWF0dXJlIGluIHRoZSBvcmlnaW5hbCBpbnB1dCBhcnJheSxcbiAgICAgIHBhcmVudElkOiAtMSwgLy8gcGFyZW50IGNsdXN0ZXIgaWRcbiAgICB9KTtcbiAgfVxuICB0cmVlc1ttYXhab29tICsgMV0gPSBuZXcgS0RCdXNoKGNsdXN0ZXJzLCBnZXRYLCBnZXRZLCBub2RlU2l6ZSwgRmxvYXQzMkFycmF5KTtcblxuICAvLyBjbHVzdGVyIHBvaW50cyBvbiBtYXggem9vbSwgdGhlbiBjbHVzdGVyIHRoZSByZXN1bHRzIG9uIHByZXZpb3VzIHpvb20sIGV0Yy47XG4gIC8vIHJlc3VsdHMgaW4gYSBjbHVzdGVyIGhpZXJhcmNoeSBhY3Jvc3Mgem9vbSBsZXZlbHNcbiAgZm9yIChsZXQgeiA9IG1heFpvb207IHogPj0gbWluWm9vbTsgei0tKSB7XG4gICAgLy8gY3JlYXRlIGEgbmV3IHNldCBvZiBjbHVzdGVycyBmb3IgdGhlIHpvb20gYW5kIGluZGV4IHRoZW0gd2l0aCBhIEtELXRyZWVcbiAgICBjbHVzdGVycyA9IGNsdXN0ZXIoY2x1c3RlcnMsIHosIHRyZWVzW3ogKyAxXSwgb3B0cyk7XG4gICAgdHJlZXNbel0gPSBuZXcgS0RCdXNoKGNsdXN0ZXJzLCBnZXRYLCBnZXRZLCBub2RlU2l6ZSwgRmxvYXQzMkFycmF5KTtcbiAgfVxuXG4gIGlmICh0cmVlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgY29uc3QgbnVtYmVyc09mQ2x1c3RlcnMgPSB0cmVlcy5tYXAoKGQpID0+IGQucG9pbnRzLmxlbmd0aCk7XG4gIGNvbnN0IG1heEF2YWlsWm9vbSA9IG51bWJlcnNPZkNsdXN0ZXJzLmluZGV4T2YoXG4gICAgbnVtYmVyc09mQ2x1c3RlcnNbbnVtYmVyc09mQ2x1c3RlcnMubGVuZ3RoIC0gMV0sXG4gICk7XG4gIGNvbnN0IG1pbkF2YWlsWm9vbSA9IE1hdGgubWluKFxuICAgIG1heEF2YWlsWm9vbSxcbiAgICBudW1iZXJzT2ZDbHVzdGVycy5sYXN0SW5kZXhPZihudW1iZXJzT2ZDbHVzdGVyc1swXSksXG4gICk7XG5cbiAgY29uc3QgY2x1c3RlckxldmVscyA9IG5ldyBBcnJheTxDbHVzdGVyTGV2ZWw+KCk7XG4gIGZvciAobGV0IHpvb20gPSBtaW5BdmFpbFpvb207IHpvb20gPD0gbWF4QXZhaWxab29tOyB6b29tKyspIHtcbiAgICBsZXQgY2hpbGRyZW5CeVBhcmVudDogTWFwPG51bWJlciwgc3RyaW5nW10+IHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHRyZWUgPSB0cmVlc1t6b29tXTtcbiAgICBpZiAoem9vbSA8IG1heEF2YWlsWm9vbSkge1xuICAgICAgY2hpbGRyZW5CeVBhcmVudCA9IHJvbGx1cDxQb2ludCwgc3RyaW5nW10sIG51bWJlcj4oXG4gICAgICAgIHRyZWVzW3pvb20gKyAxXS5wb2ludHMsXG4gICAgICAgIChwb2ludHM6IGFueVtdKSA9PlxuICAgICAgICAgIHBvaW50cy5tYXAoKHA6IGFueSkgPT5cbiAgICAgICAgICAgIHAuaWQgPyBtYWtlQ2x1c3RlcklkKHAuaWQpIDogZ2V0TG9jYXRpb25JZChsb2NhdGlvbnNbcC5pbmRleF0pLFxuICAgICAgICAgICksXG4gICAgICAgIChwb2ludDogYW55KSA9PiBwb2ludC5wYXJlbnRJZCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgbm9kZXM6IENsdXN0ZXJOb2RlW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHBvaW50IG9mIHRyZWUucG9pbnRzKSB7XG4gICAgICBjb25zdCB7eCwgeSwgbnVtUG9pbnRzfSA9IHBvaW50O1xuICAgICAgaWYgKGlzTGVhZlBvaW50KHBvaW50KSkge1xuICAgICAgICBjb25zdCBsb2NhdGlvbiA9IGxvY2F0aW9uc1twb2ludC5pbmRleF07XG4gICAgICAgIG5vZGVzLnB1c2goe1xuICAgICAgICAgIGlkOiBnZXRMb2NhdGlvbklkKGxvY2F0aW9uKSxcbiAgICAgICAgICB6b29tLFxuICAgICAgICAgIGxhdDogZ2V0TG9jYXRpb25MYXQobG9jYXRpb24pLFxuICAgICAgICAgIGxvbjogZ2V0TG9jYXRpb25Mb24obG9jYXRpb24pLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoaXNDbHVzdGVyUG9pbnQocG9pbnQpKSB7XG4gICAgICAgIGNvbnN0IHtpZH0gPSBwb2ludDtcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBjaGlsZHJlbkJ5UGFyZW50ICYmIGNoaWxkcmVuQnlQYXJlbnQuZ2V0KGlkKTtcbiAgICAgICAgaWYgKCFjaGlsZHJlbikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2x1c3RlciAke2lkfSBkb2Vzbid0IGhhdmUgY2hpbGRyZW5gKTtcbiAgICAgICAgfVxuICAgICAgICBub2Rlcy5wdXNoKHtcbiAgICAgICAgICBpZDogbWFrZUNsdXN0ZXJJZChpZCksXG4gICAgICAgICAgbmFtZTogbWFrZUNsdXN0ZXJOYW1lKGlkLCBudW1Qb2ludHMpLFxuICAgICAgICAgIHpvb20sXG4gICAgICAgICAgbGF0OiB5TGF0KHkpLFxuICAgICAgICAgIGxvbjogeExuZyh4KSxcbiAgICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgfSBhcyBDbHVzdGVyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY2x1c3RlckxldmVscy5wdXNoKHtcbiAgICAgIHpvb20sXG4gICAgICBub2RlcyxcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gY2x1c3RlckxldmVscztcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2x1c3RlcihcbiAgeDogbnVtYmVyLFxuICB5OiBudW1iZXIsXG4gIGlkOiBudW1iZXIsXG4gIG51bVBvaW50czogbnVtYmVyLFxuICB3ZWlnaHQ6IG51bWJlcixcbik6IENsdXN0ZXJQb2ludCB7XG4gIHJldHVybiB7XG4gICAgeCwgLy8gd2VpZ2h0ZWQgY2x1c3RlciBjZW50ZXJcbiAgICB5LFxuICAgIHpvb206IEluZmluaXR5LCAvLyB0aGUgbGFzdCB6b29tIHRoZSBjbHVzdGVyIHdhcyBwcm9jZXNzZWQgYXRcbiAgICBpZCwgLy8gZW5jb2RlcyBpbmRleCBvZiB0aGUgZmlyc3QgY2hpbGQgb2YgdGhlIGNsdXN0ZXIgYW5kIGl0cyB6b29tIGxldmVsXG4gICAgcGFyZW50SWQ6IC0xLCAvLyBwYXJlbnQgY2x1c3RlciBpZFxuICAgIG51bVBvaW50cyxcbiAgICB3ZWlnaHQsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNsdXN0ZXIoXG4gIHBvaW50czogUG9pbnRbXSxcbiAgem9vbTogbnVtYmVyLFxuICB0cmVlOiBab29tTGV2ZWxLREJ1c2gsXG4gIG9wdGlvbnM6IE9wdGlvbnMsXG4pIHtcbiAgY29uc3QgY2x1c3RlcnM6IFBvaW50W10gPSBbXTtcbiAgY29uc3Qge3JhZGl1cywgZXh0ZW50fSA9IG9wdGlvbnM7XG4gIGNvbnN0IHIgPSByYWRpdXMgLyAoZXh0ZW50ICogTWF0aC5wb3coMiwgem9vbSkpO1xuXG4gIC8vIGxvb3AgdGhyb3VnaCBlYWNoIHBvaW50XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgcCA9IHBvaW50c1tpXTtcbiAgICAvLyBpZiB3ZSd2ZSBhbHJlYWR5IHZpc2l0ZWQgdGhlIHBvaW50IGF0IHRoaXMgem9vbSBsZXZlbCwgc2tpcCBpdFxuICAgIGlmIChwLnpvb20gPD0gem9vbSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHAuem9vbSA9IHpvb207XG5cbiAgICAvLyBmaW5kIGFsbCBuZWFyYnkgcG9pbnRzXG4gICAgY29uc3QgbmVpZ2hib3JJZHMgPSB0cmVlLndpdGhpbihwLngsIHAueSwgcik7XG5cbiAgICBsZXQgd2VpZ2h0ID0gcC53ZWlnaHQgfHwgMTtcbiAgICBsZXQgbnVtUG9pbnRzID0gaXNDbHVzdGVyUG9pbnQocCkgPyBwLm51bVBvaW50cyA6IDE7XG4gICAgbGV0IHd4ID0gcC54ICogd2VpZ2h0O1xuICAgIGxldCB3eSA9IHAueSAqIHdlaWdodDtcblxuICAgIC8vIGVuY29kZSBib3RoIHpvb20gYW5kIHBvaW50IGluZGV4IG9uIHdoaWNoIHRoZSBjbHVzdGVyIG9yaWdpbmF0ZWRcbiAgICBjb25zdCBpZCA9IChpIDw8IDUpICsgKHpvb20gKyAxKTtcblxuICAgIGZvciAoY29uc3QgbmVpZ2hib3JJZCBvZiBuZWlnaGJvcklkcykge1xuICAgICAgY29uc3QgYiA9IHRyZWUucG9pbnRzW25laWdoYm9ySWRdO1xuICAgICAgLy8gZmlsdGVyIG91dCBuZWlnaGJvcnMgdGhhdCBhcmUgYWxyZWFkeSBwcm9jZXNzZWRcbiAgICAgIGlmIChiLnpvb20gPD0gem9vbSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGIuem9vbSA9IHpvb207IC8vIHNhdmUgdGhlIHpvb20gKHNvIGl0IGRvZXNuJ3QgZ2V0IHByb2Nlc3NlZCB0d2ljZSlcblxuICAgICAgY29uc3Qgd2VpZ2h0MiA9IGIud2VpZ2h0IHx8IDE7XG4gICAgICBjb25zdCBudW1Qb2ludHMyID0gYi5udW1Qb2ludHMgfHwgMTtcbiAgICAgIHd4ICs9IGIueCAqIHdlaWdodDI7IC8vIGFjY3VtdWxhdGUgY29vcmRpbmF0ZXMgZm9yIGNhbGN1bGF0aW5nIHdlaWdodGVkIGNlbnRlclxuICAgICAgd3kgKz0gYi55ICogd2VpZ2h0MjtcblxuICAgICAgd2VpZ2h0ICs9IHdlaWdodDI7XG4gICAgICBudW1Qb2ludHMgKz0gbnVtUG9pbnRzMjtcbiAgICAgIGIucGFyZW50SWQgPSBpZDtcbiAgICB9XG5cbiAgICBpZiAobnVtUG9pbnRzID09PSAxKSB7XG4gICAgICBjbHVzdGVycy5wdXNoKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICBwLnBhcmVudElkID0gaWQ7XG4gICAgICBjbHVzdGVycy5wdXNoKFxuICAgICAgICBjcmVhdGVDbHVzdGVyKHd4IC8gd2VpZ2h0LCB3eSAvIHdlaWdodCwgaWQsIG51bVBvaW50cywgd2VpZ2h0KSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNsdXN0ZXJzO1xufVxuXG4vLyBzcGhlcmljYWwgbWVyY2F0b3IgdG8gbG9uZ2l0dWRlL2xhdGl0dWRlXG5mdW5jdGlvbiB4TG5nKHg6IG51bWJlcikge1xuICByZXR1cm4gKHggLSAwLjUpICogMzYwO1xufVxuXG5mdW5jdGlvbiB5TGF0KHk6IG51bWJlcikge1xuICBjb25zdCB5MiA9ICgoMTgwIC0geSAqIDM2MCkgKiBNYXRoLlBJKSAvIDE4MDtcbiAgcmV0dXJuICgzNjAgKiBNYXRoLmF0YW4oTWF0aC5leHAoeTIpKSkgLyBNYXRoLlBJIC0gOTA7XG59XG5cbi8vIGxvbmdpdHVkZS9sYXRpdHVkZSB0byBzcGhlcmljYWwgbWVyY2F0b3IgaW4gWzAuLjFdIHJhbmdlXG5mdW5jdGlvbiBsbmdYKGxuZzogbnVtYmVyKSB7XG4gIHJldHVybiBsbmcgLyAzNjAgKyAwLjU7XG59XG5cbmZ1bmN0aW9uIGxhdFkobGF0OiBudW1iZXIpIHtcbiAgY29uc3Qgc2luID0gTWF0aC5zaW4oKGxhdCAqIE1hdGguUEkpIC8gMTgwKTtcbiAgY29uc3QgeSA9IDAuNSAtICgwLjI1ICogTWF0aC5sb2coKDEgKyBzaW4pIC8gKDEgLSBzaW4pKSkgLyBNYXRoLlBJO1xuICByZXR1cm4geSA8IDAgPyAwIDogeSA+IDEgPyAxIDogeTtcbn1cblxuZnVuY3Rpb24gZ2V0WChwOiBQb2ludCkge1xuICByZXR1cm4gcC54O1xufVxuXG5mdW5jdGlvbiBnZXRZKHA6IFBvaW50KSB7XG4gIHJldHVybiBwLnk7XG59XG4iXX0=
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { SettingsState } from './FlowmapState';
|
|
2
|
+
export declare type ColorScale = (value: number) => RGBA;
|
|
3
|
+
export declare type RGBA = [number, number, number, number];
|
|
4
|
+
export declare function opacityFloatToInteger(opacity: number): number;
|
|
5
|
+
export declare function opacifyHex(hexCode: string, opacity: number): string;
|
|
6
|
+
export declare function colorAsRgba(color: string | number[]): RGBA;
|
|
7
|
+
export declare enum ColorScheme {
|
|
8
|
+
primary = "#162d3c"
|
|
9
|
+
}
|
|
10
|
+
export declare const GRAYISH: string[];
|
|
11
|
+
export declare const schemeTeal: string[];
|
|
12
|
+
export declare const DEFAULT_COLOR_SCHEME: string[];
|
|
13
|
+
export declare const COLOR_SCHEMES: {
|
|
14
|
+
[key: string]: string[];
|
|
15
|
+
};
|
|
16
|
+
export declare const COLOR_SCHEME_KEYS: string[];
|
|
17
|
+
export declare function getFlowmapColors(settingsState: SettingsState): Colors | DiffColors;
|
|
18
|
+
export declare function getColors(diffMode: boolean, colorScheme: string | string[] | undefined, darkMode: boolean, fadeEnabled: boolean, fadeOpacityEnabled: boolean, fadeAmount: number, animate: boolean): Colors | DiffColors;
|
|
19
|
+
export declare function createFlowColorScale(domain: [number, number], scheme: string[], animate: boolean | undefined): ColorScale;
|
|
20
|
+
export declare function getFlowColorScale(colors: ColorsRGBA | DiffColorsRGBA, magnitudeExtent: [number, number] | undefined, animate: boolean | undefined): (magnitude: number) => [number, number, number, number];
|
|
21
|
+
export declare function isDiffColors(colors: DiffColors | Colors): colors is DiffColors;
|
|
22
|
+
export declare function isDiffColorsRGBA(colors: DiffColorsRGBA | ColorsRGBA): colors is DiffColorsRGBA;
|
|
23
|
+
export interface FlowColors {
|
|
24
|
+
scheme?: string[];
|
|
25
|
+
highlighted?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface LocationCircleColors {
|
|
28
|
+
inner?: string;
|
|
29
|
+
outgoing?: string;
|
|
30
|
+
incoming?: string;
|
|
31
|
+
highlighted?: string;
|
|
32
|
+
empty?: string;
|
|
33
|
+
outlineEmptyMix?: number;
|
|
34
|
+
}
|
|
35
|
+
export interface LocationAreaColors {
|
|
36
|
+
outline?: string;
|
|
37
|
+
normal?: string;
|
|
38
|
+
selected?: string;
|
|
39
|
+
highlighted?: string;
|
|
40
|
+
connected?: string;
|
|
41
|
+
}
|
|
42
|
+
export interface BaseColors {
|
|
43
|
+
darkMode?: boolean;
|
|
44
|
+
locationAreas?: LocationAreaColors;
|
|
45
|
+
dimmedOpacity?: number;
|
|
46
|
+
outlineColor?: string;
|
|
47
|
+
}
|
|
48
|
+
export interface Colors extends BaseColors {
|
|
49
|
+
flows?: FlowColors;
|
|
50
|
+
locationCircles?: LocationCircleColors;
|
|
51
|
+
}
|
|
52
|
+
export interface FlowAndCircleColors {
|
|
53
|
+
flows?: FlowColors;
|
|
54
|
+
locationCircles?: LocationCircleColors;
|
|
55
|
+
}
|
|
56
|
+
export interface DiffColors extends BaseColors {
|
|
57
|
+
positive?: FlowAndCircleColors;
|
|
58
|
+
negative?: FlowAndCircleColors;
|
|
59
|
+
}
|
|
60
|
+
export interface FlowColorsRGBA {
|
|
61
|
+
scheme: string[];
|
|
62
|
+
highlighted: RGBA;
|
|
63
|
+
}
|
|
64
|
+
export interface LocationCircleColorsRGBA {
|
|
65
|
+
inner: RGBA;
|
|
66
|
+
outgoing: RGBA;
|
|
67
|
+
incoming: RGBA;
|
|
68
|
+
highlighted: RGBA;
|
|
69
|
+
empty: RGBA;
|
|
70
|
+
outlineEmptyMix: number;
|
|
71
|
+
}
|
|
72
|
+
export interface LocationAreaColorsRGBA {
|
|
73
|
+
outline: RGBA;
|
|
74
|
+
normal: RGBA;
|
|
75
|
+
selected: RGBA;
|
|
76
|
+
highlighted: RGBA;
|
|
77
|
+
connected: RGBA;
|
|
78
|
+
}
|
|
79
|
+
export interface BaseColorsRGBA {
|
|
80
|
+
darkMode: boolean;
|
|
81
|
+
locationAreas: LocationAreaColorsRGBA;
|
|
82
|
+
dimmedOpacity: number;
|
|
83
|
+
outlineColor: RGBA;
|
|
84
|
+
}
|
|
85
|
+
export interface ColorsRGBA extends BaseColorsRGBA {
|
|
86
|
+
flows: FlowColorsRGBA;
|
|
87
|
+
locationCircles: LocationCircleColorsRGBA;
|
|
88
|
+
}
|
|
89
|
+
export interface FlowAndCircleColorsRGBA {
|
|
90
|
+
flows: FlowColorsRGBA;
|
|
91
|
+
locationCircles: LocationCircleColorsRGBA;
|
|
92
|
+
}
|
|
93
|
+
export interface DiffColorsRGBA extends BaseColorsRGBA {
|
|
94
|
+
positive: FlowAndCircleColorsRGBA;
|
|
95
|
+
negative: FlowAndCircleColorsRGBA;
|
|
96
|
+
}
|
|
97
|
+
export declare function getColorsRGBA(colors: Colors | undefined): ColorsRGBA;
|
|
98
|
+
export declare function getDiffColorsRGBA(colors: DiffColors | undefined): DiffColorsRGBA;
|
|
99
|
+
export declare function rgbaAsString(color: RGBA): string;
|
|
100
|
+
export declare function midpoint(a: number, b: number, zeroToOne: number): number;
|
|
101
|
+
export declare function mixColorsRGBA(color1: RGBA, color2: RGBA, zeroToOne: number): RGBA;
|
|
102
|
+
export default getColors;
|
|
103
|
+
//# sourceMappingURL=colors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"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"}
|