UNPKG

kepler.gl

Version:

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

144 lines (143 loc) 25.3 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"] = DatasetTitleFactory; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _react = _interopRequireWildcard(require("react")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _localization = require("@kepler.gl/localization"); var _layers = require("@kepler.gl/layers"); var _styledComponents2 = require("../../common/styled-components"); var _icons = require("../../common/icons"); var _datasetTag = _interopRequireDefault(require("./dataset-tag")); var _customPicker = _interopRequireDefault(require("../layer-panel/custom-picker")); var _ = require("../.."); var _utils = require("@kepler.gl/utils"); 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 StyledDatasetTitle = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n display: flex;\n align-items: center;\n\n .source-data-arrow {\n height: 16px;\n }\n &:hover {\n cursor: ", ";\n\n .dataset-name {\n color: ", ";\n }\n\n .dataset-action {\n color: ", ";\n opacity: 1;\n }\n\n .dataset-action:hover {\n color: ", ";\n }\n }\n"])), function (props) { return props.theme.textColor; }, function (props) { return props.$clickable ? 'pointer' : 'auto'; }, function (props) { return props.$clickable ? props.theme.textColorHl : props.theme.textColor; }, function (props) { return props.theme.textColor; }, function (props) { return props.theme.textColorHl; }); var DataTagAction = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: 12px;\n height: 16px;\n opacity: 0;\n"]))); var ShowDataTable = function ShowDataTable(_ref) { var id = _ref.id, showDatasetTable = _ref.showDatasetTable; return /*#__PURE__*/_react["default"].createElement(DataTagAction, { className: "dataset-action show-data-table", "data-tip": true, "data-for": "data-table-".concat(id) }, /*#__PURE__*/_react["default"].createElement(_layers.Table, { height: "16px", onClick: function onClick(e) { e.stopPropagation(); showDatasetTable === null || showDatasetTable === void 0 || showDatasetTable(id); } }), /*#__PURE__*/_react["default"].createElement(_styledComponents2.Tooltip, { id: "data-table-".concat(id), effect: "solid" }, /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, { id: 'datasetTitle.showDataTable' })))); }; var RemoveDataset = function RemoveDataset(_ref2) { var datasetKey = _ref2.datasetKey, removeDataset = _ref2.removeDataset; return /*#__PURE__*/_react["default"].createElement(DataTagAction, { className: "dataset-action remove-dataset", "data-tip": true, "data-for": "delete-".concat(datasetKey) }, /*#__PURE__*/_react["default"].createElement(_icons.Trash, { height: "16px", onClick: function onClick(e) { e.stopPropagation(); removeDataset === null || removeDataset === void 0 || removeDataset(datasetKey); } }), /*#__PURE__*/_react["default"].createElement(_styledComponents2.Tooltip, { id: "delete-".concat(datasetKey), effect: "solid", type: "error" }, /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, { id: 'datasetTitle.removeDataset' })))); }; DatasetTitleFactory.deps = [_datasetTag["default"]]; function DatasetTitleFactory(DatasetTag) { var DatasetTitle = function DatasetTitle(_ref3) { var showDatasetTable = _ref3.showDatasetTable, showDeleteDataset = _ref3.showDeleteDataset, onTitleClick = _ref3.onTitleClick, removeDataset = _ref3.removeDataset, dataset = _ref3.dataset, updateTableColor = _ref3.updateTableColor; var _useState = (0, _react.useState)(false), _useState2 = (0, _slicedToArray2["default"])(_useState, 2), displayColorPicker = _useState2[0], setDisplayColorPicker = _useState2[1]; var root = (0, _react.useRef)(null); var datasetId = dataset.id; var _handleClick = (0, _react.useCallback)(function () { setDisplayColorPicker(!displayColorPicker); }, [setDisplayColorPicker, displayColorPicker]); var _handleClosePicker = (0, _react.useCallback)(function () { setDisplayColorPicker(false); }, [setDisplayColorPicker]); var _handleCustomPicker = (0, _react.useCallback)(function (color) { updateTableColor(datasetId, [color.rgb.r, color.rgb.g, color.rgb.b]); }, [updateTableColor, datasetId]); var _onClickTitle = (0, _react.useCallback)(function (e) { e.stopPropagation(); if (typeof onTitleClick === 'function') { onTitleClick(); } else if (typeof showDatasetTable === 'function') { if (dataset.disableDataOperation) return; showDatasetTable(datasetId); } }, [onTitleClick, showDatasetTable, datasetId, dataset.disableDataOperation]); return /*#__PURE__*/_react["default"].createElement("div", { className: "custom-palette-panel", ref: root }, /*#__PURE__*/_react["default"].createElement(StyledDatasetTitle, { className: "source-data-title", $clickable: Boolean(showDatasetTable || onTitleClick) }, /*#__PURE__*/_react["default"].createElement(DatasetTag, { dataset: dataset, onClick: _onClickTitle, updateTableColor: updateTableColor, onClickSquare: _handleClick }), /*#__PURE__*/_react["default"].createElement(_.Portaled, { isOpened: displayColorPicker !== false, left: 110, top: -50, onClose: _handleClosePicker }, /*#__PURE__*/_react["default"].createElement(_customPicker["default"], { color: (0, _utils.rgbToHex)(dataset.color), onChange: _handleCustomPicker })), showDatasetTable ? /*#__PURE__*/_react["default"].createElement(_styledComponents2.CenterFlexbox, { className: "source-data-arrow" }, /*#__PURE__*/_react["default"].createElement(_icons.ArrowRight, { height: "12px" })) : null, showDatasetTable && !dataset.disableDataOperation ? /*#__PURE__*/_react["default"].createElement(ShowDataTable, { id: datasetId, showDatasetTable: showDatasetTable }) : null, showDeleteDataset ? /*#__PURE__*/_react["default"].createElement(RemoveDataset, { datasetKey: datasetId, removeDataset: removeDataset }) : null)); }; return DatasetTitle; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbG9jYWxpemF0aW9uIiwiX2xheWVycyIsIl9zdHlsZWRDb21wb25lbnRzMiIsIl9pY29ucyIsIl9kYXRhc2V0VGFnIiwiX2N1c3RvbVBpY2tlciIsIl8iLCJfdXRpbHMiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiU3R5bGVkRGF0YXNldFRpdGxlIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwidGV4dENvbG9yIiwiJGNsaWNrYWJsZSIsInRleHRDb2xvckhsIiwiRGF0YVRhZ0FjdGlvbiIsIlNob3dEYXRhVGFibGUiLCJfcmVmIiwiaWQiLCJzaG93RGF0YXNldFRhYmxlIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImNvbmNhdCIsIlRhYmxlIiwiaGVpZ2h0Iiwib25DbGljayIsInN0b3BQcm9wYWdhdGlvbiIsIlRvb2x0aXAiLCJlZmZlY3QiLCJGb3JtYXR0ZWRNZXNzYWdlIiwiUmVtb3ZlRGF0YXNldCIsIl9yZWYyIiwiZGF0YXNldEtleSIsInJlbW92ZURhdGFzZXQiLCJUcmFzaCIsInR5cGUiLCJEYXRhc2V0VGl0bGVGYWN0b3J5IiwiZGVwcyIsIkRhdGFzZXRUYWdGYWN0b3J5IiwiRGF0YXNldFRhZyIsIkRhdGFzZXRUaXRsZSIsIl9yZWYzIiwic2hvd0RlbGV0ZURhdGFzZXQiLCJvblRpdGxlQ2xpY2siLCJkYXRhc2V0IiwidXBkYXRlVGFibGVDb2xvciIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsImRpc3BsYXlDb2xvclBpY2tlciIsInNldERpc3BsYXlDb2xvclBpY2tlciIsInJvb3QiLCJ1c2VSZWYiLCJkYXRhc2V0SWQiLCJfaGFuZGxlQ2xpY2siLCJ1c2VDYWxsYmFjayIsIl9oYW5kbGVDbG9zZVBpY2tlciIsIl9oYW5kbGVDdXN0b21QaWNrZXIiLCJjb2xvciIsInJnYiIsImciLCJiIiwiX29uQ2xpY2tUaXRsZSIsImRpc2FibGVEYXRhT3BlcmF0aW9uIiwicmVmIiwiQm9vbGVhbiIsIm9uQ2xpY2tTcXVhcmUiLCJQb3J0YWxlZCIsImlzT3BlbmVkIiwibGVmdCIsInRvcCIsIm9uQ2xvc2UiLCJyZ2JUb0hleCIsIm9uQ2hhbmdlIiwiQ2VudGVyRmxleGJveCIsIkFycm93UmlnaHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2lkZS1wYW5lbC9jb21tb24vZGF0YXNldC10aXRsZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdAa2VwbGVyLmdsL2xvY2FsaXphdGlvbic7XG5cbmltcG9ydCB7VGFibGV9IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7Q2VudGVyRmxleGJveCwgVG9vbHRpcH0gZnJvbSAnLi4vLi4vY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7QXJyb3dSaWdodCwgVHJhc2h9IGZyb20gJy4uLy4uL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQgRGF0YXNldFRhZ0ZhY3RvcnkgZnJvbSAnLi9kYXRhc2V0LXRhZyc7XG5pbXBvcnQgQ3VzdG9tUGlja2VyIGZyb20gJy4uL2xheWVyLXBhbmVsL2N1c3RvbS1waWNrZXInO1xuaW1wb3J0IHtQb3J0YWxlZH0gZnJvbSAnLi4vLi4nO1xuaW1wb3J0IHtyZ2JUb0hleH0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge29wZW5EZWxldGVNb2RhbCwgVmlzU3RhdGVBY3Rpb25zLCBBY3Rpb25IYW5kbGVyfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtSR0JDb2xvcn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1N0eWxlZERhdGFzZXRUaXRsZVByb3BzLCBSZW1vdmVEYXRhc2V0UHJvcHMsIFNob3dEYXRhVGFibGVQcm9wc30gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IFN0eWxlZERhdGFzZXRUaXRsZSA9IHN0eWxlZC5kaXY8U3R5bGVkRGF0YXNldFRpdGxlUHJvcHM+YFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gIC5zb3VyY2UtZGF0YS1hcnJvdyB7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICB9XG4gICY6aG92ZXIge1xuICAgIGN1cnNvcjogJHtwcm9wcyA9PiAocHJvcHMuJGNsaWNrYWJsZSA/ICdwb2ludGVyJyA6ICdhdXRvJyl9O1xuXG4gICAgLmRhdGFzZXQtbmFtZSB7XG4gICAgICBjb2xvcjogJHtwcm9wcyA9PiAocHJvcHMuJGNsaWNrYWJsZSA/IHByb3BzLnRoZW1lLnRleHRDb2xvckhsIDogcHJvcHMudGhlbWUudGV4dENvbG9yKX07XG4gICAgfVxuXG4gICAgLmRhdGFzZXQtYWN0aW9uIHtcbiAgICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgIC5kYXRhc2V0LWFjdGlvbjpob3ZlciB7XG4gICAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG4gICAgfVxuICB9XG5gO1xuXG5jb25zdCBEYXRhVGFnQWN0aW9uID0gc3R5bGVkLmRpdmBcbiAgbWFyZ2luLWxlZnQ6IDEycHg7XG4gIGhlaWdodDogMTZweDtcbiAgb3BhY2l0eTogMDtcbmA7XG5cbnR5cGUgTWluaURhdGFzZXQgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIGNvbG9yOiBSR0JDb2xvcjtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIGRpc2FibGVEYXRhT3BlcmF0aW9uPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIERhdGFzZXRUaXRsZVByb3BzID0ge1xuICBkYXRhc2V0OiBNaW5pRGF0YXNldDtcbiAgc2hvd0RlbGV0ZURhdGFzZXQ6IGJvb2xlYW47XG4gIG9uVGl0bGVDbGljaz86ICgpID0+IHZvaWQ7XG4gIHNob3dEYXRhc2V0VGFibGU/OiBBY3Rpb25IYW5kbGVyPHR5cGVvZiBWaXNTdGF0ZUFjdGlvbnMuc2hvd0RhdGFzZXRUYWJsZT47XG4gIHVwZGF0ZVRhYmxlQ29sb3I6IEFjdGlvbkhhbmRsZXI8dHlwZW9mIFZpc1N0YXRlQWN0aW9ucy51cGRhdGVUYWJsZUNvbG9yPjtcbiAgcmVtb3ZlRGF0YXNldD86IEFjdGlvbkhhbmRsZXI8dHlwZW9mIG9wZW5EZWxldGVNb2RhbD47XG59O1xuXG5jb25zdCBTaG93RGF0YVRhYmxlID0gKHtpZCwgc2hvd0RhdGFzZXRUYWJsZX06IFNob3dEYXRhVGFibGVQcm9wcykgPT4gKFxuICA8RGF0YVRhZ0FjdGlvbiBjbGFzc05hbWU9XCJkYXRhc2V0LWFjdGlvbiBzaG93LWRhdGEtdGFibGVcIiBkYXRhLXRpcCBkYXRhLWZvcj17YGRhdGEtdGFibGUtJHtpZH1gfT5cbiAgICA8VGFibGVcbiAgICAgIGhlaWdodD1cIjE2cHhcIlxuICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHNob3dEYXRhc2V0VGFibGU/LihpZCk7XG4gICAgICB9fVxuICAgIC8+XG4gICAgPFRvb2x0aXAgaWQ9e2BkYXRhLXRhYmxlLSR7aWR9YH0gZWZmZWN0PVwic29saWRcIj5cbiAgICAgIDxzcGFuPlxuICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17J2RhdGFzZXRUaXRsZS5zaG93RGF0YVRhYmxlJ30gLz5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L1Rvb2x0aXA+XG4gIDwvRGF0YVRhZ0FjdGlvbj5cbik7XG5cbmNvbnN0IFJlbW92ZURhdGFzZXQgPSAoe2RhdGFzZXRLZXksIHJlbW92ZURhdGFzZXR9OiBSZW1vdmVEYXRhc2V0UHJvcHMpID0+IChcbiAgPERhdGFUYWdBY3Rpb25cbiAgICBjbGFzc05hbWU9XCJkYXRhc2V0LWFjdGlvbiByZW1vdmUtZGF0YXNldFwiXG4gICAgZGF0YS10aXBcbiAgICBkYXRhLWZvcj17YGRlbGV0ZS0ke2RhdGFzZXRLZXl9YH1cbiAgPlxuICAgIDxUcmFzaFxuICAgICAgaGVpZ2h0PVwiMTZweFwiXG4gICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgcmVtb3ZlRGF0YXNldD8uKGRhdGFzZXRLZXkpO1xuICAgICAgfX1cbiAgICAvPlxuICAgIDxUb29sdGlwIGlkPXtgZGVsZXRlLSR7ZGF0YXNldEtleX1gfSBlZmZlY3Q9XCJzb2xpZFwiIHR5cGU9XCJlcnJvclwiPlxuICAgICAgPHNwYW4+XG4gICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXsnZGF0YXNldFRpdGxlLnJlbW92ZURhdGFzZXQnfSAvPlxuICAgICAgPC9zcGFuPlxuICAgIDwvVG9vbHRpcD5cbiAgPC9EYXRhVGFnQWN0aW9uPlxuKTtcblxuRGF0YXNldFRpdGxlRmFjdG9yeS5kZXBzID0gW0RhdGFzZXRUYWdGYWN0b3J5XTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRGF0YXNldFRpdGxlRmFjdG9yeShcbiAgRGF0YXNldFRhZzogUmV0dXJuVHlwZTx0eXBlb2YgRGF0YXNldFRhZ0ZhY3Rvcnk+XG4pOiBSZWFjdC5GQzxEYXRhc2V0VGl0bGVQcm9wcz4ge1xuICBjb25zdCBEYXRhc2V0VGl0bGU6IFJlYWN0LkZDPERhdGFzZXRUaXRsZVByb3BzPiA9ICh7XG4gICAgc2hvd0RhdGFzZXRUYWJsZSxcbiAgICBzaG93RGVsZXRlRGF0YXNldCxcbiAgICBvblRpdGxlQ2xpY2ssXG4gICAgcmVtb3ZlRGF0YXNldCxcbiAgICBkYXRhc2V0LFxuICAgIHVwZGF0ZVRhYmxlQ29sb3JcbiAgfSkgPT4ge1xuICAgIGNvbnN0IFtkaXNwbGF5Q29sb3JQaWNrZXIsIHNldERpc3BsYXlDb2xvclBpY2tlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3Qgcm9vdCA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBkYXRhc2V0SWQgPSBkYXRhc2V0LmlkO1xuICAgIGNvbnN0IF9oYW5kbGVDbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIHNldERpc3BsYXlDb2xvclBpY2tlcighZGlzcGxheUNvbG9yUGlja2VyKTtcbiAgICB9LCBbc2V0RGlzcGxheUNvbG9yUGlja2VyLCBkaXNwbGF5Q29sb3JQaWNrZXJdKTtcblxuICAgIGNvbnN0IF9oYW5kbGVDbG9zZVBpY2tlciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIHNldERpc3BsYXlDb2xvclBpY2tlcihmYWxzZSk7XG4gICAgfSwgW3NldERpc3BsYXlDb2xvclBpY2tlcl0pO1xuICAgIGNvbnN0IF9oYW5kbGVDdXN0b21QaWNrZXIgPSB1c2VDYWxsYmFjayhcbiAgICAgIChjb2xvcjoge3JnYjogUmVjb3JkPHN0cmluZywgbnVtYmVyPn0pID0+IHtcbiAgICAgICAgdXBkYXRlVGFibGVDb2xvcihkYXRhc2V0SWQsIFtjb2xvci5yZ2IuciwgY29sb3IucmdiLmcsIGNvbG9yLnJnYi5iXSk7XG4gICAgICB9LFxuICAgICAgW3VwZGF0ZVRhYmxlQ29sb3IsIGRhdGFzZXRJZF1cbiAgICApO1xuXG4gICAgY29uc3QgX29uQ2xpY2tUaXRsZSA9IHVzZUNhbGxiYWNrKFxuICAgICAgKGU6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmICh0eXBlb2Ygb25UaXRsZUNsaWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgb25UaXRsZUNsaWNrKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHNob3dEYXRhc2V0VGFibGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBpZiAoZGF0YXNldC5kaXNhYmxlRGF0YU9wZXJhdGlvbikgcmV0dXJuO1xuICAgICAgICAgIHNob3dEYXRhc2V0VGFibGUoZGF0YXNldElkKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtvblRpdGxlQ2xpY2ssIHNob3dEYXRhc2V0VGFibGUsIGRhdGFzZXRJZCwgZGF0YXNldC5kaXNhYmxlRGF0YU9wZXJhdGlvbl1cbiAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY3VzdG9tLXBhbGV0dGUtcGFuZWxcIiByZWY9e3Jvb3R9PlxuICAgICAgICA8U3R5bGVkRGF0YXNldFRpdGxlXG4gICAgICAgICAgY2xhc3NOYW1lPVwic291cmNlLWRhdGEtdGl0bGVcIlxuICAgICAgICAgICRjbGlja2FibGU9e0Jvb2xlYW4oc2hvd0RhdGFzZXRUYWJsZSB8fCBvblRpdGxlQ2xpY2spfVxuICAgICAgICA+XG4gICAgICAgICAgPERhdGFzZXRUYWdcbiAgICAgICAgICAgIGRhdGFzZXQ9e2RhdGFzZXR9XG4gICAgICAgICAgICBvbkNsaWNrPXtfb25DbGlja1RpdGxlfVxuICAgICAgICAgICAgdXBkYXRlVGFibGVDb2xvcj17dXBkYXRlVGFibGVDb2xvcn1cbiAgICAgICAgICAgIG9uQ2xpY2tTcXVhcmU9e19oYW5kbGVDbGlja31cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxQb3J0YWxlZFxuICAgICAgICAgICAgaXNPcGVuZWQ9e2Rpc3BsYXlDb2xvclBpY2tlciAhPT0gZmFsc2V9XG4gICAgICAgICAgICBsZWZ0PXsxMTB9XG4gICAgICAgICAgICB0b3A9ey01MH1cbiAgICAgICAgICAgIG9uQ2xvc2U9e19oYW5kbGVDbG9zZVBpY2tlcn1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Q3VzdG9tUGlja2VyIGNvbG9yPXtyZ2JUb0hleChkYXRhc2V0LmNvbG9yKX0gb25DaGFuZ2U9e19oYW5kbGVDdXN0b21QaWNrZXJ9IC8+XG4gICAgICAgICAgPC9Qb3J0YWxlZD5cbiAgICAgICAgICB7c2hvd0RhdGFzZXRUYWJsZSA/IChcbiAgICAgICAgICAgIDxDZW50ZXJGbGV4Ym94IGNsYXNzTmFtZT1cInNvdXJjZS1kYXRhLWFycm93XCI+XG4gICAgICAgICAgICAgIDxBcnJvd1JpZ2h0IGhlaWdodD1cIjEycHhcIiAvPlxuICAgICAgICAgICAgPC9DZW50ZXJGbGV4Ym94PlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIHtzaG93RGF0YXNldFRhYmxlICYmICFkYXRhc2V0LmRpc2FibGVEYXRhT3BlcmF0aW9uID8gKFxuICAgICAgICAgICAgPFNob3dEYXRhVGFibGUgaWQ9e2RhdGFzZXRJZH0gc2hvd0RhdGFzZXRUYWJsZT17c2hvd0RhdGFzZXRUYWJsZX0gLz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7c2hvd0RlbGV0ZURhdGFzZXQgPyAoXG4gICAgICAgICAgICA8UmVtb3ZlRGF0YXNldCBkYXRhc2V0S2V5PXtkYXRhc2V0SWR9IHJlbW92ZURhdGFzZXQ9e3JlbW92ZURhdGFzZXR9IC8+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvU3R5bGVkRGF0YXNldFRpdGxl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