kepler.gl.geoiq
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
165 lines (129 loc) • 19.3 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = exports.CollapseButtonFactory = 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 _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 _icons = require("../common/icons");
var _templateObject, _templateObject2, _templateObject3, _templateObject4;
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 _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 StyledSidePanelContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n z-index: 99;\n height: 100%;\n width: ", "px;\n display: flex;\n transition: width 250ms;\n position: absolute;\n padding-top: ", "px;\n padding-right: ", "px;\n padding-bottom: ", "px;\n padding-left: ", "px;\n"])), function (props) {
return props.width + 2 * props.theme.sidePanel.margin.left;
}, function (props) {
return props.theme.sidePanel.margin.top;
}, function (props) {
return props.theme.sidePanel.margin.right;
}, function (props) {
return props.theme.sidePanel.margin.bottom;
}, function (props) {
return props.theme.sidePanel.margin.left;
});
var SideBarContainer = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n transition: left 250ms, right 250ms;\n left: ", "px;\n align-items: stretch;\n flex-grow: 1;\n"])), function (props) {
return props.left;
});
var SideBarInner = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n border-radius: 1px;\n display: flex;\n flex-direction: column;\n box-shadow: 8px 10px 10px -5px #00000033;\n height: 100%;\n"])), function (props) {
return props.theme.sidePanelBg;
});
var StyledCollapseButton = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n align-items: center;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n justify-content: center;\n background-color: ", ";\n border-radius: 1px;\n color: ", ";\n display: flex;\n height: 20px;\n position: absolute;\n right: -8px;\n top: ", "px;\n width: 20px;\n\n :hover {\n cursor: pointer;\n box-shadow: none;\n background-color: ", ";\n }\n"])), function (props) {
return props.theme.sideBarCloseBtnBgd;
}, function (props) {
return props.theme.sideBarCloseBtnColor;
}, function (props) {
return props.theme.sidePanel.margin.top;
}, function (props) {
return props.theme.sideBarCloseBtnBgdHover;
});
var CollapseButtonFactory = exports.CollapseButtonFactory = function CollapseButtonFactory() {
var CollapseButton = function CollapseButton(_ref) {
var onClick = _ref.onClick,
isOpen = _ref.isOpen;
return (/*#__PURE__*/_react["default"].createElement(StyledCollapseButton, {
className: "side-bar__close",
onClick: onClick
}, /*#__PURE__*/_react["default"].createElement(_icons.ArrowRight, {
height: "12px",
style: {
transform: "rotate(".concat(isOpen ? 180 : 0, "deg)"),
fill: 'currentColor'
}
}))
);
};
return CollapseButton;
};
SidebarFactory.deps = [CollapseButtonFactory];
function SidebarFactory(CollapseButton) {
var _class, _temp;
return _temp = _class = /*#__PURE__*/function (_Component) {
(0, _inherits2["default"])(SideBar, _Component);
var _super = _createSuper(SideBar);
function SideBar() {
var _this;
(0, _classCallCheck2["default"])(this, SideBar);
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), "_onOpenOrClose", function () {
_this.props.onOpenOrClose({
isOpen: !_this.props.isOpen
});
});
return _this;
}
(0, _createClass2["default"])(SideBar, [{
key: "render",
value: function render() {
var _this$props = this.props,
isOpen = _this$props.isOpen,
minifiedWidth = _this$props.minifiedWidth,
width = _this$props.width;
var horizontalOffset = isOpen ? 0 : minifiedWidth - width;
return (/*#__PURE__*/_react["default"].createElement(StyledSidePanelContainer, {
width: isOpen ? width : 0,
className: "side-panel--container"
}, /*#__PURE__*/_react["default"].createElement(SideBarContainer, {
className: "side-bar",
style: {
width: "".concat(width, "px")
},
left: horizontalOffset
}, isOpen ? /*#__PURE__*/_react["default"].createElement(SideBarInner, {
className: "side-bar__inner"
}, this.props.children) : null, /*#__PURE__*/_react["default"].createElement(CollapseButton, {
isOpen: isOpen,
onClick: this._onOpenOrClose
})))
);
}
}]);
return SideBar;
}(_react.Component), (0, _defineProperty2["default"])(_class, "defaultProps", {
width: 300,
minifiedWidth: 0,
isOpen: true,
onOpenOrClose: function noop() {}
}), (0, _defineProperty2["default"])(_class, "propTypes", {
width: _propTypes["default"].number,
isOpen: _propTypes["default"].bool,
minifiedWidth: _propTypes["default"].number,
onOpenOrClose: _propTypes["default"].func
}), _temp;
}
var _default = exports["default"] = SidebarFactory;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvc2lkZS1iYXIuanMiXSwibmFtZXMiOlsiU3R5bGVkU2lkZVBhbmVsQ29udGFpbmVyIiwic3R5bGVkIiwiZGl2IiwicHJvcHMiLCJ3aWR0aCIsInRoZW1lIiwic2lkZVBhbmVsIiwibWFyZ2luIiwibGVmdCIsInRvcCIsInJpZ2h0IiwiYm90dG9tIiwiU2lkZUJhckNvbnRhaW5lciIsIlNpZGVCYXJJbm5lciIsInNpZGVQYW5lbEJnIiwiU3R5bGVkQ29sbGFwc2VCdXR0b24iLCJzaWRlQmFyQ2xvc2VCdG5CZ2QiLCJzaWRlQmFyQ2xvc2VCdG5Db2xvciIsInNpZGVCYXJDbG9zZUJ0bkJnZEhvdmVyIiwiQ29sbGFwc2VCdXR0b25GYWN0b3J5IiwiQ29sbGFwc2VCdXR0b24iLCJvbkNsaWNrIiwiaXNPcGVuIiwidHJhbnNmb3JtIiwiZmlsbCIsIlNpZGViYXJGYWN0b3J5IiwiZGVwcyIsIm9uT3Blbk9yQ2xvc2UiLCJtaW5pZmllZFdpZHRoIiwiaG9yaXpvbnRhbE9mZnNldCIsImNoaWxkcmVuIiwiX29uT3Blbk9yQ2xvc2UiLCJDb21wb25lbnQiLCJub29wIiwiUHJvcFR5cGVzIiwibnVtYmVyIiwiYm9vbCIsImZ1bmMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsd0JBQXdCLEdBQUdDLDZCQUFPQyxHQUFWLHVUQUduQixVQUFBQyxLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDQyxLQUFOLEdBQWMsSUFBSUQsS0FBSyxDQUFDRSxLQUFOLENBQVlDLFNBQVosQ0FBc0JDLE1BQXRCLENBQTZCQyxJQUFuRDtBQUFBLENBSGMsRUFPYixVQUFBTCxLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDRSxLQUFOLENBQVlDLFNBQVosQ0FBc0JDLE1BQXRCLENBQTZCRSxHQUFqQztBQUFBLENBUFEsRUFR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QUZaLDBCQUlFLGdDQUFDLGdCQUFEO0FBQ0UsWUFBQSxTQUFTLEVBQUMsVUFEWjtBQUVFLFlBQUEsS0FBSyxFQUFFO0FBQUNBLGNBQUFBLEtBQUssWUFBS0EsS0FBTDtBQUFOLGFBRlQ7QUFHRSxZQUFBLElBQUksRUFBRXlCO0FBSFIsYUFLR1AsTUFBTSxnQkFDTCxnQ0FBQyxZQUFEO0FBQWMsWUFBQSxTQUFTLEVBQUM7QUFBeEIsYUFDRyxLQUFLbkIsS0FBTCxDQUFXMkIsUUFEZCxDQURLLEdBSUgsSUFUTixlQVVFLGdDQUFDLGNBQUQ7QUFBZ0IsWUFBQSxNQUFNLEVBQUVSLE1BQXhCO0FBQWdDLFlBQUEsT0FBTyxFQUFFLEtBQUtTO0FBQTlDLFlBVkYsQ0FKRjtBQURGO0FBbUJEO0FBMUNIO0FBQUE7QUFBQSxJQUE2QkMsZ0JBQTdCLDREQUN3QjtBQUNwQjVCLElBQUFBLEtBQUssRUFBRSxHQURhO0FBRXBCd0IsSUFBQUEsYUFBYSxFQUFFLENBRks7QUFHcEJOLElBQUFBLE1BQU0sRUFBRSxJQUhZO0FBSXBCSyxJQUFBQSxhQUFhLEVBQUUsU0FBU00sSUFBVCxHQUFnQixDQUFFO0FBSmIsR0FEeEIseURBUXFCO0FBQ2pCN0IsSUFBQUEsS0FBSyxFQUFFOEIsc0JBQVVDLE1BREE7QUFFakJiLElBQUFBLE1BQU0sRUFBRVksc0JBQVVFLElBRkQ7QUFHakJSLElBQUFBLGFBQWEsRUFBRU0sc0JBQVVDLE1BSFI7QUFJakJSLElBQUFBLGFBQWEsRUFBRU8sc0JBQVVHO0FBSlIsR0FSckI7QUE0Q0Q7O29DQUVjWixjIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIzIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge0Fycm93UmlnaHR9IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2ljb25zJztcblxuY29uc3QgU3R5bGVkU2lkZVBhbmVsQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgei1pbmRleDogOTk7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMud2lkdGggKyAyICogcHJvcHMudGhlbWUuc2lkZVBhbmVsLm1hcmdpbi5sZWZ0fXB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICB0cmFuc2l0aW9uOiB3aWR0aCAyNTBtcztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwYWRkaW5nLXRvcDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zaWRlUGFuZWwubWFyZ2luLnRvcH1weDtcbiAgcGFkZGluZy1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zaWRlUGFuZWwubWFyZ2luLnJpZ2h0fXB4O1xuICBwYWRkaW5nLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zaWRlUGFuZWwubWFyZ2luLmJvdHRvbX1weDtcbiAgcGFkZGluZy1sZWZ0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNpZGVQYW5lbC5tYXJnaW4ubGVmdH1weDtcbmA7XG5cbmNvbnN0IFNpZGVCYXJDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICB0cmFuc2l0aW9uOiBsZWZ0IDI1MG1zLCByaWdodCAyNTBtcztcbiAgbGVmdDogJHtwcm9wcyA9PiBwcm9wcy5sZWZ0fXB4O1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgZmxleC1ncm93OiAxO1xuYDtcblxuY29uc3QgU2lkZUJhcklubmVyID0gc3R5bGVkLmRpdmBcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zaWRlUGFuZWxCZ307XG4gIGJvcmRlci1yYWRpdXM6IDFweDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYm94LXNoYWRvdzogOHB4IDEwcHggMTBweCAtNXB4ICMwMDAwMDAzMztcbiAgaGVpZ2h0OiAxMDAlO1xuYDtcblxuY29uc3QgU3R5bGVkQ29sbGFwc2VCdXR0b24gPSBzdHlsZWQuZGl2YFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjIpO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zaWRlQmFyQ2xvc2VCdG5CZ2R9O1xuICBib3JkZXItcmFkaXVzOiAxcHg7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNpZGVCYXJDbG9zZUJ0bkNvbG9yfTtcbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAtOHB4O1xuICB0b3A6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2lkZVBhbmVsLm1hcmdpbi50b3B9cHg7XG4gIHdpZHRoOiAyMHB4O1xuXG4gIDpob3ZlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zaWRlQmFyQ2xvc2VCdG5CZ2RIb3Zlcn07XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBDb2xsYXBzZUJ1dHRvbkZhY3RvcnkgPSAoKSA9PiB7XG4gIGNvbnN0IENvbGxhcHNlQnV0dG9uID0gKHtvbkNsaWNrLCBpc09wZW59KSA9PiAoXG4gICAgPFN0eWxlZENvbGxhcHNlQnV0dG9uIGNsYXNzTmFtZT1cInNpZGUtYmFyX19jbG9zZVwiIG9uQ2xpY2s9e29uQ2xpY2t9PlxuICAgICAgPEFycm93UmlnaHRcbiAgICAgICAgaGVpZ2h0PVwiMTJweFwiXG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgdHJhbnNmb3JtOiBgcm90YXRlKCR7aXNPcGVuID8gMTgwIDogMH1kZWcpYCxcbiAgICAgICAgICBmaWxsOiAnY3VycmVudENvbG9yJ1xuICAgICAgICB9fVxuICAgICAgLz5cbiAgICA8L1N0eWxlZENvbGxhcHNlQnV0dG9uPlxuICApO1xuICByZXR1cm4gQ29sbGFwc2VCdXR0b247XG59O1xuXG5TaWRlYmFyRmFjdG9yeS5kZXBzID0gW0NvbGxhcHNlQnV0dG9uRmFjdG9yeV07XG5cbmZ1bmN0aW9uIFNpZGViYXJGYWN0b3J5KENvbGxhcHNlQnV0dG9uKSB7XG4gIHJldHVybiBjbGFzcyBTaWRlQmFyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgICAgd2lkdGg6IDMwMCxcbiAgICAgIG1pbmlmaWVkV2lkdGg6IDAsXG4gICAgICBpc09wZW46IHRydWUsXG4gICAgICBvbk9wZW5PckNsb3NlOiBmdW5jdGlvbiBub29wKCkge31cbiAgICB9O1xuXG4gICAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAgIHdpZHRoOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgaXNPcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgIG1pbmlmaWVkV2lkdGg6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBvbk9wZW5PckNsb3NlOiBQcm9wVHlwZXMuZnVuY1xuICAgIH07XG5cbiAgICBfb25PcGVuT3JDbG9zZSA9ICgpID0+IHtcbiAgICAgIHRoaXMucHJvcHMub25PcGVuT3JDbG9zZSh7aXNPcGVuOiAhdGhpcy5wcm9wcy5pc09wZW59KTtcbiAgICB9O1xuXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge2lzT3BlbiwgbWluaWZpZWRXaWR0aCwgd2lkdGh9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IGhvcml6b250YWxPZmZzZXQgPSBpc09wZW4gPyAwIDogbWluaWZpZWRXaWR0aCAtIHdpZHRoO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkU2lkZVBhbmVsQ29udGFpbmVyXG4gICAgICAgICAgd2lkdGg9e2lzT3BlbiA/IHdpZHRoIDogMH1cbiAgICAgICAgICBjbGFzc05hbWU9XCJzaWRlLXBhbmVsLS1jb250YWluZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPFNpZGVCYXJDb250YWluZXJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInNpZGUtYmFyXCJcbiAgICAgICAgICAgIHN0eWxlPXt7d2lkdGg6IGAke3dpZHRofXB4YH19XG4gICAgICAgICAgICBsZWZ0PXtob3Jpem9udGFsT2Zmc2V0fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpc09wZW4gPyAoXG4gICAgICAgICAgICAgIDxTaWRlQmFySW5uZXIgY2xhc3NOYW1lPVwic2lkZS1iYXJfX2lubmVyXCI+XG4gICAgICAgICAgICAgICAge3RoaXMucHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgIDwvU2lkZUJhcklubmVyPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8Q29sbGFwc2VCdXR0b24gaXNPcGVuPXtpc09wZW59IG9uQ2xpY2s9e3RoaXMuX29uT3Blbk9yQ2xvc2V9IC8+XG4gICAgICAgICAgPC9TaWRlQmFyQ29udGFpbmVyPlxuICAgICAgICA8L1N0eWxlZFNpZGVQYW5lbENvbnRhaW5lcj5cbiAgICAgICk7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBTaWRlYmFyRmFjdG9yeTtcbiJdfQ==