matrix-react-sdk
Version:
SDK for matrix.org using React
146 lines (143 loc) • 24.8 kB
JavaScript
"use strict";
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 _SdkConfig = _interopRequireDefault(require("../../../SdkConfig"));
var _LabelledToggleSwitch = _interopRequireDefault(require("../elements/LabelledToggleSwitch"));
var _MatrixClientPeg = require("../../../MatrixClientPeg");
var _Modal = _interopRequireDefault(require("../../../Modal"));
var _BugReportDialog = _interopRequireDefault(require("./BugReportDialog"));
var _BaseDialog = _interopRequireDefault(require("./BaseDialog"));
var _DialogButtons = _interopRequireDefault(require("../elements/DialogButtons"));
var _ProgressBar = _interopRequireDefault(require("../elements/ProgressBar"));
var _AccessibleButton = _interopRequireDefault(require("../elements/AccessibleButton"));
/*
Copyright 2024 New Vector Ltd.
Copyright 2019-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.
*/
class RoomUpgradeWarningDialog extends _react.default.Component {
constructor(props) {
super(props);
(0, _defineProperty2.default)(this, "joinRule", void 0);
(0, _defineProperty2.default)(this, "isInviteOrKnockRoom", void 0);
(0, _defineProperty2.default)(this, "currentVersion", void 0);
(0, _defineProperty2.default)(this, "onProgressCallback", (text, progress, total) => {
this.setState({
progress: {
text,
progress,
total
}
});
});
(0, _defineProperty2.default)(this, "onContinue", async () => {
const opts = {
continue: true,
invite: this.isInviteOrKnockRoom && this.state.inviteUsersToNewRoom
};
await this.props.doUpgrade?.(opts, this.onProgressCallback);
this.props.onFinished(opts);
});
(0, _defineProperty2.default)(this, "onCancel", () => {
this.props.onFinished({
continue: false,
invite: false
});
});
(0, _defineProperty2.default)(this, "onInviteUsersToggle", inviteUsersToNewRoom => {
this.setState({
inviteUsersToNewRoom
});
});
(0, _defineProperty2.default)(this, "openBugReportDialog", e => {
e.preventDefault();
e.stopPropagation();
_Modal.default.createDialog(_BugReportDialog.default, {});
});
const room = _MatrixClientPeg.MatrixClientPeg.safeGet().getRoom(this.props.roomId);
const joinRules = room?.currentState.getStateEvents(_matrix.EventType.RoomJoinRules, "");
this.joinRule = joinRules?.getContent()["join_rule"] ?? _matrix.JoinRule.Invite;
this.isInviteOrKnockRoom = [_matrix.JoinRule.Invite, _matrix.JoinRule.Knock].includes(this.joinRule);
this.currentVersion = room?.getVersion();
this.state = {
inviteUsersToNewRoom: true
};
}
render() {
const brand = _SdkConfig.default.get().brand;
let inviteToggle;
if (this.isInviteOrKnockRoom) {
inviteToggle = /*#__PURE__*/_react.default.createElement(_LabelledToggleSwitch.default, {
value: this.state.inviteUsersToNewRoom,
onChange: this.onInviteUsersToggle,
label: (0, _languageHandler._t)("room_settings|advanced|upgrade_warning_dialog_invite_label")
});
}
let title;
switch (this.joinRule) {
case _matrix.JoinRule.Invite:
title = (0, _languageHandler._t)("room_settings|advanced|upgrade_warning_dialog_title_private");
break;
case _matrix.JoinRule.Public:
title = (0, _languageHandler._t)("room_settings|advanced|upgrade_dwarning_ialog_title_public");
break;
default:
title = (0, _languageHandler._t)("room_settings|advanced|upgrade_warning_dialog_title");
}
let bugReports = /*#__PURE__*/_react.default.createElement("p", null, (0, _languageHandler._t)("room_settings|advanced|upgrade_warning_dialog_report_bug_prompt", {
brand
}));
if (_SdkConfig.default.get().bug_report_endpoint_url) {
bugReports = /*#__PURE__*/_react.default.createElement("p", null, (0, _languageHandler._t)("room_settings|advanced|upgrade_warning_dialog_report_bug_prompt_link", {
brand
}, {
a: sub => {
return /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, {
kind: "link_inline",
onClick: this.openBugReportDialog
}, sub);
}
}));
}
let footer;
if (this.state.progress) {
footer = /*#__PURE__*/_react.default.createElement("span", {
className: "mx_RoomUpgradeWarningDialog_progress"
}, /*#__PURE__*/_react.default.createElement(_ProgressBar.default, {
value: this.state.progress.progress,
max: this.state.progress.total
}), /*#__PURE__*/_react.default.createElement("div", {
className: "mx_RoomUpgradeWarningDialog_progressText"
}, this.state.progress.text));
} else {
footer = /*#__PURE__*/_react.default.createElement(_DialogButtons.default, {
primaryButton: (0, _languageHandler._t)("action|upgrade"),
onPrimaryButtonClick: this.onContinue,
cancelButton: (0, _languageHandler._t)("action|cancel"),
onCancel: this.onCancel
});
}
return /*#__PURE__*/_react.default.createElement(_BaseDialog.default, {
className: "mx_RoomUpgradeWarningDialog",
hasCancel: true,
fixedWidth: false,
onFinished: this.props.onFinished,
title: title
}, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("p", null, this.props.description || (0, _languageHandler._t)("room_settings|advanced|upgrade_warning_dialog_description")), /*#__PURE__*/_react.default.createElement("p", null, (0, _languageHandler._t)("room_settings|advanced|upgrade_warning_dialog_explainer", {}, {
b: sub => /*#__PURE__*/_react.default.createElement("strong", null, sub)
})), bugReports, /*#__PURE__*/_react.default.createElement("p", null, (0, _languageHandler._t)("room_settings|advanced|upgrade_warning_dialog_footer", {}, {
oldVersion: () => /*#__PURE__*/_react.default.createElement("code", null, this.currentVersion),
newVersion: () => /*#__PURE__*/_react.default.createElement("code", null, this.props.targetVersion)
})), inviteToggle), footer);
}
}
exports.default = RoomUpgradeWarningDialog;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9tYXRyaXgiLCJfbGFuZ3VhZ2VIYW5kbGVyIiwiX1Nka0NvbmZpZyIsIl9MYWJlbGxlZFRvZ2dsZVN3aXRjaCIsIl9NYXRyaXhDbGllbnRQZWciLCJfTW9kYWwiLCJfQnVnUmVwb3J0RGlhbG9nIiwiX0Jhc2VEaWFsb2ciLCJfRGlhbG9nQnV0dG9ucyIsIl9Qcm9ncmVzc0JhciIsIl9BY2Nlc3NpYmxlQnV0dG9uIiwiUm9vbVVwZ3JhZGVXYXJuaW5nRGlhbG9nIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmF1bHQiLCJ0ZXh0IiwicHJvZ3Jlc3MiLCJ0b3RhbCIsInNldFN0YXRlIiwib3B0cyIsImNvbnRpbnVlIiwiaW52aXRlIiwiaXNJbnZpdGVPcktub2NrUm9vbSIsInN0YXRlIiwiaW52aXRlVXNlcnNUb05ld1Jvb20iLCJkb1VwZ3JhZGUiLCJvblByb2dyZXNzQ2FsbGJhY2siLCJvbkZpbmlzaGVkIiwiZSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiTW9kYWwiLCJjcmVhdGVEaWFsb2ciLCJCdWdSZXBvcnREaWFsb2ciLCJyb29tIiwiTWF0cml4Q2xpZW50UGVnIiwic2FmZUdldCIsImdldFJvb20iLCJyb29tSWQiLCJqb2luUnVsZXMiLCJjdXJyZW50U3RhdGUiLCJnZXRTdGF0ZUV2ZW50cyIsIkV2ZW50VHlwZSIsIlJvb21Kb2luUnVsZXMiLCJqb2luUnVsZSIsImdldENvbnRlbnQiLCJKb2luUnVsZSIsIkludml0ZSIsIktub2NrIiwiaW5jbHVkZXMiLCJjdXJyZW50VmVyc2lvbiIsImdldFZlcnNpb24iLCJyZW5kZXIiLCJicmFuZCIsIlNka0NvbmZpZyIsImdldCIsImludml0ZVRvZ2dsZSIsImNyZWF0ZUVsZW1lbnQiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwib25JbnZpdGVVc2Vyc1RvZ2dsZSIsImxhYmVsIiwiX3QiLCJ0aXRsZSIsIlB1YmxpYyIsImJ1Z1JlcG9ydHMiLCJidWdfcmVwb3J0X2VuZHBvaW50X3VybCIsImEiLCJzdWIiLCJraW5kIiwib25DbGljayIsIm9wZW5CdWdSZXBvcnREaWFsb2ciLCJmb290ZXIiLCJjbGFzc05hbWUiLCJtYXgiLCJwcmltYXJ5QnV0dG9uIiwib25QcmltYXJ5QnV0dG9uQ2xpY2siLCJvbkNvbnRpbnVlIiwiY2FuY2VsQnV0dG9uIiwib25DYW5jZWwiLCJoYXNDYW5jZWwiLCJmaXhlZFdpZHRoIiwiZGVzY3JpcHRpb24iLCJiIiwib2xkVmVyc2lvbiIsIm5ld1ZlcnNpb24iLCJ0YXJnZXRWZXJzaW9uIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL2RpYWxvZ3MvUm9vbVVwZ3JhZGVXYXJuaW5nRGlhbG9nLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAxOS0yMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUsIFN5bnRoZXRpY0V2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBFdmVudFR5cGUsIEpvaW5SdWxlIH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL21hdHJpeFwiO1xuXG5pbXBvcnQgeyBfdCB9IGZyb20gXCIuLi8uLi8uLi9sYW5ndWFnZUhhbmRsZXJcIjtcbmltcG9ydCBTZGtDb25maWcgZnJvbSBcIi4uLy4uLy4uL1Nka0NvbmZpZ1wiO1xuaW1wb3J0IExhYmVsbGVkVG9nZ2xlU3dpdGNoIGZyb20gXCIuLi9lbGVtZW50cy9MYWJlbGxlZFRvZ2dsZVN3aXRjaFwiO1xuaW1wb3J0IHsgTWF0cml4Q2xpZW50UGVnIH0gZnJvbSBcIi4uLy4uLy4uL01hdHJpeENsaWVudFBlZ1wiO1xuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi8uLi9Nb2RhbFwiO1xuaW1wb3J0IEJ1Z1JlcG9ydERpYWxvZyBmcm9tIFwiLi9CdWdSZXBvcnREaWFsb2dcIjtcbmltcG9ydCBCYXNlRGlhbG9nIGZyb20gXCIuL0Jhc2VEaWFsb2dcIjtcbmltcG9ydCBEaWFsb2dCdXR0b25zIGZyb20gXCIuLi9lbGVtZW50cy9EaWFsb2dCdXR0b25zXCI7XG5pbXBvcnQgUHJvZ3Jlc3NCYXIgZnJvbSBcIi4uL2VsZW1lbnRzL1Byb2dyZXNzQmFyXCI7XG5pbXBvcnQgQWNjZXNzaWJsZUJ1dHRvbiBmcm9tIFwiLi4vZWxlbWVudHMvQWNjZXNzaWJsZUJ1dHRvblwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElGaW5pc2hlZE9wdHMge1xuICAgIGNvbnRpbnVlOiBib29sZWFuO1xuICAgIGludml0ZTogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIElQcm9wcyB7XG4gICAgcm9vbUlkOiBzdHJpbmc7XG4gICAgdGFyZ2V0VmVyc2lvbjogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogUmVhY3ROb2RlO1xuICAgIGRvVXBncmFkZT8ob3B0czogSUZpbmlzaGVkT3B0cywgZm46IChwcm9ncmVzc1RleHQ6IHN0cmluZywgcHJvZ3Jlc3M6IG51bWJlciwgdG90YWw6IG51bWJlcikgPT4gdm9pZCk6IFByb21pc2U8dm9pZD47XG4gICAgb25GaW5pc2hlZChvcHRzPzogSUZpbmlzaGVkT3B0cyk6IHZvaWQ7XG59XG5cbmludGVyZmFjZSBQcm9ncmVzcyB7XG4gICAgdGV4dDogc3RyaW5nO1xuICAgIHByb2dyZXNzOiBudW1iZXI7XG4gICAgdG90YWw6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIElTdGF0ZSB7XG4gICAgaW52aXRlVXNlcnNUb05ld1Jvb206IGJvb2xlYW47XG4gICAgcHJvZ3Jlc3M/OiBQcm9ncmVzcztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm9vbVVwZ3JhZGVXYXJuaW5nRGlhbG9nIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PElQcm9wcywgSVN0YXRlPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBqb2luUnVsZTogSm9pblJ1bGU7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpc0ludml0ZU9yS25vY2tSb29tOiBib29sZWFuO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY3VycmVudFZlcnNpb24/OiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJvcHM6IElQcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG5cbiAgICAgICAgY29uc3Qgcm9vbSA9IE1hdHJpeENsaWVudFBlZy5zYWZlR2V0KCkuZ2V0Um9vbSh0aGlzLnByb3BzLnJvb21JZCk7XG4gICAgICAgIGNvbnN0IGpvaW5SdWxlcyA9IHJvb20/LmN1cnJlbnRTdGF0ZS5nZXRTdGF0ZUV2ZW50cyhFdmVudFR5cGUuUm9vbUpvaW5SdWxlcywgXCJcIik7XG4gICAgICAgIHRoaXMuam9pblJ1bGUgPSBqb2luUnVsZXM/LmdldENvbnRlbnQoKVtcImpvaW5fcnVsZVwiXSA/PyBKb2luUnVsZS5JbnZpdGU7XG4gICAgICAgIHRoaXMuaXNJbnZpdGVPcktub2NrUm9vbSA9IFtKb2luUnVsZS5JbnZpdGUsIEpvaW5SdWxlLktub2NrXS5pbmNsdWRlcyh0aGlzLmpvaW5SdWxlKTtcbiAgICAgICAgdGhpcy5jdXJyZW50VmVyc2lvbiA9IHJvb20/LmdldFZlcnNpb24oKTtcblxuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgaW52aXRlVXNlcnNUb05ld1Jvb206IHRydWUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblByb2dyZXNzQ2FsbGJhY2sgPSAodGV4dDogc3RyaW5nLCBwcm9ncmVzczogbnVtYmVyLCB0b3RhbDogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgcHJvZ3Jlc3M6IHtcbiAgICAgICAgICAgICAgICB0ZXh0LFxuICAgICAgICAgICAgICAgIHByb2dyZXNzLFxuICAgICAgICAgICAgICAgIHRvdGFsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgb25Db250aW51ZSA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgY29uc3Qgb3B0cyA9IHtcbiAgICAgICAgICAgIGNvbnRpbnVlOiB0cnVlLFxuICAgICAgICAgICAgaW52aXRlOiB0aGlzLmlzSW52aXRlT3JLbm9ja1Jvb20gJiYgdGhpcy5zdGF0ZS5pbnZpdGVVc2Vyc1RvTmV3Um9vbSxcbiAgICAgICAgfTtcblxuICAgICAgICBhd2FpdCB0aGlzLnByb3BzLmRvVXBncmFkZT8uKG9wdHMsIHRoaXMub25Qcm9ncmVzc0NhbGxiYWNrKTtcbiAgICAgICAgdGhpcy5wcm9wcy5vbkZpbmlzaGVkKG9wdHMpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIG9uQ2FuY2VsID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLnByb3BzLm9uRmluaXNoZWQoeyBjb250aW51ZTogZmFsc2UsIGludml0ZTogZmFsc2UgfSk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgb25JbnZpdGVVc2Vyc1RvZ2dsZSA9IChpbnZpdGVVc2Vyc1RvTmV3Um9vbTogYm9vbGVhbik6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgaW52aXRlVXNlcnNUb05ld1Jvb20gfSk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgb3BlbkJ1Z1JlcG9ydERpYWxvZyA9IChlOiBTeW50aGV0aWNFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgTW9kYWwuY3JlYXRlRGlhbG9nKEJ1Z1JlcG9ydERpYWxvZywge30pO1xuICAgIH07XG5cbiAgICBwdWJsaWMgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gICAgICAgIGNvbnN0IGJyYW5kID0gU2RrQ29uZmlnLmdldCgpLmJyYW5kO1xuXG4gICAgICAgIGxldCBpbnZpdGVUb2dnbGU6IEpTWC5FbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAodGhpcy5pc0ludml0ZU9yS25vY2tSb29tKSB7XG4gICAgICAgICAgICBpbnZpdGVUb2dnbGUgPSAoXG4gICAgICAgICAgICAgICAgPExhYmVsbGVkVG9nZ2xlU3dpdGNoXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLmludml0ZVVzZXJzVG9OZXdSb29tfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5vbkludml0ZVVzZXJzVG9nZ2xlfVxuICAgICAgICAgICAgICAgICAgICBsYWJlbD17X3QoXCJyb29tX3NldHRpbmdzfGFkdmFuY2VkfHVwZ3JhZGVfd2FybmluZ19kaWFsb2dfaW52aXRlX2xhYmVsXCIpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHRpdGxlOiBzdHJpbmc7XG4gICAgICAgIHN3aXRjaCAodGhpcy5qb2luUnVsZSkge1xuICAgICAgICAgICAgY2FzZSBKb2luUnVsZS5JbnZpdGU6XG4gICAgICAgICAgICAgICAgdGl0bGUgPSBfdChcInJvb21fc2V0dGluZ3N8YWR2YW5jZWR8dXBncmFkZV93YXJuaW5nX2RpYWxvZ190aXRsZV9wcml2YXRlXCIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBKb2luUnVsZS5QdWJsaWM6XG4gICAgICAgICAgICAgICAgdGl0bGUgPSBfdChcInJvb21fc2V0dGluZ3N8YWR2YW5jZWR8dXBncmFkZV9kd2FybmluZ19pYWxvZ190aXRsZV9wdWJsaWNcIik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRpdGxlID0gX3QoXCJyb29tX3NldHRpbmdzfGFkdmFuY2VkfHVwZ3JhZGVfd2FybmluZ19kaWFsb2dfdGl0bGVcIik7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYnVnUmVwb3J0cyA9IDxwPntfdChcInJvb21fc2V0dGluZ3N8YWR2YW5jZWR8dXBncmFkZV93YXJuaW5nX2RpYWxvZ19yZXBvcnRfYnVnX3Byb21wdFwiLCB7IGJyYW5kIH0pfTwvcD47XG4gICAgICAgIGlmIChTZGtDb25maWcuZ2V0KCkuYnVnX3JlcG9ydF9lbmRwb2ludF91cmwpIHtcbiAgICAgICAgICAgIGJ1Z1JlcG9ydHMgPSAoXG4gICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgIHtfdChcbiAgICAgICAgICAgICAgICAgICAgICAgIFwicm9vbV9zZXR0aW5nc3xhZHZhbmNlZHx1cGdyYWRlX3dhcm5pbmdfZGlhbG9nX3JlcG9ydF9idWdfcHJvbXB0X2xpbmtcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFuZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogKHN1YikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc2libGVCdXR0b24ga2luZD1cImxpbmtfaW5saW5lXCIgb25DbGljaz17dGhpcy5vcGVuQnVnUmVwb3J0RGlhbG9nfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3VifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BY2Nlc3NpYmxlQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZm9vdGVyOiBKU1guRWxlbWVudDtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUucHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgIGZvb3RlciA9IChcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJteF9Sb29tVXBncmFkZVdhcm5pbmdEaWFsb2dfcHJvZ3Jlc3NcIj5cbiAgICAgICAgICAgICAgICAgICAgPFByb2dyZXNzQmFyIHZhbHVlPXt0aGlzLnN0YXRlLnByb2dyZXNzLnByb2dyZXNzfSBtYXg9e3RoaXMuc3RhdGUucHJvZ3Jlc3MudG90YWx9IC8+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfUm9vbVVwZ3JhZGVXYXJuaW5nRGlhbG9nX3Byb2dyZXNzVGV4dFwiPnt0aGlzLnN0YXRlLnByb2dyZXNzLnRleHR9PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvb3RlciA9IChcbiAgICAgICAgICAgICAgICA8RGlhbG9nQnV0dG9uc1xuICAgICAgICAgICAgICAgICAgICBwcmltYXJ5QnV0dG9uPXtfdChcImFjdGlvbnx1cGdyYWRlXCIpfVxuICAgICAgICAgICAgICAgICAgICBvblByaW1hcnlCdXR0b25DbGljaz17dGhpcy5vbkNvbnRpbnVlfVxuICAgICAgICAgICAgICAgICAgICBjYW5jZWxCdXR0b249e190KFwiYWN0aW9ufGNhbmNlbFwiKX1cbiAgICAgICAgICAgICAgICAgICAgb25DYW5jZWw9e3RoaXMub25DYW5jZWx9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEJhc2VEaWFsb2dcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteF9Sb29tVXBncmFkZVdhcm5pbmdEaWFsb2dcIlxuICAgICAgICAgICAgICAgIGhhc0NhbmNlbD17dHJ1ZX1cbiAgICAgICAgICAgICAgICBmaXhlZFdpZHRoPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBvbkZpbmlzaGVkPXt0aGlzLnByb3BzLm9uRmluaXNoZWR9XG4gICAgICAgICAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxwPnt0aGlzLnByb3BzLmRlc2NyaXB0aW9uIHx8IF90KFwicm9vbV9zZXR0aW5nc3xhZHZhbmNlZHx1cGdyYWRlX3dhcm5pbmdfZGlhbG9nX2Rlc2NyaXB0aW9uXCIpfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7X3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJyb29tX3NldHRpbmdzfGFkdmFuY2VkfHVwZ3JhZGVfd2FybmluZ19kaWFsb2dfZXhwbGFpbmVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiOiAoc3ViKSA9PiA8c3Ryb25nPntzdWJ9PC9zdHJvbmc+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIHtidWdSZXBvcnRzfVxuICAgICAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtfdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInJvb21fc2V0dGluZ3N8YWR2YW5jZWR8dXBncmFkZV93YXJuaW5nX2RpYWxvZ19mb290ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZFZlcnNpb246ICgpID0+IDxjb2RlPnt0aGlzLmN1cnJlbnRWZXJzaW9ufTwvY29kZT4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZlcnNpb246ICgpID0+IDxjb2RlPnt0aGlzLnByb3BzLnRhcmdldFZlcnNpb259PC9jb2RlPixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICB7aW52aXRlVG9nZ2xlfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIHtmb290ZXJ9XG4gICAgICAgICAgICA8L0Jhc2VEaWFsb2c+XG4gICAgICAgICk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLGdCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxVQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxxQkFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssZ0JBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLE1BQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFPLGdCQUFBLEdBQUFSLHNCQUFBLENBQUFDLE9B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