matrix-react-sdk
Version:
SDK for matrix.org using React
205 lines (162 loc) • 23.5 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireDefault(require("react"));
var _MatrixClientPeg = require("../../../MatrixClientPeg");
var _dispatcher = _interopRequireDefault(require("../../../dispatcher/dispatcher"));
var _AppsDrawer = _interopRequireDefault(require("./AppsDrawer"));
var _classnames = _interopRequireDefault(require("classnames"));
var _ratelimitedfunc = _interopRequireDefault(require("../../../ratelimitedfunc"));
var _SettingsStore = _interopRequireDefault(require("../../../settings/SettingsStore"));
var _AutoHideScrollbar = _interopRequireDefault(require("../../structures/AutoHideScrollbar"));
var _UIFeature = require("../../../settings/UIFeature");
var _CallViewForRoom = _interopRequireDefault(require("../voip/CallViewForRoom"));
var _objects = require("../../../utils/objects");
var _replaceableComponent = require("../../../utils/replaceableComponent");
var _dec, _class, _class2, _temp;
let AuxPanel = (_dec = (0, _replaceableComponent.replaceableComponent)("views.rooms.AuxPanel"), _dec(_class = (_temp = _class2 = class AuxPanel extends _react.default.Component
/*:: <IProps, IState>*/
{
constructor(props) {
super(props);
(0, _defineProperty2.default)(this, "onConferenceNotificationClick", (ev, type) => {
_dispatcher.default.dispatch({
action: 'place_call',
type: type,
room_id: this.props.room.roomId
});
ev.stopPropagation();
ev.preventDefault();
});
(0, _defineProperty2.default)(this, "_rateLimitedUpdate", new _ratelimitedfunc.default(() => {
if (_SettingsStore.default.getValue("feature_state_counters")) {
this.setState({
counters: this._computeCounters()
});
}
}, 500));
this.state = {
counters: this._computeCounters()
};
}
componentDidMount() {
const cli = _MatrixClientPeg.MatrixClientPeg.get();
cli.on("RoomState.events", this._rateLimitedUpdate);
}
componentWillUnmount() {
const cli = _MatrixClientPeg.MatrixClientPeg.get();
if (cli) {
cli.removeListener("RoomState.events", this._rateLimitedUpdate);
}
}
shouldComponentUpdate(nextProps, nextState) {
return (0, _objects.objectHasDiff)(this.props, nextProps) || (0, _objects.objectHasDiff)(this.state, nextState);
}
componentDidUpdate(prevProps, prevState) {
// most changes are likely to cause a resize
if (this.props.onResize) {
this.props.onResize();
}
}
_computeCounters() {
const counters = [];
if (this.props.room && _SettingsStore.default.getValue("feature_state_counters")) {
const stateEvs = this.props.room.currentState.getStateEvents('re.jki.counter');
stateEvs.sort((a, b) => {
return a.getStateKey() < b.getStateKey();
});
for (const ev of stateEvs) {
const title = ev.getContent().title;
const value = ev.getContent().value;
const link = ev.getContent().link;
const severity = ev.getContent().severity || "normal";
const stateKey = ev.getStateKey(); // We want a non-empty title but can accept falsey values (e.g.
// zero)
if (title && value !== undefined) {
counters.push({
title,
value,
link,
severity,
stateKey
});
}
}
}
return counters;
}
render() {
const callView = /*#__PURE__*/_react.default.createElement(_CallViewForRoom.default, {
roomId: this.props.room.roomId,
maxVideoHeight: this.props.maxHeight,
resizeNotifier: this.props.resizeNotifier
});
let appsDrawer;
if (_SettingsStore.default.getValue(_UIFeature.UIFeature.Widgets)) {
appsDrawer = /*#__PURE__*/_react.default.createElement(_AppsDrawer.default, {
room: this.props.room,
userId: this.props.userId,
maxHeight: this.props.maxHeight,
showApps: this.props.showApps,
resizeNotifier: this.props.resizeNotifier
});
}
let stateViews = null;
if (this.state.counters && _SettingsStore.default.getValue("feature_state_counters")) {
const counters = [];
this.state.counters.forEach((counter, idx) => {
const title = counter.title;
const value = counter.value;
const link = counter.link;
const severity = counter.severity;
const stateKey = counter.stateKey;
let span = /*#__PURE__*/_react.default.createElement("span", null, title, ": ", value);
if (link) {
span = /*#__PURE__*/_react.default.createElement("a", {
href: link,
target: "_blank",
rel: "noreferrer noopener"
}, span);
}
span = /*#__PURE__*/_react.default.createElement("span", {
className: "m_RoomView_auxPanel_stateViews_span",
"data-severity": severity,
key: "x-" + stateKey
}, span);
counters.push(span);
counters.push( /*#__PURE__*/_react.default.createElement("span", {
className: "m_RoomView_auxPanel_stateViews_delim",
key: "delim" + idx
}, " \u2500 "));
});
if (counters.length > 0) {
counters.pop(); // remove last deliminator
stateViews = /*#__PURE__*/_react.default.createElement("div", {
className: "m_RoomView_auxPanel_stateViews"
}, counters);
}
}
const classes = (0, _classnames.default)({
"mx_RoomView_auxPanel": true,
"mx_RoomView_auxPanel_fullHeight": this.props.fullHeight
});
const style
/*: React.CSSProperties*/
= {};
if (!this.props.fullHeight) {
style.maxHeight = this.props.maxHeight;
}
return /*#__PURE__*/_react.default.createElement(_AutoHideScrollbar.default, {
className: classes,
style: style
}, stateViews, appsDrawer, callView, this.props.children);
}
}, (0, _defineProperty2.default)(_class2, "defaultProps", {
showApps: true
}), _temp)) || _class);
exports.default = AuxPanel;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL3Jvb21zL0F1eFBhbmVsLnRzeCJdLCJuYW1lcyI6WyJBdXhQYW5lbCIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsImV2IiwidHlwZSIsImRpcyIsImRpc3BhdGNoIiwiYWN0aW9uIiwicm9vbV9pZCIsInJvb20iLCJyb29tSWQiLCJzdG9wUHJvcGFnYXRpb24iLCJwcmV2ZW50RGVmYXVsdCIsIlJhdGVMaW1pdGVkRnVuYyIsIlNldHRpbmdzU3RvcmUiLCJnZXRWYWx1ZSIsInNldFN0YXRlIiwiY291bnRlcnMiLCJfY29tcHV0ZUNvdW50ZXJzIiwic3RhdGUiLCJjb21wb25lbnREaWRNb3VudCIsImNsaSIsIk1hdHJpeENsaWVudFBlZyIsImdldCIsIm9uIiwiX3JhdGVMaW1pdGVkVXBkYXRlIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJyZW1vdmVMaXN0ZW5lciIsInNob3VsZENvbXBvbmVudFVwZGF0ZSIsIm5leHRQcm9wcyIsIm5leHRTdGF0ZSIsImNvbXBvbmVudERpZFVwZGF0ZSIsInByZXZQcm9wcyIsInByZXZTdGF0ZSIsIm9uUmVzaXplIiwic3RhdGVFdnMiLCJjdXJyZW50U3RhdGUiLCJnZXRTdGF0ZUV2ZW50cyIsInNvcnQiLCJhIiwiYiIsImdldFN0YXRlS2V5IiwidGl0bGUiLCJnZXRDb250ZW50IiwidmFsdWUiLCJsaW5rIiwic2V2ZXJpdHkiLCJzdGF0ZUtleSIsInVuZGVmaW5lZCIsInB1c2giLCJyZW5kZXIiLCJjYWxsVmlldyIsIm1heEhlaWdodCIsInJlc2l6ZU5vdGlmaWVyIiwiYXBwc0RyYXdlciIsIlVJRmVhdHVyZSIsIldpZGdldHMiLCJ1c2VySWQiLCJzaG93QXBwcyIsInN0YXRlVmlld3MiLCJmb3JFYWNoIiwiY291bnRlciIsImlkeCIsInNwYW4iLCJsZW5ndGgiLCJwb3AiLCJjbGFzc2VzIiwiZnVsbEhlaWdodCIsInN0eWxlIiwi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QUFGbkIsc0JBREo7QUFNSCxPQWxDRDs7QUFvQ0EsVUFBSTdDLFFBQVEsQ0FBQytDLE1BQVQsR0FBa0IsQ0FBdEIsRUFBeUI7QUFDckIvQyxRQUFBQSxRQUFRLENBQUNnRCxHQUFULEdBRHFCLENBQ0w7O0FBQ2hCTixRQUFBQSxVQUFVLGdCQUNOO0FBQUssVUFBQSxTQUFTLEVBQUM7QUFBZixXQUNNMUMsUUFETixDQURKO0FBS0g7QUFDSjs7QUFFRCxVQUFNaUQsT0FBTyxHQUFHLHlCQUFXO0FBQ3ZCLDhCQUF3QixJQUREO0FBRXZCLHlDQUFtQyxLQUFLaEUsS0FBTCxDQUFXaUU7QUFGdkIsS0FBWCxDQUFoQjtBQUlBLFVBQU1DO0FBQTBCO0FBQUEsTUFBRyxFQUFuQzs7QUFDQSxRQUFJLENBQUMsS0FBS2xFLEtBQUwsQ0FBV2lFLFVBQWhCLEVBQTRCO0FBQ3hCQyxNQUFBQSxLQUFLLENBQUNoQixTQUFOLEdBQWtCLEtBQUtsRCxLQUFMLENBQVdrRCxTQUE3QjtBQUNIOztBQUVELHdCQUNJLDZCQUFDLDBCQUFEO0FBQW1CLE1BQUEsU0FBUyxFQUFFYyxPQUE5QjtBQUF1QyxNQUFBLEtBQUssRUFBRUU7QUFBOUMsT0FDTVQsVUFETixFQUVNTCxVQUZOLEVBR01ILFFBSE4sRUFJTSxLQUFLakQsS0FBTCxDQUFXbUUsUUFKakIsQ0FESjtBQVFIOztBQTVLaUUsQyx5REFDNUM7QUFDbEJYLEVBQUFBLFFBQVEsRUFBRTtBQURRLEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMTUsIDIwMTYsIDIwMTcsIDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtNYXRyaXhDbGllbnRQZWd9IGZyb20gXCIuLi8uLi8uLi9NYXRyaXhDbGllbnRQZWdcIjtcbmltcG9ydCB7IFJvb20gfSBmcm9tICdtYXRyaXgtanMtc2RrL3NyYy9tb2RlbHMvcm9vbSdcbmltcG9ydCBkaXMgZnJvbSBcIi4uLy4uLy4uL2Rpc3BhdGNoZXIvZGlzcGF0Y2hlclwiO1xuaW1wb3J0IEFwcHNEcmF3ZXIgZnJvbSAnLi9BcHBzRHJhd2VyJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFJhdGVMaW1pdGVkRnVuYyBmcm9tICcuLi8uLi8uLi9yYXRlbGltaXRlZGZ1bmMnO1xuaW1wb3J0IFNldHRpbmdzU3RvcmUgZnJvbSBcIi4uLy4uLy4uL3NldHRpbmdzL1NldHRpbmdzU3RvcmVcIjtcbmltcG9ydCBBdXRvSGlkZVNjcm9sbGJhciBmcm9tIFwiLi4vLi4vc3RydWN0dXJlcy9BdXRvSGlkZVNjcm9sbGJhclwiO1xuaW1wb3J0IHtVSUZlYXR1cmV9IGZyb20gXCIuLi8uLi8uLi9zZXR0aW5ncy9VSUZlYXR1cmVcIjtcbmltcG9ydCB7IFJlc2l6ZU5vdGlmaWVyIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL1Jlc2l6ZU5vdGlmaWVyXCI7XG5pbXBvcnQgQ2FsbFZpZXdGb3JSb29tIGZyb20gJy4uL3ZvaXAvQ2FsbFZpZXdGb3JSb29tJztcbmltcG9ydCB7b2JqZWN0SGFzRGlmZn0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL29iamVjdHNcIjtcbmltcG9ydCB7cmVwbGFjZWFibGVDb21wb25lbnR9IGZyb20gXCIuLi8uLi8uLi91dGlscy9yZXBsYWNlYWJsZUNvbXBvbmVudFwiO1xuXG5pbnRlcmZhY2UgSVByb3BzIHtcbiAgICAvLyBqcy1zZGsgcm9vbSBvYmplY3RcbiAgICByb29tOiBSb29tLFxuICAgIHVzZXJJZDogc3RyaW5nLFxuICAgIHNob3dBcHBzOiBib29sZWFuLCAvLyBSZW5kZXIgYXBwc1xuXG4gICAgLy8gbWF4SGVpZ2h0IGF0dHJpYnV0ZSBmb3IgdGhlIGF1eCBwYW5lbCBhbmQgdGhlIHZpZGVvXG4gICAgLy8gdGhlcmVpblxuICAgIG1heEhlaWdodDogbnVtYmVyLFxuXG4gICAgLy8gYSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2hlbiB0aGUgY29udGVudCBvZiB0aGUgYXV4IHBhbmVsIGNoYW5nZXNcbiAgICAvLyBjb250ZW50IGluIGEgd2F5IHRoYXQgaXMgbGlrZWx5IHRvIG1ha2UgaXQgY2hhbmdlIHNpemUuXG4gICAgb25SZXNpemU6ICgpID0+IHZvaWQsXG4gICAgZnVsbEhlaWdodDogYm9vbGVhbixcblxuICAgIHJlc2l6ZU5vdGlmaWVyOiBSZXNpemVOb3RpZmllcixcbn1cblxuaW50ZXJmYWNlIENvdW50ZXIge1xuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgdmFsdWU6IG51bWJlcixcbiAgICBsaW5rOiBzdHJpbmcsXG4gICAgc2V2ZXJpdHk6IHN0cmluZyxcbiAgICBzdGF0ZUtleTogc3RyaW5nLFxufVxuXG5pbnRlcmZhY2UgSVN0YXRlIHtcbiAgICBjb3VudGVyczogQ291bnRlcltdLFxufVxuXG5AcmVwbGFjZWFibGVDb21wb25lbnQoXCJ2aWV3cy5yb29tcy5BdXhQYW5lbFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXV4UGFuZWwgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SVByb3BzLCBJU3RhdGU+IHtcbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgICAgICBzaG93QXBwczogdHJ1ZSxcbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBjb3VudGVyczogdGhpcy5fY29tcHV0ZUNvdW50ZXJzKCksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIGNvbnN0IGNsaSA9IE1hdHJpeENsaWVudFBlZy5nZXQoKTtcbiAgICAgICAgY2xpLm9uKFwiUm9vbVN0YXRlLmV2ZW50c1wiLCB0aGlzLl9yYXRlTGltaXRlZFVwZGF0ZSk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICAgIGNvbnN0IGNsaSA9IE1hdHJpeENsaWVudFBlZy5nZXQoKTtcbiAgICAgICAgaWYgKGNsaSkge1xuICAgICAgICAgICAgY2xpLnJlbW92ZUxpc3RlbmVyKFwiUm9vbVN0YXRlLmV2ZW50c1wiLCB0aGlzLl9yYXRlTGltaXRlZFVwZGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzaG91bGRDb21wb25lbnRVcGRhdGUobmV4dFByb3BzLCBuZXh0U3RhdGUpIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdEhhc0RpZmYodGhpcy5wcm9wcywgbmV4dFByb3BzKSB8fCBvYmplY3RIYXNEaWZmKHRoaXMuc3RhdGUsIG5leHRTdGF0ZSk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcywgcHJldlN0YXRlKSB7XG4gICAgICAgIC8vIG1vc3QgY2hhbmdlcyBhcmUgbGlrZWx5IHRvIGNhdXNlIGEgcmVzaXplXG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9uUmVzaXplKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uUmVzaXplKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNvbmZlcmVuY2VOb3RpZmljYXRpb25DbGljayA9IChldiwgdHlwZSkgPT4ge1xuICAgICAgICBkaXMuZGlzcGF0Y2goe1xuICAgICAgICAgICAgYWN0aW9uOiAncGxhY2VfY2FsbCcsXG4gICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgcm9vbV9pZDogdGhpcy5wcm9wcy5yb29tLnJvb21JZCxcbiAgICAgICAgfSk7XG4gICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH07XG5cbiAgICBfcmF0ZUxpbWl0ZWRVcGRhdGUgPSBuZXcgUmF0ZUxpbWl0ZWRGdW5jKCgpID0+IHtcbiAgICAgICAgaWYgKFNldHRpbmdzU3RvcmUuZ2V0VmFsdWUoXCJmZWF0dXJlX3N0YXRlX2NvdW50ZXJzXCIpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtjb3VudGVyczogdGhpcy5fY29tcHV0ZUNvdW50ZXJzKCl9KTtcbiAgICAgICAgfVxuICAgIH0sIDUwMCk7XG5cbiAgICBfY29tcHV0ZUNvdW50ZXJzKCkge1xuICAgICAgICBjb25zdCBjb3VudGVycyA9IFtdO1xuXG4gICAgICAgIGlmICh0aGlzLnByb3BzLnJvb20gJiYgU2V0dGluZ3NTdG9yZS5nZXRWYWx1ZShcImZlYXR1cmVfc3RhdGVfY291bnRlcnNcIikpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlRXZzID0gdGhpcy5wcm9wcy5yb29tLmN1cnJlbnRTdGF0ZS5nZXRTdGF0ZUV2ZW50cygncmUuamtpLmNvdW50ZXInKTtcbiAgICAgICAgICAgIHN0YXRlRXZzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYS5nZXRTdGF0ZUtleSgpIDwgYi5nZXRTdGF0ZUtleSgpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZXYgb2Ygc3RhdGVFdnMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aXRsZSA9IGV2LmdldENvbnRlbnQoKS50aXRsZTtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGV2LmdldENvbnRlbnQoKS52YWx1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5rID0gZXYuZ2V0Q29udGVudCgpLmxpbms7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2V2ZXJpdHkgPSBldi5nZXRDb250ZW50KCkuc2V2ZXJpdHkgfHwgXCJub3JtYWxcIjtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGF0ZUtleSA9IGV2LmdldFN0YXRlS2V5KCk7XG5cbiAgICAgICAgICAgICAgICAvLyBXZSB3YW50IGEgbm9uLWVtcHR5IHRpdGxlIGJ1dCBjYW4gYWNjZXB0IGZhbHNleSB2YWx1ZXMgKGUuZy5cbiAgICAgICAgICAgICAgICAvLyB6ZXJvKVxuICAgICAgICAgICAgICAgIGlmICh0aXRsZSAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmssXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXZlcml0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlS2V5LFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb3VudGVycztcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IGNhbGxWaWV3ID0gKFxuICAgICAgICAgICAgPENhbGxWaWV3Rm9yUm9vbVxuICAgICAgICAgICAgICAgIHJvb21JZD17dGhpcy5wcm9wcy5yb29tLnJvb21JZH1cbiAgICAgICAgICAgICAgICBtYXhWaWRlb0hlaWdodD17dGhpcy5wcm9wcy5tYXhIZWlnaHR9XG4gICAgICAgICAgICAgICAgcmVzaXplTm90aWZpZXI9e3RoaXMucHJvcHMucmVzaXplTm90aWZpZXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICApO1xuXG4gICAgICAgIGxldCBhcHBzRHJhd2VyO1xuICAgICAgICBpZiAoU2V0dGluZ3NTdG9yZS5nZXRWYWx1ZShVSUZlYXR1cmUuV2lkZ2V0cykpIHtcbiAgICAgICAgICAgIGFwcHNEcmF3ZXIgPSA8QXBwc0RyYXdlclxuICAgICAgICAgICAgICAgIHJvb209e3RoaXMucHJvcHMucm9vbX1cbiAgICAgICAgICAgICAgICB1c2VySWQ9e3RoaXMucHJvcHMudXNlcklkfVxuICAgICAgICAgICAgICAgIG1heEhlaWdodD17dGhpcy5wcm9wcy5tYXhIZWlnaHR9XG4gICAgICAgICAgICAgICAgc2hvd0FwcHM9e3RoaXMucHJvcHMuc2hvd0FwcHN9XG4gICAgICAgICAgICAgICAgcmVzaXplTm90aWZpZXI9e3RoaXMucHJvcHMucmVzaXplTm90aWZpZXJ9XG4gICAgICAgICAgICAvPjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzdGF0ZVZpZXdzID0gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuY291bnRlcnMgJiYgU2V0dGluZ3NTdG9yZS5nZXRWYWx1ZShcImZlYXR1cmVfc3RhdGVfY291bnRlcnNcIikpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvdW50ZXJzID0gW107XG5cbiAgICAgICAgICAgIHRoaXMuc3RhdGUuY291bnRlcnMuZm9yRWFjaCgoY291bnRlciwgaWR4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSBjb3VudGVyLnRpdGxlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY291bnRlci52YWx1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5rID0gY291bnRlci5saW5rO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNldmVyaXR5ID0gY291bnRlci5zZXZlcml0eTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGF0ZUtleSA9IGNvdW50ZXIuc3RhdGVLZXk7XG5cbiAgICAgICAgICAgICAgICBsZXQgc3BhbiA9IDxzcGFuPnsgdGl0bGUgfTogeyB2YWx1ZSB9PC9zcGFuPjtcblxuICAgICAgICAgICAgICAgIGlmIChsaW5rKSB7XG4gICAgICAgICAgICAgICAgICAgIHNwYW4gPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPXtsaW5rfSB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub3JlZmVycmVyIG5vb3BlbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzcGFuIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzcGFuID0gKFxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibV9Sb29tVmlld19hdXhQYW5lbF9zdGF0ZVZpZXdzX3NwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZXZlcml0eT17c2V2ZXJpdHl9XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9eyBcIngtXCIgKyBzdGF0ZUtleSB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtzcGFufVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGNvdW50ZXJzLnB1c2goc3Bhbik7XG4gICAgICAgICAgICAgICAgY291bnRlcnMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm1fUm9vbVZpZXdfYXV4UGFuZWxfc3RhdGVWaWV3c19kZWxpbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e1wiZGVsaW1cIiArIGlkeH1cbiAgICAgICAgICAgICAgICAgICAgPiDilIAgPC9zcGFuPixcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChjb3VudGVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY291bnRlcnMucG9wKCk7IC8vIHJlbW92ZSBsYXN0IGRlbGltaW5hdG9yXG4gICAgICAgICAgICAgICAgc3RhdGVWaWV3cyA9IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtX1Jvb21WaWV3X2F1eFBhbmVsX3N0YXRlVmlld3NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY291bnRlcnMgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzTmFtZXMoe1xuICAgICAgICAgICAgXCJteF9Sb29tVmlld19hdXhQYW5lbFwiOiB0cnVlLFxuICAgICAgICAgICAgXCJteF9Sb29tVmlld19hdXhQYW5lbF9mdWxsSGVpZ2h0XCI6IHRoaXMucHJvcHMuZnVsbEhlaWdodCxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge307XG4gICAgICAgIGlmICghdGhpcy5wcm9wcy5mdWxsSGVpZ2h0KSB7XG4gICAgICAgICAgICBzdHlsZS5tYXhIZWlnaHQgPSB0aGlzLnByb3BzLm1heEhlaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QXV0b0hpZGVTY3JvbGxiYXIgY2xhc3NOYW1lPXtjbGFzc2VzfSBzdHlsZT17c3R5bGV9ID5cbiAgICAgICAgICAgICAgICB7IHN0YXRlVmlld3MgfVxuICAgICAgICAgICAgICAgIHsgYXBwc0RyYXdlciB9XG4gICAgICAgICAgICAgICAgeyBjYWxsVmlldyB9XG4gICAgICAgICAgICAgICAgeyB0aGlzLnByb3BzLmNoaWxkcmVuIH1cbiAgICAgICAgICAgIDwvQXV0b0hpZGVTY3JvbGxiYXI+XG4gICAgICAgICk7XG4gICAgfVxufVxuIl19