matrix-react-sdk
Version:
SDK for matrix.org using React
119 lines (116 loc) • 20.8 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DeviceDetailHeading = void 0;
var _react = _interopRequireWildcard(require("react"));
var _languageHandler = require("../../../../languageHandler");
var _AccessibleButton = _interopRequireDefault(require("../../elements/AccessibleButton"));
var _Field = _interopRequireDefault(require("../../elements/Field"));
var _LearnMore = _interopRequireDefault(require("../../elements/LearnMore"));
var _Spinner = _interopRequireDefault(require("../../elements/Spinner"));
var _Caption = require("../../typography/Caption");
var _Heading = _interopRequireDefault(require("../../typography/Heading"));
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 2022 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 DeviceNameEditor = ({
device,
saveDeviceName,
stopEditing
}) => {
const [deviceName, setDeviceName] = (0, _react.useState)(device.display_name || "");
const [isLoading, setIsLoading] = (0, _react.useState)(false);
const [error, setError] = (0, _react.useState)(null);
(0, _react.useEffect)(() => {
setDeviceName(device.display_name || "");
}, [device.display_name]);
const onInputChange = event => setDeviceName(event.target.value);
const onSubmit = async event => {
setIsLoading(true);
setError(null);
event.preventDefault();
try {
await saveDeviceName(deviceName);
stopEditing();
} catch (error) {
setError((0, _languageHandler._t)("settings|sessions|error_set_name"));
setIsLoading(false);
}
};
const headingId = `device-rename-${device.device_id}`;
const descriptionId = `device-rename-description-${device.device_id}`;
return /*#__PURE__*/_react.default.createElement("form", {
"aria-disabled": isLoading,
className: "mx_DeviceDetailHeading_renameForm",
onSubmit: onSubmit,
method: "post"
}, /*#__PURE__*/_react.default.createElement("p", {
id: headingId,
className: "mx_DeviceDetailHeading_renameFormHeading"
}, (0, _languageHandler._t)("settings|sessions|rename_form_heading")), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_Field.default, {
"data-testid": "device-rename-input",
type: "text",
value: deviceName,
autoComplete: "off",
onChange: onInputChange,
autoFocus: true,
disabled: isLoading,
"aria-labelledby": headingId,
"aria-describedby": descriptionId,
className: "mx_DeviceDetailHeading_renameFormInput",
maxLength: 100
}), /*#__PURE__*/_react.default.createElement(_Caption.Caption, {
id: descriptionId
}, (0, _languageHandler._t)("settings|sessions|rename_form_caption"), /*#__PURE__*/_react.default.createElement(_LearnMore.default, {
title: (0, _languageHandler._t)("settings|sessions|rename_form_learn_more"),
description: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("p", null, (0, _languageHandler._t)("settings|sessions|rename_form_learn_more_description_1")), /*#__PURE__*/_react.default.createElement("p", null, (0, _languageHandler._t)("settings|sessions|rename_form_learn_more_description_2")))
}), !!error && /*#__PURE__*/_react.default.createElement("span", {
"data-testid": "device-rename-error",
className: "mx_DeviceDetailHeading_renameFormError"
}, error))), /*#__PURE__*/_react.default.createElement("div", {
className: "mx_DeviceDetailHeading_renameFormButtons"
}, /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, {
onClick: onSubmit,
kind: "primary",
"data-testid": "device-rename-submit-cta",
disabled: isLoading
}, (0, _languageHandler._t)("action|save")), /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, {
onClick: stopEditing,
kind: "secondary",
"data-testid": "device-rename-cancel-cta",
disabled: isLoading
}, (0, _languageHandler._t)("action|cancel")), isLoading && /*#__PURE__*/_react.default.createElement(_Spinner.default, {
w: 16,
h: 16
})));
};
const DeviceDetailHeading = ({
device,
saveDeviceName
}) => {
const [isEditing, setIsEditing] = (0, _react.useState)(false);
return isEditing ? /*#__PURE__*/_react.default.createElement(DeviceNameEditor, {
device: device,
saveDeviceName: saveDeviceName,
stopEditing: () => setIsEditing(false)
}) : /*#__PURE__*/_react.default.createElement("div", {
className: "mx_DeviceDetailHeading",
"data-testid": "device-detail-heading"
}, /*#__PURE__*/_react.default.createElement(_Heading.default, {
size: "4"
}, device.display_name || device.device_id), /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, {
kind: "link_inline",
onClick: () => setIsEditing(true),
className: "mx_DeviceDetailHeading_renameCta",
"data-testid": "device-heading-rename-cta"
}, (0, _languageHandler._t)("action|rename")));
};
exports.DeviceDetailHeading = DeviceDetailHeading;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbGFuZ3VhZ2VIYW5kbGVyIiwiX0FjY2Vzc2libGVCdXR0b24iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX0ZpZWxkIiwiX0xlYXJuTW9yZSIsIl9TcGlubmVyIiwiX0NhcHRpb24iLCJfSGVhZGluZyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIkRldmljZU5hbWVFZGl0b3IiLCJkZXZpY2UiLCJzYXZlRGV2aWNlTmFtZSIsInN0b3BFZGl0aW5nIiwiZGV2aWNlTmFtZSIsInNldERldmljZU5hbWUiLCJ1c2VTdGF0ZSIsImRpc3BsYXlfbmFtZSIsImlzTG9hZGluZyIsInNldElzTG9hZGluZyIsImVycm9yIiwic2V0RXJyb3IiLCJ1c2VFZmZlY3QiLCJvbklucHV0Q2hhbmdlIiwiZXZlbnQiLCJ0YXJnZXQiLCJ2YWx1ZSIsIm9uU3VibWl0IiwicHJldmVudERlZmF1bHQiLCJfdCIsImhlYWRpbmdJZCIsImRldmljZV9pZCIsImRlc2NyaXB0aW9uSWQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwibWV0aG9kIiwiaWQiLCJ0eXBlIiwiYXV0b0NvbXBsZXRlIiwib25DaGFuZ2UiLCJhdXRvRm9jdXMiLCJkaXNhYmxlZCIsIm1heExlbmd0aCIsIkNhcHRpb24iLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwiRnJhZ21lbnQiLCJvbkNsaWNrIiwia2luZCIsInciLCJoIiwiRGV2aWNlRGV0YWlsSGVhZGluZyIsImlzRWRpdGluZyIsInNldElzRWRpdGluZyIsInNpemUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdmlld3Mvc2V0dGluZ3MvZGV2aWNlcy9EZXZpY2VEZXRhaWxIZWFkaW5nLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBfdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9sYW5ndWFnZUhhbmRsZXJcIjtcbmltcG9ydCBBY2Nlc3NpYmxlQnV0dG9uLCB7IEJ1dHRvbkV2ZW50IH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzL0FjY2Vzc2libGVCdXR0b25cIjtcbmltcG9ydCBGaWVsZCBmcm9tIFwiLi4vLi4vZWxlbWVudHMvRmllbGRcIjtcbmltcG9ydCBMZWFybk1vcmUgZnJvbSBcIi4uLy4uL2VsZW1lbnRzL0xlYXJuTW9yZVwiO1xuaW1wb3J0IFNwaW5uZXIgZnJvbSBcIi4uLy4uL2VsZW1lbnRzL1NwaW5uZXJcIjtcbmltcG9ydCB7IENhcHRpb24gfSBmcm9tIFwiLi4vLi4vdHlwb2dyYXBoeS9DYXB0aW9uXCI7XG5pbXBvcnQgSGVhZGluZyBmcm9tIFwiLi4vLi4vdHlwb2dyYXBoeS9IZWFkaW5nXCI7XG5pbXBvcnQgeyBFeHRlbmRlZERldmljZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gICAgZGV2aWNlOiBFeHRlbmRlZERldmljZTtcbiAgICBzYXZlRGV2aWNlTmFtZTogKGRldmljZU5hbWU6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbn1cblxuY29uc3QgRGV2aWNlTmFtZUVkaXRvcjogUmVhY3QuRkM8UHJvcHMgJiB7IHN0b3BFZGl0aW5nOiAoKSA9PiB2b2lkIH0+ID0gKHsgZGV2aWNlLCBzYXZlRGV2aWNlTmFtZSwgc3RvcEVkaXRpbmcgfSkgPT4ge1xuICAgIGNvbnN0IFtkZXZpY2VOYW1lLCBzZXREZXZpY2VOYW1lXSA9IHVzZVN0YXRlKGRldmljZS5kaXNwbGF5X25hbWUgfHwgXCJcIik7XG4gICAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgc2V0RGV2aWNlTmFtZShkZXZpY2UuZGlzcGxheV9uYW1lIHx8IFwiXCIpO1xuICAgIH0sIFtkZXZpY2UuZGlzcGxheV9uYW1lXSk7XG5cbiAgICBjb25zdCBvbklucHV0Q2hhbmdlID0gKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50Pik6IHZvaWQgPT4gc2V0RGV2aWNlTmFtZShldmVudC50YXJnZXQudmFsdWUpO1xuXG4gICAgY29uc3Qgb25TdWJtaXQgPSBhc3luYyAoZXZlbnQ6IEJ1dHRvbkV2ZW50KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIHNldElzTG9hZGluZyh0cnVlKTtcbiAgICAgICAgc2V0RXJyb3IobnVsbCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBzYXZlRGV2aWNlTmFtZShkZXZpY2VOYW1lKTtcbiAgICAgICAgICAgIHN0b3BFZGl0aW5nKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBzZXRFcnJvcihfdChcInNldHRpbmdzfHNlc3Npb25zfGVycm9yX3NldF9uYW1lXCIpKTtcbiAgICAgICAgICAgIHNldElzTG9hZGluZyhmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGVhZGluZ0lkID0gYGRldmljZS1yZW5hbWUtJHtkZXZpY2UuZGV2aWNlX2lkfWA7XG4gICAgY29uc3QgZGVzY3JpcHRpb25JZCA9IGBkZXZpY2UtcmVuYW1lLWRlc2NyaXB0aW9uLSR7ZGV2aWNlLmRldmljZV9pZH1gO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGZvcm0gYXJpYS1kaXNhYmxlZD17aXNMb2FkaW5nfSBjbGFzc05hbWU9XCJteF9EZXZpY2VEZXRhaWxIZWFkaW5nX3JlbmFtZUZvcm1cIiBvblN1Ym1pdD17b25TdWJtaXR9IG1ldGhvZD1cInBvc3RcIj5cbiAgICAgICAgICAgIDxwIGlkPXtoZWFkaW5nSWR9IGNsYXNzTmFtZT1cIm14X0RldmljZURldGFpbEhlYWRpbmdfcmVuYW1lRm9ybUhlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICB7X3QoXCJzZXR0aW5nc3xzZXNzaW9uc3xyZW5hbWVfZm9ybV9oZWFkaW5nXCIpfVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8RmllbGRcbiAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJkZXZpY2UtcmVuYW1lLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17ZGV2aWNlTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uSW5wdXRDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2hlYWRpbmdJZH1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kZXNjcmliZWRieT17ZGVzY3JpcHRpb25JZH1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXhfRGV2aWNlRGV0YWlsSGVhZGluZ19yZW5hbWVGb3JtSW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICBtYXhMZW5ndGg9ezEwMH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxDYXB0aW9uIGlkPXtkZXNjcmlwdGlvbklkfT5cbiAgICAgICAgICAgICAgICAgICAge190KFwic2V0dGluZ3N8c2Vzc2lvbnN8cmVuYW1lX2Zvcm1fY2FwdGlvblwiKX1cbiAgICAgICAgICAgICAgICAgICAgPExlYXJuTW9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e190KFwic2V0dGluZ3N8c2Vzc2lvbnN8cmVuYW1lX2Zvcm1fbGVhcm5fbW9yZVwiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57X3QoXCJzZXR0aW5nc3xzZXNzaW9uc3xyZW5hbWVfZm9ybV9sZWFybl9tb3JlX2Rlc2NyaXB0aW9uXzFcIil9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57X3QoXCJzZXR0aW5nc3xzZXNzaW9uc3xyZW5hbWVfZm9ybV9sZWFybl9tb3JlX2Rlc2NyaXB0aW9uXzJcIil9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICB7ISFlcnJvciAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBkYXRhLXRlc3RpZD1cImRldmljZS1yZW5hbWUtZXJyb3JcIiBjbGFzc05hbWU9XCJteF9EZXZpY2VEZXRhaWxIZWFkaW5nX3JlbmFtZUZvcm1FcnJvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtlcnJvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L0NhcHRpb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfRGV2aWNlRGV0YWlsSGVhZGluZ19yZW5hbWVGb3JtQnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgIDxBY2Nlc3NpYmxlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uU3VibWl0fVxuICAgICAgICAgICAgICAgICAgICBraW5kPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZGV2aWNlLXJlbmFtZS1zdWJtaXQtY3RhXCJcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzTG9hZGluZ31cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtfdChcImFjdGlvbnxzYXZlXCIpfVxuICAgICAgICAgICAgICAgIDwvQWNjZXNzaWJsZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8QWNjZXNzaWJsZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtzdG9wRWRpdGluZ31cbiAgICAgICAgICAgICAgICAgICAga2luZD1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZGV2aWNlLXJlbmFtZS1jYW5jZWwtY3RhXCJcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzTG9hZGluZ31cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtfdChcImFjdGlvbnxjYW5jZWxcIil9XG4gICAgICAgICAgICAgICAgPC9BY2Nlc3NpYmxlQnV0dG9uPlxuICAgICAgICAgICAgICAgIHtpc0xvYWRpbmcgJiYgPFNwaW5uZXIgdz17MTZ9IGg9ezE2fSAvPn1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Zvcm0+XG4gICAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBEZXZpY2VEZXRhaWxIZWFkaW5nOiBSZWFjdC5GQzxQcm9wcz4gPSAoeyBkZXZpY2UsIHNhdmVEZXZpY2VOYW1lIH0pID0+IHtcbiAgICBjb25zdCBbaXNFZGl0aW5nLCBzZXRJc0VkaXRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gICAgcmV0dXJuIGlzRWRpdGluZyA/IChcbiAgICAgICAgPERldmljZU5hbWVFZGl0b3IgZGV2aWNlPXtkZXZpY2V9IHNhdmVEZXZpY2VOYW1lPXtzYXZlRGV2aWNlTmFtZX0gc3RvcEVkaXRpbmc9eygpID0+IHNldElzRWRpdGluZyhmYWxzZSl9IC8+XG4gICAgKSA6IChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteF9EZXZpY2VEZXRhaWxIZWFkaW5nXCIgZGF0YS10ZXN0aWQ9XCJkZXZpY2UtZGV0YWlsLWhlYWRpbmdcIj5cbiAgICAgICAgICAgIDxIZWFkaW5nIHNpemU9XCI0XCI+e2RldmljZS5kaXNwbGF5X25hbWUgfHwgZGV2aWNlLmRldmljZV9pZH08L0hlYWRpbmc+XG4gICAgICAgICAgICA8QWNjZXNzaWJsZUJ1dHRvblxuICAgICAgICAgICAgICAgIGtpbmQ9XCJsaW5rX2lubGluZVwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFZGl0aW5nKHRydWUpfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm14X0RldmljZURldGFpbEhlYWRpbmdfcmVuYW1lQ3RhXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImRldmljZS1oZWFkaW5nLXJlbmFtZS1jdGFcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtfdChcImFjdGlvbnxyZW5hbWVcIil9XG4gICAgICAg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