matrix-react-sdk
Version:
SDK for matrix.org using React
155 lines (152 loc) • 24.7 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 _logger = require("matrix-js-sdk/src/logger");
var _matrix = require("matrix-js-sdk/src/matrix");
var Email = _interopRequireWildcard(require("../../../email"));
var _AddThreepid = _interopRequireDefault(require("../../../AddThreepid"));
var _languageHandler = require("../../../languageHandler");
var _Modal = _interopRequireDefault(require("../../../Modal"));
var _Spinner = _interopRequireDefault(require("../elements/Spinner"));
var _ErrorDialog = _interopRequireWildcard(require("./ErrorDialog"));
var _QuestionDialog = _interopRequireDefault(require("./QuestionDialog"));
var _BaseDialog = _interopRequireDefault(require("./BaseDialog"));
var _EditableText = _interopRequireDefault(require("../elements/EditableText"));
var _MatrixClientPeg = require("../../../MatrixClientPeg");
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 2018-2024 New Vector Ltd.
Copyright 2017 Vector Creations Ltd
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/
/*
* Prompt the user to set an email address.
*
* On success, `onFinished(true)` is called.
*/
class SetEmailDialog extends _react.default.Component {
constructor(props) {
super(props);
(0, _defineProperty2.default)(this, "addThreepid", void 0);
(0, _defineProperty2.default)(this, "onEmailAddressChanged", value => {
this.setState({
emailAddress: value
});
});
(0, _defineProperty2.default)(this, "onSubmit", () => {
const emailAddress = this.state.emailAddress;
if (!Email.looksValid(emailAddress)) {
_Modal.default.createDialog(_ErrorDialog.default, {
title: (0, _languageHandler._t)("settings|general|error_invalid_email"),
description: (0, _languageHandler._t)("settings|general|error_invalid_email_detail")
});
return;
}
this.addThreepid = new _AddThreepid.default(_MatrixClientPeg.MatrixClientPeg.safeGet());
this.addThreepid.addEmailAddress(emailAddress).then(() => {
_Modal.default.createDialog(_QuestionDialog.default, {
title: (0, _languageHandler._t)("auth|set_email|verification_pending_title"),
description: (0, _languageHandler._t)("auth|set_email|verification_pending_description"),
button: (0, _languageHandler._t)("action|continue"),
onFinished: this.onEmailDialogFinished
});
}, err => {
this.setState({
emailBusy: false
});
_logger.logger.error("Unable to add email address " + emailAddress + " " + err);
_Modal.default.createDialog(_ErrorDialog.default, {
title: (0, _languageHandler._t)("settings|general|error_add_email"),
description: (0, _ErrorDialog.extractErrorMessageFromError)(err, (0, _languageHandler._t)("invite|failed_generic"))
});
});
this.setState({
emailBusy: true
});
});
(0, _defineProperty2.default)(this, "onCancelled", () => {
this.props.onFinished(false);
});
(0, _defineProperty2.default)(this, "onEmailDialogFinished", ok => {
if (ok) {
this.verifyEmailAddress();
} else {
this.setState({
emailBusy: false
});
}
});
this.state = {
emailAddress: "",
emailBusy: false
};
}
verifyEmailAddress() {
this.addThreepid?.checkEmailLinkClicked().then(() => {
this.props.onFinished(true);
}, err => {
this.setState({
emailBusy: false
});
let underlyingError = err;
if (err instanceof _languageHandler.UserFriendlyError) {
underlyingError = err.cause;
}
if (underlyingError instanceof _matrix.MatrixError && underlyingError.errcode === "M_THREEPID_AUTH_FAILED") {
const message = (0, _languageHandler._t)("settings|general|error_email_verification") + " " + (0, _languageHandler._t)("auth|set_email|verification_pending_description");
_Modal.default.createDialog(_QuestionDialog.default, {
title: (0, _languageHandler._t)("auth|set_email|verification_pending_title"),
description: message,
button: (0, _languageHandler._t)("action|continue"),
onFinished: this.onEmailDialogFinished
});
} else {
_logger.logger.error("Unable to verify email address: " + err);
_Modal.default.createDialog(_ErrorDialog.default, {
title: (0, _languageHandler._t)("settings|general|error_email_verification"),
description: (0, _ErrorDialog.extractErrorMessageFromError)(err, (0, _languageHandler._t)("invite|failed_generic"))
});
}
});
}
render() {
const emailInput = this.state.emailBusy ? /*#__PURE__*/_react.default.createElement(_Spinner.default, null) : /*#__PURE__*/_react.default.createElement(_EditableText.default, {
initialValue: this.state.emailAddress,
className: "mx_SetEmailDialog_email_input",
placeholder: (0, _languageHandler._t)("common|email_address"),
placeholderClassName: "mx_SetEmailDialog_email_input_placeholder",
blurToCancel: false,
onValueChanged: this.onEmailAddressChanged
});
return /*#__PURE__*/_react.default.createElement(_BaseDialog.default, {
className: "mx_SetEmailDialog",
onFinished: this.onCancelled,
title: this.props.title,
contentId: "mx_Dialog_content"
}, /*#__PURE__*/_react.default.createElement("div", {
className: "mx_Dialog_content"
}, /*#__PURE__*/_react.default.createElement("p", {
id: "mx_Dialog_content"
}, (0, _languageHandler._t)("auth|set_email|description")), emailInput), /*#__PURE__*/_react.default.createElement("div", {
className: "mx_Dialog_buttons"
}, /*#__PURE__*/_react.default.createElement("input", {
className: "mx_Dialog_primary",
type: "submit",
value: (0, _languageHandler._t)("action|continue"),
onClick: this.onSubmit
}), /*#__PURE__*/_react.default.createElement("input", {
type: "submit",
value: (0, _languageHandler._t)("action|skip"),
onClick: this.onCancelled
})));
}
}
exports.default = SetEmailDialog;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2dnZXIiLCJfbWF0cml4IiwiRW1haWwiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9BZGRUaHJlZXBpZCIsIl9sYW5ndWFnZUhhbmRsZXIiLCJfTW9kYWwiLCJfU3Bpbm5lciIsIl9FcnJvckRpYWxvZyIsIl9RdWVzdGlvbkRpYWxvZyIsIl9CYXNlRGlhbG9nIiwiX0VkaXRhYmxlVGV4dCIsIl9NYXRyaXhDbGllbnRQZWciLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJTZXRFbWFpbERpYWxvZyIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJ2YWx1ZSIsInNldFN0YXRlIiwiZW1haWxBZGRyZXNzIiwic3RhdGUiLCJsb29rc1ZhbGlkIiwiTW9kYWwiLCJjcmVhdGVEaWFsb2ciLCJFcnJvckRpYWxvZyIsInRpdGxlIiwiX3QiLCJkZXNjcmlwdGlvbiIsImFkZFRocmVlcGlkIiwiQWRkVGhyZWVwaWQiLCJNYXRyaXhDbGllbnRQZWciLCJzYWZlR2V0IiwiYWRkRW1haWxBZGRyZXNzIiwidGhlbiIsIlF1ZXN0aW9uRGlhbG9nIiwiYnV0dG9uIiwib25GaW5pc2hlZCIsIm9uRW1haWxEaWFsb2dGaW5pc2hlZCIsImVyciIsImVtYWlsQnVzeSIsImxvZ2dlciIsImVycm9yIiwiZXh0cmFjdEVycm9yTWVzc2FnZUZyb21FcnJvciIsIm9rIiwidmVyaWZ5RW1haWxBZGRyZXNzIiwiY2hlY2tFbWFpbExpbmtDbGlja2VkIiwidW5kZXJseWluZ0Vycm9yIiwiVXNlckZyaWVuZGx5RXJyb3IiLCJjYXVzZSIsIk1hdHJpeEVycm9yIiwiZXJyY29kZSIsIm1lc3NhZ2UiLCJyZW5kZXIiLCJlbWFpbElucHV0IiwiY3JlYXRlRWxlbWVudCIsImluaXRpYWxWYWx1ZSIsImNsYXNzTmFtZSIsInBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXJDbGFzc05hbWUiLCJibHVyVG9DYW5jZWwiLCJvblZhbHVlQ2hhbmdlZCIsIm9uRW1haWxBZGRyZXNzQ2hhbmdlZCIsIm9uQ2FuY2VsbGVkIiwiY29udGVudElkIiwiaWQiLCJ0eXBlIiwib25DbGljayIsIm9uU3VibWl0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL2RpYWxvZ3MvU2V0RW1haWxEaWFsb2cudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAxOC0yMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMTcgVmVjdG9yIENyZWF0aW9ucyBMdGRcblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL2xvZ2dlclwiO1xuaW1wb3J0IHsgTWF0cml4RXJyb3IgfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvbWF0cml4XCI7XG5cbmltcG9ydCAqIGFzIEVtYWlsIGZyb20gXCIuLi8uLi8uLi9lbWFpbFwiO1xuaW1wb3J0IEFkZFRocmVlcGlkIGZyb20gXCIuLi8uLi8uLi9BZGRUaHJlZXBpZFwiO1xuaW1wb3J0IHsgX3QsIFVzZXJGcmllbmRseUVycm9yIH0gZnJvbSBcIi4uLy4uLy4uL2xhbmd1YWdlSGFuZGxlclwiO1xuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi8uLi9Nb2RhbFwiO1xuaW1wb3J0IFNwaW5uZXIgZnJvbSBcIi4uL2VsZW1lbnRzL1NwaW5uZXJcIjtcbmltcG9ydCBFcnJvckRpYWxvZywgeyBleHRyYWN0RXJyb3JNZXNzYWdlRnJvbUVycm9yIH0gZnJvbSBcIi4vRXJyb3JEaWFsb2dcIjtcbmltcG9ydCBRdWVzdGlvbkRpYWxvZyBmcm9tIFwiLi9RdWVzdGlvbkRpYWxvZ1wiO1xuaW1wb3J0IEJhc2VEaWFsb2cgZnJvbSBcIi4vQmFzZURpYWxvZ1wiO1xuaW1wb3J0IEVkaXRhYmxlVGV4dCBmcm9tIFwiLi4vZWxlbWVudHMvRWRpdGFibGVUZXh0XCI7XG5pbXBvcnQgeyBNYXRyaXhDbGllbnRQZWcgfSBmcm9tIFwiLi4vLi4vLi4vTWF0cml4Q2xpZW50UGVnXCI7XG5cbmludGVyZmFjZSBJUHJvcHMge1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgb25GaW5pc2hlZChvaz86IGJvb2xlYW4pOiB2b2lkO1xufVxuXG5pbnRlcmZhY2UgSVN0YXRlIHtcbiAgICBlbWFpbEFkZHJlc3M6IHN0cmluZztcbiAgICBlbWFpbEJ1c3k6IGJvb2xlYW47XG59XG5cbi8qXG4gKiBQcm9tcHQgdGhlIHVzZXIgdG8gc2V0IGFuIGVtYWlsIGFkZHJlc3MuXG4gKlxuICogT24gc3VjY2VzcywgYG9uRmluaXNoZWQodHJ1ZSlgIGlzIGNhbGxlZC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2V0RW1haWxEaWFsb2cgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SVByb3BzLCBJU3RhdGU+IHtcbiAgICBwcml2YXRlIGFkZFRocmVlcGlkPzogQWRkVGhyZWVwaWQ7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJvcHM6IElQcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIGVtYWlsQWRkcmVzczogXCJcIixcbiAgICAgICAgICAgIGVtYWlsQnVzeTogZmFsc2UsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkVtYWlsQWRkcmVzc0NoYW5nZWQgPSAodmFsdWU6IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIGVtYWlsQWRkcmVzczogdmFsdWUsXG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBwcml2YXRlIG9uU3VibWl0ID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICBjb25zdCBlbWFpbEFkZHJlc3MgPSB0aGlzLnN0YXRlLmVtYWlsQWRkcmVzcztcbiAgICAgICAgaWYgKCFFbWFpbC5sb29rc1ZhbGlkKGVtYWlsQWRkcmVzcykpIHtcbiAgICAgICAgICAgIE1vZGFsLmNyZWF0ZURpYWxvZyhFcnJvckRpYWxvZywge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBfdChcInNldHRpbmdzfGdlbmVyYWx8ZXJyb3JfaW52YWxpZF9lbWFpbFwiKSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogX3QoXCJzZXR0aW5nc3xnZW5lcmFsfGVycm9yX2ludmFsaWRfZW1haWxfZGV0YWlsXCIpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZGRUaHJlZXBpZCA9IG5ldyBBZGRUaHJlZXBpZChNYXRyaXhDbGllbnRQZWcuc2FmZUdldCgpKTtcbiAgICAgICAgdGhpcy5hZGRUaHJlZXBpZC5hZGRFbWFpbEFkZHJlc3MoZW1haWxBZGRyZXNzKS50aGVuKFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIE1vZGFsLmNyZWF0ZURpYWxvZyhRdWVzdGlvbkRpYWxvZywge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogX3QoXCJhdXRofHNldF9lbWFpbHx2ZXJpZmljYXRpb25fcGVuZGluZ190aXRsZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IF90KFwiYXV0aHxzZXRfZW1haWx8dmVyaWZpY2F0aW9uX3BlbmRpbmdfZGVzY3JpcHRpb25cIiksXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogX3QoXCJhY3Rpb258Y29udGludWVcIiksXG4gICAgICAgICAgICAgICAgICAgIG9uRmluaXNoZWQ6IHRoaXMub25FbWFpbERpYWxvZ0ZpbmlzaGVkLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZW1haWxCdXN5OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoXCJVbmFibGUgdG8gYWRkIGVtYWlsIGFkZHJlc3MgXCIgKyBlbWFpbEFkZHJlc3MgKyBcIiBcIiArIGVycik7XG4gICAgICAgICAgICAgICAgTW9kYWwuY3JlYXRlRGlhbG9nKEVycm9yRGlhbG9nLCB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBfdChcInNldHRpbmdzfGdlbmVyYWx8ZXJyb3JfYWRkX2VtYWlsXCIpLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZXh0cmFjdEVycm9yTWVzc2FnZUZyb21FcnJvcihlcnIsIF90KFwiaW52aXRlfGZhaWxlZF9nZW5lcmljXCIpKSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBlbWFpbEJ1c3k6IHRydWUgfSk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgb25DYW5jZWxsZWQgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMucHJvcHMub25GaW5pc2hlZChmYWxzZSk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgb25FbWFpbERpYWxvZ0ZpbmlzaGVkID0gKG9rOiBib29sZWFuKTogdm9pZCA9PiB7XG4gICAgICAgIGlmIChvaykge1xuICAgICAgICAgICAgdGhpcy52ZXJpZnlFbWFpbEFkZHJlc3MoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBlbWFpbEJ1c3k6IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHByaXZhdGUgdmVyaWZ5RW1haWxBZGRyZXNzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFkZFRocmVlcGlkPy5jaGVja0VtYWlsTGlua0NsaWNrZWQoKS50aGVuKFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25GaW5pc2hlZCh0cnVlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGVtYWlsQnVzeTogZmFsc2UgfSk7XG5cbiAgICAgICAgICAgICAgICBsZXQgdW5kZXJseWluZ0Vycm9yID0gZXJyO1xuICAgICAgICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBVc2VyRnJpZW5kbHlFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB1bmRlcmx5aW5nRXJyb3IgPSBlcnIuY2F1c2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHVuZGVybHlpbmdFcnJvciBpbnN0YW5jZW9mIE1hdHJpeEVycm9yICYmIHVuZGVybHlpbmdFcnJvci5lcnJjb2RlID09PSBcIk1fVEhSRUVQSURfQVVUSF9GQUlMRURcIikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIF90KFwic2V0dGluZ3N8Z2VuZXJhbHxlcnJvcl9lbWFpbF92ZXJpZmljYXRpb25cIikgK1xuICAgICAgICAgICAgICAgICAgICAgICAgXCIgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgX3QoXCJhdXRofHNldF9lbWFpbHx2ZXJpZmljYXRpb25fcGVuZGluZ19kZXNjcmlwdGlvblwiKTtcbiAgICAgICAgICAgICAgICAgICAgTW9kYWwuY3JlYXRlRGlhbG9nKFF1ZXN0aW9uRGlhbG9nLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogX3QoXCJhdXRofHNldF9lbWFpbHx2ZXJpZmljYXRpb25fcGVuZGluZ190aXRsZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBtZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBfdChcImFjdGlvbnxjb250aW51ZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uRmluaXNoZWQ6IHRoaXMub25FbWFpbERpYWxvZ0ZpbmlzaGVkLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoXCJVbmFibGUgdG8gdmVyaWZ5IGVtYWlsIGFkZHJlc3M6IFwiICsgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgTW9kYWwuY3JlYXRlRGlhbG9nKEVycm9yRGlhbG9nLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogX3QoXCJzZXR0aW5nc3xnZW5lcmFsfGVycm9yX2VtYWlsX3ZlcmlmaWNhdGlvblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBleHRyYWN0RXJyb3JNZXNzYWdlRnJvbUVycm9yKGVyciwgX3QoXCJpbnZpdGV8ZmFpbGVkX2dlbmVyaWNcIikpLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW5kZXIoKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgICAgICAgY29uc3QgZW1haWxJbnB1dCA9IHRoaXMuc3RhdGUuZW1haWxCdXN5ID8gKFxuICAgICAgICAgICAgPFNwaW5uZXIgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxFZGl0YWJsZVRleHRcbiAgICAgICAgICAgICAgICBpbml0aWFsVmFsdWU9e3RoaXMuc3RhdGUuZW1haWxBZGRyZXNzfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm14X1NldEVtYWlsRGlhbG9nX2VtYWlsX2lucHV0XCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17X3QoXCJjb21tb258ZW1haWxfYWRkcmVzc1wiKX1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlckNsYXNzTmFtZT1cIm14X1NldEVtYWlsRGlhbG9nX2VtYWlsX2lucHV0X3BsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICBibHVyVG9DYW5jZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIG9uVmFsdWVDaGFuZ2VkPXt0aGlzLm9uRW1haWxBZGRyZXNzQ2hhbmdlZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxCYXNlRGlhbG9nXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXhfU2V0RW1haWxEaWFsb2dcIlxuICAgICAgICAgICAgICAgIG9uRmluaXNoZWQ9e3RoaXMub25DYW5jZWxsZWR9XG4gICAgICAgICAgICAgICAgdGl0bGU9e3RoaXMucHJvcHMudGl0bGV9XG4gICAgICAgICAgICAgICAgY29udGVudElkPVwibXhfRGlhbG9nX2NvbnRlbnRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfRGlhbG9nX2NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgaWQ9XCJteF9EaWFsb2dfY29udGVudFwiPntfdChcImF1dGh8c2V0X2VtYWlsfGRlc2NyaXB0aW9uXCIpfTwvcD5cbiAgICAgICAgICAgICAgICAgICAge2VtYWlsSW5wdXR9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteF9EaWFsb2dfYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm14X0RpYWxvZ19wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e190KFwiYWN0aW9ufGNvbnRpbnVlXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5vblN1Ym1pdH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT17X3QoXCJhY3Rpb258c2tpcFwiKX0gb25DbGljaz17dGhpcy5vbkNhbmNlbGxlZH0gLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvQmFzZURpYWxvZz5cbiAgICAgICAgKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBUUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBRUEsSUFBQUcsS0FBQSxHQUFBQyx1QkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQUssWUFBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sZ0JBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLE1BQUEsR0FBQVIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFRLFFBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFTLFlBQUEsR0FBQUwsdUJBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFVLGVBQUEsR0FBQVgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFXLFdBQUEsR0FBQVosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFZLGFBQUEsR0FBQWIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFhLGdCQUFBLEdBQUFiLE9BQUE7QUFBMkQsU0FBQWMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQVgsd0JBQUFXLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSx1QkFBQUEsQ0FBQSx5QkFBQUEsQ0FBQSxXQUFBSyxPQUFBLEVBQUFMLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxDQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBYyxDQUFBLFNBQUFHLENBQUEsR0FBQVAsQ0FBQSxHQUFBQyxNQUFBLENBQUFFLHdCQUFBLENBQUFiLENBQUEsRUFBQWMsQ0FBQSxVQUFBRyxDQUFBLEtBQUFBLENBQUEsQ0FBQVYsR0FBQSxJQUFBVSxDQUFBLENBQUFDLEdBQUEsSUFBQVAsTUFBQSxDQUFBQyxjQUFBLENBQUFKLENBQUEsRUFBQU0sQ0FBQSxFQUFBRyxDQUFBLElBQUFULENBQUEsQ0FBQU0sQ0FBQSxJQUFBZCxDQUFBLENBQUFjLENBQUEsWUFBQU4sQ0FBQSxDQUFBSCxPQUFBLEdBQUFMLENBQUEsRUFBQUcsQ0FBQSxJQUFBQSxDQUFBLENBQUFlLEdBQUEsQ0FBQWxCLENBQUEsRUFBQVEsQ0FBQSxHQUFBQSxDQUFBO0FBckIzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUEyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLE1BQU1XLGNBQWMsU0FBU0MsY0FBSyxDQUFDQyxTQUFTLENBQWlCO0VBR2pFQyxXQUFXQSxDQUFDQyxLQUFhLEVBQUU7SUFDOUIsS0FBSyxDQUFDQSxLQUFLLENBQUM7SUFBQyxJQUFBQyxnQkFBQSxDQUFBbkIsT0FBQTtJQUFBLElBQUFtQixnQkFBQSxDQUFBbkIsT0FBQSxpQ0FRZ0JvQixLQUFhLElBQVc7TUFDckQsSUFBSSxDQUFDQyxRQUFRLENBQUM7UUFDVkMsWUFBWSxFQUFFRjtNQUNsQixDQUFDLENBQUM7SUFDTixDQUFDO0lBQUEsSUFBQUQsZ0JBQUEsQ0FBQW5CLE9BQUEsb0JBRWtCLE1BQVk7TUFDM0IsTUFBTXNCLFlBQVksR0FBRyxJQUFJLENBQUNDLEtBQUssQ0FBQ0QsWUFBWTtNQUM1QyxJQUFJLENBQUN2QyxLQUFLLENBQUN5QyxVQUFVLENBQUNGLFlBQVksQ0FBQyxFQUFFO1FBQ2pDRyxjQUFLLENBQUNDLFlBQVksQ0FBQ0Msb0JBQVcsRUFBRTtVQUM1QkMsS0FBSyxFQUFFLElBQUFDLG1CQUFFLEVBQUMsc0NBQXNDLENBQUM7VUFDakRDLFdBQVcsRUFBRSxJQUFBRCxtQkFBRSxFQUFDLDZDQUE2QztRQUNqRSxDQUFDLENBQUM7UUFDRjtNQUNKO01BQ0EsSUFBSSxDQUFDRSxXQUFXLEdBQUcsSUFBSUMsb0JBQVcsQ0FBQ0MsZ0NBQWUsQ0FBQ0MsT0FBTyxDQUFDLENBQUMsQ0FBQztNQUM3RCxJQUFJLENBQUNILFdBQVcsQ0FBQ0ksZUFBZSxDQUFDYixZQUFZLENBQUMsQ0FBQ2MsSUFBSSxDQUMvQyxNQUFNO1FBQ0ZYLGNBQUssQ0FBQ0MsWUFBWSxDQUFDVyx1QkFBYyxFQUFFO1VBQy9CVCxLQUFLLEVBQUUsSUFBQUMsbUJBQUUsRUFBQywyQ0FBMkMsQ0FBQztVQUN0REMsV0FBVyxFQUFFLElBQUFELG1CQUFFLEVBQUMsaURBQWlELENBQUM7VUFDbEVTLE1BQU0sRUFBRSxJQUFBVCxtQkFBRSxFQUFDLGlCQUFpQixDQUFDO1VBQzdCVSxVQUFVLEVBQUUsSUFBSSxDQUFDQztRQUNyQixDQUFDLENBQUM7TUFDTixDQUFDLEVBQ0FDLEdBQUcsSUFBSztRQUNMLElBQUksQ0FBQ3BCLFFBQVEsQ0FBQztVQUFFcUIsU0FBUyxFQUFFO1FBQU0sQ0FBQyxDQUFDO1FBQ25DQyxjQUFNLENBQUNDLEtBQUssQ0FBQyw4QkFBOEIsR0FBR3RCLFlBQVksR0FBRyxHQUFHLEdBQUdtQixHQUFHLENBQUM7UUFDdkVoQixjQUFLLENBQUNDLFlBQVksQ0FBQ0Msb0JBQVcsRUFBRTtVQUM1QkMsS0FBSyxFQUFFLElBQUFDLG1CQUFFLEVBQUMsa0NBQWtDLENBQUM7VUFDN0NDLFdBQVcsRUFBRSxJQUFBZSx5Q0FBNEIsRUFBQ0osR0FBRyxFQUFFLElBQUFaLG1CQUFFLEVBQUMsdUJBQXVCLENBQUM7UUFDOUUsQ0FBQyxDQUFDO01BQ04sQ0FDSixDQUFDO01BQ0QsSUFBSSxDQUFDUixRQUFRLENBQUM7UUFBRXFCLFNBQVMsRUFBRTtNQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQUEsSUFBQXZCLGdCQUFBLENBQUFuQixPQUFBLHVCQUVxQixNQUFZO01BQzlCLElBQUksQ0FBQ2tCLEtBQUssQ0FBQ3FCLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUFBLElBQUFwQixnQkFBQSxDQUFBbkIsT0FBQSxpQ0FFZ0M4QyxFQUFXLElBQVc7TUFDbkQsSUFBSUEsRUFBRSxFQUFFO1FBQ0osSUFBSSxDQUFDQyxrQkFBa0IsQ0FBQyxDQUFDO01BQzdCLENBQUMsTUFBTTtRQUNILElBQUksQ0FBQzFCLFFBQVEsQ0FBQztVQUFFcUIsU0FBUyxFQUFFO1FBQU0sQ0FBQyxDQUFDO01BQ3ZDO0lBQ0osQ0FBQztJQXJERyxJQUFJLENBQUNuQixLQUFLLEdBQUc7TUFDVEQsWUFBWSxFQUFFLEVBQUU7TUFDaEJvQixTQUFTLEVBQUU7SUFDZixDQUFDO0VBQ0w7RUFtRFFLLGtCQUFrQkEsQ0FBQSxFQUFTO0lBQy9CLElBQUksQ0FBQ2hCLFdBQVcsRUFBRWlCLHFCQUFxQixDQUFDLENBQUMsQ0FBQ1osSUFBSSxDQUMxQyxNQUFNO01BQ0YsSUFBSSxDQUFDbEIsS0FBSyxDQUFDcUIsVUFBVSxDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDLEVBQ0FFLEdBQUcsSUFBSztNQUNMLElBQUksQ0FBQ3BCLFFBQVEsQ0FBQztRQUFFcUIsU0FBUyxFQUFFO01BQU0sQ0FBQyxDQUFDO01BRW5DLElBQUlPLGVBQWUsR0FBR1IsR0FBRztNQUN6QixJQUFJQSxHQUFHLFlBQVlTLGtDQUFpQixFQUFFO1FBQ2xDRCxlQUFlLEdBQUdSLEdBQUcsQ0FBQ1UsS0FBSztNQUMvQjtNQUVBLElBQUlGLGVBQWUsWUFBWUcsbUJBQVcsSUFBSUgsZUFBZSxDQUFDSSxPQUFPLEtBQUssd0JBQXdCLEVBQUU7UUFDaEcsTUFBTUMsT0FBTyxHQUNULElBQUF6QixtQkFBRSxFQUFDLDJDQUEyQyxDQUFDLEdBQy9DLEdBQUcsR0FDSCxJQUFBQSxtQkFBRSxFQUFDLGlEQUFpRCxDQUFDO1FBQ3pESixjQUFLLENBQUNDLFlBQVksQ0FBQ1csdUJBQWMsRUFBRTtVQUMvQlQsS0FBSyxFQUFFLElBQUFDLG1CQUFFLEVBQUMsMkNBQTJDLENBQUM7VUFDdERDLFdBQVcsRUFBRXdCLE9BQU87VUFDcEJoQixNQUFNLEVBQUUsSUFBQVQsbUJBQUUsRUFBQyxpQkFBaUIsQ0FBQztVQUM3QlUsVUFBVSxFQUFFLElBQUksQ0FBQ0M7UUFDckIsQ0FBQyxDQUFDO01BQ04sQ0FBQyxNQUFNO1FBQ0hHLGNBQU0sQ0FBQ0MsS0FBSyxDQUFDLGtDQUFrQyxHQUFHSCxHQUFHLENBQUM7UUFDdERoQixjQUFLLENBQUNDLFlBQVksQ0FBQ0Msb0JBQVcsRUFBRTtVQUM1QkMsS0FBSyxFQUFFLElBQUFDLG1CQUFFLEVBQUMsMkNBQTJDLENBQUM7VUFDdERDLFdBQVcsRUFBRSxJQUFBZSx5Q0FBNEIsRUFBQ0osR0FBRyxFQUFFLElBQUFaLG1CQUFFLEVBQUMsdUJBQXVCLENBQUM7UUFDOUUsQ0FBQyxDQUFDO01BQ047SUFDSixDQUNKLENBQUM7RUFDTDtFQUVPMEIsTUFBTUEsQ0FBQSxFQUFvQjtJQUM3QixNQUFNQyxVQUFVLEdBQUcsSUFBSSxDQUFDakMsS0FBSyxDQUFDbUIsU0FBUyxnQkFDbkNoRSxNQUFBLENBQUFzQixPQUFBLENBQUF5RCxhQUFBLENBQUNyRSxRQUFBLENBQUFZLE9BQU8sTUFBRSxDQUFDLGdCQUVYdEIsTUFBQSxDQUFBc0IsT0FBQSxDQUFBeUQsYUFBQSxDQUFDakUsYUFBQSxDQUFBUSxPQUFZO01BQ1QwRCxZQUFZLEVBQUUsSUFBSSxDQUFDbkMsS0FBSyxDQUFDRCxZQUFhO01BQ3RDcUMsU0FBUyxFQUFDLCtCQUErQjtNQUN6Q0MsV0FBVyxFQUFFLElBQUEvQixtQkFBRSxFQUFDLHNCQUFzQixDQUFFO01BQ3hDZ0Msb0JBQW9CLEVBQUMsMkNBQTJDO01BQ2hFQyxZQUFZLEVBQUUsS0FBTTtNQUNwQkMsY0FBYyxFQUFFLElBQUksQ0FBQ0M7SUFBc0IsQ0FDOUMsQ0FDSjtJQUVELG9CQUNJdEYsTUFBQSxDQUFBc0IsT0FBQSxDQUFBeUQsYUFBQSxDQUFDbEUsV0FBQSxDQUFBUyxPQUFVO01BQ1AyRCxTQUFTLEVBQUMsbUJBQW1CO01BQzdCcEIsVUFBVSxFQUFFLElBQUksQ0FBQzBCLFdBQVk7TUFDN0JyQyxLQUFLLEVBQUUsSUFBSSxDQUFDVixLQUFLLENBQUNVLEtBQU07TUFDeEJzQyxTQUFTLEVBQUM7SUFBbUIsZ0JBRTdCeEYsTUFBQSxDQUFBc0IsT0FBQSxDQUFBeUQsYUFBQTtNQUFLRSxTQUFTLEVBQUM7SUFBbUIsZ0JBQzlCakYsTUFBQSxDQUFBc0IsT0FBQSxDQUFBeUQsYUFBQTtNQUFHVSxFQUFFLEVBQUM7SUFBbUIsR0FBRSxJQUFBdEMsbUJBQUUsRUFBQyw0QkFBNEIsQ0FBSyxDQUFDLEVBQy9EMkIsVUFDQSxDQUFDLGVBQ045RSxNQUFBLENBQUFzQixPQUFBLENBQUF5RCxhQUFBO01BQUtFLFNBQVMsRUFBQztJQUFtQixnQkFDOUJqRixNQUFBLENBQUFzQixPQUFBLENBQUF5RCxhQUFBO01BQ0lFLFNBQVMsRUFBQyxtQkFBbUI7TUFDN0JTLElBQUksRUFBQyxRQUFRO01BQ2JoRCxLQUFLLEVBQUUsSUFBQVMsbUJBQUUsRUFBQyxpQkFBaUIsQ0FBRTtNQUM3QndDLE9BQU8sRUFBRSxJQUFJLENBQUNDO0lBQVMsQ0FDMUIsQ0FBQyxlQUNGNUYsTUFBQSxDQUFBc0IsT0FBQSxDQUFBeUQsYUFBQTtNQUFPVyxJQUFJLEVBQUMsUUFBUTtNQUFDaEQsS0FBSyxFQUFFLElBQUFTLG1CQUFFLEVBQUMsYUFBYSxDQUFFO01BQUN3QyxPQUFPLEVBQUUsSUFBSSxDQUFDSjtJQUFZLENBQUUsQ0FDMUUsQ0FDRyxDQUFDO0VBRXJCO0FBQ0o7QUFBQ00sT0FBQSxDQUFBdkUsT0FBQSxHQUFBYyxjQUFBIiwiaWdub3JlTGlzdCI6W119