kepler.gl.geoiq
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
176 lines (141 loc) • 21 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf3 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
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 _reactAnythingSortable = _interopRequireDefault(require("react-anything-sortable"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _reselect = require("reselect");
var _widgetPanel = _interopRequireDefault(require("./widget-panel/widget-panel"));
var _sourceDataCatalog = _interopRequireDefault(require("./source-data-catalog"));
var _icons = require("../common/icons");
var _styledComponents2 = require("../common/styled-components");
function _templateObject() {
var data = (0, _taggedTemplateLiteral2["default"])(["\n .ui-sortable {\n display: block;\n position: relative;\n overflow: visible;\n user-select: none;\n\n :before {\n content: ' ';\n display: table;\n }\n\n :after {\n content: ' ';\n display: table;\n }\n }\n\n .ui-sortable-item.ui-sortable-dragging {\n position: absolute;\n z-index: 1688;\n cursor: move;\n }\n\n .ui-sortable-item.ui-sortable-dragging:hover {\n cursor: move;\n opacity: 0.5;\n }\n\n .ui-sortable-placeholder {\n display: none;\n }\n\n .ui-sortable-placeholder.visible {\n display: block;\n opacity: 0;\n z-index: -1;\n }\n"]);
_templateObject = function _templateObject() {
return data;
};
return data;
}
var StyledSortable = _styledComponents["default"].div(_templateObject());
WidgetManagerFactory.deps = [_widgetPanel["default"], _sourceDataCatalog["default"]];
function WidgetManagerFactory(WidgetPanel, SourceDataCatalog) {
var _class, _temp;
return _temp = _class =
/*#__PURE__*/
function (_Component) {
(0, _inherits2["default"])(WidgetManager, _Component);
function WidgetManager() {
var _getPrototypeOf2;
var _this;
(0, _classCallCheck2["default"])(this, WidgetManager);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = (0, _possibleConstructorReturn2["default"])(this, (_getPrototypeOf2 = (0, _getPrototypeOf3["default"])(WidgetManager)).call.apply(_getPrototypeOf2, [this].concat(args)));
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "widgetClassSelector", function (props) {
return props.widgetClasses;
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "widgetTypeOptionsSelector", (0, _reselect.createSelector)(_this.widgetClassSelector, function (widgetClasses) {
return Object.keys(widgetClasses).map(function (key) {
var widget = new widgetClasses[key]();
return {
id: key,
label: widget.name,
icon: widget.widgetIcon
};
});
}));
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_addEmptyNewWidget", function () {
_this.props.addWidget();
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_handleSort", function (order) {
_this.props.updateWidgetOrder(order);
});
return _this;
}
(0, _createClass2["default"])(WidgetManager, [{
key: "render",
value: function render() {
var _this$props = this.props,
widgets = _this$props.widgets,
layers = _this$props.layers,
datasets = _this$props.datasets,
widgetOrder = _this$props.widgetOrder,
openModal = _this$props.openModal,
mapState = _this$props.mapState;
var defaultLayer = Object.keys(layers)[0];
var widgetTypeOptions = this.widgetTypeOptionsSelector(this.props);
var widgetActions = {
widgetConfigChange: this.props.widgetConfigChange,
widgetVisualChannelConfigChange: this.props.widgetVisualChannelConfigChange,
widgetTypeChange: this.props.widgetTypeChange,
widgetVisConfigChange: this.props.widgetVisConfigChange,
removeWidget: this.props.removeWidget
};
var panelProps = {
datasets: datasets,
openModal: openModal,
widgetTypeOptions: widgetTypeOptions
};
return _react["default"].createElement(StyledSortable, {
className: "widget-manager"
}, _react["default"].createElement(SourceDataCatalog, {
datasets: datasets,
showDatasetTable: this.props.showDatasetTable
}), _react["default"].createElement(_styledComponents2.SidePanelDivider, null), _react["default"].createElement(_styledComponents2.SidePanelSection, null, _react["default"].createElement(_reactAnythingSortable["default"], {
onSort: this._handleSort,
direction: "vertical",
sortHandle: "sort--handle",
dynamic: true
}, widgetOrder.map(function (idx) {
return _react["default"].createElement(WidgetPanel, (0, _extends2["default"])({}, panelProps, widgetActions, {
sortData: idx,
key: widgets[idx].id,
idx: idx,
widget: widgets[idx],
layers: layers,
mapState: mapState
}));
}))), _react["default"].createElement(_styledComponents2.SidePanelSection, null, defaultLayer ? _react["default"].createElement(_styledComponents2.Button, {
onClick: this._addEmptyNewWidget,
width: "auto"
}, _react["default"].createElement(_icons.Add, {
height: "12px"
}), "Add Widget") : null));
}
}]);
return WidgetManager;
}(_react.Component), (0, _defineProperty2["default"])(_class, "propTypes", {
addWidget: _propTypes["default"].func.isRequired,
datasets: _propTypes["default"].object.isRequired,
widgetClasses: _propTypes["default"].object.isRequired,
widgets: _propTypes["default"].arrayOf(_propTypes["default"].any).isRequired,
widgetConfigChange: _propTypes["default"].func.isRequired,
widgetVisualChannelConfigChange: _propTypes["default"].func.isRequired,
widgetTypeChange: _propTypes["default"].func.isRequired,
widgetVisConfigChange: _propTypes["default"].func.isRequired,
// layers: propTypes.arrayOf(propTypes.any),
openModal: _propTypes["default"].func.isRequired,
removeWidget: _propTypes["default"].func.isRequired,
showDatasetTable: _propTypes["default"].func.isRequired,
updateWidgetOrder: _propTypes["default"].func.isRequired,
mapState: _propTypes["default"].object.isRequired
}), _temp;
}
var _default = WidgetManagerFactory;
exports["default"] = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvd2lkZ2V0LW1hbmFnZXIuanMiXSwibmFtZXMiOlsiU3R5bGVkU29ydGFibGUiLCJzdHlsZWQiLCJkaXYiLCJXaWRnZXRNYW5hZ2VyRmFjdG9yeSIsImRlcHMiLCJXaWRnZXRQYW5lbEZhY3RvcnkiLCJTb3VyY2VEYXRhQ2F0YWxvZ0ZhY3RvcnkiLCJXaWRnZXRQYW5lbCIsIlNvdXJjZURhdGFDYXRhbG9nIiwicHJvcHMiLCJ3aWRnZXRDbGFzc2VzIiwid2lkZ2V0Q2xhc3NTZWxlY3RvciIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJrZXkiLCJ3aWRnZXQiLCJpZCIsImxhYmVsIiwibmFtZSIsImljb24iLCJ3aWRnZXRJY29uIiwiYWRkV2lkZ2V0Iiwib3JkZXIiLCJ1cGRhdGVXaWRnZXRPcmRlciIsIndpZGdldHMiLCJsYXllcnMiLCJkYXRhc2V0cyIsIndpZGdldE9yZGVyIiwib3Blbk1vZGFsIiwibWFwU3RhdGUiLCJkZWZhdWx0TGF5ZXIiLCJ3aWRnZXRUeXBlT3B0aW9ucyIsIndpZGdldFR5cGVPcHRpb25zU2VsZWN0b3IiLCJ3aWRnZXRBY3Rpb25zIiwid2lkZ2V0Q29uZmlnQ2hhbmdlIiwid2lkZ2V0VmlzdWFsQ2hhbm5lbENvbmZpZ0NoYW5nZSIsIndpZGdldFR5cGVDaGFuZ2UiLCJ3aWRnZXRWaXNDb25maWdDaGFuZ2UiLCJyZW1vdmVXaWRnZXQiLCJwYW5lbFByb3BzIiwic2hvd0RhdGFzZXRUYWJsZSIsIl9oYW5kbGVTb3J0IiwiaWR4IiwiX2FkZEVtcHR5TmV3V2lkZ2V0IiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwiZnVuYyIsImlzUmVxdWlyZWQiLCJvYmplY3QiLCJhcnJheU9mIiwiYW55Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7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QkFBVUMsSUFBVixDQUFlQyxVQVBoQjtBQVFqQlYsSUFBQUEscUJBQXFCLEVBQUVRLHNCQUFVQyxJQUFWLENBQWVDLFVBUnJCO0FBU2pCO0FBQ0FuQixJQUFBQSxTQUFTLEVBQUVpQixzQkFBVUMsSUFBVixDQUFlQyxVQVZUO0FBV2pCVCxJQUFBQSxZQUFZLEVBQUVPLHNCQUFVQyxJQUFWLENBQWVDLFVBWFo7QUFZakJQLElBQUFBLGdCQUFnQixFQUFFSyxzQkFBVUMsSUFBVixDQUFlQyxVQVpoQjtBQWFqQnhCLElBQUFBLGlCQUFpQixFQUFFc0Isc0JBQVVDLElBQVYsQ0FBZUMsVUFiakI7QUFjakJsQixJQUFBQSxRQUFRLEVBQUVnQixzQkFBVUcsTUFBVixDQUFpQkQ7QUFkVixHQURyQjtBQXNHRDs7ZUFFYzdDLG9CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDE5IFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFNvcnRhYmxlIGZyb20gJ3JlYWN0LWFueXRoaW5nLXNvcnRhYmxlJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtjcmVhdGVTZWxlY3Rvcn0gZnJvbSAncmVzZWxlY3QnO1xuXG5pbXBvcnQgV2lkZ2V0UGFuZWxGYWN0b3J5IGZyb20gJy4vd2lkZ2V0LXBhbmVsL3dpZGdldC1wYW5lbCc7XG5pbXBvcnQgU291cmNlRGF0YUNhdGFsb2dGYWN0b3J5IGZyb20gJy4vc291cmNlLWRhdGEtY2F0YWxvZyc7XG5pbXBvcnQge0FkZH0gZnJvbSAnY29tcG9uZW50cy9jb21tb24vaWNvbnMnO1xuaW1wb3J0IHtcbiAgU2lkZVBhbmVsRGl2aWRlcixcbiAgU2lkZVBhbmVsU2VjdGlvbixcbiAgQnV0dG9uXG59IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcblxuY29uc3QgU3R5bGVkU29ydGFibGUgPSBzdHlsZWQuZGl2YFxuICAudWktc29ydGFibGUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAgIDpiZWZvcmUge1xuICAgICAgY29udGVudDogJyAnO1xuICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgfVxuXG4gICAgOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcgJztcbiAgICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIH1cbiAgfVxuXG4gIC51aS1zb3J0YWJsZS1pdGVtLnVpLXNvcnRhYmxlLWRyYWdnaW5nIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogMTY4ODtcbiAgICBjdXJzb3I6IG1vdmU7XG4gIH1cblxuICAudWktc29ydGFibGUtaXRlbS51aS1zb3J0YWJsZS1kcmFnZ2luZzpob3ZlciB7XG4gICAgY3Vyc29yOiBtb3ZlO1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgfVxuXG4gIC51aS1zb3J0YWJsZS1wbGFjZWhvbGRlciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC51aS1zb3J0YWJsZS1wbGFjZWhvbGRlci52aXNpYmxlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBvcGFjaXR5OiAwO1xuICAgIHotaW5kZXg6IC0xO1xuICB9XG5gO1xuXG5XaWRnZXRNYW5hZ2VyRmFjdG9yeS5kZXBzID0gW1dpZGdldFBhbmVsRmFjdG9yeSwgU291cmNlRGF0YUNhdGFsb2dGYWN0b3J5XTtcblxuZnVuY3Rpb24gV2lkZ2V0TWFuYWdlckZhY3RvcnkoV2lkZ2V0UGFuZWwsIFNvdXJjZURhdGFDYXRhbG9nKSB7XG4gIHJldHVybiBjbGFzcyBXaWRnZXRNYW5hZ2VyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgYWRkV2lkZ2V0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgZGF0YXNldHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIHdpZGdldENsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIHdpZGdldHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLmlzUmVxdWlyZWQsXG4gICAgICB3aWRnZXRDb25maWdDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICB3aWRnZXRWaXN1YWxDaGFubmVsQ29uZmlnQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgd2lkZ2V0VHlwZUNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIHdpZGdldFZpc0NvbmZpZ0NoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIC8vIGxheWVyczogcHJvcFR5cGVzLmFycmF5T2YocHJvcFR5cGVzLmFueSksXG4gICAgICBvcGVuTW9kYWw6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICByZW1vdmVXaWRnZXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICBzaG93RGF0YXNldFRhYmxlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgdXBkYXRlV2lkZ2V0T3JkZXI6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICBtYXBTdGF0ZTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkXG4gICAgfTtcblxuICAgIHdpZGdldENsYXNzU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy53aWRnZXRDbGFzc2VzO1xuICAgIHdpZGdldFR5cGVPcHRpb25zU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMud2lkZ2V0Q2xhc3NTZWxlY3RvcixcbiAgICAgIHdpZGdldENsYXNzZXMgPT5cbiAgICAgICAgT2JqZWN0LmtleXMod2lkZ2V0Q2xhc3NlcykubWFwKGtleSA9PiB7XG4gICAgICAgICAgY29uc3Qgd2lkZ2V0ID0gbmV3IHdpZGdldENsYXNzZXNba2V5XSgpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZDoga2V5LFxuICAgICAgICAgICAgbGFiZWw6IHdpZGdldC5uYW1lLFxuICAgICAgICAgICAgaWNvbjogd2lkZ2V0LndpZGdldEljb25cbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgICk7XG5cbiAgICBfYWRkRW1wdHlOZXdXaWRnZXQgPSAoKSA9PiB7XG4gICAgICB0aGlzLnByb3BzLmFkZFdpZGdldCgpO1xuICAgIH07XG5cbiAgICBfaGFuZGxlU29ydCA9IG9yZGVyID0+IHtcbiAgICAgIHRoaXMucHJvcHMudXBkYXRlV2lkZ2V0T3JkZXIob3JkZXIpO1xuICAgIH07XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHdpZGdldHMsXG4gICAgICAgIGxheWVycyxcbiAgICAgICAgZGF0YXNldHMsXG4gICAgICAgIHdpZGdldE9yZGVyLFxuICAgICAgICBvcGVuTW9kYWwsXG4gICAgICAgIG1hcFN0YXRlXG4gICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IGRlZmF1bHRMYXllciA9IE9iamVjdC5rZXlzKGxheWVycylbMF07XG4gICAgICBjb25zdCB3aWRnZXRUeXBlT3B0aW9ucyA9IHRoaXMud2lkZ2V0VHlwZU9wdGlvbnNTZWxlY3Rvcih0aGlzLnByb3BzKTtcblxuICAgICAgY29uc3Qgd2lkZ2V0QWN0aW9ucyA9IHtcbiAgICAgICAgd2lkZ2V0Q29uZmlnQ2hhbmdlOiB0aGlzLnByb3BzLndpZGdldENvbmZpZ0NoYW5nZSxcbiAgICAgICAgd2lkZ2V0VmlzdWFsQ2hhbm5lbENvbmZpZ0NoYW5nZTogdGhpcy5wcm9wc1xuICAgICAgICAgIC53aWRnZXRWaXN1YWxDaGFubmVsQ29uZmlnQ2hhbmdlLFxuICAgICAgICB3aWRnZXRUeXBlQ2hhbmdlOiB0aGlzLnByb3BzLndpZGdldFR5cGVDaGFuZ2UsXG4gICAgICAgIHdpZGdldFZpc0NvbmZpZ0NoYW5nZTogdGhpcy5wcm9wcy53aWRnZXRWaXNDb25maWdDaGFuZ2UsXG4gICAgICAgIHJlbW92ZVdpZGdldDogdGhpcy5wcm9wcy5yZW1vdmVXaWRnZXRcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHBhbmVsUHJvcHMgPSB7ZGF0YXNldHMsIG9wZW5Nb2RhbCwgd2lkZ2V0VHlwZU9wdGlvbnN9O1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZFNvcnRhYmxlIGNsYXNzTmFtZT1cIndpZGdldC1tYW5hZ2VyXCI+XG4gICAgICAgICAgPFNvdXJjZURhdGFDYXRhbG9nXG4gICAgICAgICAgICBkYXRhc2V0cz17ZGF0YXNldHN9XG4gICAgICAgICAgICBzaG93RGF0YXNldFRhYmxlPXt0aGlzLnByb3BzLnNob3dEYXRhc2V0VGFibGV9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8U2lkZVBhbmVsRGl2aWRlciAvPlxuICAgICAgICAgIDxTaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICAgICAgPFNvcnRhYmxlXG4gICAgICAgICAgICAgIG9uU29ydD17dGhpcy5faGFuZGxlU29ydH1cbiAgICAgICAgICAgICAgZGlyZWN0aW9uPVwidmVydGljYWxcIlxuICAgICAgICAgICAgICBzb3J0SGFuZGxlPVwic29ydC0taGFuZGxlXCJcbiAgICAgICAgICAgICAgZHluYW1pY1xuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7d2lkZ2V0T3JkZXIubWFwKGlkeCA9PiAoXG4gICAgICAgICAgICAgICAgPFdpZGdldFBhbmVsXG4gICAgICAgICAgICAgICAgICB7Li4ucGFuZWxQcm9wc31cbiAgICAgICAgICAgICAgICAgIHsuLi53aWRnZXRBY3Rpb25zfVxuICAgICAgICAgICAgICAgICAgc29ydERhdGE9e2lkeH1cbiAgICAgICAgICAgICAgICAgIGtleT17d2lkZ2V0c1tpZHhdLmlkfVxuICAgICAgICAgICAgICAgICAgaWR4PXtpZHh9XG4gICAgICAgICAgICAgICAgICB3aWRnZXQ9e3dpZGdldHNbaWR4XX1cbiAgICAgICAgICAgICAgICAgIGxheWVycz17bGF5ZXJzfVxuICAgICAgICAgICAgICAgICAgbWFwU3RhdGU9e21hcFN0YXRlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9Tb3J0YWJsZT5cbiAgICAgICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICAgPFNpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICAgICB7ZGVmYXVsdExheWVyID8gKFxuICAgICAgICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e3RoaXMuX2FkZEVtcHR5TmV3V2lkZ2V0fSB3aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICAgICAgICA8QWRkIGhlaWdodD1cIjEycHhcIiAvPlxuICAgICAgICAgICAgICAgIEFkZCBXaWRnZXRcbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgIDwvU3R5bGVkU29ydGFibGU+XG4gICAgICApO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgV2lkZ2V0TWFuYWdlckZhY3Rvcnk7XG4iXX0=