@kando-env/kando-ui 1.2.412-alpha.18 → 1.2.412-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/lib/Router.js +3 -12
  2. package/lib/Widgets/EventsRow/EventsRow.js +3 -3
  3. package/lib/Widgets/Map/Map.js +97 -107
  4. package/lib/Widgets/Map/MapUtils.js +22 -10
  5. package/lib/Widgets/Map/areas/AreaPolygon.js +2 -2
  6. package/lib/Widgets/Map/edges/Edge.js +7 -7
  7. package/lib/Widgets/Map/events/Event.js +6 -2
  8. package/lib/Widgets/Map/events/EventIndicator.js +7 -7
  9. package/lib/Widgets/Map/events/EventPath.js +3 -3
  10. package/lib/Widgets/Map/events/EventUtils.js +5 -5
  11. package/lib/Widgets/Map/points/PointIcon.scss +1 -2
  12. package/lib/Widgets/Map/points/PointMarker.js +3 -10
  13. package/lib/Widgets/Map/points/PointMarkers.js +25 -15
  14. package/lib/Widgets/Map/points/PointUtils.js +15 -26
  15. package/lib/components/Map/Map.js +5 -6
  16. package/lib/components/SevereEvent/SevereEvent.js +2 -3
  17. package/lib/i18n/en.json +2 -17
  18. package/lib/i18n/en_uk.json +2 -5
  19. package/lib/macros/getVersion.js +2 -2
  20. package/lib/pages/DashboardMap/FactoryCard.js +5 -2
  21. package/lib/pages/DashboardMap/List.js +3 -4
  22. package/lib/pages/DashboardMap/SeverityBadge.js +3 -7
  23. package/lib/pages/DashboardMap/WWTPMap.js +14 -7
  24. package/lib/pages/EventsPage/Body/Body.js +17 -2
  25. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +3 -2
  26. package/lib/pages/EventsPage/EventsPage.js +3 -10
  27. package/lib/pages/EventsPage/events/Sidebar.js +11 -12
  28. package/lib/pages/EventsPage/events/events_list/EventsList.js +3 -3
  29. package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +1 -20
  30. package/lib/pages/ImportGisPage/importGisUtils.js +1 -20
  31. package/lib/pages/OperationsPage/LeftPanel.js +19 -6
  32. package/lib/pages/OperationsPage/OperationsPage.js +143 -0
  33. package/lib/pages/OperationsPage/RightPanel.js +3 -11
  34. package/lib/pages/OperationsPage/index.js +5 -15
  35. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +5 -7
  36. package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +2 -2
  37. package/lib/pages/UtilityDashboardPage/TopBar/constants.js +9 -11
  38. package/lib/store/areas/actions.js +1 -8
  39. package/lib/store/permissions/permissionsSlice.js +1 -3
  40. package/lib/store/points/actions.js +2 -3
  41. package/lib/utilities/scoreToData.js +3 -7
  42. package/lib/utilities/urls.js +1 -17
  43. package/package.json +1 -1
  44. package/lib/pages/ImportSiteProcess/index.js +0 -55
  45. package/lib/pages/OperationsPage/OperationsContainerPage.js +0 -151
  46. package/lib/pages/OperationsPage/OperationsFilePage.js +0 -29
  47. package/lib/pages/OperationsPage/OperationsUtilityPage.js +0 -33
@@ -24,16 +24,13 @@ var _Event = require("./events/Event");
24
24
  var _MapUtils = require("./MapUtils");
25
25
  var _theme = require("../../styles/theme/theme");
26
26
  var _ListContext = require("pages/DashboardMap/ListContext");
27
- var _actions = require("store/areas/actions");
28
- var _actions2 = require("store/points/actions");
27
+ var _actions = require("store/global/actions");
29
28
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
30
29
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
30
  // @ts-ignore
32
31
 
33
32
  // import { storeMap } from 'src/store/global/actions';
34
33
 
35
- // import { appReducer } from '../../store/rootReducer';
36
-
37
34
  require('leaflet.markercluster');
