UNPKG

matrix-react-sdk

Version:
155 lines (152 loc) 24.7 kB
"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+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteF9EaWFsb2dfYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm14X0RpYWxvZ19wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e190KFwiYWN0aW9ufGNvbnRpbnVlXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5vblN1Ym1pdH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT17X3QoXCJhY3Rpb258c2tpcFwiKX0gb25DbGljaz17dGhpcy5vbkNhbmNlbGxlZH0gLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvQmFzZURpYWxvZz5cbiAgICAgICAgKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBUUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBRUEsSUFBQUcsS0FBQSxHQUFBQyx1QkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQUssWUFBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sZ0JBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLE1BQUEsR0FBQVIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFRLFFBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFTLFlBQUEsR0FBQUwsdUJBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFVLGVBQUEsR0FBQVgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFXLFdBQUEsR0FBQVosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFZLGFBQUEsR0FBQWIsc0JB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