UNPKG

kepler.gl

Version:

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

144 lines (143 loc) 28.7 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.ConfigGroupCollapsibleHeader = exports.ConfigGroupCollapsibleContent = void 0; exports.LayerConfigGroupLabelFactory = LayerConfigGroupLabelFactory; exports["default"] = exports.StyledLayerConfigGroupAction = exports.StyledLayerConfigGroup = exports.StyledConfigGroupHeader = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); 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 _classnames = _interopRequireDefault(require("classnames")); var _reactIntl = require("react-intl"); var _switch = _interopRequireDefault(require("../../common/switch")); var _infoHelper = _interopRequireDefault(require("../../common/info-helper")); var _icons = require("../../common/icons"); var _styledComponents2 = require("../../common/styled-components"); var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7; // 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 StyledLayerConfigGroupAction = exports.StyledLayerConfigGroupAction = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n color: ", ";\n"])), function (props) { return props.theme.textColor; }); var ConfigGroupCollapsibleContent = exports.ConfigGroupCollapsibleContent = _styledComponents["default"].div.attrs({ className: 'layer-config-group__content__collapsible' })(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n transition: max-height 0.3s ease-out;\n height: max-content;\n max-height: 1200px;\n overflow: auto;\n"]))); var ConfigGroupCollapsibleHeader = exports.ConfigGroupCollapsibleHeader = _styledComponents["default"].div.attrs({ className: 'layer-config-group__header__collapsible' })(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: visible;\n overflow: hidden;\n max-height: 0;\n"]))); var StyledLayerConfigGroup = exports.StyledLayerConfigGroup = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n padding-left: ", "px;\n margin-bottom: ", "px;\n\n &.disabled {\n opacity: 0.3;\n pointer-events: none;\n }\n &.collapsed {\n .layer-config-group__header__collapsible {\n overflow: visible;\n max-height: 600px;\n }\n .layer-config-group__content {\n .layer-config-group__content__collapsible {\n overflow: hidden;\n max-height: 0;\n }\n }\n }\n"])), function (props) { return props.theme.layerConfigGroupPaddingLeft; }, function (props) { return props.theme.layerConfigGroupMarginBottom; }); var StyledConfigGroupHeader = exports.StyledConfigGroupHeader = _styledComponents["default"].div.withConfig({ shouldForwardProp: _styledComponents2.shouldForwardProp }).attrs({ className: 'layer-config-group__header' })(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n cursor: default;\n\n &:hover {\n ", "\n .layer-config-group__label {\n color: ", ";\n }\n\n .layer-config-group__action {\n color: ", ";\n }\n }\n"])), function (props) { return props.collapsible && 'cursor: pointer;'; }, function (props) { return props.theme.textColorHl; }, function (props) { return props.theme.textColorHl; }); var ConfigGroupContent = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n &.disabled {\n opacity: 0.3;\n pointer-events: none;\n * {\n pointer-events: none;\n }\n }\n"]))); LayerConfigGroupLabelFactory.deps = [_infoHelper["default"]]; function LayerConfigGroupLabelFactory(InfoHelper) { var StyledLayerConfigGroupLabel = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n border-left: ", " solid\n ", ";\n line-height: 12px;\n margin-left: ", ";\n padding-left: ", ";\n\n display: flex;\n align-items: center;\n\n span {\n color: ", ";\n font-weight: 500;\n letter-spacing: 0.2px;\n text-transform: capitalize;\n margin-left: ", ";\n font-size: ", ";\n }\n "])), function (props) { return props.theme.layerConfigGroupLabelBorderLeft; }, function (props) { return props.theme.labelColor; }, function (props) { return props.theme.layerConfigGroupLabelMargin; }, function (props) { return props.theme.layerConfigGroupLabelPadding; }, function (props) { return props.theme.textColor; }, function (props) { return props.theme.layerConfigGroupLabelLabelMargin; }, function (props) { return props.theme.layerConfigGroupLabelLabelFontSize; }); var LayerConfigGroupLabel = function LayerConfigGroupLabel(_ref) { var label = _ref.label, description = _ref.description; return /*#__PURE__*/_react["default"].createElement(StyledLayerConfigGroupLabel, { className: "layer-config-group__label" }, /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement(_reactIntl.FormattedMessage, { id: label || 'misc.empty', defaultMessage: label })), description && /*#__PURE__*/_react["default"].createElement(InfoHelper, { description: description, id: label })); }; return LayerConfigGroupLabel; } LayerConfigGroupFactory.deps = [LayerConfigGroupLabelFactory]; function nop() { return; } function LayerConfigGroupFactory(LayerConfigGroupLabel) { var LayerConfigGroup = function LayerConfigGroup(_ref2) { var label = _ref2.label, children = _ref2.children, property = _ref2.property, layer = _ref2.layer, _ref2$onChange = _ref2.onChange, _onChange2 = _ref2$onChange === void 0 ? nop : _ref2$onChange, _ref2$collapsible = _ref2.collapsible, collapsible = _ref2$collapsible === void 0 ? false : _ref2$collapsible, _ref2$description = _ref2.description, description = _ref2$description === void 0 ? '' : _ref2$description, _ref2$disabled = _ref2.disabled, disabled = _ref2$disabled === void 0 ? false : _ref2$disabled, _ref2$expanded = _ref2.expanded, expanded = _ref2$expanded === void 0 ? false : _ref2$expanded, _ref2$IconComponent = _ref2.IconComponent, IconComponent = _ref2$IconComponent === void 0 ? _icons.VertThreeDots : _ref2$IconComponent; var _useState = (0, _react.useState)(!expanded), _useState2 = (0, _slicedToArray2["default"])(_useState, 2), collapsed = _useState2[0], toggleCollapsed = _useState2[1]; var onToggleCollapsed = (0, _react.useCallback)(function () { collapsible && toggleCollapsed(!collapsed); }, [collapsed, toggleCollapsed, collapsible]); return /*#__PURE__*/_react["default"].createElement(StyledLayerConfigGroup, { className: (0, _classnames["default"])('layer-config-group', { collapsed: collapsed, disabled: disabled }) }, /*#__PURE__*/_react["default"].createElement(StyledConfigGroupHeader, { onClick: onToggleCollapsed, collapsible: collapsible }, /*#__PURE__*/_react["default"].createElement(LayerConfigGroupLabel, { label: label, description: description, collapsed: collapsed }), /*#__PURE__*/_react["default"].createElement(StyledLayerConfigGroupAction, { className: "layer-config-group__action" }, property ? /*#__PURE__*/_react["default"].createElement(_switch["default"], { checked: layer === null || layer === void 0 ? void 0 : layer.config.visConfig[property], id: "".concat(layer === null || layer === void 0 ? void 0 : layer.id, "-").concat(property), onChange: function onChange() { return _onChange2 === null || _onChange2 === void 0 ? void 0 : _onChange2((0, _defineProperty2["default"])({}, property, !(layer !== null && layer !== void 0 && layer.config.visConfig[property]))); } }) : null, collapsible ? /*#__PURE__*/_react["default"].createElement(IconComponent, { height: "18px" }) : null)), /*#__PURE__*/_react["default"].createElement(ConfigGroupContent, { className: (0, _classnames["default"])('layer-config-group__content', { disabled: property && !(layer !== null && layer !== void 0 && layer.config.visConfig[property]) }) }, children)); }; return LayerConfigGroup; } var _default = exports["default"] = LayerConfigGroupFactory; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY2xhc3NuYW1lcyIsIl9yZWFjdEludGwiLCJfc3dpdGNoIiwiX2luZm9IZWxwZXIiLCJfaWNvbnMiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfdGVtcGxhdGVPYmplY3Q1IiwiX3RlbXBsYXRlT2JqZWN0NiIsIl90ZW1wbGF0ZU9iamVjdDciLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJTdHlsZWRMYXllckNvbmZpZ0dyb3VwQWN0aW9uIiwiZXhwb3J0cyIsInN0eWxlZCIsImRpdiIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwicHJvcHMiLCJ0aGVtZSIsInRleHRDb2xvciIsIkNvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50IiwiYXR0cnMiLCJjbGFzc05hbWUiLCJDb25maWdHcm91cENvbGxhcHNpYmxlSGVhZGVyIiwiU3R5bGVkTGF5ZXJDb25maWdHcm91cCIsImxheWVyQ29uZmlnR3JvdXBQYWRkaW5nTGVmdCIsImxheWVyQ29uZmlnR3JvdXBNYXJnaW5Cb3R0b20iLCJTdHlsZWRDb25maWdHcm91cEhlYWRlciIsIndpdGhDb25maWciLCJzaG91bGRGb3J3YXJkUHJvcCIsImNvbGxhcHNpYmxlIiwidGV4dENvbG9ySGwiLCJDb25maWdHcm91cENvbnRlbnQiLCJMYXllckNvbmZpZ0dyb3VwTGFiZWxGYWN0b3J5IiwiZGVwcyIsIkluZm9IZWxwZXJGYWN0b3J5IiwiSW5mb0hlbHBlciIsIlN0eWxlZExheWVyQ29uZmlnR3JvdXBMYWJlbCIsImxheWVyQ29uZmlnR3JvdXBMYWJlbEJvcmRlckxlZnQiLCJsYWJlbENvbG9yIiwibGF5ZXJDb25maWdHcm91cExhYmVsTWFyZ2luIiwibGF5ZXJDb25maWdHcm91cExhYmVsUGFkZGluZyIsImxheWVyQ29uZmlnR3JvdXBMYWJlbExhYmVsTWFyZ2luIiwibGF5ZXJDb25maWdHcm91cExhYmVsTGFiZWxGb250U2l6ZSIsIkxheWVyQ29uZmlnR3JvdXBMYWJlbCIsIl9yZWYiLCJsYWJlbCIsImRlc2NyaXB0aW9uIiwiY3JlYXRlRWxlbWVudCIsIkZvcm1hdHRlZE1lc3NhZ2UiLCJpZCIsImRlZmF1bHRNZXNzYWdlIiwiTGF5ZXJDb25maWdHcm91cEZhY3RvcnkiLCJub3AiLCJMYXllckNvbmZpZ0dyb3VwIiwiX3JlZjIiLCJjaGlsZHJlbiIsInByb3BlcnR5IiwibGF5ZXIiLCJfcmVmMiRvbkNoYW5nZSIsIm9uQ2hhbmdlIiwiX3JlZjIkY29sbGFwc2libGUiLCJfcmVmMiRkZXNjcmlwdGlvbiIsIl9yZWYyJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJfcmVmMiRleHBhbmRlZCIsImV4cGFuZGVkIiwiX3JlZjIkSWNvbkNvbXBvbmVudCIsIkljb25Db21wb25lbnQiLCJWZXJ0VGhyZWVEb3RzIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiY29sbGFwc2VkIiwidG9nZ2xlQ29sbGFwc2VkIiwib25Ub2dnbGVDb2xsYXBzZWQiLCJ1c2VDYWxsYmFjayIsImNsYXNzbmFtZXMiLCJvbkNsaWNrIiwiY2hlY2tlZCIsImNvbmZpZyIsInZpc0NvbmZpZyIsImNvbmNhdCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJoZWlnaHQiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaWRlLXBhbmVsL2xheWVyLXBhbmVsL2xheWVyLWNvbmZpZy1ncm91cC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdyZWFjdC1pbnRsJztcbmltcG9ydCBTd2l0Y2ggZnJvbSAnLi4vLi4vY29tbW9uL3N3aXRjaCc7XG5pbXBvcnQgSW5mb0hlbHBlckZhY3RvcnkgZnJvbSAnLi4vLi4vY29tbW9uL2luZm8taGVscGVyJztcbmltcG9ydCB7VmVydFRocmVlRG90c30gZnJvbSAnLi4vLi4vY29tbW9uL2ljb25zJztcbmltcG9ydCB7c2hvdWxkRm9yd2FyZFByb3B9IGZyb20gJy4uLy4uL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge0xheWVyfSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5pbXBvcnQge0xheWVyVmlzQ29uZmlnfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgTGF5ZXJDb25maWdHcm91cExhYmVsUHJvcHMgPSB7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgY29sbGFwc2VkPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIExheWVyQ29uZmlnR3JvdXBQcm9wcyA9IHtcbiAgbGF5ZXI/OiBMYXllcjtcbiAgbGFiZWw6IHN0cmluZztcbiAgcHJvcGVydHk/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBjb2xsYXBzaWJsZT86IGJvb2xlYW47XG4gIGV4cGFuZGVkPzogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBvbkNoYW5nZT86IChuZXdWaXNDb25maWc6IFBhcnRpYWw8TGF5ZXJWaXNDb25maWc+KSA9PiB2b2lkO1xuICBJY29uQ29tcG9uZW50PzogUmVhY3QuRWxlbWVudFR5cGU7XG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZExheWVyQ29uZmlnR3JvdXBBY3Rpb24gPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuYDtcblxuZXhwb3J0IGNvbnN0IENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50ID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2xheWVyLWNvbmZpZy1ncm91cF9fY29udGVudF9fY29sbGFwc2libGUnXG59KWBcbiAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAwLjNzIGVhc2Utb3V0O1xuICBoZWlnaHQ6IG1heC1jb250ZW50O1xuICBtYXgtaGVpZ2h0OiAxMjAwcHg7XG4gIG92ZXJmbG93OiBhdXRvO1xuYDtcblxuZXhwb3J0IGNvbnN0IENvbmZpZ0dyb3VwQ29sbGFwc2libGVIZWFkZXIgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnbGF5ZXItY29uZmlnLWdyb3VwX19oZWFkZXJfX2NvbGxhcHNpYmxlJ1xufSlgXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBtYXgtaGVpZ2h0OiAwO1xuYDtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZExheWVyQ29uZmlnR3JvdXAgPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nLWxlZnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGF5ZXJDb25maWdHcm91cFBhZGRpbmdMZWZ0fXB4O1xuICBtYXJnaW4tYm90dG9tOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxheWVyQ29uZmlnR3JvdXBNYXJnaW5Cb3R0b219cHg7XG5cbiAgJi5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC4zO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG4gICYuY29sbGFwc2VkIHtcbiAgICAubGF5ZXItY29uZmlnLWdyb3VwX19oZWFkZXJfX2NvbGxhcHNpYmxlIHtcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgbWF4LWhlaWdodDogNjAwcHg7XG4gICAgfVxuICAgIC5sYXllci1jb25maWctZ3JvdXBfX2NvbnRlbnQge1xuICAgICAgLmxheWVyLWNvbmZpZy1ncm91cF9fY29udGVudF9fY29sbGFwc2libGUge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXgtaGVpZ2h0OiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuYDtcblxuaW50ZXJmYWNlIFN0eWxlZENvbmZpZ0dyb3VwSGVhZGVyUHJvcHMge1xuICBjb2xsYXBzaWJsZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRDb25maWdHcm91cEhlYWRlciA9IHN0eWxlZC5kaXYud2l0aENvbmZpZyh7c2hvdWxkRm9yd2FyZFByb3B9KS5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2xheWVyLWNvbmZpZy1ncm91cF9faGVhZGVyJ1xufSk8U3R5bGVkQ29uZmlnR3JvdXBIZWFkZXJQcm9wcz5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgY3Vyc29yOiBkZWZhdWx0O1xuXG4gICY6aG92ZXIge1xuICAgICR7cHJvcHMgPT4gcHJvcHMuY29sbGFwc2libGUgJiYgJ2N1cnNvcjogcG9pbnRlcjsnfVxuICAgIC5sYXllci1jb25maWctZ3JvdXBfX2xhYmVsIHtcbiAgICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgICB9XG5cbiAgICAubGF5ZXItY29uZmlnLWdyb3VwX19hY3Rpb24ge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9ySGx9O1xuICAgIH1cbiAgfVxuYDtcblxuY29uc3QgQ29uZmlnR3JvdXBDb250ZW50ID0gc3R5bGVkLmRpdmBcbiAgJi5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC4zO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICoge1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuICB9XG5gO1xuXG5MYXllckNvbmZpZ0dyb3VwTGFiZWxGYWN0b3J5LmRlcHMgPSBbSW5mb0hlbHBlckZhY3RvcnldO1xuXG5leHBvcnQgZnVuY3Rpb24gTGF5ZXJDb25maWdHcm91cExhYmVsRmFjdG9yeShJbmZvSGVscGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBJbmZvSGVscGVyRmFjdG9yeT4pIHtcbiAgY29uc3QgU3R5bGVkTGF5ZXJDb25maWdHcm91cExhYmVsID0gc3R5bGVkLmRpdmBcbiAgICBib3JkZXItbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ0dyb3VwTGFiZWxCb3JkZXJMZWZ0fSBzb2xpZFxuICAgICAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYWJlbENvbG9yfTtcbiAgICBsaW5lLWhlaWdodDogMTJweDtcbiAgICBtYXJnaW4tbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ0dyb3VwTGFiZWxNYXJnaW59O1xuICAgIHBhZGRpbmctbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ0dyb3VwTGFiZWxQYWRkaW5nfTtcblxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgIHNwYW4ge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICBsZXR0ZXItc3BhY2luZzogMC4ycHg7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICAgIG1hcmdpbi1sZWZ0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxheWVyQ29uZmlnR3JvdXBMYWJlbExhYmVsTWFyZ2lufTtcbiAgICAgIGZvbnQtc2l6ZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ0dyb3VwTGFiZWxMYWJlbEZvbnRTaXplfTtcbiAgICB9XG4gIGA7XG5cbiAgY29uc3QgTGF5ZXJDb25maWdHcm91cExhYmVsOiBSZWFjdC5GQzxMYXllckNvbmZpZ0dyb3VwTGFiZWxQcm9wcz4gPSAoe2xhYmVsLCBkZXNjcmlwdGlvbn0pID0+IChcbiAgICA8U3R5bGVkTGF5ZXJDb25maWdHcm91cExhYmVsIGNsYXNzTmFtZT1cImxheWVyLWNvbmZpZy1ncm91cF9fbGFiZWxcIj5cbiAgICAgIDxzcGFuPlxuICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17bGFiZWwgfHwgJ21pc2MuZW1wdHknfSBkZWZhdWx0TWVzc2FnZT17bGFiZWx9IC8+XG4gICAgICA8L3NwYW4+XG4gICAgICB7ZGVzY3JpcHRpb24gJiYgPEluZm9IZWxwZXIgZGVzY3JpcHRpb249e2Rlc2NyaXB0aW9ufSBpZD17bGFiZWx9IC8+fVxuICAgIDwvU3R5bGVkTGF5ZXJDb25maWdHcm91cExhYmVsPlxuICApO1xuXG4gIHJldHVybiBMYXllckNvbmZpZ0dyb3VwTGFiZWw7XG59XG5cbkxheWVyQ29uZmlnR3JvdXBGYWN0b3J5LmRlcHMgPSBbTGF5ZXJDb25maWdHcm91cExhYmVsRmFjdG9yeV07XG5cbmZ1bmN0aW9uIG5vcCgpIHtcbiAgcmV0dXJuO1xufVxuZnVuY3Rpb24gTGF5ZXJDb25maWdHcm91cEZhY3RvcnkoXG4gIExheWVyQ29uZmlnR3JvdXBMYWJlbDogUmV0dXJuVHlwZTx0eXBlb2YgTGF5ZXJDb25maWdHcm91cExhYmVsRmFjdG9yeT5cbikge1xuICBjb25zdCBMYXllckNvbmZpZ0dyb3VwOiBSZWFjdC5GQzxMYXllckNvbmZpZ0dyb3VwUHJvcHM+ID0gKHtcbiAgICBsYWJlbCxcbiAgICBjaGlsZHJlbixcbiAgICBwcm9wZXJ0eSxcbiAgICBsYXllcixcbiAgICBvbkNoYW5nZSA9IG5vcCxcbiAgICBjb2xsYXBzaWJsZSA9IGZhbHNlLFxuICAgIGRlc2NyaXB0aW9uID0gJycsXG4gICAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgICBleHBhbmRlZCA9IGZhbHNlLFxuICAgIEljb25Db21wb25lbnQgPSBWZXJ0VGhyZWVEb3RzXG4gIH0pID0+IHtcbiAgICBjb25zdCBbY29sbGFwc2VkLCB0b2dnbGVDb2xsYXBzZWRdID0gdXNlU3RhdGUoIWV4cGFuZGVkKTtcbiAgICBjb25zdCBvblRvZ2dsZUNvbGxhcHNlZCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGNvbGxhcHNpYmxlICYmIHRvZ2dsZUNvbGxhcHNlZCghY29sbGFwc2VkKTtcbiAgICB9LCBbY29sbGFwc2VkLCB0b2dnbGVDb2xsYXBzZWQsIGNvbGxhcHNpYmxlXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZExheWVyQ29uZmlnR3JvdXAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdsYXllci1jb25maWctZ3JvdXAnLCB7Y29sbGFwc2VkLCBkaXNhYmxlZH0pfT5cbiAgICAgICAgPFN0eWxlZENvbmZpZ0dyb3VwSGVhZGVyIG9uQ2xpY2s9e29uVG9nZ2xlQ29sbGFwc2VkfSBjb2xsYXBzaWJsZT17Y29sbGFwc2libGV9PlxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwTGFiZWwgbGFiZWw9e2xhYmVsfSBkZXNjcmlwdGlvbj17ZGVzY3JpcHRpb259IGNvbGxhcHNlZD17Y29sbGFwc2VkfSAvPlxuICAgICAgICAgIDxTdHlsZWRMYXllckNvbmZpZ0dyb3VwQWN0aW9uIGNsYXNzTmFtZT1cImxheWVyLWNvbmZpZy1ncm91cF9fYWN0aW9uXCI+XG4gICAgICAgICAgICB7cHJvcGVydHkgPyAoXG4gICAgICAgICAgICAgIDxTd2l0Y2hcbiAgICAgICAgICAgICAgICBjaGVja2VkPXtsYXllcj8uY29uZmlnLnZpc0NvbmZpZ1twcm9wZXJ0eV19XG4gICAgICAgICAgICAgICAgaWQ9e2Ake2xheWVyPy5pZH0tJHtwcm9wZXJ0eX1gfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBvbkNoYW5nZT8uKHtbcHJvcGVydHldOiAhbGF5ZXI/LmNvbmZpZy52aXNDb25maWdbcHJvcGVydHldfSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIHtjb2xsYXBzaWJsZSA/IDxJY29uQ29tcG9uZW50IGhlaWdodD1cIjE4cHhcIiAvPiA6IG51bGx9XG4gICAgICAgICAgPC9TdHlsZWRMYXllckNvbmZpZ0dyb3VwQWN0aW9uPlxuICAgICAgICA8L1N0eWxlZENvbmZpZ0dyb3VwSGVhZGVyPlxuICAgICAgICA8Q29uZmlnR3JvdXBDb250ZW50XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdsYXllci1jb25maWctZ3JvdXBfX2NvbnRlbnQnLCB7XG4gICAgICAgICAgICBkaXNhYmxlZDogcHJvcGVydHkgJiYgIWxheWVyPy5jb25maWcudmlzQ29uZmlnW3Byb3BlcnR5XVxuICAgICAgICAgIH0pfVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L0NvbmZpZ0dyb3VwQ29udGVudD5cbiAgICAgIDwvU3R5bGVkTGF5ZXJDb25maWdHcm91cD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiBMYXllckNvbmZpZ0dyb3VwO1xufVxuXG5leHBvcnQgZGVmYXVsdCBMYXllckNvbmZpZ0dyb3VwRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEs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