@kepler.gl/reducers 3.3.0-alpha.15 → 3.3.0-alpha.16

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,7 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
2
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3
5
  // SPDX-License-Identifier: MIT
4
6
  // Copyright contributors to the kepler.gl project
5
7
 
@@ -103,4 +105,151 @@ export function getTooltipDisplayValue(_ref7) {
103
105
  }
104
106
  return item !== null && item !== void 0 && item.format ? getFormatter(item === null || item === void 0 ? void 0 : item.format, field)(value) : field.displayFormat ? getFormatter(field.displayFormat, field)(value) : parseFieldValue(value, field.type);
105
107
  }
106
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX1RPT0xUSVBfRklFTERTIiwiQUxMX0ZJRUxEX1RZUEVTIiwiVFJJUF9QT0lOVF9GSUVMRFMiLCJUT09MVElQX0ZPUk1BVFMiLCJUT09MVElQX0tFWSIsIkNPTVBBUkVfVFlQRVMiLCJwYXJzZUZpZWxkVmFsdWUiLCJnZXRGb3JtYXR0ZXIiLCJpc051bWJlciIsImRlZmF1bHRGb3JtYXR0ZXIiLCJub3ROdWxsb3JVbmRlZmluZWQiLCJUT09MVElQX01JTlVTX1NJR04iLCJORUdBVElWRV9TSUdOUyIsIkJSVVNIX0NPTkZJRyIsInJhbmdlIiwiZmluZEZpZWxkc1RvU2hvdyIsIl9yZWYiLCJmaWVsZHMiLCJpZCIsIm1heERlZmF1bHRUb29sdGlwcyIsImZpZWxkc1RvU2hvdyIsInJlZHVjZSIsInByZXYiLCJjdXJyIiwiZmluZCIsIl9yZWYyIiwibmFtZSIsInB1c2giLCJfZGVmaW5lUHJvcGVydHkiLCJsZW5ndGgiLCJhdXRvRmluZFRvb2x0aXBGaWVsZHMiLCJwdEZpZWxkcyIsIl9tZXJnZUZpZWxkUGFpcnMiLCJmaWx0ZXIiLCJfcmVmNCIsInR5cGUiLCJyZXBsYWNlIiwidHJpbSIsInNwbGl0IiwiZXZlcnkiLCJzZWciLCJpbmNsdWRlcyIsImdlb2pzb24iLCJnZW9hcnJvdyIsInNsaWNlIiwibWFwIiwiX3JlZjUiLCJmb3JtYXQiLCJnZXREZWZhdWx0VG9vbHRpcEZvcm1hdCIsInRpbWVzdGFtcCIsIkRBVEVfVElNRV9MX0xUUyIsImRhdGUiLCJEQVRFX0wiLCJwYWlycyIsInBhaXIiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJnZXRUb29sdGlwRGlzcGxheURlbHRhVmFsdWUiLCJfcmVmNiIsImZpZWxkIiwidmFsdWUiLCJwcmltYXJ5VmFsdWUiLCJjb21wYXJlVHlwZSIsImRpc3BsYXlEZWx0YVZhbHVlIiwiaW50ZWdlciIsInJlYWwiLCJkZWx0YVZhbHVlIiwiUkVMQVRJVkUiLCJkZWx0YUZvcm1hdCIsIkRFQ0lNQUxfUEVSQ0VOVF9GVUxMXzIiLCJkaXNwbGF5Rm9ybWF0IiwiREVDSU1BTF9ERUNJTUFMX0ZJWEVEXzMiLCJkZWx0YUZpcnN0Q2hhciIsImNoYXJBdCIsImdldFRvb2x0aXBEaXNwbGF5VmFsdWUiLCJfcmVmNyIsIml0ZW0iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJhY3Rpb24tdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtcbiAgREVGQVVMVF9UT09MVElQX0ZJRUxEUyxcbiAgQUxMX0ZJRUxEX1RZUEVTLFxuICBUUklQX1BPSU5UX0ZJRUxEUyxcbiAgVE9PTFRJUF9GT1JNQVRTLFxuICBUT09MVElQX0tFWSxcbiAgQ09NUEFSRV9UWVBFU1xufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmltcG9ydCB7RmllbGQsIFRvb2x0aXBGaWVsZCwgQ29tcGFyZVR5cGV9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtwYXJzZUZpZWxkVmFsdWUsIGdldEZvcm1hdHRlciwgaXNOdW1iZXIsIGRlZmF1bHRGb3JtYXR0ZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtub3ROdWxsb3JVbmRlZmluZWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcblxuLyoqXG4gKiBNaW51cyBzaWduIHVzZWQgaW4gdG9vbHRpcCBmb3JtYXR0aW5nLlxuICogXFx1MjIxMiBvciBcXHUwMDJEIGlzIHRoZSBtaW51cyBzaWduIHRoYXQgZDMtZm9ybWF0IHVzZXMgZm9yIGRlY2ltYWwgbnVtYmVyIGZvcm1hdHRpbmdcbiAqIGQzLWZvcm1hdCAyLjAgdXNlcyBcXHUwMDJEXG4gKi9cbmV4cG9ydCBjb25zdCBUT09MVElQX01JTlVTX1NJR04gPSAnXFx1MjIxMic7XG4vLyBib3RoIGFyZSBwb3NpYmxlIG5lZ2F0aXZlIHNpZ25zXG5leHBvcnQgY29uc3QgTkVHQVRJVkVfU0lHTlMgPSBbJ1xcdTAwMkQnLCAnXFx1MjIxMiddO1xuXG5leHBvcnQgY29uc3QgQlJVU0hfQ09ORklHOiB7XG4gIHJhbmdlOiBbbnVtYmVyLCBudW1iZXJdO1xufSA9IHtcbiAgcmFuZ2U6IFswLCA1MF1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRmllbGRzVG9TaG93KHtcbiAgZmllbGRzLFxuICBpZCxcbiAgbWF4RGVmYXVsdFRvb2x0aXBzXG59OiB7XG4gIGZpZWxkczogRmllbGRbXTtcbiAgaWQ6IHN0cmluZztcbiAgbWF4RGVmYXVsdFRvb2x0aXBzOiBudW1iZXI7XG59KToge1xuICBba2V5OiBzdHJpbmddOiBUb29sdGlwRmllbGRbXTtcbn0ge1xuICAvLyBmaXJzdCBmaW5kIGRlZmF1bHQgdG9vbHRpcCBmaWVsZHMgZm9yIHRyaXBzXG4gIGNvbnN0IGZpZWxkc1RvU2hvdyA9IERFRkFVTFRfVE9PTFRJUF9GSUVMRFMucmVkdWNlKChwcmV2LCBjdXJyKSA9PiB7XG4gICAgaWYgKGZpZWxkcy5maW5kKCh7bmFtZX0pID0+IGN1cnIubmFtZSA9PT0gbmFtZSkpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHByZXYucHVzaChjdXJyKTtcbiAgICB9XG4gICAgcmV0dXJuIHByZXY7XG4gIH0sIFtdKTtcblxuICByZXR1cm4ge1xuICAgIFtpZF06IGZpZWxkc1RvU2hvdy5sZW5ndGggPyBmaWVsZHNUb1Nob3cgOiBhdXRvRmluZFRvb2x0aXBGaWVsZHMoZmllbGRzLCBtYXhEZWZhdWx0VG9vbHRpcHMpXG4gIH07XG59XG5cbmZ1bmN0aW9uIGF1dG9GaW5kVG9vbHRpcEZpZWxkcyhmaWVsZHMsIG1heERlZmF1bHRUb29sdGlwcykge1xuICBjb25zdCBwdEZpZWxkcyA9IF9tZXJnZUZpZWxkUGFpcnMoVFJJUF9QT0lOVF9GSUVMRFMpO1xuICAvLyBmaWx0ZXIgb3V0IHRoZSBkZWZhdWx0IGZpZWxkcyB0aGF0IGNvbnRhaW5zIGxhdCBhbmQgbG5nIGFuZCBhbnkgZ2VvbWV0cnlcbiAgY29uc3QgZmllbGRzVG9TaG93ID0gZmllbGRzLmZpbHRlcihcbiAgICAoe25hbWUsIHR5cGV9KSA9PlxuICAgICAgbmFtZVxuICAgICAgICAucmVwbGFjZSgvW18sLl0rL2csICcgJylcbiAgICAgICAgLnRyaW0oKVxuICAgICAgICAuc3BsaXQoJyAnKVxuICAgICAgICAuZXZlcnkoc2VnID0+ICFwdEZpZWxkcy5pbmNsdWRlcyhzZWcpKSAmJlxuICAgICAgdHlwZSAhPT0gQUxMX0ZJRUxEX1RZUEVTLmdlb2pzb24gJiZcbiAgICAgIHR5cGUgIT09IEFMTF9GSUVMRF9UWVBFUy5nZW9hcnJvdyAmJlxuICAgICAgdHlwZSAhPT0gJ29iamVjdCdcbiAgKTtcblxuICByZXR1cm4gZmllbGRzVG9TaG93LnNsaWNlKDAsIG1heERlZmF1bHRUb29sdGlwcykubWFwKCh7bmFtZSwgdHlwZX0pID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZSxcbiAgICAgIGZvcm1hdDogZ2V0RGVmYXVsdFRvb2x0aXBGb3JtYXQodHlwZSlcbiAgICB9O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0RGVmYXVsdFRvb2x0aXBGb3JtYXQodHlwZT86IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBpZiAodHlwZSA9PT0gQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcCkge1xuICAgIHJldHVybiBUT09MVElQX0ZPUk1BVFMuREFURV9USU1FX0xfTFRTW1RPT0xUSVBfS0VZXTtcbiAgfVxuICBpZiAodHlwZSA9PT0gQUxMX0ZJRUxEX1RZUEVTLmRhdGUpIHtcbiAgICByZXR1cm4gVE9PTFRJUF9GT1JNQVRTLkRBVEVfTFtUT09MVElQX0tFWV07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIF9tZXJnZUZpZWxkUGFpcnMocGFpcnMpIHtcbiAgcmV0dXJuIHBhaXJzLnJlZHVjZSgocHJldiwgcGFpcikgPT4gWy4uLnByZXYsIC4uLnBhaXJdLCBbXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb29sdGlwRGlzcGxheURlbHRhVmFsdWUoe1xuICBmaWVsZCxcbiAgdmFsdWUsXG4gIHByaW1hcnlWYWx1ZSxcbiAgY29tcGFyZVR5cGVcbn06IHtcbiAgZmllbGQ6IEZpZWxkO1xuICB2YWx1ZTogYW55O1xuICBwcmltYXJ5VmFsdWU6IGFueTtcbiAgY29tcGFyZVR5cGU/OiBDb21wYXJlVHlwZTtcbn0pOiBzdHJpbmcgfCBudWxsIHtcbiAgbGV0IGRpc3BsYXlEZWx0YVZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBpZiAoXG4gICAgLy8gY29tcGFyaXNvbiBtb2RlIG9ubHkgd29ya3MgZm9yIG51bWVyaWMgZmllbGRcbiAgICBmaWVsZC50eXBlID09PSBBTExfRklFTERfVFlQRVMuaW50ZWdlciB8fFxuICAgIGZpZWxkLnR5cGUgPT09IEFMTF9GSUVMRF9UWVBFUy5yZWFsXG4gICkge1xuICAgIGlmIChpc051bWJlcihwcmltYXJ5VmFsdWUpICYmIGlzTnVtYmVyKHZhbHVlKSkge1xuICAgICAgY29uc3QgZGVsdGFWYWx1ZSA9XG4gICAgICAgIGNvbXBhcmVUeXBlID09PSBDT01QQVJFX1RZUEVTLlJFTEFUSVZFID8gdmFsdWUgLyBwcmltYXJ5VmFsdWUgLSAxIDogdmFsdWUgLSBwcmltYXJ5VmFsdWU7XG4gICAgICBjb25zdCBkZWx0YUZvcm1hdCA9XG4gICAgICAgIGNvbXBhcmVUeXBlID09PSBDT01QQVJFX1RZUEVTLlJFTEFUSVZFXG4gICAgICAgICAgPyBUT09MVElQX0ZPUk1BVFMuREVDSU1BTF9QRVJDRU5UX0ZVTExfMltUT09MVElQX0tFWV1cbiAgICAgICAgICA6IGZpZWxkLmRpc3BsYXlGb3JtYXQgfHwgVE9PTFRJUF9GT1JNQVRTLkRFQ0lNQUxfREVDSU1BTF9GSVhFRF8zW1RPT0xUSVBfS0VZXTtcblxuICAgICAgZGlzcGxheURlbHRhVmFsdWUgPSBnZXRGb3JtYXR0ZXIoZGVsdGFGb3JtYXQsIGZpZWxkKShkZWx0YVZhbHVlKTtcblxuICAgICAgLy8gc2FmZWx5IGNhc3Qgc3RyaW5nXG4gICAgICBkaXNwbGF5RGVsdGFWYWx1ZSA9IGRlZmF1bHRGb3JtYXR0ZXIoZGlzcGxheURlbHRhVmFsdWUpO1xuICAgICAgY29uc3QgZGVsdGFGaXJzdENoYXIgPSBkaXNwbGF5RGVsdGFWYWx1ZS5jaGFyQXQoMCk7XG5cbiAgICAgIGlmIChkZWx0YUZpcnN0Q2hhciAhPT0gJysnICYmICFORUdBVElWRV9TSUdOUy5pbmNsdWRlcyhkZWx0YUZpcnN0Q2hhcikpIHtcbiAgICAgICAgZGlzcGxheURlbHRhVmFsdWUgPSBgKyR7ZGlzcGxheURlbHRhVmFsdWV9YDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZGlzcGxheURlbHRhVmFsdWUgPSBUT09MVElQX01JTlVTX1NJR047XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRpc3BsYXlEZWx0YVZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9vbHRpcERpc3BsYXlWYWx1ZSh7XG4gIGl0ZW0sXG4gIGZpZWxkLFxuICB2YWx1ZVxufToge1xuICBpdGVtOiBUb29sdGlwRmllbGQgfCB1bmRlZmluZWQ7XG4gIGZpZWxkOiBGaWVsZDtcbiAgdmFsdWU6IGFueTtcbn0pOiBzdHJpbmcge1xuICBpZiAoIW5vdE51bGxvclVuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICByZXR1cm4gaXRlbT8uZm9ybWF0XG4gICAgPyBnZXRGb3JtYXR0ZXIoaXRlbT8uZm9ybWF0LCBmaWVsZCkodmFsdWUpXG4gICAgOiBmaWVsZC5kaXNwbGF5Rm9ybWF0XG4gICAgPyBnZXRGb3JtYXR0ZXIoZmllbGQuZGlzcGxheUZvcm1hdCwgZmllbGQpKHZhbHVlKVxuICAgIDogcGFyc2VGaWVsZFZhbHVlKHZhbHVlLCBmaWVsZC50eXBlKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBOztBQUVBLFNBQ0VBLHNCQUFzQixFQUN0QkMsZUFB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
108
+ export var ZOOM_OPACITY_RANGE = [0, 24];
109
+ export var DEFAULT_ZOOM_OPACITY_STOPS = {
110
+ appear: 1,
111
+ full: 3,
112
+ fade: 8,
113
+ gone: 12
114
+ };
115
+ var ZOOM_OPACITY_STOP_KEYS = ['appear', 'full', 'fade', 'gone'];
116
+ function isOrderedZoomOpacityStops(stops) {
117
+ if (!stops) {
118
+ return false;
119
+ }
120
+ var appear = stops.appear,
121
+ full = stops.full,
122
+ fade = stops.fade,
123
+ gone = stops.gone;
124
+ return [appear, full, fade, gone].every(function (value) {
125
+ return typeof value === 'number' && Number.isFinite(value);
126
+ }) && appear <= full && full <= fade && fade <= gone;
127
+ }
128
+
129
+ /**
130
+ * 0–1 multiplier for a layer's opacity at `zoom`.
131
+ * 0 at and outside the envelope, rising from appear to full, holding through fade, then falling to gone.
132
+ * Equal neighbors are a step. Unordered stops leave opacity unchanged.
133
+ */
134
+ export function zoomOpacityFactor(zoom, stops) {
135
+ if (!isOrderedZoomOpacityStops(stops) || !Number.isFinite(zoom)) {
136
+ return 1;
137
+ }
138
+ var appear = stops.appear,
139
+ full = stops.full,
140
+ fade = stops.fade,
141
+ gone = stops.gone;
142
+ if (zoom <= appear || zoom >= gone) {
143
+ return 0;
144
+ }
145
+ if (zoom < full) {
146
+ var _span = full - appear;
147
+ return _span <= 0 ? 1 : (zoom - appear) / _span;
148
+ }
149
+ if (zoom <= fade) {
150
+ return 1;
151
+ }
152
+ var span = gone - fade;
153
+ return span <= 0 ? 0 : (gone - zoom) / span;
154
+ }
155
+
156
+ /** Envelope multiplier for one layer. 1 when fade-on-zoom is off or the layer is not assigned. */
157
+ export function getLayerZoomOpacityFactor(layerId, zoom, interactionConfig) {
158
+ var _zoomOpacity$config;
159
+ var zoomOpacity = interactionConfig === null || interactionConfig === void 0 ? void 0 : interactionConfig.zoomOpacity;
160
+ if (!(zoomOpacity !== null && zoomOpacity !== void 0 && zoomOpacity.enabled) || typeof zoom !== 'number') {
161
+ return 1;
162
+ }
163
+ var controller = (_zoomOpacity$config = zoomOpacity.config) === null || _zoomOpacity$config === void 0 || (_zoomOpacity$config = _zoomOpacity$config.controllers) === null || _zoomOpacity$config === void 0 ? void 0 : _zoomOpacity$config.find(function (item) {
164
+ var _item$layerIds;
165
+ return (_item$layerIds = item.layerIds) === null || _item$layerIds === void 0 ? void 0 : _item$layerIds.includes(layerId);
166
+ });
167
+ if (!controller) {
168
+ return 1;
169
+ }
170
+ return zoomOpacityFactor(zoom, controller.stops);
171
+ }
172
+
173
+ /** Write one stop and push its neighbors so appear <= full <= fade <= gone. */
174
+ export function setZoomOpacityStop(stops, key, value) {
175
+ var minZoom = ZOOM_OPACITY_RANGE[0],
176
+ maxZoom = ZOOM_OPACITY_RANGE[1];
177
+ var next = _objectSpread({}, stops);
178
+ var clamped = Math.min(maxZoom, Math.max(minZoom, value));
179
+ next[key] = Math.round(clamped * 10) / 10;
180
+ var index = ZOOM_OPACITY_STOP_KEYS.indexOf(key);
181
+ for (var i = index - 1; i >= 0; i--) {
182
+ var stopKey = ZOOM_OPACITY_STOP_KEYS[i];
183
+ if (next[stopKey] > next[ZOOM_OPACITY_STOP_KEYS[i + 1]]) {
184
+ next[stopKey] = next[ZOOM_OPACITY_STOP_KEYS[i + 1]];
185
+ }
186
+ }
187
+ for (var _i = index + 1; _i < ZOOM_OPACITY_STOP_KEYS.length; _i++) {
188
+ var _stopKey = ZOOM_OPACITY_STOP_KEYS[_i];
189
+ if (next[_stopKey] < next[ZOOM_OPACITY_STOP_KEYS[_i - 1]]) {
190
+ next[_stopKey] = next[ZOOM_OPACITY_STOP_KEYS[_i - 1]];
191
+ }
192
+ }
193
+ return next;
194
+ }
195
+
196
+ /** Concatenate controllers and keep the first assignment of each layer id. */
197
+ export function combineZoomOpacityControllers(configs) {
198
+ var seen = new Set();
199
+ var controllers = [];
200
+ configs.forEach(function (config) {
201
+ ((config === null || config === void 0 ? void 0 : config.controllers) || []).forEach(function (controller) {
202
+ var layerIds = (controller.layerIds || []).filter(function (id) {
203
+ if (seen.has(id)) {
204
+ return false;
205
+ }
206
+ seen.add(id);
207
+ return true;
208
+ });
209
+ if (layerIds.length || !(controller.layerIds || []).length) {
210
+ controllers.push(_objectSpread(_objectSpread({}, controller), {}, {
211
+ stops: _objectSpread({}, controller.stops),
212
+ layerIds: layerIds
213
+ }));
214
+ }
215
+ });
216
+ });
217
+ return controllers;
218
+ }
219
+
220
+ /** Drop a deleted layer from fade-on-zoom controllers. Returns the same config when nothing changes. */
221
+ export function removeLayerFromZoomOpacity(interactionConfig, layerId) {
222
+ var _zoomOpacity$config2;
223
+ var zoomOpacity = interactionConfig === null || interactionConfig === void 0 ? void 0 : interactionConfig.zoomOpacity;
224
+ if (!zoomOpacity) {
225
+ return interactionConfig;
226
+ }
227
+ var controllers = (_zoomOpacity$config2 = zoomOpacity.config) === null || _zoomOpacity$config2 === void 0 ? void 0 : _zoomOpacity$config2.controllers;
228
+ if (!(controllers !== null && controllers !== void 0 && controllers.length)) {
229
+ return interactionConfig;
230
+ }
231
+ var changed = false;
232
+ var nextControllers = controllers.map(function (controller) {
233
+ var _controller$layerIds;
234
+ if (!((_controller$layerIds = controller.layerIds) !== null && _controller$layerIds !== void 0 && _controller$layerIds.includes(layerId))) {
235
+ return controller;
236
+ }
237
+ changed = true;
238
+ return _objectSpread(_objectSpread({}, controller), {}, {
239
+ layerIds: controller.layerIds.filter(function (id) {
240
+ return id !== layerId;
241
+ })
242
+ });
243
+ });
244
+ if (!changed) {
245
+ return interactionConfig;
246
+ }
247
+ return _objectSpread(_objectSpread({}, interactionConfig), {}, {
248
+ zoomOpacity: _objectSpread(_objectSpread({}, zoomOpacity), {}, {
249
+ config: _objectSpread(_objectSpread({}, zoomOpacity.config), {}, {
250
+ controllers: nextControllers
251
+ })
252
+ })
253
+ });
254
+ }
255
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX1RPT0xUSVBfRklFTERTIiwiQUxMX0ZJRUxEX1RZUEVTIiwiVFJJUF9QT0lOVF9GSUVMRFMiLCJUT09MVElQX0ZPUk1BVFMiLCJUT09MVElQX0tFWSIsIkNPTVBBUkVfVFlQRVMiLCJwYXJzZUZpZWxkVmFsdWUiLCJnZXRGb3JtYXR0ZXIiLCJpc051bWJlciIsImRlZmF1bHRGb3JtYXR0ZXIiLCJub3ROdWxsb3JVbmRlZmluZWQiLCJUT09MVElQX01JTlVTX1NJR04iLCJORUdBVElWRV9TSUdOUyIsIkJSVVNIX0NPTkZJRyIsInJhbmdlIiwiZmluZEZpZWxkc1RvU2hvdyIsIl9yZWYiLCJmaWVsZHMiLCJpZCIsIm1heERlZmF1bHRUb29sdGlwcyIsImZpZWxkc1RvU2hvdyIsInJlZHVjZSIsInByZXYiLCJjdXJyIiwiZmluZCIsIl9yZWYyIiwibmFtZSIsInB1c2giLCJfZGVmaW5lUHJvcGVydHkiLCJsZW5ndGgiLCJhdXRvRmluZFRvb2x0aXBGaWVsZHMiLCJwdEZpZWxkcyIsIl9tZXJnZUZpZWxkUGFpcnMiLCJmaWx0ZXIiLCJfcmVmNCIsInR5cGUiLCJyZXBsYWNlIiwidHJpbSIsInNwbGl0IiwiZXZlcnkiLCJzZWciLCJpbmNsdWRlcyIsImdlb2pzb24iLCJnZW9hcnJvdyIsInNsaWNlIiwibWFwIiwiX3JlZjUiLCJmb3JtYXQiLCJnZXREZWZhdWx0VG9vbHRpcEZvcm1hdCIsInRpbWVzdGFtcCIsIkRBVEVfVElNRV9MX0xUUyIsImRhdGUiLCJEQVRFX0wiLCJwYWlycyIsInBhaXIiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJnZXRUb29sdGlwRGlzcGxheURlbHRhVmFsdWUiLCJfcmVmNiIsImZpZWxkIiwidmFsdWUiLCJwcmltYXJ5VmFsdWUiLCJjb21wYXJlVHlwZSIsImRpc3BsYXlEZWx0YVZhbHVlIiwiaW50ZWdlciIsInJlYWwiLCJkZWx0YVZhbHVlIiwiUkVMQVRJVkUiLCJkZWx0YUZvcm1hdCIsIkRFQ0lNQUxfUEVSQ0VOVF9GVUxMXzIiLCJkaXNwbGF5Rm9ybWF0IiwiREVDSU1BTF9ERUNJTUFMX0ZJWEVEXzMiLCJkZWx0YUZpcnN0Q2hhciIsImNoYXJBdCIsImdldFRvb2x0aXBEaXNwbGF5VmFsdWUiLCJfcmVmNyIsIml0ZW0iLCJaT09NX09QQUNJVFlfUkFOR0UiLCJERUZBVUxUX1pPT01fT1BBQ0lUWV9TVE9QUyIsImFwcGVhciIsImZ1bGwiLCJmYWRlIiwiZ29uZSIsIlpPT01fT1BBQ0lUWV9TVE9QX0tFWVMiLCJpc09yZGVyZWRab29tT3BhY2l0eVN0b3BzIiwic3RvcHMiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsInpvb21PcGFjaXR5RmFjdG9yIiwiem9vbSIsInNwYW4iLCJnZXRMYXllclpvb21PcGFjaXR5RmFjdG9yIiwibGF5ZXJJZCIsImludGVyYWN0aW9uQ29uZmlnIiwiX3pvb21PcGFjaXR5JGNvbmZpZyIsInpvb21PcGFjaXR5IiwiZW5hYmxlZCIsImNvbnRyb2xsZXIiLCJjb25maWciLCJjb250cm9sbGVycyIsIl9pdGVtJGxheWVySWRzIiwibGF5ZXJJZHMiLCJzZXRab29tT3BhY2l0eVN0b3AiLCJrZXkiLCJtaW5ab29tIiwibWF4Wm9vbSIsIm5leHQiLCJfb2JqZWN0U3ByZWFkIiwiY2xhbXBlZCIsIk1hdGgiLCJtaW4iLCJtYXgiLCJyb3VuZCIsImluZGV4IiwiaW5kZXhPZiIsImkiLCJzdG9wS2V5IiwiY29tYmluZVpvb21PcGFjaXR5Q29udHJvbGxlcnMiLCJjb25maWdzIiwic2VlbiIsIlNldCIsImZvckVhY2giLCJoYXMiLCJhZGQiLCJyZW1vdmVMYXllckZyb21ab29tT3BhY2l0eSIsIl96b29tT3BhY2l0eSRjb25maWcyIiwiY2hhbmdlZCIsIm5leHRDb250cm9sbGVycyIsIl9jb250cm9sbGVyJGxheWVySWRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ludGVyYWN0aW9uLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7XG4gIERFRkFVTFRfVE9PTFRJUF9GSUVMRFMsXG4gIEFMTF9GSUVMRF9UWVBFUyxcbiAgVFJJUF9QT0lOVF9GSUVMRFMsXG4gIFRPT0xUSVBfRk9STUFUUyxcbiAgVE9PTFRJUF9LRVksXG4gIENPTVBBUkVfVFlQRVNcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5pbXBvcnQge1xuICBGaWVsZCxcbiAgSW50ZXJhY3Rpb25Db25maWcsXG4gIFRvb2x0aXBGaWVsZCxcbiAgQ29tcGFyZVR5cGUsXG4gIFpvb21PcGFjaXR5Q29udHJvbGxlcixcbiAgWm9vbU9wYWNpdHlTdG9wc1xufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7cGFyc2VGaWVsZFZhbHVlLCBnZXRGb3JtYXR0ZXIsIGlzTnVtYmVyLCBkZWZhdWx0Rm9ybWF0dGVyfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7bm90TnVsbG9yVW5kZWZpbmVkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5cbi8qKlxuICogTWludXMgc2lnbiB1c2VkIGluIHRvb2x0aXAgZm9ybWF0dGluZy5cbiAqIFxcdTIyMTIgb3IgXFx1MDAyRCBpcyB0aGUgbWludXMgc2lnbiB0aGF0IGQzLWZvcm1hdCB1c2VzIGZvciBkZWNpbWFsIG51bWJlciBmb3JtYXR0aW5nXG4gKiBkMy1mb3JtYXQgMi4wIHVzZXMgXFx1MDAyRFxuICovXG5leHBvcnQgY29uc3QgVE9PTFRJUF9NSU5VU19TSUdOID0gJ1xcdTIyMTInO1xuLy8gYm90aCBhcmUgcG9zaWJsZSBuZWdhdGl2ZSBzaWduc1xuZXhwb3J0IGNvbnN0IE5FR0FUSVZFX1NJR05TID0gWydcXHUwMDJEJywgJ1xcdTIyMTInXTtcblxuZXhwb3J0IGNvbnN0IEJSVVNIX0NPTkZJRzoge1xuICByYW5nZTogW251bWJlciwgbnVtYmVyXTtcbn0gPSB7XG4gIHJhbmdlOiBbMCwgNTBdXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZmluZEZpZWxkc1RvU2hvdyh7XG4gIGZpZWxkcyxcbiAgaWQsXG4gIG1heERlZmF1bHRUb29sdGlwc1xufToge1xuICBmaWVsZHM6IEZpZWxkW107XG4gIGlkOiBzdHJpbmc7XG4gIG1heERlZmF1bHRUb29sdGlwczogbnVtYmVyO1xufSk6IHtcbiAgW2tleTogc3RyaW5nXTogVG9vbHRpcEZpZWxkW107XG59IHtcbiAgLy8gZmlyc3QgZmluZCBkZWZhdWx0IHRvb2x0aXAgZmllbGRzIGZvciB0cmlwc1xuICBjb25zdCBmaWVsZHNUb1Nob3cgPSBERUZBVUxUX1RPT0xUSVBfRklFTERTLnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xuICAgIGlmIChmaWVsZHMuZmluZCgoe25hbWV9KSA9PiBjdXJyLm5hbWUgPT09IG5hbWUpKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBwcmV2LnB1c2goY3Vycik7XG4gICAgfVxuICAgIHJldHVybiBwcmV2O1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBbaWRdOiBmaWVsZHNUb1Nob3cubGVuZ3RoID8gZmllbGRzVG9TaG93IDogYXV0b0ZpbmRUb29sdGlwRmllbGRzKGZpZWxkcywgbWF4RGVmYXVsdFRvb2x0aXBzKVxuICB9O1xufVxuXG5mdW5jdGlvbiBhdXRvRmluZFRvb2x0aXBGaWVsZHMoZmllbGRzLCBtYXhEZWZhdWx0VG9vbHRpcHMpIHtcbiAgY29uc3QgcHRGaWVsZHMgPSBfbWVyZ2VGaWVsZFBhaXJzKFRSSVBfUE9JTlRfRklFTERTKTtcbiAgLy8gZmlsdGVyIG91dCB0aGUgZGVmYXVsdCBmaWVsZHMgdGhhdCBjb250YWlucyBsYXQgYW5kIGxuZyBhbmQgYW55IGdlb21ldHJ5XG4gIGNvbnN0IGZpZWxkc1RvU2hvdyA9IGZpZWxkcy5maWx0ZXIoXG4gICAgKHtuYW1lLCB0eXBlfSkgPT5cbiAgICAgIG5hbWVcbiAgICAgICAgLnJlcGxhY2UoL1tfLC5dKy9nLCAnICcpXG4gICAgICAgIC50cmltKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLmV2ZXJ5KHNlZyA9PiAhcHRGaWVsZHMuaW5jbHVkZXMoc2VnKSkgJiZcbiAgICAgIHR5cGUgIT09IEFMTF9GSUVMRF9UWVBFUy5nZW9qc29uICYmXG4gICAgICB0eXBlICE9PSBBTExfRklFTERfVFlQRVMuZ2VvYXJyb3cgJiZcbiAgICAgIHR5cGUgIT09ICdvYmplY3QnXG4gICk7XG5cbiAgcmV0dXJuIGZpZWxkc1RvU2hvdy5zbGljZSgwLCBtYXhEZWZhdWx0VG9vbHRpcHMpLm1hcCgoe25hbWUsIHR5cGV9KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWUsXG4gICAgICBmb3JtYXQ6IGdldERlZmF1bHRUb29sdGlwRm9ybWF0KHR5cGUpXG4gICAgfTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldERlZmF1bHRUb29sdGlwRm9ybWF0KHR5cGU/OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKHR5cGUgPT09IEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXApIHtcbiAgICByZXR1cm4gVE9PTFRJUF9GT1JNQVRTLkRBVEVfVElNRV9MX0xUU1tUT09MVElQX0tFWV07XG4gIH1cbiAgaWYgKHR5cGUgPT09IEFMTF9GSUVMRF9UWVBFUy5kYXRlKSB7XG4gICAgcmV0dXJuIFRPT0xUSVBfRk9STUFUUy5EQVRFX0xbVE9PTFRJUF9LRVldO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBfbWVyZ2VGaWVsZFBhaXJzKHBhaXJzKSB7XG4gIHJldHVybiBwYWlycy5yZWR1Y2UoKHByZXYsIHBhaXIpID0+IFsuLi5wcmV2LCAuLi5wYWlyXSwgW10pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9vbHRpcERpc3BsYXlEZWx0YVZhbHVlKHtcbiAgZmllbGQsXG4gIHZhbHVlLFxuICBwcmltYXJ5VmFsdWUsXG4gIGNvbXBhcmVUeXBlXG59OiB7XG4gIGZpZWxkOiBGaWVsZDtcbiAgdmFsdWU6IGFueTtcbiAgcHJpbWFyeVZhbHVlOiBhbnk7XG4gIGNvbXBhcmVUeXBlPzogQ29tcGFyZVR5cGU7XG59KTogc3RyaW5nIHwgbnVsbCB7XG4gIGxldCBkaXNwbGF5RGVsdGFWYWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgaWYgKFxuICAgIC8vIGNvbXBhcmlzb24gbW9kZSBvbmx5IHdvcmtzIGZvciBudW1lcmljIGZpZWxkXG4gICAgZmllbGQudHlwZSA9PT0gQUxMX0ZJRUxEX1RZUEVTLmludGVnZXIgfHxcbiAgICBmaWVsZC50eXBlID09PSBBTExfRklFTERfVFlQRVMucmVhbFxuICApIHtcbiAgICBpZiAoaXNOdW1iZXIocHJpbWFyeVZhbHVlKSAmJiBpc051bWJlcih2YWx1ZSkpIHtcbiAgICAgIGNvbnN0IGRlbHRhVmFsdWUgPVxuICAgICAgICBjb21wYXJlVHlwZSA9PT0gQ09NUEFSRV9UWVBFUy5SRUxBVElWRSA/IHZhbHVlIC8gcHJpbWFyeVZhbHVlIC0gMSA6IHZhbHVlIC0gcHJpbWFyeVZhbHVlO1xuICAgICAgY29uc3QgZGVsdGFGb3JtYXQgPVxuICAgICAgICBjb21wYXJlVHlwZSA9PT0gQ09NUEFSRV9UWVBFUy5SRUxBVElWRVxuICAgICAgICAgID8gVE9PTFRJUF9GT1JNQVRTLkRFQ0lNQUxfUEVSQ0VOVF9GVUxMXzJbVE9PTFRJUF9LRVldXG4gICAgICAgICAgOiBmaWVsZC5kaXNwbGF5Rm9ybWF0IHx8IFRPT0xUSVBfRk9STUFUUy5ERUNJTUFMX0RFQ0lNQUxfRklYRURfM1tUT09MVElQX0tFWV07XG5cbiAgICAgIGRpc3BsYXlEZWx0YVZhbHVlID0gZ2V0Rm9ybWF0dGVyKGRlbHRhRm9ybWF0LCBmaWVsZCkoZGVsdGFWYWx1ZSk7XG5cbiAgICAgIC8vIHNhZmVseSBjYXN0IHN0cmluZ1xuICAgICAgZGlzcGxheURlbHRhVmFsdWUgPSBkZWZhdWx0Rm9ybWF0dGVyKGRpc3BsYXlEZWx0YVZhbHVlKTtcbiAgICAgIGNvbnN0IGRlbHRhRmlyc3RDaGFyID0gZGlzcGxheURlbHRhVmFsdWUuY2hhckF0KDApO1xuXG4gICAgICBpZiAoZGVsdGFGaXJzdENoYXIgIT09ICcrJyAmJiAhTkVHQVRJVkVfU0lHTlMuaW5jbHVkZXMoZGVsdGFGaXJzdENoYXIpKSB7XG4gICAgICAgIGRpc3BsYXlEZWx0YVZhbHVlID0gYCske2Rpc3BsYXlEZWx0YVZhbHVlfWA7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc3BsYXlEZWx0YVZhbHVlID0gVE9PTFRJUF9NSU5VU19TSUdOO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkaXNwbGF5RGVsdGFWYWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRvb2x0aXBEaXNwbGF5VmFsdWUoe1xuICBpdGVtLFxuICBmaWVsZCxcbiAgdmFsdWVcbn06IHtcbiAgaXRlbTogVG9vbHRpcEZpZWxkIHwgdW5kZWZpbmVkO1xuICBmaWVsZDogRmllbGQ7XG4gIHZhbHVlOiBhbnk7XG59KTogc3RyaW5nIHtcbiAgaWYgKCFub3ROdWxsb3JVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcmV0dXJuIGl0ZW0/LmZvcm1hdFxuICAgID8gZ2V0Rm9ybWF0dGVyKGl0ZW0/LmZvcm1hdCwgZmllbGQpKHZhbHVlKVxuICAgIDogZmllbGQuZGlzcGxheUZvcm1hdFxuICAgID8gZ2V0Rm9ybWF0dGVyKGZpZWxkLmRpc3BsYXlGb3JtYXQsIGZpZWxkKSh2YWx1ZSlcbiAgICA6IHBhcnNlRmllbGRWYWx1ZSh2YWx1ZSwgZmllbGQudHlwZSk7XG59XG5cbmV4cG9ydCBjb25zdCBaT09NX09QQUNJVFlfUkFOR0U6IFtudW1iZXIsIG51bWJlcl0gPSBbMCwgMjRdO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9aT09NX09QQUNJVFlfU1RPUFM6IFpvb21PcGFjaXR5U3RvcHMgPSB7XG4gIGFwcGVhcjogMSxcbiAgZnVsbDogMyxcbiAgZmFkZTogOCxcbiAgZ29uZTogMTJcbn07XG5cbmNvbnN0IFpPT01fT1BBQ0lUWV9TVE9QX0tFWVMgPSBbJ2FwcGVhcicsICdmdWxsJywgJ2ZhZGUnLCAnZ29uZSddIGFzIGNvbnN0O1xuXG5mdW5jdGlvbiBpc09yZGVyZWRab29tT3BhY2l0eVN0b3BzKHN0b3BzOiBab29tT3BhY2l0eVN0b3BzIHwgdW5kZWZpbmVkKTogc3RvcHMgaXMgWm9vbU9wYWNpdHlTdG9wcyB7XG4gIGlmICghc3RvcHMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3Qge2FwcGVhciwgZnVsbCwgZmFkZSwgZ29uZX0gPSBzdG9wcztcbiAgcmV0dXJuIChcbiAgICBbYXBwZWFyLCBmdWxsLCBmYWRlLCBnb25lXS5ldmVyeShcbiAgICAgIHZhbHVlID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKHZhbHVlKVxuICAgICkgJiZcbiAgICBhcHBlYXIgPD0gZnVsbCAmJlxuICAgIGZ1bGwgPD0gZmFkZSAmJlxuICAgIGZhZGUgPD0gZ29uZVxuICApO1xufVxuXG4vKipcbiAqIDDigJMxIG11bHRpcGxpZXIgZm9yIGEgbGF5ZXIncyBvcGFjaXR5IGF0IGB6b29tYC5cbiAqIDAgYXQgYW5kIG91dHNpZGUgdGhlIGVudmVsb3BlLCByaXNpbmcgZnJvbSBhcHBlYXIgdG8gZnVsbCwgaG9sZGluZyB0aHJvdWdoIGZhZGUsIHRoZW4gZmFsbGluZyB0byBnb25lLlxuICogRXF1YWwgbmVpZ2hib3JzIGFyZSBhIHN0ZXAuIFVub3JkZXJlZCBzdG9wcyBsZWF2ZSBvcGFjaXR5IHVuY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHpvb21PcGFjaXR5RmFjdG9yKHpvb206IG51bWJlciwgc3RvcHM6IFpvb21PcGFjaXR5U3RvcHMpOiBudW1iZXIge1xuICBpZiAoIWlzT3JkZXJlZFpvb21PcGFjaXR5U3RvcHMoc3RvcHMpIHx8ICFOdW1iZXIuaXNGaW5pdGUoem9vbSkpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICBjb25zdCB7YXBwZWFyLCBmdWxsLCBmYWRlLCBnb25lfSA9IHN0b3BzO1xuICBpZiAoem9vbSA8PSBhcHBlYXIgfHwgem9vbSA+PSBnb25lKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgaWYgKHpvb20gPCBmdWxsKSB7XG4gICAgY29uc3Qgc3BhbiA9IGZ1bGwgLSBhcHBlYXI7XG4gICAgcmV0dXJuIHNwYW4gPD0gMCA/IDEgOiAoem9vbSAtIGFwcGVhcikgLyBzcGFuO1xuICB9XG4gIGlmICh6b29tIDw9IGZhZGUpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICBjb25zdCBzcGFuID0gZ29uZSAtIGZhZGU7XG4gIHJldHVybiBzcGFuIDw9IDAgPyAwIDogKGdvbmUgLSB6b29tKSAvIHNwYW47XG59XG5cbi8qKiBFbnZlbG9wZSBtdWx0aXBsaWVyIGZvciBvbmUgbGF5ZXIuIDEgd2hlbiBmYWRlLW9uLXpvb20gaXMgb2ZmIG9yIHRoZSBsYXllciBpcyBub3QgYXNzaWduZWQuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGF5ZXJab29tT3BhY2l0eUZhY3RvcihcbiAgbGF5ZXJJZDogc3RyaW5nLFxuICB6b29tOiBudW1iZXIgfCB1bmRlZmluZWQsXG4gIGludGVyYWN0aW9uQ29uZmlnPzogSW50ZXJhY3Rpb25Db25maWcgfCBudWxsXG4pOiBudW1iZXIge1xuICBjb25zdCB6b29tT3BhY2l0eSA9IGludGVyYWN0aW9uQ29uZmlnPy56b29tT3BhY2l0eTtcbiAgaWYgKCF6b29tT3BhY2l0eT8uZW5hYmxlZCB8fCB0eXBlb2Ygem9vbSAhPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICBjb25zdCBjb250cm9sbGVyID0gem9vbU9wYWNpdHkuY29uZmlnPy5jb250cm9sbGVycz8uZmluZChpdGVtID0+XG4gICAgaXRlbS5sYXllcklkcz8uaW5jbHVkZXMobGF5ZXJJZClcbiAgKTtcbiAgaWYgKCFjb250cm9sbGVyKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIHpvb21PcGFjaXR5RmFjdG9yKHpvb20sIGNvbnRyb2xsZXIuc3RvcHMpO1xufVxuXG4vKiogV3JpdGUgb25lIHN0b3AgYW5kIHB1c2ggaXRzIG5laWdoYm9ycyBzbyBhcHBlYXIgPD0gZnVsbCA8PSBmYWRlIDw9IGdvbmUuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0Wm9vbU9wYWNpdHlTdG9wKFxuICBzdG9wczogWm9vbU9wYWNpdHlTdG9wcyxcbiAga2V5OiBrZXlvZiBab29tT3BhY2l0eVN0b3BzLFxuICB2YWx1ZTogbnVtYmVyXG4pOiBab29tT3BhY2l0eVN0b3BzIHtcbiAgY29uc3QgW21pblpvb20sIG1heFpvb21dID0gWk9PTV9PUEFDSVRZX1JBTkdFO1xuICBjb25zdCBuZXh0OiBab29tT3BhY2l0eVN0b3BzID0gey4uLnN0b3BzfTtcbiAgY29uc3QgY2xhbXBlZCA9IE1hdGgubWluKG1heFpvb20sIE1hdGgubWF4KG1pblpvb20sIHZhbHVlKSk7XG4gIG5leHRba2V5XSA9IE1hdGgucm91bmQoY2xhbXBlZCAqIDEwKSAvIDEwO1xuICBjb25zdCBpbmRleCA9IFpPT01fT1BBQ0lUWV9TVE9QX0tFWVMuaW5kZXhPZihrZXkpO1xuICBmb3IgKGxldCBpID0gaW5kZXggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGNvbnN0IHN0b3BLZXkgPSBaT09NX09QQUNJVFlfU1RPUF9LRVlTW2ldO1xuICAgIGlmIChuZXh0W3N0b3BLZXldID4gbmV4dFtaT09NX09QQUNJVFlfU1RPUF9LRVlTW2kgKyAxXV0pIHtcbiAgICAgIG5leHRbc3RvcEtleV0gPSBuZXh0W1pPT01fT1BBQ0lUWV9TVE9QX0tFWVNbaSArIDFdXTtcbiAgICB9XG4gIH1cbiAgZm9yIChsZXQgaSA9IGluZGV4ICsgMTsgaSA8IFpPT01fT1BBQ0lUWV9TVE9QX0tFWVMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBzdG9wS2V5ID0gWk9PTV9PUEFDSVRZX1NUT1BfS0VZU1tpXTtcbiAgICBpZiAobmV4dFtzdG9wS2V5XSA8IG5leHRbWk9PTV9PUEFDSVRZX1NUT1BfS0VZU1tpIC0gMV1dKSB7XG4gICAgICBuZXh0W3N0b3BLZXldID0gbmV4dFtaT09NX09QQUNJVFlfU1RPUF9LRVlTW2kgLSAxXV07XG4gICAgfVxuICB9XG4gIHJldHVybiBuZXh0O1xufVxuXG4vKiogQ29uY2F0ZW5hdGUgY29udHJvbGxlcnMgYW5kIGtlZXAgdGhlIGZpcnN0IGFzc2lnbm1lbnQgb2YgZWFjaCBsYXllciBpZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5lWm9vbU9wYWNpdHlDb250cm9sbGVycyhcbiAgY29uZmlnczogQXJyYXk8e2NvbnRyb2xsZXJzPzogWm9vbU9wYWNpdHlDb250cm9sbGVyW119IHwgbnVsbCB8IHVuZGVmaW5lZD5cbik6IFpvb21PcGFjaXR5Q29udHJvbGxlcltdIHtcbiAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBjb250cm9sbGVyczogWm9vbU9wYWNpdHlDb250cm9sbGVyW10gPSBbXTtcbiAgY29uZmlncy5mb3JFYWNoKGNvbmZpZyA9PiB7XG4gICAgKGNvbmZpZz8uY29udHJvbGxlcnMgfHwgW10pLmZvckVhY2goY29udHJvbGxlciA9PiB7XG4gICAgICBjb25zdCBsYXllcklkcyA9IChjb250cm9sbGVyLmxheWVySWRzIHx8IFtdKS5maWx0ZXIoaWQgPT4ge1xuICAgICAgICBpZiAoc2Vlbi5oYXMoaWQpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHNlZW4uYWRkKGlkKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgICAgIGlmIChsYXllcklkcy5sZW5ndGggfHwgIShjb250cm9sbGVyLmxheWVySWRzIHx8IFtdKS5sZW5ndGgpIHtcbiAgICAgICAgY29udHJvbGxlcnMucHVzaCh7XG4gICAgICAgICAgLi4uY29udHJvbGxlcixcbiAgICAgICAgICBzdG9wczogey4uLmNvbnRyb2xsZXIuc3RvcHN9LFxuICAgICAgICAgIGxheWVySWRzXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIGNvbnRyb2xsZXJzO1xufVxuXG4vKiogRHJvcCBhIGRlbGV0ZWQgbGF5ZXIgZnJvbSBmYWRlLW9uLXpvb20gY29udHJvbGxlcnMuIFJldHVybnMgdGhlIHNhbWUgY29uZmlnIHdoZW4gbm90aGluZyBjaGFuZ2VzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUxheWVyRnJvbVpvb21PcGFjaXR5PFxuICBUIGV4dGVuZHMge3pvb21PcGFjaXR5PzogSW50ZXJhY3Rpb25Db25maWdbJ3pvb21PcGFjaXR5J119XG4+KGludGVyYWN0aW9uQ29uZmlnOiBULCBsYXllcklkOiBzdHJpbmcpOiBUIHtcbiAgY29uc3Qgem9vbU9wYWNpdHkgPSBpbnRlcmFjdGlvbkNvbmZpZz8uem9vbU9wYWNpdHk7XG4gIGlmICghem9vbU9wYWNpdHkpIHtcbiAgICByZXR1cm4gaW50ZXJhY3Rpb25Db25maWc7XG4gIH1cbiAgY29uc3QgY29udHJvbGxlcnMgPSB6b29tT3BhY2l0eS5jb25maWc/LmNvbnRyb2xsZXJzO1xuICBpZiAoIWNvbnRyb2xsZXJzPy5sZW5ndGgpIHtcbiAgICByZXR1cm4gaW50ZXJhY3Rpb25Db25maWc7XG4gIH1cbiAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgY29uc3QgbmV4dENvbnRyb2xsZXJzID0gY29udHJvbGxlcnMubWFwKGNvbnRyb2xsZXIgPT4ge1xuICAgIGlmICghY29udHJvbGxlci5sYXllcklkcz8uaW5jbHVkZXMobGF5ZXJJZCkpIHtcbiAgICAgIHJldHVybiBjb250cm9sbGVyO1xuICAgIH1cbiAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uY29udHJvbGxlcixcbiAgICAgIGxheWVySWRzOiBjb250cm9sbGVyLmxheWVySWRzLmZpbHRlcihpZCA9PiBpZCAhPT0gbGF5ZXJJZClcbiAgICB9O1xuICB9KTtcbiAgaWYgKCFjaGFuZ2VkKSB7XG4gICAgcmV0dXJuIGludGVyYWN0aW9uQ29uZmlnO1xuICB9XG4gIHJldHVybiB7XG4gICAgLi4uaW50ZXJhY3Rpb25Db25maWcsXG4gICAgem9vbU9wYWNpdHk6IHtcbiAgICAgIC4uLnpvb21PcGFjaXR5LFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIC4uLnpvb21PcGFjaXR5LmNvbmZpZyxcbiAgICAgICAgY29udHJvbGxlcnM6IG5leHRDb250cm9sbGVyc1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7O0FBRUEsU0FDRUEsc0JBQXNCLEVBQ3RCQyxlQUFlLEVBQ2ZDLGlCQUFpQixFQUNqQkMsZUFBZSxFQUNmQyxXQUFXLEVBQ1hDLGFBQWEsUUFDUixzQkFBc0I7QUFVN0IsU0FBUUMsZUFBZSxFQUFFQyxZQUFZLEVBQUVDLFFBQVEsRUFBRUMsZ0JBQWdCLFFBQU8sa0JBQWtCO0FBQzFGLFNBQVFDLGtCQUFrQixRQUFPLHlCQUF5Qjs7QUFFMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sSUFBTUMsa0JBQWtCLEdBQUcsUUFBUTtBQUMxQztBQUNBLE9BQU8sSUFBTUMsY0FBYyxHQUFHLENBQUMsR0FBUSxFQUFFLFFBQVEsQ0FBQztBQUVsRCxPQUFPLElBQU1DLFlBRVosR0FBRztFQUNGQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUNmLENBQUM7QUFFRCxPQUFPLFNBQVNDLGdCQUFnQkEsQ0FBQUMsSUFBQSxFQVU5QjtFQUFBLElBVEFDLE1BQU0sR0FBQUQsSUFBQSxDQUFOQyxNQUFNO0lBQ05DLEVBQUUsR0FBQUYsSUFBQSxDQUFGRSxFQUFFO0lBQ0ZDLGtCQUFrQixHQUFBSCxJQUFBLENBQWxCRyxrQkFBa0I7RUFRbEI7RUFDQSxJQUFNQyxZQUFZLEdBQUdwQixzQkFBc0IsQ0FBQ3FCLE1BQU0sQ0FBQyxVQUFDQyxJQUFJLEVBQUVDLElBQUksRUFBSztJQUNqRSxJQUFJTixNQUFNLENBQUNPLElBQUksQ0FBQyxVQUFBQyxLQUFBO01BQUEsSUFBRUMsSUFBSSxHQUFB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