UNPKG

kepler.gl

Version:

kepler.gl is a webgl based application to visualize large scale location data in the browser

130 lines (129 loc) 21.9 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _react = _interopRequireWildcard(require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/node_modules/react")); var _styledComponents = _interopRequireDefault(require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/node_modules/styled-components")); var _classnames3 = _interopRequireDefault(require("classnames")); var _utilities = require("@dnd-kit/utilities"); var _sortable = require("@dnd-kit/sortable"); var _src = require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/src/constants/src"); var _src2 = require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/src/utils/src"); var _dndLayerItems = require("../common/dnd-layer-items"); var _effectPanel = _interopRequireDefault(require("./effect-panel")); var _templateObject, _templateObject2; // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; } var Container = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n"]))); var SortableStyledItem = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n z-index: ", ";\n transition: ", ";\n transform: ", ";\n outline: none;\n &.sorting {\n opacity: 0.3;\n pointer-events: none;\n }\n &.sorting-effects .effect-panel__header {\n background-color: ", ";\n font-family: ", ";\n font-weight: ", ";\n font-size: ", ";\n line-height: ", ";\n *,\n *:before,\n *:after {\n box-sizing: border-box;\n }\n .effect__drag-handle {\n opacity: 1;\n color: ", ";\n }\n }\n"])), function (props) { return props.theme.dropdownWrapperZ + 1; }, function (props) { return props.transition; }, function (props) { return props.transform; }, function (props) { return props.theme.panelBackgroundHover; }, function (props) { return props.theme.fontFamily; }, function (props) { return props.theme.fontWeight; }, function (props) { return props.theme.fontSize; }, function (props) { return props.theme.lineHeight; }, function (props) { return props.theme.textColorHl; }); EffectListFactory.deps = [_effectPanel["default"]]; function EffectListFactory(EffectPanel) { var SortableItem = function SortableItem(_ref) { var effect = _ref.effect, idx = _ref.idx, panelProps = _ref.panelProps, disabled = _ref.disabled; var _useSortable = (0, _sortable.useSortable)({ id: effect.id, data: { type: _dndLayerItems.SORTABLE_EFFECT_TYPE, parent: _dndLayerItems.SORTABLE_EFFECT_PANEL_TYPE }, disabled: disabled }), attributes = _useSortable.attributes, listeners = _useSortable.listeners, setNodeRef = _useSortable.setNodeRef, isDragging = _useSortable.isDragging, transform = _useSortable.transform, transition = _useSortable.transition; return /*#__PURE__*/_react["default"].createElement(SortableStyledItem, (0, _extends2["default"])({ ref: setNodeRef, className: (0, _classnames3["default"])((0, _defineProperty2["default"])({}, _src.dataTestIds.sortableEffectItem, !disabled), (0, _defineProperty2["default"])({}, _src.dataTestIds.staticEffectItem, disabled), { sorting: isDragging }), "data-testid": disabled ? _src.dataTestIds.staticEffectItem : _src.dataTestIds.sortableEffectItem, transform: _utilities.CSS.Transform.toString(transform), transition: transition || '' }, attributes), /*#__PURE__*/_react["default"].createElement(EffectPanel, (0, _extends2["default"])({}, panelProps, { key: effect.id, idx: idx, effect: effect, listeners: listeners, isDraggable: !disabled }))); }; var EffectList = function EffectList(props) { var effects = props.effects, effectOrder = props.effectOrder, visStateActions = props.visStateActions; var effectsToShow = (0, _react.useMemo)(function () { return effectOrder.reduce(function (acc, effectId) { var effect = (0, _src2.findById)(effectId)(effects.filter(Boolean)); if (!effect) { return acc; } return [].concat((0, _toConsumableArray2["default"])(acc), [effect]); }, []); }, [effects, effectOrder]); var sidePanelDndItems = (0, _react.useMemo)(function () { return effectsToShow.map(function (_ref2) { var id = _ref2.id; return id; }); }, [effectsToShow]); var panelProps = (0, _react.useMemo)(function () { return { effects: effects, effectOrder: effectOrder, removeEffect: visStateActions.removeEffect, updateEffect: visStateActions.updateEffect }; }, [effects, effectOrder, visStateActions]); return /*#__PURE__*/_react["default"].createElement(Container, null, /*#__PURE__*/_react["default"].createElement(_sortable.SortableContext, { id: _dndLayerItems.SORTABLE_EFFECT_PANEL_TYPE, items: sidePanelDndItems, strategy: _sortable.verticalListSortingStrategy, disabled: false }, effectsToShow.map(function (effect) { return /*#__PURE__*/_react["default"].createElement(SortableItem, { key: effect.id, effect: effect, idx: effects.findIndex(function (l) { return (l === null || l === void 0 ? void 0 : l.id) === effect.id; }), panelProps: panelProps, disabled: false }); }))); }; return EffectList; } var _default = exports["default"] = EffectListFactory; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY2xhc3NuYW1lczMiLCJfdXRpbGl0aWVzIiwiX3NvcnRhYmxlIiwiX3NyYyIsIl9zcmMyIiwiX2RuZExheWVySXRlbXMiLCJfZWZmZWN0UGFuZWwiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiQ29udGFpbmVyIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJTb3J0YWJsZVN0eWxlZEl0ZW0iLCJwcm9wcyIsInRoZW1lIiwiZHJvcGRvd25XcmFwcGVyWiIsInRyYW5zaXRpb24iLCJ0cmFuc2Zvcm0iLCJwYW5lbEJhY2tncm91bmRIb3ZlciIsImZvbnRGYW1pbHkiLCJmb250V2VpZ2h0IiwiZm9udFNpemUiLCJsaW5lSGVpZ2h0IiwidGV4dENvbG9ySGwiLCJFZmZlY3RMaXN0RmFjdG9yeSIsImRlcHMiLCJFZmZlY3RQYW5lbEZhY3RvcnkiLCJFZmZlY3RQYW5lbCIsIlNvcnRhYmxlSXRlbSIsIl9yZWYiLCJlZmZlY3QiLCJpZHgiLCJwYW5lbFByb3BzIiwiZGlzYWJsZWQiLCJfdXNlU29ydGFibGUiLCJ1c2VTb3J0YWJsZSIsImlkIiwiZGF0YSIsInR5cGUiLCJTT1JUQUJMRV9FRkZFQ1RfVFlQRSIsInBhcmVudCIsIlNPUlRBQkxFX0VGRkVDVF9QQU5FTF9UWVBFIiwiYXR0cmlidXRlcyIsImxpc3RlbmVycyIsInNldE5vZGVSZWYiLCJpc0RyYWdnaW5nIiwiY3JlYXRlRWxlbWVudCIsIl9leHRlbmRzMiIsInJlZiIsImNsYXNzTmFtZSIsImNsYXNzbmFtZXMiLCJfZGVmaW5lUHJvcGVydHkyIiwiZGF0YVRlc3RJZHMiLCJzb3J0YWJsZUVmZmVjdEl0ZW0iLCJzdGF0aWNFZmZlY3RJdGVtIiwic29ydGluZyIsIkNTUyIsIlRyYW5zZm9ybSIsInRvU3RyaW5nIiwia2V5IiwiaXNEcmFnZ2FibGUiLCJFZmZlY3RMaXN0IiwiZWZmZWN0cyIsImVmZmVjdE9yZGVyIiwidmlzU3RhdGVBY3Rpb25zIiwiZWZmZWN0c1RvU2hvdyIsInVzZU1lbW8iLCJyZWR1Y2UiLCJhY2MiLCJlZmZlY3RJZCIsImZpbmRCeUlkIiwiZmlsdGVyIiwiQm9vbGVhbiIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJzaWRlUGFuZWxEbmRJdGVtcyIsIm1hcCIsIl9yZWYyIiwicmVtb3ZlRWZmZWN0IiwidXBkYXRlRWZmZWN0IiwiU29ydGFibGVDb250ZXh0IiwiaXRlbXMiLCJzdHJhdGVneSIsInZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneSIsImZpbmRJbmRleCIsImwiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9zcmMvZWZmZWN0cy9lZmZlY3QtbGlzdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlTWVtb30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7Q1NTfSBmcm9tICdAZG5kLWtpdC91dGlsaXRpZXMnO1xuaW1wb3J0IHt1c2VTb3J0YWJsZSwgU29ydGFibGVDb250ZXh0LCB2ZXJ0aWNhbExpc3RTb3J0aW5nU3RyYXRlZ3l9IGZyb20gJ0BkbmQta2l0L3NvcnRhYmxlJztcblxuaW1wb3J0IHtkYXRhVGVzdElkc30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtmaW5kQnlJZH0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge0VmZmVjdH0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1xuICBhZGRFZmZlY3QsXG4gIHVwZGF0ZUVmZmVjdCxcbiAgcmVtb3ZlRWZmZWN0LFxuICByZW9yZGVyRWZmZWN0LFxuICBBY3Rpb25IYW5kbGVyXG59IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5cbmltcG9ydCB7U09SVEFCTEVfRUZGRUNUX1RZUEUsIFNPUlRBQkxFX0VGRkVDVF9QQU5FTF9UWVBFfSBmcm9tICcuLi9jb21tb24vZG5kLWxheWVyLWl0ZW1zJztcbmltcG9ydCBFZmZlY3RQYW5lbEZhY3RvcnkgZnJvbSAnLi9lZmZlY3QtcGFuZWwnO1xuXG5leHBvcnQgdHlwZSBFZmZlY3RMaXN0UHJvcHMgPSB7XG4gIGVmZmVjdHM6IEVmZmVjdFtdO1xuICBlZmZlY3RPcmRlcjogc3RyaW5nW107XG4gIHZpc1N0YXRlQWN0aW9uczoge1xuICAgIGFkZEVmZmVjdDogQWN0aW9uSGFuZGxlcjx0eXBlb2YgYWRkRWZmZWN0PjtcbiAgICB1cGRhdGVFZmZlY3Q6IEFjdGlvbkhhbmRsZXI8dHlwZW9mIHVwZGF0ZUVmZmVjdD47XG4gICAgcmVtb3ZlRWZmZWN0OiBBY3Rpb25IYW5kbGVyPHR5cGVvZiByZW1vdmVFZmZlY3Q+O1xuICAgIHJlb3JkZXJFZmZlY3Q6IEFjdGlvbkhhbmRsZXI8dHlwZW9mIHJlb3JkZXJFZmZlY3Q+O1xuICB9O1xuICBpc1NvcnRhYmxlOiBib29sZWFuO1xufTtcblxuY29uc3QgQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbmA7XG5cbnR5cGUgU29ydGFibGVTdHlsZWRJdGVtUHJvcHMgPSB7dHJhbnNpdGlvbj86IHN0cmluZzsgdHJhbnNmb3JtPzogc3RyaW5nfTtcbmNvbnN0IFNvcnRhYmxlU3R5bGVkSXRlbSA9IHN0eWxlZC5kaXY8U29ydGFibGVTdHlsZWRJdGVtUHJvcHM+YFxuICB6LWluZGV4OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmRyb3Bkb3duV3JhcHBlclogKyAxfTtcbiAgdHJhbnNpdGlvbjogJHtwcm9wcyA9PiBwcm9wcy50cmFuc2l0aW9ufTtcbiAgdHJhbnNmb3JtOiAke3Byb3BzID0+IHByb3BzLnRyYW5zZm9ybX07XG4gIG91dGxpbmU6IG5vbmU7XG4gICYuc29ydGluZyB7XG4gICAgb3BhY2l0eTogMC4zO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG4gICYuc29ydGluZy1lZmZlY3RzIC5lZmZlY3QtcGFuZWxfX2hlYWRlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wYW5lbEJhY2tncm91bmRIb3Zlcn07XG4gICAgZm9udC1mYW1pbHk6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZm9udEZhbWlseX07XG4gICAgZm9udC13ZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZm9udFdlaWdodH07XG4gICAgZm9udC1zaXplOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmZvbnRTaXplfTtcbiAgICBsaW5lLWhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5saW5lSGVpZ2h0fTtcbiAgICAqLFxuICAgICo6YmVmb3JlLFxuICAgICo6YWZ0ZXIge1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB9XG4gICAgLmVmZmVjdF9fZHJhZy1oYW5kbGUge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgICB9XG4gIH1cbmA7XG5cbkVmZmVjdExpc3RGYWN0b3J5LmRlcHMgPSBbRWZmZWN0UGFuZWxGYWN0b3J5XTtcblxuZnVuY3Rpb24gRWZmZWN0TGlzdEZhY3RvcnkoXG4gIEVmZmVjdFBhbmVsOiBSZXR1cm5UeXBlPHR5cGVvZiBFZmZlY3RQYW5lbEZhY3Rvcnk+XG4pOiBSZWFjdC5GQzxFZmZlY3RMaXN0UHJvcHM+IHtcbiAgY29uc3QgU29ydGFibGVJdGVtID0gKHtlZmZlY3QsIGlkeCwgcGFuZWxQcm9wcywgZGlzYWJsZWR9KSA9PiB7XG4gICAgY29uc3Qge2F0dHJpYnV0ZXMsIGxpc3RlbmVycywgc2V0Tm9kZVJlZiwgaXNEcmFnZ2luZywgdHJhbnNmb3JtLCB0cmFuc2l0aW9ufSA9IHVzZVNvcnRhYmxlKHtcbiAgICAgIGlkOiBlZmZlY3QuaWQsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHR5cGU6IFNPUlRBQkxFX0VGRkVDVF9UWVBFLFxuICAgICAgICBwYXJlbnQ6IFNPUlRBQkxFX0VGRkVDVF9QQU5FTF9UWVBFXG4gICAgICB9LFxuICAgICAgZGlzYWJsZWRcbiAgICB9KTtcblxuICAgIHJldHVybiAoXG4gICAgICA8U29ydGFibGVTdHlsZWRJdGVtXG4gICAgICAgIHJlZj17c2V0Tm9kZVJlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgIHtbZGF0YVRlc3RJZHMuc29ydGFibGVFZmZlY3RJdGVtXTogIWRpc2FibGVkfSxcbiAgICAgICAgICB7W2RhdGFUZXN0SWRzLnN0YXRpY0VmZmVjdEl0ZW1dOiBkaXNhYmxlZH0sXG4gICAgICAgICAge3NvcnRpbmc6IGlzRHJhZ2dpbmd9XG4gICAgICAgICl9XG4gICAgICAgIGRhdGEtdGVzdGlkPXtkaXNhYmxlZCA/IGRhdGFUZXN0SWRzLnN0YXRpY0VmZmVjdEl0ZW0gOiBkYXRhVGVzdElkcy5zb3J0YWJsZUVmZmVjdEl0ZW19XG4gICAgICAgIHRyYW5zZm9ybT17Q1NTLlRyYW5zZm9ybS50b1N0cmluZyh0cmFuc2Zvcm0pfVxuICAgICAgICB0cmFuc2l0aW9uPXt0cmFuc2l0aW9uIHx8ICcnfVxuICAgICAgICB7Li4uYXR0cmlidXRlc31cbiAgICAgID5cbiAgICAgICAgPEVmZmVjdFBhbmVsXG4gICAgICAgICAgey4uLnBhbmVsUHJvcHN9XG4gICAgICAgICAga2V5PXtlZmZlY3QuaWR9XG4gICAgICAgICAgaWR4PXtpZHh9XG4gICAgICAgICAgZWZmZWN0PXtlZmZlY3R9XG4gICAgICAgICAgbGlzdGVuZXJzPXtsaXN0ZW5lcnN9XG4gICAgICAgICAgaXNEcmFnZ2FibGU9eyFkaXNhYmxlZH1cbiAgICAgICAgLz5cbiAgICAgIDwvU29ydGFibGVTdHlsZWRJdGVtPlxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgRWZmZWN0TGlzdCA9IChwcm9wczogRWZmZWN0TGlzdFByb3BzKSA9PiB7XG4gICAgY29uc3Qge2VmZmVjdHMsIGVmZmVjdE9yZGVyLCB2aXNTdGF0ZUFjdGlvbnN9ID0gcHJvcHM7XG5cbiAgICBjb25zdCBlZmZlY3RzVG9TaG93ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICByZXR1cm4gZWZmZWN0T3JkZXIucmVkdWNlKChhY2MsIGVmZmVjdElkKSA9PiB7XG4gICAgICAgIGNvbnN0IGVmZmVjdCA9IGZpbmRCeUlkKGVmZmVjdElkKShlZmZlY3RzLmZpbHRlcihCb29sZWFuKSk7XG4gICAgICAgIGlmICghZWZmZWN0KSB7XG4gICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmFjYywgZWZmZWN0XTtcbiAgICAgIH0sIFtdIGFzIEVmZmVjdFtdKTtcbiAgICB9LCBbZWZmZWN0cywgZWZmZWN0T3JkZXJdKTtcblxuICAgIGNvbnN0IHNpZGVQYW5lbERuZEl0ZW1zID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICByZXR1cm4gZWZmZWN0c1RvU2hvdy5tYXAoKHtpZH0pID0+IGlkKTtcbiAgICB9LCBbZWZmZWN0c1RvU2hvd10pO1xuXG4gICAgY29uc3QgcGFuZWxQcm9wcyA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiAoe1xuICAgICAgICBlZmZlY3RzLFxuICAgICAgICBlZmZlY3RPcmRlcixcbiAgICAgICAgcmVtb3ZlRWZmZWN0OiB2aXNTdGF0ZUFjdGlvbnMucmVtb3ZlRWZmZWN0LFxuICAgICAgICB1cGRhdGVFZmZlY3Q6IHZpc1N0YXRlQWN0aW9ucy51cGRhdGVFZmZlY3RcbiAgICAgIH0pLFxuICAgICAgW2VmZmVjdHMsIGVmZmVjdE9yZGVyLCB2aXNTdGF0ZUFjdGlvbnNdXG4gICAgKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8Q29udGFpbmVyPlxuICAgICAgICA8U29ydGFibGVDb250ZXh0XG4gICAgICAgICAgaWQ9e1NPUlRBQkxFX0VGRkVDVF9QQU5FTF9UWVBFfVxuICAgICAgICAgIGl0ZW1zPXtzaWRlUGFuZWxEbmRJdGVtc31cbiAgICAgICAgICBzdHJhdGVneT17dmVydGljYWxMaXN0U29ydGluZ1N0cmF0ZWd5fVxuICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgPlxuICAgICAgICAgIHtlZmZlY3RzVG9TaG93Lm1hcChlZmZlY3QgPT4gKFxuICAgICAgICAgICAgPFNvcnRhYmxlSXRlbVxuICAgICAgICAgICAgICBrZXk9e2VmZmVjdC5pZH1cbiAgICAgICAgICAgICAgZWZmZWN0PXtlZmZlY3R9XG4gICAgICAgICAgICAgIGlkeD17ZWZmZWN0cy5maW5kSW5kZXgobCA9PiBsPy5pZCA9PT0gZWZmZWN0LmlkKX1cbiAgICAgICAgICAgICAgcGFuZWxQcm9wcz17cGFuZWxQcm9wc31cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9Tb3J0YWJsZUNvbnRleHQ+XG4gICAgICA8L0NvbnRhaW5lcj5cbiAgICApO1xuICB9O1xuICByZXR1cm4gRWZmZWN0TGlzdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRWZmZWN0TGlzdEZhY3Rv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