UNPKG

matrix-react-sdk

Version:
119 lines (116 loc) 22.6 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireWildcard(require("react")); var _matrix = require("matrix-js-sdk/src/matrix"); var _logger = require("matrix-js-sdk/src/logger"); var _languageHandler = require("../../../languageHandler"); var _AccessibleButton = _interopRequireDefault(require("../elements/AccessibleButton")); var _SpaceBasicSettings = _interopRequireDefault(require("./SpaceBasicSettings")); var _Avatar = require("../../../Avatar"); var _serialize = require("../../../editor/serialize"); var _leaveBehaviour = require("../../../utils/leave-behaviour"); var _useTopic = require("../../../hooks/room/useTopic"); var _SettingsTab = _interopRequireDefault(require("../settings/tabs/SettingsTab")); var _SettingsSection = require("../settings/shared/SettingsSection"); var _SettingsSubsection = _interopRequireDefault(require("../settings/shared/SettingsSubsection")); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } /* Copyright 2024 New Vector Ltd. Copyright 2021 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. */ const SpaceSettingsGeneralTab = ({ matrixClient: cli, space }) => { const [busy, setBusy] = (0, _react.useState)(false); const [error, setError] = (0, _react.useState)(""); const userId = cli.getUserId(); const [newAvatar, setNewAvatar] = (0, _react.useState)(null); // undefined means to remove avatar const canSetAvatar = space.currentState.maySendStateEvent(_matrix.EventType.RoomAvatar, userId); const avatarChanged = newAvatar !== null; const [name, setName] = (0, _react.useState)(space.name); const canSetName = space.currentState.maySendStateEvent(_matrix.EventType.RoomName, userId); const nameChanged = name !== space.name; const currentTopic = (0, _useTopic.getTopic)(space)?.text ?? ""; const [topic, setTopic] = (0, _react.useState)(currentTopic); const canSetTopic = space.currentState.maySendStateEvent(_matrix.EventType.RoomTopic, userId); const topicChanged = topic !== currentTopic; const onCancel = () => { setNewAvatar(null); setName(space.name); setTopic(currentTopic); }; const onSave = async () => { setBusy(true); const promises = []; if (avatarChanged) { if (newAvatar) { promises.push((async () => { const { content_uri: url } = await cli.uploadContent(newAvatar); await cli.sendStateEvent(space.roomId, _matrix.EventType.RoomAvatar, { url }, ""); })()); } else { promises.push(cli.sendStateEvent(space.roomId, _matrix.EventType.RoomAvatar, {}, "")); } } if (nameChanged) { promises.push(cli.setRoomName(space.roomId, name)); } if (topicChanged) { const htmlTopic = (0, _serialize.htmlSerializeFromMdIfNeeded)(topic, { forceHTML: false }); promises.push(cli.setRoomTopic(space.roomId, topic, htmlTopic)); } const results = await Promise.allSettled(promises); setBusy(false); const failures = results.filter(r => r.status === "rejected"); if (failures.length > 0) { _logger.logger.error("Failed to save space settings: ", failures); setError((0, _languageHandler._t)("room_settings|general|error_save_space_settings")); } }; return /*#__PURE__*/_react.default.createElement(_SettingsTab.default, null, /*#__PURE__*/_react.default.createElement(_SettingsSection.SettingsSection, { heading: (0, _languageHandler._t)("common|general") }, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", null, (0, _languageHandler._t)("room_settings|general|description_space")), error && /*#__PURE__*/_react.default.createElement("div", { className: "mx_SpaceRoomView_errorText" }, error), /*#__PURE__*/_react.default.createElement(_SpaceBasicSettings.default, { avatarUrl: (0, _Avatar.avatarUrlForRoom)(space, 80, 80, "crop") ?? undefined, avatarDisabled: busy || !canSetAvatar, setAvatar: setNewAvatar, name: name, nameDisabled: busy || !canSetName, setName: setName, topic: topic, topicDisabled: busy || !canSetTopic, setTopic: setTopic }), /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { onClick: onCancel, disabled: busy || !(avatarChanged || nameChanged || topicChanged), kind: "link" }, (0, _languageHandler._t)("action|cancel")), /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { onClick: onSave, disabled: busy, kind: "primary" }, busy ? (0, _languageHandler._t)("common|saving") : (0, _languageHandler._t)("room_settings|general|save"))), /*#__PURE__*/_react.default.createElement(_SettingsSubsection.default, { heading: (0, _languageHandler._t)("room_settings|general|leave_space") }, /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { kind: "danger", onClick: () => { (0, _leaveBehaviour.leaveSpace)(space); } }, (0, _languageHandler._t)("room_settings|general|leave_space"))))); }; var _default = exports.default = SpaceSettingsGeneralTab; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbWF0cml4IiwiX2xvZ2dlciIsIl9sYW5ndWFnZUhhbmRsZXIiLCJfQWNjZXNzaWJsZUJ1dHRvbiIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfU3BhY2VCYXNpY1NldHRpbmdzIiwiX0F2YXRhciIsIl9zZXJpYWxpemUiLCJfbGVhdmVCZWhhdmlvdXIiLCJfdXNlVG9waWMiLCJfU2V0dGluZ3NUYWIiLCJfU2V0dGluZ3NTZWN0aW9uIiwiX1NldHRpbmdzU3Vic2VjdGlvbiIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIlNwYWNlU2V0dGluZ3NHZW5lcmFsVGFiIiwibWF0cml4Q2xpZW50IiwiY2xpIiwic3BhY2UiLCJidXN5Iiwic2V0QnVzeSIsInVzZVN0YXRlIiwiZXJyb3IiLCJzZXRFcnJvciIsInVzZXJJZCIsImdldFVzZXJJZCIsIm5ld0F2YXRhciIsInNldE5ld0F2YXRhciIsImNhblNldEF2YXRhciIsImN1cnJlbnRTdGF0ZSIsIm1heVNlbmRTdGF0ZUV2ZW50IiwiRXZlbnRUeXBlIiwiUm9vbUF2YXRhciIsImF2YXRhckNoYW5nZWQiLCJuYW1lIiwic2V0TmFtZSIsImNhblNldE5hbWUiLCJSb29tTmFtZSIsIm5hbWVDaGFuZ2VkIiwiY3VycmVudFRvcGljIiwiZ2V0VG9waWMiLCJ0ZXh0IiwidG9waWMiLCJzZXRUb3BpYyIsImNhblNldFRvcGljIiwiUm9vbVRvcGljIiwidG9waWNDaGFuZ2VkIiwib25DYW5jZWwiLCJvblNhdmUiLCJwcm9taXNlcyIsInB1c2giLCJjb250ZW50X3VyaSIsInVybCIsInVwbG9hZENvbnRlbnQiLCJzZW5kU3RhdGVFdmVudCIsInJvb21JZCIsInNldFJvb21OYW1lIiwiaHRtbFRvcGljIiwiaHRtbFNlcmlhbGl6ZUZyb21NZElmTmVlZGVkIiwiZm9yY2VIVE1MIiwic2V0Um9vbVRvcGljIiwicmVzdWx0cyIsIlByb21pc2UiLCJhbGxTZXR0bGVkIiwiZmFpbHVyZXMiLCJmaWx0ZXIiLCJzdGF0dXMiLCJsZW5ndGgiLCJsb2dnZXIiLCJfdCIsImNyZWF0ZUVsZW1lbnQiLCJTZXR0aW5nc1NlY3Rpb24iLCJoZWFkaW5nIiwiY2xhc3NOYW1lIiwiYXZhdGFyVXJsIiwiYXZhdGFyVXJsRm9yUm9vbSIsInVuZGVmaW5lZCIsImF2YXRhckRpc2FibGVkIiwic2V0QXZhdGFyIiwibmFtZURpc2FibGVkIiwidG9waWNEaXNhYmxlZCIsIm9uQ2xpY2siLCJkaXNhYmxlZCIsImtpbmQiLCJsZWF2ZVNwYWNlIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdmlld3Mvc3BhY2VzL1NwYWNlU2V0dGluZ3NHZW5lcmFsVGFiLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFJvb20sIEV2ZW50VHlwZSwgTWF0cml4Q2xpZW50IH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL21hdHJpeFwiO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL2xvZ2dlclwiO1xuXG5pbXBvcnQgeyBfdCB9IGZyb20gXCIuLi8uLi8uLi9sYW5ndWFnZUhhbmRsZXJcIjtcbmltcG9ydCBBY2Nlc3NpYmxlQnV0dG9uIGZyb20gXCIuLi9lbGVtZW50cy9BY2Nlc3NpYmxlQnV0dG9uXCI7XG5pbXBvcnQgU3BhY2VCYXNpY1NldHRpbmdzIGZyb20gXCIuL1NwYWNlQmFzaWNTZXR0aW5nc1wiO1xuaW1wb3J0IHsgYXZhdGFyVXJsRm9yUm9vbSB9IGZyb20gXCIuLi8uLi8uLi9BdmF0YXJcIjtcbmltcG9ydCB7IGh0bWxTZXJpYWxpemVGcm9tTWRJZk5lZWRlZCB9IGZyb20gXCIuLi8uLi8uLi9lZGl0b3Ivc2VyaWFsaXplXCI7XG5pbXBvcnQgeyBsZWF2ZVNwYWNlIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL2xlYXZlLWJlaGF2aW91clwiO1xuaW1wb3J0IHsgZ2V0VG9waWMgfSBmcm9tIFwiLi4vLi4vLi4vaG9va3Mvcm9vbS91c2VUb3BpY1wiO1xuaW1wb3J0IFNldHRpbmdzVGFiIGZyb20gXCIuLi9zZXR0aW5ncy90YWJzL1NldHRpbmdzVGFiXCI7XG5pbXBvcnQgeyBTZXR0aW5nc1NlY3Rpb24gfSBmcm9tIFwiLi4vc2V0dGluZ3Mvc2hhcmVkL1NldHRpbmdzU2VjdGlvblwiO1xuaW1wb3J0IFNldHRpbmdzU3Vic2VjdGlvbiBmcm9tIFwiLi4vc2V0dGluZ3Mvc2hhcmVkL1NldHRpbmdzU3Vic2VjdGlvblwiO1xuXG5pbnRlcmZhY2UgSVByb3BzIHtcbiAgICBtYXRyaXhDbGllbnQ6IE1hdHJpeENsaWVudDtcbiAgICBzcGFjZTogUm9vbTtcbn1cblxuY29uc3QgU3BhY2VTZXR0aW5nc0dlbmVyYWxUYWI6IFJlYWN0LkZDPElQcm9wcz4gPSAoeyBtYXRyaXhDbGllbnQ6IGNsaSwgc3BhY2UgfSkgPT4ge1xuICAgIGNvbnN0IFtidXN5LCBzZXRCdXN5XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlKFwiXCIpO1xuXG4gICAgY29uc3QgdXNlcklkID0gY2xpLmdldFVzZXJJZCgpITtcblxuICAgIGNvbnN0IFtuZXdBdmF0YXIsIHNldE5ld0F2YXRhcl0gPSB1c2VTdGF0ZTxGaWxlIHwgbnVsbCB8IHVuZGVmaW5lZD4obnVsbCk7IC8vIHVuZGVmaW5lZCBtZWFucyB0byByZW1vdmUgYXZhdGFyXG4gICAgY29uc3QgY2FuU2V0QXZhdGFyID0gc3BhY2UuY3VycmVudFN0YXRlLm1heVNlbmRTdGF0ZUV2ZW50KEV2ZW50VHlwZS5Sb29tQXZhdGFyLCB1c2VySWQpO1xuICAgIGNvbnN0IGF2YXRhckNoYW5nZWQgPSBuZXdBdmF0YXIgIT09IG51bGw7XG5cbiAgICBjb25zdCBbbmFtZSwgc2V0TmFtZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KHNwYWNlLm5hbWUpO1xuICAgIGNvbnN0IGNhblNldE5hbWUgPSBzcGFjZS5jdXJyZW50U3RhdGUubWF5U2VuZFN0YXRlRXZlbnQoRXZlbnRUeXBlLlJvb21OYW1lLCB1c2VySWQpO1xuICAgIGNvbnN0IG5hbWVDaGFuZ2VkID0gbmFtZSAhPT0gc3BhY2UubmFtZTtcblxuICAgIGNvbnN0IGN1cnJlbnRUb3BpYyA9IGdldFRvcGljKHNwYWNlKT8udGV4dCA/PyBcIlwiO1xuICAgIGNvbnN0IFt0b3BpYywgc2V0VG9waWNdID0gdXNlU3RhdGUoY3VycmVudFRvcGljKTtcbiAgICBjb25zdCBjYW5TZXRUb3BpYyA9IHNwYWNlLmN1cnJlbnRTdGF0ZS5tYXlTZW5kU3RhdGVFdmVudChFdmVudFR5cGUuUm9vbVRvcGljLCB1c2VySWQpO1xuICAgIGNvbnN0IHRvcGljQ2hhbmdlZCA9IHRvcGljICE9PSBjdXJyZW50VG9waWM7XG5cbiAgICBjb25zdCBvbkNhbmNlbCA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgc2V0TmV3QXZhdGFyKG51bGwpO1xuICAgICAgICBzZXROYW1lKHNwYWNlLm5hbWUpO1xuICAgICAgICBzZXRUb3BpYyhjdXJyZW50VG9waWMpO1xuICAgIH07XG5cbiAgICBjb25zdCBvblNhdmUgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIHNldEJ1c3kodHJ1ZSk7XG4gICAgICAgIGNvbnN0IHByb21pc2VzOiBQcm9taXNlPHVua25vd24+W10gPSBbXTtcblxuICAgICAgICBpZiAoYXZhdGFyQ2hhbmdlZCkge1xuICAgICAgICAgICAgaWYgKG5ld0F2YXRhcikge1xuICAgICAgICAgICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIChhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGNvbnRlbnRfdXJpOiB1cmwgfSA9IGF3YWl0IGNsaS51cGxvYWRDb250ZW50KG5ld0F2YXRhcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBjbGkuc2VuZFN0YXRlRXZlbnQoc3BhY2Uucm9vbUlkLCBFdmVudFR5cGUuUm9vbUF2YXRhciwgeyB1cmwgfSwgXCJcIik7XG4gICAgICAgICAgICAgICAgICAgIH0pKCksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcHJvbWlzZXMucHVzaChjbGkuc2VuZFN0YXRlRXZlbnQoc3BhY2Uucm9vbUlkLCBFdmVudFR5cGUuUm9vbUF2YXRhciwge30sIFwiXCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuYW1lQ2hhbmdlZCkge1xuICAgICAgICAgICAgcHJvbWlzZXMucHVzaChjbGkuc2V0Um9vbU5hbWUoc3BhY2Uucm9vbUlkLCBuYW1lKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodG9waWNDaGFuZ2VkKSB7XG4gICAgICAgICAgICBjb25zdCBodG1sVG9waWMgPSBodG1sU2VyaWFsaXplRnJvbU1kSWZOZWVkZWQodG9waWMsIHsgZm9yY2VIVE1MOiBmYWxzZSB9KTtcbiAgICAgICAgICAgIHByb21pc2VzLnB1c2goY2xpLnNldFJvb21Ub3BpYyhzcGFjZS5yb29tSWQsIHRvcGljLCBodG1sVG9waWMpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQocHJvbWlzZXMpO1xuICAgICAgICBzZXRCdXN5KGZhbHNlKTtcbiAgICAgICAgY29uc3QgZmFpbHVyZXMgPSByZXN1bHRzLmZpbHRlcigocikgPT4gci5zdGF0dXMgPT09IFwicmVqZWN0ZWRcIik7XG4gICAgICAgIGlmIChmYWlsdXJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoXCJGYWlsZWQgdG8gc2F2ZSBzcGFjZSBzZXR0aW5nczogXCIsIGZhaWx1cmVzKTtcbiAgICAgICAgICAgIHNldEVycm9yKF90KFwicm9vbV9zZXR0aW5nc3xnZW5lcmFsfGVycm9yX3NhdmVfc3BhY2Vfc2V0dGluZ3NcIikpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxTZXR0aW5nc1RhYj5cbiAgICAgICAgICAgIDxTZXR0aW5nc1NlY3Rpb24gaGVhZGluZz17X3QoXCJjb21tb258Z2VuZXJhbFwiKX0+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj57X3QoXCJyb29tX3NldHRpbmdzfGdlbmVyYWx8ZGVzY3JpcHRpb25fc3BhY2VcIil9PC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAge2Vycm9yICYmIDxkaXYgY2xhc3NOYW1lPVwibXhfU3BhY2VSb29tVmlld19lcnJvclRleHRcIj57ZXJyb3J9PC9kaXY+fVxuXG4gICAgICAgICAgICAgICAgICAgIDxTcGFjZUJhc2ljU2V0dGluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgIGF2YXRhclVybD17YXZhdGFyVXJsRm9yUm9vbShzcGFjZSwgODAsIDgwLCBcImNyb3BcIikgPz8gdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgYXZhdGFyRGlzYWJsZWQ9e2J1c3kgfHwgIWNhblNldEF2YXRhcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEF2YXRhcj17c2V0TmV3QXZhdGFyfVxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVEaXNhYmxlZD17YnVzeSB8fCAhY2FuU2V0TmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNldE5hbWU9e3NldE5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3BpYz17dG9waWN9XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3BpY0Rpc2FibGVkPXtidXN5IHx8ICFjYW5TZXRUb3BpY31cbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvcGljPXtzZXRUb3BpY31cbiAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICA8QWNjZXNzaWJsZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17b25DYW5jZWx9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17YnVzeSB8fCAhKGF2YXRhckNoYW5nZWQgfHwgbmFtZUNoYW5nZWQgfHwgdG9waWNDaGFuZ2VkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge190KFwiYWN0aW9ufGNhbmNlbFwiKX1cbiAgICAgICAgICAgICAgICAgICAgPC9BY2Nlc3NpYmxlQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8QWNjZXNzaWJsZUJ1dHRvbiBvbkNsaWNrPXtvblNhdmV9IGRpc2FibGVkPXtidXN5fSBraW5kPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge2J1c3kgPyBfdChcImNvbW1vbnxzYXZpbmdcIikgOiBfdChcInJvb21fc2V0dGluZ3N8Z2VuZXJhbHxzYXZlXCIpfVxuICAgICAgICAgICAgICAgICAgICA8L0FjY2Vzc2libGVCdXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8U2V0dGluZ3NTdWJzZWN0aW9uIGhlYWRpbmc9e190KFwicm9vbV9zZXR0aW5nc3xnZW5lcmFsfGxlYXZlX3NwYWNlXCIpfT5cbiAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc2libGVCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9XCJkYW5nZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlYXZlU3BhY2Uoc3BhY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge190KFwicm9vbV9zZXR0aW5nc3xnZW5lcmFsfGxlYXZlX3NwYWNlXCIpfVxuICAgICAgICAgICAgICAgICAgICA8L0FjY2Vzc2libGVCdXR0b24+XG4gICAgICAgICAgICAgICAgPC9TZXR0aW5nc1N1YnNlY3Rpb24+XG4gICAgICAgICAgICA8L1NldHRpbmdzU2VjdGlvbj5cbiAgICAgICAgPC9TZXR0aW5nc1RhYj5cbiAgICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3BhY2VTZXR0aW5nc0dlbmVyYWxUYWI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFRQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFGLE9BQUE7QUFFQSxJQUFBRyxnQkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUwsT0FBQTtBQUNBLElBQUFNLG1CQUFBLEdBQUFELHNCQUFBLENB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