UNPKG

matrix-react-sdk

Version:
129 lines (125 loc) 22.4 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireDefault(require("react")); var _logger = require("matrix-js-sdk/src/logger"); var _languageHandler = require("../../../languageHandler"); var _Pill = require("../elements/Pill"); var _Permalinks = require("../../../utils/permalinks/Permalinks"); var _BaseAvatar = _interopRequireDefault(require("../avatars/BaseAvatar")); var _SettingsStore = _interopRequireDefault(require("../../../settings/SettingsStore")); var _HtmlUtils = require("../../../HtmlUtils"); var _Media = require("../../../customisations/Media"); /* Copyright 2024 New Vector Ltd. Copyright 2020-2023 The Matrix.org Foundation C.I.C. SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ /** * This should match https://github.com/matrix-org/matrix-doc/blob/hs/msc-bridge-inf/proposals/2346-bridge-info-state-event.md#mbridge */ class BridgeTile extends _react.default.PureComponent { render() { const content = this.props.ev.getContent(); // Validate if (!content.channel?.id || !content.protocol?.id) { _logger.logger.warn(`Bridge info event ${this.props.ev.getId()} has missing content. Tile will not render`); return null; } if (!content.bridgebot) { // Bridgebot was not required previously, so in order to not break rooms we are allowing // the sender to be used in place. When the proposal is merged, this should be removed. _logger.logger.warn(`Bridge info event ${this.props.ev.getId()} does not provide a 'bridgebot' key which` + "is deprecated behaviour. Using sender for now."); content.bridgebot = this.props.ev.getSender(); } const { channel, network, protocol } = content; const protocolName = protocol.displayname || protocol.id; const channelName = channel.displayname || channel.id; let creator; if (content.creator) { creator = /*#__PURE__*/_react.default.createElement("li", null, (0, _languageHandler._t)("labs|bridge_state_creator", {}, { user: () => /*#__PURE__*/_react.default.createElement(_Pill.Pill, { type: _Pill.PillType.UserMention, room: this.props.room, url: (0, _Permalinks.makeUserPermalink)(content.creator), shouldShowPillAvatar: _SettingsStore.default.getValue("Pill.shouldShowPillAvatar") }) })); } const bot = /*#__PURE__*/_react.default.createElement("li", null, (0, _languageHandler._t)("labs|bridge_state_manager", {}, { user: () => /*#__PURE__*/_react.default.createElement(_Pill.Pill, { type: _Pill.PillType.UserMention, room: this.props.room, url: (0, _Permalinks.makeUserPermalink)(content.bridgebot), shouldShowPillAvatar: _SettingsStore.default.getValue("Pill.shouldShowPillAvatar") }) })); let networkIcon; if (protocol.avatar_url) { const avatarUrl = (0, _Media.mediaFromMxc)(protocol.avatar_url).getSquareThumbnailHttp(64) ?? undefined; networkIcon = /*#__PURE__*/_react.default.createElement(_BaseAvatar.default, { className: "mx_RoomSettingsDialog_protocolIcon", size: "48px", name: protocolName, idName: protocolName, url: avatarUrl }); } else { networkIcon = /*#__PURE__*/_react.default.createElement("div", { className: "mx_RoomSettingsDialog_noProtocolIcon" }); } let networkItem; if (network) { const networkName = network.displayname || network.id; let networkLink = /*#__PURE__*/_react.default.createElement("span", null, networkName); if (typeof network.external_url === "string" && (0, _HtmlUtils.isUrlPermitted)(network.external_url)) { networkLink = /*#__PURE__*/_react.default.createElement("a", { href: network.external_url, target: "_blank", rel: "noreferrer noopener" }, networkName); } networkItem = (0, _languageHandler._t)("labs|bridge_state_workspace", {}, { networkLink: () => networkLink }); } let channelLink = /*#__PURE__*/_react.default.createElement("span", null, channelName); if (typeof channel.external_url === "string" && (0, _HtmlUtils.isUrlPermitted)(channel.external_url)) { channelLink = /*#__PURE__*/_react.default.createElement("a", { href: channel.external_url, target: "_blank", rel: "noreferrer noopener" }, channelName); } const id = this.props.ev.getId(); return /*#__PURE__*/_react.default.createElement("li", { key: id, className: "mx_RoomSettingsDialog_BridgeList_listItem" }, /*#__PURE__*/_react.default.createElement("div", { className: "mx_RoomSettingsDialog_column_icon" }, networkIcon), /*#__PURE__*/_react.default.createElement("div", { className: "mx_RoomSettingsDialog_column_data" }, /*#__PURE__*/_react.default.createElement("h3", { className: "mx_RoomSettingsDialog_column_data_protocolName" }, protocolName), /*#__PURE__*/_react.default.createElement("p", { className: "mx_RoomSettingsDialog_column_data_details mx_RoomSettingsDialog_workspace_channel_details" }, networkItem, /*#__PURE__*/_react.default.createElement("span", { className: "mx_RoomSettingsDialog_channel" }, (0, _languageHandler._t)("labs|bridge_state_channel", {}, { channelLink: () => channelLink }))), /*#__PURE__*/_react.default.createElement("ul", { className: "mx_RoomSettingsDialog_column_data_metadata mx_RoomSettingsDialog_metadata" }, creator, " ", bot))); } } exports.default = BridgeTile; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2dnZXIiLCJfbGFuZ3VhZ2VIYW5kbGVyIiwiX1BpbGwiLCJfUGVybWFsaW5rcyIsIl9CYXNlQXZhdGFyIiwiX1NldHRpbmdzU3RvcmUiLCJfSHRtbFV0aWxzIiwiX01lZGlhIiwiQnJpZGdlVGlsZSIsIlJlYWN0IiwiUHVyZUNvbXBvbmVudCIsInJlbmRlciIsImNvbnRlbnQiLCJwcm9wcyIsImV2IiwiZ2V0Q29udGVudCIsImNoYW5uZWwiLCJpZCIsInByb3RvY29sIiwibG9nZ2VyIiwid2FybiIsImdldElkIiwiYnJpZGdlYm90IiwiZ2V0U2VuZGVyIiwibmV0d29yayIsInByb3RvY29sTmFtZSIsImRpc3BsYXluYW1lIiwiY2hhbm5lbE5hbWUiLCJjcmVhdG9yIiwiZGVmYXVsdCIsImNyZWF0ZUVsZW1lbnQiLCJfdCIsInVzZXIiLCJQaWxsIiwidHlwZSIsIlBpbGxUeXBlIiwiVXNlck1lbnRpb24iLCJyb29tIiwidXJsIiwibWFrZVVzZXJQZXJtYWxpbmsiLCJzaG91bGRTaG93UGlsbEF2YXRhciIsIlNldHRpbmdzU3RvcmUiLCJnZXRWYWx1ZSIsImJvdCIsIm5ldHdvcmtJY29uIiwiYXZhdGFyX3VybCIsImF2YXRhclVybCIsIm1lZGlhRnJvbU14YyIsImdldFNxdWFyZVRodW1ibmFpbEh0dHAiLCJ1bmRlZmluZWQiLCJjbGFzc05hbWUiLCJzaXplIiwibmFtZSIsImlkTmFtZSIsIm5ldHdvcmtJdGVtIiwibmV0d29ya05hbWUiLCJuZXR3b3JrTGluayIsImV4dGVybmFsX3VybCIsImlzVXJsUGVybWl0dGVkIiwiaHJlZiIsInRhcmdldCIsInJlbCIsImNoYW5uZWxMaW5rIiwia2V5IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL3NldHRpbmdzL0JyaWRnZVRpbGUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIwLTIwMjMgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFJlYWN0LCB7IFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgTWF0cml4RXZlbnQsIFJvb20gfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvbWF0cml4XCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvbG9nZ2VyXCI7XG5cbmltcG9ydCB7IF90IH0gZnJvbSBcIi4uLy4uLy4uL2xhbmd1YWdlSGFuZGxlclwiO1xuaW1wb3J0IHsgUGlsbCwgUGlsbFR5cGUgfSBmcm9tIFwiLi4vZWxlbWVudHMvUGlsbFwiO1xuaW1wb3J0IHsgbWFrZVVzZXJQZXJtYWxpbmsgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvcGVybWFsaW5rcy9QZXJtYWxpbmtzXCI7XG5pbXBvcnQgQmFzZUF2YXRhciBmcm9tIFwiLi4vYXZhdGFycy9CYXNlQXZhdGFyXCI7XG5pbXBvcnQgU2V0dGluZ3NTdG9yZSBmcm9tIFwiLi4vLi4vLi4vc2V0dGluZ3MvU2V0dGluZ3NTdG9yZVwiO1xuaW1wb3J0IHsgaXNVcmxQZXJtaXR0ZWQgfSBmcm9tIFwiLi4vLi4vLi4vSHRtbFV0aWxzXCI7XG5pbXBvcnQgeyBtZWRpYUZyb21NeGMgfSBmcm9tIFwiLi4vLi4vLi4vY3VzdG9taXNhdGlvbnMvTWVkaWFcIjtcblxuaW50ZXJmYWNlIElQcm9wcyB7XG4gICAgZXY6IE1hdHJpeEV2ZW50O1xuICAgIHJvb206IFJvb207XG59XG5cbi8qKlxuICogVGhpcyBzaG91bGQgbWF0Y2ggaHR0cHM6Ly9naXRodWIuY29tL21hdHJpeC1vcmcvbWF0cml4LWRvYy9ibG9iL2hzL21zYy1icmlkZ2UtaW5mL3Byb3Bvc2Fscy8yMzQ2LWJyaWRnZS1pbmZvLXN0YXRlLWV2ZW50Lm1kI21icmlkZ2VcbiAqL1xuaW50ZXJmYWNlIElCcmlkZ2VTdGF0ZUV2ZW50IHtcbiAgICBicmlkZ2Vib3Q6IHN0cmluZztcbiAgICBjcmVhdG9yPzogc3RyaW5nO1xuICAgIHByb3RvY29sOiB7XG4gICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgIGRpc3BsYXluYW1lPzogc3RyaW5nO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2FtZWxjYXNlXG4gICAgICAgIGF2YXRhcl91cmw/OiBzdHJpbmc7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjYW1lbGNhc2VcbiAgICAgICAgZXh0ZXJuYWxfdXJsPzogc3RyaW5nO1xuICAgIH07XG4gICAgbmV0d29yaz86IHtcbiAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgZGlzcGxheW5hbWU/OiBzdHJpbmc7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjYW1lbGNhc2VcbiAgICAgICAgYXZhdGFyX3VybD86IHN0cmluZztcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNhbWVsY2FzZVxuICAgICAgICBleHRlcm5hbF91cmw/OiBzdHJpbmc7XG4gICAgfTtcbiAgICBjaGFubmVsOiB7XG4gICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgIGRpc3BsYXluYW1lPzogc3RyaW5nO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2FtZWxjYXNlXG4gICAgICAgIGF2YXRhcl91cmw/OiBzdHJpbmc7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjYW1lbGNhc2VcbiAgICAgICAgZXh0ZXJuYWxfdXJsPzogc3RyaW5nO1xuICAgIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJyaWRnZVRpbGUgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50PElQcm9wcz4ge1xuICAgIHB1YmxpYyByZW5kZXIoKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgICAgICAgY29uc3QgY29udGVudDogSUJyaWRnZVN0YXRlRXZlbnQgPSB0aGlzLnByb3BzLmV2LmdldENvbnRlbnQoKTtcbiAgICAgICAgLy8gVmFsaWRhdGVcbiAgICAgICAgaWYgKCFjb250ZW50LmNoYW5uZWw/LmlkIHx8ICFjb250ZW50LnByb3RvY29sPy5pZCkge1xuICAgICAgICAgICAgbG9nZ2VyLndhcm4oYEJyaWRnZSBpbmZvIGV2ZW50ICR7dGhpcy5wcm9wcy5ldi5nZXRJZCgpfSBoYXMgbWlzc2luZyBjb250ZW50LiBUaWxlIHdpbGwgbm90IHJlbmRlcmApO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjb250ZW50LmJyaWRnZWJvdCkge1xuICAgICAgICAgICAgLy8gQnJpZGdlYm90IHdhcyBub3QgcmVxdWlyZWQgcHJldmlvdXNseSwgc28gaW4gb3JkZXIgdG8gbm90IGJyZWFrIHJvb21zIHdlIGFyZSBhbGxvd2luZ1xuICAgICAgICAgICAgLy8gdGhlIHNlbmRlciB0byBiZSB1c2VkIGluIHBsYWNlLiBXaGVuIHRoZSBwcm9wb3NhbCBpcyBtZXJnZWQsIHRoaXMgc2hvdWxkIGJlIHJlbW92ZWQuXG4gICAgICAgICAgICBsb2dnZXIud2FybihcbiAgICAgICAgICAgICAgICBgQnJpZGdlIGluZm8gZXZlbnQgJHt0aGlzLnByb3BzLmV2LmdldElkKCl9IGRvZXMgbm90IHByb3ZpZGUgYSAnYnJpZGdlYm90JyBrZXkgd2hpY2hgICtcbiAgICAgICAgICAgICAgICAgICAgXCJpcyBkZXByZWNhdGVkIGJlaGF2aW91ci4gVXNpbmcgc2VuZGVyIGZvciBub3cuXCIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29udGVudC5icmlkZ2Vib3QgPSB0aGlzLnByb3BzLmV2LmdldFNlbmRlcigpITtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IGNoYW5uZWwsIG5ldHdvcmssIHByb3RvY29sIH0gPSBjb250ZW50O1xuICAgICAgICBjb25zdCBwcm90b2NvbE5hbWUgPSBwcm90b2NvbC5kaXNwbGF5bmFtZSB8fCBwcm90b2NvbC5pZDtcbiAgICAgICAgY29uc3QgY2hhbm5lbE5hbWUgPSBjaGFubmVsLmRpc3BsYXluYW1lIHx8IGNoYW5uZWwuaWQ7XG5cbiAgICAgICAgbGV0IGNyZWF0b3I6IEpTWC5FbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAoY29udGVudC5jcmVhdG9yKSB7XG4gICAgICAgICAgICBjcmVhdG9yID0gKFxuICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAge190KFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJsYWJzfGJyaWRnZV9zdGF0ZV9jcmVhdG9yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyOiAoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQaWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXtQaWxsVHlwZS5Vc2VyTWVudGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb209e3RoaXMucHJvcHMucm9vbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybD17bWFrZVVzZXJQZXJtYWxpbmsoY29udGVudC5jcmVhdG9yISl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRTaG93UGlsbEF2YXRhcj17U2V0dGluZ3NTdG9yZS5nZXRWYWx1ZShcIlBpbGwuc2hvdWxkU2hvd1BpbGxBdmF0YXJcIil9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBib3QgPSAoXG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAge190KFxuICAgICAgICAgICAgICAgICAgICBcImxhYnN8YnJpZGdlX3N0YXRlX21hbmFnZXJcIixcbiAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI6ICgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UGlsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXtQaWxsVHlwZS5Vc2VyTWVudGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vbT17dGhpcy5wcm9wcy5yb29tfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw9e21ha2VVc2VyUGVybWFsaW5rKGNvbnRlbnQuYnJpZGdlYm90KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkU2hvd1BpbGxBdmF0YXI9e1NldHRpbmdzU3RvcmUuZ2V0VmFsdWUoXCJQaWxsLnNob3VsZFNob3dQaWxsQXZhdGFyXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICApO1xuXG4gICAgICAgIGxldCBuZXR3b3JrSWNvbjtcblxuICAgICAgICBpZiAocHJvdG9jb2wuYXZhdGFyX3VybCkge1xuICAgICAgICAgICAgY29uc3QgYXZhdGFyVXJsID0gbWVkaWFGcm9tTXhjKHByb3RvY29sLmF2YXRhcl91cmwpLmdldFNxdWFyZVRodW1ibmFpbEh0dHAoNjQpID8/IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgbmV0d29ya0ljb24gPSAoXG4gICAgICAgICAgICAgICAgPEJhc2VBdmF0YXJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXhfUm9vbVNldHRpbmdzRGlhbG9nX3Byb3RvY29sSWNvblwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCI0OHB4XCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT17cHJvdG9jb2xOYW1lfVxuICAgICAgICAgICAgICAgICAgICBpZE5hbWU9e3Byb3RvY29sTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgdXJsPXthdmF0YXJVcmx9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXR3b3JrSWNvbiA9IDxkaXYgY2xhc3NOYW1lPVwibXhfUm9vbVNldHRpbmdzRGlhbG9nX25vUHJvdG9jb2xJY29uXCIgLz47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG5ldHdvcmtJdGVtOiBSZWFjdE5vZGUgfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChuZXR3b3JrKSB7XG4gICAgICAgICAgICBjb25zdCBuZXR3b3JrTmFtZSA9IG5ldHdvcmsuZGlzcGxheW5hbWUgfHwgbmV0d29yay5pZDtcbiAgICAgICAgICAgIGxldCBuZXR3b3JrTGluayA9IDxzcGFuPntuZXR3b3JrTmFtZX08L3NwYW4+O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBuZXR3b3JrLmV4dGVybmFsX3VybCA9PT0gXCJzdHJpbmdcIiAmJiBpc1VybFBlcm1pdHRlZChuZXR3b3JrLmV4dGVybmFsX3VybCkpIHtcbiAgICAgICAgICAgICAgICBuZXR3b3JrTGluayA9IChcbiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj17bmV0d29yay5leHRlcm5hbF91cmx9IHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vcmVmZXJyZXIgbm9vcGVuZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtuZXR3b3JrTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXR3b3JrSXRlbSA9IF90KFxuICAgICAgICAgICAgICAgIFwibGFic3xicmlkZ2Vfc3RhdGVfd29ya3NwYWNlXCIsXG4gICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuZXR3b3JrTGluazogKCkgPT4gbmV0d29ya0xpbmssXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY2hhbm5lbExpbmsgPSA8c3Bhbj57Y2hhbm5lbE5hbWV9PC9zcGFuPjtcbiAgICAgICAgaWYgKHR5cGVvZiBjaGFubmVsLmV4dGVybmFsX3VybCA9PT0gXCJzdHJpbmdcIiAmJiBpc1VybFBlcm1pdHRlZChjaGFubmVsLmV4dGVybmFsX3VybCkpIHtcbiAgICAgICAgICAgIGNoYW5uZWxMaW5rID0gKFxuICAgICAgICAgICAgICAgIDxhIGhyZWY9e2NoYW5uZWwuZXh0ZXJuYWxfdXJsfSB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub3JlZmVycmVyIG5vb3BlbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIHtjaGFubmVsTmFtZX1cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLnByb3BzLmV2LmdldElkKCk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8bGkga2V5PXtpZH0gY2xhc3NOYW1lPVwibXhfUm9vbVNldHRpbmdzRGlhbG9nX0JyaWRnZUxpc3RfbGlzdEl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14X1Jvb21TZXR0aW5nc0RpYWxvZ19jb2x1bW5faWNvblwiPntuZXR3b3JrSWNvbn08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14X1Jvb21TZXR0aW5nc0RpYWxvZ19jb2x1bW5fZGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwibXhfUm9vbVNldHRpbmdzRGlhbG9nX2NvbHVtbl9kYXRhX3Byb3RvY29sTmFtZVwiPntwcm90b2NvbE5hbWV9PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibXhfUm9vbVNldHRpbmdzRGlhbG9nX2NvbHVtbl9kYXRhX2RldGFpbHMgbXhfUm9vbVNldHRpbmdzRGlhbG9nX3dvcmtzcGFjZV9jaGFubmVsX2RldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtuZXR3b3JrSXRlbX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm14X1Jvb21TZXR0aW5nc0RpYWxvZ19jaGFubmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge190KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImxhYnN8YnJpZGdlX3N0YXRlX2NoYW5uZWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxMaW5rOiAoKSA9PiBjaGFubmVsTGluayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzc05hbWU9XCJteF9Sb29tU2V0dGluZ3NEaWFsb2dfY29sdW1uX2RhdGFfbWV0YWRhdGEgbXhfUm9vbVNldHRpbmdzRGlhbG9nX21ldGFkYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y3JlYXRvcn0ge2JvdH1cbiAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBUUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsZ0JBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFdBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFdBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFNLGNBQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFPLFVBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLE1BQUEsR0FBQVIsT0FBQTtBQWxCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFtQkE7QUFDQTtBQUNBOztBQThCZSxNQUFNUyxVQUFVLFNBQVNDLGNBQUssQ0FBQ0MsYUFBYSxDQUFTO0VBQ3pEQyxNQUFNQSxDQUFBLEVBQW9CO0lBQzdCLE1BQU1DLE9BQTBCLEdBQUcsSUFBSSxDQUFDQyxLQUFLLENBQUNDLEVBQUUsQ0FBQ0MsVUFBVSxDQUFDLENBQUM7SUFDN0Q7SUFDQSxJQUFJLENBQUNILE9BQU8sQ0FBQ0ksT0FBTyxFQUFFQyxFQUFFLElBQUksQ0FBQ0wsT0FBTyxDQUFDTSxRQUFRLEVBQUVELEVBQUUsRUFBRTtNQUMvQ0UsY0FBTSxDQUFDQyxJQUFJLENBQUMscUJBQXFCLElBQUksQ0FBQ1AsS0FBSyxDQUFDQyxFQUFFLENBQUNPLEtBQUssQ0FBQyxDQUFDLDRDQUE0QyxDQUFDO01BQ25HLE9BQU8sSUFBSTtJQUNmO0lBQ0EsSUFBSSxDQUFDVCxPQUFPLENBQUNVLFNBQVMsRUFBRTtNQUNwQjtNQUNBO01BQ0FILGNBQU0sQ0FBQ0MsSUFBSSxDQUNQLHFCQUFxQixJQUFJLENBQUNQLEtBQUssQ0FBQ0MsRUFBRSxDQUFDTyxLQUFLLENBQUMsQ0FBQywyQ0FBMkMsR0FDakYsZ0RBQ1IsQ0FBQztNQUNEVCxPQUFPLENBQUNVLFNBQVMsR0FBRyxJQUFJLENBQUNULEtBQUssQ0FBQ0MsRUFBRSxDQUFDUyxTQUFTLENBQUMsQ0FBRTtJQUNsRDtJQUNBLE1BQU07TUFBRVAsT0FBTztNQUFFUSxPQUFPO01BQUVOO0lBQVMsQ0FBQyxHQUFHTixPQUFPO0lBQzlDLE1BQU1hLFlBQVksR0FBR1AsUUFBUSxDQUFDUSxXQUFXLElBQUlSLFFBQVEsQ0FBQ0QsRUFBRTtJQUN4RCxNQUFNVSxXQUFXLEdBQUdYLE9BQU8sQ0FBQ1UsV0FBVyxJQUFJVixPQUFPLENBQUNDLEVBQUU7SUFFckQsSUFBSVcsT0FBZ0M7SUFDcEMsSUFBSWhCLE9BQU8sQ0FBQ2dCLE9BQU8sRUFBRTtNQUNqQkEsT0FBTyxnQkFDSC9CLE1BQUEsQ0FBQWdDLE9BQUEsQ0FBQUMsYUFBQSxhQUNLLElBQUFDLG1CQUFFLEVBQ0MsMkJBQTJCLEVBQzNCLENBQUMsQ0FBQyxFQUNGO1FBQ0lDLElBQUksRUFBRUEsQ0FBQSxrQkFDRm5DLE1BQUEsQ0FBQWdDLE9BQUEsQ0FBQUMsYUFBQSxDQUFDNUIsS0FBQSxDQUFBK0IsSUFBSTtVQUNEQyxJQUFJLEVBQUVDLGNBQVEsQ0FBQ0MsV0FBWTtVQUMzQkMsSUFBSSxFQUFFLElBQUksQ0FBQ3hCLEtBQUssQ0FBQ3dCLElBQUs7VUFDdEJDLEdBQUcsRUFBRSxJQUFBQyw2QkFBaUIsRUFBQzNCLE9BQU8sQ0FBQ2dCLE9BQVEsQ0FBRTtVQUN6Q1ksb0JBQW9CLEVBQUVDLHNCQUFhLENBQUNDLFFBQVEsQ0FBQywyQkFBMkI7UUFBRSxDQUM3RTtNQUVULENBQ0osQ0FDQSxDQUNQO0lBQ0w7SUFFQSxNQUFNQyxHQUFHLGdCQUNMOUMsTUFBQSxDQUFBZ0MsT0FBQSxDQUFBQyxhQUFBLGFBQ0ssSUFBQUMsbUJBQUUsRUFDQywyQkFBMkIsRUFDM0IsQ0FBQyxDQUFDLEVBQ0Y7TUFDSUMsSUFBSSxFQUFFQSxDQUFBLGtCQUNGbkMsTUFBQSxDQUFBZ0MsT0FBQSxDQUFBQyxhQUFBLENBQUM1QixLQUFBLENBQUErQixJQUFJO1FBQ0RDLElBQUksRUFBRUMsY0FBUSxDQUFDQyxXQUFZO1FBQzNCQyxJQUFJLEVBQUUsSUFBSSxDQUFDeEIsS0FBSyxDQUFDd0IsSUFBSztRQUN0QkMsR0FBRyxFQUFFLElBQUFDLDZCQUFpQixFQUFDM0IsT0FBTyxDQUFDVSxTQUFTLENBQUU7UUFDMUNrQixvQkFBb0IsRUFBRUMsc0JBQWEsQ0FBQ0MsUUFBUSxDQUFDLDJCQUEyQjtNQUFFLENBQzdFO0lBRVQsQ0FDSixDQUNBLENBQ1A7SUFFRCxJQUFJRSxXQUFXO0lBRWYsSUFBSTFCLFFBQVEsQ0FBQzJCLFVBQVUsRUFBRTtNQUNyQixNQUFNQyxTQUFTLEdBQUcsSUFBQUMsbUJBQVksRUFBQzdCLFFBQVEsQ0FBQzJCLFVBQVUsQ0FBQyxDQUFDRyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsSUFBSUMsU0FBUztNQUUzRkwsV0FBVyxnQkFDUC9DLE1BQUEsQ0FBQWdDLE9BQUEsQ0FBQUMsYUFBQSxDQUFDMUIsV0FBQSxDQUFBeUIsT0FBVTtRQUNQcUIsU0FBUyxFQUFDLG9DQUFvQztRQUM5Q0MsSUFBSSxFQUFDLE1BQU07UUFDWEMsSUFBSSxFQUFFM0IsWUFBYTtRQUNuQjRCLE1BQU0sRUFBRTVCLFlBQWE7UUFDckJhLEdBQUcsRUFBRVE7TUFBVSxDQUNsQixDQUNKO0lBQ0wsQ0FBQyxNQUFNO01BQ0hGLFdBQVcsZ0JBQUcvQyxNQUFBLENBQUFnQyxPQUFBLENBQUFDLGFBQUE7UUFBS29CLFNBQVMsRUFBQztNQUFzQyxDQUFFLENBQUM7SUFDMUU7SUFDQSxJQUFJSSxXQUFrQztJQUN0QyxJQUFJOUIsT0FBTyxFQUFFO01BQ1QsTUFBTStCLFdBQVcsR0FBRy9CLE9BQU8sQ0FBQ0UsV0FBVyxJQUFJRixPQUFPLENBQUNQLEVBQUU7TUFDckQsSUFBSXVDLFdBQVcsZ0JBQUczRCxNQUFBLENBQUFnQyxPQUFBLENBQUFDLGFBQUEsZUFBT3lCLFdBQWtCLENBQUM7TUFDNUMsSUFBSSxPQUFPL0IsT0FBTyxDQUFDaUMsWUFBWSxLQUFLLFFBQVEsSUFBSSxJQUFBQyx5QkFBYyxFQUFDbEMsT0FBTyxDQUFDaUMsWUFBWSxDQUFDLEVBQUU7UUFDbEZELFdBQVcsZ0JBQ1AzRCxNQUFBLENBQUFnQyxPQUFBLENBQUFDLGFBQUE7VUFBRzZCLElBQUksRUFBRW5DLE9BQU8sQ0FBQ2lDLFlBQWE7VUFBQ0csTUFBTSxFQUFDLFFBQVE7VUFBQ0MsR0FBRyxFQUFDO1FBQXFCLEdBQ25FTixXQUNGLENBQ047TUFDTDtNQUNBRCxXQUFXLEdBQUcsSUFBQXZCLG1CQUFFLEVBQ1osNkJBQTZCLEVBQzdCLENBQUMsQ0FBQyxFQUNGO1FBQ0l5QixXQUFXLEVBQUVBLENBQUEsS0FBTUE7TUFDdkIsQ0FDSixDQUFDO0lBQ0w7SUFFQSxJQUFJTSxXQUFXLGdCQUFHakUsTUFBQSxDQUFBZ0MsT0FBQSxDQUFBQyxhQUFBLGVBQU9ILFdBQWtCLENBQUM7SUFDNUMsSUFBSSxPQUFPWCxPQUFPLENBQUN5QyxZQUFZLEtBQUssUUFBUSxJQUFJLElBQUFDLHlCQUFjLEVBQUMxQyxPQUFPLENBQUN5QyxZQUFZLENBQUMsRUFBRTtNQUNsRkssV0FBVyxnQkFDUGpFLE1BQUEsQ0FBQWdDLE9BQUEsQ0FBQUMsYUFBQTtRQUFHNkIsSUFBSSxFQUFFM0MsT0FBTyxDQUFDeUMsWUFBYTtRQUFDRyxNQUFNLEVBQUMsUUFBUTtRQUFDQyxHQUFHLEVBQUM7TUFBcUIsR0FDbkVsQyxXQUNGLENBQ047SUFDTDtJQUVBLE1BQU1WLEVBQUUsR0FBRyxJQUFJLENBQUNKLEtBQUssQ0FBQ0MsRUFBRSxDQUFDTyxLQUFLLENBQUMsQ0FBQztJQUNoQyxvQkFDSXhCLE1BQUEsQ0FBQWdDLE9BQUEsQ0FBQUMsYUFBQTtNQUFJaUMsR0FBRyxFQUFFOUMsRUFBRztNQUFDaUMsU0FBUyxFQUFDO0lBQTJDLGdCQUM5RHJELE1BQUEsQ0FBQWdDLE9BQUEsQ0FBQUMsYUFBQTtNQUFLb0IsU0FBUyxFQUFDO0lBQW1DLEdBQUVOLFdBQWlCLENBQUMsZUFDdEUvQyxNQUFBLENBQUFnQyxPQUFBLENBQUFDLGFBQUE7TUFBS29CLFNBQVMsRUFBQztJQUFtQyxnQkFDOUNyRCxNQUFBLENBQUFnQyxPQUFBLENBQUFDLGFBQUE7TUFBSW9CLFNBQVMsRUFBQztJQUFnRCxHQUFFekIsWUFBaUIsQ0FBQyxlQUNsRjVCLE1BQUEsQ0FBQWdDLE9BQUEsQ0FBQUMsYUFBQTtNQUFHb0IsU0FBUyxFQUFDO0lBQTJGLEdBQ25HSSxXQUFXLGVBQ1p6RCxNQUFBLENBQUFnQyxPQUFBLENBQUFDLGFBQUE7TUFBTW9CLFNBQVMsRUFBQztJQUErQixHQUMxQyxJQUFBbkIsbUJBQUUsRUFDQywyQkFBMkIsRUFDM0IsQ0FBQyxDQUFDLEVBQ0Y7TUFDSStCLFdBQVcsRUFBRUEsQ0FBQSxLQUFNQTtJQUN2QixDQUNKLENBQ0UsQ0FDUCxDQUFDLGVBQ0pqRSxNQUFBLENBQUFnQyxPQUFBLENBQUFDLGFBQUE7TUFBSW9CLFNBQVMsRUFBQztJQUEyRSxHQUNwRnRCLE9BQU8sRUFBQyxHQUFDLEVBQUNlLEdBQ1gsQ0FDSCxDQUNMLENBQUM7RUFFYjtBQUNKO0FBQUNxQixPQUFBLENBQUFuQyxPQUFBLEdBQUFyQixVQUFBIiwiaWdub3JlTGlzdCI6W119