matrix-react-sdk
Version:
SDK for matrix.org using React
119 lines (116 loc) • 26.1 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireDefault(require("react"));
var _matrix = require("matrix-js-sdk/src/matrix");
var _languageHandler = require("../../../../../languageHandler");
var _AccessibleButton = _interopRequireDefault(require("../../../elements/AccessibleButton"));
var _RoomUpgradeDialog = _interopRequireDefault(require("../../../dialogs/RoomUpgradeDialog"));
var _Modal = _interopRequireDefault(require("../../../../../Modal"));
var _dispatcher = _interopRequireDefault(require("../../../../../dispatcher/dispatcher"));
var _actions = require("../../../../../dispatcher/actions");
var _CopyableText = _interopRequireDefault(require("../../../elements/CopyableText"));
var _SettingsStore = _interopRequireDefault(require("../../../../../settings/SettingsStore"));
var _SettingsTab = _interopRequireDefault(require("../SettingsTab"));
var _SettingsSection = require("../../shared/SettingsSection");
var _SettingsSubsection = _interopRequireDefault(require("../../shared/SettingsSubsection"));
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /*
Copyright 2024 New Vector Ltd.
Copyright 2019-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.
*/
class AdvancedRoomSettingsTab extends _react.default.Component {
constructor(props) {
super(props);
(0, _defineProperty2.default)(this, "upgradeRoom", () => {
_Modal.default.createDialog(_RoomUpgradeDialog.default, {
room: this.props.room
});
});
(0, _defineProperty2.default)(this, "onOldRoomClicked", e => {
e.preventDefault();
e.stopPropagation();
_dispatcher.default.dispatch({
action: _actions.Action.ViewRoom,
room_id: this.state.oldRoomId,
event_id: this.state.oldEventId,
via_servers: this.state.oldViaServers,
metricsTrigger: "WebPredecessorSettings",
metricsViaKeyboard: e.type !== "click"
});
this.props.closeSettingsFn();
});
const msc3946ProcessDynamicPredecessor = _SettingsStore.default.getValue("feature_dynamic_room_predecessors");
this.state = {};
// we handle lack of this object gracefully later, so don't worry about it failing here.
const room = this.props.room;
room.getRecommendedVersion().then(v => {
const tombstone = room.currentState.getStateEvents(_matrix.EventType.RoomTombstone, "");
const additionalStateChanges = {};
const predecessor = room.findPredecessor(msc3946ProcessDynamicPredecessor);
if (predecessor) {
additionalStateChanges.oldRoomId = predecessor.roomId;
additionalStateChanges.oldEventId = predecessor.eventId;
additionalStateChanges.oldViaServers = predecessor.viaServers;
}
this.setState(_objectSpread({
upgraded: !!tombstone?.getContent().replacement_room,
upgradeRecommendation: v
}, additionalStateChanges));
});
}
render() {
const room = this.props.room;
const isSpace = room.isSpaceRoom();
let unfederatableSection;
if (room.currentState.getStateEvents(_matrix.EventType.RoomCreate, "")?.getContent()["m.federate"] === false) {
unfederatableSection = /*#__PURE__*/_react.default.createElement("div", null, (0, _languageHandler._t)("room_settings|advanced|unfederated"));
}
let roomUpgradeButton;
if (this.state.upgradeRecommendation && this.state.upgradeRecommendation.needsUpgrade && !this.state.upgraded) {
roomUpgradeButton = /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("p", {
className: "mx_SettingsTab_warningText"
}, (0, _languageHandler._t)("room_settings|advanced|room_upgrade_warning", {}, {
b: sub => /*#__PURE__*/_react.default.createElement("strong", null, sub),
i: sub => /*#__PURE__*/_react.default.createElement("i", null, sub)
})), /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, {
onClick: this.upgradeRoom,
kind: "primary"
}, isSpace ? (0, _languageHandler._t)("room_settings|advanced|space_upgrade_button") : (0, _languageHandler._t)("room_settings|advanced|room_upgrade_button")));
}
let oldRoomLink;
if (this.state.oldRoomId) {
let copy;
if (isSpace) {
copy = (0, _languageHandler._t)("room_settings|advanced|space_predecessor", {
spaceName: room.name ?? this.state.oldRoomId
});
} else {
copy = (0, _languageHandler._t)("room_settings|advanced|room_predecessor", {
roomName: room.name ?? this.state.oldRoomId
});
}
oldRoomLink = /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, {
element: "a",
onClick: this.onOldRoomClicked
}, copy);
}
return /*#__PURE__*/_react.default.createElement(_SettingsTab.default, null, /*#__PURE__*/_react.default.createElement(_SettingsSection.SettingsSection, {
heading: (0, _languageHandler._t)("common|advanced")
}, /*#__PURE__*/_react.default.createElement(_SettingsSubsection.default, {
heading: room.isSpaceRoom() ? (0, _languageHandler._t)("room_settings|advanced|information_section_space") : (0, _languageHandler._t)("room_settings|advanced|information_section_room")
}, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("span", null, (0, _languageHandler._t)("room_settings|advanced|room_id")), /*#__PURE__*/_react.default.createElement(_CopyableText.default, {
getTextToCopy: () => this.props.room.roomId
}, this.props.room.roomId)), unfederatableSection), /*#__PURE__*/_react.default.createElement(_SettingsSubsection.default, {
heading: (0, _languageHandler._t)("room_settings|advanced|room_version_section")
}, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("span", null, (0, _languageHandler._t)("room_settings|advanced|room_version")), "\xA0", room.getVersion()), oldRoomLink, roomUpgradeButton)));
}
}
exports.default = AdvancedRoomSettingsTab;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9tYXRyaXgiLCJfbGFuZ3VhZ2VIYW5kbGVyIiwiX0FjY2Vzc2libGVCdXR0b24iLCJfUm9vbVVwZ3JhZGVEaWFsb2ciLCJfTW9kYWwiLCJfZGlzcGF0Y2hlciIsIl9hY3Rpb25zIiwiX0NvcHlhYmxlVGV4dCIsIl9TZXR0aW5nc1N0b3JlIiwiX1NldHRpbmdzVGFiIiwiX1NldHRpbmdzU2VjdGlvbiIsIl9TZXR0aW5nc1N1YnNlY3Rpb24iLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZGVmYXVsdCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJBZHZhbmNlZFJvb21TZXR0aW5nc1RhYiIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsIk1vZGFsIiwiY3JlYXRlRGlhbG9nIiwiUm9vbVVwZ3JhZGVEaWFsb2ciLCJyb29tIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJkaXMiLCJkaXNwYXRjaCIsImFjdGlvbiIsIkFjdGlvbiIsIlZpZXdSb29tIiwicm9vbV9pZCIsInN0YXRlIiwib2xkUm9vbUlkIiwiZXZlbnRfaWQiLCJvbGRFdmVudElkIiwidmlhX3NlcnZlcnMiLCJvbGRWaWFTZXJ2ZXJzIiwibWV0cmljc1RyaWdnZXIiLCJtZXRyaWNzVmlhS2V5Ym9hcmQiLCJ0eXBlIiwiY2xvc2VTZXR0aW5nc0ZuIiwibXNjMzk0NlByb2Nlc3NEeW5hbWljUHJlZGVjZXNzb3IiLCJTZXR0aW5nc1N0b3JlIiwiZ2V0VmFsdWUiLCJnZXRSZWNvbW1lbmRlZFZlcnNpb24iLCJ0aGVuIiwidiIsInRvbWJzdG9uZSIsImN1cnJlbnRTdGF0ZSIsImdldFN0YXRlRXZlbnRzIiwiRXZlbnRUeXBlIiwiUm9vbVRvbWJzdG9uZSIsImFkZGl0aW9uYWxTdGF0ZUNoYW5nZXMiLCJwcmVkZWNlc3NvciIsImZpbmRQcmVkZWNlc3NvciIsInJvb21JZCIsImV2ZW50SWQiLCJ2aWFTZXJ2ZXJzIiwic2V0U3RhdGUiLCJ1cGdyYWRlZCIsImdldENvbnRlbnQiLCJyZXBsYWNlbWVudF9yb29tIiwidXBncmFkZVJlY29tbWVuZGF0aW9uIiwicmVuZGVyIiwiaXNTcGFjZSIsImlzU3BhY2VSb29tIiwidW5mZWRlcmF0YWJsZVNlY3Rpb24iLCJSb29tQ3JlYXRlIiwiY3JlYXRlRWxlbWVudCIsIl90Iiwicm9vbVVwZ3JhZGVCdXR0b24iLCJuZWVkc1VwZ3JhZGUiLCJjbGFzc05hbWUiLCJiIiwic3ViIiwiaSIsIm9uQ2xpY2siLCJ1cGdyYWRlUm9vbSIsImtpbmQiLCJvbGRSb29tTGluayIsImNvcHkiLCJzcGFjZU5hbWUiLCJuYW1lIiwicm9vbU5hbWUiLCJlbGVtZW50Iiwib25PbGRSb29tQ2xpY2tlZCIsIlNldHRpbmdzU2VjdGlvbiIsImhlYWRpbmciLCJnZXRUZXh0VG9Db3B5IiwiZ2V0VmVyc2lvbiIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy92aWV3cy9zZXR0aW5ncy90YWJzL3Jvb20vQWR2YW5jZWRSb29tU2V0dGluZ3NUYWIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDE5LTIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRXZlbnRUeXBlLCBSb29tIH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL21hdHJpeFwiO1xuXG5pbXBvcnQgeyBfdCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9sYW5ndWFnZUhhbmRsZXJcIjtcbmltcG9ydCBBY2Nlc3NpYmxlQnV0dG9uLCB7IEJ1dHRvbkV2ZW50IH0gZnJvbSBcIi4uLy4uLy4uL2VsZW1lbnRzL0FjY2Vzc2libGVCdXR0b25cIjtcbmltcG9ydCBSb29tVXBncmFkZURpYWxvZyBmcm9tIFwiLi4vLi4vLi4vZGlhbG9ncy9Sb29tVXBncmFkZURpYWxvZ1wiO1xuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Nb2RhbFwiO1xuaW1wb3J0IGRpcyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vZGlzcGF0Y2hlci9kaXNwYXRjaGVyXCI7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vZGlzcGF0Y2hlci9hY3Rpb25zXCI7XG5pbXBvcnQgQ29weWFibGVUZXh0IGZyb20gXCIuLi8uLi8uLi9lbGVtZW50cy9Db3B5YWJsZVRleHRcIjtcbmltcG9ydCB7IFZpZXdSb29tUGF5bG9hZCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9kaXNwYXRjaGVyL3BheWxvYWRzL1ZpZXdSb29tUGF5bG9hZFwiO1xuaW1wb3J0IFNldHRpbmdzU3RvcmUgZnJvbSBcIi4uLy4uLy4uLy4uLy4uL3NldHRpbmdzL1NldHRpbmdzU3RvcmVcIjtcbmltcG9ydCBTZXR0aW5nc1RhYiBmcm9tIFwiLi4vU2V0dGluZ3NUYWJcIjtcbmltcG9ydCB7IFNldHRpbmdzU2VjdGlvbiB9IGZyb20gXCIuLi8uLi9zaGFyZWQvU2V0dGluZ3NTZWN0aW9uXCI7XG5pbXBvcnQgU2V0dGluZ3NTdWJzZWN0aW9uIGZyb20gXCIuLi8uLi9zaGFyZWQvU2V0dGluZ3NTdWJzZWN0aW9uXCI7XG5cbmludGVyZmFjZSBJUHJvcHMge1xuICAgIHJvb206IFJvb207XG4gICAgY2xvc2VTZXR0aW5nc0ZuKCk6IHZvaWQ7XG59XG5cbmludGVyZmFjZSBJUmVjb21tZW5kZWRWZXJzaW9uIHtcbiAgICB2ZXJzaW9uOiBzdHJpbmc7XG4gICAgbmVlZHNVcGdyYWRlOiBib29sZWFuO1xuICAgIHVyZ2VudDogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIElTdGF0ZSB7XG4gICAgLy8gVGhpcyBpcyBldmVudHVhbGx5IHNldCB0byB0aGUgdmFsdWUgb2Ygcm9vbS5nZXRSZWNvbW1lbmRlZFZlcnNpb24oKVxuICAgIHVwZ3JhZGVSZWNvbW1lbmRhdGlvbj86IElSZWNvbW1lbmRlZFZlcnNpb247XG5cbiAgICAvKiogVGhlIHJvb20gSUQgb2YgdGhpcyByb29tJ3MgcHJlZGVjZXNzb3IsIGlmIGl0IGV4aXN0cy4gKi9cbiAgICBvbGRSb29tSWQ/OiBzdHJpbmc7XG5cbiAgICAvKiogVGhlIElEIG9mIHRvbWJzdG9uZSBldmVudCBpbiB0aGlzIHJvb20ncyBwcmVkZWNlc3NvciwgaWYgaXQgZXhpc3RzLiAqL1xuICAgIG9sZEV2ZW50SWQ/OiBzdHJpbmc7XG5cbiAgICAvKiogVGhlIHZpYSBzZXJ2ZXJzIHRvIHVzZSB0byBmaW5kIHRoaXMgcm9vbSdzIHByZWRlY2Vzc29yLCBpZiBpdCBleGlzdHMuICovXG4gICAgb2xkVmlhU2VydmVycz86IHN0cmluZ1tdO1xuXG4gICAgdXBncmFkZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBZHZhbmNlZFJvb21TZXR0aW5nc1RhYiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJUHJvcHMsIElTdGF0ZT4ge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm9wczogSVByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcblxuICAgICAgICBjb25zdCBtc2MzOTQ2UHJvY2Vzc0R5bmFtaWNQcmVkZWNlc3NvciA9IFNldHRpbmdzU3RvcmUuZ2V0VmFsdWUoXCJmZWF0dXJlX2R5bmFtaWNfcm9vbV9wcmVkZWNlc3NvcnNcIik7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHt9O1xuXG4gICAgICAgIC8vIHdlIGhhbmRsZSBsYWNrIG9mIHRoaXMgb2JqZWN0IGdyYWNlZnVsbHkgbGF0ZXIsIHNvIGRvbid0IHdvcnJ5IGFib3V0IGl0IGZhaWxpbmcgaGVyZS5cbiAgICAgICAgY29uc3Qgcm9vbSA9IHRoaXMucHJvcHMucm9vbTtcbiAgICAgICAgcm9vbS5nZXRSZWNvbW1lbmRlZFZlcnNpb24oKS50aGVuKCh2KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0b21ic3RvbmUgPSByb29tLmN1cnJlbnRTdGF0ZS5nZXRTdGF0ZUV2ZW50cyhFdmVudFR5cGUuUm9vbVRvbWJzdG9uZSwgXCJcIik7XG5cbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxTdGF0ZUNoYW5nZXM6IFBhcnRpYWw8SVN0YXRlPiA9IHt9O1xuICAgICAgICAgICAgY29uc3QgcHJlZGVjZXNzb3IgPSByb29tLmZpbmRQcmVkZWNlc3Nvcihtc2MzOTQ2UHJvY2Vzc0R5bmFtaWNQcmVkZWNlc3Nvcik7XG4gICAgICAgICAgICBpZiAocHJlZGVjZXNzb3IpIHtcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsU3RhdGVDaGFuZ2VzLm9sZFJvb21JZCA9IHByZWRlY2Vzc29yLnJvb21JZDtcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsU3RhdGVDaGFuZ2VzLm9sZEV2ZW50SWQgPSBwcmVkZWNlc3Nvci5ldmVudElkO1xuICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxTdGF0ZUNoYW5nZXMub2xkVmlhU2VydmVycyA9IHByZWRlY2Vzc29yLnZpYVNlcnZlcnM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgIHVwZ3JhZGVkOiAhIXRvbWJzdG9uZT8uZ2V0Q29udGVudCgpLnJlcGxhY2VtZW50X3Jvb20sXG4gICAgICAgICAgICAgICAgdXBncmFkZVJlY29tbWVuZGF0aW9uOiB2LFxuICAgICAgICAgICAgICAgIC4uLmFkZGl0aW9uYWxTdGF0ZUNoYW5nZXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGdyYWRlUm9vbSA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgTW9kYWwuY3JlYXRlRGlhbG9nKFJvb21VcGdyYWRlRGlhbG9nLCB7IHJvb206IHRoaXMucHJvcHMucm9vbSB9KTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBvbk9sZFJvb21DbGlja2VkID0gKGU6IEJ1dHRvbkV2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICBkaXMuZGlzcGF0Y2g8Vmlld1Jvb21QYXlsb2FkPih7XG4gICAgICAgICAgICBhY3Rpb246IEFjdGlvbi5WaWV3Um9vbSxcbiAgICAgICAgICAgIHJvb21faWQ6IHRoaXMuc3RhdGUub2xkUm9vbUlkLFxuICAgICAgICAgICAgZXZlbnRfaWQ6IHRoaXMuc3RhdGUub2xkRXZlbnRJZCxcbiAgICAgICAgICAgIHZpYV9zZXJ2ZXJzOiB0aGlzLnN0YXRlLm9sZFZpYVNlcnZlcnMsXG4gICAgICAgICAgICBtZXRyaWNzVHJpZ2dlcjogXCJXZWJQcmVkZWNlc3NvclNldHRpbmdzXCIsXG4gICAgICAgICAgICBtZXRyaWNzVmlhS2V5Ym9hcmQ6IGUudHlwZSAhPT0gXCJjbGlja1wiLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5wcm9wcy5jbG9zZVNldHRpbmdzRm4oKTtcbiAgICB9O1xuXG4gICAgcHVibGljIHJlbmRlcigpOiBSZWFjdC5SZWFjdE5vZGUge1xuICAgICAgICBjb25zdCByb29tID0gdGhpcy5wcm9wcy5yb29tO1xuICAgICAgICBjb25zdCBpc1NwYWNlID0gcm9vbS5pc1NwYWNlUm9vbSgpO1xuXG4gICAgICAgIGxldCB1bmZlZGVyYXRhYmxlU2VjdGlvbjogSlNYLkVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChyb29tLmN1cnJlbnRTdGF0ZS5nZXRTdGF0ZUV2ZW50cyhFdmVudFR5cGUuUm9vbUNyZWF0ZSwgXCJcIik/LmdldENvbnRlbnQoKVtcIm0uZmVkZXJhdGVcIl0gPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB1bmZlZGVyYXRhYmxlU2VjdGlvbiA9IDxkaXY+e190KFwicm9vbV9zZXR0aW5nc3xhZHZhbmNlZHx1bmZlZGVyYXRlZFwiKX08L2Rpdj47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcm9vbVVwZ3JhZGVCdXR0b247XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLnVwZ3JhZGVSZWNvbW1lbmRhdGlvbiAmJiB0aGlzLnN0YXRlLnVwZ3JhZGVSZWNvbW1lbmRhdGlvbi5uZWVkc1VwZ3JhZGUgJiYgIXRoaXMuc3RhdGUudXBncmFkZWQpIHtcbiAgICAgICAgICAgIHJvb21VcGdyYWRlQnV0dG9uID0gKFxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm14X1NldHRpbmdzVGFiX3dhcm5pbmdUZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7X3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJyb29tX3NldHRpbmdzfGFkdmFuY2VkfHJvb21fdXBncmFkZV93YXJuaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiOiAoc3ViKSA9PiA8c3Ryb25nPntzdWJ9PC9zdHJvbmc+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOiAoc3ViKSA9PiA8aT57c3VifTwvaT4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc2libGVCdXR0b24gb25DbGljaz17dGhpcy51cGdyYWRlUm9vbX0ga2luZD1cInByaW1hcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc1NwYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfdChcInJvb21fc2V0dGluZ3N8YWR2YW5jZWR8c3BhY2VfdXBncmFkZV9idXR0b25cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF90KFwicm9vbV9zZXR0aW5nc3xhZHZhbmNlZHxyb29tX3VwZ3JhZGVfYnV0dG9uXCIpfVxuICAgICAgICAgICAgICAgICAgICA8L0FjY2Vzc2libGVCdXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG9sZFJvb21MaW5rOiBKU1guRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUub2xkUm9vbUlkKSB7XG4gICAgICAgICAgICBsZXQgY29weTogc3RyaW5nO1xuICAgICAgICAgICAgaWYgKGlzU3BhY2UpIHtcbiAgICAgICAgICAgICAgICBjb3B5ID0gX3QoXCJyb29tX3NldHRpbmdzfGFkdmFuY2VkfHNwYWNlX3ByZWRlY2Vzc29yXCIsIHsgc3BhY2VOYW1lOiByb29tLm5hbWUgPz8gdGhpcy5zdGF0ZS5vbGRSb29tSWQgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvcHkgPSBfdChcInJvb21fc2V0dGluZ3N8YWR2YW5jZWR8cm9vbV9wcmVkZWNlc3NvclwiLCB7IHJvb21OYW1lOiByb29tLm5hbWUgPz8gdGhpcy5zdGF0ZS5vbGRSb29tSWQgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG9sZFJvb21MaW5rID0gKFxuICAgICAgICAgICAgICAgIDxBY2Nlc3NpYmxlQnV0dG9uIGVsZW1lbnQ9XCJhXCIgb25DbGljaz17dGhpcy5vbk9sZFJvb21DbGlja2VkfT5cbiAgICAgICAgICAgICAgICAgICAge2NvcHl9XG4gICAgICAgICAgICAgICAgPC9BY2Nlc3NpYmxlQnV0dG9uPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8U2V0dGluZ3NUYWI+XG4gICAgICAgICAgICAgICAgPFNldHRpbmdzU2VjdGlvbiBoZWFkaW5nPXtfdChcImNvbW1vbnxhZHZhbmNlZFwiKX0+XG4gICAgICAgICAgICAgICAgICAgIDxTZXR0aW5nc1N1YnNlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRpbmc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb20uaXNTcGFjZVJvb20oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF90KFwicm9vbV9zZXR0aW5nc3xhZHZhbmNlZHxpbmZvcm1hdGlvbl9zZWN0aW9uX3NwYWNlXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3QoXCJyb29tX3NldHRpbmdzfGFkdmFuY2VkfGluZm9ybWF0aW9uX3NlY3Rpb25fcm9vbVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPntfdChcInJvb21fc2V0dGluZ3N8YWR2YW5jZWR8cm9vbV9pZFwiKX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPENvcHlhYmxlVGV4dCBnZXRUZXh0VG9Db3B5PXsoKSA9PiB0aGlzLnByb3BzLnJvb20ucm9vbUlkfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMucm9vbS5yb29tSWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Db3B5YWJsZVRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt1bmZlZGVyYXRhYmxlU2VjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgPC9TZXR0aW5nc1N1YnNlY3Rpb24+XG4gICAgICAgICAgICAgICAgICAgIDxTZXR0aW5nc1N1YnNlY3Rpb24gaGVhZGluZz17X3QoXCJyb29tX3NldHRpbmdzfGFkdmFuY2VkfHJvb21fdmVyc2lvbl9zZWN0aW9uXCIpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e190KFwicm9vbV9zZXR0aW5nc3xhZHZhbmNlZHxyb29tX3ZlcnNpb25cIil9PC9zcGFuPiZuYnNwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyb29tLmdldFZlcnNpb24oKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAge29sZFJvb21MaW5rfVxuICAgICAgICAgICAgICAgICAgICAgICAge3Jvb21VcGdyYWRlQnV0dG9ufVxuICAgICAgICAgICAgICAgICAgICA8L1NldHRpbmdzU3Vic2VjdGlvbj5cbiAgICAgICAgICAgICAgICA8L1NldHRpbmdzU2VjdGlvbj5cbiAgICAgICAgICAgIDwvU2V0dGluZ3NUYWI+XG4gICAgICAgICk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLGdCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxpQkFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksa0JB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