UNPKG

kepler.gl.geoiq

Version:

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

221 lines (175 loc) 26.6 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof3 = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.InputBoxContainer = exports.ColorSelectorInput = exports.ColorBlock = void 0; var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _colorUtils = require("../../../utils/color-utils"); var _singleColorPalette = _interopRequireDefault(require("./single-color-palette")); var _colorRangeSelector = _interopRequireDefault(require("./color-range-selector")); var _colorPalette = _interopRequireDefault(require("./color-palette")); var _styledComponents2 = require("../../common/styled-components"); var _reactOnclickoutside = _interopRequireDefault(require("react-onclickoutside")); var _templateObject, _templateObject2, _templateObject3; 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); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(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; } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } var ColorBlock = exports.ColorBlock = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n width: 32px;\n height: 18px;\n border-radius: 1px;\n background-color: ", ";\n"])), function (props) { return "rgb(".concat(props.color.slice(0, 3).join(','), ")"); }); var ColorSelectorInput = exports.ColorSelectorInput = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n ", ";\n height: ", ";\n\n .color-selector__selector__label {\n text-transform: capitalize;\n font-size: 12px;\n text-align: center;\n color: ", ";\n }\n"])), function (props) { return props.inputTheme === 'secondary' ? props.theme.secondaryInput : props.theme.input; }, function (props) { return props.theme.inputBoxHeight; }, function (props) { return props.theme.inputPlaceholderColor; }); var InputBoxContainer = exports.InputBoxContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n\n .color-select__input-group {\n flex-grow: 1;\n }\n .color-select__input-group:nth-child(2) {\n margin-left: 12px;\n }\n"]))); var ColorSelector = /*#__PURE__*/function (_Component) { (0, _inherits2["default"])(ColorSelector, _Component); var _super = _createSuper(ColorSelector); function ColorSelector() { var _this; (0, _classCallCheck2["default"])(this, ColorSelector); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _super.call.apply(_super, [this].concat(args)); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", { showDropdown: false }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "node", (0, _react.createRef)()); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleClickOutside", function (e) { if (_this.props.colorUI && _this.props.colorUI.showSketcher) { // if sketcher is open, let sketch to close itself first return; } _this._closePanelDropdown(); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_getEditing", function () { return _this.props.colorUI ? _this.props.colorUI.showDropdown : _this.state.showDropdown; }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_closePanelDropdown", function () { if (_this._getEditing() === false) { return; } if (_this.props.setColorUI) { _this.props.setColorUI({ showDropdown: false, showSketcher: false }); } else { _this.setState({ showDropdown: false }); } }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_onSelectColor", function (color, e) { e.stopPropagation(); var editing = _this._getEditing(); if (_this.props.colorSets[editing]) { _this.props.colorSets[editing].setColor(color); } }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_showDropdown", function (e, i) { e.stopPropagation(); e.preventDefault(); if (_this.props.setColorUI) { _this.props.setColorUI({ showDropdown: i }); } else { _this.setState({ showDropdown: i }); } }); return _this; } (0, _createClass2["default"])(ColorSelector, [{ key: "render", value: function render() { var _this2 = this; var _this$props = this.props, colorSets = _this$props.colorSets, disabled = _this$props.disabled, inputTheme = _this$props.inputTheme, colorUI = _this$props.colorUI; var editing = this._getEditing(); var currentEditing = colorSets[editing] && (0, _typeof2["default"])(colorSets[editing]) === 'object'; return (/*#__PURE__*/_react["default"].createElement("div", { className: "color-selector", ref: this.node }, /*#__PURE__*/_react["default"].createElement(InputBoxContainer, null, colorSets.map(function (cSet, i) { return (/*#__PURE__*/_react["default"].createElement("div", { className: "color-select__input-group", key: i }, /*#__PURE__*/_react["default"].createElement(ColorSelectorInput, { className: "color-selector__selector", active: editing === i, disabled: disabled, inputTheme: inputTheme, onMouseDown: function onMouseDown(e) { return _this2._showDropdown(e, i); } }, cSet.isRange ? /*#__PURE__*/_react["default"].createElement(_colorPalette["default"], { colors: cSet.selectedColor.colors }) : /*#__PURE__*/_react["default"].createElement(ColorBlock, { className: "color-selector__selector__block", color: cSet.selectedColor }), cSet.label ? /*#__PURE__*/_react["default"].createElement("div", { className: "color-selector__selector__label" }, cSet.label) : null)) ); })), currentEditing ? /*#__PURE__*/_react["default"].createElement(_styledComponents2.StyledPanelDropdown, { className: "color-selector__dropdown" }, colorSets[editing].isRange ? /*#__PURE__*/_react["default"].createElement(_colorRangeSelector["default"], { selectedColorRange: colorSets[editing].selectedColor, onSelectColorRange: this._onSelectColor, setColorPaletteUI: this.props.setColorUI, colorPaletteUI: colorUI }) : /*#__PURE__*/_react["default"].createElement(_singleColorPalette["default"], { selectedColor: (0, _colorUtils.rgbToHex)(colorSets[editing].selectedColor), onSelectColor: this._onSelectColor })) : null) ); } }]); return ColorSelector; }(_react.Component); (0, _defineProperty2["default"])(ColorSelector, "propTypes", { colorSets: _propTypes["default"].arrayOf(_propTypes["default"].shape({ selectedColor: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].any), _propTypes["default"].object]), setColor: _propTypes["default"].func.isRequired, isRange: _propTypes["default"].bool, label: _propTypes["default"].string })), colorUI: _propTypes["default"].shape({ customPalette: _propTypes["default"].object, showSketcher: _propTypes["default"].oneOfType([_propTypes["default"].bool, _propTypes["default"].number]), showDropdown: _propTypes["default"].oneOfType([_propTypes["default"].bool, _propTypes["default"].number]), colorRangeConfig: _propTypes["default"].object }), inputTheme: _propTypes["default"].string, disabled: _propTypes["default"].bool, setColorUI: _propTypes["default"].func }); (0, _defineProperty2["default"])(ColorSelector, "defaultProps", { colorSets: [] }); var _default = exports["default"] = (0, _reactOnclickoutside["default"])(ColorSelector); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvY29sb3Itc2VsZWN0b3IuanMiXSwibmFtZXMiOlsiQ29sb3JCbG9jayIsInN0eWxlZCIsImRpdiIsInByb3BzIiwiY29sb3IiLCJzbGljZSIsImpvaW4iLCJDb2xvclNlbGVjdG9ySW5wdXQiLCJpbnB1dFRoZW1lIiwidGhlbWUiLCJzZWNvbmRhcnlJbnB1dCIsImlucHV0IiwiaW5wdXRCb3hIZWlnaHQiLCJpbnB1dFBsYWNlaG9sZGVyQ29sb3IiLCJJbnB1dEJveENvbnRhaW5lciIsIkNvbG9yU2VsZWN0b3IiLCJzaG93RHJvcGRvd24iLCJlIiwiY29sb3JVSSIsInNob3dTa2V0Y2hlciIsIl9jbG9zZVBhbmVsRHJvcGRvd24iLCJzdGF0ZSIsIl9nZXRFZGl0aW5nIiwic2V0Q29sb3JVSSIsInNldFN0YXRlIiwic3RvcFByb3BhZ2F0aW9uIiwiZWRpdGluZyIsImNvbG9yU2V0cyIsInNldENvbG9yIiwiaSIsInByZXZlbnREZWZhdWx0IiwiZGlzYWJsZWQiLCJjdXJyZW50RWRpdGluZyIsIm5vZGUiLCJtYXAiLCJjU2V0IiwiX3Nob3dEcm9wZG93biIsImlzUmFuZ2UiLCJzZWxlY3RlZENvbG9yIiwiY29sb3JzIiwibGFiZWwiLCJfb25TZWxlY3RDb2xvciIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsImFycmF5T2YiLCJzaGFwZSIsIm9uZU9mVHlwZSIsImFueSIsIm9iamVjdCIsImZ1bmMiLCJpc1JlcXVpcmVkIiwiYm9vbCIsInN0cmluZyIsImN1c3RvbVBhbGV0dGUiLCJudW1iZXIiLCJjb2xvclJhbmdlQ29uZmlnIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7O0FBRU8sSUFBTUEsVUFBVSx3QkFBR0MsNkJBQU9DLEdBQVYsNEtBSUQsVUFBQUMsS0FBSztBQUFBLHVCQUFXQSxLQUFLLENBQUNDLEtBQU4sQ0FBWUMsS0FBWixDQUFrQixDQUFsQixFQUFxQixDQUFyQixFQUF3QkMsSUFBeEIsQ0FBNkIsR0FBN0IsQ0FBWDtBQUFBLENBSkosQ0FBaEI7O0FBT0EsSUFBTUMsa0JBQWtCLGdDQUFHTiw2QkFBT0MsR0FBVixvUUFDM0IsVUFBQUMsS0FBSztBQUFBLFNBQ0xBLEtBQUssQ0FBQ0ssVUFBTixLQUFxQixXQUFyQixHQUNJTCxLQUFLLENBQUNNLEtBQU4sQ0FBWUMsY0FEaEIsR0FFSVAsS0FBSyxDQUFDTSxLQUFOLENBQVlFLEtBSFg7QUFBQSxDQURzQixFQUtuQixVQUFBUixLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDTSxLQUFOLENBQVlHLGNBQWhCO0FBQUEsQ0FMYyxFQVdsQixVQUFBVCxLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDTSxLQUFOLENBQVlJLHFCQUFoQjtBQUFBLENBWGEsQ0FBeEI7O0FBZUEsSUFBTUMsaUJBQWlCLCtCQUFHYiw2QkFBT0MsR0FBVixtUkFBdkI7O0lBWURhLGE7Ozs7Ozs7Ozs7Ozs7Ozs4RkE0Qkk7QUFDTkMsTUFBQUEsWUFBWSxFQUFFO0FBRFIsSzs2RkFJRCx1QjsyR0FFYyxVQUFBQyxDQUFDLEVBQUk7QUFDeEIsVUFBSSxNQUFLZCxLQUFMLENBQVdlLE9BQVgsSUFBc0IsTUFBS2YsS0FBTCxDQUFXZSxPQUFYLENBQW1CQyxZQUE3QyxFQUEyRDtBQUN6RDtBQUNBO0FBQ0Q7O0FBQ0QsWUFBS0MsbUJBQUw7QUFDRCxLO29HQUVhLFlBQU07QUFDbEIsYUFBTyxNQUFLakIsS0FBTCxDQUFXZSxPQUFYLEdBQXFCLE1BQUtmLEtBQUwsQ0FBV2UsT0FBWCxDQUFtQkYsWUFBeEMsR0FBdUQsTUFBS0ssS0FBTCxDQUFXTCxZQUF6RTtBQUNELEs7NEdBRXFCLFlBQU07QUFDMUIsVUFBSSxNQUFLTSxXQUFMLE9BQXVCLEtBQTNCLEVBQWtDO0FBQ2hDO0FBQ0Q7O0FBQ0QsVUFBSSxNQUFLbkIsS0FBTCxDQUFXb0IsVUFBZixFQUEyQjtBQUN6QixjQUFLcEIsS0FBTCxDQUFXb0IsVUFBWCxDQUFzQjtBQUFDUCxVQUFBQSxZQUFZLEVBQUUsS0FBZjtBQUFzQkcsVUFBQUEsWUFBWSxFQUFFO0FBQXBDLFNBQXRCO0FBQ0QsT0FGRCxNQUVPO0FBQ0wsY0FBS0ssUUFBTCxDQUFjO0FBQUNSLFVBQUFBLFlBQVksRUFBRTtBQUFmLFNBQWQ7QUFDRDtBQUNGLEs7dUdBRWdCLFVBQUNaLEtBQUQsRUFBUWEsQ0FBUixFQUFjO0FBQzdCQSxNQUFBQSxDQUFDLENBQUNRLGVBQUY7O0FBQ0EsVUFBTUMsT0FBTyxHQUFHLE1BQUtKLFdBQUwsRUFBaEI7O0FBQ0EsVUFBSSxNQUFLbkIsS0FBTCxDQUFXd0IsU0FBWCxDQUFxQkQsT0FBckIsQ0FBSixFQUFtQztBQUNqQyxjQUFLdkIsS0FBTCxDQUFXd0IsU0FBWCxDQUFxQkQsT0FBckIsRUFBOEJFLFFBQTlCLENBQXVDeEIsS0FBdkM7QUFDRDtBQUNGLEs7c0dBRWUsVUFBQ2EsQ0FBRCxFQUFJWSxDQUFKLEVBQVU7QUFDeEJaLE1BQUFBLENBQUMsQ0FBQ1EsZUFBRjtBQUNBUixNQUFBQSxDQUFDLENBQUNhLGNBQUY7O0FBQ0EsVUFBSSxNQUFLM0IsS0FBTCxDQUFXb0IsVUFBZixFQUEyQjtBQUN6QixjQUFLcEIsS0FBTCxDQUFXb0IsVUFBWCxDQUFzQjtBQUFDUCxVQUFBQSxZQUFZLEVBQUVhO0FBQWYsU0FBdEI7QUFDRCxPQUZELE1BRU87QUFDTCxjQUFLTCxRQUFMLENBQWM7QUFBQ1IsVUFBQUEsWUFBWSxFQUFFYTtBQUFmLFNBQWQ7QUFDRDtBQUNGLEs7Ozs7OztXQUVELGtCQUFTO0FBQUE7O0FBQ1Asd0JBS0ksS0FBSzFCLEtBTFQ7QUFBQSxVQUNFd0IsU0FERixlQUNFQSxTQURGO0FBQUEsVUFFRUksUUFGRixlQUVFQSxRQUZGO0FBQUEsVUFHRXZCLFVBSEYsZUFHRUEsVUFIRjtBQUFBLFVBSUVVLE9BSkYsZUFJRUEsT0FKRjs7QUFPQSxVQUFNUSxPQUFPLEdBQUcsS0FBS0osV0FBTCxFQUFoQjs7QUFDQSxVQUFNVSxjQUFjLEdBQ2xCTCxTQUFTLENBQUNELE9BQUQsQ0FBVCxJQUFzQix5QkFBT0MsU0FBUyxDQUFDRCxPQUFELENBQWhCLE1BQThCLFFBRHREO0FBR0EsMkJBQ0U7QUFBSyxVQUFBLFNBQVMsRUFBQyxnQkFBZjtBQUFnQyxVQUFBLEdBQUcsRUFBRSxLQUFLTztBQUExQyx3QkFDRSxnQ0FBQyxpQkFBRCxRQUNHTixTQUFTLENBQUNPLEdBQVYsQ0FBYyxVQUFDQyxJQUFELEVBQU9OLENBQVA7QUFBQSwrQkFDYjtBQUFLLGNBQUEsU0FBUyxFQUFDLDJCQUFmO0FBQTJDLGNBQUEsR0FBRyxFQUFFQTtBQUFoRCw0QkFDRSxnQ0FBQyxrQkFBRDtBQUNFLGNBQUEsU0FBUyxFQUFDLDBCQURaO0FBRUUsY0FBQSxNQUFNLEVBQUVILE9BQU8sS0FBS0csQ0FGdEI7QUFHRSxjQUFBLFFBQVEsRUFBRUUsUUFIWjtBQUlFLGNBQUEsVUFBVSxFQUFFdkIsVUFKZDtBQUtFLGNBQUEsV0FBVyxFQUFFLHFCQUFBUyxDQUFDO0FBQUEsdUJBQUksTUFBSSxDQUFDbUIsYUFBTCxDQUFtQm5CLENBQW5CLEVBQXNCWSxDQUF0QixDQUFKO0FBQUE7QUFMaEIsZUFPR00sSUFBSSxDQUFDRSxPQUFMLGdCQUNDLGdDQUFDLHdCQUFEO0FBQWMsY0FBQSxNQUFNLEVBQUVGLElBQUksQ0FBQ0csYUFBTCxDQUFtQkM7QUFBekMsY0FERCxnQkFHQyxnQ0FBQyxVQUFEO0FBQ0UsY0FBQSxTQUFTLEVBQUMsaUNBRFo7QUFFRSxjQUFBLEtBQUssRUFBRUosSUFBSSxDQUFDRztBQUZkLGNBVkosRUFlR0gsSUFBSSxDQUFDSyxLQUFMLGdCQUNDO0FBQUssY0FBQSxTQUFTLEVBQUM7QUFBZixlQUNHTCxJQUFJLENBQUNLLEtBRFIsQ0FERCxHQUlHLElBbkJOLENBREY7QUFEYTtBQUFBLFNBQWQsQ0FESCxDQURGLEVBNEJHUixjQUFjLGdCQUNiLGdDQUFDLHNDQUFEO0FBQXFCLFVBQUEsU0FBUyxFQUFDO0FBQS9CLFdBQ0dMLFNBQVMsQ0FBQ0QsT0FBRCxDQUFULENBQW1CVyxPQUFuQixnQkFDQyxnQ0FBQyw4QkFBRDtBQUNFLFVBQUEsa0JBQWtCLEVBQUVWLFNBQVMsQ0FBQ0QsT0FBRCxDQUFULENBQW1CWSxhQUR6QztBQUVFLFVBQUEsa0JBQWtCLEVBQUUsS0FBS0csY0FGM0I7QUFHRSxVQUFBLGlCQUFpQixFQUFFLEtBQUt0QyxLQUFMLENBQVdvQixVQUhoQztBQUlFLFVBQUEsY0FBYyxFQUFFTDtBQUpsQixVQURELGdCQVFDLGdDQUFDLDhCQUFEO0FBQ0UsVUFBQSxhQUFhLEVBQUUsMEJBQVNTLFNBQVMsQ0FBQ0QsT0FBRCxDQUFULENBQW1CWSxhQUE1QixDQURqQjtBQUVFLFVBQUEsYUFBYSxFQUFFLEtBQUtHO0FBRnRCLFVBVEosQ0FEYSxHQWdCWCxJQTVDTjtBQURGO0FBZ0REOzs7RUF2SXlCQyxnQjs7aUNBQXRCM0IsYSxlQUNlO0FBQ2pCWSxFQUFBQSxTQUFTLEVBQUVnQixzQkFBVUMsT0FBVixDQUNURCxzQkFBVUUsS0FBVixDQUFnQjtBQUNkUCxJQUFBQSxhQUFhLEVBQUVLLHNCQUFVRyxTQUFWLENBQW9CLENBQ2pDSCxzQkFBVUMsT0FBVixDQUFrQkQsc0JBQVVJLEdBQTVCLENBRGlDLEVBRWpDSixzQkFBVUssTUFGdUIsQ0FBcEIsQ0FERDtBQUtkcEIsSUFBQUEsUUFBUSxFQUFFZSxzQkFBVU0sSUFBVixDQUFlQyxVQUxYO0FBTWRiLElBQUFBLE9BQU8sRUFBRU0sc0JBQVVRLElBTkw7QUFPZFgsSUFBQUEsS0FBSyxFQUFFRyxzQkFBVVM7QUFQSCxHQUFoQixDQURTLENBRE07QUFZakJsQyxFQUFBQSxPQUFPLEVBQUV5QixzQkFBVUUsS0FBVixDQUFnQjtBQUN2QlEsSUFBQUEsYUFBYSxFQUFFVixzQkFBVUssTUFERjtBQUV2QjdCLElBQUFBLFlBQVksRUFBRXdCLHNCQUFVRyxTQUFWLENBQW9CLENBQUNILHNCQUFVUSxJQUFYLEVBQWlCUixzQkFBVVcsTUFBM0IsQ0FBcEIsQ0FGUztBQUd2QnRDLElBQUFBLFlBQVksRUFBRTJCLHNCQUFVRyxTQUFWLENBQW9CLENBQUNILHNCQUFVUSxJQUFYLEVBQWlCUixzQkFBVVcsTUFBM0IsQ0FBcEIsQ0FIUztBQUl2QkMsSUFBQUEsZ0JBQWdCLEVBQUVaLHNCQUFVSztBQUpMLEdBQWhCLENBWlE7QUFrQmpCeEMsRUFBQUEsVUFBVSxFQUFFbUMsc0JBQVVTLE1BbEJMO0FBbUJqQnJCLEVBQUFBLFFBQVEsRUFBRVksc0JBQVVRLElBbkJIO0FBb0JqQjVCLEVBQUFBLFVBQVUsRUFBRW9CLHNCQUFVTTtBQXBCTCxDO2lDQURmbEMsYSxrQkF3QmtCO0FBQ3BCWSxFQUFBQSxTQUFTLEVBQUU7QUFEUyxDOztvQ0FrSFQscUNBQWVaLGFBQWYsQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMyBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgY3JlYXRlUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge3JnYlRvSGV4fSBmcm9tICd1dGlscy9jb2xvci11dGlscyc7XG5pbXBvcnQgU2luZ2xlQ29sb3JQYWxldHRlIGZyb20gJ2NvbXBvbmVudHMvc2lkZS1wYW5lbC9sYXllci1wYW5lbC9zaW5nbGUtY29sb3ItcGFsZXR0ZSc7XG5pbXBvcnQgQ29sb3JSYW5nZVNlbGVjdG9yIGZyb20gJ2NvbXBvbmVudHMvc2lkZS1wYW5lbC9sYXllci1wYW5lbC9jb2xvci1yYW5nZS1zZWxlY3Rvcic7XG5pbXBvcnQgQ29sb3JQYWxldHRlIGZyb20gJ2NvbXBvbmVudHMvc2lkZS1wYW5lbC9sYXllci1wYW5lbC9jb2xvci1wYWxldHRlJztcbmltcG9ydCB7U3R5bGVkUGFuZWxEcm9wZG93bn0gZnJvbSAnY29tcG9uZW50cy9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IG9uQ2xpY2tPdXRzaWRlIGZyb20gJ3JlYWN0LW9uY2xpY2tvdXRzaWRlJztcblxuZXhwb3J0IGNvbnN0IENvbG9yQmxvY2sgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMzJweDtcbiAgaGVpZ2h0OiAxOHB4O1xuICBib3JkZXItcmFkaXVzOiAxcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gYHJnYigke3Byb3BzLmNvbG9yLnNsaWNlKDAsIDMpLmpvaW4oJywnKX0pYH07XG5gO1xuXG5leHBvcnQgY29uc3QgQ29sb3JTZWxlY3RvcklucHV0ID0gc3R5bGVkLmRpdmBcbiAgJHtwcm9wcyA9PlxuICAgIHByb3BzLmlucHV0VGhlbWUgPT09ICdzZWNvbmRhcnknXG4gICAgICA/IHByb3BzLnRoZW1lLnNlY29uZGFyeUlucHV0XG4gICAgICA6IHByb3BzLnRoZW1lLmlucHV0fTtcbiAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0Qm94SGVpZ2h0fTtcblxuICAuY29sb3Itc2VsZWN0b3JfX3NlbGVjdG9yX19sYWJlbCB7XG4gICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dFBsYWNlaG9sZGVyQ29sb3J9O1xuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgSW5wdXRCb3hDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgLmNvbG9yLXNlbGVjdF9faW5wdXQtZ3JvdXAge1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgfVxuICAuY29sb3Itc2VsZWN0X19pbnB1dC1ncm91cDpudGgtY2hpbGQoMikge1xuICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xuICB9XG5gO1xuXG5jbGFzcyBDb2xvclNlbGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBjb2xvclNldHM6IFByb3BUeXBlcy5hcnJheU9mKFxuICAgICAgUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgICAgc2VsZWN0ZWRDb2xvcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgICAgICAgUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSksXG4gICAgICAgICAgUHJvcFR5cGVzLm9iamVjdFxuICAgICAgICBdKSxcbiAgICAgICAgc2V0Q29sb3I6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICAgIGlzUmFuZ2U6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgICAgfSlcbiAgICApLFxuICAgIGNvbG9yVUk6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBjdXN0b21QYWxldHRlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgc2hvd1NrZXRjaGVyOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYm9vbCwgUHJvcFR5cGVzLm51bWJlcl0pLFxuICAgICAgc2hvd0Ryb3Bkb3duOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYm9vbCwgUHJvcFR5cGVzLm51bWJlcl0pLFxuICAgICAgY29sb3JSYW5nZUNvbmZpZzogUHJvcFR5cGVzLm9iamVjdFxuICAgIH0pLFxuICAgIGlucHV0VGhlbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIHNldENvbG9yVUk6IFByb3BUeXBlcy5mdW5jXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBjb2xvclNldHM6IFtdXG4gIH07XG5cbiAgc3RhdGUgPSB7XG4gICAgc2hvd0Ryb3Bkb3duOiBmYWxzZVxuICB9O1xuXG4gIG5vZGUgPSBjcmVhdGVSZWYoKTtcblxuICBoYW5kbGVDbGlja091dHNpZGUgPSBlID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5jb2xvclVJICYmIHRoaXMucHJvcHMuY29sb3JVSS5zaG93U2tldGNoZXIpIHtcbiAgICAgIC8vIGlmIHNrZXRjaGVyIGlzIG9wZW4sIGxldCBza2V0Y2ggdG8gY2xvc2UgaXRzZWxmIGZpcnN0XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2Nsb3NlUGFuZWxEcm9wZG93bigpO1xuICB9O1xuXG4gIF9nZXRFZGl0aW5nID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmNvbG9yVUkgPyB0aGlzLnByb3BzLmNvbG9yVUkuc2hvd0Ryb3Bkb3duIDogdGhpcy5zdGF0ZS5zaG93RHJvcGRvd247XG4gIH1cblxuICBfY2xvc2VQYW5lbERyb3Bkb3duID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLl9nZXRFZGl0aW5nKCkgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnByb3BzLnNldENvbG9yVUkpIHtcbiAgICAgIHRoaXMucHJvcHMuc2V0Q29sb3JVSSh7c2hvd0Ryb3Bkb3duOiBmYWxzZSwgc2hvd1NrZXRjaGVyOiBmYWxzZX0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtzaG93RHJvcGRvd246IGZhbHNlfSk7XG4gICAgfVxuICB9O1xuXG4gIF9vblNlbGVjdENvbG9yID0gKGNvbG9yLCBlKSA9PiB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCBlZGl0aW5nID0gdGhpcy5fZ2V0RWRpdGluZygpO1xuICAgIGlmICh0aGlzLnByb3BzLmNvbG9yU2V0c1tlZGl0aW5nXSkge1xuICAgICAgdGhpcy5wcm9wcy5jb2xvclNldHNbZWRpdGluZ10uc2V0Q29sb3IoY29sb3IpO1xuICAgIH1cbiAgfTtcblxuICBfc2hvd0Ryb3Bkb3duID0gKGUsIGkpID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAodGhpcy5wcm9wcy5zZXRDb2xvclVJKSB7XG4gICAgICB0aGlzLnByb3BzLnNldENvbG9yVUkoe3Nob3dEcm9wZG93bjogaX0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtzaG93RHJvcGRvd246IGl9KTtcbiAgICB9XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGNvbG9yU2V0cyxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgaW5wdXRUaGVtZSxcbiAgICAgIGNvbG9yVUlcbiAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgIGNvbnN0IGVkaXRpbmcgPSB0aGlzLl9nZXRFZGl0aW5nKCk7XG4gICAgY29uc3QgY3VycmVudEVkaXRpbmcgPVxuICAgICAgY29sb3JTZXRzW2VkaXRpbmddICYmIHR5cGVvZiBjb2xvclNldHNbZWRpdGluZ10gPT09ICdvYmplY3QnO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sb3Itc2VsZWN0b3JcIiByZWY9e3RoaXMubm9kZX0+XG4gICAgICAgIDxJbnB1dEJveENvbnRhaW5lcj5cbiAgICAgICAgICB7Y29sb3JTZXRzLm1hcCgoY1NldCwgaSkgPT4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xvci1zZWxlY3RfX2lucHV0LWdyb3VwXCIga2V5PXtpfT5cbiAgICAgICAgICAgICAgPENvbG9yU2VsZWN0b3JJbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImNvbG9yLXNlbGVjdG9yX19zZWxlY3RvclwiXG4gICAgICAgICAgICAgICAgYWN0aXZlPXtlZGl0aW5nID09PSBpfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICBpbnB1dFRoZW1lPXtpbnB1dFRoZW1lfVxuICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXtlID0+IHRoaXMuX3Nob3dEcm9wZG93bihlLCBpKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtjU2V0LmlzUmFuZ2UgPyAoXG4gICAgICAgICAgICAgICAgICA8Q29sb3JQYWxldHRlIGNvbG9ycz17Y1NldC5zZWxlY3RlZENvbG9yLmNvbG9yc30gLz5cbiAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgPENvbG9yQmxvY2tcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiY29sb3Itc2VsZWN0b3JfX3NlbGVjdG9yX19ibG9ja1wiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPXtjU2V0LnNlbGVjdGVkQ29sb3J9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge2NTZXQubGFiZWwgPyAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbG9yLXNlbGVjdG9yX19zZWxlY3Rvcl9fbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAge2NTZXQubGFiZWx9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPC9Db2xvclNlbGVjdG9ySW5wdXQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9JbnB1dEJveENvbnRhaW5lcj5cbiAgICAgICAge2N1cnJlbnRFZGl0aW5nID8gKFxuICAgICAgICAgIDxTdHlsZWRQYW5lbERyb3Bkb3duIGNsYXNzTmFtZT1cImNvbG9yLXNlbGVjdG9yX19kcm9wZG93blwiPlxuICAgICAgICAgICAge2NvbG9yU2V0c1tlZGl0aW5nXS5pc1JhbmdlID8gKFxuICAgICAgICAgICAgICA8Q29sb3JSYW5nZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvclJhbmdlPXtjb2xvclNldHNbZWRpdGluZ10uc2VsZWN0ZWRDb2xvcn1cbiAgICAgICAgICAgICAgICBvblNlbGVjdENvbG9yUmFuZ2U9e3RoaXMuX29uU2VsZWN0Q29sb3J9XG4gICAgICAgICAgICAgICAgc2V0Q29sb3JQYWxldHRlVUk9e3RoaXMucHJvcHMuc2V0Q29sb3JVSX1cbiAgICAgICAgICAgICAgICBjb2xvclBhbGV0dGVVST17Y29sb3JVSX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxTaW5nbGVDb2xvclBhbGV0dGVcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENvbG9yPXtyZ2JUb0hleChjb2xvclNldHNbZWRpdGluZ10uc2VsZWN0ZWRDb2xvcil9XG4gICAgICAgICAgICAgICAgb25TZWxlY3RDb2xvcj17dGhpcy5fb25TZWxlY3RDb2xvcn1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9TdHlsZWRQYW5lbERyb3Bkb3duPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgb25DbGlja091dHNpZGUoQ29sb3JTZWxlY3Rvcik7XG4iXX0=