UNPKG

matrix-react-sdk

Version:
149 lines (146 loc) 27.2 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.PeopleRoomSettingsTab = void 0; var _matrix = require("matrix-js-sdk/src/matrix"); var _types = require("matrix-js-sdk/src/types"); var _react = _interopRequireWildcard(require("react")); var _close = _interopRequireDefault(require("@vector-im/compound-design-tokens/assets/web/icons/close")); var _check = require("../../../../../../res/img/feather-customised/check.svg"); var _DateUtils = require("../../../../../DateUtils"); var _useEventEmitter = require("../../../../../hooks/useEventEmitter"); var _languageHandler = require("../../../../../languageHandler"); var _Modal = _interopRequireDefault(require("../../../../../Modal")); var _MemberAvatar = _interopRequireDefault(require("../../../avatars/MemberAvatar")); var _ErrorDialog = _interopRequireDefault(require("../../../dialogs/ErrorDialog")); var _AccessibleButton = _interopRequireDefault(require("../../../elements/AccessibleButton")); var _SettingsFieldset = _interopRequireDefault(require("../../SettingsFieldset")); var _SettingsSection = require("../../shared/SettingsSection"); var _SettingsTab = _interopRequireDefault(require("../SettingsTab")); 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 2023 Nordeck IT + Consulting GmbH SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ const Timestamp = ({ roomMember }) => { const timestamp = roomMember.events.member?.event.origin_server_ts; if (!timestamp) return null; return /*#__PURE__*/_react.default.createElement("time", { className: "mx_PeopleRoomSettingsTab_timestamp" }, (0, _DateUtils.formatRelativeTime)(new Date(timestamp))); }; const SeeMoreOrLess = ({ roomMember }) => { const [seeMore, setSeeMore] = (0, _react.useState)(false); const reason = roomMember.events.member?.getContent().reason; if (!reason) return null; const truncateAt = 120; const shouldTruncate = reason.length > truncateAt; return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("p", { className: "mx_PeopleRoomSettingsTab_seeMoreOrLess" }, seeMore || !shouldTruncate ? reason : `${reason.substring(0, truncateAt)}…`), shouldTruncate && /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { kind: "link", onClick: () => setSeeMore(!seeMore) }, seeMore ? (0, _languageHandler._t)("room_settings|people|see_less") : (0, _languageHandler._t)("room_settings|people|see_more"))); }; const Knock = ({ canKick, canInvite, onApprove, onDeny, roomMember }) => { const [disabled, setDisabled] = (0, _react.useState)(false); const handleApprove = userId => { setDisabled(true); onApprove(userId).catch(onError); }; const handleDeny = userId => { setDisabled(true); onDeny(userId).catch(onError); }; const onError = () => setDisabled(false); return /*#__PURE__*/_react.default.createElement("div", { className: "mx_PeopleRoomSettingsTab_knock" }, /*#__PURE__*/_react.default.createElement(_MemberAvatar.default, { className: "mx_PeopleRoomSettingsTab_avatar", member: roomMember, size: "42px" }), /*#__PURE__*/_react.default.createElement("div", { className: "mx_PeopleRoomSettingsTab_content" }, /*#__PURE__*/_react.default.createElement("span", { className: "mx_PeopleRoomSettingsTab_name" }, roomMember.name), /*#__PURE__*/_react.default.createElement(Timestamp, { roomMember: roomMember }), /*#__PURE__*/_react.default.createElement("span", { className: "mx_PeopleRoomSettingsTab_userId" }, roomMember.userId), /*#__PURE__*/_react.default.createElement(SeeMoreOrLess, { roomMember: roomMember })), /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { className: "mx_PeopleRoomSettingsTab_action", disabled: !canKick || disabled, kind: "icon_primary_outline", onClick: () => handleDeny(roomMember.userId), title: (0, _languageHandler._t)("action|deny") }, /*#__PURE__*/_react.default.createElement(_close.default, { width: 18, height: 18 })), /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { className: "mx_PeopleRoomSettingsTab_action", disabled: !canInvite || disabled, kind: "icon_primary", onClick: () => handleApprove(roomMember.userId), title: (0, _languageHandler._t)("action|approve") }, /*#__PURE__*/_react.default.createElement(_check.Icon, { width: 18, height: 18 }))); }; const PeopleRoomSettingsTab = ({ room }) => { const client = room.client; const userId = client.getUserId() || ""; const canInvite = room.canInvite(userId); const member = room.getMember(userId); const state = room.getLiveTimeline().getState(_matrix.EventTimeline.FORWARDS); const canKick = member && state ? state.hasSufficientPowerLevelFor("kick", member.powerLevel) : false; const roomId = room.roomId; const handleApprove = userId => new Promise((_, reject) => client.invite(roomId, userId).catch(error => { onError(error); reject(error); })); const handleDeny = userId => new Promise((_, reject) => client.kick(roomId, userId).catch(error => { onError(error); reject(error); })); const onError = error => _Modal.default.createDialog(_ErrorDialog.default, { title: error.name, description: error.message }); const knockMembers = (0, _useEventEmitter.useTypedEventEmitterState)(room, _matrix.RoomStateEvent.Update, (0, _react.useCallback)(() => room.getMembersWithMembership(_types.KnownMembership.Knock), [room])); return /*#__PURE__*/_react.default.createElement(_SettingsTab.default, null, /*#__PURE__*/_react.default.createElement(_SettingsSection.SettingsSection, { heading: (0, _languageHandler._t)("common|people") }, /*#__PURE__*/_react.default.createElement(_SettingsFieldset.default, { legend: (0, _languageHandler._t)("room_settings|people|knock_section") }, knockMembers.length ? knockMembers.map(knockMember => /*#__PURE__*/_react.default.createElement(Knock, { canInvite: canInvite, canKick: canKick, key: knockMember.userId, onApprove: handleApprove, onDeny: handleDeny, roomMember: knockMember })) : /*#__PURE__*/_react.default.createElement("p", { className: "mx_PeopleRoomSettingsTab_paragraph" }, (0, _languageHandler._t)("room_settings|people|knock_empty"))))); }; exports.PeopleRoomSettingsTab = PeopleRoomSettingsTab; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWF0cml4IiwicmVxdWlyZSIsIl90eXBlcyIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2Nsb3NlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jaGVjayIsIl9EYXRlVXRpbHMiLCJfdXNlRXZlbnRFbWl0dGVyIiwiX2xhbmd1YWdlSGFuZGxlciIsIl9Nb2RhbCIsIl9NZW1iZXJBdmF0YXIiLCJfRXJyb3JEaWFsb2ciLCJfQWNjZXNzaWJsZUJ1dHRvbiIsIl9TZXR0aW5nc0ZpZWxkc2V0IiwiX1NldHRpbmdzU2VjdGlvbiIsIl9TZXR0aW5nc1RhYiIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIlRpbWVzdGFtcCIsInJvb21NZW1iZXIiLCJ0aW1lc3RhbXAiLCJldmVudHMiLCJtZW1iZXIiLCJldmVudCIsIm9yaWdpbl9zZXJ2ZXJfdHMiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiZm9ybWF0UmVsYXRpdmVUaW1lIiwiRGF0ZSIsIlNlZU1vcmVPckxlc3MiLCJzZWVNb3JlIiwic2V0U2VlTW9yZSIsInVzZVN0YXRlIiwicmVhc29uIiwiZ2V0Q29udGVudCIsInRydW5jYXRlQXQiLCJzaG91bGRUcnVuY2F0ZSIsImxlbmd0aCIsIkZyYWdtZW50Iiwic3Vic3RyaW5nIiwia2luZCIsIm9uQ2xpY2siLCJfdCIsIktub2NrIiwiY2FuS2ljayIsImNhbkludml0ZSIsIm9uQXBwcm92ZSIsIm9uRGVueSIsImRpc2FibGVkIiwic2V0RGlzYWJsZWQiLCJoYW5kbGVBcHByb3ZlIiwidXNlcklkIiwiY2F0Y2giLCJvbkVycm9yIiwiaGFuZGxlRGVueSIsInNpemUiLCJuYW1lIiwidGl0bGUiLCJ3aWR0aCIsImhlaWdodCIsIkljb24iLCJQZW9wbGVSb29tU2V0dGluZ3NUYWIiLCJyb29tIiwiY2xpZW50IiwiZ2V0VXNlcklkIiwiZ2V0TWVtYmVyIiwic3RhdGUiLCJnZXRMaXZlVGltZWxpbmUiLCJnZXRTdGF0ZSIsIkV2ZW50VGltZWxpbmUiLCJGT1JXQVJEUyIsImhhc1N1ZmZpY2llbnRQb3dlckxldmVsRm9yIiwicG93ZXJMZXZlbCIsInJvb21JZCIsIlByb21pc2UiLCJfIiwicmVqZWN0IiwiaW52aXRlIiwiZXJyb3IiLCJraWNrIiwiTW9kYWwiLCJjcmVhdGVEaWFsb2ciLCJFcnJvckRpYWxvZyIsImRlc2NyaXB0aW9uIiwibWVzc2FnZSIsImtub2NrTWVtYmVycyIsInVzZVR5cGVkRXZlbnRFbWl0dGVyU3RhdGUiLCJSb29tU3RhdGVFdmVudCIsIlVwZGF0ZSIsInVzZUNhbGxiYWNrIiwiZ2V0TWVtYmVyc1dpdGhNZW1iZXJzaGlwIiwiS25vd25NZW1iZXJzaGlwIiwiU2V0dGluZ3NTZWN0aW9uIiwiaGVhZGluZyIsImxlZ2VuZCIsIm1hcCIsImtub2NrTWVtYmVyIiwia2V5IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL3NldHRpbmdzL3RhYnMvcm9vbS9QZW9wbGVSb29tU2V0dGluZ3NUYWIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIzIE5vcmRlY2sgSVQgKyBDb25zdWx0aW5nIEdtYkhcblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IHsgRXZlbnRUaW1lbGluZSwgTWF0cml4RXJyb3IsIFJvb20sIFJvb21NZW1iZXIsIFJvb21TdGF0ZUV2ZW50IH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL21hdHJpeFwiO1xuaW1wb3J0IHsgS25vd25NZW1iZXJzaGlwIH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL3R5cGVzXCI7XG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlLCBWRkMgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkB2ZWN0b3ItaW0vY29tcG91bmQtZGVzaWduLXRva2Vucy9hc3NldHMvd2ViL2ljb25zL2Nsb3NlXCI7XG5cbmltcG9ydCB7IEljb24gYXMgQ2hlY2tJY29uIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL3Jlcy9pbWcvZmVhdGhlci1jdXN0b21pc2VkL2NoZWNrLnN2Z1wiO1xuaW1wb3J0IHsgZm9ybWF0UmVsYXRpdmVUaW1lIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0RhdGVVdGlsc1wiO1xuaW1wb3J0IHsgdXNlVHlwZWRFdmVudEVtaXR0ZXJTdGF0ZSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ob29rcy91c2VFdmVudEVtaXR0ZXJcIjtcbmltcG9ydCB7IF90IH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL2xhbmd1YWdlSGFuZGxlclwiO1xuaW1wb3J0IE1vZGFsLCB7IElIYW5kbGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vTW9kYWxcIjtcbmltcG9ydCBNZW1iZXJBdmF0YXIgZnJvbSBcIi4uLy4uLy4uL2F2YXRhcnMvTWVtYmVyQXZhdGFyXCI7XG5pbXBvcnQgRXJyb3JEaWFsb2cgZnJvbSBcIi4uLy4uLy4uL2RpYWxvZ3MvRXJyb3JEaWFsb2dcIjtcbmltcG9ydCBBY2Nlc3NpYmxlQnV0dG9uIGZyb20gXCIuLi8uLi8uLi9lbGVtZW50cy9BY2Nlc3NpYmxlQnV0dG9uXCI7XG5pbXBvcnQgU2V0dGluZ3NGaWVsZHNldCBmcm9tIFwiLi4vLi4vU2V0dGluZ3NGaWVsZHNldFwiO1xuaW1wb3J0IHsgU2V0dGluZ3NTZWN0aW9uIH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9TZXR0aW5nc1NlY3Rpb25cIjtcbmltcG9ydCBTZXR0aW5nc1RhYiBmcm9tIFwiLi4vU2V0dGluZ3NUYWJcIjtcblxuY29uc3QgVGltZXN0YW1wOiBWRkM8eyByb29tTWVtYmVyOiBSb29tTWVtYmVyIH0+ID0gKHsgcm9vbU1lbWJlciB9KSA9PiB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gcm9vbU1lbWJlci5ldmVudHMubWVtYmVyPy5ldmVudC5vcmlnaW5fc2VydmVyX3RzO1xuICAgIGlmICghdGltZXN0YW1wKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gPHRpbWUgY2xhc3NOYW1lPVwibXhfUGVvcGxlUm9vbVNldHRpbmdzVGFiX3RpbWVzdGFtcFwiPntmb3JtYXRSZWxhdGl2ZVRpbWUobmV3IERhdGUodGltZXN0YW1wKSl9PC90aW1lPjtcbn07XG5cbmNvbnN0IFNlZU1vcmVPckxlc3M6IFZGQzx7IHJvb21NZW1iZXI6IFJvb21NZW1iZXIgfT4gPSAoeyByb29tTWVtYmVyIH0pID0+IHtcbiAgICBjb25zdCBbc2VlTW9yZSwgc2V0U2VlTW9yZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgcmVhc29uID0gcm9vbU1lbWJlci5ldmVudHMubWVtYmVyPy5nZXRDb250ZW50KCkucmVhc29uO1xuXG4gICAgaWYgKCFyZWFzb24pIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgdHJ1bmNhdGVBdCA9IDEyMDtcbiAgICBjb25zdCBzaG91bGRUcnVuY2F0ZSA9IHJlYXNvbi5sZW5ndGggPiB0cnVuY2F0ZUF0O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm14X1Blb3BsZVJvb21TZXR0aW5nc1RhYl9zZWVNb3JlT3JMZXNzXCI+XG4gICAgICAgICAgICAgICAge3NlZU1vcmUgfHwgIXNob3VsZFRydW5jYXRlID8gcmVhc29uIDogYCR7cmVhc29uLnN1YnN0cmluZygwLCB0cnVuY2F0ZUF0KX3igKZgfVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAge3Nob3VsZFRydW5jYXRlICYmIChcbiAgICAgICAgICAgICAgICA8QWNjZXNzaWJsZUJ1dHRvbiBraW5kPVwibGlua1wiIG9uQ2xpY2s9eygpID0+IHNldFNlZU1vcmUoIXNlZU1vcmUpfT5cbiAgICAgICAgICAgICAgICAgICAge3NlZU1vcmUgPyBfdChcInJvb21fc2V0dGluZ3N8cGVvcGxlfHNlZV9sZXNzXCIpIDogX3QoXCJyb29tX3NldHRpbmdzfHBlb3BsZXxzZWVfbW9yZVwiKX1cbiAgICAgICAgICAgICAgICA8L0FjY2Vzc2libGVCdXR0b24+XG4gICAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICApO1xufTtcblxuY29uc3QgS25vY2s6IFZGQzx7XG4gICAgY2FuSW52aXRlOiBib29sZWFuO1xuICAgIGNhbktpY2s6IGJvb2xlYW47XG4gICAgb25BcHByb3ZlOiAodXNlcklkOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gICAgb25EZW55OiAodXNlcklkOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gICAgcm9vbU1lbWJlcjogUm9vbU1lbWJlcjtcbn0+ID0gKHsgY2FuS2ljaywgY2FuSW52aXRlLCBvbkFwcHJvdmUsIG9uRGVueSwgcm9vbU1lbWJlciB9KSA9PiB7XG4gICAgY29uc3QgW2Rpc2FibGVkLCBzZXREaXNhYmxlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgICBjb25zdCBoYW5kbGVBcHByb3ZlID0gKHVzZXJJZDogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgICAgIHNldERpc2FibGVkKHRydWUpO1xuICAgICAgICBvbkFwcHJvdmUodXNlcklkKS5jYXRjaChvbkVycm9yKTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlRGVueSA9ICh1c2VySWQ6IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgICAgICBzZXREaXNhYmxlZCh0cnVlKTtcbiAgICAgICAgb25EZW55KHVzZXJJZCkuY2F0Y2gob25FcnJvcik7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uRXJyb3IgPSAoKTogdm9pZCA9PiBzZXREaXNhYmxlZChmYWxzZSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14X1Blb3BsZVJvb21TZXR0aW5nc1RhYl9rbm9ja1wiPlxuICAgICAgICAgICAgPE1lbWJlckF2YXRhciBjbGFzc05hbWU9XCJteF9QZW9wbGVSb29tU2V0dGluZ3NUYWJfYXZhdGFyXCIgbWVtYmVyPXtyb29tTWVtYmVyfSBzaXplPVwiNDJweFwiIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14X1Blb3BsZVJvb21TZXR0aW5nc1RhYl9jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibXhfUGVvcGxlUm9vbVNldHRpbmdzVGFiX25hbWVcIj57cm9vbU1lbWJlci5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8VGltZXN0YW1wIHJvb21NZW1iZXI9e3Jvb21NZW1iZXJ9IC8+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibXhfUGVvcGxlUm9vbVNldHRpbmdzVGFiX3VzZXJJZFwiPntyb29tTWVtYmVyLnVzZXJJZH08L3NwYW4+XG4gICAgICAgICAgICAgICAgPFNlZU1vcmVPckxlc3Mgcm9vbU1lbWJlcj17cm9vbU1lbWJlcn0gLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPEFjY2Vzc2libGVCdXR0b25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteF9QZW9wbGVSb29tU2V0dGluZ3NUYWJfYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17IWNhbktpY2sgfHwgZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAga2luZD1cImljb25fcHJpbWFyeV9vdXRsaW5lXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVEZW55KHJvb21NZW1iZXIudXNlcklkKX1cbiAgICAgICAgICAgICAgICB0aXRsZT17X3QoXCJhY3Rpb258ZGVueVwiKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Q2xvc2VJY29uIHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgICAgICAgIDwvQWNjZXNzaWJsZUJ1dHRvbj5cbiAgICAgICAgICAgIDxBY2Nlc3NpYmxlQnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXhfUGVvcGxlUm9vbVNldHRpbmdzVGFiX2FjdGlvblwiXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFjYW5JbnZpdGUgfHwgZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAga2luZD1cImljb25fcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlQXBwcm92ZShyb29tTWVtYmVyLnVzZXJJZCl9XG4gICAgICAgICAgICAgICAgdGl0bGU9e190KFwiYWN0aW9ufGFwcHJvdmVcIil9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPENoZWNrSWNvbiB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICAgICAgICA8L0FjY2Vzc2libGVCdXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgUGVvcGxlUm9vbVNldHRpbmdzVGFiOiBWRkM8eyByb29tOiBSb29tIH0+ID0gKHsgcm9vbSB9KSA9PiB7XG4gICAgY29uc3QgY2xpZW50ID0gcm9vbS5jbGllbnQ7XG4gICAgY29uc3QgdXNlcklkID0gY2xpZW50LmdldFVzZXJJZCgpIHx8IFwiXCI7XG4gICAgY29uc3QgY2FuSW52aXRlID0gcm9vbS5jYW5JbnZpdGUodXNlcklkKTtcbiAgICBjb25zdCBtZW1iZXIgPSByb29tLmdldE1lbWJlcih1c2VySWQpO1xuICAgIGNvbnN0IHN0YXRlID0gcm9vbS5nZXRMaXZlVGltZWxpbmUoKS5nZXRTdGF0ZShFdmVudFRpbWVsaW5lLkZPUldBUkRTKTtcbiAgICBjb25zdCBjYW5LaWNrID0gbWVtYmVyICYmIHN0YXRlID8gc3RhdGUuaGFzU3VmZmljaWVudFBvd2VyTGV2ZWxGb3IoXCJraWNrXCIsIG1lbWJlci5wb3dlckxldmVsKSA6IGZhbHNlO1xuICAgIGNvbnN0IHJvb21JZCA9IHJvb20ucm9vbUlkO1xuXG4gICAgY29uc3QgaGFuZGxlQXBwcm92ZSA9ICh1c2VySWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4gPT5cbiAgICAgICAgbmV3IFByb21pc2UoKF8sIHJlamVjdCkgPT5cbiAgICAgICAgICAgIGNsaWVudC5pbnZpdGUocm9vbUlkLCB1c2VySWQpLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIG9uRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcblxuICAgIGNvbnN0IGhhbmRsZURlbnkgPSAodXNlcklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+XG4gICAgICAgIG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+XG4gICAgICAgICAgICBjbGllbnQua2ljayhyb29tSWQsIHVzZXJJZCkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgb25FcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuXG4gICAgY29uc3Qgb25FcnJvciA9IChlcnJvcjogTWF0cml4RXJyb3IpOiBJSGFuZGxlPHR5cGVvZiBFcnJvckRpYWxvZz4gPT5cbiAgICAgICAgTW9kYWwuY3JlYXRlRGlhbG9nKEVycm9yRGlhbG9nLCB7XG4gICAgICAgICAgICB0aXRsZTogZXJyb3IubmFtZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBlcnJvci5tZXNzYWdlLFxuICAgICAgICB9KTtcblxuICAgIGNvbnN0IGtub2NrTWVtYmVycyA9IHVzZVR5cGVkRXZlbnRFbWl0dGVyU3RhdGUoXG4gICAgICAgIHJvb20sXG4gICAgICAgIFJvb21TdGF0ZUV2ZW50LlVwZGF0ZSxcbiAgICAgICAgdXNlQ2FsbGJhY2soKCkgPT4gcm9vbS5nZXRNZW1iZXJzV2l0aE1lbWJlcnNoaXAoS25vd25NZW1iZXJzaGlwLktub2NrKSwgW3Jvb21dKSxcbiAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPFNldHRpbmdzVGFiPlxuICAgICAgICAgICAgPFNldHRpbmdzU2VjdGlvbiBoZWFkaW5nPXtfdChcImNvbW1vbnxwZW9wbGVcIil9PlxuICAgICAgICAgICAgICAgIDxTZXR0aW5nc0ZpZWxkc2V0IGxlZ2VuZD17X3QoXCJyb29tX3NldHRpbmdzfHBlb3BsZXxrbm9ja19zZWN0aW9uXCIpfT5cbiAgICAgICAgICAgICAgICAgICAge2tub2NrTWVtYmVycy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICBrbm9ja01lbWJlcnMubWFwKChrbm9ja01lbWJlcikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxLbm9ja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5JbnZpdGU9e2Nhbkludml0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuS2ljaz17Y2FuS2lja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtrbm9ja01lbWJlci51c2VySWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQXBwcm92ZT17aGFuZGxlQXBwcm92ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25EZW55PXtoYW5kbGVEZW55fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb29tTWVtYmVyPXtrbm9ja01lbWJlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm14X1Blb3BsZVJvb21TZXR0aW5nc1RhYl9wYXJhZ3JhcGhcIj57X3QoXCJyb29tX3NldHRpbmdzfHBlb3BsZXxrbm9ja19lbXB0eVwiKX08L3A+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9TZXR0aW5nc0ZpZWxkc2V0PlxuICAgICAgICAgICAgPC9TZXR0aW5nc1NlY3Rpb24+XG4gICAgICAgIDwvU2V0dGluZ3NUYWI+XG4gICAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFRQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxNQUFBLEdBQUFDLHVCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxNQUFBLEdBQUFDLHNCQUFBLENBQUFMLE9BQUE7QUFFQSxJQUFBTSxNQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxVQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxnQkFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsZ0JBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLE1BQUEsR0FBQUwsc0JBQUEsQ0FBQUwsT0FBQTtBQUNBLElBQUFXLGFBQUEsR0FBQU4sc0JBQUEsQ0FBQUwsT0FBQTtBQUNBLElBQUFZLFlBQUEsR0FBQVAsc0JBQUEsQ0FBQUwsT0FBQTtBQUNBLElBQUFhLGlCQUFBLEdBQUFSLHNCQUFBLENBQUFMLE9BQUE7QUFDQSxJQUFBYyxpQkFBQSxHQUFBVCxzQkFBQSxDQUFBTCxPQUFBO0FBQ0EsSUFBQWUsZ0JBQUEsR0FBQWYsT0FBQTtBQUNBLElBQUFnQixZQUFBLEdBQUFYLHNCQUFBLENBQUFMLE9BQUE7QUFBeUMsU0FBQWlCLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixP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