38
35
  var Map = function Map(_ref) {
39
36
  var areas = _ref.areas,
@@ -67,70 +64,74 @@ var Map = function Map(_ref) {
67
64
  setMapZoomLevel = _useState2[1];
68
65
  var _useSelectedItem = (0, _ListContext.useSelectedItem)(),
69
66
  selectedItem = _useSelectedItem.selectedItem;
67
+ var eventsData = (0, _reactRedux.useSelector)(function (state) {
68
+ return state.events_data;
69
+ });
70
70
  var hoveredEventPresent = (0, _react.useMemo)(function () {
71
71
  return hoveredEvent !== null && hoveredEvent !== undefined;
72
72
  }, [hoveredEvent]);
73
73
  var focusedEventPresent = (0, _react.useMemo)(function () {
74
74
  return focusedEvent !== null && focusedEvent !== undefined;
75
75
  }, [focusedEvent]);
76
-
77
- // Add parent layer group for all factories
78
- var _useState3 = (0, _react.useState)(L.layerGroup()),
76
+ var _useState3 = (0, _react.useState)(window.customLeaflet.markerClusterGroup(_MapUtils.clusterGroupOptions)),
79
77
  _useState4 = (0, _slicedToArray2.default)(_useState3, 1),
80
- factoriesParentGroup = _useState4[0];
81
- var _useState5 = (0, _react.useState)(L.layerGroup()),
78
+ hiddenFactoriesClusterGroup = _useState4[0];
79
+ var _useState5 = (0, _react.useState)(window.customLeaflet.markerClusterGroup(_MapUtils.clusterGroupOptions)),
82
80
  _useState6 = (0, _slicedToArray2.default)(_useState5, 1),
83
- unmonitoredFactoriesGroup = _useState6[0];
84
- var _useState7 = (0, _react.useState)(L.layerGroup()),
81
+ unmonitoredFactoriesClusterGroup = _useState6[0];
82
+ var _useState7 = (0, _react.useState)(window.customLeaflet.markerClusterGroup(_MapUtils.clusterGroupOptions)),
85
83
  _useState8 = (0, _slicedToArray2.default)(_useState7, 1),
86
- monitoredFactoriesGroup = _useState8[0];
84
+ monitoredFactoriesClusterGroup = _useState8[0];
87
85
  var _useState9 = (0, _react.useState)(L.layerGroup()),
88
86
  _useState10 = (0, _slicedToArray2.default)(_useState9, 1),
89
87
  unmonitoredEdgesGroup = _useState10[0];
90
88
  var _useState11 = (0, _react.useState)(L.layerGroup()),
91
89
  _useState12 = (0, _slicedToArray2.default)(_useState11, 1),
92
- monitoredEdgesGroup = _useState12[0];
90
+ hiddenUnmonitoredEdgesGroup = _useState12[0];
93
91
  var _useState13 = (0, _react.useState)(L.layerGroup()),
94
92
  _useState14 = (0, _slicedToArray2.default)(_useState13, 1),
95
- wwtpsLayerGroup = _useState14[0];
93
+ monitoredEdgesGroup = _useState14[0];
96
94
  var _useState15 = (0, _react.useState)(L.layerGroup()),
97
95
  _useState16 = (0, _slicedToArray2.default)(_useState15, 1),
98
- collectorsLayerGroup = _useState16[0];
99
- var _useState17 = (0, _react.useState)(new L.FeatureGroup()),
96
+ wwtpsLayerGroup = _useState16[0];
97
+ var _useState17 = (0, _react.useState)(L.layerGroup()),
100
98
  _useState18 = (0, _slicedToArray2.default)(_useState17, 1),
101
- areasLayerGroup = _useState18[0];
102
- var _useState19 = (0, _react.useState)(true),
103
- _useState20 = (0, _slicedToArray2.default)(_useState19, 2),
104
- edgesCheckbox = _useState20[0],
105
- setEdgesCheckbox = _useState20[1];
99
+ collectorsLayerGroup = _useState18[0];
100
+ var _useState19 = (0, _react.useState)(new L.FeatureGroup()),
101
+ _useState20 = (0, _slicedToArray2.default)(_useState19, 1),
102
+ areasLayerGroup = _useState20[0];
103
+ var _useState21 = (0, _react.useState)(true),
104
+ _useState22 = (0, _slicedToArray2.default)(_useState21, 2),
105
+ edgesCheckbox = _useState22[0],
106
+ setEdgesCheckbox = _useState22[1];
106
107
  var renderPointMarkers = function renderPointMarkers(filteredPoints, mapRef, props) {
107
108
  return mapRef.current !== null && points && /*#__PURE__*/_react.default.createElement(_PointMarkers.PointMarkers, Object.assign({
108
109
  map: mapRef.current,
109
110
  points: filteredPoints
110
111
  }, props));
111
112
  };
112
- var memoizedMonitoredPoints = function memoizedMonitoredPoints() {
113
+ var memoizedMonitoredPoints = (0, _react.useMemo)(function () {
113
114
  var monitoredPoints = (0, _MapUtils.filterPoints)(points, true);
114
115
  return renderPointMarkers(monitoredPoints, mapRef, {
115
- includeUnmonitoredPoints: true,
116
+ includeUnmonitoredPoints: includeUnmonitoredPoints,
116
117
  rerender: _MapUtils.zoomLevels[mapZoomLevel],
117
- factoriesGroup: monitoredFactoriesGroup,
118
+ factoriesGroup: monitoredFactoriesClusterGroup,
118
119
  wwtpsGroup: wwtpsLayerGroup,
119
120
  collectorsGroup: collectorsLayerGroup,
120
- forEventsView: forEventsView
121
+ forEventsView: false
121
122
  });
122
- };
123
- var memoizedUnmonitoredPoints = function memoizedUnmonitoredPoints() {
123
+ }, [mapRef.current, points, focusedEventPresent, mapZoomLevel]);
124
+ var memoizedUnmonitoredPoints = (0, _react.useMemo)(function () {
124
125
  var unmonitoredPoints = (0, _MapUtils.filterPoints)(points, false);
125
126
  return renderPointMarkers(unmonitoredPoints, mapRef, {
126
- includeUnmonitoredPoints: true,
127
+ includeUnmonitoredPoints: includeUnmonitoredPoints,
127
128
  rerender: _MapUtils.zoomLevels[mapZoomLevel],
128
- factoriesGroup: unmonitoredFactoriesGroup,
129
+ factoriesGroup: unmonitoredFactoriesClusterGroup,
129
130
  wwtpsGroup: wwtpsLayerGroup,
130
131
  collectorsGroup: collectorsLayerGroup,
131
- forEventsView: forEventsView
132
+ forEventsView: false
132
133
  });
133
- };
134
+ }, [mapRef.current, points, focusedEventPresent, mapZoomLevel]);
134
135
  var renderEdges = function renderEdges(filteredEdges, mapRef, edgesCheckbox, props) {
135
136
  return mapRef.current !== null && edgesCheckbox && /*#__PURE__*/_react.default.createElement(_Edges.default, Object.assign({
136
137
  edges: filteredEdges,
@@ -157,29 +158,29 @@ var Map = function Map(_ref) {
157
158
  hideArrows: true,
158
159
  allowUnmonitoredDescendants: includeUnmonitoredDescendantsForEdges,
159
160
  group: unmonitoredEdgesGroup,
160
- shouldntDraw: unmonitoredEdgesGroup.getLayers().length !== 0
161
+ shouldntDraw: hiddenUnmonitoredEdgesGroup.getLayers().length !== 0
161
162
  });
162
163
  }, [mapRef.current, points, focusedEventPresent, mapZoomLevel]);
163
164
  var handleEdgesCheckboxChange = function handleEdgesCheckboxChange(isChecked) {
164
165
  setEdgesCheckbox(isChecked);
165
166
  };
166
-
167
- // This variable stores the zoom levels the edges are displayed
168
- // It is used in two places in the code, so it is better to store it in one place
169
- var edgesZoomLevels = ['Small', 'Medium', 'MLarge', 'Large'];
170
167
  var handlePointsCheckboxChange = function handlePointsCheckboxChange(isChecked) {
171
168
  if (mapRef.current !== null) {
172
169
  var zoom = _MapUtils.zoomLevels[mapRef.current.getZoom()];
173
170
  if (isChecked) {
174
- // Hide unmonitored points when "show only monitored" is checked
175
- factoriesParentGroup.removeLayer(unmonitoredFactoriesGroup);
171
+ hiddenFactoriesClusterGroup.addLayer(unmonitoredFactoriesClusterGroup);
172
+ unmonitoredFactoriesClusterGroup.clearLayers();
173
+ hiddenUnmonitoredEdgesGroup.removeFrom(mapRef.current);
174
+ hiddenUnmonitoredEdgesGroup.clearLayers();
175
+ hiddenUnmonitoredEdgesGroup.addLayer(unmonitoredEdgesGroup);
176
176
  unmonitoredEdgesGroup.removeFrom(mapRef.current);
177
177
  } else {
178
- // Show all points when "show only monitored" is unchecked
179
- factoriesParentGroup.addLayer(unmonitoredFactoriesGroup);
180
-
181
- // Show unmonitored edges if at appropriate zoom level
182
- if (edgesZoomLevels.includes(zoom)) {
178
+ unmonitoredFactoriesClusterGroup.addLayer(hiddenFactoriesClusterGroup);
179
+ hiddenFactoriesClusterGroup.clearLayers();
180
+ if (zoom === 'Medium' || zoom === 'Small') {
181
+ unmonitoredEdgesGroup.addLayer(hiddenUnmonitoredEdgesGroup);
182
+ hiddenUnmonitoredEdgesGroup.removeFrom(mapRef.current);
183
+ hiddenUnmonitoredEdgesGroup.clearLayers();
183
184
  unmonitoredEdgesGroup.addTo(mapRef.current);
184
185
  }
185
186
  }
@@ -190,25 +191,33 @@ var Map = function Map(_ref) {
190
191
  (0, _MapUtils.setupCheckboxListener)('#monitored-points-checkbox', handlePointsCheckboxChange);
191
192
  };
192
193
  var zoomRulesForEventsView = function zoomRulesForEventsView() {
193
- var payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedEdges, memoizedUnmonitoredEdges, memoizedUnmonitoredPoints(), memoizedMonitoredPoints());
194
+ var payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedEdges, memoizedUnmonitoredEdges, memoizedUnmonitoredPoints, memoizedMonitoredPoints);
194
195
  return payload;
195
196
  };
196
197
  var zoomRulesForDashaboardMaps = function zoomRulesForDashaboardMaps() {
197
- var payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedUnmonitoredPoints(), memoizedMonitoredPoints());
198
- if (edgesZoomLevels.includes(_MapUtils.zoomLevels[mapZoomLevel])) {
199
- payload = zoomRulesForEventsView();
198
+ var payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedUnmonitoredPoints, " ", memoizedMonitoredPoints);
199
+ switch (_MapUtils.zoomLevels[mapZoomLevel]) {
200
+ case 'Small':
201
+ case 'Medium':
202
+ case 'MLarge':
203
+ payload = zoomRulesForEventsView();
204
+ break;
205
+ // case 'MLarge':
206
+ // case 'Large':
207
+ // case 'XLarge':
208
+ // default:
209
+ // payload = <>{memoizedPoints}</>;
210
+ // break;
200
211
  }
212
+
201
213
  return payload;
202
214
  };
203
- var memoizedZoomControl = function memoizedZoomControl() {
215
+ var memoizedZoomControl = (0, _react.useMemo)(function () {
204
216
  var payload = forEventsView ? zoomRulesForEventsView() : zoomRulesForDashaboardMaps();
205
- var checkbox = document.querySelector('#monitored-points-checkbox');
206
- if (checkbox) {
207
- handlePointsCheckboxChange(checkbox.checked);
208
- }
217
+ document.querySelector('#monitored-points-checkbox') != null && handlePointsCheckboxChange(document.querySelector('#monitored-points-checkbox').checked);
209
218
  return payload;
210
- };
211
- var memoizedEvent = function memoizedEvent() {
219
+ }, [mapZoomLevel, eventsData.isFetching, focusedEvent, hoveredEvent, points, mapRef.current, edgesCheckbox, unmonitoredEdgesGroup]);
220
+ var memoizedEvent = (0, _react.useMemo)(function () {
212
221
  if (focusedEventPresent) {
213
222
  focusedEvent.focused = focusedEventPresent;
214
223
  focusedEvent.hovered = !focusedEventPresent;
@@ -225,7 +234,7 @@ var Map = function Map(_ref) {
225
234
  points: points,
226
235
  includeNetwork: !hoveredEventPresent
227
236
  });
228
- };
237
+ }, [focusedEvent, hoveredEvent, global_data.eventFilterParam]);
229
238
  (0, _react.useEffect)(function () {
230
239
  return function cleanup() {
231
240
  var _mapRef$current;
@@ -234,41 +243,29 @@ var Map = function Map(_ref) {
234
243
  };
235
244
  }, [focusedEvent, hoveredEvent, global_data.eventFilterParam]);
236
245
  (0, _react.useEffect)(function () {
246
+ (0, _MapUtils.initializeMap)(mapZoomLevel, mapBoxStyle, _theme.leafletMap.satellite, mapRef, dispatch, _MapUtils.isValidArea, areaToCenterBy, setMapZoomLevel, forWWTPDashboard, true, global_data.waterAuthorityId);
237
247
  return function cleanup() {
238
- if (forEventsView) {
239
- var _mapRef$current2, _mapRef$current3, _mapRef$current4, _mapRef$current5, _mapRef$current6, _mapRef$current7, _mapRef$current8;
240
- dispatch((0, _actions.clearAreas)());
241
- dispatch((0, _actions2.clearPoints)());
242
- wwtpsLayerGroup.clearLayers();
243
- collectorsLayerGroup.clearLayers();
244
- areasLayerGroup.clearLayers();
245
- factoriesParentGroup.clearLayers();
246
- monitoredEdgesGroup.clearLayers();
247
- unmonitoredEdgesGroup.clearLayers();
248
- (_mapRef$current2 = mapRef.current) === null || _mapRef$current2 === void 0 ? void 0 : _mapRef$current2.removeLayer(unmonitoredEdgesGroup);
249
- (_mapRef$current3 = mapRef.current) === null || _mapRef$current3 === void 0 ? void 0 : _mapRef$current3.removeLayer(monitoredEdgesGroup);
250
- (_mapRef$current4 = mapRef.current) === null || _mapRef$current4 === void 0 ? void 0 : _mapRef$current4.removeLayer(wwtpsLayerGroup);
251
- (_mapRef$current5 = mapRef.current) === null || _mapRef$current5 === void 0 ? void 0 : _mapRef$current5.removeLayer(collectorsLayerGroup);
252
- (_mapRef$current6 = mapRef.current) === null || _mapRef$current6 === void 0 ? void 0 : _mapRef$current6.removeLayer(areasLayerGroup);
253
- (_mapRef$current7 = mapRef.current) === null || _mapRef$current7 === void 0 ? void 0 : _mapRef$current7.removeLayer(factoriesParentGroup);
254
- (_mapRef$current8 = mapRef.current) === null || _mapRef$current8 === void 0 ? void 0 : _mapRef$current8.eachLayer(function (layer) {
255
- if (layer.kando_object) {
256
- mapRef.current.removeLayer(layer);
257
- }
258
- });
259
- }
248
+ var _mapRef$current2, _mapRef$current3, _mapRef$current4, _mapRef$current5, _mapRef$current6, _mapRef$current7;
249
+ hiddenFactoriesClusterGroup.clearLayers();
250
+ unmonitoredFactoriesClusterGroup.clearLayers();
251
+ monitoredFactoriesClusterGroup.clearLayers();
252
+ wwtpsLayerGroup.clearLayers();
253
+ collectorsLayerGroup.clearLayers();
254
+ areasLayerGroup.clearLayers();
255
+ (_mapRef$current2 = mapRef.current) === null || _mapRef$current2 === void 0 ? void 0 : _mapRef$current2.removeLayer(hiddenFactoriesClusterGroup);
256
+ (_mapRef$current3 = mapRef.current) === null || _mapRef$current3 === void 0 ? void 0 : _mapRef$current3.removeLayer(unmonitoredFactoriesClusterGroup);
257
+ (_mapRef$current4 = mapRef.current) === null || _mapRef$current4 === void 0 ? void 0 : _mapRef$current4.removeLayer(monitoredFactoriesClusterGroup);
258
+ (_mapRef$current5 = mapRef.current) === null || _mapRef$current5 === void 0 ? void 0 : _mapRef$current5.removeLayer(wwtpsLayerGroup);
259
+ (_mapRef$current6 = mapRef.current) === null || _mapRef$current6 === void 0 ? void 0 : _mapRef$current6.removeLayer(collectorsLayerGroup);
260
+ (_mapRef$current7 = mapRef.current) === null || _mapRef$current7 === void 0 ? void 0 : _mapRef$current7.removeLayer(areasLayerGroup);
261
+ // @ts-ignore
262
+ mapRef.current.remove();
263
+ dispatch((0, _actions.storeMap)(undefined));
260
264
  };
261
265
  }, [global_data.waterAuthorityId]);
262
266
  (0, _react.useEffect)(function () {
263
267
  if (!mapRef.current) {
264
- (0, _MapUtils.initializeMap)(mapZoomLevel, mapBoxStyle, _theme.leafletMap.satellite, mapRef, dispatch, _MapUtils.isValidArea, areaToCenterBy, setMapZoomLevel, forWWTPDashboard, true, global_data.waterAuthorityId);
265
-
266
- // Initialize parent factory group
267
- if (mapRef.current) {
268
- factoriesParentGroup.addTo(mapRef.current);
269
- factoriesParentGroup.addLayer(monitoredFactoriesGroup);
270
- factoriesParentGroup.addLayer(unmonitoredFactoriesGroup);
271
- }
268
+ (0, _MapUtils.initializeMap)(mapZoomLevel, mapBoxStyle, _theme.leafletMap.satellite, mapRef, dispatch, _MapUtils.isValidArea, areaToCenterBy, setMapZoomLevel, true, global_data.waterAuthorityId);
272
269
  } else {
273
270
  setMapZoomLevel(mapRef.current.getZoom());
274
271
  if (!areaToCenterBy) {
@@ -276,16 +273,14 @@ var Map = function Map(_ref) {
276
273
  return area.shape_data;
277
274
  }).flat();
278
275
  }
279
- if (!forEventsView || !focusedEvent) {
280
- (0, _MapUtils.areaFocusLogic)(mapRef, _MapUtils.isValidArea, areaToCenterBy);
281
- }
276
+ (0, _MapUtils.areaFocusLogic)(mapRef, _MapUtils.isValidArea, areaToCenterBy);
282
277
  trackLayerbox();
283
278
  }
284
- }, [mapRef.current, points]);
279
+ }, [mapRef.current, areaToCenterBy]);
285
280
  (0, _react.useEffect)(function () {
286
- var _mapRef$current9;
281
+ var _mapRef$current8;
287
282
  var clicked = false;
288
- (_mapRef$current9 = mapRef.current) === null || _mapRef$current9 === void 0 ? void 0 : _mapRef$current9.eachLayer(function (layer) {
283
+ (_mapRef$current8 = mapRef.current) === null || _mapRef$current8 === void 0 ? void 0 : _mapRef$current8.eachLayer(function (layer) {
289
284
  if (clicked) return;
290
285
  if ((layer === null || layer === void 0 ? void 0 : layer.kando_object_id) === selectedItem && layer.isPopupOpen() === false) {
291
286
  if (layer instanceof L.Marker) {
@@ -297,20 +292,6 @@ var Map = function Map(_ref) {
297
292
  }
298
293
  });
299
294
  }, [selectedItem]);
300
- var renderAreas = function renderAreas() {
301
- if (!(0, _MapUtils.shouldLoadMapObjects)(global_data, mapRef, edges, points)) {
302
- return null;
303
- }
304
- return /*#__PURE__*/_react.default.createElement(_AreaPolygons.AreaPolygons, {
305
- areas: areas,
306
- map: mapRef.current,
307
- L: L,
308
- areaToCenterBy: areaToCenterBy,
309
- mapZoom: mapZoomLevel,
310
- global_data: global_data,
311
- featureGroup: areasLayerGroup
312
- });
313
- };
314
295
  return /*#__PURE__*/_react.default.createElement("div", {
315
296
  className: "kd-map-container",
316
297
  style: style
@@ -318,7 +299,16 @@ var Map = function Map(_ref) {
318
299
  className: " map-container ".concat(global_data.sidenavExpanded ? '' : 'map-container--sidenav-collapsed')
319
300
  }, /*#__PURE__*/_react.default.createElement(_ErrorBoundary.default, null, /*#__PURE__*/_react.default.createElement("div", {
320
301
  id: "map"
321
- }, renderAreas(), (0, _MapUtils.shoudLoadDependentMapObjects)(edges, areas, global_data, mapRef, points) && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedEvent(), memoizedZoomControl(), children)))));
302
+ }), (0, _MapUtils.shouldLoadMapObjects)(global_data, mapRef, edges, points) && /*#__PURE__*/_react.default.createElement(_AreaPolygons.AreaPolygons, {
303
+ areas: areas,
304
+ map: mapRef.current,
305
+ L: L,
306
+ areaToCenterBy: areaToCenterBy,
307
+ mapZoom: mapZoomLevel,
308
+ rerender: _MapUtils.zoomLevels[mapZoomLevel],
309
+ global_data: global_data,
310
+ featureGroup: areasLayerGroup
311
+ }), (0, _MapUtils.shoudLoadDependentMapObjects)(edges, areas, global_data, mapRef, points) && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedEvent, memoizedZoomControl, children))));
322
312
  };
323
313
  exports.Map = Map;
