UNPKG

matrix-react-sdk

Version:
119 lines (116 loc) 20.8 kB
"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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