matrix-react-sdk
Version:
SDK for matrix.org using React
165 lines (134 loc) • 21.2 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
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 _languageHandler = require("../../../languageHandler");
var _dispatcher = _interopRequireDefault(require("../../../dispatcher/dispatcher"));
var sdk = _interopRequireWildcard(require("../../../index"));
var _Modal = _interopRequireDefault(require("../../../Modal"));
var _RoomInvite = require("../../../RoomInvite");
var _RoomAvatar = _interopRequireDefault(require("../avatars/RoomAvatar"));
var _RoomName = _interopRequireDefault(require("../elements/RoomName"));
var _replaceableComponent = require("../../../utils/replaceableComponent");
var _SettingsStore = _interopRequireDefault(require("../../../settings/SettingsStore"));
var _dec, _class, _temp;
let ThirdPartyMemberInfo = (_dec = (0, _replaceableComponent.replaceableComponent)("views.rooms.ThirdPartyMemberInfo"), _dec(_class = (_temp = class ThirdPartyMemberInfo extends _react.default.Component
/*:: <IProps, IState>*/
{
constructor(props) {
super(props);
(0, _defineProperty2.default)(this, "room", void 0);
(0, _defineProperty2.default)(this, "onRoomStateEvents", ev => {
if (ev.getType() === "m.room.third_party_invite" && ev.getStateKey() === this.state.stateKey) {
const newDisplayName = ev.getContent().display_name;
const isInvited = (0, _RoomInvite.isValid3pidInvite)(ev);
const newState = {
invited: isInvited
};
if (newDisplayName) newState['displayName'] = newDisplayName;
this.setState(newState);
}
});
(0, _defineProperty2.default)(this, "onCancel", () => {
_dispatcher.default.dispatch({
action: "view_3pid_invite",
event: null
});
});
(0, _defineProperty2.default)(this, "onKickClick", () => {
_MatrixClientPeg.MatrixClientPeg.get().sendStateEvent(this.state.roomId, "m.room.third_party_invite", {}, this.state.stateKey).catch(err => {
console.error(err); // Revert echo because of error
this.setState({
invited: true
});
const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
_Modal.default.createTrackedDialog('Revoke 3pid invite failed', '', ErrorDialog, {
title: (0, _languageHandler._t)("Failed to revoke invite"),
description: (0, _languageHandler._t)("Could not revoke the invite. The server may be experiencing a temporary problem or " + "you do not have sufficient permissions to revoke the invite.")
});
}); // Local echo
this.setState({
invited: false
});
});
this.room = _MatrixClientPeg.MatrixClientPeg.get().getRoom(this.props.event.getRoomId());
const me = this.room.getMember(_MatrixClientPeg.MatrixClientPeg.get().getUserId());
const powerLevels = this.room.currentState.getStateEvents("m.room.power_levels", "");
let kickLevel = powerLevels ? powerLevels.getContent().kick : 50;
if (typeof kickLevel !== 'number') kickLevel = 50;
const sender = this.room.getMember(this.props.event.getSender());
this.state = {
stateKey: this.props.event.getStateKey(),
roomId: this.props.event.getRoomId(),
displayName: this.props.event.getContent().display_name,
invited: true,
canKick: me ? me.powerLevel > kickLevel : false,
senderName: sender ? sender.name : this.props.event.getSender()
};
}
componentDidMount()
/*: void*/
{
_MatrixClientPeg.MatrixClientPeg.get().on("RoomState.events", this.onRoomStateEvents);
}
componentWillUnmount()
/*: void*/
{
const client = _MatrixClientPeg.MatrixClientPeg.get();
if (client) {
client.removeListener("RoomState.events", this.onRoomStateEvents);
}
}
render() {
const AccessibleButton = sdk.getComponent("elements.AccessibleButton");
let adminTools = null;
if (this.state.canKick && this.state.invited) {
adminTools = /*#__PURE__*/_react.default.createElement("div", {
className: "mx_MemberInfo_container"
}, /*#__PURE__*/_react.default.createElement("h3", null, (0, _languageHandler._t)("Admin Tools")), /*#__PURE__*/_react.default.createElement("div", {
className: "mx_MemberInfo_buttons"
}, /*#__PURE__*/_react.default.createElement(AccessibleButton, {
className: "mx_MemberInfo_field",
onClick: this.onKickClick
}, (0, _languageHandler._t)("Revoke invite"))));
}
let scopeHeader;
if (_SettingsStore.default.getValue("feature_spaces") && this.room.isSpaceRoom()) {
scopeHeader = /*#__PURE__*/_react.default.createElement("div", {
className: "mx_RightPanel_scopeHeader"
}, /*#__PURE__*/_react.default.createElement(_RoomAvatar.default, {
room: this.room,
height: 32,
width: 32
}), /*#__PURE__*/_react.default.createElement(_RoomName.default, {
room: this.room
}));
} // We shamelessly rip off the MemberInfo styles here.
return /*#__PURE__*/_react.default.createElement("div", {
className: "mx_MemberInfo",
role: "tabpanel"
}, scopeHeader, /*#__PURE__*/_react.default.createElement("div", {
className: "mx_MemberInfo_name"
}, /*#__PURE__*/_react.default.createElement(AccessibleButton, {
className: "mx_MemberInfo_cancel",
onClick: this.onCancel,
title: (0, _languageHandler._t)('Close')
}), /*#__PURE__*/_react.default.createElement("h2", null, this.state.displayName)), /*#__PURE__*/_react.default.createElement("div", {
className: "mx_MemberInfo_container"
}, /*#__PURE__*/_react.default.createElement("div", {
className: "mx_MemberInfo_profile"
}, /*#__PURE__*/_react.default.createElement("div", {
className: "mx_MemberInfo_profileField"
}, (0, _languageHandler._t)("Invited by %(sender)s", {
sender: this.state.senderName
})))), adminTools);
}
}, _temp)) || _class);
exports.default = ThirdPartyMemberInfo;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL3Jvb21zL1RoaXJkUGFydHlNZW1iZXJJbmZvLnRzeCJdLCJuYW1lcyI6WyJUaGlyZFBhcnR5TWVtYmVySW5mbyIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsImV2IiwiZ2V0VHlwZSIsImdldFN0YXRlS2V5Iiwic3RhdGUiLCJzdGF0ZUtleSIsIm5ld0Rpc3BsYXlOYW1lIiwiZ2V0Q29udGVudCIsImRpc3BsYXlfbmFtZSIsImlzSW52aXRlZCIsIm5ld1N0YXRlIiwiaW52aXRlZCIsInNldFN0YXRlIiwiZGlzIiwiZGlzcGF0Y2giLCJhY3Rpb24iLCJldmVudCIsIk1hdHJpeENsaWVudFBlZyIsImdldCIsInNlbmRTdGF0ZUV2ZW50Iiwicm9vbUlkIiwiY2F0Y2giLCJlcnIiLCJjb25zb2xlIiwiZXJyb3IiLCJFcnJvckRpYWxvZyIsInNkayIsImdldENvbXBvbmVudCIsIk1vZGFsIiwiY3JlYXRlVHJhY2tlZERpYWxvZyIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJyb29tIiwiZ2V0Um9vbSIsImdldFJvb21JZCIsIm1lIiwiZ2V0TWVtYmVyIiwiZ2V0VXNlcklkIiwicG93ZXJMZXZlbHMiLCJjdXJyZW50U3RhdGUiLCJnZXRTdGF0ZUV2ZW50cyIsImtpY2tMZXZlbCIsImtpY2siLCJzZW5kZXIiLCJnZXRTZW5kZXIiLCJkaXNwbGF5TmFtZSIsImNhbktpY2siLCJwb3dlckxldmVsIiwic2VuZGVyTmFtZSIsIm5hbWUiLCJjb21wb25lbnREaWRNb3VudCIsIm9uIiwib25Sb29tU3RhdGVFdmVudHMiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsImNsaWVudCIsInJlbW92ZUxpc3RlbmVyIiwicmVuZGVyIiwiQWNjZXNzaWJsZUJ1dHRvbiIsImFkbWluVG9vbHMiLCJvbktpY2tDbGljayIsInNjb3BlSGVhZGVyIiwiU2V0dGluZ3NTdG9yZSIsImdldFZhbHVlIiwiaXNT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ZixvQkFDSTtBQUFLLE1BQUEsU0FBUyxFQUFDO0FBQWYsT0FDSyx5QkFBRyx1QkFBSCxFQUE0QjtBQUFDRixNQUFBQSxNQUFNLEVBQUUsS0FBS3ZDLEtBQUwsQ0FBVzRDO0FBQXBCLEtBQTVCLENBREwsQ0FESixDQURKLENBVEosRUFnQktVLFVBaEJMLENBREo7QUFvQkg7O0FBMUg2RSxDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDE5LTIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtNYXRyaXhDbGllbnRQZWd9IGZyb20gXCIuLi8uLi8uLi9NYXRyaXhDbGllbnRQZWdcIjtcbmltcG9ydCB7TWF0cml4RXZlbnR9IGZyb20gXCJtYXRyaXgtanMtc2RrL3NyYy9tb2RlbHMvZXZlbnRcIjtcbmltcG9ydCB7Um9vbX0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL21vZGVscy9yb29tXCI7XG5pbXBvcnQge190fSBmcm9tIFwiLi4vLi4vLi4vbGFuZ3VhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgZGlzIGZyb20gXCIuLi8uLi8uLi9kaXNwYXRjaGVyL2Rpc3BhdGNoZXJcIjtcbmltcG9ydCAqIGFzIHNkayBmcm9tIFwiLi4vLi4vLi4vaW5kZXhcIjtcbmltcG9ydCBNb2RhbCBmcm9tIFwiLi4vLi4vLi4vTW9kYWxcIjtcbmltcG9ydCB7aXNWYWxpZDNwaWRJbnZpdGV9IGZyb20gXCIuLi8uLi8uLi9Sb29tSW52aXRlXCI7XG5pbXBvcnQgUm9vbUF2YXRhciBmcm9tIFwiLi4vYXZhdGFycy9Sb29tQXZhdGFyXCI7XG5pbXBvcnQgUm9vbU5hbWUgZnJvbSBcIi4uL2VsZW1lbnRzL1Jvb21OYW1lXCI7XG5pbXBvcnQge3JlcGxhY2VhYmxlQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvcmVwbGFjZWFibGVDb21wb25lbnRcIjtcbmltcG9ydCBTZXR0aW5nc1N0b3JlIGZyb20gXCIuLi8uLi8uLi9zZXR0aW5ncy9TZXR0aW5nc1N0b3JlXCI7XG5cbmludGVyZmFjZSBJUHJvcHMge1xuICAgIGV2ZW50OiBNYXRyaXhFdmVudDtcbn1cblxuaW50ZXJmYWNlIElTdGF0ZSB7XG4gICAgc3RhdGVLZXk6IHN0cmluZztcbiAgICByb29tSWQ6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICAgIGludml0ZWQ6IGJvb2xlYW47XG4gICAgY2FuS2ljazogYm9vbGVhbjtcbiAgICBzZW5kZXJOYW1lOiBzdHJpbmc7XG59XG5cbkByZXBsYWNlYWJsZUNvbXBvbmVudChcInZpZXdzLnJvb21zLlRoaXJkUGFydHlNZW1iZXJJbmZvXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUaGlyZFBhcnR5TWVtYmVySW5mbyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJUHJvcHMsIElTdGF0ZT4ge1xuICAgIHByaXZhdGUgcm9vbTogUm9vbTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcblxuICAgICAgICB0aGlzLnJvb20gPSBNYXRyaXhDbGllbnRQZWcuZ2V0KCkuZ2V0Um9vbSh0aGlzLnByb3BzLmV2ZW50LmdldFJvb21JZCgpKTtcbiAgICAgICAgY29uc3QgbWUgPSB0aGlzLnJvb20uZ2V0TWVtYmVyKE1hdHJpeENsaWVudFBlZy5nZXQoKS5nZXRVc2VySWQoKSk7XG4gICAgICAgIGNvbnN0IHBvd2VyTGV2ZWxzID0gdGhpcy5yb29tLmN1cnJlbnRTdGF0ZS5nZXRTdGF0ZUV2ZW50cyhcIm0ucm9vbS5wb3dlcl9sZXZlbHNcIiwgXCJcIik7XG5cbiAgICAgICAgbGV0IGtpY2tMZXZlbCA9IHBvd2VyTGV2ZWxzID8gcG93ZXJMZXZlbHMuZ2V0Q29udGVudCgpLmtpY2sgOiA1MDtcbiAgICAgICAgaWYgKHR5cGVvZihraWNrTGV2ZWwpICE9PSAnbnVtYmVyJykga2lja0xldmVsID0gNTA7XG5cbiAgICAgICAgY29uc3Qgc2VuZGVyID0gdGhpcy5yb29tLmdldE1lbWJlcih0aGlzLnByb3BzLmV2ZW50LmdldFNlbmRlcigpKTtcblxuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgc3RhdGVLZXk6IHRoaXMucHJvcHMuZXZlbnQuZ2V0U3RhdGVLZXkoKSxcbiAgICAgICAgICAgIHJvb21JZDogdGhpcy5wcm9wcy5ldmVudC5nZXRSb29tSWQoKSxcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiB0aGlzLnByb3BzLmV2ZW50LmdldENvbnRlbnQoKS5kaXNwbGF5X25hbWUsXG4gICAgICAgICAgICBpbnZpdGVkOiB0cnVlLFxuICAgICAgICAgICAgY2FuS2ljazogbWUgPyBtZS5wb3dlckxldmVsID4ga2lja0xldmVsIDogZmFsc2UsXG4gICAgICAgICAgICBzZW5kZXJOYW1lOiBzZW5kZXIgPyBzZW5kZXIubmFtZSA6IHRoaXMucHJvcHMuZXZlbnQuZ2V0U2VuZGVyKCksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKTogdm9pZCB7XG4gICAgICAgIE1hdHJpeENsaWVudFBlZy5nZXQoKS5vbihcIlJvb21TdGF0ZS5ldmVudHNcIiwgdGhpcy5vblJvb21TdGF0ZUV2ZW50cyk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IE1hdHJpeENsaWVudFBlZy5nZXQoKTtcbiAgICAgICAgaWYgKGNsaWVudCkge1xuICAgICAgICAgICAgY2xpZW50LnJlbW92ZUxpc3RlbmVyKFwiUm9vbVN0YXRlLmV2ZW50c1wiLCB0aGlzLm9uUm9vbVN0YXRlRXZlbnRzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUm9vbVN0YXRlRXZlbnRzID0gKGV2KSA9PiB7XG4gICAgICAgIGlmIChldi5nZXRUeXBlKCkgPT09IFwibS5yb29tLnRoaXJkX3BhcnR5X2ludml0ZVwiICYmIGV2LmdldFN0YXRlS2V5KCkgPT09IHRoaXMuc3RhdGUuc3RhdGVLZXkpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0Rpc3BsYXlOYW1lID0gZXYuZ2V0Q29udGVudCgpLmRpc3BsYXlfbmFtZTtcbiAgICAgICAgICAgIGNvbnN0IGlzSW52aXRlZCA9IGlzVmFsaWQzcGlkSW52aXRlKGV2KTtcblxuICAgICAgICAgICAgY29uc3QgbmV3U3RhdGUgPSB7aW52aXRlZDogaXNJbnZpdGVkfTtcbiAgICAgICAgICAgIGlmIChuZXdEaXNwbGF5TmFtZSkgbmV3U3RhdGVbJ2Rpc3BsYXlOYW1lJ10gPSBuZXdEaXNwbGF5TmFtZTtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUobmV3U3RhdGUpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIG9uQ2FuY2VsID0gKCkgPT4ge1xuICAgICAgICBkaXMuZGlzcGF0Y2goe1xuICAgICAgICAgICAgYWN0aW9uOiBcInZpZXdfM3BpZF9pbnZpdGVcIixcbiAgICAgICAgICAgIGV2ZW50OiBudWxsLFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgb25LaWNrQ2xpY2sgPSAoKSA9PiB7XG4gICAgICAgIE1hdHJpeENsaWVudFBlZy5nZXQoKS5zZW5kU3RhdGVFdmVudCh0aGlzLnN0YXRlLnJvb21JZCwgXCJtLnJvb20udGhpcmRfcGFydHlfaW52aXRlXCIsIHt9LCB0aGlzLnN0YXRlLnN0YXRlS2V5KVxuICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG5cbiAgICAgICAgICAgICAgICAvLyBSZXZlcnQgZWNobyBiZWNhdXNlIG9mIGVycm9yXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7aW52aXRlZDogdHJ1ZX0pO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgRXJyb3JEaWFsb2cgPSBzZGsuZ2V0Q29tcG9uZW50KFwiZGlhbG9ncy5FcnJvckRpYWxvZ1wiKTtcbiAgICAgICAgICAgICAgICBNb2RhbC5jcmVhdGVUcmFja2VkRGlhbG9nKCdSZXZva2UgM3BpZCBpbnZpdGUgZmFpbGVkJywgJycsIEVycm9yRGlhbG9nLCB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBfdChcIkZhaWxlZCB0byByZXZva2UgaW52aXRlXCIpLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogX3QoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIkNvdWxkIG5vdCByZXZva2UgdGhlIGludml0ZS4gVGhlIHNlcnZlciBtYXkgYmUgZXhwZXJpZW5jaW5nIGEgdGVtcG9yYXJ5IHByb2JsZW0gb3IgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ5b3UgZG8gbm90IGhhdmUgc3VmZmljaWVudCBwZXJtaXNzaW9ucyB0byByZXZva2UgdGhlIGludml0ZS5cIixcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIC8vIExvY2FsIGVjaG9cbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7aW52aXRlZDogZmFsc2V9KTtcbiAgICB9O1xuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCBBY2Nlc3NpYmxlQnV0dG9uID0gc2RrLmdldENvbXBvbmVudChcImVsZW1lbnRzLkFjY2Vzc2libGVCdXR0b25cIik7XG5cbiAgICAgICAgbGV0IGFkbWluVG9vbHMgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS5jYW5LaWNrICYmIHRoaXMuc3RhdGUuaW52aXRlZCkge1xuICAgICAgICAgICAgYWRtaW5Ub29scyA9IChcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14X01lbWJlckluZm9fY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMz57X3QoXCJBZG1pbiBUb29sc1wiKX08L2gzPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14X01lbWJlckluZm9fYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc2libGVCdXR0b24gY2xhc3NOYW1lPVwibXhfTWVtYmVySW5mb19maWVsZFwiIG9uQ2xpY2s9e3RoaXMub25LaWNrQ2xpY2t9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtfdChcIlJldm9rZSBpbnZpdGVcIil9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0FjY2Vzc2libGVCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzY29wZUhlYWRlcjtcbiAgICAgICAgaWYgKFNldHRpbmdzU3RvcmUuZ2V0VmFsdWUoXCJmZWF0dXJlX3NwYWNlc1wiKSAmJiB0aGlzLnJvb20uaXNTcGFjZVJvb20oKSkge1xuICAgICAgICAgICAgc2NvcGVIZWFkZXIgPSA8ZGl2IGNsYXNzTmFtZT1cIm14X1JpZ2h0UGFuZWxfc2NvcGVIZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8Um9vbUF2YXRhciByb29tPXt0aGlzLnJvb219IGhlaWdodD17MzJ9IHdpZHRoPXszMn0gLz5cbiAgICAgICAgICAgICAgICA8Um9vbU5hbWUgcm9vbT17dGhpcy5yb29tfSAvPlxuICAgICAgICAgICAgPC9kaXY+O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2Ugc2hhbWVsZXNzbHkgcmlwIG9mZiB0aGUgTWVtYmVySW5mbyBzdHlsZXMgaGVyZS5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfTWVtYmVySW5mb1wiIHJvbGU9XCJ0YWJwYW5lbFwiPlxuICAgICAgICAgICAgICAgIHsgc2NvcGVIZWFkZXIgfVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfTWVtYmVySW5mb19uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxBY2Nlc3NpYmxlQnV0dG9uIGNsYXNzTmFtZT1cIm14X01lbWJlckluZm9fY2FuY2VsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25DYW5jZWx9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X3QoJ0Nsb3NlJyl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxoMj57dGhpcy5zdGF0ZS5kaXNwbGF5TmFtZX08L2gyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfTWVtYmVySW5mb19jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteF9NZW1iZXJJbmZvX3Byb2ZpbGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfTWVtYmVySW5mb19wcm9maWxlRmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7X3QoXCJJbnZpdGVkIGJ5ICUoc2VuZGVyKXNcIiwge3NlbmRlcjogdGhpcy5zdGF0ZS5zZW5kZXJOYW1lfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAge2FkbWluVG9vbHN9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=