324
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX3JlYWN0UmVkdXgiLCJfRXJyb3JCb3VuZGFyeSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfQXJlYVBvbHlnb25zIiwiX0VkZ2VzIiwiX1BvaW50TWFya2VycyIsIl9FdmVudCIsIl9NYXBVdGlscyIsIl90aGVtZSIsIl9MaXN0Q29udGV4dCIsIl9hY3Rpb25zIiwiX2FjdGlvbnMyIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJNYXAiLCJfcmVmIiwiYXJlYXMiLCJlZGdlcyIsInBvaW50cyIsImdsb2JhbF9kYXRhIiwiYXJlYVRvQ2VudGVyQnkiLCJmb2N1c2VkRXZlbnQiLCJob3ZlcmVkRXZlbnQiLCJfcmVmJGhpZGVFZGdlcyIsImhpZGVFZGdlcyIsIl9yZWYkbWFwQm94U3R5bGUiLCJtYXBCb3hTdHlsZSIsImxlYWZsZXRNYXAiLCJtYXBEZWZhdWx0IiwiY2hpbGRyZW4iLCJfcmVmJGluY2x1ZGVVbm1vbml0b3IiLCJpbmNsdWRlVW5tb25pdG9yZWRQb2ludHMiLCJfcmVmJGluY2x1ZGVVbm1vbml0b3IyIiwiaW5jbHVkZVVubW9uaXRvcmVkRGVzY2VuZGFudHNGb3JFZGdlcyIsIl9yZWYkZm9yRXZlbnRzVmlldyIsImZvckV2ZW50c1ZpZXciLCJfcmVmJHN0eWxlIiwic3R5bGUiLCJfcmVmJGZvcldXVFBEYXNoYm9hcmQiLCJmb3JXV1RQRGFzaGJvYXJkIiwibWFwIiwibWFwUmVmIiwidXNlUmVmIiwiZGlzcGF0Y2giLCJ1c2VEaXNwYXRjaCIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsIm1hcFpvb21MZXZlbCIsInNldE1hcFpvb21MZXZlbCIsIl91c2VTZWxlY3RlZEl0ZW0iLCJ1c2VTZWxlY3RlZEl0ZW0iLCJzZWxlY3RlZEl0ZW0iLCJob3ZlcmVkRXZlbnRQcmVzZW50IiwidXNlTWVtbyIsInVuZGVmaW5lZCIsImZvY3VzZWRFdmVudFByZXNlbnQiLCJfdXNlU3RhdGUzIiwibGF5ZXJHcm91cCIsIl91c2VTdGF0ZTQiLCJmYWN0b3JpZXNQYXJlbnRHcm91cCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwidW5tb25pdG9yZWRGYWN0b3JpZXNHcm91cCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwibW9uaXRvcmVkRmFjdG9yaWVzR3JvdXAiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMTAiLCJ1bm1vbml0b3JlZEVkZ2VzR3JvdXAiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwibW9uaXRvcmVkRWRnZXNHcm91cCIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJ3d3Rwc0xheWVyR3JvdXAiLCJfdXNlU3RhdGUxNSIsIl91c2VTdGF0ZTE2IiwiY29sbGVjdG9yc0xheWVyR3JvdXAiLCJfdXNlU3RhdGUxNyIsIkZlYXR1cmVHcm91cCIsIl91c2VTdGF0ZTE4IiwiYXJlYXNMYXllckdyb3VwIiwiX3VzZVN0YXRlMTkiLCJfdXNlU3RhdGUyMCIsImVkZ2VzQ2hlY2tib3giLCJzZXRFZGdlc0NoZWNrYm94IiwicmVuZGVyUG9pbnRNYXJrZXJzIiwiZmlsdGVyZWRQb2ludHMiLCJwcm9wcyIsImN1cnJlbnQiLCJjcmVhdGVFbGVtZW50IiwiUG9pbnRNYXJrZXJzIiwiYXNzaWduIiwibWVtb2l6ZWRNb25pdG9yZWRQb2ludHMiLCJtb25pdG9yZWRQb2ludHMiLCJmaWx0ZXJQb2ludHMiLCJyZXJlbmRlciIsInpvb21MZXZlbHMiLCJmYWN0b3JpZXNHcm91cCIsInd3dHBzR3JvdXAiLCJjb2xsZWN0b3JzR3JvdXAiLCJtZW1vaXplZFVubW9uaXRvcmVkUG9pbnRzIiwidW5tb25pdG9yZWRQb2ludHMiLCJyZW5kZXJFZGdlcyIsImZpbHRlcmVkRWRnZXMiLCJtZW1vaXplZEVkZ2VzIiwibW9uaXRvcmVkRWRnZXMiLCJmaWx0ZXJFZGdlcyIsImhpZGVBcnJvd3MiLCJhbGxvd1VubW9uaXRvcmVkRGVzY2VuZGFudHMiLCJncm91cCIsIm1lbW9pemVkVW5tb25pdG9yZWRFZGdlcyIsInVubW9uaXRvcmVkRWRnZXMiLCJzaG91bGRudERyYXciLCJnZXRMYXllcnMiLCJsZW5ndGgiLCJoYW5kbGVFZGdlc0NoZWNrYm94Q2hhbmdlIiwiaXNDaGVja2VkIiwiZWRnZXNab29tTGV2ZWxzIiwiaGFuZGxlUG9pbnRzQ2hlY2tib3hDaGFuZ2UiLCJ6b29tIiwiZ2V0Wm9vbSIsInJlbW92ZUxheWVyIiwicmVtb3ZlRnJvbSIsImFkZExheWVyIiwiaW5jbHVkZXMiLCJhZGRUbyIsInRyYWNrTGF5ZXJib3giLCJzZXR1cENoZWNrYm94TGlzdGVuZXIiLCJ6b29tUnVsZXNGb3JFdmVudHNWaWV3IiwicGF5bG9hZCIsIkZyYWdtZW50Iiwiem9vbVJ1bGVzRm9yRGFzaGFib2FyZE1hcHMiLCJtZW1vaXplZFpvb21Db250cm9sIiwiY2hlY2tib3giLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJjaGVja2VkIiwibWVtb2l6ZWRFdmVudCIsImZvY3VzZWQiLCJob3ZlcmVkIiwiRXZlbnQiLCJldmVudCIsImluY2x1ZGVOZXR3b3JrIiwidXNlRWZmZWN0IiwiY2xlYW51cCIsIl9tYXBSZWYkY3VycmVudCIsImNsZWFyTGF5ZXJzIiwiZXZlbnRGaWx0ZXJQYXJhbSIsIl9tYXBSZWYkY3VycmVudDIiLCJfbWFwUmVmJGN1cnJlbnQzIiwiX21hcFJlZiRjdXJyZW50NCIsIl9tYXBSZWYkY3VycmVudDUiLCJfbWFwUmVmJGN1cnJlbnQ2IiwiX21hcFJlZiRjdXJyZW50NyIsIl9tYXBSZWYkY3VycmVudDgiLCJjbGVhckFyZWFzIiwiY2xlYXJQb2ludHMiLCJlYWNoTGF5ZXIiLCJsYXllciIsImthbmRvX29iamVjdCIsIndhdGVyQXV0aG9yaXR5SWQiLCJpbml0aWFsaXplTWFwIiwic2F0ZWxsaXRlIiwiaXNWYWxpZEFyZWEiLCJhcmVhIiwic2hhcGVfZGF0YSIsImZsYXQiLCJhcmVhRm9jdXNMb2dpYyIsIl9tYXBSZWYkY3VycmVudDkiLCJjbGlja2VkIiwia2FuZG9fb2JqZWN0X2lkIiwiaXNQb3B1cE9wZW4iLCJNYXJrZXIiLCJmaXJlIiwiUG9seWdvbiIsInJlbmRlckFyZWFzIiwic2hvdWxkTG9hZE1hcE9iamVjdHMiLCJBcmVhUG9seWdvbnMiLCJtYXBab29tIiwiZmVhdHVyZUdyb3VwIiwiY2xhc3NOYW1lIiwiY29uY2F0Iiwic2lkZW5hdkV4cGFuZGVkIiwiaWQiLCJzaG91ZExvYWREZXBlbmRlbnRNYXBPYmplY3RzIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9NYXAudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1pZ25vcmVcbmltcG9ydCAqIGFzIEwgZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgJ3NyYy91dGlsaXRpZXMvcG9seWxpbmVkZWNvcmF0b3InO1xuaW1wb3J0ICdsZWFmbGV0Lm1hcmtlcmNsdXN0ZXInO1xuaW1wb3J0ICdsZWFmbGV0LnBhdHRlcm4nO1xuaW1wb3J0ICdsZWFmbGV0LmhlYXQnO1xuaW1wb3J0IFJlYWN0LCB7XG4gIENTU1Byb3BlcnRpZXMsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgeyBJQXJlYSB9IGZyb20gJ3NyYy9zdG9yZS9hcmVhcy9tb2RlbHMvSUFyZWEnO1xuaW1wb3J0IHsgSUVkZ2UgfSBmcm9tICdzcmMvc3RvcmUvZWRnZXMvbW9kZWxzL0lFZGdlJztcbmltcG9ydCB7IElFdmVudCB9IGZyb20gJ3NyYy9zdG9yZS9ldmVudHMvbW9kZWxzL0lFdmVudCc7XG4vLyBpbXBvcnQgeyBzdG9yZU1hcCB9IGZyb20gJ3NyYy9zdG9yZS9nbG9iYWwvYWN0aW9ucyc7XG5pbXBvcnQgeyBJR2xvYmFsU3RhdGUgfSBmcm9tICdzcmMvc3RvcmUvZ2xvYmFsL21vZGVscy9JR2xvYmFsU3RhdGUnO1xuaW1wb3J0IHsgSVBvaW50IH0gZnJvbSAnc3JjL3N0b3JlL3BvaW50cy9tb2RlbHMvSVBvaW50JztcbmltcG9ydCBFcnJvckJvdW5kYXJ5IGZyb20gJ3NyYy91dGlsaXRpZXMvRXJyb3JCb3VuZGFyeSc7XG5pbXBvcnQgeyBBcmVhUG9seWdvbnMgfSBmcm9tICcuL2FyZWFzL0FyZWFQb2x5Z29ucyc7XG5pbXBvcnQgRWRnZXMgZnJvbSAnLi9lZGdlcy9FZGdlcyc7XG5pbXBvcnQgJy4vTWFwLnNjc3MnO1xuaW1wb3J0ICcuL3BvaW50cy9Qb2ludEljb24uc2Nzcyc7XG5pbXBvcnQgeyBQb2ludE1hcmtlcnMgfSBmcm9tICcuL3BvaW50cy9Qb2ludE1hcmtlcnMnO1xuLy8gaW1wb3J0IHsgYXBwUmVkdWNlciB9IGZyb20gJy4uLy4uL3N0b3JlL3Jvb3RSZWR1Y2VyJztcbmltcG9ydCB7IEV2ZW50IH0gZnJvbSAnLi9ldmVudHMvRXZlbnQnO1xuaW1wb3J0IHtcbiAgYXJlYUZvY3VzTG9naWMsXG4gIGZpbHRlckVkZ2VzLFxuICBmaWx0ZXJQb2ludHMsXG4gIGluaXRpYWxpemVNYXAsXG4gIGlzVmFsaWRBcmVhLFxuICBzZXR1cENoZWNrYm94TGlzdGVuZXIsXG4gIHNob3VkTG9hZERlcGVuZGVudE1hcE9iamVjdHMsXG4gIHNob3VsZExvYWRNYXBPYmplY3RzLFxuICB6b29tTGV2ZWxzLFxufSBmcm9tICcuL01hcFV0aWxzJztcbmltcG9ydCB7IGxlYWZsZXRNYXAgfSBmcm9tICcuLi8uLi9zdHlsZXMvdGhlbWUvdGhlbWUnO1xuaW1wb3J0IHsgdXNlU2VsZWN0ZWRJdGVtIH0gZnJvbSAnc3JjL3BhZ2VzL0Rhc2hib2FyZE1hcC9MaXN0Q29udGV4dCc7XG5pbXBvcnQgeyBjbGVhckFyZWFzIH0gZnJvbSAnc3JjL3N0b3JlL2FyZWFzL2FjdGlvbnMnO1xuaW1wb3J0IHsgY2xlYXJQb2ludHMgfSBmcm9tICdzcmMvc3RvcmUvcG9pbnRzL2FjdGlvbnMnO1xucmVxdWlyZSgnbGVhZmxldC5tYXJrZXJjbHVzdGVyJyk7XG5cbmludGVyZmFjZSBNYXBQcm9wcyB7XG4gIGFyZWFzOiBJQXJlYVtdO1xuICBlZGdlcz86IElFZGdlW107XG4gIHBvaW50cz86IElQb2ludFtdO1xuICBnbG9iYWxfZGF0YTogSUdsb2JhbFN0YXRlO1xuICBhcmVhVG9DZW50ZXJCeT86IGFueTtcbiAgZm9jdXNlZEV2ZW50PzogSUV2ZW50IHwgbnVsbDtcbiAgaG92ZXJlZEV2ZW50PzogSUV2ZW50IHwgbnVsbDtcbiAgaGlkZUVkZ2VzPzogYm9vbGVhbjtcbiAgbWFwQm94U3R5bGU/OiBzdHJpbmc7XG4gIGNoaWxkcmVuPzogYW55O1xuICBzdHlsZT86IENTU1Byb3BlcnRpZXM7XG4gIGluY2x1ZGVVbm1vbml0b3JlZFBvaW50cz86IGJvb2xlYW47XG4gIGluY2x1ZGVVbm1vbml0b3JlZERlc2NlbmRhbnRzRm9yRWRnZXM/OiBib29sZWFuO1xuICBmb3JFdmVudHNWaWV3OiBib29sZWFuO1xuICBmb3JXV1RQRGFzaGJvYXJkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IE1hcDogUmVhY3QuRkM8TWFwUHJvcHM+ID0gKHtcbiAgYXJlYXMsXG4gIGVkZ2VzLFxuICBwb2ludHMsXG4gIGdsb2JhbF9kYXRhLFxuICBhcmVhVG9DZW50ZXJCeSxcbiAgZm9jdXNlZEV2ZW50LFxuICBob3ZlcmVkRXZlbnQsXG4gIGhpZGVFZGdlcyA9IGZhbHNlLFxuICBtYXBCb3hTdHlsZSA9IGxlYWZsZXRNYXAubWFwRGVmYXVsdCxcbiAgY2hpbGRyZW4sXG4gIGluY2x1ZGVVbm1vbml0b3JlZFBvaW50cyA9IHRydWUsXG4gIGluY2x1ZGVVbm1vbml0b3JlZERlc2NlbmRhbnRzRm9yRWRnZXMgPSBmYWxzZSxcbiAgZm9yRXZlbnRzVmlldyA9IGZhbHNlLFxuICBzdHlsZSA9IHt9LFxuICBmb3JXV1RQRGFzaGJvYXJkID0gZmFsc2UsXG59KSA9PiB7XG4gIGNvbnN0IHsgbWFwIH0gPSBnbG9iYWxfZGF0YTtcbiAgY29uc3QgbWFwUmVmID0gdXNlUmVmPEwuTWFwIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW21hcFpvb21MZXZlbCwgc2V0TWFwWm9vbUxldmVsXSA9IHVzZVN0YXRlKDIpO1xuICBjb25zdCB7IHNlbGVjdGVkSXRlbSB9ID0gdXNlU2VsZWN0ZWRJdGVtKCk7XG4gIGNvbnN0IGhvdmVyZWRFdmVudFByZXNlbnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gaG92ZXJlZEV2ZW50ICE9PSBudWxsICYmIGhvdmVyZWRFdmVudCAhPT0gdW5kZWZpbmVkO1xuICB9LCBbaG92ZXJlZEV2ZW50XSk7XG5cbiAgY29uc3QgZm9jdXNlZEV2ZW50UHJlc2VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBmb2N1c2VkRXZlbnQgIT09IG51bGwgJiYgZm9jdXNlZEV2ZW50ICE9PSB1bmRlZmluZWQ7XG4gIH0sIFtmb2N1c2VkRXZlbnRdKTtcblxuICAvLyBBZGQgcGFyZW50IGxheWVyIGdyb3VwIGZvciBhbGwgZmFjdG9yaWVzXG4gIGNvbnN0IFtmYWN0b3JpZXNQYXJlbnRHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFt1bm1vbml0b3JlZEZhY3Rvcmllc0dyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW21vbml0b3JlZEZhY3Rvcmllc0dyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW3VubW9uaXRvcmVkRWRnZXNHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFttb25pdG9yZWRFZGdlc0dyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW3d3dHBzTGF5ZXJHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFtjb2xsZWN0b3JzTGF5ZXJHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFthcmVhc0xheWVyR3JvdXBdID0gdXNlU3RhdGUobmV3IEwuRmVhdHVyZUdyb3VwKCkpO1xuICBjb25zdCBbZWRnZXNDaGVja2JveCwgc2V0RWRnZXNDaGVja2JveF0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgY29uc3QgcmVuZGVyUG9pbnRNYXJrZXJzID0gKGZpbHRlcmVkUG9pbnRzLCBtYXBSZWYsIHByb3BzKSA9PlxuICAgIG1hcFJlZi5jdXJyZW50ICE9PSBudWxsICYmXG4gICAgcG9pbnRzICYmIChcbiAgICAgIDxQb2ludE1hcmtlcnMgbWFwPXttYXBSZWYuY3VycmVudH0gcG9pbnRzPXtmaWx0ZXJlZFBvaW50c30gey4uLnByb3BzfSAvPlxuICAgICk7XG5cbiAgY29uc3QgbWVtb2l6ZWRNb25pdG9yZWRQb2ludHMgPSAoKSA9PiB7XG4gICAgY29uc3QgbW9uaXRvcmVkUG9pbnRzID0gZmlsdGVyUG9pbnRzKHBvaW50cywgdHJ1ZSk7XG4gICAgcmV0dXJuIHJlbmRlclBvaW50TWFya2Vycyhtb25pdG9yZWRQb2ludHMsIG1hcFJlZiwge1xuICAgICAgaW5jbHVkZVVubW9uaXRvcmVkUG9pbnRzOiB0cnVlLFxuICAgICAgcmVyZW5kZXI6IHpvb21MZXZlbHNbbWFwWm9vbUxldmVsXSxcbiAgICAgIGZhY3Rvcmllc0dyb3VwOiBtb25pdG9yZWRGYWN0b3JpZXNHcm91cCxcbiAgICAgIHd3dHBzR3JvdXA6IHd3dHBzTGF5ZXJHcm91cCxcbiAgICAgIGNvbGxlY3RvcnNHcm91cDogY29sbGVjdG9yc0xheWVyR3JvdXAsXG4gICAgICBmb3JFdmVudHNWaWV3OiBmb3JFdmVudHNWaWV3LFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG1lbW9pemVkVW5tb25pdG9yZWRQb2ludHMgPSAoKSA9PiB7XG4gICAgY29uc3QgdW5tb25pdG9yZWRQb2ludHMgPSBmaWx0ZXJQb2ludHMocG9pbnRzLCBmYWxzZSk7XG4gICAgcmV0dXJuIHJlbmRlclBvaW50TWFya2Vycyh1bm1vbml0b3JlZFBvaW50cywgbWFwUmVmLCB7XG4gICAgICBpbmNsdWRlVW5tb25pdG9yZWRQb2ludHM6IHRydWUsXG4gICAgICByZXJlbmRlcjogem9vbUxldmVsc1ttYXBab29tTGV2ZWxdLFxuICAgICAgZmFjdG9yaWVzR3JvdXA6IHVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXAsXG4gICAgICB3d3Rwc0dyb3VwOiB3d3Rwc0xheWVyR3JvdXAsXG4gICAgICBjb2xsZWN0b3JzR3JvdXA6IGNvbGxlY3RvcnNMYXllckdyb3VwLFxuICAgICAgZm9yRXZlbnRzVmlldzogZm9yRXZlbnRzVmlldyxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCByZW5kZXJFZGdlcyA9IChmaWx0ZXJlZEVkZ2VzLCBtYXBSZWYsIGVkZ2VzQ2hlY2tib3gsIHByb3BzKSA9PlxuICAgIG1hcFJlZi5jdXJyZW50ICE9PSBudWxsICYmXG4gICAgZWRnZXNDaGVja2JveCAmJiAoXG4gICAgICA8RWRnZXMgZWRnZXM9e2ZpbHRlcmVkRWRnZXN9IG1hcD17bWFwUmVmLmN1cnJlbnR9IHsuLi5wcm9wc30gLz5cbiAgICApO1xuXG4gIGNvbnN0IG1lbW9pemVkRWRnZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBtb25pdG9yZWRFZGdlcyA9IGZpbHRlckVkZ2VzKGVkZ2VzLCBwb2ludHMsIHRydWUpO1xuICAgIHJldHVybiByZW5kZXJFZGdlcyhtb25pdG9yZWRFZGdlcywgbWFwUmVmLCBlZGdlc0NoZWNrYm94LCB7XG4gICAgICBMLFxuICAgICAgcG9pbnRzLFxuICAgICAgaGlkZUVkZ2VzLFxuICAgICAgaGlkZUFycm93czogdHJ1ZSxcbiAgICAgIGFsbG93VW5tb25pdG9yZWREZXNjZW5kYW50czogaW5jbHVkZVVubW9uaXRvcmVkRGVzY2VuZGFudHNGb3JFZGdlcyxcbiAgICAgIGdyb3VwOiBtb25pdG9yZWRFZGdlc0dyb3VwLFxuICAgIH0pO1xuICB9LCBbbWFwUmVmLmN1cnJlbnQsIHBvaW50cywgZm9jdXNlZEV2ZW50UHJlc2VudCwgbWFwWm9vbUxldmVsXSk7XG5cbiAgY29uc3QgbWVtb2l6ZWRVbm1vbml0b3JlZEVkZ2VzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgdW5tb25pdG9yZWRFZGdlcyA9IGZpbHRlckVkZ2VzKGVkZ2VzLCBwb2ludHMsIGZhbHNlKTtcbiAgICByZXR1cm4gcmVuZGVyRWRnZXModW5tb25pdG9yZWRFZGdlcywgbWFwUmVmLCBlZGdlc0NoZWNrYm94LCB7XG4gICAgICBMLFxuICAgICAgcG9pbnRzLFxuICAgICAgaGlkZUVkZ2VzLFxuICAgICAgaGlkZUFycm93czogdHJ1ZSxcbiAgICAgIGFsbG93VW5tb25pdG9yZWREZXNjZW5kYW50czogaW5jbHVkZVVubW9uaXRvcmVkRGVzY2VuZGFudHNGb3JFZGdlcyxcbiAgICAgIGdyb3VwOiB1bm1vbml0b3JlZEVkZ2VzR3JvdXAsXG4gICAgICBzaG91bGRudERyYXc6IHVubW9uaXRvcmVkRWRnZXNHcm91cC5nZXRMYXllcnMoKS5sZW5ndGggIT09IDAsXG4gICAgfSk7XG4gIH0sIFttYXBSZWYuY3VycmVudCwgcG9pbnRzLCBmb2N1c2VkRXZlbnRQcmVzZW50LCBtYXBab29tTGV2ZWxdKTtcblxuICBjb25zdCBoYW5kbGVFZGdlc0NoZWNrYm94Q2hhbmdlID0gKGlzQ2hlY2tlZCkgPT4ge1xuICAgIHNldEVkZ2VzQ2hlY2tib3goaXNDaGVja2VkKTtcbiAgfTtcblxuICAvLyBUaGlzIHZhcmlhYmxlIHN0b3JlcyB0aGUgem9vbSBsZXZlbHMgdGhlIGVkZ2VzIGFyZSBkaXNwbGF5ZWRcbiAgLy8gSXQgaXMgdXNlZCBpbiB0d28gcGxhY2VzIGluIHRoZSBjb2RlLCBzbyBpdCBpcyBiZXR0ZXIgdG8gc3RvcmUgaXQgaW4gb25lIHBsYWNlXG4gIGNvbnN0IGVkZ2VzWm9vbUxldmVscyA9IFsnU21hbGwnLCAnTWVkaXVtJywgJ01MYXJnZScsICdMYXJnZSddO1xuXG4gIGNvbnN0IGhhbmRsZVBvaW50c0NoZWNrYm94Q2hhbmdlID0gKGlzQ2hlY2tlZCkgPT4ge1xuICAgIGlmIChtYXBSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgbGV0IHpvb20gPSB6b29tTGV2ZWxzW21hcFJlZi5jdXJyZW50LmdldFpvb20oKV07XG5cbiAgICAgIGlmIChpc0NoZWNrZWQpIHtcbiAgICAgICAgLy8gSGlkZSB1bm1vbml0b3JlZCBwb2ludHMgd2hlbiBcInNob3cgb25seSBtb25pdG9yZWRcIiBpcyBjaGVja2VkXG4gICAgICAgIGZhY3Rvcmllc1BhcmVudEdyb3VwLnJlbW92ZUxheWVyKHVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXApO1xuICAgICAgICB1bm1vbml0b3JlZEVkZ2VzR3JvdXAucmVtb3ZlRnJvbShtYXBSZWYuY3VycmVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBTaG93IGFsbCBwb2ludHMgd2hlbiBcInNob3cgb25seSBtb25pdG9yZWRcIiBpcyB1bmNoZWNrZWRcbiAgICAgICAgZmFjdG9yaWVzUGFyZW50R3JvdXAuYWRkTGF5ZXIodW5tb25pdG9yZWRGYWN0b3JpZXNHcm91cCk7XG5cbiAgICAgICAgLy8gU2hvdyB1bm1vbml0b3JlZCBlZGdlcyBpZiBhdCBhcHByb3ByaWF0ZSB6b29tIGxldmVsXG4gICAgICAgIGlmIChlZGdlc1pvb21MZXZlbHMuaW5jbHVkZXMoem9vbSkpIHtcbiAgICAgICAgICB1bm1vbml0b3JlZEVkZ2VzR3JvdXAuYWRkVG8obWFwUmVmLmN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHRyYWNrTGF5ZXJib3ggPSAoKSA9PiB7XG4gICAgc2V0dXBDaGVja2JveExpc3RlbmVyKCcjZWRnZXMtY2hlY2tib3gnLCBoYW5kbGVFZGdlc0NoZWNrYm94Q2hhbmdlKTtcbiAgICBzZXR1cENoZWNrYm94TGlzdGVuZXIoXG4gICAgICAnI21vbml0b3JlZC1wb2ludHMtY2hlY2tib3gnLFxuICAgICAgaGFuZGxlUG9pbnRzQ2hlY2tib3hDaGFuZ2UsXG4gICAgKTtcbiAgfTtcblxuICBjb25zdCB6b29tUnVsZXNGb3JFdmVudHNWaWV3ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBheWxvYWQgPSAoXG4gICAgICA8PlxuICAgICAgICB7bWVtb2l6ZWRFZGdlc31cbiAgICAgICAge21lbW9pemVkVW5tb25pdG9yZWRFZGdlc31cbiAgICAgICAge21lbW9pemVkVW5tb25pdG9yZWRQb2ludHMoKX1cbiAgICAgICAge21lbW9pemVkTW9uaXRvcmVkUG9pbnRzKCl9XG4gICAgICA8Lz5cbiAgICApO1xuXG4gICAgcmV0dXJuIHBheWxvYWQ7XG4gIH07XG5cbiAgY29uc3Qgem9vbVJ1bGVzRm9yRGFzaGFib2FyZE1hcHMgPSAoKSA9PiB7XG4gICAgbGV0IHBheWxvYWQgPSAoXG4gICAgICA8PlxuICAgICAgICB7bWVtb2l6ZWRVbm1vbml0b3JlZFBvaW50cygpfVxuICAgICAgICB7bWVtb2l6ZWRNb25pdG9yZWRQb2ludHMoKX1cbiAgICAgIDwvPlxuICAgICk7XG5cbiAgICBpZiAoZWRnZXNab29tTGV2ZWxzLmluY2x1ZGVzKHpvb21MZXZlbHNbbWFwWm9vbUxldmVsXSkpIHtcbiAgICAgIHBheWxvYWQgPSB6b29tUnVsZXNGb3JFdmVudHNWaWV3KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBheWxvYWQ7XG4gIH07XG5cbiAgY29uc3QgbWVtb2l6ZWRab29tQ29udHJvbCA9ICgpID0+IHtcbiAgICBjb25zdCBwYXlsb2FkID0gZm9yRXZlbnRzVmlld1xuICAgICAgPyB6b29tUnVsZXNGb3JFdmVudHNWaWV3KClcbiAgICAgIDogem9vbVJ1bGVzRm9yRGFzaGFib2FyZE1hcHMoKTtcblxuICAgIGNvbnN0IGNoZWNrYm94ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICcjbW9uaXRvcmVkLXBvaW50cy1jaGVja2JveCcsXG4gICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGlmIChjaGVja2JveCkge1xuICAgICAgaGFuZGxlUG9pbnRzQ2hlY2tib3hDaGFuZ2UoY2hlY2tib3guY2hlY2tlZCk7XG4gICAgfVxuICAgIHJldHVybiBwYXlsb2FkO1xuICB9O1xuXG4gIGNvbnN0IG1lbW9pemVkRXZlbnQgPSAoKSA9PiB7XG4gICAgaWYgKGZvY3VzZWRFdmVudFByZXNlbnQpIHtcbiAgICAgIGZvY3VzZWRFdmVudCEuZm9jdXNlZCA9IGZvY3VzZWRFdmVudFByZXNlbnQ7XG4gICAgICBmb2N1c2VkRXZlbnQhLmhvdmVyZWQgPSAhZm9jdXNlZEV2ZW50UHJlc2VudDtcbiAgICB9XG5cbiAgICBpZiAoaG92ZXJlZEV2ZW50UHJlc2VudCkge1xuICAgICAgaG92ZXJlZEV2ZW50IS5ob3ZlcmVkID0gaG92ZXJlZEV2ZW50UHJlc2VudDtcbiAgICAgIGhvdmVyZWRFdmVudCEuZm9jdXNlZCA9ICFob3ZlcmVkRXZlbnRQcmVzZW50O1xuICAgIH1cblxuICAgIGlmICghaG92ZXJlZEV2ZW50UHJlc2VudCAmJiAhZm9jdXNlZEV2ZW50UHJlc2VudCkgcmV0dXJuIDw+PC8+O1xuICAgIHJldHVybiAoXG4gICAgICA8RXZlbnRcbiAgICAgICAgZXZlbnQ9e2ZvY3VzZWRFdmVudCEgfHwgaG92ZXJlZEV2ZW50IX1cbiAgICAgICAgbWFwPXttYXB9XG4gICAgICAgIGVkZ2VzPXtlZGdlcyF9XG4gICAgICAgIHBvaW50cz17cG9pbnRzIX1cbiAgICAgICAgaW5jbHVkZU5ldHdvcms9eyFob3ZlcmVkRXZlbnRQcmVzZW50fVxuICAgICAgLz5cbiAgICApO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgICBjb2xsZWN0b3JzTGF5ZXJHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgbWFwUmVmLmN1cnJlbnQ/LnJlbW92ZUxheWVyKGNvbGxlY3RvcnNMYXllckdyb3VwKTtcbiAgICB9O1xuICB9LCBbZm9jdXNlZEV2ZW50LCBob3ZlcmVkRXZlbnQsIGdsb2JhbF9kYXRhLmV2ZW50RmlsdGVyUGFyYW1dKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgICAgaWYgKGZvckV2ZW50c1ZpZXcpIHtcbiAgICAgICAgZGlzcGF0Y2goY2xlYXJBcmVhcygpKTtcbiAgICAgICAgZGlzcGF0Y2goY2xlYXJQb2ludHMoKSk7XG4gICAgICAgIHd3dHBzTGF5ZXJHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgICBjb2xsZWN0b3JzTGF5ZXJHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgICBhcmVhc0xheWVyR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgICAgZmFjdG9yaWVzUGFyZW50R3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgICAgbW9uaXRvcmVkRWRnZXNHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgICB1bm1vbml0b3JlZEVkZ2VzR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQ/LnJlbW92ZUxheWVyKHVubW9uaXRvcmVkRWRnZXNHcm91cCk7XG4gICAgICAgIG1hcFJlZi5jdXJyZW50Py5yZW1vdmVMYXllcihtb25pdG9yZWRFZGdlc0dyb3VwKTtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQ/LnJlbW92ZUxheWVyKHd3dHBzTGF5ZXJHcm91cCk7XG4gICAgICAgIG1hcFJlZi5jdXJyZW50Py5yZW1vdmVMYXllcihjb2xsZWN0b3JzTGF5ZXJHcm91cCk7XG4gICAgICAgIG1hcFJlZi5jdXJyZW50Py5yZW1vdmVMYXllcihhcmVhc0xheWVyR3JvdXApO1xuICAgICAgICBtYXBSZWYuY3VycmVudD8ucmVtb3ZlTGF5ZXIoZmFjdG9yaWVzUGFyZW50R3JvdXApO1xuXG4gICAgICAgIG1hcFJlZi5jdXJyZW50Py5lYWNoTGF5ZXIoKGxheWVyKSA9PiB7XG4gICAgICAgICAgaWYgKGxheWVyLmthbmRvX29iamVjdCkge1xuICAgICAgICAgICAgbWFwUmVmLmN1cnJlbnQucmVtb3ZlTGF5ZXIobGF5ZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcbiAgfSwgW2dsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWRdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgIGluaXRpYWxpemVNYXAoXG4gICAgICAgIG1hcFpvb21MZXZlbCxcbiAgICAgICAgbWFwQm94U3R5bGUsXG4gICAgICAgIGxlYWZsZXRNYXAuc2F0ZWxsaXRlLFxuICAgICAgICBtYXBSZWYsXG4gICAgICAgIGRpc3BhdGNoLFxuICAgICAgICBpc1ZhbGlkQXJlYSxcbiAgICAgICAgYXJlYVRvQ2VudGVyQnksXG4gICAgICAgIHNldE1hcFpvb21MZXZlbCxcbiAgICAgICAgZm9yV1dUUERhc2hib2FyZCxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZCxcbiAgICAgICk7XG5cbiAgICAgIC8vIEluaXRpYWxpemUgcGFyZW50IGZhY3RvcnkgZ3JvdXBcbiAgICAgIGlmIChtYXBSZWYuY3VycmVudCkge1xuICAgICAgICBmYWN0b3JpZXNQYXJlbnRHcm91cC5hZGRUbyhtYXBSZWYuY3VycmVudCk7XG4gICAgICAgIGZhY3Rvcmllc1BhcmVudEdyb3VwLmFkZExheWVyKG1vbml0b3JlZEZhY3Rvcmllc0dyb3VwKTtcbiAgICAgICAgZmFjdG9yaWVzUGFyZW50R3JvdXAuYWRkTGF5ZXIodW5tb25pdG9yZWRGYWN0b3JpZXNHcm91cCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldE1hcFpvb21MZXZlbChtYXBSZWYuY3VycmVudC5nZXRab29tKCkpO1xuICAgICAgaWYgKCFhcmVhVG9DZW50ZXJCeSkge1xuICAgICAgICBhcmVhVG9DZW50ZXJCeSA9IGFyZWFzLm1hcCgoYXJlYSkgPT4gYXJlYS5zaGFwZV9kYXRhKS5mbGF0KCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghZm9yRXZlbnRzVmlldyB8fCAhZm9jdXNlZEV2ZW50KSB7XG4gICAgICAgIGFyZWFGb2N1c0xvZ2ljKG1hcFJlZiwgaXNWYWxpZEFyZWEsIGFyZWFUb0NlbnRlckJ5KTtcbiAgICAgIH1cblxuICAgICAgdHJhY2tMYXllcmJveCgpO1xuICAgIH1cbiAgfSwgW21hcFJlZi5jdXJyZW50LCBwb2ludHNdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxldCBjbGlja2VkID0gZmFsc2U7XG5cbiAgICBtYXBSZWYuY3VycmVudD8uZWFjaExheWVyKChsYXllcikgPT4ge1xuICAgICAgaWYgKGNsaWNrZWQpIHJldHVybjtcblxuICAgICAgaWYgKFxuICAgICAgICBsYXllcj8ua2FuZG9fb2JqZWN0X2lkID09PSBzZWxlY3RlZEl0ZW0gJiZcbiAgICAgICAgbGF5ZXIuaXNQb3B1cE9wZW4oKSA9PT0gZmFsc2VcbiAgICAgICkge1xuICAgICAgICBpZiAobGF5ZXIgaW5zdGFuY2VvZiBMLk1hcmtlcikge1xuICAgICAgICAgIGxheWVyLmZpcmUoJ2NsaWNrJyk7XG4gICAgICAgIH0gZWxzZSBpZiAobGF5ZXIgaW5zdGFuY2VvZiBMLlBvbHlnb24pIHtcbiAgICAgICAgICBsYXllci5maXJlKCdjbGljay1ldmVudCcpO1xuICAgICAgICB9XG4gICAgICAgIGNsaWNrZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBbc2VsZWN0ZWRJdGVtXSk7XG5cbiAgY29uc3QgcmVuZGVyQXJlYXMgPSAoKSA9PiB7XG4gICAgaWYgKCFzaG91bGRMb2FkTWFwT2JqZWN0cyhnbG9iYWxfZGF0YSwgbWFwUmVmLCBlZGdlcywgcG9pbnRzKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxBcmVhUG9seWdvbnNcbiAgICAgICAgYXJlYXM9e2FyZWFzfVxuICAgICAgICBtYXA9e21hcFJlZi5jdXJyZW50fVxuICAgICAgICBMPXtMfVxuICAgICAgICBhcmVhVG9DZW50ZXJCeT17YXJlYVRvQ2VudGVyQnl9XG4gICAgICAgIG1hcFpvb209e21hcFpvb21MZXZlbH1cbiAgICAgICAgZ2xvYmFsX2RhdGE9e2dsb2JhbF9kYXRhfVxuICAgICAgICBmZWF0dXJlR3JvdXA9e2FyZWFzTGF5ZXJHcm91cH1cbiAgICAgIC8+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwia2QtbWFwLWNvbnRhaW5lclwiIHN0eWxlPXtzdHlsZX0+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17YCBtYXAtY29udGFpbmVyICR7XG4gICAgICAgICAgZ2xvYmFsX2RhdGEuc2lkZW5hdkV4cGFuZGVkID8gJycgOiAnbWFwLWNvbnRhaW5lci0tc2lkZW5hdi1jb2xsYXBzZWQnXG4gICAgICAgIH1gfVxuICAgICAgPlxuICAgICAgICA8RXJyb3JCb3VuZGFyeT5cbiAgICAgICAgICA8ZGl2IGlkPVwibWFwXCI+XG4gICAgICAgICAgICB7cmVuZGVyQXJlYXMoKX1cbiAgICAgICAgICAgIHtzaG91ZExvYWREZXBlbmRlbnRNYXBPYmplY3RzKFxuICAgICAgICAgICAgICBlZGdlcyxcbiAgICAgICAgICAgICAgYXJlYXMsXG4gICAgICAgICAgICAgIGdsb2JhbF9kYXRhLFxuICAgICAgICAgICAgICBtYXBSZWYsXG4gICAgICAgICAgICAgIHBvaW50cyxcbiAgICAgICAgICAgICkgJiYgKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIHttZW1vaXplZEV2ZW50KCl9XG4gICAgICAgICAgICAgICAge21lbW9pemVkWm9vbUNvbnRyb2woKX1cbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9FcnJvckJvdW5kYXJ5PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSxJQUFBQSxDQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQUEsT0FBQTtBQUNBQSxPQUFBO0FBQ0FBLE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUYsdUJBQUEsQ0FBQUMsT0FBQTtBQU9BLElBQUFFLFdBQUEsR0FBQUYsT0FBQTtBQU9BLElBQUFHLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLGFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLE1BQUEsR0FBQUYsc0JBQUEsQ0FBQUosT0FBQTtBQUNBQSxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBTyxhQUFBLEdBQUFQLE9BQUE7QUFFQSxJQUFBUSxNQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxTQUFBLEdBQUFULE9BQUE7QUFXQSxJQUFBVSxNQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxZQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxRQUFBLEdBQUFaLE9BQUE7QUFDQSxJQUFBYSxTQUFBLEdBQUFiLE9BQUE7QUFBdUQsU0FBQWMseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtB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
314
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX3JlYWN0UmVkdXgiLCJfRXJyb3JCb3VuZGFyeSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfQXJlYVBvbHlnb25zIiwiX0VkZ2VzIiwiX1BvaW50TWFya2VycyIsIl9FdmVudCIsIl9NYXBVdGlscyIsIl90aGVtZSIsIl9MaXN0Q29udGV4dCIsIl9hY3Rpb25zIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJNYXAiLCJfcmVmIiwiYXJlYXMiLCJlZGdlcyIsInBvaW50cyIsImdsb2JhbF9kYXRhIiwiYXJlYVRvQ2VudGVyQnkiLCJmb2N1c2VkRXZlbnQiLCJob3ZlcmVkRXZlbnQiLCJfcmVmJGhpZGVFZGdlcyIsImhpZGVFZGdlcyIsIl9yZWYkbWFwQm94U3R5bGUiLCJtYXBCb3hTdHlsZSIsImxlYWZsZXRNYXAiLCJtYXBEZWZhdWx0IiwiY2hpbGRyZW4iLCJfcmVmJGluY2x1ZGVVbm1vbml0b3IiLCJpbmNsdWRlVW5tb25pdG9yZWRQb2ludHMiLCJfcmVmJGluY2x1ZGVVbm1vbml0b3IyIiwiaW5jbHVkZVVubW9uaXRvcmVkRGVzY2VuZGFudHNGb3JFZGdlcyIsIl9yZWYkZm9yRXZlbnRzVmlldyIsImZvckV2ZW50c1ZpZXciLCJfcmVmJHN0eWxlIiwic3R5bGUiLCJfcmVmJGZvcldXVFBEYXNoYm9hcmQiLCJmb3JXV1RQRGFzaGJvYXJkIiwibWFwIiwibWFwUmVmIiwidXNlUmVmIiwiZGlzcGF0Y2giLCJ1c2VEaXNwYXRjaCIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsIm1hcFpvb21MZXZlbCIsInNldE1hcFpvb21MZXZlbCIsIl91c2VTZWxlY3RlZEl0ZW0iLCJ1c2VTZWxlY3RlZEl0ZW0iLCJzZWxlY3RlZEl0ZW0iLCJldmVudHNEYXRhIiwidXNlU2VsZWN0b3IiLCJzdGF0ZSIsImV2ZW50c19kYXRhIiwiaG92ZXJlZEV2ZW50UHJlc2VudCIsInVzZU1lbW8iLCJ1bmRlZmluZWQiLCJmb2N1c2VkRXZlbnRQcmVzZW50IiwiX3VzZVN0YXRlMyIsIndpbmRvdyIsImN1c3RvbUxlYWZsZXQiLCJtYXJrZXJDbHVzdGVyR3JvdXAiLCJjbHVzdGVyR3JvdXBPcHRpb25zIiwiX3VzZVN0YXRlNCIsImhpZGRlbkZhY3Rvcmllc0NsdXN0ZXJHcm91cCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwidW5tb25pdG9yZWRGYWN0b3JpZXNDbHVzdGVyR3JvdXAiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsIm1vbml0b3JlZEZhY3Rvcmllc0NsdXN0ZXJHcm91cCIsIl91c2VTdGF0ZTkiLCJsYXllckdyb3VwIiwiX3VzZVN0YXRlMTAiLCJ1bm1vbml0b3JlZEVkZ2VzR3JvdXAiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwiaGlkZGVuVW5tb25pdG9yZWRFZGdlc0dyb3VwIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsIm1vbml0b3JlZEVkZ2VzR3JvdXAiLCJfdXNlU3RhdGUxNSIsIl91c2VTdGF0ZTE2Iiwid3d0cHNMYXllckdyb3VwIiwiX3VzZVN0YXRlMTciLCJfdXNlU3RhdGUxOCIsImNvbGxlY3RvcnNMYXllckdyb3VwIiwiX3VzZVN0YXRlMTkiLCJGZWF0dXJlR3JvdXAiLCJfdXNlU3RhdGUyMCIsImFyZWFzTGF5ZXJHcm91cCIsIl91c2VTdGF0ZTIxIiwiX3VzZVN0YXRlMjIiLCJlZGdlc0NoZWNrYm94Iiwic2V0RWRnZXNDaGVja2JveCIsInJlbmRlclBvaW50TWFya2VycyIsImZpbHRlcmVkUG9pbnRzIiwicHJvcHMiLCJjdXJyZW50IiwiY3JlYXRlRWxlbWVudCIsIlBvaW50TWFya2VycyIsImFzc2lnbiIsIm1lbW9pemVkTW9uaXRvcmVkUG9pbnRzIiwibW9uaXRvcmVkUG9pbnRzIiwiZmlsdGVyUG9pbnRzIiwicmVyZW5kZXIiLCJ6b29tTGV2ZWxzIiwiZmFjdG9yaWVzR3JvdXAiLCJ3d3Rwc0dyb3VwIiwiY29sbGVjdG9yc0dyb3VwIiwibWVtb2l6ZWRVbm1vbml0b3JlZFBvaW50cyIsInVubW9uaXRvcmVkUG9pbnRzIiwicmVuZGVyRWRnZXMiLCJmaWx0ZXJlZEVkZ2VzIiwibWVtb2l6ZWRFZGdlcyIsIm1vbml0b3JlZEVkZ2VzIiwiZmlsdGVyRWRnZXMiLCJoaWRlQXJyb3dzIiwiYWxsb3dVbm1vbml0b3JlZERlc2NlbmRhbnRzIiwiZ3JvdXAiLCJtZW1vaXplZFVubW9uaXRvcmVkRWRnZXMiLCJ1bm1vbml0b3JlZEVkZ2VzIiwic2hvdWxkbnREcmF3IiwiZ2V0TGF5ZXJzIiwibGVuZ3RoIiwiaGFuZGxlRWRnZXNDaGVja2JveENoYW5nZSIsImlzQ2hlY2tlZCIsImhhbmRsZVBvaW50c0NoZWNrYm94Q2hhbmdlIiwiem9vbSIsImdldFpvb20iLCJhZGRMYXllciIsImNsZWFyTGF5ZXJzIiwicmVtb3ZlRnJvbSIsImFkZFRvIiwidHJhY2tMYXllcmJveCIsInNldHVwQ2hlY2tib3hMaXN0ZW5lciIsInpvb21SdWxlc0ZvckV2ZW50c1ZpZXciLCJwYXlsb2FkIiwiRnJhZ21lbnQiLCJ6b29tUnVsZXNGb3JEYXNoYWJvYXJkTWFwcyIsIm1lbW9pemVkWm9vbUNvbnRyb2wiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJjaGVja2VkIiwiaXNGZXRjaGluZyIsIm1lbW9pemVkRXZlbnQiLCJmb2N1c2VkIiwiaG92ZXJlZCIsIkV2ZW50IiwiZXZlbnQiLCJpbmNsdWRlTmV0d29yayIsImV2ZW50RmlsdGVyUGFyYW0iLCJ1c2VFZmZlY3QiLCJjbGVhbnVwIiwiX21hcFJlZiRjdXJyZW50IiwicmVtb3ZlTGF5ZXIiLCJpbml0aWFsaXplTWFwIiwic2F0ZWxsaXRlIiwiaXNWYWxpZEFyZWEiLCJ3YXRlckF1dGhvcml0eUlkIiwiX21hcFJlZiRjdXJyZW50MiIsIl9tYXBSZWYkY3VycmVudDMiLCJfbWFwUmVmJGN1cnJlbnQ0IiwiX21hcFJlZiRjdXJyZW50NSIsIl9tYXBSZWYkY3VycmVudDYiLCJfbWFwUmVmJGN1cnJlbnQ3IiwicmVtb3ZlIiwic3RvcmVNYXAiLCJhcmVhIiwic2hhcGVfZGF0YSIsImZsYXQiLCJhcmVhRm9jdXNMb2dpYyIsIl9tYXBSZWYkY3VycmVudDgiLCJjbGlja2VkIiwiZWFjaExheWVyIiwibGF5ZXIiLCJrYW5kb19vYmplY3RfaWQiLCJpc1BvcHVwT3BlbiIsIk1hcmtlciIsImZpcmUiLCJQb2x5Z29uIiwiY2xhc3NOYW1lIiwiY29uY2F0Iiwic2lkZW5hdkV4cGFuZGVkIiwiaWQiLCJzaG91bGRMb2FkTWFwT2JqZWN0cyIsIkFyZWFQb2x5Z29ucyIsIm1hcFpvb20iLCJmZWF0dXJlR3JvdXAiLCJzaG91ZExvYWREZXBlbmRlbnRNYXBPYmplY3RzIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9NYXAudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1pZ25vcmVcbmltcG9ydCAqIGFzIEwgZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgJ3NyYy91dGlsaXRpZXMvcG9seWxpbmVkZWNvcmF0b3InO1xuaW1wb3J0ICdsZWFmbGV0Lm1hcmtlcmNsdXN0ZXInO1xuaW1wb3J0ICdsZWFmbGV0LnBhdHRlcm4nO1xuaW1wb3J0ICdsZWFmbGV0LmhlYXQnO1xuaW1wb3J0IFJlYWN0LCB7XG4gIENTU1Byb3BlcnRpZXMsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgSUFyZWEgfSBmcm9tICdzcmMvc3RvcmUvYXJlYXMvbW9kZWxzL0lBcmVhJztcbmltcG9ydCB7IElFZGdlIH0gZnJvbSAnc3JjL3N0b3JlL2VkZ2VzL21vZGVscy9JRWRnZSc7XG5pbXBvcnQgeyBJRXZlbnQgfSBmcm9tICdzcmMvc3RvcmUvZXZlbnRzL21vZGVscy9JRXZlbnQnO1xuLy8gaW1wb3J0IHsgc3RvcmVNYXAgfSBmcm9tICdzcmMvc3RvcmUvZ2xvYmFsL2FjdGlvbnMnO1xuaW1wb3J0IHsgSUdsb2JhbFN0YXRlIH0gZnJvbSAnc3JjL3N0b3JlL2dsb2JhbC9tb2RlbHMvSUdsb2JhbFN0YXRlJztcbmltcG9ydCB7IElQb2ludCB9IGZyb20gJ3NyYy9zdG9yZS9wb2ludHMvbW9kZWxzL0lQb2ludCc7XG5pbXBvcnQgRXJyb3JCb3VuZGFyeSBmcm9tICdzcmMvdXRpbGl0aWVzL0Vycm9yQm91bmRhcnknO1xuaW1wb3J0IHsgQXJlYVBvbHlnb25zIH0gZnJvbSAnLi9hcmVhcy9BcmVhUG9seWdvbnMnO1xuaW1wb3J0IEVkZ2VzIGZyb20gJy4vZWRnZXMvRWRnZXMnO1xuaW1wb3J0ICcuL01hcC5zY3NzJztcbmltcG9ydCAnLi9wb2ludHMvUG9pbnRJY29uLnNjc3MnO1xuaW1wb3J0IHsgUG9pbnRNYXJrZXJzIH0gZnJvbSAnLi9wb2ludHMvUG9pbnRNYXJrZXJzJztcbmltcG9ydCB7IGFwcFJlZHVjZXIgfSBmcm9tICcuLi8uLi9zdG9yZS9yb290UmVkdWNlcic7XG5pbXBvcnQgeyBFdmVudCB9IGZyb20gJy4vZXZlbnRzL0V2ZW50JztcbmltcG9ydCB7XG4gIGFyZWFGb2N1c0xvZ2ljLFxuICBjbHVzdGVyR3JvdXBPcHRpb25zLFxuICBmaWx0ZXJFZGdlcyxcbiAgZmlsdGVyUG9pbnRzLFxuICBpbml0aWFsaXplTWFwLFxuICBpc1ZhbGlkQXJlYSxcbiAgc2V0dXBDaGVja2JveExpc3RlbmVyLFxuICBzaG91ZExvYWREZXBlbmRlbnRNYXBPYmplY3RzLFxuICBzaG91bGRMb2FkTWFwT2JqZWN0cyxcbiAgem9vbUxldmVscyxcbn0gZnJvbSAnLi9NYXBVdGlscyc7XG5pbXBvcnQgeyBsZWFmbGV0TWFwIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3RoZW1lL3RoZW1lJztcbmltcG9ydCB7IHVzZVNlbGVjdGVkSXRlbSB9IGZyb20gJ3NyYy9wYWdlcy9EYXNoYm9hcmRNYXAvTGlzdENvbnRleHQnO1xuaW1wb3J0IHsgc3RvcmVNYXAgfSBmcm9tICdzcmMvc3RvcmUvZ2xvYmFsL2FjdGlvbnMnO1xucmVxdWlyZSgnbGVhZmxldC5tYXJrZXJjbHVzdGVyJyk7XG5cbmludGVyZmFjZSBNYXBQcm9wcyB7XG4gIGFyZWFzOiBJQXJlYVtdO1xuICBlZGdlcz86IElFZGdlW107XG4gIHBvaW50cz86IElQb2ludFtdO1xuICBnbG9iYWxfZGF0YTogSUdsb2JhbFN0YXRlO1xuICBhcmVhVG9DZW50ZXJCeT86IGFueTtcbiAgZm9jdXNlZEV2ZW50PzogSUV2ZW50IHwgbnVsbDtcbiAgaG92ZXJlZEV2ZW50PzogSUV2ZW50IHwgbnVsbDtcbiAgaGlkZUVkZ2VzPzogYm9vbGVhbjtcbiAgbWFwQm94U3R5bGU/OiBzdHJpbmc7XG4gIGNoaWxkcmVuPzogYW55O1xuICBzdHlsZT86IENTU1Byb3BlcnRpZXM7XG4gIGluY2x1ZGVVbm1vbml0b3JlZFBvaW50cz86IGJvb2xlYW47XG4gIGluY2x1ZGVVbm1vbml0b3JlZERlc2NlbmRhbnRzRm9yRWRnZXM/OiBib29sZWFuO1xuICBmb3JFdmVudHNWaWV3OiBib29sZWFuO1xuICBmb3JXV1RQRGFzaGJvYXJkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IE1hcDogUmVhY3QuRkM8TWFwUHJvcHM+ID0gKHtcbiAgYXJlYXMsXG4gIGVkZ2VzLFxuICBwb2ludHMsXG4gIGdsb2JhbF9kYXRhLFxuICBhcmVhVG9DZW50ZXJCeSxcbiAgZm9jdXNlZEV2ZW50LFxuICBob3ZlcmVkRXZlbnQsXG4gIGhpZGVFZGdlcyA9IGZhbHNlLFxuICBtYXBCb3hTdHlsZSA9IGxlYWZsZXRNYXAubWFwRGVmYXVsdCxcbiAgY2hpbGRyZW4sXG4gIGluY2x1ZGVVbm1vbml0b3JlZFBvaW50cyA9IHRydWUsXG4gIGluY2x1ZGVVbm1vbml0b3JlZERlc2NlbmRhbnRzRm9yRWRnZXMgPSBmYWxzZSxcbiAgZm9yRXZlbnRzVmlldyA9IGZhbHNlLFxuICBzdHlsZSA9IHt9LFxuICBmb3JXV1RQRGFzaGJvYXJkID0gZmFsc2UsXG59KSA9PiB7XG4gIGNvbnN0IHsgbWFwIH0gPSBnbG9iYWxfZGF0YTtcbiAgY29uc3QgbWFwUmVmID0gdXNlUmVmPEwuTWFwIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW21hcFpvb21MZXZlbCwgc2V0TWFwWm9vbUxldmVsXSA9IHVzZVN0YXRlKDIpO1xuICBjb25zdCB7IHNlbGVjdGVkSXRlbSB9ID0gdXNlU2VsZWN0ZWRJdGVtKCk7XG4gIGNvbnN0IGV2ZW50c0RhdGEgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGU6IFJldHVyblR5cGU8dHlwZW9mIGFwcFJlZHVjZXI+KSA9PiBzdGF0ZS5ldmVudHNfZGF0YSxcbiAgKTtcbiAgY29uc3QgaG92ZXJlZEV2ZW50UHJlc2VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBob3ZlcmVkRXZlbnQgIT09IG51bGwgJiYgaG92ZXJlZEV2ZW50ICE9PSB1bmRlZmluZWQ7XG4gIH0sIFtob3ZlcmVkRXZlbnRdKTtcblxuICBjb25zdCBmb2N1c2VkRXZlbnRQcmVzZW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGZvY3VzZWRFdmVudCAhPT0gbnVsbCAmJiBmb2N1c2VkRXZlbnQgIT09IHVuZGVmaW5lZDtcbiAgfSwgW2ZvY3VzZWRFdmVudF0pO1xuXG4gIGNvbnN0IFtoaWRkZW5GYWN0b3JpZXNDbHVzdGVyR3JvdXBdID0gdXNlU3RhdGUoXG4gICAgd2luZG93LmN1c3RvbUxlYWZsZXQubWFya2VyQ2x1c3Rlckdyb3VwKGNsdXN0ZXJHcm91cE9wdGlvbnMpLFxuICApO1xuICBjb25zdCBbdW5tb25pdG9yZWRGYWN0b3JpZXNDbHVzdGVyR3JvdXBdID0gdXNlU3RhdGUoXG4gICAgd2luZG93LmN1c3RvbUxlYWZsZXQubWFya2VyQ2x1c3Rlckdyb3VwKGNsdXN0ZXJHcm91cE9wdGlvbnMpLFxuICApO1xuICBjb25zdCBbbW9uaXRvcmVkRmFjdG9yaWVzQ2x1c3Rlckdyb3VwXSA9IHVzZVN0YXRlKFxuICAgIHdpbmRvdy5jdXN0b21MZWFmbGV0Lm1hcmtlckNsdXN0ZXJHcm91cChjbHVzdGVyR3JvdXBPcHRpb25zKSxcbiAgKTtcblxuICBjb25zdCBbdW5tb25pdG9yZWRFZGdlc0dyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW2hpZGRlblVubW9uaXRvcmVkRWRnZXNHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFttb25pdG9yZWRFZGdlc0dyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW3d3dHBzTGF5ZXJHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFtjb2xsZWN0b3JzTGF5ZXJHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFthcmVhc0xheWVyR3JvdXBdID0gdXNlU3RhdGUobmV3IEwuRmVhdHVyZUdyb3VwKCkpO1xuICBjb25zdCBbZWRnZXNDaGVja2JveCwgc2V0RWRnZXNDaGVja2JveF0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgY29uc3QgcmVuZGVyUG9pbnRNYXJrZXJzID0gKGZpbHRlcmVkUG9pbnRzLCBtYXBSZWYsIHByb3BzKSA9PlxuICAgIG1hcFJlZi5jdXJyZW50ICE9PSBudWxsICYmXG4gICAgcG9pbnRzICYmIChcbiAgICAgIDxQb2ludE1hcmtlcnMgbWFwPXttYXBSZWYuY3VycmVudH0gcG9pbnRzPXtmaWx0ZXJlZFBvaW50c30gey4uLnByb3BzfSAvPlxuICAgICk7XG5cbiAgY29uc3QgbWVtb2l6ZWRNb25pdG9yZWRQb2ludHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBtb25pdG9yZWRQb2ludHMgPSBmaWx0ZXJQb2ludHMocG9pbnRzLCB0cnVlKTtcbiAgICByZXR1cm4gcmVuZGVyUG9pbnRNYXJrZXJzKG1vbml0b3JlZFBvaW50cywgbWFwUmVmLCB7XG4gICAgICBpbmNsdWRlVW5tb25pdG9yZWRQb2ludHMsXG4gICAgICByZXJlbmRlcjogem9vbUxldmVsc1ttYXBab29tTGV2ZWxdLFxuICAgICAgZmFjdG9yaWVzR3JvdXA6IG1vbml0b3JlZEZhY3Rvcmllc0NsdXN0ZXJHcm91cCxcbiAgICAgIHd3dHBzR3JvdXA6IHd3dHBzTGF5ZXJHcm91cCxcbiAgICAgIGNvbGxlY3RvcnNHcm91cDogY29sbGVjdG9yc0xheWVyR3JvdXAsXG4gICAgICBmb3JFdmVudHNWaWV3OiBmYWxzZSxcbiAgICB9KTtcbiAgfSwgW21hcFJlZi5jdXJyZW50LCBwb2ludHMsIGZvY3VzZWRFdmVudFByZXNlbnQsIG1hcFpvb21MZXZlbF0pO1xuXG4gIGNvbnN0IG1lbW9pemVkVW5tb25pdG9yZWRQb2ludHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB1bm1vbml0b3JlZFBvaW50cyA9IGZpbHRlclBvaW50cyhwb2ludHMsIGZhbHNlKTtcbiAgICByZXR1cm4gcmVuZGVyUG9pbnRNYXJrZXJzKHVubW9uaXRvcmVkUG9pbnRzLCBtYXBSZWYsIHtcbiAgICAgIGluY2x1ZGVVbm1vbml0b3JlZFBvaW50cyxcbiAgICAgIHJlcmVuZGVyOiB6b29tTGV2ZWxzW21hcFpvb21MZXZlbF0sXG4gICAgICBmYWN0b3JpZXNHcm91cDogdW5tb25pdG9yZWRGYWN0b3JpZXNDbHVzdGVyR3JvdXAsXG4gICAgICB3d3Rwc0dyb3VwOiB3d3Rwc0xheWVyR3JvdXAsXG4gICAgICBjb2xsZWN0b3JzR3JvdXA6IGNvbGxlY3RvcnNMYXllckdyb3VwLFxuICAgICAgZm9yRXZlbnRzVmlldzogZmFsc2UsXG4gICAgfSk7XG4gIH0sIFttYXBSZWYuY3VycmVudCwgcG9pbnRzLCBmb2N1c2VkRXZlbnRQcmVzZW50LCBtYXBab29tTGV2ZWxdKTtcblxuICBjb25zdCByZW5kZXJFZGdlcyA9IChmaWx0ZXJlZEVkZ2VzLCBtYXBSZWYsIGVkZ2VzQ2hlY2tib3gsIHByb3BzKSA9PlxuICAgIG1hcFJlZi5jdXJyZW50ICE9PSBudWxsICYmXG4gICAgZWRnZXNDaGVja2JveCAmJiAoXG4gICAgICA8RWRnZXMgZWRnZXM9e2ZpbHRlcmVkRWRnZXN9IG1hcD17bWFwUmVmLmN1cnJlbnR9IHsuLi5wcm9wc30gLz5cbiAgICApO1xuXG4gIGNvbnN0IG1lbW9pemVkRWRnZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBtb25pdG9yZWRFZGdlcyA9IGZpbHRlckVkZ2VzKGVkZ2VzLCBwb2ludHMsIHRydWUpO1xuICAgIHJldHVybiByZW5kZXJFZGdlcyhtb25pdG9yZWRFZGdlcywgbWFwUmVmLCBlZGdlc0NoZWNrYm94LCB7XG4gICAgICBMLFxuICAgICAgcG9pbnRzLFxuICAgICAgaGlkZUVkZ2VzLFxuICAgICAgaGlkZUFycm93czogdHJ1ZSxcbiAgICAgIGFsbG93VW5tb25pdG9yZWREZXNjZW5kYW50czogaW5jbHVkZVVubW9uaXRvcmVkRGVzY2VuZGFudHNGb3JFZGdlcyxcbiAgICAgIGdyb3VwOiBtb25pdG9yZWRFZGdlc0dyb3VwLFxuICAgIH0pO1xuICB9LCBbbWFwUmVmLmN1cnJlbnQsIHBvaW50cywgZm9jdXNlZEV2ZW50UHJlc2VudCwgbWFwWm9vbUxldmVsXSk7XG5cbiAgY29uc3QgbWVtb2l6ZWRVbm1vbml0b3JlZEVkZ2VzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgdW5tb25pdG9yZWRFZGdlcyA9IGZpbHRlckVkZ2VzKGVkZ2VzLCBwb2ludHMsIGZhbHNlKTtcbiAgICByZXR1cm4gcmVuZGVyRWRnZXModW5tb25pdG9yZWRFZGdlcywgbWFwUmVmLCBlZGdlc0NoZWNrYm94LCB7XG4gICAgICBMLFxuICAgICAgcG9pbnRzLFxuICAgICAgaGlkZUVkZ2VzLFxuICAgICAgaGlkZUFycm93czogdHJ1ZSxcbiAgICAgIGFsbG93VW5tb25pdG9yZWREZXNjZW5kYW50czogaW5jbHVkZVVubW9uaXRvcmVkRGVzY2VuZGFudHNGb3JFZGdlcyxcbiAgICAgIGdyb3VwOiB1bm1vbml0b3JlZEVkZ2VzR3JvdXAsXG4gICAgICBzaG91bGRudERyYXc6IGhpZGRlblVubW9uaXRvcmVkRWRnZXNHcm91cC5nZXRMYXllcnMoKS5sZW5ndGggIT09IDAsXG4gICAgfSk7XG4gIH0sIFttYXBSZWYuY3VycmVudCwgcG9pbnRzLCBmb2N1c2VkRXZlbnRQcmVzZW50LCBtYXBab29tTGV2ZWxdKTtcblxuICBjb25zdCBoYW5kbGVFZGdlc0NoZWNrYm94Q2hhbmdlID0gKGlzQ2hlY2tlZCkgPT4ge1xuICAgIHNldEVkZ2VzQ2hlY2tib3goaXNDaGVja2VkKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVQb2ludHNDaGVja2JveENoYW5nZSA9IChpc0NoZWNrZWQpID0+IHtcbiAgICBpZiAobWFwUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgIGxldCB6b29tID0gem9vbUxldmVsc1ttYXBSZWYuY3VycmVudC5nZXRab29tKCldO1xuXG4gICAgICBpZiAoaXNDaGVja2VkKSB7XG4gICAgICAgIGhpZGRlbkZhY3Rvcmllc0NsdXN0ZXJHcm91cC5hZGRMYXllcih1bm1vbml0b3JlZEZhY3Rvcmllc0NsdXN0ZXJHcm91cCk7XG4gICAgICAgIHVubW9uaXRvcmVkRmFjdG9yaWVzQ2x1c3Rlckdyb3VwLmNsZWFyTGF5ZXJzKCk7XG5cbiAgICAgICAgaGlkZGVuVW5tb25pdG9yZWRFZGdlc0dyb3VwLnJlbW92ZUZyb20obWFwUmVmLmN1cnJlbnQpO1xuICAgICAgICBoaWRkZW5Vbm1vbml0b3JlZEVkZ2VzR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgICAgaGlkZGVuVW5tb25pdG9yZWRFZGdlc0dyb3VwLmFkZExheWVyKHVubW9uaXRvcmVkRWRnZXNHcm91cCk7XG4gICAgICAgIHVubW9uaXRvcmVkRWRnZXNHcm91cC5yZW1vdmVGcm9tKG1hcFJlZi5jdXJyZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVubW9uaXRvcmVkRmFjdG9yaWVzQ2x1c3Rlckdyb3VwLmFkZExheWVyKGhpZGRlbkZhY3Rvcmllc0NsdXN0ZXJHcm91cCk7XG4gICAgICAgIGhpZGRlbkZhY3Rvcmllc0NsdXN0ZXJHcm91cC5jbGVhckxheWVycygpO1xuXG4gICAgICAgIGlmICh6b29tID09PSAnTWVkaXVtJyB8fCB6b29tID09PSAnU21hbGwnKSB7XG4gICAgICAgICAgdW5tb25pdG9yZWRFZGdlc0dyb3VwLmFkZExheWVyKGhpZGRlblVubW9uaXRvcmVkRWRnZXNHcm91cCk7XG4gICAgICAgICAgaGlkZGVuVW5tb25pdG9yZWRFZGdlc0dyb3VwLnJlbW92ZUZyb20obWFwUmVmLmN1cnJlbnQpO1xuICAgICAgICAgIGhpZGRlblVubW9uaXRvcmVkRWRnZXNHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgICAgIHVubW9uaXRvcmVkRWRnZXNHcm91cC5hZGRUbyhtYXBSZWYuY3VycmVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgdHJhY2tMYXllcmJveCA9ICgpID0+IHtcbiAgICBzZXR1cENoZWNrYm94TGlzdGVuZXIoJyNlZGdlcy1jaGVja2JveCcsIGhhbmRsZUVkZ2VzQ2hlY2tib3hDaGFuZ2UpO1xuICAgIHNldHVwQ2hlY2tib3hMaXN0ZW5lcihcbiAgICAgICcjbW9uaXRvcmVkLXBvaW50cy1jaGVja2JveCcsXG4gICAgICBoYW5kbGVQb2ludHNDaGVja2JveENoYW5nZSxcbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IHpvb21SdWxlc0ZvckV2ZW50c1ZpZXcgPSAoKSA9PiB7XG4gICAgY29uc3QgcGF5bG9hZCA9IChcbiAgICAgIDw+XG4gICAgICAgIHttZW1vaXplZEVkZ2VzfVxuICAgICAgICB7bWVtb2l6ZWRVbm1vbml0b3JlZEVkZ2VzfVxuICAgICAgICB7bWVtb2l6ZWRVbm1vbml0b3JlZFBvaW50c31cbiAgICAgICAge21lbW9pemVkTW9uaXRvcmVkUG9pbnRzfVxuICAgICAgPC8+XG4gICAgKTtcblxuICAgIHJldHVybiBwYXlsb2FkO1xuICB9O1xuXG4gIGNvbnN0IHpvb21SdWxlc0ZvckRhc2hhYm9hcmRNYXBzID0gKCkgPT4ge1xuICAgIGxldCBwYXlsb2FkID0gKFxuICAgICAgPD5cbiAgICAgICAge21lbW9pemVkVW5tb25pdG9yZWRQb2ludHN9IHttZW1vaXplZE1vbml0b3JlZFBvaW50c31cbiAgICAgIDwvPlxuICAgICk7XG4gICAgc3dpdGNoICh6b29tTGV2ZWxzW21hcFpvb21MZXZlbF0pIHtcbiAgICAgIGNhc2UgJ1NtYWxsJzpcbiAgICAgIGNhc2UgJ01lZGl1bSc6XG4gICAgICBjYXNlICdNTGFyZ2UnOlxuICAgICAgICBwYXlsb2FkID0gem9vbVJ1bGVzRm9yRXZlbnRzVmlldygpO1xuICAgICAgICBicmVhaztcbiAgICAgIC8vIGNhc2UgJ01MYXJnZSc6XG4gICAgICAvLyBjYXNlICdMYXJnZSc6XG4gICAgICAvLyBjYXNlICdYTGFyZ2UnOlxuICAgICAgLy8gZGVmYXVsdDpcbiAgICAgIC8vICAgcGF5bG9hZCA9IDw+e21lbW9pemVkUG9pbnRzfTwvPjtcbiAgICAgIC8vICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBheWxvYWQ7XG4gIH07XG5cbiAgY29uc3QgbWVtb2l6ZWRab29tQ29udHJvbCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHBheWxvYWQgPSBmb3JFdmVudHNWaWV3XG4gICAgICA/IHpvb21SdWxlc0ZvckV2ZW50c1ZpZXcoKVxuICAgICAgOiB6b29tUnVsZXNGb3JEYXNoYWJvYXJkTWFwcygpO1xuXG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI21vbml0b3JlZC1wb2ludHMtY2hlY2tib3gnKSAhPSBudWxsICYmXG4gICAgICBoYW5kbGVQb2ludHNDaGVja2JveENoYW5nZShcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI21vbml0b3JlZC1wb2ludHMtY2hlY2tib3gnKS5jaGVja2VkLFxuICAgICAgKTtcbiAgICByZXR1cm4gcGF5bG9hZDtcbiAgfSwgW1xuICAgIG1hcFpvb21MZXZlbCxcbiAgICBldmVudHNEYXRhLmlzRmV0Y2hpbmcsXG4gICAgZm9jdXNlZEV2ZW50LFxuICAgIGhvdmVyZWRFdmVudCxcbiAgICBwb2ludHMsXG4gICAgbWFwUmVmLmN1cnJlbnQsXG4gICAgZWRnZXNDaGVja2JveCxcbiAgICB1bm1vbml0b3JlZEVkZ2VzR3JvdXAsXG4gIF0pO1xuXG4gIGNvbnN0IG1lbW9pemVkRXZlbnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoZm9jdXNlZEV2ZW50UHJlc2VudCkge1xuICAgICAgZm9jdXNlZEV2ZW50IS5mb2N1c2VkID0gZm9jdXNlZEV2ZW50UHJlc2VudDtcbiAgICAgIGZvY3VzZWRFdmVudCEuaG92ZXJlZCA9ICFmb2N1c2VkRXZlbnRQcmVzZW50O1xuICAgIH1cblxuICAgIGlmIChob3ZlcmVkRXZlbnRQcmVzZW50KSB7XG4gICAgICBob3ZlcmVkRXZlbnQhLmhvdmVyZWQgPSBob3ZlcmVkRXZlbnRQcmVzZW50O1xuICAgICAgaG92ZXJlZEV2ZW50IS5mb2N1c2VkID0gIWhvdmVyZWRFdmVudFByZXNlbnQ7XG4gICAgfVxuXG4gICAgaWYgKCFob3ZlcmVkRXZlbnRQcmVzZW50ICYmICFmb2N1c2VkRXZlbnRQcmVzZW50KSByZXR1cm4gPD48Lz47XG4gICAgcmV0dXJuIChcbiAgICAgIDxFdmVudFxuICAgICAgICBldmVudD17Zm9jdXNlZEV2ZW50ISB8fCBob3ZlcmVkRXZlbnQhfVxuICAgICAgICBtYXA9e21hcH1cbiAgICAgICAgZWRnZXM9e2VkZ2VzIX1cbiAgICAgICAgcG9pbnRzPXtwb2ludHMhfVxuICAgICAgICBpbmNsdWRlTmV0d29yaz17IWhvdmVyZWRFdmVudFByZXNlbnR9XG4gICAgICAvPlxuICAgICk7XG4gIH0sIFtmb2N1c2VkRXZlbnQsIGhvdmVyZWRFdmVudCwgZ2xvYmFsX2RhdGEuZXZlbnRGaWx0ZXJQYXJhbV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgICBjb2xsZWN0b3JzTGF5ZXJHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgbWFwUmVmLmN1cnJlbnQ/LnJlbW92ZUxheWVyKGNvbGxlY3RvcnNMYXllckdyb3VwKTtcbiAgICB9O1xuICB9LCBbZm9jdXNlZEV2ZW50LCBob3ZlcmVkRXZlbnQsIGdsb2JhbF9kYXRhLmV2ZW50RmlsdGVyUGFyYW1dKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGluaXRpYWxpemVNYXAoXG4gICAgICBtYXBab29tTGV2ZWwsXG4gICAgICBtYXBCb3hTdHlsZSxcbiAgICAgIGxlYWZsZXRNYXAuc2F0ZWxsaXRlLFxuICAgICAgbWFwUmVmLFxuICAgICAgZGlzcGF0Y2gsXG4gICAgICBpc1ZhbGlkQXJlYSxcbiAgICAgIGFyZWFUb0NlbnRlckJ5LFxuICAgICAgc2V0TWFwWm9vbUxldmVsLFxuICAgICAgZm9yV1dUUERhc2hib2FyZCxcbiAgICAgIHRydWUsXG4gICAgICBnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkLFxuICAgICk7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICAgIGhpZGRlbkZhY3Rvcmllc0NsdXN0ZXJHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgdW5tb25pdG9yZWRGYWN0b3JpZXNDbHVzdGVyR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgIG1vbml0b3JlZEZhY3Rvcmllc0NsdXN0ZXJHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgd3d0cHNMYXllckdyb3VwLmNsZWFyTGF5ZXJzKCk7XG4gICAgICBjb2xsZWN0b3JzTGF5ZXJHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgYXJlYXNMYXllckdyb3VwLmNsZWFyTGF5ZXJzKCk7XG4gICAgICBtYXBSZWYuY3VycmVudD8ucmVtb3ZlTGF5ZXIoaGlkZGVuRmFjdG9yaWVzQ2x1c3Rlckdyb3VwKTtcbiAgICAgIG1hcFJlZi5jdXJyZW50Py5yZW1vdmVMYXllcih1bm1vbml0b3JlZEZhY3Rvcmllc0NsdXN0ZXJHcm91cCk7XG4gICAgICBtYXBSZWYuY3VycmVudD8ucmVtb3ZlTGF5ZXIobW9uaXRvcmVkRmFjdG9yaWVzQ2x1c3Rlckdyb3VwKTtcbiAgICAgIG1hcFJlZi5jdXJyZW50Py5yZW1vdmVMYXllcih3d3Rwc0xheWVyR3JvdXApO1xuICAgICAgbWFwUmVmLmN1cnJlbnQ/LnJlbW92ZUxheWVyKGNvbGxlY3RvcnNMYXllckdyb3VwKTtcbiAgICAgIG1hcFJlZi5jdXJyZW50Py5yZW1vdmVMYXllcihhcmVhc0xheWVyR3JvdXApO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbWFwUmVmLmN1cnJlbnQucmVtb3ZlKCk7XG4gICAgICBkaXNwYXRjaChzdG9yZU1hcCh1bmRlZmluZWQpKTtcbiAgICB9O1xuICB9LCBbZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFtYXBSZWYuY3VycmVudCkge1xuICAgICAgaW5pdGlhbGl6ZU1hcChcbiAgICAgICAgbWFwWm9vbUxldmVsLFxuICAgICAgICBtYXBCb3hTdHlsZSxcbiAgICAgICAgbGVhZmxldE1hcC5zYXRlbGxpdGUsXG4gICAgICAgIG1hcFJlZixcbiAgICAgICAgZGlzcGF0Y2gsXG4gICAgICAgIGlzVmFsaWRBcmVhLFxuICAgICAgICBhcmVhVG9DZW50ZXJCeSxcbiAgICAgICAgc2V0TWFwWm9vbUxldmVsLFxuICAgICAgICB0cnVlLFxuICAgICAgICBnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0TWFwWm9vbUxldmVsKG1hcFJlZi5jdXJyZW50LmdldFpvb20oKSk7XG4gICAgICBpZiAoIWFyZWFUb0NlbnRlckJ5KSB7XG4gICAgICAgIGFyZWFUb0NlbnRlckJ5ID0gYXJlYXMubWFwKChhcmVhKSA9PiBhcmVhLnNoYXBlX2RhdGEpLmZsYXQoKTtcbiAgICAgIH1cblxuICAgICAgYXJlYUZvY3VzTG9naWMobWFwUmVmLCBpc1ZhbGlkQXJlYSwgYXJlYVRvQ2VudGVyQnkpO1xuICAgICAgdHJhY2tMYXllcmJveCgpO1xuICAgIH1cbiAgfSwgW21hcFJlZi5jdXJyZW50LCBhcmVhVG9DZW50ZXJCeV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IGNsaWNrZWQgPSBmYWxzZTtcblxuICAgIG1hcFJlZi5jdXJyZW50Py5lYWNoTGF5ZXIoKGxheWVyKSA9PiB7XG4gICAgICBpZiAoY2xpY2tlZCkgcmV0dXJuO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGxheWVyPy5rYW5kb19vYmplY3RfaWQgPT09IHNlbGVjdGVkSXRlbSAmJlxuICAgICAgICBsYXllci5pc1BvcHVwT3BlbigpID09PSBmYWxzZVxuICAgICAgKSB7XG4gICAgICAgIGlmIChsYXllciBpbnN0YW5jZW9mIEwuTWFya2VyKSB7XG4gICAgICAgICAgbGF5ZXIuZmlyZSgnY2xpY2snKTtcbiAgICAgICAgfSBlbHNlIGlmIChsYXllciBpbnN0YW5jZW9mIEwuUG9seWdvbikge1xuICAgICAgICAgIGxheWVyLmZpcmUoJ2NsaWNrLWV2ZW50Jyk7XG4gICAgICAgIH1cbiAgICAgICAgY2xpY2tlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sIFtzZWxlY3RlZEl0ZW1dKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwia2QtbWFwLWNvbnRhaW5lclwiIHN0eWxlPXtzdHlsZX0+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17YCBtYXAtY29udGFpbmVyICR7XG4gICAgICAgICAgZ2xvYmFsX2RhdGEuc2lkZW5hdkV4cGFuZGVkID8gJycgOiAnbWFwLWNvbnRhaW5lci0tc2lkZW5hdi1jb2xsYXBzZWQnXG4gICAgICAgIH1gfVxuICAgICAgPlxuICAgICAgICA8RXJyb3JCb3VuZGFyeT5cbiAgICAgICAgICA8ZGl2IGlkPVwibWFwXCI+PC9kaXY+XG4gICAgICAgICAge3Nob3VsZExvYWRNYXBPYmplY3RzKGdsb2JhbF9kYXRhLCBtYXBSZWYsIGVkZ2VzLCBwb2ludHMpICYmIChcbiAgICAgICAgICAgIDxBcmVhUG9seWdvbnNcbiAgICAgICAgICAgICAgYXJlYXM9e2FyZWFzfVxuICAgICAgICAgICAgICBtYXA9e21hcFJlZi5jdXJyZW50fVxuICAgICAgICAgICAgICBMPXtMfVxuICAgICAgICAgICAgICBhcmVhVG9DZW50ZXJCeT17YXJlYVRvQ2VudGVyQnl9XG4gICAgICAgICAgICAgIG1hcFpvb209e21hcFpvb21MZXZlbH1cbiAgICAgICAgICAgICAgcmVyZW5kZXI9e3pvb21MZXZlbHNbbWFwWm9vbUxldmVsXX1cbiAgICAgICAgICAgICAgZ2xvYmFsX2RhdGE9e2dsb2JhbF9kYXRhfVxuICAgICAgICAgICAgICBmZWF0dXJlR3JvdXA9e2FyZWFzTGF5ZXJHcm91cH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7c2hvdWRMb2FkRGVwZW5kZW50TWFwT2JqZWN0cyhcbiAgICAgICAgICAgIGVkZ2VzLFxuICAgICAgICAgICAgYXJlYXMsXG4gICAgICAgICAgICBnbG9iYWxfZGF0YSxcbiAgICAgICAgICAgIG1hcFJlZixcbiAgICAgICAgICAgIHBvaW50cyxcbiAgICAgICAgICApICYmIChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIHttZW1vaXplZEV2ZW50fVxuICAgICAgICAgICAgICB7bWVtb2l6ZWRab29tQ29udHJvbH1cbiAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9FcnJvckJvdW5kYXJ5PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSxJQUFBQSxDQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQUEsT0FBQTtBQUNBQSxPQUFBO0FBQ0FBLE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUYsdUJBQUEsQ0FBQUMsT0FBQTtBQU9BLElBQUFFLFdBQUEsR0FBQUYsT0FBQTtBQU9BLElBQUFHLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLGFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLE1BQUEsR0FBQUYsc0JBQUEsQ0FBQUosT0FBQTtBQUNBQSxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBTyxhQUFBLEdBQUFQLE9BQUE7QUFFQSxJQUFBUSxNQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxTQUFBLEdBQUFULE9BQUE7QUFZQSxJQUFBVSxNQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxZQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxRQUFBLEdBQUFaLE9BQUE7QUFBb0QsU0FBQWEseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFBLFNBQUFmLHdCQUFBbUIsR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFBQUksR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsV0FBQUQsR0FBQSxRQUFBQSxHQUFBLGFBQUFFLE9B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