UNPKG

matrix-react-sdk

Version:
157 lines (154 loc) 28.2 kB
"use strict"; 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 _logger = require("matrix-js-sdk/src/logger"); var _languageHandler = require("../../../languageHandler"); var _BaseDialog = _interopRequireDefault(require("./BaseDialog")); var _AccessibleButton = _interopRequireDefault(require("../elements/AccessibleButton")); var _MatrixClientContext = _interopRequireDefault(require("../../../contexts/MatrixClientContext")); var _BetaCard = require("../beta/BetaCard"); var _SpaceCreateMenu = require("../spaces/SpaceCreateMenu"); var _AddExistingToSpaceDialog = require("./AddExistingToSpaceDialog"); var _JoinRuleDropdown = _interopRequireDefault(require("../elements/JoinRuleDropdown")); 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 CreateSubspaceDialog = ({ space, onAddExistingSpaceClick, onFinished }) => { const [parentSpace, setParentSpace] = (0, _react.useState)(space); const [busy, setBusy] = (0, _react.useState)(false); const [name, setName] = (0, _react.useState)(""); const spaceNameField = (0, _react.useRef)(null); const [alias, setAlias] = (0, _react.useState)(""); const spaceAliasField = (0, _react.useRef)(null); const [avatar, setAvatar] = (0, _react.useState)(); const [topic, setTopic] = (0, _react.useState)(""); const spaceJoinRule = space.getJoinRule(); let defaultJoinRule = _matrix.JoinRule.Restricted; if (spaceJoinRule === _matrix.JoinRule.Public) { defaultJoinRule = _matrix.JoinRule.Public; } const [joinRule, setJoinRule] = (0, _react.useState)(defaultJoinRule); const onCreateSubspaceClick = async e => { e.preventDefault(); if (busy) return; setBusy(true); // require & validate the space name field if (spaceNameField.current && !(await spaceNameField.current.validate({ allowEmpty: false }))) { spaceNameField.current.focus(); spaceNameField.current.validate({ allowEmpty: false, focused: true }); setBusy(false); return; } // validate the space name alias field but do not require it if (spaceAliasField.current && joinRule === _matrix.JoinRule.Public && !(await spaceAliasField.current.validate({ allowEmpty: true }))) { spaceAliasField.current.focus(); spaceAliasField.current.validate({ allowEmpty: true, focused: true }); setBusy(false); return; } try { await (0, _SpaceCreateMenu.createSpace)(space.client, name, joinRule === _matrix.JoinRule.Public, alias, topic, avatar, {}, { parentSpace, joinRule }); onFinished(true); } catch (e) { _logger.logger.error(e); } }; let joinRuleMicrocopy; if (joinRule === _matrix.JoinRule.Restricted) { joinRuleMicrocopy = /*#__PURE__*/_react.default.createElement("p", null, (0, _languageHandler._t)("create_space|subspace_join_rule_restricted_description", {}, { SpaceName: () => /*#__PURE__*/_react.default.createElement("strong", null, parentSpace.name) })); } else if (joinRule === _matrix.JoinRule.Public) { joinRuleMicrocopy = /*#__PURE__*/_react.default.createElement("p", null, (0, _languageHandler._t)("create_space|subspace_join_rule_public_description", {}, { SpaceName: () => /*#__PURE__*/_react.default.createElement("strong", null, parentSpace.name) })); } else if (joinRule === _matrix.JoinRule.Invite) { joinRuleMicrocopy = /*#__PURE__*/_react.default.createElement("p", null, (0, _languageHandler._t)("create_space|subspace_join_rule_invite_description")); } return /*#__PURE__*/_react.default.createElement(_BaseDialog.default, { title: /*#__PURE__*/_react.default.createElement(_AddExistingToSpaceDialog.SubspaceSelector, { title: (0, _languageHandler._t)("create_space|subspace_dropdown_title"), space: space, value: parentSpace, onChange: setParentSpace }), className: "mx_CreateSubspaceDialog", contentId: "mx_CreateSubspaceDialog", onFinished: onFinished, fixedWidth: false }, /*#__PURE__*/_react.default.createElement(_MatrixClientContext.default.Provider, { value: space.client }, /*#__PURE__*/_react.default.createElement("div", { className: "mx_CreateSubspaceDialog_content" }, /*#__PURE__*/_react.default.createElement("div", { className: "mx_CreateSubspaceDialog_betaNotice" }, /*#__PURE__*/_react.default.createElement(_BetaCard.BetaPill, null), (0, _languageHandler._t)("create_space|subspace_beta_notice")), /*#__PURE__*/_react.default.createElement(_SpaceCreateMenu.SpaceCreateForm, { busy: busy, onSubmit: onCreateSubspaceClick, setAvatar: setAvatar, name: name, setName: setName, nameFieldRef: spaceNameField, topic: topic, setTopic: setTopic, alias: alias, setAlias: setAlias, showAliasField: joinRule === _matrix.JoinRule.Public, aliasFieldRef: spaceAliasField }, /*#__PURE__*/_react.default.createElement(_JoinRuleDropdown.default, { label: (0, _languageHandler._t)("create_space|subspace_join_rule_label"), labelInvite: (0, _languageHandler._t)("create_space|subspace_join_rule_invite_only"), labelPublic: (0, _languageHandler._t)("common|public_space"), labelRestricted: (0, _languageHandler._t)("create_room|join_rule_restricted"), width: 478, value: joinRule, onChange: setJoinRule }), joinRuleMicrocopy)), /*#__PURE__*/_react.default.createElement("div", { className: "mx_CreateSubspaceDialog_footer" }, /*#__PURE__*/_react.default.createElement("div", { className: "mx_CreateSubspaceDialog_footer_prompt" }, /*#__PURE__*/_react.default.createElement("div", null, (0, _languageHandler._t)("create_space|subspace_existing_space_prompt")), /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { kind: "link", onClick: () => { onAddExistingSpaceClick(); onFinished(); } }, (0, _languageHandler._t)("space|add_existing_subspace|space_dropdown_title"))), /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { kind: "primary_outline", disabled: busy, onClick: () => onFinished(false) }, (0, _languageHandler._t)("action|cancel")), /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { kind: "primary", disabled: busy, onClick: onCreateSubspaceClick }, busy ? (0, _languageHandler._t)("create_space|subspace_adding") : (0, _languageHandler._t)("action|add"))))); }; var _default = exports.default = CreateSubspaceDialog; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbWF0cml4IiwiX2xvZ2dlciIsIl9sYW5ndWFnZUhhbmRsZXIiLCJfQmFzZURpYWxvZyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfQWNjZXNzaWJsZUJ1dHRvbiIsIl9NYXRyaXhDbGllbnRDb250ZXh0IiwiX0JldGFDYXJkIiwiX1NwYWNlQ3JlYXRlTWVudSIsIl9BZGRFeGlzdGluZ1RvU3BhY2VEaWFsb2ciLCJfSm9pblJ1bGVEcm9wZG93biIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIkNyZWF0ZVN1YnNwYWNlRGlhbG9nIiwic3BhY2UiLCJvbkFkZEV4aXN0aW5nU3BhY2VDbGljayIsIm9uRmluaXNoZWQiLCJwYXJlbnRTcGFjZSIsInNldFBhcmVudFNwYWNlIiwidXNlU3RhdGUiLCJidXN5Iiwic2V0QnVzeSIsIm5hbWUiLCJzZXROYW1lIiwic3BhY2VOYW1lRmllbGQiLCJ1c2VSZWYiLCJhbGlhcyIsInNldEFsaWFzIiwic3BhY2VBbGlhc0ZpZWxkIiwiYXZhdGFyIiwic2V0QXZhdGFyIiwidG9waWMiLCJzZXRUb3BpYyIsInNwYWNlSm9pblJ1bGUiLCJnZXRKb2luUnVsZSIsImRlZmF1bHRKb2luUnVsZSIsIkpvaW5SdWxlIiwiUmVzdHJpY3RlZCIsIlB1YmxpYyIsImpvaW5SdWxlIiwic2V0Sm9pblJ1bGUiLCJvbkNyZWF0ZVN1YnNwYWNlQ2xpY2siLCJwcmV2ZW50RGVmYXVsdCIsImN1cnJlbnQiLCJ2YWxpZGF0ZSIsImFsbG93RW1wdHkiLCJmb2N1cyIsImZvY3VzZWQiLCJjcmVhdGVTcGFjZSIsImNsaWVudCIsImxvZ2dlciIsImVycm9yIiwiam9pblJ1bGVNaWNyb2NvcHkiLCJjcmVhdGVFbGVtZW50IiwiX3QiLCJTcGFjZU5hbWUiLCJJbnZpdGUiLCJ0aXRsZSIsIlN1YnNwYWNlU2VsZWN0b3IiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwiY2xhc3NOYW1lIiwiY29udGVudElkIiwiZml4ZWRXaWR0aCIsIlByb3ZpZGVyIiwiQmV0YVBpbGwiLCJTcGFjZUNyZWF0ZUZvcm0iLCJvblN1Ym1pdCIsIm5hbWVGaWVsZFJlZiIsInNob3dBbGlhc0ZpZWxkIiwiYWxpYXNGaWVsZFJlZiIsImxhYmVsIiwibGFiZWxJbnZpdGUiLCJsYWJlbFB1YmxpYyIsImxhYmVsUmVzdHJpY3RlZCIsIndpZHRoIiwia2luZCIsIm9uQ2xpY2siLCJkaXNhYmxlZCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL2RpYWxvZ3MvQ3JlYXRlU3Vic3BhY2VEaWFsb2cudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmltcG9ydCBSZWFjdCwgeyB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBSb29tLCBKb2luUnVsZSB9IGZyb20gXCJtYXRyaXgtanMtc2RrL3NyYy9tYXRyaXhcIjtcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCJtYXRyaXgtanMtc2RrL3NyYy9sb2dnZXJcIjtcblxuaW1wb3J0IHsgX3QgfSBmcm9tIFwiLi4vLi4vLi4vbGFuZ3VhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgQmFzZURpYWxvZyBmcm9tIFwiLi9CYXNlRGlhbG9nXCI7XG5pbXBvcnQgQWNjZXNzaWJsZUJ1dHRvbiwgeyBCdXR0b25FdmVudCB9IGZyb20gXCIuLi9lbGVtZW50cy9BY2Nlc3NpYmxlQnV0dG9uXCI7XG5pbXBvcnQgTWF0cml4Q2xpZW50Q29udGV4dCBmcm9tIFwiLi4vLi4vLi4vY29udGV4dHMvTWF0cml4Q2xpZW50Q29udGV4dFwiO1xuaW1wb3J0IHsgQmV0YVBpbGwgfSBmcm9tIFwiLi4vYmV0YS9CZXRhQ2FyZFwiO1xuaW1wb3J0IEZpZWxkIGZyb20gXCIuLi9lbGVtZW50cy9GaWVsZFwiO1xuaW1wb3J0IFJvb21BbGlhc0ZpZWxkIGZyb20gXCIuLi9lbGVtZW50cy9Sb29tQWxpYXNGaWVsZFwiO1xuaW1wb3J0IHsgY3JlYXRlU3BhY2UsIFNwYWNlQ3JlYXRlRm9ybSB9IGZyb20gXCIuLi9zcGFjZXMvU3BhY2VDcmVhdGVNZW51XCI7XG5pbXBvcnQgeyBTdWJzcGFjZVNlbGVjdG9yIH0gZnJvbSBcIi4vQWRkRXhpc3RpbmdUb1NwYWNlRGlhbG9nXCI7XG5pbXBvcnQgSm9pblJ1bGVEcm9wZG93biBmcm9tIFwiLi4vZWxlbWVudHMvSm9pblJ1bGVEcm9wZG93blwiO1xuXG5pbnRlcmZhY2UgSVByb3BzIHtcbiAgICBzcGFjZTogUm9vbTtcbiAgICBvbkFkZEV4aXN0aW5nU3BhY2VDbGljaygpOiB2b2lkO1xuICAgIG9uRmluaXNoZWQoYWRkZWQ/OiBib29sZWFuKTogdm9pZDtcbn1cblxuY29uc3QgQ3JlYXRlU3Vic3BhY2VEaWFsb2c6IFJlYWN0LkZDPElQcm9wcz4gPSAoeyBzcGFjZSwgb25BZGRFeGlzdGluZ1NwYWNlQ2xpY2ssIG9uRmluaXNoZWQgfSkgPT4ge1xuICAgIGNvbnN0IFtwYXJlbnRTcGFjZSwgc2V0UGFyZW50U3BhY2VdID0gdXNlU3RhdGUoc3BhY2UpO1xuXG4gICAgY29uc3QgW2J1c3ksIHNldEJ1c3ldID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIGNvbnN0IFtuYW1lLCBzZXROYW1lXSA9IHVzZVN0YXRlKFwiXCIpO1xuICAgIGNvbnN0IHNwYWNlTmFtZUZpZWxkID0gdXNlUmVmPEZpZWxkPihudWxsKTtcbiAgICBjb25zdCBbYWxpYXMsIHNldEFsaWFzXSA9IHVzZVN0YXRlKFwiXCIpO1xuICAgIGNvbnN0IHNwYWNlQWxpYXNGaWVsZCA9IHVzZVJlZjxSb29tQWxpYXNGaWVsZD4obnVsbCk7XG4gICAgY29uc3QgW2F2YXRhciwgc2V0QXZhdGFyXSA9IHVzZVN0YXRlPEZpbGUgfCB1bmRlZmluZWQ+KCk7XG4gICAgY29uc3QgW3RvcGljLCBzZXRUb3BpY10gPSB1c2VTdGF0ZTxzdHJpbmc+KFwiXCIpO1xuXG4gICAgY29uc3Qgc3BhY2VKb2luUnVsZSA9IHNwYWNlLmdldEpvaW5SdWxlKCk7XG4gICAgbGV0IGRlZmF1bHRKb2luUnVsZSA9IEpvaW5SdWxlLlJlc3RyaWN0ZWQ7XG4gICAgaWYgKHNwYWNlSm9pblJ1bGUgPT09IEpvaW5SdWxlLlB1YmxpYykge1xuICAgICAgICBkZWZhdWx0Sm9pblJ1bGUgPSBKb2luUnVsZS5QdWJsaWM7XG4gICAgfVxuICAgIGNvbnN0IFtqb2luUnVsZSwgc2V0Sm9pblJ1bGVdID0gdXNlU3RhdGU8Sm9pblJ1bGU+KGRlZmF1bHRKb2luUnVsZSk7XG5cbiAgICBjb25zdCBvbkNyZWF0ZVN1YnNwYWNlQ2xpY2sgPSBhc3luYyAoZTogQnV0dG9uRXZlbnQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoYnVzeSkgcmV0dXJuO1xuXG4gICAgICAgIHNldEJ1c3kodHJ1ZSk7XG4gICAgICAgIC8vIHJlcXVpcmUgJiB2YWxpZGF0ZSB0aGUgc3BhY2UgbmFtZSBmaWVsZFxuICAgICAgICBpZiAoc3BhY2VOYW1lRmllbGQuY3VycmVudCAmJiAhKGF3YWl0IHNwYWNlTmFtZUZpZWxkLmN1cnJlbnQudmFsaWRhdGUoeyBhbGxvd0VtcHR5OiBmYWxzZSB9KSkpIHtcbiAgICAgICAgICAgIHNwYWNlTmFtZUZpZWxkLmN1cnJlbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIHNwYWNlTmFtZUZpZWxkLmN1cnJlbnQudmFsaWRhdGUoeyBhbGxvd0VtcHR5OiBmYWxzZSwgZm9jdXNlZDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIHNldEJ1c3koZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIHZhbGlkYXRlIHRoZSBzcGFjZSBuYW1lIGFsaWFzIGZpZWxkIGJ1dCBkbyBub3QgcmVxdWlyZSBpdFxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBzcGFjZUFsaWFzRmllbGQuY3VycmVudCAmJlxuICAgICAgICAgICAgam9pblJ1bGUgPT09IEpvaW5SdWxlLlB1YmxpYyAmJlxuICAgICAgICAgICAgIShhd2FpdCBzcGFjZUFsaWFzRmllbGQuY3VycmVudC52YWxpZGF0ZSh7IGFsbG93RW1wdHk6IHRydWUgfSkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgc3BhY2VBbGlhc0ZpZWxkLmN1cnJlbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIHNwYWNlQWxpYXNGaWVsZC5jdXJyZW50LnZhbGlkYXRlKHsgYWxsb3dFbXB0eTogdHJ1ZSwgZm9jdXNlZDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIHNldEJ1c3koZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IGNyZWF0ZVNwYWNlKFxuICAgICAgICAgICAgICAgIHNwYWNlLmNsaWVudCxcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIGpvaW5SdWxlID09PSBKb2luUnVsZS5QdWJsaWMsXG4gICAgICAgICAgICAgICAgYWxpYXMsXG4gICAgICAgICAgICAgICAgdG9waWMsXG4gICAgICAgICAgICAgICAgYXZhdGFyLFxuICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgIHsgcGFyZW50U3BhY2UsIGpvaW5SdWxlIH0sXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBvbkZpbmlzaGVkKHRydWUpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgbGV0IGpvaW5SdWxlTWljcm9jb3B5OiBKU1guRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICBpZiAoam9pblJ1bGUgPT09IEpvaW5SdWxlLlJlc3RyaWN0ZWQpIHtcbiAgICAgICAgam9pblJ1bGVNaWNyb2NvcHkgPSAoXG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICB7X3QoXG4gICAgICAgICAgICAgICAgICAgIFwiY3JlYXRlX3NwYWNlfHN1YnNwYWNlX2pvaW5fcnVsZV9yZXN0cmljdGVkX2Rlc2NyaXB0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBTcGFjZU5hbWU6ICgpID0+IDxzdHJvbmc+e3BhcmVudFNwYWNlLm5hbWV9PC9zdHJvbmc+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICk7XG4gICAgfSBlbHNlIGlmIChqb2luUnVsZSA9PT0gSm9pblJ1bGUuUHVibGljKSB7XG4gICAgICAgIGpvaW5SdWxlTWljcm9jb3B5ID0gKFxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAge190KFxuICAgICAgICAgICAgICAgICAgICBcImNyZWF0ZV9zcGFjZXxzdWJzcGFjZV9qb2luX3J1bGVfcHVibGljX2Rlc2NyaXB0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBTcGFjZU5hbWU6ICgpID0+IDxzdHJvbmc+e3BhcmVudFNwYWNlLm5hbWV9PC9zdHJvbmc+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICk7XG4gICAgfSBlbHNlIGlmIChqb2luUnVsZSA9PT0gSm9pblJ1bGUuSW52aXRlKSB7XG4gICAgICAgIGpvaW5SdWxlTWljcm9jb3B5ID0gPHA+e190KFwiY3JlYXRlX3NwYWNlfHN1YnNwYWNlX2pvaW5fcnVsZV9pbnZpdGVfZGVzY3JpcHRpb25cIil9PC9wPjtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8QmFzZURpYWxvZ1xuICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgIDxTdWJzcGFjZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfdChcImNyZWF0ZV9zcGFjZXxzdWJzcGFjZV9kcm9wZG93bl90aXRsZVwiKX1cbiAgICAgICAgICAgICAgICAgICAgc3BhY2U9e3NwYWNlfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17cGFyZW50U3BhY2V9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtzZXRQYXJlbnRTcGFjZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwibXhfQ3JlYXRlU3Vic3BhY2VEaWFsb2dcIlxuICAgICAgICAgICAgY29udGVudElkPVwibXhfQ3JlYXRlU3Vic3BhY2VEaWFsb2dcIlxuICAgICAgICAgICAgb25GaW5pc2hlZD17b25GaW5pc2hlZH1cbiAgICAgICAgICAgIGZpeGVkV2lkdGg9e2ZhbHNlfVxuICAgICAgICA+XG4gICAgICAgICAgICA8TWF0cml4Q2xpZW50Q29udGV4dC5Qcm92aWRlciB2YWx1ZT17c3BhY2UuY2xpZW50fT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14X0NyZWF0ZVN1YnNwYWNlRGlhbG9nX2NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteF9DcmVhdGVTdWJzcGFjZURpYWxvZ19iZXRhTm90aWNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QmV0YVBpbGwgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtfdChcImNyZWF0ZV9zcGFjZXxzdWJzcGFjZV9iZXRhX25vdGljZVwiKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPFNwYWNlQ3JlYXRlRm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgYnVzeT17YnVzeX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtvbkNyZWF0ZVN1YnNwYWNlQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRBdmF0YXI9e3NldEF2YXRhcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXROYW1lPXtzZXROYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZUZpZWxkUmVmPXtzcGFjZU5hbWVGaWVsZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcGljPXt0b3BpY31cbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvcGljPXtzZXRUb3BpY31cbiAgICAgICAgICAgICAgICAgICAgICAgIGFsaWFzPXthbGlhc31cbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEFsaWFzPXtzZXRBbGlhc31cbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dBbGlhc0ZpZWxkPXtqb2luUnVsZSA9PT0gSm9pblJ1bGUuUHVibGljfVxuICAgICAgICAgICAgICAgICAgICAgICAgYWxpYXNGaWVsZFJlZj17c3BhY2VBbGlhc0ZpZWxkfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Sm9pblJ1bGVEcm9wZG93blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfdChcImNyZWF0ZV9zcGFjZXxzdWJzcGFjZV9qb2luX3J1bGVfbGFiZWxcIil9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxJbnZpdGU9e190KFwiY3JlYXRlX3NwYWNlfHN1YnNwYWNlX2pvaW5fcnVsZV9pbnZpdGVfb25seVwiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbFB1YmxpYz17X3QoXCJjb21tb258cHVibGljX3NwYWNlXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsUmVzdHJpY3RlZD17X3QoXCJjcmVhdGVfcm9vbXxqb2luX3J1bGVfcmVzdHJpY3RlZFwiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17NDc4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtqb2luUnVsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17c2V0Sm9pblJ1bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAge2pvaW5SdWxlTWljcm9jb3B5fVxuICAgICAgICAgICAgICAgICAgICA8L1NwYWNlQ3JlYXRlRm9ybT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfQ3JlYXRlU3Vic3BhY2VEaWFsb2dfZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfQ3JlYXRlU3Vic3BhY2VEaWFsb2dfZm9vdGVyX3Byb21wdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57X3QoXCJjcmVhdGVfc3BhY2V8c3Vic3BhY2VfZXhpc3Rpbmdfc3BhY2VfcHJvbXB0XCIpfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc2libGVCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFkZEV4aXN0aW5nU3BhY2VDbGljaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZpbmlzaGVkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7X3QoXCJzcGFjZXxhZGRfZXhpc3Rpbmdfc3Vic3BhY2V8c3BhY2VfZHJvcGRvd25fdGl0bGVcIil9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0FjY2Vzc2libGVCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxBY2Nlc3NpYmxlQnV0dG9uIGtpbmQ9XCJwcmltYXJ5X291dGxpbmVcIiBkaXNhYmxlZD17YnVzeX0gb25DbGljaz17KCkgPT4gb25GaW5pc2hlZChmYWxzZSl9PlxuICAgICAgICAgICAgICAgICAgICAgICAge190KFwiYWN0aW9ufGNhbmNlbFwiKX1cbiAgICAgICAgICAgICAgICAgICAgPC9BY2Nlc3NpYmxlQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8QWNjZXNzaWJsZUJ1dHRvbiBraW5kPVwicHJpbWFyeVwiIGRpc2FibGVkPXtidXN5fSBvbkNsaWNrPXtvbkNyZWF0ZVN1YnNwYWNlQ2xpY2t9PlxuICAgICAgICAgICAgICAgICAgICAgICAge2J1c3kgPyBfdChcImNyZWF0ZV9zcGFjZXxzdWJzcGFjZV9hZGRpbmdcIikgOiBfdChcImFjdGlvbnxhZGRcIil9XG4gICAgICAgICAgICAgICAgICAgIDwvQWNjZXNzaWJsZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvTWF0cml4Q2xpZW50Q29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgPC9CYXNlRGlhbG9nPlxuICAgICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBDcmVhdGVTdWJzcGFjZURpYWxvZztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQVFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLGdCQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxXQUFBLEdBQUFDLHNCQUFBLENBQUFMLE9BQUE7QUFDQSxJQUFBTSxpQkFBQSxHQUFBRCxzQkFBQSxDQUFBTCxPQUFBO0FBQ0EsSUFBQU8sb0JBQUEsR0FBQUYsc0JBQUEsQ0FBQUwsT0FBQTtBQUNBLElBQUFRLFNBQUEsR0FBQVIsT0FBQTtBQUdBLElBQUFTLGdCQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSx5QkFBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsaUJBQUEsR0FBQU4sc0JBQUEsQ0FBQUwsT0FBQTtBQUE0RCxTQUFBWSx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBZCx3QkFBQWMsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLHVCQUFBQSxDQUFBLHlCQUFBQSxDQUFBLFdBQUFLLE9BQUEsRUFBQUwsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFHLEdBQUEsQ0FBQU4sQ0FBQSxVQUFBRyxDQUFBLENBQUFJLEdBQUEsQ0FBQVAsQ0FBQSxPQUFBUSxDQUFBLEtBQUFDLFNBQUEsVUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLGNBQUEsSUFBQUQsTUFBQSxDQUFBRSx3QkFBQSxXQUFBQyxDQUFBLElBQUFkLENBQUEsb0JBQUFjLENBQUEsT0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFoQixDQUFBLEVBQUFjLENBQUEsU0FBQUcsQ0FBQSxHQUFBUCxDQUFBLEdBQUFDLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWIsQ0FBQSxFQUFBYyxDQUFBLFVBQUFHLENBQUEsS0FBQUEsQ0FBQSxDQUFBVixHQUFBLElBQUFVLENBQUEsQ0FBQUMsR0FBQSxJQUFBUCxNQUFBLENBQUFDLGNBQUEsQ0FBQUosQ0FBQSxFQUFBTSxDQUFBLEVBQUFHLENBQUEsSUFBQVQsQ0FBQSxDQUFBTSxDQUFBLElBQUFkLENBQUEsQ0FBQWMsQ0FBQSxZQUFBTixDQUFBLENBQUFILE9BQUEsR0FBQUwsQ0FBQSxFQUFBRyxDQUFBLElBQUFBLENBQUEsQ0FBQWUsR0FBQSxDQUFBbEIsQ0FBQSxFQUFBUSxDQUFBLEdBQUFBLENBQUE7QUFyQjVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQXVCQSxNQUFNVyxvQkFBc0MsR0FBR0EsQ0FBQztFQUFFQyxLQUFLO0VBQUVDLHVCQUF1QjtFQUFFQztBQUFXLENBQUMsS0FBSztFQUMvRixNQUFNLENBQUNDLFdBQVcsRUFBRUMsY0FBYyxDQUFDLEdBQUcsSUFBQUMsZUFBUSxFQUFDTCxLQUFLLENBQUM7RUFFckQsTUFBTSxDQUFDTSxJQUFJLEVBQUVDLE9BQU8sQ0FBQyxHQUFHLElBQUFGLGVBQVEsRUFBVSxLQUFLLENBQUM7RUFDaEQsTUFBTSxDQUFDRyxJQUFJLEVBQUVDLE9BQU8sQ0FBQyxHQUFHLElBQUFKLGVBQVEsRUFBQyxFQUFFLENBQUM7RUFDcEMsTUFBTUssY0FBYyxHQUFHLElBQUFDLGFBQU0sRUFBUSxJQUFJLENBQUM7RUFDMUMsTUFBTSxDQUFDQyxLQUFLLEVBQUVDLFFBQVEsQ0FBQyxHQUFHLElBQUFSLGVBQVEsRUFBQyxFQUFFLENBQUM7RUFDdEMsTUFBTVMsZUFBZSxHQUFHLElBQUFILGFBQU0sRUFBaUIsSUFBSSxDQUFDO0VBQ3BELE1BQU0sQ0FBQ0ksTUFBTSxFQUFFQyxTQUFTLENBQUMsR0FBRyxJQUFBWCxlQUFRLEVBQW1CLENBQUM7RUFDeEQsTUFBTSxDQUFDWSxLQUFLLEVBQUVDLFFBQVEsQ0FBQyxHQUFHLElBQUFiLGVBQVEsRUFBUyxFQUFFLENBQUM7RUFFOUMsTUFBTWMsYUFBYSxHQUFHbkIsS0FBSyxDQUFDb0IsV0FBVyxDQUFDLENBQUM7RUFDekMsSUFBSUMsZUFBZSxHQUFHQyxnQkFBUSxDQUFDQyxVQUFVO0VBQ3pDLElBQUlKLGFBQWEsS0FBS0csZ0JBQVEsQ0FBQ0UsTUFBTSxFQUFFO0lBQ25DSCxlQUFlLEdBQUdDLGdCQUFRLENBQUNFLE1BQU07RUFDckM7RUFDQSxNQUFNLENBQUNDLFFBQVEsRUFBRUMsV0FBVyxDQUFDLEdBQUcsSUFBQXJCLGVBQVEsRUFBV2dCLGVBQWUsQ0FBQztFQUVuRSxNQUFNTSxxQkFBcUIsR0FBRyxNQUFPL0MsQ0FBYyxJQUFvQjtJQUNuRUEsQ0FBQyxDQUFDZ0QsY0FBYyxDQUFDLENBQUM7SUFDbEIsSUFBSXRCLElBQUksRUFBRTtJQUVWQyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQ2I7SUFDQSxJQUFJRyxjQUFjLENBQUNtQixPQUFPLElBQUksRUFBRSxNQUFNbkIsY0FBYyxDQUFDbUIsT0FBTyxDQUFDQyxRQUFRLENBQUM7TUFBRUMsVUFBVSxFQUFFO0lBQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtNQUMzRnJCLGNBQWMsQ0FBQ21CLE9BQU8sQ0FBQ0csS0FBSyxDQUFDLENBQUM7TUFDOUJ0QixjQUFjLENBQUNtQixPQUFPLENBQUNDLFFBQVEsQ0FBQztRQUFFQyxVQUFVLEVBQUUsS0FBSztRQUFFRSxPQUFPLEVBQUU7TUFBSyxDQUFDLENBQUM7TUFDckUxQixPQUFPLENBQUMsS0FBSyxDQUFDO01BQ2Q7SUFDSjtJQUNBO0lBQ0EsSUFDSU8sZUFBZSxDQUFDZSxPQUFPLElBQ3ZCSixRQUFRLEtBQUtILGdCQUFRLENBQUNFLE1BQU0sSUFDNUIsRUFBRSxNQUFNVixlQUFlLENBQUNlLE9BQU8sQ0FBQ0MsUUFBUSxDQUFDO01BQUVDLFVBQVUsRUFBRTtJQUFLLENBQUMsQ0FBQyxDQUFDLEVBQ2pFO01BQ0VqQixlQUFlLENBQUNlLE9BQU8sQ0FBQ0csS0FBSyxDQUFDLENBQUM7TUFDL0JsQixlQUFlLENBQUNlLE9BQU8sQ0FBQ0MsUUFBUSxDQUFDO1FBQUVDLFVBQVUsRUFBRSxJQUFJO1FBQUVFLE9BQU8sRUFBRTtNQUFLLENBQUMsQ0FBQztNQUNyRTFCLE9BQU8sQ0FBQyxLQUFLLENBQUM7TUFDZDtJQUNKO0lBRUEsSUFBSTtNQUNBLE1BQU0sSUFBQTJCLDRCQUFXLEVBQ2JsQyxLQUFLLENBQUNtQyxNQUFNLEVBQ1ozQixJQUFJLEVBQ0ppQixRQUFRLEtBQUtILGdCQUFRLENBQUNFLE1BQU0sRUFDNUJaLEtBQUssRUFDTEssS0FBSyxFQUNMRixNQUFNLEVBQ04sQ0FBQyxDQUFDLEVBQ0Y7UUFBRVosV0FBVztRQUFFc0I7TUFBUyxDQUM1QixDQUFDO01BRUR2QixVQUFVLENBQUMsSUFBSSxDQUFDO0lBQ3BCLENBQUMsQ0FBQyxPQUFPdEIsQ0FBQyxFQUFFO01BQ1J3RCxjQUFNLENBQUNDLEtBQUssQ0FBQ3pELENBQUMsQ0FBQztJQUNuQjtFQUNKLENBQUM7RUFFRCxJQUFJMEQsaUJBQTBDO0VBQzlDLElBQUliLFFBQVEsS0FBS0gsZ0JBQVEsQ0FBQ0MsVUFBVSxFQUFFO0lBQ2xDZSxpQkFBaUIsZ0JBQ2J6RSxNQUFBLENBQUFvQixPQUFBLENBQUFzRCxhQUFBLFlBQ0ssSUFBQUMsbUJBQUUsRUFDQyx3REFBd0QsRUFDeEQsQ0FBQyxDQUFDLEVBQ0Y7TUFDSUMsU0FBUyxFQUFFQSxDQUFBLGtCQUFNNUUsTUFBQSxDQUFBb0IsT0FBQSxDQUFBc0QsYUFBQSxpQkFBU3BDLFdBQVcsQ0FBQ0ssSUFBYTtJQUN2RCxDQUNKLENBQ0QsQ0FDTjtFQUNMLENBQUMsTUFBTSxJQUFJaUIsUUFBUSxLQUFLSCxnQkFBUSxDQUFDRSxNQUFNLEVBQUU7SUFDckNjLGlCQUFpQixnQkFDYnpFLE1BQUEsQ0FBQW9CLE9BQUEsQ0FBQXNELGFBQUEsWUFDSyxJQUFBQyxtQkFBRSxFQUNDLG9EQUFvRCxFQUNwRCxDQUFDLENBQUMsRUFDRjtNQUNJQyxTQUFTLEVBQUVBLENBQUEsa0JBQU01RSxNQUFBLENBQUFvQixPQUFBLENBQUFzRCxhQUFBLGlCQUFTcEMsV0FBVyxDQUFDSyxJQUFhO0lBQ3ZELENBQ0osQ0FDRCxDQUNOO0VBQ0wsQ0FBQyxNQUFNLElBQUlpQixRQUFRLEtBQUtILGdCQUFRLENBQUNvQixNQUFNLEVBQUU7SUFDckNKLGlCQUFpQixnQkFBR3pFLE1BQUEsQ0FBQW9CLE9BQUEsQ0FBQXNELGFBQUEsWUFBSSxJQUFBQyxtQkFBRSxFQUFDLG9EQUFvRCxDQUFLLENBQUM7RUFDekY7RUFFQSxvQkFDSTNFLE1BQUEsQ0FBQW9CLE9BQUEsQ0FBQXNELGFBQUEsQ0FBQ3BFLFdBQUEsQ0FBQWMsT0FBVTtJQUNQMEQsS0FBSyxlQUNEOUUsTUFBQSxDQUFBb0IsT0FBQSxDQUFBc0QsYUFBQSxDQUFDOUQseUJBQUEsQ0FBQW1FLGdCQUFnQjtNQUNiRCxLQUFLLEVBQUUsSUFBQUgsbUJBQUUsRUFBQyxzQ0FBc0MsQ0FBRTtNQUNsRHhDLEtBQUssRUFBRUEsS0FBTTtNQUNiNkMsS0FBSyxFQUFFMUMsV0FBWTtNQUNuQjJDLFFBQVEsRUFBRTFDO0lBQWUsQ0FDNUIsQ0FDSjtJQUNEMkMsU0FBUyxFQUFDLHlCQUF5QjtJQUNuQ0MsU0FBUyxFQUFDLHlCQUF5QjtJQUNuQzlDLFVBQVUsRUFBRUEsVUFBVztJQUN2QitDLFVBQVUsRUFBRTtFQUFNLGdCQUVsQnBGLE1BQUEsQ0FBQW9CLE9BQUEsQ0FBQXNELGFBQUEsQ0FBQ2pFLG9CQUFBLENBQUFXLE9BQW1CLENBQUNpRSxRQUFRO0lBQUNMLEtBQUssRUFBRTdDLEtBQUssQ0FBQ21DO0VBQU8sZ0JBQzlDdEUsTUFBQSxDQUFBb0IsT0FBQSxDQUFBc0QsYUFBQTtJQUFLUSxTQUFTLEVBQUM7RUFBaUMsZ0JBQzVDbEYsTUFBQSxDQUFBb0IsT0FBQSxDQUFBc0QsYUFBQTtJQUFLUSxTQUFTLEVBQUM7RUFBb0MsZ0JBQy9DbEYsTUFBQSxDQUFBb0IsT0FBQSxDQUFBc0QsYUFBQSxDQUFDaEUsU0FBQSxDQUFBNEUsUUFBUSxNQUFFLENBQUMsRUFDWCxJQUFBWCxtQkFBRSxFQUFDLG1DQUFtQyxDQUN0QyxDQUFDLGVBRU4zRSxNQUFBLENBQUFvQixPQUFBLENBQUFzRCxhQUFBLENBQUMvRCxnQkFBQSxDQUFBNEUsZUFBZTtJQUNaOUMsSUFBSSxFQUFFQSxJQUFLO0lBQ1grQyxRQUFRLEVBQUUxQixxQkFBc0I7SUFDaENYLFNBQVMsRUFBRUEsU0FBVTtJQUNyQlIsSUFBSSxFQUFFQSxJQUFLO0lBQ1hDLE9BQU8sRUFBRUEsT0FBUTtJQUNqQjZDLFlBQVksRUFBRTVDLGNBQWU7SUFDN0JPLEtBQUssRUFBRUEsS0FBTTtJQUNiQyxRQUFRLEVBQUVBLFFBQVM7SUFDbkJOLEtBQUssRUFBRUEsS0FBTTtJQUNiQyxRQUFRLEVBQUVBLFFBQVM7SUFDbkIwQyxjQUFjLEVBQUU5QixRQUFRLEtBQUtILGdCQUFRLENBQUNFLE1BQU87SUFDN0NnQyxhQUFhLEVBQUUxQztFQUFnQixnQkFFL0JqRCxNQUFBLENBQUFvQixPQUFBLENBQUFzRCxhQUFBLENBQUM3RCxpQkFBQSxDQUFBTyxPQUFnQjtJQUNid0UsS0FBSyxFQUFFLElBQUFqQixtQkFBRSxFQUFDLHVDQUF1QyxDQUFFO0lBQ25Ea0IsV0FBVyxFQUFFLElBQUFsQixtQkFBRSxFQUFDLDZDQUE2QyxDQUFFO0lBQy9EbUIsV0FBVyxFQUFFLElBQUFuQixtQkFBRSxFQUFDLHFCQUFxQixDQUFFO0lBQ3ZDb0IsZUFBZSxFQUFFLElBQUFwQixtQkFBRSxFQUFDLGtDQUFrQyxDQUFFO0lBQ3hEcUIsS0FBSyxFQUFFLEdBQUk7SUFDWGhCLEtBQUssRUFBRXBCLFFBQVM7SUFDaEJxQixRQUFRLEVBQUVwQjtFQUFZLENBQ3pCLENBQUMsRUFDRFksaUJBQ1ksQ0FDaEIsQ0FBQyxlQUVOekUsTUFBQSxDQUFBb0IsT0FBQSxDQUFBc0QsYUFBQTtJQUFLUSxTQUFTLEVBQUM7RUFBZ0MsZ0JBQzNDbEYsTUFBQSxDQUFBb0IsT0FBQSxDQUFBc0QsYUFBQTtJQUFLUSxTQUFTLEVBQUM7RUFBdUMsZ0JBQ2xEbEYsTUFBQSxDQUFBb0IsT0FBQSxDQUFBc0QsYUFBQSxjQUFNLElBQUFDLG1CQUFFLEVBQUMsNkNBQTZDLENBQU8sQ0FBQyxlQUM5RDNFLE1BQUEsQ0FBQW9CLE9BQUEsQ0FBQXNELGFBQUEsQ0FBQ2xFLGlCQUFBLENBQUFZLE9BQWdCO0lBQ2I2RSxJQUFJLEVBQUMsTUFBTTtJQUNYQyxPQUFPLEVBQUVBLENBQUEsS0FBTTtNQUNYOUQsdUJBQXVCLENBQUMsQ0FBQztNQUN6QkMsVUFBVSxDQUFDLENBQUM7SUFDaEI7RUFBRSxHQUVELElBQUFzQyxtQkFBRSxFQUFDLGtEQUFrRCxDQUN4QyxDQUNqQixDQUFDLGVBRU4zRSxNQUFBLENBQUFvQixPQUFBLENBQUFzRCxhQUFBLENBQUNsRSxpQkFBQSxDQUFBWSxPQUFnQjtJQUFDNkUsSUFBSSxFQUFDLGlCQUFpQjtJQUFDRSxRQUFRLEVBQUUxRCxJQUFLO0lBQUN5RCxPQUFPLEVBQUVBLENBQUEsS0FBTTdELFVBQVUsQ0FBQyxLQUFLO0VBQUUsR0FDckYsSUFBQXNDLG1CQUFFLEVBQUMsZUFBZSxDQUNMLENBQUMsZUFDbkIzRSxNQUFBLENBQUFvQixPQUFBLENBQUFzRCxhQUFBLENBQUNsRSxpQkFBQSxDQUFBWSxPQUFnQjtJQUFDNkUsSUFBSSxFQUFDLFNBQVM7SUFBQ0UsUUFBUSxFQUFFMUQsSUFBSztJQUFDeUQsT0FBTyxFQUFFcEM7RUFBc0IsR0FDM0VyQixJQUFJLEdBQUcsSUFBQWtDLG1CQUFFLEVBQUMsOEJBQThCLENBQUMsR0FBRyxJQUFBQSxtQkFBRSxFQUFDLFlBQVksQ0FDOUMsQ0FDakIsQ0FDcUIsQ0FDdEIsQ0FBQztBQUVyQixDQUFDO0FBQUMsSUFBQXlCLFFBQUEsR0FBQUMsT0FBQSxDQUFBakYsT0FBQSxHQUVhYyxvQkFBb0IiLCJpZ25vcmVMaXN0IjpbXX0=