kepler.gl.geoiq
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
156 lines (117 loc) • 18.5 kB
JavaScript
;
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 _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 _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _styledComponents = require("../common/styled-components");
var _mapStyleSelector = _interopRequireDefault(require("./map-style-panel/map-style-selector"));
var _mapLayerSelector = _interopRequireDefault(require("./map-style-panel/map-layer-selector"));
var _icons = require("../common/icons");
var _defaultSettings = require("../../constants/default-settings");
var _colorSelector = _interopRequireDefault(require("./layer-panel/color-selector"));
var _reselect = require("reselect");
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 || _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; }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
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; } }
MapManagerFactory.deps = [_mapStyleSelector["default"], _mapLayerSelector["default"]];
function MapManagerFactory(MapStyleSelector, LayerGroupSelector) {
var _class, _temp;
return _temp = _class = /*#__PURE__*/function (_Component) {
(0, _inherits2["default"])(MapManager, _Component);
var _super = _createSuper(MapManager);
function MapManager() {
var _this;
(0, _classCallCheck2["default"])(this, MapManager);
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", {
isSelecting: false
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "buildingColorSelector", function (props) {
return props.mapStyle.threeDBuildingColor;
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "setColorSelector", function (props) {
return props.set3dBuildingColor;
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "colorSetSelector", (0, _reselect.createSelector)(_this.buildingColorSelector, _this.setColorSelector, function (selectedColor, setColor) {
return [{
selectedColor: selectedColor,
setColor: setColor,
isRange: false,
label: '3D Building Color'
}];
}));
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_updateConfig", function (newProp) {
var newConfig = _objectSpread(_objectSpread({}, _this.props.mapStyle), newProp);
_this.props.onConfigChange(newConfig);
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_toggleSelecting", function () {
_this.setState({
isSelecting: !_this.state.isSelecting
});
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_selectStyle", function (val) {
_this.props.onStyleChange(val);
_this._toggleSelecting();
});
return _this;
}
(0, _createClass2["default"])(MapManager, [{
key: "render",
value: function render() {
var mapStyle = this.props.mapStyle;
var editableLayers = _defaultSettings.DEFAULT_LAYER_GROUPS.map(function (lg) {
return lg.slug;
});
var hasBuildingLayer = mapStyle.visibleLayerGroups['3d building'];
var colorSets = this.colorSetSelector(this.props);
return (/*#__PURE__*/_react["default"].createElement("div", {
className: "map-style-panel"
}, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(MapStyleSelector, {
mapStyle: mapStyle,
isSelecting: this.state.isSelecting,
onChange: this._selectStyle,
toggleActive: this._toggleSelecting
}), editableLayers.length ? /*#__PURE__*/_react["default"].createElement(LayerGroupSelector, {
layers: mapStyle.visibleLayerGroups,
editableLayers: editableLayers,
topLayers: mapStyle.topLayerGroups,
onChange: this._updateConfig
}) : null, /*#__PURE__*/_react["default"].createElement(_styledComponents.SidePanelSection, null, /*#__PURE__*/_react["default"].createElement(_colorSelector["default"], {
colorSets: colorSets,
disabled: !hasBuildingLayer
})), /*#__PURE__*/_react["default"].createElement(_styledComponents.Button, {
onClick: this.props.showAddMapStyleModal,
secondary: true
}, /*#__PURE__*/_react["default"].createElement(_icons.Add, {
height: "12px"
}), "Add Map Style")))
);
}
}]);
return MapManager;
}(_react.Component), (0, _defineProperty2["default"])(_class, "propTypes", {
mapStyle: _propTypes["default"].object.isRequired,
onConfigChange: _propTypes["default"].func.isRequired,
onStyleChange: _propTypes["default"].func.isRequired,
showAddMapStyleModal: _propTypes["default"].func.isRequired
}), _temp;
}
var _default = exports["default"] = MapManagerFactory;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbWFwLW1hbmFnZXIuanMiXSwibmFtZXMiOlsiTWFwTWFuYWdlckZhY3RvcnkiLCJkZXBzIiwiTWFwU3R5bGVTZWxlY3RvckZhY3RvcnkiLCJMYXllckdyb3VwU2VsZWN0b3JGYWN0b3J5IiwiTWFwU3R5bGVTZWxlY3RvciIsIkxheWVyR3JvdXBTZWxlY3RvciIsImlzU2VsZWN0aW5nIiwicHJvcHMiLCJtYXBTdHlsZSIsInRocmVlREJ1aWxkaW5nQ29sb3IiLCJzZXQzZEJ1aWxkaW5nQ29sb3IiLCJidWlsZGluZ0NvbG9yU2VsZWN0b3IiLCJzZXRDb2xvclNlbGVjdG9yIiwic2VsZWN0ZWRDb2xvciIsInNldENvbG9yIiwiaXNSYW5nZSIsImxhYmVsIiwibmV3UHJvcCIsIm5ld0NvbmZpZyIsIm9uQ29uZmlnQ2hhbmdlIiwic2V0U3RhdGUiLCJzdGF0ZSIsInZhbCIsIm9uU3R5bGVDaGFuZ2UiLCJfdG9nZ2xlU2VsZWN0aW5nIiwiZWRpdGFibGVMYXllcnMiLCJERUZBVUxUX0xBWUVSX0dST1VQUyIsIm1hcCIsImxnIiwic2x1ZyIsImhhc0J1aWxkaW5nTGF5ZXIiLCJ2aXNpYmxlTGF5ZXJHcm91cHMiLCJjb2xvclNldHMiLCJjb2xvclNldFNlbGVjdG9yIiwiX3NlbGVjdFN0eWxlIiwibGVuZ3RoIiwidG9wTGF5ZXJHcm91cHMiLCJfdXBkYXRlQ29uZmlnIiwic2hvd0FkZE1hcFN0eWxlTW9kYWwiLCJDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJvYmplY3QiLCJpc1JlcXVpcmVkIiwiZnVuYyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUFFQUEsaUJBQWlCLENBQUNDLElBQWxCLEdBQXlCLENBQUNDLDRCQUFELEVBQTBCQyw0QkFBMUIsQ0FBekI7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QUFNLEVBQUM7QUFBWixZQURGLGtCQXJCRixDQURGO0FBREY7QUE4QkQ7QUEzRUg7QUFBQTtBQUFBLElBQWdDQyxnQkFBaEMseURBQ3FCO0FBQ2pCL0IsSUFBQUEsUUFBUSxFQUFFZ0Msc0JBQVVDLE1BQVYsQ0FBaUJDLFVBRFY7QUFFakJ2QixJQUFBQSxjQUFjLEVBQUVxQixzQkFBVUcsSUFBVixDQUFlRCxVQUZkO0FBR2pCbkIsSUFBQUEsYUFBYSxFQUFFaUIsc0JBQVVHLElBQVYsQ0FBZUQsVUFIYjtBQUlqQkosSUFBQUEsb0JBQW9CLEVBQUVFLHNCQUFVRyxJQUFWLENBQWVEO0FBSnBCLEdBRHJCO0FBNkVEOztvQ0FFYzFDLGlCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIzIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuXG5pbXBvcnQge0J1dHRvbiwgU2lkZVBhbmVsU2VjdGlvbn0gZnJvbSAnY29tcG9uZW50cy9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IE1hcFN0eWxlU2VsZWN0b3JGYWN0b3J5IGZyb20gJ2NvbXBvbmVudHMvc2lkZS1wYW5lbC9tYXAtc3R5bGUtcGFuZWwvbWFwLXN0eWxlLXNlbGVjdG9yJztcbmltcG9ydCBMYXllckdyb3VwU2VsZWN0b3JGYWN0b3J5IGZyb20gJ2NvbXBvbmVudHMvc2lkZS1wYW5lbC9tYXAtc3R5bGUtcGFuZWwvbWFwLWxheWVyLXNlbGVjdG9yJztcblxuaW1wb3J0IHtBZGR9IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2ljb25zJztcbmltcG9ydCB7REVGQVVMVF9MQVlFUl9HUk9VUFN9IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcbmltcG9ydCBDb2xvclNlbGVjdG9yIGZyb20gJy4vbGF5ZXItcGFuZWwvY29sb3Itc2VsZWN0b3InO1xuaW1wb3J0IHtjcmVhdGVTZWxlY3Rvcn0gZnJvbSAncmVzZWxlY3QnO1xuXG5NYXBNYW5hZ2VyRmFjdG9yeS5kZXBzID0gW01hcFN0eWxlU2VsZWN0b3JGYWN0b3J5LCBMYXllckdyb3VwU2VsZWN0b3JGYWN0b3J5XTtcblxuZnVuY3Rpb24gTWFwTWFuYWdlckZhY3RvcnkoTWFwU3R5bGVTZWxlY3RvciwgTGF5ZXJHcm91cFNlbGVjdG9yKSB7XG4gIHJldHVybiBjbGFzcyBNYXBNYW5hZ2VyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgbWFwU3R5bGU6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIG9uQ29uZmlnQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgb25TdHlsZUNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIHNob3dBZGRNYXBTdHlsZU1vZGFsOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG4gICAgfTtcblxuICAgIHN0YXRlID0ge1xuICAgICAgaXNTZWxlY3Rpbmc6IGZhbHNlXG4gICAgfTtcblxuICAgIGJ1aWxkaW5nQ29sb3JTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLm1hcFN0eWxlLnRocmVlREJ1aWxkaW5nQ29sb3I7XG4gICAgc2V0Q29sb3JTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLnNldDNkQnVpbGRpbmdDb2xvcjtcbiAgICBjb2xvclNldFNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmJ1aWxkaW5nQ29sb3JTZWxlY3RvcixcbiAgICAgIHRoaXMuc2V0Q29sb3JTZWxlY3RvcixcbiAgICAgIChzZWxlY3RlZENvbG9yLCBzZXRDb2xvcikgPT4gKFt7XG4gICAgICAgIHNlbGVjdGVkQ29sb3IsXG4gICAgICAgIHNldENvbG9yLFxuICAgICAgICBpc1JhbmdlOiBmYWxzZSxcbiAgICAgICAgbGFiZWw6ICczRCBCdWlsZGluZyBDb2xvcidcbiAgICAgIH1dKVxuICAgICk7XG5cbiAgICBfdXBkYXRlQ29uZmlnID0gbmV3UHJvcCA9PiB7XG4gICAgICBjb25zdCBuZXdDb25maWcgPSB7Li4udGhpcy5wcm9wcy5tYXBTdHlsZSwgLi4ubmV3UHJvcH07XG4gICAgICB0aGlzLnByb3BzLm9uQ29uZmlnQ2hhbmdlKG5ld0NvbmZpZyk7XG4gICAgfTtcblxuICAgIF90b2dnbGVTZWxlY3RpbmcgPSAoKSA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtpc1NlbGVjdGluZzogIXRoaXMuc3RhdGUuaXNTZWxlY3Rpbmd9KTtcbiAgICB9O1xuXG4gICAgX3NlbGVjdFN0eWxlID0gdmFsID0+IHtcbiAgICAgIHRoaXMucHJvcHMub25TdHlsZUNoYW5nZSh2YWwpO1xuICAgICAgdGhpcy5fdG9nZ2xlU2VsZWN0aW5nKCk7XG4gICAgfTtcblxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHttYXBTdHlsZX0gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3QgZWRpdGFibGVMYXllcnMgPSBERUZBVUxUX0xBWUVSX0dST1VQUy5tYXAobGcgPT4gbGcuc2x1Zyk7XG4gICAgICBjb25zdCBoYXNCdWlsZGluZ0xheWVyID0gbWFwU3R5bGUudmlzaWJsZUxheWVyR3JvdXBzWyczZCBidWlsZGluZyddO1xuICAgICAgY29uc3QgY29sb3JTZXRzID0gdGhpcy5jb2xvclNldFNlbGVjdG9yKHRoaXMucHJvcHMpO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1hcC1zdHlsZS1wYW5lbFwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8TWFwU3R5bGVTZWxlY3RvclxuICAgICAgICAgICAgICBtYXBTdHlsZT17bWFwU3R5bGV9XG4gICAgICAgICAgICAgIGlzU2VsZWN0aW5nPXt0aGlzLnN0YXRlLmlzU2VsZWN0aW5nfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5fc2VsZWN0U3R5bGV9XG4gICAgICAgICAgICAgIHRvZ2dsZUFjdGl2ZT17dGhpcy5fdG9nZ2xlU2VsZWN0aW5nfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIHtlZGl0YWJsZUxheWVycy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgIDxMYXllckdyb3VwU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBsYXllcnM9e21hcFN0eWxlLnZpc2libGVMYXllckdyb3Vwc31cbiAgICAgICAgICAgICAgICBlZGl0YWJsZUxheWVycz17ZWRpdGFibGVMYXllcnN9XG4gICAgICAgICAgICAgICAgdG9wTGF5ZXJzPXttYXBTdHlsZS50b3BMYXllckdyb3Vwc31cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5fdXBkYXRlQ29uZmlnfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgICAgICAgPENvbG9yU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBjb2xvclNldHM9e2NvbG9yU2V0c31cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17IWhhc0J1aWxkaW5nTGF5ZXJ9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e3RoaXMucHJvcHMuc2hvd0FkZE1hcFN0eWxlTW9kYWx9IHNlY29uZGFyeT5cbiAgICAgICAgICAgICAgPEFkZCBoZWlnaHQ9XCIxMnB4XCIgLz5cbiAgICAgICAgICAgICAgQWRkIE1hcCBTdHlsZVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IE1hcE1hbmFnZXJGYWN0b3J5O1xuIl19