UNPKG

matrix-react-sdk

Version:
113 lines (109 loc) 17.9 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 _classnames = _interopRequireDefault(require("classnames")); var _languageHandler = _interopRequireWildcard(require("../../../languageHandler")); var languageHandler = _languageHandler; var _SettingsStore = _interopRequireDefault(require("../../../settings/SettingsStore")); var _Spinner = _interopRequireDefault(require("./Spinner")); var _Dropdown = _interopRequireDefault(require("./Dropdown")); 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 2017 Marcel Radzio (MTRNord) 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. */ function languageMatchesSearchQuery(query, language) { if (language.labelInTargetLanguage.toUpperCase().includes(query.toUpperCase())) return true; if (language.label.toUpperCase().includes(query.toUpperCase())) return true; if (language.value.toUpperCase() === query.toUpperCase()) return true; return false; } class LanguageDropdown extends _react.default.Component { constructor(props) { super(props); (0, _defineProperty2.default)(this, "onSearchChange", search => { this.setState({ searchQuery: search }); }); this.state = { searchQuery: "", langs: null }; } componentDidMount() { languageHandler.getAllLanguagesWithLabels().then(langs => { langs.sort(function (a, b) { if (a.labelInTargetLanguage < b.labelInTargetLanguage) return -1; if (a.labelInTargetLanguage > b.labelInTargetLanguage) return 1; return 0; }); this.setState({ langs }); }).catch(() => { this.setState({ langs: [{ value: "en", label: "English", labelInTargetLanguage: "English" }] }); }); if (!this.props.value) { // If no value is given, we start with the first country selected, // but our parent component doesn't know this, therefore we do this. const language = languageHandler.getUserLanguage(); this.props.onOptionChange(language); } } render() { if (this.state.langs === null) { return /*#__PURE__*/_react.default.createElement(_Spinner.default, null); } let displayedLanguages; if (this.state.searchQuery) { displayedLanguages = this.state.langs.filter(lang => { return languageMatchesSearchQuery(this.state.searchQuery, lang); }); } else { displayedLanguages = this.state.langs; } const options = displayedLanguages.map(language => { return /*#__PURE__*/_react.default.createElement("div", { key: language.value }, language.labelInTargetLanguage); }); // default value here too, otherwise we need to handle null / undefined // values between mounting and the initial value propagating let language = _SettingsStore.default.getValue("language", null, /*excludeDefault:*/true); let value; if (language) { value = this.props.value || language; } else { language = navigator.language || navigator.userLanguage; value = this.props.value || language; } return /*#__PURE__*/_react.default.createElement(_Dropdown.default, { id: "mx_LanguageDropdown", className: (0, _classnames.default)("mx_LanguageDropdown", this.props.className), onOptionChange: this.props.onOptionChange, onSearchChange: this.onSearchChange, searchEnabled: true, value: value, label: (0, _languageHandler._t)("language_dropdown_label"), disabled: this.props.disabled }, options); } } exports.default = LanguageDropdown; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9jbGFzc25hbWVzIiwiX2xhbmd1YWdlSGFuZGxlciIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwibGFuZ3VhZ2VIYW5kbGVyIiwiX1NldHRpbmdzU3RvcmUiLCJfU3Bpbm5lciIsIl9Ecm9wZG93biIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsImxhbmd1YWdlTWF0Y2hlc1NlYXJjaFF1ZXJ5IiwicXVlcnkiLCJsYW5ndWFnZSIsImxhYmVsSW5UYXJnZXRMYW5ndWFnZSIsInRvVXBwZXJDYXNlIiwiaW5jbHVkZXMiLCJsYWJlbCIsInZhbHVlIiwiTGFuZ3VhZ2VEcm9wZG93biIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJzZWFyY2giLCJzZXRTdGF0ZSIsInNlYXJjaFF1ZXJ5Iiwic3RhdGUiLCJsYW5ncyIsImNvbXBvbmVudERpZE1vdW50IiwiZ2V0QWxsTGFuZ3VhZ2VzV2l0aExhYmVscyIsInRoZW4iLCJzb3J0IiwiYiIsImNhdGNoIiwiZ2V0VXNlckxhbmd1YWdlIiwib25PcHRpb25DaGFuZ2UiLCJyZW5kZXIiLCJjcmVhdGVFbGVtZW50IiwiZGlzcGxheWVkTGFuZ3VhZ2VzIiwiZmlsdGVyIiwibGFuZyIsIm9wdGlvbnMiLCJtYXAiLCJrZXkiLCJTZXR0aW5nc1N0b3JlIiwiZ2V0VmFsdWUiLCJuYXZpZ2F0b3IiLCJ1c2VyTGFuZ3VhZ2UiLCJpZCIsImNsYXNzTmFtZSIsImNsYXNzTmFtZXMiLCJvblNlYXJjaENoYW5nZSIsInNlYXJjaEVuYWJsZWQiLCJfdCIsImRpc2FibGVkIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL2VsZW1lbnRzL0xhbmd1YWdlRHJvcGRvd24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDE3IE1hcmNlbCBSYWR6aW8gKE1UUk5vcmQpXG5Db3B5cmlnaHQgMjAxNyBWZWN0b3IgQ3JlYXRpb25zIEx0ZC5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFJlYWN0LCB7IFJlYWN0RWxlbWVudCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIjtcblxuaW1wb3J0ICogYXMgbGFuZ3VhZ2VIYW5kbGVyIGZyb20gXCIuLi8uLi8uLi9sYW5ndWFnZUhhbmRsZXJcIjtcbmltcG9ydCBTZXR0aW5nc1N0b3JlIGZyb20gXCIuLi8uLi8uLi9zZXR0aW5ncy9TZXR0aW5nc1N0b3JlXCI7XG5pbXBvcnQgeyBfdCB9IGZyb20gXCIuLi8uLi8uLi9sYW5ndWFnZUhhbmRsZXJcIjtcbmltcG9ydCBTcGlubmVyIGZyb20gXCIuL1NwaW5uZXJcIjtcbmltcG9ydCBEcm9wZG93biBmcm9tIFwiLi9Ecm9wZG93blwiO1xuaW1wb3J0IHsgTm9uRW1wdHlBcnJheSB9IGZyb20gXCIuLi8uLi8uLi9AdHlwZXMvY29tbW9uXCI7XG5cbnR5cGUgTGFuZ3VhZ2VzID0gQXdhaXRlZDxSZXR1cm5UeXBlPHR5cGVvZiBsYW5ndWFnZUhhbmRsZXIuZ2V0QWxsTGFuZ3VhZ2VzV2l0aExhYmVscz4+O1xuXG5mdW5jdGlvbiBsYW5ndWFnZU1hdGNoZXNTZWFyY2hRdWVyeShxdWVyeTogc3RyaW5nLCBsYW5ndWFnZTogTGFuZ3VhZ2VzWzBdKTogYm9vbGVhbiB7XG4gICAgaWYgKGxhbmd1YWdlLmxhYmVsSW5UYXJnZXRMYW5ndWFnZS50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5LnRvVXBwZXJDYXNlKCkpKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAobGFuZ3VhZ2UubGFiZWwudG9VcHBlckNhc2UoKS5pbmNsdWRlcyhxdWVyeS50b1VwcGVyQ2FzZSgpKSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKGxhbmd1YWdlLnZhbHVlLnRvVXBwZXJDYXNlKCkgPT09IHF1ZXJ5LnRvVXBwZXJDYXNlKCkpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBmYWxzZTtcbn1cblxuaW50ZXJmYWNlIElQcm9wcyB7XG4gICAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICAgIG9uT3B0aW9uQ2hhbmdlOiAobGFuZ3VhZ2U6IHN0cmluZykgPT4gdm9pZDtcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBJU3RhdGUge1xuICAgIHNlYXJjaFF1ZXJ5OiBzdHJpbmc7XG4gICAgbGFuZ3M6IExhbmd1YWdlcyB8IG51bGw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExhbmd1YWdlRHJvcGRvd24gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SVByb3BzLCBJU3RhdGU+IHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJvcHM6IElQcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIHNlYXJjaFF1ZXJ5OiBcIlwiLFxuICAgICAgICAgICAgbGFuZ3M6IG51bGwsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGNvbXBvbmVudERpZE1vdW50KCk6IHZvaWQge1xuICAgICAgICBsYW5ndWFnZUhhbmRsZXJcbiAgICAgICAgICAgIC5nZXRBbGxMYW5ndWFnZXNXaXRoTGFiZWxzKClcbiAgICAgICAgICAgIC50aGVuKChsYW5ncykgPT4ge1xuICAgICAgICAgICAgICAgIGxhbmdzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGEubGFiZWxJblRhcmdldExhbmd1YWdlIDwgYi5sYWJlbEluVGFyZ2V0TGFuZ3VhZ2UpIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGEubGFiZWxJblRhcmdldExhbmd1YWdlID4gYi5sYWJlbEluVGFyZ2V0TGFuZ3VhZ2UpIHJldHVybiAxO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbGFuZ3MgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgbGFuZ3M6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJlblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIkVuZ2xpc2hcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbEluVGFyZ2V0TGFuZ3VhZ2U6IFwiRW5nbGlzaFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghdGhpcy5wcm9wcy52YWx1ZSkge1xuICAgICAgICAgICAgLy8gSWYgbm8gdmFsdWUgaXMgZ2l2ZW4sIHdlIHN0YXJ0IHdpdGggdGhlIGZpcnN0IGNvdW50cnkgc2VsZWN0ZWQsXG4gICAgICAgICAgICAvLyBidXQgb3VyIHBhcmVudCBjb21wb25lbnQgZG9lc24ndCBrbm93IHRoaXMsIHRoZXJlZm9yZSB3ZSBkbyB0aGlzLlxuICAgICAgICAgICAgY29uc3QgbGFuZ3VhZ2UgPSBsYW5ndWFnZUhhbmRsZXIuZ2V0VXNlckxhbmd1YWdlKCk7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uT3B0aW9uQ2hhbmdlKGxhbmd1YWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25TZWFyY2hDaGFuZ2UgPSAoc2VhcmNoOiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBzZWFyY2hRdWVyeTogc2VhcmNoLFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcHVibGljIHJlbmRlcigpOiBSZWFjdC5SZWFjdE5vZGUge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS5sYW5ncyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIDxTcGlubmVyIC8+O1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGRpc3BsYXllZExhbmd1YWdlczogQXdhaXRlZDxSZXR1cm5UeXBlPHR5cGVvZiBsYW5ndWFnZUhhbmRsZXIuZ2V0QWxsTGFuZ3VhZ2VzV2l0aExhYmVscz4+O1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS5zZWFyY2hRdWVyeSkge1xuICAgICAgICAgICAgZGlzcGxheWVkTGFuZ3VhZ2VzID0gdGhpcy5zdGF0ZS5sYW5ncy5maWx0ZXIoKGxhbmcpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGFuZ3VhZ2VNYXRjaGVzU2VhcmNoUXVlcnkodGhpcy5zdGF0ZS5zZWFyY2hRdWVyeSwgbGFuZyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRpc3BsYXllZExhbmd1YWdlcyA9IHRoaXMuc3RhdGUubGFuZ3M7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25zID0gZGlzcGxheWVkTGFuZ3VhZ2VzLm1hcCgobGFuZ3VhZ2UpID0+IHtcbiAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17bGFuZ3VhZ2UudmFsdWV9PntsYW5ndWFnZS5sYWJlbEluVGFyZ2V0TGFuZ3VhZ2V9PC9kaXY+O1xuICAgICAgICB9KSBhcyBOb25FbXB0eUFycmF5PFJlYWN0RWxlbWVudCAmIHsga2V5OiBzdHJpbmcgfT47XG5cbiAgICAgICAgLy8gZGVmYXVsdCB2YWx1ZSBoZXJlIHRvbywgb3RoZXJ3aXNlIHdlIG5lZWQgdG8gaGFuZGxlIG51bGwgLyB1bmRlZmluZWRcbiAgICAgICAgLy8gdmFsdWVzIGJldHdlZW4gbW91bnRpbmcgYW5kIHRoZSBpbml0aWFsIHZhbHVlIHByb3BhZ2F0aW5nXG4gICAgICAgIGxldCBsYW5ndWFnZSA9IFNldHRpbmdzU3RvcmUuZ2V0VmFsdWU8c3RyaW5nIHwgdW5kZWZpbmVkPihcImxhbmd1YWdlXCIsIG51bGwsIC8qZXhjbHVkZURlZmF1bHQ6Ki8gdHJ1ZSk7XG4gICAgICAgIGxldCB2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAobGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdGhpcy5wcm9wcy52YWx1ZSB8fCBsYW5ndWFnZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxhbmd1YWdlID0gbmF2aWdhdG9yLmxhbmd1YWdlIHx8IG5hdmlnYXRvci51c2VyTGFuZ3VhZ2U7XG4gICAgICAgICAgICB2YWx1ZSA9IHRoaXMucHJvcHMudmFsdWUgfHwgbGFuZ3VhZ2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPERyb3Bkb3duXG4gICAgICAgICAgICAgICAgaWQ9XCJteF9MYW5ndWFnZURyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXCJteF9MYW5ndWFnZURyb3Bkb3duXCIsIHRoaXMucHJvcHMuY2xhc3NOYW1lKX1cbiAgICAgICAgICAgICAgICBvbk9wdGlvbkNoYW5nZT17dGhpcy5wcm9wcy5vbk9wdGlvbkNoYW5nZX1cbiAgICAgICAgICAgICAgICBvblNlYXJjaENoYW5nZT17dGhpcy5vblNlYXJjaENoYW5nZX1cbiAgICAgICAgICAgICAgICBzZWFyY2hFbmFibGVkPXt0cnVlfVxuICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICBsYWJlbD17X3QoXCJsYW5ndWFnZV9kcm9wZG93bl9sYWJlbFwiKX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17dGhpcy5wcm9wcy5kaXNhYmxlZH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7b3B0aW9uc31cbiAgICAgICAgICAgIDwvRHJvcGRvd24+XG4gICAgICAgICk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVNBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFFLGdCQUFBLEdBQUFDLHVCQUFBLENBQUFILE9BQUE7QUFBNEQsSUFBQUksZUFBQSxHQUFBRixnQkFBQTtBQUM1RCxJQUFBRyxjQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBTSxRQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxTQUFBLEdBQUFSLHNCQUFBLENBQUFDLE9BQUE7QUFBa0MsU0FBQVEseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQU4sd0JBQUFNLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSx1QkFBQUEsQ0FBQSx5QkFBQUEsQ0FBQSxXQUFBSyxPQUFBLEVBQUFMLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxDQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBYyxDQUFBLFNBQUFHLENBQUEsR0FBQVAsQ0FBQSxHQUFBQyxNQUFBLENBQUFFLHdCQUFBLENBQUFiLENBQUEsRUFBQWMsQ0FBQSxVQUFBRyxDQUFBLEtBQUFBLENBQUEsQ0FBQVYsR0FBQSxJQUFBVSxDQUFBLENBQUFDLEdBQUEsSUFBQVAsTUFBQSxDQUFBQyxjQUFBLENBQUFKLENBQUEsRUFBQU0sQ0FBQSxFQUFBRyxDQUFBLElBQUFULENBQUEsQ0FBQU0sQ0FBQSxJQUFBZCxDQUFBLENBQUFjLENBQUEsWUFBQU4sQ0FBQSxDQUFBSCxPQUFBLEdBQUFMLENBQUEsRUFBQUcsQ0FBQSxJQUFBQSxDQUFBLENBQUFlLEdBQUEsQ0FBQWxCLENBQUEsRUFBQVEsQ0FBQSxHQUFBQSxDQUFBO0FBaEJsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQWNBLFNBQVNXLDBCQUEwQkEsQ0FBQ0MsS0FBYSxFQUFFQyxRQUFzQixFQUFXO0VBQ2hGLElBQUlBLFFBQVEsQ0FBQ0MscUJBQXFCLENBQUNDLFdBQVcsQ0FBQyxDQUFDLENBQUNDLFFBQVEsQ0FBQ0osS0FBSyxDQUFDRyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxJQUFJO0VBQzNGLElBQUlGLFFBQVEsQ0FBQ0ksS0FBSyxDQUFDRixXQUFXLENBQUMsQ0FBQyxDQUFDQyxRQUFRLENBQUNKLEtBQUssQ0FBQ0csV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sSUFBSTtFQUMzRSxJQUFJRixRQUFRLENBQUNLLEtBQUssQ0FBQ0gsV0FBVyxDQUFDLENBQUMsS0FBS0gsS0FBSyxDQUFDRyxXQUFXLENBQUMsQ0FBQyxFQUFFLE9BQU8sSUFBSTtFQUNyRSxPQUFPLEtBQUs7QUFDaEI7QUFjZSxNQUFNSSxnQkFBZ0IsU0FBU0MsY0FBSyxDQUFDQyxTQUFTLENBQWlCO0VBQ25FQyxXQUFXQSxDQUFDQyxLQUFhLEVBQUU7SUFDOUIsS0FBSyxDQUFDQSxLQUFLLENBQUM7SUFBQyxJQUFBQyxnQkFBQSxDQUFBM0IsT0FBQSwwQkF1Q1M0QixNQUFjLElBQVc7TUFDL0MsSUFBSSxDQUFDQyxRQUFRLENBQUM7UUFDVkMsV0FBVyxFQUFFRjtNQUNqQixDQUFDLENBQUM7SUFDTixDQUFDO0lBekNHLElBQUksQ0FBQ0csS0FBSyxHQUFHO01BQ1RELFdBQVcsRUFBRSxFQUFFO01BQ2ZFLEtBQUssRUFBRTtJQUNYLENBQUM7RUFDTDtFQUVPQyxpQkFBaUJBLENBQUEsRUFBUztJQUM3QjNDLGVBQWUsQ0FDVjRDLHlCQUF5QixDQUFDLENBQUMsQ0FDM0JDLElBQUksQ0FBRUgsS0FBSyxJQUFLO01BQ2JBLEtBQUssQ0FBQ0ksSUFBSSxDQUFDLFVBQVUvQixDQUFDLEVBQUVnQyxDQUFDLEVBQUU7UUFDdkIsSUFBSWhDLENBQUMsQ0FBQ1kscUJBQXFCLEdBQUdvQixDQUFDLENBQUNwQixxQkFBcUIsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRSxJQUFJWixDQUFDLENBQUNZLHFCQUFxQixHQUFHb0IsQ0FBQyxDQUFDcEIscUJBQXFCLEVBQUUsT0FBTyxDQUFDO1FBQy9ELE9BQU8sQ0FBQztNQUNaLENBQUMsQ0FBQztNQUNGLElBQUksQ0FBQ1ksUUFBUSxDQUFDO1FBQUVHO01BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUNETSxLQUFLLENBQUMsTUFBTTtNQUNULElBQUksQ0FBQ1QsUUFBUSxDQUFDO1FBQ1ZHLEtBQUssRUFBRSxDQUNIO1VBQ0lYLEtBQUssRUFBRSxJQUFJO1VBQ1hELEtBQUssRUFBRSxTQUFTO1VBQ2hCSCxxQkFBcUIsRUFBRTtRQUMzQixDQUFDO01BRVQsQ0FBQyxDQUFDO0lBQ04sQ0FBQyxDQUFDO0lBRU4sSUFBSSxDQUFDLElBQUksQ0FBQ1MsS0FBSyxDQUFDTCxLQUFLLEVBQUU7TUFDbkI7TUFDQTtNQUNBLE1BQU1MLFFBQVEsR0FBRzFCLGVBQWUsQ0FBQ2lELGVBQWUsQ0FBQyxDQUFDO01BQ2xELElBQUksQ0FBQ2IsS0FBSyxDQUFDYyxjQUFjLENBQUN4QixRQUFRLENBQUM7SUFDdkM7RUFDSjtFQVFPeUIsTUFBTUEsQ0FBQSxFQUFvQjtJQUM3QixJQUFJLElBQUksQ0FBQ1YsS0FBSyxDQUFDQyxLQUFLLEtBQUssSUFBSSxFQUFFO01BQzNCLG9CQUFPaEQsTUFBQSxDQUFBZ0IsT0FBQSxDQUFBMEMsYUFBQSxDQUFDbEQsUUFBQSxDQUFBUSxPQUFPLE1BQUUsQ0FBQztJQUN0QjtJQUVBLElBQUkyQyxrQkFBeUY7SUFDN0YsSUFBSSxJQUFJLENBQUNaLEtBQUssQ0FBQ0QsV0FBVyxFQUFFO01BQ3hCYSxrQkFBa0IsR0FBRyxJQUFJLENBQUNaLEtBQUssQ0FBQ0MsS0FBSyxDQUFDWSxNQUFNLENBQUVDLElBQUksSUFBSztRQUNuRCxPQUFPL0IsMEJBQTBCLENBQUMsSUFBSSxDQUFDaUIsS0FBSyxDQUFDRCxXQUFXLEVBQUVlLElBQUksQ0FBQztNQUNuRSxDQUFDLENBQUM7SUFDTixDQUFDLE1BQU07TUFDSEYsa0JBQWtCLEdBQUcsSUFBSSxDQUFDWixLQUFLLENBQUNDLEtBQUs7SUFDekM7SUFFQSxNQUFNYyxPQUFPLEdBQUdILGtCQUFrQixDQUFDSSxHQUFHLENBQUUvQixRQUFRLElBQUs7TUFDakQsb0JBQU9oQyxNQUFBLENBQUFnQixPQUFBLENBQUEwQyxhQUFBO1FBQUtNLEdBQUcsRUFBRWhDLFFBQVEsQ0FBQ0s7TUFBTSxHQUFFTCxRQUFRLENBQUNDLHFCQUEyQixDQUFDO0lBQzNFLENBQUMsQ0FBa0Q7O0lBRW5EO0lBQ0E7SUFDQSxJQUFJRCxRQUFRLEdBQUdpQyxzQkFBYSxDQUFDQyxRQUFRLENBQXFCLFVBQVUsRUFBRSxJQUFJLEVBQUUsbUJBQW9CLElBQUksQ0FBQztJQUNyRyxJQUFJN0IsS0FBeUI7SUFDN0IsSUFBSUwsUUFBUSxFQUFFO01BQ1ZLLEtBQUssR0FBRyxJQUFJLENBQUNLLEtBQUssQ0FBQ0wsS0FBSyxJQUFJTCxRQUFRO0lBQ3hDLENBQUMsTUFBTTtNQUNIQSxRQUFRLEdBQUdtQyxTQUFTLENBQUNuQyxRQUFRLElBQUltQyxTQUFTLENBQUNDLFlBQVk7TUFDdkQvQixLQUFLLEdBQUcsSUFBSSxDQUFDSyxLQUFLLENBQUNMLEtBQUssSUFBSUwsUUFBUTtJQUN4QztJQUVBLG9CQUNJaEMsTUFBQSxDQUFBZ0IsT0FBQSxDQUFBMEMsYUFBQSxDQUFDakQsU0FBQSxDQUFBTyxPQUFRO01BQ0xxRCxFQUFFLEVBQUMscUJBQXFCO01BQ3hCQyxTQUFTLEVBQUUsSUFBQUMsbUJBQVUsRUFBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUM3QixLQUFLLENBQUM0QixTQUFTLENBQUU7TUFDbkVkLGNBQWMsRUFBRSxJQUFJLENBQUNkLEtBQUssQ0FBQ2MsY0FBZTtNQUMxQ2dCLGNBQWMsRUFBRSxJQUFJLENBQUNBLGNBQWU7TUFDcENDLGFBQWEsRUFBRSxJQUFLO01BQ3BCcEMsS0FBSyxFQUFFQSxLQUFNO01BQ2JELEtBQUssRUFBRSxJQUFBc0MsbUJBQUUsRUFBQyx5QkFBeUIsQ0FBRTtNQUNyQ0MsUUFBUSxFQUFFLElBQUksQ0FBQ2pDLEtBQUssQ0FBQ2lDO0lBQVMsR0FFN0JiLE9BQ0ssQ0FBQztFQUVuQjtBQUNKO0FBQUNjLE9BQUEsQ0FBQTVELE9BQUEsR0FBQXNCLGdCQUFBIiwiaWdub3JlTGlzdCI6W119