matrix-react-sdk
Version:
SDK for matrix.org using React
95 lines (92 loc) • 18.7 kB
JavaScript
;
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 _languageHandler = require("../../../languageHandler");
var _DialogButtons = _interopRequireDefault(require("../elements/DialogButtons"));
var _BaseDialog = _interopRequireDefault(require("../dialogs/BaseDialog"));
var _SpaceStore = _interopRequireDefault(require("../../../stores/spaces/SpaceStore"));
var _SpaceChildrenPicker = _interopRequireDefault(require("../spaces/SpaceChildrenPicker"));
var _arrays = require("../../../utils/arrays");
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 isOnlyAdmin = room => {
const userId = room.client.getSafeUserId();
if (room.getMember(userId)?.powerLevelNorm !== 100) {
return false; // user is not an admin
}
return room.getJoinedMembers().every(member => {
// return true if every other member has a lower power level (we are highest)
return member.userId === userId || member.powerLevelNorm < 100;
});
};
const LeaveSpaceDialog = ({
space,
onFinished
}) => {
const spaceChildren = (0, _react.useMemo)(() => {
const roomSet = new Set(_SpaceStore.default.instance.getSpaceFilteredRoomIds(space.roomId));
_SpaceStore.default.instance.traverseSpace(space.roomId, spaceId => {
if (space.roomId === spaceId) return; // skip the root node
roomSet.add(spaceId);
}, false);
return (0, _arrays.filterBoolean)(Array.from(roomSet).map(roomId => space.client.getRoom(roomId)));
}, [space]);
const [roomsToLeave, setRoomsToLeave] = (0, _react.useState)([]);
const selectedRooms = (0, _react.useMemo)(() => new Set(roomsToLeave), [roomsToLeave]);
let rejoinWarning;
if (space.getJoinRule() !== _matrix.JoinRule.Public) {
rejoinWarning = (0, _languageHandler._t)("space|leave_dialog_public_rejoin_warning");
}
let onlyAdminWarning;
if (isOnlyAdmin(space)) {
onlyAdminWarning = (0, _languageHandler._t)("space|leave_dialog_only_admin_warning");
} else {
const numChildrenOnlyAdminIn = roomsToLeave.filter(isOnlyAdmin).length;
if (numChildrenOnlyAdminIn > 0) {
onlyAdminWarning = (0, _languageHandler._t)("space|leave_dialog_only_admin_room_warning");
}
}
return /*#__PURE__*/_react.default.createElement(_BaseDialog.default, {
title: (0, _languageHandler._t)("space|leave_dialog_title", {
spaceName: space.name
}),
className: "mx_LeaveSpaceDialog",
contentId: "mx_LeaveSpaceDialog",
onFinished: () => onFinished(false),
fixedWidth: false
}, /*#__PURE__*/_react.default.createElement("div", {
className: "mx_Dialog_content",
id: "mx_LeaveSpaceDialog"
}, /*#__PURE__*/_react.default.createElement("p", null, (0, _languageHandler._t)("space|leave_dialog_description", {}, {
spaceName: () => /*#__PURE__*/_react.default.createElement("strong", null, space.name)
}), "\xA0", rejoinWarning, rejoinWarning && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "\xA0"), spaceChildren.length > 0 && (0, _languageHandler._t)("space|leave_dialog_option_intro")), spaceChildren.length > 0 && /*#__PURE__*/_react.default.createElement(_SpaceChildrenPicker.default, {
space: space,
spaceChildren: spaceChildren,
selected: selectedRooms,
onChange: setRoomsToLeave,
noneLabel: (0, _languageHandler._t)("space|leave_dialog_option_none"),
allLabel: (0, _languageHandler._t)("space|leave_dialog_option_all"),
specificLabel: (0, _languageHandler._t)("space|leave_dialog_option_specific")
}), onlyAdminWarning && /*#__PURE__*/_react.default.createElement("div", {
className: "mx_LeaveSpaceDialog_section_warning"
}, onlyAdminWarning)), /*#__PURE__*/_react.default.createElement(_DialogButtons.default, {
primaryButton: (0, _languageHandler._t)("space|leave_dialog_action"),
primaryButtonClass: "danger",
onPrimaryButtonClick: () => onFinished(true, roomsToLeave),
hasCancel: true,
onCancel: () => onFinished(false)
}));
};
var _default = exports.default = LeaveSpaceDialog;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbWF0cml4IiwiX2xhbmd1YWdlSGFuZGxlciIsIl9EaWFsb2dCdXR0b25zIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9CYXNlRGlhbG9nIiwiX1NwYWNlU3RvcmUiLCJfU3BhY2VDaGlsZHJlblBpY2tlciIsIl9hcnJheXMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJpc09ubHlBZG1pbiIsInJvb20iLCJ1c2VySWQiLCJjbGllbnQiLCJnZXRTYWZlVXNlcklkIiwiZ2V0TWVtYmVyIiwicG93ZXJMZXZlbE5vcm0iLCJnZXRKb2luZWRNZW1iZXJzIiwiZXZlcnkiLCJtZW1iZXIiLCJMZWF2ZVNwYWNlRGlhbG9nIiwic3BhY2UiLCJvbkZpbmlzaGVkIiwic3BhY2VDaGlsZHJlbiIsInVzZU1lbW8iLCJyb29tU2V0IiwiU2V0IiwiU3BhY2VTdG9yZSIsImluc3RhbmNlIiwiZ2V0U3BhY2VGaWx0ZXJlZFJvb21JZHMiLCJyb29tSWQiLCJ0cmF2ZXJzZVNwYWNlIiwic3BhY2VJZCIsImFkZCIsImZpbHRlckJvb2xlYW4iLCJBcnJheSIsImZyb20iLCJtYXAiLCJnZXRSb29tIiwicm9vbXNUb0xlYXZlIiwic2V0Um9vbXNUb0xlYXZlIiwidXNlU3RhdGUiLCJzZWxlY3RlZFJvb21zIiwicmVqb2luV2FybmluZyIsImdldEpvaW5SdWxlIiwiSm9pblJ1bGUiLCJQdWJsaWMiLCJfdCIsIm9ubHlBZG1pbldhcm5pbmciLCJudW1DaGlsZHJlbk9ubHlBZG1pbkluIiwiZmlsdGVyIiwibGVuZ3RoIiwiY3JlYXRlRWxlbWVudCIsInRpdGxlIiwic3BhY2VOYW1lIiwibmFtZSIsImNsYXNzTmFtZSIsImNvbnRlbnRJZCIsImZpeGVkV2lkdGgiLCJpZCIsIkZyYWdtZW50Iiwic2VsZWN0ZWQiLCJvbkNoYW5nZSIsIm5vbmVMYWJlbCIsImFsbExhYmVsIiwic3BlY2lmaWNMYWJlbCIsInByaW1hcnlCdXR0b24iLCJwcmltYXJ5QnV0dG9uQ2xhc3MiLCJvblByaW1hcnlCdXR0b25DbGljayIsImhhc0NhbmNlbCIsIm9uQ2FuY2VsIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdmlld3MvZGlhbG9ncy9MZWF2ZVNwYWNlRGlhbG9nLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFJvb20sIEpvaW5SdWxlIH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL21hdHJpeFwiO1xuXG5pbXBvcnQgeyBfdCB9IGZyb20gXCIuLi8uLi8uLi9sYW5ndWFnZUhhbmRsZXJcIjtcbmltcG9ydCBEaWFsb2dCdXR0b25zIGZyb20gXCIuLi9lbGVtZW50cy9EaWFsb2dCdXR0b25zXCI7XG5pbXBvcnQgQmFzZURpYWxvZyBmcm9tIFwiLi4vZGlhbG9ncy9CYXNlRGlhbG9nXCI7XG5pbXBvcnQgU3BhY2VTdG9yZSBmcm9tIFwiLi4vLi4vLi4vc3RvcmVzL3NwYWNlcy9TcGFjZVN0b3JlXCI7XG5pbXBvcnQgU3BhY2VDaGlsZHJlblBpY2tlciBmcm9tIFwiLi4vc3BhY2VzL1NwYWNlQ2hpbGRyZW5QaWNrZXJcIjtcbmltcG9ydCB7IGZpbHRlckJvb2xlYW4gfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvYXJyYXlzXCI7XG5cbmludGVyZmFjZSBJUHJvcHMge1xuICAgIHNwYWNlOiBSb29tO1xuICAgIG9uRmluaXNoZWQobGVhdmU6IGJvb2xlYW4sIHJvb21zPzogUm9vbVtdKTogdm9pZDtcbn1cblxuY29uc3QgaXNPbmx5QWRtaW4gPSAocm9vbTogUm9vbSk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IHVzZXJJZCA9IHJvb20uY2xpZW50LmdldFNhZmVVc2VySWQoKTtcbiAgICBpZiAocm9vbS5nZXRNZW1iZXIodXNlcklkKT8ucG93ZXJMZXZlbE5vcm0gIT09IDEwMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHVzZXIgaXMgbm90IGFuIGFkbWluXG4gICAgfVxuICAgIHJldHVybiByb29tLmdldEpvaW5lZE1lbWJlcnMoKS5ldmVyeSgobWVtYmVyKSA9PiB7XG4gICAgICAgIC8vIHJldHVybiB0cnVlIGlmIGV2ZXJ5IG90aGVyIG1lbWJlciBoYXMgYSBsb3dlciBwb3dlciBsZXZlbCAod2UgYXJlIGhpZ2hlc3QpXG4gICAgICAgIHJldHVybiBtZW1iZXIudXNlcklkID09PSB1c2VySWQgfHwgbWVtYmVyLnBvd2VyTGV2ZWxOb3JtIDwgMTAwO1xuICAgIH0pO1xufTtcblxuY29uc3QgTGVhdmVTcGFjZURpYWxvZzogUmVhY3QuRkM8SVByb3BzPiA9ICh7IHNwYWNlLCBvbkZpbmlzaGVkIH0pID0+IHtcbiAgICBjb25zdCBzcGFjZUNoaWxkcmVuID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJvb21TZXQgPSBuZXcgU2V0KFNwYWNlU3RvcmUuaW5zdGFuY2UuZ2V0U3BhY2VGaWx0ZXJlZFJvb21JZHMoc3BhY2Uucm9vbUlkKSk7XG4gICAgICAgIFNwYWNlU3RvcmUuaW5zdGFuY2UudHJhdmVyc2VTcGFjZShcbiAgICAgICAgICAgIHNwYWNlLnJvb21JZCxcbiAgICAgICAgICAgIChzcGFjZUlkKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHNwYWNlLnJvb21JZCA9PT0gc3BhY2VJZCkgcmV0dXJuOyAvLyBza2lwIHRoZSByb290IG5vZGVcbiAgICAgICAgICAgICAgICByb29tU2V0LmFkZChzcGFjZUlkKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGZpbHRlckJvb2xlYW4oQXJyYXkuZnJvbShyb29tU2V0KS5tYXAoKHJvb21JZCkgPT4gc3BhY2UuY2xpZW50LmdldFJvb20ocm9vbUlkKSkpO1xuICAgIH0sIFtzcGFjZV0pO1xuICAgIGNvbnN0IFtyb29tc1RvTGVhdmUsIHNldFJvb21zVG9MZWF2ZV0gPSB1c2VTdGF0ZTxSb29tW10+KFtdKTtcbiAgICBjb25zdCBzZWxlY3RlZFJvb21zID0gdXNlTWVtbygoKSA9PiBuZXcgU2V0KHJvb21zVG9MZWF2ZSksIFtyb29tc1RvTGVhdmVdKTtcblxuICAgIGxldCByZWpvaW5XYXJuaW5nO1xuICAgIGlmIChzcGFjZS5nZXRKb2luUnVsZSgpICE9PSBKb2luUnVsZS5QdWJsaWMpIHtcbiAgICAgICAgcmVqb2luV2FybmluZyA9IF90KFwic3BhY2V8bGVhdmVfZGlhbG9nX3B1YmxpY19yZWpvaW5fd2FybmluZ1wiKTtcbiAgICB9XG5cbiAgICBsZXQgb25seUFkbWluV2FybmluZztcbiAgICBpZiAoaXNPbmx5QWRtaW4oc3BhY2UpKSB7XG4gICAgICAgIG9ubHlBZG1pbldhcm5pbmcgPSBfdChcInNwYWNlfGxlYXZlX2RpYWxvZ19vbmx5X2FkbWluX3dhcm5pbmdcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbnVtQ2hpbGRyZW5Pbmx5QWRtaW5JbiA9IHJvb21zVG9MZWF2ZS5maWx0ZXIoaXNPbmx5QWRtaW4pLmxlbmd0aDtcbiAgICAgICAgaWYgKG51bUNoaWxkcmVuT25seUFkbWluSW4gPiAwKSB7XG4gICAgICAgICAgICBvbmx5QWRtaW5XYXJuaW5nID0gX3QoXCJzcGFjZXxsZWF2ZV9kaWFsb2dfb25seV9hZG1pbl9yb29tX3dhcm5pbmdcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8QmFzZURpYWxvZ1xuICAgICAgICAgICAgdGl0bGU9e190KFwic3BhY2V8bGVhdmVfZGlhbG9nX3RpdGxlXCIsIHsgc3BhY2VOYW1lOiBzcGFjZS5uYW1lIH0pfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwibXhfTGVhdmVTcGFjZURpYWxvZ1wiXG4gICAgICAgICAgICBjb250ZW50SWQ9XCJteF9MZWF2ZVNwYWNlRGlhbG9nXCJcbiAgICAgICAgICAgIG9uRmluaXNoZWQ9eygpID0+IG9uRmluaXNoZWQoZmFsc2UpfVxuICAgICAgICAgICAgZml4ZWRXaWR0aD17ZmFsc2V9XG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfRGlhbG9nX2NvbnRlbnRcIiBpZD1cIm14X0xlYXZlU3BhY2VEaWFsb2dcIj5cbiAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgICAge190KFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzcGFjZXxsZWF2ZV9kaWFsb2dfZGVzY3JpcHRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlTmFtZTogKCkgPT4gPHN0cm9uZz57c3BhY2UubmFtZX08L3N0cm9uZz4sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAge3Jlam9pbldhcm5pbmd9XG4gICAgICAgICAgICAgICAgICAgIHtyZWpvaW5XYXJuaW5nICYmIDw+Jm5ic3A7PC8+fVxuICAgICAgICAgICAgICAgICAgICB7c3BhY2VDaGlsZHJlbi5sZW5ndGggPiAwICYmIF90KFwic3BhY2V8bGVhdmVfZGlhbG9nX29wdGlvbl9pbnRyb1wiKX1cbiAgICAgICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgICAgICB7c3BhY2VDaGlsZHJlbi5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgPFNwYWNlQ2hpbGRyZW5QaWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlPXtzcGFjZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlQ2hpbGRyZW49e3NwYWNlQ2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17c2VsZWN0ZWRSb29tc31cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtzZXRSb29tc1RvTGVhdmV9XG4gICAgICAgICAgICAgICAgICAgICAgICBub25lTGFiZWw9e190KFwic3BhY2V8bGVhdmVfZGlhbG9nX29wdGlvbl9ub25lXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsTGFiZWw9e190KFwic3BhY2V8bGVhdmVfZGlhbG9nX29wdGlvbl9hbGxcIil9XG4gICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY0xhYmVsPXtfdChcInNwYWNlfGxlYXZlX2RpYWxvZ19vcHRpb25fc3BlY2lmaWNcIil9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgIHtvbmx5QWRtaW5XYXJuaW5nICYmIDxkaXYgY2xhc3NOYW1lPVwibXhfTGVhdmVTcGFjZURpYWxvZ19zZWN0aW9uX3dhcm5pbmdcIj57b25seUFkbWluV2FybmluZ308L2Rpdj59XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxEaWFsb2dCdXR0b25zXG4gICAgICAgICAgICAgICAgcHJpbWFyeUJ1dHRvbj17X3QoXCJzcGFjZXxsZWF2ZV9kaWFsb2dfYWN0aW9uXCIpfVxuICAgICAgICAgICAgICAgIHByaW1hcnlCdXR0b25DbGFzcz1cImRhbmdlclwiXG4gICAgICAgICAgICAgICAgb25QcmltYXJ5QnV0dG9uQ2xpY2s9eygpID0+IG9uRmluaXNoZWQodHJ1ZSwgcm9vbXNUb0xlYXZlKX1cbiAgICAgICAgICAgICAgICBoYXNDYW5jZWw9e3RydWV9XG4gICAgICAgICAgICAgICAgb25DYW5jZWw9eygpID0+IG9uRmluaXNoZWQoZmFsc2UpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9CYXNlRGlhbG9nPlxuICAgICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBMZWF2ZVNwYWNlRGlhbG9nO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBUUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsZ0JBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLFdBQUEsR0FBQUQsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFNLFdBQUEsR0FBQUYsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFPLG9CQUFBLEdBQUFILHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBUSxPQUFBLEdBQUFSLE9BQUE7QUFBc0QsU0FBQVMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQVgsd0JBQUFXLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNB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QSxDQUFBaUIsT0FBQSxDQUFBd0QsYUFBQSxpQkFBUy9CLEtBQUssQ0FBQ2tDLElBQWE7RUFDakQsQ0FDSixDQUFDLEVBQUMsTUFFRixFQUFDWixhQUFhLEVBQ2JBLGFBQWEsaUJBQUloRSxNQUFBLENBQUFpQixPQUFBLENBQUF3RCxhQUFBLENBQUF6RSxNQUFBLENBQUFpQixPQUFBLENBQUFnRSxRQUFBLFFBQUUsTUFBUSxDQUFDLEVBQzVCckMsYUFBYSxDQUFDNEIsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFBSixtQkFBRSxFQUFDLGlDQUFpQyxDQUNsRSxDQUFDLEVBRUh4QixhQUFhLENBQUM0QixNQUFNLEdBQUcsQ0FBQyxpQkFDckJ4RSxNQUFBLENBQUFpQixPQUFBLENBQUF3RCxhQUFBLENBQUNoRSxvQkFBQSxDQUFBUSxPQUFtQjtJQUNoQnlCLEtBQUssRUFBRUEsS0FBTTtJQUNiRSxhQUFhLEVBQUVBLGFBQWM7SUFDN0JzQyxRQUFRLEVBQUVuQixhQUFjO0lBQ3hCb0IsUUFBUSxFQUFFdEIsZUFBZ0I7SUFDMUJ1QixTQUFTLEVBQUUsSUFBQWhCLG1CQUFFLEVBQUMsZ0NBQWdDLENBQUU7SUFDaERpQixRQUFRLEVBQUUsSUFBQWpCLG1CQUFFLEVBQUMsK0JBQStCLENBQUU7SUFDOUNrQixhQUFhLEVBQUUsSUFBQWxCLG1CQUFFLEVBQUMsb0NBQW9DO0VBQUUsQ0FDM0QsQ0FDSixFQUVBQyxnQkFBZ0IsaUJBQUlyRSxNQUFBLENBQUFpQixPQUFBLENBQUF3RCxhQUFBO0lBQUtJLFNBQVMsRUFBQztFQUFxQyxHQUFFUixnQkFBc0IsQ0FDaEcsQ0FBQyxlQUNOckUsTUFBQSxDQUFBaUIsT0FBQSxDQUFBd0QsYUFBQSxDQUFDcEUsY0FBQSxDQUFBWSxPQUFhO0lBQ1ZzRSxhQUFhLEVBQUUsSUFBQW5CLG1CQUFFLEVBQUMsMkJBQTJCLENBQUU7SUFDL0NvQixrQkFBa0IsRUFBQyxRQUFRO0lBQzNCQyxvQkFBb0IsRUFBRUEsQ0FBQSxLQUFNOUMsVUFBVSxDQUFDLElBQUksRUFBRWlCLFlBQVksQ0FBRTtJQUMzRDhCLFNBQVMsRUFBRSxJQUFLO0lBQ2hCQyxRQUFRLEVBQUVBLENBQUEsS0FBTWhELFVBQVUsQ0FBQyxLQUFLO0VBQUUsQ0FDckMsQ0FDTyxDQUFDO0FBRXJCLENBQUM7QUFBQyxJQUFBaUQsUUFBQSxHQUFBQyxPQUFBLENBQUE1RSxPQUFBLEdBRWF3QixnQkFBZ0IiLCJpZ25vcmVMaXN0IjpbXX0=