From 71703729764304c7e76e4044edfc0d7c625469ac Mon Sep 17 00:00:00 2001 From: Zack Rauen Date: Fri, 24 Jul 2020 03:35:20 -0400 Subject: [PATCH] no longer require server for local dev --- dist/index.js | 114 ++++++++++++++++++++++---------------------- dist/index.min.js | 2 +- package.json | 3 +- src/data/config.js | 1 + src/modules/core.js | 14 +++++- 5 files changed, 74 insertions(+), 60 deletions(-) diff --git a/dist/index.js b/dist/index.js index 005e7c97..c4b02905 100644 --- a/dist/index.js +++ b/dist/index.js @@ -94,7 +94,7 @@ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\n\nconst MessageContent = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.default && m.default.displayName && m.default.displayName == \"Message\");\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ColoredText extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"ColoredText\";\n }\n\n get category() {\n return \"appearance\";\n }\n\n get id() {\n return \"coloredText\";\n }\n\n enabled() {\n this.injectColoredText();\n }\n\n disabled() {\n this.unpatchAll();\n }\n\n injectColoredText() {\n this.after(MessageContent.prototype, \"render\", (thisObject, args, retVal) => {\n this.after(retVal.props, \"children\", {\n silent: true,\n after: ({\n returnValue\n }) => {\n const markup = returnValue.props.children[1];\n const roleColor = thisObject.props.message.colorString;\n if (markup && roleColor) markup.props.style = {\n color: roleColor\n };\n }\n });\n });\n }\n\n removeColoredText() {\n document.querySelectorAll(\".markup-2BOw-j\").forEach(elem => {\n elem.style.setProperty(\"color\", \"\");\n });\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvYXBwZWFyYW5jZS9jb2xvcmVkdGV4dC5qcz9lNDczIl0sIm5hbWVzIjpbIk1lc3NhZ2VDb250ZW50IiwiV2VicGFja01vZHVsZXMiLCJnZXRNb2R1bGUiLCJtIiwiZGVmYXVsdCIsImRpc3BsYXlOYW1lIiwiQ29sb3JlZFRleHQiLCJCdWlsdGluIiwibmFtZSIsImNhdGVnb3J5IiwiaWQiLCJlbmFibGVkIiwiaW5qZWN0Q29sb3JlZFRleHQiLCJkaXNhYmxlZCIsInVucGF0Y2hBbGwiLCJhZnRlciIsInByb3RvdHlwZSIsInRoaXNPYmplY3QiLCJhcmdzIiwicmV0VmFsIiwicHJvcHMiLCJzaWxlbnQiLCJyZXR1cm5WYWx1ZSIsIm1hcmt1cCIsImNoaWxkcmVuIiwicm9sZUNvbG9yIiwibWVzc2FnZSIsImNvbG9yU3RyaW5nIiwic3R5bGUiLCJjb2xvciIsInJlbW92ZUNvbG9yZWRUZXh0IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsImVsZW0iLCJzZXRQcm9wZXJ0eSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBLE1BQU1BLGNBQWMsR0FBR0Msc0RBQWMsQ0FBQ0MsU0FBZixDQUF5QkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLE9BQUYsSUFBYUQsQ0FBQyxDQUFDQyxPQUFGLENBQVVDLFdBQXZCLElBQXNDRixDQUFDLENBQUNDLE9BQUYsQ0FBVUMsV0FBVixJQUF5QixTQUE3RixDQUF2QjtBQUVlLG1FQUFJLE1BQU1DLFdBQU4sU0FBMEJDLHdEQUExQixDQUFrQztBQUNqRCxNQUFJQyxJQUFKLEdBQVc7QUFBQyxXQUFPLGFBQVA7QUFBc0I7O0FBQ2xDLE1BQUlDLFFBQUosR0FBZTtBQUFDLFdBQU8sWUFBUDtBQUFxQjs7QUFDckMsTUFBSUMsRUFBSixHQUFTO0FBQUMsV0FBTyxhQUFQO0FBQXNCOztBQUVoQ0MsU0FBTyxHQUFHO0FBQ04sU0FBS0MsaUJBQUw7QUFDSDs7QUFFREMsVUFBUSxHQUFHO0FBQ1AsU0FBS0MsVUFBTDtBQUNIOztBQUVERixtQkFBaUIsR0FBRztBQUNoQixTQUFLRyxLQUFMLENBQVdmLGNBQWMsQ0FBQ2dCLFNBQTFCLEVBQXFDLFFBQXJDLEVBQStDLENBQUNDLFVBQUQsRUFBYUMsSUFBYixFQUFtQkMsTUFBbkIsS0FBOEI7QUFDekUsV0FBS0osS0FBTCxDQUFXSSxNQUFNLENBQUNDLEtBQWxCLEVBQXlCLFVBQXpCLEVBQXFDO0FBQUNDLGNBQU0sRUFBRSxJQUFUO0FBQWVOLGFBQUssRUFBRSxDQUFDO0FBQUNPO0FBQUQsU0FBRCxLQUFtQjtBQUMxRSxnQkFBTUMsTUFBTSxHQUFHRCxXQUFXLENBQUNGLEtBQVosQ0FBa0JJLFFBQWxCLENBQTJCLENBQTNCLENBQWY7QUFDQSxnQkFBTUMsU0FBUyxHQUFHUixVQUFVLENBQUNHLEtBQVgsQ0FBaUJNLE9BQWpCLENBQXlCQyxXQUEzQztBQUNBLGNBQUlKLE1BQU0sSUFBSUUsU0FBZCxFQUF5QkYsTUFBTSxDQUFDSCxLQUFQLENBQWFRLEtBQWIsR0FBcUI7QUFBQ0MsaUJBQUssRUFBRUo7QUFBUixXQUFyQjtBQUM1QjtBQUpvQyxPQUFyQztBQUtILEtBTkQ7QUFPSDs7QUFFREssbUJBQWlCLEdBQUc7QUFDaEJDLFlBQVEsQ0FBQ0MsZ0JBQVQsQ0FBMEIsZ0JBQTFCLEVBQTRDQyxPQUE1QyxDQUFvREMsSUFBSSxJQUFJO0FBQ3hEQSxVQUFJLENBQUNOLEtBQUwsQ0FBV08sV0FBWCxDQUF1QixPQUF2QixFQUFnQyxFQUFoQztBQUNILEtBRkQ7QUFHSDs7QUEzQmdELENBQXRDLEVBQWYiLCJmaWxlIjoiLi9zcmMvYnVpbHRpbnMvYXBwZWFyYW5jZS9jb2xvcmVkdGV4dC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCdWlsdGluIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL2J1aWx0aW5cIjtcclxuaW1wb3J0IHtXZWJwYWNrTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmNvbnN0IE1lc3NhZ2VDb250ZW50ID0gV2VicGFja01vZHVsZXMuZ2V0TW9kdWxlKG0gPT4gbS5kZWZhdWx0ICYmIG0uZGVmYXVsdC5kaXNwbGF5TmFtZSAmJiBtLmRlZmF1bHQuZGlzcGxheU5hbWUgPT0gXCJNZXNzYWdlXCIpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIENvbG9yZWRUZXh0IGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJDb2xvcmVkVGV4dFwiO31cclxuICAgIGdldCBjYXRlZ29yeSgpIHtyZXR1cm4gXCJhcHBlYXJhbmNlXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcImNvbG9yZWRUZXh0XCI7fVxyXG5cclxuICAgIGVuYWJsZWQoKSB7XHJcbiAgICAgICAgdGhpcy5pbmplY3RDb2xvcmVkVGV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVkKCkge1xyXG4gICAgICAgIHRoaXMudW5wYXRjaEFsbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGluamVjdENvbG9yZWRUZXh0KCkge1xyXG4gICAgICAgIHRoaXMuYWZ0ZXIoTWVzc2FnZUNvbnRlbnQucHJvdG90eXBlLCBcInJlbmRlclwiLCAodGhpc09iamVjdCwgYXJncywgcmV0VmFsKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWZ0ZXIocmV0VmFsLnByb3BzLCBcImNoaWxkcmVuXCIsIHtzaWxlbnQ6IHRydWUsIGFmdGVyOiAoe3JldHVyblZhbHVlfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWFya3VwID0gcmV0dXJuVmFsdWUucHJvcHMuY2hpbGRyZW5bMV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCByb2xlQ29sb3IgPSB0aGlzT2JqZWN0LnByb3BzLm1lc3NhZ2UuY29sb3JTdHJpbmc7XHJcbiAgICAgICAgICAgICAgICBpZiAobWFya3VwICYmIHJvbGVDb2xvcikgbWFya3VwLnByb3BzLnN0eWxlID0ge2NvbG9yOiByb2xlQ29sb3J9O1xyXG4gICAgICAgICAgICB9fSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlQ29sb3JlZFRleHQoKSB7XHJcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5tYXJrdXAtMkJPdy1qXCIpLmZvckVhY2goZWxlbSA9PiB7XHJcbiAgICAgICAgICAgIGVsZW0uc3R5bGUuc2V0UHJvcGVydHkoXCJjb2xvclwiLCBcIlwiKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/appearance/coloredtext.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\n\nconst MessageContent = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.default && m.default.displayName && m.default.displayName == \"Message\");\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ColoredText extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"ColoredText\";\n }\n\n get category() {\n return \"appearance\";\n }\n\n get id() {\n return \"coloredText\";\n }\n\n enabled() {\n this.injectColoredText();\n }\n\n disabled() {\n this.unpatchAll();\n }\n\n injectColoredText() {\n this.after(MessageContent.prototype, \"render\", (thisObject, args, retVal) => {\n this.after(retVal.props, \"children\", {\n silent: true,\n after: ({\n returnValue\n }) => {\n const markup = returnValue.props.children[1];\n const roleColor = thisObject.props.message.colorString;\n if (markup && roleColor) markup.props.style = {\n color: roleColor\n };\n }\n });\n });\n }\n\n removeColoredText() {\n document.querySelectorAll(\".markup-2BOw-j\").forEach(elem => {\n elem.style.setProperty(\"color\", \"\");\n });\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvYXBwZWFyYW5jZS9jb2xvcmVkdGV4dC5qcz9lNDczIl0sIm5hbWVzIjpbIk1lc3NhZ2VDb250ZW50IiwiV2VicGFja01vZHVsZXMiLCJnZXRNb2R1bGUiLCJtIiwiZGVmYXVsdCIsImRpc3BsYXlOYW1lIiwiQ29sb3JlZFRleHQiLCJCdWlsdGluIiwibmFtZSIsImNhdGVnb3J5IiwiaWQiLCJlbmFibGVkIiwiaW5qZWN0Q29sb3JlZFRleHQiLCJkaXNhYmxlZCIsInVucGF0Y2hBbGwiLCJhZnRlciIsInByb3RvdHlwZSIsInRoaXNPYmplY3QiLCJhcmdzIiwicmV0VmFsIiwicHJvcHMiLCJzaWxlbnQiLCJyZXR1cm5WYWx1ZSIsIm1hcmt1cCIsImNoaWxkcmVuIiwicm9sZUNvbG9yIiwibWVzc2FnZSIsImNvbG9yU3RyaW5nIiwic3R5bGUiLCJjb2xvciIsInJlbW92ZUNvbG9yZWRUZXh0IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsImVsZW0iLCJzZXRQcm9wZXJ0eSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBLE1BQU1BLGNBQWMsR0FBR0Msa0VBQWMsQ0FBQ0MsU0FBZixDQUF5QkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLE9BQUYsSUFBYUQsQ0FBQyxDQUFDQyxPQUFGLENBQVVDLFdBQXZCLElBQXNDRixDQUFDLENBQUNDLE9BQUYsQ0FBVUMsV0FBVixJQUF5QixTQUE3RixDQUF2QjtBQUVlLG1FQUFJLE1BQU1DLFdBQU4sU0FBMEJDLHdEQUExQixDQUFrQztBQUNqRCxNQUFJQyxJQUFKLEdBQVc7QUFBQyxXQUFPLGFBQVA7QUFBc0I7O0FBQ2xDLE1BQUlDLFFBQUosR0FBZTtBQUFDLFdBQU8sWUFBUDtBQUFxQjs7QUFDckMsTUFBSUMsRUFBSixHQUFTO0FBQUMsV0FBTyxhQUFQO0FBQXNCOztBQUVoQ0MsU0FBTyxHQUFHO0FBQ04sU0FBS0MsaUJBQUw7QUFDSDs7QUFFREMsVUFBUSxHQUFHO0FBQ1AsU0FBS0MsVUFBTDtBQUNIOztBQUVERixtQkFBaUIsR0FBRztBQUNoQixTQUFLRyxLQUFMLENBQVdmLGNBQWMsQ0FBQ2dCLFNBQTFCLEVBQXFDLFFBQXJDLEVBQStDLENBQUNDLFVBQUQsRUFBYUMsSUFBYixFQUFtQkMsTUFBbkIsS0FBOEI7QUFDekUsV0FBS0osS0FBTCxDQUFXSSxNQUFNLENBQUNDLEtBQWxCLEVBQXlCLFVBQXpCLEVBQXFDO0FBQUNDLGNBQU0sRUFBRSxJQUFUO0FBQWVOLGFBQUssRUFBRSxDQUFDO0FBQUNPO0FBQUQsU0FBRCxLQUFtQjtBQUMxRSxnQkFBTUMsTUFBTSxHQUFHRCxXQUFXLENBQUNGLEtBQVosQ0FBa0JJLFFBQWxCLENBQTJCLENBQTNCLENBQWY7QUFDQSxnQkFBTUMsU0FBUyxHQUFHUixVQUFVLENBQUNHLEtBQVgsQ0FBaUJNLE9BQWpCLENBQXlCQyxXQUEzQztBQUNBLGNBQUlKLE1BQU0sSUFBSUUsU0FBZCxFQUF5QkYsTUFBTSxDQUFDSCxLQUFQLENBQWFRLEtBQWIsR0FBcUI7QUFBQ0MsaUJBQUssRUFBRUo7QUFBUixXQUFyQjtBQUM1QjtBQUpvQyxPQUFyQztBQUtILEtBTkQ7QUFPSDs7QUFFREssbUJBQWlCLEdBQUc7QUFDaEJDLFlBQVEsQ0FBQ0MsZ0JBQVQsQ0FBMEIsZ0JBQTFCLEVBQTRDQyxPQUE1QyxDQUFvREMsSUFBSSxJQUFJO0FBQ3hEQSxVQUFJLENBQUNOLEtBQUwsQ0FBV08sV0FBWCxDQUF1QixPQUF2QixFQUFnQyxFQUFoQztBQUNILEtBRkQ7QUFHSDs7QUEzQmdELENBQXRDLEVBQWYiLCJmaWxlIjoiLi9zcmMvYnVpbHRpbnMvYXBwZWFyYW5jZS9jb2xvcmVkdGV4dC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCdWlsdGluIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL2J1aWx0aW5cIjtcclxuaW1wb3J0IHtXZWJwYWNrTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmNvbnN0IE1lc3NhZ2VDb250ZW50ID0gV2VicGFja01vZHVsZXMuZ2V0TW9kdWxlKG0gPT4gbS5kZWZhdWx0ICYmIG0uZGVmYXVsdC5kaXNwbGF5TmFtZSAmJiBtLmRlZmF1bHQuZGlzcGxheU5hbWUgPT0gXCJNZXNzYWdlXCIpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIENvbG9yZWRUZXh0IGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJDb2xvcmVkVGV4dFwiO31cclxuICAgIGdldCBjYXRlZ29yeSgpIHtyZXR1cm4gXCJhcHBlYXJhbmNlXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcImNvbG9yZWRUZXh0XCI7fVxyXG5cclxuICAgIGVuYWJsZWQoKSB7XHJcbiAgICAgICAgdGhpcy5pbmplY3RDb2xvcmVkVGV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVkKCkge1xyXG4gICAgICAgIHRoaXMudW5wYXRjaEFsbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGluamVjdENvbG9yZWRUZXh0KCkge1xyXG4gICAgICAgIHRoaXMuYWZ0ZXIoTWVzc2FnZUNvbnRlbnQucHJvdG90eXBlLCBcInJlbmRlclwiLCAodGhpc09iamVjdCwgYXJncywgcmV0VmFsKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWZ0ZXIocmV0VmFsLnByb3BzLCBcImNoaWxkcmVuXCIsIHtzaWxlbnQ6IHRydWUsIGFmdGVyOiAoe3JldHVyblZhbHVlfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWFya3VwID0gcmV0dXJuVmFsdWUucHJvcHMuY2hpbGRyZW5bMV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCByb2xlQ29sb3IgPSB0aGlzT2JqZWN0LnByb3BzLm1lc3NhZ2UuY29sb3JTdHJpbmc7XHJcbiAgICAgICAgICAgICAgICBpZiAobWFya3VwICYmIHJvbGVDb2xvcikgbWFya3VwLnByb3BzLnN0eWxlID0ge2NvbG9yOiByb2xlQ29sb3J9O1xyXG4gICAgICAgICAgICB9fSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlQ29sb3JlZFRleHQoKSB7XHJcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5tYXJrdXAtMkJPdy1qXCIpLmZvckVhY2goZWxlbSA9PiB7XHJcbiAgICAgICAgICAgIGVsZW0uc3R5bGUuc2V0UHJvcGVydHkoXCJjb2xvclwiLCBcIlwiKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/appearance/coloredtext.js\n"); /***/ }), @@ -154,7 +154,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cus /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _ui_customcss_csseditor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../ui/customcss/csseditor */ \"./src/ui/customcss/csseditor.jsx\");\n/* harmony import */ var _ui_floatingwindows__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../ui/floatingwindows */ \"./src/ui/floatingwindows.js\");\n/* harmony import */ var _ui_settings_title__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../ui/settings/title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _modules_utilities__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../modules/utilities */ \"./src/modules/utilities.js\");\n\n\n\n\n\n\n\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nconst electron = __webpack_require__(/*! electron */ \"electron\");\n\nconst UserSettings = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"updateAccount\");\nconst Dispatcher = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"dirtyDispatch\");\nconst ActionTypes = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"ActionTypes\").ActionTypes;\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class CustomCSS extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"Custom CSS\";\n }\n\n get category() {\n return \"customcss\";\n }\n\n get id() {\n return \"customcss\";\n }\n\n get startDetached() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(this.collection, this.category, \"openAction\") == \"detached\";\n }\n\n get nativeOpen() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(this.collection, this.category, \"openAction\") == \"system\";\n }\n\n constructor() {\n super();\n this.savedCss = \"\";\n this.insertedCss = \"\";\n this.isDetached = false;\n }\n\n async enabled() {\n if (!window.ace) {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOMManager\"].injectScript(\"ace-script\", \"https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js\").then(() => {\n if (window.require.original) window.require = window.require.original;\n });\n }\n\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].registerPanel(this.id, modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Panels.customcss, {\n order: 2,\n element: () => [/*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_ui_settings_title__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n text: modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].CustomCSS.editorTitle\n }), modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_ui_customcss_csseditor__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n css: this.savedCss,\n save: this.saveCSS.bind(this),\n update: this.insertCSS.bind(this),\n openNative: this.openNative.bind(this),\n openDetached: this.openDetached.bind(this),\n onChange: this.onChange.bind(this)\n })],\n onClick: thisObject => {\n if (this.isDetached) return;\n if (this.nativeOpen) return this.openNative();else if (this.startDetached) return this.openDetached();\n const settingsView = _modules_utilities__WEBPACK_IMPORTED_MODULE_5__[\"default\"].findInRenderTree(thisObject._reactInternalFiber, m => m && m.onSetSection, {\n walkable: [\"child\", \"memoizedProps\", \"props\", \"children\"]\n });\n if (settingsView && settingsView.onSetSection) settingsView.onSetSection(this.id);\n }\n });\n this.loadCSS();\n this.insertCSS(this.savedCss);\n this.watchContent();\n }\n\n disabled() {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].removePanel(this.id);\n this.unwatchContent();\n }\n\n watchContent() {\n if (this.watcher) return this.error(\"Already watching content.\");\n const timeCache = {};\n this.log(\"Starting to watch content.\");\n this.watcher = fs.watch(modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS, {\n persistent: false\n }, async (eventType, filename) => {\n if (!eventType || !filename) return;\n await new Promise(r => setTimeout(r, 50));\n\n try {\n fs.statSync(modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS);\n } catch (err) {\n if (err.code !== \"ENOENT\") return;\n delete timeCache[filename];\n this.saveCSS(\"\");\n }\n\n const stats = fs.statSync(modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS);\n if (!stats || !stats.mtime || !stats.mtime.getTime()) return;\n if (typeof stats.mtime.getTime() !== \"number\") return;\n if (timeCache[filename] == stats.mtime.getTime()) return;\n timeCache[filename] = stats.mtime.getTime();\n\n if (eventType == \"change\") {\n const newCSS = modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].loadCustomCSS();\n if (newCSS == this.savedCss) return;\n this.savedCss = newCSS;\n this.insertCSS(this.savedCss);\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].emit(\"customcss-updated\", this.savedCss);\n }\n });\n }\n\n unwatchContent() {\n if (!this.watcher) return this.error(\"Was not watching content.\");\n this.watcher.close();\n delete this.watcher;\n this.log(\"No longer watching content.\");\n }\n\n onChange(value) {\n if (!modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(\"settings\", \"customcss\", \"liveUpdate\")) return;\n this.insertCSS(value);\n this.saveCSS(value);\n }\n\n loadCSS() {\n this.savedCss = modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].loadCustomCSS();\n }\n\n insertCSS(newCss) {\n if (typeof newCss === \"undefined\") newCss = this.insertedCss;else this.insertedCss = newCss;\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOMManager\"].updateCustomCSS(newCss);\n }\n\n saveCSS(newCss) {\n if (typeof newCss !== \"undefined\") this.savedCss = newCss;\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].saveCustomCSS(this.savedCss);\n }\n\n openNative() {\n electron.shell.openExternal(`file://${modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS}`);\n }\n\n openDetached(currentCSS) {\n const editorRef = modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createRef();\n const editor = modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_ui_customcss_csseditor__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n id: \"bd-floating-editor\",\n ref: editorRef,\n css: currentCSS,\n save: this.saveCSS.bind(this),\n update: this.insertCSS.bind(this),\n openNative: this.openNative.bind(this),\n onChange: this.onChange.bind(this)\n });\n _ui_floatingwindows__WEBPACK_IMPORTED_MODULE_3__[\"default\"].open({\n onClose: () => {\n this.isDetached = false;\n },\n onResize: () => {\n if (!editorRef || !editorRef.current || !editorRef.current.resize) return;\n editorRef.current.resize();\n },\n title: modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].CustomCSS.editorTitle,\n id: \"floating-editor-window\",\n height: 470,\n width: 410,\n center: true,\n resizable: true,\n children: editor,\n confirmClose: () => {\n if (!editorRef || !editorRef.current) return false;\n return editorRef.current.hasUnsavedChanges;\n },\n confirmationText: modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].CustomCSS.confirmationText\n });\n this.isDetached = true;\n UserSettings.close();\n Dispatcher.dirtyDispatch({\n type: ActionTypes.LAYER_POP\n });\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvY3VzdG9tY3NzLmpzP2MzZjIiXSwibmFtZXMiOlsiZnMiLCJyZXF1aXJlIiwiZWxlY3Ryb24iLCJVc2VyU2V0dGluZ3MiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5UHJvcHMiLCJEaXNwYXRjaGVyIiwiQWN0aW9uVHlwZXMiLCJDdXN0b21DU1MiLCJCdWlsdGluIiwibmFtZSIsImNhdGVnb3J5IiwiaWQiLCJzdGFydERldGFjaGVkIiwiU2V0dGluZ3MiLCJnZXQiLCJjb2xsZWN0aW9uIiwibmF0aXZlT3BlbiIsImNvbnN0cnVjdG9yIiwic2F2ZWRDc3MiLCJpbnNlcnRlZENzcyIsImlzRGV0YWNoZWQiLCJlbmFibGVkIiwid2luZG93IiwiYWNlIiwiRE9NTWFuYWdlciIsImluamVjdFNjcmlwdCIsInRoZW4iLCJvcmlnaW5hbCIsInJlZ2lzdGVyUGFuZWwiLCJTdHJpbmdzIiwiUGFuZWxzIiwiY3VzdG9tY3NzIiwib3JkZXIiLCJlbGVtZW50IiwiZWRpdG9yVGl0bGUiLCJSZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJDU1NFZGl0b3IiLCJjc3MiLCJzYXZlIiwic2F2ZUNTUyIsImJpbmQiLCJ1cGRhdGUiLCJpbnNlcnRDU1MiLCJvcGVuTmF0aXZlIiwib3BlbkRldGFjaGVkIiwib25DaGFuZ2UiLCJvbkNsaWNrIiwidGhpc09iamVjdCIsInNldHRpbmdzVmlldyIsIlV0aWxpdGllcyIsImZpbmRJblJlbmRlclRyZWUiLCJfcmVhY3RJbnRlcm5hbEZpYmVyIiwibSIsIm9uU2V0U2VjdGlvbiIsIndhbGthYmxlIiwibG9hZENTUyIsIndhdGNoQ29udGVudCIsImRpc2FibGVkIiwicmVtb3ZlUGFuZWwiLCJ1bndhdGNoQ29udGVudCIsIndhdGNoZXIiLCJlcnJvciIsInRpbWVDYWNoZSIsImxvZyIsIndhdGNoIiwiRGF0YVN0b3JlIiwiY3VzdG9tQ1NTIiwicGVyc2lzdGVudCIsImV2ZW50VHlwZSIsImZpbGVuYW1lIiwiUHJvbWlzZSIsInIiLCJzZXRUaW1lb3V0Iiwic3RhdFN5bmMiLCJlcnIiLCJjb2RlIiwic3RhdHMiLCJtdGltZSIsImdldFRpbWUiLCJuZXdDU1MiLCJsb2FkQ3VzdG9tQ1NTIiwiRXZlbnRzIiwiZW1pdCIsImNsb3NlIiwidmFsdWUiLCJuZXdDc3MiLCJ1cGRhdGVDdXN0b21DU1MiLCJzYXZlQ3VzdG9tQ1NTIiwic2hlbGwiLCJvcGVuRXh0ZXJuYWwiLCJjdXJyZW50Q1NTIiwiZWRpdG9yUmVmIiwiY3JlYXRlUmVmIiwiZWRpdG9yIiwicmVmIiwiRmxvYXRpbmdXaW5kb3dzIiwib3BlbiIsIm9uQ2xvc2UiLCJvblJlc2l6ZSIsImN1cnJlbnQiLCJyZXNpemUiLCJ0aXRsZSIsImhlaWdodCIsIndpZHRoIiwiY2VudGVyIiwicmVzaXphYmxlIiwiY2hpbGRyZW4iLCJjb25maXJtQ2xvc2UiLCJoYXNVbnNhdmVkQ2hhbmdlcyIsImNvbmZpcm1hdGlvblRleHQiLCJkaXJ0eURpc3BhdGNoIiwidHlwZSIsIkxBWUVSX1BPUCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTUEsRUFBRSxHQUFHQyxtQkFBTyxDQUFDLGNBQUQsQ0FBbEI7O0FBQ0EsTUFBTUMsUUFBUSxHQUFHRCxtQkFBTyxDQUFDLDBCQUFELENBQXhCOztBQUNBLE1BQU1FLFlBQVksR0FBR0Msc0RBQWMsQ0FBQ0MsVUFBZixDQUEwQixlQUExQixDQUFyQjtBQUNBLE1BQU1DLFVBQVUsR0FBR0Ysc0RBQWMsQ0FBQ0MsVUFBZixDQUEwQixlQUExQixDQUFuQjtBQUNBLE1BQU1FLFdBQVcsR0FBR0gsc0RBQWMsQ0FBQ0MsVUFBZixDQUEwQixhQUExQixFQUF5Q0UsV0FBN0Q7QUFFZSxtRUFBSSxNQUFNQyxTQUFOLFNBQXdCQyx3REFBeEIsQ0FBZ0M7QUFDL0MsTUFBSUMsSUFBSixHQUFXO0FBQUMsV0FBTyxZQUFQO0FBQXFCOztB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QUlqQitFLGNBQVEsRUFBRSxNQUFNO0FBQ1osWUFBSSxDQUFDUCxTQUFELElBQWMsQ0FBQ0EsU0FBUyxDQUFDUSxPQUF6QixJQUFvQyxDQUFDUixTQUFTLENBQUNRLE9BQVYsQ0FBa0JDLE1BQTNELEVBQW1FO0FBQ25FVCxpQkFBUyxDQUFDUSxPQUFWLENBQWtCQyxNQUFsQjtBQUNILE9BUGdCO0FBUWpCQyxXQUFLLEVBQUV6RSwrQ0FBTyxDQUFDdEIsU0FBUixDQUFrQjJCLFdBUlI7QUFTakJ2QixRQUFFLEVBQUUsd0JBVGE7QUFVakI0RixZQUFNLEVBQUUsR0FWUztBQVdqQkMsV0FBSyxFQUFFLEdBWFU7QUFZakJDLFlBQU0sRUFBRSxJQVpTO0FBYWpCQyxlQUFTLEVBQUUsSUFiTTtBQWNqQkMsY0FBUSxFQUFFYixNQWRPO0FBZWpCYyxrQkFBWSxFQUFFLE1BQU07QUFDaEIsWUFBSSxDQUFDaEIsU0FBRCxJQUFjLENBQUNBLFNBQVMsQ0FBQ1EsT0FBN0IsRUFBc0MsT0FBTyxLQUFQO0FBQ3RDLGVBQU9SLFNBQVMsQ0FBQ1EsT0FBVixDQUFrQlMsaUJBQXpCO0FBQ0gsT0FsQmdCO0FBbUJqQkMsc0JBQWdCLEVBQUVqRiwrQ0FBTyxDQUFDdEIsU0FBUixDQUFrQnVHO0FBbkJuQixLQUFyQjtBQXFCQSxTQUFLMUYsVUFBTCxHQUFrQixJQUFsQjtBQUNBbEIsZ0JBQVksQ0FBQ2tGLEtBQWI7QUFDQS9FLGNBQVUsQ0FBQzBHLGFBQVgsQ0FBeUI7QUFBQ0MsVUFBSSxFQUFFMUcsV0FBVyxDQUFDMkc7QUFBbkIsS0FBekI7QUFDSDs7QUFoSjhDLENBQXBDLEVBQWYiLCJmaWxlIjoiLi9zcmMvYnVpbHRpbnMvY3VzdG9tY3NzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1aWx0aW4gZnJvbSBcIi4uL3N0cnVjdHMvYnVpbHRpblwiO1xyXG5pbXBvcnQge1NldHRpbmdzLCBEYXRhU3RvcmUsIFJlYWN0LCBXZWJwYWNrTW9kdWxlcywgRXZlbnRzLCBET01NYW5hZ2VyLCBTdHJpbmdzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgQ1NTRWRpdG9yIGZyb20gXCIuLi91aS9jdXN0b21jc3MvY3NzZWRpdG9yXCI7XHJcbmltcG9ydCBGbG9hdGluZ1dpbmRvd3MgZnJvbSBcIi4uL3VpL2Zsb2F0aW5nd2luZG93c1wiO1xyXG5pbXBvcnQgU2V0dGluZ3NUaXRsZSBmcm9tIFwiLi4vdWkvc2V0dGluZ3MvdGl0bGVcIjtcclxuaW1wb3J0IFV0aWxpdGllcyBmcm9tIFwiLi4vbW9kdWxlcy91dGlsaXRpZXNcIjtcclxuXHJcbmNvbnN0IGZzID0gcmVxdWlyZShcImZzXCIpO1xyXG5jb25zdCBlbGVjdHJvbiA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKTtcclxuY29uc3QgVXNlclNldHRpbmdzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInVwZGF0ZUFjY291bnRcIik7XHJcbmNvbnN0IERpc3BhdGNoZXIgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZGlydHlEaXNwYXRjaFwiKTtcclxuY29uc3QgQWN0aW9uVHlwZXMgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiQWN0aW9uVHlwZXNcIikuQWN0aW9uVHlwZXM7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgQ3VzdG9tQ1NTIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJDdXN0b20gQ1NTXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImN1c3RvbWNzc1wiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJjdXN0b21jc3NcIjt9XHJcbiAgICBnZXQgc3RhcnREZXRhY2hlZCgpIHtyZXR1cm4gU2V0dGluZ3MuZ2V0KHRoaXMuY29sbGVjdGlvbiwgdGhpcy5jYXRlZ29yeSwgXCJvcGVuQWN0aW9uXCIpID09IFwiZGV0YWNoZWRcIjt9XHJcbiAgICBnZXQgbmF0aXZlT3BlbigpIHtyZXR1cm4gU2V0dGluZ3MuZ2V0KHRoaXMuY29sbGVjdGlvbiwgdGhpcy5jYXRlZ29yeSwgXCJvcGVuQWN0aW9uXCIpID09IFwic3lzdGVtXCI7fVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5zYXZlZENzcyA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5pbnNlcnRlZENzcyA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5pc0RldGFjaGVkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZW5hYmxlZCgpIHtcclxuICAgICAgICBpZiAoIXdpbmRvdy5hY2UpIHtcclxuICAgICAgICAgICAgRE9NTWFuYWdlci5pbmplY3RTY3JpcHQoXCJhY2Utc2NyaXB0XCIsIFwiaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvYWNlLzEuMi45L2FjZS5qc1wiKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh3aW5kb3cucmVxdWlyZS5vcmlnaW5hbCkgd2luZG93LnJlcXVpcmUgPSB3aW5kb3cucmVxdWlyZS5vcmlnaW5hbDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFNldHRpbmdzLnJlZ2lzdGVyUGFuZWwodGhpcy5pZCwgU3RyaW5ncy5QYW5lbHMuY3VzdG9tY3NzLCB7XHJcbiAgICAgICAgICAgIG9yZGVyOiAyLFxyXG4gICAgICAgICAgICBlbGVtZW50OiAoKSA9PiBbPFNldHRpbmdzVGl0bGUgdGV4dD17U3RyaW5ncy5DdXN0b21DU1MuZWRpdG9yVGl0bGV9IC8+LCBSZWFjdC5jcmVhdGVFbGVtZW50KENTU0VkaXRvciwge1xyXG4gICAgICAgICAgICAgICAgY3NzOiB0aGlzLnNhdmVkQ3NzLFxyXG4gICAgICAgICAgICAgICAgc2F2ZTogdGhpcy5zYXZlQ1NTLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICB1cGRhdGU6IHRoaXMuaW5zZXJ0Q1NTLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICBvcGVuTmF0aXZlOiB0aGlzLm9wZW5OYXRpdmUuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICAgIG9wZW5EZXRhY2hlZDogdGhpcy5vcGVuRGV0YWNoZWQuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcylcclxuICAgICAgICAgICAgfSldLFxyXG4gICAgICAgICAgICBvbkNsaWNrOiAodGhpc09iamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNEZXRhY2hlZCkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubmF0aXZlT3BlbikgcmV0dXJuIHRoaXMub3Blbk5hdGl2ZSgpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zdGFydERldGFjaGVkKSByZXR1cm4gdGhpcy5vcGVuRGV0YWNoZWQoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNldHRpbmdzVmlldyA9IFV0aWxpdGllcy5maW5kSW5SZW5kZXJUcmVlKHRoaXNPYmplY3QuX3JlYWN0SW50ZXJuYWxGaWJlciwgbSA9PiBtICYmIG0ub25TZXRTZWN0aW9uLCB7d2Fsa2FibGU6IFtcImNoaWxkXCIsIFwibWVtb2l6ZWRQcm9wc1wiLCBcInByb3BzXCIsIFwiY2hpbGRyZW5cIl19KTtcclxuICAgICAgICAgICAgICAgIGlmIChzZXR0aW5nc1ZpZXcgJiYgc2V0dGluZ3NWaWV3Lm9uU2V0U2VjdGlvbikgc2V0dGluZ3NWaWV3Lm9uU2V0U2VjdGlvbih0aGlzLmlkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubG9hZENTUygpO1xyXG4gICAgICAgIHRoaXMuaW5zZXJ0Q1NTKHRoaXMuc2F2ZWRDc3MpO1xyXG4gICAgICAgIHRoaXMud2F0Y2hDb250ZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgU2V0dGluZ3MucmVtb3ZlUGFuZWwodGhpcy5pZCk7XHJcbiAgICAgICAgdGhpcy51bndhdGNoQ29udGVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHdhdGNoQ29udGVudCgpIHtcclxuICAgICAgICBpZiAodGhpcy53YXRjaGVyKSByZXR1cm4gdGhpcy5lcnJvcihcIkFscmVhZHkgd2F0Y2hpbmcgY29udGVudC5cIik7XHJcbiAgICAgICAgY29uc3QgdGltZUNhY2hlID0ge307XHJcbiAgICAgICAgdGhpcy5sb2coXCJTdGFydGluZyB0byB3YXRjaCBjb250ZW50LlwiKTtcclxuICAgICAgICB0aGlzLndhdGNoZXIgPSBmcy53YXRjaChEYXRhU3RvcmUuY3VzdG9tQ1NTLCB7cGVyc2lzdGVudDogZmFsc2V9LCBhc3luYyAoZXZlbnRUeXBlLCBmaWxlbmFtZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWV2ZW50VHlwZSB8fCAhZmlsZW5hbWUpIHJldHVybjtcclxuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDUwKSk7XHJcbiAgICAgICAgICAgIHRyeSB7ZnMuc3RhdFN5bmMoRGF0YVN0b3JlLmN1c3RvbUNTUyk7fVxyXG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyLmNvZGUgIT09IFwiRU5PRU5UXCIpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSB0aW1lQ2FjaGVbZmlsZW5hbWVdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zYXZlQ1NTKFwiXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXRzID0gZnMuc3RhdFN5bmMoRGF0YVN0b3JlLmN1c3RvbUNTUyk7XHJcbiAgICAgICAgICAgIGlmICghc3RhdHMgfHwgIXN0YXRzLm10aW1lIHx8ICFzdGF0cy5tdGltZS5nZXRUaW1lKCkpIHJldHVybjtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZihzdGF0cy5tdGltZS5nZXRUaW1lKCkpICE9PSBcIm51bWJlclwiKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmICh0aW1lQ2FjaGVbZmlsZW5hbWVdID09IHN0YXRzLm10aW1lLmdldFRpbWUoKSkgcmV0dXJuO1xyXG4gICAgICAgICAgICB0aW1lQ2FjaGVbZmlsZW5hbWVdID0gc3RhdHMubXRpbWUuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICBpZiAoZXZlbnRUeXBlID09IFwiY2hhbmdlXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NTUyA9IERhdGFTdG9yZS5sb2FkQ3VzdG9tQ1NTKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobmV3Q1NTID09IHRoaXMuc2F2ZWRDc3MpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZWRDc3MgPSBuZXdDU1M7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluc2VydENTUyh0aGlzLnNhdmVkQ3NzKTtcclxuICAgICAgICAgICAgICAgIEV2ZW50cy5lbWl0KFwiY3VzdG9tY3NzLXVwZGF0ZWRcIiwgdGhpcy5zYXZlZENzcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1bndhdGNoQ29udGVudCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMud2F0Y2hlcikgcmV0dXJuIHRoaXMuZXJyb3IoXCJXYXMgbm90IHdhdGNoaW5nIGNvbnRlbnQuXCIpO1xyXG4gICAgICAgIHRoaXMud2F0Y2hlci5jbG9zZSgpO1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLndhdGNoZXI7XHJcbiAgICAgICAgdGhpcy5sb2coXCJObyBsb25nZXIgd2F0Y2hpbmcgY29udGVudC5cIik7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UodmFsdWUpIHtcclxuICAgICAgICBpZiAoIVNldHRpbmdzLmdldChcInNldHRpbmdzXCIsIFwiY3VzdG9tY3NzXCIsIFwibGl2ZVVwZGF0ZVwiKSkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuaW5zZXJ0Q1NTKHZhbHVlKTtcclxuICAgICAgICB0aGlzLnNhdmVDU1ModmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGxvYWRDU1MoKSB7XHJcbiAgICAgICAgdGhpcy5zYXZlZENzcyA9IERhdGFTdG9yZS5sb2FkQ3VzdG9tQ1NTKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5zZXJ0Q1NTKG5ld0Nzcykge1xyXG4gICAgICAgIGlmICh0eXBlb2YobmV3Q3NzKSA9PT0gXCJ1bmRlZmluZWRcIikgbmV3Q3NzID0gdGhpcy5pbnNlcnRlZENzcztcclxuICAgICAgICBlbHNlIHRoaXMuaW5zZXJ0ZWRDc3MgPSBuZXdDc3M7XHJcbiAgICAgICAgRE9NTWFuYWdlci51cGRhdGVDdXN0b21DU1MobmV3Q3NzKTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlQ1NTKG5ld0Nzcykge1xyXG4gICAgICAgIGlmICh0eXBlb2YobmV3Q3NzKSAhPT0gXCJ1bmRlZmluZWRcIikgdGhpcy5zYXZlZENzcyA9IG5ld0NzcztcclxuICAgICAgICBEYXRhU3RvcmUuc2F2ZUN1c3RvbUNTUyh0aGlzLnNhdmVkQ3NzKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuTmF0aXZlKCkge1xyXG4gICAgICAgIGVsZWN0cm9uLnNoZWxsLm9wZW5FeHRlcm5hbChgZmlsZTovLyR7RGF0YVN0b3JlLmN1c3RvbUNTU31gKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuRGV0YWNoZWQoY3VycmVudENTUykge1xyXG4gICAgICAgIGNvbnN0IGVkaXRvclJlZiA9IFJlYWN0LmNyZWF0ZVJlZigpO1xyXG4gICAgICAgIGNvbnN0IGVkaXRvciA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ1NTRWRpdG9yLCB7XHJcbiAgICAgICAgICAgIGlkOiBcImJkLWZsb2F0aW5nLWVkaXRvclwiLFxyXG4gICAgICAgICAgICByZWY6IGVkaXRvclJlZixcclxuICAgICAgICAgICAgY3NzOiBjdXJyZW50Q1NTLFxyXG4gICAgICAgICAgICBzYXZlOiB0aGlzLnNhdmVDU1MuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgdXBkYXRlOiB0aGlzLmluc2VydENTUy5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBvcGVuTmF0aXZlOiB0aGlzLm9wZW5OYXRpdmUuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBGbG9hdGluZ1dpbmRvd3Mub3Blbih7XHJcbiAgICAgICAgICAgIG9uQ2xvc2U6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNEZXRhY2hlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvblJlc2l6ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFlZGl0b3JSZWYgfHwgIWVkaXRvclJlZi5jdXJyZW50IHx8ICFlZGl0b3JSZWYuY3VycmVudC5yZXNpemUpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGVkaXRvclJlZi5jdXJyZW50LnJlc2l6ZSgpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0aXRsZTogU3RyaW5ncy5DdXN0b21DU1MuZWRpdG9yVGl0bGUsXHJcbiAgICAgICAgICAgIGlkOiBcImZsb2F0aW5nLWVkaXRvci13aW5kb3dcIixcclxuICAgICAgICAgICAgaGVpZ2h0OiA0NzAsXHJcbiAgICAgICAgICAgIHdpZHRoOiA0MTAsXHJcbiAgICAgICAgICAgIGNlbnRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBjaGlsZHJlbjogZWRpdG9yLFxyXG4gICAgICAgICAgICBjb25maXJtQ2xvc2U6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghZWRpdG9yUmVmIHx8ICFlZGl0b3JSZWYuY3VycmVudCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVkaXRvclJlZi5jdXJyZW50Lmhhc1Vuc2F2ZWRDaGFuZ2VzO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjb25maXJtYXRpb25UZXh0OiBTdHJpbmdzLkN1c3RvbUNTUy5jb25maXJtYXRpb25UZXh0XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5pc0RldGFjaGVkID0gdHJ1ZTtcclxuICAgICAgICBVc2VyU2V0dGluZ3MuY2xvc2UoKTtcclxuICAgICAgICBEaXNwYXRjaGVyLmRpcnR5RGlzcGF0Y2goe3R5cGU6IEFjdGlvblR5cGVzLkxBWUVSX1BPUH0pO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/customcss.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _ui_customcss_csseditor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../ui/customcss/csseditor */ \"./src/ui/customcss/csseditor.jsx\");\n/* harmony import */ var _ui_floatingwindows__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../ui/floatingwindows */ \"./src/ui/floatingwindows.js\");\n/* harmony import */ var _ui_settings_title__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../ui/settings/title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _modules_utilities__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../modules/utilities */ \"./src/modules/utilities.js\");\n\n\n\n\n\n\n\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nconst electron = __webpack_require__(/*! electron */ \"electron\");\n\nconst UserSettings = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"updateAccount\");\nconst Dispatcher = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"dirtyDispatch\");\nconst ActionTypes = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"ActionTypes\").ActionTypes;\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class CustomCSS extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"Custom CSS\";\n }\n\n get category() {\n return \"customcss\";\n }\n\n get id() {\n return \"customcss\";\n }\n\n get startDetached() {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(this.collection, this.category, \"openAction\") == \"detached\";\n }\n\n get nativeOpen() {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(this.collection, this.category, \"openAction\") == \"system\";\n }\n\n constructor() {\n super();\n this.savedCss = \"\";\n this.insertedCss = \"\";\n this.isDetached = false;\n }\n\n async enabled() {\n if (!window.ace) {\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOMManager\"].injectScript(\"ace-script\", \"https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js\").then(() => {\n if (window.require.original) window.require = window.require.original;\n });\n }\n\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].registerPanel(this.id, _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Panels.customcss, {\n order: 2,\n element: () => [/*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_ui_settings_title__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n text: _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].CustomCSS.editorTitle\n }), _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_ui_customcss_csseditor__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n css: this.savedCss,\n save: this.saveCSS.bind(this),\n update: this.insertCSS.bind(this),\n openNative: this.openNative.bind(this),\n openDetached: this.openDetached.bind(this),\n onChange: this.onChange.bind(this)\n })],\n onClick: thisObject => {\n if (this.isDetached) return;\n if (this.nativeOpen) return this.openNative();else if (this.startDetached) return this.openDetached();\n const settingsView = _modules_utilities__WEBPACK_IMPORTED_MODULE_5__[\"default\"].findInRenderTree(thisObject._reactInternalFiber, m => m && m.onSetSection, {\n walkable: [\"child\", \"memoizedProps\", \"props\", \"children\"]\n });\n if (settingsView && settingsView.onSetSection) settingsView.onSetSection(this.id);\n }\n });\n this.loadCSS();\n this.insertCSS(this.savedCss);\n this.watchContent();\n }\n\n disabled() {\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].removePanel(this.id);\n this.unwatchContent();\n }\n\n watchContent() {\n if (this.watcher) return this.error(\"Already watching content.\");\n const timeCache = {};\n this.log(\"Starting to watch content.\");\n this.watcher = fs.watch(_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS, {\n persistent: false\n }, async (eventType, filename) => {\n if (!eventType || !filename) return;\n await new Promise(r => setTimeout(r, 50));\n\n try {\n fs.statSync(_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS);\n } catch (err) {\n if (err.code !== \"ENOENT\") return;\n delete timeCache[filename];\n this.saveCSS(\"\");\n }\n\n const stats = fs.statSync(_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS);\n if (!stats || !stats.mtime || !stats.mtime.getTime()) return;\n if (typeof stats.mtime.getTime() !== \"number\") return;\n if (timeCache[filename] == stats.mtime.getTime()) return;\n timeCache[filename] = stats.mtime.getTime();\n\n if (eventType == \"change\") {\n const newCSS = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].loadCustomCSS();\n if (newCSS == this.savedCss) return;\n this.savedCss = newCSS;\n this.insertCSS(this.savedCss);\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].emit(\"customcss-updated\", this.savedCss);\n }\n });\n }\n\n unwatchContent() {\n if (!this.watcher) return this.error(\"Was not watching content.\");\n this.watcher.close();\n delete this.watcher;\n this.log(\"No longer watching content.\");\n }\n\n onChange(value) {\n if (!_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(\"settings\", \"customcss\", \"liveUpdate\")) return;\n this.insertCSS(value);\n this.saveCSS(value);\n }\n\n loadCSS() {\n this.savedCss = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].loadCustomCSS();\n }\n\n insertCSS(newCss) {\n if (typeof newCss === \"undefined\") newCss = this.insertedCss;else this.insertedCss = newCss;\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOMManager\"].updateCustomCSS(newCss);\n }\n\n saveCSS(newCss) {\n if (typeof newCss !== \"undefined\") this.savedCss = newCss;\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].saveCustomCSS(this.savedCss);\n }\n\n openNative() {\n electron.shell.openExternal(`file://${_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS}`);\n }\n\n openDetached(currentCSS) {\n const editorRef = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createRef();\n const editor = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_ui_customcss_csseditor__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n id: \"bd-floating-editor\",\n ref: editorRef,\n css: currentCSS,\n save: this.saveCSS.bind(this),\n update: this.insertCSS.bind(this),\n openNative: this.openNative.bind(this),\n onChange: this.onChange.bind(this)\n });\n _ui_floatingwindows__WEBPACK_IMPORTED_MODULE_3__[\"default\"].open({\n onClose: () => {\n this.isDetached = false;\n },\n onResize: () => {\n if (!editorRef || !editorRef.current || !editorRef.current.resize) return;\n editorRef.current.resize();\n },\n title: _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].CustomCSS.editorTitle,\n id: \"floating-editor-window\",\n height: 470,\n width: 410,\n center: true,\n resizable: true,\n children: editor,\n confirmClose: () => {\n if (!editorRef || !editorRef.current) return false;\n return editorRef.current.hasUnsavedChanges;\n },\n confirmationText: _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].CustomCSS.confirmationText\n });\n this.isDetached = true;\n UserSettings.close();\n Dispatcher.dirtyDispatch({\n type: ActionTypes.LAYER_POP\n });\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvY3VzdG9tY3NzLmpzP2MzZjIiXSwibmFtZXMiOlsiZnMiLCJyZXF1aXJlIiwiZWxlY3Ryb24iLCJVc2VyU2V0dGluZ3MiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5UHJvcHMiLCJEaXNwYXRjaGVyIiwiQWN0aW9uVHlwZXMiLCJDdXN0b21DU1MiLCJCdWlsdGluIiwibmFtZSIsImNhdGVnb3J5IiwiaWQiLCJzdGFydERldGFjaGVkIiwiU2V0dGluZ3MiLCJnZXQiLCJjb2xsZWN0aW9uIiwibmF0aXZlT3BlbiIsImNvbnN0cnVjdG9yIiwic2F2ZWRDc3MiLCJpbnNlcnRlZENzcyIsImlzRGV0YWNoZWQiLCJlbmFibGVkIiwid2luZG93IiwiYWNlIiwiRE9NTWFuYWdlciIsImluamVjdFNjcmlwdCIsInRoZW4iLCJvcmlnaW5hbCIsInJlZ2lzdGVyUGFuZWwiLCJTdHJpbmdzIiwiUGFuZWxzIiwiY3VzdG9tY3NzIiwib3JkZXIiLCJlbGVtZW50IiwiZWRpdG9yVGl0bGUiLCJSZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJDU1NFZGl0b3IiLCJjc3MiLCJzYXZlIiwic2F2ZUNTUyIsImJpbmQiLCJ1cGRhdGUiLCJpbnNlcnRDU1MiLCJvcGVuTmF0aXZlIiwib3BlbkRldGFjaGVkIiwib25DaGFuZ2UiLCJvbkNsaWNrIiwidGhpc09iamVjdCIsInNldHRpbmdzVmlldyIsIlV0aWxpdGllcyIsImZpbmRJblJlbmRlclRyZWUiLCJfcmVhY3RJbnRlcm5hbEZpYmVyIiwibSIsIm9uU2V0U2VjdGlvbiIsIndhbGthYmxlIiwibG9hZENTUyIsIndhdGNoQ29udGVudCIsImRpc2FibGVkIiwicmVtb3ZlUGFuZWwiLCJ1bndhdGNoQ29udGVudCIsIndhdGNoZXIiLCJlcnJvciIsInRpbWVDYWNoZSIsImxvZyIsIndhdGNoIiwiRGF0YVN0b3JlIiwiY3VzdG9tQ1NTIiwicGVyc2lzdGVudCIsImV2ZW50VHlwZSIsImZpbGVuYW1lIiwiUHJvbWlzZSIsInIiLCJzZXRUaW1lb3V0Iiwic3RhdFN5bmMiLCJlcnIiLCJjb2RlIiwic3RhdHMiLCJtdGltZSIsImdldFRpbWUiLCJuZXdDU1MiLCJsb2FkQ3VzdG9tQ1NTIiwiRXZlbnRzIiwiZW1pdCIsImNsb3NlIiwidmFsdWUiLCJuZXdDc3MiLCJ1cGRhdGVDdXN0b21DU1MiLCJzYXZlQ3VzdG9tQ1NTIiwic2hlbGwiLCJvcGVuRXh0ZXJuYWwiLCJjdXJyZW50Q1NTIiwiZWRpdG9yUmVmIiwiY3JlYXRlUmVmIiwiZWRpdG9yIiwicmVmIiwiRmxvYXRpbmdXaW5kb3dzIiwib3BlbiIsIm9uQ2xvc2UiLCJvblJlc2l6ZSIsImN1cnJlbnQiLCJyZXNpemUiLCJ0aXRsZSIsImhlaWdodCIsIndpZHRoIiwiY2VudGVyIiwicmVzaXphYmxlIiwiY2hpbGRyZW4iLCJjb25maXJtQ2xvc2UiLCJoYXNVbnNhdmVkQ2hhbmdlcyIsImNvbmZpcm1hdGlvblRleHQiLCJkaXJ0eURpc3BhdGNoIiwidHlwZSIsIkxBWUVSX1BPUCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTUEsRUFBRSxHQUFHQyxtQkFBTyxDQUFDLGNBQUQsQ0FBbEI7O0FBQ0EsTUFBTUMsUUFBUSxHQUFHRCxtQkFBTyxDQUFDLDBCQUFELENBQXhCOztBQUNBLE1BQU1FLFlBQVksR0FBR0Msa0VBQWMsQ0FBQ0MsVUFBZixDQUEwQixlQUExQixDQUFyQjtBQUNBLE1BQU1DLFVBQVUsR0FBR0Ysa0VBQWMsQ0FBQ0MsVUFBZixDQUEwQixlQUExQixDQUFuQjtBQUNBLE1BQU1FLFdBQVcsR0FBR0gsa0VBQWMsQ0FBQ0MsVUFBZixDQUEwQixhQUExQixFQUF5Q0UsV0FBN0Q7QUFFZSxtRUFBSSxNQUFNQyxTQUFOLFNBQXdCQyx3REFBeEIsQ0FBZ0M7QUFDL0MsTUFBSUMsSUFBSixHQUFXO0FBQUMsV0FBTyxZQUFQO0FBQXFCOztB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QUlqQitFLGNBQVEsRUFBRSxNQUFNO0FBQ1osWUFBSSxDQUFDUCxTQUFELElBQWMsQ0FBQ0EsU0FBUyxDQUFDUSxPQUF6QixJQUFvQyxDQUFDUixTQUFTLENBQUNRLE9BQVYsQ0FBa0JDLE1BQTNELEVBQW1FO0FBQ25FVCxpQkFBUyxDQUFDUSxPQUFWLENBQWtCQyxNQUFsQjtBQUNILE9BUGdCO0FBUWpCQyxXQUFLLEVBQUV6RSwyREFBTyxDQUFDdEIsU0FBUixDQUFrQjJCLFdBUlI7QUFTakJ2QixRQUFFLEVBQUUsd0JBVGE7QUFVakI0RixZQUFNLEVBQUUsR0FWUztBQVdqQkMsV0FBSyxFQUFFLEdBWFU7QUFZakJDLFlBQU0sRUFBRSxJQVpTO0FBYWpCQyxlQUFTLEVBQUUsSUFiTTtBQWNqQkMsY0FBUSxFQUFFYixNQWRPO0FBZWpCYyxrQkFBWSxFQUFFLE1BQU07QUFDaEIsWUFBSSxDQUFDaEIsU0FBRCxJQUFjLENBQUNBLFNBQVMsQ0FBQ1EsT0FBN0IsRUFBc0MsT0FBTyxLQUFQO0FBQ3RDLGVBQU9SLFNBQVMsQ0FBQ1EsT0FBVixDQUFrQlMsaUJBQXpCO0FBQ0gsT0FsQmdCO0FBbUJqQkMsc0JBQWdCLEVBQUVqRiwyREFBTyxDQUFDdEIsU0FBUixDQUFrQnVHO0FBbkJuQixLQUFyQjtBQXFCQSxTQUFLMUYsVUFBTCxHQUFrQixJQUFsQjtBQUNBbEIsZ0JBQVksQ0FBQ2tGLEtBQWI7QUFDQS9FLGNBQVUsQ0FBQzBHLGFBQVgsQ0FBeUI7QUFBQ0MsVUFBSSxFQUFFMUcsV0FBVyxDQUFDMkc7QUFBbkIsS0FBekI7QUFDSDs7QUFoSjhDLENBQXBDLEVBQWYiLCJmaWxlIjoiLi9zcmMvYnVpbHRpbnMvY3VzdG9tY3NzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1aWx0aW4gZnJvbSBcIi4uL3N0cnVjdHMvYnVpbHRpblwiO1xyXG5pbXBvcnQge1NldHRpbmdzLCBEYXRhU3RvcmUsIFJlYWN0LCBXZWJwYWNrTW9kdWxlcywgRXZlbnRzLCBET01NYW5hZ2VyLCBTdHJpbmdzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgQ1NTRWRpdG9yIGZyb20gXCIuLi91aS9jdXN0b21jc3MvY3NzZWRpdG9yXCI7XHJcbmltcG9ydCBGbG9hdGluZ1dpbmRvd3MgZnJvbSBcIi4uL3VpL2Zsb2F0aW5nd2luZG93c1wiO1xyXG5pbXBvcnQgU2V0dGluZ3NUaXRsZSBmcm9tIFwiLi4vdWkvc2V0dGluZ3MvdGl0bGVcIjtcclxuaW1wb3J0IFV0aWxpdGllcyBmcm9tIFwiLi4vbW9kdWxlcy91dGlsaXRpZXNcIjtcclxuXHJcbmNvbnN0IGZzID0gcmVxdWlyZShcImZzXCIpO1xyXG5jb25zdCBlbGVjdHJvbiA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKTtcclxuY29uc3QgVXNlclNldHRpbmdzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInVwZGF0ZUFjY291bnRcIik7XHJcbmNvbnN0IERpc3BhdGNoZXIgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZGlydHlEaXNwYXRjaFwiKTtcclxuY29uc3QgQWN0aW9uVHlwZXMgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiQWN0aW9uVHlwZXNcIikuQWN0aW9uVHlwZXM7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgQ3VzdG9tQ1NTIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJDdXN0b20gQ1NTXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImN1c3RvbWNzc1wiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJjdXN0b21jc3NcIjt9XHJcbiAgICBnZXQgc3RhcnREZXRhY2hlZCgpIHtyZXR1cm4gU2V0dGluZ3MuZ2V0KHRoaXMuY29sbGVjdGlvbiwgdGhpcy5jYXRlZ29yeSwgXCJvcGVuQWN0aW9uXCIpID09IFwiZGV0YWNoZWRcIjt9XHJcbiAgICBnZXQgbmF0aXZlT3BlbigpIHtyZXR1cm4gU2V0dGluZ3MuZ2V0KHRoaXMuY29sbGVjdGlvbiwgdGhpcy5jYXRlZ29yeSwgXCJvcGVuQWN0aW9uXCIpID09IFwic3lzdGVtXCI7fVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5zYXZlZENzcyA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5pbnNlcnRlZENzcyA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5pc0RldGFjaGVkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZW5hYmxlZCgpIHtcclxuICAgICAgICBpZiAoIXdpbmRvdy5hY2UpIHtcclxuICAgICAgICAgICAgRE9NTWFuYWdlci5pbmplY3RTY3JpcHQoXCJhY2Utc2NyaXB0XCIsIFwiaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvYWNlLzEuMi45L2FjZS5qc1wiKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh3aW5kb3cucmVxdWlyZS5vcmlnaW5hbCkgd2luZG93LnJlcXVpcmUgPSB3aW5kb3cucmVxdWlyZS5vcmlnaW5hbDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFNldHRpbmdzLnJlZ2lzdGVyUGFuZWwodGhpcy5pZCwgU3RyaW5ncy5QYW5lbHMuY3VzdG9tY3NzLCB7XHJcbiAgICAgICAgICAgIG9yZGVyOiAyLFxyXG4gICAgICAgICAgICBlbGVtZW50OiAoKSA9PiBbPFNldHRpbmdzVGl0bGUgdGV4dD17U3RyaW5ncy5DdXN0b21DU1MuZWRpdG9yVGl0bGV9IC8+LCBSZWFjdC5jcmVhdGVFbGVtZW50KENTU0VkaXRvciwge1xyXG4gICAgICAgICAgICAgICAgY3NzOiB0aGlzLnNhdmVkQ3NzLFxyXG4gICAgICAgICAgICAgICAgc2F2ZTogdGhpcy5zYXZlQ1NTLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICB1cGRhdGU6IHRoaXMuaW5zZXJ0Q1NTLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICBvcGVuTmF0aXZlOiB0aGlzLm9wZW5OYXRpdmUuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICAgIG9wZW5EZXRhY2hlZDogdGhpcy5vcGVuRGV0YWNoZWQuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcylcclxuICAgICAgICAgICAgfSldLFxyXG4gICAgICAgICAgICBvbkNsaWNrOiAodGhpc09iamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNEZXRhY2hlZCkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubmF0aXZlT3BlbikgcmV0dXJuIHRoaXMub3Blbk5hdGl2ZSgpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zdGFydERldGFjaGVkKSByZXR1cm4gdGhpcy5vcGVuRGV0YWNoZWQoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNldHRpbmdzVmlldyA9IFV0aWxpdGllcy5maW5kSW5SZW5kZXJUcmVlKHRoaXNPYmplY3QuX3JlYWN0SW50ZXJuYWxGaWJlciwgbSA9PiBtICYmIG0ub25TZXRTZWN0aW9uLCB7d2Fsa2FibGU6IFtcImNoaWxkXCIsIFwibWVtb2l6ZWRQcm9wc1wiLCBcInByb3BzXCIsIFwiY2hpbGRyZW5cIl19KTtcclxuICAgICAgICAgICAgICAgIGlmIChzZXR0aW5nc1ZpZXcgJiYgc2V0dGluZ3NWaWV3Lm9uU2V0U2VjdGlvbikgc2V0dGluZ3NWaWV3Lm9uU2V0U2VjdGlvbih0aGlzLmlkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubG9hZENTUygpO1xyXG4gICAgICAgIHRoaXMuaW5zZXJ0Q1NTKHRoaXMuc2F2ZWRDc3MpO1xyXG4gICAgICAgIHRoaXMud2F0Y2hDb250ZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgU2V0dGluZ3MucmVtb3ZlUGFuZWwodGhpcy5pZCk7XHJcbiAgICAgICAgdGhpcy51bndhdGNoQ29udGVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHdhdGNoQ29udGVudCgpIHtcclxuICAgICAgICBpZiAodGhpcy53YXRjaGVyKSByZXR1cm4gdGhpcy5lcnJvcihcIkFscmVhZHkgd2F0Y2hpbmcgY29udGVudC5cIik7XHJcbiAgICAgICAgY29uc3QgdGltZUNhY2hlID0ge307XHJcbiAgICAgICAgdGhpcy5sb2coXCJTdGFydGluZyB0byB3YXRjaCBjb250ZW50LlwiKTtcclxuICAgICAgICB0aGlzLndhdGNoZXIgPSBmcy53YXRjaChEYXRhU3RvcmUuY3VzdG9tQ1NTLCB7cGVyc2lzdGVudDogZmFsc2V9LCBhc3luYyAoZXZlbnRUeXBlLCBmaWxlbmFtZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWV2ZW50VHlwZSB8fCAhZmlsZW5hbWUpIHJldHVybjtcclxuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDUwKSk7XHJcbiAgICAgICAgICAgIHRyeSB7ZnMuc3RhdFN5bmMoRGF0YVN0b3JlLmN1c3RvbUNTUyk7fVxyXG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyLmNvZGUgIT09IFwiRU5PRU5UXCIpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSB0aW1lQ2FjaGVbZmlsZW5hbWVdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zYXZlQ1NTKFwiXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXRzID0gZnMuc3RhdFN5bmMoRGF0YVN0b3JlLmN1c3RvbUNTUyk7XHJcbiAgICAgICAgICAgIGlmICghc3RhdHMgfHwgIXN0YXRzLm10aW1lIHx8ICFzdGF0cy5tdGltZS5nZXRUaW1lKCkpIHJldHVybjtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZihzdGF0cy5tdGltZS5nZXRUaW1lKCkpICE9PSBcIm51bWJlclwiKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmICh0aW1lQ2FjaGVbZmlsZW5hbWVdID09IHN0YXRzLm10aW1lLmdldFRpbWUoKSkgcmV0dXJuO1xyXG4gICAgICAgICAgICB0aW1lQ2FjaGVbZmlsZW5hbWVdID0gc3RhdHMubXRpbWUuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICBpZiAoZXZlbnRUeXBlID09IFwiY2hhbmdlXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NTUyA9IERhdGFTdG9yZS5sb2FkQ3VzdG9tQ1NTKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobmV3Q1NTID09IHRoaXMuc2F2ZWRDc3MpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZWRDc3MgPSBuZXdDU1M7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluc2VydENTUyh0aGlzLnNhdmVkQ3NzKTtcclxuICAgICAgICAgICAgICAgIEV2ZW50cy5lbWl0KFwiY3VzdG9tY3NzLXVwZGF0ZWRcIiwgdGhpcy5zYXZlZENzcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1bndhdGNoQ29udGVudCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMud2F0Y2hlcikgcmV0dXJuIHRoaXMuZXJyb3IoXCJXYXMgbm90IHdhdGNoaW5nIGNvbnRlbnQuXCIpO1xyXG4gICAgICAgIHRoaXMud2F0Y2hlci5jbG9zZSgpO1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLndhdGNoZXI7XHJcbiAgICAgICAgdGhpcy5sb2coXCJObyBsb25nZXIgd2F0Y2hpbmcgY29udGVudC5cIik7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UodmFsdWUpIHtcclxuICAgICAgICBpZiAoIVNldHRpbmdzLmdldChcInNldHRpbmdzXCIsIFwiY3VzdG9tY3NzXCIsIFwibGl2ZVVwZGF0ZVwiKSkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuaW5zZXJ0Q1NTKHZhbHVlKTtcclxuICAgICAgICB0aGlzLnNhdmVDU1ModmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGxvYWRDU1MoKSB7XHJcbiAgICAgICAgdGhpcy5zYXZlZENzcyA9IERhdGFTdG9yZS5sb2FkQ3VzdG9tQ1NTKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5zZXJ0Q1NTKG5ld0Nzcykge1xyXG4gICAgICAgIGlmICh0eXBlb2YobmV3Q3NzKSA9PT0gXCJ1bmRlZmluZWRcIikgbmV3Q3NzID0gdGhpcy5pbnNlcnRlZENzcztcclxuICAgICAgICBlbHNlIHRoaXMuaW5zZXJ0ZWRDc3MgPSBuZXdDc3M7XHJcbiAgICAgICAgRE9NTWFuYWdlci51cGRhdGVDdXN0b21DU1MobmV3Q3NzKTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlQ1NTKG5ld0Nzcykge1xyXG4gICAgICAgIGlmICh0eXBlb2YobmV3Q3NzKSAhPT0gXCJ1bmRlZmluZWRcIikgdGhpcy5zYXZlZENzcyA9IG5ld0NzcztcclxuICAgICAgICBEYXRhU3RvcmUuc2F2ZUN1c3RvbUNTUyh0aGlzLnNhdmVkQ3NzKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuTmF0aXZlKCkge1xyXG4gICAgICAgIGVsZWN0cm9uLnNoZWxsLm9wZW5FeHRlcm5hbChgZmlsZTovLyR7RGF0YVN0b3JlLmN1c3RvbUNTU31gKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuRGV0YWNoZWQoY3VycmVudENTUykge1xyXG4gICAgICAgIGNvbnN0IGVkaXRvclJlZiA9IFJlYWN0LmNyZWF0ZVJlZigpO1xyXG4gICAgICAgIGNvbnN0IGVkaXRvciA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ1NTRWRpdG9yLCB7XHJcbiAgICAgICAgICAgIGlkOiBcImJkLWZsb2F0aW5nLWVkaXRvclwiLFxyXG4gICAgICAgICAgICByZWY6IGVkaXRvclJlZixcclxuICAgICAgICAgICAgY3NzOiBjdXJyZW50Q1NTLFxyXG4gICAgICAgICAgICBzYXZlOiB0aGlzLnNhdmVDU1MuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgdXBkYXRlOiB0aGlzLmluc2VydENTUy5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBvcGVuTmF0aXZlOiB0aGlzLm9wZW5OYXRpdmUuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBGbG9hdGluZ1dpbmRvd3Mub3Blbih7XHJcbiAgICAgICAgICAgIG9uQ2xvc2U6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNEZXRhY2hlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvblJlc2l6ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFlZGl0b3JSZWYgfHwgIWVkaXRvclJlZi5jdXJyZW50IHx8ICFlZGl0b3JSZWYuY3VycmVudC5yZXNpemUpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGVkaXRvclJlZi5jdXJyZW50LnJlc2l6ZSgpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0aXRsZTogU3RyaW5ncy5DdXN0b21DU1MuZWRpdG9yVGl0bGUsXHJcbiAgICAgICAgICAgIGlkOiBcImZsb2F0aW5nLWVkaXRvci13aW5kb3dcIixcclxuICAgICAgICAgICAgaGVpZ2h0OiA0NzAsXHJcbiAgICAgICAgICAgIHdpZHRoOiA0MTAsXHJcbiAgICAgICAgICAgIGNlbnRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBjaGlsZHJlbjogZWRpdG9yLFxyXG4gICAgICAgICAgICBjb25maXJtQ2xvc2U6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghZWRpdG9yUmVmIHx8ICFlZGl0b3JSZWYuY3VycmVudCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVkaXRvclJlZi5jdXJyZW50Lmhhc1Vuc2F2ZWRDaGFuZ2VzO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjb25maXJtYXRpb25UZXh0OiBTdHJpbmdzLkN1c3RvbUNTUy5jb25maXJtYXRpb25UZXh0XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5pc0RldGFjaGVkID0gdHJ1ZTtcclxuICAgICAgICBVc2VyU2V0dGluZ3MuY2xvc2UoKTtcclxuICAgICAgICBEaXNwYXRjaGVyLmRpcnR5RGlzcGF0Y2goe3R5cGU6IEFjdGlvblR5cGVzLkxBWUVSX1BPUH0pO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/customcss.js\n"); /***/ }), @@ -166,7 +166,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class DeveloperMode extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"DeveloperMode\";\n }\n\n get category() {\n return \"developer\";\n }\n\n get id() {\n return \"developerMode\";\n }\n\n get selectorModeID() {\n return \"copySelector\";\n }\n\n get selectorMode() {\n return this.get(this.selectorModeID);\n }\n\n constructor() {\n super();\n this.copySelectorListener = this.copySelectorListener.bind(this);\n }\n\n enabled() {\n document.addEventListener(\"contextmenu\", this.copySelectorListener);\n }\n\n disabled() {\n document.removeEventListener(\"contextmenu\", this.copySelectorListener);\n }\n\n copySelectorListener(ctxEvent) {\n ctxEvent.stopPropagation();\n const selector = this.getSelector(ctxEvent.target);\n\n function attach() {\n let cm = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].query(\".contextMenu-HLZMGh\");\n\n if (!cm) {\n const container = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].query(\"#app-mount\");\n const cmWrap = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n cm = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n cmWrap.append(cm);\n container.append(cmWrap);\n cmWrap.style.top = ctxEvent.clientY + \"px\";\n cmWrap.style.left = ctxEvent.clientX + \"px\";\n cmWrap.style.zIndex = \"1002\";\n\n const removeCM = function (removeEvent) {\n if (removeEvent.keyCode && removeEvent.keyCode !== 27) return;\n cmWrap.remove();\n document.removeEventListener(\"click\", removeCM);\n document.removeEventListener(\"contextmenu\", removeCM);\n document.removeEventListener(\"keyup\", removeCM);\n };\n\n document.addEventListener(\"click\", removeCM);\n document.addEventListener(\"contextmenu\", removeCM);\n document.addEventListener(\"keyup\", removeCM);\n }\n\n const cmg = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n const cmi = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n cmi.append(modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Developer.copySelector}
`));\n cmi.addEventListener(\"click\", () => {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].ElectronModule.copy(selector);\n cm.style.display = \"none\";\n });\n cmg.append(cmi);\n cm.append(cmg);\n }\n\n setImmediate(attach);\n }\n\n getSelector(element) {\n if (element.id) return `#${element.id}`;\n const rules = this.getRules(element);\n const latestRule = rules[rules.length - 1];\n if (latestRule) return latestRule.selectorText;else if (element.classList.length) return `.${Array.from(element.classList).join(\".\")}`;\n return `.${Array.from(element.parentElement.classList).join(\".\")}`;\n }\n\n getRules(element, css = element.ownerDocument.styleSheets) {\n //if (window.getMatchedCSSRules) return window.getMatchedCSSRules(element);\n const sheets = [...css].filter(s => !s.href || !s.href.includes(\"BetterDiscordApp\"));\n const rules = sheets.map(s => [...(s.cssRules || [])]).flat();\n const elementRules = rules.filter(r => r && r.selectorText && element.matches(r.selectorText) && r.style.length && r.selectorText.split(\", \").length < 8 && !r.selectorText.split(\", \").includes(\"*\"));\n return elementRules;\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZGV2ZWxvcGVyL2NvcHlzZWxlY3Rvci5qcz84ODllIl0sIm5hbWVzIjpbIkRldmVsb3Blck1vZGUiLCJCdWlsdGluIiwibmFtZSIsImNhdGVnb3J5IiwiaWQiLCJzZWxlY3Rvck1vZGVJRCIsInNlbGVjdG9yTW9kZSIsImdldCIsImNvbnN0cnVjdG9yIiwiY29weVNlbGVjdG9yTGlzdGVuZXIiLCJiaW5kIiwiZW5hYmxlZCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsImRpc2FibGVkIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImN0eEV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwic2VsZWN0b3IiLCJnZXRTZWxlY3RvciIsInRhcmdldCIsImF0dGFjaCIsImNtIiwiRE9NIiwicXVlcnkiLCJjb250YWluZXIiLCJjbVdyYXAiLCJjcmVhdGVFbGVtZW50IiwiYXBwZW5kIiwic3R5bGUiLCJ0b3AiLCJjbGllbnRZIiwibGVmdCIsImNsaWVudFgiLCJ6SW5kZXgiLCJyZW1vdmVDTSIsInJlbW92ZUV2ZW50Iiwia2V5Q29kZSIsInJlbW92ZSIsImNtZyIsImNtaSIsIlN0cmluZ3MiLCJEZXZlbG9wZXIiLCJjb3B5U2VsZWN0b3IiLCJEaXNjb3JkTW9kdWxlcyIsIkVsZWN0cm9uTW9kdWxlIiwiY29weSIsImRpc3BsYXkiLCJzZXRJbW1lZGlhdGUiLCJlbGVtZW50IiwicnVsZXMiLCJnZXRSdWxlcyIsImxhdGVzdFJ1bGUiLCJsZW5ndGgiLCJzZWxlY3RvclRleHQiLCJjbGFzc0xpc3QiLCJBcnJheSIsImZyb20iLCJqb2luIiwicGFyZW50RWxlbWVudCIsImNzcyIsIm93bmVyRG9jdW1lbnQiLCJzdHlsZVNoZWV0cyIsInNoZWV0cyIsImZpbHRlciIsInMiLCJocmVmIiwiaW5jbHVkZXMiLCJtYXAiLCJjc3NSdWxlcyIsImZsYXQiLCJlbGVtZW50UnVsZXMiLCJyIiwibWF0Y2hlcyIsInNwbGl0Il0sIm1h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QVIsQ0FBc0JDLFdBQXRDLEVBQW1EO0FBQ3ZEO0FBQ0EsVUFBTUMsTUFBTSxHQUFHLENBQUMsR0FBR0gsR0FBSixFQUFTSSxNQUFULENBQWdCQyxDQUFDLElBQUksQ0FBQ0EsQ0FBQyxDQUFDQyxJQUFILElBQVcsQ0FBQ0QsQ0FBQyxDQUFDQyxJQUFGLENBQU9DLFFBQVAsQ0FBZ0Isa0JBQWhCLENBQWpDLENBQWY7QUFDQSxVQUFNakIsS0FBSyxHQUFHYSxNQUFNLENBQUNLLEdBQVAsQ0FBV0gsQ0FBQyxJQUFJLENBQUMsSUFBSUEsQ0FBQyxDQUFDSSxRQUFGLElBQWMsRUFBbEIsQ0FBRCxDQUFoQixFQUF5Q0MsSUFBekMsRUFBZDtBQUNBLFVBQU1DLFlBQVksR0FBR3JCLEtBQUssQ0FBQ2MsTUFBTixDQUFhUSxDQUFDLElBQUlBLENBQUMsSUFBSUEsQ0FBQyxDQUFDbEIsWUFBUCxJQUF1QkwsT0FBTyxDQUFDd0IsT0FBUixDQUFnQkQsQ0FBQyxDQUFDbEIsWUFBbEIsQ0FBdkIsSUFBMERrQixDQUFDLENBQUMzQyxLQUFGLENBQVF3QixNQUFsRSxJQUE0RW1CLENBQUMsQ0FBQ2xCLFlBQUYsQ0FBZW9CLEtBQWYsQ0FBcUIsSUFBckIsRUFBMkJyQixNQUEzQixHQUFvQyxDQUFoSCxJQUFxSCxDQUFDbUIsQ0FBQyxDQUFDbEIsWUFBRixDQUFlb0IsS0FBZixDQUFxQixJQUFyQixFQUEyQlAsUUFBM0IsQ0FBb0MsR0FBcEMsQ0FBeEksQ0FBckI7QUFDQSxXQUFPSSxZQUFQO0FBQ0g7O0FBM0VrRCxDQUF4QyxFQUFmIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2RldmVsb3Blci9jb3B5c2VsZWN0b3IuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9idWlsdGluXCI7XHJcbmltcG9ydCB7RE9NLCBEaXNjb3JkTW9kdWxlcywgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBEZXZlbG9wZXJNb2RlIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJEZXZlbG9wZXJNb2RlXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImRldmVsb3BlclwiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJkZXZlbG9wZXJNb2RlXCI7fVxyXG4gICAgZ2V0IHNlbGVjdG9yTW9kZUlEKCkge3JldHVybiBcImNvcHlTZWxlY3RvclwiO31cclxuICAgIGdldCBzZWxlY3Rvck1vZGUoKSB7cmV0dXJuIHRoaXMuZ2V0KHRoaXMuc2VsZWN0b3JNb2RlSUQpO31cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMuY29weVNlbGVjdG9yTGlzdGVuZXIgPSB0aGlzLmNvcHlTZWxlY3Rvckxpc3RlbmVyLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZW5hYmxlZCgpIHtcclxuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY29udGV4dG1lbnVcIiwgdGhpcy5jb3B5U2VsZWN0b3JMaXN0ZW5lcik7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNvbnRleHRtZW51XCIsIHRoaXMuY29weVNlbGVjdG9yTGlzdGVuZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvcHlTZWxlY3Rvckxpc3RlbmVyKGN0eEV2ZW50KSB7XHJcbiAgICAgICAgY3R4RXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0b3IgPSB0aGlzLmdldFNlbGVjdG9yKGN0eEV2ZW50LnRhcmdldCk7XHJcbiAgICAgICAgZnVuY3Rpb24gYXR0YWNoKCkge1xyXG4gICAgICAgICAgICBsZXQgY20gPSBET00ucXVlcnkoXCIuY29udGV4dE1lbnUtSExaTUdoXCIpO1xyXG4gICAgICAgICAgICBpZiAoIWNtKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBET00ucXVlcnkoXCIjYXBwLW1vdW50XCIpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY21XcmFwID0gRE9NLmNyZWF0ZUVsZW1lbnQoYDxkaXYgY2xhc3M9XCJsYXllci12OUh5WWMgZGEtbGF5ZXJcIj5gKTtcclxuICAgICAgICAgICAgICAgIGNtID0gRE9NLmNyZWF0ZUVsZW1lbnQoYDxkaXYgY2xhc3M9XCJjb250ZXh0TWVudS1ITFpNR2ggZGEtY29udGV4dE1lbnUgYmQtY29udGV4dC1tZW51XCI+PC9kaXY+YCk7XHJcbiAgICAgICAgICAgICAgICBjbVdyYXAuYXBwZW5kKGNtKTtcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmQoY21XcmFwKTtcclxuICAgICAgICAgICAgICAgIGNtV3JhcC5zdHlsZS50b3AgPSBjdHhFdmVudC5jbGllbnRZICsgXCJweFwiO1xyXG4gICAgICAgICAgICAgICAgY21XcmFwLnN0eWxlLmxlZnQgPSBjdHhFdmVudC5jbGllbnRYICsgXCJweFwiO1xyXG4gICAgICAgICAgICAgICAgY21XcmFwLnN0eWxlLnpJbmRleCA9IFwiMTAwMlwiO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVtb3ZlQ00gPSBmdW5jdGlvbihyZW1vdmVFdmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZW1vdmVFdmVudC5rZXlDb2RlICYmIHJlbW92ZUV2ZW50LmtleUNvZGUgIT09IDI3KSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgY21XcmFwLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCByZW1vdmVDTSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNvbnRleHRtZW51XCIsIHJlbW92ZUNNKTtcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5dXBcIiwgcmVtb3ZlQ00pO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCByZW1vdmVDTSk7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY29udGV4dG1lbnVcIiwgcmVtb3ZlQ00pO1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleXVwXCIsIHJlbW92ZUNNKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgY21nID0gRE9NLmNyZWF0ZUVsZW1lbnQoYDxkaXYgY2xhc3M9XCJpdGVtR3JvdXAtMXRMMHV6IGRhLWl0ZW1Hcm91cFwiPmApO1xyXG4gICAgICAgICAgICBjb25zdCBjbWkgPSBET00uY3JlYXRlRWxlbWVudChgPGRpdiBjbGFzcz1cIml0ZW0tMVl2ZWhjIGl0ZW1CYXNlLXR6NVNlQyBkYS1pdGVtIGRhLWl0ZW1CYXNlIGNsaWNrYWJsZS0xMXVCaS0gZGEtY2xpY2thYmxlXCI+YCk7XHJcbiAgICAgICAgICAgIGNtaS5hcHBlbmQoRE9NLmNyZWF0ZUVsZW1lbnQoYDxkaXYgY2xhc3M9XCJsYWJlbC1KV1FpTmUgZGEtbGFiZWxcIj4ke1N0cmluZ3MuRGV2ZWxvcGVyLmNvcHlTZWxlY3Rvcn08L2Rpdj5gKSk7XHJcbiAgICAgICAgICAgIGNtaS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgRGlzY29yZE1vZHVsZXMuRWxlY3Ryb25Nb2R1bGUuY29weShzZWxlY3Rvcik7XHJcbiAgICAgICAgICAgICAgICBjbS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjbWcuYXBwZW5kKGNtaSk7XHJcbiAgICAgICAgICAgIGNtLmFwcGVuZChjbWcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2V0SW1tZWRpYXRlKGF0dGFjaCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2VsZWN0b3IoZWxlbWVudCkge1xyXG4gICAgICAgIGlmIChlbGVtZW50LmlkKSByZXR1cm4gYCMke2VsZW1lbnQuaWR9YDtcclxuICAgICAgICBjb25zdCBydWxlcyA9IHRoaXMuZ2V0UnVsZXMoZWxlbWVudCk7XHJcbiAgICAgICAgY29uc3QgbGF0ZXN0UnVsZSA9IHJ1bGVzW3J1bGVzLmxlbmd0aCAtIDFdO1xyXG4gICAgICAgIGlmIChsYXRlc3RSdWxlKSByZXR1cm4gbGF0ZXN0UnVsZS5zZWxlY3RvclRleHQ7XHJcbiAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5jbGFzc0xpc3QubGVuZ3RoKSByZXR1cm4gYC4ke0FycmF5LmZyb20oZWxlbWVudC5jbGFzc0xpc3QpLmpvaW4oXCIuXCIpfWA7XHJcbiAgICAgICAgcmV0dXJuIGAuJHtBcnJheS5mcm9tKGVsZW1lbnQucGFyZW50RWxlbWVudC5jbGFzc0xpc3QpLmpvaW4oXCIuXCIpfWA7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UnVsZXMoZWxlbWVudCwgY3NzID0gZWxlbWVudC5vd25lckRvY3VtZW50LnN0eWxlU2hlZXRzKSB7XHJcbiAgICAgICAgLy9pZiAod2luZG93LmdldE1hdGNoZWRDU1NSdWxlcykgcmV0dXJuIHdpbmRvdy5nZXRNYXRjaGVkQ1NTUnVsZXMoZWxlbWVudCk7XHJcbiAgICAgICAgY29uc3Qgc2hlZXRzID0gWy4uLmNzc10uZmlsdGVyKHMgPT4gIXMuaHJlZiB8fCAhcy5ocmVmLmluY2x1ZGVzKFwiQmV0dGVyRGlzY29yZEFwcFwiKSk7XHJcbiAgICAgICAgY29uc3QgcnVsZXMgPSBzaGVldHMubWFwKHMgPT4gWy4uLihzLmNzc1J1bGVzIHx8IFtdKV0pLmZsYXQoKTtcclxuICAgICAgICBjb25zdCBlbGVtZW50UnVsZXMgPSBydWxlcy5maWx0ZXIociA9PiByICYmIHIuc2VsZWN0b3JUZXh0ICYmIGVsZW1lbnQubWF0Y2hlcyhyLnNlbGVjdG9yVGV4dCkgJiYgci5zdHlsZS5sZW5ndGggJiYgci5zZWxlY3RvclRleHQuc3BsaXQoXCIsIFwiKS5sZW5ndGggPCA4ICYmICFyLnNlbGVjdG9yVGV4dC5zcGxpdChcIiwgXCIpLmluY2x1ZGVzKFwiKlwiKSk7XHJcbiAgICAgICAgcmV0dXJuIGVsZW1lbnRSdWxlcztcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/developer/copyselector.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class DeveloperMode extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"DeveloperMode\";\n }\n\n get category() {\n return \"developer\";\n }\n\n get id() {\n return \"developerMode\";\n }\n\n get selectorModeID() {\n return \"copySelector\";\n }\n\n get selectorMode() {\n return this.get(this.selectorModeID);\n }\n\n constructor() {\n super();\n this.copySelectorListener = this.copySelectorListener.bind(this);\n }\n\n enabled() {\n document.addEventListener(\"contextmenu\", this.copySelectorListener);\n }\n\n disabled() {\n document.removeEventListener(\"contextmenu\", this.copySelectorListener);\n }\n\n copySelectorListener(ctxEvent) {\n ctxEvent.stopPropagation();\n const selector = this.getSelector(ctxEvent.target);\n\n function attach() {\n let cm = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].query(\".contextMenu-HLZMGh\");\n\n if (!cm) {\n const container = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].query(\"#app-mount\");\n const cmWrap = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n cm = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n cmWrap.append(cm);\n container.append(cmWrap);\n cmWrap.style.top = ctxEvent.clientY + \"px\";\n cmWrap.style.left = ctxEvent.clientX + \"px\";\n cmWrap.style.zIndex = \"1002\";\n\n const removeCM = function (removeEvent) {\n if (removeEvent.keyCode && removeEvent.keyCode !== 27) return;\n cmWrap.remove();\n document.removeEventListener(\"click\", removeCM);\n document.removeEventListener(\"contextmenu\", removeCM);\n document.removeEventListener(\"keyup\", removeCM);\n };\n\n document.addEventListener(\"click\", removeCM);\n document.addEventListener(\"contextmenu\", removeCM);\n document.addEventListener(\"keyup\", removeCM);\n }\n\n const cmg = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n const cmi = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n cmi.append(_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
${_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Developer.copySelector}
`));\n cmi.addEventListener(\"click\", () => {\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].ElectronModule.copy(selector);\n cm.style.display = \"none\";\n });\n cmg.append(cmi);\n cm.append(cmg);\n }\n\n setImmediate(attach);\n }\n\n getSelector(element) {\n if (element.id) return `#${element.id}`;\n const rules = this.getRules(element);\n const latestRule = rules[rules.length - 1];\n if (latestRule) return latestRule.selectorText;else if (element.classList.length) return `.${Array.from(element.classList).join(\".\")}`;\n return `.${Array.from(element.parentElement.classList).join(\".\")}`;\n }\n\n getRules(element, css = element.ownerDocument.styleSheets) {\n //if (window.getMatchedCSSRules) return window.getMatchedCSSRules(element);\n const sheets = [...css].filter(s => !s.href || !s.href.includes(\"BetterDiscordApp\"));\n const rules = sheets.map(s => [...(s.cssRules || [])]).flat();\n const elementRules = rules.filter(r => r && r.selectorText && element.matches(r.selectorText) && r.style.length && r.selectorText.split(\", \").length < 8 && !r.selectorText.split(\", \").includes(\"*\"));\n return elementRules;\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZGV2ZWxvcGVyL2NvcHlzZWxlY3Rvci5qcz84ODllIl0sIm5hbWVzIjpbIkRldmVsb3Blck1vZGUiLCJCdWlsdGluIiwibmFtZSIsImNhdGVnb3J5IiwiaWQiLCJzZWxlY3Rvck1vZGVJRCIsInNlbGVjdG9yTW9kZSIsImdldCIsImNvbnN0cnVjdG9yIiwiY29weVNlbGVjdG9yTGlzdGVuZXIiLCJiaW5kIiwiZW5hYmxlZCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsImRpc2FibGVkIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImN0eEV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwic2VsZWN0b3IiLCJnZXRTZWxlY3RvciIsInRhcmdldCIsImF0dGFjaCIsImNtIiwiRE9NIiwicXVlcnkiLCJjb250YWluZXIiLCJjbVdyYXAiLCJjcmVhdGVFbGVtZW50IiwiYXBwZW5kIiwic3R5bGUiLCJ0b3AiLCJjbGllbnRZIiwibGVmdCIsImNsaWVudFgiLCJ6SW5kZXgiLCJyZW1vdmVDTSIsInJlbW92ZUV2ZW50Iiwia2V5Q29kZSIsInJlbW92ZSIsImNtZyIsImNtaSIsIlN0cmluZ3MiLCJEZXZlbG9wZXIiLCJjb3B5U2VsZWN0b3IiLCJEaXNjb3JkTW9kdWxlcyIsIkVsZWN0cm9uTW9kdWxlIiwiY29weSIsImRpc3BsYXkiLCJzZXRJbW1lZGlhdGUiLCJlbGVtZW50IiwicnVsZXMiLCJnZXRSdWxlcyIsImxhdGVzdFJ1bGUiLCJsZW5ndGgiLCJzZWxlY3RvclRleHQiLCJjbGFzc0xpc3QiLCJBcnJheSIsImZyb20iLCJqb2luIiwicGFyZW50RWxlbWVudCIsImNzcyIsIm93bmVyRG9jdW1lbnQiLCJzdHlsZVNoZWV0cyIsInNoZWV0cyIsImZpbHRlciIsInMiLCJocmVmIiwiaW5jbHVkZXMiLCJtYXAiLCJjc3NSdWxlcyIsImZsYXQiLCJlbGVtZW50UnVsZXMiLCJyIiwibWF0Y2hlcyIsInNwbGl0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRWUsbUVBQUksTUFBTUEsYUFBTixTQUE0QkMsd0RBQTVCLENBQW9DO0FBQ25ELE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sZUFBUDtBQUF3Qjs7QUFDcEMsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxXQUFQO0FBQW9COztBQUNwQyxNQUFJQyxFQUFKLEdBQVM7QUFBQyxXQUFPLGVBQVA7QUFBd0I7O0FBQ2xDLE1BQUlDLGNBQUosR0FBcUI7QUFBQyxXQUFPLGNBQVA7QUFBdUI7O0FBQzdDLE1BQUlDLFlBQUosR0FBbUI7QUFBQyxXQUFPLEtBQUtDLEdBQUwsQ0FBUyxLQUFLRixjQUFkLENBQVA7QUFBc0M7O0FBRTFERyxhQUFXLEdBQUc7QUFDVjtBQUNBLFNBQUtDLG9CQUFMLEdBQTRCLEtBQUtBLG9CQUFMLENBQTBCQyxJQUExQixDQUErQixJQUEvQixDQUE1QjtBQUNIOztBQUVEQyxTQUFPLEdBQUc7QUFDTkMsWUFBUSxDQUFDQyxnQkFBVCxDQUEwQixhQUExQixFQUF5QyxLQUFLSixvQkFBOUM7QUFDSDs7QUFFREssVUFBUSxHQUFHO0FBQ1BGLFlBQVEsQ0FBQ0csbUJBQVQsQ0FBNkIsYUFBN0IsRUFBNEMsS0FBS04sb0JBQWpEO0FBQ0g7O0FBRURBLHNCQUFvQixDQUFDTyxRQUFELEVBQVc7QUFDM0JBLFlBQVEsQ0FBQ0MsZUFBVDtBQUNBLFVBQU1DLFFBQVEsR0FBRyxLQUFLQyxXQUFMLENBQWlCSCxRQUFRLENBQUNJLE1BQTFCLENBQWpCOztBQUNBLGFBQVNDLE1BQVQsR0FBa0I7QUFDZCxVQUFJQyxFQUFFLEdBQUdDLHVEQUFHLENBQUNDLEtBQUosQ0FBVSxxQkFBVixDQUFUOztBQUNBLFVBQUksQ0FBQ0YsRUFBTCxFQUFTO0FBQ0wsY0FBTUcsU0FBUyxHQUFHRix1REFBRyxDQUFDQyxLQUFKLENBQVUsWUFBVixDQUFsQjtBQUNBLGNBQU1FLE1BQU0sR0FBR0gsdURBQUcsQ0FBQ0ksYUFBSixDQUFtQixxQ0FBbkIsQ0FBZjtBQUNBTCxVQUFFLEdBQUdDLHVEQUFHLENBQUNJLGFBQUosQ0FBbUIsdUVBQW5CLENBQUw7QUFDQUQsY0FBTSxDQUFDRSxNQUFQLENBQWNOLEVBQWQ7QUFDQUcsaUJBQVMsQ0FBQ0csTUFBVixDQUFpQkYsTUFBakI7QUFDQUEsY0FBTSxDQUFDRyxLQUFQLENBQWFDLEdBQWIsR0FBbUJkLFFBQVEsQ0FBQ2UsT0FBVCxHQUFtQixJQUF0QztBQUNBTCxjQUFNLENBQUNHLEtBQVAsQ0FBYUcsSUFBYixHQUFvQmhCLFFBQVEsQ0FBQ2lCLE9BQVQsR0FBbUIsSUFBdkM7QUFDQVAsY0FBTSxDQUFDRyxLQUFQLENBQWFLLE1BQWIsR0FBc0IsTUFBdEI7O0FBQ0EsY0FBTUMsUUFBUSxHQUFHLFVBQVNDLFdBQVQsRUFBc0I7QUFDbkMsY0FBSUEsV0FBVyxDQUFDQyxPQUFaLElBQXVCRCxXQUFXLENBQUNDLE9BQVosS0FBd0IsRUFBbkQsRUFBdUQ7QUFDdkRYLGdCQUFNLENBQUNZLE1BQVA7QUFDQTFCLGtCQUFRLENBQUNHLG1CQUFULENBQTZCLE9BQTdCLEVBQXNDb0IsUUFBdEM7QUFDQXZCLGtCQUFRLENBQUNHLG1CQUFULENBQTZCLGFBQTdCLEVBQTRDb0IsUUFBNUM7QUFDQXZCLGtCQUFRLENBQUNHLG1CQUFULENBQTZCLE9BQTdCLEVBQXNDb0IsUUFBdEM7QUFDSCxTQU5EOztBQU9BdkIsZ0JBQVEsQ0FBQ0MsZ0JBQVQsQ0FBMEIsT0FBMUIsRUFBbUNzQixRQUFuQztBQUNBdkIsZ0JBQVEsQ0FBQ0MsZ0JBQVQsQ0FBMEIsYUFBMUIsRUFBeUNzQixRQUF6QztBQUNBdkIsZ0JBQVEsQ0FBQ0MsZ0JBQVQsQ0FBMEIsT0FBMUIsRUFBbUNzQixRQUFuQztBQUNIOztBQUVELFlBQU1JLEdBQUcsR0FBR2hCLHVEQUFHLENBQUNJLGFBQUosQ0FBbUIsNkNBQW5CLENBQVo7QUFDQSxZQUFNYSxHQUFHLEdBQUdqQix1REFBRyxDQUFDSSxhQUFKLENBQW1CLDZGQUFuQixDQUFaO0FBQ0FhLFNBQUcsQ0FBQ1osTUFBSixDQUFXTCx1REFBRyxDQUFDSSxhQUFKLENBQW1CLHNDQUFxQ2MsMkRBQU8sQ0FBQ0MsU0FBUixDQUFrQkMsWUFBYSxRQUF2RixDQUFYO0FBQ0FILFNBQUcsQ0FBQzNCLGdCQUFKLENBQXFCLE9BQXJCLEVBQThCLE1BQU07QUFDaEMrQiwwRUFBYyxDQUFDQyxjQUFmLENBQThCQyxJQUE5QixDQUFtQzVCLFFBQW5DO0FBQ0FJLFVBQUUsQ0FBQ08sS0FBSCxDQUFTa0IsT0FBVCxHQUFtQixNQUFuQjtBQUNILE9BSEQ7QUFJQVIsU0FBRyxDQUFDWCxNQUFKLENBQVdZLEdBQVg7QUFDQWxCLFFBQUUsQ0FBQ00sTUFBSCxDQUFVVyxHQUFWO0FBQ0g7O0FBRURTLGdCQUFZLENBQUMzQixNQUFELENBQVo7QUFDSDs7QUFFREYsYUFBVyxDQUFDOEIsT0FBRCxFQUFVO0FBQ2pCLFFBQUlBLE9BQU8sQ0FBQzdDLEVBQVosRUFBZ0IsT0FBUSxJQUFHNkMsT0FBTyxDQUFDN0MsRUFBRyxFQUF0QjtBQUNoQixVQUFNOEMsS0FBSyxHQUFHLEtBQUtDLFFBQUwsQ0FBY0YsT0FBZCxDQUFkO0FBQ0EsVUFBTUcsVUFBVSxHQUFHRixLQUFLLENBQUNBLEtBQUssQ0FBQ0csTUFBTixHQUFlLENBQWhCLENBQXhCO0FBQ0EsUUFBSUQsVUFBSixFQUFnQixPQUFPQSxVQUFVLENBQUNFLFlBQWxCLENBQWhCLEtBQ0ssSUFBSUwsT0FBTyxDQUFDTSxTQUFSLENBQWtCRixNQUF0QixFQUE4QixPQUFRLElBQUdHLEtBQUssQ0FBQ0MsSUFBTixDQUFXUixPQUFPLENBQUNNLFNBQW5CLEVBQThCRyxJQUE5QixDQUFtQyxHQUFuQyxDQUF3QyxFQUFuRDtBQUNuQyxXQUFRLElBQUdGLEtBQUssQ0FBQ0MsSUFBTixDQUFXUixPQUFPLENBQUNVLGFBQVIsQ0FBc0JKLFNBQWpDLEVBQTRDRyxJQUE1QyxDQUFpRCxHQUFqRCxDQUFzRCxFQUFqRTtBQUNIOztBQUVEUCxVQUFRLENBQUNGLE9BQUQsRUFBVVcsR0FBRyxHQUFHWCxPQUFPLENBQUNZLGFBQVIsQ0FBc0JDLFdBQXRDLEVBQW1EO0FBQ3ZEO0FBQ0EsVUFBTUMsTUFBTSxHQUFHLENBQUMsR0FBR0gsR0FBSixFQUFTSSxNQUFULENBQWdCQyxDQUFDLElBQUksQ0FBQ0EsQ0FBQyxDQUFDQyxJQUFILElBQVcsQ0FBQ0QsQ0FBQyxDQUFDQyxJQUFGLENBQU9DLFFBQVAsQ0FBZ0Isa0JBQWhCLENBQWpDLENBQWY7QUFDQSxVQUFNakIsS0FBSyxHQUFHYSxNQUFNLENBQUNLLEdBQVAsQ0FBV0gsQ0FBQyxJQUFJLENBQUMsSUFBSUEsQ0FBQyxDQUFDSSxRQUFGLElBQWMsRUFBbEIsQ0FBRCxDQUFoQixFQUF5Q0MsSUFBekMsRUFBZDtBQUNBLFVBQU1DLFlBQVksR0FBR3JCLEtBQUssQ0FBQ2MsTUFBTixDQUFhUSxDQUFDLElBQUlBLENBQUMsSUFBSUEsQ0FBQyxDQUFDbEIsWUFBUCxJQUF1QkwsT0FBTyxDQUFDd0IsT0FBUixDQUFnQkQsQ0FBQyxDQUFDbEIsWUFBbEIsQ0FBdkIsSUFBMERrQixDQUFDLENBQUMzQyxLQUFGLENBQVF3QixNQUFsRSxJQUE0RW1CLENBQUMsQ0FBQ2xCLFlBQUYsQ0FBZW9CLEtBQWYsQ0FBcUIsSUFBckIsRUFBMkJyQixNQUEzQixHQUFvQyxDQUFoSCxJQUFxSCxDQUFDbUIsQ0FBQyxDQUFDbEIsWUFBRixDQUFlb0IsS0FBZixDQUFxQixJQUFyQixFQUEyQlAsUUFBM0IsQ0FBb0MsR0FBcEMsQ0FBeEksQ0FBckI7QUFDQSxXQUFPSSxZQUFQO0FBQ0g7O0FBM0VrRCxDQUF4QyxFQUFmIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2RldmVsb3Blci9jb3B5c2VsZWN0b3IuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9idWlsdGluXCI7XHJcbmltcG9ydCB7RE9NLCBEaXNjb3JkTW9kdWxlcywgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBEZXZlbG9wZXJNb2RlIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJEZXZlbG9wZXJNb2RlXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImRldmVsb3BlclwiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJkZXZlbG9wZXJNb2RlXCI7fVxyXG4gICAgZ2V0IHNlbGVjdG9yTW9kZUlEKCkge3JldHVybiBcImNvcHlTZWxlY3RvclwiO31cclxuICAgIGdldCBzZWxlY3Rvck1vZGUoKSB7cmV0dXJuIHRoaXMuZ2V0KHRoaXMuc2VsZWN0b3JNb2RlSUQpO31cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMuY29weVNlbGVjdG9yTGlzdGVuZXIgPSB0aGlzLmNvcHlTZWxlY3Rvckxpc3RlbmVyLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZW5hYmxlZCgpIHtcclxuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY29udGV4dG1lbnVcIiwgdGhpcy5jb3B5U2VsZWN0b3JMaXN0ZW5lcik7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNvbnRleHRtZW51XCIsIHRoaXMuY29weVNlbGVjdG9yTGlzdGVuZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvcHlTZWxlY3Rvckxpc3RlbmVyKGN0eEV2ZW50KSB7XHJcbiAgICAgICAgY3R4RXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0b3IgPSB0aGlzLmdldFNlbGVjdG9yKGN0eEV2ZW50LnRhcmdldCk7XHJcbiAgICAgICAgZnVuY3Rpb24gYXR0YWNoKCkge1xyXG4gICAgICAgICAgICBsZXQgY20gPSBET00ucXVlcnkoXCIuY29udGV4dE1lbnUtSExaTUdoXCIpO1xyXG4gICAgICAgICAgICBpZiAoIWNtKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBET00ucXVlcnkoXCIjYXBwLW1vdW50XCIpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY21XcmFwID0gRE9NLmNyZWF0ZUVsZW1lbnQoYDxkaXYgY2xhc3M9XCJsYXllci12OUh5WWMgZGEtbGF5ZXJcIj5gKTtcclxuICAgICAgICAgICAgICAgIGNtID0gRE9NLmNyZWF0ZUVsZW1lbnQoYDxkaXYgY2xhc3M9XCJjb250ZXh0TWVudS1ITFpNR2ggZGEtY29udGV4dE1lbnUgYmQtY29udGV4dC1tZW51XCI+PC9kaXY+YCk7XHJcbiAgICAgICAgICAgICAgICBjbVdyYXAuYXBwZW5kKGNtKTtcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmQoY21XcmFwKTtcclxuICAgICAgICAgICAgICAgIGNtV3JhcC5zdHlsZS50b3AgPSBjdHhFdmVudC5jbGllbnRZICsgXCJweFwiO1xyXG4gICAgICAgICAgICAgICAgY21XcmFwLnN0eWxlLmxlZnQgPSBjdHhFdmVudC5jbGllbnRYICsgXCJweFwiO1xyXG4gICAgICAgICAgICAgICAgY21XcmFwLnN0eWxlLnpJbmRleCA9IFwiMTAwMlwiO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVtb3ZlQ00gPSBmdW5jdGlvbihyZW1vdmVFdmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZW1vdmVFdmVudC5rZXlDb2RlICYmIHJlbW92ZUV2ZW50LmtleUNvZGUgIT09IDI3KSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgY21XcmFwLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCByZW1vdmVDTSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNvbnRleHRtZW51XCIsIHJlbW92ZUNNKTtcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5dXBcIiwgcmVtb3ZlQ00pO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCByZW1vdmVDTSk7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY29udGV4dG1lbnVcIiwgcmVtb3ZlQ00pO1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleXVwXCIsIHJlbW92ZUNNKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgY21nID0gRE9NLmNyZWF0ZUVsZW1lbnQoYDxkaXYgY2xhc3M9XCJpdGVtR3JvdXAtMXRMMHV6IGRhLWl0ZW1Hcm91cFwiPmApO1xyXG4gICAgICAgICAgICBjb25zdCBjbWkgPSBET00uY3JlYXRlRWxlbWVudChgPGRpdiBjbGFzcz1cIml0ZW0tMVl2ZWhjIGl0ZW1CYXNlLXR6NVNlQyBkYS1pdGVtIGRhLWl0ZW1CYXNlIGNsaWNrYWJsZS0xMXVCaS0gZGEtY2xpY2thYmxlXCI+YCk7XHJcbiAgICAgICAgICAgIGNtaS5hcHBlbmQoRE9NLmNyZWF0ZUVsZW1lbnQoYDxkaXYgY2xhc3M9XCJsYWJlbC1KV1FpTmUgZGEtbGFiZWxcIj4ke1N0cmluZ3MuRGV2ZWxvcGVyLmNvcHlTZWxlY3Rvcn08L2Rpdj5gKSk7XHJcbiAgICAgICAgICAgIGNtaS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgRGlzY29yZE1vZHVsZXMuRWxlY3Ryb25Nb2R1bGUuY29weShzZWxlY3Rvcik7XHJcbiAgICAgICAgICAgICAgICBjbS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjbWcuYXBwZW5kKGNtaSk7XHJcbiAgICAgICAgICAgIGNtLmFwcGVuZChjbWcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2V0SW1tZWRpYXRlKGF0dGFjaCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2VsZWN0b3IoZWxlbWVudCkge1xyXG4gICAgICAgIGlmIChlbGVtZW50LmlkKSByZXR1cm4gYCMke2VsZW1lbnQuaWR9YDtcclxuICAgICAgICBjb25zdCBydWxlcyA9IHRoaXMuZ2V0UnVsZXMoZWxlbWVudCk7XHJcbiAgICAgICAgY29uc3QgbGF0ZXN0UnVsZSA9IHJ1bGVzW3J1bGVzLmxlbmd0aCAtIDFdO1xyXG4gICAgICAgIGlmIChsYXRlc3RSdWxlKSByZXR1cm4gbGF0ZXN0UnVsZS5zZWxlY3RvclRleHQ7XHJcbiAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5jbGFzc0xpc3QubGVuZ3RoKSByZXR1cm4gYC4ke0FycmF5LmZyb20oZWxlbWVudC5jbGFzc0xpc3QpLmpvaW4oXCIuXCIpfWA7XHJcbiAgICAgICAgcmV0dXJuIGAuJHtBcnJheS5mcm9tKGVsZW1lbnQucGFyZW50RWxlbWVudC5jbGFzc0xpc3QpLmpvaW4oXCIuXCIpfWA7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UnVsZXMoZWxlbWVudCwgY3NzID0gZWxlbWVudC5vd25lckRvY3VtZW50LnN0eWxlU2hlZXRzKSB7XHJcbiAgICAgICAgLy9pZiAod2luZG93LmdldE1hdGNoZWRDU1NSdWxlcykgcmV0dXJuIHdpbmRvdy5nZXRNYXRjaGVkQ1NTUnVsZXMoZWxlbWVudCk7XHJcbiAgICAgICAgY29uc3Qgc2hlZXRzID0gWy4uLmNzc10uZmlsdGVyKHMgPT4gIXMuaHJlZiB8fCAhcy5ocmVmLmluY2x1ZGVzKFwiQmV0dGVyRGlzY29yZEFwcFwiKSk7XHJcbiAgICAgICAgY29uc3QgcnVsZXMgPSBzaGVldHMubWFwKHMgPT4gWy4uLihzLmNzc1J1bGVzIHx8IFtdKV0pLmZsYXQoKTtcclxuICAgICAgICBjb25zdCBlbGVtZW50UnVsZXMgPSBydWxlcy5maWx0ZXIociA9PiByICYmIHIuc2VsZWN0b3JUZXh0ICYmIGVsZW1lbnQubWF0Y2hlcyhyLnNlbGVjdG9yVGV4dCkgJiYgci5zdHlsZS5sZW5ndGggJiYgci5zZWxlY3RvclRleHQuc3BsaXQoXCIsIFwiKS5sZW5ndGggPCA4ICYmICFyLnNlbGVjdG9yVGV4dC5zcGxpdChcIiwgXCIpLmluY2x1ZGVzKFwiKlwiKSk7XHJcbiAgICAgICAgcmV0dXJuIGVsZW1lbnRSdWxlcztcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/developer/copyselector.js\n"); /***/ }), @@ -190,7 +190,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\n\n\n\nconst electron = __webpack_require__(/*! electron */ \"electron\");\n\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\nconst BrowserWindow = electron.remote.BrowserWindow;\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ReactDevTools extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"ReactDevTools\";\n }\n\n get category() {\n return \"developer\";\n }\n\n get id() {\n return \"reactDevTools\";\n }\n\n initialize() {\n super.initialize();\n this.findExtension();\n }\n\n findExtension() {\n let extensionPath = \"\";\n if (process.platform === \"win32\") extensionPath = path.resolve(process.env.LOCALAPPDATA, \"Google/Chrome/User Data\");else if (process.platform === \"linux\") extensionPath = path.resolve(process.env.HOME, \".config/google-chrome\");else if (process.platform === \"darwin\") extensionPath = path.resolve(process.env.HOME, \"Library/Application Support/Google/Chrome\");else extensionPath = path.resolve(process.env.HOME, \".config/chromium\");\n extensionPath += \"/Default/Extensions/fmkadmapgofadopljbjfkapdkoienihi/\";\n\n if (fs.existsSync(extensionPath)) {\n const versions = fs.readdirSync(extensionPath);\n extensionPath = path.resolve(extensionPath, versions[versions.length - 1]);\n }\n\n this.extensionPath = extensionPath;\n this.isExtensionInstalled = fs.existsSync(extensionPath);\n }\n\n enabled() {\n if (!this.isExtensionInstalled) this.findExtension();\n if (!this.isExtensionInstalled) return _ui_modals__WEBPACK_IMPORTED_MODULE_1__[\"default\"].alert(modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].ReactDevTools.notFound, modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].ReactDevTools.notFoundDetails);\n const didInstall = BrowserWindow.addDevToolsExtension(this.extensionPath);\n if (didInstall) this.log(\"Successfully installed react devtools.\");else this.error(\"Couldn't find react devtools in chrome extensions!\");\n }\n\n disabled() {\n if (!this.isExtensionInstalled) return;\n BrowserWindow.removeDevToolsExtension(\"React Developer Tools\");\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZGV2ZWxvcGVyL3JlYWN0ZGV2dG9vbHMuanM/NzkzNyJdLCJuYW1lcyI6WyJlbGVjdHJvbiIsInJlcXVpcmUiLCJmcyIsInBhdGgiLCJCcm93c2VyV2luZG93IiwicmVtb3RlIiwiUmVhY3REZXZUb29scyIsIkJ1aWx0aW4iLCJuYW1lIiwiY2F0ZWdvcnkiLCJpZCIsImluaXRpYWxpemUiLCJmaW5kRXh0ZW5zaW9uIiwiZXh0ZW5zaW9uUGF0aCIsInByb2Nlc3MiLCJwbGF0Zm9ybSIsInJlc29sdmUiLCJlbnYiLCJMT0NBTEFQUERBVEEiLCJIT01FIiwiZXhpc3RzU3luYyIsInZlcnNpb25zIiwicmVhZGRpclN5bmMiLCJsZW5ndGgiLCJpc0V4dGVuc2lvbkluc3RhbGxlZCIsImVuYWJsZWQiLCJNb2RhbHMiLCJhbGVydCIsIlN0cmluZ3MiLCJub3RGb3VuZCIsIm5vdEZvdW5kRGV0YWlscyIsImRpZEluc3RhbGwiLCJhZGREZXZUb29sc0V4dGVuc2lvbiIsImxvZyIsImVycm9yIiwiZGlzYWJsZWQiLCJyZW1vdmVEZXZUb29sc0V4dGVuc2lvbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTUEsUUFBUSxHQUFHQyxtQkFBTyxDQUFDLDBCQUFELENBQXhCOztBQUNBLE1BQU1DLEVBQUUsR0FBR0QsbUJBQU8sQ0FBQyxjQUFELENBQWxCOztBQUNBLE1BQU1FLElBQUksR0FBR0YsbUJBQU8sQ0FBQyxrQkFBRCxDQUFwQjs7QUFFQSxNQUFNRyxhQUFhLEdBQUdKLFFBQVEsQ0FBQ0ssTUFBVCxDQUFnQkQsYUFBdEM7QUFFZSxtRUFBSSxNQUFNRSxhQUFOLFNBQTRCQyx3REFBNUIsQ0FBb0M7QUFDbkQsTUFBSUMsSUFBSixHQUFXO0FBQUMsV0FBTyxlQUFQO0FBQXdCOztBQUNwQyxNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPLFdBQVA7QUFBb0I7O0FBQ3BDLE1BQUlDLEVBQUosR0FBUztBQUFDLFdBQU8sZUFBUDtBQUF3Qjs7QUFFbENDLFlBQVUsR0FBRztBQUNULFVBQU1BLFVBQU47QUFDQSxTQUFLQyxhQUFMO0FBQ0g7O0FBRURBLGVBQWEsR0FBRztBQUNaLFFBQUlDLGFBQWEsR0FBRyxFQUFwQjtBQUNBLFFBQUlDLE9BQU8sQ0FBQ0MsUUFBUixLQUFxQixPQUF6QixFQUFrQ0YsYUFBYSxHQUFHVixJQUFJLENBQUNhLE9BQUwsQ0FBYUYsT0FBTyxDQUFDRyxHQUFSLENBQVlDLFlBQXpCLEVBQXVDLHlCQUF2QyxDQUFoQixDQUFsQyxLQUNLLElBQUlKLE9BQU8sQ0FBQ0MsUUFBUixLQUFxQixPQUF6QixFQUFrQ0YsYUFBYSxHQUFHVixJQUFJLENBQUNhLE9BQUwsQ0FBYUYsT0FBTyxDQUFDRyxHQUFSLENBQVlFLElBQXpCLEVBQStCLHVCQUEvQixDQUFoQixDQUFsQyxLQUNBLElBQUlMLE9BQU8sQ0FBQ0MsUUFBUixLQUFxQixRQUF6QixFQUFtQ0YsYUFBYSxHQUFHVixJQUFJLENBQUNhLE9BQUwsQ0FBYUYsT0FBTyxDQUFDRyxHQUFSLENBQVlFLElBQXpCLEVBQStCLDJDQUEvQixDQUFoQixDQUFuQyxLQUNBTixhQUFhLEdBQUdWLElBQUksQ0FBQ2EsT0FBTCxDQUFhRixPQUFPLENBQUNHLEdBQVIsQ0FBWUUsSUFBekIsRUFBK0Isa0JBQS9CLENBQWhCO0FBQ0xOLGlCQUFhLElBQUksdURBQWpCOztBQUNBLFFBQUlYLEVBQUUsQ0FBQ2tCLFVBQUgsQ0FBY1AsYUFBZCxDQUFKLEVBQWtDO0FBQzlCLFlBQU1RLFFBQVEsR0FBR25CLEVBQUUsQ0FBQ29CLFdBQUgsQ0FBZVQsYUFBZixDQUFqQjtBQUNBQSxtQkFBYSxHQUFHVixJQUFJLENBQUNhLE9BQUwsQ0FBYUgsYUFBYixFQUE0QlEsUUFBUSxDQUFDQSxRQUFRLENBQUNFLE1BQVQsR0FBa0IsQ0FBbkIsQ0FBcEMsQ0FBaEI7QUFDSDs7QUFDRCxTQUFLVixhQUFMLEdBQXFCQSxhQUFyQjtBQUNBLFNBQUtXLG9CQUFMLEdBQTRCdEIsRUFBRSxDQUFDa0IsVUFBSCxDQUFjUCxhQUFkLENBQTVCO0FBQ0g7O0FBRURZLFNBQU8sR0FBRztBQUNOLFFBQUksQ0FBQyxLQUFLRCxvQkFBVixFQUFnQyxLQUFLWixhQUFMO0FBQ2hDLFFBQUksQ0FBQyxLQUFLWSxvQkFBVixFQUFnQyxPQUFPRSxrREFBTSxDQUFDQyxLQUFQLENBQWFDLCtDQUFPLENBQUN0QixhQUFSLENBQXNCdUIsUUFBbkMsRUFBNkNELCtDQUFPLENBQUN0QixhQUFSLENBQXNCd0IsZUFBbkUsQ0FBUDtBQUVoQyxVQUFNQyxVQUFVLEdBQUczQixhQUFhLENBQUM0QixvQkFBZCxDQUFtQyxLQUFLbkIsYUFBeEMsQ0FBbkI7QUFDQSxRQUFJa0IsVUFBSixFQUFnQixLQUFLRSxHQUFMLENBQVMsd0NBQVQsRUFBaEIsS0FDSyxLQUFLQyxLQUFMLENBQVcsb0RBQVg7QUFDUjs7QUFFREMsVUFBUSxHQUFHO0FBQ1AsUUFBSSxDQUFDLEtBQUtYLG9CQUFWLEVBQWdDO0FBQ2hDcEIsaUJBQWEsQ0FBQ2dDLHVCQUFkLENBQXNDLHVCQUF0QztBQUNIOztBQXJDa0QsQ0FBeEMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9kZXZlbG9wZXIvcmVhY3RkZXZ0b29scy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCdWlsdGluIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL2J1aWx0aW5cIjtcclxuaW1wb3J0IE1vZGFscyBmcm9tIFwiLi4vLi4vdWkvbW9kYWxzXCI7XHJcbmltcG9ydCB7U3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmNvbnN0IGVsZWN0cm9uID0gcmVxdWlyZShcImVsZWN0cm9uXCIpO1xyXG5jb25zdCBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcclxuY29uc3QgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xyXG5cclxuY29uc3QgQnJvd3NlcldpbmRvdyA9IGVsZWN0cm9uLnJlbW90ZS5Ccm93c2VyV2luZG93O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIFJlYWN0RGV2VG9vbHMgZXh0ZW5kcyBCdWlsdGluIHtcclxuICAgIGdldCBuYW1lKCkge3JldHVybiBcIlJlYWN0RGV2VG9vbHNcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwiZGV2ZWxvcGVyXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcInJlYWN0RGV2VG9vbHNcIjt9XHJcblxyXG4gICAgaW5pdGlhbGl6ZSgpIHtcclxuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgdGhpcy5maW5kRXh0ZW5zaW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZmluZEV4dGVuc2lvbigpIHtcclxuICAgICAgICBsZXQgZXh0ZW5zaW9uUGF0aCA9IFwiXCI7XHJcbiAgICAgICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09IFwid2luMzJcIikgZXh0ZW5zaW9uUGF0aCA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmVudi5MT0NBTEFQUERBVEEsIFwiR29vZ2xlL0Nocm9tZS9Vc2VyIERhdGFcIik7XHJcbiAgICAgICAgZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gXCJsaW51eFwiKSBleHRlbnNpb25QYXRoID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuZW52LkhPTUUsIFwiLmNvbmZpZy9nb29nbGUtY2hyb21lXCIpO1xyXG4gICAgICAgIGVsc2UgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09IFwiZGFyd2luXCIpIGV4dGVuc2lvblBhdGggPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5lbnYuSE9NRSwgXCJMaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQvR29vZ2xlL0Nocm9tZVwiKTtcclxuICAgICAgICBlbHNlIGV4dGVuc2lvblBhdGggPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5lbnYuSE9NRSwgXCIuY29uZmlnL2Nocm9taXVtXCIpO1xyXG4gICAgICAgIGV4dGVuc2lvblBhdGggKz0gXCIvRGVmYXVsdC9FeHRlbnNpb25zL2Zta2FkbWFwZ29mYWRvcGxqYmpma2FwZGtvaWVuaWhpL1wiO1xyXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKGV4dGVuc2lvblBhdGgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZlcnNpb25zID0gZnMucmVhZGRpclN5bmMoZXh0ZW5zaW9uUGF0aCk7XHJcbiAgICAgICAgICAgIGV4dGVuc2lvblBhdGggPSBwYXRoLnJlc29sdmUoZXh0ZW5zaW9uUGF0aCwgdmVyc2lvbnNbdmVyc2lvbnMubGVuZ3RoIC0gMV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmV4dGVuc2lvblBhdGggPSBleHRlbnNpb25QYXRoO1xyXG4gICAgICAgIHRoaXMuaXNFeHRlbnNpb25JbnN0YWxsZWQgPSBmcy5leGlzdHNTeW5jKGV4dGVuc2lvblBhdGgpO1xyXG4gICAgfVxyXG5cclxuICAgIGVuYWJsZWQoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzRXh0ZW5zaW9uSW5zdGFsbGVkKSB0aGlzLmZpbmRFeHRlbnNpb24oKTtcclxuICAgICAgICBpZiAoIXRoaXMuaXNFeHRlbnNpb25JbnN0YWxsZWQpIHJldHVybiBNb2RhbHMuYWxlcnQoU3RyaW5ncy5SZWFjdERldlRvb2xzLm5vdEZvdW5kLCBTdHJpbmdzLlJlYWN0RGV2VG9vbHMubm90Rm91bmREZXRhaWxzKTtcclxuXHJcbiAgICAgICAgY29uc3QgZGlkSW5zdGFsbCA9IEJyb3dzZXJXaW5kb3cuYWRkRGV2VG9vbHNFeHRlbnNpb24odGhpcy5leHRlbnNpb25QYXRoKTtcclxuICAgICAgICBpZiAoZGlkSW5zdGFsbCkgdGhpcy5sb2coXCJTdWNjZXNzZnVsbHkgaW5zdGFsbGVkIHJlYWN0IGRldnRvb2xzLlwiKTtcclxuICAgICAgICBlbHNlIHRoaXMuZXJyb3IoXCJDb3VsZG4ndCBmaW5kIHJlYWN0IGRldnRvb2xzIGluIGNocm9tZSBleHRlbnNpb25zIVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlZCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNFeHRlbnNpb25JbnN0YWxsZWQpIHJldHVybjtcclxuICAgICAgICBCcm93c2VyV2luZG93LnJlbW92ZURldlRvb2xzRXh0ZW5zaW9uKFwiUmVhY3QgRGV2ZWxvcGVyIFRvb2xzXCIpO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/developer/reactdevtools.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\n\n\n\nconst electron = __webpack_require__(/*! electron */ \"electron\");\n\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\nconst BrowserWindow = electron.remote.BrowserWindow;\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ReactDevTools extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"ReactDevTools\";\n }\n\n get category() {\n return \"developer\";\n }\n\n get id() {\n return \"reactDevTools\";\n }\n\n initialize() {\n super.initialize();\n this.findExtension();\n }\n\n findExtension() {\n let extensionPath = \"\";\n if (process.platform === \"win32\") extensionPath = path.resolve(process.env.LOCALAPPDATA, \"Google/Chrome/User Data\");else if (process.platform === \"linux\") extensionPath = path.resolve(process.env.HOME, \".config/google-chrome\");else if (process.platform === \"darwin\") extensionPath = path.resolve(process.env.HOME, \"Library/Application Support/Google/Chrome\");else extensionPath = path.resolve(process.env.HOME, \".config/chromium\");\n extensionPath += \"/Default/Extensions/fmkadmapgofadopljbjfkapdkoienihi/\";\n\n if (fs.existsSync(extensionPath)) {\n const versions = fs.readdirSync(extensionPath);\n extensionPath = path.resolve(extensionPath, versions[versions.length - 1]);\n }\n\n this.extensionPath = extensionPath;\n this.isExtensionInstalled = fs.existsSync(extensionPath);\n }\n\n enabled() {\n if (!this.isExtensionInstalled) this.findExtension();\n if (!this.isExtensionInstalled) return _ui_modals__WEBPACK_IMPORTED_MODULE_1__[\"default\"].alert(_modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].ReactDevTools.notFound, _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].ReactDevTools.notFoundDetails);\n const didInstall = BrowserWindow.addDevToolsExtension(this.extensionPath);\n if (didInstall) this.log(\"Successfully installed react devtools.\");else this.error(\"Couldn't find react devtools in chrome extensions!\");\n }\n\n disabled() {\n if (!this.isExtensionInstalled) return;\n BrowserWindow.removeDevToolsExtension(\"React Developer Tools\");\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZGV2ZWxvcGVyL3JlYWN0ZGV2dG9vbHMuanM/NzkzNyJdLCJuYW1lcyI6WyJlbGVjdHJvbiIsInJlcXVpcmUiLCJmcyIsInBhdGgiLCJCcm93c2VyV2luZG93IiwicmVtb3RlIiwiUmVhY3REZXZUb29scyIsIkJ1aWx0aW4iLCJuYW1lIiwiY2F0ZWdvcnkiLCJpZCIsImluaXRpYWxpemUiLCJmaW5kRXh0ZW5zaW9uIiwiZXh0ZW5zaW9uUGF0aCIsInByb2Nlc3MiLCJwbGF0Zm9ybSIsInJlc29sdmUiLCJlbnYiLCJMT0NBTEFQUERBVEEiLCJIT01FIiwiZXhpc3RzU3luYyIsInZlcnNpb25zIiwicmVhZGRpclN5bmMiLCJsZW5ndGgiLCJpc0V4dGVuc2lvbkluc3RhbGxlZCIsImVuYWJsZWQiLCJNb2RhbHMiLCJhbGVydCIsIlN0cmluZ3MiLCJub3RGb3VuZCIsIm5vdEZvdW5kRGV0YWlscyIsImRpZEluc3RhbGwiLCJhZGREZXZUb29sc0V4dGVuc2lvbiIsImxvZyIsImVycm9yIiwiZGlzYWJsZWQiLCJyZW1vdmVEZXZUb29sc0V4dGVuc2lvbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTUEsUUFBUSxHQUFHQyxtQkFBTyxDQUFDLDBCQUFELENBQXhCOztBQUNBLE1BQU1DLEVBQUUsR0FBR0QsbUJBQU8sQ0FBQyxjQUFELENBQWxCOztBQUNBLE1BQU1FLElBQUksR0FBR0YsbUJBQU8sQ0FBQyxrQkFBRCxDQUFwQjs7QUFFQSxNQUFNRyxhQUFhLEdBQUdKLFFBQVEsQ0FBQ0ssTUFBVCxDQUFnQkQsYUFBdEM7QUFFZSxtRUFBSSxNQUFNRSxhQUFOLFNBQTRCQyx3REFBNUIsQ0FBb0M7QUFDbkQsTUFBSUMsSUFBSixHQUFXO0FBQUMsV0FBTyxlQUFQO0FBQXdCOztBQUNwQyxNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPLFdBQVA7QUFBb0I7O0FBQ3BDLE1BQUlDLEVBQUosR0FBUztBQUFDLFdBQU8sZUFBUDtBQUF3Qjs7QUFFbENDLFlBQVUsR0FBRztBQUNULFVBQU1BLFVBQU47QUFDQSxTQUFLQyxhQUFMO0FBQ0g7O0FBRURBLGVBQWEsR0FBRztBQUNaLFFBQUlDLGFBQWEsR0FBRyxFQUFwQjtBQUNBLFFBQUlDLE9BQU8sQ0FBQ0MsUUFBUixLQUFxQixPQUF6QixFQUFrQ0YsYUFBYSxHQUFHVixJQUFJLENBQUNhLE9BQUwsQ0FBYUYsT0FBTyxDQUFDRyxHQUFSLENBQVlDLFlBQXpCLEVBQXVDLHlCQUF2QyxDQUFoQixDQUFsQyxLQUNLLElBQUlKLE9BQU8sQ0FBQ0MsUUFBUixLQUFxQixPQUF6QixFQUFrQ0YsYUFBYSxHQUFHVixJQUFJLENBQUNhLE9BQUwsQ0FBYUYsT0FBTyxDQUFDRyxHQUFSLENBQVlFLElBQXpCLEVBQStCLHVCQUEvQixDQUFoQixDQUFsQyxLQUNBLElBQUlMLE9BQU8sQ0FBQ0MsUUFBUixLQUFxQixRQUF6QixFQUFtQ0YsYUFBYSxHQUFHVixJQUFJLENBQUNhLE9BQUwsQ0FBYUYsT0FBTyxDQUFDRyxHQUFSLENBQVlFLElBQXpCLEVBQStCLDJDQUEvQixDQUFoQixDQUFuQyxLQUNBTixhQUFhLEdBQUdWLElBQUksQ0FBQ2EsT0FBTCxDQUFhRixPQUFPLENBQUNHLEdBQVIsQ0FBWUUsSUFBekIsRUFBK0Isa0JBQS9CLENBQWhCO0FBQ0xOLGlCQUFhLElBQUksdURBQWpCOztBQUNBLFFBQUlYLEVBQUUsQ0FBQ2tCLFVBQUgsQ0FBY1AsYUFBZCxDQUFKLEVBQWtDO0FBQzlCLFlBQU1RLFFBQVEsR0FBR25CLEVBQUUsQ0FBQ29CLFdBQUgsQ0FBZVQsYUFBZixDQUFqQjtBQUNBQSxtQkFBYSxHQUFHVixJQUFJLENBQUNhLE9BQUwsQ0FBYUgsYUFBYixFQUE0QlEsUUFBUSxDQUFDQSxRQUFRLENBQUNFLE1BQVQsR0FBa0IsQ0FBbkIsQ0FBcEMsQ0FBaEI7QUFDSDs7QUFDRCxTQUFLVixhQUFMLEdBQXFCQSxhQUFyQjtBQUNBLFNBQUtXLG9CQUFMLEdBQTRCdEIsRUFBRSxDQUFDa0IsVUFBSCxDQUFjUCxhQUFkLENBQTVCO0FBQ0g7O0FBRURZLFNBQU8sR0FBRztBQUNOLFFBQUksQ0FBQyxLQUFLRCxvQkFBVixFQUFnQyxLQUFLWixhQUFMO0FBQ2hDLFFBQUksQ0FBQyxLQUFLWSxvQkFBVixFQUFnQyxPQUFPRSxrREFBTSxDQUFDQyxLQUFQLENBQWFDLDJEQUFPLENBQUN0QixhQUFSLENBQXNCdUIsUUFBbkMsRUFBNkNELDJEQUFPLENBQUN0QixhQUFSLENBQXNCd0IsZUFBbkUsQ0FBUDtBQUVoQyxVQUFNQyxVQUFVLEdBQUczQixhQUFhLENBQUM0QixvQkFBZCxDQUFtQyxLQUFLbkIsYUFBeEMsQ0FBbkI7QUFDQSxRQUFJa0IsVUFBSixFQUFnQixLQUFLRSxHQUFMLENBQVMsd0NBQVQsRUFBaEIsS0FDSyxLQUFLQyxLQUFMLENBQVcsb0RBQVg7QUFDUjs7QUFFREMsVUFBUSxHQUFHO0FBQ1AsUUFBSSxDQUFDLEtBQUtYLG9CQUFWLEVBQWdDO0FBQ2hDcEIsaUJBQWEsQ0FBQ2dDLHVCQUFkLENBQXNDLHVCQUF0QztBQUNIOztBQXJDa0QsQ0FBeEMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9kZXZlbG9wZXIvcmVhY3RkZXZ0b29scy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCdWlsdGluIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL2J1aWx0aW5cIjtcclxuaW1wb3J0IE1vZGFscyBmcm9tIFwiLi4vLi4vdWkvbW9kYWxzXCI7XHJcbmltcG9ydCB7U3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmNvbnN0IGVsZWN0cm9uID0gcmVxdWlyZShcImVsZWN0cm9uXCIpO1xyXG5jb25zdCBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcclxuY29uc3QgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xyXG5cclxuY29uc3QgQnJvd3NlcldpbmRvdyA9IGVsZWN0cm9uLnJlbW90ZS5Ccm93c2VyV2luZG93O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIFJlYWN0RGV2VG9vbHMgZXh0ZW5kcyBCdWlsdGluIHtcclxuICAgIGdldCBuYW1lKCkge3JldHVybiBcIlJlYWN0RGV2VG9vbHNcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwiZGV2ZWxvcGVyXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcInJlYWN0RGV2VG9vbHNcIjt9XHJcblxyXG4gICAgaW5pdGlhbGl6ZSgpIHtcclxuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgdGhpcy5maW5kRXh0ZW5zaW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZmluZEV4dGVuc2lvbigpIHtcclxuICAgICAgICBsZXQgZXh0ZW5zaW9uUGF0aCA9IFwiXCI7XHJcbiAgICAgICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09IFwid2luMzJcIikgZXh0ZW5zaW9uUGF0aCA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmVudi5MT0NBTEFQUERBVEEsIFwiR29vZ2xlL0Nocm9tZS9Vc2VyIERhdGFcIik7XHJcbiAgICAgICAgZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gXCJsaW51eFwiKSBleHRlbnNpb25QYXRoID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuZW52LkhPTUUsIFwiLmNvbmZpZy9nb29nbGUtY2hyb21lXCIpO1xyXG4gICAgICAgIGVsc2UgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09IFwiZGFyd2luXCIpIGV4dGVuc2lvblBhdGggPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5lbnYuSE9NRSwgXCJMaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQvR29vZ2xlL0Nocm9tZVwiKTtcclxuICAgICAgICBlbHNlIGV4dGVuc2lvblBhdGggPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5lbnYuSE9NRSwgXCIuY29uZmlnL2Nocm9taXVtXCIpO1xyXG4gICAgICAgIGV4dGVuc2lvblBhdGggKz0gXCIvRGVmYXVsdC9FeHRlbnNpb25zL2Zta2FkbWFwZ29mYWRvcGxqYmpma2FwZGtvaWVuaWhpL1wiO1xyXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKGV4dGVuc2lvblBhdGgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZlcnNpb25zID0gZnMucmVhZGRpclN5bmMoZXh0ZW5zaW9uUGF0aCk7XHJcbiAgICAgICAgICAgIGV4dGVuc2lvblBhdGggPSBwYXRoLnJlc29sdmUoZXh0ZW5zaW9uUGF0aCwgdmVyc2lvbnNbdmVyc2lvbnMubGVuZ3RoIC0gMV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmV4dGVuc2lvblBhdGggPSBleHRlbnNpb25QYXRoO1xyXG4gICAgICAgIHRoaXMuaXNFeHRlbnNpb25JbnN0YWxsZWQgPSBmcy5leGlzdHNTeW5jKGV4dGVuc2lvblBhdGgpO1xyXG4gICAgfVxyXG5cclxuICAgIGVuYWJsZWQoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzRXh0ZW5zaW9uSW5zdGFsbGVkKSB0aGlzLmZpbmRFeHRlbnNpb24oKTtcclxuICAgICAgICBpZiAoIXRoaXMuaXNFeHRlbnNpb25JbnN0YWxsZWQpIHJldHVybiBNb2RhbHMuYWxlcnQoU3RyaW5ncy5SZWFjdERldlRvb2xzLm5vdEZvdW5kLCBTdHJpbmdzLlJlYWN0RGV2VG9vbHMubm90Rm91bmREZXRhaWxzKTtcclxuXHJcbiAgICAgICAgY29uc3QgZGlkSW5zdGFsbCA9IEJyb3dzZXJXaW5kb3cuYWRkRGV2VG9vbHNFeHRlbnNpb24odGhpcy5leHRlbnNpb25QYXRoKTtcclxuICAgICAgICBpZiAoZGlkSW5zdGFsbCkgdGhpcy5sb2coXCJTdWNjZXNzZnVsbHkgaW5zdGFsbGVkIHJlYWN0IGRldnRvb2xzLlwiKTtcclxuICAgICAgICBlbHNlIHRoaXMuZXJyb3IoXCJDb3VsZG4ndCBmaW5kIHJlYWN0IGRldnRvb2xzIGluIGNocm9tZSBleHRlbnNpb25zIVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlZCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNFeHRlbnNpb25JbnN0YWxsZWQpIHJldHVybjtcclxuICAgICAgICBCcm93c2VyV2luZG93LnJlbW92ZURldlRvb2xzRXh0ZW5zaW9uKFwiUmVhY3QgRGV2ZWxvcGVyIFRvb2xzXCIpO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/developer/reactdevtools.js\n"); /***/ }), @@ -202,7 +202,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _emotes__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./emotes */ \"./src/builtins/emotes/emotes.js\");\n\n\n\n\nconst headerHTML = `
\n \n \n
`;\nconst twitchEmoteHTML = `
\n
\n
\n
\n\n
\n
\n
\n
`;\nconst favoritesHTML = `
\n
\n
\n
\n\n
\n
\n
\n
`;\n\nconst makeEmote = (emote, url, options = {}) => {\n const {\n onContextMenu,\n onClick\n } = options;\n const emoteContainer = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
\n \"${emote}\"\n
`);\n if (onContextMenu) emoteContainer.addEventListener(\"contextmenu\", onContextMenu);\n emoteContainer.addEventListener(\"click\", onClick);\n return emoteContainer;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class EmoteMenu extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"EmoteMenu\";\n }\n\n get collection() {\n return \"emotes\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"emoteMenu\";\n }\n\n get hideEmojisID() {\n return \"hideEmojiMenu\";\n }\n\n get hideEmojis() {\n return this.get(this.hideEmojisID);\n }\n\n constructor() {\n super();\n this.lastTab = \"bd-qem-emojis\";\n this.qmeHeader = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(headerHTML);\n\n for (const button of this.qmeHeader.getElementsByTagName(\"button\")) button.addEventListener(\"click\", this.switchMenu.bind(this));\n\n this.teContainer = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(twitchEmoteHTML);\n this.teContainerInner = this.teContainer.querySelector(\".emote-menu-inner\");\n this.faContainer = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(favoritesHTML);\n this.faContainerInner = this.faContainer.querySelector(\".emote-menu-inner\");\n this.observer = new MutationObserver(mutations => {\n for (const mutation of mutations) this.observe(mutation);\n });\n this.enableHideEmojis = this.enableHideEmojis.bind(this);\n this.disableHideEmojis = this.disableHideEmojis.bind(this);\n this.updateTwitchEmotes = this.updateTwitchEmotes.bind(this);\n }\n\n async enabled() {\n // Temporary measure, so not using Strings/translation\n return _ui_modals__WEBPACK_IMPORTED_MODULE_2__[\"default\"].alert(\"Emote Menu Broken\", \"Emote Menu is currently broken, it is recommended to disable this until it is fixed.\"); // this.log(\"Starting to observe\");\n // this.observer.observe(document.getElementById(\"app-mount\"), {\n // childList: true,\n // subtree: true\n // });\n // this.hideEmojiCancel = this.registerSetting(this.hideEmojisID, this.enableHideEmojis, this.disableHideEmojis);\n // if (this.hideEmojis) this.enableHideEmojis();\n // if (EmoteModule.emotesLoaded) this.updateTwitchEmotes();\n // this.updateFavorites();\n // Events.on(\"emotes-loaded\", this.updateTwitchEmotes);\n }\n\n disabled() {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].off(\"emotes-loaded\", this.updateTwitchEmotes);\n this.observer.disconnect();\n this.disableHideEmojis();\n if (this.hideEmojiCancel) this.hideEmojiCancel();\n }\n\n enableHideEmojis() {\n const picker = document.querySelector(\".emojiPicker-3m1S-j\");\n if (picker) picker.classList.add(\"bd-qme-hidden\");\n }\n\n disableHideEmojis() {\n const picker = document.querySelector(\".emojiPicker-3m1S-j\");\n if (picker) picker.classList.remove(\"bd-qme-hidden\");\n }\n\n insertEmote(emote) {\n const ta = modules__WEBPACK_IMPORTED_MODULE_1__[\"Utilities\"].getTextArea();\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Utilities\"].insertText(ta[0], ta.val().slice(-1) == \" \" ? ta.val() + emote : ta.val() + \" \" + emote);\n }\n\n favContext(e) {\n e.stopPropagation();\n const em = e.target.closest(\".emote-container\").children[0];\n const menu = $(`
Remove
`);\n menu.css({\n top: e.pageY - $(\"#bd-qem-favourite-container\").offset().top,\n left: e.pageX - $(\"#bd-qem-favourite-container\").offset().left\n });\n $(em).parent().append(menu);\n menu.on(\"click\", event => {\n event.preventDefault();\n event.stopPropagation();\n $(em).remove();\n _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].removeFavorite($(em).attr(\"title\"));\n this.updateFavorites();\n $(document).off(\"mousedown.emotemenu\");\n });\n $(document).on(\"mousedown.emotemenu\", function (event) {\n if (event.target.id == \"removemenu\") return;\n $(\"#removemenu\").remove();\n $(document).off(\"mousedown.emotemenu\");\n });\n }\n\n switchMenu(e) {\n let id = typeof e == \"string\" ? e : e.target.id;\n if (id == \"bd-qem-emojis\" && this.hideEmojis) id = \"bd-qem-favourite\";\n const twitch = $(\"#bd-qem-twitch\");\n const fav = $(\"#bd-qem-favourite\");\n const emojis = $(\"#bd-qem-emojis\");\n twitch.removeClass(\"active\");\n fav.removeClass(\"active\");\n emojis.removeClass(\"active\");\n $(\".emojiPicker-3m1S-j\").hide();\n $(\"#bd-qem-favourite-container\").hide();\n $(\"#bd-qem-twitch-container\").hide();\n\n switch (id) {\n case \"bd-qem-twitch\":\n twitch.addClass(\"active\");\n $(\"#bd-qem-twitch-container\").show();\n break;\n\n case \"bd-qem-favourite\":\n fav.addClass(\"active\");\n $(\"#bd-qem-favourite-container\").show();\n break;\n\n case \"bd-qem-emojis\":\n emojis.addClass(\"active\");\n $(\".emojiPicker-3m1S-j\").show();\n $(\".emojiPicker-3m1S-j input\").focus();\n break;\n }\n\n if (id) this.lastTab = id;\n }\n\n observe(mutation) {\n if (!mutation.addedNodes.length || !(mutation.addedNodes[0] instanceof Element)) return;\n const node = mutation.addedNodes[0]; // if (!node.classList.contains(\"popout-2iWAc-\") || node.classList.contains(\"popoutLeft-30WmrD\") || !node.getElementsByClassName(\"emojiPicker-3m1S-j\").length) return;\n\n if (!node.classList.contains(\"layer-v9HyYc\") || !node.getElementsByClassName(\"emojiPicker-3m1S-j\").length || node.querySelector(\".emojiPicker-3m1S-j\").parentElement.classList.contains(\"animatorLeft-1EQxU0\")) return;\n const e = $(node);\n if (this.hideEmojis) e.addClass(\"bd-qme-hidden\");else e.removeClass(\"bd-qme-hidden\");\n e.prepend(this.qmeHeader);\n e.append(this.teContainer);\n e.append(this.faContainer);\n this.switchMenu(this.lastTab);\n }\n\n updateTwitchEmotes() {\n while (this.teContainerInner.firstChild) this.teContainerInner.firstChild.remove();\n\n for (const emote in _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getCategory(\"TwitchGlobal\")) {\n if (!_emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getCategory(\"TwitchGlobal\").hasOwnProperty(emote)) continue;\n const url = _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getUrl(\"TwitchGlobal\", emote);\n const emoteElement = makeEmote(emote, url, {\n onClick: this.insertEmote.bind(this, emote)\n });\n this.teContainerInner.append(emoteElement);\n }\n }\n\n updateFavorites() {\n while (this.faContainerInner.firstChild) this.faContainerInner.firstChild.remove();\n\n for (const emote in _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].favorites) {\n const url = _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].favorites[emote];\n const emoteElement = makeEmote(emote, url, {\n onClick: this.insertEmote.bind(this, emote),\n onContextMenu: this.favContext.bind(this)\n });\n this.faContainerInner.append(emoteElement);\n }\n\n _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].saveFavorites();\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZW1vdGVzL2Vtb3RlbWVudS5qcz9mMjJlIl0sIm5hbWVzIjpbImhlYWRlckhUTUwiLCJ0d2l0Y2hFbW90ZUhUTUwiLCJmYXZvcml0ZXNIVE1MIiwibWFrZUVtb3RlIiwiZW1vdGUiLCJ1cmwiLCJvcHRpb25zIiwib25Db250ZXh0TWVudSIsIm9uQ2xpY2siLCJlbW90ZUNvbnRhaW5lciIsIkRPTSIsImNyZWF0ZUVsZW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwiRW1vdGVNZW51IiwiQnVpbHRpbiIsIm5hbWUiLCJjb2xsZWN0aW9uIiwiY2F0ZWdvcnkiLCJpZCIsImhpZGVFbW9qaXNJRCIsImhpZGVFbW9qaXMiLCJnZXQiLCJjb25zdHJ1Y3RvciIsImxhc3RUYWIiLCJxbWVIZWFkZXIiLCJidXR0b24iLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInN3aXRjaE1lbnUiLCJiaW5kIiwidGVDb250YWluZXIiLCJ0ZUNvbnRhaW5lcklubmVyIiwicXVlcnlTZWxlY3RvciIsImZhQ29udGFpbmVyIiwiZmFDb250YWluZXJJbm5lciIsIm9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsIm11dGF0aW9ucyIsIm11dGF0aW9uIiwib2JzZXJ2ZSIsImVuYWJsZUhpZGVFbW9qaXMiLCJkaXNhYmxlSGlkZUVtb2ppcyIsInVwZGF0ZVR3aXRjaEVtb3RlcyIsImVuYWJsZWQiLCJNb2RhbHMiLCJhbGVydCIsImRpc2FibGVkIiwiRXZlbnRzIiwib2ZmIiwiZGlzY29ubmVjdCIsImhpZGVFbW9qaUNhbmNlbCIsInBpY2tlciIsImRvY3VtZW50IiwiY2xhc3NMaXN0IiwiYWRkIiwicmVtb3ZlIiwiaW5zZXJ0RW1vdGUiLCJ0YSIsIlV0aWxpdGllcyIsImdldFRleHRBcmVhIiwiaW5zZXJ0VGV4dCIsInZhbCIsInNsaWNlIiwiZmF2Q29udGV4dCIsImUiLCJzdG9wUHJvcGFnYXRpb24iLCJlbSIsInRhcmdldCIsImNsb3Nlc3QiLCJjaGlsZHJlbiIsIm1lbnUiLCIkIiwiY3NzIiwidG9wIiwicGFnZVkiLCJvZmZzZXQiLCJsZWZ0IiwicGFnZVgiLCJwYXJlbnQiLCJhcHBlbmQiLCJvbiIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJFbW90ZU1vZHVsZSIsInJlbW92ZUZhdm9yaXRlIiwiYXR0ciIsInVwZGF0ZUZhdm9yaXRlcyIsInR3aXRjaCIsImZhdiIsImVtb2ppcyIsInJlbW92ZUNsYXNzIiwiaGlkZSIsImFkZENsYXNzIiwic2hvdyIsImZvY3VzIiwiYWRkZWROb2RlcyIsImxlbmd0aCIsIkVsZW1lbnQiLCJub2RlIiwiY29udGFpbnMiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwicGFyZW50RWxlbWVudCIsInByZXBlbmQiLCJmaXJzdENoaWxkIiwiZ2V0Q2F0ZWdvcnkiLCJoYXNPd25Qcm9wZXJ0eSIsImdldFVybCIsImVtb3RlRWxlbWVudCIsImZhdm9yaXRlcyIsInNhdmVGYXZvcml0ZXMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUVBLE1BQU1BLFVBQVUsR0FBSTs7OztPQUFwQjtBQU1BLE1BQU1DLGVBQWUsR0FBSTs7Ozs7Ozs7T0FBekI7QUFVQSxNQUFNQyxhQUFhLEdBQUk7Ozs7Ozs7O09BQXZCOztBQVVBLE1BQU1DLFNBQVMsR0FBRyxDQUFDQyxLQUFELEVBQVFDLEdBQVIsRUFBYUMsT0FBTyxHQUFHLEVBQXZCLEtBQThCO0FBQzVDLFFBQU07QUFBQ0MsaUJBQUQ7QUFBZ0JDO0FBQWhCLE1BQTJCRixPQUFqQztBQUNBLFFBQU1HLGNBQWMsR0FBR0MsMkNBQUcsQ0FBQ0MsYUFBSixDQUFtQjt1Q0FDUFAsS0FBTSxVQUFTQyxHQUFJLFlBQVdELEtBQU07V0FEaEQsQ0FBdkI7QUFHQSxNQUFJRyxhQUFKLEVBQW1CRSxjQUFjLENBQUNHLGdCQUFmLENBQWdDLGFBQWhDLEVBQStDTCxhQUEvQztBQUNuQkUsZ0JBQWMsQ0FBQ0csZ0JBQWYsQ0FB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QnFFLFVBQXRCLENBQWlDaEQsTUFBakM7O0FBQ3pDLFNBQUssTUFBTWxELEtBQVgsSUFBb0I4RSwrQ0FBVyxDQUFDeUIsU0FBaEMsRUFBMkM7QUFDdkMsWUFBTXRHLEdBQUcsR0FBRzZFLCtDQUFXLENBQUN5QixTQUFaLENBQXNCdkcsS0FBdEIsQ0FBWjtBQUNBLFlBQU1zRyxZQUFZLEdBQUd2RyxTQUFTLENBQUNDLEtBQUQsRUFBUUMsR0FBUixFQUFhO0FBQUNHLGVBQU8sRUFBRSxLQUFLK0MsV0FBTCxDQUFpQjNCLElBQWpCLENBQXNCLElBQXRCLEVBQTRCeEIsS0FBNUIsQ0FBVjtBQUE4Q0cscUJBQWEsRUFBRSxLQUFLdUQsVUFBTCxDQUFnQmxDLElBQWhCLENBQXFCLElBQXJCO0FBQTdELE9BQWIsQ0FBOUI7QUFDQSxXQUFLSyxnQkFBTCxDQUFzQjZDLE1BQXRCLENBQTZCNEIsWUFBN0I7QUFDSDs7QUFDRHhCLG1EQUFXLENBQUMwQixhQUFaO0FBQ0g7O0FBM0o4QyxDQUFwQyxFQUFmIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2Vtb3Rlcy9lbW90ZW1lbnUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9idWlsdGluXCI7XHJcbmltcG9ydCB7VXRpbGl0aWVzLCBFdmVudHMsIERPTX0gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IE1vZGFscyBmcm9tIFwiLi4vLi4vdWkvbW9kYWxzXCI7XHJcblxyXG5pbXBvcnQgRW1vdGVNb2R1bGUgZnJvbSBcIi4vZW1vdGVzXCI7XHJcblxyXG5jb25zdCBoZWFkZXJIVE1MID0gYDxkaXYgaWQ9XCJiZC1xZW1cIj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJhY3RpdmVcIiBpZD1cImJkLXFlbS10d2l0Y2hcIj5Ud2l0Y2g8L2J1dHRvbj5cclxuICAgIDxidXR0b24gaWQ9XCJiZC1xZW0tZmF2b3VyaXRlXCI+RmF2b3VyaXRlPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGlkPVwiYmQtcWVtLWVtb2ppc1wiPkVtb2ppczwvYnV0dG9uZD5cclxuPC9kaXY+YDtcclxuXHJcbmNvbnN0IHR3aXRjaEVtb3RlSFRNTCA9IGA8ZGl2IGlkPVwiYmQtcWVtLXR3aXRjaC1jb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxlci13cmFwIHNjcm9sbGVyV3JhcC0ybEpFa2QgZmFkZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxlciBzY3JvbGxlci0yRktGUEdcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtb3RlLW1lbnUtaW5uZXJcIj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PmA7XHJcblxyXG5jb25zdCBmYXZvcml0ZXNIVE1MID0gYDxkaXYgaWQ9XCJiZC1xZW0tZmF2b3VyaXRlLWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNjcm9sbGVyLXdyYXAgc2Nyb2xsZXJXcmFwLTJsSkVrZCBmYWRlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbGVyIHNjcm9sbGVyLTJGS0ZQR1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1vdGUtbWVudS1pbm5lclwiPlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+YDtcclxuXHJcbmNvbnN0IG1ha2VFbW90ZSA9IChlbW90ZSwgdXJsLCBvcHRpb25zID0ge30pID0+IHtcclxuICAgIGNvbnN0IHtvbkNvbnRleHRNZW51LCBvbkNsaWNrfSA9IG9wdGlvbnM7XHJcbiAgICBjb25zdCBlbW90ZUNvbnRhaW5lciA9IERPTS5jcmVhdGVFbGVtZW50KGA8ZGl2IGNsYXNzPVwiZW1vdGUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGltZyBjbGFzcz1cImVtb3RlLWljb25cIiBhbHQ9XCIke2Vtb3RlfVwiIHNyYz1cIiR7dXJsfVwiIHRpdGxlPVwiJHtlbW90ZX1cIj5cclxuICAgIDwvZGl2PmApO1xyXG4gICAgaWYgKG9uQ29udGV4dE1lbnUpIGVtb3RlQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJjb250ZXh0bWVudVwiLCBvbkNvbnRleHRNZW51KTtcclxuICAgIGVtb3RlQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBvbkNsaWNrKTtcclxuICAgIHJldHVybiBlbW90ZUNvbnRhaW5lcjtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBFbW90ZU1lbnUgZXh0ZW5kcyBCdWlsdGluIHtcclxuICAgIGdldCBuYW1lKCkge3JldHVybiBcIkVtb3RlTWVudVwiO31cclxuICAgIGdldCBjb2xsZWN0aW9uKCkge3JldHVybiBcImVtb3Rlc1wiO31cclxuICAgIGdldCBjYXRlZ29yeSgpIHtyZXR1cm4gXCJnZW5lcmFsXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcImVtb3RlTWVudVwiO31cclxuICAgIGdldCBoaWRlRW1vamlzSUQoKSB7cmV0dXJuIFwiaGlkZUVtb2ppTWVudVwiO31cclxuICAgIGdldCBoaWRlRW1vamlzKCkge3JldHVybiB0aGlzLmdldCh0aGlzLmhpZGVFbW9qaXNJRCk7fVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5sYXN0VGFiID0gXCJiZC1xZW0tZW1vamlzXCI7XHJcblxyXG4gICAgICAgIHRoaXMucW1lSGVhZGVyID0gRE9NLmNyZWF0ZUVsZW1lbnQoaGVhZGVySFRNTCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBidXR0b24gb2YgdGhpcy5xbWVIZWFkZXIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJidXR0b25cIikpIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5zd2l0Y2hNZW51LmJpbmQodGhpcykpO1xyXG5cclxuICAgICAgICB0aGlzLnRlQ29udGFpbmVyID0gRE9NLmNyZWF0ZUVsZW1lbnQodHdpdGNoRW1vdGVIVE1MKTtcclxuICAgICAgICB0aGlzLnRlQ29udGFpbmVySW5uZXIgPSB0aGlzLnRlQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoXCIuZW1vdGUtbWVudS1pbm5lclwiKTtcclxuXHJcbiAgICAgICAgdGhpcy5mYUNvbnRhaW5lciA9IERPTS5jcmVhdGVFbGVtZW50KGZhdm9yaXRlc0hUTUwpO1xyXG4gICAgICAgIHRoaXMuZmFDb250YWluZXJJbm5lciA9IHRoaXMuZmFDb250YWluZXIucXVlcnlTZWxlY3RvcihcIi5lbW90ZS1tZW51LWlubmVyXCIpO1xyXG5cclxuICAgICAgICB0aGlzLm9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIobXV0YXRpb25zID0+IHtmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykgdGhpcy5vYnNlcnZlKG11dGF0aW9uKTt9KTtcclxuICAgICAgICB0aGlzLmVuYWJsZUhpZGVFbW9qaXMgPSB0aGlzLmVuYWJsZUhpZGVFbW9qaXMuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLmRpc2FibGVIaWRlRW1vamlzID0gdGhpcy5kaXNhYmxlSGlkZUVtb2ppcy5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVHdpdGNoRW1vdGVzID0gdGhpcy51cGRhdGVUd2l0Y2hFbW90ZXMuYmluZCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBlbmFibGVkKCkge1xyXG4gICAgICAgIC8vIFRlbXBvcmFyeSBtZWFzdXJlLCBzbyBub3QgdXNpbmcgU3RyaW5ncy90cmFuc2xhdGlvblxyXG4gICAgICAgIHJldHVybiBNb2RhbHMuYWxlcnQoXCJFbW90ZSBNZW51IEJyb2tlblwiLCBcIkVtb3RlIE1lbnUgaXMgY3VycmVudGx5IGJyb2tlbiwgaXQgaXMgcmVjb21tZW5kZWQgdG8gZGlzYWJsZSB0aGlzIHVudGlsIGl0IGlzIGZpeGVkLlwiKTtcclxuICAgICAgICAvLyB0aGlzLmxvZyhcIlN0YXJ0aW5nIHRvIG9ic2VydmVcIik7XHJcbiAgICAgICAgLy8gdGhpcy5vYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYXBwLW1vdW50XCIpLCB7XHJcbiAgICAgICAgLy8gICAgIGNoaWxkTGlzdDogdHJ1ZSxcclxuICAgICAgICAvLyAgICAgc3VidHJlZTogdHJ1ZVxyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgICAgIC8vIHRoaXMuaGlkZUVtb2ppQ2FuY2VsID0gdGhpcy5yZWdpc3RlclNldHRpbmcodGhpcy5oaWRlRW1vamlzSUQsIHRoaXMuZW5hYmxlSGlkZUVtb2ppcywgdGhpcy5kaXNhYmxlSGlkZUVtb2ppcyk7XHJcbiAgICAgICAgLy8gaWYgKHRoaXMuaGlkZUVtb2ppcykgdGhpcy5lbmFibGVIaWRlRW1vamlzKCk7XHJcbiAgICAgICAgLy8gaWYgKEVtb3RlTW9kdWxlLmVtb3Rlc0xvYWRlZCkgdGhpcy51cGRhdGVUd2l0Y2hFbW90ZXMoKTtcclxuICAgICAgICAvLyB0aGlzLnVwZGF0ZUZhdm9yaXRlcygpO1xyXG4gICAgICAgIC8vIEV2ZW50cy5vbihcImVtb3Rlcy1sb2FkZWRcIiwgdGhpcy51cGRhdGVUd2l0Y2hFbW90ZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVkKCkge1xyXG4gICAgICAgIEV2ZW50cy5vZmYoXCJlbW90ZXMtbG9hZGVkXCIsIHRoaXMudXBkYXRlVHdpdGNoRW1vdGVzKTtcclxuICAgICAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcclxuICAgICAgICB0aGlzLmRpc2FibGVIaWRlRW1vamlzKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuaGlkZUVtb2ppQ2FuY2VsKSB0aGlzLmhpZGVFbW9qaUNhbmNlbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGVuYWJsZUhpZGVFbW9qaXMoKSB7XHJcbiAgICAgICAgY29uc3QgcGlja2VyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5lbW9qaVBpY2tlci0zbTFTLWpcIik7XHJcbiAgICAgICAgaWYgKHBpY2tlcikgcGlja2VyLmNsYXNzTGlzdC5hZGQoXCJiZC1xbWUtaGlkZGVuXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVIaWRlRW1vamlzKCkge1xyXG4gICAgICAgIGNvbnN0IHBpY2tlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuZW1vamlQaWNrZXItM20xUy1qXCIpO1xyXG4gICAgICAgIGlmIChwaWNrZXIpIHBpY2tlci5jbGFzc0xpc3QucmVtb3ZlKFwiYmQtcW1lLWhpZGRlblwiKTtcclxuICAgIH1cclxuXHJcbiAgICBpbnNlcnRFbW90ZShlbW90ZSkge1xyXG4gICAgICAgIGNvbnN0IHRhID0gVXRpbGl0aWVzLmdldFRleHRBcmVhKCk7XHJcbiAgICAgICAgVXRpbGl0aWVzLmluc2VydFRleHQodGFbMF0sIHRhLnZhbCgpLnNsaWNlKC0xKSA9PSBcIiBcIiA/IHRhLnZhbCgpICsgZW1vdGUgOiB0YS52YWwoKSArIFwiIFwiICsgZW1vdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGZhdkNvbnRleHQoZSkge1xyXG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgY29uc3QgZW0gPSBlLnRhcmdldC5jbG9zZXN0KFwiLmVtb3RlLWNvbnRhaW5lclwiKS5jaGlsZHJlblswXTtcclxuICAgICAgICBjb25zdCBtZW51ID0gJChgPGRpdiBpZD1cInJlbW92ZW1lbnVcIiBjbGFzcz1cImJkLWNvbnRleHQtbWVudSBjb250ZXh0LW1lbnUgdGhlbWUtZGFya1wiPlJlbW92ZTwvZGl2PmApO1xyXG4gICAgICAgIG1lbnUuY3NzKHtcclxuICAgICAgICAgICAgdG9wOiBlLnBhZ2VZIC0gJChcIiNiZC1xZW0tZmF2b3VyaXRlLWNvbnRhaW5lclwiKS5vZmZzZXQoKS50b3AsXHJcbiAgICAgICAgICAgIGxlZnQ6IGUucGFnZVggLSAkKFwiI2JkLXFlbS1mYXZvdXJpdGUtY29udGFpbmVyXCIpLm9mZnNldCgpLmxlZnRcclxuICAgICAgICB9KTtcclxuICAgICAgICAkKGVtKS5wYXJlbnQoKS5hcHBlbmQobWVudSk7XHJcbiAgICAgICAgbWVudS5vbihcImNsaWNrXCIsIChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgJChlbSkucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgIEVtb3RlTW9kdWxlLnJlbW92ZUZhdm9yaXRlKCQoZW0pLmF0dHIoXCJ0aXRsZVwiKSk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRmF2b3JpdGVzKCk7XHJcbiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9mZihcIm1vdXNlZG93bi5lbW90ZW1lbnVcIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgJChkb2N1bWVudCkub24oXCJtb3VzZWRvd24uZW1vdGVtZW51XCIsIGZ1bmN0aW9uKGV2ZW50KSB7XHJcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQuaWQgPT0gXCJyZW1vdmVtZW51XCIpIHJldHVybjtcclxuICAgICAgICAgICAgJChcIiNyZW1vdmVtZW51XCIpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAkKGRvY3VtZW50KS5vZmYoXCJtb3VzZWRvd24uZW1vdGVtZW51XCIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN3aXRjaE1lbnUoZSkge1xyXG4gICAgICAgIGxldCBpZCA9IHR5cGVvZihlKSA9PSBcInN0cmluZ1wiID8gZSA6IGUudGFyZ2V0LmlkO1xyXG4gICAgICAgIGlmIChpZCA9PSBcImJkLXFlbS1lbW9qaXNcIiAmJiB0aGlzLmhpZGVFbW9qaXMpIGlkID0gXCJiZC1xZW0tZmF2b3VyaXRlXCI7XHJcbiAgICAgICAgY29uc3QgdHdpdGNoID0gJChcIiNiZC1xZW0tdHdpdGNoXCIpO1xyXG4gICAgICAgIGNvbnN0IGZhdiA9ICQoXCIjYmQtcWVtLWZhdm91cml0ZVwiKTtcclxuICAgICAgICBjb25zdCBlbW9qaXMgPSAkKFwiI2JkLXFlbS1lbW9qaXNcIik7XHJcbiAgICAgICAgdHdpdGNoLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpO1xyXG4gICAgICAgIGZhdi5yZW1vdmVDbGFzcyhcImFjdGl2ZVwiKTtcclxuICAgICAgICBlbW9qaXMucmVtb3ZlQ2xhc3MoXCJhY3RpdmVcIik7XHJcblxyXG4gICAgICAgICQoXCIuZW1vamlQaWNrZXItM20xUy1qXCIpLmhpZGUoKTtcclxuICAgICAgICAkKFwiI2JkLXFlbS1mYXZvdXJpdGUtY29udGFpbmVyXCIpLmhpZGUoKTtcclxuICAgICAgICAkKFwiI2JkLXFlbS10d2l0Y2gtY29udGFpbmVyXCIpLmhpZGUoKTtcclxuXHJcbiAgICAgICAgc3dpdGNoIChpZCkge1xyXG4gICAgICAgICAgICBjYXNlIFwiYmQtcWVtLXR3aXRjaFwiOlxyXG4gICAgICAgICAgICAgICAgdHdpdGNoLmFkZENsYXNzKFwiYWN0aXZlXCIpO1xyXG4gICAgICAgICAgICAgICAgJChcIiNiZC1xZW0tdHdpdGNoLWNvbnRhaW5lclwiKS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcImJkLXFlbS1mYXZvdXJpdGVcIjpcclxuICAgICAgICAgICAgICAgIGZhdi5hZGRDbGFzcyhcImFjdGl2ZVwiKTtcclxuICAgICAgICAgICAgICAgICQoXCIjYmQtcWVtLWZhdm91cml0ZS1jb250YWluZXJcIikuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJiZC1xZW0tZW1vamlzXCI6XHJcbiAgICAgICAgICAgICAgICBlbW9qaXMuYWRkQ2xhc3MoXCJhY3RpdmVcIik7XHJcbiAgICAgICAgICAgICAgICAkKFwiLmVtb2ppUGlja2VyLTNtMVMtalwiKS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICAkKFwiLmVtb2ppUGlja2VyLTNtMVMtaiBpbnB1dFwiKS5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpZCkgdGhpcy5sYXN0VGFiID0gaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgb2JzZXJ2ZShtdXRhdGlvbikge1xyXG4gICAgICAgIGlmICghbXV0YXRpb24uYWRkZWROb2Rlcy5sZW5ndGggfHwgIShtdXRhdGlvbi5hZGRlZE5vZGVzWzBdIGluc3RhbmNlb2YgRWxlbWVudCkpIHJldHVybjtcclxuICAgICAgICBjb25zdCBub2RlID0gbXV0YXRpb24uYWRkZWROb2Rlc1swXTtcclxuICAgICAgICAvLyBpZiAoIW5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKFwicG9wb3V0LTJpV0FjLVwiKSB8fCBub2RlLmNsYXNzTGlzdC5jb250YWlucyhcInBvcG91dExlZnQtMzBXbXJEXCIpIHx8ICFub2RlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJlbW9qaVBpY2tlci0zbTFTLWpcIikubGVuZ3RoKSByZXR1cm47XHJcbiAgICAgICAgaWYgKCFub2RlLmNsYXNzTGlzdC5jb250YWlucyhcImxheWVyLXY5SHlZY1wiKSB8fCAhbm9kZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiZW1vamlQaWNrZXItM20xUy1qXCIpLmxlbmd0aCB8fCBub2RlLnF1ZXJ5U2VsZWN0b3IoXCIuZW1vamlQaWNrZXItM20xUy1qXCIpLnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYW5pbWF0b3JMZWZ0LTFFUXhVMFwiKSkgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCBlID0gJChub2RlKTtcclxuICAgICAgICBpZiAodGhpcy5oaWRlRW1vamlzKSBlLmFkZENsYXNzKFwiYmQtcW1lLWhpZGRlblwiKTtcclxuICAgICAgICBlbHNlIGUucmVtb3ZlQ2xhc3MoXCJiZC1xbWUtaGlkZGVuXCIpO1xyXG5cclxuICAgICAgICBlLnByZXBlbmQodGhpcy5xbWVIZWFkZXIpO1xyXG4gICAgICAgIGUuYXBwZW5kKHRoaXMudGVDb250YWluZXIpO1xyXG4gICAgICAgIGUuYXBwZW5kKHRoaXMuZmFDb250YWluZXIpO1xyXG5cclxuICAgICAgICB0aGlzLnN3aXRjaE1lbnUodGhpcy5sYXN0VGFiKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVUd2l0Y2hFbW90ZXMoKSB7XHJcbiAgICAgICAgd2hpbGUgKHRoaXMudGVDb250YWluZXJJbm5lci5maXJzdENoaWxkKSB0aGlzLnRlQ29udGFpbmVySW5uZXIuZmlyc3RDaGlsZC5yZW1vdmUoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGVtb3RlIGluIEVtb3RlTW9kdWxlLmdldENhdGVnb3J5KFwiVHdpdGNoR2xvYmFsXCIpKSB7XHJcbiAgICAgICAgICAgIGlmICghRW1vdGVNb2R1bGUuZ2V0Q2F0ZWdvcnkoXCJUd2l0Y2hHbG9iYWxcIikuaGFzT3duUHJvcGVydHkoZW1vdGUpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgY29uc3QgdXJsID0gRW1vdGVNb2R1bGUuZ2V0VXJsKFwiVHdpdGNoR2xvYmFsXCIsIGVtb3RlKTtcclxuICAgICAgICAgICAgY29uc3QgZW1vdGVFbGVtZW50ID0gbWFrZUVtb3RlKGVtb3RlLCB1cmwsIHtvbkNsaWNrOiB0aGlzLmluc2VydEVtb3RlLmJpbmQodGhpcywgZW1vdGUpfSk7XHJcbiAgICAgICAgICAgIHRoaXMudGVDb250YWluZXJJbm5lci5hcHBlbmQoZW1vdGVFbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlRmF2b3JpdGVzKCkge1xyXG4gICAgICAgIHdoaWxlICh0aGlzLmZhQ29udGFpbmVySW5uZXIuZmlyc3RDaGlsZCkgdGhpcy5mYUNvbnRhaW5lcklubmVyLmZpcnN0Q2hpbGQucmVtb3ZlKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBlbW90ZSBpbiBFbW90ZU1vZHVsZS5mYXZvcml0ZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgdXJsID0gRW1vdGVNb2R1bGUuZmF2b3JpdGVzW2Vtb3RlXTtcclxuICAgICAgICAgICAgY29uc3QgZW1vdGVFbGVtZW50ID0gbWFrZUVtb3RlKGVtb3RlLCB1cmwsIHtvbkNsaWNrOiB0aGlzLmluc2VydEVtb3RlLmJpbmQodGhpcywgZW1vdGUpLCBvbkNvbnRleHRNZW51OiB0aGlzLmZhdkNvbnRleHQuYmluZCh0aGlzKX0pO1xyXG4gICAgICAgICAgICB0aGlzLmZhQ29udGFpbmVySW5uZXIuYXBwZW5kKGVtb3RlRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEVtb3RlTW9kdWxlLnNhdmVGYXZvcml0ZXMoKTtcclxuICAgIH1cclxuXHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/builtins/emotes/emotemenu.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _emotes__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./emotes */ \"./src/builtins/emotes/emotes.js\");\n\n\n\n\nconst headerHTML = `
\n \n \n
`;\nconst twitchEmoteHTML = `
\n
\n
\n
\n\n
\n
\n
\n
`;\nconst favoritesHTML = `
\n
\n
\n
\n\n
\n
\n
\n
`;\n\nconst makeEmote = (emote, url, options = {}) => {\n const {\n onContextMenu,\n onClick\n } = options;\n const emoteContainer = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
\n \"${emote}\"\n
`);\n if (onContextMenu) emoteContainer.addEventListener(\"contextmenu\", onContextMenu);\n emoteContainer.addEventListener(\"click\", onClick);\n return emoteContainer;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class EmoteMenu extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"EmoteMenu\";\n }\n\n get collection() {\n return \"emotes\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"emoteMenu\";\n }\n\n get hideEmojisID() {\n return \"hideEmojiMenu\";\n }\n\n get hideEmojis() {\n return this.get(this.hideEmojisID);\n }\n\n constructor() {\n super();\n this.lastTab = \"bd-qem-emojis\";\n this.qmeHeader = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(headerHTML);\n\n for (const button of this.qmeHeader.getElementsByTagName(\"button\")) button.addEventListener(\"click\", this.switchMenu.bind(this));\n\n this.teContainer = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(twitchEmoteHTML);\n this.teContainerInner = this.teContainer.querySelector(\".emote-menu-inner\");\n this.faContainer = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(favoritesHTML);\n this.faContainerInner = this.faContainer.querySelector(\".emote-menu-inner\");\n this.observer = new MutationObserver(mutations => {\n for (const mutation of mutations) this.observe(mutation);\n });\n this.enableHideEmojis = this.enableHideEmojis.bind(this);\n this.disableHideEmojis = this.disableHideEmojis.bind(this);\n this.updateTwitchEmotes = this.updateTwitchEmotes.bind(this);\n }\n\n async enabled() {\n // Temporary measure, so not using Strings/translation\n return _ui_modals__WEBPACK_IMPORTED_MODULE_2__[\"default\"].alert(\"Emote Menu Broken\", \"Emote Menu is currently broken, it is recommended to disable this until it is fixed.\"); // this.log(\"Starting to observe\");\n // this.observer.observe(document.getElementById(\"app-mount\"), {\n // childList: true,\n // subtree: true\n // });\n // this.hideEmojiCancel = this.registerSetting(this.hideEmojisID, this.enableHideEmojis, this.disableHideEmojis);\n // if (this.hideEmojis) this.enableHideEmojis();\n // if (EmoteModule.emotesLoaded) this.updateTwitchEmotes();\n // this.updateFavorites();\n // Events.on(\"emotes-loaded\", this.updateTwitchEmotes);\n }\n\n disabled() {\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].off(\"emotes-loaded\", this.updateTwitchEmotes);\n this.observer.disconnect();\n this.disableHideEmojis();\n if (this.hideEmojiCancel) this.hideEmojiCancel();\n }\n\n enableHideEmojis() {\n const picker = document.querySelector(\".emojiPicker-3m1S-j\");\n if (picker) picker.classList.add(\"bd-qme-hidden\");\n }\n\n disableHideEmojis() {\n const picker = document.querySelector(\".emojiPicker-3m1S-j\");\n if (picker) picker.classList.remove(\"bd-qme-hidden\");\n }\n\n insertEmote(emote) {\n const ta = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Utilities\"].getTextArea();\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Utilities\"].insertText(ta[0], ta.val().slice(-1) == \" \" ? ta.val() + emote : ta.val() + \" \" + emote);\n }\n\n favContext(e) {\n e.stopPropagation();\n const em = e.target.closest(\".emote-container\").children[0];\n const menu = $(`
Remove
`);\n menu.css({\n top: e.pageY - $(\"#bd-qem-favourite-container\").offset().top,\n left: e.pageX - $(\"#bd-qem-favourite-container\").offset().left\n });\n $(em).parent().append(menu);\n menu.on(\"click\", event => {\n event.preventDefault();\n event.stopPropagation();\n $(em).remove();\n _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].removeFavorite($(em).attr(\"title\"));\n this.updateFavorites();\n $(document).off(\"mousedown.emotemenu\");\n });\n $(document).on(\"mousedown.emotemenu\", function (event) {\n if (event.target.id == \"removemenu\") return;\n $(\"#removemenu\").remove();\n $(document).off(\"mousedown.emotemenu\");\n });\n }\n\n switchMenu(e) {\n let id = typeof e == \"string\" ? e : e.target.id;\n if (id == \"bd-qem-emojis\" && this.hideEmojis) id = \"bd-qem-favourite\";\n const twitch = $(\"#bd-qem-twitch\");\n const fav = $(\"#bd-qem-favourite\");\n const emojis = $(\"#bd-qem-emojis\");\n twitch.removeClass(\"active\");\n fav.removeClass(\"active\");\n emojis.removeClass(\"active\");\n $(\".emojiPicker-3m1S-j\").hide();\n $(\"#bd-qem-favourite-container\").hide();\n $(\"#bd-qem-twitch-container\").hide();\n\n switch (id) {\n case \"bd-qem-twitch\":\n twitch.addClass(\"active\");\n $(\"#bd-qem-twitch-container\").show();\n break;\n\n case \"bd-qem-favourite\":\n fav.addClass(\"active\");\n $(\"#bd-qem-favourite-container\").show();\n break;\n\n case \"bd-qem-emojis\":\n emojis.addClass(\"active\");\n $(\".emojiPicker-3m1S-j\").show();\n $(\".emojiPicker-3m1S-j input\").focus();\n break;\n }\n\n if (id) this.lastTab = id;\n }\n\n observe(mutation) {\n if (!mutation.addedNodes.length || !(mutation.addedNodes[0] instanceof Element)) return;\n const node = mutation.addedNodes[0]; // if (!node.classList.contains(\"popout-2iWAc-\") || node.classList.contains(\"popoutLeft-30WmrD\") || !node.getElementsByClassName(\"emojiPicker-3m1S-j\").length) return;\n\n if (!node.classList.contains(\"layer-v9HyYc\") || !node.getElementsByClassName(\"emojiPicker-3m1S-j\").length || node.querySelector(\".emojiPicker-3m1S-j\").parentElement.classList.contains(\"animatorLeft-1EQxU0\")) return;\n const e = $(node);\n if (this.hideEmojis) e.addClass(\"bd-qme-hidden\");else e.removeClass(\"bd-qme-hidden\");\n e.prepend(this.qmeHeader);\n e.append(this.teContainer);\n e.append(this.faContainer);\n this.switchMenu(this.lastTab);\n }\n\n updateTwitchEmotes() {\n while (this.teContainerInner.firstChild) this.teContainerInner.firstChild.remove();\n\n for (const emote in _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getCategory(\"TwitchGlobal\")) {\n if (!_emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getCategory(\"TwitchGlobal\").hasOwnProperty(emote)) continue;\n const url = _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getUrl(\"TwitchGlobal\", emote);\n const emoteElement = makeEmote(emote, url, {\n onClick: this.insertEmote.bind(this, emote)\n });\n this.teContainerInner.append(emoteElement);\n }\n }\n\n updateFavorites() {\n while (this.faContainerInner.firstChild) this.faContainerInner.firstChild.remove();\n\n for (const emote in _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].favorites) {\n const url = _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].favorites[emote];\n const emoteElement = makeEmote(emote, url, {\n onClick: this.insertEmote.bind(this, emote),\n onContextMenu: this.favContext.bind(this)\n });\n this.faContainerInner.append(emoteElement);\n }\n\n _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].saveFavorites();\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZW1vdGVzL2Vtb3RlbWVudS5qcz9mMjJlIl0sIm5hbWVzIjpbImhlYWRlckhUTUwiLCJ0d2l0Y2hFbW90ZUhUTUwiLCJmYXZvcml0ZXNIVE1MIiwibWFrZUVtb3RlIiwiZW1vdGUiLCJ1cmwiLCJvcHRpb25zIiwib25Db250ZXh0TWVudSIsIm9uQ2xpY2siLCJlbW90ZUNvbnRhaW5lciIsIkRPTSIsImNyZWF0ZUVsZW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwiRW1vdGVNZW51IiwiQnVpbHRpbiIsIm5hbWUiLCJjb2xsZWN0aW9uIiwiY2F0ZWdvcnkiLCJpZCIsImhpZGVFbW9qaXNJRCIsImhpZGVFbW9qaXMiLCJnZXQiLCJjb25zdHJ1Y3RvciIsImxhc3RUYWIiLCJxbWVIZWFkZXIiLCJidXR0b24iLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInN3aXRjaE1lbnUiLCJiaW5kIiwidGVDb250YWluZXIiLCJ0ZUNvbnRhaW5lcklubmVyIiwicXVlcnlTZWxlY3RvciIsImZhQ29udGFpbmVyIiwiZmFDb250YWluZXJJbm5lciIsIm9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsIm11dGF0aW9ucyIsIm11dGF0aW9uIiwib2JzZXJ2ZSIsImVuYWJsZUhpZGVFbW9qaXMiLCJkaXNhYmxlSGlkZUVtb2ppcyIsInVwZGF0ZVR3aXRjaEVtb3RlcyIsImVuYWJsZWQiLCJNb2RhbHMiLCJhbGVydCIsImRpc2FibGVkIiwiRXZlbnRzIiwib2ZmIiwiZGlzY29ubmVjdCIsImhpZGVFbW9qaUNhbmNlbCIsInBpY2tlciIsImRvY3VtZW50IiwiY2xhc3NMaXN0IiwiYWRkIiwicmVtb3ZlIiwiaW5zZXJ0RW1vdGUiLCJ0YSIsIlV0aWxpdGllcyIsImdldFRleHRBcmVhIiwiaW5zZXJ0VGV4dCIsInZhbCIsInNsaWNlIiwiZmF2Q29udGV4dCIsImUiLCJzdG9wUHJvcGFnYXRpb24iLCJlbSIsInRhcmdldCIsImNsb3Nlc3QiLCJjaGlsZHJlbiIsIm1lbnUiLCIkIiwiY3NzIiwidG9wIiwicGFnZVkiLCJvZmZzZXQiLCJsZWZ0IiwicGFnZVgiLCJwYXJlbnQiLCJhcHBlbmQiLCJvbiIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJFbW90ZU1vZHVsZSIsInJlbW92ZUZhdm9yaXRlIiwiYXR0ciIsInVwZGF0ZUZhdm9yaXRlcyIsInR3aXRjaCIsImZhdiIsImVtb2ppcyIsInJlbW92ZUNsYXNzIiwiaGlkZSIsImFkZENsYXNzIiwic2hvdyIsImZvY3VzIiwiYWRkZWROb2RlcyIsImxlbmd0aCIsIkVsZW1lbnQiLCJub2RlIiwiY29udGFpbnMiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwicGFyZW50RWxlbWVudCIsInByZXBlbmQiLCJmaXJzdENoaWxkIiwiZ2V0Q2F0ZWdvcnkiLCJoYXNPd25Qcm9wZXJ0eSIsImdldFVybCIsImVtb3RlRWxlbWVudCIsImZhdm9yaXRlcyIsInNhdmVGYXZvcml0ZXMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUVBLE1BQU1BLFVBQVUsR0FBSTs7OztPQUFwQjtBQU1BLE1BQU1DLGVBQWUsR0FBSTs7Ozs7Ozs7T0FBekI7QUFVQSxNQUFNQyxhQUFhLEdBQUk7Ozs7Ozs7O09BQXZCOztBQVVBLE1BQU1DLFNBQVMsR0FBRyxDQUFDQyxLQUFELEVBQVFDLEdBQVIsRUFBYUMsT0FBTyxHQUFHLEVBQXZCLEtBQThCO0FBQzVDLFFBQU07QUFBQ0MsaUJBQUQ7QUFBZ0JDO0FBQWhCLE1BQTJCRixPQUFqQztBQUNBLFFBQU1HLGNBQWMsR0FBR0MsdURBQUcsQ0FBQ0MsYUFBSixDQUFtQjt1Q0FDUFAsS0FBTSxVQUFTQyxHQUFJLFlBQVdELEtBQU07V0FEaEQsQ0FBdkI7QUFHQSxNQUFJRyxhQUFKLEVBQW1CRSxjQUFjLENBQUNHLGdCQUFmLENBQWdDLGFBQWhDLEVBQStDTCxhQUEvQztBQUNuQkUsZ0JBQWMsQ0FBQ0csZ0JBQWYsQ0FB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QnFFLFVBQXRCLENBQWlDaEQsTUFBakM7O0FBQ3pDLFNBQUssTUFBTWxELEtBQVgsSUFBb0I4RSwrQ0FBVyxDQUFDeUIsU0FBaEMsRUFBMkM7QUFDdkMsWUFBTXRHLEdBQUcsR0FBRzZFLCtDQUFXLENBQUN5QixTQUFaLENBQXNCdkcsS0FBdEIsQ0FBWjtBQUNBLFlBQU1zRyxZQUFZLEdBQUd2RyxTQUFTLENBQUNDLEtBQUQsRUFBUUMsR0FBUixFQUFhO0FBQUNHLGVBQU8sRUFBRSxLQUFLK0MsV0FBTCxDQUFpQjNCLElBQWpCLENBQXNCLElBQXRCLEVBQTRCeEIsS0FBNUIsQ0FBVjtBQUE4Q0cscUJBQWEsRUFBRSxLQUFLdUQsVUFBTCxDQUFnQmxDLElBQWhCLENBQXFCLElBQXJCO0FBQTdELE9BQWIsQ0FBOUI7QUFDQSxXQUFLSyxnQkFBTCxDQUFzQjZDLE1BQXRCLENBQTZCNEIsWUFBN0I7QUFDSDs7QUFDRHhCLG1EQUFXLENBQUMwQixhQUFaO0FBQ0g7O0FBM0o4QyxDQUFwQyxFQUFmIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2Vtb3Rlcy9lbW90ZW1lbnUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9idWlsdGluXCI7XHJcbmltcG9ydCB7VXRpbGl0aWVzLCBFdmVudHMsIERPTX0gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IE1vZGFscyBmcm9tIFwiLi4vLi4vdWkvbW9kYWxzXCI7XHJcblxyXG5pbXBvcnQgRW1vdGVNb2R1bGUgZnJvbSBcIi4vZW1vdGVzXCI7XHJcblxyXG5jb25zdCBoZWFkZXJIVE1MID0gYDxkaXYgaWQ9XCJiZC1xZW1cIj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJhY3RpdmVcIiBpZD1cImJkLXFlbS10d2l0Y2hcIj5Ud2l0Y2g8L2J1dHRvbj5cclxuICAgIDxidXR0b24gaWQ9XCJiZC1xZW0tZmF2b3VyaXRlXCI+RmF2b3VyaXRlPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGlkPVwiYmQtcWVtLWVtb2ppc1wiPkVtb2ppczwvYnV0dG9uZD5cclxuPC9kaXY+YDtcclxuXHJcbmNvbnN0IHR3aXRjaEVtb3RlSFRNTCA9IGA8ZGl2IGlkPVwiYmQtcWVtLXR3aXRjaC1jb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxlci13cmFwIHNjcm9sbGVyV3JhcC0ybEpFa2QgZmFkZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxlciBzY3JvbGxlci0yRktGUEdcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtb3RlLW1lbnUtaW5uZXJcIj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PmA7XHJcblxyXG5jb25zdCBmYXZvcml0ZXNIVE1MID0gYDxkaXYgaWQ9XCJiZC1xZW0tZmF2b3VyaXRlLWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNjcm9sbGVyLXdyYXAgc2Nyb2xsZXJXcmFwLTJsSkVrZCBmYWRlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbGVyIHNjcm9sbGVyLTJGS0ZQR1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1vdGUtbWVudS1pbm5lclwiPlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+YDtcclxuXHJcbmNvbnN0IG1ha2VFbW90ZSA9IChlbW90ZSwgdXJsLCBvcHRpb25zID0ge30pID0+IHtcclxuICAgIGNvbnN0IHtvbkNvbnRleHRNZW51LCBvbkNsaWNrfSA9IG9wdGlvbnM7XHJcbiAgICBjb25zdCBlbW90ZUNvbnRhaW5lciA9IERPTS5jcmVhdGVFbGVtZW50KGA8ZGl2IGNsYXNzPVwiZW1vdGUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGltZyBjbGFzcz1cImVtb3RlLWljb25cIiBhbHQ9XCIke2Vtb3RlfVwiIHNyYz1cIiR7dXJsfVwiIHRpdGxlPVwiJHtlbW90ZX1cIj5cclxuICAgIDwvZGl2PmApO1xyXG4gICAgaWYgKG9uQ29udGV4dE1lbnUpIGVtb3RlQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJjb250ZXh0bWVudVwiLCBvbkNvbnRleHRNZW51KTtcclxuICAgIGVtb3RlQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBvbkNsaWNrKTtcclxuICAgIHJldHVybiBlbW90ZUNvbnRhaW5lcjtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBFbW90ZU1lbnUgZXh0ZW5kcyBCdWlsdGluIHtcclxuICAgIGdldCBuYW1lKCkge3JldHVybiBcIkVtb3RlTWVudVwiO31cclxuICAgIGdldCBjb2xsZWN0aW9uKCkge3JldHVybiBcImVtb3Rlc1wiO31cclxuICAgIGdldCBjYXRlZ29yeSgpIHtyZXR1cm4gXCJnZW5lcmFsXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcImVtb3RlTWVudVwiO31cclxuICAgIGdldCBoaWRlRW1vamlzSUQoKSB7cmV0dXJuIFwiaGlkZUVtb2ppTWVudVwiO31cclxuICAgIGdldCBoaWRlRW1vamlzKCkge3JldHVybiB0aGlzLmdldCh0aGlzLmhpZGVFbW9qaXNJRCk7fVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5sYXN0VGFiID0gXCJiZC1xZW0tZW1vamlzXCI7XHJcblxyXG4gICAgICAgIHRoaXMucW1lSGVhZGVyID0gRE9NLmNyZWF0ZUVsZW1lbnQoaGVhZGVySFRNTCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBidXR0b24gb2YgdGhpcy5xbWVIZWFkZXIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJidXR0b25cIikpIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5zd2l0Y2hNZW51LmJpbmQodGhpcykpO1xyXG5cclxuICAgICAgICB0aGlzLnRlQ29udGFpbmVyID0gRE9NLmNyZWF0ZUVsZW1lbnQodHdpdGNoRW1vdGVIVE1MKTtcclxuICAgICAgICB0aGlzLnRlQ29udGFpbmVySW5uZXIgPSB0aGlzLnRlQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoXCIuZW1vdGUtbWVudS1pbm5lclwiKTtcclxuXHJcbiAgICAgICAgdGhpcy5mYUNvbnRhaW5lciA9IERPTS5jcmVhdGVFbGVtZW50KGZhdm9yaXRlc0hUTUwpO1xyXG4gICAgICAgIHRoaXMuZmFDb250YWluZXJJbm5lciA9IHRoaXMuZmFDb250YWluZXIucXVlcnlTZWxlY3RvcihcIi5lbW90ZS1tZW51LWlubmVyXCIpO1xyXG5cclxuICAgICAgICB0aGlzLm9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIobXV0YXRpb25zID0+IHtmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykgdGhpcy5vYnNlcnZlKG11dGF0aW9uKTt9KTtcclxuICAgICAgICB0aGlzLmVuYWJsZUhpZGVFbW9qaXMgPSB0aGlzLmVuYWJsZUhpZGVFbW9qaXMuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLmRpc2FibGVIaWRlRW1vamlzID0gdGhpcy5kaXNhYmxlSGlkZUVtb2ppcy5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVHdpdGNoRW1vdGVzID0gdGhpcy51cGRhdGVUd2l0Y2hFbW90ZXMuYmluZCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBlbmFibGVkKCkge1xyXG4gICAgICAgIC8vIFRlbXBvcmFyeSBtZWFzdXJlLCBzbyBub3QgdXNpbmcgU3RyaW5ncy90cmFuc2xhdGlvblxyXG4gICAgICAgIHJldHVybiBNb2RhbHMuYWxlcnQoXCJFbW90ZSBNZW51IEJyb2tlblwiLCBcIkVtb3RlIE1lbnUgaXMgY3VycmVudGx5IGJyb2tlbiwgaXQgaXMgcmVjb21tZW5kZWQgdG8gZGlzYWJsZSB0aGlzIHVudGlsIGl0IGlzIGZpeGVkLlwiKTtcclxuICAgICAgICAvLyB0aGlzLmxvZyhcIlN0YXJ0aW5nIHRvIG9ic2VydmVcIik7XHJcbiAgICAgICAgLy8gdGhpcy5vYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYXBwLW1vdW50XCIpLCB7XHJcbiAgICAgICAgLy8gICAgIGNoaWxkTGlzdDogdHJ1ZSxcclxuICAgICAgICAvLyAgICAgc3VidHJlZTogdHJ1ZVxyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgICAgIC8vIHRoaXMuaGlkZUVtb2ppQ2FuY2VsID0gdGhpcy5yZWdpc3RlclNldHRpbmcodGhpcy5oaWRlRW1vamlzSUQsIHRoaXMuZW5hYmxlSGlkZUVtb2ppcywgdGhpcy5kaXNhYmxlSGlkZUVtb2ppcyk7XHJcbiAgICAgICAgLy8gaWYgKHRoaXMuaGlkZUVtb2ppcykgdGhpcy5lbmFibGVIaWRlRW1vamlzKCk7XHJcbiAgICAgICAgLy8gaWYgKEVtb3RlTW9kdWxlLmVtb3Rlc0xvYWRlZCkgdGhpcy51cGRhdGVUd2l0Y2hFbW90ZXMoKTtcclxuICAgICAgICAvLyB0aGlzLnVwZGF0ZUZhdm9yaXRlcygpO1xyXG4gICAgICAgIC8vIEV2ZW50cy5vbihcImVtb3Rlcy1sb2FkZWRcIiwgdGhpcy51cGRhdGVUd2l0Y2hFbW90ZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVkKCkge1xyXG4gICAgICAgIEV2ZW50cy5vZmYoXCJlbW90ZXMtbG9hZGVkXCIsIHRoaXMudXBkYXRlVHdpdGNoRW1vdGVzKTtcclxuICAgICAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcclxuICAgICAgICB0aGlzLmRpc2FibGVIaWRlRW1vamlzKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuaGlkZUVtb2ppQ2FuY2VsKSB0aGlzLmhpZGVFbW9qaUNhbmNlbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGVuYWJsZUhpZGVFbW9qaXMoKSB7XHJcbiAgICAgICAgY29uc3QgcGlja2VyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5lbW9qaVBpY2tlci0zbTFTLWpcIik7XHJcbiAgICAgICAgaWYgKHBpY2tlcikgcGlja2VyLmNsYXNzTGlzdC5hZGQoXCJiZC1xbWUtaGlkZGVuXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVIaWRlRW1vamlzKCkge1xyXG4gICAgICAgIGNvbnN0IHBpY2tlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuZW1vamlQaWNrZXItM20xUy1qXCIpO1xyXG4gICAgICAgIGlmIChwaWNrZXIpIHBpY2tlci5jbGFzc0xpc3QucmVtb3ZlKFwiYmQtcW1lLWhpZGRlblwiKTtcclxuICAgIH1cclxuXHJcbiAgICBpbnNlcnRFbW90ZShlbW90ZSkge1xyXG4gICAgICAgIGNvbnN0IHRhID0gVXRpbGl0aWVzLmdldFRleHRBcmVhKCk7XHJcbiAgICAgICAgVXRpbGl0aWVzLmluc2VydFRleHQodGFbMF0sIHRhLnZhbCgpLnNsaWNlKC0xKSA9PSBcIiBcIiA/IHRhLnZhbCgpICsgZW1vdGUgOiB0YS52YWwoKSArIFwiIFwiICsgZW1vdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGZhdkNvbnRleHQoZSkge1xyXG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgY29uc3QgZW0gPSBlLnRhcmdldC5jbG9zZXN0KFwiLmVtb3RlLWNvbnRhaW5lclwiKS5jaGlsZHJlblswXTtcclxuICAgICAgICBjb25zdCBtZW51ID0gJChgPGRpdiBpZD1cInJlbW92ZW1lbnVcIiBjbGFzcz1cImJkLWNvbnRleHQtbWVudSBjb250ZXh0LW1lbnUgdGhlbWUtZGFya1wiPlJlbW92ZTwvZGl2PmApO1xyXG4gICAgICAgIG1lbnUuY3NzKHtcclxuICAgICAgICAgICAgdG9wOiBlLnBhZ2VZIC0gJChcIiNiZC1xZW0tZmF2b3VyaXRlLWNvbnRhaW5lclwiKS5vZmZzZXQoKS50b3AsXHJcbiAgICAgICAgICAgIGxlZnQ6IGUucGFnZVggLSAkKFwiI2JkLXFlbS1mYXZvdXJpdGUtY29udGFpbmVyXCIpLm9mZnNldCgpLmxlZnRcclxuICAgICAgICB9KTtcclxuICAgICAgICAkKGVtKS5wYXJlbnQoKS5hcHBlbmQobWVudSk7XHJcbiAgICAgICAgbWVudS5vbihcImNsaWNrXCIsIChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgJChlbSkucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgIEVtb3RlTW9kdWxlLnJlbW92ZUZhdm9yaXRlKCQoZW0pLmF0dHIoXCJ0aXRsZVwiKSk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRmF2b3JpdGVzKCk7XHJcbiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9mZihcIm1vdXNlZG93bi5lbW90ZW1lbnVcIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgJChkb2N1bWVudCkub24oXCJtb3VzZWRvd24uZW1vdGVtZW51XCIsIGZ1bmN0aW9uKGV2ZW50KSB7XHJcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQuaWQgPT0gXCJyZW1vdmVtZW51XCIpIHJldHVybjtcclxuICAgICAgICAgICAgJChcIiNyZW1vdmVtZW51XCIpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAkKGRvY3VtZW50KS5vZmYoXCJtb3VzZWRvd24uZW1vdGVtZW51XCIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN3aXRjaE1lbnUoZSkge1xyXG4gICAgICAgIGxldCBpZCA9IHR5cGVvZihlKSA9PSBcInN0cmluZ1wiID8gZSA6IGUudGFyZ2V0LmlkO1xyXG4gICAgICAgIGlmIChpZCA9PSBcImJkLXFlbS1lbW9qaXNcIiAmJiB0aGlzLmhpZGVFbW9qaXMpIGlkID0gXCJiZC1xZW0tZmF2b3VyaXRlXCI7XHJcbiAgICAgICAgY29uc3QgdHdpdGNoID0gJChcIiNiZC1xZW0tdHdpdGNoXCIpO1xyXG4gICAgICAgIGNvbnN0IGZhdiA9ICQoXCIjYmQtcWVtLWZhdm91cml0ZVwiKTtcclxuICAgICAgICBjb25zdCBlbW9qaXMgPSAkKFwiI2JkLXFlbS1lbW9qaXNcIik7XHJcbiAgICAgICAgdHdpdGNoLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpO1xyXG4gICAgICAgIGZhdi5yZW1vdmVDbGFzcyhcImFjdGl2ZVwiKTtcclxuICAgICAgICBlbW9qaXMucmVtb3ZlQ2xhc3MoXCJhY3RpdmVcIik7XHJcblxyXG4gICAgICAgICQoXCIuZW1vamlQaWNrZXItM20xUy1qXCIpLmhpZGUoKTtcclxuICAgICAgICAkKFwiI2JkLXFlbS1mYXZvdXJpdGUtY29udGFpbmVyXCIpLmhpZGUoKTtcclxuICAgICAgICAkKFwiI2JkLXFlbS10d2l0Y2gtY29udGFpbmVyXCIpLmhpZGUoKTtcclxuXHJcbiAgICAgICAgc3dpdGNoIChpZCkge1xyXG4gICAgICAgICAgICBjYXNlIFwiYmQtcWVtLXR3aXRjaFwiOlxyXG4gICAgICAgICAgICAgICAgdHdpdGNoLmFkZENsYXNzKFwiYWN0aXZlXCIpO1xyXG4gICAgICAgICAgICAgICAgJChcIiNiZC1xZW0tdHdpdGNoLWNvbnRhaW5lclwiKS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcImJkLXFlbS1mYXZvdXJpdGVcIjpcclxuICAgICAgICAgICAgICAgIGZhdi5hZGRDbGFzcyhcImFjdGl2ZVwiKTtcclxuICAgICAgICAgICAgICAgICQoXCIjYmQtcWVtLWZhdm91cml0ZS1jb250YWluZXJcIikuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJiZC1xZW0tZW1vamlzXCI6XHJcbiAgICAgICAgICAgICAgICBlbW9qaXMuYWRkQ2xhc3MoXCJhY3RpdmVcIik7XHJcbiAgICAgICAgICAgICAgICAkKFwiLmVtb2ppUGlja2VyLTNtMVMtalwiKS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICAkKFwiLmVtb2ppUGlja2VyLTNtMVMtaiBpbnB1dFwiKS5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpZCkgdGhpcy5sYXN0VGFiID0gaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgb2JzZXJ2ZShtdXRhdGlvbikge1xyXG4gICAgICAgIGlmICghbXV0YXRpb24uYWRkZWROb2Rlcy5sZW5ndGggfHwgIShtdXRhdGlvbi5hZGRlZE5vZGVzWzBdIGluc3RhbmNlb2YgRWxlbWVudCkpIHJldHVybjtcclxuICAgICAgICBjb25zdCBub2RlID0gbXV0YXRpb24uYWRkZWROb2Rlc1swXTtcclxuICAgICAgICAvLyBpZiAoIW5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKFwicG9wb3V0LTJpV0FjLVwiKSB8fCBub2RlLmNsYXNzTGlzdC5jb250YWlucyhcInBvcG91dExlZnQtMzBXbXJEXCIpIHx8ICFub2RlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJlbW9qaVBpY2tlci0zbTFTLWpcIikubGVuZ3RoKSByZXR1cm47XHJcbiAgICAgICAgaWYgKCFub2RlLmNsYXNzTGlzdC5jb250YWlucyhcImxheWVyLXY5SHlZY1wiKSB8fCAhbm9kZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiZW1vamlQaWNrZXItM20xUy1qXCIpLmxlbmd0aCB8fCBub2RlLnF1ZXJ5U2VsZWN0b3IoXCIuZW1vamlQaWNrZXItM20xUy1qXCIpLnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYW5pbWF0b3JMZWZ0LTFFUXhVMFwiKSkgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCBlID0gJChub2RlKTtcclxuICAgICAgICBpZiAodGhpcy5oaWRlRW1vamlzKSBlLmFkZENsYXNzKFwiYmQtcW1lLWhpZGRlblwiKTtcclxuICAgICAgICBlbHNlIGUucmVtb3ZlQ2xhc3MoXCJiZC1xbWUtaGlkZGVuXCIpO1xyXG5cclxuICAgICAgICBlLnByZXBlbmQodGhpcy5xbWVIZWFkZXIpO1xyXG4gICAgICAgIGUuYXBwZW5kKHRoaXMudGVDb250YWluZXIpO1xyXG4gICAgICAgIGUuYXBwZW5kKHRoaXMuZmFDb250YWluZXIpO1xyXG5cclxuICAgICAgICB0aGlzLnN3aXRjaE1lbnUodGhpcy5sYXN0VGFiKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVUd2l0Y2hFbW90ZXMoKSB7XHJcbiAgICAgICAgd2hpbGUgKHRoaXMudGVDb250YWluZXJJbm5lci5maXJzdENoaWxkKSB0aGlzLnRlQ29udGFpbmVySW5uZXIuZmlyc3RDaGlsZC5yZW1vdmUoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGVtb3RlIGluIEVtb3RlTW9kdWxlLmdldENhdGVnb3J5KFwiVHdpdGNoR2xvYmFsXCIpKSB7XHJcbiAgICAgICAgICAgIGlmICghRW1vdGVNb2R1bGUuZ2V0Q2F0ZWdvcnkoXCJUd2l0Y2hHbG9iYWxcIikuaGFzT3duUHJvcGVydHkoZW1vdGUpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgY29uc3QgdXJsID0gRW1vdGVNb2R1bGUuZ2V0VXJsKFwiVHdpdGNoR2xvYmFsXCIsIGVtb3RlKTtcclxuICAgICAgICAgICAgY29uc3QgZW1vdGVFbGVtZW50ID0gbWFrZUVtb3RlKGVtb3RlLCB1cmwsIHtvbkNsaWNrOiB0aGlzLmluc2VydEVtb3RlLmJpbmQodGhpcywgZW1vdGUpfSk7XHJcbiAgICAgICAgICAgIHRoaXMudGVDb250YWluZXJJbm5lci5hcHBlbmQoZW1vdGVFbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlRmF2b3JpdGVzKCkge1xyXG4gICAgICAgIHdoaWxlICh0aGlzLmZhQ29udGFpbmVySW5uZXIuZmlyc3RDaGlsZCkgdGhpcy5mYUNvbnRhaW5lcklubmVyLmZpcnN0Q2hpbGQucmVtb3ZlKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBlbW90ZSBpbiBFbW90ZU1vZHVsZS5mYXZvcml0ZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgdXJsID0gRW1vdGVNb2R1bGUuZmF2b3JpdGVzW2Vtb3RlXTtcclxuICAgICAgICAgICAgY29uc3QgZW1vdGVFbGVtZW50ID0gbWFrZUVtb3RlKGVtb3RlLCB1cmwsIHtvbkNsaWNrOiB0aGlzLmluc2VydEVtb3RlLmJpbmQodGhpcywgZW1vdGUpLCBvbkNvbnRleHRNZW51OiB0aGlzLmZhdkNvbnRleHQuYmluZCh0aGlzKX0pO1xyXG4gICAgICAgICAgICB0aGlzLmZhQ29udGFpbmVySW5uZXIuYXBwZW5kKGVtb3RlRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEVtb3RlTW9kdWxlLnNhdmVGYXZvcml0ZXMoKTtcclxuICAgIH1cclxuXHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/builtins/emotes/emotemenu.js\n"); /***/ }), @@ -214,7 +214,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _ui_emote__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../ui/emote */ \"./src/ui/emote.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _structs_string__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../structs/string */ \"./src/structs/string.js\");\n\n\n\n\n\n\n\nconst request = __webpack_require__(/*! request */ \"request\");\n\nconst EmoteURLs = {\n TwitchGlobal: new _structs_string__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`https://static-cdn.jtvnw.net/emoticons/v1/{{id}}/1.0`),\n TwitchSubscriber: new _structs_string__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`https://static-cdn.jtvnw.net/emoticons/v1/{{id}}/1.0`),\n FrankerFaceZ: new _structs_string__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`https://cdn.frankerfacez.com/emoticon/{{id}}/1`),\n BTTV: new _structs_string__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`https://cdn.betterttv.net/emote/{{id}}/1x`)\n};\nconst Emotes = {\n TwitchGlobal: {},\n TwitchSubscriber: {},\n BTTV: {},\n FrankerFaceZ: {}\n};\nconst blacklist = [];\nconst overrides = [\"twitch\", \"subscriber\", \"bttv\", \"ffz\"];\nconst modifiers = [\"flip\", \"spin\", \"pulse\", \"spin2\", \"spin3\", \"1spin\", \"2spin\", \"3spin\", \"tr\", \"bl\", \"br\", \"shake\", \"shake2\", \"shake3\", \"flap\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class EmoteModule extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"Emotes\";\n }\n\n get collection() {\n return \"settings\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"emotes\";\n }\n\n get categories() {\n return Object.keys(Emotes).filter(k => this.isCategoryEnabled(k));\n }\n\n get shouldDownload() {\n return modules__WEBPACK_IMPORTED_MODULE_2__[\"Settings\"].get(\"emotes\", this.category, \"download\");\n }\n\n isCategoryEnabled(id) {\n return super.get(\"emotes\", \"categories\", id.toLowerCase());\n }\n\n get(id) {\n return super.get(\"emotes\", \"general\", id);\n }\n\n get MessageComponent() {\n return modules__WEBPACK_IMPORTED_MODULE_2__[\"WebpackModules\"].find(m => m.default && m.default.displayName && m.default.displayName == \"Message\");\n }\n\n get Emotes() {\n return Emotes;\n }\n\n get TwitchGlobal() {\n return Emotes.TwitchGlobal;\n }\n\n get TwitchSubscriber() {\n return Emotes.TwitchSubscriber;\n }\n\n get BTTV() {\n return Emotes.BTTV;\n }\n\n get FrankerFaceZ() {\n return Emotes.FrankerFaceZ;\n }\n\n get blacklist() {\n return blacklist;\n }\n\n get favorites() {\n return this.favoriteEmotes;\n }\n\n getUrl(category, name) {\n return EmoteURLs[category].format({\n id: Emotes[category][name]\n });\n }\n\n getCategory(category) {\n return Emotes[category];\n }\n\n getRemoteFile(category) {\n return modules__WEBPACK_IMPORTED_MODULE_2__[\"Utilities\"].repoUrl(`assets/emotes/${category.toLowerCase()}.json`);\n }\n\n initialize() {\n super.initialize();\n const storedFavorites = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getBDData(\"favoriteEmotes\");\n this.favoriteEmotes = storedFavorites || {};\n this.addFavorite = this.addFavorite.bind(this);\n this.removeFavorite = this.removeFavorite.bind(this);\n this.onCategoryToggle = this.onCategoryToggle.bind(this);\n this.resetEmotes = this.resetEmotes.bind(this);\n }\n\n async enabled() {\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Settings\"].registerCollection(\"emotes\", \"Emotes\", data__WEBPACK_IMPORTED_MODULE_1__[\"EmoteConfig\"], {\n title: modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Emotes.clearEmotes,\n onClick: this.resetEmotes\n });\n await this.getBlacklist();\n await this.loadEmoteData();\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].on(\"emotes-favorite-added\", this.addFavorite);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].on(\"emotes-favorite-removed\", this.removeFavorite);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].on(\"setting-updated\", this.onCategoryToggle);\n this.patchMessageContent();\n }\n\n disabled() {\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].off(\"setting-updated\", this.onCategoryToggle);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].off(\"emotes-favorite-added\", this.addFavorite);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].off(\"emotes-favorite-removed\", this.removeFavorite);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Settings\"].removeCollection(\"emotes\");\n this.emptyEmotes();\n if (!this.cancelEmoteRender) return;\n this.cancelEmoteRender();\n delete this.cancelEmoteRender;\n }\n\n onCategoryToggle(collection, cat, category, enabled) {\n if (collection != \"emotes\" || cat != \"categories\") return;\n if (enabled) return this.loadEmoteData(category);\n return this.unloadEmoteData(category);\n }\n\n addFavorite(name, url) {\n if (!this.favoriteEmotes.hasOwnProperty(name)) this.favoriteEmotes[name] = url;\n this.saveFavorites();\n }\n\n removeFavorite(name) {\n if (!this.favoriteEmotes.hasOwnProperty(name)) return;\n delete this.favoriteEmotes[name];\n this.saveFavorites();\n }\n\n isFavorite(name) {\n return this.favoriteEmotes.hasOwnProperty(name);\n }\n\n saveFavorites() {\n modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].setBDData(\"favoriteEmotes\", this.favoriteEmotes);\n }\n\n emptyEmotes() {\n for (const cat in Emotes) Object.assign(Emotes, {\n [cat]: {}\n });\n }\n\n patchMessageContent() {\n if (this.cancelEmoteRender) return;\n this.cancelEmoteRender = this.before(this.MessageComponent, \"default\", (thisObj, args) => {\n const nodes = args[0].childrenMessageContent.props.content;\n if (!nodes || !nodes.length) return;\n\n for (let n = 0; n < nodes.length; n++) {\n const node = nodes[n];\n if (typeof node !== \"string\") continue;\n const words = node.split(/([^\\s]+)([\\s]|$)/g);\n\n for (let c = 0, clen = this.categories.length; c < clen; c++) {\n for (let w = 0, wlen = words.length; w < wlen; w++) {\n const emote = words[w];\n const emoteSplit = emote.split(\":\");\n const emoteName = emoteSplit[0];\n let emoteModifier = emoteSplit[1] ? emoteSplit[1] : \"\";\n let emoteOverride = emoteModifier.slice(0);\n if (emoteName.length < 4 || blacklist.includes(emoteName)) continue;\n if (!modifiers.includes(emoteModifier) || !modules__WEBPACK_IMPORTED_MODULE_2__[\"Settings\"].get(\"emotes\", \"general\", \"modifiers\")) emoteModifier = \"\";\n if (!overrides.includes(emoteOverride)) emoteOverride = \"\";else emoteModifier = emoteOverride;\n let current = this.categories[c];\n\n if (emoteOverride === \"twitch\") {\n if (Emotes.TwitchGlobal[emoteName]) current = \"TwitchGlobal\";else if (Emotes.TwitchSubscriber[emoteName]) current = \"TwitchSubscriber\";\n } else if (emoteOverride === \"subscriber\") {\n if (Emotes.TwitchSubscriber[emoteName]) current = \"TwitchSubscriber\";\n } else if (emoteOverride === \"bttv\") {\n if (Emotes.BTTV[emoteName]) current = \"BTTV\";\n } else if (emoteOverride === \"ffz\") {\n if (Emotes.FrankerFaceZ[emoteName]) current = \"FrankerFaceZ\";\n }\n\n if (!Emotes[current][emoteName]) continue;\n const results = nodes[n].match(new RegExp(`([\\\\s]|^)${modules__WEBPACK_IMPORTED_MODULE_2__[\"Utilities\"].escape(emoteModifier ? emoteName + \":\" + emoteModifier : emoteName)}([\\\\s]|$)`));\n if (!results) continue;\n const pre = nodes[n].substring(0, results.index + results[1].length);\n const post = nodes[n].substring(results.index + results[0].length - results[2].length);\n nodes[n] = pre;\n const emoteComponent = modules__WEBPACK_IMPORTED_MODULE_2__[\"DiscordModules\"].React.createElement(_ui_emote__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n name: emoteName,\n url: EmoteURLs[current].format({\n id: Emotes[current][emoteName]\n }),\n modifier: emoteModifier,\n isFavorite: this.isFavorite(emoteName)\n });\n nodes.splice(n + 1, 0, post);\n nodes.splice(n + 1, 0, emoteComponent);\n }\n }\n }\n\n const onlyEmotes = nodes.every(r => {\n if (typeof r == \"string\" && r.replace(/\\s*/, \"\") == \"\") return true;else if (r.type && r.type.name == \"BDEmote\") return true;else if (r.props && r.props.children && r.props.children.props && r.props.children.props.emojiName) return true;\n return false;\n });\n if (!onlyEmotes) return;\n\n for (const node of nodes) {\n if (typeof node != \"object\") continue;\n if (node.type.name == \"BDEmote\") node.props.jumboable = true;else if (node.props && node.props.children && node.props.children.props && node.props.children.props.emojiName) node.props.children.props.jumboable = true;\n }\n });\n }\n\n async getBlacklist() {\n try {\n const category = \"Blacklist\";\n const exists = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].emotesExist(category);\n const valid = await this.isCacheValid(category);\n const useCache = valid || !valid && exists && !this.shouldDownload;\n const list = useCache ? modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getEmoteData(category) : await this.downloadEmotes(category);\n blacklist.push(...list);\n } catch (err) {// TODO: Log this\n }\n }\n\n isCacheValid(category) {\n return new Promise(resolve => {\n const etag = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getCacheHash(\"emotes\", category);\n if (!etag) return resolve(false);\n request.head({\n url: this.getRemoteFile(category),\n headers: {\n \"If-None-Match\": etag\n }\n }, (err, resp) => {\n resolve(resp.statusCode == 304);\n });\n });\n }\n\n async loadEmoteData(categories) {\n if (!categories) categories = this.categories;\n if (!Array.isArray(categories)) categories = [categories];\n const all = Object.keys(Emotes);\n categories = categories.map(k => all.find(c => c.toLowerCase() == k.toLowerCase()));\n _ui_toasts__WEBPACK_IMPORTED_MODULE_4__[\"default\"].show(modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Emotes.loading, {\n type: \"info\"\n });\n this.emotesLoaded = false;\n\n for (const category of categories) {\n const exists = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].emotesExist(category);\n const valid = await this.isCacheValid(category);\n const useCache = valid || !valid && exists && !this.shouldDownload;\n let data = null;\n\n if (useCache) {\n this.log(`Loading ${category} emotes from local cache.`);\n const cachedData = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getEmoteData(category);\n const hasData = Object.keys(cachedData).length > 0;\n if (hasData) data = cachedData;\n }\n\n if (!data) data = await this.downloadEmotes(category);\n Object.assign(Emotes[category], data);\n await new Promise(r => setTimeout(r, 1000));\n }\n\n this.emotesLoaded = true;\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].dispatch(\"emotes-loaded\");\n _ui_toasts__WEBPACK_IMPORTED_MODULE_4__[\"default\"].show(modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Emotes.loaded, {\n type: \"success\"\n });\n }\n\n unloadEmoteData(categories) {\n if (!categories) categories = this.categories;\n if (!Array.isArray(categories)) categories = [categories];\n const all = Object.keys(Emotes);\n categories = categories.map(k => all.find(c => c.toLowerCase() == k.toLowerCase()));\n\n for (const category of categories) {\n delete Emotes[category];\n Emotes[category] = {};\n }\n }\n\n downloadEmotes(category) {\n const url = this.getRemoteFile(category);\n this.log(`Downloading ${category} from ${url}`);\n const options = {\n url: url,\n timeout: 10000,\n json: true\n };\n return new Promise(resolve => {\n request.get(options, (error, response, parsedData) => {\n if (error || response.statusCode != 200) {\n this.stacktrace(`Could not download ${category} emotes.`, error);\n return resolve({});\n }\n\n for (const emote in parsedData) {\n if (emote.length < 4 || blacklist.includes(emote) || !parsedData[emote]) {\n delete parsedData[emote];\n continue;\n } // parsedData[emote] = EmoteURLs[category].format({id: parsedData[emote]});\n\n }\n\n modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].saveEmoteData(category, parsedData);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].setCacheHash(\"emotes\", category, response.headers.etag);\n resolve(parsedData);\n this.log(`Downloaded ${category}`);\n });\n });\n }\n\n resetEmotes() {\n const categories = Object.keys(Emotes);\n this.unloadEmoteData(categories);\n\n for (const cat of categories) modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].invalidateCache(\"emotes\", cat);\n\n this.loadEmoteData();\n }\n\n}()); // (async () => {\n// const emoteData = await new Promise(resolve => {\n// const req = require(\"request\");\n// req.get({url: \"https://twitchemotes.com/api_cache/v3/global.json\", json: true}, (err, resp, parsedData) => {\n// for (const emote in parsedData) {\n// if (emote.length < 4 || window.bemotes.includes(emote)) {\n// delete parsedData[emote];\n// continue;\n// }\n// parsedData[emote] = parsedData[emote].id;\n// }\n// resolve(parsedData);\n// });\n// });\n// const fs = require(\"fs\");\n// fs.writeFileSync(\"Z:\\\\Programming\\\\BetterDiscordStuff\\\\BetterDiscordApp\\\\data\\\\emotes\\\\global.json\", JSON.stringify(emoteData));\n// return emoteData;\n// })();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZW1vdGVzL2Vtb3Rlcy5qcz9jNGNjIl0sIm5hbWVzIjpbInJlcXVlc3QiLCJyZXF1aXJlIiwiRW1vdGVVUkxzIiwiVHdpdGNoR2xvYmFsIiwiRm9ybWF0dGFibGVTdHJpbmciLCJUd2l0Y2hTdWJzY3JpYmVyIiwiRnJhbmtlckZhY2VaIiwiQlRUViIsIkVtb3RlcyIsImJsYWNrbGlzdCIsIm92ZXJyaWRlcyIsIm1vZGlmaWVycyIsIkVtb3RlTW9kdWxlIiwiQnVpbHRpbiIsIm5hbWUiLCJjb2xsZWN0aW9uIiwiY2F0ZWdvcnkiLCJpZCIsImNhdGVnb3JpZXMiLCJPYmplY3QiLCJrZXlzIiwiZmlsdGVyIiwiayIsImlzQ2F0ZWdvcnlFbmFibGVkIiwic2hvdWxkRG93bmxvYWQiLCJTZXR0aW5ncyIsImdldCIsInRvTG93ZXJDYXNlIiwiTWVzc2FnZUNvbXBvbmVudCIsIldlYnBhY2tNb2R1bGVzIiwiZmluZCIsIm0iLCJkZWZhdWx0IiwiZGlzcGxheU5hbWUiLCJmYXZvcml0ZXMiLCJmYXZvcml0ZUVtb3RlcyIsImdldFVybCIsImZvcm1hdCIsImdldENhdGVnb3J5IiwiZ2V0UmVtb3RlRmlsZSIsIlV0aWxpdGllcyIsInJlcG9VcmwiLCJpbml0aWFsaXplIiwic3RvcmVkRmF2b3JpdGVzIiwiRGF0YVN0b3JlIiwiZ2V0QkREYXRhIiwiYWRkRmF2b3JpdGUiLCJiaW5kIiwicmVtb3ZlRmF2b3JpdGUiLCJvbkNhdGVnb3J5VG9nZ2xlIiwicmVzZXRFbW90ZXMiLCJlbmFibGVkIiwicmVnaXN0ZXJDb2xsZWN0aW9uIiwiRW1vdGVDb25maWciLCJ0aXRsZSIsIlN0cmluZ3MiLCJjbGVhckVtb3RlcyIsIm9uQ2xpY2siLCJnZXRCbGFja2xpc3QiLCJsb2FkRW1vdGVEYXRhIiwiRXZlbnRzIiwib24iLCJwYXRjaE1lc3NhZ2VDb250ZW50IiwiZGlzYWJsZWQiLCJvZmYiLCJyZW1vdmVDb2xsZWN0aW9uIiwiZW1wdHlFbW90ZXMiLCJjYW5jZWxFbW90ZVJlbmRlciIsImNhdCIsInVubG9hZEVtb3RlRGF0YSIsInVybCIsImhhc093blByb3BlcnR5Iiwic2F2ZUZhdm9yaXRlcyIsImlzRmF2b3JpdGUiLCJzZXRCRERhdGEiLCJhc3NpZ24iLCJiZWZvcmUiLCJ0aGlzT2JqIiwiYXJncyIsIm5vZGVzIiwiY2hpbGRyZW5NZXNzYWdlQ29udGVudCIsInByb3BzIiwiY29udGVudCIsImxlbmd0aCIsIm4iLCJub2RlIiwid29yZHMiLCJzcGxpdCIsImMiLCJjbGVuIiwidyIsIndsZW4iLCJlbW90ZSIsImVtb3RlU3BsaXQiLCJlbW90ZU5hbWUiLCJlbW90ZU1vZGlmaWVyIiwiZW1vdGVPdmVycmlkZSIsInNsaWNlIiwiaW5jbHVkZXMiLCJjdXJyZW50IiwicmVzdWx0cyIsIm1hdGNoIiwiUmVnRXhwIiwiZXNjYXBlIiwicHJlIiwic3Vic3RyaW5nIiwiaW5kZXgiLCJwb3N0IiwiZW1vdGVDb21wb25lbnQiLCJEaXNjb3JkTW9kdWxlcyIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsIkJERW1vdGUiLCJtb2RpZmllciIsInNwbGljZSIsIm9ubHlFbW90ZXMiLCJldmVyeSIsInIiLCJyZXBsYWNlIiwidHlwZSIsImNoaWxkcmVuIiwiZW1vamlOYW1lIiwianVtYm9hYmxlIiwiZXhpc3RzIiwiZW1vdGVzRXhpc3QiLCJ2YWxpZCIsImlzQ2FjaGVWYWxpZCIsInVzZUNhY2hlIiwibGlzdCIsImdldEVtb3RlRGF0YSIsImRvd25sb2FkRW1vdGVzIiwicHVzaCIsImVyciIsIlByb21pc2UiLCJyZXNvbHZlIiwiZXRhZyIsImdldENhY2hlSGFzaCIsImhlYWQiLCJoZWFkZXJzIiwicmVzcCIsInN0YXR1c0NvZGUiLCJBcnJheSIsImlzQXJyYXkiLCJhbGwiLCJtYXAiLCJUb2FzdHMiLCJzaG93IiwibG9hZGluZyIsImVtb3Rlc0xvYWRlZCIsImRhdGEiLCJsb2ciLCJjYWNoZWREYXRhIiwiaGFzRGF0YSIsInNldFRpbWVvdXQiLCJkaXNwYXRjaCIsImxvYWRlZCIsIm9wdGlvbnMiLCJ0aW1lb3V0IiwianNvbiIsImVycm9yIiwicmVzcG9uc2UiLCJwYXJzZWREYXRhIiwic3RhY2t0cmFjZSIsInNhdmVFbW90ZURhdGEiLCJzZXRDYWNoZUhhc2giLCJpbnZhbGlkYXRlQ2FjaGUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE1BQU1BLE9BQU8sR0FBR0MsbUJBQU8sQ0FBQyx3QkFBRCxDQUF2Qjs7QUFFQSxNQUFNQyxTQUFTLEdBQUc7QUFDZEMsY0FBWSxFQUFFLElBQUlDLHVEQUFKLENBQXVCLHNEQUF2QixDQURBO0FBRWRDLGtCQUFnQixFQUFFLElBQUlELHVEQUFKLENBQXVCLHNEQUF2QixDQUZKO0FBR2RFLGNBQVksRUFBRSxJQUFJRix1REFBSixDQUF1QixnREFBdkIsQ0FIQTtBQUlkRyxNQUFJLEVBQUUsSUFBSUgsdURBQUosQ0FBdUIsMkNBQXZCO0FBSlEsQ0FBbEI7QUFPQSxNQUFNSSxNQUFNLEdBQUc7QUFDWEwsY0FBWSxFQUFFLEVBREg7QUFFWEUsa0JBQWdCLEVBQUUsRUFGUDtBQUdYRSxNQUFJLEVBQUUsRUFISztBQUlYRCxjQUFZLEVBQUU7QUFKSCxDQUFmO0FBT0EsTUFBTUcsU0FBUyxHQUFHLEVBQWxCO0FBQ0EsTUFBTUMsU0FBUyxHQUFHLENBQUMsUUFBRCxFQUFXLFlBQVgsRUFBeUIsTUFBekIsRUFBaUMsS0FBakMsQ0FBbEI7QUFDQSxNQUFNQyxTQUFTLEdBQUcsQ0FBQyxNQUFELEVBQVMsTUFBVCxFQUFpQixPQUFqQixFQUEwQixPQUExQixFQUFtQyxPQUFuQyxFQUE0QyxPQUE1QyxFQUFxRCxPQUFyRCxFQUE4RCxPQUE5RCxFQUF1RSxJQUF2RSxFQUE2RSxJQUE3RSxFQUFtRixJQUFuRixFQUF5RixPQUF6RixFQUFrRyxRQUFsRyxFQUE0RyxRQUE1RyxFQUFzSCxNQUF0SCxDQUFsQjtBQUVlLG1FQUFJLE1B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QTtBQUNBIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2Vtb3Rlcy9lbW90ZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9idWlsdGluXCI7XHJcblxyXG5pbXBvcnQge0Vtb3RlQ29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQge1V0aWxpdGllcywgV2VicGFja01vZHVsZXMsIERhdGFTdG9yZSwgRGlzY29yZE1vZHVsZXMsIEV2ZW50cywgU2V0dGluZ3MsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBCREVtb3RlIGZyb20gXCIuLi8uLi91aS9lbW90ZVwiO1xyXG5pbXBvcnQgVG9hc3RzIGZyb20gXCIuLi8uLi91aS90b2FzdHNcIjtcclxuaW1wb3J0IEZvcm1hdHRhYmxlU3RyaW5nIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL3N0cmluZ1wiO1xyXG5jb25zdCByZXF1ZXN0ID0gcmVxdWlyZShcInJlcXVlc3RcIik7XHJcblxyXG5jb25zdCBFbW90ZVVSTHMgPSB7XHJcbiAgICBUd2l0Y2hHbG9iYWw6IG5ldyBGb3JtYXR0YWJsZVN0cmluZyhgaHR0cHM6Ly9zdGF0aWMtY2RuLmp0dm53Lm5ldC9lbW90aWNvbnMvdjEve3tpZH19LzEuMGApLFxyXG4gICAgVHdpdGNoU3Vic2NyaWJlcjogbmV3IEZvcm1hdHRhYmxlU3RyaW5nKGBodHRwczovL3N0YXRpYy1jZG4uanR2bncubmV0L2Vtb3RpY29ucy92MS97e2lkfX0vMS4wYCksXHJcbiAgICBGcmFua2VyRmFjZVo6IG5ldyBGb3JtYXR0YWJsZVN0cmluZyhgaHR0cHM6Ly9jZG4uZnJhbmtlcmZhY2V6LmNvbS9lbW90aWNvbi97e2lkfX0vMWApLFxyXG4gICAgQlRUVjogbmV3IEZvcm1hdHRhYmxlU3RyaW5nKGBodHRwczovL2Nkbi5iZXR0ZXJ0dHYubmV0L2Vtb3RlL3t7aWR9fS8xeGApLFxyXG59O1xyXG5cclxuY29uc3QgRW1vdGVzID0ge1xyXG4gICAgVHdpdGNoR2xvYmFsOiB7fSxcclxuICAgIFR3aXRjaFN1YnNjcmliZXI6IHt9LFxyXG4gICAgQlRUVjoge30sXHJcbiAgICBGcmFua2VyRmFjZVo6IHt9XHJcbn07XHJcblxyXG5jb25zdCBibGFja2xpc3QgPSBbXTtcclxuY29uc3Qgb3ZlcnJpZGVzID0gW1widHdpdGNoXCIsIFwic3Vic2NyaWJlclwiLCBcImJ0dHZcIiwgXCJmZnpcIl07XHJcbmNvbnN0IG1vZGlmaWVycyA9IFtcImZsaXBcIiwgXCJzcGluXCIsIFwicHVsc2VcIiwgXCJzcGluMlwiLCBcInNwaW4zXCIsIFwiMXNwaW5cIiwgXCIyc3BpblwiLCBcIjNzcGluXCIsIFwidHJcIiwgXCJibFwiLCBcImJyXCIsIFwic2hha2VcIiwgXCJzaGFrZTJcIiwgXCJzaGFrZTNcIiwgXCJmbGFwXCJdO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIEVtb3RlTW9kdWxlIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJFbW90ZXNcIjt9XHJcbiAgICBnZXQgY29sbGVjdGlvbigpIHtyZXR1cm4gXCJzZXR0aW5nc1wiO31cclxuICAgIGdldCBjYXRlZ29yeSgpIHtyZXR1cm4gXCJnZW5lcmFsXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcImVtb3Rlc1wiO31cclxuICAgIGdldCBjYXRlZ29yaWVzKCkge3JldHVybiBPYmplY3Qua2V5cyhFbW90ZXMpLmZpbHRlcihrID0+IHRoaXMuaXNDYXRlZ29yeUVuYWJsZWQoaykpO31cclxuICAgIGdldCBzaG91bGREb3dubG9hZCgpIHtyZXR1cm4gU2V0dGluZ3MuZ2V0KFwiZW1vdGVzXCIsIHRoaXMuY2F0ZWdvcnksIFwiZG93bmxvYWRcIik7fVxyXG5cclxuICAgIGlzQ2F0ZWdvcnlFbmFibGVkKGlkKSB7cmV0dXJuIHN1cGVyLmdldChcImVtb3Rlc1wiLCBcImNhdGVnb3JpZXNcIiwgaWQudG9Mb3dlckNhc2UoKSk7fVxyXG5cclxuICAgIGdldChpZCkge3JldHVybiBzdXBlci5nZXQoXCJlbW90ZXNcIiwgXCJnZW5lcmFsXCIsIGlkKTt9XHJcblxyXG4gICAgZ2V0IE1lc3NhZ2VDb21wb25lbnQoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmZpbmQobSA9PiBtLmRlZmF1bHQgJiYgbS5kZWZhdWx0LmRpc3BsYXlOYW1lICYmIG0uZGVmYXVsdC5kaXNwbGF5TmFtZSA9PSBcIk1lc3NhZ2VcIik7fVxyXG5cclxuICAgIGdldCBFbW90ZXMoKSB7cmV0dXJuIEVtb3Rlczt9XHJcbiAgICBnZXQgVHdpdGNoR2xvYmFsKCkge3JldHVybiBFbW90ZXMuVHdpdGNoR2xvYmFsO31cclxuICAgIGdldCBUd2l0Y2hTdWJzY3JpYmVyKCkge3JldHVybiBFbW90ZXMuVHdpdGNoU3Vic2NyaWJlcjt9XHJcbiAgICBnZXQgQlRUVigpIHtyZXR1cm4gRW1vdGVzLkJUVFY7fVxyXG4gICAgZ2V0IEZyYW5rZXJGYWNlWigpIHtyZXR1cm4gRW1vdGVzLkZyYW5rZXJGYWNlWjt9XHJcbiAgICBnZXQgYmxhY2tsaXN0KCkge3JldHVybiBibGFja2xpc3Q7fVxyXG4gICAgZ2V0IGZhdm9yaXRlcygpIHtyZXR1cm4gdGhpcy5mYXZvcml0ZUVtb3Rlczt9XHJcbiAgICBnZXRVcmwoY2F0ZWdvcnksIG5hbWUpIHtyZXR1cm4gRW1vdGVVUkxzW2NhdGVnb3J5XS5mb3JtYXQoe2lkOiBFbW90ZXNbY2F0ZWdvcnldW25hbWVdfSk7fVxyXG5cclxuICAgIGdldENhdGVnb3J5KGNhdGVnb3J5KSB7cmV0dXJuIEVtb3Rlc1tjYXRlZ29yeV07fVxyXG4gICAgZ2V0UmVtb3RlRmlsZShjYXRlZ29yeSkge3JldHVybiBVdGlsaXRpZXMucmVwb1VybChgYXNzZXRzL2Vtb3Rlcy8ke2NhdGVnb3J5LnRvTG93ZXJDYXNlKCl9Lmpzb25gKTt9XHJcblxyXG4gICAgaW5pdGlhbGl6ZSgpIHtcclxuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgY29uc3Qgc3RvcmVkRmF2b3JpdGVzID0gRGF0YVN0b3JlLmdldEJERGF0YShcImZhdm9yaXRlRW1vdGVzXCIpO1xyXG4gICAgICAgIHRoaXMuZmF2b3JpdGVFbW90ZXMgPSBzdG9yZWRGYXZvcml0ZXMgfHwge307XHJcbiAgICAgICAgdGhpcy5hZGRGYXZvcml0ZSA9IHRoaXMuYWRkRmF2b3JpdGUuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnJlbW92ZUZhdm9yaXRlID0gdGhpcy5yZW1vdmVGYXZvcml0ZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub25DYXRlZ29yeVRvZ2dsZSA9IHRoaXMub25DYXRlZ29yeVRvZ2dsZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMucmVzZXRFbW90ZXMgPSB0aGlzLnJlc2V0RW1vdGVzLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZW5hYmxlZCgpIHtcclxuICAgICAgICBTZXR0aW5ncy5yZWdpc3RlckNvbGxlY3Rpb24oXCJlbW90ZXNcIiwgXCJFbW90ZXNcIiwgRW1vdGVDb25maWcsIHt0aXRsZTogU3RyaW5ncy5FbW90ZXMuY2xlYXJFbW90ZXMsIG9uQ2xpY2s6IHRoaXMucmVzZXRFbW90ZXN9KTtcclxuICAgICAgICBhd2FpdCB0aGlzLmdldEJsYWNrbGlzdCgpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMubG9hZEVtb3RlRGF0YSgpO1xyXG5cclxuICAgICAgICBFdmVudHMub24oXCJlbW90ZXMtZmF2b3JpdGUtYWRkZWRcIiwgdGhpcy5hZGRGYXZvcml0ZSk7XHJcbiAgICAgICAgRXZlbnRzLm9uKFwiZW1vdGVzLWZhdm9yaXRlLXJlbW92ZWRcIiwgdGhpcy5yZW1vdmVGYXZvcml0ZSk7XHJcbiAgICAgICAgRXZlbnRzLm9uKFwic2V0dGluZy11cGRhdGVkXCIsIHRoaXMub25DYXRlZ29yeVRvZ2dsZSk7XHJcbiAgICAgICAgdGhpcy5wYXRjaE1lc3NhZ2VDb250ZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgRXZlbnRzLm9mZihcInNldHRpbmctdXBkYXRlZFwiLCB0aGlzLm9uQ2F0ZWdvcnlUb2dnbGUpO1xyXG4gICAgICAgIEV2ZW50cy5vZmYoXCJlbW90ZXMtZmF2b3JpdGUtYWRkZWRcIiwgdGhpcy5hZGRGYXZvcml0ZSk7XHJcbiAgICAgICAgRXZlbnRzLm9mZihcImVtb3Rlcy1mYXZvcml0ZS1yZW1vdmVkXCIsIHRoaXMucmVtb3ZlRmF2b3JpdGUpO1xyXG4gICAgICAgIFNldHRpbmdzLnJlbW92ZUNvbGxlY3Rpb24oXCJlbW90ZXNcIik7XHJcbiAgICAgICAgdGhpcy5lbXB0eUVtb3RlcygpO1xyXG4gICAgICAgIGlmICghdGhpcy5jYW5jZWxFbW90ZVJlbmRlcikgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuY2FuY2VsRW1vdGVSZW5kZXIoKTtcclxuICAgICAgICBkZWxldGUgdGhpcy5jYW5jZWxFbW90ZVJlbmRlcjtcclxuICAgIH1cclxuXHJcbiAgICBvbkNhdGVnb3J5VG9nZ2xlKGNvbGxlY3Rpb24sIGNhdCwgY2F0ZWdvcnksIGVuYWJsZWQpIHtcclxuICAgICAgICBpZiAoY29sbGVjdGlvbiAhPSBcImVtb3Rlc1wiIHx8IGNhdCAhPSBcImNhdGVnb3JpZXNcIikgcmV0dXJuO1xyXG4gICAgICAgIGlmIChlbmFibGVkKSByZXR1cm4gdGhpcy5sb2FkRW1vdGVEYXRhKGNhdGVnb3J5KTtcclxuICAgICAgICByZXR1cm4gdGhpcy51bmxvYWRFbW90ZURhdGEoY2F0ZWdvcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZEZhdm9yaXRlKG5hbWUsIHVybCkge1xyXG4gICAgICAgIGlmICghdGhpcy5mYXZvcml0ZUVtb3Rlcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgdGhpcy5mYXZvcml0ZUVtb3Rlc1tuYW1lXSA9IHVybDtcclxuICAgICAgICB0aGlzLnNhdmVGYXZvcml0ZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVGYXZvcml0ZShuYW1lKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZhdm9yaXRlRW1vdGVzLmhhc093blByb3BlcnR5KG5hbWUpKSByZXR1cm47XHJcbiAgICAgICAgZGVsZXRlIHRoaXMuZmF2b3JpdGVFbW90ZXNbbmFtZV07XHJcbiAgICAgICAgdGhpcy5zYXZlRmF2b3JpdGVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNGYXZvcml0ZShuYW1lKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmF2b3JpdGVFbW90ZXMuaGFzT3duUHJvcGVydHkobmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUZhdm9yaXRlcygpIHtcclxuICAgICAgICBEYXRhU3RvcmUuc2V0QkREYXRhKFwiZmF2b3JpdGVFbW90ZXNcIiwgdGhpcy5mYXZvcml0ZUVtb3Rlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZW1wdHlFbW90ZXMoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBjYXQgaW4gRW1vdGVzKSBPYmplY3QuYXNzaWduKEVtb3Rlcywge1tjYXRdOiB7fX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHBhdGNoTWVzc2FnZUNvbnRlbnQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2FuY2VsRW1vdGVSZW5kZXIpIHJldHVybjtcclxuICAgICAgICB0aGlzLmNhbmNlbEVtb3RlUmVuZGVyID0gdGhpcy5iZWZvcmUodGhpcy5NZXNzYWdlQ29tcG9uZW50LCBcImRlZmF1bHRcIiwgKHRoaXNPYmosIGFyZ3MpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgbm9kZXMgPSBhcmdzWzBdLmNoaWxkcmVuTWVzc2FnZUNvbnRlbnQucHJvcHMuY29udGVudDtcclxuICAgICAgICAgICAgaWYgKCFub2RlcyB8fCAhbm9kZXMubGVuZ3RoKSByZXR1cm47XHJcbiAgICAgICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgbm9kZXMubGVuZ3RoOyBuKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tuXTtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yobm9kZSkgIT09IFwic3RyaW5nXCIpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgd29yZHMgPSBub2RlLnNwbGl0KC8oW15cXHNdKykoW1xcc118JCkvZyk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjID0gMCwgY2xlbiA9IHRoaXMuY2F0ZWdvcmllcy5sZW5ndGg7IGMgPCBjbGVuOyBjKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCB3ID0gMCwgd2xlbiA9IHdvcmRzLmxlbmd0aDsgdyA8IHdsZW47IHcrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbW90ZSA9IHdvcmRzW3ddO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbW90ZVNwbGl0ID0gZW1vdGUuc3BsaXQoXCI6XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbW90ZU5hbWUgPSBlbW90ZVNwbGl0WzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZW1vdGVNb2RpZmllciA9IGVtb3RlU3BsaXRbMV0gPyBlbW90ZVNwbGl0WzFdIDogXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVtb3RlT3ZlcnJpZGUgPSBlbW90ZU1vZGlmaWVyLnNsaWNlKDApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVtb3RlTmFtZS5sZW5ndGggPCA0IHx8IGJsYWNrbGlzdC5pbmNsdWRlcyhlbW90ZU5hbWUpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtb2RpZmllcnMuaW5jbHVkZXMoZW1vdGVNb2RpZmllcikgfHwgIVNldHRpbmdzLmdldChcImVtb3Rlc1wiLCBcImdlbmVyYWxcIiwgXCJtb2RpZmllcnNcIikpIGVtb3RlTW9kaWZpZXIgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW92ZXJyaWRlcy5pbmNsdWRlcyhlbW90ZU92ZXJyaWRlKSkgZW1vdGVPdmVycmlkZSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZW1vdGVNb2RpZmllciA9IGVtb3RlT3ZlcnJpZGU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudCA9IHRoaXMuY2F0ZWdvcmllc1tjXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVtb3RlT3ZlcnJpZGUgPT09IFwidHdpdGNoXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChFbW90ZXMuVHdpdGNoR2xvYmFsW2Vtb3RlTmFtZV0pIGN1cnJlbnQgPSBcIlR3aXRjaEdsb2JhbFwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoRW1vdGVzLlR3aXRjaFN1YnNjcmliZXJbZW1vdGVOYW1lXSkgY3VycmVudCA9IFwiVHdpdGNoU3Vic2NyaWJlclwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVtb3RlT3ZlcnJpZGUgPT09IFwic3Vic2NyaWJlclwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRW1vdGVzLlR3aXRjaFN1YnNjcmliZXJbZW1vdGVOYW1lXSkgY3VycmVudCA9IFwiVHdpdGNoU3Vic2NyaWJlclwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVtb3RlT3ZlcnJpZGUgPT09IFwiYnR0dlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRW1vdGVzLkJUVFZbZW1vdGVOYW1lXSkgY3VycmVudCA9IFwiQlRUVlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVtb3RlT3ZlcnJpZGUgPT09IFwiZmZ6XCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChFbW90ZXMuRnJhbmtlckZhY2VaW2Vtb3RlTmFtZV0pIGN1cnJlbnQgPSBcIkZyYW5rZXJGYWNlWlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUVtb3Rlc1tjdXJyZW50XVtlbW90ZU5hbWVdKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IG5vZGVzW25dLm1hdGNoKG5ldyBSZWdFeHAoYChbXFxcXHNdfF4pJHtVdGlsaXRpZXMuZXNjYXBlKGVtb3RlTW9kaWZpZXIgPyBlbW90ZU5hbWUgKyBcIjpcIiArIGVtb3RlTW9kaWZpZXIgOiBlbW90ZU5hbWUpfShbXFxcXHNdfCQpYCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdHMpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmUgPSBub2Rlc1tuXS5zdWJzdHJpbmcoMCwgcmVzdWx0cy5pbmRleCArIHJlc3VsdHNbMV0ubGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zdCA9IG5vZGVzW25dLnN1YnN0cmluZyhyZXN1bHRzLmluZGV4ICsgcmVzdWx0c1swXS5sZW5ndGggLSByZXN1bHRzWzJdLmxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzW25dID0gcHJlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbW90ZUNvbXBvbmVudCA9IERpc2NvcmRNb2R1bGVzLlJlYWN0LmNyZWF0ZUVsZW1lbnQoQkRFbW90ZSwge25hbWU6IGVtb3RlTmFtZSwgdXJsOiBFbW90ZVVSTHNbY3VycmVudF0uZm9ybWF0KHtpZDogRW1vdGVzW2N1cnJlbnRdW2Vtb3RlTmFtZV19KSwgbW9kaWZpZXI6IGVtb3RlTW9kaWZpZXIsIGlzRmF2b3JpdGU6IHRoaXMuaXNGYXZvcml0ZShlbW90ZU5hbWUpfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzLnNwbGljZShuICsgMSwgMCwgcG9zdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzLnNwbGljZShuICsgMSwgMCwgZW1vdGVDb21wb25lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBvbmx5RW1vdGVzID0gbm9kZXMuZXZlcnkociA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mKHIpID09IFwic3RyaW5nXCIgJiYgci5yZXBsYWNlKC9cXHMqLywgXCJcIikgPT0gXCJcIikgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChyLnR5cGUgJiYgci50eXBlLm5hbWUgPT0gXCJCREVtb3RlXCIpIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoci5wcm9wcyAmJiByLnByb3BzLmNoaWxkcmVuICYmIHIucHJvcHMuY2hpbGRyZW4ucHJvcHMgJiYgci5wcm9wcy5jaGlsZHJlbi5wcm9wcy5lbW9qaU5hbWUpIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKCFvbmx5RW1vdGVzKSByZXR1cm47XHJcblxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yobm9kZSkgIT0gXCJvYmplY3RcIikgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBpZiAobm9kZS50eXBlLm5hbWUgPT0gXCJCREVtb3RlXCIpIG5vZGUucHJvcHMuanVtYm9hYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUucHJvcHMgJiYgbm9kZS5wcm9wcy5jaGlsZHJlbiAmJiBub2RlLnByb3BzLmNoaWxkcmVuLnByb3BzICYmIG5vZGUucHJvcHMuY2hpbGRyZW4ucHJvcHMuZW1vamlOYW1lKSBub2RlLnByb3BzLmNoaWxkcmVuLnByb3BzLmp1bWJvYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRCbGFja2xpc3QoKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcnkgPSBcIkJsYWNrbGlzdFwiO1xyXG4gICAgICAgICAgICBjb25zdCBleGlzdHMgPSBEYXRhU3RvcmUuZW1vdGVzRXhpc3QoY2F0ZWdvcnkpO1xyXG4gICAgICAgICAgICBjb25zdCB2YWxpZCA9IGF3YWl0IHRoaXMuaXNDYWNoZVZhbGlkKGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgY29uc3QgdXNlQ2FjaGUgPSAodmFsaWQpIHx8ICghdmFsaWQgJiYgZXhpc3RzICYmICF0aGlzLnNob3VsZERvd25sb2FkKTtcclxuICAgICAgICAgICAgY29uc3QgbGlzdCA9IHVzZUNhY2hlID8gRGF0YVN0b3JlLmdldEVtb3RlRGF0YShjYXRlZ29yeSkgOiBhd2FpdCB0aGlzLmRvd25sb2FkRW1vdGVzKGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgYmxhY2tsaXN0LnB1c2goLi4ubGlzdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgLy8gVE9ETzogTG9nIHRoaXNcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaXNDYWNoZVZhbGlkKGNhdGVnb3J5KSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBldGFnID0gRGF0YVN0b3JlLmdldENhY2hlSGFzaChcImVtb3Rlc1wiLCBjYXRlZ29yeSk7XHJcbiAgICAgICAgICAgIGlmICghZXRhZykgcmV0dXJuIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICByZXF1ZXN0LmhlYWQoe3VybDogdGhpcy5nZXRSZW1vdGVGaWxlKGNhdGVnb3J5KSwgaGVhZGVyczoge1wiSWYtTm9uZS1NYXRjaFwiOiBldGFnfX0sIChlcnIsIHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcC5zdGF0dXNDb2RlID09IDMwNCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGxvYWRFbW90ZURhdGEoY2F0ZWdvcmllcykge1xyXG4gICAgICAgIGlmICghY2F0ZWdvcmllcykgY2F0ZWdvcmllcyA9IHRoaXMuY2F0ZWdvcmllcztcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2F0ZWdvcmllcykpIGNhdGVnb3JpZXMgPSBbY2F0ZWdvcmllc107XHJcbiAgICAgICAgY29uc3QgYWxsID0gT2JqZWN0LmtleXMoRW1vdGVzKTtcclxuICAgICAgICBjYXRlZ29yaWVzID0gY2F0ZWdvcmllcy5tYXAoayA9PiBhbGwuZmluZChjID0+IGMudG9Mb3dlckNhc2UoKSA9PSBrLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgICAgICBUb2FzdHMuc2hvdyhTdHJpbmdzLkVtb3Rlcy5sb2FkaW5nLCB7dHlwZTogXCJpbmZvXCJ9KTtcclxuICAgICAgICB0aGlzLmVtb3Rlc0xvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgZXhpc3RzID0gRGF0YVN0b3JlLmVtb3Rlc0V4aXN0KGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgY29uc3QgdmFsaWQgPSBhd2FpdCB0aGlzLmlzQ2FjaGVWYWxpZChjYXRlZ29yeSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHVzZUNhY2hlID0gKHZhbGlkKSB8fCAoIXZhbGlkICYmIGV4aXN0cyAmJiAhdGhpcy5zaG91bGREb3dubG9hZCk7XHJcbiAgICAgICAgICAgIGxldCBkYXRhID0gbnVsbDtcclxuICAgICAgICAgICAgaWYgKHVzZUNhY2hlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZyhgTG9hZGluZyAke2NhdGVnb3J5fSBlbW90ZXMgZnJvbSBsb2NhbCBjYWNoZS5gKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNhY2hlZERhdGEgPSBEYXRhU3RvcmUuZ2V0RW1vdGVEYXRhKGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGhhc0RhdGEgPSBPYmplY3Qua2V5cyhjYWNoZWREYXRhKS5sZW5ndGggPiAwO1xyXG4gICAgICAgICAgICAgICAgaWYgKGhhc0RhdGEpIGRhdGEgPSBjYWNoZWREYXRhO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghZGF0YSkgZGF0YSA9IGF3YWl0IHRoaXMuZG93bmxvYWRFbW90ZXMoY2F0ZWdvcnkpO1xyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKEVtb3Rlc1tjYXRlZ29yeV0sIGRhdGEpO1xyXG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgMTAwMCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5lbW90ZXNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIEV2ZW50cy5kaXNwYXRjaChcImVtb3Rlcy1sb2FkZWRcIik7XHJcbiAgICAgICAgVG9hc3RzLnNob3coU3RyaW5ncy5FbW90ZXMubG9hZGVkLCB7dHlwZTogXCJzdWNjZXNzXCJ9KTtcclxuICAgIH1cclxuXHJcbiAgICB1bmxvYWRFbW90ZURhdGEoY2F0ZWdvcmllcykge1xyXG4gICAgICAgIGlmICghY2F0ZWdvcmllcykgY2F0ZWdvcmllcyA9IHRoaXMuY2F0ZWdvcmllcztcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2F0ZWdvcmllcykpIGNhdGVnb3JpZXMgPSBbY2F0ZWdvcmllc107XHJcbiAgICAgICAgY29uc3QgYWxsID0gT2JqZWN0LmtleXMoRW1vdGVzKTtcclxuICAgICAgICBjYXRlZ29yaWVzID0gY2F0ZWdvcmllcy5tYXAoayA9PiBhbGwuZmluZChjID0+IGMudG9Mb3dlckNhc2UoKSA9PSBrLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXMpIHtcclxuICAgICAgICAgICAgZGVsZXRlIEVtb3Rlc1tjYXRlZ29yeV07XHJcbiAgICAgICAgICAgIEVtb3Rlc1tjYXRlZ29yeV0gPSB7fTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZG93bmxvYWRFbW90ZXMoY2F0ZWdvcnkpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmdldFJlbW90ZUZpbGUoY2F0ZWdvcnkpO1xyXG4gICAgICAgIHRoaXMubG9nKGBEb3dubG9hZGluZyAke2NhdGVnb3J5fSBmcm9tICR7dXJsfWApO1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7dXJsOiB1cmwsIHRpbWVvdXQ6IDEwMDAwLCBqc29uOiB0cnVlfTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIHJlcXVlc3QuZ2V0KG9wdGlvbnMsIChlcnJvciwgcmVzcG9uc2UsIHBhcnNlZERhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnJvciB8fCByZXNwb25zZS5zdGF0dXNDb2RlICE9IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2t0cmFjZShgQ291bGQgbm90IGRvd25sb2FkICR7Y2F0ZWdvcnl9IGVtb3Rlcy5gLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoe30pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZW1vdGUgaW4gcGFyc2VkRGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbW90ZS5sZW5ndGggPCA0IHx8IGJsYWNrbGlzdC5pbmNsdWRlcyhlbW90ZSkgfHwgIXBhcnNlZERhdGFbZW1vdGVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwYXJzZWREYXRhW2Vtb3RlXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHBhcnNlZERhdGFbZW1vdGVdID0gRW1vdGVVUkxzW2NhdGVnb3J5XS5mb3JtYXQoe2lkOiBwYXJzZWREYXRhW2Vtb3RlXX0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgRGF0YVN0b3JlLnNhdmVFbW90ZURhdGEoY2F0ZWdvcnksIHBhcnNlZERhdGEpO1xyXG4gICAgICAgICAgICAgICAgRGF0YVN0b3JlLnNldENhY2hlSGFzaChcImVtb3Rlc1wiLCBjYXRlZ29yeSwgcmVzcG9uc2UuaGVhZGVycy5ldGFnKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUocGFyc2VkRGF0YSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZyhgRG93bmxvYWRlZCAke2NhdGVnb3J5fWApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldEVtb3RlcygpIHtcclxuICAgICAgICBjb25zdCBjYXRlZ29yaWVzID0gT2JqZWN0LmtleXMoRW1vdGVzKTtcclxuICAgICAgICB0aGlzLnVubG9hZEVtb3RlRGF0YShjYXRlZ29yaWVzKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNhdCBvZiBjYXRlZ29yaWVzKSBEYXRhU3RvcmUuaW52YWxpZGF0ZUNhY2hlKFwiZW1vdGVzXCIsIGNhdCk7XHJcbiAgICAgICAgdGhpcy5sb2FkRW1vdGVEYXRhKCk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5cclxuLy8gKGFzeW5jICgpID0+IHtcclxuLy8gICAgIGNvbnN0IGVtb3RlRGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4vLyAgICAgICAgIGNvbnN0IHJlcSA9IHJlcXVpcmUoXCJyZXF1ZXN0XCIpO1xyXG4vLyAgICAgICAgIHJlcS5nZXQoe3VybDogXCJodHRwczovL3R3aXRjaGVtb3Rlcy5jb20vYXBpX2NhY2hlL3YzL2dsb2JhbC5qc29uXCIsIGpzb246IHRydWV9LCAoZXJyLCByZXNwLCBwYXJzZWREYXRhKSA9PiB7XHJcbi8vICAgICAgICAgICAgIGZvciAoY29uc3QgZW1vdGUgaW4gcGFyc2VkRGF0YSkge1xyXG4vLyAgICAgICAgICAgICAgICAgaWYgKGVtb3RlLmxlbmd0aCA8IDQgfHwgd2luZG93LmJlbW90ZXMuaW5jbHVkZXMoZW1vdGUpKSB7XHJcbi8vICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHBhcnNlZERhdGFbZW1vdGVdO1xyXG4vLyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4vLyAgICAgICAgICAgICAgICAgfVxyXG4vLyAgICAgICAgICAgICAgICAgcGFyc2VkRGF0YVtlbW90ZV0gPSBwYXJzZWREYXRhW2Vtb3RlXS5pZDtcclxuLy8gICAgICAgICAgICAgfVxyXG4vLyAgICAgICAgICAgICByZXNvbHZlKHBhcnNlZERhdGEpO1xyXG4vLyAgICAgICAgIH0pO1xyXG4vLyAgICAgfSk7XHJcbi8vICAgICBjb25zdCBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcclxuLy8gICAgIGZzLndyaXRlRmlsZVN5bmMoXCJaOlxcXFxQcm9ncmFtbWluZ1xcXFxCZXR0ZXJEaXNjb3JkU3R1ZmZcXFxcQmV0dGVyRGlzY29yZEFwcFxcXFxkYXRhXFxcXGVtb3Rlc1xcXFxnbG9iYWwuanNvblwiLCBKU09OLnN0cmluZ2lmeShlbW90ZURhdGEpKTtcclxuLy8gICAgIHJldHVybiBlbW90ZURhdGE7XHJcbi8vIH0pKCk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/builtins/emotes/emotes.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var _data_data_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../data/data.js */ \"./src/data/data.js\");\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _ui_emote__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../ui/emote */ \"./src/ui/emote.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _structs_string__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../structs/string */ \"./src/structs/string.js\");\n\n\n\n\n\n\n\nconst request = __webpack_require__(/*! request */ \"request\");\n\nconst EmoteURLs = {\n TwitchGlobal: new _structs_string__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`https://static-cdn.jtvnw.net/emoticons/v1/{{id}}/1.0`),\n TwitchSubscriber: new _structs_string__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`https://static-cdn.jtvnw.net/emoticons/v1/{{id}}/1.0`),\n FrankerFaceZ: new _structs_string__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`https://cdn.frankerfacez.com/emoticon/{{id}}/1`),\n BTTV: new _structs_string__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`https://cdn.betterttv.net/emote/{{id}}/1x`)\n};\nconst Emotes = {\n TwitchGlobal: {},\n TwitchSubscriber: {},\n BTTV: {},\n FrankerFaceZ: {}\n};\nconst blacklist = [];\nconst overrides = [\"twitch\", \"subscriber\", \"bttv\", \"ffz\"];\nconst modifiers = [\"flip\", \"spin\", \"pulse\", \"spin2\", \"spin3\", \"1spin\", \"2spin\", \"3spin\", \"tr\", \"bl\", \"br\", \"shake\", \"shake2\", \"shake3\", \"flap\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class EmoteModule extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"Emotes\";\n }\n\n get collection() {\n return \"settings\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"emotes\";\n }\n\n get categories() {\n return Object.keys(Emotes).filter(k => this.isCategoryEnabled(k));\n }\n\n get shouldDownload() {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Settings\"].get(\"emotes\", this.category, \"download\");\n }\n\n isCategoryEnabled(id) {\n return super.get(\"emotes\", \"categories\", id.toLowerCase());\n }\n\n get(id) {\n return super.get(\"emotes\", \"general\", id);\n }\n\n get MessageComponent() {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"WebpackModules\"].find(m => m.default && m.default.displayName && m.default.displayName == \"Message\");\n }\n\n get Emotes() {\n return Emotes;\n }\n\n get TwitchGlobal() {\n return Emotes.TwitchGlobal;\n }\n\n get TwitchSubscriber() {\n return Emotes.TwitchSubscriber;\n }\n\n get BTTV() {\n return Emotes.BTTV;\n }\n\n get FrankerFaceZ() {\n return Emotes.FrankerFaceZ;\n }\n\n get blacklist() {\n return blacklist;\n }\n\n get favorites() {\n return this.favoriteEmotes;\n }\n\n getUrl(category, name) {\n return EmoteURLs[category].format({\n id: Emotes[category][name]\n });\n }\n\n getCategory(category) {\n return Emotes[category];\n }\n\n getRemoteFile(category) {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Utilities\"].repoUrl(`assets/emotes/${category.toLowerCase()}.json`);\n }\n\n initialize() {\n super.initialize();\n const storedFavorites = _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getBDData(\"favoriteEmotes\");\n this.favoriteEmotes = storedFavorites || {};\n this.addFavorite = this.addFavorite.bind(this);\n this.removeFavorite = this.removeFavorite.bind(this);\n this.onCategoryToggle = this.onCategoryToggle.bind(this);\n this.resetEmotes = this.resetEmotes.bind(this);\n }\n\n async enabled() {\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Settings\"].registerCollection(\"emotes\", \"Emotes\", _data_data_js__WEBPACK_IMPORTED_MODULE_1__[\"EmoteConfig\"], {\n title: _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Emotes.clearEmotes,\n onClick: this.resetEmotes\n });\n await this.getBlacklist();\n await this.loadEmoteData();\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].on(\"emotes-favorite-added\", this.addFavorite);\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].on(\"emotes-favorite-removed\", this.removeFavorite);\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].on(\"setting-updated\", this.onCategoryToggle);\n this.patchMessageContent();\n }\n\n disabled() {\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].off(\"setting-updated\", this.onCategoryToggle);\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].off(\"emotes-favorite-added\", this.addFavorite);\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].off(\"emotes-favorite-removed\", this.removeFavorite);\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Settings\"].removeCollection(\"emotes\");\n this.emptyEmotes();\n if (!this.cancelEmoteRender) return;\n this.cancelEmoteRender();\n delete this.cancelEmoteRender;\n }\n\n onCategoryToggle(collection, cat, category, enabled) {\n if (collection != \"emotes\" || cat != \"categories\") return;\n if (enabled) return this.loadEmoteData(category);\n return this.unloadEmoteData(category);\n }\n\n addFavorite(name, url) {\n if (!this.favoriteEmotes.hasOwnProperty(name)) this.favoriteEmotes[name] = url;\n this.saveFavorites();\n }\n\n removeFavorite(name) {\n if (!this.favoriteEmotes.hasOwnProperty(name)) return;\n delete this.favoriteEmotes[name];\n this.saveFavorites();\n }\n\n isFavorite(name) {\n return this.favoriteEmotes.hasOwnProperty(name);\n }\n\n saveFavorites() {\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].setBDData(\"favoriteEmotes\", this.favoriteEmotes);\n }\n\n emptyEmotes() {\n for (const cat in Emotes) Object.assign(Emotes, {\n [cat]: {}\n });\n }\n\n patchMessageContent() {\n if (this.cancelEmoteRender) return;\n this.cancelEmoteRender = this.before(this.MessageComponent, \"default\", (thisObj, args) => {\n const nodes = args[0].childrenMessageContent.props.content;\n if (!nodes || !nodes.length) return;\n\n for (let n = 0; n < nodes.length; n++) {\n const node = nodes[n];\n if (typeof node !== \"string\") continue;\n const words = node.split(/([^\\s]+)([\\s]|$)/g);\n\n for (let c = 0, clen = this.categories.length; c < clen; c++) {\n for (let w = 0, wlen = words.length; w < wlen; w++) {\n const emote = words[w];\n const emoteSplit = emote.split(\":\");\n const emoteName = emoteSplit[0];\n let emoteModifier = emoteSplit[1] ? emoteSplit[1] : \"\";\n let emoteOverride = emoteModifier.slice(0);\n if (emoteName.length < 4 || blacklist.includes(emoteName)) continue;\n if (!modifiers.includes(emoteModifier) || !_modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Settings\"].get(\"emotes\", \"general\", \"modifiers\")) emoteModifier = \"\";\n if (!overrides.includes(emoteOverride)) emoteOverride = \"\";else emoteModifier = emoteOverride;\n let current = this.categories[c];\n\n if (emoteOverride === \"twitch\") {\n if (Emotes.TwitchGlobal[emoteName]) current = \"TwitchGlobal\";else if (Emotes.TwitchSubscriber[emoteName]) current = \"TwitchSubscriber\";\n } else if (emoteOverride === \"subscriber\") {\n if (Emotes.TwitchSubscriber[emoteName]) current = \"TwitchSubscriber\";\n } else if (emoteOverride === \"bttv\") {\n if (Emotes.BTTV[emoteName]) current = \"BTTV\";\n } else if (emoteOverride === \"ffz\") {\n if (Emotes.FrankerFaceZ[emoteName]) current = \"FrankerFaceZ\";\n }\n\n if (!Emotes[current][emoteName]) continue;\n const results = nodes[n].match(new RegExp(`([\\\\s]|^)${_modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Utilities\"].escape(emoteModifier ? emoteName + \":\" + emoteModifier : emoteName)}([\\\\s]|$)`));\n if (!results) continue;\n const pre = nodes[n].substring(0, results.index + results[1].length);\n const post = nodes[n].substring(results.index + results[0].length - results[2].length);\n nodes[n] = pre;\n const emoteComponent = _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"DiscordModules\"].React.createElement(_ui_emote__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n name: emoteName,\n url: EmoteURLs[current].format({\n id: Emotes[current][emoteName]\n }),\n modifier: emoteModifier,\n isFavorite: this.isFavorite(emoteName)\n });\n nodes.splice(n + 1, 0, post);\n nodes.splice(n + 1, 0, emoteComponent);\n }\n }\n }\n\n const onlyEmotes = nodes.every(r => {\n if (typeof r == \"string\" && r.replace(/\\s*/, \"\") == \"\") return true;else if (r.type && r.type.name == \"BDEmote\") return true;else if (r.props && r.props.children && r.props.children.props && r.props.children.props.emojiName) return true;\n return false;\n });\n if (!onlyEmotes) return;\n\n for (const node of nodes) {\n if (typeof node != \"object\") continue;\n if (node.type.name == \"BDEmote\") node.props.jumboable = true;else if (node.props && node.props.children && node.props.children.props && node.props.children.props.emojiName) node.props.children.props.jumboable = true;\n }\n });\n }\n\n async getBlacklist() {\n try {\n const category = \"Blacklist\";\n const exists = _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].emotesExist(category);\n const valid = await this.isCacheValid(category);\n const useCache = valid || !valid && exists && !this.shouldDownload;\n const list = useCache ? _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getEmoteData(category) : await this.downloadEmotes(category);\n blacklist.push(...list);\n } catch (err) {// TODO: Log this\n }\n }\n\n isCacheValid(category) {\n return new Promise(resolve => {\n const etag = _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getCacheHash(\"emotes\", category);\n if (!etag) return resolve(false);\n request.head({\n url: this.getRemoteFile(category),\n headers: {\n \"If-None-Match\": etag\n }\n }, (err, resp) => {\n resolve(resp.statusCode == 304);\n });\n });\n }\n\n async loadEmoteData(categories) {\n if (!categories) categories = this.categories;\n if (!Array.isArray(categories)) categories = [categories];\n const all = Object.keys(Emotes);\n categories = categories.map(k => all.find(c => c.toLowerCase() == k.toLowerCase()));\n _ui_toasts__WEBPACK_IMPORTED_MODULE_4__[\"default\"].show(_modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Emotes.loading, {\n type: \"info\"\n });\n this.emotesLoaded = false;\n\n for (const category of categories) {\n const exists = _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].emotesExist(category);\n const valid = await this.isCacheValid(category);\n const useCache = valid || !valid && exists && !this.shouldDownload;\n let data = null;\n\n if (useCache) {\n this.log(`Loading ${category} emotes from local cache.`);\n const cachedData = _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getEmoteData(category);\n const hasData = Object.keys(cachedData).length > 0;\n if (hasData) data = cachedData;\n }\n\n if (!data) data = await this.downloadEmotes(category);\n Object.assign(Emotes[category], data);\n await new Promise(r => setTimeout(r, 1000));\n }\n\n this.emotesLoaded = true;\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].dispatch(\"emotes-loaded\");\n _ui_toasts__WEBPACK_IMPORTED_MODULE_4__[\"default\"].show(_modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Emotes.loaded, {\n type: \"success\"\n });\n }\n\n unloadEmoteData(categories) {\n if (!categories) categories = this.categories;\n if (!Array.isArray(categories)) categories = [categories];\n const all = Object.keys(Emotes);\n categories = categories.map(k => all.find(c => c.toLowerCase() == k.toLowerCase()));\n\n for (const category of categories) {\n delete Emotes[category];\n Emotes[category] = {};\n }\n }\n\n downloadEmotes(category) {\n const url = this.getRemoteFile(category);\n this.log(`Downloading ${category} from ${url}`);\n const options = {\n url: url,\n timeout: 10000,\n json: true\n };\n return new Promise(resolve => {\n request.get(options, (error, response, parsedData) => {\n if (error || response.statusCode != 200) {\n this.stacktrace(`Could not download ${category} emotes.`, error);\n return resolve({});\n }\n\n for (const emote in parsedData) {\n if (emote.length < 4 || blacklist.includes(emote) || !parsedData[emote]) {\n delete parsedData[emote];\n continue;\n } // parsedData[emote] = EmoteURLs[category].format({id: parsedData[emote]});\n\n }\n\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].saveEmoteData(category, parsedData);\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].setCacheHash(\"emotes\", category, response.headers.etag);\n resolve(parsedData);\n this.log(`Downloaded ${category}`);\n });\n });\n }\n\n resetEmotes() {\n const categories = Object.keys(Emotes);\n this.unloadEmoteData(categories);\n\n for (const cat of categories) _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].invalidateCache(\"emotes\", cat);\n\n this.loadEmoteData();\n }\n\n}()); // (async () => {\n// const emoteData = await new Promise(resolve => {\n// const req = require(\"request\");\n// req.get({url: \"https://twitchemotes.com/api_cache/v3/global.json\", json: true}, (err, resp, parsedData) => {\n// for (const emote in parsedData) {\n// if (emote.length < 4 || window.bemotes.includes(emote)) {\n// delete parsedData[emote];\n// continue;\n// }\n// parsedData[emote] = parsedData[emote].id;\n// }\n// resolve(parsedData);\n// });\n// });\n// const fs = require(\"fs\");\n// fs.writeFileSync(\"Z:\\\\Programming\\\\BetterDiscordStuff\\\\BetterDiscordApp\\\\data\\\\emotes\\\\global.json\", JSON.stringify(emoteData));\n// return emoteData;\n// })();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZW1vdGVzL2Vtb3Rlcy5qcz9jNGNjIl0sIm5hbWVzIjpbInJlcXVlc3QiLCJyZXF1aXJlIiwiRW1vdGVVUkxzIiwiVHdpdGNoR2xvYmFsIiwiRm9ybWF0dGFibGVTdHJpbmciLCJUd2l0Y2hTdWJzY3JpYmVyIiwiRnJhbmtlckZhY2VaIiwiQlRUViIsIkVtb3RlcyIsImJsYWNrbGlzdCIsIm92ZXJyaWRlcyIsIm1vZGlmaWVycyIsIkVtb3RlTW9kdWxlIiwiQnVpbHRpbiIsIm5hbWUiLCJjb2xsZWN0aW9uIiwiY2F0ZWdvcnkiLCJpZCIsImNhdGVnb3JpZXMiLCJPYmplY3QiLCJrZXlzIiwiZmlsdGVyIiwiayIsImlzQ2F0ZWdvcnlFbmFibGVkIiwic2hvdWxkRG93bmxvYWQiLCJTZXR0aW5ncyIsImdldCIsInRvTG93ZXJDYXNlIiwiTWVzc2FnZUNvbXBvbmVudCIsIldlYnBhY2tNb2R1bGVzIiwiZmluZCIsIm0iLCJkZWZhdWx0IiwiZGlzcGxheU5hbWUiLCJmYXZvcml0ZXMiLCJmYXZvcml0ZUVtb3RlcyIsImdldFVybCIsImZvcm1hdCIsImdldENhdGVnb3J5IiwiZ2V0UmVtb3RlRmlsZSIsIlV0aWxpdGllcyIsInJlcG9VcmwiLCJpbml0aWFsaXplIiwic3RvcmVkRmF2b3JpdGVzIiwiRGF0YVN0b3JlIiwiZ2V0QkREYXRhIiwiYWRkRmF2b3JpdGUiLCJiaW5kIiwicmVtb3ZlRmF2b3JpdGUiLCJvbkNhdGVnb3J5VG9nZ2xlIiwicmVzZXRFbW90ZXMiLCJlbmFibGVkIiwicmVnaXN0ZXJDb2xsZWN0aW9uIiwiRW1vdGVDb25maWciLCJ0aXRsZSIsIlN0cmluZ3MiLCJjbGVhckVtb3RlcyIsIm9uQ2xpY2siLCJnZXRCbGFja2xpc3QiLCJsb2FkRW1vdGVEYXRhIiwiRXZlbnRzIiwib24iLCJwYXRjaE1lc3NhZ2VDb250ZW50IiwiZGlzYWJsZWQiLCJvZmYiLCJyZW1vdmVDb2xsZWN0aW9uIiwiZW1wdHlFbW90ZXMiLCJjYW5jZWxFbW90ZVJlbmRlciIsImNhdCIsInVubG9hZEVtb3RlRGF0YSIsInVybCIsImhhc093blByb3BlcnR5Iiwic2F2ZUZhdm9yaXRlcyIsImlzRmF2b3JpdGUiLCJzZXRCRERhdGEiLCJhc3NpZ24iLCJiZWZvcmUiLCJ0aGlzT2JqIiwiYXJncyIsIm5vZGVzIiwiY2hpbGRyZW5NZXNzYWdlQ29udGVudCIsInByb3BzIiwiY29udGVudCIsImxlbmd0aCIsIm4iLCJub2RlIiwid29yZHMiLCJzcGxpdCIsImMiLCJjbGVuIiwidyIsIndsZW4iLCJlbW90ZSIsImVtb3RlU3BsaXQiLCJlbW90ZU5hbWUiLCJlbW90ZU1vZGlmaWVyIiwiZW1vdGVPdmVycmlkZSIsInNsaWNlIiwiaW5jbHVkZXMiLCJjdXJyZW50IiwicmVzdWx0cyIsIm1hdGNoIiwiUmVnRXhwIiwiZXNjYXBlIiwicHJlIiwic3Vic3RyaW5nIiwiaW5kZXgiLCJwb3N0IiwiZW1vdGVDb21wb25lbnQiLCJEaXNjb3JkTW9kdWxlcyIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsIkJERW1vdGUiLCJtb2RpZmllciIsInNwbGljZSIsIm9ubHlFbW90ZXMiLCJldmVyeSIsInIiLCJyZXBsYWNlIiwidHlwZSIsImNoaWxkcmVuIiwiZW1vamlOYW1lIiwianVtYm9hYmxlIiwiZXhpc3RzIiwiZW1vdGVzRXhpc3QiLCJ2YWxpZCIsImlzQ2FjaGVWYWxpZCIsInVzZUNhY2hlIiwibGlzdCIsImdldEVtb3RlRGF0YSIsImRvd25sb2FkRW1vdGVzIiwicHVzaCIsImVyciIsIlByb21pc2UiLCJyZXNvbHZlIiwiZXRhZyIsImdldENhY2hlSGFzaCIsImhlYWQiLCJoZWFkZXJzIiwicmVzcCIsInN0YXR1c0NvZGUiLCJBcnJheSIsImlzQXJyYXkiLCJhbGwiLCJtYXAiLCJUb2FzdHMiLCJzaG93IiwibG9hZGluZyIsImVtb3Rlc0xvYWRlZCIsImRhdGEiLCJsb2ciLCJjYWNoZWREYXRhIiwiaGFzRGF0YSIsInNldFRpbWVvdXQiLCJkaXNwYXRjaCIsImxvYWRlZCIsIm9wdGlvbnMiLCJ0aW1lb3V0IiwianNvbiIsImVycm9yIiwicmVzcG9uc2UiLCJwYXJzZWREYXRhIiwic3RhY2t0cmFjZSIsInNhdmVFbW90ZURhdGEiLCJzZXRDYWNoZUhhc2giLCJpbnZhbGlkYXRlQ2FjaGUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE1BQU1BLE9BQU8sR0FBR0MsbUJBQU8sQ0FBQyx3QkFBRCxDQUF2Qjs7QUFFQSxNQUFNQyxTQUFTLEdBQUc7QUFDZEMsY0FBWSxFQUFFLElBQUlDLHVEQUFKLENBQXVCLHNEQUF2QixDQURBO0FBRWRDLGtCQUFnQixFQUFFLElBQUlELHVEQUFKLENBQXVCLHNEQUF2QixDQUZKO0FBR2RFLGNBQVksRUFBRSxJQUFJRix1REFBSixDQUF1QixnREFBdkIsQ0FIQTtBQUlkRyxNQUFJLEVBQUUsSUFBSUgsdURBQUosQ0FBdUIsMkNBQXZCO0FBSlEsQ0FBbEI7QUFPQSxNQUFNSSxNQUFNLEdBQUc7QUFDWEwsY0FBWSxFQUFFLEVBREg7QUFFWEUsa0JBQWdCLEVBQUUsRUFGUDtBQUdYRSxNQUFJLEVBQUUsRUFISztBQUlYRCxjQUFZLEVBQUU7QUFKSCxDQUFmO0FBT0EsTUFBTUcsU0FBUyxHQUFHLEVBQWxCO0FBQ0EsTUFBTUMsU0FBUyxHQUFHLENBQUMsUUFBRCxFQUFXLFlBQVgsRUFBeUIsTUFBekIsRUFBaUMsS0FBakMsQ0FBbEI7QUFDQSxNQUFNQyxTQUFTLEdBQUcsQ0FBQyxNQUFELEVBQVMsTUFBVCxFQUFpQixPQUFqQixFQUEwQixPQUExQixFQUFtQyxPQUFuQyxFQUE0QyxPQUE1QyxFQUFxRCxPQUFyRCxFQUE4RCxPQUE5RCxFQUF1RSxJQUF2RSxFQUE2RSxJQUE3RSxFQUFtRixJQUFuRixFQUF5RixPQUF6RixFQUFrRyxRQUFsRyxFQUE0RyxRQUE1RyxFQUFzSCxNQUF0SCxDQUFsQjtBQUVlLG1FQUFJLE1B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QTtBQUNBIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2Vtb3Rlcy9lbW90ZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9idWlsdGluXCI7XHJcblxyXG5pbXBvcnQge0Vtb3RlQ29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQge1V0aWxpdGllcywgV2VicGFja01vZHVsZXMsIERhdGFTdG9yZSwgRGlzY29yZE1vZHVsZXMsIEV2ZW50cywgU2V0dGluZ3MsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBCREVtb3RlIGZyb20gXCIuLi8uLi91aS9lbW90ZVwiO1xyXG5pbXBvcnQgVG9hc3RzIGZyb20gXCIuLi8uLi91aS90b2FzdHNcIjtcclxuaW1wb3J0IEZvcm1hdHRhYmxlU3RyaW5nIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL3N0cmluZ1wiO1xyXG5jb25zdCByZXF1ZXN0ID0gcmVxdWlyZShcInJlcXVlc3RcIik7XHJcblxyXG5jb25zdCBFbW90ZVVSTHMgPSB7XHJcbiAgICBUd2l0Y2hHbG9iYWw6IG5ldyBGb3JtYXR0YWJsZVN0cmluZyhgaHR0cHM6Ly9zdGF0aWMtY2RuLmp0dm53Lm5ldC9lbW90aWNvbnMvdjEve3tpZH19LzEuMGApLFxyXG4gICAgVHdpdGNoU3Vic2NyaWJlcjogbmV3IEZvcm1hdHRhYmxlU3RyaW5nKGBodHRwczovL3N0YXRpYy1jZG4uanR2bncubmV0L2Vtb3RpY29ucy92MS97e2lkfX0vMS4wYCksXHJcbiAgICBGcmFua2VyRmFjZVo6IG5ldyBGb3JtYXR0YWJsZVN0cmluZyhgaHR0cHM6Ly9jZG4uZnJhbmtlcmZhY2V6LmNvbS9lbW90aWNvbi97e2lkfX0vMWApLFxyXG4gICAgQlRUVjogbmV3IEZvcm1hdHRhYmxlU3RyaW5nKGBodHRwczovL2Nkbi5iZXR0ZXJ0dHYubmV0L2Vtb3RlL3t7aWR9fS8xeGApLFxyXG59O1xyXG5cclxuY29uc3QgRW1vdGVzID0ge1xyXG4gICAgVHdpdGNoR2xvYmFsOiB7fSxcclxuICAgIFR3aXRjaFN1YnNjcmliZXI6IHt9LFxyXG4gICAgQlRUVjoge30sXHJcbiAgICBGcmFua2VyRmFjZVo6IHt9XHJcbn07XHJcblxyXG5jb25zdCBibGFja2xpc3QgPSBbXTtcclxuY29uc3Qgb3ZlcnJpZGVzID0gW1widHdpdGNoXCIsIFwic3Vic2NyaWJlclwiLCBcImJ0dHZcIiwgXCJmZnpcIl07XHJcbmNvbnN0IG1vZGlmaWVycyA9IFtcImZsaXBcIiwgXCJzcGluXCIsIFwicHVsc2VcIiwgXCJzcGluMlwiLCBcInNwaW4zXCIsIFwiMXNwaW5cIiwgXCIyc3BpblwiLCBcIjNzcGluXCIsIFwidHJcIiwgXCJibFwiLCBcImJyXCIsIFwic2hha2VcIiwgXCJzaGFrZTJcIiwgXCJzaGFrZTNcIiwgXCJmbGFwXCJdO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIEVtb3RlTW9kdWxlIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJFbW90ZXNcIjt9XHJcbiAgICBnZXQgY29sbGVjdGlvbigpIHtyZXR1cm4gXCJzZXR0aW5nc1wiO31cclxuICAgIGdldCBjYXRlZ29yeSgpIHtyZXR1cm4gXCJnZW5lcmFsXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcImVtb3Rlc1wiO31cclxuICAgIGdldCBjYXRlZ29yaWVzKCkge3JldHVybiBPYmplY3Qua2V5cyhFbW90ZXMpLmZpbHRlcihrID0+IHRoaXMuaXNDYXRlZ29yeUVuYWJsZWQoaykpO31cclxuICAgIGdldCBzaG91bGREb3dubG9hZCgpIHtyZXR1cm4gU2V0dGluZ3MuZ2V0KFwiZW1vdGVzXCIsIHRoaXMuY2F0ZWdvcnksIFwiZG93bmxvYWRcIik7fVxyXG5cclxuICAgIGlzQ2F0ZWdvcnlFbmFibGVkKGlkKSB7cmV0dXJuIHN1cGVyLmdldChcImVtb3Rlc1wiLCBcImNhdGVnb3JpZXNcIiwgaWQudG9Mb3dlckNhc2UoKSk7fVxyXG5cclxuICAgIGdldChpZCkge3JldHVybiBzdXBlci5nZXQoXCJlbW90ZXNcIiwgXCJnZW5lcmFsXCIsIGlkKTt9XHJcblxyXG4gICAgZ2V0IE1lc3NhZ2VDb21wb25lbnQoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmZpbmQobSA9PiBtLmRlZmF1bHQgJiYgbS5kZWZhdWx0LmRpc3BsYXlOYW1lICYmIG0uZGVmYXVsdC5kaXNwbGF5TmFtZSA9PSBcIk1lc3NhZ2VcIik7fVxyXG5cclxuICAgIGdldCBFbW90ZXMoKSB7cmV0dXJuIEVtb3Rlczt9XHJcbiAgICBnZXQgVHdpdGNoR2xvYmFsKCkge3JldHVybiBFbW90ZXMuVHdpdGNoR2xvYmFsO31cclxuICAgIGdldCBUd2l0Y2hTdWJzY3JpYmVyKCkge3JldHVybiBFbW90ZXMuVHdpdGNoU3Vic2NyaWJlcjt9XHJcbiAgICBnZXQgQlRUVigpIHtyZXR1cm4gRW1vdGVzLkJUVFY7fVxyXG4gICAgZ2V0IEZyYW5rZXJGYWNlWigpIHtyZXR1cm4gRW1vdGVzLkZyYW5rZXJGYWNlWjt9XHJcbiAgICBnZXQgYmxhY2tsaXN0KCkge3JldHVybiBibGFja2xpc3Q7fVxyXG4gICAgZ2V0IGZhdm9yaXRlcygpIHtyZXR1cm4gdGhpcy5mYXZvcml0ZUVtb3Rlczt9XHJcbiAgICBnZXRVcmwoY2F0ZWdvcnksIG5hbWUpIHtyZXR1cm4gRW1vdGVVUkxzW2NhdGVnb3J5XS5mb3JtYXQoe2lkOiBFbW90ZXNbY2F0ZWdvcnldW25hbWVdfSk7fVxyXG5cclxuICAgIGdldENhdGVnb3J5KGNhdGVnb3J5KSB7cmV0dXJuIEVtb3Rlc1tjYXRlZ29yeV07fVxyXG4gICAgZ2V0UmVtb3RlRmlsZShjYXRlZ29yeSkge3JldHVybiBVdGlsaXRpZXMucmVwb1VybChgYXNzZXRzL2Vtb3Rlcy8ke2NhdGVnb3J5LnRvTG93ZXJDYXNlKCl9Lmpzb25gKTt9XHJcblxyXG4gICAgaW5pdGlhbGl6ZSgpIHtcclxuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgY29uc3Qgc3RvcmVkRmF2b3JpdGVzID0gRGF0YVN0b3JlLmdldEJERGF0YShcImZhdm9yaXRlRW1vdGVzXCIpO1xyXG4gICAgICAgIHRoaXMuZmF2b3JpdGVFbW90ZXMgPSBzdG9yZWRGYXZvcml0ZXMgfHwge307XHJcbiAgICAgICAgdGhpcy5hZGRGYXZvcml0ZSA9IHRoaXMuYWRkRmF2b3JpdGUuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnJlbW92ZUZhdm9yaXRlID0gdGhpcy5yZW1vdmVGYXZvcml0ZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub25DYXRlZ29yeVRvZ2dsZSA9IHRoaXMub25DYXRlZ29yeVRvZ2dsZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMucmVzZXRFbW90ZXMgPSB0aGlzLnJlc2V0RW1vdGVzLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZW5hYmxlZCgpIHtcclxuICAgICAgICBTZXR0aW5ncy5yZWdpc3RlckNvbGxlY3Rpb24oXCJlbW90ZXNcIiwgXCJFbW90ZXNcIiwgRW1vdGVDb25maWcsIHt0aXRsZTogU3RyaW5ncy5FbW90ZXMuY2xlYXJFbW90ZXMsIG9uQ2xpY2s6IHRoaXMucmVzZXRFbW90ZXN9KTtcclxuICAgICAgICBhd2FpdCB0aGlzLmdldEJsYWNrbGlzdCgpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMubG9hZEVtb3RlRGF0YSgpO1xyXG5cclxuICAgICAgICBFdmVudHMub24oXCJlbW90ZXMtZmF2b3JpdGUtYWRkZWRcIiwgdGhpcy5hZGRGYXZvcml0ZSk7XHJcbiAgICAgICAgRXZlbnRzLm9uKFwiZW1vdGVzLWZhdm9yaXRlLXJlbW92ZWRcIiwgdGhpcy5yZW1vdmVGYXZvcml0ZSk7XHJcbiAgICAgICAgRXZlbnRzLm9uKFwic2V0dGluZy11cGRhdGVkXCIsIHRoaXMub25DYXRlZ29yeVRvZ2dsZSk7XHJcbiAgICAgICAgdGhpcy5wYXRjaE1lc3NhZ2VDb250ZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgRXZlbnRzLm9mZihcInNldHRpbmctdXBkYXRlZFwiLCB0aGlzLm9uQ2F0ZWdvcnlUb2dnbGUpO1xyXG4gICAgICAgIEV2ZW50cy5vZmYoXCJlbW90ZXMtZmF2b3JpdGUtYWRkZWRcIiwgdGhpcy5hZGRGYXZvcml0ZSk7XHJcbiAgICAgICAgRXZlbnRzLm9mZihcImVtb3Rlcy1mYXZvcml0ZS1yZW1vdmVkXCIsIHRoaXMucmVtb3ZlRmF2b3JpdGUpO1xyXG4gICAgICAgIFNldHRpbmdzLnJlbW92ZUNvbGxlY3Rpb24oXCJlbW90ZXNcIik7XHJcbiAgICAgICAgdGhpcy5lbXB0eUVtb3RlcygpO1xyXG4gICAgICAgIGlmICghdGhpcy5jYW5jZWxFbW90ZVJlbmRlcikgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuY2FuY2VsRW1vdGVSZW5kZXIoKTtcclxuICAgICAgICBkZWxldGUgdGhpcy5jYW5jZWxFbW90ZVJlbmRlcjtcclxuICAgIH1cclxuXHJcbiAgICBvbkNhdGVnb3J5VG9nZ2xlKGNvbGxlY3Rpb24sIGNhdCwgY2F0ZWdvcnksIGVuYWJsZWQpIHtcclxuICAgICAgICBpZiAoY29sbGVjdGlvbiAhPSBcImVtb3Rlc1wiIHx8IGNhdCAhPSBcImNhdGVnb3JpZXNcIikgcmV0dXJuO1xyXG4gICAgICAgIGlmIChlbmFibGVkKSByZXR1cm4gdGhpcy5sb2FkRW1vdGVEYXRhKGNhdGVnb3J5KTtcclxuICAgICAgICByZXR1cm4gdGhpcy51bmxvYWRFbW90ZURhdGEoY2F0ZWdvcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZEZhdm9yaXRlKG5hbWUsIHVybCkge1xyXG4gICAgICAgIGlmICghdGhpcy5mYXZvcml0ZUVtb3Rlcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgdGhpcy5mYXZvcml0ZUVtb3Rlc1tuYW1lXSA9IHVybDtcclxuICAgICAgICB0aGlzLnNhdmVGYXZvcml0ZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVGYXZvcml0ZShuYW1lKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZhdm9yaXRlRW1vdGVzLmhhc093blByb3BlcnR5KG5hbWUpKSByZXR1cm47XHJcbiAgICAgICAgZGVsZXRlIHRoaXMuZmF2b3JpdGVFbW90ZXNbbmFtZV07XHJcbiAgICAgICAgdGhpcy5zYXZlRmF2b3JpdGVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNGYXZvcml0ZShuYW1lKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmF2b3JpdGVFbW90ZXMuaGFzT3duUHJvcGVydHkobmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUZhdm9yaXRlcygpIHtcclxuICAgICAgICBEYXRhU3RvcmUuc2V0QkREYXRhKFwiZmF2b3JpdGVFbW90ZXNcIiwgdGhpcy5mYXZvcml0ZUVtb3Rlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZW1wdHlFbW90ZXMoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBjYXQgaW4gRW1vdGVzKSBPYmplY3QuYXNzaWduKEVtb3Rlcywge1tjYXRdOiB7fX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHBhdGNoTWVzc2FnZUNvbnRlbnQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2FuY2VsRW1vdGVSZW5kZXIpIHJldHVybjtcclxuICAgICAgICB0aGlzLmNhbmNlbEVtb3RlUmVuZGVyID0gdGhpcy5iZWZvcmUodGhpcy5NZXNzYWdlQ29tcG9uZW50LCBcImRlZmF1bHRcIiwgKHRoaXNPYmosIGFyZ3MpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgbm9kZXMgPSBhcmdzWzBdLmNoaWxkcmVuTWVzc2FnZUNvbnRlbnQucHJvcHMuY29udGVudDtcclxuICAgICAgICAgICAgaWYgKCFub2RlcyB8fCAhbm9kZXMubGVuZ3RoKSByZXR1cm47XHJcbiAgICAgICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgbm9kZXMubGVuZ3RoOyBuKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tuXTtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yobm9kZSkgIT09IFwic3RyaW5nXCIpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgd29yZHMgPSBub2RlLnNwbGl0KC8oW15cXHNdKykoW1xcc118JCkvZyk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjID0gMCwgY2xlbiA9IHRoaXMuY2F0ZWdvcmllcy5sZW5ndGg7IGMgPCBjbGVuOyBjKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCB3ID0gMCwgd2xlbiA9IHdvcmRzLmxlbmd0aDsgdyA8IHdsZW47IHcrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbW90ZSA9IHdvcmRzW3ddO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbW90ZVNwbGl0ID0gZW1vdGUuc3BsaXQoXCI6XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbW90ZU5hbWUgPSBlbW90ZVNwbGl0WzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZW1vdGVNb2RpZmllciA9IGVtb3RlU3BsaXRbMV0gPyBlbW90ZVNwbGl0WzFdIDogXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVtb3RlT3ZlcnJpZGUgPSBlbW90ZU1vZGlmaWVyLnNsaWNlKDApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVtb3RlTmFtZS5sZW5ndGggPCA0IHx8IGJsYWNrbGlzdC5pbmNsdWRlcyhlbW90ZU5hbWUpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtb2RpZmllcnMuaW5jbHVkZXMoZW1vdGVNb2RpZmllcikgfHwgIVNldHRpbmdzLmdldChcImVtb3Rlc1wiLCBcImdlbmVyYWxcIiwgXCJtb2RpZmllcnNcIikpIGVtb3RlTW9kaWZpZXIgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW92ZXJyaWRlcy5pbmNsdWRlcyhlbW90ZU92ZXJyaWRlKSkgZW1vdGVPdmVycmlkZSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZW1vdGVNb2RpZmllciA9IGVtb3RlT3ZlcnJpZGU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudCA9IHRoaXMuY2F0ZWdvcmllc1tjXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVtb3RlT3ZlcnJpZGUgPT09IFwidHdpdGNoXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChFbW90ZXMuVHdpdGNoR2xvYmFsW2Vtb3RlTmFtZV0pIGN1cnJlbnQgPSBcIlR3aXRjaEdsb2JhbFwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoRW1vdGVzLlR3aXRjaFN1YnNjcmliZXJbZW1vdGVOYW1lXSkgY3VycmVudCA9IFwiVHdpdGNoU3Vic2NyaWJlclwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVtb3RlT3ZlcnJpZGUgPT09IFwic3Vic2NyaWJlclwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRW1vdGVzLlR3aXRjaFN1YnNjcmliZXJbZW1vdGVOYW1lXSkgY3VycmVudCA9IFwiVHdpdGNoU3Vic2NyaWJlclwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVtb3RlT3ZlcnJpZGUgPT09IFwiYnR0dlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRW1vdGVzLkJUVFZbZW1vdGVOYW1lXSkgY3VycmVudCA9IFwiQlRUVlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVtb3RlT3ZlcnJpZGUgPT09IFwiZmZ6XCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChFbW90ZXMuRnJhbmtlckZhY2VaW2Vtb3RlTmFtZV0pIGN1cnJlbnQgPSBcIkZyYW5rZXJGYWNlWlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUVtb3Rlc1tjdXJyZW50XVtlbW90ZU5hbWVdKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IG5vZGVzW25dLm1hdGNoKG5ldyBSZWdFeHAoYChbXFxcXHNdfF4pJHtVdGlsaXRpZXMuZXNjYXBlKGVtb3RlTW9kaWZpZXIgPyBlbW90ZU5hbWUgKyBcIjpcIiArIGVtb3RlTW9kaWZpZXIgOiBlbW90ZU5hbWUpfShbXFxcXHNdfCQpYCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdHMpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmUgPSBub2Rlc1tuXS5zdWJzdHJpbmcoMCwgcmVzdWx0cy5pbmRleCArIHJlc3VsdHNbMV0ubGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zdCA9IG5vZGVzW25dLnN1YnN0cmluZyhyZXN1bHRzLmluZGV4ICsgcmVzdWx0c1swXS5sZW5ndGggLSByZXN1bHRzWzJdLmxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzW25dID0gcHJlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbW90ZUNvbXBvbmVudCA9IERpc2NvcmRNb2R1bGVzLlJlYWN0LmNyZWF0ZUVsZW1lbnQoQkRFbW90ZSwge25hbWU6IGVtb3RlTmFtZSwgdXJsOiBFbW90ZVVSTHNbY3VycmVudF0uZm9ybWF0KHtpZDogRW1vdGVzW2N1cnJlbnRdW2Vtb3RlTmFtZV19KSwgbW9kaWZpZXI6IGVtb3RlTW9kaWZpZXIsIGlzRmF2b3JpdGU6IHRoaXMuaXNGYXZvcml0ZShlbW90ZU5hbWUpfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzLnNwbGljZShuICsgMSwgMCwgcG9zdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzLnNwbGljZShuICsgMSwgMCwgZW1vdGVDb21wb25lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBvbmx5RW1vdGVzID0gbm9kZXMuZXZlcnkociA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mKHIpID09IFwic3RyaW5nXCIgJiYgci5yZXBsYWNlKC9cXHMqLywgXCJcIikgPT0gXCJcIikgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChyLnR5cGUgJiYgci50eXBlLm5hbWUgPT0gXCJCREVtb3RlXCIpIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoci5wcm9wcyAmJiByLnByb3BzLmNoaWxkcmVuICYmIHIucHJvcHMuY2hpbGRyZW4ucHJvcHMgJiYgci5wcm9wcy5jaGlsZHJlbi5wcm9wcy5lbW9qaU5hbWUpIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKCFvbmx5RW1vdGVzKSByZXR1cm47XHJcblxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yobm9kZSkgIT0gXCJvYmplY3RcIikgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBpZiAobm9kZS50eXBlLm5hbWUgPT0gXCJCREVtb3RlXCIpIG5vZGUucHJvcHMuanVtYm9hYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUucHJvcHMgJiYgbm9kZS5wcm9wcy5jaGlsZHJlbiAmJiBub2RlLnByb3BzLmNoaWxkcmVuLnByb3BzICYmIG5vZGUucHJvcHMuY2hpbGRyZW4ucHJvcHMuZW1vamlOYW1lKSBub2RlLnByb3BzLmNoaWxkcmVuLnByb3BzLmp1bWJvYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRCbGFja2xpc3QoKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcnkgPSBcIkJsYWNrbGlzdFwiO1xyXG4gICAgICAgICAgICBjb25zdCBleGlzdHMgPSBEYXRhU3RvcmUuZW1vdGVzRXhpc3QoY2F0ZWdvcnkpO1xyXG4gICAgICAgICAgICBjb25zdCB2YWxpZCA9IGF3YWl0IHRoaXMuaXNDYWNoZVZhbGlkKGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgY29uc3QgdXNlQ2FjaGUgPSAodmFsaWQpIHx8ICghdmFsaWQgJiYgZXhpc3RzICYmICF0aGlzLnNob3VsZERvd25sb2FkKTtcclxuICAgICAgICAgICAgY29uc3QgbGlzdCA9IHVzZUNhY2hlID8gRGF0YVN0b3JlLmdldEVtb3RlRGF0YShjYXRlZ29yeSkgOiBhd2FpdCB0aGlzLmRvd25sb2FkRW1vdGVzKGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgYmxhY2tsaXN0LnB1c2goLi4ubGlzdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgLy8gVE9ETzogTG9nIHRoaXNcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaXNDYWNoZVZhbGlkKGNhdGVnb3J5KSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBldGFnID0gRGF0YVN0b3JlLmdldENhY2hlSGFzaChcImVtb3Rlc1wiLCBjYXRlZ29yeSk7XHJcbiAgICAgICAgICAgIGlmICghZXRhZykgcmV0dXJuIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICByZXF1ZXN0LmhlYWQoe3VybDogdGhpcy5nZXRSZW1vdGVGaWxlKGNhdGVnb3J5KSwgaGVhZGVyczoge1wiSWYtTm9uZS1NYXRjaFwiOiBldGFnfX0sIChlcnIsIHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcC5zdGF0dXNDb2RlID09IDMwNCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGxvYWRFbW90ZURhdGEoY2F0ZWdvcmllcykge1xyXG4gICAgICAgIGlmICghY2F0ZWdvcmllcykgY2F0ZWdvcmllcyA9IHRoaXMuY2F0ZWdvcmllcztcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2F0ZWdvcmllcykpIGNhdGVnb3JpZXMgPSBbY2F0ZWdvcmllc107XHJcbiAgICAgICAgY29uc3QgYWxsID0gT2JqZWN0LmtleXMoRW1vdGVzKTtcclxuICAgICAgICBjYXRlZ29yaWVzID0gY2F0ZWdvcmllcy5tYXAoayA9PiBhbGwuZmluZChjID0+IGMudG9Mb3dlckNhc2UoKSA9PSBrLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgICAgICBUb2FzdHMuc2hvdyhTdHJpbmdzLkVtb3Rlcy5sb2FkaW5nLCB7dHlwZTogXCJpbmZvXCJ9KTtcclxuICAgICAgICB0aGlzLmVtb3Rlc0xvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgZXhpc3RzID0gRGF0YVN0b3JlLmVtb3Rlc0V4aXN0KGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgY29uc3QgdmFsaWQgPSBhd2FpdCB0aGlzLmlzQ2FjaGVWYWxpZChjYXRlZ29yeSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHVzZUNhY2hlID0gKHZhbGlkKSB8fCAoIXZhbGlkICYmIGV4aXN0cyAmJiAhdGhpcy5zaG91bGREb3dubG9hZCk7XHJcbiAgICAgICAgICAgIGxldCBkYXRhID0gbnVsbDtcclxuICAgICAgICAgICAgaWYgKHVzZUNhY2hlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZyhgTG9hZGluZyAke2NhdGVnb3J5fSBlbW90ZXMgZnJvbSBsb2NhbCBjYWNoZS5gKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNhY2hlZERhdGEgPSBEYXRhU3RvcmUuZ2V0RW1vdGVEYXRhKGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGhhc0RhdGEgPSBPYmplY3Qua2V5cyhjYWNoZWREYXRhKS5sZW5ndGggPiAwO1xyXG4gICAgICAgICAgICAgICAgaWYgKGhhc0RhdGEpIGRhdGEgPSBjYWNoZWREYXRhO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghZGF0YSkgZGF0YSA9IGF3YWl0IHRoaXMuZG93bmxvYWRFbW90ZXMoY2F0ZWdvcnkpO1xyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKEVtb3Rlc1tjYXRlZ29yeV0sIGRhdGEpO1xyXG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgMTAwMCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5lbW90ZXNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIEV2ZW50cy5kaXNwYXRjaChcImVtb3Rlcy1sb2FkZWRcIik7XHJcbiAgICAgICAgVG9hc3RzLnNob3coU3RyaW5ncy5FbW90ZXMubG9hZGVkLCB7dHlwZTogXCJzdWNjZXNzXCJ9KTtcclxuICAgIH1cclxuXHJcbiAgICB1bmxvYWRFbW90ZURhdGEoY2F0ZWdvcmllcykge1xyXG4gICAgICAgIGlmICghY2F0ZWdvcmllcykgY2F0ZWdvcmllcyA9IHRoaXMuY2F0ZWdvcmllcztcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2F0ZWdvcmllcykpIGNhdGVnb3JpZXMgPSBbY2F0ZWdvcmllc107XHJcbiAgICAgICAgY29uc3QgYWxsID0gT2JqZWN0LmtleXMoRW1vdGVzKTtcclxuICAgICAgICBjYXRlZ29yaWVzID0gY2F0ZWdvcmllcy5tYXAoayA9PiBhbGwuZmluZChjID0+IGMudG9Mb3dlckNhc2UoKSA9PSBrLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXMpIHtcclxuICAgICAgICAgICAgZGVsZXRlIEVtb3Rlc1tjYXRlZ29yeV07XHJcbiAgICAgICAgICAgIEVtb3Rlc1tjYXRlZ29yeV0gPSB7fTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZG93bmxvYWRFbW90ZXMoY2F0ZWdvcnkpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmdldFJlbW90ZUZpbGUoY2F0ZWdvcnkpO1xyXG4gICAgICAgIHRoaXMubG9nKGBEb3dubG9hZGluZyAke2NhdGVnb3J5fSBmcm9tICR7dXJsfWApO1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7dXJsOiB1cmwsIHRpbWVvdXQ6IDEwMDAwLCBqc29uOiB0cnVlfTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIHJlcXVlc3QuZ2V0KG9wdGlvbnMsIChlcnJvciwgcmVzcG9uc2UsIHBhcnNlZERhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnJvciB8fCByZXNwb25zZS5zdGF0dXNDb2RlICE9IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2t0cmFjZShgQ291bGQgbm90IGRvd25sb2FkICR7Y2F0ZWdvcnl9IGVtb3Rlcy5gLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoe30pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZW1vdGUgaW4gcGFyc2VkRGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbW90ZS5sZW5ndGggPCA0IHx8IGJsYWNrbGlzdC5pbmNsdWRlcyhlbW90ZSkgfHwgIXBhcnNlZERhdGFbZW1vdGVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwYXJzZWREYXRhW2Vtb3RlXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHBhcnNlZERhdGFbZW1vdGVdID0gRW1vdGVVUkxzW2NhdGVnb3J5XS5mb3JtYXQoe2lkOiBwYXJzZWREYXRhW2Vtb3RlXX0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgRGF0YVN0b3JlLnNhdmVFbW90ZURhdGEoY2F0ZWdvcnksIHBhcnNlZERhdGEpO1xyXG4gICAgICAgICAgICAgICAgRGF0YVN0b3JlLnNldENhY2hlSGFzaChcImVtb3Rlc1wiLCBjYXRlZ29yeSwgcmVzcG9uc2UuaGVhZGVycy5ldGFnKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUocGFyc2VkRGF0YSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZyhgRG93bmxvYWRlZCAke2NhdGVnb3J5fWApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldEVtb3RlcygpIHtcclxuICAgICAgICBjb25zdCBjYXRlZ29yaWVzID0gT2JqZWN0LmtleXMoRW1vdGVzKTtcclxuICAgICAgICB0aGlzLnVubG9hZEVtb3RlRGF0YShjYXRlZ29yaWVzKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNhdCBvZiBjYXRlZ29yaWVzKSBEYXRhU3RvcmUuaW52YWxpZGF0ZUNhY2hlKFwiZW1vdGVzXCIsIGNhdCk7XHJcbiAgICAgICAgdGhpcy5sb2FkRW1vdGVEYXRhKCk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5cclxuLy8gKGFzeW5jICgpID0+IHtcclxuLy8gICAgIGNvbnN0IGVtb3RlRGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4vLyAgICAgICAgIGNvbnN0IHJlcSA9IHJlcXVpcmUoXCJyZXF1ZXN0XCIpO1xyXG4vLyAgICAgICAgIHJlcS5nZXQoe3VybDogXCJodHRwczovL3R3aXRjaGVtb3Rlcy5jb20vYXBpX2NhY2hlL3YzL2dsb2JhbC5qc29uXCIsIGpzb246IHRydWV9LCAoZXJyLCByZXNwLCBwYXJzZWREYXRhKSA9PiB7XHJcbi8vICAgICAgICAgICAgIGZvciAoY29uc3QgZW1vdGUgaW4gcGFyc2VkRGF0YSkge1xyXG4vLyAgICAgICAgICAgICAgICAgaWYgKGVtb3RlLmxlbmd0aCA8IDQgfHwgd2luZG93LmJlbW90ZXMuaW5jbHVkZXMoZW1vdGUpKSB7XHJcbi8vICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHBhcnNlZERhdGFbZW1vdGVdO1xyXG4vLyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4vLyAgICAgICAgICAgICAgICAgfVxyXG4vLyAgICAgICAgICAgICAgICAgcGFyc2VkRGF0YVtlbW90ZV0gPSBwYXJzZWREYXRhW2Vtb3RlXS5pZDtcclxuLy8gICAgICAgICAgICAgfVxyXG4vLyAgICAgICAgICAgICByZXNvbHZlKHBhcnNlZERhdGEpO1xyXG4vLyAgICAgICAgIH0pO1xyXG4vLyAgICAgfSk7XHJcbi8vICAgICBjb25zdCBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcclxuLy8gICAgIGZzLndyaXRlRmlsZVN5bmMoXCJaOlxcXFxQcm9ncmFtbWluZ1xcXFxCZXR0ZXJEaXNjb3JkU3R1ZmZcXFxcQmV0dGVyRGlzY29yZEFwcFxcXFxkYXRhXFxcXGVtb3Rlc1xcXFxnbG9iYWwuanNvblwiLCBKU09OLnN0cmluZ2lmeShlbW90ZURhdGEpKTtcclxuLy8gICAgIHJldHVybiBlbW90ZURhdGE7XHJcbi8vIH0pKCk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/builtins/emotes/emotes.js\n"); /***/ }), @@ -226,7 +226,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class TwentyFourHour extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"24Hour\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"twentyFourHour\";\n }\n\n enabled() {\n this.inject24Hour();\n }\n\n disabled() {\n this.unpatchAll();\n }\n\n inject24Hour() {\n const twelveHour = new RegExp(`([0-9]{1,2}):([0-9]{1,2})\\\\s(AM|PM)`);\n\n const convert = (thisObject, args, returnValue) => {\n const matched = returnValue.match(twelveHour);\n if (!matched || matched.length !== 4) return;\n if (matched[3] === \"AM\") return returnValue = returnValue.replace(matched[0], `${matched[1] === \"12\" ? \"00\" : matched[1].padStart(2, \"0\")}:${matched[2]}`);\n return returnValue = returnValue.replace(matched[0], `${matched[1] === \"12\" ? \"12\" : parseInt(matched[1]) + 12}:${matched[2]}`);\n };\n\n this.after(modules__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].TimeFormatter, \"calendarFormat\", convert); // Called in Cozy mode\n\n this.after(modules__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].TimeFormatter, \"dateFormat\", convert); // Called in Compact mode\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZ2VuZXJhbC8yNGhvdXIuanM/MWZlNSJdLCJuYW1lcyI6WyJUd2VudHlGb3VySG91ciIsIkJ1aWx0aW4iLCJuYW1lIiwiY2F0ZWdvcnkiLCJpZCIsImVuYWJsZWQiLCJpbmplY3QyNEhvdXIiLCJkaXNhYmxlZCIsInVucGF0Y2hBbGwiLCJ0d2VsdmVIb3VyIiwiUmVnRXhwIiwiY29udmVydCIsInRoaXNPYmplY3QiLCJhcmdzIiwicmV0dXJuVmFsdWUiLCJtYXRjaGVkIiwibWF0Y2giLCJsZW5ndGgiLCJyZXBsYWNlIiwicGFkU3RhcnQiLCJwYXJzZUludCIsImFmdGVyIiwiRGlzY29yZE1vZHVsZXMiLCJUaW1lRm9ybWF0dGVyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRWUsbUVBQUksTUFBTUEsY0FBTixTQUE2QkMsd0RBQTdCLENBQXFDO0FBQ3BELE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sUUFBUDtBQUFpQjs7QUFDN0IsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxTQUFQO0FBQWtCOztBQUNsQyxNQUFJQyxFQUFKLEdBQVM7QUFBQyxXQUFPLGdCQUFQO0FBQXlCOztBQUVuQ0MsU0FBTyxHQUFHO0FBQ04sU0FBS0MsWUFBTDtBQUNIOztBQUVEQyxVQUFRLEdBQUc7QUFDUCxTQUFLQyxVQUFMO0FBQ0g7O0FBRURGLGNBQVksR0FBRztBQUNYLFVBQU1HLFVBQVUsR0FBRyxJQUFJQyxNQUFKLENBQVkscUNBQVosQ0FBbkI7O0FBQ0EsVUFBTUMsT0FBTyxHQUFHLENBQUNDLFVBQUQsRUFBYUMsSUFBYixFQUFtQkMsV0FBbkIsS0FBbUM7QUFDL0MsWUFBTUMsT0FBTyxHQUFHRCxXQUFXLENBQUNFLEtBQVosQ0FBa0JQLFVBQWxCLENBQWhCO0FBQ0EsVUFBSSxDQUFDTSxPQUFELElBQVlBLE9BQU8sQ0FBQ0UsTUFBUixLQUFtQixDQUFuQyxFQUFzQztBQUN0QyxVQUFJRixPQUFPLENBQUMsQ0FBRCxDQUFQLEtBQWUsSUFBbkIsRUFBeUIsT0FBT0QsV0FBVyxHQUFHQSxXQUFXLENBQUNJLE9BQVosQ0FBb0JILE9BQU8sQ0FBQyxDQUFELENBQTNCLEVBQWlDLEdBQUVBLE9BQU8sQ0FBQyxDQUFELENBQVAsS0FBZSxJQUFmLEdBQXNCLElBQXRCLEdBQTZCQSxPQUFPLENBQUMsQ0FBRCxDQUFQLENBQVdJLFFBQVgsQ0FBb0IsQ0FBcEIsRUFBdUIsR0FBdkIsQ0FBNEIsSUFBR0osT0FBTyxDQUFDLENBQUQsQ0FBSSxFQUExRyxDQUFyQjtBQUN6QixhQUFPRCxXQUFXLEdBQUdBLFdBQVcsQ0FBQ0ksT0FBWixDQUFvQkgsT0FBTyxDQUFDLENBQUQsQ0FBM0IsRUFBaUMsR0FBRUEsT0FBTyxDQUFDLENBQUQsQ0FBUCxLQUFlLElBQWYsR0FBc0IsSUFBdEIsR0FBNkJLLFFBQVEsQ0FBQ0wsT0FBTyxDQUFDLENBQUQsQ0FBUixDQUFSLEdBQXVCLEVBQUcsSUFBR0EsT0FBTyxDQUFDLENBQUQsQ0FBSSxFQUF4RyxDQUFyQjtBQUNILEtBTEQ7O0FBT0EsU0FBS00sS0FBTCxDQUFXQyxzREFBYyxDQUFDQyxhQUExQixFQUF5QyxnQkFBekMsRUFBMkRaLE9BQTNELEVBVFcsQ0FTMEQ7O0FBQ3JFLFNBQUtVLEtBQUwsQ0FBV0Msc0RBQWMsQ0FBQ0MsYUFBMUIsRUFBeUMsWUFBekMsRUFBdURaLE9BQXZELEVBVlcsQ0FVc0Q7QUFDcEU7O0FBeEJtRCxDQUF6QyxFQUFmIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2dlbmVyYWwvMjRob3VyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1aWx0aW4gZnJvbSBcIi4uLy4uL3N0cnVjdHMvYnVpbHRpblwiO1xyXG5pbXBvcnQge0Rpc2NvcmRNb2R1bGVzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIFR3ZW50eUZvdXJIb3VyIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCIyNEhvdXJcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwiZ2VuZXJhbFwiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJ0d2VudHlGb3VySG91clwiO31cclxuXHJcbiAgICBlbmFibGVkKCkge1xyXG4gICAgICAgIHRoaXMuaW5qZWN0MjRIb3VyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgdGhpcy51bnBhdGNoQWxsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5qZWN0MjRIb3VyKCkge1xyXG4gICAgICAgIGNvbnN0IHR3ZWx2ZUhvdXIgPSBuZXcgUmVnRXhwKGAoWzAtOV17MSwyfSk6KFswLTldezEsMn0pXFxcXHMoQU18UE0pYCk7XHJcbiAgICAgICAgY29uc3QgY29udmVydCA9ICh0aGlzT2JqZWN0LCBhcmdzLCByZXR1cm5WYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtYXRjaGVkID0gcmV0dXJuVmFsdWUubWF0Y2godHdlbHZlSG91cik7XHJcbiAgICAgICAgICAgIGlmICghbWF0Y2hlZCB8fCBtYXRjaGVkLmxlbmd0aCAhPT0gNCkgcmV0dXJuO1xyXG4gICAgICAgICAgICBpZiAobWF0Y2hlZFszXSA9PT0gXCJBTVwiKSByZXR1cm4gcmV0dXJuVmFsdWUgPSByZXR1cm5WYWx1ZS5yZXBsYWNlKG1hdGNoZWRbMF0sIGAke21hdGNoZWRbMV0gPT09IFwiMTJcIiA/IFwiMDBcIiA6IG1hdGNoZWRbMV0ucGFkU3RhcnQoMiwgXCIwXCIpfToke21hdGNoZWRbMl19YCk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlLnJlcGxhY2UobWF0Y2hlZFswXSwgYCR7bWF0Y2hlZFsxXSA9PT0gXCIxMlwiID8gXCIxMlwiIDogcGFyc2VJbnQobWF0Y2hlZFsxXSkgKyAxMn06JHttYXRjaGVkWzJdfWApO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuYWZ0ZXIoRGlzY29yZE1vZHVsZXMuVGltZUZvcm1hdHRlciwgXCJjYWxlbmRhckZvcm1hdFwiLCBjb252ZXJ0KTsgLy8gQ2FsbGVkIGluIENvenkgbW9kZVxyXG4gICAgICAgIHRoaXMuYWZ0ZXIoRGlzY29yZE1vZHVsZXMuVGltZUZvcm1hdHRlciwgXCJkYXRlRm9ybWF0XCIsIGNvbnZlcnQpOyAvLyBDYWxsZWQgaW4gQ29tcGFjdCBtb2RlXHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/builtins/general/24hour.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class TwentyFourHour extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"24Hour\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"twentyFourHour\";\n }\n\n enabled() {\n this.inject24Hour();\n }\n\n disabled() {\n this.unpatchAll();\n }\n\n inject24Hour() {\n const twelveHour = new RegExp(`([0-9]{1,2}):([0-9]{1,2})\\\\s(AM|PM)`);\n\n const convert = (thisObject, args, returnValue) => {\n const matched = returnValue.match(twelveHour);\n if (!matched || matched.length !== 4) return;\n if (matched[3] === \"AM\") return returnValue = returnValue.replace(matched[0], `${matched[1] === \"12\" ? \"00\" : matched[1].padStart(2, \"0\")}:${matched[2]}`);\n return returnValue = returnValue.replace(matched[0], `${matched[1] === \"12\" ? \"12\" : parseInt(matched[1]) + 12}:${matched[2]}`);\n };\n\n this.after(_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].TimeFormatter, \"calendarFormat\", convert); // Called in Cozy mode\n\n this.after(_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].TimeFormatter, \"dateFormat\", convert); // Called in Compact mode\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZ2VuZXJhbC8yNGhvdXIuanM/MWZlNSJdLCJuYW1lcyI6WyJUd2VudHlGb3VySG91ciIsIkJ1aWx0aW4iLCJuYW1lIiwiY2F0ZWdvcnkiLCJpZCIsImVuYWJsZWQiLCJpbmplY3QyNEhvdXIiLCJkaXNhYmxlZCIsInVucGF0Y2hBbGwiLCJ0d2VsdmVIb3VyIiwiUmVnRXhwIiwiY29udmVydCIsInRoaXNPYmplY3QiLCJhcmdzIiwicmV0dXJuVmFsdWUiLCJtYXRjaGVkIiwibWF0Y2giLCJsZW5ndGgiLCJyZXBsYWNlIiwicGFkU3RhcnQiLCJwYXJzZUludCIsImFmdGVyIiwiRGlzY29yZE1vZHVsZXMiLCJUaW1lRm9ybWF0dGVyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRWUsbUVBQUksTUFBTUEsY0FBTixTQUE2QkMsd0RBQTdCLENBQXFDO0FBQ3BELE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sUUFBUDtBQUFpQjs7QUFDN0IsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxTQUFQO0FBQWtCOztBQUNsQyxNQUFJQyxFQUFKLEdBQVM7QUFBQyxXQUFPLGdCQUFQO0FBQXlCOztBQUVuQ0MsU0FBTyxHQUFHO0FBQ04sU0FBS0MsWUFBTDtBQUNIOztBQUVEQyxVQUFRLEdBQUc7QUFDUCxTQUFLQyxVQUFMO0FBQ0g7O0FBRURGLGNBQVksR0FBRztBQUNYLFVBQU1HLFVBQVUsR0FBRyxJQUFJQyxNQUFKLENBQVkscUNBQVosQ0FBbkI7O0FBQ0EsVUFBTUMsT0FBTyxHQUFHLENBQUNDLFVBQUQsRUFBYUMsSUFBYixFQUFtQkMsV0FBbkIsS0FBbUM7QUFDL0MsWUFBTUMsT0FBTyxHQUFHRCxXQUFXLENBQUNFLEtBQVosQ0FBa0JQLFVBQWxCLENBQWhCO0FBQ0EsVUFBSSxDQUFDTSxPQUFELElBQVlBLE9BQU8sQ0FBQ0UsTUFBUixLQUFtQixDQUFuQyxFQUFzQztBQUN0QyxVQUFJRixPQUFPLENBQUMsQ0FBRCxDQUFQLEtBQWUsSUFBbkIsRUFBeUIsT0FBT0QsV0FBVyxHQUFHQSxXQUFXLENBQUNJLE9BQVosQ0FBb0JILE9BQU8sQ0FBQyxDQUFELENBQTNCLEVBQWlDLEdBQUVBLE9BQU8sQ0FBQyxDQUFELENBQVAsS0FBZSxJQUFmLEdBQXNCLElBQXRCLEdBQTZCQSxPQUFPLENBQUMsQ0FBRCxDQUFQLENBQVdJLFFBQVgsQ0FBb0IsQ0FBcEIsRUFBdUIsR0FBdkIsQ0FBNEIsSUFBR0osT0FBTyxDQUFDLENBQUQsQ0FBSSxFQUExRyxDQUFyQjtBQUN6QixhQUFPRCxXQUFXLEdBQUdBLFdBQVcsQ0FBQ0ksT0FBWixDQUFvQkgsT0FBTyxDQUFDLENBQUQsQ0FBM0IsRUFBaUMsR0FBRUEsT0FBTyxDQUFDLENBQUQsQ0FBUCxLQUFlLElBQWYsR0FBc0IsSUFBdEIsR0FBNkJLLFFBQVEsQ0FBQ0wsT0FBTyxDQUFDLENBQUQsQ0FBUixDQUFSLEdBQXVCLEVBQUcsSUFBR0EsT0FBTyxDQUFDLENBQUQsQ0FBSSxFQUF4RyxDQUFyQjtBQUNILEtBTEQ7O0FBT0EsU0FBS00sS0FBTCxDQUFXQyxrRUFBYyxDQUFDQyxhQUExQixFQUF5QyxnQkFBekMsRUFBMkRaLE9BQTNELEVBVFcsQ0FTMEQ7O0FBQ3JFLFNBQUtVLEtBQUwsQ0FBV0Msa0VBQWMsQ0FBQ0MsYUFBMUIsRUFBeUMsWUFBekMsRUFBdURaLE9BQXZELEVBVlcsQ0FVc0Q7QUFDcEU7O0FBeEJtRCxDQUF6QyxFQUFmIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2dlbmVyYWwvMjRob3VyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1aWx0aW4gZnJvbSBcIi4uLy4uL3N0cnVjdHMvYnVpbHRpblwiO1xyXG5pbXBvcnQge0Rpc2NvcmRNb2R1bGVzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIFR3ZW50eUZvdXJIb3VyIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCIyNEhvdXJcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwiZ2VuZXJhbFwiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJ0d2VudHlGb3VySG91clwiO31cclxuXHJcbiAgICBlbmFibGVkKCkge1xyXG4gICAgICAgIHRoaXMuaW5qZWN0MjRIb3VyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgdGhpcy51bnBhdGNoQWxsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5qZWN0MjRIb3VyKCkge1xyXG4gICAgICAgIGNvbnN0IHR3ZWx2ZUhvdXIgPSBuZXcgUmVnRXhwKGAoWzAtOV17MSwyfSk6KFswLTldezEsMn0pXFxcXHMoQU18UE0pYCk7XHJcbiAgICAgICAgY29uc3QgY29udmVydCA9ICh0aGlzT2JqZWN0LCBhcmdzLCByZXR1cm5WYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtYXRjaGVkID0gcmV0dXJuVmFsdWUubWF0Y2godHdlbHZlSG91cik7XHJcbiAgICAgICAgICAgIGlmICghbWF0Y2hlZCB8fCBtYXRjaGVkLmxlbmd0aCAhPT0gNCkgcmV0dXJuO1xyXG4gICAgICAgICAgICBpZiAobWF0Y2hlZFszXSA9PT0gXCJBTVwiKSByZXR1cm4gcmV0dXJuVmFsdWUgPSByZXR1cm5WYWx1ZS5yZXBsYWNlKG1hdGNoZWRbMF0sIGAke21hdGNoZWRbMV0gPT09IFwiMTJcIiA/IFwiMDBcIiA6IG1hdGNoZWRbMV0ucGFkU3RhcnQoMiwgXCIwXCIpfToke21hdGNoZWRbMl19YCk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlLnJlcGxhY2UobWF0Y2hlZFswXSwgYCR7bWF0Y2hlZFsxXSA9PT0gXCIxMlwiID8gXCIxMlwiIDogcGFyc2VJbnQobWF0Y2hlZFsxXSkgKyAxMn06JHttYXRjaGVkWzJdfWApO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuYWZ0ZXIoRGlzY29yZE1vZHVsZXMuVGltZUZvcm1hdHRlciwgXCJjYWxlbmRhckZvcm1hdFwiLCBjb252ZXJ0KTsgLy8gQ2FsbGVkIGluIENvenkgbW9kZVxyXG4gICAgICAgIHRoaXMuYWZ0ZXIoRGlzY29yZE1vZHVsZXMuVGltZUZvcm1hdHRlciwgXCJkYXRlRm9ybWF0XCIsIGNvbnZlcnQpOyAvLyBDYWxsZWQgaW4gQ29tcGFjdCBtb2RlXHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/builtins/general/24hour.js\n"); /***/ }), @@ -238,7 +238,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\n\nconst normalizedPrefix = \"da\";\nconst randClass = new RegExp(`^(?!${normalizedPrefix}-)((?:[A-Za-z]|[0-9]|-)+)-(?:[A-Za-z]|[0-9]|-|_){6}$`);\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ClassNormalizer extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get id() {\n return \"classNormalizer\";\n }\n\n get category() {\n return \"general\";\n }\n\n get name() {\n return \"ClassNormalizer\";\n }\n\n enabled() {\n if (this.hasPatched) return;\n this.patchClassModules(modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModules(this.moduleFilter.bind(this)));\n this.normalizeElement(document.querySelector(\"#app-mount\"));\n this.hasPatched = true;\n this.patchDOMMethods();\n }\n\n disabled() {\n if (!this.hasPatched) return;\n this.unpatchClassModules(modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModules(this.moduleFilter.bind(this)));\n this.revertElement(document.querySelector(\"#app-mount\"));\n this.hasPatched = false;\n }\n\n patchClassModules(modules) {\n for (const module of modules) {\n this.patchClassModule(normalizedPrefix, module);\n }\n }\n\n unpatchClassModules(modules) {\n for (const module of modules) {\n this.unpatchClassModule(normalizedPrefix, module);\n }\n }\n\n shouldIgnore(value) {\n if (!isNaN(value)) return true;\n if (value.endsWith(\"px\") || value.endsWith(\"ch\") || value.endsWith(\"em\") || value.endsWith(\"ms\")) return true;\n if (value.startsWith(\"layerContainer-\")) return true;\n if (value.startsWith(\"#\") && (value.length == 7 || value.length == 4)) return true;\n if (value.includes(\"calc(\") || value.includes(\"rgba\")) return true;\n return false;\n }\n\n moduleFilter(module) {\n if (typeof module !== \"object\" || Array.isArray(module)) return false;\n if (module.__esModule) return false;\n if (!Object.keys(module).length) return false;\n\n for (const baseClassName in module) {\n const value = module[baseClassName];\n if (typeof value !== \"string\") return false;\n if (this.shouldIgnore(value)) continue;\n if (value.split(\"-\").length === 1) return false;\n if (!randClass.test(value.split(\" \")[0])) return false;\n }\n\n return true;\n }\n\n patchClassModule(componentName, classNames) {\n for (const baseClassName in classNames) {\n const value = classNames[baseClassName];\n if (this.shouldIgnore(value)) continue;\n const classList = value.split(\" \");\n\n for (const normalClass of classList) {\n const match = normalClass.match(randClass);\n if (!match || !match.length || match.length < 2) continue; // Shouldn't ever happen since they passed the moduleFilter, but you never know\n\n const camelCase = match[1].split(\"-\").map((s, i) => i ? s[0].toUpperCase() + s.slice(1) : s).join(\"\");\n classNames[baseClassName] += ` ${componentName}-${camelCase}`;\n }\n }\n }\n\n unpatchClassModule(componentName, classNames) {\n for (const baseClassName in classNames) {\n const value = classNames[baseClassName];\n if (this.shouldIgnore(value)) continue;\n let newString = \"\";\n const classList = value.split(\" \");\n\n for (const normalClass of classList) {\n if (normalClass.startsWith(`${componentName}-`)) continue;\n newString += ` ${normalClass}`;\n }\n\n classNames[baseClassName] = newString.trim();\n }\n }\n\n normalizeElement(element) {\n if (!(element instanceof Element)) return;\n const classes = element.classList;\n\n for (let c = 0, clen = classes.length; c < clen; c++) {\n if (!randClass.test(classes[c])) continue;\n const match = classes[c].match(randClass)[1];\n const newClass = match.split(\"-\").map((s, i) => i ? s[0].toUpperCase() + s.slice(1) : s).join(\"\");\n element.classList.add(`${normalizedPrefix}-${newClass}`);\n }\n\n for (const child of element.children) this.normalizeElement(child);\n }\n\n revertElement(element) {\n if (!(element instanceof Element)) return;\n if (element.children && element.children.length) this.revertElement(element.children[0]);\n if (element.nextElementSibling) this.revertElement(element.nextElementSibling);\n const classes = element.classList;\n const toRemove = [];\n\n for (let c = 0; c < classes.length; c++) {\n if (classes[c].startsWith(`${normalizedPrefix}-`)) toRemove.push(classes[c]);\n }\n\n element.classList.remove(...toRemove);\n }\n\n patchDOMMethods() {\n const contains = DOMTokenList.prototype.contains;\n\n DOMTokenList.prototype.contains = function (token) {\n // const tokens = token.split(\" \");\n return Reflect.apply(contains, this, [token.split(\" \")[0]]); // return tokens.every(t => contains.call(this, t));\n };\n\n const add = DOMTokenList.prototype.add;\n\n DOMTokenList.prototype.add = function (...tokens) {\n for (let t = 0; t < tokens.length; t++) {\n tokens[t] = tokens[t].split(\" \")[0];\n }\n\n return Reflect.apply(add, this, tokens);\n };\n\n const remove = DOMTokenList.prototype.remove;\n\n DOMTokenList.prototype.remove = function (...tokens) {\n for (let t = 0; t < tokens.length; t++) {\n tokens[t] = tokens[t].split(\" \")[0];\n }\n\n return Reflect.apply(remove, this, tokens);\n };\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZ2VuZXJhbC9jbGFzc25vcm1hbGl6ZXIuanM/MmRiNiJdLCJuYW1lcyI6WyJub3JtYWxpemVkUHJlZml4IiwicmFuZENsYXNzIiwiUmVnRXhwIiwiQ2xhc3NOb3JtYWxpemVyIiwiQnVpbHRpbiIsImlkIiwiY2F0ZWdvcnkiLCJuYW1lIiwiZW5hYmxlZCIsImhhc1BhdGNoZWQiLCJwYXRjaENsYXNzTW9kdWxlcyIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0TW9kdWxlcyIsIm1vZHVsZUZpbHRlciIsImJpbmQiLCJub3JtYWxpemVFbGVtZW50IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwicGF0Y2hET01NZXRob2RzIiwiZGlzYWJsZWQiLCJ1bnBhdGNoQ2xhc3NNb2R1bGVzIiwicmV2ZXJ0RWxlbWVudCIsIm1vZHVsZXMiLCJtb2R1bGUiLCJwYXRjaENsYXNzTW9kdWxlIiwidW5wYXRjaENsYXNzTW9kdWxlIiwic2hvdWxkSWdub3JlIiwidmFsdWUiLCJpc05hTiIsImVuZHNXaXRoIiwic3RhcnRzV2l0aCIsImxlbmd0aCIsImluY2x1ZGVzIiwiQXJyYXkiLCJpc0FycmF5IiwiX19lc01vZHVsZSIsIk9iamVjdCIsImtleXMiLCJiYXNlQ2xhc3NOYW1lIiwic3BsaXQiLCJ0ZXN0IiwiY29tcG9uZW50TmFtZSIsImNsYXNzTmFtZXMiLCJjbGFzc0xpc3QiLCJub3JtYWxDbGFzcyIsIm1hdGNoIiwiY2FtZWxDYXNlIiwibWFwIiwicyIsImkiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIiwiam9pbiIsIm5ld1N0cmluZyIsInRyaW0iLCJlbGVtZW50IiwiRWxlbWVudCIsImNsYXNzZXMiLCJjIiwiY2xlbiIsIm5ld0NsYXNzIiwiYWRkIiwiY2hpbGQiLCJjaGlsZHJlbiIsIm5leHRFbGVtZW50U2libGluZyIsInRvUmVtb3ZlIiwicHVzaCIsInJlbW92ZSIsImNvbnRhaW5zIiwiRE9NVG9rZW5MaXN0IiwicHJvdG90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TSxDQUFDQyxDQUFELENBQU4sR0FBWUQsTUFBTSxDQUFDQyxDQUFELENBQU4sQ0FBVXBDLEtBQVYsQ0FBZ0IsR0FBaEIsRUFBcUIsQ0FBckIsQ0FBWjtBQUNIOztBQUNELGFBQU9pQyxPQUFPLENBQUNDLEtBQVIsQ0FBY1osR0FBZCxFQUFtQixJQUFuQixFQUF5QmEsTUFBekIsQ0FBUDtBQUNILEtBTEQ7O0FBT0EsVUFBTVAsTUFBTSxHQUFHRSxZQUFZLENBQUNDLFNBQWIsQ0FBdUJILE1BQXRDOztBQUNBRSxnQkFBWSxDQUFDQyxTQUFiLENBQXVCSCxNQUF2QixHQUFnQyxVQUFTLEdBQUdPLE1BQVosRUFBb0I7QUFDaEQsV0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRCxNQUFNLENBQUMzQyxNQUEzQixFQUFtQzRDLENBQUMsRUFBcEMsRUFBd0M7QUFDcENELGNBQU0sQ0FBQ0MsQ0FBRCxDQUFOLEdBQVlELE1BQU0sQ0FBQ0MsQ0FBRCxDQUFOLENBQVVwQyxLQUFWLENBQWdCLEdBQWhCLEVBQXFCLENBQXJCLENBQVo7QUFDSDs7QUFDRCxhQUFPaUMsT0FBTyxDQUFDQyxLQUFSLENBQWNOLE1BQWQsRUFBc0IsSUFBdEIsRUFBNEJPLE1BQTVCLENBQVA7QUFDSCxLQUxEO0FBTUg7O0FBbklvRCxDQUExQyxFQUFmIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2dlbmVyYWwvY2xhc3Nub3JtYWxpemVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1aWx0aW4gZnJvbSBcIi4uLy4uL3N0cnVjdHMvYnVpbHRpblwiO1xyXG5pbXBvcnQge1dlYnBhY2tNb2R1bGVzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuY29uc3Qgbm9ybWFsaXplZFByZWZpeCA9IFwiZGFcIjtcclxuY29uc3QgcmFuZENsYXNzID0gbmV3IFJlZ0V4cChgXig/ISR7bm9ybWFsaXplZFByZWZpeH0tKSgoPzpbQS1aYS16XXxbMC05XXwtKSspLSg/OltBLVphLXpdfFswLTldfC18Xyl7Nn0kYCk7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgQ2xhc3NOb3JtYWxpemVyIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgaWQoKSB7cmV0dXJuIFwiY2xhc3NOb3JtYWxpemVyXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImdlbmVyYWxcIjt9XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJDbGFzc05vcm1hbGl6ZXJcIjt9XHJcblxyXG4gICAgZW5hYmxlZCgpIHtcclxuICAgICAgICBpZiAodGhpcy5oYXNQYXRjaGVkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5wYXRjaENsYXNzTW9kdWxlcyhXZWJwYWNrTW9kdWxlcy5nZXRNb2R1bGVzKHRoaXMubW9kdWxlRmlsdGVyLmJpbmQodGhpcykpKTtcclxuICAgICAgICB0aGlzLm5vcm1hbGl6ZUVsZW1lbnQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhcHAtbW91bnRcIikpO1xyXG4gICAgICAgIHRoaXMuaGFzUGF0Y2hlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wYXRjaERPTU1ldGhvZHMoKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlZCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaGFzUGF0Y2hlZCkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMudW5wYXRjaENsYXNzTW9kdWxlcyhXZWJwYWNrTW9kdWxlcy5nZXRNb2R1bGVzKHRoaXMubW9kdWxlRmlsdGVyLmJpbmQodGhpcykpKTtcclxuICAgICAgICB0aGlzLnJldmVydEVsZW1lbnQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhcHAtbW91bnRcIikpO1xyXG4gICAgICAgIHRoaXMuaGFzUGF0Y2hlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHBhdGNoQ2xhc3NNb2R1bGVzKG1vZHVsZXMpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGF0Y2hDbGFzc01vZHVsZShub3JtYWxpemVkUHJlZml4LCBtb2R1bGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1bnBhdGNoQ2xhc3NNb2R1bGVzKG1vZHVsZXMpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMudW5wYXRjaENsYXNzTW9kdWxlKG5vcm1hbGl6ZWRQcmVmaXgsIG1vZHVsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNob3VsZElnbm9yZSh2YWx1ZSkge1xyXG4gICAgICAgIGlmICghaXNOYU4odmFsdWUpKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpZiAodmFsdWUuZW5kc1dpdGgoXCJweFwiKSB8fCB2YWx1ZS5lbmRzV2l0aChcImNoXCIpIHx8IHZhbHVlLmVuZHNXaXRoKFwiZW1cIikgfHwgdmFsdWUuZW5kc1dpdGgoXCJtc1wiKSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoXCJsYXllckNvbnRhaW5lci1cIikpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKFwiI1wiKSAmJiAodmFsdWUubGVuZ3RoID09IDcgfHwgdmFsdWUubGVuZ3RoID09IDQpKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpZiAodmFsdWUuaW5jbHVkZXMoXCJjYWxjKFwiKSB8fCB2YWx1ZS5pbmNsdWRlcyhcInJnYmFcIikpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBtb2R1bGVGaWx0ZXIobW9kdWxlKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBtb2R1bGUgIT09IFwib2JqZWN0XCIgfHwgQXJyYXkuaXNBcnJheShtb2R1bGUpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKG1vZHVsZS5fX2VzTW9kdWxlKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhtb2R1bGUpLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGZvciAoY29uc3QgYmFzZUNsYXNzTmFtZSBpbiBtb2R1bGUpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBtb2R1bGVbYmFzZUNsYXNzTmFtZV07XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2hvdWxkSWdub3JlKHZhbHVlKSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZS5zcGxpdChcIi1cIikubGVuZ3RoID09PSAxKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmICghcmFuZENsYXNzLnRlc3QodmFsdWUuc3BsaXQoXCIgXCIpWzBdKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcGF0Y2hDbGFzc01vZHVsZShjb21wb25lbnROYW1lLCBjbGFzc05hbWVzKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBiYXNlQ2xhc3NOYW1lIGluIGNsYXNzTmFtZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjbGFzc05hbWVzW2Jhc2VDbGFzc05hbWVdO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zaG91bGRJZ25vcmUodmFsdWUpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgY29uc3QgY2xhc3NMaXN0ID0gdmFsdWUuc3BsaXQoXCIgXCIpO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG5vcm1hbENsYXNzIG9mIGNsYXNzTGlzdCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBub3JtYWxDbGFzcy5tYXRjaChyYW5kQ2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFtYXRjaCB8fCAhbWF0Y2gubGVuZ3RoIHx8IG1hdGNoLmxlbmd0aCA8IDIpIGNvbnRpbnVlOyAvLyBTaG91bGRuJ3QgZXZlciBoYXBwZW4gc2luY2UgdGhleSBwYXNzZWQgdGhlIG1vZHVsZUZpbHRlciwgYnV0IHlvdSBuZXZlciBrbm93XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjYW1lbENhc2UgPSBtYXRjaFsxXS5zcGxpdChcIi1cIikubWFwKChzLCBpKSA9PiBpID8gc1swXS50b1VwcGVyQ2FzZSgpICsgcy5zbGljZSgxKSA6IHMpLmpvaW4oXCJcIik7XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWVzW2Jhc2VDbGFzc05hbWVdICs9IGAgJHtjb21wb25lbnROYW1lfS0ke2NhbWVsQ2FzZX1gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVucGF0Y2hDbGFzc01vZHVsZShjb21wb25lbnROYW1lLCBjbGFzc05hbWVzKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBiYXNlQ2xhc3NOYW1lIGluIGNsYXNzTmFtZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjbGFzc05hbWVzW2Jhc2VDbGFzc05hbWVdO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zaG91bGRJZ25vcmUodmFsdWUpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgbGV0IG5ld1N0cmluZyA9IFwiXCI7XHJcbiAgICAgICAgICAgIGNvbnN0IGNsYXNzTGlzdCA9IHZhbHVlLnNwbGl0KFwiIFwiKTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBub3JtYWxDbGFzcyBvZiBjbGFzc0xpc3QpIHtcclxuICAgICAgICAgICAgICAgIGlmIChub3JtYWxDbGFzcy5zdGFydHNXaXRoKGAke2NvbXBvbmVudE5hbWV9LWApKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIG5ld1N0cmluZyArPSBgICR7bm9ybWFsQ2xhc3N9YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjbGFzc05hbWVzW2Jhc2VDbGFzc05hbWVdID0gbmV3U3RyaW5nLnRyaW0oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbm9ybWFsaXplRWxlbWVudChlbGVtZW50KSB7XHJcbiAgICAgICAgaWYgKCEoZWxlbWVudCBpbnN0YW5jZW9mIEVsZW1lbnQpKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgY2xhc3NlcyA9IGVsZW1lbnQuY2xhc3NMaXN0O1xyXG4gICAgICAgIGZvciAobGV0IGMgPSAwLCBjbGVuID0gY2xhc3Nlcy5sZW5ndGg7IGMgPCBjbGVuOyBjKyspIHtcclxuICAgICAgICAgICAgaWYgKCFyYW5kQ2xhc3MudGVzdChjbGFzc2VzW2NdKSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gY2xhc3Nlc1tjXS5tYXRjaChyYW5kQ2xhc3MpWzFdO1xyXG4gICAgICAgICAgICBjb25zdCBuZXdDbGFzcyA9IG1hdGNoLnNwbGl0KFwiLVwiKS5tYXAoKHMsIGkpID0+IGkgPyBzWzBdLnRvVXBwZXJDYXNlKCkgKyBzLnNsaWNlKDEpIDogcykuam9pbihcIlwiKTtcclxuICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKGAke25vcm1hbGl6ZWRQcmVmaXh9LSR7bmV3Q2xhc3N9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgZWxlbWVudC5jaGlsZHJlbikgdGhpcy5ub3JtYWxpemVFbGVtZW50KGNoaWxkKTtcclxuICAgIH1cclxuXHJcbiAgICByZXZlcnRFbGVtZW50KGVsZW1lbnQpIHtcclxuICAgICAgICBpZiAoIShlbGVtZW50IGluc3RhbmNlb2YgRWxlbWVudCkpIHJldHVybjtcclxuICAgICAgICBpZiAoZWxlbWVudC5jaGlsZHJlbiAmJiBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCkgdGhpcy5yZXZlcnRFbGVtZW50KGVsZW1lbnQuY2hpbGRyZW5bMF0pO1xyXG4gICAgICAgIGlmIChlbGVtZW50Lm5leHRFbGVtZW50U2libGluZykgdGhpcy5yZXZlcnRFbGVtZW50KGVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nKTtcclxuICAgICAgICBjb25zdCBjbGFzc2VzID0gZWxlbWVudC5jbGFzc0xpc3Q7XHJcbiAgICAgICAgY29uc3QgdG9SZW1vdmUgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBjID0gMDsgYyA8IGNsYXNzZXMubGVuZ3RoOyBjKyspIHtcclxuICAgICAgICAgICAgaWYgKGNsYXNzZXNbY10uc3RhcnRzV2l0aChgJHtub3JtYWxpemVkUHJlZml4fS1gKSkgdG9SZW1vdmUucHVzaChjbGFzc2VzW2NdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKC4uLnRvUmVtb3ZlKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgcGF0Y2hET01NZXRob2RzKCkge1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5zID0gRE9NVG9rZW5MaXN0LnByb3RvdHlwZS5jb250YWlucztcclxuICAgICAgICBET01Ub2tlbkxpc3QucHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24odG9rZW4pIHtcclxuICAgICAgICAgICAgLy8gY29uc3QgdG9rZW5zID0gdG9rZW4uc3BsaXQoXCIgXCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5hcHBseShjb250YWlucywgdGhpcywgW3Rva2VuLnNwbGl0KFwiIFwiKVswXV0pO1xyXG4gICAgICAgICAgICAvLyByZXR1cm4gdG9rZW5zLmV2ZXJ5KHQgPT4gY29udGFpbnMuY2FsbCh0aGlzLCB0KSk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29uc3QgYWRkID0gRE9NVG9rZW5MaXN0LnByb3RvdHlwZS5hZGQ7XHJcbiAgICAgICAgRE9NVG9rZW5MaXN0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiguLi50b2tlbnMpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPCB0b2tlbnMubGVuZ3RoOyB0KyspIHtcclxuICAgICAgICAgICAgICAgIHRva2Vuc1t0XSA9IHRva2Vuc1t0XS5zcGxpdChcIiBcIilbMF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuYXBwbHkoYWRkLCB0aGlzLCB0b2tlbnMpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbnN0IHJlbW92ZSA9IERPTVRva2VuTGlzdC5wcm90b3R5cGUucmVtb3ZlO1xyXG4gICAgICAgIERPTVRva2VuTGlzdC5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24oLi4udG9rZW5zKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IHQgPSAwOyB0IDwgdG9rZW5zLmxlbmd0aDsgdCsrKSB7XHJcbiAgICAgICAgICAgICAgICB0b2tlbnNbdF0gPSB0b2tlbnNbdF0uc3BsaXQoXCIgXCIpWzBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmFwcGx5KHJlbW92ZSwgdGhpcywgdG9rZW5zKTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/general/classnormalizer.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\n\nconst normalizedPrefix = \"da\";\nconst randClass = new RegExp(`^(?!${normalizedPrefix}-)((?:[A-Za-z]|[0-9]|-)+)-(?:[A-Za-z]|[0-9]|-|_){6}$`);\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ClassNormalizer extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get id() {\n return \"classNormalizer\";\n }\n\n get category() {\n return \"general\";\n }\n\n get name() {\n return \"ClassNormalizer\";\n }\n\n enabled() {\n if (this.hasPatched) return;\n this.patchClassModules(_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModules(this.moduleFilter.bind(this)));\n this.normalizeElement(document.querySelector(\"#app-mount\"));\n this.hasPatched = true;\n this.patchDOMMethods();\n }\n\n disabled() {\n if (!this.hasPatched) return;\n this.unpatchClassModules(_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModules(this.moduleFilter.bind(this)));\n this.revertElement(document.querySelector(\"#app-mount\"));\n this.hasPatched = false;\n }\n\n patchClassModules(modules) {\n for (const module of modules) {\n this.patchClassModule(normalizedPrefix, module);\n }\n }\n\n unpatchClassModules(modules) {\n for (const module of modules) {\n this.unpatchClassModule(normalizedPrefix, module);\n }\n }\n\n shouldIgnore(value) {\n if (!isNaN(value)) return true;\n if (value.endsWith(\"px\") || value.endsWith(\"ch\") || value.endsWith(\"em\") || value.endsWith(\"ms\")) return true;\n if (value.startsWith(\"layerContainer-\")) return true;\n if (value.startsWith(\"#\") && (value.length == 7 || value.length == 4)) return true;\n if (value.includes(\"calc(\") || value.includes(\"rgba\")) return true;\n return false;\n }\n\n moduleFilter(module) {\n if (typeof module !== \"object\" || Array.isArray(module)) return false;\n if (module.__esModule) return false;\n if (!Object.keys(module).length) return false;\n\n for (const baseClassName in module) {\n const value = module[baseClassName];\n if (typeof value !== \"string\") return false;\n if (this.shouldIgnore(value)) continue;\n if (value.split(\"-\").length === 1) return false;\n if (!randClass.test(value.split(\" \")[0])) return false;\n }\n\n return true;\n }\n\n patchClassModule(componentName, classNames) {\n for (const baseClassName in classNames) {\n const value = classNames[baseClassName];\n if (this.shouldIgnore(value)) continue;\n const classList = value.split(\" \");\n\n for (const normalClass of classList) {\n const match = normalClass.match(randClass);\n if (!match || !match.length || match.length < 2) continue; // Shouldn't ever happen since they passed the moduleFilter, but you never know\n\n const camelCase = match[1].split(\"-\").map((s, i) => i ? s[0].toUpperCase() + s.slice(1) : s).join(\"\");\n classNames[baseClassName] += ` ${componentName}-${camelCase}`;\n }\n }\n }\n\n unpatchClassModule(componentName, classNames) {\n for (const baseClassName in classNames) {\n const value = classNames[baseClassName];\n if (this.shouldIgnore(value)) continue;\n let newString = \"\";\n const classList = value.split(\" \");\n\n for (const normalClass of classList) {\n if (normalClass.startsWith(`${componentName}-`)) continue;\n newString += ` ${normalClass}`;\n }\n\n classNames[baseClassName] = newString.trim();\n }\n }\n\n normalizeElement(element) {\n if (!(element instanceof Element)) return;\n const classes = element.classList;\n\n for (let c = 0, clen = classes.length; c < clen; c++) {\n if (!randClass.test(classes[c])) continue;\n const match = classes[c].match(randClass)[1];\n const newClass = match.split(\"-\").map((s, i) => i ? s[0].toUpperCase() + s.slice(1) : s).join(\"\");\n element.classList.add(`${normalizedPrefix}-${newClass}`);\n }\n\n for (const child of element.children) this.normalizeElement(child);\n }\n\n revertElement(element) {\n if (!(element instanceof Element)) return;\n if (element.children && element.children.length) this.revertElement(element.children[0]);\n if (element.nextElementSibling) this.revertElement(element.nextElementSibling);\n const classes = element.classList;\n const toRemove = [];\n\n for (let c = 0; c < classes.length; c++) {\n if (classes[c].startsWith(`${normalizedPrefix}-`)) toRemove.push(classes[c]);\n }\n\n element.classList.remove(...toRemove);\n }\n\n patchDOMMethods() {\n const contains = DOMTokenList.prototype.contains;\n\n DOMTokenList.prototype.contains = function (token) {\n // const tokens = token.split(\" \");\n return Reflect.apply(contains, this, [token.split(\" \")[0]]); // return tokens.every(t => contains.call(this, t));\n };\n\n const add = DOMTokenList.prototype.add;\n\n DOMTokenList.prototype.add = function (...tokens) {\n for (let t = 0; t < tokens.length; t++) {\n tokens[t] = tokens[t].split(\" \")[0];\n }\n\n return Reflect.apply(add, this, tokens);\n };\n\n const remove = DOMTokenList.prototype.remove;\n\n DOMTokenList.prototype.remove = function (...tokens) {\n for (let t = 0; t < tokens.length; t++) {\n tokens[t] = tokens[t].split(\" \")[0];\n }\n\n return Reflect.apply(remove, this, tokens);\n };\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZ2VuZXJhbC9jbGFzc25vcm1hbGl6ZXIuanM/MmRiNiJdLCJuYW1lcyI6WyJub3JtYWxpemVkUHJlZml4IiwicmFuZENsYXNzIiwiUmVnRXhwIiwiQ2xhc3NOb3JtYWxpemVyIiwiQnVpbHRpbiIsImlkIiwiY2F0ZWdvcnkiLCJuYW1lIiwiZW5hYmxlZCIsImhhc1BhdGNoZWQiLCJwYXRjaENsYXNzTW9kdWxlcyIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0TW9kdWxlcyIsIm1vZHVsZUZpbHRlciIsImJpbmQiLCJub3JtYWxpemVFbGVtZW50IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwicGF0Y2hET01NZXRob2RzIiwiZGlzYWJsZWQiLCJ1bnBhdGNoQ2xhc3NNb2R1bGVzIiwicmV2ZXJ0RWxlbWVudCIsIm1vZHVsZXMiLCJtb2R1bGUiLCJwYXRjaENsYXNzTW9kdWxlIiwidW5wYXRjaENsYXNzTW9kdWxlIiwic2hvdWxkSWdub3JlIiwidmFsdWUiLCJpc05hTiIsImVuZHNXaXRoIiwic3RhcnRzV2l0aCIsImxlbmd0aCIsImluY2x1ZGVzIiwiQXJyYXkiLCJpc0FycmF5IiwiX19lc01vZHVsZSIsIk9iamVjdCIsImtleXMiLCJiYXNlQ2xhc3NOYW1lIiwic3BsaXQiLCJ0ZXN0IiwiY29tcG9uZW50TmFtZSIsImNsYXNzTmFtZXMiLCJjbGFzc0xpc3QiLCJub3JtYWxDbGFzcyIsIm1hdGNoIiwiY2FtZWxDYXNlIiwibWFwIiwicyIsImkiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIiwiam9pbiIsIm5ld1N0cmluZyIsInRyaW0iLCJlbGVtZW50IiwiRWxlbWVudCIsImNsYXNzZXMiLCJjIiwiY2xlbiIsIm5ld0NsYXNzIiwiYWRkIiwiY2hpbGQiLCJjaGlsZHJlbiIsIm5leHRFbGVtZW50U2libGluZyIsInRvUmVtb3ZlIiwicHVzaCIsInJlbW92ZSIsImNvbnRhaW5zIiwiRE9NVG9rZW5MaXN0IiwicHJvdG90eXBlIiwidG9rZW4iLCJSZWZsZWN0IiwiYXBwbHkiLCJ0b2tlbnMiLCJ0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUEsTUFBTUEsZ0JBQWdCLEdBQUcsSUFBekI7QUFDQSxNQUFNQyxTQUFTLEdBQUcsSUFBSUMsTUFBSixDQUFZLE9BQU1GLGdCQUFpQixzREFBbkMsQ0FBbEI7QUFFZSxtRUFBSSxNQUFNRyxlQUFOLFNBQThCQyx3REFBOUIsQ0FBc0M7QUFDckQsTUFBSUMsRUFBSixHQUFTO0FBQUMsV0FBTyxpQkFBUDtBQUEwQjs7QUFDcEMsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxTQUFQO0FBQWtCOztBQUNsQyxNQUFJQyxJQUFKLEdBQVc7QUFBQyxXQUFPLGlCQUFQO0FBQTBCOztBQUV0Q0MsU0FBTyxHQUFHO0FBQ04sUUFBSSxLQUFLQyxVQUFULEVBQXFCO0FBQ3JCLFNBQUtDLGlCQUFMLENBQXVCQyxrRUFBYyxDQUFDQyxVQUFmLENBQTBCLEtBQUtDLFlBQUwsQ0FBa0JDLElBQWxCLENBQXVCLElBQXZCLENBQTFCLENBQXZCO0FBQ0EsU0FBS0MsZ0JBQUwsQ0FBc0JDLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixZQUF2QixDQUF0QjtBQUNBLFNBQUtSLFVBQUwsR0FBa0IsSUFBbEI7QUFDQSxTQUFLUyxlQUFMO0FBQ0g7O0FBRURDLFVBQVEsR0FBRztBQUNQLFFBQUksQ0FBQyxLQUFLVixVQUFWLEVBQXNCO0FBQ3RCLFNBQUtXLG1CQUFMLENBQXlCVCxrRUFBYyxDQUFDQyxVQUFmLENBQTBCLEtBQUtDLFlBQUwsQ0FBa0JDLElBQWxCLENBQXVCLElBQXZCLENBQTFCLENBQXpCO0FBQ0EsU0FBS08sYUFBTCxDQUFtQkwsUUFBUSxDQUFDQyxhQUFULENBQXVCLFlBQXZCLENBQW5CO0FBQ0EsU0FBS1IsVUFBTCxHQUFrQixLQUFsQjtBQUNIOztBQUVEQyxtQkFBaUIsQ0FBQ1ksT0FBRCxFQUFVO0FBQ3ZCLFNBQUssTUFBTUMsTUFBWCxJQUFxQkQsT0FBckIsRUFBOEI7QUFDMUIsV0FBS0UsZ0JBQUwsQ0FBc0J4QixnQkFBdEIsRUFBd0N1QixNQUF4QztBQUNIO0FBQ0o7O0FBRURILHFCQUFtQixDQUFDRSxPQUFELEVBQVU7QUFDekIsU0FBSyxNQUFNQyxNQUFYLElBQXFCRCxPQUFyQixFQUE4QjtBQUMxQixXQUFLRyxrQkFBTCxDQUF3QnpCLGdCQUF4QixFQUEwQ3VCLE1BQTFDO0FBQ0g7QUFDSjs7QUFFREcsY0FBWSxDQUFDQyxLQUFELEVBQVE7QUFDaEIsUUFBSSxDQUFDQyxLQUFLLENBQUNELEtBQUQsQ0FBVixFQUFtQixPQUFPLElBQVA7QUFDbkIsUUFBSUEsS0FBSyxDQUFDRSxRQUFOLENBQWUsSUFBZixLQUF3QkYsS0FBSyxDQUFDRSxRQUFOLENBQWUsSUFBZixDQUF4QixJQUFnREYsS0FBSyxDQUFDRSxRQUFOLENBQWUsSUFBZixDQUFoRCxJQUF3RUYsS0FBSyxDQUFDRSxRQUFOLENBQWUsSUFBZixDQUE1RSxFQUFrRyxPQUFPLElBQVA7QUFDbEcsUUFBSUYsS0FBSyxDQUFDRyxVQUFOLENBQWlCLGlCQUFqQixDQUFKLEVBQXlDLE9BQU8sSUFBUDtBQUN6QyxRQUFJSCxLQUFLLENBQUNHLFVBQU4sQ0FBaUIsR0FBakIsTUFBMEJILEtBQUssQ0FBQ0ksTUFBTixJQUFnQixDQUFoQixJQUFxQkosS0FBSyxDQUFDSSxNQUFOLElBQWdCLENBQS9ELENBQUosRUFBdUUsT0FBTyxJQUFQO0FBQ3ZFLFFBQUlKLEtBQUssQ0FBQ0ssUUFBTixDQUFlLE9BQWYsS0FBMkJMLEtBQUssQ0FBQ0ssUUFBTixDQUFlLE1BQWYsQ0FBL0IsRUFBdUQsT0FBTyxJQUFQO0FBQ3ZELFdBQU8sS0FBUDtBQUNIOztBQUVEbkIsY0FBWSxDQUFDVSxNQUFELEVBQVM7QUFDakIsUUFBSSxPQUFPQSxNQUFQLEtBQWtCLFFBQWxCLElBQThCVSxLQUFLLENBQUNDLE9BQU4sQ0FBY1gsTUFBZCxDQUFsQyxFQUF5RCxPQUFPLEtBQVA7QUFDekQsUUFBSUEsTUFBTSxDQUFDWSxVQUFYLEVBQXVCLE9BQU8sS0FBUDtBQUN2QixRQUFJLENBQUNDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZZCxNQUFaLEVBQW9CUSxNQUF6QixFQUFpQyxPQUFPLEtBQVA7O0FBQ2pDLFNBQUssTUFBTU8sYUFBWCxJQUE0QmYsTUFBNUIsRUFBb0M7QUFDaEMsWUFBTUksS0FBSyxHQUFHSixNQUFNLENBQUNlLGFBQUQsQ0FBcEI7QUFDQSxVQUFJLE9BQU9YLEtBQVAsS0FBaUIsUUFBckIsRUFBK0IsT0FBTyxLQUFQO0FBQy9CLFVBQUksS0FBS0QsWUFBTCxDQUFrQkMsS0FBbEIsQ0FBSixFQUE4QjtBQUM5QixVQUFJQSxLQUFLLENBQUNZLEtBQU4sQ0FBWSxHQUFaLEVBQWlCUixNQUFqQixLQUE0QixDQUFoQyxFQUFtQyxPQUFPLEtBQVA7QUFDbkMsVUFBSSxDQUFDOUIsU0FBUyxDQUFDdUMsSUFBVixDQUFlYixLQUFLLENBQUNZLEtBQU4sQ0FBWSxHQUFaLEVBQWlCLENBQWpCLENBQWYsQ0FBTCxFQUEwQyxPQUFPLEtBQVA7QUFDN0M7O0FBRUQsV0FBTyxJQUFQO0FBQ0g7O0FBRURmLGtCQUFnQixDQUFDaUIsYUFBRCxFQUFnQkMsVUFBaEIsRUFBNEI7QUFDeEMsU0FBSyxNQUFNSixhQUFYLElBQTRCSSxVQUE1QixFQUF3QztBQUNwQyxZQUFNZixLQUFLLEdBQUdlLFVBQVUsQ0FBQ0osYUFBRCxDQUF4QjtBQUNBLFVBQUksS0FBS1osWUFBTCxDQUFrQkMsS0FBbEIsQ0FBSixFQUE4QjtBQUM5QixZQUFNZ0IsU0FBUyxHQUFHaEIsS0FBSyxDQUFDWSxLQUFOLENBQVksR0FBWixDQUFsQjs7QUFDQSxXQUFLLE1BQU1LLFdBQVgsSUFBMEJELFNBQTFCLEVBQXFDO0FBQ2pDLGNBQU1FLEtBQUssR0FBR0QsV0FBVyxDQUFDQyxLQUFaLENBQWtCNUMsU0FBbEIsQ0FBZDtBQUNBLFlBQUksQ0FBQzRDLEtBQUQsSUFBVSxDQUFDQSxLQUFLLENBQUNkLE1BQWpCLElBQTJCYyxLQUFLLENBQUNkLE1BQU4sR0FBZSxDQUE5QyxFQUFpRCxTQUZoQixDQUUwQjs7QUFDM0QsY0FBTWUsU0FBUyxHQUFHRCxLQUFLLENBQUMsQ0FBRCxDQUFMLENBQVNOLEtBQVQsQ0FBZSxHQUFmLEVBQW9CUSxHQUFwQixDQUF3QixDQUFDQyxDQUFELEVBQUlDLENBQUosS0FBVUEsQ0FBQyxHQUFHRCxDQUFDLENBQUMsQ0FBRCxDQUFELENBQUtFLFdBQUwsS0FBcUJGLENBQUMsQ0FBQ0csS0FBRixDQUFRLENBQVIsQ0FBeEIsR0FBcUNILENBQXhFLEVBQTJFSSxJQUEzRSxDQUFnRixFQUFoRixDQUFsQjtBQUNBVixrQkFBVSxDQUFDSixhQUFELENBQVYsSUFBOEIsSUFBR0csYUFBYyxJQUFHSyxTQUFVLEVBQTVEO0FBQ0g7QUFDSjtBQUNKOztBQUVEckIsb0JBQWtCLENBQUNnQixhQUFELEVBQWdCQyxVQUFoQixFQUE0QjtBQUMxQyxTQUFLLE1BQU1KLGFBQVgsSUFBNEJJLFVBQTVCLEVBQXdDO0FBQ3BDLFlBQU1mLEtBQUssR0FBR2UsVUFBVSxDQUFDSixhQUFELENBQXhCO0FBQ0EsVUFBSSxLQUFLWixZQUFMLENBQWtCQyxLQUFsQixDQUFKLEVBQThCO0FBQzlCLFVBQUkwQixTQUFTLEdBQUcsRUFBaEI7QUFDQSxZQUFNVixTQUFTLEdBQUdoQixLQUFLLENBQUNZLEtBQU4sQ0FBWSxHQUFaLENBQWxCOztBQUNBLFdBQUssTUFBTUssV0FBWCxJQUEwQkQsU0FBMUIsRUFBcUM7QUFDakMsWUFBSUMsV0FBVyxDQUFDZCxVQUFaLENBQXdCLEdBQUVXLGFBQWMsR0FBeEMsQ0FBSixFQUFpRDtBQUNqRFksaUJBQVMsSUFBSyxJQUFHVCxXQUFZLEVBQTdCO0FBQ0g7O0FBQ0RGLGdCQUFVLENBQUNKLGFBQUQsQ0FBVixHQUE0QmUsU0FBUyxDQUFDQyxJQUFWLEVBQTVCO0FBQ0g7QUFDSjs7QUFFRHZDLGtCQUFnQixDQUFDd0MsT0FBRCxFQUFVO0FBQ3RCLFFBQUksRUFBRUEsT0FBTyxZQUFZQyxPQUFyQixDQUFKLEVBQW1DO0FBQ25DLFVBQU1DLE9BQU8sR0FBR0YsT0FBTyxDQUFDWixTQUF4Qjs7QUFDQSxTQUFLLElBQUllLENBQUMsR0FBRyxDQUFSLEVBQVdDLElBQUksR0FBR0YsT0FBTyxDQUFDMUIsTUFBL0IsRUFBdUMyQixDQUFDLEdBQUdDLElBQTNDLEVBQWlERCxDQUFDLEVBQWxELEVBQXNEO0FBQ2xELFVBQUksQ0FBQ3pELFNBQVMsQ0FBQ3VDLElBQVYsQ0FBZWlCLE9BQU8sQ0FBQ0MsQ0FBRCxDQUF0QixDQUFMLEVBQWlDO0FBQ2pDLFlBQU1iLEtBQUssR0FBR1ksT0FBTyxDQUFDQyxDQUFELENBQVAsQ0FBV2IsS0FBWCxDQUFpQjVDLFNBQWpCLEVBQTRCLENBQTVCLENBQWQ7QUFDQSxZQUFNMkQsUUFBUSxHQUFHZixLQUFLLENBQUNOLEtBQU4sQ0FBWSxHQUFaLEVBQWlCUSxHQUFqQixDQUFxQixDQUFDQyxDQUFELEVBQUlDLENBQUosS0FBVUEsQ0FBQyxHQUFHRCxDQUFDLENBQUMsQ0FBRCxDQUFELENBQUtFLFdBQUwsS0FBcUJGLENBQUMsQ0FBQ0csS0FBRixDQUFRLENBQVIsQ0FBeEIsR0FBcUNILENBQXJFLEVBQXdFSSxJQUF4RSxDQUE2RSxFQUE3RSxDQUFqQjtBQUNBRyxhQUFPLENBQUNaLFNBQVIsQ0FBa0JrQixHQUFsQixDQUF1QixHQUFFN0QsZ0JBQWlCLElBQUc0RCxRQUFTLEVBQXREO0FBQ0g7O0FBQ0QsU0FBSyxNQUFNRSxLQUFYLElBQW9CUCxPQUFPLENBQUNRLFFBQTVCLEVBQXNDLEtBQUtoRCxnQkFBTCxDQUFzQitDLEtBQXRCO0FBQ3pDOztBQUVEekMsZUFBYSxDQUFDa0MsT0FBRCxFQUFVO0FBQ25CLFFBQUksRUFBRUEsT0FBTyxZQUFZQyxPQUFyQixDQUFKLEVBQW1DO0FBQ25DLFFBQUlELE9BQU8sQ0FBQ1EsUUFBUixJQUFvQlIsT0FBTyxDQUFDUSxRQUFSLENBQWlCaEMsTUFBekMsRUFBaUQsS0FBS1YsYUFBTCxDQUFtQmtDLE9BQU8sQ0FBQ1EsUUFBUixDQUFpQixDQUFqQixDQUFuQjtBQUNqRCxRQUFJUixPQUFPLENBQUNTLGtCQUFaLEVBQWdDLEtBQUszQyxhQUFMLENBQW1Ca0MsT0FBTyxDQUFDUyxrQkFBM0I7QUFDaEMsVUFBTVAsT0FBTyxHQUFHRixPQUFPLENBQUNaLFNBQXhCO0FBQ0EsVUFBTXNCLFFBQVEsR0FBRyxFQUFqQjs7QUFDQSxTQUFLLElBQUlQLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdELE9BQU8sQ0FBQzFCLE1BQTVCLEVBQW9DMkIsQ0FBQyxFQUFyQyxFQUF5QztBQUNyQyxVQUFJRCxPQUFPLENBQUNDLENBQUQsQ0FBUCxDQUFXNUIsVUFBWCxDQUF1QixHQUFFOUIsZ0JBQWlCLEdBQTFDLENBQUosRUFBbURpRSxRQUFRLENBQUNDLElBQVQsQ0FBY1QsT0FBTyxDQUFDQyxDQUFELENBQXJCO0FBQ3REOztBQUNESCxXQUFPLENBQUNaLFNBQVIsQ0FBa0J3QixNQUFsQixDQUF5QixHQUFHRixRQUE1QjtBQUNIOztBQUVEL0MsaUJBQWUsR0FBRztBQUNkLFVBQU1rRCxRQUFRLEdBQUdDLFlBQVksQ0FBQ0MsU0FBYixDQUF1QkYsUUFBeEM7O0FBQ0FDLGdCQUFZLENBQUNDLFNBQWIsQ0FBdUJGLFFBQXZCLEdBQWtDLFVBQVNHLEtBQVQsRUFBZ0I7QUFDOUM7QUFDQSxhQUFPQyxPQUFPLENBQUNDLEtBQVIsQ0FBY0wsUUFBZCxFQUF3QixJQUF4QixFQUE4QixDQUFDRyxLQUFLLENBQUNoQyxLQUFOLENBQVksR0FBWixFQUFpQixDQUFqQixDQUFELENBQTlCLENBQVAsQ0FGOEMsQ0FHOUM7QUFDSCxLQUpEOztBQU1BLFVBQU1zQixHQUFHLEdBQUdRLFlBQVksQ0FBQ0MsU0FBYixDQUF1QlQsR0FBbkM7O0FBQ0FRLGdCQUFZLENBQUNDLFNBQWIsQ0FBdUJULEdBQXZCLEdBQTZCLFVBQVMsR0FBR2EsTUFBWixFQUFvQjtBQUM3QyxXQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdELE1BQU0sQ0FBQzNDLE1BQTNCLEVBQW1DNEMsQ0FBQyxFQUFwQyxFQUF3QztBQUNwQ0QsY0FBTSxDQUFDQyxDQUFELENBQU4sR0FBWUQsTUFBTSxDQUFDQyxDQUFELENBQU4sQ0FBVXBDLEtBQVYsQ0FBZ0IsR0FBaEIsRUFBcUIsQ0FBckIsQ0FBWjtBQUNIOztBQUNELGFBQU9pQyxPQUFPLENBQUNDLEtBQVIsQ0FBY1osR0FBZCxFQUFtQixJQUFuQixFQUF5QmEsTUFBekIsQ0FBUDtBQUNILEtBTEQ7O0FBT0EsVUFBTVAsTUFBTSxHQUFHRSxZQUFZLENBQUNDLFNBQWIsQ0FBdUJILE1BQXRDOztBQUNBRSxnQkFBWSxDQUFDQyxTQUFiLENBQXVCSCxNQUF2QixHQUFnQyxVQUFTLEdBQUdPLE1BQVosRUFBb0I7QUFDaEQsV0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRCxNQUFNLENBQUMzQyxNQUEzQixFQUFtQzRDLENBQUMsRUFBcEMsRUFBd0M7QUFDcENELGNBQU0sQ0FBQ0MsQ0FBRCxDQUFOLEdBQVlELE1BQU0sQ0FBQ0MsQ0FBRCxDQUFOLENBQVVwQyxLQUFWLENBQWdCLEdBQWhCLEVBQXFCLENBQXJCLENBQVo7QUFDSDs7QUFDRCxhQUFPaUMsT0FBTyxDQUFDQyxLQUFSLENBQWNOLE1BQWQsRUFBc0IsSUFBdEIsRUFBNEJPLE1BQTVCLENBQVA7QUFDSCxLQUxEO0FBTUg7O0FBbklvRCxDQUExQyxFQUFmIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2dlbmVyYWwvY2xhc3Nub3JtYWxpemVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1aWx0aW4gZnJvbSBcIi4uLy4uL3N0cnVjdHMvYnVpbHRpblwiO1xyXG5pbXBvcnQge1dlYnBhY2tNb2R1bGVzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuY29uc3Qgbm9ybWFsaXplZFByZWZpeCA9IFwiZGFcIjtcclxuY29uc3QgcmFuZENsYXNzID0gbmV3IFJlZ0V4cChgXig/ISR7bm9ybWFsaXplZFByZWZpeH0tKSgoPzpbQS1aYS16XXxbMC05XXwtKSspLSg/OltBLVphLXpdfFswLTldfC18Xyl7Nn0kYCk7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgQ2xhc3NOb3JtYWxpemVyIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgaWQoKSB7cmV0dXJuIFwiY2xhc3NOb3JtYWxpemVyXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImdlbmVyYWxcIjt9XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJDbGFzc05vcm1hbGl6ZXJcIjt9XHJcblxyXG4gICAgZW5hYmxlZCgpIHtcclxuICAgICAgICBpZiAodGhpcy5oYXNQYXRjaGVkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5wYXRjaENsYXNzTW9kdWxlcyhXZWJwYWNrTW9kdWxlcy5nZXRNb2R1bGVzKHRoaXMubW9kdWxlRmlsdGVyLmJpbmQodGhpcykpKTtcclxuICAgICAgICB0aGlzLm5vcm1hbGl6ZUVsZW1lbnQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhcHAtbW91bnRcIikpO1xyXG4gICAgICAgIHRoaXMuaGFzUGF0Y2hlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wYXRjaERPTU1ldGhvZHMoKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlZCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaGFzUGF0Y2hlZCkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMudW5wYXRjaENsYXNzTW9kdWxlcyhXZWJwYWNrTW9kdWxlcy5nZXRNb2R1bGVzKHRoaXMubW9kdWxlRmlsdGVyLmJpbmQodGhpcykpKTtcclxuICAgICAgICB0aGlzLnJldmVydEVsZW1lbnQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhcHAtbW91bnRcIikpO1xyXG4gICAgICAgIHRoaXMuaGFzUGF0Y2hlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHBhdGNoQ2xhc3NNb2R1bGVzKG1vZHVsZXMpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGF0Y2hDbGFzc01vZHVsZShub3JtYWxpemVkUHJlZml4LCBtb2R1bGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1bnBhdGNoQ2xhc3NNb2R1bGVzKG1vZHVsZXMpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMudW5wYXRjaENsYXNzTW9kdWxlKG5vcm1hbGl6ZWRQcmVmaXgsIG1vZHVsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNob3VsZElnbm9yZSh2YWx1ZSkge1xyXG4gICAgICAgIGlmICghaXNOYU4odmFsdWUpKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpZiAodmFsdWUuZW5kc1dpdGgoXCJweFwiKSB8fCB2YWx1ZS5lbmRzV2l0aChcImNoXCIpIHx8IHZhbHVlLmVuZHNXaXRoKFwiZW1cIikgfHwgdmFsdWUuZW5kc1dpdGgoXCJtc1wiKSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoXCJsYXllckNvbnRhaW5lci1cIikpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKFwiI1wiKSAmJiAodmFsdWUubGVuZ3RoID09IDcgfHwgdmFsdWUubGVuZ3RoID09IDQpKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpZiAodmFsdWUuaW5jbHVkZXMoXCJjYWxjKFwiKSB8fCB2YWx1ZS5pbmNsdWRlcyhcInJnYmFcIikpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBtb2R1bGVGaWx0ZXIobW9kdWxlKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBtb2R1bGUgIT09IFwib2JqZWN0XCIgfHwgQXJyYXkuaXNBcnJheShtb2R1bGUpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKG1vZHVsZS5fX2VzTW9kdWxlKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhtb2R1bGUpLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGZvciAoY29uc3QgYmFzZUNsYXNzTmFtZSBpbiBtb2R1bGUpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBtb2R1bGVbYmFzZUNsYXNzTmFtZV07XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2hvdWxkSWdub3JlKHZhbHVlKSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZS5zcGxpdChcIi1cIikubGVuZ3RoID09PSAxKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmICghcmFuZENsYXNzLnRlc3QodmFsdWUuc3BsaXQoXCIgXCIpWzBdKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcGF0Y2hDbGFzc01vZHVsZShjb21wb25lbnROYW1lLCBjbGFzc05hbWVzKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBiYXNlQ2xhc3NOYW1lIGluIGNsYXNzTmFtZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjbGFzc05hbWVzW2Jhc2VDbGFzc05hbWVdO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zaG91bGRJZ25vcmUodmFsdWUpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgY29uc3QgY2xhc3NMaXN0ID0gdmFsdWUuc3BsaXQoXCIgXCIpO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG5vcm1hbENsYXNzIG9mIGNsYXNzTGlzdCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBub3JtYWxDbGFzcy5tYXRjaChyYW5kQ2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFtYXRjaCB8fCAhbWF0Y2gubGVuZ3RoIHx8IG1hdGNoLmxlbmd0aCA8IDIpIGNvbnRpbnVlOyAvLyBTaG91bGRuJ3QgZXZlciBoYXBwZW4gc2luY2UgdGhleSBwYXNzZWQgdGhlIG1vZHVsZUZpbHRlciwgYnV0IHlvdSBuZXZlciBrbm93XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjYW1lbENhc2UgPSBtYXRjaFsxXS5zcGxpdChcIi1cIikubWFwKChzLCBpKSA9PiBpID8gc1swXS50b1VwcGVyQ2FzZSgpICsgcy5zbGljZSgxKSA6IHMpLmpvaW4oXCJcIik7XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWVzW2Jhc2VDbGFzc05hbWVdICs9IGAgJHtjb21wb25lbnROYW1lfS0ke2NhbWVsQ2FzZX1gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVucGF0Y2hDbGFzc01vZHVsZShjb21wb25lbnROYW1lLCBjbGFzc05hbWVzKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBiYXNlQ2xhc3NOYW1lIGluIGNsYXNzTmFtZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjbGFzc05hbWVzW2Jhc2VDbGFzc05hbWVdO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zaG91bGRJZ25vcmUodmFsdWUpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgbGV0IG5ld1N0cmluZyA9IFwiXCI7XHJcbiAgICAgICAgICAgIGNvbnN0IGNsYXNzTGlzdCA9IHZhbHVlLnNwbGl0KFwiIFwiKTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBub3JtYWxDbGFzcyBvZiBjbGFzc0xpc3QpIHtcclxuICAgICAgICAgICAgICAgIGlmIChub3JtYWxDbGFzcy5zdGFydHNXaXRoKGAke2NvbXBvbmVudE5hbWV9LWApKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIG5ld1N0cmluZyArPSBgICR7bm9ybWFsQ2xhc3N9YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjbGFzc05hbWVzW2Jhc2VDbGFzc05hbWVdID0gbmV3U3RyaW5nLnRyaW0oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbm9ybWFsaXplRWxlbWVudChlbGVtZW50KSB7XHJcbiAgICAgICAgaWYgKCEoZWxlbWVudCBpbnN0YW5jZW9mIEVsZW1lbnQpKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgY2xhc3NlcyA9IGVsZW1lbnQuY2xhc3NMaXN0O1xyXG4gICAgICAgIGZvciAobGV0IGMgPSAwLCBjbGVuID0gY2xhc3Nlcy5sZW5ndGg7IGMgPCBjbGVuOyBjKyspIHtcclxuICAgICAgICAgICAgaWYgKCFyYW5kQ2xhc3MudGVzdChjbGFzc2VzW2NdKSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gY2xhc3Nlc1tjXS5tYXRjaChyYW5kQ2xhc3MpWzFdO1xyXG4gICAgICAgICAgICBjb25zdCBuZXdDbGFzcyA9IG1hdGNoLnNwbGl0KFwiLVwiKS5tYXAoKHMsIGkpID0+IGkgPyBzWzBdLnRvVXBwZXJDYXNlKCkgKyBzLnNsaWNlKDEpIDogcykuam9pbihcIlwiKTtcclxuICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKGAke25vcm1hbGl6ZWRQcmVmaXh9LSR7bmV3Q2xhc3N9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgZWxlbWVudC5jaGlsZHJlbikgdGhpcy5ub3JtYWxpemVFbGVtZW50KGNoaWxkKTtcclxuICAgIH1cclxuXHJcbiAgICByZXZlcnRFbGVtZW50KGVsZW1lbnQpIHtcclxuICAgICAgICBpZiAoIShlbGVtZW50IGluc3RhbmNlb2YgRWxlbWVudCkpIHJldHVybjtcclxuICAgICAgICBpZiAoZWxlbWVudC5jaGlsZHJlbiAmJiBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCkgdGhpcy5yZXZlcnRFbGVtZW50KGVsZW1lbnQuY2hpbGRyZW5bMF0pO1xyXG4gICAgICAgIGlmIChlbGVtZW50Lm5leHRFbGVtZW50U2libGluZykgdGhpcy5yZXZlcnRFbGVtZW50KGVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nKTtcclxuICAgICAgICBjb25zdCBjbGFzc2VzID0gZWxlbWVudC5jbGFzc0xpc3Q7XHJcbiAgICAgICAgY29uc3QgdG9SZW1vdmUgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBjID0gMDsgYyA8IGNsYXNzZXMubGVuZ3RoOyBjKyspIHtcclxuICAgICAgICAgICAgaWYgKGNsYXNzZXNbY10uc3RhcnRzV2l0aChgJHtub3JtYWxpemVkUHJlZml4fS1gKSkgdG9SZW1vdmUucHVzaChjbGFzc2VzW2NdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKC4uLnRvUmVtb3ZlKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgcGF0Y2hET01NZXRob2RzKCkge1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5zID0gRE9NVG9rZW5MaXN0LnByb3RvdHlwZS5jb250YWlucztcclxuICAgICAgICBET01Ub2tlbkxpc3QucHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24odG9rZW4pIHtcclxuICAgICAgICAgICAgLy8gY29uc3QgdG9rZW5zID0gdG9rZW4uc3BsaXQoXCIgXCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5hcHBseShjb250YWlucywgdGhpcywgW3Rva2VuLnNwbGl0KFwiIFwiKVswXV0pO1xyXG4gICAgICAgICAgICAvLyByZXR1cm4gdG9rZW5zLmV2ZXJ5KHQgPT4gY29udGFpbnMuY2FsbCh0aGlzLCB0KSk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29uc3QgYWRkID0gRE9NVG9rZW5MaXN0LnByb3RvdHlwZS5hZGQ7XHJcbiAgICAgICAgRE9NVG9rZW5MaXN0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiguLi50b2tlbnMpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPCB0b2tlbnMubGVuZ3RoOyB0KyspIHtcclxuICAgICAgICAgICAgICAgIHRva2Vuc1t0XSA9IHRva2Vuc1t0XS5zcGxpdChcIiBcIilbMF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuYXBwbHkoYWRkLCB0aGlzLCB0b2tlbnMpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbnN0IHJlbW92ZSA9IERPTVRva2VuTGlzdC5wcm90b3R5cGUucmVtb3ZlO1xyXG4gICAgICAgIERPTVRva2VuTGlzdC5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24oLi4udG9rZW5zKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IHQgPSAwOyB0IDwgdG9rZW5zLmxlbmd0aDsgdCsrKSB7XHJcbiAgICAgICAgICAgICAgICB0b2tlbnNbdF0gPSB0b2tlbnNbdF0uc3BsaXQoXCIgXCIpWzBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmFwcGx5KHJlbW92ZSwgdGhpcywgdG9rZW5zKTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/general/classnormalizer.js\n"); /***/ }), @@ -250,7 +250,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _ui_publicservers_menu__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../ui/publicservers/menu */ \"./src/ui/publicservers/menu.js\");\n\n\n\nconst LayerStack = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"pushLayer\");\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class PublicServers extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"PublicServers\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"publicServers\";\n }\n\n enabled() {\n const GuildList = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].find(m => m.default && m.default.displayName == \"NavigableGuilds\");\n const GuildListOld = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].findByDisplayName(\"Guilds\");\n if (!GuildList && !GuildListOld) this.warn(\"Can't find GuildList component\");\n this.guildPatch = this.after(GuildList ? GuildList : GuildListOld.prototype, GuildList ? \"default\" : \"render\", this._appendButton);\n\n this._appendButton();\n }\n\n disabled() {\n this.unpatchAll();\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].query(\"#bd-pub-li\").remove();\n }\n\n _appendButton() {\n const wrapper = modules__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].GuildClasses.wrapper.split(\" \")[0];\n const guilds = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].query(`.${wrapper} .scroller-2TZvBN >:first-child`);\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].after(guilds, this.button);\n }\n\n openPublicServers() {\n LayerStack.pushLayer(() => modules__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].React.createElement(_ui_publicservers_menu__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n close: LayerStack.popLayer\n }));\n }\n\n get button() {\n const btn = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n const label = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].PublicServers.button}
`);\n label.addEventListener(\"click\", () => {\n this.openPublicServers();\n });\n btn.append(label);\n return btn;\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZ2VuZXJhbC9wdWJsaWNzZXJ2ZXJzLmpzPzhiN2UiXSwibmFtZXMiOlsiTGF5ZXJTdGFjayIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlQcm9wcyIsIlB1YmxpY1NlcnZlcnMiLCJCdWlsdGluIiwibmFtZSIsImNhdGVnb3J5IiwiaWQiLCJlbmFibGVkIiwiR3VpbGRMaXN0IiwiZmluZCIsIm0iLCJkZWZhdWx0IiwiZGlzcGxheU5hbWUiLCJHdWlsZExpc3RPbGQiLCJmaW5kQnlEaXNwbGF5TmFtZSIsIndhcm4iLCJndWlsZFBhdGNoIiwiYWZ0ZXIiLCJwcm90b3R5cGUiLCJfYXBwZW5kQnV0dG9uIiwiZGlzYWJsZWQiLCJ1bnBhdGNoQWxsIiwiRE9NIiwicXVlcnkiLCJyZW1vdmUiLCJ3cmFwcGVyIiwiRGlzY29yZE1vZHVsZXMiLCJHdWlsZENsYXNzZXMiLCJzcGxpdCIsImd1aWxkcyIsImJ1dHRvbiIsIm9wZW5QdWJsaWNTZXJ2ZXJzIiwicHVzaExheWVyIiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiUHVibGljU2VydmVyc01lbnUiLCJjbG9zZSIsInBvcExheWVyIiwiYnRuIiwibGlzdEl0ZW0iLCJsYWJlbCIsImNpcmNsZUJ1dHRvbk1hc2siLCJTdHJpbmdzIiwiYWRkRXZlbnRMaXN0ZW5lciIsImFwcGVuZCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQSxNQUFNQSxVQUFVLEdBQUdDLHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIsV0FBMUIsQ0FBbkI7QUFFZSxtRUFBSSxNQUFNQyxhQUFOLFNBQTRCQyx3REFBNUIsQ0FBb0M7QUFDbkQsTUFBSUMsSUFBSixHQUFXO0FBQUMsV0FBTyxlQUFQO0FBQXdCOztBQUNwQyxNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPLFNBQVA7QUFBa0I7O0FBQ2xDLE1BQUlDLEVBQUosR0FBUztBQUFDLFdBQU8sZUFBUDtBQUF3Qjs7QUFFbENDLFNBQU8sR0FBRztBQUNOLFVBQU1DLFNBQVMsR0FBR1Isc0RBQWMsQ0FBQ1MsSUFBZixDQUFvQkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLE9BQUYsSUFBYUQsQ0FBQyxDQUFDQyxPQUFGLENBQVVDLFdBQVYsSUFBeUIsaUJBQS9ELENBQWxCO0FBQ0EsVUFBTUMsWUFBWSxHQUFHYixzREFBYyxDQUFDYyxpQkFBZixDQUFpQyxRQUFqQyxDQUFyQjtBQUNBLFFBQUksQ0FBQ04sU0FBRCxJQUFjLENBQUNLLFlBQW5CLEVBQWlDLEtBQUtFLElBQUwsQ0FBVSxnQ0FBVjtBQUNqQyxTQUFLQyxVQUFMLEdBQWtCLEtBQUtDLEtBQUwsQ0FBV1QsU0FBUyxHQUFHQSxTQUFILEdBQWVLLFlBQVksQ0FBQ0ssU0FBaEQsRUFBMkRWLFNBQVMsR0FBRyxTQUFILEdBQWUsUUFBbkYsRUFBNkYsS0FBS1csYUFBbEcsQ0FBbEI7O0FBQ0EsU0FBS0EsYUFBTDtBQUNIOztBQUVEQyxVQUFRLEdBQUc7QUFDUCxTQUFLQyxVQUFMO0FBQ0FDLCtDQUFHLENBQUNDLEtBQUosQ0FBVSxZQUFWLEVBQXdCQyxNQUF4QjtBQUNIOztBQUVETCxlQUFhLEdBQUc7QUFDWixVQUFNTSxPQUFPLEdBQUdDLHNEQUFjLENBQUNDLFlBQWYsQ0FBNEJGLE9BQTVCLENBQW9DRyxLQUFwQyxDQUEwQyxHQUExQyxFQUErQyxDQUEvQyxDQUFoQjtBQUNBLFVBQU1DLE1BQU0sR0FBR1AsMkNBQUcsQ0FBQ0MsS0FBSixDQUFXLElBQUdFLE9BQVEsaUNBQXRCLENBQWY7QUFDQUgsK0NBQUcsQ0FBQ0wsS0FBSixDQUFVWSxNQUFWLEVBQWtCLEtBQUtDLE1BQXZCO0FBQ0g7O0FBRURDLG1CQUFpQixHQUFHO0FBQ2hCaEMsY0FBVSxDQUFDaUMsU0FBWCxDQUFxQixNQUFNTixzREFBYyxDQUFDTyxLQUFmLENBQXFCQyxhQUFyQixDQUFtQ0MsOERBQW5DLEVBQXNEO0FBQUNDLFdBQUssRUFBRXJDLFVBQVUsQ0FBQ3NDO0FBQW5CLEtBQXRELENBQTNCO0FBQ0g7O0FBRUQsTUFBSVAsTUFBSixHQUFhO0FBQ1QsVUFBTVEsR0FBRyxHQUFHaEIsMkNBQUcsQ0FBQ1ksYUFBSixDQUFtQiw4QkFBNkJSLHNEQUFjLENBQUNDLFlBQWYsQ0FBNEJZLFFBQVMsSUFBckYsQ0FBWjtBQUNBLFVBQU1DLEtBQUssR0FBR2xCLDJDQUFHLENBQUNZLGFBQUosQ0FBbUIsa0NBQWlDLG9CQUFvQlIsc0RBQWMsQ0FBQ0MsWUFBZixDQUE0QmMsZ0JBQWlCLEtBQUlDLCtDQUFPLENBQUN4QyxhQUFSLENBQXNCNEIsTUFBTyxRQUF0SixDQUFkO0FBQ0FVLFNBQUssQ0FBQ0csZ0JBQU4sQ0FBdUIsT0FBdkIsRUFBZ0MsTUFBTTtBQUFDLFdBQUtaLGlCQUFMO0FBQTBCLEtBQWpFO0FBQ0FPLE9BQUcsQ0FBQ00sTUFBSixDQUFXSixLQUFYO0FBQ0EsV0FBT0YsR0FBUDtBQUNIOztBQWxDa0QsQ0FBeEMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9nZW5lcmFsL3B1YmxpY3NlcnZlcnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9idWlsdGluXCI7XHJcbmltcG9ydCB7RGlzY29yZE1vZHVsZXMsIFdlYnBhY2tNb2R1bGVzLCBTdHJpbmdzLCBET019IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBQdWJsaWNTZXJ2ZXJzTWVudSBmcm9tIFwiLi4vLi4vdWkvcHVibGljc2VydmVycy9tZW51XCI7XHJcblxyXG5jb25zdCBMYXllclN0YWNrID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInB1c2hMYXllclwiKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBQdWJsaWNTZXJ2ZXJzIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJQdWJsaWNTZXJ2ZXJzXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImdlbmVyYWxcIjt9XHJcbiAgICBnZXQgaWQoKSB7cmV0dXJuIFwicHVibGljU2VydmVyc1wiO31cclxuXHJcbiAgICBlbmFibGVkKCkge1xyXG4gICAgICAgIGNvbnN0IEd1aWxkTGlzdCA9IFdlYnBhY2tNb2R1bGVzLmZpbmQobSA9PiBtLmRlZmF1bHQgJiYgbS5kZWZhdWx0LmRpc3BsYXlOYW1lID09IFwiTmF2aWdhYmxlR3VpbGRzXCIpO1xyXG4gICAgICAgIGNvbnN0IEd1aWxkTGlzdE9sZCA9IFdlYnBhY2tNb2R1bGVzLmZpbmRCeURpc3BsYXlOYW1lKFwiR3VpbGRzXCIpO1xyXG4gICAgICAgIGlmICghR3VpbGRMaXN0ICYmICFHdWlsZExpc3RPbGQpIHRoaXMud2FybihcIkNhbid0IGZpbmQgR3VpbGRMaXN0IGNvbXBvbmVudFwiKTtcclxuICAgICAgICB0aGlzLmd1aWxkUGF0Y2ggPSB0aGlzLmFmdGVyKEd1aWxkTGlzdCA/IEd1aWxkTGlzdCA6IEd1aWxkTGlzdE9sZC5wcm90b3R5cGUsIEd1aWxkTGlzdCA/IFwiZGVmYXVsdFwiIDogXCJyZW5kZXJcIiwgdGhpcy5fYXBwZW5kQnV0dG9uKTtcclxuICAgICAgICB0aGlzLl9hcHBlbmRCdXR0b24oKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlZCgpIHtcclxuICAgICAgICB0aGlzLnVucGF0Y2hBbGwoKTtcclxuICAgICAgICBET00ucXVlcnkoXCIjYmQtcHViLWxpXCIpLnJlbW92ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIF9hcHBlbmRCdXR0b24oKSB7XHJcbiAgICAgICAgY29uc3Qgd3JhcHBlciA9IERpc2NvcmRNb2R1bGVzLkd1aWxkQ2xhc3Nlcy53cmFwcGVyLnNwbGl0KFwiIFwiKVswXTtcclxuICAgICAgICBjb25zdCBndWlsZHMgPSBET00ucXVlcnkoYC4ke3dyYXBwZXJ9IC5zY3JvbGxlci0yVFp2Qk4gPjpmaXJzdC1jaGlsZGApO1xyXG4gICAgICAgIERPTS5hZnRlcihndWlsZHMsIHRoaXMuYnV0dG9uKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuUHVibGljU2VydmVycygpIHtcclxuICAgICAgICBMYXllclN0YWNrLnB1c2hMYXllcigoKSA9PiBEaXNjb3JkTW9kdWxlcy5SZWFjdC5jcmVhdGVFbGVtZW50KFB1YmxpY1NlcnZlcnNNZW51LCB7Y2xvc2U6IExheWVyU3RhY2sucG9wTGF5ZXJ9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGJ1dHRvbigpIHtcclxuICAgICAgICBjb25zdCBidG4gPSBET00uY3JlYXRlRWxlbWVudChgPGRpdiBpZD1cImJkLXB1Yi1saVwiIGNsYXNzPVwiJHtEaXNjb3JkTW9kdWxlcy5HdWlsZENsYXNzZXMubGlzdEl0ZW19XCI+YCk7XHJcbiAgICAgICAgY29uc3QgbGFiZWwgPSBET00uY3JlYXRlRWxlbWVudChgPGRpdiBpZD1cImJkLXB1Yi1idXR0b25cIiBjbGFzcz1cIiR7XCJ3cmFwcGVyLTI1ZVZJbiBcIiArIERpc2NvcmRNb2R1bGVzLkd1aWxkQ2xhc3Nlcy5jaXJjbGVCdXR0b25NYXNrfVwiPiR7U3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmJ1dHRvbn08L2Rpdj5gKTtcclxuICAgICAgICBsYWJlbC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge3RoaXMub3BlblB1YmxpY1NlcnZlcnMoKTt9KTtcclxuICAgICAgICBidG4uYXBwZW5kKGxhYmVsKTtcclxuICAgICAgICByZXR1cm4gYnRuO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/general/publicservers.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _ui_publicservers_menu__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../ui/publicservers/menu */ \"./src/ui/publicservers/menu.js\");\n\n\n\nconst LayerStack = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"pushLayer\");\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class PublicServers extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"PublicServers\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"publicServers\";\n }\n\n enabled() {\n const GuildList = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].find(m => m.default && m.default.displayName == \"NavigableGuilds\");\n const GuildListOld = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].findByDisplayName(\"Guilds\");\n if (!GuildList && !GuildListOld) this.warn(\"Can't find GuildList component\");\n this.guildPatch = this.after(GuildList ? GuildList : GuildListOld.prototype, GuildList ? \"default\" : \"render\", this._appendButton);\n\n this._appendButton();\n }\n\n disabled() {\n this.unpatchAll();\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].query(\"#bd-pub-li\").remove();\n }\n\n _appendButton() {\n const wrapper = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].GuildClasses.wrapper.split(\" \")[0];\n const guilds = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].query(`.${wrapper} .scroller-2TZvBN >:first-child`);\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].after(guilds, this.button);\n }\n\n openPublicServers() {\n LayerStack.pushLayer(() => _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].React.createElement(_ui_publicservers_menu__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n close: LayerStack.popLayer\n }));\n }\n\n get button() {\n const btn = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n const label = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
${_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].PublicServers.button}
`);\n label.addEventListener(\"click\", () => {\n this.openPublicServers();\n });\n btn.append(label);\n return btn;\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZ2VuZXJhbC9wdWJsaWNzZXJ2ZXJzLmpzPzhiN2UiXSwibmFtZXMiOlsiTGF5ZXJTdGFjayIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlQcm9wcyIsIlB1YmxpY1NlcnZlcnMiLCJCdWlsdGluIiwibmFtZSIsImNhdGVnb3J5IiwiaWQiLCJlbmFibGVkIiwiR3VpbGRMaXN0IiwiZmluZCIsIm0iLCJkZWZhdWx0IiwiZGlzcGxheU5hbWUiLCJHdWlsZExpc3RPbGQiLCJmaW5kQnlEaXNwbGF5TmFtZSIsIndhcm4iLCJndWlsZFBhdGNoIiwiYWZ0ZXIiLCJwcm90b3R5cGUiLCJfYXBwZW5kQnV0dG9uIiwiZGlzYWJsZWQiLCJ1bnBhdGNoQWxsIiwiRE9NIiwicXVlcnkiLCJyZW1vdmUiLCJ3cmFwcGVyIiwiRGlzY29yZE1vZHVsZXMiLCJHdWlsZENsYXNzZXMiLCJzcGxpdCIsImd1aWxkcyIsImJ1dHRvbiIsIm9wZW5QdWJsaWNTZXJ2ZXJzIiwicHVzaExheWVyIiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiUHVibGljU2VydmVyc01lbnUiLCJjbG9zZSIsInBvcExheWVyIiwiYnRuIiwibGlzdEl0ZW0iLCJsYWJlbCIsImNpcmNsZUJ1dHRvbk1hc2siLCJTdHJpbmdzIiwiYWRkRXZlbnRMaXN0ZW5lciIsImFwcGVuZCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQSxNQUFNQSxVQUFVLEdBQUdDLGtFQUFjLENBQUNDLFVBQWYsQ0FBMEIsV0FBMUIsQ0FBbkI7QUFFZSxtRUFBSSxNQUFNQyxhQUFOLFNBQTRCQyx3REFBNUIsQ0FBb0M7QUFDbkQsTUFBSUMsSUFBSixHQUFXO0FBQUMsV0FBTyxlQUFQO0FBQXdCOztBQUNwQyxNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPLFNBQVA7QUFBa0I7O0FBQ2xDLE1BQUlDLEVBQUosR0FBUztBQUFDLFdBQU8sZUFBUDtBQUF3Qjs7QUFFbENDLFNBQU8sR0FBRztBQUNOLFVBQU1DLFNBQVMsR0FBR1Isa0VBQWMsQ0FBQ1MsSUFBZixDQUFvQkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLE9BQUYsSUFBYUQsQ0FBQyxDQUFDQyxPQUFGLENBQVVDLFdBQVYsSUFBeUIsaUJBQS9ELENBQWxCO0FBQ0EsVUFBTUMsWUFBWSxHQUFHYixrRUFBYyxDQUFDYyxpQkFBZixDQUFpQyxRQUFqQyxDQUFyQjtBQUNBLFFBQUksQ0FBQ04sU0FBRCxJQUFjLENBQUNLLFlBQW5CLEVBQWlDLEtBQUtFLElBQUwsQ0FBVSxnQ0FBVjtBQUNqQyxTQUFLQyxVQUFMLEdBQWtCLEtBQUtDLEtBQUwsQ0FBV1QsU0FBUyxHQUFHQSxTQUFILEdBQWVLLFlBQVksQ0FBQ0ssU0FBaEQsRUFBMkRWLFNBQVMsR0FBRyxTQUFILEdBQWUsUUFBbkYsRUFBNkYsS0FBS1csYUFBbEcsQ0FBbEI7O0FBQ0EsU0FBS0EsYUFBTDtBQUNIOztBQUVEQyxVQUFRLEdBQUc7QUFDUCxTQUFLQyxVQUFMO0FBQ0FDLDJEQUFHLENBQUNDLEtBQUosQ0FBVSxZQUFWLEVBQXdCQyxNQUF4QjtBQUNIOztBQUVETCxlQUFhLEdBQUc7QUFDWixVQUFNTSxPQUFPLEdBQUdDLGtFQUFjLENBQUNDLFlBQWYsQ0FBNEJGLE9BQTVCLENBQW9DRyxLQUFwQyxDQUEwQyxHQUExQyxFQUErQyxDQUEvQyxDQUFoQjtBQUNBLFVBQU1DLE1BQU0sR0FBR1AsdURBQUcsQ0FBQ0MsS0FBSixDQUFXLElBQUdFLE9BQVEsaUNBQXRCLENBQWY7QUFDQUgsMkRBQUcsQ0FBQ0wsS0FBSixDQUFVWSxNQUFWLEVBQWtCLEtBQUtDLE1BQXZCO0FBQ0g7O0FBRURDLG1CQUFpQixHQUFHO0FBQ2hCaEMsY0FBVSxDQUFDaUMsU0FBWCxDQUFxQixNQUFNTixrRUFBYyxDQUFDTyxLQUFmLENBQXFCQyxhQUFyQixDQUFtQ0MsOERBQW5DLEVBQXNEO0FBQUNDLFdBQUssRUFBRXJDLFVBQVUsQ0FBQ3NDO0FBQW5CLEtBQXRELENBQTNCO0FBQ0g7O0FBRUQsTUFBSVAsTUFBSixHQUFhO0FBQ1QsVUFBTVEsR0FBRyxHQUFHaEIsdURBQUcsQ0FBQ1ksYUFBSixDQUFtQiw4QkFBNkJSLGtFQUFjLENBQUNDLFlBQWYsQ0FBNEJZLFFBQVMsSUFBckYsQ0FBWjtBQUNBLFVBQU1DLEtBQUssR0FBR2xCLHVEQUFHLENBQUNZLGFBQUosQ0FBbUIsa0NBQWlDLG9CQUFvQlIsa0VBQWMsQ0FBQ0MsWUFBZixDQUE0QmMsZ0JBQWlCLEtBQUlDLDJEQUFPLENBQUN4QyxhQUFSLENBQXNCNEIsTUFBTyxRQUF0SixDQUFkO0FBQ0FVLFNBQUssQ0FBQ0csZ0JBQU4sQ0FBdUIsT0FBdkIsRUFBZ0MsTUFBTTtBQUFDLFdBQUtaLGlCQUFMO0FBQTBCLEtBQWpFO0FBQ0FPLE9BQUcsQ0FBQ00sTUFBSixDQUFXSixLQUFYO0FBQ0EsV0FBT0YsR0FBUDtBQUNIOztBQWxDa0QsQ0FBeEMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9nZW5lcmFsL3B1YmxpY3NlcnZlcnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9idWlsdGluXCI7XHJcbmltcG9ydCB7RGlzY29yZE1vZHVsZXMsIFdlYnBhY2tNb2R1bGVzLCBTdHJpbmdzLCBET019IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBQdWJsaWNTZXJ2ZXJzTWVudSBmcm9tIFwiLi4vLi4vdWkvcHVibGljc2VydmVycy9tZW51XCI7XHJcblxyXG5jb25zdCBMYXllclN0YWNrID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInB1c2hMYXllclwiKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBQdWJsaWNTZXJ2ZXJzIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJQdWJsaWNTZXJ2ZXJzXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImdlbmVyYWxcIjt9XHJcbiAgICBnZXQgaWQoKSB7cmV0dXJuIFwicHVibGljU2VydmVyc1wiO31cclxuXHJcbiAgICBlbmFibGVkKCkge1xyXG4gICAgICAgIGNvbnN0IEd1aWxkTGlzdCA9IFdlYnBhY2tNb2R1bGVzLmZpbmQobSA9PiBtLmRlZmF1bHQgJiYgbS5kZWZhdWx0LmRpc3BsYXlOYW1lID09IFwiTmF2aWdhYmxlR3VpbGRzXCIpO1xyXG4gICAgICAgIGNvbnN0IEd1aWxkTGlzdE9sZCA9IFdlYnBhY2tNb2R1bGVzLmZpbmRCeURpc3BsYXlOYW1lKFwiR3VpbGRzXCIpO1xyXG4gICAgICAgIGlmICghR3VpbGRMaXN0ICYmICFHdWlsZExpc3RPbGQpIHRoaXMud2FybihcIkNhbid0IGZpbmQgR3VpbGRMaXN0IGNvbXBvbmVudFwiKTtcclxuICAgICAgICB0aGlzLmd1aWxkUGF0Y2ggPSB0aGlzLmFmdGVyKEd1aWxkTGlzdCA/IEd1aWxkTGlzdCA6IEd1aWxkTGlzdE9sZC5wcm90b3R5cGUsIEd1aWxkTGlzdCA/IFwiZGVmYXVsdFwiIDogXCJyZW5kZXJcIiwgdGhpcy5fYXBwZW5kQnV0dG9uKTtcclxuICAgICAgICB0aGlzLl9hcHBlbmRCdXR0b24oKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlZCgpIHtcclxuICAgICAgICB0aGlzLnVucGF0Y2hBbGwoKTtcclxuICAgICAgICBET00ucXVlcnkoXCIjYmQtcHViLWxpXCIpLnJlbW92ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIF9hcHBlbmRCdXR0b24oKSB7XHJcbiAgICAgICAgY29uc3Qgd3JhcHBlciA9IERpc2NvcmRNb2R1bGVzLkd1aWxkQ2xhc3Nlcy53cmFwcGVyLnNwbGl0KFwiIFwiKVswXTtcclxuICAgICAgICBjb25zdCBndWlsZHMgPSBET00ucXVlcnkoYC4ke3dyYXBwZXJ9IC5zY3JvbGxlci0yVFp2Qk4gPjpmaXJzdC1jaGlsZGApO1xyXG4gICAgICAgIERPTS5hZnRlcihndWlsZHMsIHRoaXMuYnV0dG9uKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuUHVibGljU2VydmVycygpIHtcclxuICAgICAgICBMYXllclN0YWNrLnB1c2hMYXllcigoKSA9PiBEaXNjb3JkTW9kdWxlcy5SZWFjdC5jcmVhdGVFbGVtZW50KFB1YmxpY1NlcnZlcnNNZW51LCB7Y2xvc2U6IExheWVyU3RhY2sucG9wTGF5ZXJ9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGJ1dHRvbigpIHtcclxuICAgICAgICBjb25zdCBidG4gPSBET00uY3JlYXRlRWxlbWVudChgPGRpdiBpZD1cImJkLXB1Yi1saVwiIGNsYXNzPVwiJHtEaXNjb3JkTW9kdWxlcy5HdWlsZENsYXNzZXMubGlzdEl0ZW19XCI+YCk7XHJcbiAgICAgICAgY29uc3QgbGFiZWwgPSBET00uY3JlYXRlRWxlbWVudChgPGRpdiBpZD1cImJkLXB1Yi1idXR0b25cIiBjbGFzcz1cIiR7XCJ3cmFwcGVyLTI1ZVZJbiBcIiArIERpc2NvcmRNb2R1bGVzLkd1aWxkQ2xhc3Nlcy5jaXJjbGVCdXR0b25NYXNrfVwiPiR7U3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmJ1dHRvbn08L2Rpdj5gKTtcclxuICAgICAgICBsYWJlbC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge3RoaXMub3BlblB1YmxpY1NlcnZlcnMoKTt9KTtcclxuICAgICAgICBidG4uYXBwZW5kKGxhYmVsKTtcclxuICAgICAgICByZXR1cm4gYnRuO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/general/publicservers.js\n"); /***/ }), @@ -262,7 +262,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class DarkMode extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"VoiceDisconnect\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"voiceDisconnect\";\n }\n\n constructor() {\n super();\n this.beforeUnload = this.beforeUnload.bind(this);\n }\n\n enabled() {\n window.addEventListener(\"beforeunload\", this.beforeUnload);\n }\n\n disabled() {\n window.removeEventListener(\"beforeunload\", this.beforeUnload);\n }\n\n beforeUnload() {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].ChannelActions.selectVoiceChannel(null, null);\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZ2VuZXJhbC92b2ljZWRpc2Nvbm5lY3QuanM/OThhZiJdLCJuYW1lcyI6WyJEYXJrTW9kZSIsIkJ1aWx0aW4iLCJuYW1lIiwiY2F0ZWdvcnkiLCJpZCIsImNvbnN0cnVjdG9yIiwiYmVmb3JlVW5sb2FkIiwiYmluZCIsImVuYWJsZWQiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwiZGlzYWJsZWQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiRGlzY29yZE1vZHVsZXMiLCJDaGFubmVsQWN0aW9ucyIsInNlbGVjdFZvaWNlQ2hhbm5lbCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVlLG1FQUFJLE1BQU1BLFFBQU4sU0FBdUJDLHdEQUF2QixDQUErQjtBQUM5QyxNQUFJQyxJQUFKLEdBQVc7QUFBQyxXQUFPLGlCQUFQO0FBQTBCOztBQUN0QyxNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPLFNBQVA7QUFBa0I7O0FBQ2xDLE1BQUlDLEVBQUosR0FBUztBQUFDLFdBQU8saUJBQVA7QUFBMEI7O0FBRXBDQyxhQUFXLEdBQUc7QUFDVjtBQUNBLFNBQUtDLFlBQUwsR0FBb0IsS0FBS0EsWUFBTCxDQUFrQkMsSUFBbEIsQ0FBdUIsSUFBdkIsQ0FBcEI7QUFDSDs7QUFFREMsU0FBTyxHQUFHO0FBQ05DLFVBQU0sQ0FBQ0MsZ0JBQVAsQ0FBd0IsY0FBeEIsRUFBd0MsS0FBS0osWUFBN0M7QUFDSDs7QUFFREssVUFBUSxHQUFHO0FBQ1BGLFVBQU0sQ0FBQ0csbUJBQVAsQ0FBMkIsY0FBM0IsRUFBMkMsS0FBS04sWUFBaEQ7QUFDSDs7QUFFREEsY0FBWSxHQUFHO0FBQ1hPLDBEQUFjLENBQUNDLGNBQWYsQ0FBOEJDLGtCQUE5QixDQUFpRCxJQUFqRCxFQUF1RCxJQUF2RDtBQUNIOztBQXBCNkMsQ0FBbkMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9nZW5lcmFsL3ZvaWNlZGlzY29ubmVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCdWlsdGluIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL2J1aWx0aW5cIjtcclxuaW1wb3J0IHtEaXNjb3JkTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBEYXJrTW9kZSBleHRlbmRzIEJ1aWx0aW4ge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiVm9pY2VEaXNjb25uZWN0XCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImdlbmVyYWxcIjt9XHJcbiAgICBnZXQgaWQoKSB7cmV0dXJuIFwidm9pY2VEaXNjb25uZWN0XCI7fVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5iZWZvcmVVbmxvYWQgPSB0aGlzLmJlZm9yZVVubG9hZC5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGVuYWJsZWQoKSB7XHJcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJiZWZvcmV1bmxvYWRcIiwgdGhpcy5iZWZvcmVVbmxvYWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVkKCkge1xyXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiYmVmb3JldW5sb2FkXCIsIHRoaXMuYmVmb3JlVW5sb2FkKTtcclxuICAgIH1cclxuXHJcbiAgICBiZWZvcmVVbmxvYWQoKSB7XHJcbiAgICAgICAgRGlzY29yZE1vZHVsZXMuQ2hhbm5lbEFjdGlvbnMuc2VsZWN0Vm9pY2VDaGFubmVsKG51bGwsIG51bGwpO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/general/voicedisconnect.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class DarkMode extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"VoiceDisconnect\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"voiceDisconnect\";\n }\n\n constructor() {\n super();\n this.beforeUnload = this.beforeUnload.bind(this);\n }\n\n enabled() {\n window.addEventListener(\"beforeunload\", this.beforeUnload);\n }\n\n disabled() {\n window.removeEventListener(\"beforeunload\", this.beforeUnload);\n }\n\n beforeUnload() {\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].ChannelActions.selectVoiceChannel(null, null);\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZ2VuZXJhbC92b2ljZWRpc2Nvbm5lY3QuanM/OThhZiJdLCJuYW1lcyI6WyJEYXJrTW9kZSIsIkJ1aWx0aW4iLCJuYW1lIiwiY2F0ZWdvcnkiLCJpZCIsImNvbnN0cnVjdG9yIiwiYmVmb3JlVW5sb2FkIiwiYmluZCIsImVuYWJsZWQiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwiZGlzYWJsZWQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiRGlzY29yZE1vZHVsZXMiLCJDaGFubmVsQWN0aW9ucyIsInNlbGVjdFZvaWNlQ2hhbm5lbCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVlLG1FQUFJLE1BQU1BLFFBQU4sU0FBdUJDLHdEQUF2QixDQUErQjtBQUM5QyxNQUFJQyxJQUFKLEdBQVc7QUFBQyxXQUFPLGlCQUFQO0FBQTBCOztBQUN0QyxNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPLFNBQVA7QUFBa0I7O0FBQ2xDLE1BQUlDLEVBQUosR0FBUztBQUFDLFdBQU8saUJBQVA7QUFBMEI7O0FBRXBDQyxhQUFXLEdBQUc7QUFDVjtBQUNBLFNBQUtDLFlBQUwsR0FBb0IsS0FBS0EsWUFBTCxDQUFrQkMsSUFBbEIsQ0FBdUIsSUFBdkIsQ0FBcEI7QUFDSDs7QUFFREMsU0FBTyxHQUFHO0FBQ05DLFVBQU0sQ0FBQ0MsZ0JBQVAsQ0FBd0IsY0FBeEIsRUFBd0MsS0FBS0osWUFBN0M7QUFDSDs7QUFFREssVUFBUSxHQUFHO0FBQ1BGLFVBQU0sQ0FBQ0csbUJBQVAsQ0FBMkIsY0FBM0IsRUFBMkMsS0FBS04sWUFBaEQ7QUFDSDs7QUFFREEsY0FBWSxHQUFHO0FBQ1hPLHNFQUFjLENBQUNDLGNBQWYsQ0FBOEJDLGtCQUE5QixDQUFpRCxJQUFqRCxFQUF1RCxJQUF2RDtBQUNIOztBQXBCNkMsQ0FBbkMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9nZW5lcmFsL3ZvaWNlZGlzY29ubmVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCdWlsdGluIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL2J1aWx0aW5cIjtcclxuaW1wb3J0IHtEaXNjb3JkTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBEYXJrTW9kZSBleHRlbmRzIEJ1aWx0aW4ge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiVm9pY2VEaXNjb25uZWN0XCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImdlbmVyYWxcIjt9XHJcbiAgICBnZXQgaWQoKSB7cmV0dXJuIFwidm9pY2VEaXNjb25uZWN0XCI7fVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5iZWZvcmVVbmxvYWQgPSB0aGlzLmJlZm9yZVVubG9hZC5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGVuYWJsZWQoKSB7XHJcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJiZWZvcmV1bmxvYWRcIiwgdGhpcy5iZWZvcmVVbmxvYWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVkKCkge1xyXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiYmVmb3JldW5sb2FkXCIsIHRoaXMuYmVmb3JlVW5sb2FkKTtcclxuICAgIH1cclxuXHJcbiAgICBiZWZvcmVVbmxvYWQoKSB7XHJcbiAgICAgICAgRGlzY29yZE1vZHVsZXMuQ2hhbm5lbEFjdGlvbnMuc2VsZWN0Vm9pY2VDaGFubmVsKG51bGwsIG51bGwpO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/general/voicedisconnect.js\n"); /***/ }), @@ -274,7 +274,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class WindowPrefs extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"WindowPrefs\";\n }\n\n get category() {\n return \"window\";\n }\n\n get id() {\n return \"transparency\";\n }\n\n enabled() {\n this.setWindowPreference(\"transparent\", true);\n this.setWindowPreference(\"backgroundColor\", \"#00000000\");\n this.showModal(modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].WindowPrefs.enabledInfo);\n }\n\n disabled() {\n this.deleteWindowPreference(\"transparent\");\n this.deleteWindowPreference(\"backgroundColor\");\n this.showModal(modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].WindowPrefs.disabledInfo);\n }\n\n showModal(info) {\n if (!this.initialized) return;\n _ui_modals__WEBPACK_IMPORTED_MODULE_1__[\"default\"].showConfirmationModal(modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Modals.additionalInfo, info, {\n confirmText: modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Modals.restartNow,\n cancelText: modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Modals.restartLater,\n onConfirm: () => {\n const app = __webpack_require__(/*! electron */ \"electron\").remote.app;\n\n app.relaunch();\n app.exit();\n }\n });\n }\n\n getWindowPreference(key) {\n const prefs = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getData(\"windowprefs\") || {};\n return prefs[key];\n }\n\n setWindowPreference(key, value) {\n const prefs = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getData(\"windowprefs\") || {};\n prefs[key] = value;\n modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].setData(\"windowprefs\", prefs);\n }\n\n deleteWindowPreference(key) {\n const prefs = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getData(\"windowprefs\") || {};\n delete prefs[key];\n modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].setData(\"windowprefs\", prefs);\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvd2luZG93cHJlZnMuanM/YjRhNyJdLCJuYW1lcyI6WyJXaW5kb3dQcmVmcyIsIkJ1aWx0aW4iLCJuYW1lIiwiY2F0ZWdvcnkiLCJpZCIsImVuYWJsZWQiLCJzZXRXaW5kb3dQcmVmZXJlbmNlIiwic2hvd01vZGFsIiwiU3RyaW5ncyIsImVuYWJsZWRJbmZvIiwiZGlzYWJsZWQiLCJkZWxldGVXaW5kb3dQcmVmZXJlbmNlIiwiZGlzYWJsZWRJbmZvIiwiaW5mbyIsImluaXRpYWxpemVkIiwiTW9kYWxzIiwic2hvd0NvbmZpcm1hdGlvbk1vZGFsIiwiYWRkaXRpb25hbEluZm8iLCJjb25maXJtVGV4dCIsInJlc3RhcnROb3ciLCJjYW5jZWxUZXh0IiwicmVzdGFydExhdGVyIiwib25Db25maXJtIiwiYXBwIiwicmVxdWlyZSIsInJlbW90ZSIsInJlbGF1bmNoIiwiZXhpdCIsImdldFdpbmRvd1ByZWZlcmVuY2UiLCJrZXkiLCJwcmVmcyIsIkRhdGFTdG9yZSIsImdldERhdGEiLCJ2YWx1ZSIsInNldERhdGEiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRWUsbUVBQUksTUFBTUEsV0FBTixTQUEwQkMsd0RBQTFCLENBQWtDO0FBQ2pELE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sYUFBUDtBQUFzQjs7QUFDbEMsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxRQUFQO0FBQWlCOztBQUNqQyxNQUFJQyxFQUFKLEdBQVM7QUFBQyxXQUFPLGNBQVA7QUFBdUI7O0FBRWpDQyxTQUFPLEdBQUc7QUFDTixTQUFLQyxtQkFBTCxDQUF5QixhQUF6QixFQUF3QyxJQUF4QztBQUNBLFNBQUtBLG1CQUFMLENBQXlCLGlCQUF6QixFQUE0QyxXQUE1QztBQUNBLFNBQUtDLFNBQUwsQ0FBZUMsK0NBQU8sQ0FBQ1IsV0FBUixDQUFvQlMsV0FBbkM7QUFDSDs7QUFFREMsVUFBUSxHQUFHO0FBQ1AsU0FBS0Msc0JBQUwsQ0FBNEIsYUFBNUI7QUFDQSxTQUFLQSxzQkFBTCxDQUE0QixpQkFBNUI7QUFDQSxTQUFLSixTQUFMLENBQWVDLCtDQUFPLENBQUNSLFdBQVIsQ0FBb0JZLFlBQW5DO0FBQ0g7O0FBRURMLFdBQVMsQ0FBQ00sSUFBRCxFQUFPO0FBQ1osUUFBSSxDQUFDLEtBQUtDLFdBQVYsRUFBdUI7QUFDdkJDLHNEQUFNLENBQUNDLHFCQUFQLENBQTZCUiwrQ0FBTyxDQUFDTyxNQUFSLENBQWVFLGNBQTVDLEVBQTRESixJQUE1RCxFQUFrRTtBQUM5REssaUJBQVcsRUFBRVYsK0NBQU8sQ0FBQ08sTUFBUixDQUFlSSxVQURrQztBQUU5REMsZ0JBQVUsRUFBRVosK0NBQU8sQ0FBQ08sTUFBUixDQUFlTSxZQUZtQztBQUc5REMsZUFBUyxFQUFFLE1BQU07QUFDYixjQUFNQyxHQUFHLEdBQUdDLG1CQUFPLENBQUMsMEJBQUQsQ0FBUCxDQUFvQkMsTUFBcEIsQ0FBMkJGLEdBQXZDOztBQUNBQSxXQUFHLENBQUNHLFFBQUo7QUFDQUgsV0FBRyxDQUFDSSxJQUFKO0FBQ0g7QUFQNkQsS0FBbEU7QUFTSDs7QUFFREMscUJBQW1CLENBQUNDLEdBQUQsRUFBTTtBQUNyQixVQUFNQyxLQUFLLEdBQUdDLGlEQUFTLENBQUNDLE9BQVYsQ0FBa0IsYUFBbEIsS0FBb0MsRUFBbEQ7QUFDQSxXQUFPRixLQUFLLENBQUNELEdBQUQsQ0FBWjtBQUNIOztBQUVEdkIscUJBQW1CLENBQUN1QixHQUFELEVBQU1JLEtBQU4sRUFBYTtBQUM1QixVQUFNSCxLQUFLLEdBQUdDLGlEQUFTLENBQUNDLE9BQVYsQ0FBa0IsYUFBbEIsS0FBb0MsRUFBbEQ7QUFDQUYsU0FBSyxDQUFDRCxHQUFELENBQUwsR0FBYUksS0FBYjtBQUNBRixxREFBUyxDQUFDRyxPQUFWLENBQWtCLGFBQWxCLEVBQWlDSixLQUFqQztBQUNIOztBQUVEbkIsd0JBQXNCLENBQUNrQixHQUFELEVBQU07QUFDeEIsVUFBTUMsS0FBSyxHQUFHQyxpREFBUyxDQUFDQyxPQUFWLENBQWtCLGFBQWxCLEtBQW9DLEVBQWxEO0FBQ0EsV0FBT0YsS0FBSyxDQUFDRCxHQUFELENBQVo7QUFDQUUscURBQVMsQ0FBQ0csT0FBVixDQUFrQixhQUFsQixFQUFpQ0osS0FBakM7QUFDSDs7QUE3Q2dELENBQXRDLEVBQWYiLCJmaWxlIjoiLi9zcmMvYnVpbHRpbnMvd2luZG93cHJlZnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vc3RydWN0cy9idWlsdGluXCI7XHJcbmltcG9ydCBNb2RhbHMgZnJvbSBcIi4uL3VpL21vZGFsc1wiO1xyXG5pbXBvcnQge0RhdGFTdG9yZSwgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBXaW5kb3dQcmVmcyBleHRlbmRzIEJ1aWx0aW4ge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiV2luZG93UHJlZnNcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwid2luZG93XCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcInRyYW5zcGFyZW5jeVwiO31cclxuXHJcbiAgICBlbmFibGVkKCkge1xyXG4gICAgICAgIHRoaXMuc2V0V2luZG93UHJlZmVyZW5jZShcInRyYW5zcGFyZW50XCIsIHRydWUpO1xyXG4gICAgICAgIHRoaXMuc2V0V2luZG93UHJlZmVyZW5jZShcImJhY2tncm91bmRDb2xvclwiLCBcIiMwMDAwMDAwMFwiKTtcclxuICAgICAgICB0aGlzLnNob3dNb2RhbChTdHJpbmdzLldpbmRvd1ByZWZzLmVuYWJsZWRJbmZvKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlZCgpIHtcclxuICAgICAgICB0aGlzLmRlbGV0ZVdpbmRvd1ByZWZlcmVuY2UoXCJ0cmFuc3BhcmVudFwiKTtcclxuICAgICAgICB0aGlzLmRlbGV0ZVdpbmRvd1ByZWZlcmVuY2UoXCJiYWNrZ3JvdW5kQ29sb3JcIik7XHJcbiAgICAgICAgdGhpcy5zaG93TW9kYWwoU3RyaW5ncy5XaW5kb3dQcmVmcy5kaXNhYmxlZEluZm8pO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dNb2RhbChpbmZvKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmluaXRpYWxpemVkKSByZXR1cm47XHJcbiAgICAgICAgTW9kYWxzLnNob3dDb25maXJtYXRpb25Nb2RhbChTdHJpbmdzLk1vZGFscy5hZGRpdGlvbmFsSW5mbywgaW5mbywge1xyXG4gICAgICAgICAgICBjb25maXJtVGV4dDogU3RyaW5ncy5Nb2RhbHMucmVzdGFydE5vdyxcclxuICAgICAgICAgICAgY2FuY2VsVGV4dDogU3RyaW5ncy5Nb2RhbHMucmVzdGFydExhdGVyLFxyXG4gICAgICAgICAgICBvbkNvbmZpcm06ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFwcCA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKS5yZW1vdGUuYXBwO1xyXG4gICAgICAgICAgICAgICAgYXBwLnJlbGF1bmNoKCk7XHJcbiAgICAgICAgICAgICAgICBhcHAuZXhpdCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0V2luZG93UHJlZmVyZW5jZShrZXkpIHtcclxuICAgICAgICBjb25zdCBwcmVmcyA9IERhdGFTdG9yZS5nZXREYXRhKFwid2luZG93cHJlZnNcIikgfHwge307XHJcbiAgICAgICAgcmV0dXJuIHByZWZzW2tleV07XHJcbiAgICB9XHJcblxyXG4gICAgc2V0V2luZG93UHJlZmVyZW5jZShrZXksIHZhbHVlKSB7XHJcbiAgICAgICAgY29uc3QgcHJlZnMgPSBEYXRhU3RvcmUuZ2V0RGF0YShcIndpbmRvd3ByZWZzXCIpIHx8IHt9O1xyXG4gICAgICAgIHByZWZzW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICBEYXRhU3RvcmUuc2V0RGF0YShcIndpbmRvd3ByZWZzXCIsIHByZWZzKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVXaW5kb3dQcmVmZXJlbmNlKGtleSkge1xyXG4gICAgICAgIGNvbnN0IHByZWZzID0gRGF0YVN0b3JlLmdldERhdGEoXCJ3aW5kb3dwcmVmc1wiKSB8fCB7fTtcclxuICAgICAgICBkZWxldGUgcHJlZnNba2V5XTtcclxuICAgICAgICBEYXRhU3RvcmUuc2V0RGF0YShcIndpbmRvd3ByZWZzXCIsIHByZWZzKTtcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/windowprefs.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../modules/modules.js */ \"./src/modules/modules.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class WindowPrefs extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"WindowPrefs\";\n }\n\n get category() {\n return \"window\";\n }\n\n get id() {\n return \"transparency\";\n }\n\n enabled() {\n this.setWindowPreference(\"transparent\", true);\n this.setWindowPreference(\"backgroundColor\", \"#00000000\");\n this.showModal(_modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].WindowPrefs.enabledInfo);\n }\n\n disabled() {\n this.deleteWindowPreference(\"transparent\");\n this.deleteWindowPreference(\"backgroundColor\");\n this.showModal(_modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].WindowPrefs.disabledInfo);\n }\n\n showModal(info) {\n if (!this.initialized) return;\n _ui_modals__WEBPACK_IMPORTED_MODULE_1__[\"default\"].showConfirmationModal(_modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Modals.additionalInfo, info, {\n confirmText: _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Modals.restartNow,\n cancelText: _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Modals.restartLater,\n onConfirm: () => {\n const app = __webpack_require__(/*! electron */ \"electron\").remote.app;\n\n app.relaunch();\n app.exit();\n }\n });\n }\n\n getWindowPreference(key) {\n const prefs = _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getData(\"windowprefs\") || {};\n return prefs[key];\n }\n\n setWindowPreference(key, value) {\n const prefs = _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getData(\"windowprefs\") || {};\n prefs[key] = value;\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].setData(\"windowprefs\", prefs);\n }\n\n deleteWindowPreference(key) {\n const prefs = _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getData(\"windowprefs\") || {};\n delete prefs[key];\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].setData(\"windowprefs\", prefs);\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvd2luZG93cHJlZnMuanM/YjRhNyJdLCJuYW1lcyI6WyJXaW5kb3dQcmVmcyIsIkJ1aWx0aW4iLCJuYW1lIiwiY2F0ZWdvcnkiLCJpZCIsImVuYWJsZWQiLCJzZXRXaW5kb3dQcmVmZXJlbmNlIiwic2hvd01vZGFsIiwiU3RyaW5ncyIsImVuYWJsZWRJbmZvIiwiZGlzYWJsZWQiLCJkZWxldGVXaW5kb3dQcmVmZXJlbmNlIiwiZGlzYWJsZWRJbmZvIiwiaW5mbyIsImluaXRpYWxpemVkIiwiTW9kYWxzIiwic2hvd0NvbmZpcm1hdGlvbk1vZGFsIiwiYWRkaXRpb25hbEluZm8iLCJjb25maXJtVGV4dCIsInJlc3RhcnROb3ciLCJjYW5jZWxUZXh0IiwicmVzdGFydExhdGVyIiwib25Db25maXJtIiwiYXBwIiwicmVxdWlyZSIsInJlbW90ZSIsInJlbGF1bmNoIiwiZXhpdCIsImdldFdpbmRvd1ByZWZlcmVuY2UiLCJrZXkiLCJwcmVmcyIsIkRhdGFTdG9yZSIsImdldERhdGEiLCJ2YWx1ZSIsInNldERhdGEiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRWUsbUVBQUksTUFBTUEsV0FBTixTQUEwQkMsd0RBQTFCLENBQWtDO0FBQ2pELE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sYUFBUDtBQUFzQjs7QUFDbEMsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxRQUFQO0FBQWlCOztBQUNqQyxNQUFJQyxFQUFKLEdBQVM7QUFBQyxXQUFPLGNBQVA7QUFBdUI7O0FBRWpDQyxTQUFPLEdBQUc7QUFDTixTQUFLQyxtQkFBTCxDQUF5QixhQUF6QixFQUF3QyxJQUF4QztBQUNBLFNBQUtBLG1CQUFMLENBQXlCLGlCQUF6QixFQUE0QyxXQUE1QztBQUNBLFNBQUtDLFNBQUwsQ0FBZUMsMkRBQU8sQ0FBQ1IsV0FBUixDQUFvQlMsV0FBbkM7QUFDSDs7QUFFREMsVUFBUSxHQUFHO0FBQ1AsU0FBS0Msc0JBQUwsQ0FBNEIsYUFBNUI7QUFDQSxTQUFLQSxzQkFBTCxDQUE0QixpQkFBNUI7QUFDQSxTQUFLSixTQUFMLENBQWVDLDJEQUFPLENBQUNSLFdBQVIsQ0FBb0JZLFlBQW5DO0FBQ0g7O0FBRURMLFdBQVMsQ0FBQ00sSUFBRCxFQUFPO0FBQ1osUUFBSSxDQUFDLEtBQUtDLFdBQVYsRUFBdUI7QUFDdkJDLHNEQUFNLENBQUNDLHFCQUFQLENBQTZCUiwyREFBTyxDQUFDTyxNQUFSLENBQWVFLGNBQTVDLEVBQTRESixJQUE1RCxFQUFrRTtBQUM5REssaUJBQVcsRUFBRVYsMkRBQU8sQ0FBQ08sTUFBUixDQUFlSSxVQURrQztBQUU5REMsZ0JBQVUsRUFBRVosMkRBQU8sQ0FBQ08sTUFBUixDQUFlTSxZQUZtQztBQUc5REMsZUFBUyxFQUFFLE1BQU07QUFDYixjQUFNQyxHQUFHLEdBQUdDLG1CQUFPLENBQUMsMEJBQUQsQ0FBUCxDQUFvQkMsTUFBcEIsQ0FBMkJGLEdBQXZDOztBQUNBQSxXQUFHLENBQUNHLFFBQUo7QUFDQUgsV0FBRyxDQUFDSSxJQUFKO0FBQ0g7QUFQNkQsS0FBbEU7QUFTSDs7QUFFREMscUJBQW1CLENBQUNDLEdBQUQsRUFBTTtBQUNyQixVQUFNQyxLQUFLLEdBQUdDLDZEQUFTLENBQUNDLE9BQVYsQ0FBa0IsYUFBbEIsS0FBb0MsRUFBbEQ7QUFDQSxXQUFPRixLQUFLLENBQUNELEdBQUQsQ0FBWjtBQUNIOztBQUVEdkIscUJBQW1CLENBQUN1QixHQUFELEVBQU1JLEtBQU4sRUFBYTtBQUM1QixVQUFNSCxLQUFLLEdBQUdDLDZEQUFTLENBQUNDLE9BQVYsQ0FBa0IsYUFBbEIsS0FBb0MsRUFBbEQ7QUFDQUYsU0FBSyxDQUFDRCxHQUFELENBQUwsR0FBYUksS0FBYjtBQUNBRixpRUFBUyxDQUFDRyxPQUFWLENBQWtCLGFBQWxCLEVBQWlDSixLQUFqQztBQUNIOztBQUVEbkIsd0JBQXNCLENBQUNrQixHQUFELEVBQU07QUFDeEIsVUFBTUMsS0FBSyxHQUFHQyw2REFBUyxDQUFDQyxPQUFWLENBQWtCLGFBQWxCLEtBQW9DLEVBQWxEO0FBQ0EsV0FBT0YsS0FBSyxDQUFDRCxHQUFELENBQVo7QUFDQUUsaUVBQVMsQ0FBQ0csT0FBVixDQUFrQixhQUFsQixFQUFpQ0osS0FBakM7QUFDSDs7QUE3Q2dELENBQXRDLEVBQWYiLCJmaWxlIjoiLi9zcmMvYnVpbHRpbnMvd2luZG93cHJlZnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vc3RydWN0cy9idWlsdGluXCI7XHJcbmltcG9ydCBNb2RhbHMgZnJvbSBcIi4uL3VpL21vZGFsc1wiO1xyXG5pbXBvcnQge0RhdGFTdG9yZSwgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBXaW5kb3dQcmVmcyBleHRlbmRzIEJ1aWx0aW4ge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiV2luZG93UHJlZnNcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwid2luZG93XCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcInRyYW5zcGFyZW5jeVwiO31cclxuXHJcbiAgICBlbmFibGVkKCkge1xyXG4gICAgICAgIHRoaXMuc2V0V2luZG93UHJlZmVyZW5jZShcInRyYW5zcGFyZW50XCIsIHRydWUpO1xyXG4gICAgICAgIHRoaXMuc2V0V2luZG93UHJlZmVyZW5jZShcImJhY2tncm91bmRDb2xvclwiLCBcIiMwMDAwMDAwMFwiKTtcclxuICAgICAgICB0aGlzLnNob3dNb2RhbChTdHJpbmdzLldpbmRvd1ByZWZzLmVuYWJsZWRJbmZvKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlZCgpIHtcclxuICAgICAgICB0aGlzLmRlbGV0ZVdpbmRvd1ByZWZlcmVuY2UoXCJ0cmFuc3BhcmVudFwiKTtcclxuICAgICAgICB0aGlzLmRlbGV0ZVdpbmRvd1ByZWZlcmVuY2UoXCJiYWNrZ3JvdW5kQ29sb3JcIik7XHJcbiAgICAgICAgdGhpcy5zaG93TW9kYWwoU3RyaW5ncy5XaW5kb3dQcmVmcy5kaXNhYmxlZEluZm8pO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dNb2RhbChpbmZvKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmluaXRpYWxpemVkKSByZXR1cm47XHJcbiAgICAgICAgTW9kYWxzLnNob3dDb25maXJtYXRpb25Nb2RhbChTdHJpbmdzLk1vZGFscy5hZGRpdGlvbmFsSW5mbywgaW5mbywge1xyXG4gICAgICAgICAgICBjb25maXJtVGV4dDogU3RyaW5ncy5Nb2RhbHMucmVzdGFydE5vdyxcclxuICAgICAgICAgICAgY2FuY2VsVGV4dDogU3RyaW5ncy5Nb2RhbHMucmVzdGFydExhdGVyLFxyXG4gICAgICAgICAgICBvbkNvbmZpcm06ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFwcCA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKS5yZW1vdGUuYXBwO1xyXG4gICAgICAgICAgICAgICAgYXBwLnJlbGF1bmNoKCk7XHJcbiAgICAgICAgICAgICAgICBhcHAuZXhpdCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0V2luZG93UHJlZmVyZW5jZShrZXkpIHtcclxuICAgICAgICBjb25zdCBwcmVmcyA9IERhdGFTdG9yZS5nZXREYXRhKFwid2luZG93cHJlZnNcIikgfHwge307XHJcbiAgICAgICAgcmV0dXJuIHByZWZzW2tleV07XHJcbiAgICB9XHJcblxyXG4gICAgc2V0V2luZG93UHJlZmVyZW5jZShrZXksIHZhbHVlKSB7XHJcbiAgICAgICAgY29uc3QgcHJlZnMgPSBEYXRhU3RvcmUuZ2V0RGF0YShcIndpbmRvd3ByZWZzXCIpIHx8IHt9O1xyXG4gICAgICAgIHByZWZzW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICBEYXRhU3RvcmUuc2V0RGF0YShcIndpbmRvd3ByZWZzXCIsIHByZWZzKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVXaW5kb3dQcmVmZXJlbmNlKGtleSkge1xyXG4gICAgICAgIGNvbnN0IHByZWZzID0gRGF0YVN0b3JlLmdldERhdGEoXCJ3aW5kb3dwcmVmc1wiKSB8fCB7fTtcclxuICAgICAgICBkZWxldGUgcHJlZnNba2V5XTtcclxuICAgICAgICBEYXRhU3RvcmUuc2V0RGF0YShcIndpbmRvd3ByZWZzXCIsIHByZWZzKTtcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/windowprefs.js\n"); /***/ }), @@ -298,7 +298,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n local: false,\n localServer: \"//localhost:8080\",\n minified: true,\n version: \"0.3.0\",\n branch: \"master\",\n repo: \"rauenzi\",\n minSupportedVersion: \"0.3.0\",\n bbdVersion: \"1.0.0\"\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvZGF0YS9jb25maWcuanM/NGJhYSJdLCJuYW1lcyI6WyJsb2NhbCIsImxvY2FsU2VydmVyIiwibWluaWZpZWQiLCJ2ZXJzaW9uIiwiYnJhbmNoIiwicmVwbyIsIm1pblN1cHBvcnRlZFZlcnNpb24iLCJiYmRWZXJzaW9uIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFlO0FBQ1hBLE9BQUssRUFBRSxLQURJO0FBRVhDLGFBQVcsRUFBRSxrQkFGRjtBQUdYQyxVQUFRLEVBQUUsSUFIQztBQUlYQyxTQUFPLEVBQUUsT0FKRTtBQUtYQyxRQUFNLEVBQUUsUUFMRztBQU1YQyxNQUFJLEVBQUUsU0FOSztBQU9YQyxxQkFBbUIsRUFBRSxPQVBWO0FBUVhDLFlBQVUsRUFBRTtBQVJELENBQWYiLCJmaWxlIjoiLi9zcmMvZGF0YS9jb25maWcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XHJcbiAgICBsb2NhbDogZmFsc2UsXHJcbiAgICBsb2NhbFNlcnZlcjogXCIvL2xvY2FsaG9zdDo4MDgwXCIsXHJcbiAgICBtaW5pZmllZDogdHJ1ZSxcclxuICAgIHZlcnNpb246IFwiMC4zLjBcIixcclxuICAgIGJyYW5jaDogXCJtYXN0ZXJcIixcclxuICAgIHJlcG86IFwicmF1ZW56aVwiLFxyXG4gICAgbWluU3VwcG9ydGVkVmVyc2lvbjogXCIwLjMuMFwiLFxyXG4gICAgYmJkVmVyc2lvbjogXCIxLjAuMFwiXHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/data/config.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n local: false,\n localPath: \"\",\n localServer: \"//localhost:8080\",\n minified: true,\n version: \"0.3.0\",\n branch: \"master\",\n repo: \"rauenzi\",\n minSupportedVersion: \"0.3.0\",\n bbdVersion: \"1.0.0\"\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvZGF0YS9jb25maWcuanM/NGJhYSJdLCJuYW1lcyI6WyJsb2NhbCIsImxvY2FsUGF0aCIsImxvY2FsU2VydmVyIiwibWluaWZpZWQiLCJ2ZXJzaW9uIiwiYnJhbmNoIiwicmVwbyIsIm1pblN1cHBvcnRlZFZlcnNpb24iLCJiYmRWZXJzaW9uIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFlO0FBQ1hBLE9BQUssRUFBRSxLQURJO0FBRVhDLFdBQVMsRUFBRSxFQUZBO0FBR1hDLGFBQVcsRUFBRSxrQkFIRjtBQUlYQyxVQUFRLEVBQUUsSUFKQztBQUtYQyxTQUFPLEVBQUUsT0FMRTtBQU1YQyxRQUFNLEVBQUUsUUFORztBQU9YQyxNQUFJLEVBQUUsU0FQSztBQVFYQyxxQkFBbUIsRUFBRSxPQVJWO0FBU1hDLFlBQVUsRUFBRTtBQVRELENBQWYiLCJmaWxlIjoiLi9zcmMvZGF0YS9jb25maWcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XHJcbiAgICBsb2NhbDogZmFsc2UsXHJcbiAgICBsb2NhbFBhdGg6IFwiXCIsXHJcbiAgICBsb2NhbFNlcnZlcjogXCIvL2xvY2FsaG9zdDo4MDgwXCIsXHJcbiAgICBtaW5pZmllZDogdHJ1ZSxcclxuICAgIHZlcnNpb246IFwiMC4zLjBcIixcclxuICAgIGJyYW5jaDogXCJtYXN0ZXJcIixcclxuICAgIHJlcG86IFwicmF1ZW56aVwiLFxyXG4gICAgbWluU3VwcG9ydGVkVmVyc2lvbjogXCIwLjMuMFwiLFxyXG4gICAgYmJkVmVyc2lvbjogXCIxLjAuMFwiXHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/data/config.js\n"); /***/ }), @@ -406,7 +406,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _webpackmodules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./webpackmodules */ \"./src/modules/webpackmodules.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _patcher__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./patcher */ \"./src/modules/patcher.js\");\n/* harmony import */ var _ui_icons_bdlogo__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../ui/icons/bdlogo */ \"./src/ui/icons/bdlogo.jsx\");\n\n\n\n\n\n\nconst React = _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].React;\nconst Tooltip = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByDisplayName(\"Tooltip\");\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ComponentPatcher {\n initialize() {\n _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].suppressErrors(this.patchSocial.bind(this), \"BD Social Patch\")();\n _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].suppressErrors(this.patchGuildPills.bind(this), \"BD Guild Pills Patch\")();\n _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].suppressErrors(this.patchGuildListItems.bind(this), \"BD Guild List Items Patch\")();\n _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].suppressErrors(this.patchGuildSeparator.bind(this), \"BD Guild Separator Patch\")();\n _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].suppressErrors(this.patchMessageHeader.bind(this), \"BD Message Header Patch\")();\n _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].suppressErrors(this.patchMemberList.bind(this), \"BD Member List Patch\")();\n }\n\n patchSocial() {\n if (this.socialPatch) return;\n const TabBar = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByDisplayName(\"TabBar\");\n const Anchor = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByDisplayName(\"Anchor\");\n if (!TabBar) return;\n this.socialPatch = _patcher__WEBPACK_IMPORTED_MODULE_4__[\"default\"].after(\"ComponentPatcher\", TabBar.prototype, \"render\", (thisObject, args, returnValue) => {\n const children = returnValue.props.children;\n if (!children || !children.length || children.length < 3) return;\n if (children[children.length - 3].type.displayName !== \"Separator\") return;\n if (!children[children.length - 2].type.toString().includes(\"socialLinks\")) return;\n\n if (Anchor) {\n const original = children[children.length - 2].type;\n\n const newOne = function () {\n const returnVal = original(...arguments);\n returnVal.props.children.push(_discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].React.createElement(Anchor, {\n className: \"bd-social-link\",\n href: \"https://twitter.com/BandagedBD\",\n title: \"BandagedBD\",\n target: \"_blank\"\n }, _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].React.createElement(_ui_icons_bdlogo__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n size: \"16px\",\n className: \"bd-social-logo\"\n })));\n return returnVal;\n };\n\n children[children.length - 2].type = newOne;\n }\n\n const injector = _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].React.createElement(\"div\", {\n className: \"colorMuted-HdFt4q size12-3cLvbJ\"\n }, `Injector ${data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].version}`);\n const versionHash = `(${data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].hash ? data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].hash.substring(0, 7) : data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].branch})`;\n const additional = _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].React.createElement(\"div\", {\n className: \"colorMuted-HdFt4q size12-3cLvbJ\"\n }, `BBD ${data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].bbdVersion} `, _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].React.createElement(\"span\", {\n className: \"versionHash-2gXjIB da-versionHash\"\n }, versionHash));\n const originalVersions = children[children.length - 1].type;\n\n children[children.length - 1].type = function () {\n const returnVal = originalVersions(...arguments);\n returnVal.props.children.splice(returnVal.props.children.length - 1, 0, injector);\n returnVal.props.children.splice(1, 0, additional);\n return returnVal;\n };\n });\n }\n\n patchGuildListItems() {\n if (this.guildListItemsPatch) return;\n const listItemClass = _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].GuildClasses.listItem.split(\" \")[0];\n const blobClass = _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].GuildClasses.blobContainer.split(\" \")[0];\n const reactInstance = _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getReactInstance(document.querySelector(`.${listItemClass} .${blobClass}`).parentElement);\n const GuildComponent = reactInstance.return.type;\n if (!GuildComponent) return;\n this.guildListItemsPatch = _patcher__WEBPACK_IMPORTED_MODULE_4__[\"default\"].after(\"ComponentPatcher\", GuildComponent.prototype, \"render\", (thisObject, _, returnValue) => {\n if (!returnValue || !thisObject) return;\n const guildData = thisObject.props;\n returnValue.props.className += \" bd-guild\";\n if (guildData.unread) returnValue.props.className += \" bd-unread\";\n if (guildData.selected) returnValue.props.className += \" bd-selected\";\n if (guildData.audio) returnValue.props.className += \" bd-audio\";\n if (guildData.video) returnValue.props.className += \" bd-video\";\n if (guildData.badge) returnValue.props.className += \" bd-badge\";\n if (guildData.animatable) returnValue.props.className += \" bd-animatable\";\n return returnValue;\n });\n }\n\n patchGuildPills() {\n if (this.guildPillPatch) return;\n const guildPill = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getModule(m => m.default && !m.default.displayName && m.default.toString && m.default.toString().includes(\"translate3d\"));\n if (!guildPill) return;\n this.guildPillPatch = _patcher__WEBPACK_IMPORTED_MODULE_4__[\"default\"].after(\"ComponentPatcher\", guildPill, \"default\", (_, args, returnValue) => {\n const props = args[0];\n if (props.unread) returnValue.props.className += \" bd-unread\";\n if (props.selected) returnValue.props.className += \" bd-selected\";\n if (props.hovered) returnValue.props.className += \" bd-hovered\";\n return returnValue;\n });\n }\n\n patchGuildSeparator() {\n if (this.guildSeparatorPatch) return;\n const Guilds = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByDisplayName(\"Guilds\");\n const guildComponents = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"renderListItem\");\n if (!guildComponents || !Guilds) return;\n\n const GuildSeparator = function () {\n const returnValue = guildComponents.Separator(...arguments);\n returnValue.props.className += \" bd-guild-separator\";\n return returnValue;\n };\n\n this.guildSeparatorPatch = _patcher__WEBPACK_IMPORTED_MODULE_4__[\"default\"].after(\"ComponentPatcher\", Guilds.prototype, \"render\", (_, __, returnValue) => {\n const Separator = _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].findInReactTree(returnValue, m => m.type && !m.type.displayName && typeof m.type == \"function\" && _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].isEmpty(m.props));\n if (!Separator) return;\n Separator.type = GuildSeparator;\n });\n }\n\n patchMessageHeader() {\n if (this.messageHeaderPatch) return;\n const MessageHeader = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"MessageTimestamp\");\n const Anchor = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].find(m => m.displayName == \"Anchor\");\n if (!Anchor || !MessageHeader || !MessageHeader.default) return;\n this.messageHeaderPatch = _patcher__WEBPACK_IMPORTED_MODULE_4__[\"default\"].after(\"ComponentPatcher\", MessageHeader, \"default\", (_, args, returnValue) => {\n const author = _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getNestedProp(args[0], \"message.author\");\n const children = _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getNestedProp(returnValue, \"props.children.1.props.children.1.props.children\");\n if (!children || !author || !author.id || author.id !== \"249746236008169473\") return;\n if (!Array.isArray(children)) return;\n children.push(React.createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: \"BandagedBD Developer\"\n }, props => React.createElement(Anchor, Object.assign({\n className: \"bd-chat-badge\",\n href: \"https://github.com/rauenzi/BetterDiscordApp\",\n title: \"BandagedBD\",\n target: \"_blank\"\n }, props), React.createElement(_ui_icons_bdlogo__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n size: \"16px\",\n className: \"bd-logo\"\n }))));\n });\n }\n\n patchMemberList() {\n if (this.memberListPatch) return;\n const MemberListItem = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].findByDisplayName(\"MemberListItem\");\n const Anchor = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].find(m => m.displayName == \"Anchor\");\n if (!Anchor || !MemberListItem || !MemberListItem.prototype || !MemberListItem.prototype.renderDecorators) return;\n this.memberListPatch = _patcher__WEBPACK_IMPORTED_MODULE_4__[\"default\"].after(\"ComponentPatcher\", MemberListItem.prototype, \"renderDecorators\", (thisObject, args, returnValue) => {\n const user = _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getNestedProp(thisObject, \"props.user\");\n const children = _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getNestedProp(returnValue, \"props.children\");\n if (!children || !user || !user.id || user.id !== \"249746236008169473\") return;\n if (!Array.isArray(children)) return;\n children.push(React.createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: \"BandagedBD Developer\"\n }, props => React.createElement(Anchor, Object.assign({\n className: \"bd-member-badge\",\n href: \"https://github.com/rauenzi/BetterDiscordApp\",\n title: \"BandagedBD\",\n target: \"_blank\"\n }, props), React.createElement(_ui_icons_bdlogo__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n size: \"16px\",\n className: \"bd-logo\"\n }))));\n });\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb21wb25lbnRwYXRjaGVyLmpzPzJmMDIiXSwibmFtZXMiOlsiUmVhY3QiLCJEaXNjb3JkTW9kdWxlcyIsIlRvb2x0aXAiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5RGlzcGxheU5hbWUiLCJDb21wb25lbnRQYXRjaGVyIiwiaW5pdGlhbGl6ZSIsIlV0aWxpdGllcyIsInN1cHByZXNzRXJyb3JzIiwicGF0Y2hTb2NpYWwiLCJiaW5kIiwicGF0Y2hHdWlsZFBpbGxzIiwicGF0Y2hHdWlsZExpc3RJdGVtcyIsInBhdGNoR3VpbGRTZXBhcmF0b3IiLCJwYXRjaE1lc3NhZ2VIZWFkZXIiLCJwYXRjaE1lbWJlckxpc3QiLCJzb2NpYWxQYXRjaCIsIlRhYkJhciIsIkFuY2hvciIsIlBhdGNoZXIiLCJhZnRlciIsInByb3RvdHlwZSIsInRoaXNPYmplY3QiLCJhcmdzIiwicmV0dXJuVmFsdWUiLCJjaGlsZHJlbiIsInByb3BzIiwibGVuZ3RoIiwidHlwZSIsImRpc3BsYXlOYW1lIiwidG9TdHJpbmciLCJpbmNsdWRlcyIsIm9yaWdpbmFsIiwibmV3T25lIiwicmV0dXJuVmFsIiwiYXJndW1lbnRzIiwicHVzaCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJocmVmIiwidGl0bGUiLCJ0YXJnZXQiLCJCRExvZ28iLCJzaXplIiwiaW5qZWN0b3IiLCJDb25maWciLCJ2ZXJzaW9uIiwidmVyc2lvbkhhc2giLCJoYXNoIiwic3Vic3RyaW5nIiwiYnJhbmNoIiwiYWRkaXRpb25hbCIsImJiZFZlcnNpb24iLCJvcmlnaW5hbFZlcnNpb25zIiwic3BsaWNlIiwiZ3VpbGRMaXN0SXRlbXNQYXRjaCIsImxpc3RJdGVtQ2xhc3MiLCJHdWlsZENsYXNzZXMiLCJsaXN0SXRlbSIsInNwbGl0IiwiYmxvYkNsYXNzIiwiYmxvYkNvbnRhaW5lciIsInJlYWN0SW5zdGFuY2UiLCJnZXRSZWFjdEluc3RhbmNlIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwicGFyZW50RWxlbWVudCIsIkd1aWxkQ29tcG9uZW50IiwicmV0dXJuIiwiXyIsImd1aWxkRGF0YSIsInVucmVhZCIsInNlbGVjdGVkIiwiYXVkaW8iLCJ2aWRlbyIsImJhZGdlIiwiYW5pbWF0YWJsZSIsImd1aWxkUGlsbFBhdGNoIiwiZ3VpbGRQaWxsIiwiZ2V0TW9kdWxlIiwibSIsImRlZmF1bHQiLCJob3ZlcmVkIiwiZ3VpbGRTZXBhcmF0b3JQYXRjaCIsIkd1aWxkcyIsImd1aWxkQ29tcG9uZW50cyIsImdldEJ5UHJvcHMiLCJHdWlsZFNlcGFyYXRvciIsIlNlcGFyYXRvciIsIl9fIiwiZmluZEluUmVhY3RUcmVlIiwiaXNFbXB0eSIsIm1lc3NhZ2VIZWFkZXJQYXRjaCIsIk1lc3NhZ2VIZWFkZXIiLCJmaW5kIiwiYXV0aG9yIiwiZ2V0TmVzdGVkUHJvcCIsImlkIiwiQXJyYXkiLCJpc0FycmF5IiwiY29sb3IiLCJwb3NpdGlvbiIsInRleHQiLCJPYmplY3QiLCJhc3NpZ24iLCJtZW1iZXJMaXN0UGF0Y2giLCJNZW1iZXJMaXN0SXRlbSIsImZpbmRCeURpc3BsYXlOYW1lIiwicmVuZGVyRGVjb3JhdG9ycyIsInVzZXIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsS0FBSyxHQUFHQyx1REFBYyxDQUFDRCxLQUE3QjtBQUNBLE1BQU1FLE9BQU8sR0FBR0MsdURBQWMsQ0FBQ0MsZ0JBQWYsQ0FBZ0MsU0FBaEMsQ0FBaEI7QUFFZSxtRUFBSSxNQUFNQyxnQkFBTixDQUF1QjtBQUV0Q0MsWUFBVSxHQUFHO0FBQ1RDLHNEQUFTLENBQUNDLGNBQVYsQ0FBeUIsS0FBS0MsV0FBTCxDQUFpQkMsSUFBakIsQ0FBc0IsSUFBdEIsQ0FBekIsRUFBc0QsaUJBQXREO0FBQ0FILHNEQUFTLENBQUNDLGNBQVYsQ0FBeUIsS0FBS0csZUFBTCxDQUFxQkQsSUFBckIsQ0FBMEIs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RixhQUFWLENBQXdCMUUsVUFBeEIsRUFBb0MsWUFBcEMsQ0FBYjtBQUNBLFlBQU1HLFFBQVEsR0FBR2xCLGtEQUFTLENBQUN5RixhQUFWLENBQXdCeEUsV0FBeEIsRUFBcUMsZ0JBQXJDLENBQWpCO0FBQ0EsVUFBSSxDQUFDQyxRQUFELElBQWEsQ0FBQ29GLElBQWQsSUFBc0IsQ0FBQ0EsSUFBSSxDQUFDWixFQUE1QixJQUFrQ1ksSUFBSSxDQUFDWixFQUFMLEtBQVksb0JBQWxELEVBQXdFO0FBQ3hFLFVBQUksQ0FBQ0MsS0FBSyxDQUFDQyxPQUFOLENBQWMxRSxRQUFkLENBQUwsRUFBOEI7QUFDOUJBLGNBQVEsQ0FBQ1csSUFBVCxDQUNJcEMsS0FBSyxDQUFDcUMsYUFBTixDQUFvQm5DLE9BQXBCLEVBQTZCO0FBQUNrRyxhQUFLLEVBQUUsT0FBUjtBQUFpQkMsZ0JBQVEsRUFBRSxLQUEzQjtBQUFrQ0MsWUFBSSxFQUFFO0FBQXhDLE9BQTdCLEVBQ0k1RSxLQUFLLElBQUkxQixLQUFLLENBQUNxQyxhQUFOLENBQW9CbkIsTUFBcEIsRUFBNEJxRixNQUFNLENBQUNDLE1BQVAsQ0FBYztBQUFDbEUsaUJBQVMsRUFBRSxpQkFBWjtBQUErQkMsWUFBSSxFQUFFLDZDQUFyQztBQUFvRkMsYUFBSyxFQUFFLFlBQTNGO0FBQXlHQyxjQUFNLEVBQUU7QUFBakgsT0FBZCxFQUEwSWYsS0FBMUksQ0FBNUIsRUFDTDFCLEtBQUssQ0FBQ3FDLGFBQU4sQ0FBb0JLLHdEQUFwQixFQUE0QjtBQUFDQyxZQUFJLEVBQUUsTUFBUDtBQUFlTCxpQkFBUyxFQUFFO0FBQTFCLE9BQTVCLENBREssQ0FEYixDQURKO0FBT0gsS0Fac0IsQ0FBdkI7QUFhSDs7QUEzSXFDLENBQTNCLEVBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21wb25lbnRwYXRjaGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25maWd9IGZyb20gXCJkYXRhXCI7XHJcbmltcG9ydCBXZWJwYWNrTW9kdWxlcyBmcm9tIFwiLi93ZWJwYWNrbW9kdWxlc1wiO1xyXG5pbXBvcnQgRGlzY29yZE1vZHVsZXMgZnJvbSBcIi4vZGlzY29yZG1vZHVsZXNcIjtcclxuaW1wb3J0IFV0aWxpdGllcyBmcm9tIFwiLi91dGlsaXRpZXNcIjtcclxuaW1wb3J0IFBhdGNoZXIgZnJvbSBcIi4vcGF0Y2hlclwiO1xyXG5pbXBvcnQgQkRMb2dvIGZyb20gXCIuLi91aS9pY29ucy9iZGxvZ29cIjtcclxuXHJcbmNvbnN0IFJlYWN0ID0gRGlzY29yZE1vZHVsZXMuUmVhY3Q7XHJcbmNvbnN0IFRvb2x0aXAgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeURpc3BsYXlOYW1lKFwiVG9vbHRpcFwiKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBDb21wb25lbnRQYXRjaGVyIHtcclxuXHJcbiAgICBpbml0aWFsaXplKCkge1xyXG4gICAgICAgIFV0aWxpdGllcy5zdXBwcmVzc0Vycm9ycyh0aGlzLnBhdGNoU29jaWFsLmJpbmQodGhpcyksIFwiQkQgU29jaWFsIFBhdGNoXCIpKCk7XHJcbiAgICAgICAgVXRpbGl0aWVzLnN1cHByZXNzRXJyb3JzKHRoaXMucGF0Y2hHdWlsZFBpbGxzLmJpbmQodGhpcyksIFwiQkQgR3VpbGQgUGlsbHMgUGF0Y2hcIikoKTtcclxuICAgICAgICBVdGlsaXRpZXMuc3VwcHJlc3NFcnJvcnModGhpcy5wYXRjaEd1aWxkTGlzdEl0ZW1zLmJpbmQodGhpcyksIFwiQkQgR3VpbGQgTGlzdCBJdGVtcyBQYXRjaFwiKSgpO1xyXG4gICAgICAgIFV0aWxpdGllcy5zdXBwcmVzc0Vycm9ycyh0aGlzLnBhdGNoR3VpbGRTZXBhcmF0b3IuYmluZCh0aGlzKSwgXCJCRCBHdWlsZCBTZXBhcmF0b3IgUGF0Y2hcIikoKTtcclxuICAgICAgICBVdGlsaXRpZXMuc3VwcHJlc3NFcnJvcnModGhpcy5wYXRjaE1lc3NhZ2VIZWFkZXIuYmluZCh0aGlzKSwgXCJCRCBNZXNzYWdlIEhlYWRlciBQYXRjaFwiKSgpO1xyXG4gICAgICAgIFV0aWxpdGllcy5zdXBwcmVzc0Vycm9ycyh0aGlzLnBhdGNoTWVtYmVyTGlzdC5iaW5kKHRoaXMpLCBcIkJEIE1lbWJlciBMaXN0IFBhdGNoXCIpKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcGF0Y2hTb2NpYWwoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc29jaWFsUGF0Y2gpIHJldHVybjtcclxuICAgICAgICBjb25zdCBUYWJCYXIgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeURpc3BsYXlOYW1lKFwiVGFiQmFyXCIpO1xyXG4gICAgICAgIGNvbnN0IEFuY2hvciA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5RGlzcGxheU5hbWUoXCJBbmNob3JcIik7XHJcbiAgICAgICAgaWYgKCFUYWJCYXIpIHJldHVybjtcclxuICAgICAgICB0aGlzLnNvY2lhbFBhdGNoID0gUGF0Y2hlci5hZnRlcihcIkNvbXBvbmVudFBhdGNoZXJcIiwgVGFiQmFyLnByb3RvdHlwZSwgXCJyZW5kZXJcIiwgKHRoaXNPYmplY3QsIGFyZ3MsIHJldHVyblZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gcmV0dXJuVmFsdWUucHJvcHMuY2hpbGRyZW47XHJcbiAgICAgICAgICAgIGlmICghY2hpbGRyZW4gfHwgIWNoaWxkcmVuLmxlbmd0aCB8fCBjaGlsZHJlbi5sZW5ndGggPCAzKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmIChjaGlsZHJlbltjaGlsZHJlbi5sZW5ndGggLSAzXS50eXBlLmRpc3BsYXlOYW1lICE9PSBcIlNlcGFyYXRvclwiKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmICghY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMl0udHlwZS50b1N0cmluZygpLmluY2x1ZGVzKFwic29jaWFsTGlua3NcIikpIHJldHVybjtcclxuICAgICAgICAgICAgaWYgKEFuY2hvcikge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWwgPSBjaGlsZHJlbltjaGlsZHJlbi5sZW5ndGggLSAyXS50eXBlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3T25lID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmV0dXJuVmFsID0gb3JpZ2luYWwoLi4uYXJndW1lbnRzKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWwucHJvcHMuY2hpbGRyZW4ucHVzaChcclxuICAgICAgICAgICAgICAgICAgICAgICAgRGlzY29yZE1vZHVsZXMuUmVhY3QuY3JlYXRlRWxlbWVudChBbmNob3IsIHtjbGFzc05hbWU6IFwiYmQtc29jaWFsLWxpbmtcIiwgaHJlZjogXCJodHRwczovL3R3aXR0ZXIuY29tL0JhbmRhZ2VkQkRcIiwgdGl0bGU6IFwiQmFuZGFnZWRCRFwiLCB0YXJnZXQ6IFwiX2JsYW5rXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzY29yZE1vZHVsZXMuUmVhY3QuY3JlYXRlRWxlbWVudChCRExvZ28sIHtzaXplOiBcIjE2cHhcIiwgY2xhc3NOYW1lOiBcImJkLXNvY2lhbC1sb2dvXCJ9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0dXJuVmFsO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIGNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDJdLnR5cGUgPSBuZXdPbmU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGluamVjdG9yID0gRGlzY29yZE1vZHVsZXMuUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7Y2xhc3NOYW1lOiBcImNvbG9yTXV0ZWQtSGRGdDRxIHNpemUxMi0zY0x2YkpcIn0sIGBJbmplY3RvciAke0NvbmZpZy52ZXJzaW9ufWApO1xyXG4gICAgICAgICAgICBjb25zdCB2ZXJzaW9uSGFzaCA9IGAoJHtDb25maWcuaGFzaCA/IENvbmZpZy5oYXNoLnN1YnN0cmluZygwLCA3KSA6IENvbmZpZy5icmFuY2h9KWA7XHJcbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWwgPSBEaXNjb3JkTW9kdWxlcy5SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtjbGFzc05hbWU6IFwiY29sb3JNdXRlZC1IZEZ0NHEgc2l6ZTEyLTNjTHZiSlwifSwgYEJCRCAke0NvbmZpZy5iYmRWZXJzaW9ufSBgLCBEaXNjb3JkTW9kdWxlcy5SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7Y2xhc3NOYW1lOiBcInZlcnNpb25IYXNoLTJnWGpJQiBkYS12ZXJzaW9uSGFzaFwifSwgdmVyc2lvbkhhc2gpKTtcclxuICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbFZlcnNpb25zID0gY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMV0udHlwZTtcclxuICAgICAgICAgICAgY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMV0udHlwZSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmV0dXJuVmFsID0gb3JpZ2luYWxWZXJzaW9ucyguLi5hcmd1bWVudHMpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuVmFsLnByb3BzLmNoaWxkcmVuLnNwbGljZShyZXR1cm5WYWwucHJvcHMuY2hpbGRyZW4ubGVuZ3RoIC0gMSwgMCwgaW5qZWN0b3IpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuVmFsLnByb3BzLmNoaWxkcmVuLnNwbGljZSgxLCAwLCBhZGRpdGlvbmFsKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWw7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcGF0Y2hHdWlsZExpc3RJdGVtcygpIHtcclxuICAgICAgICBpZiAodGhpcy5ndWlsZExpc3RJdGVtc1BhdGNoKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgbGlzdEl0ZW1DbGFzcyA9IERpc2NvcmRNb2R1bGVzLkd1aWxkQ2xhc3Nlcy5saXN0SXRlbS5zcGxpdChcIiBcIilbMF07XHJcbiAgICAgICAgY29uc3QgYmxvYkNsYXNzID0gRGlzY29yZE1vZHVsZXMuR3VpbGRDbGFzc2VzLmJsb2JDb250YWluZXIuc3BsaXQoXCIgXCIpWzBdO1xyXG4gICAgICAgIGNvbnN0IHJlYWN0SW5zdGFuY2UgPSBVdGlsaXRpZXMuZ2V0UmVhY3RJbnN0YW5jZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHtsaXN0SXRlbUNsYXNzfSAuJHtibG9iQ2xhc3N9YCkucGFyZW50RWxlbWVudCk7XHJcbiAgICAgICAgY29uc3QgR3VpbGRDb21wb25lbnQgPSByZWFjdEluc3RhbmNlLnJldHVybi50eXBlO1xyXG4gICAgICAgIGlmICghR3VpbGRDb21wb25lbnQpIHJldHVybjtcclxuICAgICAgICB0aGlzLmd1aWxkTGlzdEl0ZW1zUGF0Y2ggPSBQYXRjaGVyLmFmdGVyKFwiQ29tcG9uZW50UGF0Y2hlclwiLCBHdWlsZENvbXBvbmVudC5wcm90b3R5cGUsIFwicmVuZGVyXCIsICh0aGlzT2JqZWN0LCBfLCByZXR1cm5WYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXJldHVyblZhbHVlIHx8ICF0aGlzT2JqZWN0KSByZXR1cm47XHJcbiAgICAgICAgICAgIGNvbnN0IGd1aWxkRGF0YSA9IHRoaXNPYmplY3QucHJvcHM7XHJcbiAgICAgICAgICAgIHJldHVyblZhbHVlLnByb3BzLmNsYXNzTmFtZSArPSBcIiBiZC1ndWlsZFwiO1xyXG4gICAgICAgICAgICBpZiAoZ3VpbGREYXRhLnVucmVhZCkgcmV0dXJuVmFsdWUucHJvcHMuY2xhc3NOYW1lICs9IFwiIGJkLXVucmVhZFwiO1xyXG4gICAgICAgICAgICBpZiAoZ3VpbGREYXRhLnNlbGVjdGVkKSByZXR1cm5WYWx1ZS5wcm9wcy5jbGFzc05hbWUgKz0gXCIgYmQtc2VsZWN0ZWRcIjtcclxuICAgICAgICAgICAgaWYgKGd1aWxkRGF0YS5hdWRpbykgcmV0dXJuVmFsdWUucHJvcHMuY2xhc3NOYW1lICs9IFwiIGJkLWF1ZGlvXCI7XHJcbiAgICAgICAgICAgIGlmIChndWlsZERhdGEudmlkZW8pIHJldHVyblZhbHVlLnByb3BzLmNsYXNzTmFtZSArPSBcIiBiZC12aWRlb1wiO1xyXG4gICAgICAgICAgICBpZiAoZ3VpbGREYXRhLmJhZGdlKSByZXR1cm5WYWx1ZS5wcm9wcy5jbGFzc05hbWUgKz0gXCIgYmQtYmFkZ2VcIjtcclxuICAgICAgICAgICAgaWYgKGd1aWxkRGF0YS5hbmltYXRhYmxlKSByZXR1cm5WYWx1ZS5wcm9wcy5jbGFzc05hbWUgKz0gXCIgYmQtYW5pbWF0YWJsZVwiO1xyXG4gICAgICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcGF0Y2hHdWlsZFBpbGxzKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmd1aWxkUGlsbFBhdGNoKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgZ3VpbGRQaWxsID0gV2VicGFja01vZHVsZXMuZ2V0TW9kdWxlKG0gPT4gbS5kZWZhdWx0ICYmICFtLmRlZmF1bHQuZGlzcGxheU5hbWUgJiYgbS5kZWZhdWx0LnRvU3RyaW5nICYmIG0uZGVmYXVsdC50b1N0cmluZygpLmluY2x1ZGVzKFwidHJhbnNsYXRlM2RcIikpO1xyXG4gICAgICAgIGlmICghZ3VpbGRQaWxsKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5ndWlsZFBpbGxQYXRjaCA9IFBhdGNoZXIuYWZ0ZXIoXCJDb21wb25lbnRQYXRjaGVyXCIsIGd1aWxkUGlsbCwgXCJkZWZhdWx0XCIsIChfLCBhcmdzLCByZXR1cm5WYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBwcm9wcyA9IGFyZ3NbMF07XHJcbiAgICAgICAgICAgIGlmIChwcm9wcy51bnJlYWQpIHJldHVyblZhbHVlLnByb3BzLmNsYXNzTmFtZSArPSBcIiBiZC11bnJlYWRcIjtcclxuICAgICAgICAgICAgaWYgKHByb3BzLnNlbGVjdGVkKSByZXR1cm5WYWx1ZS5wcm9wcy5jbGFzc05hbWUgKz0gXCIgYmQtc2VsZWN0ZWRcIjtcclxuICAgICAgICAgICAgaWYgKHByb3BzLmhvdmVyZWQpIHJldHVyblZhbHVlLnByb3BzLmNsYXNzTmFtZSArPSBcIiBiZC1ob3ZlcmVkXCI7XHJcbiAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwYXRjaEd1aWxkU2VwYXJhdG9yKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmd1aWxkU2VwYXJhdG9yUGF0Y2gpIHJldHVybjtcclxuICAgICAgICBjb25zdCBHdWlsZHMgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeURpc3BsYXlOYW1lKFwiR3VpbGRzXCIpO1xyXG4gICAgICAgIGNvbnN0IGd1aWxkQ29tcG9uZW50cyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJyZW5kZXJMaXN0SXRlbVwiKTtcclxuICAgICAgICBpZiAoIWd1aWxkQ29tcG9uZW50cyB8fCAhR3VpbGRzKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgR3VpbGRTZXBhcmF0b3IgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgY29uc3QgcmV0dXJuVmFsdWUgPSBndWlsZENvbXBvbmVudHMuU2VwYXJhdG9yKC4uLmFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgIHJldHVyblZhbHVlLnByb3BzLmNsYXNzTmFtZSArPSBcIiBiZC1ndWlsZC1zZXBhcmF0b3JcIjtcclxuICAgICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5ndWlsZFNlcGFyYXRvclBhdGNoID0gUGF0Y2hlci5hZnRlcihcIkNvbXBvbmVudFBhdGNoZXJcIiwgR3VpbGRzLnByb3RvdHlwZSwgXCJyZW5kZXJcIiwgKF8sIF9fLCByZXR1cm5WYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBTZXBhcmF0b3IgPSBVdGlsaXRpZXMuZmluZEluUmVhY3RUcmVlKHJldHVyblZhbHVlLCBtID0+IG0udHlwZSAmJiAhbS50eXBlLmRpc3BsYXlOYW1lICYmIHR5cGVvZihtLnR5cGUpID09IFwiZnVuY3Rpb25cIiAmJiBVdGlsaXRpZXMuaXNFbXB0eShtLnByb3BzKSk7XHJcbiAgICAgICAgICAgIGlmICghU2VwYXJhdG9yKSByZXR1cm47XHJcbiAgICAgICAgICAgIFNlcGFyYXRvci50eXBlID0gR3VpbGRTZXBhcmF0b3I7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcGF0Y2hNZXNzYWdlSGVhZGVyKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2VIZWFkZXJQYXRjaCkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IE1lc3NhZ2VIZWFkZXIgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiTWVzc2FnZVRpbWVzdGFtcFwiKTtcclxuICAgICAgICBjb25zdCBBbmNob3IgPSBXZWJwYWNrTW9kdWxlcy5maW5kKG0gPT4gbS5kaXNwbGF5TmFtZSA9PSBcIkFuY2hvclwiKTtcclxuICAgICAgICBpZiAoIUFuY2hvciB8fCAhTWVzc2FnZUhlYWRlciB8fCAhTWVzc2FnZUhlYWRlci5kZWZhdWx0KSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlSGVhZGVyUGF0Y2ggPSBQYXRjaGVyLmFmdGVyKFwiQ29tcG9uZW50UGF0Y2hlclwiLCBNZXNzYWdlSGVhZGVyLCBcImRlZmF1bHRcIiwgKF8sIGFyZ3MsIHJldHVyblZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGF1dGhvciA9IFV0aWxpdGllcy5nZXROZXN0ZWRQcm9wKGFyZ3NbMF0sIFwibWVzc2FnZS5hdXRob3JcIik7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gVXRpbGl0aWVzLmdldE5lc3RlZFByb3AocmV0dXJuVmFsdWUsIFwicHJvcHMuY2hpbGRyZW4uMS5wcm9wcy5jaGlsZHJlbi4xLnByb3BzLmNoaWxkcmVuXCIpO1xyXG4gICAgICAgICAgICBpZiAoIWNoaWxkcmVuIHx8ICFhdXRob3IgfHwgIWF1dGhvci5pZCB8fCBhdXRob3IuaWQgIT09IFwiMjQ5NzQ2MjM2MDA4MTY5NDczXCIpIHJldHVybjtcclxuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkgcmV0dXJuO1xyXG4gICAgICAgICAgICBjaGlsZHJlbi5wdXNoKFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUb29sdGlwLCB7Y29sb3I6IFwiYmxhY2tcIiwgcG9zaXRpb246IFwidG9wXCIsIHRleHQ6IFwiQmFuZGFnZWRCRCBEZXZlbG9wZXJcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMgPT4gUmVhY3QuY3JlYXRlRWxlbWVudChBbmNob3IsIE9iamVjdC5hc3NpZ24oe2NsYXNzTmFtZTogXCJiZC1jaGF0LWJhZGdlXCIsIGhyZWY6IFwiaHR0cHM6Ly9naXRodWIuY29tL3JhdWVuemkvQmV0dGVyRGlzY29yZEFwcFwiLCB0aXRsZTogXCJCYW5kYWdlZEJEXCIsIHRhcmdldDogXCJfYmxhbmtcIn0sIHByb3BzKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChCRExvZ28sIHtzaXplOiBcIjE2cHhcIiwgY2xhc3NOYW1lOiBcImJkLWxvZ29cIn0pXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHBhdGNoTWVtYmVyTGlzdCgpIHtcclxuICAgICAgICBpZiAodGhpcy5tZW1iZXJMaXN0UGF0Y2gpIHJldHVybjtcclxuICAgICAgICBjb25zdCBNZW1iZXJMaXN0SXRlbSA9IFdlYnBhY2tNb2R1bGVzLmZpbmRCeURpc3BsYXlOYW1lKFwiTWVtYmVyTGlzdEl0ZW1cIik7XHJcbiAgICAgICAgY29uc3QgQW5jaG9yID0gV2VicGFja01vZHVsZXMuZmluZChtID0+IG0uZGlzcGxheU5hbWUgPT0gXCJBbmNob3JcIik7XHJcbiAgICAgICAgaWYgKCFBbmNob3IgfHwgIU1lbWJlckxpc3RJdGVtIHx8ICFNZW1iZXJMaXN0SXRlbS5wcm90b3R5cGUgfHwgIU1lbWJlckxpc3RJdGVtLnByb3RvdHlwZS5yZW5kZXJEZWNvcmF0b3JzKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5tZW1iZXJMaXN0UGF0Y2ggPSBQYXRjaGVyLmFmdGVyKFwiQ29tcG9uZW50UGF0Y2hlclwiLCBNZW1iZXJMaXN0SXRlbS5wcm90b3R5cGUsIFwicmVuZGVyRGVjb3JhdG9yc1wiLCAodGhpc09iamVjdCwgYXJncywgcmV0dXJuVmFsdWUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdXNlciA9IFV0aWxpdGllcy5nZXROZXN0ZWRQcm9wKHRoaXNPYmplY3QsIFwicHJvcHMudXNlclwiKTtcclxuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBVdGlsaXRpZXMuZ2V0TmVzdGVkUHJvcChyZXR1cm5WYWx1ZSwgXCJwcm9wcy5jaGlsZHJlblwiKTtcclxuICAgICAgICAgICAgaWYgKCFjaGlsZHJlbiB8fCAhdXNlciB8fCAhdXNlci5pZCB8fCB1c2VyLmlkICE9PSBcIjI0OTc0NjIzNjAwODE2OTQ3M1wiKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHJldHVybjtcclxuICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVG9vbHRpcCwge2NvbG9yOiBcImJsYWNrXCIsIHBvc2l0aW9uOiBcInRvcFwiLCB0ZXh0OiBcIkJhbmRhZ2VkQkQgRGV2ZWxvcGVyXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3BzID0+IFJlYWN0LmNyZWF0ZUVsZW1lbnQoQW5jaG9yLCBPYmplY3QuYXNzaWduKHtjbGFzc05hbWU6IFwiYmQtbWVtYmVyLWJhZGdlXCIsIGhyZWY6IFwiaHR0cHM6Ly9naXRodWIuY29tL3JhdWVuemkvQmV0dGVyRGlzY29yZEFwcFwiLCB0aXRsZTogXCJCYW5kYWdlZEJEXCIsIHRhcmdldDogXCJfYmxhbmtcIn0sIHByb3BzKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChCRExvZ28sIHtzaXplOiBcIjE2cHhcIiwgY2xhc3NOYW1lOiBcImJkLWxvZ29cIn0pXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/componentpatcher.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _data_data_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../data/data.js */ \"./src/data/data.js\");\n/* harmony import */ var _webpackmodules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./webpackmodules */ \"./src/modules/webpackmodules.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _patcher__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./patcher */ \"./src/modules/patcher.js\");\n/* harmony import */ var _ui_icons_bdlogo__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../ui/icons/bdlogo */ \"./src/ui/icons/bdlogo.jsx\");\n\n\n\n\n\n\nconst React = _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].React;\nconst Tooltip = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByDisplayName(\"Tooltip\");\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ComponentPatcher {\n initialize() {\n _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].suppressErrors(this.patchSocial.bind(this), \"BD Social Patch\")();\n _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].suppressErrors(this.patchGuildPills.bind(this), \"BD Guild Pills Patch\")();\n _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].suppressErrors(this.patchGuildListItems.bind(this), \"BD Guild List Items Patch\")();\n _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].suppressErrors(this.patchGuildSeparator.bind(this), \"BD Guild Separator Patch\")();\n _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].suppressErrors(this.patchMessageHeader.bind(this), \"BD Message Header Patch\")();\n _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].suppressErrors(this.patchMemberList.bind(this), \"BD Member List Patch\")();\n }\n\n patchSocial() {\n if (this.socialPatch) return;\n const TabBar = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByDisplayName(\"TabBar\");\n const Anchor = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByDisplayName(\"Anchor\");\n if (!TabBar) return;\n this.socialPatch = _patcher__WEBPACK_IMPORTED_MODULE_4__[\"default\"].after(\"ComponentPatcher\", TabBar.prototype, \"render\", (thisObject, args, returnValue) => {\n const children = returnValue.props.children;\n if (!children || !children.length || children.length < 3) return;\n if (children[children.length - 3].type.displayName !== \"Separator\") return;\n if (!children[children.length - 2].type.toString().includes(\"socialLinks\")) return;\n\n if (Anchor) {\n const original = children[children.length - 2].type;\n\n const newOne = function () {\n const returnVal = original(...arguments);\n returnVal.props.children.push(_discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].React.createElement(Anchor, {\n className: \"bd-social-link\",\n href: \"https://twitter.com/BandagedBD\",\n title: \"BandagedBD\",\n target: \"_blank\"\n }, _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].React.createElement(_ui_icons_bdlogo__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n size: \"16px\",\n className: \"bd-social-logo\"\n })));\n return returnVal;\n };\n\n children[children.length - 2].type = newOne;\n }\n\n const injector = _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].React.createElement(\"div\", {\n className: \"colorMuted-HdFt4q size12-3cLvbJ\"\n }, `Injector ${_data_data_js__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].version}`);\n const versionHash = `(${_data_data_js__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].hash ? _data_data_js__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].hash.substring(0, 7) : _data_data_js__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].branch})`;\n const additional = _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].React.createElement(\"div\", {\n className: \"colorMuted-HdFt4q size12-3cLvbJ\"\n }, `BBD ${_data_data_js__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].bbdVersion} `, _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].React.createElement(\"span\", {\n className: \"versionHash-2gXjIB da-versionHash\"\n }, versionHash));\n const originalVersions = children[children.length - 1].type;\n\n children[children.length - 1].type = function () {\n const returnVal = originalVersions(...arguments);\n returnVal.props.children.splice(returnVal.props.children.length - 1, 0, injector);\n returnVal.props.children.splice(1, 0, additional);\n return returnVal;\n };\n });\n }\n\n patchGuildListItems() {\n if (this.guildListItemsPatch) return;\n const listItemClass = _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].GuildClasses.listItem.split(\" \")[0];\n const blobClass = _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].GuildClasses.blobContainer.split(\" \")[0];\n const reactInstance = _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getReactInstance(document.querySelector(`.${listItemClass} .${blobClass}`).parentElement);\n const GuildComponent = reactInstance.return.type;\n if (!GuildComponent) return;\n this.guildListItemsPatch = _patcher__WEBPACK_IMPORTED_MODULE_4__[\"default\"].after(\"ComponentPatcher\", GuildComponent.prototype, \"render\", (thisObject, _, returnValue) => {\n if (!returnValue || !thisObject) return;\n const guildData = thisObject.props;\n returnValue.props.className += \" bd-guild\";\n if (guildData.unread) returnValue.props.className += \" bd-unread\";\n if (guildData.selected) returnValue.props.className += \" bd-selected\";\n if (guildData.audio) returnValue.props.className += \" bd-audio\";\n if (guildData.video) returnValue.props.className += \" bd-video\";\n if (guildData.badge) returnValue.props.className += \" bd-badge\";\n if (guildData.animatable) returnValue.props.className += \" bd-animatable\";\n return returnValue;\n });\n }\n\n patchGuildPills() {\n if (this.guildPillPatch) return;\n const guildPill = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getModule(m => m.default && !m.default.displayName && m.default.toString && m.default.toString().includes(\"translate3d\"));\n if (!guildPill) return;\n this.guildPillPatch = _patcher__WEBPACK_IMPORTED_MODULE_4__[\"default\"].after(\"ComponentPatcher\", guildPill, \"default\", (_, args, returnValue) => {\n const props = args[0];\n if (props.unread) returnValue.props.className += \" bd-unread\";\n if (props.selected) returnValue.props.className += \" bd-selected\";\n if (props.hovered) returnValue.props.className += \" bd-hovered\";\n return returnValue;\n });\n }\n\n patchGuildSeparator() {\n if (this.guildSeparatorPatch) return;\n const Guilds = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByDisplayName(\"Guilds\");\n const guildComponents = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"renderListItem\");\n if (!guildComponents || !Guilds) return;\n\n const GuildSeparator = function () {\n const returnValue = guildComponents.Separator(...arguments);\n returnValue.props.className += \" bd-guild-separator\";\n return returnValue;\n };\n\n this.guildSeparatorPatch = _patcher__WEBPACK_IMPORTED_MODULE_4__[\"default\"].after(\"ComponentPatcher\", Guilds.prototype, \"render\", (_, __, returnValue) => {\n const Separator = _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].findInReactTree(returnValue, m => m.type && !m.type.displayName && typeof m.type == \"function\" && _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].isEmpty(m.props));\n if (!Separator) return;\n Separator.type = GuildSeparator;\n });\n }\n\n patchMessageHeader() {\n if (this.messageHeaderPatch) return;\n const MessageHeader = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"MessageTimestamp\");\n const Anchor = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].find(m => m.displayName == \"Anchor\");\n if (!Anchor || !MessageHeader || !MessageHeader.default) return;\n this.messageHeaderPatch = _patcher__WEBPACK_IMPORTED_MODULE_4__[\"default\"].after(\"ComponentPatcher\", MessageHeader, \"default\", (_, args, returnValue) => {\n const author = _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getNestedProp(args[0], \"message.author\");\n const children = _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getNestedProp(returnValue, \"props.children.1.props.children.1.props.children\");\n if (!children || !author || !author.id || author.id !== \"249746236008169473\") return;\n if (!Array.isArray(children)) return;\n children.push(React.createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: \"BandagedBD Developer\"\n }, props => React.createElement(Anchor, Object.assign({\n className: \"bd-chat-badge\",\n href: \"https://github.com/rauenzi/BetterDiscordApp\",\n title: \"BandagedBD\",\n target: \"_blank\"\n }, props), React.createElement(_ui_icons_bdlogo__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n size: \"16px\",\n className: \"bd-logo\"\n }))));\n });\n }\n\n patchMemberList() {\n if (this.memberListPatch) return;\n const MemberListItem = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].findByDisplayName(\"MemberListItem\");\n const Anchor = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].find(m => m.displayName == \"Anchor\");\n if (!Anchor || !MemberListItem || !MemberListItem.prototype || !MemberListItem.prototype.renderDecorators) return;\n this.memberListPatch = _patcher__WEBPACK_IMPORTED_MODULE_4__[\"default\"].after(\"ComponentPatcher\", MemberListItem.prototype, \"renderDecorators\", (thisObject, args, returnValue) => {\n const user = _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getNestedProp(thisObject, \"props.user\");\n const children = _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getNestedProp(returnValue, \"props.children\");\n if (!children || !user || !user.id || user.id !== \"249746236008169473\") return;\n if (!Array.isArray(children)) return;\n children.push(React.createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: \"BandagedBD Developer\"\n }, props => React.createElement(Anchor, Object.assign({\n className: \"bd-member-badge\",\n href: \"https://github.com/rauenzi/BetterDiscordApp\",\n title: \"BandagedBD\",\n target: \"_blank\"\n }, props), React.createElement(_ui_icons_bdlogo__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n size: \"16px\",\n className: \"bd-logo\"\n }))));\n });\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb21wb25lbnRwYXRjaGVyLmpzPzJmMDIiXSwibmFtZXMiOlsiUmVhY3QiLCJEaXNjb3JkTW9kdWxlcyIsIlRvb2x0aXAiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5RGlzcGxheU5hbWUiLCJDb21wb25lbnRQYXRjaGVyIiwiaW5pdGlhbGl6ZSIsIlV0aWxpdGllcyIsInN1cHByZXNzRXJyb3JzIiwicGF0Y2hTb2NpYWwiLCJiaW5kIiwicGF0Y2hHdWlsZFBpbGxzIiwicGF0Y2hHdWlsZExpc3RJdGVtcyIsInBhdGNoR3VpbGRTZXBhcmF0b3IiLCJwYXRjaE1lc3NhZ2VIZWFkZXIiLCJwYXRjaE1lbWJlckxpc3QiLCJzb2NpYWxQYXRjaCIsIlRhYkJhciIsIkFuY2hvciIsIlBhdGNoZXIiLCJhZnRlciIsInByb3RvdHlwZSIsInRoaXNPYmplY3QiLCJhcmdzIiwicmV0dXJuVmFsdWUiLCJjaGlsZHJlbiIsInByb3BzIiwibGVuZ3RoIiwidHlwZSIsImRpc3BsYXlOYW1lIiwidG9TdHJpbmciLCJpbmNsdWRlcyIsIm9yaWdpbmFsIiwibmV3T25lIiwicmV0dXJuVmFsIiwiYXJndW1lbnRzIiwicHVzaCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJocmVmIiwidGl0bGUiLCJ0YXJnZXQiLCJCRExvZ28iLCJzaXplIiwiaW5qZWN0b3IiLCJDb25maWciLCJ2ZXJzaW9uIiwidmVyc2lvbkhhc2giLCJoYXNoIiwic3Vic3RyaW5nIiwiYnJhbmNoIiwiYWRkaXRpb25hbCIsImJiZFZlcnNpb24iLCJvcmlnaW5hbFZlcnNpb25zIiwic3BsaWNlIiwiZ3VpbGRMaXN0SXRlbXNQYXRjaCIsImxpc3RJdGVtQ2xhc3MiLCJHdWlsZENsYXNzZXMiLCJsaXN0SXRlbSIsInNwbGl0IiwiYmxvYkNsYXNzIiwiYmxvYkNvbnRhaW5lciIsInJlYWN0SW5zdGFuY2UiLCJnZXRSZWFjdEluc3RhbmNlIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwicGFyZW50RWxlbWVudCIsIkd1aWxkQ29tcG9uZW50IiwicmV0dXJuIiwiXyIsImd1aWxkRGF0YSIsInVucmVhZCIsInNlbGVjdGVkIiwiYXVkaW8iLCJ2aWRlbyIsImJhZGdlIiwiYW5pbWF0YWJsZSIsImd1aWxkUGlsbFBhdGNoIiwiZ3VpbGRQaWxsIiwiZ2V0TW9kdWxlIiwibSIsImRlZmF1bHQiLCJob3ZlcmVkIiwiZ3VpbGRTZXBhcmF0b3JQYXRjaCIsIkd1aWxkcyIsImd1aWxkQ29tcG9uZW50cyIsImdldEJ5UHJvcHMiLCJHdWlsZFNlcGFyYXRvciIsIlNlcGFyYXRvciIsIl9fIiwiZmluZEluUmVhY3RUcmVlIiwiaXNFbXB0eSIsIm1lc3NhZ2VIZWFkZXJQYXRjaCIsIk1lc3NhZ2VIZWFkZXIiLCJmaW5kIiwiYXV0aG9yIiwiZ2V0TmVzdGVkUHJvcCIsImlkIiwiQXJyYXkiLCJpc0FycmF5IiwiY29sb3IiLCJwb3NpdGlvbiIsInRleHQiLCJPYmplY3QiLCJhc3NpZ24iLCJtZW1iZXJMaXN0UGF0Y2giLCJNZW1iZXJMaXN0SXRlbSIsImZpbmRCeURpc3BsYXlOYW1lIiwicmVuZGVyRGVjb3JhdG9ycyIsInVzZXIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsS0FBSyxHQUFHQyx1REFBYyxDQUFDRCxLQUE3QjtBQUNBLE1BQU1FLE9BQU8sR0FBR0MsdURBQWMsQ0FBQ0MsZ0JBQWYsQ0FBZ0MsU0FBaEMsQ0FBaEI7QUFFZSxtRUFBSSxNQUFNQyxnQkFBTixDQUF1QjtBQUV0Q0MsWUFBVSxHQUFHO0FBQ1RDLHNEQUFTLENBQUNDLGNBQVYsQ0FBeUIsS0FBS0MsV0FBTCxDQUFpQkMsSUFBakIsQ0FBc0IsSUFBdEIsQ0FBekIsRUFBc0QsaUJBQXREO0FBQ0FILHNEQUFTLENBQUNDLGNBQVYsQ0FBeUIsS0FBS0csZUFBTCxDQUFxQkQsSUFBckIsQ0FBMEIs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RixhQUFWLENBQXdCMUUsVUFBeEIsRUFBb0MsWUFBcEMsQ0FBYjtBQUNBLFlBQU1HLFFBQVEsR0FBR2xCLGtEQUFTLENBQUN5RixhQUFWLENBQXdCeEUsV0FBeEIsRUFBcUMsZ0JBQXJDLENBQWpCO0FBQ0EsVUFBSSxDQUFDQyxRQUFELElBQWEsQ0FBQ29GLElBQWQsSUFBc0IsQ0FBQ0EsSUFBSSxDQUFDWixFQUE1QixJQUFrQ1ksSUFBSSxDQUFDWixFQUFMLEtBQVksb0JBQWxELEVBQXdFO0FBQ3hFLFVBQUksQ0FBQ0MsS0FBSyxDQUFDQyxPQUFOLENBQWMxRSxRQUFkLENBQUwsRUFBOEI7QUFDOUJBLGNBQVEsQ0FBQ1csSUFBVCxDQUNJcEMsS0FBSyxDQUFDcUMsYUFBTixDQUFvQm5DLE9BQXBCLEVBQTZCO0FBQUNrRyxhQUFLLEVBQUUsT0FBUjtBQUFpQkMsZ0JBQVEsRUFBRSxLQUEzQjtBQUFrQ0MsWUFBSSxFQUFFO0FBQXhDLE9BQTdCLEVBQ0k1RSxLQUFLLElBQUkxQixLQUFLLENBQUNxQyxhQUFOLENBQW9CbkIsTUFBcEIsRUFBNEJxRixNQUFNLENBQUNDLE1BQVAsQ0FBYztBQUFDbEUsaUJBQVMsRUFBRSxpQkFBWjtBQUErQkMsWUFBSSxFQUFFLDZDQUFyQztBQUFvRkMsYUFBSyxFQUFFLFlBQTNGO0FBQXlHQyxjQUFNLEVBQUU7QUFBakgsT0FBZCxFQUEwSWYsS0FBMUksQ0FBNUIsRUFDTDFCLEtBQUssQ0FBQ3FDLGFBQU4sQ0FBb0JLLHdEQUFwQixFQUE0QjtBQUFDQyxZQUFJLEVBQUUsTUFBUDtBQUFlTCxpQkFBUyxFQUFFO0FBQTFCLE9BQTVCLENBREssQ0FEYixDQURKO0FBT0gsS0Fac0IsQ0FBdkI7QUFhSDs7QUEzSXFDLENBQTNCLEVBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21wb25lbnRwYXRjaGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25maWd9IGZyb20gXCJkYXRhXCI7XHJcbmltcG9ydCBXZWJwYWNrTW9kdWxlcyBmcm9tIFwiLi93ZWJwYWNrbW9kdWxlc1wiO1xyXG5pbXBvcnQgRGlzY29yZE1vZHVsZXMgZnJvbSBcIi4vZGlzY29yZG1vZHVsZXNcIjtcclxuaW1wb3J0IFV0aWxpdGllcyBmcm9tIFwiLi91dGlsaXRpZXNcIjtcclxuaW1wb3J0IFBhdGNoZXIgZnJvbSBcIi4vcGF0Y2hlclwiO1xyXG5pbXBvcnQgQkRMb2dvIGZyb20gXCIuLi91aS9pY29ucy9iZGxvZ29cIjtcclxuXHJcbmNvbnN0IFJlYWN0ID0gRGlzY29yZE1vZHVsZXMuUmVhY3Q7XHJcbmNvbnN0IFRvb2x0aXAgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeURpc3BsYXlOYW1lKFwiVG9vbHRpcFwiKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBDb21wb25lbnRQYXRjaGVyIHtcclxuXHJcbiAgICBpbml0aWFsaXplKCkge1xyXG4gICAgICAgIFV0aWxpdGllcy5zdXBwcmVzc0Vycm9ycyh0aGlzLnBhdGNoU29jaWFsLmJpbmQodGhpcyksIFwiQkQgU29jaWFsIFBhdGNoXCIpKCk7XHJcbiAgICAgICAgVXRpbGl0aWVzLnN1cHByZXNzRXJyb3JzKHRoaXMucGF0Y2hHdWlsZFBpbGxzLmJpbmQodGhpcyksIFwiQkQgR3VpbGQgUGlsbHMgUGF0Y2hcIikoKTtcclxuICAgICAgICBVdGlsaXRpZXMuc3VwcHJlc3NFcnJvcnModGhpcy5wYXRjaEd1aWxkTGlzdEl0ZW1zLmJpbmQodGhpcyksIFwiQkQgR3VpbGQgTGlzdCBJdGVtcyBQYXRjaFwiKSgpO1xyXG4gICAgICAgIFV0aWxpdGllcy5zdXBwcmVzc0Vycm9ycyh0aGlzLnBhdGNoR3VpbGRTZXBhcmF0b3IuYmluZCh0aGlzKSwgXCJCRCBHdWlsZCBTZXBhcmF0b3IgUGF0Y2hcIikoKTtcclxuICAgICAgICBVdGlsaXRpZXMuc3VwcHJlc3NFcnJvcnModGhpcy5wYXRjaE1lc3NhZ2VIZWFkZXIuYmluZCh0aGlzKSwgXCJCRCBNZXNzYWdlIEhlYWRlciBQYXRjaFwiKSgpO1xyXG4gICAgICAgIFV0aWxpdGllcy5zdXBwcmVzc0Vycm9ycyh0aGlzLnBhdGNoTWVtYmVyTGlzdC5iaW5kKHRoaXMpLCBcIkJEIE1lbWJlciBMaXN0IFBhdGNoXCIpKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcGF0Y2hTb2NpYWwoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc29jaWFsUGF0Y2gpIHJldHVybjtcclxuICAgICAgICBjb25zdCBUYWJCYXIgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeURpc3BsYXlOYW1lKFwiVGFiQmFyXCIpO1xyXG4gICAgICAgIGNvbnN0IEFuY2hvciA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5RGlzcGxheU5hbWUoXCJBbmNob3JcIik7XHJcbiAgICAgICAgaWYgKCFUYWJCYXIpIHJldHVybjtcclxuICAgICAgICB0aGlzLnNvY2lhbFBhdGNoID0gUGF0Y2hlci5hZnRlcihcIkNvbXBvbmVudFBhdGNoZXJcIiwgVGFiQmFyLnByb3RvdHlwZSwgXCJyZW5kZXJcIiwgKHRoaXNPYmplY3QsIGFyZ3MsIHJldHVyblZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gcmV0dXJuVmFsdWUucHJvcHMuY2hpbGRyZW47XHJcbiAgICAgICAgICAgIGlmICghY2hpbGRyZW4gfHwgIWNoaWxkcmVuLmxlbmd0aCB8fCBjaGlsZHJlbi5sZW5ndGggPCAzKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmIChjaGlsZHJlbltjaGlsZHJlbi5sZW5ndGggLSAzXS50eXBlLmRpc3BsYXlOYW1lICE9PSBcIlNlcGFyYXRvclwiKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmICghY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMl0udHlwZS50b1N0cmluZygpLmluY2x1ZGVzKFwic29jaWFsTGlua3NcIikpIHJldHVybjtcclxuICAgICAgICAgICAgaWYgKEFuY2hvcikge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWwgPSBjaGlsZHJlbltjaGlsZHJlbi5sZW5ndGggLSAyXS50eXBlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3T25lID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmV0dXJuVmFsID0gb3JpZ2luYWwoLi4uYXJndW1lbnRzKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWwucHJvcHMuY2hpbGRyZW4ucHVzaChcclxuICAgICAgICAgICAgICAgICAgICAgICAgRGlzY29yZE1vZHVsZXMuUmVhY3QuY3JlYXRlRWxlbWVudChBbmNob3IsIHtjbGFzc05hbWU6IFwiYmQtc29jaWFsLWxpbmtcIiwgaHJlZjogXCJodHRwczovL3R3aXR0ZXIuY29tL0JhbmRhZ2VkQkRcIiwgdGl0bGU6IFwiQmFuZGFnZWRCRFwiLCB0YXJnZXQ6IFwiX2JsYW5rXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzY29yZE1vZHVsZXMuUmVhY3QuY3JlYXRlRWxlbWVudChCRExvZ28sIHtzaXplOiBcIjE2cHhcIiwgY2xhc3NOYW1lOiBcImJkLXNvY2lhbC1sb2dvXCJ9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0dXJuVmFsO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIGNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDJdLnR5cGUgPSBuZXdPbmU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGluamVjdG9yID0gRGlzY29yZE1vZHVsZXMuUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7Y2xhc3NOYW1lOiBcImNvbG9yTXV0ZWQtSGRGdDRxIHNpemUxMi0zY0x2YkpcIn0sIGBJbmplY3RvciAke0NvbmZpZy52ZXJzaW9ufWApO1xyXG4gICAgICAgICAgICBjb25zdCB2ZXJzaW9uSGFzaCA9IGAoJHtDb25maWcuaGFzaCA/IENvbmZpZy5oYXNoLnN1YnN0cmluZygwLCA3KSA6IENvbmZpZy5icmFuY2h9KWA7XHJcbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWwgPSBEaXNjb3JkTW9kdWxlcy5SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtjbGFzc05hbWU6IFwiY29sb3JNdXRlZC1IZEZ0NHEgc2l6ZTEyLTNjTHZiSlwifSwgYEJCRCAke0NvbmZpZy5iYmRWZXJzaW9ufSBgLCBEaXNjb3JkTW9kdWxlcy5SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7Y2xhc3NOYW1lOiBcInZlcnNpb25IYXNoLTJnWGpJQiBkYS12ZXJzaW9uSGFzaFwifSwgdmVyc2lvbkhhc2gpKTtcclxuICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbFZlcnNpb25zID0gY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMV0udHlwZTtcclxuICAgICAgICAgICAgY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMV0udHlwZSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmV0dXJuVmFsID0gb3JpZ2luYWxWZXJzaW9ucyguLi5hcmd1bWVudHMpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuVmFsLnByb3BzLmNoaWxkcmVuLnNwbGljZShyZXR1cm5WYWwucHJvcHMuY2hpbGRyZW4ubGVuZ3RoIC0gMSwgMCwgaW5qZWN0b3IpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuVmFsLnByb3BzLmNoaWxkcmVuLnNwbGljZSgxLCAwLCBhZGRpdGlvbmFsKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWw7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcGF0Y2hHdWlsZExpc3RJdGVtcygpIHtcclxuICAgICAgICBpZiAodGhpcy5ndWlsZExpc3RJdGVtc1BhdGNoKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgbGlzdEl0ZW1DbGFzcyA9IERpc2NvcmRNb2R1bGVzLkd1aWxkQ2xhc3Nlcy5saXN0SXRlbS5zcGxpdChcIiBcIilbMF07XHJcbiAgICAgICAgY29uc3QgYmxvYkNsYXNzID0gRGlzY29yZE1vZHVsZXMuR3VpbGRDbGFzc2VzLmJsb2JDb250YWluZXIuc3BsaXQoXCIgXCIpWzBdO1xyXG4gICAgICAgIGNvbnN0IHJlYWN0SW5zdGFuY2UgPSBVdGlsaXRpZXMuZ2V0UmVhY3RJbnN0YW5jZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHtsaXN0SXRlbUNsYXNzfSAuJHtibG9iQ2xhc3N9YCkucGFyZW50RWxlbWVudCk7XHJcbiAgICAgICAgY29uc3QgR3VpbGRDb21wb25lbnQgPSByZWFjdEluc3RhbmNlLnJldHVybi50eXBlO1xyXG4gICAgICAgIGlmICghR3VpbGRDb21wb25lbnQpIHJldHVybjtcclxuICAgICAgICB0aGlzLmd1aWxkTGlzdEl0ZW1zUGF0Y2ggPSBQYXRjaGVyLmFmdGVyKFwiQ29tcG9uZW50UGF0Y2hlclwiLCBHdWlsZENvbXBvbmVudC5wcm90b3R5cGUsIFwicmVuZGVyXCIsICh0aGlzT2JqZWN0LCBfLCByZXR1cm5WYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXJldHVyblZhbHVlIHx8ICF0aGlzT2JqZWN0KSByZXR1cm47XHJcbiAgICAgICAgICAgIGNvbnN0IGd1aWxkRGF0YSA9IHRoaXNPYmplY3QucHJvcHM7XHJcbiAgICAgICAgICAgIHJldHVyblZhbHVlLnByb3BzLmNsYXNzTmFtZSArPSBcIiBiZC1ndWlsZFwiO1xyXG4gICAgICAgICAgICBpZiAoZ3VpbGREYXRhLnVucmVhZCkgcmV0dXJuVmFsdWUucHJvcHMuY2xhc3NOYW1lICs9IFwiIGJkLXVucmVhZFwiO1xyXG4gICAgICAgICAgICBpZiAoZ3VpbGREYXRhLnNlbGVjdGVkKSByZXR1cm5WYWx1ZS5wcm9wcy5jbGFzc05hbWUgKz0gXCIgYmQtc2VsZWN0ZWRcIjtcclxuICAgICAgICAgICAgaWYgKGd1aWxkRGF0YS5hdWRpbykgcmV0dXJuVmFsdWUucHJvcHMuY2xhc3NOYW1lICs9IFwiIGJkLWF1ZGlvXCI7XHJcbiAgICAgICAgICAgIGlmIChndWlsZERhdGEudmlkZW8pIHJldHVyblZhbHVlLnByb3BzLmNsYXNzTmFtZSArPSBcIiBiZC12aWRlb1wiO1xyXG4gICAgICAgICAgICBpZiAoZ3VpbGREYXRhLmJhZGdlKSByZXR1cm5WYWx1ZS5wcm9wcy5jbGFzc05hbWUgKz0gXCIgYmQtYmFkZ2VcIjtcclxuICAgICAgICAgICAgaWYgKGd1aWxkRGF0YS5hbmltYXRhYmxlKSByZXR1cm5WYWx1ZS5wcm9wcy5jbGFzc05hbWUgKz0gXCIgYmQtYW5pbWF0YWJsZVwiO1xyXG4gICAgICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcGF0Y2hHdWlsZFBpbGxzKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmd1aWxkUGlsbFBhdGNoKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgZ3VpbGRQaWxsID0gV2VicGFja01vZHVsZXMuZ2V0TW9kdWxlKG0gPT4gbS5kZWZhdWx0ICYmICFtLmRlZmF1bHQuZGlzcGxheU5hbWUgJiYgbS5kZWZhdWx0LnRvU3RyaW5nICYmIG0uZGVmYXVsdC50b1N0cmluZygpLmluY2x1ZGVzKFwidHJhbnNsYXRlM2RcIikpO1xyXG4gICAgICAgIGlmICghZ3VpbGRQaWxsKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5ndWlsZFBpbGxQYXRjaCA9IFBhdGNoZXIuYWZ0ZXIoXCJDb21wb25lbnRQYXRjaGVyXCIsIGd1aWxkUGlsbCwgXCJkZWZhdWx0XCIsIChfLCBhcmdzLCByZXR1cm5WYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBwcm9wcyA9IGFyZ3NbMF07XHJcbiAgICAgICAgICAgIGlmIChwcm9wcy51bnJlYWQpIHJldHVyblZhbHVlLnByb3BzLmNsYXNzTmFtZSArPSBcIiBiZC11bnJlYWRcIjtcclxuICAgICAgICAgICAgaWYgKHByb3BzLnNlbGVjdGVkKSByZXR1cm5WYWx1ZS5wcm9wcy5jbGFzc05hbWUgKz0gXCIgYmQtc2VsZWN0ZWRcIjtcclxuICAgICAgICAgICAgaWYgKHByb3BzLmhvdmVyZWQpIHJldHVyblZhbHVlLnByb3BzLmNsYXNzTmFtZSArPSBcIiBiZC1ob3ZlcmVkXCI7XHJcbiAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwYXRjaEd1aWxkU2VwYXJhdG9yKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmd1aWxkU2VwYXJhdG9yUGF0Y2gpIHJldHVybjtcclxuICAgICAgICBjb25zdCBHdWlsZHMgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeURpc3BsYXlOYW1lKFwiR3VpbGRzXCIpO1xyXG4gICAgICAgIGNvbnN0IGd1aWxkQ29tcG9uZW50cyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJyZW5kZXJMaXN0SXRlbVwiKTtcclxuICAgICAgICBpZiAoIWd1aWxkQ29tcG9uZW50cyB8fCAhR3VpbGRzKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgR3VpbGRTZXBhcmF0b3IgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgY29uc3QgcmV0dXJuVmFsdWUgPSBndWlsZENvbXBvbmVudHMuU2VwYXJhdG9yKC4uLmFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgIHJldHVyblZhbHVlLnByb3BzLmNsYXNzTmFtZSArPSBcIiBiZC1ndWlsZC1zZXBhcmF0b3JcIjtcclxuICAgICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5ndWlsZFNlcGFyYXRvclBhdGNoID0gUGF0Y2hlci5hZnRlcihcIkNvbXBvbmVudFBhdGNoZXJcIiwgR3VpbGRzLnByb3RvdHlwZSwgXCJyZW5kZXJcIiwgKF8sIF9fLCByZXR1cm5WYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBTZXBhcmF0b3IgPSBVdGlsaXRpZXMuZmluZEluUmVhY3RUcmVlKHJldHVyblZhbHVlLCBtID0+IG0udHlwZSAmJiAhbS50eXBlLmRpc3BsYXlOYW1lICYmIHR5cGVvZihtLnR5cGUpID09IFwiZnVuY3Rpb25cIiAmJiBVdGlsaXRpZXMuaXNFbXB0eShtLnByb3BzKSk7XHJcbiAgICAgICAgICAgIGlmICghU2VwYXJhdG9yKSByZXR1cm47XHJcbiAgICAgICAgICAgIFNlcGFyYXRvci50eXBlID0gR3VpbGRTZXBhcmF0b3I7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcGF0Y2hNZXNzYWdlSGVhZGVyKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2VIZWFkZXJQYXRjaCkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IE1lc3NhZ2VIZWFkZXIgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiTWVzc2FnZVRpbWVzdGFtcFwiKTtcclxuICAgICAgICBjb25zdCBBbmNob3IgPSBXZWJwYWNrTW9kdWxlcy5maW5kKG0gPT4gbS5kaXNwbGF5TmFtZSA9PSBcIkFuY2hvclwiKTtcclxuICAgICAgICBpZiAoIUFuY2hvciB8fCAhTWVzc2FnZUhlYWRlciB8fCAhTWVzc2FnZUhlYWRlci5kZWZhdWx0KSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlSGVhZGVyUGF0Y2ggPSBQYXRjaGVyLmFmdGVyKFwiQ29tcG9uZW50UGF0Y2hlclwiLCBNZXNzYWdlSGVhZGVyLCBcImRlZmF1bHRcIiwgKF8sIGFyZ3MsIHJldHVyblZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGF1dGhvciA9IFV0aWxpdGllcy5nZXROZXN0ZWRQcm9wKGFyZ3NbMF0sIFwibWVzc2FnZS5hdXRob3JcIik7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gVXRpbGl0aWVzLmdldE5lc3RlZFByb3AocmV0dXJuVmFsdWUsIFwicHJvcHMuY2hpbGRyZW4uMS5wcm9wcy5jaGlsZHJlbi4xLnByb3BzLmNoaWxkcmVuXCIpO1xyXG4gICAgICAgICAgICBpZiAoIWNoaWxkcmVuIHx8ICFhdXRob3IgfHwgIWF1dGhvci5pZCB8fCBhdXRob3IuaWQgIT09IFwiMjQ5NzQ2MjM2MDA4MTY5NDczXCIpIHJldHVybjtcclxuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkgcmV0dXJuO1xyXG4gICAgICAgICAgICBjaGlsZHJlbi5wdXNoKFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUb29sdGlwLCB7Y29sb3I6IFwiYmxhY2tcIiwgcG9zaXRpb246IFwidG9wXCIsIHRleHQ6IFwiQmFuZGFnZWRCRCBEZXZlbG9wZXJcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMgPT4gUmVhY3QuY3JlYXRlRWxlbWVudChBbmNob3IsIE9iamVjdC5hc3NpZ24oe2NsYXNzTmFtZTogXCJiZC1jaGF0LWJhZGdlXCIsIGhyZWY6IFwiaHR0cHM6Ly9naXRodWIuY29tL3JhdWVuemkvQmV0dGVyRGlzY29yZEFwcFwiLCB0aXRsZTogXCJCYW5kYWdlZEJEXCIsIHRhcmdldDogXCJfYmxhbmtcIn0sIHByb3BzKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChCRExvZ28sIHtzaXplOiBcIjE2cHhcIiwgY2xhc3NOYW1lOiBcImJkLWxvZ29cIn0pXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHBhdGNoTWVtYmVyTGlzdCgpIHtcclxuICAgICAgICBpZiAodGhpcy5tZW1iZXJMaXN0UGF0Y2gpIHJldHVybjtcclxuICAgICAgICBjb25zdCBNZW1iZXJMaXN0SXRlbSA9IFdlYnBhY2tNb2R1bGVzLmZpbmRCeURpc3BsYXlOYW1lKFwiTWVtYmVyTGlzdEl0ZW1cIik7XHJcbiAgICAgICAgY29uc3QgQW5jaG9yID0gV2VicGFja01vZHVsZXMuZmluZChtID0+IG0uZGlzcGxheU5hbWUgPT0gXCJBbmNob3JcIik7XHJcbiAgICAgICAgaWYgKCFBbmNob3IgfHwgIU1lbWJlckxpc3RJdGVtIHx8ICFNZW1iZXJMaXN0SXRlbS5wcm90b3R5cGUgfHwgIU1lbWJlckxpc3RJdGVtLnByb3RvdHlwZS5yZW5kZXJEZWNvcmF0b3JzKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5tZW1iZXJMaXN0UGF0Y2ggPSBQYXRjaGVyLmFmdGVyKFwiQ29tcG9uZW50UGF0Y2hlclwiLCBNZW1iZXJMaXN0SXRlbS5wcm90b3R5cGUsIFwicmVuZGVyRGVjb3JhdG9yc1wiLCAodGhpc09iamVjdCwgYXJncywgcmV0dXJuVmFsdWUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdXNlciA9IFV0aWxpdGllcy5nZXROZXN0ZWRQcm9wKHRoaXNPYmplY3QsIFwicHJvcHMudXNlclwiKTtcclxuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBVdGlsaXRpZXMuZ2V0TmVzdGVkUHJvcChyZXR1cm5WYWx1ZSwgXCJwcm9wcy5jaGlsZHJlblwiKTtcclxuICAgICAgICAgICAgaWYgKCFjaGlsZHJlbiB8fCAhdXNlciB8fCAhdXNlci5pZCB8fCB1c2VyLmlkICE9PSBcIjI0OTc0NjIzNjAwODE2OTQ3M1wiKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHJldHVybjtcclxuICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVG9vbHRpcCwge2NvbG9yOiBcImJsYWNrXCIsIHBvc2l0aW9uOiBcInRvcFwiLCB0ZXh0OiBcIkJhbmRhZ2VkQkQgRGV2ZWxvcGVyXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3BzID0+IFJlYWN0LmNyZWF0ZUVsZW1lbnQoQW5jaG9yLCBPYmplY3QuYXNzaWduKHtjbGFzc05hbWU6IFwiYmQtbWVtYmVyLWJhZGdlXCIsIGhyZWY6IFwiaHR0cHM6Ly9naXRodWIuY29tL3JhdWVuemkvQmV0dGVyRGlzY29yZEFwcFwiLCB0aXRsZTogXCJCYW5kYWdlZEJEXCIsIHRhcmdldDogXCJfYmxhbmtcIn0sIHByb3BzKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChCRExvZ28sIHtzaXplOiBcIjE2cHhcIiwgY2xhc3NOYW1lOiBcImJkLWxvZ29cIn0pXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/componentpatcher.js\n"); /***/ }), @@ -418,7 +418,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Core; });\n/* harmony import */ var _localemanager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./localemanager */ \"./src/modules/localemanager.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _dommanager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dommanager */ \"./src/modules/dommanager.js\");\n/* harmony import */ var _pluginmanager__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pluginmanager */ \"./src/modules/pluginmanager.js\");\n/* harmony import */ var _thememanager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./thememanager */ \"./src/modules/thememanager.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var builtins__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! builtins */ \"./src/builtins/builtins.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _reactcomponents__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./reactcomponents */ \"./src/modules/reactcomponents.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _componentpatcher__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./componentpatcher */ \"./src/modules/componentpatcher.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n/* harmony import */ var _loadingicon__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../loadingicon */ \"./src/loadingicon.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n\n\n // import EmoteModule from \"./emotes\";\n// import QuickEmoteMenu from \"../builtins/emotemenu\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst {\n ipcRenderer\n} = __webpack_require__(/*! electron */ \"electron\");\n\nconst GuildClasses = _discordmodules__WEBPACK_IMPORTED_MODULE_11__[\"default\"].GuildClasses;\nclass Core {\n constructor() {\n ipcRenderer.invoke(\"bd-config\", \"get\").then(injectorConfig => {\n if (this.hasStarted) return;\n Object.assign(data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"], injectorConfig);\n this.init();\n });\n }\n\n get dependencies() {\n return [{\n name: \"jquery\",\n type: \"script\",\n url: \"//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js\",\n backup: \"//cdn.jsdelivr.net/gh/jquery/jquery@2.0.0/jquery.min.js\",\n local: null\n }, {\n name: \"bd-stylesheet\",\n type: \"style\",\n url: \"//cdn.staticaly.com/gh/{{repo}}/BetterDiscordApp/{{hash}}/dist/style.min.css\",\n backup: \"//rauenzi.github.io/BetterDiscordApp/dist/style.min.css\",\n local: \"{{localServer}}/BetterDiscordApp/dist/style.min.css\"\n }];\n }\n\n setConfig(config) {\n if (this.hasStarted) return;\n Object.assign(data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"], config);\n }\n\n async init() {\n if (this.hasStarted) return;\n this.hasStarted = true; // Load dependencies asynchronously if they don't exist\n\n let dependencyPromise = new Promise(r => r());\n if (!window.$ || !window.jQuery) dependencyPromise = this.loadDependencies();\n _datastore__WEBPACK_IMPORTED_MODULE_10__[\"default\"].initialize();\n await _localemanager__WEBPACK_IMPORTED_MODULE_0__[\"default\"].initialize();\n if (data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].version < data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].minSupportedVersion) return _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].alert(_strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.notSupported, _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.versionMismatch.format({\n injector: data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].version,\n remote: data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].bbdVersion\n }));\n if (window.ED) return _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].alert(_strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.notSupported, _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.incompatibleApp.format({\n app: \"EnhancedDiscord\"\n }));\n if (window.WebSocket && window.WebSocket.name && window.WebSocket.name.includes(\"Patched\")) return _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].alert(_strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.notSupported, _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.incompatibleApp.format({\n app: \"Powercord\"\n }));\n const latestLocalVersion = data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].updater ? data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].updater.LatestVersion : data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].latestVersion;\n\n if (latestLocalVersion > data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].version) {\n _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showConfirmationModal(_strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.updateAvailable, _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.updateInfo.format({\n version: latestLocalVersion\n }), {\n confirmText: _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.updateNow,\n cancelText: _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.maybeLater,\n onConfirm: async () => {\n const onUpdateFailed = () => {\n _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].alert(_strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.updateFailed, _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.manualUpdate);\n };\n\n try {\n const didUpdate = await this.updateInjector();\n if (!didUpdate) return onUpdateFailed();\n\n const app = __webpack_require__(/*! electron */ \"electron\").remote.app;\n\n app.relaunch();\n app.exit();\n } catch (err) {\n onUpdateFailed();\n }\n }\n });\n }\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Initializing Settings\");\n _settingsmanager__WEBPACK_IMPORTED_MODULE_6__[\"default\"].initialize(); // DOMManager.initialize();\n\n await this.waitForGuilds();\n _reactcomponents__WEBPACK_IMPORTED_MODULE_9__[\"default\"].initialize();\n _componentpatcher__WEBPACK_IMPORTED_MODULE_12__[\"default\"].initialize();\n\n for (const module in builtins__WEBPACK_IMPORTED_MODULE_7__) builtins__WEBPACK_IMPORTED_MODULE_7__[module].initialize();\n\n await dependencyPromise;\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Loading Plugins\");\n const pluginErrors = _pluginmanager__WEBPACK_IMPORTED_MODULE_4__[\"default\"].initialize();\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Loading Themes\");\n const themeErrors = _thememanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].initialize();\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Removing Loading Icon\");\n _loadingicon__WEBPACK_IMPORTED_MODULE_14__[\"default\"].hide(); // Show loading errors\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Collecting Startup Errors\");\n _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showAddonErrors({\n plugins: pluginErrors,\n themes: themeErrors\n });\n const previousVersion = _datastore__WEBPACK_IMPORTED_MODULE_10__[\"default\"].getBDData(\"version\");\n\n if (data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].bbdVersion > previousVersion) {\n _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showChangelogModal(data__WEBPACK_IMPORTED_MODULE_2__[\"Changelog\"]);\n _datastore__WEBPACK_IMPORTED_MODULE_10__[\"default\"].setBDData(\"version\", data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].bbdVersion);\n }\n }\n\n waitForGuilds() {\n let timesChecked = 0;\n return new Promise(resolve => {\n const checkForGuilds = function () {\n timesChecked++;\n if (document.readyState != \"complete\") setTimeout(checkForGuilds, 100);\n const wrapper = GuildClasses.wrapper.split(\" \")[0];\n const guild = GuildClasses.listItem.split(\" \")[0];\n const blob = GuildClasses.blobContainer.split(\" \")[0];\n if (document.querySelectorAll(`.${wrapper} .${guild} .${blob}`).length > 0) return resolve(data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].deferLoaded = true);else if (timesChecked >= 50) return resolve(data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].deferLoaded = true);\n setTimeout(checkForGuilds, 100);\n };\n\n checkForGuilds();\n });\n }\n\n async loadDependencies() {\n for (const data of this.dependencies) {\n const url = _utilities__WEBPACK_IMPORTED_MODULE_15__[\"default\"].formatString(data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].local && data.local != null ? data.local : data.url, {\n repo: data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].repo,\n hash: data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].hash,\n localServer: data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].localServer\n });\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(`Startup`, `Loading Resource (${url})`);\n const injector = (data.type == \"script\" ? _dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].injectScript : _dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].linkStyle).bind(_dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n\n try {\n await injector(data.name, url);\n } catch (err) {\n const backup = _utilities__WEBPACK_IMPORTED_MODULE_15__[\"default\"].formatString(data.backup, {\n minified: data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].minified ? \".min\" : \"\"\n });\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(`Startup`, `Could not load ${url}. Using backup ${backup}`, err);\n\n try {\n await injector(data.name, backup);\n } catch (e) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(`Startup`, `Could not load ${url}. Using backup ${backup}`, err);\n if (data.name === \"jquery\") _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].alert(_strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.jqueryFailed, _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.jqueryFailedDetails);\n }\n }\n }\n }\n\n async updateInjector() {\n const injectionPath = _datastore__WEBPACK_IMPORTED_MODULE_10__[\"default\"].injectionPath;\n if (!injectionPath) return false;\n\n const fs = __webpack_require__(/*! fs */ \"fs\");\n\n const path = __webpack_require__(/*! path */ \"path\");\n\n const rmrf = __webpack_require__(/*! rimraf */ \"rimraf\");\n\n const yauzl = __webpack_require__(/*! yauzl */ \"yauzl\");\n\n const mkdirp = __webpack_require__(/*! mkdirp */ \"mkdirp\");\n\n const request = __webpack_require__(/*! request */ \"request\");\n\n const parentPath = path.resolve(injectionPath, \"..\");\n const folderName = path.basename(injectionPath);\n const zipLink = \"https://github.com/rauenzi/BetterDiscordApp/archive/injector.zip\";\n const savedZip = path.resolve(parentPath, \"injector.zip\");\n const extractedFolder = path.resolve(parentPath, \"BetterDiscordApp-injector\"); // Download the injector zip file\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"InjectorUpdate\", \"Downloading \" + zipLink);\n let success = await new Promise(resolve => {\n request.get({\n url: zipLink,\n encoding: null\n }, async (error, response, body) => {\n if (error || response.statusCode !== 200) return resolve(false); // Save a backup in case someone has their own copy\n\n const alreadyExists = await new Promise(res => fs.exists(savedZip, res));\n if (alreadyExists) await new Promise(res => fs.rename(savedZip, `${savedZip}.bak${Math.round(performance.now())}`, res));\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"InjectorUpdate\", \"Writing \" + savedZip);\n fs.writeFile(savedZip, body, err => resolve(!err));\n });\n });\n if (!success) return success; // Check and delete rename extraction\n\n const alreadyExists = await new Promise(res => fs.exists(extractedFolder, res));\n if (alreadyExists) await new Promise(res => fs.rename(extractedFolder, `${extractedFolder}.bak${Math.round(performance.now())}`, res)); // Unzip the downloaded zip file\n\n const zipfile = await new Promise(r => yauzl.open(savedZip, {\n lazyEntries: true\n }, (err, zip) => r(zip)));\n zipfile.on(\"entry\", function (entry) {\n // Skip directories, they are handled with mkdirp\n if (entry.fileName.endsWith(\"/\")) return zipfile.readEntry();\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"InjectorUpdate\", \"Extracting \" + entry.fileName); // Make any needed parent directories\n\n const fullPath = path.resolve(parentPath, entry.fileName);\n mkdirp.sync(path.dirname(fullPath));\n zipfile.openReadStream(entry, function (err, readStream) {\n if (err) return success = false;\n readStream.on(\"end\", function () {\n zipfile.readEntry();\n }); // Go to next file after this\n\n readStream.pipe(fs.createWriteStream(fullPath));\n });\n });\n zipfile.readEntry(); // Start reading\n // Wait for the final file to finish\n\n await new Promise(resolve => zipfile.once(\"end\", resolve)); // Save a backup in case something goes wrong during final step\n\n const backupFolder = path.resolve(parentPath, `${folderName}.bak${Math.round(performance.now())}`);\n await new Promise(resolve => fs.rename(injectionPath, backupFolder, resolve)); // Rename the extracted folder to what it should be\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"InjectorUpdate\", `Renaming ${path.basename(extractedFolder)} to ${folderName}`);\n success = await new Promise(resolve => fs.rename(extractedFolder, injectionPath, err => resolve(!err)));\n\n if (!success) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].err(\"InjectorUpdate\", \"Failed to rename the final directory\");\n return success;\n } // If rename had issues, delete what we tried to rename and restore backup\n\n\n if (!success) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].err(\"InjectorUpdate\", \"Something went wrong... restoring backups.\");\n await new Promise(resolve => rmrf(extractedFolder, resolve));\n await new Promise(resolve => fs.rename(backupFolder, injectionPath, resolve));\n return success;\n } // If we've gotten to this point, everything should have gone smoothly.\n // Cleanup the backup folder then remove the zip\n\n\n await new Promise(resolve => rmrf(backupFolder, resolve));\n await new Promise(resolve => fs.unlink(savedZip, resolve));\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"InjectorUpdate\", \"Injector Updated!\");\n return success;\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb3JlLmpzP2I2ZGUiXSwibmFtZXMiOlsiaXBjUmVuZGVyZXIiLCJyZXF1aXJlIiwiR3VpbGRDbGFzc2VzIiwiRGlzY29yZE1vZHVsZXMiLCJDb3JlIiwiY29uc3RydWN0b3IiLCJpbnZva2UiLCJ0aGVuIiwiaW5qZWN0b3JDb25maWciLCJoYXNTdGFydGVkIiwiT2JqZWN0IiwiYXNzaWduIiwiQ29uZmlnIiwiaW5pdCIsImRlcGVuZGVuY2llcyIsIm5hbWUiLCJ0eXBlIiwidXJsIiwiYmFja3VwIiwibG9jYWwiLCJzZXRDb25maWciLCJjb25maWciLCJkZXBlbmRlbmN5UHJvbWlzZSIsIlByb21pc2UiLCJyIiwid2luZG93IiwiJCIsImpRdWVyeSIsImxvYWREZXBlbmRlbmNpZXMiLCJEYXRhU3RvcmUiLCJpbml0aWFsaXplIiwiTG9jYWxlTWFuYWdlciIsInZlcnNpb24iLCJtaW5TdXBwb3J0ZWRWZXJzaW9uIiwiTW9kYWxzIiwiYWxlcnQiLCJTdHJpbmdzIiwiU3RhcnR1cCIsIm5vdFN1cHBvcnRlZCIsInZlcnNpb25NaXNtYXRjaCIsImZvcm1hdCIsImluamVjdG9yIiwicmVtb3RlIiwiYmJkVmVyc2lvbiIsIkVEIiwiaW5jb21wYXRpYmxlQXBwIiwiYXBwIiwiV2ViU29ja2V0IiwiaW5jbHVkZXMiLCJsYXRlc3RMb2NhbFZlcnNpb24iLCJ1cGRhdGVyIiwiTGF0ZXN0VmVyc2lvbiIsImxhdGVzdFZlcnNpb24iLCJzaG93Q29uZmlybWF0aW9uTW9kYWwiLCJ1cGRhdGVBdmFpbGFibGUiLCJ1cGRhdGVJbmZvIiwiY29uZmlybVRleHQiLCJ1cGRhdGVOb3ciLCJjYW5jZWxUZXh0IiwibWF5YmVMYXRlciIsIm9uQ29uZmlybSIsIm9uVXBkYXRlRmFpbGVkIiwidXBkYXRlRmFpbGVkIiwibWFudWFsVXBkYXRlIiwiZGlkVXBkYXRlIiwidXBkYXRlSW5qZWN0b3IiLCJyZWxhdW5jaCIsImV4aXQiLCJlcnIiLCJMb2dnZXIiLCJsb2ciLCJTZXR0aW5ncyIsIndhaXRGb3JHdWlsZHMiLCJSZWFjdENvbXBvbmVudHMiLCJDb21wb25lbnRQYXRjaGVyIiwibW9kdWxlIiwiQnVpbHRpbnMiLCJwbHVnaW5FcnJvcnMiLCJQbHVnaW5NYW5hZ2VyIiwidGhlbWVFcnJvcnMiLCJUaGVtZU1hbmFnZXIiLCJMb2FkaW5nSWNvbiIsImhpZGUiLCJzaG93QWRkb25FcnJvcnMiLCJwbHVnaW5zIiwidGhlbWVzIiwicHJldmlvdXNWZXJzaW9uIiwiZ2V0QkREYXRhIiwic2hvd0NoYW5nZWxvZ01vZGFsIiwiQ2hhbmdlbG9nIiwic2V0QkREYXRhIiwidGltZXNDaGVja2VkIiwicmVzb2x2ZSIsImNoZWNrRm9yR3VpbGRzIiwiZG9jdW1lbnQiLCJyZWFkeVN0YXRlIiwic2V0VGltZW91dCIsIndyYXBwZXIiLCJzcGxpdCIsImd1aWxkIiwibGlzdEl0ZW0iLCJibG9iIiwiYmxvYkNvbnRhaW5lciIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJsZW5ndGgiLCJkZWZlckxvYWRlZCIsImRhdGEiLCJVdGlsaXRpZXMiLCJmb3JtYXRTdHJpbmciLCJyZXBvIiwiaGFzaCIsImxvY2FsU2VydmVyIiwiRE9NTWFuYWdlciIsImluamVjdFNjcmlwdCIsImxpbmtTdHlsZSIsImJpbmQiLCJtaW5pZmllZCIsInN0YWNrdHJhY2UiLCJlIiwianF1ZXJ5RmFpbGVkIiwianF1ZXJ5RmFpbGVkRGV0YWlscyIsImluamVjdGlvblBhdGgiLCJmcyIsInBhdGgiLCJybXJmIiwieWF1emwiLCJta2RpcnAiLCJyZXF1ZXN0IiwicGFyZW50UGF0aCIsImZvbGRlck5hbWUiLCJiYXNlbmFtZSIsInppcExpbmsiLCJzYXZlZFppcCIsImV4dHJhY3RlZEZvbGRlciIsInN1Y2Nlc3MiLCJnZXQiLCJlbmNvZGluZyIsImVycm9yIiwicmVzcG9uc2UiLCJib2R5Iiwic3RhdHVzQ29kZSIsImFscmVhZHlFeGlzdHMiLCJyZXMiLCJleGlzdHMiLCJyZW5hbWUiLCJNYXRoIiwicm91bmQiLCJwZXJmb3JtYW5jZSIsIm5vdyIsIndyaXRlRmlsZSIsInppcGZpbGUiLCJvcGVuIiwibGF6eUVudHJpZXMiLCJ6aXAiLCJvbiIsImVudHJ5IiwiZmlsZU5hbWUiLCJlbmRzV2l0aCIsInJlYWRFbnRyeSIsImZ1bGxQYXRoIiwic3luYyIsImRpcm5hbWUiLCJvcGVuUmVhZFN0cmVhbSIsInJlYWRTdHJlYW0iLCJwaXBlIiwiY3JlYXRlV3JpdGVTdHJlYW0iLCJvbmNlIiwiYmFja3VwRm9sZGVyIiwidW5saW5rIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0NBRUE7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxNQUFNO0FBQUNBO0FBQUQsSUFBZ0JDLG1CQUFPLENBQUMsMEJBQUQsQ0FBN0I7O0FBQ0EsTUFBTUMsWUFBWSxHQUFHQyx3REFBYyxDQUFDRCxZQUFwQztBQUVlLE1BQU1FLElBQU4sQ0FBVztBQUN0QkMsYUFBVyxHQUFHO0FBQ1ZMLGVBQVcsQ0FBQ00sTUFBWixDQUFtQixXQUFuQixFQUFnQyxLQUFoQyxFQUF1Q0MsSUFBdkMsQ0FBNENDLGNBQWMsSUFBSTtBQUMxRCxVQUFJLEtBQUtDLFVBQVQsRUFBcUI7QUFDckJDLFlBQU0sQ0FBQ0MsTUFBUCxDQUFjQywyQ0FBZCxFQUFzQkosY0FBdEI7QUFDQSxXQUFLSyxJQUFMO0FBQ0gsS0FKRDtBQUtIOztBQUVELE1BQUlDLFlBQUosR0FBbUI7QUFDZixXQUFPLENBQ0g7QUFDSUMsVUFBSSxFQUFFLFFBRFY7QUFFSUMsVUFBSSxFQUFFLFFBRlY7QUFHSUMsU0FBRyxFQUFFLDREQUhUO0FBSUlDLFlBQU0sRUFBRSx5REFKWjtBQUtJQyxXQUFLLEVBQUU7QUFMWCxLQURHLEVBUUg7QUFDSUos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QUFOO0FBQ0EsVUFBTSxJQUFJckUsT0FBSixDQUFZcUUsT0FBTyxJQUFJOEIsRUFBRSxDQUFDOEMsTUFBSCxDQUFVcEMsUUFBVixFQUFvQnhDLE9BQXBCLENBQXZCLENBQU47QUFFQXZCLG1EQUFNLENBQUNDLEdBQVAsQ0FBVyxnQkFBWCxFQUE2QixtQkFBN0I7QUFDQSxXQUFPZ0UsT0FBUDtBQUNIOztBQWpPcUIiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb3JlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvY2FsZU1hbmFnZXIgZnJvbSBcIi4vbG9jYWxlbWFuYWdlclwiO1xyXG5cclxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi9sb2dnZXJcIjtcclxuaW1wb3J0IHtDb25maWcsIENoYW5nZWxvZ30gZnJvbSBcImRhdGFcIjtcclxuLy8gaW1wb3J0IEVtb3RlTW9kdWxlIGZyb20gXCIuL2Vtb3Rlc1wiO1xyXG4vLyBpbXBvcnQgUXVpY2tFbW90ZU1lbnUgZnJvbSBcIi4uL2J1aWx0aW5zL2Vtb3RlbWVudVwiO1xyXG5pbXBvcnQgRE9NTWFuYWdlciBmcm9tIFwiLi9kb21tYW5hZ2VyXCI7XHJcbmltcG9ydCBQbHVnaW5NYW5hZ2VyIGZyb20gXCIuL3BsdWdpbm1hbmFnZXJcIjtcclxuaW1wb3J0IFRoZW1lTWFuYWdlciBmcm9tIFwiLi90aGVtZW1hbmFnZXJcIjtcclxuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuL3NldHRpbmdzbWFuYWdlclwiO1xyXG5pbXBvcnQgKiBhcyBCdWlsdGlucyBmcm9tIFwiYnVpbHRpbnNcIjtcclxuaW1wb3J0IE1vZGFscyBmcm9tIFwiLi4vdWkvbW9kYWxzXCI7XHJcbmltcG9ydCBSZWFjdENvbXBvbmVudHMgZnJvbSBcIi4vcmVhY3Rjb21wb25lbnRzXCI7XHJcbmltcG9ydCBEYXRhU3RvcmUgZnJvbSBcIi4vZGF0YXN0b3JlXCI7XHJcbmltcG9ydCBEaXNjb3JkTW9kdWxlcyBmcm9tIFwiLi9kaXNjb3JkbW9kdWxlc1wiO1xyXG5pbXBvcnQgQ29tcG9uZW50UGF0Y2hlciBmcm9tIFwiLi9jb21wb25lbnRwYXRjaGVyXCI7XHJcbmltcG9ydCBTdHJpbmdzIGZyb20gXCIuL3N0cmluZ3NcIjtcclxuaW1wb3J0IExvYWRpbmdJY29uIGZyb20gXCIuLi9sb2FkaW5naWNvblwiO1xyXG5pbXBvcnQgVXRpbGl0aWVzIGZyb20gXCIuL3V0aWxpdGllc1wiO1xyXG5cclxuY29uc3Qge2lwY1JlbmRlcmVyfSA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKTtcclxuY29uc3QgR3VpbGRDbGFzc2VzID0gRGlzY29yZE1vZHVsZXMuR3VpbGRDbGFzc2VzO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29yZSB7XHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBpcGNSZW5kZXJlci5pbnZva2UoXCJiZC1jb25maWdcIiwgXCJnZXRcIikudGhlbihpbmplY3RvckNvbmZpZyA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmhhc1N0YXJ0ZWQpIHJldHVybjtcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihDb25maWcsIGluamVjdG9yQ29uZmlnKTtcclxuICAgICAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGRlcGVuZGVuY2llcygpIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcImpxdWVyeVwiLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzY3JpcHRcIixcclxuICAgICAgICAgICAgICAgIHVybDogXCIvL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8yLjAuMC9qcXVlcnkubWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBiYWNrdXA6IFwiLy9jZG4uanNkZWxpdnIubmV0L2doL2pxdWVyeS9qcXVlcnlAMi4wLjAvanF1ZXJ5Lm1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgbG9jYWw6IG51bGxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJiZC1zdHlsZXNoZWV0XCIsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN0eWxlXCIsXHJcbiAgICAgICAgICAgICAgICB1cmw6IFwiLy9jZG4uc3RhdGljYWx5LmNvbS9naC97e3JlcG99fS9CZXR0ZXJEaXNjb3JkQXBwL3t7aGFzaH19L2Rpc3Qvc3R5bGUubWluLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgYmFja3VwOiBcIi8vcmF1ZW56aS5naXRodWIuaW8vQmV0dGVyRGlzY29yZEFwcC9kaXN0L3N0eWxlLm1pbi5jc3NcIixcclxuICAgICAgICAgICAgICAgIGxvY2FsOiBcInt7bG9jYWxTZXJ2ZXJ9fS9CZXR0ZXJEaXNjb3JkQXBwL2Rpc3Qvc3R5bGUubWluLmNzc1wiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIHNldENvbmZpZyhjb25maWcpIHtcclxuICAgICAgICBpZiAodGhpcy5oYXNTdGFydGVkKSByZXR1cm47XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihDb25maWcsIGNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaW5pdCgpIHtcclxuICAgICAgICBpZiAodGhpcy5oYXNTdGFydGVkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5oYXNTdGFydGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgLy8gTG9hZCBkZXBlbmRlbmNpZXMgYXN5bmNocm9ub3VzbHkgaWYgdGhleSBkb24ndCBleGlzdFxyXG4gICAgICAgIGxldCBkZXBlbmRlbmN5UHJvbWlzZSA9IG5ldyBQcm9taXNlKHIgPT4gcigpKTtcclxuICAgICAgICBpZiAoIXdpbmRvdy4kIHx8ICF3aW5kb3cualF1ZXJ5KSBkZXBlbmRlbmN5UHJvbWlzZSA9IHRoaXMubG9hZERlcGVuZGVuY2llcygpO1xyXG5cclxuICAgICAgICBEYXRhU3RvcmUuaW5pdGlhbGl6ZSgpO1xyXG4gICAgICAgIGF3YWl0IExvY2FsZU1hbmFnZXIuaW5pdGlhbGl6ZSgpO1xyXG5cclxuICAgICAgICBpZiAoQ29uZmlnLnZlcnNpb24gPCBDb25maWcubWluU3VwcG9ydGVkVmVyc2lvbikgcmV0dXJuIE1vZGFscy5hbGVydChTdHJpbmdzLlN0YXJ0dXAubm90U3VwcG9ydGVkLCBTdHJpbmdzLlN0YXJ0dXAudmVyc2lvbk1pc21hdGNoLmZvcm1hdCh7aW5qZWN0b3I6IENvbmZpZy52ZXJzaW9uLCByZW1vdGU6IENvbmZpZy5iYmRWZXJzaW9ufSkpO1xyXG4gICAgICAgIGlmICh3aW5kb3cuRUQpIHJldHVybiBNb2RhbHMuYWxlcnQoU3RyaW5ncy5TdGFydHVwLm5vdFN1cHBvcnRlZCwgU3RyaW5ncy5TdGFydHVwLmluY29tcGF0aWJsZUFwcC5mb3JtYXQoe2FwcDogXCJFbmhhbmNlZERpc2NvcmRcIn0pKTtcclxuICAgICAgICBpZiAod2luZG93LldlYlNvY2tldCAmJiB3aW5kb3cuV2ViU29ja2V0Lm5hbWUgJiYgd2luZG93LldlYlNvY2tldC5uYW1lLmluY2x1ZGVzKFwiUGF0Y2hlZFwiKSkgcmV0dXJuIE1vZGFscy5hbGVydChTdHJpbmdzLlN0YXJ0dXAubm90U3VwcG9ydGVkLCBTdHJpbmdzLlN0YXJ0dXAuaW5jb21wYXRpYmxlQXBwLmZvcm1hdCh7YXBwOiBcIlBvd2VyY29yZFwifSkpO1xyXG5cclxuICAgICAgICBjb25zdCBsYXRlc3RMb2NhbFZlcnNpb24gPSBDb25maWcudXBkYXRlciA/IENvbmZpZy51cGRhdGVyLkxhdGVzdFZlcnNpb24gOiBDb25maWcubGF0ZXN0VmVyc2lvbjtcclxuICAgICAgICBpZiAobGF0ZXN0TG9jYWxWZXJzaW9uID4gQ29uZmlnLnZlcnNpb24pIHtcclxuICAgICAgICAgICAgTW9kYWxzLnNob3dDb25maXJtYXRpb25Nb2RhbChTdHJpbmdzLlN0YXJ0dXAudXBkYXRlQXZhaWxhYmxlLCBTdHJpbmdzLlN0YXJ0dXAudXBkYXRlSW5mby5mb3JtYXQoe3ZlcnNpb246IGxhdGVzdExvY2FsVmVyc2lvbn0pLCB7XHJcbiAgICAgICAgICAgICAgICBjb25maXJtVGV4dDogU3RyaW5ncy5TdGFydHVwLnVwZGF0ZU5vdyxcclxuICAgICAgICAgICAgICAgIGNhbmNlbFRleHQ6IFN0cmluZ3MuU3RhcnR1cC5tYXliZUxhdGVyLFxyXG4gICAgICAgICAgICAgICAgb25Db25maXJtOiBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb25VcGRhdGVGYWlsZWQgPSAoKSA9PiB7IE1vZGFscy5hbGVydChTdHJpbmdzLlN0YXJ0dXAudXBkYXRlRmFpbGVkLCBTdHJpbmdzLlN0YXJ0dXAubWFudWFsVXBkYXRlKTsgfTtcclxuICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWRVcGRhdGUgPSBhd2FpdCB0aGlzLnVwZGF0ZUluamVjdG9yKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZGlkVXBkYXRlKSByZXR1cm4gb25VcGRhdGVGYWlsZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBwID0gcmVxdWlyZShcImVsZWN0cm9uXCIpLnJlbW90ZS5hcHA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5yZWxhdW5jaCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHAuZXhpdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uVXBkYXRlRmFpbGVkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBMb2dnZXIubG9nKFwiU3RhcnR1cFwiLCBcIkluaXRpYWxpemluZyBTZXR0aW5nc1wiKTtcclxuICAgICAgICBTZXR0aW5ncy5pbml0aWFsaXplKCk7XHJcblxyXG4gICAgICAgIC8vIERPTU1hbmFnZXIuaW5pdGlhbGl6ZSgpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMud2FpdEZvckd1aWxkcygpO1xyXG4gICAgICAgIFJlYWN0Q29tcG9uZW50cy5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgQ29tcG9uZW50UGF0Y2hlci5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBtb2R1bGUgaW4gQnVpbHRpbnMpIEJ1aWx0aW5zW21vZHVsZV0uaW5pdGlhbGl6ZSgpO1xyXG5cclxuICAgICAgICBhd2FpdCBkZXBlbmRlbmN5UHJvbWlzZTtcclxuICAgICAgICBMb2dnZXIubG9nKFwiU3RhcnR1cFwiLCBcIkxvYWRpbmcgUGx1Z2luc1wiKTtcclxuICAgICAgICBjb25zdCBwbHVnaW5FcnJvcnMgPSBQbHVnaW5NYW5hZ2VyLmluaXRpYWxpemUoKTtcclxuXHJcbiAgICAgICAgTG9nZ2VyLmxvZyhcIlN0YXJ0dXBcIiwgXCJMb2FkaW5nIFRoZW1lc1wiKTtcclxuICAgICAgICBjb25zdCB0aGVtZUVycm9ycyA9IFRoZW1lTWFuYWdlci5pbml0aWFsaXplKCk7XHJcblxyXG4gICAgICAgIExvZ2dlci5sb2coXCJTdGFydHVwXCIsIFwiUmVtb3ZpbmcgTG9hZGluZyBJY29uXCIpO1xyXG4gICAgICAgIExvYWRpbmdJY29uLmhpZGUoKTtcclxuXHJcbiAgICAgICAgLy8gU2hvdyBsb2FkaW5nIGVycm9yc1xyXG4gICAgICAgIExvZ2dlci5sb2coXCJTdGFydHVwXCIsIFwiQ29sbGVjdGluZyBTdGFydHVwIEVycm9yc1wiKTtcclxuICAgICAgICBNb2RhbHMuc2hvd0FkZG9uRXJyb3JzKHtwbHVnaW5zOiBwbHVnaW5FcnJvcnMsIHRoZW1lczogdGhlbWVFcnJvcnN9KTtcclxuXHJcbiAgICAgICAgY29uc3QgcHJldmlvdXNWZXJzaW9uID0gRGF0YVN0b3JlLmdldEJERGF0YShcInZlcnNpb25cIik7XHJcbiAgICAgICAgaWYgKENvbmZpZy5iYmRWZXJzaW9uID4gcHJldmlvdXNWZXJzaW9uKSB7XHJcbiAgICAgICAgICAgIE1vZGFscy5zaG93Q2hhbmdlbG9nTW9kYWwoQ2hhbmdlbG9nKTtcclxuICAgICAgICAgICAgRGF0YVN0b3JlLnNldEJERGF0YShcInZlcnNpb25cIiwgQ29uZmlnLmJiZFZlcnNpb24pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB3YWl0Rm9yR3VpbGRzKCkge1xyXG4gICAgICAgIGxldCB0aW1lc0NoZWNrZWQgPSAwO1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY2hlY2tGb3JHdWlsZHMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB0aW1lc0NoZWNrZWQrKztcclxuICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlICE9IFwiY29tcGxldGVcIikgc2V0VGltZW91dChjaGVja0Zvckd1aWxkcywgMTAwKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZXIgPSBHdWlsZENsYXNzZXMud3JhcHBlci5zcGxpdChcIiBcIilbMF07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBndWlsZCA9IEd1aWxkQ2xhc3Nlcy5saXN0SXRlbS5zcGxpdChcIiBcIilbMF07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0gR3VpbGRDbGFzc2VzLmJsb2JDb250YWluZXIuc3BsaXQoXCIgXCIpWzBdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYC4ke3dyYXBwZXJ9IC4ke2d1aWxkfSAuJHtibG9ifWApLmxlbmd0aCA+IDApIHJldHVybiByZXNvbHZlKENvbmZpZy5kZWZlckxvYWRlZCA9IHRydWUpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGltZXNDaGVja2VkID49IDUwKSByZXR1cm4gcmVzb2x2ZShDb25maWcuZGVmZXJMb2FkZWQgPSB0cnVlKTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoY2hlY2tGb3JHdWlsZHMsIDEwMCk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBjaGVja0Zvckd1aWxkcygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGxvYWREZXBlbmRlbmNpZXMoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBkYXRhIG9mIHRoaXMuZGVwZW5kZW5jaWVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IFV0aWxpdGllcy5mb3JtYXRTdHJpbmcoKENvbmZpZy5sb2NhbCAmJiBkYXRhLmxvY2FsICE9IG51bGwpID8gZGF0YS5sb2NhbCA6IGRhdGEudXJsLCB7cmVwbzogQ29uZmlnLnJlcG8sIGhhc2g6IENvbmZpZy5oYXNoLCBsb2NhbFNlcnZlcjogQ29uZmlnLmxvY2FsU2VydmVyfSk7XHJcbiAgICAgICAgICAgIExvZ2dlci5sb2coYFN0YXJ0dXBgLCBgTG9hZGluZyBSZXNvdXJjZSAoJHt1cmx9KWApO1xyXG5cdFx0XHRjb25zdCBpbmplY3RvciA9IChkYXRhLnR5cGUgPT0gXCJzY3JpcHRcIiA/IERPTU1hbmFnZXIuaW5qZWN0U2NyaXB0IDogRE9NTWFuYWdlci5saW5rU3R5bGUpLmJpbmQoRE9NTWFuYWdlcik7XHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0YXdhaXQgaW5qZWN0b3IoZGF0YS5uYW1lLCB1cmwpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGNhdGNoIChlcnIpIHtcclxuXHRcdFx0XHRjb25zdCBiYWNrdXAgPSBVdGlsaXRpZXMuZm9ybWF0U3RyaW5nKGRhdGEuYmFja3VwLCB7bWluaWZpZWQ6IENvbmZpZy5taW5pZmllZCA/IFwiLm1pblwiIDogXCJcIn0pO1xyXG5cdFx0XHRcdExvZ2dlci5zdGFja3RyYWNlKGBTdGFydHVwYCwgYENvdWxkIG5vdCBsb2FkICR7dXJsfS4gVXNpbmcgYmFja3VwICR7YmFja3VwfWAsIGVycik7XHJcblx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdGF3YWl0IGluamVjdG9yKGRhdGEubmFtZSwgYmFja3VwKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBMb2dnZXIuc3RhY2t0cmFjZShgU3RhcnR1cGAsIGBDb3VsZCBub3QgbG9hZCAke3VybH0uIFVzaW5nIGJhY2t1cCAke2JhY2t1cH1gLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLm5hbWUgPT09IFwianF1ZXJ5XCIpICBNb2RhbHMuYWxlcnQoU3RyaW5ncy5TdGFydHVwLmpxdWVyeUZhaWxlZCwgU3RyaW5ncy5TdGFydHVwLmpxdWVyeUZhaWxlZERldGFpbHMpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB1cGRhdGVJbmplY3RvcigpIHtcclxuICAgICAgICBjb25zdCBpbmplY3Rpb25QYXRoID0gRGF0YVN0b3JlLmluamVjdGlvblBhdGg7XHJcbiAgICAgICAgaWYgKCFpbmplY3Rpb25QYXRoKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICAgIGNvbnN0IGZzID0gcmVxdWlyZShcImZzXCIpO1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcclxuICAgICAgICBjb25zdCBybXJmID0gcmVxdWlyZShcInJpbXJhZlwiKTtcclxuICAgICAgICBjb25zdCB5YXV6bCA9IHJlcXVpcmUoXCJ5YXV6bFwiKTtcclxuICAgICAgICBjb25zdCBta2RpcnAgPSByZXF1aXJlKFwibWtkaXJwXCIpO1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSByZXF1aXJlKFwicmVxdWVzdFwiKTtcclxuXHJcbiAgICAgICAgY29uc3QgcGFyZW50UGF0aCA9IHBhdGgucmVzb2x2ZShpbmplY3Rpb25QYXRoLCBcIi4uXCIpO1xyXG4gICAgICAgIGNvbnN0IGZvbGRlck5hbWUgPSBwYXRoLmJhc2VuYW1lKGluamVjdGlvblBhdGgpO1xyXG4gICAgICAgIGNvbnN0IHppcExpbmsgPSBcImh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvYXJjaGl2ZS9pbmplY3Rvci56aXBcIjtcclxuICAgICAgICBjb25zdCBzYXZlZFppcCA9IHBhdGgucmVzb2x2ZShwYXJlbnRQYXRoLCBcImluamVjdG9yLnppcFwiKTtcclxuICAgICAgICBjb25zdCBleHRyYWN0ZWRGb2xkZXIgPSBwYXRoLnJlc29sdmUocGFyZW50UGF0aCwgXCJCZXR0ZXJEaXNjb3JkQXBwLWluamVjdG9yXCIpO1xyXG5cclxuICAgICAgICAvLyBEb3dubG9hZCB0aGUgaW5qZWN0b3IgemlwIGZpbGVcclxuICAgICAgICBMb2dnZXIubG9nKFwiSW5qZWN0b3JVcGRhdGVcIiwgXCJEb3dubG9hZGluZyBcIiArIHppcExpbmspO1xyXG4gICAgICAgIGxldCBzdWNjZXNzID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIHJlcXVlc3QuZ2V0KHt1cmw6IHppcExpbmssIGVuY29kaW5nOiBudWxsfSwgYXN5bmMgKGVycm9yLCByZXNwb25zZSwgYm9keSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yIHx8IHJlc3BvbnNlLnN0YXR1c0NvZGUgIT09IDIwMCkgcmV0dXJuIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgLy8gU2F2ZSBhIGJhY2t1cCBpbiBjYXNlIHNvbWVvbmUgaGFzIHRoZWlyIG93biBjb3B5XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhbHJlYWR5RXhpc3RzID0gYXdhaXQgbmV3IFByb21pc2UocmVzID0+IGZzLmV4aXN0cyhzYXZlZFppcCwgcmVzKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoYWxyZWFkeUV4aXN0cykgYXdhaXQgbmV3IFByb21pc2UocmVzID0+IGZzLnJlbmFtZShzYXZlZFppcCwgYCR7c2F2ZWRaaXB9LmJhayR7TWF0aC5yb3VuZChwZXJmb3JtYW5jZS5ub3coKSl9YCwgcmVzKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgTG9nZ2VyLmxvZyhcIkluamVjdG9yVXBkYXRlXCIsIFwiV3JpdGluZyBcIiArIHNhdmVkWmlwKTtcclxuICAgICAgICAgICAgICAgIGZzLndyaXRlRmlsZShzYXZlZFppcCwgYm9keSwgZXJyID0+IHJlc29sdmUoIWVycikpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoIXN1Y2Nlc3MpIHJldHVybiBzdWNjZXNzO1xyXG5cclxuICAgICAgICAvLyBDaGVjayBhbmQgZGVsZXRlIHJlbmFtZSBleHRyYWN0aW9uXHJcbiAgICAgICAgY29uc3QgYWxyZWFkeUV4aXN0cyA9IGF3YWl0IG5ldyBQcm9taXNlKHJlcyA9PiBmcy5leGlzdHMoZXh0cmFjdGVkRm9sZGVyLCByZXMpKTtcclxuICAgICAgICBpZiAoYWxyZWFkeUV4aXN0cykgYXdhaXQgbmV3IFByb21pc2UocmVzID0+IGZzLnJlbmFtZShleHRyYWN0ZWRGb2xkZXIsIGAke2V4dHJhY3RlZEZvbGRlcn0uYmFrJHtNYXRoLnJvdW5kKHBlcmZvcm1hbmNlLm5vdygpKX1gLCByZXMpKTtcclxuXHJcbiAgICAgICAgLy8gVW56aXAgdGhlIGRvd25sb2FkZWQgemlwIGZpbGVcclxuICAgICAgICBjb25zdCB6aXBmaWxlID0gYXdhaXQgbmV3IFByb21pc2UociA9PiB5YXV6bC5vcGVuKHNhdmVkWmlwLCB7bGF6eUVudHJpZXM6IHRydWV9LCAoZXJyLCB6aXApID0+IHIoemlwKSkpO1xyXG4gICAgICAgIHppcGZpbGUub24oXCJlbnRyeVwiLCBmdW5jdGlvbiAoZW50cnkpIHtcclxuICAgICAgICAgICAgLy8gU2tpcCBkaXJlY3RvcmllcywgdGhleSBhcmUgaGFuZGxlZCB3aXRoIG1rZGlycFxyXG4gICAgICAgICAgICBpZiAoZW50cnkuZmlsZU5hbWUuZW5kc1dpdGgoXCIvXCIpKSByZXR1cm4gemlwZmlsZS5yZWFkRW50cnkoKTtcclxuXHJcbiAgICAgICAgICAgIExvZ2dlci5sb2coXCJJbmplY3RvclVwZGF0ZVwiLCBcIkV4dHJhY3RpbmcgXCIgKyBlbnRyeS5maWxlTmFtZSk7XHJcbiAgICAgICAgICAgIC8vIE1ha2UgYW55IG5lZWRlZCBwYXJlbnQgZGlyZWN0b3JpZXNcclxuICAgICAgICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLnJlc29sdmUocGFyZW50UGF0aCwgZW50cnkuZmlsZU5hbWUpO1xyXG4gICAgICAgICAgICBta2RpcnAuc3luYyhwYXRoLmRpcm5hbWUoZnVsbFBhdGgpKTtcclxuICAgICAgICAgICAgemlwZmlsZS5vcGVuUmVhZFN0cmVhbShlbnRyeSwgZnVuY3Rpb24gKGVyciwgcmVhZFN0cmVhbSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIHN1Y2Nlc3MgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJlYWRTdHJlYW0ub24oXCJlbmRcIiwgZnVuY3Rpb24gKCkgeyB6aXBmaWxlLnJlYWRFbnRyeSgpOyB9KTsgLy8gR28gdG8gbmV4dCBmaWxlIGFmdGVyIHRoaXNcclxuICAgICAgICAgICAgICAgIHJlYWRTdHJlYW0ucGlwZShmcy5jcmVhdGVXcml0ZVN0cmVhbShmdWxsUGF0aCkpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB6aXBmaWxlLnJlYWRFbnRyeSgpOyAvLyBTdGFydCByZWFkaW5nXHJcblxyXG5cclxuICAgICAgICAvLyBXYWl0IGZvciB0aGUgZmluYWwgZmlsZSB0byBmaW5pc2hcclxuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHppcGZpbGUub25jZShcImVuZFwiLCByZXNvbHZlKSk7XHJcblxyXG4gICAgICAgIC8vIFNhdmUgYSBiYWNrdXAgaW4gY2FzZSBzb21ldGhpbmcgZ29lcyB3cm9uZyBkdXJpbmcgZmluYWwgc3RlcFxyXG4gICAgICAgIGNvbnN0IGJhY2t1cEZvbGRlciA9IHBhdGgucmVzb2x2ZShwYXJlbnRQYXRoLCBgJHtmb2xkZXJOYW1lfS5iYWske01hdGgucm91bmQocGVyZm9ybWFuY2Uubm93KCkpfWApO1xyXG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gZnMucmVuYW1lKGluamVjdGlvblBhdGgsIGJhY2t1cEZvbGRlciwgcmVzb2x2ZSkpO1xyXG5cclxuICAgICAgICAvLyBSZW5hbWUgdGhlIGV4dHJhY3RlZCBmb2xkZXIgdG8gd2hhdCBpdCBzaG91bGQgYmVcclxuICAgICAgICBMb2dnZXIubG9nKFwiSW5qZWN0b3JVcGRhdGVcIiwgYFJlbmFtaW5nICR7cGF0aC5iYXNlbmFtZShleHRyYWN0ZWRGb2xkZXIpfSB0byAke2ZvbGRlck5hbWV9YCk7XHJcbiAgICAgICAgc3VjY2VzcyA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gZnMucmVuYW1lKGV4dHJhY3RlZEZvbGRlciwgaW5qZWN0aW9uUGF0aCwgZXJyID0+IHJlc29sdmUoIWVycikpKTtcclxuICAgICAgICBpZiAoIXN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgTG9nZ2VyLmVycihcIkluamVjdG9yVXBkYXRlXCIsIFwiRmFpbGVkIHRvIHJlbmFtZSB0aGUgZmluYWwgZGlyZWN0b3J5XCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gc3VjY2VzcztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIElmIHJlbmFtZSBoYWQgaXNzdWVzLCBkZWxldGUgd2hhdCB3ZSB0cmllZCB0byByZW5hbWUgYW5kIHJlc3RvcmUgYmFja3VwXHJcbiAgICAgICAgaWYgKCFzdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIExvZ2dlci5lcnIoXCJJbmplY3RvclVwZGF0ZVwiLCBcIlNvbWV0aGluZyB3ZW50IHdyb25nLi4uIHJlc3RvcmluZyBiYWNrdXBzLlwiKTtcclxuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBybXJmKGV4dHJhY3RlZEZvbGRlciwgcmVzb2x2ZSkpO1xyXG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IGZzLnJlbmFtZShiYWNrdXBGb2xkZXIsIGluamVjdGlvblBhdGgsIHJlc29sdmUpKTtcclxuICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJZiB3ZSd2ZSBnb3R0ZW4gdG8gdGhpcyBwb2ludCwgZXZlcnl0aGluZyBzaG91bGQgaGF2ZSBnb25lIHNtb290aGx5LlxyXG4gICAgICAgIC8vIENsZWFudXAgdGhlIGJhY2t1cCBmb2xkZXIgdGhlbiByZW1vdmUgdGhlIHppcFxyXG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gcm1yZihiYWNrdXBGb2xkZXIsIHJlc29sdmUpKTtcclxuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IGZzLnVubGluayhzYXZlZFppcCwgcmVzb2x2ZSkpO1xyXG5cclxuICAgICAgICBMb2dnZXIubG9nKFwiSW5qZWN0b3JVcGRhdGVcIiwgXCJJbmplY3RvciBVcGRhdGVkIVwiKTtcclxuICAgICAgICByZXR1cm4gc3VjY2VzcztcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/core.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Core; });\n/* harmony import */ var _localemanager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./localemanager */ \"./src/modules/localemanager.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _data_data_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../data/data.js */ \"./src/data/data.js\");\n/* harmony import */ var _dommanager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dommanager */ \"./src/modules/dommanager.js\");\n/* harmony import */ var _pluginmanager__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pluginmanager */ \"./src/modules/pluginmanager.js\");\n/* harmony import */ var _thememanager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./thememanager */ \"./src/modules/thememanager.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _builtins_builtins_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../builtins/builtins.js */ \"./src/builtins/builtins.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _reactcomponents__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./reactcomponents */ \"./src/modules/reactcomponents.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _componentpatcher__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./componentpatcher */ \"./src/modules/componentpatcher.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n/* harmony import */ var _loadingicon__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../loadingicon */ \"./src/loadingicon.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _modules_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./modules.js */ \"./src/modules/modules.js\");\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\n\n\n // import EmoteModule from \"./emotes\";\n// import QuickEmoteMenu from \"../builtins/emotemenu\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst {\n ipcRenderer\n} = __webpack_require__(/*! electron */ \"electron\");\n\nconst GuildClasses = _discordmodules__WEBPACK_IMPORTED_MODULE_11__[\"default\"].GuildClasses;\nclass Core {\n constructor() {\n ipcRenderer.invoke(\"bd-config\", \"get\").then(injectorConfig => {\n if (this.hasStarted) return;\n Object.assign(_data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"], injectorConfig);\n this.init();\n });\n }\n\n get dependencies() {\n return [{\n name: \"jquery\",\n type: \"script\",\n url: \"//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js\",\n backup: \"//cdn.jsdelivr.net/gh/jquery/jquery@2.0.0/jquery.min.js\",\n local: null\n }, {\n name: \"bd-stylesheet\",\n type: \"style\",\n url: \"//cdn.staticaly.com/gh/{{repo}}/BetterDiscordApp/{{hash}}/dist/style.min.css\",\n backup: \"//rauenzi.github.io/BetterDiscordApp/dist/style.min.css\",\n local: \"{{localServer}}/BetterDiscordApp/dist/style.min.css\",\n localPath: \"style.min.css\"\n }];\n }\n\n setConfig(config) {\n if (this.hasStarted) return;\n Object.assign(_data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"], config);\n }\n\n async init() {\n if (this.hasStarted) return;\n this.hasStarted = true; // Load dependencies asynchronously if they don't exist\n\n let dependencyPromise = new Promise(r => r());\n if (!window.$ || !window.jQuery) dependencyPromise = this.loadDependencies();\n _datastore__WEBPACK_IMPORTED_MODULE_10__[\"default\"].initialize();\n await _localemanager__WEBPACK_IMPORTED_MODULE_0__[\"default\"].initialize();\n if (_data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].version < _data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].minSupportedVersion) return _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].alert(_strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.notSupported, _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.versionMismatch.format({\n injector: _data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].version,\n remote: _data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].bbdVersion\n }));\n if (window.ED) return _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].alert(_strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.notSupported, _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.incompatibleApp.format({\n app: \"EnhancedDiscord\"\n }));\n if (window.WebSocket && window.WebSocket.name && window.WebSocket.name.includes(\"Patched\")) return _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].alert(_strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.notSupported, _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.incompatibleApp.format({\n app: \"Powercord\"\n }));\n const latestLocalVersion = _data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].updater ? _data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].updater.LatestVersion : _data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].latestVersion;\n\n if (latestLocalVersion > _data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].version) {\n _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showConfirmationModal(_strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.updateAvailable, _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.updateInfo.format({\n version: latestLocalVersion\n }), {\n confirmText: _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.updateNow,\n cancelText: _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.maybeLater,\n onConfirm: async () => {\n const onUpdateFailed = () => {\n _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].alert(_strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.updateFailed, _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.manualUpdate);\n };\n\n try {\n const didUpdate = await this.updateInjector();\n if (!didUpdate) return onUpdateFailed();\n\n const app = __webpack_require__(/*! electron */ \"electron\").remote.app;\n\n app.relaunch();\n app.exit();\n } catch (err) {\n onUpdateFailed();\n }\n }\n });\n }\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Initializing Settings\");\n _settingsmanager__WEBPACK_IMPORTED_MODULE_6__[\"default\"].initialize(); // DOMManager.initialize();\n\n await this.waitForGuilds();\n _reactcomponents__WEBPACK_IMPORTED_MODULE_9__[\"default\"].initialize();\n _componentpatcher__WEBPACK_IMPORTED_MODULE_12__[\"default\"].initialize();\n\n for (const module in _builtins_builtins_js__WEBPACK_IMPORTED_MODULE_7__) _builtins_builtins_js__WEBPACK_IMPORTED_MODULE_7__[module].initialize();\n\n await dependencyPromise;\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Loading Plugins\");\n const pluginErrors = _pluginmanager__WEBPACK_IMPORTED_MODULE_4__[\"default\"].initialize();\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Loading Themes\");\n const themeErrors = _thememanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].initialize();\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Removing Loading Icon\");\n _loadingicon__WEBPACK_IMPORTED_MODULE_14__[\"default\"].hide(); // Show loading errors\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Collecting Startup Errors\");\n _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showAddonErrors({\n plugins: pluginErrors,\n themes: themeErrors\n });\n const previousVersion = _datastore__WEBPACK_IMPORTED_MODULE_10__[\"default\"].getBDData(\"version\");\n\n if (_data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].bbdVersion > previousVersion) {\n _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showChangelogModal(_data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Changelog\"]);\n _datastore__WEBPACK_IMPORTED_MODULE_10__[\"default\"].setBDData(\"version\", _data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].bbdVersion);\n }\n }\n\n waitForGuilds() {\n let timesChecked = 0;\n return new Promise(resolve => {\n const checkForGuilds = function () {\n timesChecked++;\n if (document.readyState != \"complete\") setTimeout(checkForGuilds, 100);\n const wrapper = GuildClasses.wrapper.split(\" \")[0];\n const guild = GuildClasses.listItem.split(\" \")[0];\n const blob = GuildClasses.blobContainer.split(\" \")[0];\n if (document.querySelectorAll(`.${wrapper} .${guild} .${blob}`).length > 0) return resolve(_data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].deferLoaded = true);else if (timesChecked >= 50) return resolve(_data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].deferLoaded = true);\n setTimeout(checkForGuilds, 100);\n };\n\n checkForGuilds();\n });\n }\n\n async loadDependencies() {\n for (const data of this.dependencies) {\n if (_data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].local && _data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].localPath && data.localPath) {\n if (fs.existsSync(path.resolve(_data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].localPath, data.localPath))) {\n const css = fs.readFileSync(path.resolve(_data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].localPath, data.localPath)).toString();\n _dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].injectStyle(data.name, css);\n continue;\n }\n }\n\n const url = _utilities__WEBPACK_IMPORTED_MODULE_15__[\"default\"].formatString(_data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].local && data.local != null ? data.local : data.url, {\n repo: _data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].repo,\n hash: _data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].hash,\n localServer: _data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].localServer\n });\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(`Startup`, `Loading Resource (${url})`);\n const injector = (data.type == \"script\" ? _dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].injectScript : _dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].linkStyle).bind(_dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n\n try {\n await injector(data.name, url);\n } catch (err) {\n const backup = _utilities__WEBPACK_IMPORTED_MODULE_15__[\"default\"].formatString(data.backup, {\n minified: _data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].minified ? \".min\" : \"\"\n });\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(`Startup`, `Could not load ${url}. Using backup ${backup}`, err);\n\n try {\n await injector(data.name, backup);\n } catch (e) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(`Startup`, `Could not load ${url}. Using backup ${backup}`, err);\n if (data.name === \"jquery\") _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].alert(_strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.jqueryFailed, _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.jqueryFailedDetails);\n }\n }\n }\n }\n\n async updateInjector() {\n const injectionPath = _datastore__WEBPACK_IMPORTED_MODULE_10__[\"default\"].injectionPath;\n if (!injectionPath) return false;\n\n const fs = __webpack_require__(/*! fs */ \"fs\");\n\n const path = __webpack_require__(/*! path */ \"path\");\n\n const rmrf = __webpack_require__(/*! rimraf */ \"rimraf\");\n\n const yauzl = __webpack_require__(/*! yauzl */ \"yauzl\");\n\n const mkdirp = __webpack_require__(/*! mkdirp */ \"mkdirp\");\n\n const request = __webpack_require__(/*! request */ \"request\");\n\n const parentPath = path.resolve(injectionPath, \"..\");\n const folderName = path.basename(injectionPath);\n const zipLink = \"https://github.com/rauenzi/BetterDiscordApp/archive/injector.zip\";\n const savedZip = path.resolve(parentPath, \"injector.zip\");\n const extractedFolder = path.resolve(parentPath, \"BetterDiscordApp-injector\"); // Download the injector zip file\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"InjectorUpdate\", \"Downloading \" + zipLink);\n let success = await new Promise(resolve => {\n request.get({\n url: zipLink,\n encoding: null\n }, async (error, response, body) => {\n if (error || response.statusCode !== 200) return resolve(false); // Save a backup in case someone has their own copy\n\n const alreadyExists = await new Promise(res => fs.exists(savedZip, res));\n if (alreadyExists) await new Promise(res => fs.rename(savedZip, `${savedZip}.bak${Math.round(performance.now())}`, res));\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"InjectorUpdate\", \"Writing \" + savedZip);\n fs.writeFile(savedZip, body, err => resolve(!err));\n });\n });\n if (!success) return success; // Check and delete rename extraction\n\n const alreadyExists = await new Promise(res => fs.exists(extractedFolder, res));\n if (alreadyExists) await new Promise(res => fs.rename(extractedFolder, `${extractedFolder}.bak${Math.round(performance.now())}`, res)); // Unzip the downloaded zip file\n\n const zipfile = await new Promise(r => yauzl.open(savedZip, {\n lazyEntries: true\n }, (err, zip) => r(zip)));\n zipfile.on(\"entry\", function (entry) {\n // Skip directories, they are handled with mkdirp\n if (entry.fileName.endsWith(\"/\")) return zipfile.readEntry();\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"InjectorUpdate\", \"Extracting \" + entry.fileName); // Make any needed parent directories\n\n const fullPath = path.resolve(parentPath, entry.fileName);\n mkdirp.sync(path.dirname(fullPath));\n zipfile.openReadStream(entry, function (err, readStream) {\n if (err) return success = false;\n readStream.on(\"end\", function () {\n zipfile.readEntry();\n }); // Go to next file after this\n\n readStream.pipe(fs.createWriteStream(fullPath));\n });\n });\n zipfile.readEntry(); // Start reading\n // Wait for the final file to finish\n\n await new Promise(resolve => zipfile.once(\"end\", resolve)); // Save a backup in case something goes wrong during final step\n\n const backupFolder = path.resolve(parentPath, `${folderName}.bak${Math.round(performance.now())}`);\n await new Promise(resolve => fs.rename(injectionPath, backupFolder, resolve)); // Rename the extracted folder to what it should be\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"InjectorUpdate\", `Renaming ${path.basename(extractedFolder)} to ${folderName}`);\n success = await new Promise(resolve => fs.rename(extractedFolder, injectionPath, err => resolve(!err)));\n\n if (!success) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].err(\"InjectorUpdate\", \"Failed to rename the final directory\");\n return success;\n } // If rename had issues, delete what we tried to rename and restore backup\n\n\n if (!success) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].err(\"InjectorUpdate\", \"Something went wrong... restoring backups.\");\n await new Promise(resolve => rmrf(extractedFolder, resolve));\n await new Promise(resolve => fs.rename(backupFolder, injectionPath, resolve));\n return success;\n } // If we've gotten to this point, everything should have gone smoothly.\n // Cleanup the backup folder then remove the zip\n\n\n await new Promise(resolve => rmrf(backupFolder, resolve));\n await new Promise(resolve => fs.unlink(savedZip, resolve));\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"InjectorUpdate\", \"Injector Updated!\");\n return success;\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb3JlLmpzP2I2ZGUiXSwibmFtZXMiOlsiZnMiLCJyZXF1aXJlIiwicGF0aCIsImlwY1JlbmRlcmVyIiwiR3VpbGRDbGFzc2VzIiwiRGlzY29yZE1vZHVsZXMiLCJDb3JlIiwiY29uc3RydWN0b3IiLCJpbnZva2UiLCJ0aGVuIiwiaW5qZWN0b3JDb25maWciLCJoYXNTdGFydGVkIiwiT2JqZWN0IiwiYXNzaWduIiwiQ29uZmlnIiwiaW5pdCIsImRlcGVuZGVuY2llcyIsIm5hbWUiLCJ0eXBlIiwidXJsIiwiYmFja3VwIiwibG9jYWwiLCJsb2NhbFBhdGgiLCJzZXRDb25maWciLCJjb25maWciLCJkZXBlbmRlbmN5UHJvbWlzZSIsIlByb21pc2UiLCJyIiwid2luZG93IiwiJCIsImpRdWVyeSIsImxvYWREZXBlbmRlbmNpZXMiLCJEYXRhU3RvcmUiLCJpbml0aWFsaXplIiwiTG9jYWxlTWFuYWdlciIsInZlcnNpb24iLCJtaW5TdXBwb3J0ZWRWZXJzaW9uIiwiTW9kYWxzIiwiYWxlcnQiLCJTdHJpbmdzIiwiU3RhcnR1cCIsIm5vdFN1cHBvcnRlZCIsInZlcnNpb25NaXNtYXRjaCIsImZvcm1hdCIsImluamVjdG9yIiwicmVtb3RlIiwiYmJkVmVyc2lvbiIsIkVEIiwiaW5jb21wYXRpYmxlQXBwIiwiYXBwIiwiV2ViU29ja2V0IiwiaW5jbHVkZXMiLCJsYXRlc3RMb2NhbFZlcnNpb24iLCJ1cGRhdGVyIiwiTGF0ZXN0VmVyc2lvbiIsImxhdGVzdFZlcnNpb24iLCJzaG93Q29uZmlybWF0aW9uTW9kYWwiLCJ1cGRhdGVBdmFpbGFibGUiLCJ1cGRhdGVJbmZvIiwiY29uZmlybVRleHQiLCJ1cGRhdGVOb3ciLCJjYW5jZWxUZXh0IiwibWF5YmVMYXRlciIsIm9uQ29uZmlybSIsIm9uVXBkYXRlRmFpbGVkIiwidXBkYXRlRmFpbGVkIiwibWFudWFsVXBkYXRlIiwiZGlkVXBkYXRlIiwidXBkYXRlSW5qZWN0b3IiLCJyZWxhdW5jaCIsImV4aXQiLCJlcnIiLCJMb2dnZXIiLCJsb2ciLCJTZXR0aW5ncyIsIndhaXRGb3JHdWlsZHMiLCJSZWFjdENvbXBvbmVudHMiLCJDb21wb25lbnRQYXRjaGVyIiwibW9kdWxlIiwiQnVpbHRpbnMiLCJwbHVnaW5FcnJvcnMiLCJQbHVnaW5NYW5hZ2VyIiwidGhlbWVFcnJvcnMiLCJUaGVtZU1hbmFnZXIiLCJMb2FkaW5nSWNvbiIsImhpZGUiLCJzaG93QWRkb25FcnJvcnMiLCJwbHVnaW5zIiwidGhlbWVzIiwicHJldmlvdXNWZXJzaW9uIiwiZ2V0QkREYXRhIiwic2hvd0NoYW5nZWxvZ01vZGFsIiwiQ2hhbmdlbG9nIiwic2V0QkREYXRhIiwidGltZXNDaGVja2VkIiwicmVzb2x2ZSIsImNoZWNrRm9yR3VpbGRzIiwiZG9jdW1lbnQiLCJyZWFkeVN0YXRlIiwic2V0VGltZW91dCIsIndyYXBwZXIiLCJzcGxpdCIsImd1aWxkIiwibGlzdEl0ZW0iLCJibG9iIiwiYmxvYkNvbnRhaW5lciIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJsZW5ndGgiLCJkZWZlckxvYWRlZCIsImRhdGEiLCJleGlzdHNTeW5jIiwiY3NzIiwicmVhZEZpbGVTeW5jIiwidG9TdHJpbmciLCJET01NYW5hZ2VyIiwiaW5qZWN0U3R5bGUiLCJVdGlsaXRpZXMiLCJmb3JtYXRTdHJpbmciLCJyZXBvIiwiaGFzaCIsImxvY2FsU2VydmVyIiwiaW5qZWN0U2NyaXB0IiwibGlua1N0eWxlIiwiYmluZCIsIm1pbmlmaWVkIiwic3RhY2t0cmFjZSIsImUiLCJqcXVlcnlGYWlsZWQiLCJqcXVlcnlGYWlsZWREZXRhaWxzIiwiaW5qZWN0aW9uUGF0aCIsInJtcmYiLCJ5YXV6bCIsIm1rZGlycCIsInJlcXVlc3QiLCJwYXJlbnRQYXRoIiwiZm9sZGVyTmFtZSIsImJhc2VuYW1lIiwiemlwTGluayIsInNhdmVkWmlwIiwiZXh0cmFjdGVkRm9sZGVyIiwic3VjY2VzcyIsImdldCIsImVuY29kaW5nIiwiZXJyb3IiLCJyZXNwb25zZSIsImJvZHkiLCJzdGF0dXNDb2RlIiwiYWxyZWFkeUV4aXN0cyIsInJlcyIsImV4aXN0cyIsInJlbmFtZSIsIk1hdGgiLCJyb3VuZCIsInBlcmZvcm1hbmNlIiwibm93Iiwid3JpdGVGaWxlIiwiemlwZmlsZSIsIm9wZW4iLCJsYXp5RW50cmllcyIsInppcCIsIm9uIiwiZW50cnkiLCJmaWxlTmFtZSIsImVuZHNXaXRoIiwicmVhZEVudHJ5IiwiZnVsbFBhdGgiLCJzeW5jIiwiZGlybmFtZSIsIm9wZW5SZWFkU3RyZWFtIiwicmVhZFN0cmVhbSIsInBpcGUiLCJjcmVhdGVXcml0ZVN0cmVhbSIsIm9uY2UiLCJiYWNrdXBGb2xkZXIiLCJ1bmxpbmsiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFBTUEsRUFBRSxHQUFHQyxtQkFBTyxDQUFDLGNBQUQsQ0FBbEI7O0FBQ0EsTUFBTUMsSUFBSSxHQUFHRCxtQkFBTyxDQUFDLGtCQUFELENBQXBCOztBQUVBO0FBRUE7Q0FFQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTTtBQUFDRTtBQUFELElBQWdCRixtQkFBTyxDQUFDLDBCQUFELENBQTdCOztBQUNBLE1BQU1HLFlBQVksR0FBR0Msd0RBQWMsQ0FBQ0QsWUFBcEM7QUFFZSxNQUFNRSxJQUFOLENBQVc7QUFDdEJDLGFBQVcsR0FBRztBQUNWSixlQUFXLENBQUNLLE1BQVosQ0FBbUIsV0FBbkIsRUFBZ0MsS0FBaEMsRUFBdUNDLElBQXZDLENBQTRDQyxjQUFjLElBQUk7QUFDMUQsVUFBSSxLQUFLQyxVQUFULEVBQXFCO0FBQ3JCQyxZQUFNLENBQUNDLE1BQVAsQ0FBY0Msb0RBQWQsRUFBc0JKLGNBQXRCO0FBQ0EsV0FBS0ssSUFBTDtBQUNI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SWxILE9BQUosQ0FBWXFFLE9BQU8sSUFBSS9GLEVBQUUsQ0FBQ3NKLE1BQUgsQ0FBVVgsZUFBVixFQUEyQlYsYUFBM0IsRUFBMEMxRCxHQUFHLElBQUl3QixPQUFPLENBQUMsQ0FBQ3hCLEdBQUYsQ0FBeEQsQ0FBdkIsQ0FBaEI7O0FBQ0EsUUFBSSxDQUFDcUUsT0FBTCxFQUFjO0FBQ1ZwRSxxREFBTSxDQUFDRCxHQUFQLENBQVcsZ0JBQVgsRUFBNkIsc0NBQTdCO0FBQ0EsYUFBT3FFLE9BQVA7QUFDSCxLQXBFa0IsQ0FzRW5COzs7QUFDQSxRQUFJLENBQUNBLE9BQUwsRUFBYztBQUNWcEUscURBQU0sQ0FBQ0QsR0FBUCxDQUFXLGdCQUFYLEVBQTZCLDRDQUE3QjtBQUNBLFlBQU0sSUFBSTdDLE9BQUosQ0FBWXFFLE9BQU8sSUFBSW1DLElBQUksQ0FBQ1MsZUFBRCxFQUFrQjVDLE9BQWxCLENBQTNCLENBQU47QUFDQSxZQUFNLElBQUlyRSxPQUFKLENBQVlxRSxPQUFPLElBQUkvRixFQUFFLENBQUNzSixNQUFILENBQVV1QixZQUFWLEVBQXdCNUMsYUFBeEIsRUFBdUNsQyxPQUF2QyxDQUF2QixDQUFOO0FBQ0EsYUFBTzZDLE9BQVA7QUFDSCxLQTVFa0IsQ0E4RW5CO0FBQ0E7OztBQUNBLFVBQU0sSUFBSWxILE9BQUosQ0FBWXFFLE9BQU8sSUFBSW1DLElBQUksQ0FBQzJDLFlBQUQsRUFBZTlFLE9BQWYsQ0FBM0IsQ0FBTjtBQUNBLFVBQU0sSUFBSXJFLE9BQUosQ0FBWXFFLE9BQU8sSUFBSS9GLEVBQUUsQ0FBQzhLLE1BQUgsQ0FBVXBDLFFBQVYsRUFBb0IzQyxPQUFwQixDQUF2QixDQUFOO0FBRUF2QixtREFBTSxDQUFDQyxHQUFQLENBQVcsZ0JBQVgsRUFBNkIsbUJBQTdCO0FBQ0EsV0FBT21FLE9BQVA7QUFDSDs7QUF6T3FCIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvY29yZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGZzID0gcmVxdWlyZShcImZzXCIpO1xyXG5jb25zdCBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XHJcblxyXG5pbXBvcnQgTG9jYWxlTWFuYWdlciBmcm9tIFwiLi9sb2NhbGVtYW5hZ2VyXCI7XHJcblxyXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuL2xvZ2dlclwiO1xyXG5pbXBvcnQge0NvbmZpZywgQ2hhbmdlbG9nfSBmcm9tIFwiZGF0YVwiO1xyXG4vLyBpbXBvcnQgRW1vdGVNb2R1bGUgZnJvbSBcIi4vZW1vdGVzXCI7XHJcbi8vIGltcG9ydCBRdWlja0Vtb3RlTWVudSBmcm9tIFwiLi4vYnVpbHRpbnMvZW1vdGVtZW51XCI7XHJcbmltcG9ydCBET01NYW5hZ2VyIGZyb20gXCIuL2RvbW1hbmFnZXJcIjtcclxuaW1wb3J0IFBsdWdpbk1hbmFnZXIgZnJvbSBcIi4vcGx1Z2lubWFuYWdlclwiO1xyXG5pbXBvcnQgVGhlbWVNYW5hZ2VyIGZyb20gXCIuL3RoZW1lbWFuYWdlclwiO1xyXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3NtYW5hZ2VyXCI7XHJcbmltcG9ydCAqIGFzIEJ1aWx0aW5zIGZyb20gXCJidWlsdGluc1wiO1xyXG5pbXBvcnQgTW9kYWxzIGZyb20gXCIuLi91aS9tb2RhbHNcIjtcclxuaW1wb3J0IFJlYWN0Q29tcG9uZW50cyBmcm9tIFwiLi9yZWFjdGNvbXBvbmVudHNcIjtcclxuaW1wb3J0IERhdGFTdG9yZSBmcm9tIFwiLi9kYXRhc3RvcmVcIjtcclxuaW1wb3J0IERpc2NvcmRNb2R1bGVzIGZyb20gXCIuL2Rpc2NvcmRtb2R1bGVzXCI7XHJcbmltcG9ydCBDb21wb25lbnRQYXRjaGVyIGZyb20gXCIuL2NvbXBvbmVudHBhdGNoZXJcIjtcclxuaW1wb3J0IFN0cmluZ3MgZnJvbSBcIi4vc3RyaW5nc1wiO1xyXG5pbXBvcnQgTG9hZGluZ0ljb24gZnJvbSBcIi4uL2xvYWRpbmdpY29uXCI7XHJcbmltcG9ydCBVdGlsaXRpZXMgZnJvbSBcIi4vdXRpbGl0aWVzXCI7XHJcbmltcG9ydCB7IERPTSB9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5jb25zdCB7aXBjUmVuZGVyZXJ9ID0gcmVxdWlyZShcImVsZWN0cm9uXCIpO1xyXG5jb25zdCBHdWlsZENsYXNzZXMgPSBEaXNjb3JkTW9kdWxlcy5HdWlsZENsYXNzZXM7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb3JlIHtcclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIGlwY1JlbmRlcmVyLmludm9rZShcImJkLWNvbmZpZ1wiLCBcImdldFwiKS50aGVuKGluamVjdG9yQ29uZmlnID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaGFzU3RhcnRlZCkgcmV0dXJuO1xyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKENvbmZpZywgaW5qZWN0b3JDb25maWcpO1xyXG4gICAgICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZGVwZW5kZW5jaWVzKCkge1xyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwianF1ZXJ5XCIsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBcInNjcmlwdFwiLFxyXG4gICAgICAgICAgICAgICAgdXJsOiBcIi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvanF1ZXJ5LzIuMC4wL2pxdWVyeS5taW4uanNcIixcclxuICAgICAgICAgICAgICAgIGJhY2t1cDogXCIvL2Nkbi5qc2RlbGl2ci5uZXQvZ2gvanF1ZXJ5L2pxdWVyeUAyLjAuMC9qcXVlcnkubWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBsb2NhbDogbnVsbFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcImJkLXN0eWxlc2hlZXRcIixcclxuICAgICAgICAgICAgICAgIHR5cGU6IFwic3R5bGVcIixcclxuICAgICAgICAgICAgICAgIHVybDogXCIvL2Nkbi5zdGF0aWNhbHkuY29tL2doL3t7cmVwb319L0JldHRlckRpc2NvcmRBcHAve3toYXNofX0vZGlzdC9zdHlsZS5taW4uY3NzXCIsXHJcbiAgICAgICAgICAgICAgICBiYWNrdXA6IFwiLy9yYXVlbnppLmdpdGh1Yi5pby9CZXR0ZXJEaXNjb3JkQXBwL2Rpc3Qvc3R5bGUubWluLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgbG9jYWw6IFwie3tsb2NhbFNlcnZlcn19L0JldHRlckRpc2NvcmRBcHAvZGlzdC9zdHlsZS5taW4uY3NzXCIsXHJcbiAgICAgICAgICAgICAgICBsb2NhbFBhdGg6IFwic3R5bGUubWluLmNzc1wiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIHNldENvbmZpZyhjb25maWcpIHtcclxuICAgICAgICBpZiAodGhpcy5oYXNTdGFydGVkKSByZXR1cm47XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihDb25maWcsIGNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaW5pdCgpIHtcclxuICAgICAgICBpZiAodGhpcy5oYXNTdGFydGVkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5oYXNTdGFydGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgLy8gTG9hZCBkZXBlbmRlbmNpZXMgYXN5bmNocm9ub3VzbHkgaWYgdGhleSBkb24ndCBleGlzdFxyXG4gICAgICAgIGxldCBkZXBlbmRlbmN5UHJvbWlzZSA9IG5ldyBQcm9taXNlKHIgPT4gcigpKTtcclxuICAgICAgICBpZiAoIXdpbmRvdy4kIHx8ICF3aW5kb3cualF1ZXJ5KSBkZXBlbmRlbmN5UHJvbWlzZSA9IHRoaXMubG9hZERlcGVuZGVuY2llcygpO1xyXG5cclxuICAgICAgICBEYXRhU3RvcmUuaW5pdGlhbGl6ZSgpO1xyXG4gICAgICAgIGF3YWl0IExvY2FsZU1hbmFnZXIuaW5pdGlhbGl6ZSgpO1xyXG5cclxuICAgICAgICBpZiAoQ29uZmlnLnZlcnNpb24gPCBDb25maWcubWluU3VwcG9ydGVkVmVyc2lvbikgcmV0dXJuIE1vZGFscy5hbGVydChTdHJpbmdzLlN0YXJ0dXAubm90U3VwcG9ydGVkLCBTdHJpbmdzLlN0YXJ0dXAudmVyc2lvbk1pc21hdGNoLmZvcm1hdCh7aW5qZWN0b3I6IENvbmZpZy52ZXJzaW9uLCByZW1vdGU6IENvbmZpZy5iYmRWZXJzaW9ufSkpO1xyXG4gICAgICAgIGlmICh3aW5kb3cuRUQpIHJldHVybiBNb2RhbHMuYWxlcnQoU3RyaW5ncy5TdGFydHVwLm5vdFN1cHBvcnRlZCwgU3RyaW5ncy5TdGFydHVwLmluY29tcGF0aWJsZUFwcC5mb3JtYXQoe2FwcDogXCJFbmhhbmNlZERpc2NvcmRcIn0pKTtcclxuICAgICAgICBpZiAod2luZG93LldlYlNvY2tldCAmJiB3aW5kb3cuV2ViU29ja2V0Lm5hbWUgJiYgd2luZG93LldlYlNvY2tldC5uYW1lLmluY2x1ZGVzKFwiUGF0Y2hlZFwiKSkgcmV0dXJuIE1vZGFscy5hbGVydChTdHJpbmdzLlN0YXJ0dXAubm90U3VwcG9ydGVkLCBTdHJpbmdzLlN0YXJ0dXAuaW5jb21wYXRpYmxlQXBwLmZvcm1hdCh7YXBwOiBcIlBvd2VyY29yZFwifSkpO1xyXG5cclxuICAgICAgICBjb25zdCBsYXRlc3RMb2NhbFZlcnNpb24gPSBDb25maWcudXBkYXRlciA/IENvbmZpZy51cGRhdGVyLkxhdGVzdFZlcnNpb24gOiBDb25maWcubGF0ZXN0VmVyc2lvbjtcclxuICAgICAgICBpZiAobGF0ZXN0TG9jYWxWZXJzaW9uID4gQ29uZmlnLnZlcnNpb24pIHtcclxuICAgICAgICAgICAgTW9kYWxzLnNob3dDb25maXJtYXRpb25Nb2RhbChTdHJpbmdzLlN0YXJ0dXAudXBkYXRlQXZhaWxhYmxlLCBTdHJpbmdzLlN0YXJ0dXAudXBkYXRlSW5mby5mb3JtYXQoe3ZlcnNpb246IGxhdGVzdExvY2FsVmVyc2lvbn0pLCB7XHJcbiAgICAgICAgICAgICAgICBjb25maXJtVGV4dDogU3RyaW5ncy5TdGFydHVwLnVwZGF0ZU5vdyxcclxuICAgICAgICAgICAgICAgIGNhbmNlbFRleHQ6IFN0cmluZ3MuU3RhcnR1cC5tYXliZUxhdGVyLFxyXG4gICAgICAgICAgICAgICAgb25Db25maXJtOiBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb25VcGRhdGVGYWlsZWQgPSAoKSA9PiB7IE1vZGFscy5hbGVydChTdHJpbmdzLlN0YXJ0dXAudXBkYXRlRmFpbGVkLCBTdHJpbmdzLlN0YXJ0dXAubWFudWFsVXBkYXRlKTsgfTtcclxuICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWRVcGRhdGUgPSBhd2FpdCB0aGlzLnVwZGF0ZUluamVjdG9yKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZGlkVXBkYXRlKSByZXR1cm4gb25VcGRhdGVGYWlsZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBwID0gcmVxdWlyZShcImVsZWN0cm9uXCIpLnJlbW90ZS5hcHA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5yZWxhdW5jaCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHAuZXhpdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uVXBkYXRlRmFpbGVkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBMb2dnZXIubG9nKFwiU3RhcnR1cFwiLCBcIkluaXRpYWxpemluZyBTZXR0aW5nc1wiKTtcclxuICAgICAgICBTZXR0aW5ncy5pbml0aWFsaXplKCk7XHJcblxyXG4gICAgICAgIC8vIERPTU1hbmFnZXIuaW5pdGlhbGl6ZSgpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMud2FpdEZvckd1aWxkcygpO1xyXG4gICAgICAgIFJlYWN0Q29tcG9uZW50cy5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgQ29tcG9uZW50UGF0Y2hlci5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBtb2R1bGUgaW4gQnVpbHRpbnMpIEJ1aWx0aW5zW21vZHVsZV0uaW5pdGlhbGl6ZSgpO1xyXG5cclxuICAgICAgICBhd2FpdCBkZXBlbmRlbmN5UHJvbWlzZTtcclxuICAgICAgICBMb2dnZXIubG9nKFwiU3RhcnR1cFwiLCBcIkxvYWRpbmcgUGx1Z2luc1wiKTtcclxuICAgICAgICBjb25zdCBwbHVnaW5FcnJvcnMgPSBQbHVnaW5NYW5hZ2VyLmluaXRpYWxpemUoKTtcclxuXHJcbiAgICAgICAgTG9nZ2VyLmxvZyhcIlN0YXJ0dXBcIiwgXCJMb2FkaW5nIFRoZW1lc1wiKTtcclxuICAgICAgICBjb25zdCB0aGVtZUVycm9ycyA9IFRoZW1lTWFuYWdlci5pbml0aWFsaXplKCk7XHJcblxyXG4gICAgICAgIExvZ2dlci5sb2coXCJTdGFydHVwXCIsIFwiUmVtb3ZpbmcgTG9hZGluZyBJY29uXCIpO1xyXG4gICAgICAgIExvYWRpbmdJY29uLmhpZGUoKTtcclxuXHJcbiAgICAgICAgLy8gU2hvdyBsb2FkaW5nIGVycm9yc1xyXG4gICAgICAgIExvZ2dlci5sb2coXCJTdGFydHVwXCIsIFwiQ29sbGVjdGluZyBTdGFydHVwIEVycm9yc1wiKTtcclxuICAgICAgICBNb2RhbHMuc2hvd0FkZG9uRXJyb3JzKHtwbHVnaW5zOiBwbHVnaW5FcnJvcnMsIHRoZW1lczogdGhlbWVFcnJvcnN9KTtcclxuXHJcbiAgICAgICAgY29uc3QgcHJldmlvdXNWZXJzaW9uID0gRGF0YVN0b3JlLmdldEJERGF0YShcInZlcnNpb25cIik7XHJcbiAgICAgICAgaWYgKENvbmZpZy5iYmRWZXJzaW9uID4gcHJldmlvdXNWZXJzaW9uKSB7XHJcbiAgICAgICAgICAgIE1vZGFscy5zaG93Q2hhbmdlbG9nTW9kYWwoQ2hhbmdlbG9nKTtcclxuICAgICAgICAgICAgRGF0YVN0b3JlLnNldEJERGF0YShcInZlcnNpb25cIiwgQ29uZmlnLmJiZFZlcnNpb24pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB3YWl0Rm9yR3VpbGRzKCkge1xyXG4gICAgICAgIGxldCB0aW1lc0NoZWNrZWQgPSAwO1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY2hlY2tGb3JHdWlsZHMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB0aW1lc0NoZWNrZWQrKztcclxuICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlICE9IFwiY29tcGxldGVcIikgc2V0VGltZW91dChjaGVja0Zvckd1aWxkcywgMTAwKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZXIgPSBHdWlsZENsYXNzZXMud3JhcHBlci5zcGxpdChcIiBcIilbMF07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBndWlsZCA9IEd1aWxkQ2xhc3Nlcy5saXN0SXRlbS5zcGxpdChcIiBcIilbMF07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0gR3VpbGRDbGFzc2VzLmJsb2JDb250YWluZXIuc3BsaXQoXCIgXCIpWzBdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYC4ke3dyYXBwZXJ9IC4ke2d1aWxkfSAuJHtibG9ifWApLmxlbmd0aCA+IDApIHJldHVybiByZXNvbHZlKENvbmZpZy5kZWZlckxvYWRlZCA9IHRydWUpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGltZXNDaGVja2VkID49IDUwKSByZXR1cm4gcmVzb2x2ZShDb25maWcuZGVmZXJMb2FkZWQgPSB0cnVlKTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoY2hlY2tGb3JHdWlsZHMsIDEwMCk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBjaGVja0Zvckd1aWxkcygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGxvYWREZXBlbmRlbmNpZXMoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBkYXRhIG9mIHRoaXMuZGVwZW5kZW5jaWVzKSB7XHJcbiAgICAgICAgICAgIGlmIChDb25maWcubG9jYWwgJiYgQ29uZmlnLmxvY2FsUGF0aCAmJiBkYXRhLmxvY2FsUGF0aCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMocGF0aC5yZXNvbHZlKENvbmZpZy5sb2NhbFBhdGgsIGRhdGEubG9jYWxQYXRoKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjc3MgPSBmcy5yZWFkRmlsZVN5bmMocGF0aC5yZXNvbHZlKENvbmZpZy5sb2NhbFBhdGgsIGRhdGEubG9jYWxQYXRoKSkudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICBET01NYW5hZ2VyLmluamVjdFN0eWxlKGRhdGEubmFtZSwgY3NzKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCB1cmwgPSBVdGlsaXRpZXMuZm9ybWF0U3RyaW5nKChDb25maWcubG9jYWwgJiYgZGF0YS5sb2NhbCAhPSBudWxsKSA/IGRhdGEubG9jYWwgOiBkYXRhLnVybCwge3JlcG86IENvbmZpZy5yZXBvLCBoYXNoOiBDb25maWcuaGFzaCwgbG9jYWxTZXJ2ZXI6IENvbmZpZy5sb2NhbFNlcnZlcn0pO1xyXG4gICAgICAgICAgICBMb2dnZXIubG9nKGBTdGFydHVwYCwgYExvYWRpbmcgUmVzb3VyY2UgKCR7dXJsfSlgKTtcclxuXHRcdFx0Y29uc3QgaW5qZWN0b3IgPSAoZGF0YS50eXBlID09IFwic2NyaXB0XCIgPyBET01NYW5hZ2VyLmluamVjdFNjcmlwdCA6IERPTU1hbmFnZXIubGlua1N0eWxlKS5iaW5kKERPTU1hbmFnZXIpO1xyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdGF3YWl0IGluamVjdG9yKGRhdGEubmFtZSwgdXJsKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRjYXRjaCAoZXJyKSB7XHJcblx0XHRcdFx0Y29uc3QgYmFja3VwID0gVXRpbGl0aWVzLmZvcm1hdFN0cmluZyhkYXRhLmJhY2t1cCwge21pbmlmaWVkOiBDb25maWcubWluaWZpZWQgPyBcIi5taW5cIiA6IFwiXCJ9KTtcclxuXHRcdFx0XHRMb2dnZXIuc3RhY2t0cmFjZShgU3RhcnR1cGAsIGBDb3VsZCBub3QgbG9hZCAke3VybH0uIFVzaW5nIGJhY2t1cCAke2JhY2t1cH1gLCBlcnIpO1xyXG5cdFx0XHRcdHRyeSB7XHJcblx0XHRcdFx0XHRhd2FpdCBpbmplY3RvcihkYXRhLm5hbWUsIGJhY2t1cCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgTG9nZ2VyLnN0YWNrdHJhY2UoYFN0YXJ0dXBgLCBgQ291bGQgbm90IGxvYWQgJHt1cmx9LiBVc2luZyBiYWNrdXAgJHtiYWNrdXB9YCwgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5uYW1lID09PSBcImpxdWVyeVwiKSAgTW9kYWxzLmFsZXJ0KFN0cmluZ3MuU3RhcnR1cC5qcXVlcnlGYWlsZWQsIFN0cmluZ3MuU3RhcnR1cC5qcXVlcnlGYWlsZWREZXRhaWxzKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdXBkYXRlSW5qZWN0b3IoKSB7XHJcbiAgICAgICAgY29uc3QgaW5qZWN0aW9uUGF0aCA9IERhdGFTdG9yZS5pbmplY3Rpb25QYXRoO1xyXG4gICAgICAgIGlmICghaW5qZWN0aW9uUGF0aCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgICBjb25zdCBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcclxuICAgICAgICBjb25zdCBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XHJcbiAgICAgICAgY29uc3Qgcm1yZiA9IHJlcXVpcmUoXCJyaW1yYWZcIik7XHJcbiAgICAgICAgY29uc3QgeWF1emwgPSByZXF1aXJlKFwieWF1emxcIik7XHJcbiAgICAgICAgY29uc3QgbWtkaXJwID0gcmVxdWlyZShcIm1rZGlycFwiKTtcclxuICAgICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWlyZShcInJlcXVlc3RcIik7XHJcblxyXG4gICAgICAgIGNvbnN0IHBhcmVudFBhdGggPSBwYXRoLnJlc29sdmUoaW5qZWN0aW9uUGF0aCwgXCIuLlwiKTtcclxuICAgICAgICBjb25zdCBmb2xkZXJOYW1lID0gcGF0aC5iYXNlbmFtZShpbmplY3Rpb25QYXRoKTtcclxuICAgICAgICBjb25zdCB6aXBMaW5rID0gXCJodHRwczovL2dpdGh1Yi5jb20vcmF1ZW56aS9CZXR0ZXJEaXNjb3JkQXBwL2FyY2hpdmUvaW5qZWN0b3IuemlwXCI7XHJcbiAgICAgICAgY29uc3Qgc2F2ZWRaaXAgPSBwYXRoLnJlc29sdmUocGFyZW50UGF0aCwgXCJpbmplY3Rvci56aXBcIik7XHJcbiAgICAgICAgY29uc3QgZXh0cmFjdGVkRm9sZGVyID0gcGF0aC5yZXNvbHZlKHBhcmVudFBhdGgsIFwiQmV0dGVyRGlzY29yZEFwcC1pbmplY3RvclwiKTtcclxuXHJcbiAgICAgICAgLy8gRG93bmxvYWQgdGhlIGluamVjdG9yIHppcCBmaWxlXHJcbiAgICAgICAgTG9nZ2VyLmxvZyhcIkluamVjdG9yVXBkYXRlXCIsIFwiRG93bmxvYWRpbmcgXCIgKyB6aXBMaW5rKTtcclxuICAgICAgICBsZXQgc3VjY2VzcyA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICByZXF1ZXN0LmdldCh7dXJsOiB6aXBMaW5rLCBlbmNvZGluZzogbnVsbH0sIGFzeW5jIChlcnJvciwgcmVzcG9uc2UsIGJvZHkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnJvciB8fCByZXNwb25zZS5zdGF0dXNDb2RlICE9PSAyMDApIHJldHVybiByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIC8vIFNhdmUgYSBiYWNrdXAgaW4gY2FzZSBzb21lb25lIGhhcyB0aGVpciBvd24gY29weVxyXG4gICAgICAgICAgICAgICAgY29uc3QgYWxyZWFkeUV4aXN0cyA9IGF3YWl0IG5ldyBQcm9taXNlKHJlcyA9PiBmcy5leGlzdHMoc2F2ZWRaaXAsIHJlcykpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGFscmVhZHlFeGlzdHMpIGF3YWl0IG5ldyBQcm9taXNlKHJlcyA9PiBmcy5yZW5hbWUoc2F2ZWRaaXAsIGAke3NhdmVkWmlwfS5iYWske01hdGgucm91bmQocGVyZm9ybWFuY2Uubm93KCkpfWAsIHJlcykpO1xyXG5cclxuICAgICAgICAgICAgICAgIExvZ2dlci5sb2coXCJJbmplY3RvclVwZGF0ZVwiLCBcIldyaXRpbmcgXCIgKyBzYXZlZFppcCk7XHJcbiAgICAgICAgICAgICAgICBmcy53cml0ZUZpbGUoc2F2ZWRaaXAsIGJvZHksIGVyciA9PiByZXNvbHZlKCFlcnIpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCFzdWNjZXNzKSByZXR1cm4gc3VjY2VzcztcclxuXHJcbiAgICAgICAgLy8gQ2hlY2sgYW5kIGRlbGV0ZSByZW5hbWUgZXh0cmFjdGlvblxyXG4gICAgICAgIGNvbnN0IGFscmVhZHlFeGlzdHMgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXMgPT4gZnMuZXhpc3RzKGV4dHJhY3RlZEZvbGRlciwgcmVzKSk7XHJcbiAgICAgICAgaWYgKGFscmVhZHlFeGlzdHMpIGF3YWl0IG5ldyBQcm9taXNlKHJlcyA9PiBmcy5yZW5hbWUoZXh0cmFjdGVkRm9sZGVyLCBgJHtleHRyYWN0ZWRGb2xkZXJ9LmJhayR7TWF0aC5yb3VuZChwZXJmb3JtYW5jZS5ub3coKSl9YCwgcmVzKSk7XHJcblxyXG4gICAgICAgIC8vIFVuemlwIHRoZSBkb3dubG9hZGVkIHppcCBmaWxlXHJcbiAgICAgICAgY29uc3QgemlwZmlsZSA9IGF3YWl0IG5ldyBQcm9taXNlKHIgPT4geWF1emwub3BlbihzYXZlZFppcCwge2xhenlFbnRyaWVzOiB0cnVlfSwgKGVyciwgemlwKSA9PiByKHppcCkpKTtcclxuICAgICAgICB6aXBmaWxlLm9uKFwiZW50cnlcIiwgZnVuY3Rpb24gKGVudHJ5KSB7XHJcbiAgICAgICAgICAgIC8vIFNraXAgZGlyZWN0b3JpZXMsIHRoZXkgYXJlIGhhbmRsZWQgd2l0aCBta2RpcnBcclxuICAgICAgICAgICAgaWYgKGVudHJ5LmZpbGVOYW1lLmVuZHNXaXRoKFwiL1wiKSkgcmV0dXJuIHppcGZpbGUucmVhZEVudHJ5KCk7XHJcblxyXG4gICAgICAgICAgICBMb2dnZXIubG9nKFwiSW5qZWN0b3JVcGRhdGVcIiwgXCJFeHRyYWN0aW5nIFwiICsgZW50cnkuZmlsZU5hbWUpO1xyXG4gICAgICAgICAgICAvLyBNYWtlIGFueSBuZWVkZWQgcGFyZW50IGRpcmVjdG9yaWVzXHJcbiAgICAgICAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5yZXNvbHZlKHBhcmVudFBhdGgsIGVudHJ5LmZpbGVOYW1lKTtcclxuICAgICAgICAgICAgbWtkaXJwLnN5bmMocGF0aC5kaXJuYW1lKGZ1bGxQYXRoKSk7XHJcbiAgICAgICAgICAgIHppcGZpbGUub3BlblJlYWRTdHJlYW0oZW50cnksIGZ1bmN0aW9uIChlcnIsIHJlYWRTdHJlYW0pIHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHJldHVybiBzdWNjZXNzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICByZWFkU3RyZWFtLm9uKFwiZW5kXCIsIGZ1bmN0aW9uICgpIHsgemlwZmlsZS5yZWFkRW50cnkoKTsgfSk7IC8vIEdvIHRvIG5leHQgZmlsZSBhZnRlciB0aGlzXHJcbiAgICAgICAgICAgICAgICByZWFkU3RyZWFtLnBpcGUoZnMuY3JlYXRlV3JpdGVTdHJlYW0oZnVsbFBhdGgpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgemlwZmlsZS5yZWFkRW50cnkoKTsgLy8gU3RhcnQgcmVhZGluZ1xyXG5cclxuXHJcbiAgICAgICAgLy8gV2FpdCBmb3IgdGhlIGZpbmFsIGZpbGUgdG8gZmluaXNoXHJcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB6aXBmaWxlLm9uY2UoXCJlbmRcIiwgcmVzb2x2ZSkpO1xyXG5cclxuICAgICAgICAvLyBTYXZlIGEgYmFja3VwIGluIGNhc2Ugc29tZXRoaW5nIGdvZXMgd3JvbmcgZHVyaW5nIGZpbmFsIHN0ZXBcclxuICAgICAgICBjb25zdCBiYWNrdXBGb2xkZXIgPSBwYXRoLnJlc29sdmUocGFyZW50UGF0aCwgYCR7Zm9sZGVyTmFtZX0uYmFrJHtNYXRoLnJvdW5kKHBlcmZvcm1hbmNlLm5vdygpKX1gKTtcclxuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IGZzLnJlbmFtZShpbmplY3Rpb25QYXRoLCBiYWNrdXBGb2xkZXIsIHJlc29sdmUpKTtcclxuXHJcbiAgICAgICAgLy8gUmVuYW1lIHRoZSBleHRyYWN0ZWQgZm9sZGVyIHRvIHdoYXQgaXQgc2hvdWxkIGJlXHJcbiAgICAgICAgTG9nZ2VyLmxvZyhcIkluamVjdG9yVXBkYXRlXCIsIGBSZW5hbWluZyAke3BhdGguYmFzZW5hbWUoZXh0cmFjdGVkRm9sZGVyKX0gdG8gJHtmb2xkZXJOYW1lfWApO1xyXG4gICAgICAgIHN1Y2Nlc3MgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IGZzLnJlbmFtZShleHRyYWN0ZWRGb2xkZXIsIGluamVjdGlvblBhdGgsIGVyciA9PiByZXNvbHZlKCFlcnIpKSk7XHJcbiAgICAgICAgaWYgKCFzdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIExvZ2dlci5lcnIoXCJJbmplY3RvclVwZGF0ZVwiLCBcIkZhaWxlZCB0byByZW5hbWUgdGhlIGZpbmFsIGRpcmVjdG9yeVwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJZiByZW5hbWUgaGFkIGlzc3VlcywgZGVsZXRlIHdoYXQgd2UgdHJpZWQgdG8gcmVuYW1lIGFuZCByZXN0b3JlIGJhY2t1cFxyXG4gICAgICAgIGlmICghc3VjY2Vzcykge1xyXG4gICAgICAgICAgICBMb2dnZXIuZXJyKFwiSW5qZWN0b3JVcGRhdGVcIiwgXCJTb21ldGhpbmcgd2VudCB3cm9uZy4uLiByZXN0b3JpbmcgYmFja3Vwcy5cIik7XHJcbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gcm1yZihleHRyYWN0ZWRGb2xkZXIsIHJlc29sdmUpKTtcclxuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBmcy5yZW5hbWUoYmFja3VwRm9sZGVyLCBpbmplY3Rpb25QYXRoLCByZXNvbHZlKSk7XHJcbiAgICAgICAgICAgIHJldHVybiBzdWNjZXNzO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gSWYgd2UndmUgZ290dGVuIHRvIHRoaXMgcG9pbnQsIGV2ZXJ5dGhpbmcgc2hvdWxkIGhhdmUgZ29uZSBzbW9vdGhseS5cclxuICAgICAgICAvLyBDbGVhbnVwIHRoZSBiYWNrdXAgZm9sZGVyIHRoZW4gcmVtb3ZlIHRoZSB6aXBcclxuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJtcmYoYmFja3VwRm9sZGVyLCByZXNvbHZlKSk7XHJcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBmcy51bmxpbmsoc2F2ZWRaaXAsIHJlc29sdmUpKTtcclxuXHJcbiAgICAgICAgTG9nZ2VyLmxvZyhcIkluamVjdG9yVXBkYXRlXCIsIFwiSW5qZWN0b3IgVXBkYXRlZCFcIik7XHJcbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/core.js\n"); /***/ }), @@ -430,7 +430,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n\n\n\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\nconst releaseChannel = DiscordNative.globals ? DiscordNative.globals.releaseChannel : DiscordNative.app ? DiscordNative.app.getReleaseChannel() : \"stable\"; // Schema\n// =======================\n// %appdata%\\BetterDiscord\n// -> data\n// -> [releaseChannel]\\ (stable/canary/ptb)\n// -> settings.json\n// -> plugins.json\n// -> themes.json\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class DataStore {\n constructor() {\n this.data = {\n misc: {}\n };\n this.pluginData = {};\n this.cacheData = {};\n }\n\n initialize() {\n if (!fs.existsSync(this.baseFolder)) fs.mkdirSync(this.baseFolder);\n if (!fs.existsSync(this.dataFolder)) fs.mkdirSync(this.dataFolder);\n if (!fs.existsSync(this.localeFolder)) fs.mkdirSync(this.localeFolder);\n if (!fs.existsSync(this.emoteFolder)) fs.mkdirSync(this.emoteFolder);\n if (!fs.existsSync(this.cacheFile)) fs.writeFileSync(this.cacheFile, JSON.stringify({}));\n if (!fs.existsSync(this.customCSS)) fs.writeFileSync(this.customCSS, \"\");\n const dataFiles = fs.readdirSync(this.dataFolder).filter(f => !fs.statSync(path.resolve(this.dataFolder, f)).isDirectory() && f.endsWith(\".json\"));\n\n for (const file of dataFiles) {\n this.data[file.split(\".\")[0]] = require(path.resolve(this.dataFolder, file));\n }\n\n this.cacheData = _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].testJSON(fs.readFileSync(this.cacheFile).toString()) || {};\n }\n\n get injectionPath() {\n if (this._injectionPath) return this._injectionPath;\n\n const electron = __webpack_require__(/*! electron */ \"electron\").remote.app;\n\n const base = electron.getAppPath();\n const roamingBase = electron.getPath(\"userData\");\n const roamingLocation = path.resolve(roamingBase, electron.getVersion(), \"modules\", \"discord_desktop_core\", \"injector\");\n const location = path.resolve(base, \"..\", \"app\");\n const realLocation = fs.existsSync(location) ? location : fs.existsSync(roamingLocation) ? roamingLocation : null;\n if (!realLocation) return this._injectionPath = null;\n return this._injectionPath = realLocation;\n }\n\n get customCSS() {\n return this._customCSS || (this._customCSS = path.resolve(this.dataFolder, \"custom.css\"));\n }\n\n get baseFolder() {\n return this._baseFolder || (this._baseFolder = path.resolve(data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"data\"));\n }\n\n get dataFolder() {\n return this._dataFolder || (this._dataFolder = path.resolve(this.baseFolder, `${releaseChannel}`));\n }\n\n get localeFolder() {\n return this._localeFolder || (this._localeFolder = path.resolve(this.baseFolder, `locales`));\n }\n\n get emoteFolder() {\n return this._emoteFolder || (this._emoteFolder = path.resolve(this.baseFolder, `emotes`));\n }\n\n get cacheFile() {\n return this._cacheFile || (this._cacheFile = path.resolve(this.baseFolder, `.cache`));\n }\n\n getPluginFile(pluginName) {\n return path.resolve(data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"plugins\", pluginName + \".config.json\");\n }\n\n _getFile(key) {\n if (key == \"settings\" || key == \"plugins\" || key == \"themes\" || key == \"window\") return path.resolve(this.dataFolder, `${key}.json`);\n return path.resolve(this.dataFolder, `misc.json`);\n }\n\n getBDData(key) {\n return this.data.misc[key] || \"\";\n }\n\n setBDData(key, value) {\n this.data.misc[key] = value;\n fs.writeFileSync(path.resolve(this.dataFolder, `misc.json`), JSON.stringify(this.data.misc, null, 4));\n }\n\n getLocale(locale) {\n const file = path.resolve(this.localeFolder, `${locale}.json`);\n if (!fs.existsSync(file)) return null;\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].testJSON(fs.readFileSync(file).toString());\n }\n\n saveLocale(locale, strings) {\n fs.writeFileSync(path.resolve(this.localeFolder, `${locale}.json`), JSON.stringify(strings, null, 4));\n }\n\n getCacheHash(category, key) {\n if (!this.cacheData[category]) return \"\";\n if (!fs.existsSync(path.resolve(this.baseFolder, category, `${key}.json`))) return \"\";\n return this.cacheData[category][key] || \"\";\n }\n\n setCacheHash(category, key, hash) {\n if (!this.cacheData[category]) this.cacheData[category] = {};\n this.cacheData[category][key] = hash;\n fs.writeFileSync(this.cacheFile, JSON.stringify(this.cacheData));\n }\n\n invalidateCache(category, key) {\n if (!this.cacheData[category]) return;\n delete this.cacheData[category][key];\n fs.writeFileSync(this.cacheFile, JSON.stringify(this.cacheData));\n }\n\n emotesExist(category) {\n return fs.existsSync(path.resolve(this.emoteFolder, `${category}.json`));\n }\n\n getEmoteData(category) {\n const file = path.resolve(this.emoteFolder, `${category}.json`);\n if (!fs.existsSync(file)) return null;\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].testJSON(fs.readFileSync(file).toString());\n }\n\n saveEmoteData(category, data) {\n fs.writeFileSync(path.resolve(this.emoteFolder, `${category}.json`), JSON.stringify(data));\n }\n\n getData(key) {\n return this.data[key] || \"\";\n }\n\n setData(key, value) {\n this.data[key] = value;\n fs.writeFileSync(path.resolve(this.dataFolder, `${key}.json`), JSON.stringify(value, null, 4));\n }\n\n loadCustomCSS() {\n return fs.readFileSync(this.customCSS).toString();\n }\n\n saveCustomCSS(css) {\n return fs.writeFileSync(this.customCSS, css);\n }\n\n getPluginData(pluginName, key) {\n if (this.pluginData[pluginName] !== undefined) return this.pluginData[pluginName][key] || undefined;\n if (!fs.existsSync(this.getPluginFile(pluginName))) return undefined;\n this.pluginData[pluginName] = JSON.parse(fs.readFileSync(this.getPluginFile(pluginName)));\n return this.pluginData[pluginName][key] || undefined;\n }\n\n setPluginData(pluginName, key, value) {\n if (value === undefined) return;\n if (this.pluginData[pluginName] === undefined) this.pluginData[pluginName] = {};\n this.pluginData[pluginName][key] = value;\n fs.writeFileSync(this.getPluginFile(pluginName), JSON.stringify(this.pluginData[pluginName], null, 4));\n }\n\n deletePluginData(pluginName, key) {\n if (this.pluginData[pluginName] === undefined) this.pluginData[pluginName] = {};\n delete this.pluginData[pluginName][key];\n fs.writeFileSync(this.getPluginFile(pluginName), JSON.stringify(this.pluginData[pluginName], null, 4));\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9kYXRhc3RvcmUuanM/MTA1MiJdLCJuYW1lcyI6WyJmcyIsInJlcXVpcmUiLCJwYXRoIiwicmVsZWFzZUNoYW5uZWwiLCJEaXNjb3JkTmF0aXZlIiwiZ2xvYmFscyIsImFwcCIsImdldFJlbGVhc2VDaGFubmVsIiwiRGF0YVN0b3JlIiwiY29uc3RydWN0b3IiLCJkYXRhIiwibWlzYyIsInBsdWdpbkRhdGEiLCJjYWNoZURhdGEiLCJpbml0aWFsaXplIiwiZXhpc3RzU3luYyIsImJhc2VGb2xkZXIiLCJta2RpclN5bmMiLCJkYXRhRm9sZGVyIiwibG9jYWxlRm9sZGVyIiwiZW1vdGVGb2xkZXIiLCJjYWNoZUZpbGUiLCJ3cml0ZUZpbGVTeW5jIiwiSlNPTiIsInN0cmluZ2lmeSIsImN1c3RvbUNTUyIsImRhdGFGaWxlcyIsInJlYWRkaXJTeW5jIiwiZmlsdGVyIiwiZiIsInN0YXRTeW5jIiwicmVzb2x2ZSIsImlzRGlyZWN0b3J5IiwiZW5kc1dpdGgiLCJmaWxlIiwic3BsaXQiLCJfX25vbl93ZWJwYWNrX3JlcXVpcmVfXyIsIlV0aWxpdGllcyIsInRlc3RKU09OIiwicmVhZEZpbGVTeW5jIiwidG9TdHJpbmciLCJpbmplY3Rpb25QYXRoIiwiX2luamVjdGlvblBhdGgiLCJlbGVjdHJvbiIsInJlbW90ZSIsImJhc2UiLCJnZXRBcHBQYXRoIiwicm9hbWluZ0Jhc2UiLCJnZXRQYXRoIiwicm9hbWluZ0xvY2F0aW9uIiwiZ2V0VmVyc2lvbiIsImxvY2F0aW9uIiwicmVhbExvY2F0aW9uIiwiX2N1c3RvbUNTUyIsIl9iYXNlRm9sZGVyIiwiQ29uZmlnIiwiZGF0YVBhdGgiLCJfZGF0YUZvbGRlciIsIl9sb2NhbGVGb2xkZXIiLCJfZW1vdGVGb2xkZXIiLCJfY2FjaGVGaWxlIiwiZ2V0UGx1Z2luRmlsZSIsInBsdWdpbk5hbWUiLCJfZ2V0RmlsZSIsImtleSIsImdldEJERGF0YSIsInNldEJERGF0YSIsInZhbHVlIiwiZ2V0TG9jYWxlIiwibG9jYWxlIiwic2F2ZUxvY2FsZSIsInN0cmluZ3MiLCJnZXRDYWNoZUhhc2giLCJjYXRlZ29yeSIsInNldENhY2hlSGFzaCIsImhhc2giLCJpbnZhbGlkYXRlQ2FjaGUiLCJlbW90ZXNFeGlzdCIsImdldEVtb3RlRGF0YSIsInNhdmVFbW90ZURhdGEiLCJnZXREYXRhIiwic2V0RGF0YSIsImxvYWRDdXN0b21DU1MiLCJzYXZlQ3VzdG9tQ1NTIiwiY3NzIiwiZ2V0UGx1Z2luRGF0YSIsInVuZGVmaW5lZCIsInBhcnNlIiwic2V0UGx1Z2luRGF0YSIsImRlbGV0ZVBsdWdpbkRhdGEiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7O0FBQ0EsTUFBTUEsRUFBRSxHQUFHQyxtQkFBTyxDQUFDLGNBQUQsQ0FBbEI7O0FBQ0EsTUFBTUMsSUFBSSxHQUFHRCxtQkFBTyxDQUFDLGtCQUFELENBQXBCOztBQUNBLE1BQU1FLGNBQWMsR0FBR0MsYUFBYSxDQUFDQyxPQUFkLEdBQXdCRCxhQUFhLENBQUNDLE9BQWQsQ0FBc0JGLGNBQTlDLEdBQStEQyxhQUFhLENBQUNFLEdBQWQsR0FBb0JGLGFBQWEsQ0FBQ0UsR0FBZCxDQUFrQkMsaUJBQWxCLEVBQXBCLEdBQTRELFFBQWxKLEMsQ0FFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlLG1FQUFJLE1BQU1DLFNBQU4sQ0FBZ0I7QUFDL0JDLGFBQVcsR0FBRztBQUNWLFNBQUtDLElBQUwsR0FBWTtBQUFDQyxVQUFJLEVBQUU7QUFBUCxLQUFaO0FBQ0EsU0FBS0MsVUFBTCxHQUFrQixFQUFsQjtBQUNBLFNBQUtDLFNBQUwsR0FBaUIsRUFBakI7QUFDSDs7QUFFREMsWUFBVSxHQUFHO0FBQ1QsUUFBSSxDQUFDZCxFQUFFLENBQUNlLFVBQUgsQ0FBYyxLQUFLQyxVQUFuQixDQUFMLEVBQXFDaEIsRUFBRSxDQUFDaUIsU0FBSCxDQUFhLEtBQUtELFVBQWxCO0FBQ3JDLFFBQUksQ0FBQ2hCLEVBQUUsQ0FB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RSxVQUFMLENBQWdCa0QsVUFBaEIsTUFBZ0N3QixTQUFwQyxFQUErQyxLQUFLMUUsVUFBTCxDQUFnQmtELFVBQWhCLElBQThCLEVBQTlCO0FBQy9DLFNBQUtsRCxVQUFMLENBQWdCa0QsVUFBaEIsRUFBNEJFLEdBQTVCLElBQW1DRyxLQUFuQztBQUNBbkUsTUFBRSxDQUFDc0IsYUFBSCxDQUFpQixLQUFLdUMsYUFBTCxDQUFtQkMsVUFBbkIsQ0FBakIsRUFBaUR2QyxJQUFJLENBQUNDLFNBQUwsQ0FBZSxLQUFLWixVQUFMLENBQWdCa0QsVUFBaEIsQ0FBZixFQUE0QyxJQUE1QyxFQUFrRCxDQUFsRCxDQUFqRDtBQUNIOztBQUVEMkIsa0JBQWdCLENBQUMzQixVQUFELEVBQWFFLEdBQWIsRUFBa0I7QUFDOUIsUUFBSSxLQUFLcEQsVUFBTCxDQUFnQmtELFVBQWhCLE1BQWdDd0IsU0FBcEMsRUFBK0MsS0FBSzFFLFVBQUwsQ0FBZ0JrRCxVQUFoQixJQUE4QixFQUE5QjtBQUMvQyxXQUFPLEtBQUtsRCxVQUFMLENBQWdCa0QsVUFBaEIsRUFBNEJFLEdBQTVCLENBQVA7QUFDQWhFLE1BQUUsQ0FBQ3NCLGFBQUgsQ0FBaUIsS0FBS3VDLGFBQUwsQ0FBbUJDLFVBQW5CLENBQWpCLEVBQWlEdkMsSUFBSSxDQUFDQyxTQUFMLENBQWUsS0FBS1osVUFBTCxDQUFnQmtELFVBQWhCLENBQWYsRUFBNEMsSUFBNUMsRUFBa0QsQ0FBbEQsQ0FBakQ7QUFDSDs7QUFySThCLENBQXBCLEVBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9kYXRhc3RvcmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbmZpZ30gZnJvbSBcImRhdGFcIjtcclxuaW1wb3J0IFV0aWxpdGllcyBmcm9tIFwiLi91dGlsaXRpZXNcIjtcclxuY29uc3QgZnMgPSByZXF1aXJlKFwiZnNcIik7XHJcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcclxuY29uc3QgcmVsZWFzZUNoYW5uZWwgPSBEaXNjb3JkTmF0aXZlLmdsb2JhbHMgPyBEaXNjb3JkTmF0aXZlLmdsb2JhbHMucmVsZWFzZUNoYW5uZWwgOiBEaXNjb3JkTmF0aXZlLmFwcCA/IERpc2NvcmROYXRpdmUuYXBwLmdldFJlbGVhc2VDaGFubmVsKCkgOiBcInN0YWJsZVwiO1xyXG5cclxuLy8gU2NoZW1hXHJcbi8vID09PT09PT09PT09PT09PT09PT09PT09XHJcbi8vICVhcHBkYXRhJVxcQmV0dGVyRGlzY29yZFxyXG4vLyAgICAgLT4gZGF0YVxyXG4vLyAgICAgICAgIC0+IFtyZWxlYXNlQ2hhbm5lbF1cXCAoc3RhYmxlL2NhbmFyeS9wdGIpXHJcbi8vICAgICAgICAgICAgIC0+IHNldHRpbmdzLmpzb25cclxuLy8gICAgICAgICAgICAgLT4gcGx1Z2lucy5qc29uXHJcbi8vICAgICAgICAgICAgIC0+IHRoZW1lcy5qc29uXHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgRGF0YVN0b3JlIHtcclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IHttaXNjOiB7fX07XHJcbiAgICAgICAgdGhpcy5wbHVnaW5EYXRhID0ge307XHJcbiAgICAgICAgdGhpcy5jYWNoZURhdGEgPSB7fTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0aWFsaXplKCkge1xyXG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLmJhc2VGb2xkZXIpKSBmcy5ta2RpclN5bmModGhpcy5iYXNlRm9sZGVyKTtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5kYXRhRm9sZGVyKSkgZnMubWtkaXJTeW5jKHRoaXMuZGF0YUZvbGRlcik7XHJcbiAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHRoaXMubG9jYWxlRm9sZGVyKSkgZnMubWtkaXJTeW5jKHRoaXMubG9jYWxlRm9sZGVyKTtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5lbW90ZUZvbGRlcikpIGZzLm1rZGlyU3luYyh0aGlzLmVtb3RlRm9sZGVyKTtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5jYWNoZUZpbGUpKSBmcy53cml0ZUZpbGVTeW5jKHRoaXMuY2FjaGVGaWxlLCBKU09OLnN0cmluZ2lmeSh7fSkpO1xyXG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLmN1c3RvbUNTUykpIGZzLndyaXRlRmlsZVN5bmModGhpcy5jdXN0b21DU1MsIFwiXCIpO1xyXG4gICAgICAgIGNvbnN0IGRhdGFGaWxlcyA9IGZzLnJlYWRkaXJTeW5jKHRoaXMuZGF0YUZvbGRlcikuZmlsdGVyKGYgPT4gIWZzLnN0YXRTeW5jKHBhdGgucmVzb2x2ZSh0aGlzLmRhdGFGb2xkZXIsIGYpKS5pc0RpcmVjdG9yeSgpICYmIGYuZW5kc1dpdGgoXCIuanNvblwiKSk7XHJcbiAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGRhdGFGaWxlcykge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFbZmlsZS5zcGxpdChcIi5cIilbMF1dID0gX19ub25fd2VicGFja19yZXF1aXJlX18ocGF0aC5yZXNvbHZlKHRoaXMuZGF0YUZvbGRlciwgZmlsZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNhY2hlRGF0YSA9IFV0aWxpdGllcy50ZXN0SlNPTihmcy5yZWFkRmlsZVN5bmModGhpcy5jYWNoZUZpbGUpLnRvU3RyaW5nKCkpIHx8IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpbmplY3Rpb25QYXRoKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9pbmplY3Rpb25QYXRoKSByZXR1cm4gdGhpcy5faW5qZWN0aW9uUGF0aDtcclxuICAgICAgICBjb25zdCBlbGVjdHJvbiA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKS5yZW1vdGUuYXBwO1xyXG4gICAgICAgIGNvbnN0IGJhc2UgPSBlbGVjdHJvbi5nZXRBcHBQYXRoKCk7XHJcbiAgICAgICAgY29uc3Qgcm9hbWluZ0Jhc2UgPSBlbGVjdHJvbi5nZXRQYXRoKFwidXNlckRhdGFcIik7XHJcbiAgICAgICAgY29uc3Qgcm9hbWluZ0xvY2F0aW9uID0gcGF0aC5yZXNvbHZlKHJvYW1pbmdCYXNlLCBlbGVjdHJvbi5nZXRWZXJzaW9uKCksIFwibW9kdWxlc1wiLCBcImRpc2NvcmRfZGVza3RvcF9jb3JlXCIsIFwiaW5qZWN0b3JcIik7XHJcbiAgICAgICAgY29uc3QgbG9jYXRpb24gPSBwYXRoLnJlc29sdmUoYmFzZSwgXCIuLlwiLCBcImFwcFwiKTtcclxuICAgICAgICBjb25zdCByZWFsTG9jYXRpb24gPSBmcy5leGlzdHNTeW5jKGxvY2F0aW9uKSA/IGxvY2F0aW9uIDogZnMuZXhpc3RzU3luYyhyb2FtaW5nTG9jYXRpb24pID8gcm9hbWluZ0xvY2F0aW9uIDogbnVsbDtcclxuICAgICAgICBpZiAoIXJlYWxMb2NhdGlvbikgcmV0dXJuIHRoaXMuX2luamVjdGlvblBhdGggPSBudWxsO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pbmplY3Rpb25QYXRoID0gcmVhbExvY2F0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjdXN0b21DU1MoKSB7cmV0dXJuIHRoaXMuX2N1c3RvbUNTUyB8fCAodGhpcy5fY3VzdG9tQ1NTID0gcGF0aC5yZXNvbHZlKHRoaXMuZGF0YUZvbGRlciwgXCJjdXN0b20uY3NzXCIpKTt9XHJcbiAgICBnZXQgYmFzZUZvbGRlcigpIHtyZXR1cm4gdGhpcy5fYmFzZUZvbGRlciB8fCAodGhpcy5fYmFzZUZvbGRlciA9IHBhdGgucmVzb2x2ZShDb25maWcuZGF0YVBhdGgsIFwiZGF0YVwiKSk7fVxyXG4gICAgZ2V0IGRhdGFGb2xkZXIoKSB7cmV0dXJuIHRoaXMuX2RhdGFGb2xkZXIgfHwgKHRoaXMuX2RhdGFGb2xkZXIgPSBwYXRoLnJlc29sdmUodGhpcy5iYXNlRm9sZGVyLCBgJHtyZWxlYXNlQ2hhbm5lbH1gKSk7fVxyXG4gICAgZ2V0IGxvY2FsZUZvbGRlcigpIHtyZXR1cm4gdGhpcy5fbG9jYWxlRm9sZGVyIHx8ICh0aGlzLl9sb2NhbGVGb2xkZXIgPSBwYXRoLnJlc29sdmUodGhpcy5iYXNlRm9sZGVyLCBgbG9jYWxlc2ApKTt9XHJcbiAgICBnZXQgZW1vdGVGb2xkZXIoKSB7cmV0dXJuIHRoaXMuX2Vtb3RlRm9sZGVyIHx8ICh0aGlzLl9lbW90ZUZvbGRlciA9IHBhdGgucmVzb2x2ZSh0aGlzLmJhc2VGb2xkZXIsIGBlbW90ZXNgKSk7fVxyXG4gICAgZ2V0IGNhY2hlRmlsZSgpIHtyZXR1cm4gdGhpcy5fY2FjaGVGaWxlIHx8ICh0aGlzLl9jYWNoZUZpbGUgPSBwYXRoLnJlc29sdmUodGhpcy5iYXNlRm9sZGVyLCBgLmNhY2hlYCkpO31cclxuICAgIGdldFBsdWdpbkZpbGUocGx1Z2luTmFtZSkge3JldHVybiBwYXRoLnJlc29sdmUoQ29uZmlnLmRhdGFQYXRoLCBcInBsdWdpbnNcIiwgcGx1Z2luTmFtZSArIFwiLmNvbmZpZy5qc29uXCIpO31cclxuXHJcblxyXG4gICAgX2dldEZpbGUoa2V5KSB7XHJcbiAgICAgICAgaWYgKGtleSA9PSBcInNldHRpbmdzXCIgfHwga2V5ID09IFwicGx1Z2luc1wiIHx8IGtleSA9PSBcInRoZW1lc1wiIHx8IGtleSA9PSBcIndpbmRvd1wiKSByZXR1cm4gcGF0aC5yZXNvbHZlKHRoaXMuZGF0YUZvbGRlciwgYCR7a2V5fS5qc29uYCk7XHJcbiAgICAgICAgcmV0dXJuIHBhdGgucmVzb2x2ZSh0aGlzLmRhdGFGb2xkZXIsIGBtaXNjLmpzb25gKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRCRERhdGEoa2V5KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5taXNjW2tleV0gfHwgXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBzZXRCRERhdGEoa2V5LCB2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuZGF0YS5taXNjW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGgucmVzb2x2ZSh0aGlzLmRhdGFGb2xkZXIsIGBtaXNjLmpzb25gKSwgSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhLm1pc2MsIG51bGwsIDQpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRMb2NhbGUobG9jYWxlKSB7XHJcbiAgICAgICAgY29uc3QgZmlsZSA9IHBhdGgucmVzb2x2ZSh0aGlzLmxvY2FsZUZvbGRlciwgYCR7bG9jYWxlfS5qc29uYCk7XHJcbiAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGZpbGUpKSByZXR1cm4gbnVsbDtcclxuICAgICAgICByZXR1cm4gVXRpbGl0aWVzLnRlc3RKU09OKGZzLnJlYWRGaWxlU3luYyhmaWxlKS50b1N0cmluZygpKTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlTG9jYWxlKGxvY2FsZSwgc3RyaW5ncykge1xyXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aC5yZXNvbHZlKHRoaXMubG9jYWxlRm9sZGVyLCBgJHtsb2NhbGV9Lmpzb25gKSwgSlNPTi5zdHJpbmdpZnkoc3RyaW5ncywgbnVsbCwgNCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENhY2hlSGFzaChjYXRlZ29yeSwga2V5KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNhY2hlRGF0YVtjYXRlZ29yeV0pIHJldHVybiBcIlwiO1xyXG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhwYXRoLnJlc29sdmUodGhpcy5iYXNlRm9sZGVyLCBjYXRlZ29yeSwgYCR7a2V5fS5qc29uYCkpKSByZXR1cm4gXCJcIjtcclxuICAgICAgICByZXR1cm4gdGhpcy5jYWNoZURhdGFbY2F0ZWdvcnldW2tleV0gfHwgXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBzZXRDYWNoZUhhc2goY2F0ZWdvcnksIGtleSwgaGFzaCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jYWNoZURhdGFbY2F0ZWdvcnldKSB0aGlzLmNhY2hlRGF0YVtjYXRlZ29yeV0gPSB7fTtcclxuICAgICAgICB0aGlzLmNhY2hlRGF0YVtjYXRlZ29yeV1ba2V5XSA9IGhhc2g7XHJcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyh0aGlzLmNhY2hlRmlsZSwgSlNPTi5zdHJpbmdpZnkodGhpcy5jYWNoZURhdGEpKTtcclxuICAgIH1cclxuXHJcbiAgICBpbnZhbGlkYXRlQ2FjaGUoY2F0ZWdvcnksIGtleSkge1xyXG4gICAgICAgIGlmICghdGhpcy5jYWNoZURhdGFbY2F0ZWdvcnldKSByZXR1cm47XHJcbiAgICAgICAgZGVsZXRlIHRoaXMuY2FjaGVEYXRhW2NhdGVnb3J5XVtrZXldO1xyXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmModGhpcy5jYWNoZUZpbGUsIEpTT04uc3RyaW5naWZ5KHRoaXMuY2FjaGVEYXRhKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZW1vdGVzRXhpc3QoY2F0ZWdvcnkpIHtcclxuICAgICAgICByZXR1cm4gZnMuZXhpc3RzU3luYyhwYXRoLnJlc29sdmUodGhpcy5lbW90ZUZvbGRlciwgYCR7Y2F0ZWdvcnl9Lmpzb25gKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RW1vdGVEYXRhKGNhdGVnb3J5KSB7XHJcbiAgICAgICAgY29uc3QgZmlsZSA9IHBhdGgucmVzb2x2ZSh0aGlzLmVtb3RlRm9sZGVyLCBgJHtjYXRlZ29yeX0uanNvbmApO1xyXG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhmaWxlKSkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgcmV0dXJuIFV0aWxpdGllcy50ZXN0SlNPTihmcy5yZWFkRmlsZVN5bmMoZmlsZSkudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUVtb3RlRGF0YShjYXRlZ29yeSwgZGF0YSkge1xyXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aC5yZXNvbHZlKHRoaXMuZW1vdGVGb2xkZXIsIGAke2NhdGVnb3J5fS5qc29uYCksIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREYXRhKGtleSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFba2V5XSB8fCBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERhdGEoa2V5LCB2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuZGF0YVtrZXldID0gdmFsdWU7XHJcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLnJlc29sdmUodGhpcy5kYXRhRm9sZGVyLCBgJHtrZXl9Lmpzb25gKSwgSlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsIDQpKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkQ3VzdG9tQ1NTKCkge1xyXG4gICAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmModGhpcy5jdXN0b21DU1MpLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUN1c3RvbUNTUyhjc3MpIHtcclxuICAgICAgICByZXR1cm4gZnMud3JpdGVGaWxlU3luYyh0aGlzLmN1c3RvbUNTUywgY3NzKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQbHVnaW5EYXRhKHBsdWdpbk5hbWUsIGtleSkge1xyXG4gICAgICAgIGlmICh0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0gIT09IHVuZGVmaW5lZCkgcmV0dXJuIHRoaXMucGx1Z2luRGF0YVtwbHVnaW5OYW1lXVtrZXldIHx8IHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5nZXRQbHVnaW5GaWxlKHBsdWdpbk5hbWUpKSkgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0gPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyh0aGlzLmdldFBsdWdpbkZpbGUocGx1Z2luTmFtZSkpKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbHVnaW5EYXRhW3BsdWdpbk5hbWVdW2tleV0gfHwgdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFBsdWdpbkRhdGEocGx1Z2luTmFtZSwga2V5LCB2YWx1ZSkge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XHJcbiAgICAgICAgaWYgKHRoaXMucGx1Z2luRGF0YVtwbHVnaW5OYW1lXSA9PT0gdW5kZWZpbmVkKSB0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0gPSB7fTtcclxuICAgICAgICB0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV1ba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmModGhpcy5nZXRQbHVnaW5GaWxlKHBsdWdpbk5hbWUpLCBKU09OLnN0cmluZ2lmeSh0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0sIG51bGwsIDQpKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVQbHVnaW5EYXRhKHBsdWdpbk5hbWUsIGtleSkge1xyXG4gICAgICAgIGlmICh0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0gPT09IHVuZGVmaW5lZCkgdGhpcy5wbHVnaW5EYXRhW3BsdWdpbk5hbWVdID0ge307XHJcbiAgICAgICAgZGVsZXRlIHRoaXMucGx1Z2luRGF0YVtwbHVnaW5OYW1lXVtrZXldO1xyXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmModGhpcy5nZXRQbHVnaW5GaWxlKHBsdWdpbk5hbWUpLCBKU09OLnN0cmluZ2lmeSh0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0sIG51bGwsIDQpKTtcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/datastore.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _data_data_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../data/data.js */ \"./src/data/data.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n\n\n\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\nconst releaseChannel = DiscordNative.globals ? DiscordNative.globals.releaseChannel : DiscordNative.app ? DiscordNative.app.getReleaseChannel() : \"stable\"; // Schema\n// =======================\n// %appdata%\\BetterDiscord\n// -> data\n// -> [releaseChannel]\\ (stable/canary/ptb)\n// -> settings.json\n// -> plugins.json\n// -> themes.json\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class DataStore {\n constructor() {\n this.data = {\n misc: {}\n };\n this.pluginData = {};\n this.cacheData = {};\n }\n\n initialize() {\n if (!fs.existsSync(this.baseFolder)) fs.mkdirSync(this.baseFolder);\n if (!fs.existsSync(this.dataFolder)) fs.mkdirSync(this.dataFolder);\n if (!fs.existsSync(this.localeFolder)) fs.mkdirSync(this.localeFolder);\n if (!fs.existsSync(this.emoteFolder)) fs.mkdirSync(this.emoteFolder);\n if (!fs.existsSync(this.cacheFile)) fs.writeFileSync(this.cacheFile, JSON.stringify({}));\n if (!fs.existsSync(this.customCSS)) fs.writeFileSync(this.customCSS, \"\");\n const dataFiles = fs.readdirSync(this.dataFolder).filter(f => !fs.statSync(path.resolve(this.dataFolder, f)).isDirectory() && f.endsWith(\".json\"));\n\n for (const file of dataFiles) {\n this.data[file.split(\".\")[0]] = require(path.resolve(this.dataFolder, file));\n }\n\n this.cacheData = _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].testJSON(fs.readFileSync(this.cacheFile).toString()) || {};\n }\n\n get injectionPath() {\n if (this._injectionPath) return this._injectionPath;\n\n const electron = __webpack_require__(/*! electron */ \"electron\").remote.app;\n\n const base = electron.getAppPath();\n const roamingBase = electron.getPath(\"userData\");\n const roamingLocation = path.resolve(roamingBase, electron.getVersion(), \"modules\", \"discord_desktop_core\", \"injector\");\n const location = path.resolve(base, \"..\", \"app\");\n const realLocation = fs.existsSync(location) ? location : fs.existsSync(roamingLocation) ? roamingLocation : null;\n if (!realLocation) return this._injectionPath = null;\n return this._injectionPath = realLocation;\n }\n\n get customCSS() {\n return this._customCSS || (this._customCSS = path.resolve(this.dataFolder, \"custom.css\"));\n }\n\n get baseFolder() {\n return this._baseFolder || (this._baseFolder = path.resolve(_data_data_js__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"data\"));\n }\n\n get dataFolder() {\n return this._dataFolder || (this._dataFolder = path.resolve(this.baseFolder, `${releaseChannel}`));\n }\n\n get localeFolder() {\n return this._localeFolder || (this._localeFolder = path.resolve(this.baseFolder, `locales`));\n }\n\n get emoteFolder() {\n return this._emoteFolder || (this._emoteFolder = path.resolve(this.baseFolder, `emotes`));\n }\n\n get cacheFile() {\n return this._cacheFile || (this._cacheFile = path.resolve(this.baseFolder, `.cache`));\n }\n\n getPluginFile(pluginName) {\n return path.resolve(_data_data_js__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"plugins\", pluginName + \".config.json\");\n }\n\n _getFile(key) {\n if (key == \"settings\" || key == \"plugins\" || key == \"themes\" || key == \"window\") return path.resolve(this.dataFolder, `${key}.json`);\n return path.resolve(this.dataFolder, `misc.json`);\n }\n\n getBDData(key) {\n return this.data.misc[key] || \"\";\n }\n\n setBDData(key, value) {\n this.data.misc[key] = value;\n fs.writeFileSync(path.resolve(this.dataFolder, `misc.json`), JSON.stringify(this.data.misc, null, 4));\n }\n\n getLocale(locale) {\n const file = path.resolve(this.localeFolder, `${locale}.json`);\n if (!fs.existsSync(file)) return null;\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].testJSON(fs.readFileSync(file).toString());\n }\n\n saveLocale(locale, strings) {\n fs.writeFileSync(path.resolve(this.localeFolder, `${locale}.json`), JSON.stringify(strings, null, 4));\n }\n\n getCacheHash(category, key) {\n if (!this.cacheData[category]) return \"\";\n if (!fs.existsSync(path.resolve(this.baseFolder, category, `${key}.json`))) return \"\";\n return this.cacheData[category][key] || \"\";\n }\n\n setCacheHash(category, key, hash) {\n if (!this.cacheData[category]) this.cacheData[category] = {};\n this.cacheData[category][key] = hash;\n fs.writeFileSync(this.cacheFile, JSON.stringify(this.cacheData));\n }\n\n invalidateCache(category, key) {\n if (!this.cacheData[category]) return;\n delete this.cacheData[category][key];\n fs.writeFileSync(this.cacheFile, JSON.stringify(this.cacheData));\n }\n\n emotesExist(category) {\n return fs.existsSync(path.resolve(this.emoteFolder, `${category}.json`));\n }\n\n getEmoteData(category) {\n const file = path.resolve(this.emoteFolder, `${category}.json`);\n if (!fs.existsSync(file)) return null;\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].testJSON(fs.readFileSync(file).toString());\n }\n\n saveEmoteData(category, data) {\n fs.writeFileSync(path.resolve(this.emoteFolder, `${category}.json`), JSON.stringify(data));\n }\n\n getData(key) {\n return this.data[key] || \"\";\n }\n\n setData(key, value) {\n this.data[key] = value;\n fs.writeFileSync(path.resolve(this.dataFolder, `${key}.json`), JSON.stringify(value, null, 4));\n }\n\n loadCustomCSS() {\n return fs.readFileSync(this.customCSS).toString();\n }\n\n saveCustomCSS(css) {\n return fs.writeFileSync(this.customCSS, css);\n }\n\n getPluginData(pluginName, key) {\n if (this.pluginData[pluginName] !== undefined) return this.pluginData[pluginName][key] || undefined;\n if (!fs.existsSync(this.getPluginFile(pluginName))) return undefined;\n this.pluginData[pluginName] = JSON.parse(fs.readFileSync(this.getPluginFile(pluginName)));\n return this.pluginData[pluginName][key] || undefined;\n }\n\n setPluginData(pluginName, key, value) {\n if (value === undefined) return;\n if (this.pluginData[pluginName] === undefined) this.pluginData[pluginName] = {};\n this.pluginData[pluginName][key] = value;\n fs.writeFileSync(this.getPluginFile(pluginName), JSON.stringify(this.pluginData[pluginName], null, 4));\n }\n\n deletePluginData(pluginName, key) {\n if (this.pluginData[pluginName] === undefined) this.pluginData[pluginName] = {};\n delete this.pluginData[pluginName][key];\n fs.writeFileSync(this.getPluginFile(pluginName), JSON.stringify(this.pluginData[pluginName], null, 4));\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9kYXRhc3RvcmUuanM/MTA1MiJdLCJuYW1lcyI6WyJmcyIsInJlcXVpcmUiLCJwYXRoIiwicmVsZWFzZUNoYW5uZWwiLCJEaXNjb3JkTmF0aXZlIiwiZ2xvYmFscyIsImFwcCIsImdldFJlbGVhc2VDaGFubmVsIiwiRGF0YVN0b3JlIiwiY29uc3RydWN0b3IiLCJkYXRhIiwibWlzYyIsInBsdWdpbkRhdGEiLCJjYWNoZURhdGEiLCJpbml0aWFsaXplIiwiZXhpc3RzU3luYyIsImJhc2VGb2xkZXIiLCJta2RpclN5bmMiLCJkYXRhRm9sZGVyIiwibG9jYWxlRm9sZGVyIiwiZW1vdGVGb2xkZXIiLCJjYWNoZUZpbGUiLCJ3cml0ZUZpbGVTeW5jIiwiSlNPTiIsInN0cmluZ2lmeSIsImN1c3RvbUNTUyIsImRhdGFGaWxlcyIsInJlYWRkaXJTeW5jIiwiZmlsdGVyIiwiZiIsInN0YXRTeW5jIiwicmVzb2x2ZSIsImlzRGlyZWN0b3J5IiwiZW5kc1dpdGgiLCJmaWxlIiwic3BsaXQiLCJfX25vbl93ZWJwYWNrX3JlcXVpcmVfXyIsIlV0aWxpdGllcyIsInRlc3RKU09OIiwicmVhZEZpbGVTeW5jIiwidG9TdHJpbmciLCJpbmplY3Rpb25QYXRoIiwiX2luamVjdGlvblBhdGgiLCJlbGVjdHJvbiIsInJlbW90ZSIsImJhc2UiLCJnZXRBcHBQYXRoIiwicm9hbWluZ0Jhc2UiLCJnZXRQYXRoIiwicm9hbWluZ0xvY2F0aW9uIiwiZ2V0VmVyc2lvbiIsImxvY2F0aW9uIiwicmVhbExvY2F0aW9uIiwiX2N1c3RvbUNTUyIsIl9iYXNlRm9sZGVyIiwiQ29uZmlnIiwiZGF0YVBhdGgiLCJfZGF0YUZvbGRlciIsIl9sb2NhbGVGb2xkZXIiLCJfZW1vdGVGb2xkZXIiLCJfY2FjaGVGaWxlIiwiZ2V0UGx1Z2luRmlsZSIsInBsdWdpbk5hbWUiLCJfZ2V0RmlsZSIsImtleSIsImdldEJERGF0YSIsInNldEJERGF0YSIsInZhbHVlIiwiZ2V0TG9jYWxlIiwibG9jYWxlIiwic2F2ZUxvY2FsZSIsInN0cmluZ3MiLCJnZXRDYWNoZUhhc2giLCJjYXRlZ29yeSIsInNldENhY2hlSGFzaCIsImhhc2giLCJpbnZhbGlkYXRlQ2FjaGUiLCJlbW90ZXNFeGlzdCIsImdldEVtb3RlRGF0YSIsInNhdmVFbW90ZURhdGEiLCJnZXREYXRhIiwic2V0RGF0YSIsImxvYWRDdXN0b21DU1MiLCJzYXZlQ3VzdG9tQ1NTIiwiY3NzIiwiZ2V0UGx1Z2luRGF0YSIsInVuZGVmaW5lZCIsInBhcnNlIiwic2V0UGx1Z2luRGF0YSIsImRlbGV0ZVBsdWdpbkRhdGEiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7O0FBQ0EsTUFBTUEsRUFBRSxHQUFHQyxtQkFBTyxDQUFDLGNBQUQsQ0FBbEI7O0FBQ0EsTUFBTUMsSUFBSSxHQUFHRCxtQkFBTyxDQUFDLGtCQUFELENBQXBCOztBQUNBLE1BQU1FLGNBQWMsR0FBR0MsYUFBYSxDQUFDQyxPQUFkLEdBQXdCRCxhQUFhLENBQUNDLE9BQWQsQ0FBc0JGLGNBQTlDLEdBQStEQyxhQUFhLENBQUNFLEdBQWQsR0FBb0JGLGFBQWEsQ0FBQ0UsR0FBZCxDQUFrQkMsaUJBQWxCLEVBQXBCLEdBQTRELFFBQWxKLEMsQ0FFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlLG1FQUFJLE1BQU1DLFNBQU4sQ0FBZ0I7QUFDL0JDLGFBQVcsR0FBRztBQUNWLFNBQUtDLElBQUwsR0FBWTtBQUFDQyxVQUFJLEVBQUU7QUFBUCxLQUFaO0FBQ0EsU0FBS0MsVUFBTCxHQUFrQixFQUFsQjtBQUNBLFNBQUtDLFNBQUwsR0FBaUIsRUFBakI7QUFDSDs7QUFFREMsWUFBVSxHQUFHO0FBQ1QsUUFBSSxDQUFDZCxFQUFFLENBQUNlLFVBQUgsQ0FBYyxLQUFLQyxVQUFuQixDQUFMLEVBQXFDaEIsRUFBRSxDQUFDaUIsU0FBSCxDQUFhLEtBQUtELFVBQWxCO0FBQ3JDLFFBQUksQ0FBQ2hCLEVBQUUsQ0FB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RSxVQUFMLENBQWdCa0QsVUFBaEIsTUFBZ0N3QixTQUFwQyxFQUErQyxLQUFLMUUsVUFBTCxDQUFnQmtELFVBQWhCLElBQThCLEVBQTlCO0FBQy9DLFNBQUtsRCxVQUFMLENBQWdCa0QsVUFBaEIsRUFBNEJFLEdBQTVCLElBQW1DRyxLQUFuQztBQUNBbkUsTUFBRSxDQUFDc0IsYUFBSCxDQUFpQixLQUFLdUMsYUFBTCxDQUFtQkMsVUFBbkIsQ0FBakIsRUFBaUR2QyxJQUFJLENBQUNDLFNBQUwsQ0FBZSxLQUFLWixVQUFMLENBQWdCa0QsVUFBaEIsQ0FBZixFQUE0QyxJQUE1QyxFQUFrRCxDQUFsRCxDQUFqRDtBQUNIOztBQUVEMkIsa0JBQWdCLENBQUMzQixVQUFELEVBQWFFLEdBQWIsRUFBa0I7QUFDOUIsUUFBSSxLQUFLcEQsVUFBTCxDQUFnQmtELFVBQWhCLE1BQWdDd0IsU0FBcEMsRUFBK0MsS0FBSzFFLFVBQUwsQ0FBZ0JrRCxVQUFoQixJQUE4QixFQUE5QjtBQUMvQyxXQUFPLEtBQUtsRCxVQUFMLENBQWdCa0QsVUFBaEIsRUFBNEJFLEdBQTVCLENBQVA7QUFDQWhFLE1BQUUsQ0FBQ3NCLGFBQUgsQ0FBaUIsS0FBS3VDLGFBQUwsQ0FBbUJDLFVBQW5CLENBQWpCLEVBQWlEdkMsSUFBSSxDQUFDQyxTQUFMLENBQWUsS0FBS1osVUFBTCxDQUFnQmtELFVBQWhCLENBQWYsRUFBNEMsSUFBNUMsRUFBa0QsQ0FBbEQsQ0FBakQ7QUFDSDs7QUFySThCLENBQXBCLEVBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9kYXRhc3RvcmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbmZpZ30gZnJvbSBcImRhdGFcIjtcclxuaW1wb3J0IFV0aWxpdGllcyBmcm9tIFwiLi91dGlsaXRpZXNcIjtcclxuY29uc3QgZnMgPSByZXF1aXJlKFwiZnNcIik7XHJcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcclxuY29uc3QgcmVsZWFzZUNoYW5uZWwgPSBEaXNjb3JkTmF0aXZlLmdsb2JhbHMgPyBEaXNjb3JkTmF0aXZlLmdsb2JhbHMucmVsZWFzZUNoYW5uZWwgOiBEaXNjb3JkTmF0aXZlLmFwcCA/IERpc2NvcmROYXRpdmUuYXBwLmdldFJlbGVhc2VDaGFubmVsKCkgOiBcInN0YWJsZVwiO1xyXG5cclxuLy8gU2NoZW1hXHJcbi8vID09PT09PT09PT09PT09PT09PT09PT09XHJcbi8vICVhcHBkYXRhJVxcQmV0dGVyRGlzY29yZFxyXG4vLyAgICAgLT4gZGF0YVxyXG4vLyAgICAgICAgIC0+IFtyZWxlYXNlQ2hhbm5lbF1cXCAoc3RhYmxlL2NhbmFyeS9wdGIpXHJcbi8vICAgICAgICAgICAgIC0+IHNldHRpbmdzLmpzb25cclxuLy8gICAgICAgICAgICAgLT4gcGx1Z2lucy5qc29uXHJcbi8vICAgICAgICAgICAgIC0+IHRoZW1lcy5qc29uXHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgRGF0YVN0b3JlIHtcclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IHttaXNjOiB7fX07XHJcbiAgICAgICAgdGhpcy5wbHVnaW5EYXRhID0ge307XHJcbiAgICAgICAgdGhpcy5jYWNoZURhdGEgPSB7fTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0aWFsaXplKCkge1xyXG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLmJhc2VGb2xkZXIpKSBmcy5ta2RpclN5bmModGhpcy5iYXNlRm9sZGVyKTtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5kYXRhRm9sZGVyKSkgZnMubWtkaXJTeW5jKHRoaXMuZGF0YUZvbGRlcik7XHJcbiAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHRoaXMubG9jYWxlRm9sZGVyKSkgZnMubWtkaXJTeW5jKHRoaXMubG9jYWxlRm9sZGVyKTtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5lbW90ZUZvbGRlcikpIGZzLm1rZGlyU3luYyh0aGlzLmVtb3RlRm9sZGVyKTtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5jYWNoZUZpbGUpKSBmcy53cml0ZUZpbGVTeW5jKHRoaXMuY2FjaGVGaWxlLCBKU09OLnN0cmluZ2lmeSh7fSkpO1xyXG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLmN1c3RvbUNTUykpIGZzLndyaXRlRmlsZVN5bmModGhpcy5jdXN0b21DU1MsIFwiXCIpO1xyXG4gICAgICAgIGNvbnN0IGRhdGFGaWxlcyA9IGZzLnJlYWRkaXJTeW5jKHRoaXMuZGF0YUZvbGRlcikuZmlsdGVyKGYgPT4gIWZzLnN0YXRTeW5jKHBhdGgucmVzb2x2ZSh0aGlzLmRhdGFGb2xkZXIsIGYpKS5pc0RpcmVjdG9yeSgpICYmIGYuZW5kc1dpdGgoXCIuanNvblwiKSk7XHJcbiAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGRhdGFGaWxlcykge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFbZmlsZS5zcGxpdChcIi5cIilbMF1dID0gX19ub25fd2VicGFja19yZXF1aXJlX18ocGF0aC5yZXNvbHZlKHRoaXMuZGF0YUZvbGRlciwgZmlsZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNhY2hlRGF0YSA9IFV0aWxpdGllcy50ZXN0SlNPTihmcy5yZWFkRmlsZVN5bmModGhpcy5jYWNoZUZpbGUpLnRvU3RyaW5nKCkpIHx8IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpbmplY3Rpb25QYXRoKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9pbmplY3Rpb25QYXRoKSByZXR1cm4gdGhpcy5faW5qZWN0aW9uUGF0aDtcclxuICAgICAgICBjb25zdCBlbGVjdHJvbiA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKS5yZW1vdGUuYXBwO1xyXG4gICAgICAgIGNvbnN0IGJhc2UgPSBlbGVjdHJvbi5nZXRBcHBQYXRoKCk7XHJcbiAgICAgICAgY29uc3Qgcm9hbWluZ0Jhc2UgPSBlbGVjdHJvbi5nZXRQYXRoKFwidXNlckRhdGFcIik7XHJcbiAgICAgICAgY29uc3Qgcm9hbWluZ0xvY2F0aW9uID0gcGF0aC5yZXNvbHZlKHJvYW1pbmdCYXNlLCBlbGVjdHJvbi5nZXRWZXJzaW9uKCksIFwibW9kdWxlc1wiLCBcImRpc2NvcmRfZGVza3RvcF9jb3JlXCIsIFwiaW5qZWN0b3JcIik7XHJcbiAgICAgICAgY29uc3QgbG9jYXRpb24gPSBwYXRoLnJlc29sdmUoYmFzZSwgXCIuLlwiLCBcImFwcFwiKTtcclxuICAgICAgICBjb25zdCByZWFsTG9jYXRpb24gPSBmcy5leGlzdHNTeW5jKGxvY2F0aW9uKSA/IGxvY2F0aW9uIDogZnMuZXhpc3RzU3luYyhyb2FtaW5nTG9jYXRpb24pID8gcm9hbWluZ0xvY2F0aW9uIDogbnVsbDtcclxuICAgICAgICBpZiAoIXJlYWxMb2NhdGlvbikgcmV0dXJuIHRoaXMuX2luamVjdGlvblBhdGggPSBudWxsO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pbmplY3Rpb25QYXRoID0gcmVhbExvY2F0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjdXN0b21DU1MoKSB7cmV0dXJuIHRoaXMuX2N1c3RvbUNTUyB8fCAodGhpcy5fY3VzdG9tQ1NTID0gcGF0aC5yZXNvbHZlKHRoaXMuZGF0YUZvbGRlciwgXCJjdXN0b20uY3NzXCIpKTt9XHJcbiAgICBnZXQgYmFzZUZvbGRlcigpIHtyZXR1cm4gdGhpcy5fYmFzZUZvbGRlciB8fCAodGhpcy5fYmFzZUZvbGRlciA9IHBhdGgucmVzb2x2ZShDb25maWcuZGF0YVBhdGgsIFwiZGF0YVwiKSk7fVxyXG4gICAgZ2V0IGRhdGFGb2xkZXIoKSB7cmV0dXJuIHRoaXMuX2RhdGFGb2xkZXIgfHwgKHRoaXMuX2RhdGFGb2xkZXIgPSBwYXRoLnJlc29sdmUodGhpcy5iYXNlRm9sZGVyLCBgJHtyZWxlYXNlQ2hhbm5lbH1gKSk7fVxyXG4gICAgZ2V0IGxvY2FsZUZvbGRlcigpIHtyZXR1cm4gdGhpcy5fbG9jYWxlRm9sZGVyIHx8ICh0aGlzLl9sb2NhbGVGb2xkZXIgPSBwYXRoLnJlc29sdmUodGhpcy5iYXNlRm9sZGVyLCBgbG9jYWxlc2ApKTt9XHJcbiAgICBnZXQgZW1vdGVGb2xkZXIoKSB7cmV0dXJuIHRoaXMuX2Vtb3RlRm9sZGVyIHx8ICh0aGlzLl9lbW90ZUZvbGRlciA9IHBhdGgucmVzb2x2ZSh0aGlzLmJhc2VGb2xkZXIsIGBlbW90ZXNgKSk7fVxyXG4gICAgZ2V0IGNhY2hlRmlsZSgpIHtyZXR1cm4gdGhpcy5fY2FjaGVGaWxlIHx8ICh0aGlzLl9jYWNoZUZpbGUgPSBwYXRoLnJlc29sdmUodGhpcy5iYXNlRm9sZGVyLCBgLmNhY2hlYCkpO31cclxuICAgIGdldFBsdWdpbkZpbGUocGx1Z2luTmFtZSkge3JldHVybiBwYXRoLnJlc29sdmUoQ29uZmlnLmRhdGFQYXRoLCBcInBsdWdpbnNcIiwgcGx1Z2luTmFtZSArIFwiLmNvbmZpZy5qc29uXCIpO31cclxuXHJcblxyXG4gICAgX2dldEZpbGUoa2V5KSB7XHJcbiAgICAgICAgaWYgKGtleSA9PSBcInNldHRpbmdzXCIgfHwga2V5ID09IFwicGx1Z2luc1wiIHx8IGtleSA9PSBcInRoZW1lc1wiIHx8IGtleSA9PSBcIndpbmRvd1wiKSByZXR1cm4gcGF0aC5yZXNvbHZlKHRoaXMuZGF0YUZvbGRlciwgYCR7a2V5fS5qc29uYCk7XHJcbiAgICAgICAgcmV0dXJuIHBhdGgucmVzb2x2ZSh0aGlzLmRhdGFGb2xkZXIsIGBtaXNjLmpzb25gKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRCRERhdGEoa2V5KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5taXNjW2tleV0gfHwgXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBzZXRCRERhdGEoa2V5LCB2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuZGF0YS5taXNjW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGgucmVzb2x2ZSh0aGlzLmRhdGFGb2xkZXIsIGBtaXNjLmpzb25gKSwgSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhLm1pc2MsIG51bGwsIDQpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRMb2NhbGUobG9jYWxlKSB7XHJcbiAgICAgICAgY29uc3QgZmlsZSA9IHBhdGgucmVzb2x2ZSh0aGlzLmxvY2FsZUZvbGRlciwgYCR7bG9jYWxlfS5qc29uYCk7XHJcbiAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGZpbGUpKSByZXR1cm4gbnVsbDtcclxuICAgICAgICByZXR1cm4gVXRpbGl0aWVzLnRlc3RKU09OKGZzLnJlYWRGaWxlU3luYyhmaWxlKS50b1N0cmluZygpKTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlTG9jYWxlKGxvY2FsZSwgc3RyaW5ncykge1xyXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aC5yZXNvbHZlKHRoaXMubG9jYWxlRm9sZGVyLCBgJHtsb2NhbGV9Lmpzb25gKSwgSlNPTi5zdHJpbmdpZnkoc3RyaW5ncywgbnVsbCwgNCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENhY2hlSGFzaChjYXRlZ29yeSwga2V5KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNhY2hlRGF0YVtjYXRlZ29yeV0pIHJldHVybiBcIlwiO1xyXG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhwYXRoLnJlc29sdmUodGhpcy5iYXNlRm9sZGVyLCBjYXRlZ29yeSwgYCR7a2V5fS5qc29uYCkpKSByZXR1cm4gXCJcIjtcclxuICAgICAgICByZXR1cm4gdGhpcy5jYWNoZURhdGFbY2F0ZWdvcnldW2tleV0gfHwgXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBzZXRDYWNoZUhhc2goY2F0ZWdvcnksIGtleSwgaGFzaCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jYWNoZURhdGFbY2F0ZWdvcnldKSB0aGlzLmNhY2hlRGF0YVtjYXRlZ29yeV0gPSB7fTtcclxuICAgICAgICB0aGlzLmNhY2hlRGF0YVtjYXRlZ29yeV1ba2V5XSA9IGhhc2g7XHJcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyh0aGlzLmNhY2hlRmlsZSwgSlNPTi5zdHJpbmdpZnkodGhpcy5jYWNoZURhdGEpKTtcclxuICAgIH1cclxuXHJcbiAgICBpbnZhbGlkYXRlQ2FjaGUoY2F0ZWdvcnksIGtleSkge1xyXG4gICAgICAgIGlmICghdGhpcy5jYWNoZURhdGFbY2F0ZWdvcnldKSByZXR1cm47XHJcbiAgICAgICAgZGVsZXRlIHRoaXMuY2FjaGVEYXRhW2NhdGVnb3J5XVtrZXldO1xyXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmModGhpcy5jYWNoZUZpbGUsIEpTT04uc3RyaW5naWZ5KHRoaXMuY2FjaGVEYXRhKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZW1vdGVzRXhpc3QoY2F0ZWdvcnkpIHtcclxuICAgICAgICByZXR1cm4gZnMuZXhpc3RzU3luYyhwYXRoLnJlc29sdmUodGhpcy5lbW90ZUZvbGRlciwgYCR7Y2F0ZWdvcnl9Lmpzb25gKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RW1vdGVEYXRhKGNhdGVnb3J5KSB7XHJcbiAgICAgICAgY29uc3QgZmlsZSA9IHBhdGgucmVzb2x2ZSh0aGlzLmVtb3RlRm9sZGVyLCBgJHtjYXRlZ29yeX0uanNvbmApO1xyXG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhmaWxlKSkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgcmV0dXJuIFV0aWxpdGllcy50ZXN0SlNPTihmcy5yZWFkRmlsZVN5bmMoZmlsZSkudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUVtb3RlRGF0YShjYXRlZ29yeSwgZGF0YSkge1xyXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aC5yZXNvbHZlKHRoaXMuZW1vdGVGb2xkZXIsIGAke2NhdGVnb3J5fS5qc29uYCksIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREYXRhKGtleSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFba2V5XSB8fCBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERhdGEoa2V5LCB2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuZGF0YVtrZXldID0gdmFsdWU7XHJcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLnJlc29sdmUodGhpcy5kYXRhRm9sZGVyLCBgJHtrZXl9Lmpzb25gKSwgSlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsIDQpKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkQ3VzdG9tQ1NTKCkge1xyXG4gICAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmModGhpcy5jdXN0b21DU1MpLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUN1c3RvbUNTUyhjc3MpIHtcclxuICAgICAgICByZXR1cm4gZnMud3JpdGVGaWxlU3luYyh0aGlzLmN1c3RvbUNTUywgY3NzKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQbHVnaW5EYXRhKHBsdWdpbk5hbWUsIGtleSkge1xyXG4gICAgICAgIGlmICh0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0gIT09IHVuZGVmaW5lZCkgcmV0dXJuIHRoaXMucGx1Z2luRGF0YVtwbHVnaW5OYW1lXVtrZXldIHx8IHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5nZXRQbHVnaW5GaWxlKHBsdWdpbk5hbWUpKSkgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0gPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyh0aGlzLmdldFBsdWdpbkZpbGUocGx1Z2luTmFtZSkpKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbHVnaW5EYXRhW3BsdWdpbk5hbWVdW2tleV0gfHwgdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFBsdWdpbkRhdGEocGx1Z2luTmFtZSwga2V5LCB2YWx1ZSkge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XHJcbiAgICAgICAgaWYgKHRoaXMucGx1Z2luRGF0YVtwbHVnaW5OYW1lXSA9PT0gdW5kZWZpbmVkKSB0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0gPSB7fTtcclxuICAgICAgICB0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV1ba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmModGhpcy5nZXRQbHVnaW5GaWxlKHBsdWdpbk5hbWUpLCBKU09OLnN0cmluZ2lmeSh0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0sIG51bGwsIDQpKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVQbHVnaW5EYXRhKHBsdWdpbk5hbWUsIGtleSkge1xyXG4gICAgICAgIGlmICh0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0gPT09IHVuZGVmaW5lZCkgdGhpcy5wbHVnaW5EYXRhW3BsdWdpbk5hbWVdID0ge307XHJcbiAgICAgICAgZGVsZXRlIHRoaXMucGx1Z2luRGF0YVtwbHVnaW5OYW1lXVtrZXldO1xyXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmModGhpcy5nZXRQbHVnaW5GaWxlKHBsdWdpbk5hbWUpLCBKU09OLnN0cmluZ2lmeSh0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0sIG51bGwsIDQpKTtcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/datastore.js\n"); /***/ }), @@ -538,7 +538,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _webpackmodules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./webpackmodules */ \"./src/modules/webpackmodules.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony import */ var _dommanager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dommanager */ \"./src/modules/dommanager.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _pluginmanager__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./pluginmanager */ \"./src/modules/pluginmanager.js\");\n/* harmony import */ var _thememanager__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./thememanager */ \"./src/modules/thememanager.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _patcher__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./patcher */ \"./src/modules/patcher.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst BdApi = {\n get React() {\n return _discordmodules__WEBPACK_IMPORTED_MODULE_3__[\"default\"].React;\n },\n\n get ReactDOM() {\n return _discordmodules__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ReactDOM;\n },\n\n get WindowConfigFile() {\n return \"\";\n },\n\n get settings() {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].collections;\n },\n\n get emotes() {\n return {};\n },\n\n get version() {\n return data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].version;\n }\n\n};\n\nBdApi.getAllWindowPreferences = function () {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getData(\"windowprefs\") || {};\n};\n\nBdApi.getWindowPreference = function (key) {\n return this.getAllWindowPreferences()[key];\n};\n\nBdApi.setWindowPreference = function (key, value) {\n const prefs = this.getAllWindowPreferences();\n prefs[key] = value;\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setData(\"windowprefs\", prefs);\n}; //Inject CSS to document head\n//id = id of element\n//css = custom css\n\n\nBdApi.injectCSS = function (id, css) {\n _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].injectStyle(id, css);\n}; //Clear css/remove any element\n//id = id of element\n\n\nBdApi.clearCSS = function (id) {\n _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].removeStyle(id);\n}; //Inject CSS to document head\n//id = id of element\n//css = custom css\n\n\nBdApi.linkJS = function (id, url) {\n return _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].injectScript(id, url);\n}; //Clear css/remove any element\n//id = id of element\n\n\nBdApi.unlinkJS = function (id) {\n _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].removeScript(id);\n};\n/**\r\n * Shows a generic but very customizable modal.\r\n * @param {string} title - title of the modal\r\n * @param {string} content - a string of text to display in the modal\r\n */\n\n\nBdApi.alert = function (title, content) {\n _ui_modals__WEBPACK_IMPORTED_MODULE_7__[\"default\"].alert(title, content);\n};\n/**\r\n * Shows a generic but very customizable confirmation modal with optional confirm and cancel callbacks.\r\n * @param {string} title - title of the modal\r\n * @param {(string|ReactElement|Array)} children - a single or mixed array of react elements and strings. Everything is wrapped in Discord's `TextElement` component so strings will show and render properly.\r\n * @param {object} [options] - options to modify the modal\r\n * @param {boolean} [options.danger=false] - whether the main button should be red or not\r\n * @param {string} [options.confirmText=Okay] - text for the confirmation/submit button\r\n * @param {string} [options.cancelText=Cancel] - text for the cancel button\r\n * @param {callable} [options.onConfirm=NOOP] - callback to occur when clicking the submit button\r\n * @param {callable} [options.onCancel=NOOP] - callback to occur when clicking the cancel button\r\n */\n\n\nBdApi.showConfirmationModal = function (title, content, options = {}) {\n return _ui_modals__WEBPACK_IMPORTED_MODULE_7__[\"default\"].showConfirmationModal(title, content, options);\n};\n/**\r\n * This shows a toast similar to android towards the bottom of the screen.\r\n *\r\n * @param {string} content The string to show in the toast.\r\n * @param {object} options Options object. Optional parameter.\r\n * @param {string} [options.type=\"\"] Changes the type of the toast stylistically and semantically. Choices: \"\", \"info\", \"success\", \"danger\"/\"error\", \"warning\"/\"warn\". Default: \"\"\r\n * @param {boolean} [options.icon=true] Determines whether the icon should show corresponding to the type. A toast without type will always have no icon. Default: true\r\n * @param {number} [options.timeout=3000] Adjusts the time (in ms) the toast should be shown for before disappearing automatically. Default: 3000\r\n * @param {boolean} [options.forceShow=false] Whether to force showing the toast and ignore the bd setting\r\n */\n\n\nBdApi.showToast = function (content, options = {}) {\n _ui_toasts__WEBPACK_IMPORTED_MODULE_6__[\"default\"].show(content, options);\n}; // Finds module\n\n\nBdApi.findModule = function (filter) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getModule(filter);\n}; // Finds module\n\n\nBdApi.findAllModules = function (filter) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getModule(filter, false);\n}; // Finds module\n\n\nBdApi.findModuleByProps = function (...props) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getByProps(...props);\n};\n\nBdApi.findModuleByPrototypes = function (...protos) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getByPrototypes(...protos);\n};\n\nBdApi.findModuleByDisplayName = function (name) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getByDisplayName(name);\n}; // Gets react instance\n\n\nBdApi.getInternalInstance = function (node) {\n if (!(node instanceof window.jQuery) && !(node instanceof Element)) return undefined;\n if (node instanceof jQuery) node = node[0];\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getReactInstance(node);\n}; // Gets data\n\n\nBdApi.loadData = function (pluginName, key) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getPluginData(pluginName, key);\n};\n\nBdApi.getData = BdApi.loadData; // Sets data\n\nBdApi.saveData = function (pluginName, key, data) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setPluginData(pluginName, key, data);\n};\n\nBdApi.setData = BdApi.saveData; // Deletes data\n\nBdApi.deleteData = function (pluginName, key) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].deletePluginData(pluginName, key);\n}; // Patches other functions\n// BdApi.monkeyPatch = function(what, methodName, options) {\n// const {before, after, instead, once = false, silent = false, force = false} = options;\n// const displayName = options.displayName || what.displayName || what.name || what.constructor.displayName || what.constructor.name;\n// if (!silent) console.log(\"patch\", methodName, \"of\", displayName); // eslint-disable-line no-console\n// if (!what[methodName]) {\n// if (force) what[methodName] = function() {};\n// else return console.error(methodName, \"does not exist for\", displayName); // eslint-disable-line no-console\n// }\n// const origMethod = what[methodName];\n// const cancel = () => {\n// if (!silent) console.log(\"unpatch\", methodName, \"of\", displayName); // eslint-disable-line no-console\n// what[methodName] = origMethod;\n// };\n// what[methodName] = function() {\n// const data = {\n// thisObject: this,\n// methodArguments: arguments,\n// cancelPatch: cancel,\n// originalMethod: origMethod,\n// callOriginalMethod: () => data.returnValue = data.originalMethod.apply(data.thisObject, data.methodArguments)\n// };\n// if (instead) {\n// const tempRet = Utilities.suppressErrors(instead, \"`instead` callback of \" + what[methodName].displayName)(data);\n// if (tempRet !== undefined) data.returnValue = tempRet;\n// }\n// else {\n// if (before) Utilities.suppressErrors(before, \"`before` callback of \" + what[methodName].displayName)(data);\n// data.callOriginalMethod();\n// if (after) Utilities.suppressErrors(after, \"`after` callback of \" + what[methodName].displayName)(data);\n// }\n// if (once) cancel();\n// return data.returnValue;\n// };\n// what[methodName].__monkeyPatched = true;\n// if (!what[methodName].__originalMethod) what[methodName].__originalMethod = origMethod;\n// what[methodName].displayName = \"patched \" + (what[methodName].displayName || methodName);\n// return cancel;\n// };\n\n\nBdApi.monkeyPatch = function (what, methodName, options) {\n const {\n before,\n after,\n instead,\n once = false\n } = options;\n const patchType = before ? \"before\" : after ? \"after\" : instead ? \"instead\" : \"\";\n if (!patchType) return _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].err(\"BdApi\", \"Must provide one of: after, before, instead\");\n const originalMethod = what[methodName];\n const data = {\n originalMethod: originalMethod,\n callOriginalMethod: () => data.originalMethod.apply(data.thisObject, data.methodArguments)\n };\n data.cancelPatch = _patcher__WEBPACK_IMPORTED_MODULE_12__[\"default\"][patchType](\"BdApi\", what, methodName, (thisObject, args, returnValue) => {\n data.thisObject = thisObject;\n data.methodArguments = args;\n data.returnValue = returnValue;\n\n try {\n Reflect.apply(options[patchType], null, [data]);\n if (once) data.cancelPatch();\n } catch (err) {// Logger.err(\"monkeyPatch\", `Error in the ${patchType} of ${methodName}`);\n }\n });\n}; // Event when element is removed\n\n\nBdApi.onRemoved = function (node, callback) {\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].onRemoved(node, callback);\n}; // Wraps function in try..catch\n\n\nBdApi.suppressErrors = function (method, message) {\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].suppressErrors(method, message);\n}; // Tests for valid JSON\n\n\nBdApi.testJSON = function (data) {\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].testJSON(data);\n}; //Get another plugin\n//name = name of plugin\n\n\nBdApi.getPlugin = function (name) {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"BdApi\", \"getPlugin is deprecated. Please make use of the addon api (BdApi.Plugins)\");\n return _pluginmanager__WEBPACK_IMPORTED_MODULE_8__[\"default\"].addonList.find(a => a.name == name);\n};\n\nBdApi.isPluginEnabled = function (name) {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"BdApi\", \"isPluginEnabled is deprecated. Please make use of the addon api (BdApi.Plugins)\");\n const plugin = this.getPlugin(name);\n if (!plugin) return false;\n return _pluginmanager__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isEnabled(plugin.id);\n};\n\nBdApi.isThemeEnabled = function (name) {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"BdApi\", \"isThemeEnabled is deprecated. Please make use of the addon api (BdApi.Themes)\");\n const theme = _thememanager__WEBPACK_IMPORTED_MODULE_9__[\"default\"].addonList.find(a => a.name == name);\n if (!theme) return false;\n return _thememanager__WEBPACK_IMPORTED_MODULE_9__[\"default\"].isEnabled(theme.id);\n};\n\nBdApi.isSettingEnabled = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].get(collection, category, id);\n};\n\nBdApi.enableSetting = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].set(collection, category, id, true);\n};\n\nBdApi.disableSetting = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].set(collection, category, id, false);\n};\n\nBdApi.toggleSetting = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].set(collection, category, id, !_settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].get(collection, category, id));\n}; // Gets data\n\n\nBdApi.getBDData = function (key) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getBDData(key);\n}; // Sets data\n\n\nBdApi.setBDData = function (key, data) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setBDData(key, data);\n};\n\nconst makeAddonAPI = manager => new class AddonAPI {\n get folder() {\n return manager.addonFolder;\n }\n\n isEnabled(idOrFile) {\n return manager.isEnabled(idOrFile);\n }\n\n enable(idOrAddon) {\n return manager.enableAddon(idOrAddon);\n }\n\n disable(idOrAddon) {\n return manager.disableAddon(idOrAddon);\n }\n\n toggle(idOrAddon) {\n return manager.toggleAddon(idOrAddon);\n }\n\n reload(idOrFileOrAddon) {\n return manager.reloadAddon(idOrFileOrAddon);\n }\n\n get(idOrFile) {\n return manager.getAddon(idOrFile);\n }\n\n getAll() {\n return manager.addonList.map(a => manager.getAddon(a.id));\n }\n\n}();\n\nBdApi.Plugins = makeAddonAPI(_pluginmanager__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\nBdApi.Themes = makeAddonAPI(_thememanager__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\nBdApi.Patcher = {\n patch: (caller, moduleToPatch, functionName, callback, options = {}) => {\n if (typeof caller !== \"string\") return _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].err(\"BdApi.Patcher\", \"Parameter 0 of patch must be a string representing the caller\");\n if (options.type !== \"before\" && options.type !== \"instead\" && options.type !== \"after\") return _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].err(\"BdApi.Patcher\", \"options.type must be one of: before, instead, after\");\n return _patcher__WEBPACK_IMPORTED_MODULE_12__[\"default\"].pushChildPatch(caller, moduleToPatch, functionName, callback, options);\n },\n before: (caller, moduleToPatch, functionName, callback, options = {}) => BdApi.Patcher.patch(caller, moduleToPatch, functionName, callback, Object.assign(options, {\n type: \"before\"\n })),\n instead: (caller, moduleToPatch, functionName, callback, options = {}) => BdApi.Patcher.patch(caller, moduleToPatch, functionName, callback, Object.assign(options, {\n type: \"instead\"\n })),\n after: (caller, moduleToPatch, functionName, callback, options = {}) => BdApi.Patcher.patch(caller, moduleToPatch, functionName, callback, Object.assign(options, {\n type: \"after\"\n })),\n unpatchAll: caller => {\n if (typeof caller !== \"string\") return _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].err(\"BdApi.Patcher\", \"Parameter 0 of unpatchAll must be a string representing the caller\");\n return _patcher__WEBPACK_IMPORTED_MODULE_12__[\"default\"].unpatchAll(caller);\n }\n};\nObject.freeze(BdApi);\nObject.freeze(BdApi.Plugins);\nObject.freeze(BdApi.Themes);\nObject.freeze(BdApi.Patcher);\n/* harmony default export */ __webpack_exports__[\"default\"] = (BdApi);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9wbHVnaW5hcGkuanM/NmE5MyJdLCJuYW1lcyI6WyJCZEFwaSIsIlJlYWN0IiwiRGlzY29yZE1vZHVsZXMiLCJSZWFjdERPTSIsIldpbmRvd0NvbmZpZ0ZpbGUiLCJzZXR0aW5ncyIsIlNldHRpbmdzIiwiY29sbGVjdGlvbnMiLCJlbW90ZXMiLCJ2ZXJzaW9uIiwiQ29uZmlnIiwiZ2V0QWxsV2luZG93UHJlZmVyZW5jZXMiLCJEYXRhU3RvcmUiLCJnZXREYXRhIiwiZ2V0V2luZG93UHJlZmVyZW5jZSIsImtleSIsInNldFdpbmRvd1ByZWZlcmVuY2UiLCJ2YWx1ZSIsInByZWZzIiwic2V0RGF0YSIsImluamVjdENTUyIsImlkIiwiY3NzIiwiRE9NTWFuYWdlciIsImluamVjdFN0eWxlIiwiY2xlYXJDU1MiLCJyZW1vdmVTdHlsZSIsImxpbmtKUyIsInVybCIsImluamVjdFNjcmlwdCIsInVubGlua0pTIiwicmVtb3ZlU2NyaXB0IiwiYWxlcnQiLCJ0aXRsZSIsImNvbnRlbnQiLCJNb2RhbHMiLCJzaG93Q29uZmlybWF0aW9uTW9kYWwiLCJvcHRpb25zIiwic2hvd1RvYXN0IiwiVG9hc3RzIiwic2hvdyIsImZpbmRNb2R1bGUiLCJmaWx0ZXIiLCJXZWJwYWNrTW9kdWxlcyIsImdldE1vZHVsZSIsImZpbmRBbGxNb2R1bGVzIiwiZmluZE1vZHVsZUJ5UHJvcHMiLCJwcm9wcyIsImdldEJ5UHJvcHMiLCJmaW5kTW9kdWxlQnlQcm90b3R5cGVzIiwicHJvdG9zIiwiZ2V0QnlQcm90b3R5cGVzIiwiZmluZE1vZHVsZUJ5RGlzcGxheU5hbWUiLCJuYW1lIiwiZ2V0QnlEaXNwbGF5TmFtZSIsImdldEludGVybmFsSW5zdGFuY2UiLCJub2RlIiwid2luZG93IiwialF1ZXJ5IiwiRWxlbWVudCIsInVuZGVmaW5lZCIsIlV0aWxpdGllcyIsImdldFJlYWN0SW5zdGFuY2UiLCJsb2FkRGF0YSIsInBsdWdpbk5hbWUiLCJnZXRQbHVnaW5EYXRhIiwic2F2ZURhdGEiLCJkYXRhIiwic2V0UGx1Z2luRGF0YSIsImRlbGV0ZURhdGEiLCJkZWxldGVQbHVnaW5EYXRhIiwibW9ua2V5UGF0Y2giLCJ3aGF0IiwibWV0aG9kTmFtZSIsImJlZm9yZSIsImFmdGVyIiwiaW5zdGVhZCIsIm9uY2UiLCJwYXRjaFR5cGUiLCJMb2dnZXIiLCJlcnIiLCJvcmlnaW5hbE1ldGhvZCIsImNhbGxPcmlnaW5hbE1ldGhvZCIsImFwcGx5IiwidGhpc09iamVjdCIsIm1ldGhvZEFyZ3VtZW50cyIsImNhbmNlbFBhdGNoIiwiUGF0Y2hlciIsImFyZ3MiLCJyZXR1cm5WYWx1ZSIsIlJlZmxlY3QiLCJvblJlbW92ZWQiLCJjYWxsYmFjayIsInN1cHByZXNzRXJyb3JzIiwibWV0aG9kIiwibWVzc2FnZSIsInRlc3RKU09OIiwiZ2V0UGx1Z2luIiwid2FybiIsIlBsdWdpbk1hbmFnZXIiLCJhZGRvbkxpc3QiLCJmaW5kIiwiYSIsImlzUGx1Z2luRW5hYmxlZCIsInBsdWdpbiIsImlzRW5hYmxlZCIsImlzVGhlbWVFbmFibGVkIiwidGhlbWUiLCJUaGVtZU1hbmFnZXIiLCJpc1NldHRpbmdFbmFibGVkIiwiY29sbGVjdGlvbiIsImNhdGVnb3J5IiwiZ2V0IiwiZW5hYmxlU2V0dGluZyIsInNldCIsImRpc2FibGVTZXR0aW5nIiwidG9nZ2xlU2V0dGluZyIsImdldEJERGF0YSIsInNldEJERGF0YSIsIm1ha2VBZGRvbkFQSSIsIm1hbmFnZXIiLCJBZGRvbkFQSSIsImZvbGRlciIsImFkZG9uRm9sZGVyIiwiaWRPckZpbGUiLCJlbmFibGUiLCJpZE9yQWRkb24iLCJlbmFibGVBZGRvbiIsImRpc2FibGUiLCJkaXNhYmxlQWRkb24iLCJ0b2dnbGUiLCJ0b2dnbGVBZGRvbiIsInJlbG9hZCIsImlkT3JGaWxlT3JBZGRvbiIsInJlbG9hZEFkZG9uIiwiZ2V0QWRkb24iLCJnZXRBbGwiLCJtYXAiLCJQbHVnaW5zIiwiVGhlbWVzIiwicGF0Y2giLCJjYWxsZXIiLCJtb2R1bGVUb1BhdGNoIiwiZnVuY3Rpb25OYW1lIiwidHlwZSIsInB1c2hDaGlsZFBhdGNoIiwiT2JqZWN0IiwiYXNzaWduIiwidW5wYXRjaEFsbCIsImZyZWV6ZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsS0FBSyxHQUFHO0FBQ1YsTUFBSUMsS0FBSixHQUFZO0FBQUUsV0FBT0MsdURBQWMsQ0FBQ0QsS0FBdEI7QUFBOEIsR0FEbEM7O0FBRVYsTUFBSUUsUUFBSixHQUFlO0FBQUUsV0FBT0QsdURBQWMsQ0FBQ0MsUUFBdEI7QUFBaUMsR0FGeEM7O0FBR1YsTUFBSUMsZ0JBQUosR0FBdUI7QUFBQyxXQUFPLEVBQVA7QUFBVyxHQUh6Qjs7QUFJVixNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPQyx5REFBUSxDQUFDQyxXQUFoQjtBQUE2QixHQUpuQzs7QUFLVixNQUFJQyxNQUFKLEdBQWE7QUFBQyxXQUFPLEVBQVA7QUFBVyxHQUxmOztBQU1WLE1BQUlDLE9BQUosR0FBYztBQUFDLFdBQU9DLDJDQUFNLENBQUNELE9BQWQ7QUFBdUI7O0FBTjVCLENBQWQ7O0FBU0FULEtBQUssQ0FBQ1csdUJBQU4sR0FBZ0MsWUFBVztBQUN2QyxTQUFPQyxrREFBUyxDQUFDQyxPQUFWLENBQWtCLGFBQWxCLEtBQW9DLEVBQTNDO0FBQ0gsQ0FGRDs7QUFJQWIsS0FBSyxDQUFDYyxtQkFBTixHQUE0QixVQUFTQyxHQUFULEVBQWM7QUFDdEMsU0FBTyxLQUFLSix1QkFBTCxHQUErQkksR0FBL0IsQ0FBUDtBQUNILENBRkQ7O0FBSUFmLEtBQUssQ0FBQ2dCLG1CQUFOLEdBQTRCLFVBQVNELEdBQVQsRUFBY0UsS0FBZCxFQUFxQjtBQUM3QyxRQUFNQyxLQUFLLEdBQUcsS0FBS1AsdUJBQUws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O0FBQ2pDLFdBQU9PLGlEQUFPLENBQUM2RCxVQUFSLENBQW1CUCxNQUFuQixDQUFQO0FBQ0g7QUFaVyxDQUFoQjtBQWVBSyxNQUFNLENBQUNHLE1BQVAsQ0FBY3JKLEtBQWQ7QUFDQWtKLE1BQU0sQ0FBQ0csTUFBUCxDQUFjckosS0FBSyxDQUFDMEksT0FBcEI7QUFDQVEsTUFBTSxDQUFDRyxNQUFQLENBQWNySixLQUFLLENBQUMySSxNQUFwQjtBQUNBTyxNQUFNLENBQUNHLE1BQVAsQ0FBY3JKLEtBQUssQ0FBQ3VGLE9BQXBCO0FBRWV2RixvRUFBZiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL3BsdWdpbmFwaS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQgVXRpbGl0aWVzIGZyb20gXCIuL3V0aWxpdGllc1wiO1xyXG5pbXBvcnQgV2VicGFja01vZHVsZXMgZnJvbSBcIi4vd2VicGFja21vZHVsZXNcIjtcclxuaW1wb3J0IERpc2NvcmRNb2R1bGVzIGZyb20gXCIuL2Rpc2NvcmRtb2R1bGVzXCI7XHJcbmltcG9ydCBEYXRhU3RvcmUgZnJvbSBcIi4vZGF0YXN0b3JlXCI7XHJcbmltcG9ydCBET01NYW5hZ2VyIGZyb20gXCIuL2RvbW1hbmFnZXJcIjtcclxuaW1wb3J0IFRvYXN0cyBmcm9tIFwiLi4vdWkvdG9hc3RzXCI7XHJcbmltcG9ydCBNb2RhbHMgZnJvbSBcIi4uL3VpL21vZGFsc1wiO1xyXG5pbXBvcnQgUGx1Z2luTWFuYWdlciBmcm9tIFwiLi9wbHVnaW5tYW5hZ2VyXCI7XHJcbmltcG9ydCBUaGVtZU1hbmFnZXIgZnJvbSBcIi4vdGhlbWVtYW5hZ2VyXCI7XHJcbmltcG9ydCBTZXR0aW5ncyBmcm9tIFwiLi9zZXR0aW5nc21hbmFnZXJcIjtcclxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi9sb2dnZXJcIjtcclxuaW1wb3J0IFBhdGNoZXIgZnJvbSBcIi4vcGF0Y2hlclwiO1xyXG5cclxuY29uc3QgQmRBcGkgPSB7XHJcbiAgICBnZXQgUmVhY3QoKSB7IHJldHVybiBEaXNjb3JkTW9kdWxlcy5SZWFjdDsgfSxcclxuICAgIGdldCBSZWFjdERPTSgpIHsgcmV0dXJuIERpc2NvcmRNb2R1bGVzLlJlYWN0RE9NOyB9LFxyXG4gICAgZ2V0IFdpbmRvd0NvbmZpZ0ZpbGUoKSB7cmV0dXJuIFwiXCI7fSxcclxuICAgIGdldCBzZXR0aW5ncygpIHtyZXR1cm4gU2V0dGluZ3MuY29sbGVjdGlvbnM7fSxcclxuICAgIGdldCBlbW90ZXMoKSB7cmV0dXJuIHt9O30sXHJcbiAgICBnZXQgdmVyc2lvbigpIHtyZXR1cm4gQ29uZmlnLnZlcnNpb247fVxyXG59O1xyXG5cclxuQmRBcGkuZ2V0QWxsV2luZG93UHJlZmVyZW5jZXMgPSBmdW5jdGlvbigpIHtcclxuICAgIHJldHVybiBEYXRhU3RvcmUuZ2V0RGF0YShcIndpbmRvd3ByZWZzXCIpIHx8IHt9O1xyXG59O1xyXG5cclxuQmRBcGkuZ2V0V2luZG93UHJlZmVyZW5jZSA9IGZ1bmN0aW9uKGtleSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsV2luZG93UHJlZmVyZW5jZXMoKVtrZXldO1xyXG59O1xyXG5cclxuQmRBcGkuc2V0V2luZG93UHJlZmVyZW5jZSA9IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHtcclxuICAgIGNvbnN0IHByZWZzID0gdGhpcy5nZXRBbGxXaW5kb3dQcmVmZXJlbmNlcygpO1xyXG4gICAgcHJlZnNba2V5XSA9IHZhbHVlO1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5zZXREYXRhKFwid2luZG93cHJlZnNcIiwgcHJlZnMpO1xyXG59O1xyXG5cclxuLy9JbmplY3QgQ1NTIHRvIGRvY3VtZW50IGhlYWRcclxuLy9pZCA9IGlkIG9mIGVsZW1lbnRcclxuLy9jc3MgPSBjdXN0b20gY3NzXHJcbkJkQXBpLmluamVjdENTUyA9IGZ1bmN0aW9uIChpZCwgY3NzKSB7XHJcbiAgICBET01NYW5hZ2VyLmluamVjdFN0eWxlKGlkLCBjc3MpO1xyXG59O1xyXG5cclxuLy9DbGVhciBjc3MvcmVtb3ZlIGFueSBlbGVtZW50XHJcbi8vaWQgPSBpZCBvZiBlbGVtZW50XHJcbkJkQXBpLmNsZWFyQ1NTID0gZnVuY3Rpb24gKGlkKSB7XHJcbiAgICBET01NYW5hZ2VyLnJlbW92ZVN0eWxlKGlkKTtcclxufTtcclxuXHJcbi8vSW5qZWN0IENTUyB0byBkb2N1bWVudCBoZWFkXHJcbi8vaWQgPSBpZCBvZiBlbGVtZW50XHJcbi8vY3NzID0gY3VzdG9tIGNzc1xyXG5CZEFwaS5saW5rSlMgPSBmdW5jdGlvbiAoaWQsIHVybCkge1xyXG4gICAgcmV0dXJuIERPTU1hbmFnZXIuaW5qZWN0U2NyaXB0KGlkLCB1cmwpO1xyXG59O1xyXG5cclxuLy9DbGVhciBjc3MvcmVtb3ZlIGFueSBlbGVtZW50XHJcbi8vaWQgPSBpZCBvZiBlbGVtZW50XHJcbkJkQXBpLnVubGlua0pTID0gZnVuY3Rpb24gKGlkKSB7XHJcbiAgICBET01NYW5hZ2VyLnJlbW92ZVNjcmlwdChpZCk7XHJcbn07XHJcblxyXG4vKipcclxuICogU2hvd3MgYSBnZW5lcmljIGJ1dCB2ZXJ5IGN1c3RvbWl6YWJsZSBtb2RhbC5cclxuICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIC0gdGl0bGUgb2YgdGhlIG1vZGFsXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IC0gYSBzdHJpbmcgb2YgdGV4dCB0byBkaXNwbGF5IGluIHRoZSBtb2RhbFxyXG4gKi9cclxuQmRBcGkuYWxlcnQgPSBmdW5jdGlvbiAodGl0bGUsIGNvbnRlbnQpIHtcclxuICAgIE1vZGFscy5hbGVydCh0aXRsZSwgY29udGVudCk7XHJcbn07XHJcblxyXG4vKipcclxuICogU2hvd3MgYSBnZW5lcmljIGJ1dCB2ZXJ5IGN1c3RvbWl6YWJsZSBjb25maXJtYXRpb24gbW9kYWwgd2l0aCBvcHRpb25hbCBjb25maXJtIGFuZCBjYW5jZWwgY2FsbGJhY2tzLlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgLSB0aXRsZSBvZiB0aGUgbW9kYWxcclxuICogQHBhcmFtIHsoc3RyaW5nfFJlYWN0RWxlbWVudHxBcnJheTxzdHJpbmd8UmVhY3RFbGVtZW50Pil9IGNoaWxkcmVuIC0gYSBzaW5nbGUgb3IgbWl4ZWQgYXJyYXkgb2YgcmVhY3QgZWxlbWVudHMgYW5kIHN0cmluZ3MuIEV2ZXJ5dGhpbmcgaXMgd3JhcHBlZCBpbiBEaXNjb3JkJ3MgYFRleHRFbGVtZW50YCBjb21wb25lbnQgc28gc3RyaW5ncyB3aWxsIHNob3cgYW5kIHJlbmRlciBwcm9wZXJseS5cclxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXSAtIG9wdGlvbnMgdG8gbW9kaWZ5IHRoZSBtb2RhbFxyXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmRhbmdlcj1mYWxzZV0gLSB3aGV0aGVyIHRoZSBtYWluIGJ1dHRvbiBzaG91bGQgYmUgcmVkIG9yIG5vdFxyXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuY29uZmlybVRleHQ9T2theV0gLSB0ZXh0IGZvciB0aGUgY29uZmlybWF0aW9uL3N1Ym1pdCBidXR0b25cclxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmNhbmNlbFRleHQ9Q2FuY2VsXSAtIHRleHQgZm9yIHRoZSBjYW5jZWwgYnV0dG9uXHJcbiAqIEBwYXJhbSB7Y2FsbGFibGV9IFtvcHRpb25zLm9uQ29uZmlybT1OT09QXSAtIGNhbGxiYWNrIHRvIG9jY3VyIHdoZW4gY2xpY2tpbmcgdGhlIHN1Ym1pdCBidXR0b25cclxuICogQHBhcmFtIHtjYWxsYWJsZX0gW29wdGlvbnMub25DYW5jZWw9Tk9PUF0gLSBjYWxsYmFjayB0byBvY2N1ciB3aGVuIGNsaWNraW5nIHRoZSBjYW5jZWwgYnV0dG9uXHJcbiAqL1xyXG5CZEFwaS5zaG93Q29uZmlybWF0aW9uTW9kYWwgPSBmdW5jdGlvbiAodGl0bGUsIGNvbnRlbnQsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgcmV0dXJuIE1vZGFscy5zaG93Q29uZmlybWF0aW9uTW9kYWwodGl0bGUsIGNvbnRlbnQsIG9wdGlvbnMpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFRoaXMgc2hvd3MgYSB0b2FzdCBzaW1pbGFyIHRvIGFuZHJvaWQgdG93YXJkcyB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uXHJcbiAqXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IFRoZSBzdHJpbmcgdG8gc2hvdyBpbiB0aGUgdG9hc3QuXHJcbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIE9wdGlvbnMgb2JqZWN0LiBPcHRpb25hbCBwYXJhbWV0ZXIuXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy50eXBlPVwiXCJdIENoYW5nZXMgdGhlIHR5cGUgb2YgdGhlIHRvYXN0IHN0eWxpc3RpY2FsbHkgYW5kIHNlbWFudGljYWxseS4gQ2hvaWNlczogXCJcIiwgXCJpbmZvXCIsIFwic3VjY2Vzc1wiLCBcImRhbmdlclwiL1wiZXJyb3JcIiwgXCJ3YXJuaW5nXCIvXCJ3YXJuXCIuIERlZmF1bHQ6IFwiXCJcclxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5pY29uPXRydWVdIERldGVybWluZXMgd2hldGhlciB0aGUgaWNvbiBzaG91bGQgc2hvdyBjb3JyZXNwb25kaW5nIHRvIHRoZSB0eXBlLiBBIHRvYXN0IHdpdGhvdXQgdHlwZSB3aWxsIGFsd2F5cyBoYXZlIG5vIGljb24uIERlZmF1bHQ6IHRydWVcclxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLnRpbWVvdXQ9MzAwMF0gQWRqdXN0cyB0aGUgdGltZSAoaW4gbXMpIHRoZSB0b2FzdCBzaG91bGQgYmUgc2hvd24gZm9yIGJlZm9yZSBkaXNhcHBlYXJpbmcgYXV0b21hdGljYWxseS4gRGVmYXVsdDogMzAwMFxyXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmZvcmNlU2hvdz1mYWxzZV0gV2hldGhlciB0byBmb3JjZSBzaG93aW5nIHRoZSB0b2FzdCBhbmQgaWdub3JlIHRoZSBiZCBzZXR0aW5nXHJcbiAqL1xyXG5CZEFwaS5zaG93VG9hc3QgPSBmdW5jdGlvbihjb250ZW50LCBvcHRpb25zID0ge30pIHtcclxuICAgIFRvYXN0cy5zaG93KGNvbnRlbnQsIG9wdGlvbnMpO1xyXG59O1xyXG5cclxuLy8gRmluZHMgbW9kdWxlXHJcbkJkQXBpLmZpbmRNb2R1bGUgPSBmdW5jdGlvbihmaWx0ZXIpIHtcclxuICAgIHJldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRNb2R1bGUoZmlsdGVyKTtcclxufTtcclxuXHJcbi8vIEZpbmRzIG1vZHVsZVxyXG5CZEFwaS5maW5kQWxsTW9kdWxlcyA9IGZ1bmN0aW9uKGZpbHRlcikge1xyXG4gICAgcmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldE1vZHVsZShmaWx0ZXIsIGZhbHNlKTtcclxufTtcclxuXHJcbi8vIEZpbmRzIG1vZHVsZVxyXG5CZEFwaS5maW5kTW9kdWxlQnlQcm9wcyA9IGZ1bmN0aW9uKC4uLnByb3BzKSB7XHJcbiAgICByZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyguLi5wcm9wcyk7XHJcbn07XHJcblxyXG5CZEFwaS5maW5kTW9kdWxlQnlQcm90b3R5cGVzID0gZnVuY3Rpb24oLi4ucHJvdG9zKSB7XHJcbiAgICByZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm90b3R5cGVzKC4uLnByb3Rvcyk7XHJcbn07XHJcblxyXG5CZEFwaS5maW5kTW9kdWxlQnlEaXNwbGF5TmFtZSA9IGZ1bmN0aW9uKG5hbWUpIHtcclxuICAgIHJldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeURpc3BsYXlOYW1lKG5hbWUpO1xyXG59O1xyXG5cclxuLy8gR2V0cyByZWFjdCBpbnN0YW5jZVxyXG5CZEFwaS5nZXRJbnRlcm5hbEluc3RhbmNlID0gZnVuY3Rpb24obm9kZSkge1xyXG4gICAgaWYgKCEobm9kZSBpbnN0YW5jZW9mIHdpbmRvdy5qUXVlcnkpICYmICEobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpKSByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBqUXVlcnkpIG5vZGUgPSBub2RlWzBdO1xyXG4gICAgcmV0dXJuIFV0aWxpdGllcy5nZXRSZWFjdEluc3RhbmNlKG5vZGUpO1xyXG59O1xyXG5cclxuLy8gR2V0cyBkYXRhXHJcbkJkQXBpLmxvYWREYXRhID0gZnVuY3Rpb24ocGx1Z2luTmFtZSwga2V5KSB7XHJcbiAgICByZXR1cm4gRGF0YVN0b3JlLmdldFBsdWdpbkRhdGEocGx1Z2luTmFtZSwga2V5KTtcclxufTtcclxuXHJcbkJkQXBpLmdldERhdGEgPSBCZEFwaS5sb2FkRGF0YTtcclxuXHJcbi8vIFNldHMgZGF0YVxyXG5CZEFwaS5zYXZlRGF0YSA9IGZ1bmN0aW9uKHBsdWdpbk5hbWUsIGtleSwgZGF0YSkge1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5zZXRQbHVnaW5EYXRhKHBsdWdpbk5hbWUsIGtleSwgZGF0YSk7XHJcbn07XHJcblxyXG5CZEFwaS5zZXREYXRhID0gQmRBcGkuc2F2ZURhdGE7XHJcblxyXG4vLyBEZWxldGVzIGRhdGFcclxuQmRBcGkuZGVsZXRlRGF0YSA9IGZ1bmN0aW9uKHBsdWdpbk5hbWUsIGtleSkge1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5kZWxldGVQbHVnaW5EYXRhKHBsdWdpbk5hbWUsIGtleSk7XHJcbn07XHJcblxyXG4vLyBQYXRjaGVzIG90aGVyIGZ1bmN0aW9uc1xyXG4vLyBCZEFwaS5tb25rZXlQYXRjaCA9IGZ1bmN0aW9uKHdoYXQsIG1ldGhvZE5hbWUsIG9wdGlvbnMpIHtcclxuLy8gICAgIGNvbnN0IHtiZWZvcmUsIGFmdGVyLCBpbnN0ZWFkLCBvbmNlID0gZmFsc2UsIHNpbGVudCA9IGZhbHNlLCBmb3JjZSA9IGZhbHNlfSA9IG9wdGlvbnM7XHJcbi8vICAgICBjb25zdCBkaXNwbGF5TmFtZSA9IG9wdGlvbnMuZGlzcGxheU5hbWUgfHwgd2hhdC5kaXNwbGF5TmFtZSB8fCB3aGF0Lm5hbWUgfHwgd2hhdC5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCB3aGF0LmNvbnN0cnVjdG9yLm5hbWU7XHJcbi8vICAgICBpZiAoIXNpbGVudCkgY29uc29sZS5sb2coXCJwYXRjaFwiLCBtZXRob2ROYW1lLCBcIm9mXCIsIGRpc3BsYXlOYW1lKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXHJcbi8vICAgICBpZiAoIXdoYXRbbWV0aG9kTmFtZV0pIHtcclxuLy8gICAgICAgICBpZiAoZm9yY2UpIHdoYXRbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpIHt9O1xyXG4vLyAgICAgICAgIGVsc2UgcmV0dXJuIGNvbnNvbGUuZXJyb3IobWV0aG9kTmFtZSwgXCJkb2VzIG5vdCBleGlzdCBmb3JcIiwgZGlzcGxheU5hbWUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcclxuLy8gICAgIH1cclxuLy8gICAgIGNvbnN0IG9yaWdNZXRob2QgPSB3aGF0W21ldGhvZE5hbWVdO1xyXG4vLyAgICAgY29uc3QgY2FuY2VsID0gKCkgPT4ge1xyXG4vLyAgICAgICAgIGlmICghc2lsZW50KSBjb25zb2xlLmxvZyhcInVucGF0Y2hcIiwgbWV0aG9kTmFtZSwgXCJvZlwiLCBkaXNwbGF5TmFtZSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxyXG4vLyAgICAgICAgIHdoYXRbbWV0aG9kTmFtZV0gPSBvcmlnTWV0aG9kO1xyXG4vLyAgICAgfTtcclxuLy8gICAgIHdoYXRbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpIHtcclxuLy8gICAgICAgICBjb25zdCBkYXRhID0ge1xyXG4vLyAgICAgICAgICAgICB0aGlzT2JqZWN0OiB0aGlzLFxyXG4vLyAgICAgICAgICAgICBtZXRob2RBcmd1bWVudHM6IGFyZ3VtZW50cyxcclxuLy8gICAgICAgICAgICAgY2FuY2VsUGF0Y2g6IGNhbmNlbCxcclxuLy8gICAgICAgICAgICAgb3JpZ2luYWxNZXRob2Q6IG9yaWdNZXRob2QsXHJcbi8vICAgICAgICAgICAgIGNhbGxPcmlnaW5hbE1ldGhvZDogKCkgPT4gZGF0YS5yZXR1cm5WYWx1ZSA9IGRhdGEub3JpZ2luYWxNZXRob2QuYXBwbHkoZGF0YS50aGlzT2JqZWN0LCBkYXRhLm1ldGhvZEFyZ3VtZW50cylcclxuLy8gICAgICAgICB9O1xyXG4vLyAgICAgICAgIGlmIChpbnN0ZWFkKSB7XHJcbi8vICAgICAgICAgICAgIGNvbnN0IHRlbXBSZXQgPSBVdGlsaXRpZXMuc3VwcHJlc3NFcnJvcnMoaW5zdGVhZCwgXCJgaW5zdGVhZGAgY2FsbGJhY2sgb2YgXCIgKyB3aGF0W21ldGhvZE5hbWVdLmRpc3BsYXlOYW1lKShkYXRhKTtcclxuLy8gICAgICAgICAgICAgaWYgKHRlbXBSZXQgIT09IHVuZGVmaW5lZCkgZGF0YS5yZXR1cm5WYWx1ZSA9IHRlbXBSZXQ7XHJcbi8vICAgICAgICAgfVxyXG4vLyAgICAgICAgIGVsc2Uge1xyXG4vLyAgICAgICAgICAgICBpZiAoYmVmb3JlKSBVdGlsaXRpZXMuc3VwcHJlc3NFcnJvcnMoYmVmb3JlLCBcImBiZWZvcmVgIGNhbGxiYWNrIG9mIFwiICsgd2hhdFttZXRob2ROYW1lXS5kaXNwbGF5TmFtZSkoZGF0YSk7XHJcbi8vICAgICAgICAgICAgIGRhdGEuY2FsbE9yaWdpbmFsTWV0aG9kKCk7XHJcbi8vICAgICAgICAgICAgIGlmIChhZnRlcikgVXRpbGl0aWVzLnN1cHByZXNzRXJyb3JzKGFmdGVyLCBcImBhZnRlcmAgY2FsbGJhY2sgb2YgXCIgKyB3aGF0W21ldGhvZE5hbWVdLmRpc3BsYXlOYW1lKShkYXRhKTtcclxuLy8gICAgICAgICB9XHJcbi8vICAgICAgICAgaWYgKG9uY2UpIGNhbmNlbCgpO1xyXG4vLyAgICAgICAgIHJldHVybiBkYXRhLnJldHVyblZhbHVlO1xyXG4vLyAgICAgfTtcclxuLy8gICAgIHdoYXRbbWV0aG9kTmFtZV0uX19tb25rZXlQYXRjaGVkID0gdHJ1ZTtcclxuLy8gICAgIGlmICghd2hhdFttZXRob2ROYW1lXS5fX29yaWdpbmFsTWV0aG9kKSB3aGF0W21ldGhvZE5hbWVdLl9fb3JpZ2luYWxNZXRob2QgPSBvcmlnTWV0aG9kO1xyXG4vLyAgICAgd2hhdFttZXRob2ROYW1lXS5kaXNwbGF5TmFtZSA9IFwicGF0Y2hlZCBcIiArICh3aGF0W21ldGhvZE5hbWVdLmRpc3BsYXlOYW1lIHx8IG1ldGhvZE5hbWUpO1xyXG4vLyAgICAgcmV0dXJuIGNhbmNlbDtcclxuLy8gfTtcclxuQmRBcGkubW9ua2V5UGF0Y2ggPSBmdW5jdGlvbih3aGF0LCBtZXRob2ROYW1lLCBvcHRpb25zKSB7XHJcbiAgICBjb25zdCB7YmVmb3JlLCBhZnRlciwgaW5zdGVhZCwgb25jZSA9IGZhbHNlfSA9IG9wdGlvbnM7XHJcbiAgICBjb25zdCBwYXRjaFR5cGUgPSBiZWZvcmUgPyBcImJlZm9yZVwiIDogYWZ0ZXIgPyBcImFmdGVyXCIgOiBpbnN0ZWFkID8gXCJpbnN0ZWFkXCIgOiBcIlwiO1xyXG4gICAgaWYgKCFwYXRjaFR5cGUpIHJldHVybiBMb2dnZXIuZXJyKFwiQmRBcGlcIiwgXCJNdXN0IHByb3ZpZGUgb25lIG9mOiBhZnRlciwgYmVmb3JlLCBpbnN0ZWFkXCIpO1xyXG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSB3aGF0W21ldGhvZE5hbWVdO1xyXG4gICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgICBvcmlnaW5hbE1ldGhvZDogb3JpZ2luYWxNZXRob2QsXHJcbiAgICAgICAgY2FsbE9yaWdpbmFsTWV0aG9kOiAoKSA9PiBkYXRhLm9yaWdpbmFsTWV0aG9kLmFwcGx5KGRhdGEudGhpc09iamVjdCwgZGF0YS5tZXRob2RBcmd1bWVudHMpXHJcbiAgICB9O1xyXG4gICAgZGF0YS5jYW5jZWxQYXRjaCA9IFBhdGNoZXJbcGF0Y2hUeXBlXShcIkJkQXBpXCIsIHdoYXQsIG1ldGhvZE5hbWUsICh0aGlzT2JqZWN0LCBhcmdzLCByZXR1cm5WYWx1ZSkgPT4ge1xyXG4gICAgICAgIGRhdGEudGhpc09iamVjdCA9IHRoaXNPYmplY3Q7XHJcbiAgICAgICAgZGF0YS5tZXRob2RBcmd1bWVudHMgPSBhcmdzO1xyXG4gICAgICAgIGRhdGEucmV0dXJuVmFsdWUgPSByZXR1cm5WYWx1ZTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBSZWZsZWN0LmFwcGx5KG9wdGlvbnNbcGF0Y2hUeXBlXSwgbnVsbCwgW2RhdGFdKTtcclxuICAgICAgICAgICAgaWYgKG9uY2UpIGRhdGEuY2FuY2VsUGF0Y2goKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAvLyBMb2dnZXIuZXJyKFwibW9ua2V5UGF0Y2hcIiwgYEVycm9yIGluIHRoZSAke3BhdGNoVHlwZX0gb2YgJHttZXRob2ROYW1lfWApO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59O1xyXG4vLyBFdmVudCB3aGVuIGVsZW1lbnQgaXMgcmVtb3ZlZFxyXG5CZEFwaS5vblJlbW92ZWQgPSBmdW5jdGlvbihub2RlLCBjYWxsYmFjaykge1xyXG4gICAgcmV0dXJuIFV0aWxpdGllcy5vblJlbW92ZWQobm9kZSwgY2FsbGJhY2spO1xyXG59O1xyXG5cclxuLy8gV3JhcHMgZnVuY3Rpb24gaW4gdHJ5Li5jYXRjaFxyXG5CZEFwaS5zdXBwcmVzc0Vycm9ycyA9IGZ1bmN0aW9uKG1ldGhvZCwgbWVzc2FnZSkge1xyXG4gICAgcmV0dXJuIFV0aWxpdGllcy5zdXBwcmVzc0Vycm9ycyhtZXRob2QsIG1lc3NhZ2UpO1xyXG59O1xyXG5cclxuLy8gVGVzdHMgZm9yIHZhbGlkIEpTT05cclxuQmRBcGkudGVzdEpTT04gPSBmdW5jdGlvbihkYXRhKSB7XHJcbiAgICByZXR1cm4gVXRpbGl0aWVzLnRlc3RKU09OKGRhdGEpO1xyXG59O1xyXG5cclxuLy9HZXQgYW5vdGhlciBwbHVnaW5cclxuLy9uYW1lID0gbmFtZSBvZiBwbHVnaW5cclxuQmRBcGkuZ2V0UGx1Z2luID0gZnVuY3Rpb24gKG5hbWUpIHtcclxuICAgIExvZ2dlci53YXJuKFwiQmRBcGlcIiwgXCJnZXRQbHVnaW4gaXMgZGVwcmVjYXRlZC4gUGxlYXNlIG1ha2UgdXNlIG9mIHRoZSBhZGRvbiBhcGkgKEJkQXBpLlBsdWdpbnMpXCIpO1xyXG4gICAgcmV0dXJuIFBsdWdpbk1hbmFnZXIuYWRkb25MaXN0LmZpbmQoYSA9PiBhLm5hbWUgPT0gbmFtZSk7XHJcbn07XHJcblxyXG5CZEFwaS5pc1BsdWdpbkVuYWJsZWQgPSBmdW5jdGlvbihuYW1lKSB7XHJcbiAgICBMb2dnZXIud2FybihcIkJkQXBpXCIsIFwiaXNQbHVnaW5FbmFibGVkIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSBtYWtlIHVzZSBvZiB0aGUgYWRkb24gYXBpIChCZEFwaS5QbHVnaW5zKVwiKTtcclxuICAgIGNvbnN0IHBsdWdpbiA9IHRoaXMuZ2V0UGx1Z2luKG5hbWUpO1xyXG4gICAgaWYgKCFwbHVnaW4pIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBQbHVnaW5NYW5hZ2VyLmlzRW5hYmxlZChwbHVnaW4uaWQpO1xyXG59O1xyXG5cclxuQmRBcGkuaXNUaGVtZUVuYWJsZWQgPSBmdW5jdGlvbihuYW1lKSB7XHJcbiAgICBMb2dnZXIud2FybihcIkJkQXBpXCIsIFwiaXNUaGVtZUVuYWJsZWQgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIG1ha2UgdXNlIG9mIHRoZSBhZGRvbiBhcGkgKEJkQXBpLlRoZW1lcylcIik7XHJcbiAgICBjb25zdCB0aGVtZSA9IFRoZW1lTWFuYWdlci5hZGRvbkxpc3QuZmluZChhID0+IGEubmFtZSA9PSBuYW1lKTtcclxuICAgIGlmICghdGhlbWUpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBUaGVtZU1hbmFnZXIuaXNFbmFibGVkKHRoZW1lLmlkKTtcclxufTtcclxuXHJcbkJkQXBpLmlzU2V0dGluZ0VuYWJsZWQgPSBmdW5jdGlvbihjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpIHtcclxuICAgIHJldHVybiBTZXR0aW5ncy5nZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKTtcclxufTtcclxuXHJcbkJkQXBpLmVuYWJsZVNldHRpbmcgPSBmdW5jdGlvbihjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpIHtcclxuICAgIHJldHVybiBTZXR0aW5ncy5zZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkLCB0cnVlKTtcclxufTtcclxuXHJcbkJkQXBpLmRpc2FibGVTZXR0aW5nID0gZnVuY3Rpb24oY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSB7XHJcbiAgICByZXR1cm4gU2V0dGluZ3Muc2V0KGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCwgZmFsc2UpO1xyXG59O1xyXG5cclxuQmRBcGkudG9nZ2xlU2V0dGluZyA9IGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCkge1xyXG4gICAgcmV0dXJuIFNldHRpbmdzLnNldChjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsICFTZXR0aW5ncy5nZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSk7XHJcbn07XHJcblxyXG4vLyBHZXRzIGRhdGFcclxuQmRBcGkuZ2V0QkREYXRhID0gZnVuY3Rpb24oa2V5KSB7XHJcbiAgICByZXR1cm4gRGF0YVN0b3JlLmdldEJERGF0YShrZXkpO1xyXG59O1xyXG5cclxuLy8gU2V0cyBkYXRhXHJcbkJkQXBpLnNldEJERGF0YSA9IGZ1bmN0aW9uKGtleSwgZGF0YSkge1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5zZXRCRERhdGEoa2V5LCBkYXRhKTtcclxufTtcclxuXHJcbmNvbnN0IG1ha2VBZGRvbkFQSSA9IChtYW5hZ2VyKSA9PiBuZXcgY2xhc3MgQWRkb25BUEkge1xyXG4gICAgZ2V0IGZvbGRlcigpIHtyZXR1cm4gbWFuYWdlci5hZGRvbkZvbGRlcjt9XHJcbiAgICBpc0VuYWJsZWQoaWRPckZpbGUpIHtyZXR1cm4gbWFuYWdlci5pc0VuYWJsZWQoaWRPckZpbGUpO31cclxuICAgIGVuYWJsZShpZE9yQWRkb24pIHtyZXR1cm4gbWFuYWdlci5lbmFibGVBZGRvbihpZE9yQWRkb24pO31cclxuICAgIGRpc2FibGUoaWRPckFkZG9uKSB7cmV0dXJuIG1hbmFnZXIuZGlzYWJsZUFkZG9uKGlkT3JBZGRvbik7fVxyXG4gICAgdG9nZ2xlKGlkT3JBZGRvbikge3JldHVybiBtYW5hZ2VyLnRvZ2dsZUFkZG9uKGlkT3JBZGRvbik7fVxyXG4gICAgcmVsb2FkKGlkT3JGaWxlT3JBZGRvbikge3JldHVybiBtYW5hZ2VyLnJlbG9hZEFkZG9uKGlkT3JGaWxlT3JBZGRvbik7fVxyXG4gICAgZ2V0KGlkT3JGaWxlKSB7cmV0dXJuIG1hbmFnZXIuZ2V0QWRkb24oaWRPckZpbGUpO31cclxuICAgIGdldEFsbCgpIHtyZXR1cm4gbWFuYWdlci5hZGRvbkxpc3QubWFwKGEgPT4gbWFuYWdlci5nZXRBZGRvbihhLmlkKSk7fVxyXG59O1xyXG5cclxuQmRBcGkuUGx1Z2lucyA9IG1ha2VBZGRvbkFQSShQbHVnaW5NYW5hZ2VyKTtcclxuQmRBcGkuVGhlbWVzID0gbWFrZUFkZG9uQVBJKFRoZW1lTWFuYWdlcik7XHJcbkJkQXBpLlBhdGNoZXIgPSB7XHJcbiAgICBwYXRjaDogKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgb3B0aW9ucyA9IHt9KSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZihjYWxsZXIpICE9PSBcInN0cmluZ1wiKSByZXR1cm4gTG9nZ2VyLmVycihcIkJkQXBpLlBhdGNoZXJcIiwgXCJQYXJhbWV0ZXIgMCBvZiBwYXRjaCBtdXN0IGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY2FsbGVyXCIpO1xyXG4gICAgICAgIGlmIChvcHRpb25zLnR5cGUgIT09IFwiYmVmb3JlXCIgJiYgb3B0aW9ucy50eXBlICE9PSBcImluc3RlYWRcIiAmJiBvcHRpb25zLnR5cGUgIT09IFwiYWZ0ZXJcIikgcmV0dXJuIExvZ2dlci5lcnIoXCJCZEFwaS5QYXRjaGVyXCIsIFwib3B0aW9ucy50eXBlIG11c3QgYmUgb25lIG9mOiBiZWZvcmUsIGluc3RlYWQsIGFmdGVyXCIpO1xyXG4gICAgICAgIHJldHVybiBQYXRjaGVyLnB1c2hDaGlsZFBhdGNoKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgb3B0aW9ucyk7XHJcbiAgICB9LFxyXG4gICAgYmVmb3JlOiAoY2FsbGVyLCBtb2R1bGVUb1BhdGNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCBvcHRpb25zID0ge30pID0+IEJkQXBpLlBhdGNoZXIucGF0Y2goY2FsbGVyLCBtb2R1bGVUb1BhdGNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHt0eXBlOiBcImJlZm9yZVwifSkpLFxyXG4gICAgaW5zdGVhZDogKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgb3B0aW9ucyA9IHt9KSA9PiBCZEFwaS5QYXRjaGVyLnBhdGNoKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJpbnN0ZWFkXCJ9KSksXHJcbiAgICBhZnRlcjogKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgb3B0aW9ucyA9IHt9KSA9PiBCZEFwaS5QYXRjaGVyLnBhdGNoKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJhZnRlclwifSkpLFxyXG4gICAgdW5wYXRjaEFsbDogKGNhbGxlcikgPT4ge1xyXG4gICAgICAgIGlmICh0eXBlb2YoY2FsbGVyKSAhPT0gXCJzdHJpbmdcIikgcmV0dXJuIExvZ2dlci5lcnIoXCJCZEFwaS5QYXRjaGVyXCIsIFwiUGFyYW1ldGVyIDAgb2YgdW5wYXRjaEFsbCBtdXN0IGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY2FsbGVyXCIpO1xyXG4gICAgICAgIHJldHVybiBQYXRjaGVyLnVucGF0Y2hBbGwoY2FsbGVyKTtcclxuICAgIH1cclxufTtcclxuXHJcbk9iamVjdC5mcmVlemUoQmRBcGkpO1xyXG5PYmplY3QuZnJlZXplKEJkQXBpLlBsdWdpbnMpO1xyXG5PYmplY3QuZnJlZXplKEJkQXBpLlRoZW1lcyk7XHJcbk9iamVjdC5mcmVlemUoQmRBcGkuUGF0Y2hlcik7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBCZEFwaTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/pluginapi.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _data_data_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../data/data.js */ \"./src/data/data.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _webpackmodules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./webpackmodules */ \"./src/modules/webpackmodules.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony import */ var _dommanager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dommanager */ \"./src/modules/dommanager.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _pluginmanager__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./pluginmanager */ \"./src/modules/pluginmanager.js\");\n/* harmony import */ var _thememanager__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./thememanager */ \"./src/modules/thememanager.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _patcher__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./patcher */ \"./src/modules/patcher.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst BdApi = {\n get React() {\n return _discordmodules__WEBPACK_IMPORTED_MODULE_3__[\"default\"].React;\n },\n\n get ReactDOM() {\n return _discordmodules__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ReactDOM;\n },\n\n get WindowConfigFile() {\n return \"\";\n },\n\n get settings() {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].collections;\n },\n\n get emotes() {\n return {};\n },\n\n get version() {\n return _data_data_js__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].version;\n }\n\n};\n\nBdApi.getAllWindowPreferences = function () {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getData(\"windowprefs\") || {};\n};\n\nBdApi.getWindowPreference = function (key) {\n return this.getAllWindowPreferences()[key];\n};\n\nBdApi.setWindowPreference = function (key, value) {\n const prefs = this.getAllWindowPreferences();\n prefs[key] = value;\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setData(\"windowprefs\", prefs);\n}; //Inject CSS to document head\n//id = id of element\n//css = custom css\n\n\nBdApi.injectCSS = function (id, css) {\n _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].injectStyle(id, css);\n}; //Clear css/remove any element\n//id = id of element\n\n\nBdApi.clearCSS = function (id) {\n _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].removeStyle(id);\n}; //Inject CSS to document head\n//id = id of element\n//css = custom css\n\n\nBdApi.linkJS = function (id, url) {\n return _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].injectScript(id, url);\n}; //Clear css/remove any element\n//id = id of element\n\n\nBdApi.unlinkJS = function (id) {\n _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].removeScript(id);\n};\n/**\r\n * Shows a generic but very customizable modal.\r\n * @param {string} title - title of the modal\r\n * @param {string} content - a string of text to display in the modal\r\n */\n\n\nBdApi.alert = function (title, content) {\n _ui_modals__WEBPACK_IMPORTED_MODULE_7__[\"default\"].alert(title, content);\n};\n/**\r\n * Shows a generic but very customizable confirmation modal with optional confirm and cancel callbacks.\r\n * @param {string} title - title of the modal\r\n * @param {(string|ReactElement|Array)} children - a single or mixed array of react elements and strings. Everything is wrapped in Discord's `TextElement` component so strings will show and render properly.\r\n * @param {object} [options] - options to modify the modal\r\n * @param {boolean} [options.danger=false] - whether the main button should be red or not\r\n * @param {string} [options.confirmText=Okay] - text for the confirmation/submit button\r\n * @param {string} [options.cancelText=Cancel] - text for the cancel button\r\n * @param {callable} [options.onConfirm=NOOP] - callback to occur when clicking the submit button\r\n * @param {callable} [options.onCancel=NOOP] - callback to occur when clicking the cancel button\r\n */\n\n\nBdApi.showConfirmationModal = function (title, content, options = {}) {\n return _ui_modals__WEBPACK_IMPORTED_MODULE_7__[\"default\"].showConfirmationModal(title, content, options);\n};\n/**\r\n * This shows a toast similar to android towards the bottom of the screen.\r\n *\r\n * @param {string} content The string to show in the toast.\r\n * @param {object} options Options object. Optional parameter.\r\n * @param {string} [options.type=\"\"] Changes the type of the toast stylistically and semantically. Choices: \"\", \"info\", \"success\", \"danger\"/\"error\", \"warning\"/\"warn\". Default: \"\"\r\n * @param {boolean} [options.icon=true] Determines whether the icon should show corresponding to the type. A toast without type will always have no icon. Default: true\r\n * @param {number} [options.timeout=3000] Adjusts the time (in ms) the toast should be shown for before disappearing automatically. Default: 3000\r\n * @param {boolean} [options.forceShow=false] Whether to force showing the toast and ignore the bd setting\r\n */\n\n\nBdApi.showToast = function (content, options = {}) {\n _ui_toasts__WEBPACK_IMPORTED_MODULE_6__[\"default\"].show(content, options);\n}; // Finds module\n\n\nBdApi.findModule = function (filter) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getModule(filter);\n}; // Finds module\n\n\nBdApi.findAllModules = function (filter) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getModule(filter, false);\n}; // Finds module\n\n\nBdApi.findModuleByProps = function (...props) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getByProps(...props);\n};\n\nBdApi.findModuleByPrototypes = function (...protos) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getByPrototypes(...protos);\n};\n\nBdApi.findModuleByDisplayName = function (name) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getByDisplayName(name);\n}; // Gets react instance\n\n\nBdApi.getInternalInstance = function (node) {\n if (!(node instanceof window.jQuery) && !(node instanceof Element)) return undefined;\n if (node instanceof jQuery) node = node[0];\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getReactInstance(node);\n}; // Gets data\n\n\nBdApi.loadData = function (pluginName, key) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getPluginData(pluginName, key);\n};\n\nBdApi.getData = BdApi.loadData; // Sets data\n\nBdApi.saveData = function (pluginName, key, data) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setPluginData(pluginName, key, data);\n};\n\nBdApi.setData = BdApi.saveData; // Deletes data\n\nBdApi.deleteData = function (pluginName, key) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].deletePluginData(pluginName, key);\n}; // Patches other functions\n// BdApi.monkeyPatch = function(what, methodName, options) {\n// const {before, after, instead, once = false, silent = false, force = false} = options;\n// const displayName = options.displayName || what.displayName || what.name || what.constructor.displayName || what.constructor.name;\n// if (!silent) console.log(\"patch\", methodName, \"of\", displayName); // eslint-disable-line no-console\n// if (!what[methodName]) {\n// if (force) what[methodName] = function() {};\n// else return console.error(methodName, \"does not exist for\", displayName); // eslint-disable-line no-console\n// }\n// const origMethod = what[methodName];\n// const cancel = () => {\n// if (!silent) console.log(\"unpatch\", methodName, \"of\", displayName); // eslint-disable-line no-console\n// what[methodName] = origMethod;\n// };\n// what[methodName] = function() {\n// const data = {\n// thisObject: this,\n// methodArguments: arguments,\n// cancelPatch: cancel,\n// originalMethod: origMethod,\n// callOriginalMethod: () => data.returnValue = data.originalMethod.apply(data.thisObject, data.methodArguments)\n// };\n// if (instead) {\n// const tempRet = Utilities.suppressErrors(instead, \"`instead` callback of \" + what[methodName].displayName)(data);\n// if (tempRet !== undefined) data.returnValue = tempRet;\n// }\n// else {\n// if (before) Utilities.suppressErrors(before, \"`before` callback of \" + what[methodName].displayName)(data);\n// data.callOriginalMethod();\n// if (after) Utilities.suppressErrors(after, \"`after` callback of \" + what[methodName].displayName)(data);\n// }\n// if (once) cancel();\n// return data.returnValue;\n// };\n// what[methodName].__monkeyPatched = true;\n// if (!what[methodName].__originalMethod) what[methodName].__originalMethod = origMethod;\n// what[methodName].displayName = \"patched \" + (what[methodName].displayName || methodName);\n// return cancel;\n// };\n\n\nBdApi.monkeyPatch = function (what, methodName, options) {\n const {\n before,\n after,\n instead,\n once = false\n } = options;\n const patchType = before ? \"before\" : after ? \"after\" : instead ? \"instead\" : \"\";\n if (!patchType) return _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].err(\"BdApi\", \"Must provide one of: after, before, instead\");\n const originalMethod = what[methodName];\n const data = {\n originalMethod: originalMethod,\n callOriginalMethod: () => data.originalMethod.apply(data.thisObject, data.methodArguments)\n };\n data.cancelPatch = _patcher__WEBPACK_IMPORTED_MODULE_12__[\"default\"][patchType](\"BdApi\", what, methodName, (thisObject, args, returnValue) => {\n data.thisObject = thisObject;\n data.methodArguments = args;\n data.returnValue = returnValue;\n\n try {\n Reflect.apply(options[patchType], null, [data]);\n if (once) data.cancelPatch();\n } catch (err) {// Logger.err(\"monkeyPatch\", `Error in the ${patchType} of ${methodName}`);\n }\n });\n}; // Event when element is removed\n\n\nBdApi.onRemoved = function (node, callback) {\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].onRemoved(node, callback);\n}; // Wraps function in try..catch\n\n\nBdApi.suppressErrors = function (method, message) {\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].suppressErrors(method, message);\n}; // Tests for valid JSON\n\n\nBdApi.testJSON = function (data) {\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].testJSON(data);\n}; //Get another plugin\n//name = name of plugin\n\n\nBdApi.getPlugin = function (name) {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"BdApi\", \"getPlugin is deprecated. Please make use of the addon api (BdApi.Plugins)\");\n return _pluginmanager__WEBPACK_IMPORTED_MODULE_8__[\"default\"].addonList.find(a => a.name == name);\n};\n\nBdApi.isPluginEnabled = function (name) {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"BdApi\", \"isPluginEnabled is deprecated. Please make use of the addon api (BdApi.Plugins)\");\n const plugin = this.getPlugin(name);\n if (!plugin) return false;\n return _pluginmanager__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isEnabled(plugin.id);\n};\n\nBdApi.isThemeEnabled = function (name) {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"BdApi\", \"isThemeEnabled is deprecated. Please make use of the addon api (BdApi.Themes)\");\n const theme = _thememanager__WEBPACK_IMPORTED_MODULE_9__[\"default\"].addonList.find(a => a.name == name);\n if (!theme) return false;\n return _thememanager__WEBPACK_IMPORTED_MODULE_9__[\"default\"].isEnabled(theme.id);\n};\n\nBdApi.isSettingEnabled = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].get(collection, category, id);\n};\n\nBdApi.enableSetting = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].set(collection, category, id, true);\n};\n\nBdApi.disableSetting = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].set(collection, category, id, false);\n};\n\nBdApi.toggleSetting = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].set(collection, category, id, !_settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].get(collection, category, id));\n}; // Gets data\n\n\nBdApi.getBDData = function (key) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getBDData(key);\n}; // Sets data\n\n\nBdApi.setBDData = function (key, data) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setBDData(key, data);\n};\n\nconst makeAddonAPI = manager => new class AddonAPI {\n get folder() {\n return manager.addonFolder;\n }\n\n isEnabled(idOrFile) {\n return manager.isEnabled(idOrFile);\n }\n\n enable(idOrAddon) {\n return manager.enableAddon(idOrAddon);\n }\n\n disable(idOrAddon) {\n return manager.disableAddon(idOrAddon);\n }\n\n toggle(idOrAddon) {\n return manager.toggleAddon(idOrAddon);\n }\n\n reload(idOrFileOrAddon) {\n return manager.reloadAddon(idOrFileOrAddon);\n }\n\n get(idOrFile) {\n return manager.getAddon(idOrFile);\n }\n\n getAll() {\n return manager.addonList.map(a => manager.getAddon(a.id));\n }\n\n}();\n\nBdApi.Plugins = makeAddonAPI(_pluginmanager__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\nBdApi.Themes = makeAddonAPI(_thememanager__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\nBdApi.Patcher = {\n patch: (caller, moduleToPatch, functionName, callback, options = {}) => {\n if (typeof caller !== \"string\") return _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].err(\"BdApi.Patcher\", \"Parameter 0 of patch must be a string representing the caller\");\n if (options.type !== \"before\" && options.type !== \"instead\" && options.type !== \"after\") return _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].err(\"BdApi.Patcher\", \"options.type must be one of: before, instead, after\");\n return _patcher__WEBPACK_IMPORTED_MODULE_12__[\"default\"].pushChildPatch(caller, moduleToPatch, functionName, callback, options);\n },\n before: (caller, moduleToPatch, functionName, callback, options = {}) => BdApi.Patcher.patch(caller, moduleToPatch, functionName, callback, Object.assign(options, {\n type: \"before\"\n })),\n instead: (caller, moduleToPatch, functionName, callback, options = {}) => BdApi.Patcher.patch(caller, moduleToPatch, functionName, callback, Object.assign(options, {\n type: \"instead\"\n })),\n after: (caller, moduleToPatch, functionName, callback, options = {}) => BdApi.Patcher.patch(caller, moduleToPatch, functionName, callback, Object.assign(options, {\n type: \"after\"\n })),\n unpatchAll: caller => {\n if (typeof caller !== \"string\") return _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].err(\"BdApi.Patcher\", \"Parameter 0 of unpatchAll must be a string representing the caller\");\n return _patcher__WEBPACK_IMPORTED_MODULE_12__[\"default\"].unpatchAll(caller);\n }\n};\nObject.freeze(BdApi);\nObject.freeze(BdApi.Plugins);\nObject.freeze(BdApi.Themes);\nObject.freeze(BdApi.Patcher);\n/* harmony default export */ __webpack_exports__[\"default\"] = (BdApi);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9wbHVnaW5hcGkuanM/NmE5MyJdLCJuYW1lcyI6WyJCZEFwaSIsIlJlYWN0IiwiRGlzY29yZE1vZHVsZXMiLCJSZWFjdERPTSIsIldpbmRvd0NvbmZpZ0ZpbGUiLCJzZXR0aW5ncyIsIlNldHRpbmdzIiwiY29sbGVjdGlvbnMiLCJlbW90ZXMiLCJ2ZXJzaW9uIiwiQ29uZmlnIiwiZ2V0QWxsV2luZG93UHJlZmVyZW5jZXMiLCJEYXRhU3RvcmUiLCJnZXREYXRhIiwiZ2V0V2luZG93UHJlZmVyZW5jZSIsImtleSIsInNldFdpbmRvd1ByZWZlcmVuY2UiLCJ2YWx1ZSIsInByZWZzIiwic2V0RGF0YSIsImluamVjdENTUyIsImlkIiwiY3NzIiwiRE9NTWFuYWdlciIsImluamVjdFN0eWxlIiwiY2xlYXJDU1MiLCJyZW1vdmVTdHlsZSIsImxpbmtKUyIsInVybCIsImluamVjdFNjcmlwdCIsInVubGlua0pTIiwicmVtb3ZlU2NyaXB0IiwiYWxlcnQiLCJ0aXRsZSIsImNvbnRlbnQiLCJNb2RhbHMiLCJzaG93Q29uZmlybWF0aW9uTW9kYWwiLCJvcHRpb25zIiwic2hvd1RvYXN0IiwiVG9hc3RzIiwic2hvdyIsImZpbmRNb2R1bGUiLCJmaWx0ZXIiLCJXZWJwYWNrTW9kdWxlcyIsImdldE1vZHVsZSIsImZpbmRBbGxNb2R1bGVzIiwiZmluZE1vZHVsZUJ5UHJvcHMiLCJwcm9wcyIsImdldEJ5UHJvcHMiLCJmaW5kTW9kdWxlQnlQcm90b3R5cGVzIiwicHJvdG9zIiwiZ2V0QnlQcm90b3R5cGVzIiwiZmluZE1vZHVsZUJ5RGlzcGxheU5hbWUiLCJuYW1lIiwiZ2V0QnlEaXNwbGF5TmFtZSIsImdldEludGVybmFsSW5zdGFuY2UiLCJub2RlIiwid2luZG93IiwialF1ZXJ5IiwiRWxlbWVudCIsInVuZGVmaW5lZCIsIlV0aWxpdGllcyIsImdldFJlYWN0SW5zdGFuY2UiLCJsb2FkRGF0YSIsInBsdWdpbk5hbWUiLCJnZXRQbHVnaW5EYXRhIiwic2F2ZURhdGEiLCJkYXRhIiwic2V0UGx1Z2luRGF0YSIsImRlbGV0ZURhdGEiLCJkZWxldGVQbHVnaW5EYXRhIiwibW9ua2V5UGF0Y2giLCJ3aGF0IiwibWV0aG9kTmFtZSIsImJlZm9yZSIsImFmdGVyIiwiaW5zdGVhZCIsIm9uY2UiLCJwYXRjaFR5cGUiLCJMb2dnZXIiLCJlcnIiLCJvcmlnaW5hbE1ldGhvZCIsImNhbGxPcmlnaW5hbE1ldGhvZCIsImFwcGx5IiwidGhpc09iamVjdCIsIm1ldGhvZEFyZ3VtZW50cyIsImNhbmNlbFBhdGNoIiwiUGF0Y2hlciIsImFyZ3MiLCJyZXR1cm5WYWx1ZSIsIlJlZmxlY3QiLCJvblJlbW92ZWQiLCJjYWxsYmFjayIsInN1cHByZXNzRXJyb3JzIiwibWV0aG9kIiwibWVzc2FnZSIsInRlc3RKU09OIiwiZ2V0UGx1Z2luIiwid2FybiIsIlBsdWdpbk1hbmFnZXIiLCJhZGRvbkxpc3QiLCJmaW5kIiwiYSIsImlzUGx1Z2luRW5hYmxlZCIsInBsdWdpbiIsImlzRW5hYmxlZCIsImlzVGhlbWVFbmFibGVkIiwidGhlbWUiLCJUaGVtZU1hbmFnZXIiLCJpc1NldHRpbmdFbmFibGVkIiwiY29sbGVjdGlvbiIsImNhdGVnb3J5IiwiZ2V0IiwiZW5hYmxlU2V0dGluZyIsInNldCIsImRpc2FibGVTZXR0aW5nIiwidG9nZ2xlU2V0dGluZyIsImdldEJERGF0YSIsInNldEJERGF0YSIsIm1ha2VBZGRvbkFQSSIsIm1hbmFnZXIiLCJBZGRvbkFQSSIsImZvbGRlciIsImFkZG9uRm9sZGVyIiwiaWRPckZpbGUiLCJlbmFibGUiLCJpZE9yQWRkb24iLCJlbmFibGVBZGRvbiIsImRpc2FibGUiLCJkaXNhYmxlQWRkb24iLCJ0b2dnbGUiLCJ0b2dnbGVBZGRvbiIsInJlbG9hZCIsImlkT3JGaWxlT3JBZGRvbiIsInJlbG9hZEFkZG9uIiwiZ2V0QWRkb24iLCJnZXRBbGwiLCJtYXAiLCJQbHVnaW5zIiwiVGhlbWVzIiwicGF0Y2giLCJjYWxsZXIiLCJtb2R1bGVUb1BhdGNoIiwiZnVuY3Rpb25OYW1lIiwidHlwZSIsInB1c2hDaGlsZFBhdGNoIiwiT2JqZWN0IiwiYXNzaWduIiwidW5wYXRjaEFsbCIsImZyZWV6ZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsS0FBSyxHQUFHO0FBQ1YsTUFBSUMsS0FBSixHQUFZO0FBQUUsV0FBT0MsdURBQWMsQ0FBQ0QsS0FBdEI7QUFBOEIsR0FEbEM7O0FBRVYsTUFBSUUsUUFBSixHQUFlO0FBQUUsV0FBT0QsdURBQWMsQ0FBQ0MsUUFBdEI7QUFBaUMsR0FGeEM7O0FBR1YsTUFBSUMsZ0JBQUosR0FBdUI7QUFBQyxXQUFPLEVBQVA7QUFBVyxHQUh6Qjs7QUFJVixNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPQyx5REFBUSxDQUFDQyxXQUFoQjtBQUE2QixHQUpuQzs7QUFLVixNQUFJQyxNQUFKLEdBQWE7QUFBQyxXQUFPLEVBQVA7QUFBVyxHQUxmOztBQU1WLE1BQUlDLE9BQUosR0FBYztBQUFDLFdBQU9DLG9EQUFNLENBQUNELE9BQWQ7QUFBdUI7O0FBTjVCLENBQWQ7O0FBU0FULEtBQUssQ0FBQ1csdUJBQU4sR0FBZ0MsWUFBVztBQUN2QyxTQUFPQyxrREFBUyxDQUFDQyxPQUFWLENBQWtCLGFBQWxCLEtBQW9DLEVBQTNDO0FBQ0gsQ0FGRDs7QUFJQWIsS0FBSyxDQUFDYyxtQkFBTixHQUE0QixVQUFTQyxHQUFULEVBQWM7QUFDdEMsU0FBTyxLQUFLSix1QkFBTCxHQUErQkksR0FBL0IsQ0FBUDtBQUNILENBRkQ7O0FBSUFmLEtBQUssQ0FBQ2dCLG1CQUFOLEdBQTRCLFVBQVNELEdBQVQsRUFBY0UsS0FBZCxFQUFxQjtBQUM3QyxRQUFNQyxLQUFLLEdBQUcsS0FBS1AsdUJBQUws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O0FBQ2pDLFdBQU9PLGlEQUFPLENBQUM2RCxVQUFSLENBQW1CUCxNQUFuQixDQUFQO0FBQ0g7QUFaVyxDQUFoQjtBQWVBSyxNQUFNLENBQUNHLE1BQVAsQ0FBY3JKLEtBQWQ7QUFDQWtKLE1BQU0sQ0FBQ0csTUFBUCxDQUFjckosS0FBSyxDQUFDMEksT0FBcEI7QUFDQVEsTUFBTSxDQUFDRyxNQUFQLENBQWNySixLQUFLLENBQUMySSxNQUFwQjtBQUNBTyxNQUFNLENBQUNHLE1BQVAsQ0FBY3JKLEtBQUssQ0FBQ3VGLE9BQXBCO0FBRWV2RixvRUFBZiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL3BsdWdpbmFwaS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQgVXRpbGl0aWVzIGZyb20gXCIuL3V0aWxpdGllc1wiO1xyXG5pbXBvcnQgV2VicGFja01vZHVsZXMgZnJvbSBcIi4vd2VicGFja21vZHVsZXNcIjtcclxuaW1wb3J0IERpc2NvcmRNb2R1bGVzIGZyb20gXCIuL2Rpc2NvcmRtb2R1bGVzXCI7XHJcbmltcG9ydCBEYXRhU3RvcmUgZnJvbSBcIi4vZGF0YXN0b3JlXCI7XHJcbmltcG9ydCBET01NYW5hZ2VyIGZyb20gXCIuL2RvbW1hbmFnZXJcIjtcclxuaW1wb3J0IFRvYXN0cyBmcm9tIFwiLi4vdWkvdG9hc3RzXCI7XHJcbmltcG9ydCBNb2RhbHMgZnJvbSBcIi4uL3VpL21vZGFsc1wiO1xyXG5pbXBvcnQgUGx1Z2luTWFuYWdlciBmcm9tIFwiLi9wbHVnaW5tYW5hZ2VyXCI7XHJcbmltcG9ydCBUaGVtZU1hbmFnZXIgZnJvbSBcIi4vdGhlbWVtYW5hZ2VyXCI7XHJcbmltcG9ydCBTZXR0aW5ncyBmcm9tIFwiLi9zZXR0aW5nc21hbmFnZXJcIjtcclxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi9sb2dnZXJcIjtcclxuaW1wb3J0IFBhdGNoZXIgZnJvbSBcIi4vcGF0Y2hlclwiO1xyXG5cclxuY29uc3QgQmRBcGkgPSB7XHJcbiAgICBnZXQgUmVhY3QoKSB7IHJldHVybiBEaXNjb3JkTW9kdWxlcy5SZWFjdDsgfSxcclxuICAgIGdldCBSZWFjdERPTSgpIHsgcmV0dXJuIERpc2NvcmRNb2R1bGVzLlJlYWN0RE9NOyB9LFxyXG4gICAgZ2V0IFdpbmRvd0NvbmZpZ0ZpbGUoKSB7cmV0dXJuIFwiXCI7fSxcclxuICAgIGdldCBzZXR0aW5ncygpIHtyZXR1cm4gU2V0dGluZ3MuY29sbGVjdGlvbnM7fSxcclxuICAgIGdldCBlbW90ZXMoKSB7cmV0dXJuIHt9O30sXHJcbiAgICBnZXQgdmVyc2lvbigpIHtyZXR1cm4gQ29uZmlnLnZlcnNpb247fVxyXG59O1xyXG5cclxuQmRBcGkuZ2V0QWxsV2luZG93UHJlZmVyZW5jZXMgPSBmdW5jdGlvbigpIHtcclxuICAgIHJldHVybiBEYXRhU3RvcmUuZ2V0RGF0YShcIndpbmRvd3ByZWZzXCIpIHx8IHt9O1xyXG59O1xyXG5cclxuQmRBcGkuZ2V0V2luZG93UHJlZmVyZW5jZSA9IGZ1bmN0aW9uKGtleSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsV2luZG93UHJlZmVyZW5jZXMoKVtrZXldO1xyXG59O1xyXG5cclxuQmRBcGkuc2V0V2luZG93UHJlZmVyZW5jZSA9IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHtcclxuICAgIGNvbnN0IHByZWZzID0gdGhpcy5nZXRBbGxXaW5kb3dQcmVmZXJlbmNlcygpO1xyXG4gICAgcHJlZnNba2V5XSA9IHZhbHVlO1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5zZXREYXRhKFwid2luZG93cHJlZnNcIiwgcHJlZnMpO1xyXG59O1xyXG5cclxuLy9JbmplY3QgQ1NTIHRvIGRvY3VtZW50IGhlYWRcclxuLy9pZCA9IGlkIG9mIGVsZW1lbnRcclxuLy9jc3MgPSBjdXN0b20gY3NzXHJcbkJkQXBpLmluamVjdENTUyA9IGZ1bmN0aW9uIChpZCwgY3NzKSB7XHJcbiAgICBET01NYW5hZ2VyLmluamVjdFN0eWxlKGlkLCBjc3MpO1xyXG59O1xyXG5cclxuLy9DbGVhciBjc3MvcmVtb3ZlIGFueSBlbGVtZW50XHJcbi8vaWQgPSBpZCBvZiBlbGVtZW50XHJcbkJkQXBpLmNsZWFyQ1NTID0gZnVuY3Rpb24gKGlkKSB7XHJcbiAgICBET01NYW5hZ2VyLnJlbW92ZVN0eWxlKGlkKTtcclxufTtcclxuXHJcbi8vSW5qZWN0IENTUyB0byBkb2N1bWVudCBoZWFkXHJcbi8vaWQgPSBpZCBvZiBlbGVtZW50XHJcbi8vY3NzID0gY3VzdG9tIGNzc1xyXG5CZEFwaS5saW5rSlMgPSBmdW5jdGlvbiAoaWQsIHVybCkge1xyXG4gICAgcmV0dXJuIERPTU1hbmFnZXIuaW5qZWN0U2NyaXB0KGlkLCB1cmwpO1xyXG59O1xyXG5cclxuLy9DbGVhciBjc3MvcmVtb3ZlIGFueSBlbGVtZW50XHJcbi8vaWQgPSBpZCBvZiBlbGVtZW50XHJcbkJkQXBpLnVubGlua0pTID0gZnVuY3Rpb24gKGlkKSB7XHJcbiAgICBET01NYW5hZ2VyLnJlbW92ZVNjcmlwdChpZCk7XHJcbn07XHJcblxyXG4vKipcclxuICogU2hvd3MgYSBnZW5lcmljIGJ1dCB2ZXJ5IGN1c3RvbWl6YWJsZSBtb2RhbC5cclxuICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIC0gdGl0bGUgb2YgdGhlIG1vZGFsXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IC0gYSBzdHJpbmcgb2YgdGV4dCB0byBkaXNwbGF5IGluIHRoZSBtb2RhbFxyXG4gKi9cclxuQmRBcGkuYWxlcnQgPSBmdW5jdGlvbiAodGl0bGUsIGNvbnRlbnQpIHtcclxuICAgIE1vZGFscy5hbGVydCh0aXRsZSwgY29udGVudCk7XHJcbn07XHJcblxyXG4vKipcclxuICogU2hvd3MgYSBnZW5lcmljIGJ1dCB2ZXJ5IGN1c3RvbWl6YWJsZSBjb25maXJtYXRpb24gbW9kYWwgd2l0aCBvcHRpb25hbCBjb25maXJtIGFuZCBjYW5jZWwgY2FsbGJhY2tzLlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgLSB0aXRsZSBvZiB0aGUgbW9kYWxcclxuICogQHBhcmFtIHsoc3RyaW5nfFJlYWN0RWxlbWVudHxBcnJheTxzdHJpbmd8UmVhY3RFbGVtZW50Pil9IGNoaWxkcmVuIC0gYSBzaW5nbGUgb3IgbWl4ZWQgYXJyYXkgb2YgcmVhY3QgZWxlbWVudHMgYW5kIHN0cmluZ3MuIEV2ZXJ5dGhpbmcgaXMgd3JhcHBlZCBpbiBEaXNjb3JkJ3MgYFRleHRFbGVtZW50YCBjb21wb25lbnQgc28gc3RyaW5ncyB3aWxsIHNob3cgYW5kIHJlbmRlciBwcm9wZXJseS5cclxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXSAtIG9wdGlvbnMgdG8gbW9kaWZ5IHRoZSBtb2RhbFxyXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmRhbmdlcj1mYWxzZV0gLSB3aGV0aGVyIHRoZSBtYWluIGJ1dHRvbiBzaG91bGQgYmUgcmVkIG9yIG5vdFxyXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuY29uZmlybVRleHQ9T2theV0gLSB0ZXh0IGZvciB0aGUgY29uZmlybWF0aW9uL3N1Ym1pdCBidXR0b25cclxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmNhbmNlbFRleHQ9Q2FuY2VsXSAtIHRleHQgZm9yIHRoZSBjYW5jZWwgYnV0dG9uXHJcbiAqIEBwYXJhbSB7Y2FsbGFibGV9IFtvcHRpb25zLm9uQ29uZmlybT1OT09QXSAtIGNhbGxiYWNrIHRvIG9jY3VyIHdoZW4gY2xpY2tpbmcgdGhlIHN1Ym1pdCBidXR0b25cclxuICogQHBhcmFtIHtjYWxsYWJsZX0gW29wdGlvbnMub25DYW5jZWw9Tk9PUF0gLSBjYWxsYmFjayB0byBvY2N1ciB3aGVuIGNsaWNraW5nIHRoZSBjYW5jZWwgYnV0dG9uXHJcbiAqL1xyXG5CZEFwaS5zaG93Q29uZmlybWF0aW9uTW9kYWwgPSBmdW5jdGlvbiAodGl0bGUsIGNvbnRlbnQsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgcmV0dXJuIE1vZGFscy5zaG93Q29uZmlybWF0aW9uTW9kYWwodGl0bGUsIGNvbnRlbnQsIG9wdGlvbnMpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFRoaXMgc2hvd3MgYSB0b2FzdCBzaW1pbGFyIHRvIGFuZHJvaWQgdG93YXJkcyB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uXHJcbiAqXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IFRoZSBzdHJpbmcgdG8gc2hvdyBpbiB0aGUgdG9hc3QuXHJcbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIE9wdGlvbnMgb2JqZWN0LiBPcHRpb25hbCBwYXJhbWV0ZXIuXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy50eXBlPVwiXCJdIENoYW5nZXMgdGhlIHR5cGUgb2YgdGhlIHRvYXN0IHN0eWxpc3RpY2FsbHkgYW5kIHNlbWFudGljYWxseS4gQ2hvaWNlczogXCJcIiwgXCJpbmZvXCIsIFwic3VjY2Vzc1wiLCBcImRhbmdlclwiL1wiZXJyb3JcIiwgXCJ3YXJuaW5nXCIvXCJ3YXJuXCIuIERlZmF1bHQ6IFwiXCJcclxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5pY29uPXRydWVdIERldGVybWluZXMgd2hldGhlciB0aGUgaWNvbiBzaG91bGQgc2hvdyBjb3JyZXNwb25kaW5nIHRvIHRoZSB0eXBlLiBBIHRvYXN0IHdpdGhvdXQgdHlwZSB3aWxsIGFsd2F5cyBoYXZlIG5vIGljb24uIERlZmF1bHQ6IHRydWVcclxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLnRpbWVvdXQ9MzAwMF0gQWRqdXN0cyB0aGUgdGltZSAoaW4gbXMpIHRoZSB0b2FzdCBzaG91bGQgYmUgc2hvd24gZm9yIGJlZm9yZSBkaXNhcHBlYXJpbmcgYXV0b21hdGljYWxseS4gRGVmYXVsdDogMzAwMFxyXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmZvcmNlU2hvdz1mYWxzZV0gV2hldGhlciB0byBmb3JjZSBzaG93aW5nIHRoZSB0b2FzdCBhbmQgaWdub3JlIHRoZSBiZCBzZXR0aW5nXHJcbiAqL1xyXG5CZEFwaS5zaG93VG9hc3QgPSBmdW5jdGlvbihjb250ZW50LCBvcHRpb25zID0ge30pIHtcclxuICAgIFRvYXN0cy5zaG93KGNvbnRlbnQsIG9wdGlvbnMpO1xyXG59O1xyXG5cclxuLy8gRmluZHMgbW9kdWxlXHJcbkJkQXBpLmZpbmRNb2R1bGUgPSBmdW5jdGlvbihmaWx0ZXIpIHtcclxuICAgIHJldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRNb2R1bGUoZmlsdGVyKTtcclxufTtcclxuXHJcbi8vIEZpbmRzIG1vZHVsZVxyXG5CZEFwaS5maW5kQWxsTW9kdWxlcyA9IGZ1bmN0aW9uKGZpbHRlcikge1xyXG4gICAgcmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldE1vZHVsZShmaWx0ZXIsIGZhbHNlKTtcclxufTtcclxuXHJcbi8vIEZpbmRzIG1vZHVsZVxyXG5CZEFwaS5maW5kTW9kdWxlQnlQcm9wcyA9IGZ1bmN0aW9uKC4uLnByb3BzKSB7XHJcbiAgICByZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyguLi5wcm9wcyk7XHJcbn07XHJcblxyXG5CZEFwaS5maW5kTW9kdWxlQnlQcm90b3R5cGVzID0gZnVuY3Rpb24oLi4ucHJvdG9zKSB7XHJcbiAgICByZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm90b3R5cGVzKC4uLnByb3Rvcyk7XHJcbn07XHJcblxyXG5CZEFwaS5maW5kTW9kdWxlQnlEaXNwbGF5TmFtZSA9IGZ1bmN0aW9uKG5hbWUpIHtcclxuICAgIHJldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeURpc3BsYXlOYW1lKG5hbWUpO1xyXG59O1xyXG5cclxuLy8gR2V0cyByZWFjdCBpbnN0YW5jZVxyXG5CZEFwaS5nZXRJbnRlcm5hbEluc3RhbmNlID0gZnVuY3Rpb24obm9kZSkge1xyXG4gICAgaWYgKCEobm9kZSBpbnN0YW5jZW9mIHdpbmRvdy5qUXVlcnkpICYmICEobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpKSByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBqUXVlcnkpIG5vZGUgPSBub2RlWzBdO1xyXG4gICAgcmV0dXJuIFV0aWxpdGllcy5nZXRSZWFjdEluc3RhbmNlKG5vZGUpO1xyXG59O1xyXG5cclxuLy8gR2V0cyBkYXRhXHJcbkJkQXBpLmxvYWREYXRhID0gZnVuY3Rpb24ocGx1Z2luTmFtZSwga2V5KSB7XHJcbiAgICByZXR1cm4gRGF0YVN0b3JlLmdldFBsdWdpbkRhdGEocGx1Z2luTmFtZSwga2V5KTtcclxufTtcclxuXHJcbkJkQXBpLmdldERhdGEgPSBCZEFwaS5sb2FkRGF0YTtcclxuXHJcbi8vIFNldHMgZGF0YVxyXG5CZEFwaS5zYXZlRGF0YSA9IGZ1bmN0aW9uKHBsdWdpbk5hbWUsIGtleSwgZGF0YSkge1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5zZXRQbHVnaW5EYXRhKHBsdWdpbk5hbWUsIGtleSwgZGF0YSk7XHJcbn07XHJcblxyXG5CZEFwaS5zZXREYXRhID0gQmRBcGkuc2F2ZURhdGE7XHJcblxyXG4vLyBEZWxldGVzIGRhdGFcclxuQmRBcGkuZGVsZXRlRGF0YSA9IGZ1bmN0aW9uKHBsdWdpbk5hbWUsIGtleSkge1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5kZWxldGVQbHVnaW5EYXRhKHBsdWdpbk5hbWUsIGtleSk7XHJcbn07XHJcblxyXG4vLyBQYXRjaGVzIG90aGVyIGZ1bmN0aW9uc1xyXG4vLyBCZEFwaS5tb25rZXlQYXRjaCA9IGZ1bmN0aW9uKHdoYXQsIG1ldGhvZE5hbWUsIG9wdGlvbnMpIHtcclxuLy8gICAgIGNvbnN0IHtiZWZvcmUsIGFmdGVyLCBpbnN0ZWFkLCBvbmNlID0gZmFsc2UsIHNpbGVudCA9IGZhbHNlLCBmb3JjZSA9IGZhbHNlfSA9IG9wdGlvbnM7XHJcbi8vICAgICBjb25zdCBkaXNwbGF5TmFtZSA9IG9wdGlvbnMuZGlzcGxheU5hbWUgfHwgd2hhdC5kaXNwbGF5TmFtZSB8fCB3aGF0Lm5hbWUgfHwgd2hhdC5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCB3aGF0LmNvbnN0cnVjdG9yLm5hbWU7XHJcbi8vICAgICBpZiAoIXNpbGVudCkgY29uc29sZS5sb2coXCJwYXRjaFwiLCBtZXRob2ROYW1lLCBcIm9mXCIsIGRpc3BsYXlOYW1lKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXHJcbi8vICAgICBpZiAoIXdoYXRbbWV0aG9kTmFtZV0pIHtcclxuLy8gICAgICAgICBpZiAoZm9yY2UpIHdoYXRbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpIHt9O1xyXG4vLyAgICAgICAgIGVsc2UgcmV0dXJuIGNvbnNvbGUuZXJyb3IobWV0aG9kTmFtZSwgXCJkb2VzIG5vdCBleGlzdCBmb3JcIiwgZGlzcGxheU5hbWUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcclxuLy8gICAgIH1cclxuLy8gICAgIGNvbnN0IG9yaWdNZXRob2QgPSB3aGF0W21ldGhvZE5hbWVdO1xyXG4vLyAgICAgY29uc3QgY2FuY2VsID0gKCkgPT4ge1xyXG4vLyAgICAgICAgIGlmICghc2lsZW50KSBjb25zb2xlLmxvZyhcInVucGF0Y2hcIiwgbWV0aG9kTmFtZSwgXCJvZlwiLCBkaXNwbGF5TmFtZSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxyXG4vLyAgICAgICAgIHdoYXRbbWV0aG9kTmFtZV0gPSBvcmlnTWV0aG9kO1xyXG4vLyAgICAgfTtcclxuLy8gICAgIHdoYXRbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpIHtcclxuLy8gICAgICAgICBjb25zdCBkYXRhID0ge1xyXG4vLyAgICAgICAgICAgICB0aGlzT2JqZWN0OiB0aGlzLFxyXG4vLyAgICAgICAgICAgICBtZXRob2RBcmd1bWVudHM6IGFyZ3VtZW50cyxcclxuLy8gICAgICAgICAgICAgY2FuY2VsUGF0Y2g6IGNhbmNlbCxcclxuLy8gICAgICAgICAgICAgb3JpZ2luYWxNZXRob2Q6IG9yaWdNZXRob2QsXHJcbi8vICAgICAgICAgICAgIGNhbGxPcmlnaW5hbE1ldGhvZDogKCkgPT4gZGF0YS5yZXR1cm5WYWx1ZSA9IGRhdGEub3JpZ2luYWxNZXRob2QuYXBwbHkoZGF0YS50aGlzT2JqZWN0LCBkYXRhLm1ldGhvZEFyZ3VtZW50cylcclxuLy8gICAgICAgICB9O1xyXG4vLyAgICAgICAgIGlmIChpbnN0ZWFkKSB7XHJcbi8vICAgICAgICAgICAgIGNvbnN0IHRlbXBSZXQgPSBVdGlsaXRpZXMuc3VwcHJlc3NFcnJvcnMoaW5zdGVhZCwgXCJgaW5zdGVhZGAgY2FsbGJhY2sgb2YgXCIgKyB3aGF0W21ldGhvZE5hbWVdLmRpc3BsYXlOYW1lKShkYXRhKTtcclxuLy8gICAgICAgICAgICAgaWYgKHRlbXBSZXQgIT09IHVuZGVmaW5lZCkgZGF0YS5yZXR1cm5WYWx1ZSA9IHRlbXBSZXQ7XHJcbi8vICAgICAgICAgfVxyXG4vLyAgICAgICAgIGVsc2Uge1xyXG4vLyAgICAgICAgICAgICBpZiAoYmVmb3JlKSBVdGlsaXRpZXMuc3VwcHJlc3NFcnJvcnMoYmVmb3JlLCBcImBiZWZvcmVgIGNhbGxiYWNrIG9mIFwiICsgd2hhdFttZXRob2ROYW1lXS5kaXNwbGF5TmFtZSkoZGF0YSk7XHJcbi8vICAgICAgICAgICAgIGRhdGEuY2FsbE9yaWdpbmFsTWV0aG9kKCk7XHJcbi8vICAgICAgICAgICAgIGlmIChhZnRlcikgVXRpbGl0aWVzLnN1cHByZXNzRXJyb3JzKGFmdGVyLCBcImBhZnRlcmAgY2FsbGJhY2sgb2YgXCIgKyB3aGF0W21ldGhvZE5hbWVdLmRpc3BsYXlOYW1lKShkYXRhKTtcclxuLy8gICAgICAgICB9XHJcbi8vICAgICAgICAgaWYgKG9uY2UpIGNhbmNlbCgpO1xyXG4vLyAgICAgICAgIHJldHVybiBkYXRhLnJldHVyblZhbHVlO1xyXG4vLyAgICAgfTtcclxuLy8gICAgIHdoYXRbbWV0aG9kTmFtZV0uX19tb25rZXlQYXRjaGVkID0gdHJ1ZTtcclxuLy8gICAgIGlmICghd2hhdFttZXRob2ROYW1lXS5fX29yaWdpbmFsTWV0aG9kKSB3aGF0W21ldGhvZE5hbWVdLl9fb3JpZ2luYWxNZXRob2QgPSBvcmlnTWV0aG9kO1xyXG4vLyAgICAgd2hhdFttZXRob2ROYW1lXS5kaXNwbGF5TmFtZSA9IFwicGF0Y2hlZCBcIiArICh3aGF0W21ldGhvZE5hbWVdLmRpc3BsYXlOYW1lIHx8IG1ldGhvZE5hbWUpO1xyXG4vLyAgICAgcmV0dXJuIGNhbmNlbDtcclxuLy8gfTtcclxuQmRBcGkubW9ua2V5UGF0Y2ggPSBmdW5jdGlvbih3aGF0LCBtZXRob2ROYW1lLCBvcHRpb25zKSB7XHJcbiAgICBjb25zdCB7YmVmb3JlLCBhZnRlciwgaW5zdGVhZCwgb25jZSA9IGZhbHNlfSA9IG9wdGlvbnM7XHJcbiAgICBjb25zdCBwYXRjaFR5cGUgPSBiZWZvcmUgPyBcImJlZm9yZVwiIDogYWZ0ZXIgPyBcImFmdGVyXCIgOiBpbnN0ZWFkID8gXCJpbnN0ZWFkXCIgOiBcIlwiO1xyXG4gICAgaWYgKCFwYXRjaFR5cGUpIHJldHVybiBMb2dnZXIuZXJyKFwiQmRBcGlcIiwgXCJNdXN0IHByb3ZpZGUgb25lIG9mOiBhZnRlciwgYmVmb3JlLCBpbnN0ZWFkXCIpO1xyXG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSB3aGF0W21ldGhvZE5hbWVdO1xyXG4gICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgICBvcmlnaW5hbE1ldGhvZDogb3JpZ2luYWxNZXRob2QsXHJcbiAgICAgICAgY2FsbE9yaWdpbmFsTWV0aG9kOiAoKSA9PiBkYXRhLm9yaWdpbmFsTWV0aG9kLmFwcGx5KGRhdGEudGhpc09iamVjdCwgZGF0YS5tZXRob2RBcmd1bWVudHMpXHJcbiAgICB9O1xyXG4gICAgZGF0YS5jYW5jZWxQYXRjaCA9IFBhdGNoZXJbcGF0Y2hUeXBlXShcIkJkQXBpXCIsIHdoYXQsIG1ldGhvZE5hbWUsICh0aGlzT2JqZWN0LCBhcmdzLCByZXR1cm5WYWx1ZSkgPT4ge1xyXG4gICAgICAgIGRhdGEudGhpc09iamVjdCA9IHRoaXNPYmplY3Q7XHJcbiAgICAgICAgZGF0YS5tZXRob2RBcmd1bWVudHMgPSBhcmdzO1xyXG4gICAgICAgIGRhdGEucmV0dXJuVmFsdWUgPSByZXR1cm5WYWx1ZTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBSZWZsZWN0LmFwcGx5KG9wdGlvbnNbcGF0Y2hUeXBlXSwgbnVsbCwgW2RhdGFdKTtcclxuICAgICAgICAgICAgaWYgKG9uY2UpIGRhdGEuY2FuY2VsUGF0Y2goKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAvLyBMb2dnZXIuZXJyKFwibW9ua2V5UGF0Y2hcIiwgYEVycm9yIGluIHRoZSAke3BhdGNoVHlwZX0gb2YgJHttZXRob2ROYW1lfWApO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59O1xyXG4vLyBFdmVudCB3aGVuIGVsZW1lbnQgaXMgcmVtb3ZlZFxyXG5CZEFwaS5vblJlbW92ZWQgPSBmdW5jdGlvbihub2RlLCBjYWxsYmFjaykge1xyXG4gICAgcmV0dXJuIFV0aWxpdGllcy5vblJlbW92ZWQobm9kZSwgY2FsbGJhY2spO1xyXG59O1xyXG5cclxuLy8gV3JhcHMgZnVuY3Rpb24gaW4gdHJ5Li5jYXRjaFxyXG5CZEFwaS5zdXBwcmVzc0Vycm9ycyA9IGZ1bmN0aW9uKG1ldGhvZCwgbWVzc2FnZSkge1xyXG4gICAgcmV0dXJuIFV0aWxpdGllcy5zdXBwcmVzc0Vycm9ycyhtZXRob2QsIG1lc3NhZ2UpO1xyXG59O1xyXG5cclxuLy8gVGVzdHMgZm9yIHZhbGlkIEpTT05cclxuQmRBcGkudGVzdEpTT04gPSBmdW5jdGlvbihkYXRhKSB7XHJcbiAgICByZXR1cm4gVXRpbGl0aWVzLnRlc3RKU09OKGRhdGEpO1xyXG59O1xyXG5cclxuLy9HZXQgYW5vdGhlciBwbHVnaW5cclxuLy9uYW1lID0gbmFtZSBvZiBwbHVnaW5cclxuQmRBcGkuZ2V0UGx1Z2luID0gZnVuY3Rpb24gKG5hbWUpIHtcclxuICAgIExvZ2dlci53YXJuKFwiQmRBcGlcIiwgXCJnZXRQbHVnaW4gaXMgZGVwcmVjYXRlZC4gUGxlYXNlIG1ha2UgdXNlIG9mIHRoZSBhZGRvbiBhcGkgKEJkQXBpLlBsdWdpbnMpXCIpO1xyXG4gICAgcmV0dXJuIFBsdWdpbk1hbmFnZXIuYWRkb25MaXN0LmZpbmQoYSA9PiBhLm5hbWUgPT0gbmFtZSk7XHJcbn07XHJcblxyXG5CZEFwaS5pc1BsdWdpbkVuYWJsZWQgPSBmdW5jdGlvbihuYW1lKSB7XHJcbiAgICBMb2dnZXIud2FybihcIkJkQXBpXCIsIFwiaXNQbHVnaW5FbmFibGVkIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSBtYWtlIHVzZSBvZiB0aGUgYWRkb24gYXBpIChCZEFwaS5QbHVnaW5zKVwiKTtcclxuICAgIGNvbnN0IHBsdWdpbiA9IHRoaXMuZ2V0UGx1Z2luKG5hbWUpO1xyXG4gICAgaWYgKCFwbHVnaW4pIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBQbHVnaW5NYW5hZ2VyLmlzRW5hYmxlZChwbHVnaW4uaWQpO1xyXG59O1xyXG5cclxuQmRBcGkuaXNUaGVtZUVuYWJsZWQgPSBmdW5jdGlvbihuYW1lKSB7XHJcbiAgICBMb2dnZXIud2FybihcIkJkQXBpXCIsIFwiaXNUaGVtZUVuYWJsZWQgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIG1ha2UgdXNlIG9mIHRoZSBhZGRvbiBhcGkgKEJkQXBpLlRoZW1lcylcIik7XHJcbiAgICBjb25zdCB0aGVtZSA9IFRoZW1lTWFuYWdlci5hZGRvbkxpc3QuZmluZChhID0+IGEubmFtZSA9PSBuYW1lKTtcclxuICAgIGlmICghdGhlbWUpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBUaGVtZU1hbmFnZXIuaXNFbmFibGVkKHRoZW1lLmlkKTtcclxufTtcclxuXHJcbkJkQXBpLmlzU2V0dGluZ0VuYWJsZWQgPSBmdW5jdGlvbihjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpIHtcclxuICAgIHJldHVybiBTZXR0aW5ncy5nZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKTtcclxufTtcclxuXHJcbkJkQXBpLmVuYWJsZVNldHRpbmcgPSBmdW5jdGlvbihjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpIHtcclxuICAgIHJldHVybiBTZXR0aW5ncy5zZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkLCB0cnVlKTtcclxufTtcclxuXHJcbkJkQXBpLmRpc2FibGVTZXR0aW5nID0gZnVuY3Rpb24oY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSB7XHJcbiAgICByZXR1cm4gU2V0dGluZ3Muc2V0KGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCwgZmFsc2UpO1xyXG59O1xyXG5cclxuQmRBcGkudG9nZ2xlU2V0dGluZyA9IGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCkge1xyXG4gICAgcmV0dXJuIFNldHRpbmdzLnNldChjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsICFTZXR0aW5ncy5nZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSk7XHJcbn07XHJcblxyXG4vLyBHZXRzIGRhdGFcclxuQmRBcGkuZ2V0QkREYXRhID0gZnVuY3Rpb24oa2V5KSB7XHJcbiAgICByZXR1cm4gRGF0YVN0b3JlLmdldEJERGF0YShrZXkpO1xyXG59O1xyXG5cclxuLy8gU2V0cyBkYXRhXHJcbkJkQXBpLnNldEJERGF0YSA9IGZ1bmN0aW9uKGtleSwgZGF0YSkge1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5zZXRCRERhdGEoa2V5LCBkYXRhKTtcclxufTtcclxuXHJcbmNvbnN0IG1ha2VBZGRvbkFQSSA9IChtYW5hZ2VyKSA9PiBuZXcgY2xhc3MgQWRkb25BUEkge1xyXG4gICAgZ2V0IGZvbGRlcigpIHtyZXR1cm4gbWFuYWdlci5hZGRvbkZvbGRlcjt9XHJcbiAgICBpc0VuYWJsZWQoaWRPckZpbGUpIHtyZXR1cm4gbWFuYWdlci5pc0VuYWJsZWQoaWRPckZpbGUpO31cclxuICAgIGVuYWJsZShpZE9yQWRkb24pIHtyZXR1cm4gbWFuYWdlci5lbmFibGVBZGRvbihpZE9yQWRkb24pO31cclxuICAgIGRpc2FibGUoaWRPckFkZG9uKSB7cmV0dXJuIG1hbmFnZXIuZGlzYWJsZUFkZG9uKGlkT3JBZGRvbik7fVxyXG4gICAgdG9nZ2xlKGlkT3JBZGRvbikge3JldHVybiBtYW5hZ2VyLnRvZ2dsZUFkZG9uKGlkT3JBZGRvbik7fVxyXG4gICAgcmVsb2FkKGlkT3JGaWxlT3JBZGRvbikge3JldHVybiBtYW5hZ2VyLnJlbG9hZEFkZG9uKGlkT3JGaWxlT3JBZGRvbik7fVxyXG4gICAgZ2V0KGlkT3JGaWxlKSB7cmV0dXJuIG1hbmFnZXIuZ2V0QWRkb24oaWRPckZpbGUpO31cclxuICAgIGdldEFsbCgpIHtyZXR1cm4gbWFuYWdlci5hZGRvbkxpc3QubWFwKGEgPT4gbWFuYWdlci5nZXRBZGRvbihhLmlkKSk7fVxyXG59O1xyXG5cclxuQmRBcGkuUGx1Z2lucyA9IG1ha2VBZGRvbkFQSShQbHVnaW5NYW5hZ2VyKTtcclxuQmRBcGkuVGhlbWVzID0gbWFrZUFkZG9uQVBJKFRoZW1lTWFuYWdlcik7XHJcbkJkQXBpLlBhdGNoZXIgPSB7XHJcbiAgICBwYXRjaDogKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgb3B0aW9ucyA9IHt9KSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZihjYWxsZXIpICE9PSBcInN0cmluZ1wiKSByZXR1cm4gTG9nZ2VyLmVycihcIkJkQXBpLlBhdGNoZXJcIiwgXCJQYXJhbWV0ZXIgMCBvZiBwYXRjaCBtdXN0IGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY2FsbGVyXCIpO1xyXG4gICAgICAgIGlmIChvcHRpb25zLnR5cGUgIT09IFwiYmVmb3JlXCIgJiYgb3B0aW9ucy50eXBlICE9PSBcImluc3RlYWRcIiAmJiBvcHRpb25zLnR5cGUgIT09IFwiYWZ0ZXJcIikgcmV0dXJuIExvZ2dlci5lcnIoXCJCZEFwaS5QYXRjaGVyXCIsIFwib3B0aW9ucy50eXBlIG11c3QgYmUgb25lIG9mOiBiZWZvcmUsIGluc3RlYWQsIGFmdGVyXCIpO1xyXG4gICAgICAgIHJldHVybiBQYXRjaGVyLnB1c2hDaGlsZFBhdGNoKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgb3B0aW9ucyk7XHJcbiAgICB9LFxyXG4gICAgYmVmb3JlOiAoY2FsbGVyLCBtb2R1bGVUb1BhdGNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCBvcHRpb25zID0ge30pID0+IEJkQXBpLlBhdGNoZXIucGF0Y2goY2FsbGVyLCBtb2R1bGVUb1BhdGNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHt0eXBlOiBcImJlZm9yZVwifSkpLFxyXG4gICAgaW5zdGVhZDogKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgb3B0aW9ucyA9IHt9KSA9PiBCZEFwaS5QYXRjaGVyLnBhdGNoKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJpbnN0ZWFkXCJ9KSksXHJcbiAgICBhZnRlcjogKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgb3B0aW9ucyA9IHt9KSA9PiBCZEFwaS5QYXRjaGVyLnBhdGNoKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJhZnRlclwifSkpLFxyXG4gICAgdW5wYXRjaEFsbDogKGNhbGxlcikgPT4ge1xyXG4gICAgICAgIGlmICh0eXBlb2YoY2FsbGVyKSAhPT0gXCJzdHJpbmdcIikgcmV0dXJuIExvZ2dlci5lcnIoXCJCZEFwaS5QYXRjaGVyXCIsIFwiUGFyYW1ldGVyIDAgb2YgdW5wYXRjaEFsbCBtdXN0IGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY2FsbGVyXCIpO1xyXG4gICAgICAgIHJldHVybiBQYXRjaGVyLnVucGF0Y2hBbGwoY2FsbGVyKTtcclxuICAgIH1cclxufTtcclxuXHJcbk9iamVjdC5mcmVlemUoQmRBcGkpO1xyXG5PYmplY3QuZnJlZXplKEJkQXBpLlBsdWdpbnMpO1xyXG5PYmplY3QuZnJlZXplKEJkQXBpLlRoZW1lcyk7XHJcbk9iamVjdC5mcmVlemUoQmRBcGkuUGF0Y2hlcik7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBCZEFwaTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/pluginapi.js\n"); /***/ }), @@ -550,7 +550,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _addonmanager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./addonmanager */ \"./src/modules/addonmanager.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../structs/addonerror */ \"./src/structs/addonerror.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _ui_settings__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../ui/settings */ \"./src/ui/settings.js\");\n\n\n\n\n\n\n\n\n\n\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\nconst electronRemote = __webpack_require__(/*! electron */ \"electron\").remote;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class PluginManager extends _addonmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"] {\n get name() {\n return \"PluginManager\";\n }\n\n get moduleExtension() {\n return \".js\";\n }\n\n get extension() {\n return \".plugin.js\";\n }\n\n get addonFolder() {\n return path.resolve(data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"plugins\");\n }\n\n get prefix() {\n return \"plugin\";\n }\n\n get language() {\n return \"javascript\";\n }\n\n constructor() {\n super();\n this.onSwitch = this.onSwitch.bind(this);\n this.observer = new MutationObserver(mutations => {\n for (let i = 0, mlen = mutations.length; i < mlen; i++) {\n this.onMutation(mutations[i]);\n }\n });\n }\n\n initialize() {\n const errors = super.initialize();\n this.setupFunctions();\n _settingsmanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].registerPanel(\"plugins\", _strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Panels.plugins, {\n element: () => _ui_settings__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getAddonPanel(_strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Panels.plugins, this.addonList, this.state, {\n folder: this.addonFolder,\n onChange: this.togglePlugin.bind(this),\n reload: this.reloadPlugin.bind(this),\n refreshList: this.updatePluginList.bind(this),\n saveAddon: this.saveAddon.bind(this),\n editAddon: this.editAddon.bind(this),\n deleteAddon: this.deleteAddon.bind(this),\n prefix: this.prefix\n })\n });\n return errors;\n }\n /* Aliases */\n\n\n updatePluginList() {\n return this.updateList();\n }\n\n loadAllPlugins() {\n return this.loadAllAddons();\n }\n\n enablePlugin(idOrAddon) {\n return this.enableAddon(idOrAddon);\n }\n\n disablePlugin(idOrAddon) {\n return this.disableAddon(idOrAddon);\n }\n\n togglePlugin(id) {\n return this.toggleAddon(id);\n }\n\n unloadPlugin(idOrFileOrAddon) {\n return this.unloadAddon(idOrFileOrAddon);\n }\n\n loadPlugin(filename) {\n const error = this.loadAddon(filename);\n if (error) _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showAddonErrors({\n themes: [error]\n });\n }\n\n reloadPlugin(idOrFileOrAddon) {\n const error = this.reloadAddon(idOrFileOrAddon);\n if (error) _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showAddonErrors({\n plugins: [error]\n });\n return typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n }\n /* Overrides */\n\n\n initializeAddon(addon) {\n if (!addon.type) return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, \"Plugin had no exports\", {\n message: \"Plugin had no exports or no name property.\",\n stack: \"\"\n });\n\n try {\n const thePlugin = new addon.type();\n addon.plugin = thePlugin;\n addon.name = thePlugin.getName() || addon.name;\n addon.author = thePlugin.getAuthor() || addon.author || \"No author\";\n addon.description = thePlugin.getDescription() || addon.description || \"No description\";\n addon.version = thePlugin.getVersion() || addon.version || \"No version\";\n\n try {\n if (typeof addon.plugin.load == \"function\") addon.plugin.load();\n } catch (error) {\n this.state[addon.id] = false;\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, \"load() could not be fired.\", {\n message: error.message,\n stack: error.stack\n });\n }\n } catch (error) {\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, \"Could not be constructed.\", {\n message: error.message,\n stack: error.stack\n });\n }\n }\n\n getFileModification(module, fileContent, meta) {\n module._compile(fileContent, module.filename);\n\n const didExport = !_utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].isEmpty(module.exports);\n\n if (didExport) {\n meta.type = module.exports;\n module.exports = meta;\n return \"\";\n }\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].warn(this.name, `${meta.name}, please start assigning module.exports`);\n fileContent += `\\nmodule.exports = ${JSON.stringify(meta)};\\nmodule.exports.type = ${meta.exports || meta.name};`;\n return fileContent;\n }\n\n startAddon(id) {\n return this.startPlugin(id);\n }\n\n stopAddon(id) {\n return this.stopPlugin(id);\n }\n\n getAddon(id) {\n return this.getPlugin(id);\n }\n\n startPlugin(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n const plugin = addon.plugin;\n\n try {\n plugin.start();\n } catch (err) {\n this.state[addon.id] = false;\n _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].error(_strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.couldNotStart.format({\n name: addon.name,\n version: addon.version\n }));\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(this.name, addon.name + \" could not be started.\", err);\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, _strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.enabled.format({\n method: \"start()\"\n }), {\n message: err.message,\n stack: err.stack\n });\n }\n\n this.emit(\"started\", addon.id);\n _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].show(_strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.enabled.format({\n name: addon.name,\n version: addon.version\n }));\n }\n\n stopPlugin(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n const plugin = addon.plugin;\n\n try {\n plugin.stop();\n } catch (err) {\n this.state[addon.id] = false;\n _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].error(_strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.couldNotStop.format({\n name: addon.name,\n version: addon.version\n }));\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(this.name, addon.name + \" could not be stopped.\", err);\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, _strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.enabled.format({\n method: \"stop()\"\n }), {\n message: err.message,\n stack: err.stack\n });\n }\n\n this.emit(\"stopped\", addon.id);\n _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].show(_strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.disabled.format({\n name: addon.name,\n version: addon.version\n }));\n }\n\n getPlugin(idOrFile) {\n const addon = this.addonList.find(c => c.id == idOrFile || c.filename == idOrFile);\n if (!addon) return;\n return addon.plugin;\n }\n\n setupFunctions() {\n electronRemote.getCurrentWebContents().on(\"did-navigate-in-page\", this.onSwitch.bind(this));\n this.observer.observe(document, {\n childList: true,\n subtree: true\n });\n }\n\n onSwitch() {\n this.emit(\"page-switch\");\n\n for (let i = 0; i < this.addonList.length; i++) {\n const plugin = this.addonList[i].plugin;\n if (!this.state[this.addonList[i].id]) continue;\n\n if (typeof plugin.onSwitch === \"function\") {\n try {\n plugin.onSwitch();\n } catch (err) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(this.name, \"Unable to fire onSwitch for \" + this.addonList[i].name + \".\", err);\n }\n }\n }\n }\n\n onMutation(mutation) {\n for (let i = 0; i < this.addonList.length; i++) {\n const plugin = this.addonList[i].plugin;\n if (!this.state[this.addonList[i].id]) continue;\n\n if (typeof plugin.observer === \"function\") {\n try {\n plugin.observer(mutation);\n } catch (err) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(this.name, \"Unable to fire observer for \" + this.addonList[i].name + \".\", err);\n }\n }\n }\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9wbHVnaW5tYW5hZ2VyLmpzP2QxNzMiXSwibmFtZXMiOlsicGF0aCIsInJlcXVpcmUiLCJlbGVjdHJvblJlbW90ZSIsInJlbW90ZSIsIlBsdWdpbk1hbmFnZXIiLCJBZGRvbk1hbmFnZXIiLCJuYW1lIiwibW9kdWxlRXh0ZW5zaW9uIiwiZXh0ZW5zaW9uIiwiYWRkb25Gb2xkZXIiLCJyZXNvbHZlIiwiQ29uZmlnIiwiZGF0YVBhdGgiLCJwcmVmaXgiLCJsYW5ndWFnZSIsImNvbnN0cnVjdG9yIiwib25Td2l0Y2giLCJiaW5kIiwib2JzZXJ2ZXIiLCJNdXRhdGlvbk9ic2VydmVyIiwibXV0YXRpb25zIiwiaSIsIm1sZW4iLCJsZW5ndGgiLCJvbk11dGF0aW9uIiwiaW5pdGlhbGl6ZSIsImVycm9ycyIsInNldHVwRnVuY3Rpb25zIiwiU2V0dGluZ3MiLCJyZWdpc3RlclBhbmVsIiwiU3RyaW5ncyIsIlBhbmVscyIsInBsdWdpbnMiLCJlbGVtZW50IiwiU2V0dGluZ3NSZW5kZXJlciIsImdldEFkZG9uUGFuZWwiLCJhZGRvbkxpc3QiLCJzdGF0ZSIsImZvbGRlciIsIm9uQ2hhbmdlIiwidG9nZ2xlUGx1Z2luIiwicmVsb2FkIiwicmVsb2FkUGx1Z2luIiwicmVmcmVzaExpc3QiLCJ1cGRhdGVQbHVnaW5MaXN0Iiwic2F2ZUFkZG9uIiwiZWRpdEFkZG9uIiwiZGVsZXRlQWRkb24iLCJ1cGRhdGVMaXN0IiwibG9hZEFsbFBsdWdpbnMiLCJsb2FkQWxsQWRkb25zIiwiZW5hYmxlUGx1Z2luIiwiaWRPckFkZG9uIiwiZW5hYmxlQWRkb24iLCJkaXNhYmxlUGx1Z2luIiwiZGlzYWJsZUFkZG9uIiwiaWQiLCJ0b2dnbGVBZGRvbiIsInVubG9hZFBsdWdpbiIsImlkT3JGaWxlT3JBZGRvbiIsInVubG9hZEFkZG9uIiwibG9hZFBsdWdpbiIsImZpbGVuYW1lIiwiZXJyb3IiLCJsb2FkQWRkb24iLCJNb2RhbHMiLCJzaG93QWRkb25FcnJvcnMiLCJ0aGVtZXMiLCJyZWxvYWRBZGRvbiIsImZpbmQiLCJjIiwiaW5pdGlhbGl6ZUFkZG9uIiwiYWRkb24iLCJ0eXBlIiwiQWRkb25FcnJvciIsIm1lc3NhZ2UiLCJzdGFjayIsInRoZVBsdWdpbiIsInBsdWdpbiIsImdldE5hbWUiLCJhdXRob3IiLCJnZXRBdXRob3IiLCJkZXNjcmlwdGlvbiIsImdldERlc2NyaXB0aW9uIiwidmVyc2lvbiIsImdldFZlcnNpb24iLCJsb2FkIiwiZ2V0RmlsZU1vZGlmaWNhdGlvbiIsIm1vZHVsZSIsImZpbGVDb250ZW50IiwibWV0YSIsIl9jb21waWxlIiwiZGlkRXhwb3J0IiwiVXRpbGl0aWVzIiwiaXNFbXB0eSIsImV4cG9ydHMiLCJMb2dnZXIiLCJ3YXJuIiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YXJ0QWRkb24iLCJzdGFydFBsdWdpbiIsInN0b3BBZGRvbiIsInN0b3BQbHVnaW4iLCJnZXRBZGRvbiIsImdldFBsdWdpbiIsInAiLCJzdGFydCIsImVyciIsIlRvYXN0cyIsIkFkZG9ucyIsImNvdWxkTm90U3RhcnQiLCJmb3JtYXQiLCJzdGFja3RyYWNlIiwiZW5hYmxlZCIsIm1ldGhvZCIsImVtaXQiLCJzaG93Iiwic3RvcCIsImNvdWxkTm90U3RvcCIsImRpc2FibGVkIiwiaWRPckZpbGUiLCJnZXRDdXJyZW50V2ViQ29udGVudHMiLCJvbiIsIm9ic2VydmUiLCJkb2N1bWVudCIsImNoaWxkTGlzdCIsInN1YnRyZWUiLCJtdXRhdGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOztBQUVBLE1BQU1BLElBQUksR0FBR0MsbUJBQU8sQ0FBQyxrQkFBRCxDQUFwQjs7QUFDQSxNQUFNQyxjQUFjLEdBQUdELG1CQUFPLENBQUMsMEJBQUQsQ0FBUCxDQUFvQkUsTUFBM0M7O0FBRWUs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SSxPQUFPc0IsTUFBTSxDQUFDOUQsUUFBZCxLQUE0QixVQUFoQyxFQUE0QztBQUN4QyxZQUFJO0FBQUU4RCxnQkFBTSxDQUFDOUQsUUFBUDtBQUFvQixTQUExQixDQUNBLE9BQU80RixHQUFQLEVBQVk7QUFBRVoseURBQU0sQ0FBQ2lCLFVBQVAsQ0FBa0IsS0FBSzNHLElBQXZCLEVBQTZCLGlDQUFpQyxLQUFLOEIsU0FBTCxDQUFlZixDQUFmLEVBQWtCZixJQUFuRCxHQUEwRCxHQUF2RixFQUE0RnNHLEdBQTVGO0FBQW1HO0FBQ3BIO0FBQ0o7QUFDSjs7QUFFRHBGLFlBQVUsQ0FBQ3dHLFFBQUQsRUFBVztBQUNqQixTQUFLLElBQUkzRyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHLEtBQUtlLFNBQUwsQ0FBZWIsTUFBbkMsRUFBMkNGLENBQUMsRUFBNUMsRUFBZ0Q7QUFDNUMsWUFBTXlELE1BQU0sR0FBRyxLQUFLMUMsU0FBTCxDQUFlZixDQUFmLEVBQWtCeUQsTUFBakM7QUFDQSxVQUFJLENBQUMsS0FBS3pDLEtBQUwsQ0FBVyxLQUFLRCxTQUFMLENBQWVmLENBQWYsRUFBa0JtQyxFQUE3QixDQUFMLEVBQXVDOztBQUN2QyxVQUFJLE9BQU9zQixNQUFNLENBQUM1RCxRQUFkLEtBQTJCLFVBQS9CLEVBQTJDO0FBQ3ZDLFlBQUk7QUFBRTRELGdCQUFNLENBQUM1RCxRQUFQLENBQWdCOEcsUUFBaEI7QUFBNEIsU0FBbEMsQ0FDQSxPQUFPcEIsR0FBUCxFQUFZO0FBQUVaLHlEQUFNLENBQUNpQixVQUFQLENBQWtCLEtBQUszRyxJQUF2QixFQUE2QixpQ0FBaUMsS0FBSzhCLFNBQUwsQ0FBZWYsQ0FBZixFQUFrQmYsSUFBbkQsR0FBMEQsR0FBdkYsRUFBNEZzRyxHQUE1RjtBQUFtRztBQUNwSDtBQUNKO0FBQ0o7O0FBbEt1RCxDQUE3QyxFQUFmIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvcGx1Z2lubWFuYWdlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuL2xvZ2dlclwiO1xyXG5pbXBvcnQgQWRkb25NYW5hZ2VyIGZyb20gXCIuL2FkZG9ubWFuYWdlclwiO1xyXG5pbXBvcnQgVXRpbGl0aWVzIGZyb20gXCIuL3V0aWxpdGllc1wiO1xyXG5pbXBvcnQgQWRkb25FcnJvciBmcm9tIFwiLi4vc3RydWN0cy9hZGRvbmVycm9yXCI7XHJcbmltcG9ydCBTZXR0aW5ncyBmcm9tIFwiLi9zZXR0aW5nc21hbmFnZXJcIjtcclxuaW1wb3J0IFN0cmluZ3MgZnJvbSBcIi4vc3RyaW5nc1wiO1xyXG5cclxuaW1wb3J0IFRvYXN0cyBmcm9tIFwiLi4vdWkvdG9hc3RzXCI7XHJcbmltcG9ydCBNb2RhbHMgZnJvbSBcIi4uL3VpL21vZGFsc1wiO1xyXG5pbXBvcnQgU2V0dGluZ3NSZW5kZXJlciBmcm9tIFwiLi4vdWkvc2V0dGluZ3NcIjtcclxuXHJcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcclxuY29uc3QgZWxlY3Ryb25SZW1vdGUgPSByZXF1aXJlKFwiZWxlY3Ryb25cIikucmVtb3RlO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIFBsdWdpbk1hbmFnZXIgZXh0ZW5kcyBBZGRvbk1hbmFnZXIge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiUGx1Z2luTWFuYWdlclwiO31cclxuICAgIGdldCBtb2R1bGVFeHRlbnNpb24oKSB7cmV0dXJuIFwiLmpzXCI7fVxyXG4gICAgZ2V0IGV4dGVuc2lvbigpIHtyZXR1cm4gXCIucGx1Z2luLmpzXCI7fVxyXG4gICAgZ2V0IGFkZG9uRm9sZGVyKCkge3JldHVybiBwYXRoLnJlc29sdmUoQ29uZmlnLmRhdGFQYXRoLCBcInBsdWdpbnNcIik7fVxyXG4gICAgZ2V0IHByZWZpeCgpIHtyZXR1cm4gXCJwbHVnaW5cIjt9XHJcbiAgICBnZXQgbGFuZ3VhZ2UoKSB7cmV0dXJuIFwiamF2YXNjcmlwdFwiO31cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMub25Td2l0Y2ggPSB0aGlzLm9uU3dpdGNoLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5vYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnMpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIG1sZW4gPSBtdXRhdGlvbnMubGVuZ3RoOyBpIDwgbWxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uTXV0YXRpb24obXV0YXRpb25zW2ldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXRpYWxpemUoKSB7XHJcbiAgICAgICAgY29uc3QgZXJyb3JzID0gc3VwZXIuaW5pdGlhbGl6ZSgpO1xyXG4gICAgICAgIHRoaXMuc2V0dXBGdW5jdGlvbnMoKTtcclxuICAgICAgICBTZXR0aW5ncy5yZWdpc3RlclBhbmVsKFwicGx1Z2luc1wiLCBTdHJpbmdzLlBhbmVscy5wbHVnaW5zLCB7ZWxlbWVudDogKCkgPT4gU2V0dGluZ3NSZW5kZXJlci5nZXRBZGRvblBhbmVsKFN0cmluZ3MuUGFuZWxzLnBsdWdpbnMsIHRoaXMuYWRkb25MaXN0LCB0aGlzLnN0YXRlLCB7XHJcbiAgICAgICAgICAgIGZvbGRlcjogdGhpcy5hZGRvbkZvbGRlcixcclxuICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMudG9nZ2xlUGx1Z2luLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIHJlbG9hZDogdGhpcy5yZWxvYWRQbHVnaW4uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgcmVmcmVzaExpc3Q6IHRoaXMudXBkYXRlUGx1Z2luTGlzdC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBzYXZlQWRkb246IHRoaXMuc2F2ZUFkZG9uLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIGVkaXRBZGRvbjogdGhpcy5lZGl0QWRkb24uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgZGVsZXRlQWRkb246IHRoaXMuZGVsZXRlQWRkb24uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgcHJlZml4OiB0aGlzLnByZWZpeFxyXG4gICAgICAgIH0pfSk7XHJcbiAgICAgICAgcmV0dXJuIGVycm9ycztcclxuICAgIH1cclxuXHJcbiAgICAvKiBBbGlhc2VzICovXHJcbiAgICB1cGRhdGVQbHVnaW5MaXN0KCkge3JldHVybiB0aGlzLnVwZGF0ZUxpc3QoKTt9XHJcbiAgICBsb2FkQWxsUGx1Z2lucygpIHtyZXR1cm4gdGhpcy5sb2FkQWxsQWRkb25zKCk7fVxyXG5cclxuICAgIGVuYWJsZVBsdWdpbihpZE9yQWRkb24pIHtyZXR1cm4gdGhpcy5lbmFibGVBZGRvbihpZE9yQWRkb24pO31cclxuICAgIGRpc2FibGVQbHVnaW4oaWRPckFkZG9uKSB7cmV0dXJuIHRoaXMuZGlzYWJsZUFkZG9uKGlkT3JBZGRvbik7fVxyXG4gICAgdG9nZ2xlUGx1Z2luKGlkKSB7cmV0dXJuIHRoaXMudG9nZ2xlQWRkb24oaWQpO31cclxuXHJcbiAgICB1bmxvYWRQbHVnaW4oaWRPckZpbGVPckFkZG9uKSB7cmV0dXJuIHRoaXMudW5sb2FkQWRkb24oaWRPckZpbGVPckFkZG9uKTt9XHJcblxyXG4gICAgbG9hZFBsdWdpbihmaWxlbmFtZSkge1xyXG4gICAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5sb2FkQWRkb24oZmlsZW5hbWUpO1xyXG4gICAgICAgIGlmIChlcnJvcikgTW9kYWxzLnNob3dBZGRvbkVycm9ycyh7dGhlbWVzOiBbZXJyb3JdfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVsb2FkUGx1Z2luKGlkT3JGaWxlT3JBZGRvbikge1xyXG4gICAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5yZWxvYWRBZGRvbihpZE9yRmlsZU9yQWRkb24pO1xyXG4gICAgICAgIGlmIChlcnJvcikgTW9kYWxzLnNob3dBZGRvbkVycm9ycyh7cGx1Z2luczogW2Vycm9yXX0pO1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YoaWRPckZpbGVPckFkZG9uKSA9PSBcInN0cmluZ1wiID8gdGhpcy5hZGRvbkxpc3QuZmluZChjID0+IGMuaWQgPT0gaWRPckZpbGVPckFkZG9uIHx8IGMuZmlsZW5hbWUgPT0gaWRPckZpbGVPckFkZG9uKSA6IGlkT3JGaWxlT3JBZGRvbjtcclxuICAgIH1cclxuXHJcbiAgICAvKiBPdmVycmlkZXMgKi9cclxuICAgIGluaXRpYWxpemVBZGRvbihhZGRvbikge1xyXG4gICAgICAgIGlmICghYWRkb24udHlwZSkgcmV0dXJuIG5ldyBBZGRvbkVycm9yKGFkZG9uLm5hbWUsIGFkZG9uLmZpbGVuYW1lLCBcIlBsdWdpbiBoYWQgbm8gZXhwb3J0c1wiLCB7bWVzc2FnZTogXCJQbHVnaW4gaGFkIG5vIGV4cG9ydHMgb3Igbm8gbmFtZSBwcm9wZXJ0eS5cIiwgc3RhY2s6IFwiXCJ9KTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCB0aGVQbHVnaW4gPSBuZXcgYWRkb24udHlwZSgpO1xyXG4gICAgICAgICAgICBhZGRvbi5wbHVnaW4gPSB0aGVQbHVnaW47XHJcbiAgICAgICAgICAgIGFkZG9uLm5hbWUgPSB0aGVQbHVnaW4uZ2V0TmFtZSgpIHx8IGFkZG9uLm5hbWU7XHJcbiAgICAgICAgICAgIGFkZG9uLmF1dGhvciA9IHRoZVBsdWdpbi5nZXRBdXRob3IoKSB8fCBhZGRvbi5hdXRob3IgfHwgXCJObyBhdXRob3JcIjtcclxuICAgICAgICAgICAgYWRkb24uZGVzY3JpcHRpb24gPSB0aGVQbHVnaW4uZ2V0RGVzY3JpcHRpb24oKSB8fCBhZGRvbi5kZXNjcmlwdGlvbiB8fCBcIk5vIGRlc2NyaXB0aW9uXCI7XHJcbiAgICAgICAgICAgIGFkZG9uLnZlcnNpb24gPSB0aGVQbHVnaW4uZ2V0VmVyc2lvbigpIHx8IGFkZG9uLnZlcnNpb24gfHwgXCJObyB2ZXJzaW9uXCI7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mKGFkZG9uLnBsdWdpbi5sb2FkKSA9PSBcImZ1bmN0aW9uXCIpIGFkZG9uLnBsdWdpbi5sb2FkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlW2FkZG9uLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBZGRvbkVycm9yKGFkZG9uLm5hbWUsIGFkZG9uLmZpbGVuYW1lLCBcImxvYWQoKSBjb3VsZCBub3QgYmUgZmlyZWQuXCIsIHttZXNzYWdlOiBlcnJvci5tZXNzYWdlLCBzdGFjazogZXJyb3Iuc3RhY2t9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtyZXR1cm4gbmV3IEFkZG9uRXJyb3IoYWRkb24ubmFtZSwgYWRkb24uZmlsZW5hbWUsIFwiQ291bGQgbm90IGJlIGNvbnN0cnVjdGVkLlwiLCB7bWVzc2FnZTogZXJyb3IubWVzc2FnZSwgc3RhY2s6IGVycm9yLnN0YWNrfSk7fVxyXG4gICAgfVxyXG5cclxuICAgIGdldEZpbGVNb2RpZmljYXRpb24obW9kdWxlLCBmaWxlQ29udGVudCwgbWV0YSkge1xyXG4gICAgICAgIG1vZHVsZS5fY29tcGlsZShmaWxlQ29udGVudCwgbW9kdWxlLmZpbGVuYW1lKTtcclxuICAgICAgICBjb25zdCBkaWRFeHBvcnQgPSAhVXRpbGl0aWVzLmlzRW1wdHkobW9kdWxlLmV4cG9ydHMpO1xyXG4gICAgICAgIGlmIChkaWRFeHBvcnQpIHtcclxuICAgICAgICAgICAgbWV0YS50eXBlID0gbW9kdWxlLmV4cG9ydHM7XHJcbiAgICAgICAgICAgIG1vZHVsZS5leHBvcnRzID0gbWV0YTtcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIExvZ2dlci53YXJuKHRoaXMubmFtZSwgYCR7bWV0YS5uYW1lfSwgcGxlYXNlIHN0YXJ0IGFzc2lnbmluZyBtb2R1bGUuZXhwb3J0c2ApO1xyXG4gICAgICAgIGZpbGVDb250ZW50ICs9IGBcXG5tb2R1bGUuZXhwb3J0cyA9ICR7SlNPTi5zdHJpbmdpZnkobWV0YSl9O1xcbm1vZHVsZS5leHBvcnRzLnR5cGUgPSAke21ldGEuZXhwb3J0cyB8fCBtZXRhLm5hbWV9O2A7XHJcbiAgICAgICAgcmV0dXJuIGZpbGVDb250ZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0QWRkb24oaWQpIHtyZXR1cm4gdGhpcy5zdGFydFBsdWdpbihpZCk7fVxyXG4gICAgc3RvcEFkZG9uKGlkKSB7cmV0dXJuIHRoaXMuc3RvcFBsdWdpbihpZCk7fVxyXG4gICAgZ2V0QWRkb24oaWQpIHtyZXR1cm4gdGhpcy5nZXRQbHVnaW4oaWQpO31cclxuXHJcbiAgICBzdGFydFBsdWdpbihpZE9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKHAgPT4gcC5pZCA9PSBpZE9yQWRkb24pIDogaWRPckFkZG9uO1xyXG4gICAgICAgIGlmICghYWRkb24pIHJldHVybjtcclxuICAgICAgICBjb25zdCBwbHVnaW4gPSBhZGRvbi5wbHVnaW47XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcGx1Z2luLnN0YXJ0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZVthZGRvbi5pZF0gPSBmYWxzZTtcclxuICAgICAgICAgICAgVG9hc3RzLmVycm9yKFN0cmluZ3MuQWRkb25zLmNvdWxkTm90U3RhcnQuZm9ybWF0KHtuYW1lOiBhZGRvbi5uYW1lLCB2ZXJzaW9uOiBhZGRvbi52ZXJzaW9ufSkpO1xyXG4gICAgICAgICAgICBMb2dnZXIuc3RhY2t0cmFjZSh0aGlzLm5hbWUsIGFkZG9uLm5hbWUgKyBcIiBjb3VsZCBub3QgYmUgc3RhcnRlZC5cIiwgZXJyKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBBZGRvbkVycm9yKGFkZG9uLm5hbWUsIGFkZG9uLmZpbGVuYW1lLCBTdHJpbmdzLkFkZG9ucy5lbmFibGVkLmZvcm1hdCh7bWV0aG9kOiBcInN0YXJ0KClcIn0pLCB7bWVzc2FnZTogZXJyLm1lc3NhZ2UsIHN0YWNrOiBlcnIuc3RhY2t9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbWl0KFwic3RhcnRlZFwiLCBhZGRvbi5pZCk7XHJcbiAgICAgICAgVG9hc3RzLnNob3coU3RyaW5ncy5BZGRvbnMuZW5hYmxlZC5mb3JtYXQoe25hbWU6IGFkZG9uLm5hbWUsIHZlcnNpb246IGFkZG9uLnZlcnNpb259KSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RvcFBsdWdpbihpZE9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKHAgPT4gcC5pZCA9PSBpZE9yQWRkb24pIDogaWRPckFkZG9uO1xyXG4gICAgICAgIGlmICghYWRkb24pIHJldHVybjtcclxuICAgICAgICBjb25zdCBwbHVnaW4gPSBhZGRvbi5wbHVnaW47XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcGx1Z2luLnN0b3AoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRlW2FkZG9uLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBUb2FzdHMuZXJyb3IoU3RyaW5ncy5BZGRvbnMuY291bGROb3RTdG9wLmZvcm1hdCh7bmFtZTogYWRkb24ubmFtZSwgdmVyc2lvbjogYWRkb24udmVyc2lvbn0pKTtcclxuICAgICAgICAgICAgTG9nZ2VyLnN0YWNrdHJhY2UodGhpcy5uYW1lLCBhZGRvbi5uYW1lICsgXCIgY291bGQgbm90IGJlIHN0b3BwZWQuXCIsIGVycik7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgQWRkb25FcnJvcihhZGRvbi5uYW1lLCBhZGRvbi5maWxlbmFtZSwgU3RyaW5ncy5BZGRvbnMuZW5hYmxlZC5mb3JtYXQoe21ldGhvZDogXCJzdG9wKClcIn0pLCB7bWVzc2FnZTogZXJyLm1lc3NhZ2UsIHN0YWNrOiBlcnIuc3RhY2t9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbWl0KFwic3RvcHBlZFwiLCBhZGRvbi5pZCk7XHJcbiAgICAgICAgVG9hc3RzLnNob3coU3RyaW5ncy5BZGRvbnMuZGlzYWJsZWQuZm9ybWF0KHtuYW1lOiBhZGRvbi5uYW1lLCB2ZXJzaW9uOiBhZGRvbi52ZXJzaW9ufSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBsdWdpbihpZE9yRmlsZSkge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdGhpcy5hZGRvbkxpc3QuZmluZChjID0+IGMuaWQgPT0gaWRPckZpbGUgfHwgYy5maWxlbmFtZSA9PSBpZE9yRmlsZSk7XHJcbiAgICAgICAgaWYgKCFhZGRvbikgcmV0dXJuO1xyXG4gICAgICAgIHJldHVybiBhZGRvbi5wbHVnaW47XHJcbiAgICB9XHJcblxyXG4gICAgc2V0dXBGdW5jdGlvbnMoKSB7XHJcbiAgICAgICAgZWxlY3Ryb25SZW1vdGUuZ2V0Q3VycmVudFdlYkNvbnRlbnRzKCkub24oXCJkaWQtbmF2aWdhdGUtaW4tcGFnZVwiLCB0aGlzLm9uU3dpdGNoLmJpbmQodGhpcykpO1xyXG4gICAgICAgIHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudCwge1xyXG4gICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXHJcbiAgICAgICAgICAgIHN1YnRyZWU6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvblN3aXRjaCgpIHtcclxuICAgICAgICB0aGlzLmVtaXQoXCJwYWdlLXN3aXRjaFwiKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYWRkb25MaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBsdWdpbiA9IHRoaXMuYWRkb25MaXN0W2ldLnBsdWdpbjtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnN0YXRlW3RoaXMuYWRkb25MaXN0W2ldLmlkXSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YocGx1Z2luLm9uU3dpdGNoKSA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkgeyBwbHVnaW4ub25Td2l0Y2goKTsgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikgeyBMb2dnZXIuc3RhY2t0cmFjZSh0aGlzLm5hbWUsIFwiVW5hYmxlIHRvIGZpcmUgb25Td2l0Y2ggZm9yIFwiICsgdGhpcy5hZGRvbkxpc3RbaV0ubmFtZSArIFwiLlwiLCBlcnIpOyB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25NdXRhdGlvbihtdXRhdGlvbikge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hZGRvbkxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgcGx1Z2luID0gdGhpcy5hZGRvbkxpc3RbaV0ucGx1Z2luO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc3RhdGVbdGhpcy5hZGRvbkxpc3RbaV0uaWRdKSBjb250aW51ZTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBwbHVnaW4ub2JzZXJ2ZXIgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHsgcGx1Z2luLm9ic2VydmVyKG11dGF0aW9uKTsgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikgeyBMb2dnZXIuc3RhY2t0cmFjZSh0aGlzLm5hbWUsIFwiVW5hYmxlIHRvIGZpcmUgb2JzZXJ2ZXIgZm9yIFwiICsgdGhpcy5hZGRvbkxpc3RbaV0ubmFtZSArIFwiLlwiLCBlcnIpOyB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/pluginmanager.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _data_data_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../data/data.js */ \"./src/data/data.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _addonmanager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./addonmanager */ \"./src/modules/addonmanager.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../structs/addonerror */ \"./src/structs/addonerror.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _ui_settings__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../ui/settings */ \"./src/ui/settings.js\");\n\n\n\n\n\n\n\n\n\n\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\nconst electronRemote = __webpack_require__(/*! electron */ \"electron\").remote;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class PluginManager extends _addonmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"] {\n get name() {\n return \"PluginManager\";\n }\n\n get moduleExtension() {\n return \".js\";\n }\n\n get extension() {\n return \".plugin.js\";\n }\n\n get addonFolder() {\n return path.resolve(_data_data_js__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"plugins\");\n }\n\n get prefix() {\n return \"plugin\";\n }\n\n get language() {\n return \"javascript\";\n }\n\n constructor() {\n super();\n this.onSwitch = this.onSwitch.bind(this);\n this.observer = new MutationObserver(mutations => {\n for (let i = 0, mlen = mutations.length; i < mlen; i++) {\n this.onMutation(mutations[i]);\n }\n });\n }\n\n initialize() {\n const errors = super.initialize();\n this.setupFunctions();\n _settingsmanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].registerPanel(\"plugins\", _strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Panels.plugins, {\n element: () => _ui_settings__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getAddonPanel(_strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Panels.plugins, this.addonList, this.state, {\n folder: this.addonFolder,\n onChange: this.togglePlugin.bind(this),\n reload: this.reloadPlugin.bind(this),\n refreshList: this.updatePluginList.bind(this),\n saveAddon: this.saveAddon.bind(this),\n editAddon: this.editAddon.bind(this),\n deleteAddon: this.deleteAddon.bind(this),\n prefix: this.prefix\n })\n });\n return errors;\n }\n /* Aliases */\n\n\n updatePluginList() {\n return this.updateList();\n }\n\n loadAllPlugins() {\n return this.loadAllAddons();\n }\n\n enablePlugin(idOrAddon) {\n return this.enableAddon(idOrAddon);\n }\n\n disablePlugin(idOrAddon) {\n return this.disableAddon(idOrAddon);\n }\n\n togglePlugin(id) {\n return this.toggleAddon(id);\n }\n\n unloadPlugin(idOrFileOrAddon) {\n return this.unloadAddon(idOrFileOrAddon);\n }\n\n loadPlugin(filename) {\n const error = this.loadAddon(filename);\n if (error) _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showAddonErrors({\n themes: [error]\n });\n }\n\n reloadPlugin(idOrFileOrAddon) {\n const error = this.reloadAddon(idOrFileOrAddon);\n if (error) _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showAddonErrors({\n plugins: [error]\n });\n return typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n }\n /* Overrides */\n\n\n initializeAddon(addon) {\n if (!addon.type) return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, \"Plugin had no exports\", {\n message: \"Plugin had no exports or no name property.\",\n stack: \"\"\n });\n\n try {\n const thePlugin = new addon.type();\n addon.plugin = thePlugin;\n addon.name = thePlugin.getName() || addon.name;\n addon.author = thePlugin.getAuthor() || addon.author || \"No author\";\n addon.description = thePlugin.getDescription() || addon.description || \"No description\";\n addon.version = thePlugin.getVersion() || addon.version || \"No version\";\n\n try {\n if (typeof addon.plugin.load == \"function\") addon.plugin.load();\n } catch (error) {\n this.state[addon.id] = false;\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, \"load() could not be fired.\", {\n message: error.message,\n stack: error.stack\n });\n }\n } catch (error) {\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, \"Could not be constructed.\", {\n message: error.message,\n stack: error.stack\n });\n }\n }\n\n getFileModification(module, fileContent, meta) {\n module._compile(fileContent, module.filename);\n\n const didExport = !_utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].isEmpty(module.exports);\n\n if (didExport) {\n meta.type = module.exports;\n module.exports = meta;\n return \"\";\n }\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].warn(this.name, `${meta.name}, please start assigning module.exports`);\n fileContent += `\\nmodule.exports = ${JSON.stringify(meta)};\\nmodule.exports.type = ${meta.exports || meta.name};`;\n return fileContent;\n }\n\n startAddon(id) {\n return this.startPlugin(id);\n }\n\n stopAddon(id) {\n return this.stopPlugin(id);\n }\n\n getAddon(id) {\n return this.getPlugin(id);\n }\n\n startPlugin(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n const plugin = addon.plugin;\n\n try {\n plugin.start();\n } catch (err) {\n this.state[addon.id] = false;\n _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].error(_strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.couldNotStart.format({\n name: addon.name,\n version: addon.version\n }));\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(this.name, addon.name + \" could not be started.\", err);\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, _strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.enabled.format({\n method: \"start()\"\n }), {\n message: err.message,\n stack: err.stack\n });\n }\n\n this.emit(\"started\", addon.id);\n _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].show(_strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.enabled.format({\n name: addon.name,\n version: addon.version\n }));\n }\n\n stopPlugin(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n const plugin = addon.plugin;\n\n try {\n plugin.stop();\n } catch (err) {\n this.state[addon.id] = false;\n _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].error(_strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.couldNotStop.format({\n name: addon.name,\n version: addon.version\n }));\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(this.name, addon.name + \" could not be stopped.\", err);\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, _strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.enabled.format({\n method: \"stop()\"\n }), {\n message: err.message,\n stack: err.stack\n });\n }\n\n this.emit(\"stopped\", addon.id);\n _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].show(_strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.disabled.format({\n name: addon.name,\n version: addon.version\n }));\n }\n\n getPlugin(idOrFile) {\n const addon = this.addonList.find(c => c.id == idOrFile || c.filename == idOrFile);\n if (!addon) return;\n return addon.plugin;\n }\n\n setupFunctions() {\n electronRemote.getCurrentWebContents().on(\"did-navigate-in-page\", this.onSwitch.bind(this));\n this.observer.observe(document, {\n childList: true,\n subtree: true\n });\n }\n\n onSwitch() {\n this.emit(\"page-switch\");\n\n for (let i = 0; i < this.addonList.length; i++) {\n const plugin = this.addonList[i].plugin;\n if (!this.state[this.addonList[i].id]) continue;\n\n if (typeof plugin.onSwitch === \"function\") {\n try {\n plugin.onSwitch();\n } catch (err) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(this.name, \"Unable to fire onSwitch for \" + this.addonList[i].name + \".\", err);\n }\n }\n }\n }\n\n onMutation(mutation) {\n for (let i = 0; i < this.addonList.length; i++) {\n const plugin = this.addonList[i].plugin;\n if (!this.state[this.addonList[i].id]) continue;\n\n if (typeof plugin.observer === \"function\") {\n try {\n plugin.observer(mutation);\n } catch (err) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(this.name, \"Unable to fire observer for \" + this.addonList[i].name + \".\", err);\n }\n }\n }\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9wbHVnaW5tYW5hZ2VyLmpzP2QxNzMiXSwibmFtZXMiOlsicGF0aCIsInJlcXVpcmUiLCJlbGVjdHJvblJlbW90ZSIsInJlbW90ZSIsIlBsdWdpbk1hbmFnZXIiLCJBZGRvbk1hbmFnZXIiLCJuYW1lIiwibW9kdWxlRXh0ZW5zaW9uIiwiZXh0ZW5zaW9uIiwiYWRkb25Gb2xkZXIiLCJyZXNvbHZlIiwiQ29uZmlnIiwiZGF0YVBhdGgiLCJwcmVmaXgiLCJsYW5ndWFnZSIsImNvbnN0cnVjdG9yIiwib25Td2l0Y2giLCJiaW5kIiwib2JzZXJ2ZXIiLCJNdXRhdGlvbk9ic2VydmVyIiwibXV0YXRpb25zIiwiaSIsIm1sZW4iLCJsZW5ndGgiLCJvbk11dGF0aW9uIiwiaW5pdGlhbGl6ZSIsImVycm9ycyIsInNldHVwRnVuY3Rpb25zIiwiU2V0dGluZ3MiLCJyZWdpc3RlclBhbmVsIiwiU3RyaW5ncyIsIlBhbmVscyIsInBsdWdpbnMiLCJlbGVtZW50IiwiU2V0dGluZ3NSZW5kZXJlciIsImdldEFkZG9uUGFuZWwiLCJhZGRvbkxpc3QiLCJzdGF0ZSIsImZvbGRlciIsIm9uQ2hhbmdlIiwidG9nZ2xlUGx1Z2luIiwicmVsb2FkIiwicmVsb2FkUGx1Z2luIiwicmVmcmVzaExpc3QiLCJ1cGRhdGVQbHVnaW5MaXN0Iiwic2F2ZUFkZG9uIiwiZWRpdEFkZG9uIiwiZGVsZXRlQWRkb24iLCJ1cGRhdGVMaXN0IiwibG9hZEFsbFBsdWdpbnMiLCJsb2FkQWxsQWRkb25zIiwiZW5hYmxlUGx1Z2luIiwiaWRPckFkZG9uIiwiZW5hYmxlQWRkb24iLCJkaXNhYmxlUGx1Z2luIiwiZGlzYWJsZUFkZG9uIiwiaWQiLCJ0b2dnbGVBZGRvbiIsInVubG9hZFBsdWdpbiIsImlkT3JGaWxlT3JBZGRvbiIsInVubG9hZEFkZG9uIiwibG9hZFBsdWdpbiIsImZpbGVuYW1lIiwiZXJyb3IiLCJsb2FkQWRkb24iLCJNb2RhbHMiLCJzaG93QWRkb25FcnJvcnMiLCJ0aGVtZXMiLCJyZWxvYWRBZGRvbiIsImZpbmQiLCJjIiwiaW5pdGlhbGl6ZUFkZG9uIiwiYWRkb24iLCJ0eXBlIiwiQWRkb25FcnJvciIsIm1lc3NhZ2UiLCJzdGFjayIsInRoZVBsdWdpbiIsInBsdWdpbiIsImdldE5hbWUiLCJhdXRob3IiLCJnZXRBdXRob3IiLCJkZXNjcmlwdGlvbiIsImdldERlc2NyaXB0aW9uIiwidmVyc2lvbiIsImdldFZlcnNpb24iLCJsb2FkIiwiZ2V0RmlsZU1vZGlmaWNhdGlvbiIsIm1vZHVsZSIsImZpbGVDb250ZW50IiwibWV0YSIsIl9jb21waWxlIiwiZGlkRXhwb3J0IiwiVXRpbGl0aWVzIiwiaXNFbXB0eSIsImV4cG9ydHMiLCJMb2dnZXIiLCJ3YXJuIiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YXJ0QWRkb24iLCJzdGFydFBsdWdpbiIsInN0b3BBZGRvbiIsInN0b3BQbHVnaW4iLCJnZXRBZGRvbiIsImdldFBsdWdpbiIsInAiLCJzdGFydCIsImVyciIsIlRvYXN0cyIsIkFkZG9ucyIsImNvdWxkTm90U3RhcnQiLCJmb3JtYXQiLCJzdGFja3RyYWNlIiwiZW5hYmxlZCIsIm1ldGhvZCIsImVtaXQiLCJzaG93Iiwic3RvcCIsImNvdWxkTm90U3RvcCIsImRpc2FibGVkIiwiaWRPckZpbGUiLCJnZXRDdXJyZW50V2ViQ29udGVudHMiLCJvbiIsIm9ic2VydmUiLCJkb2N1bWVudCIsImNoaWxkTGlzdCIsInN1YnRyZWUiLCJtdXRhdGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOztBQUVBLE1BQU1BLElBQUksR0FBR0MsbUJBQU8sQ0FBQyxrQkFBRCxDQUFwQjs7QUFDQSxNQUFNQyxjQUFjLEdBQUdELG1CQUFPLENBQUMsMEJBQUQsQ0FBUCxDQUFvQkUsTUFBM0M7O0FBRWUs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SSxPQUFPc0IsTUFBTSxDQUFDOUQsUUFBZCxLQUE0QixVQUFoQyxFQUE0QztBQUN4QyxZQUFJO0FBQUU4RCxnQkFBTSxDQUFDOUQsUUFBUDtBQUFvQixTQUExQixDQUNBLE9BQU80RixHQUFQLEVBQVk7QUFBRVoseURBQU0sQ0FBQ2lCLFVBQVAsQ0FBa0IsS0FBSzNHLElBQXZCLEVBQTZCLGlDQUFpQyxLQUFLOEIsU0FBTCxDQUFlZixDQUFmLEVBQWtCZixJQUFuRCxHQUEwRCxHQUF2RixFQUE0RnNHLEdBQTVGO0FBQW1HO0FBQ3BIO0FBQ0o7QUFDSjs7QUFFRHBGLFlBQVUsQ0FBQ3dHLFFBQUQsRUFBVztBQUNqQixTQUFLLElBQUkzRyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHLEtBQUtlLFNBQUwsQ0FBZWIsTUFBbkMsRUFBMkNGLENBQUMsRUFBNUMsRUFBZ0Q7QUFDNUMsWUFBTXlELE1BQU0sR0FBRyxLQUFLMUMsU0FBTCxDQUFlZixDQUFmLEVBQWtCeUQsTUFBakM7QUFDQSxVQUFJLENBQUMsS0FBS3pDLEtBQUwsQ0FBVyxLQUFLRCxTQUFMLENBQWVmLENBQWYsRUFBa0JtQyxFQUE3QixDQUFMLEVBQXVDOztBQUN2QyxVQUFJLE9BQU9zQixNQUFNLENBQUM1RCxRQUFkLEtBQTJCLFVBQS9CLEVBQTJDO0FBQ3ZDLFlBQUk7QUFBRTRELGdCQUFNLENBQUM1RCxRQUFQLENBQWdCOEcsUUFBaEI7QUFBNEIsU0FBbEMsQ0FDQSxPQUFPcEIsR0FBUCxFQUFZO0FBQUVaLHlEQUFNLENBQUNpQixVQUFQLENBQWtCLEtBQUszRyxJQUF2QixFQUE2QixpQ0FBaUMsS0FBSzhCLFNBQUwsQ0FBZWYsQ0FBZixFQUFrQmYsSUFBbkQsR0FBMEQsR0FBdkYsRUFBNEZzRyxHQUE1RjtBQUFtRztBQUNwSDtBQUNKO0FBQ0o7O0FBbEt1RCxDQUE3QyxFQUFmIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvcGx1Z2lubWFuYWdlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuL2xvZ2dlclwiO1xyXG5pbXBvcnQgQWRkb25NYW5hZ2VyIGZyb20gXCIuL2FkZG9ubWFuYWdlclwiO1xyXG5pbXBvcnQgVXRpbGl0aWVzIGZyb20gXCIuL3V0aWxpdGllc1wiO1xyXG5pbXBvcnQgQWRkb25FcnJvciBmcm9tIFwiLi4vc3RydWN0cy9hZGRvbmVycm9yXCI7XHJcbmltcG9ydCBTZXR0aW5ncyBmcm9tIFwiLi9zZXR0aW5nc21hbmFnZXJcIjtcclxuaW1wb3J0IFN0cmluZ3MgZnJvbSBcIi4vc3RyaW5nc1wiO1xyXG5cclxuaW1wb3J0IFRvYXN0cyBmcm9tIFwiLi4vdWkvdG9hc3RzXCI7XHJcbmltcG9ydCBNb2RhbHMgZnJvbSBcIi4uL3VpL21vZGFsc1wiO1xyXG5pbXBvcnQgU2V0dGluZ3NSZW5kZXJlciBmcm9tIFwiLi4vdWkvc2V0dGluZ3NcIjtcclxuXHJcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcclxuY29uc3QgZWxlY3Ryb25SZW1vdGUgPSByZXF1aXJlKFwiZWxlY3Ryb25cIikucmVtb3RlO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIFBsdWdpbk1hbmFnZXIgZXh0ZW5kcyBBZGRvbk1hbmFnZXIge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiUGx1Z2luTWFuYWdlclwiO31cclxuICAgIGdldCBtb2R1bGVFeHRlbnNpb24oKSB7cmV0dXJuIFwiLmpzXCI7fVxyXG4gICAgZ2V0IGV4dGVuc2lvbigpIHtyZXR1cm4gXCIucGx1Z2luLmpzXCI7fVxyXG4gICAgZ2V0IGFkZG9uRm9sZGVyKCkge3JldHVybiBwYXRoLnJlc29sdmUoQ29uZmlnLmRhdGFQYXRoLCBcInBsdWdpbnNcIik7fVxyXG4gICAgZ2V0IHByZWZpeCgpIHtyZXR1cm4gXCJwbHVnaW5cIjt9XHJcbiAgICBnZXQgbGFuZ3VhZ2UoKSB7cmV0dXJuIFwiamF2YXNjcmlwdFwiO31cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMub25Td2l0Y2ggPSB0aGlzLm9uU3dpdGNoLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5vYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnMpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIG1sZW4gPSBtdXRhdGlvbnMubGVuZ3RoOyBpIDwgbWxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uTXV0YXRpb24obXV0YXRpb25zW2ldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXRpYWxpemUoKSB7XHJcbiAgICAgICAgY29uc3QgZXJyb3JzID0gc3VwZXIuaW5pdGlhbGl6ZSgpO1xyXG4gICAgICAgIHRoaXMuc2V0dXBGdW5jdGlvbnMoKTtcclxuICAgICAgICBTZXR0aW5ncy5yZWdpc3RlclBhbmVsKFwicGx1Z2luc1wiLCBTdHJpbmdzLlBhbmVscy5wbHVnaW5zLCB7ZWxlbWVudDogKCkgPT4gU2V0dGluZ3NSZW5kZXJlci5nZXRBZGRvblBhbmVsKFN0cmluZ3MuUGFuZWxzLnBsdWdpbnMsIHRoaXMuYWRkb25MaXN0LCB0aGlzLnN0YXRlLCB7XHJcbiAgICAgICAgICAgIGZvbGRlcjogdGhpcy5hZGRvbkZvbGRlcixcclxuICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMudG9nZ2xlUGx1Z2luLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIHJlbG9hZDogdGhpcy5yZWxvYWRQbHVnaW4uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgcmVmcmVzaExpc3Q6IHRoaXMudXBkYXRlUGx1Z2luTGlzdC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBzYXZlQWRkb246IHRoaXMuc2F2ZUFkZG9uLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIGVkaXRBZGRvbjogdGhpcy5lZGl0QWRkb24uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgZGVsZXRlQWRkb246IHRoaXMuZGVsZXRlQWRkb24uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgcHJlZml4OiB0aGlzLnByZWZpeFxyXG4gICAgICAgIH0pfSk7XHJcbiAgICAgICAgcmV0dXJuIGVycm9ycztcclxuICAgIH1cclxuXHJcbiAgICAvKiBBbGlhc2VzICovXHJcbiAgICB1cGRhdGVQbHVnaW5MaXN0KCkge3JldHVybiB0aGlzLnVwZGF0ZUxpc3QoKTt9XHJcbiAgICBsb2FkQWxsUGx1Z2lucygpIHtyZXR1cm4gdGhpcy5sb2FkQWxsQWRkb25zKCk7fVxyXG5cclxuICAgIGVuYWJsZVBsdWdpbihpZE9yQWRkb24pIHtyZXR1cm4gdGhpcy5lbmFibGVBZGRvbihpZE9yQWRkb24pO31cclxuICAgIGRpc2FibGVQbHVnaW4oaWRPckFkZG9uKSB7cmV0dXJuIHRoaXMuZGlzYWJsZUFkZG9uKGlkT3JBZGRvbik7fVxyXG4gICAgdG9nZ2xlUGx1Z2luKGlkKSB7cmV0dXJuIHRoaXMudG9nZ2xlQWRkb24oaWQpO31cclxuXHJcbiAgICB1bmxvYWRQbHVnaW4oaWRPckZpbGVPckFkZG9uKSB7cmV0dXJuIHRoaXMudW5sb2FkQWRkb24oaWRPckZpbGVPckFkZG9uKTt9XHJcblxyXG4gICAgbG9hZFBsdWdpbihmaWxlbmFtZSkge1xyXG4gICAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5sb2FkQWRkb24oZmlsZW5hbWUpO1xyXG4gICAgICAgIGlmIChlcnJvcikgTW9kYWxzLnNob3dBZGRvbkVycm9ycyh7dGhlbWVzOiBbZXJyb3JdfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVsb2FkUGx1Z2luKGlkT3JGaWxlT3JBZGRvbikge1xyXG4gICAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5yZWxvYWRBZGRvbihpZE9yRmlsZU9yQWRkb24pO1xyXG4gICAgICAgIGlmIChlcnJvcikgTW9kYWxzLnNob3dBZGRvbkVycm9ycyh7cGx1Z2luczogW2Vycm9yXX0pO1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YoaWRPckZpbGVPckFkZG9uKSA9PSBcInN0cmluZ1wiID8gdGhpcy5hZGRvbkxpc3QuZmluZChjID0+IGMuaWQgPT0gaWRPckZpbGVPckFkZG9uIHx8IGMuZmlsZW5hbWUgPT0gaWRPckZpbGVPckFkZG9uKSA6IGlkT3JGaWxlT3JBZGRvbjtcclxuICAgIH1cclxuXHJcbiAgICAvKiBPdmVycmlkZXMgKi9cclxuICAgIGluaXRpYWxpemVBZGRvbihhZGRvbikge1xyXG4gICAgICAgIGlmICghYWRkb24udHlwZSkgcmV0dXJuIG5ldyBBZGRvbkVycm9yKGFkZG9uLm5hbWUsIGFkZG9uLmZpbGVuYW1lLCBcIlBsdWdpbiBoYWQgbm8gZXhwb3J0c1wiLCB7bWVzc2FnZTogXCJQbHVnaW4gaGFkIG5vIGV4cG9ydHMgb3Igbm8gbmFtZSBwcm9wZXJ0eS5cIiwgc3RhY2s6IFwiXCJ9KTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCB0aGVQbHVnaW4gPSBuZXcgYWRkb24udHlwZSgpO1xyXG4gICAgICAgICAgICBhZGRvbi5wbHVnaW4gPSB0aGVQbHVnaW47XHJcbiAgICAgICAgICAgIGFkZG9uLm5hbWUgPSB0aGVQbHVnaW4uZ2V0TmFtZSgpIHx8IGFkZG9uLm5hbWU7XHJcbiAgICAgICAgICAgIGFkZG9uLmF1dGhvciA9IHRoZVBsdWdpbi5nZXRBdXRob3IoKSB8fCBhZGRvbi5hdXRob3IgfHwgXCJObyBhdXRob3JcIjtcclxuICAgICAgICAgICAgYWRkb24uZGVzY3JpcHRpb24gPSB0aGVQbHVnaW4uZ2V0RGVzY3JpcHRpb24oKSB8fCBhZGRvbi5kZXNjcmlwdGlvbiB8fCBcIk5vIGRlc2NyaXB0aW9uXCI7XHJcbiAgICAgICAgICAgIGFkZG9uLnZlcnNpb24gPSB0aGVQbHVnaW4uZ2V0VmVyc2lvbigpIHx8IGFkZG9uLnZlcnNpb24gfHwgXCJObyB2ZXJzaW9uXCI7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mKGFkZG9uLnBsdWdpbi5sb2FkKSA9PSBcImZ1bmN0aW9uXCIpIGFkZG9uLnBsdWdpbi5sb2FkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlW2FkZG9uLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBZGRvbkVycm9yKGFkZG9uLm5hbWUsIGFkZG9uLmZpbGVuYW1lLCBcImxvYWQoKSBjb3VsZCBub3QgYmUgZmlyZWQuXCIsIHttZXNzYWdlOiBlcnJvci5tZXNzYWdlLCBzdGFjazogZXJyb3Iuc3RhY2t9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtyZXR1cm4gbmV3IEFkZG9uRXJyb3IoYWRkb24ubmFtZSwgYWRkb24uZmlsZW5hbWUsIFwiQ291bGQgbm90IGJlIGNvbnN0cnVjdGVkLlwiLCB7bWVzc2FnZTogZXJyb3IubWVzc2FnZSwgc3RhY2s6IGVycm9yLnN0YWNrfSk7fVxyXG4gICAgfVxyXG5cclxuICAgIGdldEZpbGVNb2RpZmljYXRpb24obW9kdWxlLCBmaWxlQ29udGVudCwgbWV0YSkge1xyXG4gICAgICAgIG1vZHVsZS5fY29tcGlsZShmaWxlQ29udGVudCwgbW9kdWxlLmZpbGVuYW1lKTtcclxuICAgICAgICBjb25zdCBkaWRFeHBvcnQgPSAhVXRpbGl0aWVzLmlzRW1wdHkobW9kdWxlLmV4cG9ydHMpO1xyXG4gICAgICAgIGlmIChkaWRFeHBvcnQpIHtcclxuICAgICAgICAgICAgbWV0YS50eXBlID0gbW9kdWxlLmV4cG9ydHM7XHJcbiAgICAgICAgICAgIG1vZHVsZS5leHBvcnRzID0gbWV0YTtcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIExvZ2dlci53YXJuKHRoaXMubmFtZSwgYCR7bWV0YS5uYW1lfSwgcGxlYXNlIHN0YXJ0IGFzc2lnbmluZyBtb2R1bGUuZXhwb3J0c2ApO1xyXG4gICAgICAgIGZpbGVDb250ZW50ICs9IGBcXG5tb2R1bGUuZXhwb3J0cyA9ICR7SlNPTi5zdHJpbmdpZnkobWV0YSl9O1xcbm1vZHVsZS5leHBvcnRzLnR5cGUgPSAke21ldGEuZXhwb3J0cyB8fCBtZXRhLm5hbWV9O2A7XHJcbiAgICAgICAgcmV0dXJuIGZpbGVDb250ZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0QWRkb24oaWQpIHtyZXR1cm4gdGhpcy5zdGFydFBsdWdpbihpZCk7fVxyXG4gICAgc3RvcEFkZG9uKGlkKSB7cmV0dXJuIHRoaXMuc3RvcFBsdWdpbihpZCk7fVxyXG4gICAgZ2V0QWRkb24oaWQpIHtyZXR1cm4gdGhpcy5nZXRQbHVnaW4oaWQpO31cclxuXHJcbiAgICBzdGFydFBsdWdpbihpZE9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKHAgPT4gcC5pZCA9PSBpZE9yQWRkb24pIDogaWRPckFkZG9uO1xyXG4gICAgICAgIGlmICghYWRkb24pIHJldHVybjtcclxuICAgICAgICBjb25zdCBwbHVnaW4gPSBhZGRvbi5wbHVnaW47XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcGx1Z2luLnN0YXJ0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZVthZGRvbi5pZF0gPSBmYWxzZTtcclxuICAgICAgICAgICAgVG9hc3RzLmVycm9yKFN0cmluZ3MuQWRkb25zLmNvdWxkTm90U3RhcnQuZm9ybWF0KHtuYW1lOiBhZGRvbi5uYW1lLCB2ZXJzaW9uOiBhZGRvbi52ZXJzaW9ufSkpO1xyXG4gICAgICAgICAgICBMb2dnZXIuc3RhY2t0cmFjZSh0aGlzLm5hbWUsIGFkZG9uLm5hbWUgKyBcIiBjb3VsZCBub3QgYmUgc3RhcnRlZC5cIiwgZXJyKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBBZGRvbkVycm9yKGFkZG9uLm5hbWUsIGFkZG9uLmZpbGVuYW1lLCBTdHJpbmdzLkFkZG9ucy5lbmFibGVkLmZvcm1hdCh7bWV0aG9kOiBcInN0YXJ0KClcIn0pLCB7bWVzc2FnZTogZXJyLm1lc3NhZ2UsIHN0YWNrOiBlcnIuc3RhY2t9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbWl0KFwic3RhcnRlZFwiLCBhZGRvbi5pZCk7XHJcbiAgICAgICAgVG9hc3RzLnNob3coU3RyaW5ncy5BZGRvbnMuZW5hYmxlZC5mb3JtYXQoe25hbWU6IGFkZG9uLm5hbWUsIHZlcnNpb246IGFkZG9uLnZlcnNpb259KSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RvcFBsdWdpbihpZE9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKHAgPT4gcC5pZCA9PSBpZE9yQWRkb24pIDogaWRPckFkZG9uO1xyXG4gICAgICAgIGlmICghYWRkb24pIHJldHVybjtcclxuICAgICAgICBjb25zdCBwbHVnaW4gPSBhZGRvbi5wbHVnaW47XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcGx1Z2luLnN0b3AoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRlW2FkZG9uLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBUb2FzdHMuZXJyb3IoU3RyaW5ncy5BZGRvbnMuY291bGROb3RTdG9wLmZvcm1hdCh7bmFtZTogYWRkb24ubmFtZSwgdmVyc2lvbjogYWRkb24udmVyc2lvbn0pKTtcclxuICAgICAgICAgICAgTG9nZ2VyLnN0YWNrdHJhY2UodGhpcy5uYW1lLCBhZGRvbi5uYW1lICsgXCIgY291bGQgbm90IGJlIHN0b3BwZWQuXCIsIGVycik7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgQWRkb25FcnJvcihhZGRvbi5uYW1lLCBhZGRvbi5maWxlbmFtZSwgU3RyaW5ncy5BZGRvbnMuZW5hYmxlZC5mb3JtYXQoe21ldGhvZDogXCJzdG9wKClcIn0pLCB7bWVzc2FnZTogZXJyLm1lc3NhZ2UsIHN0YWNrOiBlcnIuc3RhY2t9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbWl0KFwic3RvcHBlZFwiLCBhZGRvbi5pZCk7XHJcbiAgICAgICAgVG9hc3RzLnNob3coU3RyaW5ncy5BZGRvbnMuZGlzYWJsZWQuZm9ybWF0KHtuYW1lOiBhZGRvbi5uYW1lLCB2ZXJzaW9uOiBhZGRvbi52ZXJzaW9ufSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBsdWdpbihpZE9yRmlsZSkge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdGhpcy5hZGRvbkxpc3QuZmluZChjID0+IGMuaWQgPT0gaWRPckZpbGUgfHwgYy5maWxlbmFtZSA9PSBpZE9yRmlsZSk7XHJcbiAgICAgICAgaWYgKCFhZGRvbikgcmV0dXJuO1xyXG4gICAgICAgIHJldHVybiBhZGRvbi5wbHVnaW47XHJcbiAgICB9XHJcblxyXG4gICAgc2V0dXBGdW5jdGlvbnMoKSB7XHJcbiAgICAgICAgZWxlY3Ryb25SZW1vdGUuZ2V0Q3VycmVudFdlYkNvbnRlbnRzKCkub24oXCJkaWQtbmF2aWdhdGUtaW4tcGFnZVwiLCB0aGlzLm9uU3dpdGNoLmJpbmQodGhpcykpO1xyXG4gICAgICAgIHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudCwge1xyXG4gICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXHJcbiAgICAgICAgICAgIHN1YnRyZWU6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvblN3aXRjaCgpIHtcclxuICAgICAgICB0aGlzLmVtaXQoXCJwYWdlLXN3aXRjaFwiKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYWRkb25MaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBsdWdpbiA9IHRoaXMuYWRkb25MaXN0W2ldLnBsdWdpbjtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnN0YXRlW3RoaXMuYWRkb25MaXN0W2ldLmlkXSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YocGx1Z2luLm9uU3dpdGNoKSA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkgeyBwbHVnaW4ub25Td2l0Y2goKTsgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikgeyBMb2dnZXIuc3RhY2t0cmFjZSh0aGlzLm5hbWUsIFwiVW5hYmxlIHRvIGZpcmUgb25Td2l0Y2ggZm9yIFwiICsgdGhpcy5hZGRvbkxpc3RbaV0ubmFtZSArIFwiLlwiLCBlcnIpOyB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25NdXRhdGlvbihtdXRhdGlvbikge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hZGRvbkxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgcGx1Z2luID0gdGhpcy5hZGRvbkxpc3RbaV0ucGx1Z2luO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc3RhdGVbdGhpcy5hZGRvbkxpc3RbaV0uaWRdKSBjb250aW51ZTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBwbHVnaW4ub2JzZXJ2ZXIgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHsgcGx1Z2luLm9ic2VydmVyKG11dGF0aW9uKTsgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikgeyBMb2dnZXIuc3RhY2t0cmFjZSh0aGlzLm5hbWUsIFwiVW5hYmxlIHRvIGZpcmUgb2JzZXJ2ZXIgZm9yIFwiICsgdGhpcy5hZGRvbkxpc3RbaV0ubmFtZSArIFwiLlwiLCBlcnIpOyB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/pluginmanager.js\n"); /***/ }), @@ -574,7 +574,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _dis /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./emitter */ \"./src/modules/emitter.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class SettingsManager {\n constructor() {\n this.state = {};\n this.collections = [];\n this.panels = [];\n this.updateStrings = this.updateStrings.bind(this);\n }\n\n initialize() {\n this.registerCollection(\"settings\", \"Settings\", data__WEBPACK_IMPORTED_MODULE_0__[\"SettingsConfig\"]);\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].on(\"strings-updated\", this.updateStrings); // this.patchSections();\n }\n\n registerCollection(id, name, settings, button = null) {\n if (this.collections.find(c => c.id == id)) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"Settings\", \"Already have a collection with id \" + id);\n this.collections.push({\n type: \"collection\",\n id: id,\n name: name,\n settings: settings,\n button: button\n });\n this.setupCollection(id);\n this.loadCollection(id);\n this.updateStrings();\n }\n\n removeCollection(id) {\n const location = this.collections.findIndex(c => c.id == id);\n if (!location < 0) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"Settings\", \"No collection with id \" + id);\n this.collections.splice(location, 1);\n } // TODO: Move this to SettingsRenderer and also add a registerContentPanel\n\n\n registerPanel(id, name, options) {\n if (this.panels.find(p => p.id == id)) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"Settings\", \"Already have a panel with id \" + id);\n const {\n element,\n onClick,\n order = 1\n } = options;\n const section = {\n id,\n order,\n label: name,\n section: id\n };\n if (onClick) section.clickListener = onClick;\n if (element) section.element = element instanceof _discordmodules__WEBPACK_IMPORTED_MODULE_4__[\"default\"].React.Component ? () => _discordmodules__WEBPACK_IMPORTED_MODULE_4__[\"default\"].React.createElement(element, {}) : typeof element == \"function\" ? element : () => element;\n this.panels.push(section);\n }\n\n removePanel(id) {\n const location = this.panels.findIndex(c => c.id == id);\n if (!location < 0) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"Settings\", \"No collection with id \" + id);\n this.panels.splice(location, 1);\n }\n\n getPath(path, collectionId = \"\", categoryId = \"\") {\n const collection = path.length == 3 ? path[0] : collectionId;\n const category = path.length == 3 ? path[1] : path.length == 2 ? path[0] : categoryId;\n const setting = path[path.length - 1];\n return {\n collection,\n category,\n setting\n };\n }\n\n setupCollection(id) {\n const collection = this.collections.find(c => c.id == id);\n if (!collection) return;\n const categories = collection.settings;\n if (!this.state[collection.id]) this.state[collection.id] = {};\n\n for (let cc = 0; cc < categories.length; cc++) {\n const category = categories[cc];\n\n if (category.type != \"category\") {\n if (!this.state[collection.id].hasOwnProperty(category.id)) this.state[collection.id][category.id] = category.value;\n } else {\n if (!this.state[collection.id].hasOwnProperty(category.id)) this.state[collection.id][category.id] = {};\n\n for (let s = 0; s < category.settings.length; s++) {\n const setting = category.settings[s];\n if (!this.state[collection.id][category.id].hasOwnProperty(setting.id)) this.state[collection.id][category.id][setting.id] = setting.value;\n if (setting.hasOwnProperty(\"disabled\")) continue;\n if (!setting.enableWith && !setting.disableWith) continue;\n const pathString = setting.enableWith || setting.disableWith;\n const path = this.getPath(pathString.split(\".\"), collection.id, category.id);\n Object.defineProperty(setting, \"disabled\", {\n get: () => {\n const other = this.state[path.collection][path.category][path.setting];\n return setting.enableWith ? !other : other;\n }\n });\n }\n }\n }\n }\n\n saveSettings() {\n for (const collection in this.state) this.saveCollection(collection);\n }\n\n loadSettings() {\n for (const collection in this.state) this.loadCollection(collection);\n }\n\n saveCollection(collection) {\n _datastore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].setData(collection, this.state[collection]);\n }\n\n loadCollection(id) {\n const previousState = _datastore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getData(id);\n if (!previousState) return this.saveCollection(id);\n\n for (const category in this.state[id]) {\n if (!previousState[category]) Object.assign(previousState, {\n [category]: this.state[id][category]\n });\n\n for (const setting in this.state[id][category]) {\n if (previousState[category][setting] == undefined) continue;\n const settingObj = this.getSetting(id, category, setting);\n if (settingObj.type == \"switch\") this.state[id][category][setting] = previousState[category][setting];\n\n if (settingObj.type == \"dropdown\") {\n const exists = settingObj.options.some(o => o.value == previousState[category][setting]);\n if (exists) this.state[id][category][setting] = previousState[category][setting];\n }\n }\n }\n\n this.saveCollection(id); // in case new things were added\n }\n\n onSettingChange(collection, category, id, value) {\n this.state[collection][category][id] = value;\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].dispatch(\"setting-updated\", collection, category, id, value);\n this.saveCollection(collection);\n }\n\n getSetting(collection, category, id) {\n if (arguments.length == 2) return this.collections[0].find(c => c.id == arguments[0]).settings.find(s => s.id == arguments[1]);\n return this.collections.find(c => c.id == collection).settings.find(c => c.id == category).settings.find(s => s.id == id);\n }\n\n get(collection, category, id) {\n if (arguments.length == 2) {\n id = category;\n category = collection;\n collection = \"settings\";\n }\n\n if (!this.state[collection] || !this.state[collection][category]) return false;\n return this.state[collection][category][id];\n }\n\n set(collection, category, id, value) {\n if (arguments.length == 3) {\n value = id;\n id = category;\n category = collection;\n collection = \"settings\";\n }\n\n return this.onSettingChange(collection, category, id, value);\n }\n\n on(collection, category, identifier, callback) {\n const handler = (col, cat, id, value) => {\n if (col !== collection || cat !== category || id !== identifier) return;\n callback(value);\n };\n\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].on(\"setting-updated\", handler);\n return () => {\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].off(\"setting-updated\", handler);\n };\n }\n\n updateStrings() {\n // Update settings collections\n for (let c = 0; c < this.collections.length; c++) {\n const collection = this.collections[c];\n const CS = _strings__WEBPACK_IMPORTED_MODULE_5__[\"default\"].Collections[collection.id];\n if (!CS) continue;\n collection.name = CS.name || collection.name;\n const categories = this.collections[c].settings;\n\n for (let cat = 0; cat < categories.length; cat++) {\n const category = categories[cat];\n const CatStr = CS[category.id];\n if (!CatStr) continue;\n category.name = CatStr.name || category.name;\n\n for (let s = 0; s < category.settings.length; s++) {\n const setting = category.settings[s];\n const SetStr = CatStr[setting.id];\n if (!SetStr) continue;\n setting.name = SetStr.name || setting.name;\n setting.note = SetStr.note || setting.note;\n if (!setting.options) continue;\n\n for (const opt of setting.options) {\n opt.label = SetStr.options[opt.id] || SetStr.options[opt.value] || opt.label;\n }\n }\n }\n } // Update panel labels\n\n\n for (let p = 0; p < this.panels.length; p++) {\n const panel = this.panels[p];\n const Str = _strings__WEBPACK_IMPORTED_MODULE_5__[\"default\"].Panels[panel.id];\n panel.label = Str || panel.label;\n }\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9zZXR0aW5nc21hbmFnZXIuanM/YjJmOSJdLCJuYW1lcyI6WyJTZXR0aW5nc01hbmFnZXIiLCJjb25zdHJ1Y3RvciIsInN0YXRlIiwiY29sbGVjdGlvbnMiLCJwYW5lbHMiLCJ1cGRhdGVTdHJpbmdzIiwiYmluZCIsImluaXRpYWxpemUiLCJyZWdpc3RlckNvbGxlY3Rpb24iLCJTZXR0aW5nc0NvbmZpZyIsIkV2ZW50cyIsIm9uIiwiaWQiLCJuYW1lIiwic2V0dGluZ3MiLCJidXR0b24iLCJmaW5kIiwiYyIsIkxvZ2dlciIsImVycm9yIiwicHVzaCIsInR5cGUiLCJzZXR1cENvbGxlY3Rpb24iLCJsb2FkQ29sbGVjdGlvbiIsInJlbW92ZUNvbGxlY3Rpb24iLCJsb2NhdGlvbiIsImZpbmRJbmRleCIsInNwbGljZSIsInJlZ2lzdGVyUGFuZWwiLCJvcHRpb25zIiwicCIsImVsZW1lbnQiLCJvbkNsaWNrIiwib3JkZXIiLCJzZWN0aW9uIiwibGFiZWwiLCJjbGlja0xpc3RlbmVyIiwiRGlzY29yZE1vZHVsZXMiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNyZWF0ZUVsZW1lbnQiLCJyZW1vdmVQYW5lbCIsImdldFBhdGgiLCJwYXRoIiwiY29sbGVjdGlvbklkIiwiY2F0ZWdvcnlJZCIsImNvbGxlY3Rpb24iLCJsZW5ndGgiLCJjYXRlZ29yeSIsInNldHRpbmciLCJjYXRlZ29yaWVzIiwiY2MiLCJoYXNPd25Qcm9wZXJ0eSIsInZhbHVlIiwicyIsImVuYWJsZVdpdGgiLCJkaXNhYmxlV2l0aCIsInBhdGhTdHJpbmciLCJzcGxpdCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0Iiwib3RoZXIiLCJzYXZlU2V0dGluZ3MiLCJzYXZlQ29sbGVjdGlvbiIsImxvYWRTZXR0aW5ncyIsIkRhdGFTdG9yZSIsInNldERhdGEiLCJwcmV2aW91c1N0YXRlIiwiZ2V0RGF0YSIsImFzc2lnbiIsInVuZGVmaW5lZCIsInNldHRpbmdPYmoiLCJnZXRTZXR0aW5nIiwiZXhpc3RzIiwic29tZSIsIm8iLCJvblNldHRpbmdDaGFuZ2UiLCJkaXNwYXRjaCIsImFyZ3VtZW50cyIsInNldCIsImlkZW50aWZpZXIiLCJjYWxsYmFjayIsImhhbmRsZXIiLCJjb2wiLCJjYXQiLCJvZmYiLCJDUyIsIlN0cmluZ3MiLCJDb2xsZWN0aW9ucyIsIkNhdFN0ciIsIlNldFN0ciIsIm5vdGUiLCJvcHQiLCJwYW5lbCIsIlN0ciIsIlBhbmVscyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFZSxtRUFBSSxNQUFNQSxlQUFOLENBQXNCO0FBRXJDQyxhQUFXLEdBQUc7QUFDVixTQUFLQyxLQUFMLEdBQWEsRUFBYjtBQUNBLFNBQUtDLFdBQUwsR0FBbUIsRUFBbkI7QUFDQSxTQUFLQyxNQUFMLEdBQWMsRUFBZDtBQUNBLFNBQUtDLGFBQUwsR0FBcUIsS0FBS0EsYUFBTCxDQUFtQkMsSUFBbkIsQ0FBd0IsSUFBeEIsQ0FBckI7QUFDSDs7QUFFREMsWUFBVSxHQUFHO0FBQ1QsU0FBS0Msa0JBQUwsQ0FBd0IsVUFBeEIsRUFBb0MsVUFBcEMsRUFBZ0RDLG1EQUFoRDtBQUNBQyxvREFBTSxDQUFDQyxFQUFQLENBQVUsaUJBQVYsRUFBNkIsS0FBS04sYUFBbEMsRUFGUyxDQUdUO0FBQ0g7O0FBRURHLG9CQUFrQixDQUFDSSxFQUFELEVBQUtDLElBQUwsRUFBV0MsUUFBWCxFQUFxQkMsTUFBTSxHQUFHLElBQTlCLEVBQW9DO0FBQ2xELFFBQUksS0FBS1osV0FBTCxDQUFpQmEsSUFBakIsQ0FBc0JDLENBQUMsSUFBSUEsQ0FBQyxDQUFDTCxFQUFGLElBQVFBLEVBQW5DLENBQUosRUFBNEMsT0FBT00sK0NBQU0sQ0FBQ0MsS0FBUCxDQUFhLFVBQWIsRUFBeUIsdUNBQXVDUCxFQUFoRSxDQUFQO0FBQzVDLFNBQUtULFdBQUwsQ0FBaUJpQixJQUFqQixDQUFzQjtBQUNs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LE9BQU8sQ0FBQ3BDLElBQXRDO0FBQ0FvQyxpQkFBTyxDQUFDMkMsSUFBUixHQUFlRCxNQUFNLENBQUNDLElBQVAsSUFBZTNDLE9BQU8sQ0FBQzJDLElBQXRDO0FBQ0EsY0FBSSxDQUFDM0MsT0FBTyxDQUFDcEIsT0FBYixFQUFzQjs7QUFDdEIsZUFBSyxNQUFNZ0UsR0FBWCxJQUFrQjVDLE9BQU8sQ0FBQ3BCLE9BQTFCLEVBQW1DO0FBQy9CZ0UsZUFBRyxDQUFDMUQsS0FBSixHQUFZd0QsTUFBTSxDQUFDOUQsT0FBUCxDQUFlZ0UsR0FBRyxDQUFDakYsRUFBbkIsS0FBMEIrRSxNQUFNLENBQUM5RCxPQUFQLENBQWVnRSxHQUFHLENBQUN4QyxLQUFuQixDQUExQixJQUF1RHdDLEdBQUcsQ0FBQzFELEtBQXZFO0FBQ0g7QUFDSjtBQUNKO0FBQ0osS0F6QlcsQ0EyQlo7OztBQUNBLFNBQUssSUFBSUwsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRyxLQUFLMUIsTUFBTCxDQUFZMkMsTUFBaEMsRUFBd0NqQixDQUFDLEVBQXpDLEVBQTZDO0FBQ3pDLFlBQU1nRSxLQUFLLEdBQUcsS0FBSzFGLE1BQUwsQ0FBWTBCLENBQVosQ0FBZDtBQUNBLFlBQU1pRSxHQUFHLEdBQUdQLGdEQUFPLENBQUNRLE1BQVIsQ0FBZUYsS0FBSyxDQUFDbEYsRUFBckIsQ0FBWjtBQUNBa0YsV0FBSyxDQUFDM0QsS0FBTixHQUFjNEQsR0FBRyxJQUFJRCxLQUFLLENBQUMzRCxLQUEzQjtBQUNIO0FBQ0o7O0FBOUxvQyxDQUExQixFQUFmIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvc2V0dGluZ3NtYW5hZ2VyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZXR0aW5nc0NvbmZpZ30gZnJvbSBcImRhdGFcIjtcclxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi9sb2dnZXJcIjtcclxuaW1wb3J0IERhdGFTdG9yZSBmcm9tIFwiLi9kYXRhc3RvcmVcIjtcclxuaW1wb3J0IEV2ZW50cyBmcm9tIFwiLi9lbWl0dGVyXCI7XHJcbmltcG9ydCBEaXNjb3JkTW9kdWxlcyBmcm9tIFwiLi9kaXNjb3JkbW9kdWxlc1wiO1xyXG5pbXBvcnQgU3RyaW5ncyBmcm9tIFwiLi9zdHJpbmdzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgU2V0dGluZ3NNYW5hZ2VyIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge307XHJcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9ucyA9IFtdO1xyXG4gICAgICAgIHRoaXMucGFuZWxzID0gW107XHJcbiAgICAgICAgdGhpcy51cGRhdGVTdHJpbmdzID0gdGhpcy51cGRhdGVTdHJpbmdzLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdGlhbGl6ZSgpIHtcclxuICAgICAgICB0aGlzLnJlZ2lzdGVyQ29sbGVjdGlvbihcInNldHRpbmdzXCIsIFwiU2V0dGluZ3NcIiwgU2V0dGluZ3NDb25maWcpO1xyXG4gICAgICAgIEV2ZW50cy5vbihcInN0cmluZ3MtdXBkYXRlZFwiLCB0aGlzLnVwZGF0ZVN0cmluZ3MpO1xyXG4gICAgICAgIC8vIHRoaXMucGF0Y2hTZWN0aW9ucygpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyQ29sbGVjdGlvbihpZCwgbmFtZSwgc2V0dGluZ3MsIGJ1dHRvbiA9IG51bGwpIHtcclxuICAgICAgICBpZiAodGhpcy5jb2xsZWN0aW9ucy5maW5kKGMgPT4gYy5pZCA9PSBpZCkpIHJldHVybiBMb2dnZXIuZXJyb3IoXCJTZXR0aW5nc1wiLCBcIkFscmVhZHkgaGF2ZSBhIGNvbGxlY3Rpb24gd2l0aCBpZCBcIiArIGlkKTtcclxuICAgICAgICB0aGlzLmNvbGxlY3Rpb25zLnB1c2goe1xyXG4gICAgICAgICAgICB0eXBlOiBcImNvbGxlY3Rpb25cIixcclxuICAgICAgICAgICAgaWQ6IGlkLFxyXG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxyXG4gICAgICAgICAgICBzZXR0aW5nczogc2V0dGluZ3MsXHJcbiAgICAgICAgICAgIGJ1dHRvbjogYnV0dG9uXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zZXR1cENvbGxlY3Rpb24oaWQpO1xyXG4gICAgICAgIHRoaXMubG9hZENvbGxlY3Rpb24oaWQpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlU3RyaW5ncygpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZUNvbGxlY3Rpb24oaWQpIHtcclxuICAgICAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMuY29sbGVjdGlvbnMuZmluZEluZGV4KGMgPT4gYy5pZCA9PSBpZCk7XHJcbiAgICAgICAgaWYgKCFsb2NhdGlvbiA8IDApIHJldHVybiBMb2dnZXIuZXJyb3IoXCJTZXR0aW5nc1wiLCBcIk5vIGNvbGxlY3Rpb24gd2l0aCBpZCBcIiArIGlkKTtcclxuICAgICAgICB0aGlzLmNvbGxlY3Rpb25zLnNwbGljZShsb2NhdGlvbiwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVE9ETzogTW92ZSB0aGlzIHRvIFNldHRpbmdzUmVuZGVyZXIgYW5kIGFsc28gYWRkIGEgcmVnaXN0ZXJDb250ZW50UGFuZWxcclxuICAgIHJlZ2lzdGVyUGFuZWwoaWQsIG5hbWUsIG9wdGlvbnMpIHtcclxuICAgICAgICBpZiAodGhpcy5wYW5lbHMuZmluZChwID0+IHAuaWQgPT0gaWQpKSByZXR1cm4gTG9nZ2VyLmVycm9yKFwiU2V0dGluZ3NcIiwgXCJBbHJlYWR5IGhhdmUgYSBwYW5lbCB3aXRoIGlkIFwiICsgaWQpO1xyXG4gICAgICAgIGNvbnN0IHtlbGVtZW50LCBvbkNsaWNrLCBvcmRlciA9IDF9ID0gb3B0aW9ucztcclxuICAgICAgICBjb25zdCBzZWN0aW9uID0ge2lkLCBvcmRlciwgbGFiZWw6IG5hbWUsIHNlY3Rpb246IGlkfTtcclxuICAgICAgICBpZiAob25DbGljaykgc2VjdGlvbi5jbGlja0xpc3RlbmVyID0gb25DbGljaztcclxuICAgICAgICBpZiAoZWxlbWVudCkgc2VjdGlvbi5lbGVtZW50ID0gZWxlbWVudCBpbnN0YW5jZW9mIERpc2NvcmRNb2R1bGVzLlJlYWN0LkNvbXBvbmVudCA/ICgpID0+IERpc2NvcmRNb2R1bGVzLlJlYWN0LmNyZWF0ZUVsZW1lbnQoZWxlbWVudCwge30pIDogdHlwZW9mKGVsZW1lbnQpID09IFwiZnVuY3Rpb25cIiA/IGVsZW1lbnQgOiAoKSA9PiBlbGVtZW50O1xyXG4gICAgICAgIHRoaXMucGFuZWxzLnB1c2goc2VjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlUGFuZWwoaWQpIHtcclxuICAgICAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMucGFuZWxzLmZpbmRJbmRleChjID0+IGMuaWQgPT0gaWQpO1xyXG4gICAgICAgIGlmICghbG9jYXRpb24gPCAwKSByZXR1cm4gTG9nZ2VyLmVycm9yKFwiU2V0dGluZ3NcIiwgXCJObyBjb2xsZWN0aW9uIHdpdGggaWQgXCIgKyBpZCk7XHJcbiAgICAgICAgdGhpcy5wYW5lbHMuc3BsaWNlKGxvY2F0aW9uLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQYXRoKHBhdGgsIGNvbGxlY3Rpb25JZCA9IFwiXCIsIGNhdGVnb3J5SWQgPSBcIlwiKSB7XHJcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IHBhdGgubGVuZ3RoID09IDMgPyBwYXRoWzBdIDogY29sbGVjdGlvbklkO1xyXG4gICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gcGF0aC5sZW5ndGggPT0gMyA/IHBhdGhbMV0gOiBwYXRoLmxlbmd0aCA9PSAyID8gcGF0aFswXSA6IGNhdGVnb3J5SWQ7XHJcbiAgICAgICAgY29uc3Qgc2V0dGluZyA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcclxuICAgICAgICByZXR1cm4ge2NvbGxlY3Rpb24sIGNhdGVnb3J5LCBzZXR0aW5nfTtcclxuICAgIH1cclxuXHJcbiAgICBzZXR1cENvbGxlY3Rpb24oaWQpIHtcclxuICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5jb2xsZWN0aW9ucy5maW5kKGMgPT4gYy5pZCA9PSBpZCk7XHJcbiAgICAgICAgaWYgKCFjb2xsZWN0aW9uKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgY2F0ZWdvcmllcyA9IGNvbGxlY3Rpb24uc2V0dGluZ3M7XHJcbiAgICAgICAgaWYgKCF0aGlzLnN0YXRlW2NvbGxlY3Rpb24uaWRdKSB0aGlzLnN0YXRlW2NvbGxlY3Rpb24uaWRdID0ge307XHJcbiAgICAgICAgZm9yIChsZXQgY2MgPSAwOyBjYyA8IGNhdGVnb3JpZXMubGVuZ3RoOyBjYysrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gY2F0ZWdvcmllc1tjY107XHJcbiAgICAgICAgICAgIGlmIChjYXRlZ29yeS50eXBlICE9IFwiY2F0ZWdvcnlcIikge2lmICghdGhpcy5zdGF0ZVtjb2xsZWN0aW9uLmlkXS5oYXNPd25Qcm9wZXJ0eShjYXRlZ29yeS5pZCkpIHRoaXMuc3RhdGVbY29sbGVjdGlvbi5pZF1bY2F0ZWdvcnkuaWRdID0gY2F0ZWdvcnkudmFsdWU7fVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zdGF0ZVtjb2xsZWN0aW9uLmlkXS5oYXNPd25Qcm9wZXJ0eShjYXRlZ29yeS5pZCkpIHRoaXMuc3RhdGVbY29sbGVjdGlvbi5pZF1bY2F0ZWdvcnkuaWRdID0ge307XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8IGNhdGVnb3J5LnNldHRpbmdzLmxlbmd0aDsgcysrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2V0dGluZyA9IGNhdGVnb3J5LnNldHRpbmdzW3NdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zdGF0ZVtjb2xsZWN0aW9uLmlkXVtjYXRlZ29yeS5pZF0uaGFzT3duUHJvcGVydHkoc2V0dGluZy5pZCkpIHRoaXMuc3RhdGVbY29sbGVjdGlvbi5pZF1bY2F0ZWdvcnkuaWRdW3NldHRpbmcuaWRdID0gc2V0dGluZy52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZy5oYXNPd25Qcm9wZXJ0eShcImRpc2FibGVkXCIpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXNldHRpbmcuZW5hYmxlV2l0aCAmJiAhc2V0dGluZy5kaXNhYmxlV2l0aCkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aFN0cmluZyA9IHNldHRpbmcuZW5hYmxlV2l0aCB8fCBzZXR0aW5nLmRpc2FibGVXaXRoO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSB0aGlzLmdldFBhdGgocGF0aFN0cmluZy5zcGxpdChcIi5cIiksIGNvbGxlY3Rpb24uaWQsIGNhdGVnb3J5LmlkKTtcclxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc2V0dGluZywgXCJkaXNhYmxlZFwiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3RoZXIgPSB0aGlzLnN0YXRlW3BhdGguY29sbGVjdGlvbl1bcGF0aC5jYXRlZ29yeV1bcGF0aC5zZXR0aW5nXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXR0aW5nLmVuYWJsZVdpdGggPyAhb3RoZXIgOiBvdGhlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNhdmVTZXR0aW5ncygpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGNvbGxlY3Rpb24gaW4gdGhpcy5zdGF0ZSkgdGhpcy5zYXZlQ29sbGVjdGlvbihjb2xsZWN0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkU2V0dGluZ3MoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBjb2xsZWN0aW9uIGluIHRoaXMuc3RhdGUpIHRoaXMubG9hZENvbGxlY3Rpb24oY29sbGVjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUNvbGxlY3Rpb24oY29sbGVjdGlvbikge1xyXG4gICAgICAgIERhdGFTdG9yZS5zZXREYXRhKGNvbGxlY3Rpb24sIHRoaXMuc3RhdGVbY29sbGVjdGlvbl0pO1xyXG4gICAgfVxyXG5cclxuICAgIGxvYWRDb2xsZWN0aW9uKGlkKSB7XHJcbiAgICAgICAgY29uc3QgcHJldmlvdXNTdGF0ZSA9IERhdGFTdG9yZS5nZXREYXRhKGlkKTtcclxuICAgICAgICBpZiAoIXByZXZpb3VzU3RhdGUpIHJldHVybiB0aGlzLnNhdmVDb2xsZWN0aW9uKGlkKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IGluIHRoaXMuc3RhdGVbaWRdKSB7XHJcbiAgICAgICAgICAgIGlmICghcHJldmlvdXNTdGF0ZVtjYXRlZ29yeV0pIE9iamVjdC5hc3NpZ24ocHJldmlvdXNTdGF0ZSwge1tjYXRlZ29yeV06IHRoaXMuc3RhdGVbaWRdW2NhdGVnb3J5XX0pO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHNldHRpbmcgaW4gdGhpcy5zdGF0ZVtpZF1bY2F0ZWdvcnldKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNTdGF0ZVtjYXRlZ29yeV1bc2V0dGluZ10gPT0gdW5kZWZpbmVkKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNldHRpbmdPYmogPSB0aGlzLmdldFNldHRpbmcoaWQsIGNhdGVnb3J5LCBzZXR0aW5nKTtcclxuICAgICAgICAgICAgICAgIGlmIChzZXR0aW5nT2JqLnR5cGUgPT0gXCJzd2l0Y2hcIikgdGhpcy5zdGF0ZVtpZF1bY2F0ZWdvcnldW3NldHRpbmddID0gcHJldmlvdXNTdGF0ZVtjYXRlZ29yeV1bc2V0dGluZ107XHJcbiAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ09iai50eXBlID09IFwiZHJvcGRvd25cIikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0cyA9IHNldHRpbmdPYmoub3B0aW9ucy5zb21lKG8gPT4gby52YWx1ZSA9PSBwcmV2aW91c1N0YXRlW2NhdGVnb3J5XVtzZXR0aW5nXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV4aXN0cykgdGhpcy5zdGF0ZVtpZF1bY2F0ZWdvcnldW3NldHRpbmddID0gcHJldmlvdXNTdGF0ZVtjYXRlZ29yeV1bc2V0dGluZ107XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2F2ZUNvbGxlY3Rpb24oaWQpOyAvLyBpbiBjYXNlIG5ldyB0aGluZ3Mgd2VyZSBhZGRlZFxyXG4gICAgfVxyXG5cclxuICAgIG9uU2V0dGluZ0NoYW5nZShjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXVtjYXRlZ29yeV1baWRdID0gdmFsdWU7XHJcbiAgICAgICAgRXZlbnRzLmRpc3BhdGNoKFwic2V0dGluZy11cGRhdGVkXCIsIGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCwgdmFsdWUpO1xyXG4gICAgICAgIHRoaXMuc2F2ZUNvbGxlY3Rpb24oY29sbGVjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2V0dGluZyhjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpIHtcclxuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAyKSByZXR1cm4gdGhpcy5jb2xsZWN0aW9uc1swXS5maW5kKGMgPT4gYy5pZCA9PSBhcmd1bWVudHNbMF0pLnNldHRpbmdzLmZpbmQocyA9PiBzLmlkID09IGFyZ3VtZW50c1sxXSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbnMuZmluZChjID0+IGMuaWQgPT0gY29sbGVjdGlvbikuc2V0dGluZ3MuZmluZChjID0+IGMuaWQgPT0gY2F0ZWdvcnkpLnNldHRpbmdzLmZpbmQocyA9PiBzLmlkID09IGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSB7XHJcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMikge1xyXG4gICAgICAgICAgICBpZCA9IGNhdGVnb3J5O1xyXG4gICAgICAgICAgICBjYXRlZ29yeSA9IGNvbGxlY3Rpb247XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb24gPSBcInNldHRpbmdzXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXSB8fCAhdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXVtjYXRlZ29yeV0pIHJldHVybiBmYWxzZTtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXVtjYXRlZ29yeV1baWRdO1xyXG4gICAgfVxyXG5cclxuICAgIHNldChjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMykge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IGlkO1xyXG4gICAgICAgICAgICBpZCA9IGNhdGVnb3J5O1xyXG4gICAgICAgICAgICBjYXRlZ29yeSA9IGNvbGxlY3Rpb247XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb24gPSBcInNldHRpbmdzXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLm9uU2V0dGluZ0NoYW5nZShjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBvbihjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWRlbnRpZmllciwgY2FsbGJhY2spIHtcclxuICAgICAgICBjb25zdCBoYW5kbGVyID0gKGNvbCwgY2F0LCBpZCwgdmFsdWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbCAhPT0gY29sbGVjdGlvbiB8fCBjYXQgIT09IGNhdGVnb3J5IHx8IGlkICE9PSBpZGVudGlmaWVyKSByZXR1cm47XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKHZhbHVlKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIEV2ZW50cy5vbihcInNldHRpbmctdXBkYXRlZFwiLCBoYW5kbGVyKTtcclxuICAgICAgICByZXR1cm4gKCkgPT4ge0V2ZW50cy5vZmYoXCJzZXR0aW5nLXVwZGF0ZWRcIiwgaGFuZGxlcik7fTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVTdHJpbmdzKCkge1xyXG4gICAgICAgIC8vIFVwZGF0ZSBzZXR0aW5ncyBjb2xsZWN0aW9uc1xyXG4gICAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgdGhpcy5jb2xsZWN0aW9ucy5sZW5ndGg7IGMrKykge1xyXG4gICAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5jb2xsZWN0aW9uc1tjXTtcclxuICAgICAgICAgICAgY29uc3QgQ1MgPSBTdHJpbmdzLkNvbGxlY3Rpb25zW2NvbGxlY3Rpb24uaWRdO1xyXG4gICAgICAgICAgICBpZiAoIUNTKSBjb250aW51ZTtcclxuICAgICAgICAgICAgY29sbGVjdGlvbi5uYW1lID0gQ1MubmFtZSB8fCBjb2xsZWN0aW9uLm5hbWU7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSB0aGlzLmNvbGxlY3Rpb25zW2NdLnNldHRpbmdzO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBjYXQgPSAwOyBjYXQgPCBjYXRlZ29yaWVzLmxlbmd0aDsgY2F0KyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gY2F0ZWdvcmllc1tjYXRdO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgQ2F0U3RyID0gQ1NbY2F0ZWdvcnkuaWRdO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFDYXRTdHIpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2F0ZWdvcnkubmFtZSA9IENhdFN0ci5uYW1lIHx8IGNhdGVnb3J5Lm5hbWU7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8IGNhdGVnb3J5LnNldHRpbmdzLmxlbmd0aDsgcysrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2V0dGluZyA9IGNhdGVnb3J5LnNldHRpbmdzW3NdO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFNldFN0ciA9IENhdFN0cltzZXR0aW5nLmlkXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIVNldFN0cikgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0dGluZy5uYW1lID0gU2V0U3RyLm5hbWUgfHwgc2V0dGluZy5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmcubm90ZSA9IFNldFN0ci5ub3RlIHx8IHNldHRpbmcubm90ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXNldHRpbmcub3B0aW9ucykgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBvcHQgb2Ygc2V0dGluZy5vcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdC5sYWJlbCA9IFNldFN0ci5vcHRpb25zW29wdC5pZF0gfHwgU2V0U3RyLm9wdGlvbnNbb3B0LnZhbHVlXSB8fCBvcHQubGFiZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBVcGRhdGUgcGFuZWwgbGFiZWxzXHJcbiAgICAgICAgZm9yIChsZXQgcCA9IDA7IHAgPCB0aGlzLnBhbmVscy5sZW5ndGg7IHArKykge1xyXG4gICAgICAgICAgICBjb25zdCBwYW5lbCA9IHRoaXMucGFuZWxzW3BdO1xyXG4gICAgICAgICAgICBjb25zdCBTdHIgPSBTdHJpbmdzLlBhbmVsc1twYW5lbC5pZF07XHJcbiAgICAgICAgICAgIHBhbmVsLmxhYmVsID0gU3RyIHx8IHBhbmVsLmxhYmVsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/settingsmanager.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _data_data_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../data/data.js */ \"./src/data/data.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./emitter */ \"./src/modules/emitter.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class SettingsManager {\n constructor() {\n this.state = {};\n this.collections = [];\n this.panels = [];\n this.updateStrings = this.updateStrings.bind(this);\n }\n\n initialize() {\n this.registerCollection(\"settings\", \"Settings\", _data_data_js__WEBPACK_IMPORTED_MODULE_0__[\"SettingsConfig\"]);\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].on(\"strings-updated\", this.updateStrings); // this.patchSections();\n }\n\n registerCollection(id, name, settings, button = null) {\n if (this.collections.find(c => c.id == id)) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"Settings\", \"Already have a collection with id \" + id);\n this.collections.push({\n type: \"collection\",\n id: id,\n name: name,\n settings: settings,\n button: button\n });\n this.setupCollection(id);\n this.loadCollection(id);\n this.updateStrings();\n }\n\n removeCollection(id) {\n const location = this.collections.findIndex(c => c.id == id);\n if (!location < 0) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"Settings\", \"No collection with id \" + id);\n this.collections.splice(location, 1);\n } // TODO: Move this to SettingsRenderer and also add a registerContentPanel\n\n\n registerPanel(id, name, options) {\n if (this.panels.find(p => p.id == id)) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"Settings\", \"Already have a panel with id \" + id);\n const {\n element,\n onClick,\n order = 1\n } = options;\n const section = {\n id,\n order,\n label: name,\n section: id\n };\n if (onClick) section.clickListener = onClick;\n if (element) section.element = element instanceof _discordmodules__WEBPACK_IMPORTED_MODULE_4__[\"default\"].React.Component ? () => _discordmodules__WEBPACK_IMPORTED_MODULE_4__[\"default\"].React.createElement(element, {}) : typeof element == \"function\" ? element : () => element;\n this.panels.push(section);\n }\n\n removePanel(id) {\n const location = this.panels.findIndex(c => c.id == id);\n if (!location < 0) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"Settings\", \"No collection with id \" + id);\n this.panels.splice(location, 1);\n }\n\n getPath(path, collectionId = \"\", categoryId = \"\") {\n const collection = path.length == 3 ? path[0] : collectionId;\n const category = path.length == 3 ? path[1] : path.length == 2 ? path[0] : categoryId;\n const setting = path[path.length - 1];\n return {\n collection,\n category,\n setting\n };\n }\n\n setupCollection(id) {\n const collection = this.collections.find(c => c.id == id);\n if (!collection) return;\n const categories = collection.settings;\n if (!this.state[collection.id]) this.state[collection.id] = {};\n\n for (let cc = 0; cc < categories.length; cc++) {\n const category = categories[cc];\n\n if (category.type != \"category\") {\n if (!this.state[collection.id].hasOwnProperty(category.id)) this.state[collection.id][category.id] = category.value;\n } else {\n if (!this.state[collection.id].hasOwnProperty(category.id)) this.state[collection.id][category.id] = {};\n\n for (let s = 0; s < category.settings.length; s++) {\n const setting = category.settings[s];\n if (!this.state[collection.id][category.id].hasOwnProperty(setting.id)) this.state[collection.id][category.id][setting.id] = setting.value;\n if (setting.hasOwnProperty(\"disabled\")) continue;\n if (!setting.enableWith && !setting.disableWith) continue;\n const pathString = setting.enableWith || setting.disableWith;\n const path = this.getPath(pathString.split(\".\"), collection.id, category.id);\n Object.defineProperty(setting, \"disabled\", {\n get: () => {\n const other = this.state[path.collection][path.category][path.setting];\n return setting.enableWith ? !other : other;\n }\n });\n }\n }\n }\n }\n\n saveSettings() {\n for (const collection in this.state) this.saveCollection(collection);\n }\n\n loadSettings() {\n for (const collection in this.state) this.loadCollection(collection);\n }\n\n saveCollection(collection) {\n _datastore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].setData(collection, this.state[collection]);\n }\n\n loadCollection(id) {\n const previousState = _datastore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getData(id);\n if (!previousState) return this.saveCollection(id);\n\n for (const category in this.state[id]) {\n if (!previousState[category]) Object.assign(previousState, {\n [category]: this.state[id][category]\n });\n\n for (const setting in this.state[id][category]) {\n if (previousState[category][setting] == undefined) continue;\n const settingObj = this.getSetting(id, category, setting);\n if (settingObj.type == \"switch\") this.state[id][category][setting] = previousState[category][setting];\n\n if (settingObj.type == \"dropdown\") {\n const exists = settingObj.options.some(o => o.value == previousState[category][setting]);\n if (exists) this.state[id][category][setting] = previousState[category][setting];\n }\n }\n }\n\n this.saveCollection(id); // in case new things were added\n }\n\n onSettingChange(collection, category, id, value) {\n this.state[collection][category][id] = value;\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].dispatch(\"setting-updated\", collection, category, id, value);\n this.saveCollection(collection);\n }\n\n getSetting(collection, category, id) {\n if (arguments.length == 2) return this.collections[0].find(c => c.id == arguments[0]).settings.find(s => s.id == arguments[1]);\n return this.collections.find(c => c.id == collection).settings.find(c => c.id == category).settings.find(s => s.id == id);\n }\n\n get(collection, category, id) {\n if (arguments.length == 2) {\n id = category;\n category = collection;\n collection = \"settings\";\n }\n\n if (!this.state[collection] || !this.state[collection][category]) return false;\n return this.state[collection][category][id];\n }\n\n set(collection, category, id, value) {\n if (arguments.length == 3) {\n value = id;\n id = category;\n category = collection;\n collection = \"settings\";\n }\n\n return this.onSettingChange(collection, category, id, value);\n }\n\n on(collection, category, identifier, callback) {\n const handler = (col, cat, id, value) => {\n if (col !== collection || cat !== category || id !== identifier) return;\n callback(value);\n };\n\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].on(\"setting-updated\", handler);\n return () => {\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].off(\"setting-updated\", handler);\n };\n }\n\n updateStrings() {\n // Update settings collections\n for (let c = 0; c < this.collections.length; c++) {\n const collection = this.collections[c];\n const CS = _strings__WEBPACK_IMPORTED_MODULE_5__[\"default\"].Collections[collection.id];\n if (!CS) continue;\n collection.name = CS.name || collection.name;\n const categories = this.collections[c].settings;\n\n for (let cat = 0; cat < categories.length; cat++) {\n const category = categories[cat];\n const CatStr = CS[category.id];\n if (!CatStr) continue;\n category.name = CatStr.name || category.name;\n\n for (let s = 0; s < category.settings.length; s++) {\n const setting = category.settings[s];\n const SetStr = CatStr[setting.id];\n if (!SetStr) continue;\n setting.name = SetStr.name || setting.name;\n setting.note = SetStr.note || setting.note;\n if (!setting.options) continue;\n\n for (const opt of setting.options) {\n opt.label = SetStr.options[opt.id] || SetStr.options[opt.value] || opt.label;\n }\n }\n }\n } // Update panel labels\n\n\n for (let p = 0; p < this.panels.length; p++) {\n const panel = this.panels[p];\n const Str = _strings__WEBPACK_IMPORTED_MODULE_5__[\"default\"].Panels[panel.id];\n panel.label = Str || panel.label;\n }\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9zZXR0aW5nc21hbmFnZXIuanM/YjJmOSJdLCJuYW1lcyI6WyJTZXR0aW5nc01hbmFnZXIiLCJjb25zdHJ1Y3RvciIsInN0YXRlIiwiY29sbGVjdGlvbnMiLCJwYW5lbHMiLCJ1cGRhdGVTdHJpbmdzIiwiYmluZCIsImluaXRpYWxpemUiLCJyZWdpc3RlckNvbGxlY3Rpb24iLCJTZXR0aW5nc0NvbmZpZyIsIkV2ZW50cyIsIm9uIiwiaWQiLCJuYW1lIiwic2V0dGluZ3MiLCJidXR0b24iLCJmaW5kIiwiYyIsIkxvZ2dlciIsImVycm9yIiwicHVzaCIsInR5cGUiLCJzZXR1cENvbGxlY3Rpb24iLCJsb2FkQ29sbGVjdGlvbiIsInJlbW92ZUNvbGxlY3Rpb24iLCJsb2NhdGlvbiIsImZpbmRJbmRleCIsInNwbGljZSIsInJlZ2lzdGVyUGFuZWwiLCJvcHRpb25zIiwicCIsImVsZW1lbnQiLCJvbkNsaWNrIiwib3JkZXIiLCJzZWN0aW9uIiwibGFiZWwiLCJjbGlja0xpc3RlbmVyIiwiRGlzY29yZE1vZHVsZXMiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNyZWF0ZUVsZW1lbnQiLCJyZW1vdmVQYW5lbCIsImdldFBhdGgiLCJwYXRoIiwiY29sbGVjdGlvbklkIiwiY2F0ZWdvcnlJZCIsImNvbGxlY3Rpb24iLCJsZW5ndGgiLCJjYXRlZ29yeSIsInNldHRpbmciLCJjYXRlZ29yaWVzIiwiY2MiLCJoYXNPd25Qcm9wZXJ0eSIsInZhbHVlIiwicyIsImVuYWJsZVdpdGgiLCJkaXNhYmxlV2l0aCIsInBhdGhTdHJpbmciLCJzcGxpdCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0Iiwib3RoZXIiLCJzYXZlU2V0dGluZ3MiLCJzYXZlQ29sbGVjdGlvbiIsImxvYWRTZXR0aW5ncyIsIkRhdGFTdG9yZSIsInNldERhdGEiLCJwcmV2aW91c1N0YXRlIiwiZ2V0RGF0YSIsImFzc2lnbiIsInVuZGVmaW5lZCIsInNldHRpbmdPYmoiLCJnZXRTZXR0aW5nIiwiZXhpc3RzIiwic29tZSIsIm8iLCJvblNldHRpbmdDaGFuZ2UiLCJkaXNwYXRjaCIsImFyZ3VtZW50cyIsInNldCIsImlkZW50aWZpZXIiLCJjYWxsYmFjayIsImhhbmRsZXIiLCJjb2wiLCJjYXQiLCJvZmYiLCJDUyIsIlN0cmluZ3MiLCJDb2xsZWN0aW9ucyIsIkNhdFN0ciIsIlNldFN0ciIsIm5vdGUiLCJvcHQiLCJwYW5lbCIsIlN0ciIsIlBhbmVscyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFZSxtRUFBSSxNQUFNQSxlQUFOLENBQXNCO0FBRXJDQyxhQUFXLEdBQUc7QUFDVixTQUFLQyxLQUFMLEdBQWEsRUFBYjtBQUNBLFNBQUtDLFdBQUwsR0FBbUIsRUFBbkI7QUFDQSxTQUFLQyxNQUFMLEdBQWMsRUFBZDtBQUNBLFNBQUtDLGFBQUwsR0FBcUIsS0FBS0EsYUFBTCxDQUFtQkMsSUFBbkIsQ0FBd0IsSUFBeEIsQ0FBckI7QUFDSDs7QUFFREMsWUFBVSxHQUFHO0FBQ1QsU0FBS0Msa0JBQUwsQ0FBd0IsVUFBeEIsRUFBb0MsVUFBcEMsRUFBZ0RDLDREQUFoRDtBQUNBQyxvREFBTSxDQUFDQyxFQUFQLENBQVUsaUJBQVYsRUFBNkIsS0FBS04sYUFBbEMsRUFGUyxDQUdUO0FBQ0g7O0FBRURHLG9CQUFrQixDQUFDSSxFQUFELEVBQUtDLElBQUwsRUFBV0MsUUFBWCxFQUFxQkMsTUFBTSxHQUFHLElBQTlCLEVBQW9DO0FBQ2xELFFBQUksS0FBS1osV0FBTCxDQUFpQmEsSUFBakIsQ0FBc0JDLENBQUMsSUFBSUEsQ0FBQyxDQUFDTCxFQUFGLElBQVFBLEVBQW5DLENBQUosRUFBNEMsT0FBT00sK0NBQU0sQ0FBQ0MsS0FBUCxDQUFhLFVBQWIsRUFBeUIsdUNBQXVDUCxFQUFoRSxDQUFQO0FBQzVDLFNBQUtULFdBQUwsQ0FBaUJpQixJQUFqQixDQUFzQjtBQUNsQkMsVUFBSSxFQUFFLFlBRFk7QUFFbEJULFFBQUUsRUFBRUEsRUFGYztBQUdsQkMsVUFBSSxFQUFFQSxJQUhZO0FBSWxCQyxjQUFRLEVBQUVBLFFBSlE7QUFLbEJDLFlBQU0sRUFBRUE7QUFMVSxLQUF0QjtBQU9BLFNBQUtPLGVBQUwsQ0FBcUJWLEVBQXJCO0FBQ0EsU0FBS1csY0FBTCxDQUFvQlgsRUFBcEI7QUFDQSxTQUFLUCxhQUFMO0FBQ0g7O0FBRURtQixrQkFBZ0IsQ0FBQ1osRUFBRCxFQUFLO0FBQ2pCLFVBQU1hLFFBQVEsR0FBRyxLQUFLdEIsV0FBTCxDQUFpQnVCLFNBQWpCLENBQTJCVCxDQUFDLElBQUlBLENBQUMsQ0FBQ0wsRUFBRixJQUFRQSxFQUF4QyxDQUFqQjtBQUNBLFFBQUksQ0FBQ2EsUUFBRCxHQUFZLENBQWhCLEVBQW1CLE9BQU9QLCtDQUFNLENBQUNDLEtBQVAsQ0FBYSxVQUFiLEVBQXlCLDJCQUEyQlAsRUFBcEQsQ0FBUDtBQUNuQixTQUFLVCxXQUFMLENBQWlCd0IsTUFBakIsQ0FBd0JGLFFBQXhCLEVBQWtDLENBQWxDO0FBQ0gsR0FqQ29DLENBbUNyQzs7O0FBQ0FHLGVBQWEsQ0FBQ2hCLEVBQUQsRUFBS0MsSUFBTCxFQUFXZ0IsT0FBWCxFQUFvQjtBQUM3QixRQUFJLEtBQUt6QixNQUFMLENBQVlZLElBQVosQ0FBaUJjLENBQUMsSUFBSUEsQ0FBQyxDQUFDbEIsRUFBRixJQUFRQSxFQUE5QixDQUFKLEVBQXVDLE9BQU9NLCtDQUFNLENBQUNDLEtBQVAsQ0FBYSxVQUFiLEVBQXlCLGtDQUFrQ1AsRUFBM0QsQ0FBUDtBQUN2QyxVQUFNO0FBQUNtQixhQUFEO0FBQVVDLGFBQVY7QUFBbUJDLFdBQUssR0FBRztBQUEzQixRQUFnQ0osT0FBdEM7QUFDQSxVQUFNSyxPQUFPLEdBQUc7QUFBQ3RCLFFBQUQ7QUFBS3FCLFdBQUw7QUFBWUUsV0FBSyxFQUFFdEIsSUFBbkI7QUFBeUJxQixhQUFPLEVBQUV0QjtBQUFsQyxLQUFoQjtBQUNBLFFBQUlvQixPQUFKLEVBQWFFLE9BQU8sQ0FBQ0UsYUFBUixHQUF3QkosT0FBeEI7QUFDYixRQUFJRCxPQUFKLEVBQWFHLE9BQU8sQ0FBQ0gsT0FBUixHQUFrQkEsT0FBTyxZQUFZTSx1REFBYyxDQUFDQyxLQUFmLENBQXFCQyxTQUF4QyxHQUFvRCxNQUFNRix1REFBYyxDQUFDQyxLQUFmLENBQXFCRSxhQUFyQixDQUFtQ1QsT0FBbkMsRUFBNEMsRUFBNUMsQ0FBMUQsR0FBNEcsT0FBT0EsT0FBUCxJQUFtQixVQUFuQixHQUFnQ0EsT0FBaEMsR0FBMEMsTUFBTUEsT0FBOUs7QUFDYixTQUFLM0IsTUFBTCxDQUFZZ0IsSUFBWixDQUFpQmMsT0FBakI7QUFDSDs7QUFFRE8sYUFBVyxDQUFDN0IsRUFBRCxFQUFLO0FBQ1osVUFBTWEsUUFBUSxHQUFHLEtBQUtyQixNQUFMLENBQVlzQixTQUFaLENBQXNCVCxDQUFDLElBQUlBLENBQUMsQ0FBQ0wsRUFBRixJQUFRQSxFQUFuQyxDQUFqQjtBQUNBLFFBQUksQ0FBQ2EsUUFBRCxHQUFZLENBQWhCLEVBQW1CLE9BQU9QLCtDQUFNLENBQUNDLEtBQVAsQ0FBYSxVQUFiLEVBQXlCLDJCQUEyQlAsRUFBcEQsQ0FBUDtBQUNuQixTQUFLUixNQUFMLENBQVl1QixNQUFaLENBQW1CRixRQUFuQixFQUE2QixDQUE3QjtBQUNIOztBQUVEaUIsU0FBTyxDQUFDQyxJQUFELEVBQU9DLFlBQVksR0FBRyxFQUF0QixFQUEwQkMsVUFBVSxHQUFHLEVBQXZDLEVBQTJDO0FBQzlDLFVBQU1DLFVBQVUsR0FBR0gsSUFBSSxDQUFDSSxNQUFMLElBQWUsQ0FBZixHQUFtQkosSUFBSSxDQUFDLENBQUQsQ0FBdkIsR0FBNkJDLFlBQWhEO0FBQ0EsVUFBTUksUUFBUSxHQUFHTCxJQUFJLENBQUNJLE1BQUwsSUFBZSxDQUFmLEdBQW1CSixJQUFJLENBQUMsQ0FBRCxDQUF2QixHQUE2QkEsSUFBSSxDQUFDSSxNQUFMLElBQWUsQ0FBZixHQUFtQkosSUFBSSxDQUFDLENBQUQsQ0FBdkIsR0FBNkJFLFVBQTNFO0FBQ0EsVUFBTUksT0FBTyxHQUFHTixJQUFJLENBQUNBLElBQUksQ0FBQ0ksTUFBTCxHQUFjLENBQWYsQ0FBcEI7QUFDQSxXQUFPO0FBQUNELGdCQUFEO0FBQWFFLGNBQWI7QUFBdUJDO0FBQXZCLEtBQVA7QUFDSDs7QUFFRDNCLGlCQUFlLENBQUNWLEVBQUQsRUFBSztBQUNoQixVQUFNa0MsVUFBVSxHQUFHLEtBQUszQyxXQUFMLENBQWlCYSxJQUFqQixDQUFzQkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNMLEVBQUYsSUFBUUEsRUFBbkMsQ0FBbkI7QUFDQSxRQUFJLENBQUNrQyxVQUFMLEVBQWlCO0FBQ2pCLFVBQU1JLFVBQVUsR0FBR0osVUFBVSxDQUFDaEMsUUFBOUI7QUFDQSxRQUFJLENBQUMsS0FBS1osS0FBTCxDQUFXNEMsVUFBVSxDQUFDbEMsRUFBdEIsQ0FBTCxFQUFnQyxLQUFLVixLQUFMLENBQVc0QyxVQUFVLENBQUNsQyxFQUF0QixJQUE0QixFQUE1Qjs7QUFDaEMsU0FBSyxJQUFJdUMsRUFBRSxHQUFHLENBQWQsRUFBaUJBLEVBQUUsR0FBR0QsVUFBVSxDQUFDSCxNQUFqQyxFQUF5Q0ksRUFBRSxFQUEzQyxFQUErQztBQUMzQyxZQUFNSCxRQUFRLEdBQUdFLFVBQVUsQ0FBQ0MsRUFBRCxDQUEzQjs7QUFDQSxVQUFJSCxRQUFRLENBQUMzQixJQUFULElBQWlCLFVBQXJCLEVBQWlDO0FBQUMsWUFBSSxDQUFDLEtBQUtuQixLQUFMLENBQVc0QyxVQUFVLENBQUNsQyxFQUF0QixFQUEwQndDLGNBQTFCLENBQXlDSixRQUFRLENBQUNwQyxFQUFsRCxDQUFMLEVBQTRELEtBQUtWLEtBQUwsQ0FBVzRDLFVBQVUsQ0FBQ2xDLEVBQXRCLEVBQTBCb0MsUUFBUSxDQUFDcEMsRUFBbkMsSUFBeUNvQyxRQUFRLENBQUNLLEtBQWxEO0FBQXlELE9BQXZKLE1BQ0s7QUFDRCxZQUFJLENBQUMsS0FBS25ELEtBQUwsQ0FBVzRDLFVBQVUsQ0FBQ2xDLEVBQXRCLEVBQTBCd0MsY0FBMUIsQ0FBeUNKLFFBQVEsQ0FBQ3BDLEVBQWxELENBQUwsRUFBNEQsS0FBS1YsS0FBTCxDQUFXNEMsVUFBVSxDQUFDbEMsRUFBdEIsRUFBMEJvQyxRQUFRLENBQUNwQyxFQUFuQyxJQUF5QyxFQUF6Qzs7QUFDNUQsYUFBSyxJQUFJMEMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR04sUUFBUSxDQUFDbEMsUUFBVCxDQUFrQmlDLE1BQXRDLEVBQThDTyxDQUFDLEVBQS9DLEVBQW1EO0FBQy9DLGdCQUFNTCxPQUFPLEdBQUdELFFBQVEsQ0FBQ2xDLFFBQVQsQ0FBa0J3QyxDQUFsQixDQUFoQjtBQUNBLGNBQUksQ0FBQyxLQUFLcEQsS0FBTCxDQUFXNEMsVUFBVSxDQUFDbEMsRUFBdEIsRUFBMEJvQyxRQUFRLENBQUNwQyxFQUFuQyxFQUF1Q3dDLGNBQXZDLENBQXNESCxPQUFPLENBQUNyQyxFQUE5RCxDQUFMLEVBQXdFLEtBQUtWLEtBQUwsQ0FBVzRDLFVBQVUsQ0FBQ2xDLEVBQXRCLEVBQTBCb0MsUUFBUSxDQUFDcEMsRUFBbkMsRUFBdUNxQyxPQUFPLENBQUNyQyxFQUEvQyxJQUFxRHFDLE9BQU8sQ0FBQ0ksS0FBN0Q7QUFDeEUsY0FBSUosT0FBTyxDQUFDRyxjQUFSLENBQXVCLFVBQXZCLENBQUosRUFBd0M7QUFDeEMsY0FBSSxDQUFDSCxPQUFPLENBQUNNLFVBQVQsSUFBdUIsQ0FBQ04sT0FBTyxDQUFDTyxXQUFwQyxFQUFpRDtBQUNqRCxnQkFBTUMsVUFBVSxHQUFHUixPQUFPLENBQUNNLFVBQVIsSUFBc0JOLE9BQU8sQ0FBQ08sV0FBakQ7QUFDQSxnQkFBTWIsSUFBSSxHQUFHLEtBQUtELE9BQUwsQ0FBYWUsVUFBVSxDQUFDQyxLQUFYLENBQWlCLEdBQWpCLENBQWIsRUFBb0NaLFVBQVUsQ0FBQ2xDLEVBQS9DLEVBQW1Eb0MsUUFBUSxDQUFDcEMsRUFBNUQsQ0FBYjtBQUNBK0MsZ0JBQU0sQ0FBQ0MsY0FBUCxDQUFzQlgsT0FBdEIsRUFBK0IsVUFBL0IsRUFBMkM7QUFDdkNZLGVBQUcsRUFBRSxNQUFNO0FBQ1Asb0JBQU1DLEtBQUssR0FBRyxLQUFLNUQsS0FBTCxDQUFXeUMsSUFBSSxDQUFDRyxVQUFoQixFQUE0QkgsSUFBSSxDQUFDSyxRQUFqQyxFQUEyQ0wsSUFBSSxDQUFDTSxPQUFoRCxDQUFkO0FBQ0EscUJBQU9BLE9BQU8sQ0FBQ00sVUFBUixHQUFxQixDQUFDTyxLQUF0QixHQUE4QkEsS0FBckM7QUFDSDtBQUpzQyxXQUEzQztBQU1IO0FBQ0o7QUFDSjtBQUNKOztBQUVEQyxjQUFZLEdBQUc7QUFDWCxTQUFLLE1BQU1qQixVQUFYLElBQXlCLEtBQUs1QyxLQUE5QixFQUFxQyxLQUFLOEQsY0FBTCxDQUFvQmxCLFVBQXBCO0FBQ3hDOztBQUVEbUIsY0FBWSxHQUFHO0FBQ1gsU0FBSyxNQUFNbkIsVUFBWCxJQUF5QixLQUFLNUMsS0FBOUIsRUFBcUMsS0FBS3FCLGNBQUwsQ0FBb0J1QixVQUFwQjtBQUN4Qzs7QUFFRGtCLGdCQUFjLENBQUNsQixVQUFELEVBQWE7QUFDdkJvQixzREFBUyxDQUFDQyxPQUFWLENBQWtCckIsVUFBbEIsRUFBOEIsS0FBSzVDLEtBQUwsQ0FBVzRDLFVBQVgsQ0FBOUI7QUFDSDs7QUFFRHZCLGdCQUFjLENBQUNYLEVBQUQsRUFBSztBQUNmLFVBQU13RCxhQUFhLEdBQUdGLGtEQUFTLENBQUNHLE9BQVYsQ0FBa0J6RCxFQUFsQixDQUF0QjtBQUNBLFFBQUksQ0FBQ3dELGFBQUwsRUFBb0IsT0FBTyxLQUFLSixjQUFMLENBQW9CcEQsRUFBcEIsQ0FBUDs7QUFDcEIsU0FBSyxNQUFNb0MsUUFBWCxJQUF1QixLQUFLOUMsS0FBTCxDQUFXVSxFQUFYLENBQXZCLEVBQXVDO0FBQ25DLFVBQUksQ0FBQ3dELGFBQWEsQ0FBQ3BCLFFBQUQsQ0FBbEIsRUFBOEJXLE1BQU0sQ0FBQ1csTUFBUCxDQUFjRixhQUFkLEVBQTZCO0FBQUMsU0FBQ3BCLFFBQUQsR0FBWSxLQUFLOUMsS0FBTCxDQUFXVSxFQUFYLEVBQWVvQyxRQUFmO0FBQWIsT0FBN0I7O0FBQzlCLFdBQUssTUFBTUMsT0FBWCxJQUFzQixLQUFLL0MsS0FBTCxDQUFXVSxFQUFYLEVBQWVvQyxRQUFmLENBQXRCLEVBQWdEO0FBQzVDLFlBQUlvQixhQUFhLENBQUNwQixRQUFELENBQWIsQ0FBd0JDLE9BQXhCLEtBQW9Dc0IsU0FBeEMsRUFBbUQ7QUFDbkQsY0FBTUMsVUFBVSxHQUFHLEtBQUtDLFVBQUwsQ0FBZ0I3RCxFQUFoQixFQUFvQm9DLFFBQXBCLEVBQThCQyxPQUE5QixDQUFuQjtBQUNBLFlBQUl1QixVQUFVLENBQUNuRCxJQUFYLElBQW1CLFFBQXZCLEVBQWlDLEtBQUtuQixLQUFMLENBQVdVLEVBQVgsRUFBZW9DLFFBQWYsRUFBeUJDLE9BQXpCLElBQW9DbUIsYUFBYSxDQUFDcEIsUUFBRCxDQUFiLENBQXdCQyxPQUF4QixDQUFwQzs7QUFDakMsWUFBSXVCLFVBQVUsQ0FBQ25ELElBQVgsSUFBbUIsVUFBdkIsRUFBbUM7QUFDL0IsZ0JBQU1xRCxNQUFNLEdBQUdGLFVBQVUsQ0FBQzNDLE9BQVgsQ0FBbUI4QyxJQUFuQixDQUF3QkMsQ0FBQyxJQUFJQSxDQUFDLENBQUN2QixLQUFGLElBQVdlLGFBQWEsQ0FBQ3BCLFFBQUQsQ0FBYixDQUF3QkMsT0FBeEIsQ0FBeEMsQ0FBZjtBQUNBLGNBQUl5QixNQUFKLEVBQVksS0FBS3hFLEtBQUwsQ0FBV1UsRUFBWCxFQUFlb0MsUUFBZixFQUF5QkMsT0FBekIsSUFBb0NtQixhQUFhLENBQUNwQixRQUFELENBQWIsQ0FBd0JDLE9BQXhCLENBQXBDO0FBQ2Y7QUFDSjtBQUNKOztBQUVELFNBQUtlLGNBQUwsQ0FBb0JwRCxFQUFwQixFQWhCZSxDQWdCVTtBQUM1Qjs7QUFFRGlFLGlCQUFlLENBQUMvQixVQUFELEVBQWFFLFFBQWIsRUFBdUJwQyxFQUF2QixFQUEyQnlDLEtBQTNCLEVBQWtDO0FBQzdDLFNBQUtuRCxLQUFMLENBQVc0QyxVQUFYLEVBQXVCRSxRQUF2QixFQUFpQ3BDLEVBQWpDLElBQXVDeUMsS0FBdkM7QUFDQTNDLG9EQUFNLENBQUNvRSxRQUFQLENBQWdCLGlCQUFoQixFQUFtQ2hDLFVBQW5DLEVBQStDRSxRQUEvQyxFQUF5RHBDLEVBQXpELEVBQTZEeUMsS0FBN0Q7QUFDQSxTQUFLVyxjQUFMLENBQW9CbEIsVUFBcEI7QUFDSDs7QUFFRDJCLFlBQVUsQ0FBQzNCLFVBQUQsRUFBYUUsUUFBYixFQUF1QnBDLEVBQXZCLEVBQTJCO0FBQ2pDLFFBQUltRSxTQUFTLENBQUNoQyxNQUFWLElBQW9CLENBQXhCLEVBQTJCLE9BQU8sS0FBSzVDLFdBQUwsQ0FBaUIsQ0FBakIsRUFBb0JhLElBQXBCLENBQXlCQyxDQUFDLElBQUlBLENBQUMsQ0FBQ0wsRUFBRixJQUFRbUUsU0FBUyxDQUFDLENBQUQsQ0FBL0MsRUFBb0RqRSxRQUFwRCxDQUE2REUsSUFBN0QsQ0FBa0VzQyxDQUFDLElBQUlBLENBQUMsQ0FBQzFDLEVBQUYsSUFBUW1FLFNBQVMsQ0FBQyxDQUFELENBQXhGLENBQVA7QUFDM0IsV0FBTyxLQUFLNUUsV0FBTCxDQUFpQmEsSUFBakIsQ0FBc0JDLENBQUMsSUFBSUEsQ0FBQyxDQUFDTCxFQUFGLElBQVFrQyxVQUFuQyxFQUErQ2hDLFFBQS9DLENBQXdERSxJQUF4RCxDQUE2REMsQ0FBQyxJQUFJQSxDQUFDLENBQUNMLEVBQUYsSUFBUW9DLFFBQTFFLEVBQW9GbEMsUUFBcEYsQ0FBNkZFLElBQTdGLENBQWtHc0MsQ0FBQyxJQUFJQSxDQUFDLENBQUMxQyxFQUFGLElBQVFBLEVBQS9HLENBQVA7QUFDSDs7QUFFRGlELEtBQUcsQ0FBQ2YsVUFBRCxFQUFhRSxRQUFiLEVBQXVCcEMsRUFBdkIsRUFBMkI7QUFDMUIsUUFBSW1FLFNBQVMsQ0FBQ2hDLE1BQVYsSUFBb0IsQ0FBeEIsRUFBMkI7QUFDdkJuQyxRQUFFLEdBQUdvQyxRQUFMO0FBQ0FBLGNBQVEsR0FBR0YsVUFBWDtBQUNBQSxnQkFBVSxHQUFHLFVBQWI7QUFDSDs7QUFDRCxRQUFJLENBQUMsS0FBSzVDLEtBQUwsQ0FBVzRDLFVBQVgsQ0FBRCxJQUEyQixDQUFDLEtBQUs1QyxLQUFMLENBQVc0QyxVQUFYLEVBQXVCRSxRQUF2QixDQUFoQyxFQUFrRSxPQUFPLEtBQVA7QUFDbEUsV0FBTyxLQUFLOUMsS0FBTCxDQUFXNEMsVUFBWCxFQUF1QkUsUUFBdkIsRUFBaUNwQyxFQUFqQyxDQUFQO0FBQ0g7O0FBRURvRSxLQUFHLENBQUNsQyxVQUFELEVBQWFFLFFBQWIsRUFBdUJwQyxFQUF2QixFQUEyQnlDLEtBQTNCLEVBQWtDO0FBQ2pDLFFBQUkwQixTQUFTLENBQUNoQyxNQUFWLElBQW9CLENBQXhCLEVBQTJCO0FBQ3ZCTSxXQUFLLEdBQUd6QyxFQUFSO0FBQ0FBLFFBQUUsR0FBR29DLFFBQUw7QUFDQUEsY0FBUSxHQUFHRixVQUFYO0FBQ0FBLGdCQUFVLEdBQUcsVUFBYjtBQUNIOztBQUNELFdBQU8sS0FBSytCLGVBQUwsQ0FBcUIvQixVQUFyQixFQUFpQ0UsUUFBakMsRUFBMkNwQyxFQUEzQyxFQUErQ3lDLEtBQS9DLENBQVA7QUFDSDs7QUFFRDFDLElBQUUsQ0FBQ21DLFVBQUQsRUFBYUUsUUFBYixFQUF1QmlDLFVBQXZCLEVBQW1DQyxRQUFuQyxFQUE2QztBQUMzQyxVQUFNQyxPQUFPLEdBQUcsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVd6RSxFQUFYLEVBQWV5QyxLQUFmLEtBQXlCO0FBQ3JDLFVBQUkrQixHQUFHLEtBQUt0QyxVQUFSLElBQXNCdUMsR0FBRyxLQUFLckMsUUFBOUIsSUFBMENwQyxFQUFFLEtBQUtxRSxVQUFyRCxFQUFpRTtBQUNqRUMsY0FBUSxDQUFDN0IsS0FBRCxDQUFSO0FBQ0gsS0FIRDs7QUFJQTNDLG9EQUFNLENBQUNDLEVBQVAsQ0FBVSxpQkFBVixFQUE2QndFLE9BQTdCO0FBQ0EsV0FBTyxNQUFNO0FBQUN6RSxzREFBTSxDQUFDNEUsR0FBUCxDQUFXLGlCQUFYLEVBQThCSCxPQUE5QjtBQUF3QyxLQUF0RDtBQUNIOztBQUVEOUUsZUFBYSxHQUFHO0FBQ1o7QUFDQSxTQUFLLElBQUlZLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUcsS0FBS2QsV0FBTCxDQUFpQjRDLE1BQXJDLEVBQTZDOUIsQ0FBQyxFQUE5QyxFQUFrRDtBQUM5QyxZQUFNNkIsVUFBVSxHQUFHLEtBQUszQyxXQUFMLENBQWlCYyxDQUFqQixDQUFuQjtBQUNBLFlBQU1zRSxFQUFFLEdBQUdDLGdEQUFPLENBQUNDLFdBQVIsQ0FBb0IzQyxVQUFVLENBQUNsQyxFQUEvQixDQUFYO0FBQ0EsVUFBSSxDQUFDMkUsRUFBTCxFQUFTO0FBQ1R6QyxnQkFBVSxDQUFDakMsSUFBWCxHQUFrQjBFLEVBQUUsQ0FBQzFFLElBQUgsSUFBV2lDLFVBQVUsQ0FBQ2pDLElBQXhDO0FBQ0EsWUFBTXFDLFVBQVUsR0FBRyxLQUFLL0MsV0FBTCxDQUFpQmMsQ0FBakIsRUFBb0JILFFBQXZDOztBQUNBLFdBQUssSUFBSXVFLEdBQUcsR0FBRyxDQUFmLEVBQWtCQSxHQUFHLEdBQUduQyxVQUFVLENBQUNILE1BQW5DLEVBQTJDc0MsR0FBRyxFQUE5QyxFQUFrRDtBQUM5QyxjQUFNckMsUUFBUSxHQUFHRSxVQUFVLENBQUNtQyxHQUFELENBQTNCO0FBQ0EsY0FBTUssTUFBTSxHQUFHSCxFQUFFLENBQUN2QyxRQUFRLENBQUNwQyxFQUFWLENBQWpCO0FBQ0EsWUFBSSxDQUFDOEUsTUFBTCxFQUFhO0FBQ2IxQyxnQkFBUSxDQUFDbkMsSUFBVCxHQUFnQjZFLE1BQU0sQ0FBQzdFLElBQVAsSUFBZW1DLFFBQVEsQ0FBQ25DLElBQXhDOztBQUNBLGFBQUssSUFBSXlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdOLFFBQVEsQ0FBQ2xDLFFBQVQsQ0FBa0JpQyxNQUF0QyxFQUE4Q08sQ0FBQyxFQUEvQyxFQUFtRDtBQUMvQyxnQkFBTUwsT0FBTyxHQUFHRCxRQUFRLENBQUNsQyxRQUFULENBQWtCd0MsQ0FBbEIsQ0FBaEI7QUFDQSxnQkFBTXFDLE1BQU0sR0FBR0QsTUFBTSxDQUFDekMsT0FBTyxDQUFDckMsRUFBVCxDQUFyQjtBQUNBLGNBQUksQ0FBQytFLE1BQUwsRUFBYTtBQUNiMUMsaUJBQU8sQ0FBQ3BDLElBQVIsR0FBZThFLE1BQU0sQ0FBQzlFLElBQVAsSUFBZW9DLE9BQU8sQ0FBQ3BDLElBQXRDO0FBQ0FvQyxpQkFBTyxDQUFDMkMsSUFBUixHQUFlRCxNQUFNLENBQUNDLElBQVAsSUFBZTNDLE9BQU8sQ0FBQzJDLElBQXRDO0FBQ0EsY0FBSSxDQUFDM0MsT0FBTyxDQUFDcEIsT0FBYixFQUFzQjs7QUFDdEIsZUFBSyxNQUFNZ0UsR0FBWCxJQUFrQjVDLE9BQU8sQ0FBQ3BCLE9BQTFCLEVBQW1DO0FBQy9CZ0UsZUFBRyxDQUFDMUQsS0FBSixHQUFZd0QsTUFBTSxDQUFDOUQsT0FBUCxDQUFlZ0UsR0FBRyxDQUFDakYsRUFBbkIsS0FBMEIrRSxNQUFNLENBQUM5RCxPQUFQLENBQWVnRSxHQUFHLENBQUN4QyxLQUFuQixDQUExQixJQUF1RHdDLEdBQUcsQ0FBQzFELEtBQXZFO0FBQ0g7QUFDSjtBQUNKO0FBQ0osS0F6QlcsQ0EyQlo7OztBQUNBLFNBQUssSUFBSUwsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRyxLQUFLMUIsTUFBTCxDQUFZMkMsTUFBaEMsRUFBd0NqQixDQUFDLEVBQXpDLEVBQTZDO0FBQ3pDLFlBQU1nRSxLQUFLLEdBQUcsS0FBSzFGLE1BQUwsQ0FBWTBCLENBQVosQ0FBZDtBQUNBLFlBQU1pRSxHQUFHLEdBQUdQLGdEQUFPLENBQUNRLE1BQVIsQ0FBZUYsS0FBSyxDQUFDbEYsRUFBckIsQ0FBWjtBQUNBa0YsV0FBSyxDQUFDM0QsS0FBTixHQUFjNEQsR0FBRyxJQUFJRCxLQUFLLENBQUMzRCxLQUEzQjtBQUNIO0FBQ0o7O0FBOUxvQyxDQUExQixFQUFmIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvc2V0dGluZ3NtYW5hZ2VyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZXR0aW5nc0NvbmZpZ30gZnJvbSBcImRhdGFcIjtcclxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi9sb2dnZXJcIjtcclxuaW1wb3J0IERhdGFTdG9yZSBmcm9tIFwiLi9kYXRhc3RvcmVcIjtcclxuaW1wb3J0IEV2ZW50cyBmcm9tIFwiLi9lbWl0dGVyXCI7XHJcbmltcG9ydCBEaXNjb3JkTW9kdWxlcyBmcm9tIFwiLi9kaXNjb3JkbW9kdWxlc1wiO1xyXG5pbXBvcnQgU3RyaW5ncyBmcm9tIFwiLi9zdHJpbmdzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgU2V0dGluZ3NNYW5hZ2VyIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge307XHJcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9ucyA9IFtdO1xyXG4gICAgICAgIHRoaXMucGFuZWxzID0gW107XHJcbiAgICAgICAgdGhpcy51cGRhdGVTdHJpbmdzID0gdGhpcy51cGRhdGVTdHJpbmdzLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdGlhbGl6ZSgpIHtcclxuICAgICAgICB0aGlzLnJlZ2lzdGVyQ29sbGVjdGlvbihcInNldHRpbmdzXCIsIFwiU2V0dGluZ3NcIiwgU2V0dGluZ3NDb25maWcpO1xyXG4gICAgICAgIEV2ZW50cy5vbihcInN0cmluZ3MtdXBkYXRlZFwiLCB0aGlzLnVwZGF0ZVN0cmluZ3MpO1xyXG4gICAgICAgIC8vIHRoaXMucGF0Y2hTZWN0aW9ucygpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyQ29sbGVjdGlvbihpZCwgbmFtZSwgc2V0dGluZ3MsIGJ1dHRvbiA9IG51bGwpIHtcclxuICAgICAgICBpZiAodGhpcy5jb2xsZWN0aW9ucy5maW5kKGMgPT4gYy5pZCA9PSBpZCkpIHJldHVybiBMb2dnZXIuZXJyb3IoXCJTZXR0aW5nc1wiLCBcIkFscmVhZHkgaGF2ZSBhIGNvbGxlY3Rpb24gd2l0aCBpZCBcIiArIGlkKTtcclxuICAgICAgICB0aGlzLmNvbGxlY3Rpb25zLnB1c2goe1xyXG4gICAgICAgICAgICB0eXBlOiBcImNvbGxlY3Rpb25cIixcclxuICAgICAgICAgICAgaWQ6IGlkLFxyXG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxyXG4gICAgICAgICAgICBzZXR0aW5nczogc2V0dGluZ3MsXHJcbiAgICAgICAgICAgIGJ1dHRvbjogYnV0dG9uXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zZXR1cENvbGxlY3Rpb24oaWQpO1xyXG4gICAgICAgIHRoaXMubG9hZENvbGxlY3Rpb24oaWQpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlU3RyaW5ncygpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZUNvbGxlY3Rpb24oaWQpIHtcclxuICAgICAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMuY29sbGVjdGlvbnMuZmluZEluZGV4KGMgPT4gYy5pZCA9PSBpZCk7XHJcbiAgICAgICAgaWYgKCFsb2NhdGlvbiA8IDApIHJldHVybiBMb2dnZXIuZXJyb3IoXCJTZXR0aW5nc1wiLCBcIk5vIGNvbGxlY3Rpb24gd2l0aCBpZCBcIiArIGlkKTtcclxuICAgICAgICB0aGlzLmNvbGxlY3Rpb25zLnNwbGljZShsb2NhdGlvbiwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVE9ETzogTW92ZSB0aGlzIHRvIFNldHRpbmdzUmVuZGVyZXIgYW5kIGFsc28gYWRkIGEgcmVnaXN0ZXJDb250ZW50UGFuZWxcclxuICAgIHJlZ2lzdGVyUGFuZWwoaWQsIG5hbWUsIG9wdGlvbnMpIHtcclxuICAgICAgICBpZiAodGhpcy5wYW5lbHMuZmluZChwID0+IHAuaWQgPT0gaWQpKSByZXR1cm4gTG9nZ2VyLmVycm9yKFwiU2V0dGluZ3NcIiwgXCJBbHJlYWR5IGhhdmUgYSBwYW5lbCB3aXRoIGlkIFwiICsgaWQpO1xyXG4gICAgICAgIGNvbnN0IHtlbGVtZW50LCBvbkNsaWNrLCBvcmRlciA9IDF9ID0gb3B0aW9ucztcclxuICAgICAgICBjb25zdCBzZWN0aW9uID0ge2lkLCBvcmRlciwgbGFiZWw6IG5hbWUsIHNlY3Rpb246IGlkfTtcclxuICAgICAgICBpZiAob25DbGljaykgc2VjdGlvbi5jbGlja0xpc3RlbmVyID0gb25DbGljaztcclxuICAgICAgICBpZiAoZWxlbWVudCkgc2VjdGlvbi5lbGVtZW50ID0gZWxlbWVudCBpbnN0YW5jZW9mIERpc2NvcmRNb2R1bGVzLlJlYWN0LkNvbXBvbmVudCA/ICgpID0+IERpc2NvcmRNb2R1bGVzLlJlYWN0LmNyZWF0ZUVsZW1lbnQoZWxlbWVudCwge30pIDogdHlwZW9mKGVsZW1lbnQpID09IFwiZnVuY3Rpb25cIiA/IGVsZW1lbnQgOiAoKSA9PiBlbGVtZW50O1xyXG4gICAgICAgIHRoaXMucGFuZWxzLnB1c2goc2VjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlUGFuZWwoaWQpIHtcclxuICAgICAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMucGFuZWxzLmZpbmRJbmRleChjID0+IGMuaWQgPT0gaWQpO1xyXG4gICAgICAgIGlmICghbG9jYXRpb24gPCAwKSByZXR1cm4gTG9nZ2VyLmVycm9yKFwiU2V0dGluZ3NcIiwgXCJObyBjb2xsZWN0aW9uIHdpdGggaWQgXCIgKyBpZCk7XHJcbiAgICAgICAgdGhpcy5wYW5lbHMuc3BsaWNlKGxvY2F0aW9uLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQYXRoKHBhdGgsIGNvbGxlY3Rpb25JZCA9IFwiXCIsIGNhdGVnb3J5SWQgPSBcIlwiKSB7XHJcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IHBhdGgubGVuZ3RoID09IDMgPyBwYXRoWzBdIDogY29sbGVjdGlvbklkO1xyXG4gICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gcGF0aC5sZW5ndGggPT0gMyA/IHBhdGhbMV0gOiBwYXRoLmxlbmd0aCA9PSAyID8gcGF0aFswXSA6IGNhdGVnb3J5SWQ7XHJcbiAgICAgICAgY29uc3Qgc2V0dGluZyA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcclxuICAgICAgICByZXR1cm4ge2NvbGxlY3Rpb24sIGNhdGVnb3J5LCBzZXR0aW5nfTtcclxuICAgIH1cclxuXHJcbiAgICBzZXR1cENvbGxlY3Rpb24oaWQpIHtcclxuICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5jb2xsZWN0aW9ucy5maW5kKGMgPT4gYy5pZCA9PSBpZCk7XHJcbiAgICAgICAgaWYgKCFjb2xsZWN0aW9uKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgY2F0ZWdvcmllcyA9IGNvbGxlY3Rpb24uc2V0dGluZ3M7XHJcbiAgICAgICAgaWYgKCF0aGlzLnN0YXRlW2NvbGxlY3Rpb24uaWRdKSB0aGlzLnN0YXRlW2NvbGxlY3Rpb24uaWRdID0ge307XHJcbiAgICAgICAgZm9yIChsZXQgY2MgPSAwOyBjYyA8IGNhdGVnb3JpZXMubGVuZ3RoOyBjYysrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gY2F0ZWdvcmllc1tjY107XHJcbiAgICAgICAgICAgIGlmIChjYXRlZ29yeS50eXBlICE9IFwiY2F0ZWdvcnlcIikge2lmICghdGhpcy5zdGF0ZVtjb2xsZWN0aW9uLmlkXS5oYXNPd25Qcm9wZXJ0eShjYXRlZ29yeS5pZCkpIHRoaXMuc3RhdGVbY29sbGVjdGlvbi5pZF1bY2F0ZWdvcnkuaWRdID0gY2F0ZWdvcnkudmFsdWU7fVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zdGF0ZVtjb2xsZWN0aW9uLmlkXS5oYXNPd25Qcm9wZXJ0eShjYXRlZ29yeS5pZCkpIHRoaXMuc3RhdGVbY29sbGVjdGlvbi5pZF1bY2F0ZWdvcnkuaWRdID0ge307XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8IGNhdGVnb3J5LnNldHRpbmdzLmxlbmd0aDsgcysrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2V0dGluZyA9IGNhdGVnb3J5LnNldHRpbmdzW3NdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zdGF0ZVtjb2xsZWN0aW9uLmlkXVtjYXRlZ29yeS5pZF0uaGFzT3duUHJvcGVydHkoc2V0dGluZy5pZCkpIHRoaXMuc3RhdGVbY29sbGVjdGlvbi5pZF1bY2F0ZWdvcnkuaWRdW3NldHRpbmcuaWRdID0gc2V0dGluZy52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZy5oYXNPd25Qcm9wZXJ0eShcImRpc2FibGVkXCIpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXNldHRpbmcuZW5hYmxlV2l0aCAmJiAhc2V0dGluZy5kaXNhYmxlV2l0aCkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aFN0cmluZyA9IHNldHRpbmcuZW5hYmxlV2l0aCB8fCBzZXR0aW5nLmRpc2FibGVXaXRoO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSB0aGlzLmdldFBhdGgocGF0aFN0cmluZy5zcGxpdChcIi5cIiksIGNvbGxlY3Rpb24uaWQsIGNhdGVnb3J5LmlkKTtcclxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc2V0dGluZywgXCJkaXNhYmxlZFwiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3RoZXIgPSB0aGlzLnN0YXRlW3BhdGguY29sbGVjdGlvbl1bcGF0aC5jYXRlZ29yeV1bcGF0aC5zZXR0aW5nXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXR0aW5nLmVuYWJsZVdpdGggPyAhb3RoZXIgOiBvdGhlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNhdmVTZXR0aW5ncygpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGNvbGxlY3Rpb24gaW4gdGhpcy5zdGF0ZSkgdGhpcy5zYXZlQ29sbGVjdGlvbihjb2xsZWN0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkU2V0dGluZ3MoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBjb2xsZWN0aW9uIGluIHRoaXMuc3RhdGUpIHRoaXMubG9hZENvbGxlY3Rpb24oY29sbGVjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUNvbGxlY3Rpb24oY29sbGVjdGlvbikge1xyXG4gICAgICAgIERhdGFTdG9yZS5zZXREYXRhKGNvbGxlY3Rpb24sIHRoaXMuc3RhdGVbY29sbGVjdGlvbl0pO1xyXG4gICAgfVxyXG5cclxuICAgIGxvYWRDb2xsZWN0aW9uKGlkKSB7XHJcbiAgICAgICAgY29uc3QgcHJldmlvdXNTdGF0ZSA9IERhdGFTdG9yZS5nZXREYXRhKGlkKTtcclxuICAgICAgICBpZiAoIXByZXZpb3VzU3RhdGUpIHJldHVybiB0aGlzLnNhdmVDb2xsZWN0aW9uKGlkKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IGluIHRoaXMuc3RhdGVbaWRdKSB7XHJcbiAgICAgICAgICAgIGlmICghcHJldmlvdXNTdGF0ZVtjYXRlZ29yeV0pIE9iamVjdC5hc3NpZ24ocHJldmlvdXNTdGF0ZSwge1tjYXRlZ29yeV06IHRoaXMuc3RhdGVbaWRdW2NhdGVnb3J5XX0pO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHNldHRpbmcgaW4gdGhpcy5zdGF0ZVtpZF1bY2F0ZWdvcnldKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNTdGF0ZVtjYXRlZ29yeV1bc2V0dGluZ10gPT0gdW5kZWZpbmVkKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNldHRpbmdPYmogPSB0aGlzLmdldFNldHRpbmcoaWQsIGNhdGVnb3J5LCBzZXR0aW5nKTtcclxuICAgICAgICAgICAgICAgIGlmIChzZXR0aW5nT2JqLnR5cGUgPT0gXCJzd2l0Y2hcIikgdGhpcy5zdGF0ZVtpZF1bY2F0ZWdvcnldW3NldHRpbmddID0gcHJldmlvdXNTdGF0ZVtjYXRlZ29yeV1bc2V0dGluZ107XHJcbiAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ09iai50eXBlID09IFwiZHJvcGRvd25cIikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0cyA9IHNldHRpbmdPYmoub3B0aW9ucy5zb21lKG8gPT4gby52YWx1ZSA9PSBwcmV2aW91c1N0YXRlW2NhdGVnb3J5XVtzZXR0aW5nXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV4aXN0cykgdGhpcy5zdGF0ZVtpZF1bY2F0ZWdvcnldW3NldHRpbmddID0gcHJldmlvdXNTdGF0ZVtjYXRlZ29yeV1bc2V0dGluZ107XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2F2ZUNvbGxlY3Rpb24oaWQpOyAvLyBpbiBjYXNlIG5ldyB0aGluZ3Mgd2VyZSBhZGRlZFxyXG4gICAgfVxyXG5cclxuICAgIG9uU2V0dGluZ0NoYW5nZShjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXVtjYXRlZ29yeV1baWRdID0gdmFsdWU7XHJcbiAgICAgICAgRXZlbnRzLmRpc3BhdGNoKFwic2V0dGluZy11cGRhdGVkXCIsIGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCwgdmFsdWUpO1xyXG4gICAgICAgIHRoaXMuc2F2ZUNvbGxlY3Rpb24oY29sbGVjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2V0dGluZyhjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpIHtcclxuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAyKSByZXR1cm4gdGhpcy5jb2xsZWN0aW9uc1swXS5maW5kKGMgPT4gYy5pZCA9PSBhcmd1bWVudHNbMF0pLnNldHRpbmdzLmZpbmQocyA9PiBzLmlkID09IGFyZ3VtZW50c1sxXSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbnMuZmluZChjID0+IGMuaWQgPT0gY29sbGVjdGlvbikuc2V0dGluZ3MuZmluZChjID0+IGMuaWQgPT0gY2F0ZWdvcnkpLnNldHRpbmdzLmZpbmQocyA9PiBzLmlkID09IGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSB7XHJcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMikge1xyXG4gICAgICAgICAgICBpZCA9IGNhdGVnb3J5O1xyXG4gICAgICAgICAgICBjYXRlZ29yeSA9IGNvbGxlY3Rpb247XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb24gPSBcInNldHRpbmdzXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXSB8fCAhdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXVtjYXRlZ29yeV0pIHJldHVybiBmYWxzZTtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXVtjYXRlZ29yeV1baWRdO1xyXG4gICAgfVxyXG5cclxuICAgIHNldChjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMykge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IGlkO1xyXG4gICAgICAgICAgICBpZCA9IGNhdGVnb3J5O1xyXG4gICAgICAgICAgICBjYXRlZ29yeSA9IGNvbGxlY3Rpb247XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb24gPSBcInNldHRpbmdzXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLm9uU2V0dGluZ0NoYW5nZShjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBvbihjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWRlbnRpZmllciwgY2FsbGJhY2spIHtcclxuICAgICAgICBjb25zdCBoYW5kbGVyID0gKGNvbCwgY2F0LCBpZCwgdmFsdWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbCAhPT0gY29sbGVjdGlvbiB8fCBjYXQgIT09IGNhdGVnb3J5IHx8IGlkICE9PSBpZGVudGlmaWVyKSByZXR1cm47XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKHZhbHVlKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIEV2ZW50cy5vbihcInNldHRpbmctdXBkYXRlZFwiLCBoYW5kbGVyKTtcclxuICAgICAgICByZXR1cm4gKCkgPT4ge0V2ZW50cy5vZmYoXCJzZXR0aW5nLXVwZGF0ZWRcIiwgaGFuZGxlcik7fTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVTdHJpbmdzKCkge1xyXG4gICAgICAgIC8vIFVwZGF0ZSBzZXR0aW5ncyBjb2xsZWN0aW9uc1xyXG4gICAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgdGhpcy5jb2xsZWN0aW9ucy5sZW5ndGg7IGMrKykge1xyXG4gICAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5jb2xsZWN0aW9uc1tjXTtcclxuICAgICAgICAgICAgY29uc3QgQ1MgPSBTdHJpbmdzLkNvbGxlY3Rpb25zW2NvbGxlY3Rpb24uaWRdO1xyXG4gICAgICAgICAgICBpZiAoIUNTKSBjb250aW51ZTtcclxuICAgICAgICAgICAgY29sbGVjdGlvbi5uYW1lID0gQ1MubmFtZSB8fCBjb2xsZWN0aW9uLm5hbWU7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSB0aGlzLmNvbGxlY3Rpb25zW2NdLnNldHRpbmdzO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBjYXQgPSAwOyBjYXQgPCBjYXRlZ29yaWVzLmxlbmd0aDsgY2F0KyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gY2F0ZWdvcmllc1tjYXRdO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgQ2F0U3RyID0gQ1NbY2F0ZWdvcnkuaWRdO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFDYXRTdHIpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2F0ZWdvcnkubmFtZSA9IENhdFN0ci5uYW1lIHx8IGNhdGVnb3J5Lm5hbWU7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8IGNhdGVnb3J5LnNldHRpbmdzLmxlbmd0aDsgcysrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2V0dGluZyA9IGNhdGVnb3J5LnNldHRpbmdzW3NdO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFNldFN0ciA9IENhdFN0cltzZXR0aW5nLmlkXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIVNldFN0cikgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0dGluZy5uYW1lID0gU2V0U3RyLm5hbWUgfHwgc2V0dGluZy5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmcubm90ZSA9IFNldFN0ci5ub3RlIHx8IHNldHRpbmcubm90ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXNldHRpbmcub3B0aW9ucykgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBvcHQgb2Ygc2V0dGluZy5vcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdC5sYWJlbCA9IFNldFN0ci5vcHRpb25zW29wdC5pZF0gfHwgU2V0U3RyLm9wdGlvbnNbb3B0LnZhbHVlXSB8fCBvcHQubGFiZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBVcGRhdGUgcGFuZWwgbGFiZWxzXHJcbiAgICAgICAgZm9yIChsZXQgcCA9IDA7IHAgPCB0aGlzLnBhbmVscy5sZW5ndGg7IHArKykge1xyXG4gICAgICAgICAgICBjb25zdCBwYW5lbCA9IHRoaXMucGFuZWxzW3BdO1xyXG4gICAgICAgICAgICBjb25zdCBTdHIgPSBTdHJpbmdzLlBhbmVsc1twYW5lbC5pZF07XHJcbiAgICAgICAgICAgIHBhbmVsLmxhYmVsID0gU3RyIHx8IHBhbmVsLmxhYmVsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/settingsmanager.js\n"); /***/ }), @@ -598,7 +598,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _loc /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _addonmanager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./addonmanager */ \"./src/modules/addonmanager.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _dommanager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dommanager */ \"./src/modules/dommanager.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _ui_settings__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ui/settings */ \"./src/ui/settings.js\");\n\n\n\n\n\n\n\n\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ThemeManager extends _addonmanager__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n get name() {\n return \"ThemeManager\";\n }\n\n get moduleExtension() {\n return \".css\";\n }\n\n get extension() {\n return \".theme.css\";\n }\n\n get addonFolder() {\n return path.resolve(data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"themes\");\n }\n\n get prefix() {\n return \"theme\";\n }\n\n get language() {\n return \"css\";\n }\n\n initialize() {\n const errors = super.initialize();\n _settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerPanel(\"themes\", _strings__WEBPACK_IMPORTED_MODULE_4__[\"default\"].Panels.themes, {\n element: () => _ui_settings__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getAddonPanel(_strings__WEBPACK_IMPORTED_MODULE_4__[\"default\"].Panels.themes, this.addonList, this.state, {\n folder: this.addonFolder,\n onChange: this.toggleTheme.bind(this),\n reload: this.reloadTheme.bind(this),\n refreshList: this.updateThemeList.bind(this),\n saveAddon: this.saveAddon.bind(this),\n editAddon: this.editAddon.bind(this),\n deleteAddon: this.deleteAddon.bind(this),\n prefix: this.prefix\n })\n });\n return errors;\n }\n /* Aliases */\n\n\n updateThemeList() {\n return this.updateList();\n }\n\n loadAllThemes() {\n return this.loadAllAddons();\n }\n\n enableTheme(idOrAddon) {\n return this.enableAddon(idOrAddon);\n }\n\n disableTheme(idOrAddon) {\n return this.disableAddon(idOrAddon);\n }\n\n toggleTheme(id) {\n return this.toggleAddon(id);\n }\n\n unloadTheme(idOrFileOrAddon) {\n return this.unloadAddon(idOrFileOrAddon);\n }\n\n loadTheme(filename) {\n const error = this.loadAddon(filename);\n if (error) _ui_modals__WEBPACK_IMPORTED_MODULE_6__[\"default\"].showAddonErrors({\n themes: [error]\n });\n }\n\n reloadTheme(idOrFileOrAddon) {\n const error = this.reloadAddon(idOrFileOrAddon);\n if (error) _ui_modals__WEBPACK_IMPORTED_MODULE_6__[\"default\"].showAddonErrors({\n themes: [error]\n });\n }\n /* Overrides */\n\n\n getFileModification(module, fileContent, meta) {\n meta.css = fileContent;\n return `module.exports = ${JSON.stringify(meta)};`;\n }\n\n startAddon(id) {\n return this.addTheme(id);\n }\n\n stopAddon(id) {\n return this.removeTheme(id);\n }\n\n addTheme(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n _dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].injectTheme(addon.id, addon.css);\n _ui_toasts__WEBPACK_IMPORTED_MODULE_5__[\"default\"].show(_strings__WEBPACK_IMPORTED_MODULE_4__[\"default\"].Addons.enabled.format({\n name: addon.name,\n version: addon.version\n }));\n }\n\n removeTheme(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n _dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].removeTheme(addon.id);\n _ui_toasts__WEBPACK_IMPORTED_MODULE_5__[\"default\"].show(_strings__WEBPACK_IMPORTED_MODULE_4__[\"default\"].Addons.disabled.format({\n name: addon.name,\n version: addon.version\n }));\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy90aGVtZW1hbmFnZXIuanM/NDA3OCJdLCJuYW1lcyI6WyJwYXRoIiwicmVxdWlyZSIsIlRoZW1lTWFuYWdlciIsIkFkZG9uTWFuYWdlciIsIm5hbWUiLCJtb2R1bGVFeHRlbnNpb24iLCJleHRlbnNpb24iLCJhZGRvbkZvbGRlciIsInJlc29sdmUiLCJDb25maWciLCJkYXRhUGF0aCIsInByZWZpeCIsImxhbmd1YWdlIiwiaW5pdGlhbGl6ZSIsImVycm9ycyIsIlNldHRpbmdzIiwicmVnaXN0ZXJQYW5lbCIsIlN0cmluZ3MiLCJQYW5lbHMiLCJ0aGVtZXMiLCJlbGVtZW50IiwiU2V0dGluZ3NSZW5kZXJlciIsImdldEFkZG9uUGFuZWwiLCJhZGRvbkxpc3QiLCJzdGF0ZSIsImZvbGRlciIsIm9uQ2hhbmdlIiwidG9nZ2xlVGhlbWUiLCJiaW5kIiwicmVsb2FkIiwicmVsb2FkVGhlbWUiLCJyZWZyZXNoTGlzdCIsInVwZGF0ZVRoZW1lTGlzdCIsInNhdmVBZGRvbiIsImVkaXRBZGRvbiIsImRlbGV0ZUFkZG9uIiwidXBkYXRlTGlzdCIsImxvYWRBbGxUaGVtZXMiLCJsb2FkQWxsQWRkb25zIiwiZW5hYmxlVGhlbWUiLCJpZE9yQWRkb24iLCJlbmFibGVBZGRvbiIsImRpc2FibGVUaGVtZSIsImRpc2FibGVBZGRvbiIsImlkIiwidG9nZ2xlQWRkb24iLCJ1bmxvYWRUaGVtZSIsImlkT3JGaWxlT3JBZGRvbiIsInVubG9hZEFkZG9uIiwibG9hZFRoZW1lIiwiZmlsZW5hbWUiLCJlcnJvciIsImxvYWRBZGRvbiIsIk1vZGFscyIsInNob3dBZGRvbkVycm9ycyIsInJlbG9hZEFkZG9uIiwiZ2V0RmlsZU1vZGlmaWNhdGlvbiIsIm1vZHVsZSIsImZpbGVDb250ZW50IiwibWV0YSIsImNzcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGFydEFkZG9uIiwiYWRkVGhlbWUiLCJzdG9wQWRkb24iLCJyZW1vdmVUaGVtZSIsImFkZG9uIiwiZmluZCIsInAiLCJET01NYW5hZ2VyIiwiaW5qZWN0VGhlbWUiLCJUb2FzdHMiLCJzaG93IiwiQWRkb25zIiwiZW5hYmxlZCIsImZvcm1hdCIsInZlcnNpb24iLCJkaXNhYmxlZCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTs7QUFFQSxNQUFNQSxJQUFJLEdBQUdDLG1CQUFPLENBQUMsa0JBQUQsQ0FBcEI7O0FBRWUsbUVBQUksTUFBTUMsWUFBTixTQUEyQkMscURBQTNCLENBQXdDO0FBQ3ZELE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sY0FBUDtBQUF1Qjs7QUFDbkMsTUFBSUMsZUFBSixHQUFzQjtBQUFDLFdBQU8sTUFBUDtBQUFlOztBQUN0QyxNQUFJQyxTQUFKLEdBQWdCO0FBQUMsV0FBTyxZQUFQO0FBQXFCOztBQUN0QyxNQUFJQyxXQUFKLEdBQWtCO0FBQUMsV0FBT1AsSUFBSSxDQUFDUSxPQUFMLENBQWFDLDJDQUFNLENBQUNDLFFBQXBCLEVBQThCLFFBQTlCLENBQVA7QUFBZ0Q7O0FBQ25FLE1BQUlDLE1BQUosR0FBYTtBQUFDLFdBQU8sT0FBUDtBQUFnQjs7QUFDOUIsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxLQUFQO0FBQWM7O0FBRTlCQyxZQUFVLEdBQUc7QUFDVCxVQUFNQyxNQUFNLEdBQUcsTUFBTUQsVUFBTixFQUFmO0FBQ0FFLDREQUFRLENBQUNDLGFBQVQsQ0FBdUIsUUFBdkIsRUFBaUNDLGdEQUFPLENBQUNDLE1BQVIsQ0FBZUMsTUFBaEQsRUFBd0Q7QUFBQ0MsYUFBTyxFQUFFLE1BQU1DLG9EQUFnQixDQUFDQyxhQUFqQixDQUErQkwsZ0RBQU8sQ0FBQ0MsTUFBUixDQUFlQyxNQUE5QyxFQUFzRCxLQUFLSSxTQUEzRCxFQUFzRSxLQUFLQyxLQUEzRSxFQUFrRjtBQUN0SkMsY0FBTSxFQUFFLEtBQUtsQixXQUR5STtBQUV0Sm1C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T0FBZixDQUF1QkMsTUFBdkIsQ0FBOEI7QUFBQ3hFLFVBQUksRUFBRStELEtBQUssQ0FBQy9ELElBQWI7QUFBbUJ5RSxhQUFPLEVBQUVWLEtBQUssQ0FBQ1U7QUFBbEMsS0FBOUIsQ0FBWjtBQUNIOztBQUVEWCxhQUFXLENBQUMxQixTQUFELEVBQVk7QUFDbkIsVUFBTTJCLEtBQUssR0FBRyxPQUFPM0IsU0FBUCxJQUFxQixRQUFyQixHQUFnQyxLQUFLakIsU0FBTCxDQUFlNkMsSUFBZixDQUFvQkMsQ0FBQyxJQUFJQSxDQUFDLENBQUN6QixFQUFGLElBQVFKLFNBQWpDLENBQWhDLEdBQThFQSxTQUE1RjtBQUNBLFFBQUksQ0FBQzJCLEtBQUwsRUFBWTtBQUNaRyx1REFBVSxDQUFDSixXQUFYLENBQXVCQyxLQUFLLENBQUN2QixFQUE3QjtBQUNBNEIsc0RBQU0sQ0FBQ0MsSUFBUCxDQUFZeEQsZ0RBQU8sQ0FBQ3lELE1BQVIsQ0FBZUksUUFBZixDQUF3QkYsTUFBeEIsQ0FBK0I7QUFBQ3hFLFVBQUksRUFBRStELEtBQUssQ0FBQy9ELElBQWI7QUFBbUJ5RSxhQUFPLEVBQUVWLEtBQUssQ0FBQ1U7QUFBbEMsS0FBL0IsQ0FBWjtBQUNIOztBQWhFc0QsQ0FBNUMsRUFBZiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL3RoZW1lbWFuYWdlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQgQWRkb25NYW5hZ2VyIGZyb20gXCIuL2FkZG9ubWFuYWdlclwiO1xyXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3NtYW5hZ2VyXCI7XHJcbmltcG9ydCBET01NYW5hZ2VyIGZyb20gXCIuL2RvbW1hbmFnZXJcIjtcclxuaW1wb3J0IFN0cmluZ3MgZnJvbSBcIi4vc3RyaW5nc1wiO1xyXG5cclxuaW1wb3J0IFRvYXN0cyBmcm9tIFwiLi4vdWkvdG9hc3RzXCI7XHJcbmltcG9ydCBNb2RhbHMgZnJvbSBcIi4uL3VpL21vZGFsc1wiO1xyXG5pbXBvcnQgU2V0dGluZ3NSZW5kZXJlciBmcm9tIFwiLi4vdWkvc2V0dGluZ3NcIjtcclxuXHJcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBUaGVtZU1hbmFnZXIgZXh0ZW5kcyBBZGRvbk1hbmFnZXIge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiVGhlbWVNYW5hZ2VyXCI7fVxyXG4gICAgZ2V0IG1vZHVsZUV4dGVuc2lvbigpIHtyZXR1cm4gXCIuY3NzXCI7fVxyXG4gICAgZ2V0IGV4dGVuc2lvbigpIHtyZXR1cm4gXCIudGhlbWUuY3NzXCI7fVxyXG4gICAgZ2V0IGFkZG9uRm9sZGVyKCkge3JldHVybiBwYXRoLnJlc29sdmUoQ29uZmlnLmRhdGFQYXRoLCBcInRoZW1lc1wiKTt9XHJcbiAgICBnZXQgcHJlZml4KCkge3JldHVybiBcInRoZW1lXCI7fVxyXG4gICAgZ2V0IGxhbmd1YWdlKCkge3JldHVybiBcImNzc1wiO31cclxuXHJcbiAgICBpbml0aWFsaXplKCkge1xyXG4gICAgICAgIGNvbnN0IGVycm9ycyA9IHN1cGVyLmluaXRpYWxpemUoKTtcclxuICAgICAgICBTZXR0aW5ncy5yZWdpc3RlclBhbmVsKFwidGhlbWVzXCIsIFN0cmluZ3MuUGFuZWxzLnRoZW1lcywge2VsZW1lbnQ6ICgpID0+IFNldHRpbmdzUmVuZGVyZXIuZ2V0QWRkb25QYW5lbChTdHJpbmdzLlBhbmVscy50aGVtZXMsIHRoaXMuYWRkb25MaXN0LCB0aGlzLnN0YXRlLCB7XHJcbiAgICAgICAgICAgIGZvbGRlcjogdGhpcy5hZGRvbkZvbGRlcixcclxuICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMudG9nZ2xlVGhlbWUuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgcmVsb2FkOiB0aGlzLnJlbG9hZFRoZW1lLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIHJlZnJlc2hMaXN0OiB0aGlzLnVwZGF0ZVRoZW1lTGlzdC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBzYXZlQWRkb246IHRoaXMuc2F2ZUFkZG9uLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIGVkaXRBZGRvbjogdGhpcy5lZGl0QWRkb24uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgZGVsZXRlQWRkb246IHRoaXMuZGVsZXRlQWRkb24uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgcHJlZml4OiB0aGlzLnByZWZpeFxyXG4gICAgICAgIH0pfSk7XHJcbiAgICAgICAgcmV0dXJuIGVycm9ycztcclxuICAgIH1cclxuXHJcbiAgICAvKiBBbGlhc2VzICovXHJcbiAgICB1cGRhdGVUaGVtZUxpc3QoKSB7cmV0dXJuIHRoaXMudXBkYXRlTGlzdCgpO31cclxuICAgIGxvYWRBbGxUaGVtZXMoKSB7cmV0dXJuIHRoaXMubG9hZEFsbEFkZG9ucygpO31cclxuXHJcbiAgICBlbmFibGVUaGVtZShpZE9yQWRkb24pIHtyZXR1cm4gdGhpcy5lbmFibGVBZGRvbihpZE9yQWRkb24pO31cclxuICAgIGRpc2FibGVUaGVtZShpZE9yQWRkb24pIHtyZXR1cm4gdGhpcy5kaXNhYmxlQWRkb24oaWRPckFkZG9uKTt9XHJcbiAgICB0b2dnbGVUaGVtZShpZCkge3JldHVybiB0aGlzLnRvZ2dsZUFkZG9uKGlkKTt9XHJcblxyXG4gICAgdW5sb2FkVGhlbWUoaWRPckZpbGVPckFkZG9uKSB7cmV0dXJuIHRoaXMudW5sb2FkQWRkb24oaWRPckZpbGVPckFkZG9uKTt9XHJcblxyXG4gICAgbG9hZFRoZW1lKGZpbGVuYW1lKSB7XHJcbiAgICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLmxvYWRBZGRvbihmaWxlbmFtZSk7XHJcbiAgICAgICAgaWYgKGVycm9yKSBNb2RhbHMuc2hvd0FkZG9uRXJyb3JzKHt0aGVtZXM6IFtlcnJvcl19KTtcclxuICAgIH1cclxuXHJcbiAgICByZWxvYWRUaGVtZShpZE9yRmlsZU9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBlcnJvciA9IHRoaXMucmVsb2FkQWRkb24oaWRPckZpbGVPckFkZG9uKTtcclxuICAgICAgICBpZiAoZXJyb3IpIE1vZGFscy5zaG93QWRkb25FcnJvcnMoe3RoZW1lczogW2Vycm9yXX0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qIE92ZXJyaWRlcyAqL1xyXG4gICAgZ2V0RmlsZU1vZGlmaWNhdGlvbihtb2R1bGUsIGZpbGVDb250ZW50LCBtZXRhKSB7XHJcbiAgICAgICAgbWV0YS5jc3MgPSBmaWxlQ29udGVudDtcclxuICAgICAgICByZXR1cm4gYG1vZHVsZS5leHBvcnRzID0gJHtKU09OLnN0cmluZ2lmeShtZXRhKX07YDtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydEFkZG9uKGlkKSB7cmV0dXJuIHRoaXMuYWRkVGhlbWUoaWQpO31cclxuICAgIHN0b3BBZGRvbihpZCkge3JldHVybiB0aGlzLnJlbW92ZVRoZW1lKGlkKTt9XHJcblxyXG4gICAgYWRkVGhlbWUoaWRPckFkZG9uKSB7XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0eXBlb2YoaWRPckFkZG9uKSA9PSBcInN0cmluZ1wiID8gdGhpcy5hZGRvbkxpc3QuZmluZChwID0+IHAuaWQgPT0gaWRPckFkZG9uKSA6IGlkT3JBZGRvbjtcclxuICAgICAgICBpZiAoIWFkZG9uKSByZXR1cm47XHJcbiAgICAgICAgRE9NTWFuYWdlci5pbmplY3RUaGVtZShhZGRvbi5pZCwgYWRkb24uY3NzKTtcclxuICAgICAgICBUb2FzdHMuc2hvdyhTdHJpbmdzLkFkZG9ucy5lbmFibGVkLmZvcm1hdCh7bmFtZTogYWRkb24ubmFtZSwgdmVyc2lvbjogYWRkb24udmVyc2lvbn0pKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVUaGVtZShpZE9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKHAgPT4gcC5pZCA9PSBpZE9yQWRkb24pIDogaWRPckFkZG9uO1xyXG4gICAgICAgIGlmICghYWRkb24pIHJldHVybjtcclxuICAgICAgICBET01NYW5hZ2VyLnJlbW92ZVRoZW1lKGFkZG9uLmlkKTtcclxuICAgICAgICBUb2FzdHMuc2hvdyhTdHJpbmdzLkFkZG9ucy5kaXNhYmxlZC5mb3JtYXQoe25hbWU6IGFkZG9uLm5hbWUsIHZlcnNpb246IGFkZG9uLnZlcnNpb259KSk7XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/thememanager.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _data_data_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../data/data.js */ \"./src/data/data.js\");\n/* harmony import */ var _addonmanager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./addonmanager */ \"./src/modules/addonmanager.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _dommanager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dommanager */ \"./src/modules/dommanager.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _ui_settings__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ui/settings */ \"./src/ui/settings.js\");\n\n\n\n\n\n\n\n\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ThemeManager extends _addonmanager__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n get name() {\n return \"ThemeManager\";\n }\n\n get moduleExtension() {\n return \".css\";\n }\n\n get extension() {\n return \".theme.css\";\n }\n\n get addonFolder() {\n return path.resolve(_data_data_js__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"themes\");\n }\n\n get prefix() {\n return \"theme\";\n }\n\n get language() {\n return \"css\";\n }\n\n initialize() {\n const errors = super.initialize();\n _settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerPanel(\"themes\", _strings__WEBPACK_IMPORTED_MODULE_4__[\"default\"].Panels.themes, {\n element: () => _ui_settings__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getAddonPanel(_strings__WEBPACK_IMPORTED_MODULE_4__[\"default\"].Panels.themes, this.addonList, this.state, {\n folder: this.addonFolder,\n onChange: this.toggleTheme.bind(this),\n reload: this.reloadTheme.bind(this),\n refreshList: this.updateThemeList.bind(this),\n saveAddon: this.saveAddon.bind(this),\n editAddon: this.editAddon.bind(this),\n deleteAddon: this.deleteAddon.bind(this),\n prefix: this.prefix\n })\n });\n return errors;\n }\n /* Aliases */\n\n\n updateThemeList() {\n return this.updateList();\n }\n\n loadAllThemes() {\n return this.loadAllAddons();\n }\n\n enableTheme(idOrAddon) {\n return this.enableAddon(idOrAddon);\n }\n\n disableTheme(idOrAddon) {\n return this.disableAddon(idOrAddon);\n }\n\n toggleTheme(id) {\n return this.toggleAddon(id);\n }\n\n unloadTheme(idOrFileOrAddon) {\n return this.unloadAddon(idOrFileOrAddon);\n }\n\n loadTheme(filename) {\n const error = this.loadAddon(filename);\n if (error) _ui_modals__WEBPACK_IMPORTED_MODULE_6__[\"default\"].showAddonErrors({\n themes: [error]\n });\n }\n\n reloadTheme(idOrFileOrAddon) {\n const error = this.reloadAddon(idOrFileOrAddon);\n if (error) _ui_modals__WEBPACK_IMPORTED_MODULE_6__[\"default\"].showAddonErrors({\n themes: [error]\n });\n }\n /* Overrides */\n\n\n getFileModification(module, fileContent, meta) {\n meta.css = fileContent;\n return `module.exports = ${JSON.stringify(meta)};`;\n }\n\n startAddon(id) {\n return this.addTheme(id);\n }\n\n stopAddon(id) {\n return this.removeTheme(id);\n }\n\n addTheme(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n _dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].injectTheme(addon.id, addon.css);\n _ui_toasts__WEBPACK_IMPORTED_MODULE_5__[\"default\"].show(_strings__WEBPACK_IMPORTED_MODULE_4__[\"default\"].Addons.enabled.format({\n name: addon.name,\n version: addon.version\n }));\n }\n\n removeTheme(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n _dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].removeTheme(addon.id);\n _ui_toasts__WEBPACK_IMPORTED_MODULE_5__[\"default\"].show(_strings__WEBPACK_IMPORTED_MODULE_4__[\"default\"].Addons.disabled.format({\n name: addon.name,\n version: addon.version\n }));\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy90aGVtZW1hbmFnZXIuanM/NDA3OCJdLCJuYW1lcyI6WyJwYXRoIiwicmVxdWlyZSIsIlRoZW1lTWFuYWdlciIsIkFkZG9uTWFuYWdlciIsIm5hbWUiLCJtb2R1bGVFeHRlbnNpb24iLCJleHRlbnNpb24iLCJhZGRvbkZvbGRlciIsInJlc29sdmUiLCJDb25maWciLCJkYXRhUGF0aCIsInByZWZpeCIsImxhbmd1YWdlIiwiaW5pdGlhbGl6ZSIsImVycm9ycyIsIlNldHRpbmdzIiwicmVnaXN0ZXJQYW5lbCIsIlN0cmluZ3MiLCJQYW5lbHMiLCJ0aGVtZXMiLCJlbGVtZW50IiwiU2V0dGluZ3NSZW5kZXJlciIsImdldEFkZG9uUGFuZWwiLCJhZGRvbkxpc3QiLCJzdGF0ZSIsImZvbGRlciIsIm9uQ2hhbmdlIiwidG9nZ2xlVGhlbWUiLCJiaW5kIiwicmVsb2FkIiwicmVsb2FkVGhlbWUiLCJyZWZyZXNoTGlzdCIsInVwZGF0ZVRoZW1lTGlzdCIsInNhdmVBZGRvbiIsImVkaXRBZGRvbiIsImRlbGV0ZUFkZG9uIiwidXBkYXRlTGlzdCIsImxvYWRBbGxUaGVtZXMiLCJsb2FkQWxsQWRkb25zIiwiZW5hYmxlVGhlbWUiLCJpZE9yQWRkb24iLCJlbmFibGVBZGRvbiIsImRpc2FibGVUaGVtZSIsImRpc2FibGVBZGRvbiIsImlkIiwidG9nZ2xlQWRkb24iLCJ1bmxvYWRUaGVtZSIsImlkT3JGaWxlT3JBZGRvbiIsInVubG9hZEFkZG9uIiwibG9hZFRoZW1lIiwiZmlsZW5hbWUiLCJlcnJvciIsImxvYWRBZGRvbiIsIk1vZGFscyIsInNob3dBZGRvbkVycm9ycyIsInJlbG9hZEFkZG9uIiwiZ2V0RmlsZU1vZGlmaWNhdGlvbiIsIm1vZHVsZSIsImZpbGVDb250ZW50IiwibWV0YSIsImNzcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGFydEFkZG9uIiwiYWRkVGhlbWUiLCJzdG9wQWRkb24iLCJyZW1vdmVUaGVtZSIsImFkZG9uIiwiZmluZCIsInAiLCJET01NYW5hZ2VyIiwiaW5qZWN0VGhlbWUiLCJUb2FzdHMiLCJzaG93IiwiQWRkb25zIiwiZW5hYmxlZCIsImZvcm1hdCIsInZlcnNpb24iLCJkaXNhYmxlZCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTs7QUFFQSxNQUFNQSxJQUFJLEdBQUdDLG1CQUFPLENBQUMsa0JBQUQsQ0FBcEI7O0FBRWUsbUVBQUksTUFBTUMsWUFBTixTQUEyQkMscURBQTNCLENBQXdDO0FBQ3ZELE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sY0FBUDtBQUF1Qjs7QUFDbkMsTUFBSUMsZUFBSixHQUFzQjtBQUFDLFdBQU8sTUFBUDtBQUFlOztBQUN0QyxNQUFJQyxTQUFKLEdBQWdCO0FBQUMsV0FBTyxZQUFQO0FBQXFCOztBQUN0QyxNQUFJQyxXQUFKLEdBQWtCO0FBQUMsV0FBT1AsSUFBSSxDQUFDUSxPQUFMLENBQWFDLG9EQUFNLENBQUNDLFFBQXBCLEVBQThCLFFBQTlCLENBQVA7QUFBZ0Q7O0FBQ25FLE1BQUlDLE1BQUosR0FBYTtBQUFDLFdBQU8sT0FBUDtBQUFnQjs7QUFDOUIsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxLQUFQO0FBQWM7O0FBRTlCQyxZQUFVLEdBQUc7QUFDVCxVQUFNQyxNQUFNLEdBQUcsTUFBTUQsVUFBTixFQUFmO0FBQ0FFLDREQUFRLENBQUNDLGFBQVQsQ0FBdUIsUUFBdkIsRUFBaUNDLGdEQUFPLENBQUNDLE1BQVIsQ0FBZUMsTUFBaEQsRUFBd0Q7QUFBQ0MsYUFBTyxFQUFFLE1BQU1DLG9EQUFnQixDQUFDQyxhQUFqQixDQUErQkwsZ0RBQU8sQ0FBQ0MsTUFBUixDQUFlQyxNQUE5QyxFQUFzRCxLQUFLSSxTQUEzRCxFQUFzRSxLQUFLQyxLQUEzRSxFQUFrRjtBQUN0SkMsY0FBTSxFQUFFLEtBQUtsQixXQUR5STtBQUV0Sm1C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T0FBZixDQUF1QkMsTUFBdkIsQ0FBOEI7QUFBQ3hFLFVBQUksRUFBRStELEtBQUssQ0FBQy9ELElBQWI7QUFBbUJ5RSxhQUFPLEVBQUVWLEtBQUssQ0FBQ1U7QUFBbEMsS0FBOUIsQ0FBWjtBQUNIOztBQUVEWCxhQUFXLENBQUMxQixTQUFELEVBQVk7QUFDbkIsVUFBTTJCLEtBQUssR0FBRyxPQUFPM0IsU0FBUCxJQUFxQixRQUFyQixHQUFnQyxLQUFLakIsU0FBTCxDQUFlNkMsSUFBZixDQUFvQkMsQ0FBQyxJQUFJQSxDQUFDLENBQUN6QixFQUFGLElBQVFKLFNBQWpDLENBQWhDLEdBQThFQSxTQUE1RjtBQUNBLFFBQUksQ0FBQzJCLEtBQUwsRUFBWTtBQUNaRyx1REFBVSxDQUFDSixXQUFYLENBQXVCQyxLQUFLLENBQUN2QixFQUE3QjtBQUNBNEIsc0RBQU0sQ0FBQ0MsSUFBUCxDQUFZeEQsZ0RBQU8sQ0FBQ3lELE1BQVIsQ0FBZUksUUFBZixDQUF3QkYsTUFBeEIsQ0FBK0I7QUFBQ3hFLFVBQUksRUFBRStELEtBQUssQ0FBQy9ELElBQWI7QUFBbUJ5RSxhQUFPLEVBQUVWLEtBQUssQ0FBQ1U7QUFBbEMsS0FBL0IsQ0FBWjtBQUNIOztBQWhFc0QsQ0FBNUMsRUFBZiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL3RoZW1lbWFuYWdlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQgQWRkb25NYW5hZ2VyIGZyb20gXCIuL2FkZG9ubWFuYWdlclwiO1xyXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3NtYW5hZ2VyXCI7XHJcbmltcG9ydCBET01NYW5hZ2VyIGZyb20gXCIuL2RvbW1hbmFnZXJcIjtcclxuaW1wb3J0IFN0cmluZ3MgZnJvbSBcIi4vc3RyaW5nc1wiO1xyXG5cclxuaW1wb3J0IFRvYXN0cyBmcm9tIFwiLi4vdWkvdG9hc3RzXCI7XHJcbmltcG9ydCBNb2RhbHMgZnJvbSBcIi4uL3VpL21vZGFsc1wiO1xyXG5pbXBvcnQgU2V0dGluZ3NSZW5kZXJlciBmcm9tIFwiLi4vdWkvc2V0dGluZ3NcIjtcclxuXHJcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBUaGVtZU1hbmFnZXIgZXh0ZW5kcyBBZGRvbk1hbmFnZXIge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiVGhlbWVNYW5hZ2VyXCI7fVxyXG4gICAgZ2V0IG1vZHVsZUV4dGVuc2lvbigpIHtyZXR1cm4gXCIuY3NzXCI7fVxyXG4gICAgZ2V0IGV4dGVuc2lvbigpIHtyZXR1cm4gXCIudGhlbWUuY3NzXCI7fVxyXG4gICAgZ2V0IGFkZG9uRm9sZGVyKCkge3JldHVybiBwYXRoLnJlc29sdmUoQ29uZmlnLmRhdGFQYXRoLCBcInRoZW1lc1wiKTt9XHJcbiAgICBnZXQgcHJlZml4KCkge3JldHVybiBcInRoZW1lXCI7fVxyXG4gICAgZ2V0IGxhbmd1YWdlKCkge3JldHVybiBcImNzc1wiO31cclxuXHJcbiAgICBpbml0aWFsaXplKCkge1xyXG4gICAgICAgIGNvbnN0IGVycm9ycyA9IHN1cGVyLmluaXRpYWxpemUoKTtcclxuICAgICAgICBTZXR0aW5ncy5yZWdpc3RlclBhbmVsKFwidGhlbWVzXCIsIFN0cmluZ3MuUGFuZWxzLnRoZW1lcywge2VsZW1lbnQ6ICgpID0+IFNldHRpbmdzUmVuZGVyZXIuZ2V0QWRkb25QYW5lbChTdHJpbmdzLlBhbmVscy50aGVtZXMsIHRoaXMuYWRkb25MaXN0LCB0aGlzLnN0YXRlLCB7XHJcbiAgICAgICAgICAgIGZvbGRlcjogdGhpcy5hZGRvbkZvbGRlcixcclxuICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMudG9nZ2xlVGhlbWUuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgcmVsb2FkOiB0aGlzLnJlbG9hZFRoZW1lLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIHJlZnJlc2hMaXN0OiB0aGlzLnVwZGF0ZVRoZW1lTGlzdC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBzYXZlQWRkb246IHRoaXMuc2F2ZUFkZG9uLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIGVkaXRBZGRvbjogdGhpcy5lZGl0QWRkb24uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgZGVsZXRlQWRkb246IHRoaXMuZGVsZXRlQWRkb24uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgcHJlZml4OiB0aGlzLnByZWZpeFxyXG4gICAgICAgIH0pfSk7XHJcbiAgICAgICAgcmV0dXJuIGVycm9ycztcclxuICAgIH1cclxuXHJcbiAgICAvKiBBbGlhc2VzICovXHJcbiAgICB1cGRhdGVUaGVtZUxpc3QoKSB7cmV0dXJuIHRoaXMudXBkYXRlTGlzdCgpO31cclxuICAgIGxvYWRBbGxUaGVtZXMoKSB7cmV0dXJuIHRoaXMubG9hZEFsbEFkZG9ucygpO31cclxuXHJcbiAgICBlbmFibGVUaGVtZShpZE9yQWRkb24pIHtyZXR1cm4gdGhpcy5lbmFibGVBZGRvbihpZE9yQWRkb24pO31cclxuICAgIGRpc2FibGVUaGVtZShpZE9yQWRkb24pIHtyZXR1cm4gdGhpcy5kaXNhYmxlQWRkb24oaWRPckFkZG9uKTt9XHJcbiAgICB0b2dnbGVUaGVtZShpZCkge3JldHVybiB0aGlzLnRvZ2dsZUFkZG9uKGlkKTt9XHJcblxyXG4gICAgdW5sb2FkVGhlbWUoaWRPckZpbGVPckFkZG9uKSB7cmV0dXJuIHRoaXMudW5sb2FkQWRkb24oaWRPckZpbGVPckFkZG9uKTt9XHJcblxyXG4gICAgbG9hZFRoZW1lKGZpbGVuYW1lKSB7XHJcbiAgICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLmxvYWRBZGRvbihmaWxlbmFtZSk7XHJcbiAgICAgICAgaWYgKGVycm9yKSBNb2RhbHMuc2hvd0FkZG9uRXJyb3JzKHt0aGVtZXM6IFtlcnJvcl19KTtcclxuICAgIH1cclxuXHJcbiAgICByZWxvYWRUaGVtZShpZE9yRmlsZU9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBlcnJvciA9IHRoaXMucmVsb2FkQWRkb24oaWRPckZpbGVPckFkZG9uKTtcclxuICAgICAgICBpZiAoZXJyb3IpIE1vZGFscy5zaG93QWRkb25FcnJvcnMoe3RoZW1lczogW2Vycm9yXX0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qIE92ZXJyaWRlcyAqL1xyXG4gICAgZ2V0RmlsZU1vZGlmaWNhdGlvbihtb2R1bGUsIGZpbGVDb250ZW50LCBtZXRhKSB7XHJcbiAgICAgICAgbWV0YS5jc3MgPSBmaWxlQ29udGVudDtcclxuICAgICAgICByZXR1cm4gYG1vZHVsZS5leHBvcnRzID0gJHtKU09OLnN0cmluZ2lmeShtZXRhKX07YDtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydEFkZG9uKGlkKSB7cmV0dXJuIHRoaXMuYWRkVGhlbWUoaWQpO31cclxuICAgIHN0b3BBZGRvbihpZCkge3JldHVybiB0aGlzLnJlbW92ZVRoZW1lKGlkKTt9XHJcblxyXG4gICAgYWRkVGhlbWUoaWRPckFkZG9uKSB7XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0eXBlb2YoaWRPckFkZG9uKSA9PSBcInN0cmluZ1wiID8gdGhpcy5hZGRvbkxpc3QuZmluZChwID0+IHAuaWQgPT0gaWRPckFkZG9uKSA6IGlkT3JBZGRvbjtcclxuICAgICAgICBpZiAoIWFkZG9uKSByZXR1cm47XHJcbiAgICAgICAgRE9NTWFuYWdlci5pbmplY3RUaGVtZShhZGRvbi5pZCwgYWRkb24uY3NzKTtcclxuICAgICAgICBUb2FzdHMuc2hvdyhTdHJpbmdzLkFkZG9ucy5lbmFibGVkLmZvcm1hdCh7bmFtZTogYWRkb24ubmFtZSwgdmVyc2lvbjogYWRkb24udmVyc2lvbn0pKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVUaGVtZShpZE9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKHAgPT4gcC5pZCA9PSBpZE9yQWRkb24pIDogaWRPckFkZG9uO1xyXG4gICAgICAgIGlmICghYWRkb24pIHJldHVybjtcclxuICAgICAgICBET01NYW5hZ2VyLnJlbW92ZVRoZW1lKGFkZG9uLmlkKTtcclxuICAgICAgICBUb2FzdHMuc2hvdyhTdHJpbmdzLkFkZG9ucy5kaXNhYmxlZC5mb3JtYXQoe25hbWU6IGFkZG9uLm5hbWUsIHZlcnNpb246IGFkZG9uLnZlcnNpb259KSk7XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/thememanager.js\n"); /***/ }), @@ -610,7 +610,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Utilities; });\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _domtools__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./domtools */ \"./src/modules/domtools.js\");\n\n\n\nclass Utilities {\n static repoUrl(path) {\n return `https://cdn.staticaly.com/gh/${data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].repo}/BetterDiscordApp/${data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].hash}/${path}`;\n }\n /**\r\n * Parses a string of HTML and returns the results. If the second parameter is true,\r\n * the parsed HTML will be returned as a document fragment {@see https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment}.\r\n * This is extremely useful if you have a list of elements at the top level, they can then be appended all at once to another node.\r\n *\r\n * If the second parameter is false, then the return value will be the list of parsed\r\n * nodes and there were multiple top level nodes, otherwise the single node is returned.\r\n * @param {string} html - HTML to be parsed\r\n * @param {boolean} [fragment=false] - Whether or not the return should be the raw `DocumentFragment`\r\n * @returns {(DocumentFragment|NodeList|HTMLElement)} - The result of HTML parsing\r\n */\n\n\n static parseHTML(html, fragment = false) {\n const template = document.createElement(\"template\");\n template.innerHTML = html;\n const node = template.content.cloneNode(true);\n if (fragment) return node;\n return node.childNodes.length > 1 ? node.childNodes : node.childNodes[0];\n }\n\n static getTextArea() {\n return _domtools__WEBPACK_IMPORTED_MODULE_2__[\"default\"].query(\".channelTextArea-1LDbYG textarea\");\n }\n\n static insertText(textarea, text) {\n textarea.focus();\n textarea.selectionStart = 0;\n textarea.selectionEnd = textarea.value.length;\n document.execCommand(\"insertText\", false, text);\n }\n\n static escape(s) {\n return s.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\n }\n\n static testJSON(data) {\n try {\n return JSON.parse(data);\n } catch (err) {\n return false;\n }\n }\n\n static suppressErrors(method, message) {\n return (...params) => {\n try {\n return method(...params);\n } catch (e) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(\"SuppressedError\", \"Error occurred in \" + message, e);\n }\n };\n }\n\n static onRemoved(node, callback) {\n const observer = new MutationObserver(mutations => {\n for (let m = 0; m < mutations.length; m++) {\n const mutation = mutations[m];\n const nodes = Array.from(mutation.removedNodes);\n const directMatch = nodes.indexOf(node) > -1;\n const parentMatch = nodes.some(parent => parent.contains(node));\n\n if (directMatch || parentMatch) {\n observer.disconnect();\n callback();\n }\n }\n });\n observer.observe(document.body, {\n subtree: true,\n childList: true\n });\n }\n\n static isEmpty(obj) {\n if (obj == null || obj == undefined || obj == \"\") return true;\n if (typeof obj !== \"object\") return false;\n if (Array.isArray(obj)) return obj.length == 0;\n\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) return false;\n }\n\n return true;\n }\n /**\r\n * Generates an automatically memoizing version of an object.\r\n * @author Zerebos\r\n * @param {Object} object - object to memoize\r\n * @returns {Proxy} the proxy to the object that memoizes properties\r\n */\n\n\n static memoizeObject(object) {\n const proxy = new Proxy(object, {\n get: function (obj, mod) {\n if (!obj.hasOwnProperty(mod)) return undefined;\n\n if (Object.getOwnPropertyDescriptor(obj, mod).get) {\n const value = obj[mod];\n delete obj[mod];\n obj[mod] = value;\n }\n\n return obj[mod];\n },\n set: function (obj, mod, value) {\n if (obj.hasOwnProperty(mod)) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"MemoizedObject\", \"Trying to overwrite existing property\");\n obj[mod] = value;\n return obj[mod];\n }\n });\n Object.defineProperty(proxy, \"hasOwnProperty\", {\n value: function (prop) {\n return this[prop] !== undefined;\n }\n });\n return proxy;\n }\n /**\r\n * Deep extends an object with a set of other objects. Objects later in the list\r\n * of `extenders` have priority, that is to say if one sets a key to be a primitive,\r\n * it will be overwritten with the next one with the same key. If it is an object,\r\n * and the keys match, the object is extended. This happens recursively.\r\n * @param {object} extendee - Object to be extended\r\n * @param {...object} extenders - Objects to extend with\r\n * @returns {object} - A reference to `extendee`\r\n */\n\n\n static extend(extendee, ...extenders) {\n for (let i = 0; i < extenders.length; i++) {\n for (const key in extenders[i]) {\n if (extenders[i].hasOwnProperty(key)) {\n if (typeof extendee[key] === \"object\" && typeof extenders[i][key] === \"object\") this.extend(extendee[key], extenders[i][key]);else if (typeof extenders[i][key] === \"object\") extendee[key] = {}, this.extend(extendee[key], extenders[i][key]);else extendee[key] = extenders[i][key];\n }\n }\n }\n\n return extendee;\n }\n /**\r\n * Format strings with placeholders (`{{placeholder}}`) into full strings.\r\n * Quick example: `PluginUtilities.formatString(\"Hello, {{user}}\", {user: \"Zerebos\"})`\r\n * would return \"Hello, Zerebos\".\r\n * @param {string} string - string to format\r\n * @param {object} values - object literal of placeholders to replacements\r\n * @returns {string} the properly formatted string\r\n */\n\n\n static formatString(string, values) {\n for (const val in values) {\n let replacement = values[val];\n if (Array.isArray(replacement)) replacement = JSON.stringify(replacement);\n if (typeof replacement === \"object\" && replacement !== null) replacement = replacement.toString();\n string = string.replace(new RegExp(`{{${val}}}`, \"g\"), replacement);\n }\n\n return string;\n }\n /**\r\n * Finds a value, subobject, or array from a tree that matches a specific filter.\r\n * @param {object} tree Tree that should be walked\r\n * @param {callable} searchFilter Filter to check against each object and subobject\r\n * @param {object} options Additional options to customize the search\r\n * @param {Array|null} [options.walkable=null] Array of strings to use as keys that are allowed to be walked on. Null value indicates all keys are walkable\r\n * @param {Array} [options.ignore=[]] Array of strings to use as keys to exclude from the search, most helpful when `walkable = null`.\r\n */\n\n\n static findInTree(tree, searchFilter, {\n walkable = null,\n ignore = []\n } = {}) {\n if (typeof searchFilter === \"string\") {\n if (tree.hasOwnProperty(searchFilter)) return tree[searchFilter];\n } else if (searchFilter(tree)) {\n return tree;\n }\n\n if (typeof tree !== \"object\" || tree == null) return undefined;\n let tempReturn = undefined;\n\n if (tree instanceof Array) {\n for (const value of tree) {\n tempReturn = this.findInTree(value, searchFilter, {\n walkable,\n ignore\n });\n if (typeof tempReturn != \"undefined\") return tempReturn;\n }\n } else {\n const toWalk = walkable == null ? Object.keys(tree) : walkable;\n\n for (const key of toWalk) {\n if (typeof tree[key] == \"undefined\" || ignore.includes(key)) continue;\n tempReturn = this.findInTree(tree[key], searchFilter, {\n walkable,\n ignore\n });\n if (typeof tempReturn != \"undefined\") return tempReturn;\n }\n }\n\n return tempReturn;\n }\n /**\r\n * Gets a nested property (if it exists) safely. Path should be something like `prop.prop2.prop3`.\r\n * Numbers can be used for arrays as well like `prop.prop2.array.0.id`.\r\n * @param {Object} obj - object to get nested property of\r\n * @param {string} path - representation of the property to obtain\r\n */\n\n\n static getNestedProp(obj, path) {\n return path.split(/\\s?\\.\\s?/).reduce(function (currentObj, prop) {\n return currentObj && currentObj[prop];\n }, obj);\n }\n /**\r\n * Finds a value, subobject, or array from a tree that matches a specific filter. Great for patching render functions.\r\n * @param {object} tree React tree to look through. Can be a rendered object or an internal instance.\r\n * @param {callable} searchFilter Filter function to check subobjects against.\r\n */\n\n\n static findInRenderTree(tree, searchFilter, {\n walkable = [\"props\", \"children\", \"child\", \"sibling\"],\n ignore = []\n } = {}) {\n return this.findInTree(tree, searchFilter, {\n walkable,\n ignore\n });\n }\n /**\r\n * Finds a value, subobject, or array from a tree that matches a specific filter. Great for patching render functions.\r\n * @param {object} tree React tree to look through. Can be a rendered object or an internal instance.\r\n * @param {callable} searchFilter Filter function to check subobjects against.\r\n */\n\n\n static findInReactTree(tree, searchFilter) {\n return this.findInTree(tree, searchFilter, {\n walkable: [\"props\", \"children\", \"return\", \"stateNode\"]\n });\n }\n\n static getReactInstance(node) {\n if (node.__reactInternalInstance$) return node.__reactInternalInstance$;\n return node[Object.keys(node).find(k => k.startsWith(\"__reactInternalInstance\"))] || null;\n }\n /**\r\n * Grabs a value from the react internal instance. Allows you to grab\r\n * long depth values safely without accessing no longer valid properties.\r\n * @param {HTMLElement} node - node to obtain react instance of\r\n * @param {object} options - options for the search\r\n * @param {array} [options.include] - list of items to include from the search\r\n * @param {array} [options.exclude=[\"Popout\", \"Tooltip\", \"Scroller\", \"BackgroundFlash\"]] - list of items to exclude from the search\r\n * @param {callable} [options.filter=_=>_] - filter to check the current instance with (should return a boolean)\r\n * @return {(*|null)} the owner instance or undefined if not found.\r\n */\n\n\n static getOwnerInstance(node, {\n include,\n exclude = [\"Popout\", \"Tooltip\", \"Scroller\", \"BackgroundFlash\"],\n filter = _ => _\n } = {}) {\n if (node === undefined) return undefined;\n const excluding = include === undefined;\n const nameFilter = excluding ? exclude : include;\n\n function getDisplayName(owner) {\n const type = owner.type;\n if (!type) return null;\n return type.displayName || type.name || null;\n }\n\n function classFilter(owner) {\n const name = getDisplayName(owner);\n return name !== null && !!(nameFilter.includes(name) ^ excluding);\n }\n\n let curr = this.getReactInstance(node);\n\n for (curr = curr && curr.return; curr !== null; curr = curr.return) {\n if (curr === null) continue;\n const owner = curr.stateNode;\n if (curr !== null && !(owner instanceof HTMLElement) && classFilter(curr) && filter(owner)) return owner;\n }\n\n return null;\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy91dGlsaXRpZXMuanM/OTc2OSJdLCJuYW1lcyI6WyJVdGlsaXRpZXMiLCJyZXBvVXJsIiwicGF0aCIsIkNvbmZpZyIsInJlcG8iLCJoYXNoIiwicGFyc2VIVE1MIiwiaHRtbCIsImZyYWdtZW50IiwidGVtcGxhdGUiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJpbm5lckhUTUwiLCJub2RlIiwiY29udGVudCIsImNsb25lTm9kZSIsImNoaWxkTm9kZXMiLCJsZW5ndGgiLCJnZXRUZXh0QXJlYSIsIkRPTSIsInF1ZXJ5IiwiaW5zZXJ0VGV4dCIsInRleHRhcmVhIiwidGV4dCIsImZvY3VzIiwic2VsZWN0aW9uU3RhcnQiLCJzZWxlY3Rpb25FbmQiLCJ2YWx1ZSIsImV4ZWNDb21tYW5kIiwiZXNjYXBlIiwicyIsInJlcGxhY2UiLCJ0ZXN0SlNPTiIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJlcnIiLCJzdXBwcmVzc0Vycm9ycyIsIm1ldGhvZCIsIm1lc3NhZ2UiLCJwYXJhbXMiLCJlIiwiTG9nZ2VyIiwic3RhY2t0cmFjZSIsIm9uUmVtb3ZlZCIsImNhbGxiYWNrIiwib2JzZXJ2ZXIiLCJNdXRhdGlvbk9ic2VydmVyIiwibXV0YXRpb25zIiwibSIsIm11dGF0aW9uIiwibm9kZXMiLCJBcnJheSIsImZyb20iLCJyZW1vdmVkTm9kZXMiLCJkaXJlY3RNYXRjaCIsImluZGV4T2YiLCJwYXJlbnRNYXRjaCIsInNvbWUiLCJwYXJlbnQiLCJjb250YWlucyIsImRpc2Nvbm5lY3QiLCJvYnNlcnZlIiwiYm9keSIsInN1YnRyZWUiLCJjaGlsZExpc3QiLCJpc0VtcHR5Iiwib2JqIiwidW5kZWZpbmVkIiwiaXNBcnJheSIsImtleSIsImhhc093blByb3BlcnR5IiwibWVtb2l6ZU9iamVjdCIsIm9iamVjdCIsInByb3h5IiwiUHJveHkiLCJnZXQiLCJtb2QiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJzZXQiLCJlcnJvciIsImRlZmluZVByb3BlcnR5IiwicHJvcCIsImV4dGVuZCIsImV4dGVuZGVlIiwiZXh0ZW5kZXJzIiwiaSIsImZvcm1hdFN0cmluZyIsInN0cmluZyIsInZhbHVlcyIsInZhbCIsInJlcGxhY2VtZW50Iiwic3RyaW5naWZ5IiwidG9TdHJpbmciLCJSZWdFeHAiLCJmaW5kSW5UcmVlIiwidHJlZSIsInNlYXJjaEZpbHRlciIsIndhbGthYmxlIiwiaWdub3JlIiwidGVtcFJldHVybiIsInRvV2FsayIsImtleXMiLCJpbmNsdWRlcyIsImdldE5lc3RlZFByb3AiLCJzcGxpdCIsInJlZHVjZSIsImN1cnJlbnRPYmoiLCJmaW5kSW5SZW5kZXJUcmVlIiwiZmluZEluUmVhY3RUcmVlIiwiZ2V0UmVhY3RJbnN0YW5jZSIsIl9fcmVhY3RJbnRlcm5hbEluc3RhbmNlJCIsImZpbmQiLCJrIiwic3RhcnRzV2l0aCIsImdldE93bmVySW5zdGFuY2UiLCJpbmNsdWRlIiwiZXhjbHVkZSIsImZpbHRlciIsIl8iLCJleGNsdWRpbmciLCJuYW1lRmlsdGVyIiwiZ2V0RGlzcGxheU5hbWUiLCJvd25lciIsInR5cGUiLCJkaXNwbGF5TmFtZSIsIm5hbWUiLCJjbGFzc0ZpbHRlciIsImN1cnIiLCJyZXR1cm4iLCJzdGF0ZU5vZGUiLCJIVE1MRWxlbWVudCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVlLE1BQU1BLFNBQU4sQ0FBZ0I7QUFFM0IsU0FBT0MsT0FBUCxDQUFlQyxJQUFmLEVBQXFCO0FBQ2pCLFdBQVEsZ0NBQStCQywyQ0FBTSxDQUFDQyxJQUFLLHFCQUFvQkQsMkNBQU0sQ0FBQ0UsSUFBSyxJQUFHSCxJQUFLLEVBQTNGO0FBQ0g7QUFFRDs7Ozs7Ozs7Ozs7OztBQVdBLFNBQU9JLFNBQVAsQ0FBaUJDLElBQWpCLEVBQXVCQyxRQUFRLEdBQUcsS0FBbEMsRUFBeUM7QUFDckMsVUFBTUMsUUFBUSxHQUFHQyxRQUFRLENBQUNDLGFBQVQsQ0FBdUIsVUFBdkIsQ0FBakI7QUFDQUYsWUFBUSxDQUFDRyxTQUFULEdBQXFCTCxJQUFyQjtBQUNBLFVBQU1NLElBQUksR0FBR0osUUFBUSxDQUFDSyxPQUFULENBQWlCQyxTQUFqQixDQUEyQixJQUEzQixDQUFiO0FBQ0EsUUFBSVAsUUFBSixFQUFjLE9BQU9LLElBQVA7QUFDZCxXQUFPQSxJQUFJLENBQUNHLFVBQUwsQ0FBZ0JDLE1BQWhCLEdBQXlCLENBQXpCLEdBQTZCSixJQUFJLENBQUNHLFVBQWxDLEdBQStDSCxJQUFJLENBQUNHLFVBQUwsQ0FBZ0IsQ0FBaEIsQ0FBdEQ7QUFDSDs7QUFFRCxTQUFPRSxXQUFQLEdBQXFCO0FBQ2pCLFdBQU9DLGlEQUFHLENBQUNDLEtBQUosQ0FBVSxrQ0FBVixDQUFQO0FBQ0g7O0FBRUQsU0FBT0MsVUFBUCxDQUFrQkMsUUFBbEIsRUFBNEJDLElBQTVCLEVBQWtDO0FBQzlCRCxZQUFRLENBQUNFLEtBQVQ7QUFDQUYsWUFBUSxDQUFDRyxjQUFULEdBQTBCLENBQTFCO0FBQ0FILFlBQVEsQ0FBQ0ksWUFBVCxHQUF3QkosUUFBUSxDQUFDSyxLQUFULENBQWVWLE1BQXZDO0FBQ0FQLFlBQVEsQ0FBQ2tCLFdBQVQsQ0FBcUIsWUFBckIsRUFBbUMsS0FBbkMsRUFBMENMLElBQTFDO0FBQ0g7O0FBRUQsU0FBT00sTUFBUCxDQUFjQyxDQUFkLEVBQWlCO0FBQ2IsV0FBT0EsQ0FBQyxDQUFDQyxPQUFGLENBQVUsdUJBQVYsRUFBbUMsTUFBbkMsQ0FBUDtBQUNIOztBQUVELFNBQU9DLFFBQVAsQ0FBZ0JDLElBQWhCLEVBQXNCO0FBQ2xCLFFBQUk7QUFDQSxhQUFPQyxJQUFJLENBQUNDLEtBQUwsQ0FBV0YsSUFBWCxDQUFQO0FBQ0gsS0FGRCxDQUdBLE9BQU9HLEdBQVAsRUFBWTtBQUNSLGFBQU8sS0FBUDtBQUNIO0FBQ0o7O0FBRUQsU0FBT0MsY0FBUCxDQUFzQkMsTUFBdEIsRUFBOEJDLE9BQTlCLEVBQXVDO0FBQ25DLFdBQU8sQ0FBQyxHQUFHQyxNQUFKLEtBQWU7QUFDbEIsVUFBSTtBQUFFLGVBQU9GLE1BQU0sQ0FBQyxHQUFHRSxNQUFKLENBQWI7QUFBMkIsT0FBakMsQ0FDQSxPQUFPQyxDQUFQLEVBQVU7QUFBRUMsdURBQU0sQ0FBQ0MsVUFBUCxDQUFrQixpQkFBbEIsRUFBcUMsdUJBQXVCSixPQUE1RCxFQUFxRUUsQ0FBckU7QUFBMEU7QUFDekYsS0FIRDtBQUlIOztBQUVELFNBQU9HLFNBQVAsQ0FBaUIvQixJQUFqQixFQUF1QmdDLFFBQXZCLEVBQWlDO0FBQzdCLFVBQU1DLFFBQVEsR0FBRyxJQUFJQyxnQkFBSixDQUFzQkMsU0FBRCxJQUFlO0FBQ2pELFdBQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0QsU0FBUyxDQUFDL0IsTUFBOUIsRUFBc0NnQyxDQUFDLEVBQXZDLEVBQTJDO0FBQ3ZDLGNBQU1DLFFBQVEsR0FBR0YsU0FBUyxDQUFDQyxDQUFELENBQTFCO0FBQ0EsY0FBTUUsS0FBSyxHQUFHQyxLQUFLLENBQUNDLElBQU4sQ0FBV0gsUUFBUSxDQUFDSSxZQUFwQixDQUFkO0FBQ0EsY0FBTUMsV0FBVyxHQUFHSixLQUFLLENBQUNLLE9BQU4sQ0FBYzNDLElBQWQsSUFBc0IsQ0FBQyxDQUEzQztBQUNBLGNBQU00QyxXQUFXLEdBQUdOLEtBQUssQ0FBQ08sSUFBTixDQUFXQyxNQUFNLElBQUlBLE1BQU0sQ0FBQ0MsUUFBUCxDQUFnQi9DLElBQWhCLENBQXJCLENBQXBCOztBQUNBLFlBQUkwQyxXQUFXLElBQUlFLFdBQW5CLEVBQWdDO0FBQzVCWCxrQkFBUSxDQUFDZSxVQUFUO0FBQ0FoQixrQkFBUTtBQUNYO0FBQ0o7QUFDSixLQVhnQixDQUFqQjtBQWFBQyxZQUFRLENBQUNnQixPQUFULENBQWlCcEQsUUFBUSxDQUFDcUQsSUFBMUIsRUFBZ0M7QUFBQ0MsYUFBTyxFQUFFLElBQVY7QUFBZ0JDLGVBQVMsRUFBRTtBQUEzQixLQUFoQztBQUNIOztBQUVELFNBQU9DLE9BQVAsQ0FBZUMsR0FBZixFQUFvQjtBQUNoQixRQUFJQSxHQUFHLElBQUksSUFBUCxJQUFlQSxHQUFHLElBQUlDLFNBQXRCLElBQW1DRCxHQUFHLElBQUksRUFBOUMsRUFBa0QsT0FBTyxJQUFQO0FBQ2xELFFBQUksT0FBT0EsR0FBUCxLQUFnQixRQUFwQixFQUE4QixPQUFPLEtBQVA7QUFDOUIsUUFBSWYsS0FBSyxDQUFDaUIsT0FBTixDQUFjRixHQUFkLENBQUosRUFBd0IsT0FBT0EsR0FBRyxDQUFDbEQsTUFBSixJQUFjLENBQXJCOztBQUN4QixTQUFLLE1BQU1xRCxHQUFYLElBQWtCSCxHQUFsQixFQUF1QjtBQUNuQixVQUFJQSxHQUFHLENBQUNJLGNBQUosQ0FBbUJELEdBQW5CLENBQUosRUFBNkIsT0FBTyxLQUFQO0FBQ2hDOztBQUNELFdBQU8sSUFBUDtBQUNIO0FBRUQ7Ozs7Ozs7O0FBTUEsU0FBT0UsYUFBUCxDQUFxQkMsTUFBckIsRUFBNkI7QUFDekIsVUFBTUMsS0FBSyxHQUFHLElBQUlDLEtBQUosQ0FBVUYsTUFBVixFQUFrQjtBQUM1QkcsU0FBRyxFQUFFLFVBQVNULEdBQVQsRUFBY1UsR0FBZCxFQUFtQjtBQUNwQixZQUFJLENBQUNWLEdBQUcsQ0FBQ0ksY0FBSixDQUFtQk0sR0FBbkIsQ0FBTCxFQUE4QixPQUFPVCxTQUFQOztBQUM5QixZQUFJVSxNQUFNLENBQUNDLHdCQUFQLENBQWdDWixHQUFoQyxFQUFxQ1UsR0FBckMsRUFBMENELEdBQTlDLEVBQW1EO0FBQy9DLGdCQUFNakQsS0FBSyxHQUFHd0MsR0FBRyxDQUFDVSxHQUFELENBQWpCO0FBQ0EsaUJBQU9WLEdBQUcsQ0FBQ1UsR0FBRCxDQUFWO0FBQ0FWLGFBQUcsQ0FBQ1UsR0FBRCxDQUFILEdBQVdsRCxLQUFYO0FBQ0g7O0FBQ0QsZUFBT3dDLEdBQUcsQ0FBQ1UsR0FBRCxDQUFWO0FBQ0gsT0FUMkI7QUFVNUJHLFNBQUcsRUFBRSxVQUFTYixHQUFULEVBQWNVLEdBQWQsRUFBbUJsRCxLQUFuQixFQUEwQjtBQUMzQixZQUFJd0MsR0FBRyxDQUFDSSxjQUFKLENBQW1CTSxHQUFuQixDQUFKLEVBQTZCLE9BQU9uQywrQ0FBTSxDQUFDdUMsS0FBUCxDQUFhLGdCQUFiLEVBQStCLHVDQUEvQixDQUFQO0FBQzdCZCxXQUFHLENBQUNVLEdBQUQsQ0FBSCxHQUFXbEQsS0FBWDtBQUNBLGVBQU93QyxHQUFHLENBQUNVLEdBQUQsQ0FBVjtBQUNIO0FBZDJCLEtBQWxCLENBQWQ7QUFpQkFDLFVBQU0sQ0FBQ0ksY0FBUCxDQUFzQlIsS0FBdEIsRUFBNkIsZ0JBQTdCLEVBQStDO0FBQUMvQyxXQUFLLEVBQUUsVUFBU3dELElBQVQsRUFBZTtBQUNsRSxlQUFPLEtBQUtBLElBQUwsTUFBZWYsU0FBdEI7QUFDSDtBQUY4QyxLQUEvQztBQUlBLFdBQU9NLEtBQVA7QUFDSDtBQUVEOzs7Ozs7Ozs7OztBQVNBLFNBQU9VLE1BQVAsQ0FBY0MsUUFBZCxFQUF3QixHQUFHQyxTQUEzQixFQUFzQztBQUNsQyxTQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdELFNBQVMsQ0FBQ3JFLE1BQTlCLEVBQXNDc0UsQ0FBQyxFQUF2QyxFQUEyQztBQUN2QyxXQUFLLE1BQU1qQixHQUFYLElBQWtCZ0IsU0FBUyxDQUFDQyxDQUFELENBQTNCLEVBQWdDO0FBQzVCLFlBQUlELFNBQVMsQ0FBQ0MsQ0FBRCxDQUFULENBQWFoQixjQUFiLENBQTRCRCxHQUE1QixDQUFKLEVBQXNDO0FBQ2xDLGNBQUksT0FBT2UsUUFBUSxDQUFDZixHQUFELENBQWYsS0FBeUIsUUFBekIsSUFBcUMsT0FBT2dCLFNBQVMsQ0FBQ0MsQ0FBRCxDQUFULENBQWFqQixHQUFiLENBQVAsS0FBNkIsUUFBdEUsRUFBZ0YsS0FBS2MsTUFBTCxDQUFZQyxRQUFRLENBQUNmLEdBQUQsQ0FBcEIsRUFBMkJnQixTQUFTLENBQUNDLENBQUQsQ0FBVCxDQUFhakIsR0FBYixDQUEzQixFQUFoRixLQUNLLElBQUksT0FBT2dCLFNBQVMsQ0FBQ0MsQ0FBRCxDQUFULENBQWFqQixHQUFiLENBQVAsS0FBNkIsUUFBakMsRUFBMkNlLFFBQVEsQ0FBQ2YsR0FBRCxDQUFSLEdBQWdCLEVBQWhCLEVBQW9CLEtBQUtjLE1BQUwsQ0FBWUMsUUFBUSxDQUFDZixHQUFELENBQXBCLEVBQTJCZ0IsU0FBUyxDQUFDQyxDQUFELENBQVQsQ0FBYWpCLEdBQWIsQ0FBM0IsQ0FBcEIsQ0FBM0MsS0FDQWUsUUFBUSxDQUFDZixHQUFELENBQVIsR0FBZ0JnQixTQUFTLENBQUNDLENBQUQsQ0FBVCxDQUFhakIsR0FBYixDQUFoQjtBQUNSO0FBQ0o7QUFDSjs7QUFDRCxXQUFPZSxRQUFQO0FBQ0g7QUFFRDs7Ozs7Ozs7OztBQVFBLFNBQU9HLFlBQVAsQ0FBb0JDLE1BQXBCLEVBQTRCQyxNQUE1QixFQUFvQztBQUNoQyxTQUFLLE1BQU1DLEdBQVgsSUFBa0JELE1BQWxCLEVBQTBCO0FBQ3RCLFVBQUlFLFdBQVcsR0FBR0YsTUFBTSxDQUFDQyxHQUFELENBQXhCO0FBQ0EsVUFBSXZDLEtBQUssQ0FBQ2lCLE9BQU4sQ0FBY3VCLFdBQWQsQ0FBSixFQUFnQ0EsV0FBVyxHQUFHMUQsSUFBSSxDQUFDMkQsU0FBTCxDQUFlRCxXQUFmLENBQWQ7QUFDaEMsVUFBSSxPQUFPQSxXQUFQLEtBQXdCLFFBQXhCLElBQW9DQSxXQUFXLEtBQUssSUFBeEQsRUFBOERBLFdBQVcsR0FBR0EsV0FBVyxDQUFDRSxRQUFaLEVBQWQ7QUFDOURMLFlBQU0sR0FBR0EsTUFBTSxDQUFDMUQsT0FBUCxDQUFlLElBQUlnRSxNQUFKLENBQVksS0FBSUosR0FBSSxJQUFwQixFQUF5QixHQUF6QixDQUFmLEVBQThDQyxXQUE5QyxDQUFUO0FBQ0g7O0FBQ0QsV0FBT0gsTUFBUDtBQUNIO0FBRUQ7Ozs7Ozs7Ozs7QUFRQSxTQUFPTyxVQUFQLENBQWtCQyxJQUFsQixFQUF3QkMsWUFBeEIsRUFBc0M7QUFBQ0MsWUFBUSxHQUFHLElBQVo7QUFBa0JDLFVBQU0sR0FBRztBQUEzQixNQUFpQyxFQUF2RSxFQUEyRTtBQUN2RSxRQUFJLE9BQU9GLFlBQVAsS0FBd0IsUUFBNUIsRUFBc0M7QUFDbEMsVUFBSUQsSUFBSSxDQUFDMUIsY0FBTCxDQUFvQjJCLFlBQXBCLENBQUosRUFBdUMsT0FBT0QsSUFBSSxDQUFDQyxZQUFELENBQVg7QUFDMUMsS0FGRCxNQUdLLElBQUlBLFlBQVksQ0FBQ0QsSUFBRCxDQUFoQixFQUF3QjtBQUN6QixhQUFPQSxJQUFQO0FBQ0g7O0FBRUQsUUFBSSxPQUFPQSxJQUFQLEtBQWdCLFFBQWhCLElBQTRCQSxJQUFJLElBQUksSUFBeEMsRUFBOEMsT0FBTzdCLFNBQVA7QUFFOUMsUUFBSWlDLFVBQVUsR0FBR2pDLFNBQWpCOztBQUNBLFFBQUk2QixJQUFJLFlBQVk3QyxLQUFwQixFQUEyQjtBQUN2QixXQUFLLE1BQU16QixLQUFYLElBQW9Cc0UsSUFBcEIsRUFBMEI7QUFDdEJJLGtCQUFVLEdBQUcsS0FBS0wsVUFBTCxDQUFnQnJFLEtBQWhCLEVBQXVCdUUsWUFBdkIsRUFBcUM7QUFBQ0Msa0JBQUQ7QUFBV0M7QUFBWCxTQUFyQyxDQUFiO0FBQ0EsWUFBSSxPQUFPQyxVQUFQLElBQXFCLFdBQXpCLEVBQXNDLE9BQU9BLFVBQVA7QUFDekM7QUFDSixLQUxELE1BTUs7QUFDRCxZQUFNQyxNQUFNLEdBQUdILFFBQVEsSUFBSSxJQUFaLEdBQW1CckIsTUFBTSxDQUFDeUIsSUFBUCxDQUFZTixJQUFaLENBQW5CLEdBQXVDRSxRQUF0RDs7QUFDQSxXQUFLLE1BQU03QixHQUFYLElBQWtCZ0MsTUFBbEIsRUFBMEI7QUFDdEIsWUFBSSxPQUFPTCxJQUFJLENBQUMzQixHQUFELENBQVgsSUFBcUIsV0FBckIsSUFBb0M4QixNQUFNLENBQUNJLFFBQVAsQ0FBZ0JsQyxHQUFoQixDQUF4QyxFQUE4RDtBQUM5RCtCLGtCQUFVLEdBQUcsS0FBS0wsVUFBTCxDQUFnQkMsSUFBSSxDQUFDM0IsR0FBRCxDQUFwQixFQUEyQjRCLFlBQTNCLEVBQXlDO0FBQUNDLGtCQUFEO0FBQVdDO0FBQVgsU0FBekMsQ0FBYjtBQUNBLFlBQUksT0FBT0MsVUFBUCxJQUFxQixXQUF6QixFQUFzQyxPQUFPQSxVQUFQO0FBQ3pDO0FBQ0o7O0FBQ0QsV0FBT0EsVUFBUDtBQUNIO0FBRUQ7Ozs7Ozs7O0FBTUEsU0FBT0ksYUFBUCxDQUFxQnRDLEdBQXJCLEVBQTBCakUsSUFBMUIsRUFBZ0M7QUFDNUIsV0FBT0EsSUFBSSxDQUFDd0csS0FBTCxDQUFXLFVBQVgsRUFBdUJDLE1BQXZCLENBQThCLFVBQVNDLFVBQVQsRUFBcUJ6QixJQUFyQixFQUEyQjtBQUM1RCxhQUFPeUIsVUFBVSxJQUFJQSxVQUFVLENBQUN6QixJQUFELENBQS9CO0FBQ0gsS0FGTSxFQUVKaEIsR0FGSSxDQUFQO0FBR0g7QUFFRDs7Ozs7OztBQUtBLFNBQU8wQyxnQkFBUCxDQUF3QlosSUFBeEIsRUFBOEJDLFlBQTlCLEVBQTRDO0FBQUNDLFlBQVEsR0FBRyxDQUFDLE9BQUQsRUFBVSxVQUFWLEVBQXNCLE9BQXRCLEVBQStCLFNBQS9CLENBQVo7QUFBdURDLFVBQU0sR0FBRztBQUFoRSxNQUFzRSxFQUFsSCxFQUFzSDtBQUNsSCxXQUFPLEtBQUtKLFVBQUwsQ0FBZ0JDLElBQWhCLEVBQXNCQyxZQUF0QixFQUFvQztBQUFDQyxjQUFEO0FBQVdDO0FBQVgsS0FBcEMsQ0FBUDtBQUNIO0FBRUQ7Ozs7Ozs7QUFLQSxTQUFPVSxlQUFQLENBQXVCYixJQUF2QixFQUE2QkMsWUFBN0IsRUFBMkM7QUFDdkMsV0FBTyxLQUFLRixVQUFMLENBQWdCQyxJQUFoQixFQUFzQkMsWUFBdEIsRUFBb0M7QUFBQ0MsY0FBUSxFQUFFLENBQUMsT0FBRCxFQUFVLFVBQVYsRUFBc0IsUUFBdEIsRUFBZ0MsV0FBaEM7QUFBWCxLQUFwQyxDQUFQO0FBQ0g7O0FBRUQsU0FBT1ksZ0JBQVAsQ0FBd0JsRyxJQUF4QixFQUE4QjtBQUMxQixRQUFJQSxJQUFJLENBQUNtRyx3QkFBVCxFQUFtQyxPQUFPbkcsSUFBSSxDQUFDbUcsd0JBQVo7QUFDbkMsV0FBT25HLElBQUksQ0FBQ2lFLE1BQU0sQ0FBQ3lCLElBQVAsQ0FBWTFGLElBQVosRUFBa0JvRyxJQUFsQixDQUF1QkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLFVBQUYsQ0FBYSx5QkFBYixDQUE1QixDQUFELENBQUosSUFBOEUsSUFBckY7QUFDSDtBQUVEOzs7Ozs7Ozs7Ozs7QUFVSCxTQUFPQyxnQkFBUCxDQUF3QnZHLElBQXhCLEVBQThCO0FBQUN3RyxXQUFEO0FBQVVDLFdBQU8sR0FBRyxDQUFDLFFBQUQsRUFBVyxTQUFYLEVBQXNCLFVBQXRCLEVBQWtDLGlCQUFsQyxDQUFwQjtBQUEwRUMsVUFBTSxHQUFHQyxDQUFDLElBQUlBO0FBQXhGLE1BQTZGLEVBQTNILEVBQStIO0FBQzlILFFBQUkzRyxJQUFJLEtBQUt1RCxTQUFiLEVBQXdCLE9BQU9BLFNBQVA7QUFDeEIsVUFBTXFELFNBQVMsR0FBR0osT0FBTyxLQUFLakQsU0FBOUI7QUFDQSxVQUFNc0QsVUFBVSxHQUFHRCxTQUFTLEdBQUdILE9BQUgsR0FBYUQsT0FBekM7O0FBQ0EsYUFBU00sY0FBVCxDQUF3QkMsS0FBeEIsRUFBK0I7QUFDOUIsWUFBTUMsSUFBSSxHQUFHRCxLQUFLLENBQUNDLElBQW5CO0FBQ0EsVUFBSSxDQUFDQSxJQUFMLEVBQVcsT0FBTyxJQUFQO0FBQ1gsYUFBT0EsSUFBSSxDQUFDQyxXQUFMLElBQW9CRCxJQUFJLENBQUNFLElBQXpCLElBQWlDLElBQXhDO0FBQ0E7O0FBQ0QsYUFBU0MsV0FBVCxDQUFxQkosS0FBckIsRUFBNEI7QUFDM0IsWUFBTUcsSUFBSSxHQUFHSixjQUFjLENBQUNDLEtBQUQsQ0FBM0I7QUFDQSxhQUFRRyxJQUFJLEtBQUssSUFBVCxJQUFpQixDQUFDLEVBQUVMLFVBQVUsQ0FBQ2xCLFFBQVgsQ0FBb0J1QixJQUFwQixJQUE0Qk4sU0FBOUIsQ0FBMUI7QUFDQTs7QUFFRCxRQUFJUSxJQUFJLEdBQUcsS0FBS2xCLGdCQUFMLENBQXNCbEcsSUFBdEIsQ0FBWDs7QUFDQSxTQUFLb0gsSUFBSSxHQUFHQSxJQUFJLElBQUlBLElBQUksQ0FBQ0MsTUFBekIsRUFBaUNELElBQUksS0FBSyxJQUExQyxFQUFnREEsSUFBSSxHQUFHQSxJQUFJLENBQUNDLE1BQTVELEVBQW9FO0FBQ25FLFVBQUlELElBQUksS0FBSyxJQUFiLEVBQW1CO0FBQ25CLFlBQU1MLEtBQUssR0FBR0ssSUFBSSxDQUFDRSxTQUFuQjtBQUNBLFVBQUlGLElBQUksS0FBSyxJQUFULElBQWlCLEVBQUVMLEtBQUssWUFBWVEsV0FBbkIsQ0FBakIsSUFBb0RKLFdBQVcsQ0FBQ0MsSUFBRCxDQUEvRCxJQUF5RVYsTUFBTSxDQUFDSyxLQUFELENBQW5GLEVBQTRGLE9BQU9BLEtBQVA7QUFDNUY7O0FBRUQsV0FBTyxJQUFQO0FBQ0E7O0FBalE2QiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL3V0aWxpdGllcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuL2xvZ2dlclwiO1xyXG5pbXBvcnQgRE9NIGZyb20gXCIuL2RvbXRvb2xzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBVdGlsaXRpZXMge1xyXG5cclxuICAgIHN0YXRpYyByZXBvVXJsKHBhdGgpIHtcclxuICAgICAgICByZXR1cm4gYGh0dHBzOi8vY2RuLnN0YXRpY2FseS5jb20vZ2gvJHtDb25maWcucmVwb30vQmV0dGVyRGlzY29yZEFwcC8ke0NvbmZpZy5oYXNofS8ke3BhdGh9YDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBhcnNlcyBhIHN0cmluZyBvZiBIVE1MIGFuZCByZXR1cm5zIHRoZSByZXN1bHRzLiBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0cnVlLFxyXG4gICAgICogdGhlIHBhcnNlZCBIVE1MIHdpbGwgYmUgcmV0dXJuZWQgYXMgYSBkb2N1bWVudCBmcmFnbWVudCB7QHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRG9jdW1lbnRGcmFnbWVudH0uXHJcbiAgICAgKiBUaGlzIGlzIGV4dHJlbWVseSB1c2VmdWwgaWYgeW91IGhhdmUgYSBsaXN0IG9mIGVsZW1lbnRzIGF0IHRoZSB0b3AgbGV2ZWwsIHRoZXkgY2FuIHRoZW4gYmUgYXBwZW5kZWQgYWxsIGF0IG9uY2UgdG8gYW5vdGhlciBub2RlLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIGZhbHNlLCB0aGVuIHRoZSByZXR1cm4gdmFsdWUgd2lsbCBiZSB0aGUgbGlzdCBvZiBwYXJzZWRcclxuICAgICAqIG5vZGVzIGFuZCB0aGVyZSB3ZXJlIG11bHRpcGxlIHRvcCBsZXZlbCBub2Rlcywgb3RoZXJ3aXNlIHRoZSBzaW5nbGUgbm9kZSBpcyByZXR1cm5lZC5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBodG1sIC0gSFRNTCB0byBiZSBwYXJzZWRcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2ZyYWdtZW50PWZhbHNlXSAtIFdoZXRoZXIgb3Igbm90IHRoZSByZXR1cm4gc2hvdWxkIGJlIHRoZSByYXcgYERvY3VtZW50RnJhZ21lbnRgXHJcbiAgICAgKiBAcmV0dXJucyB7KERvY3VtZW50RnJhZ21lbnR8Tm9kZUxpc3R8SFRNTEVsZW1lbnQpfSAtIFRoZSByZXN1bHQgb2YgSFRNTCBwYXJzaW5nXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBwYXJzZUhUTUwoaHRtbCwgZnJhZ21lbnQgPSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInRlbXBsYXRlXCIpO1xyXG4gICAgICAgIHRlbXBsYXRlLmlubmVySFRNTCA9IGh0bWw7XHJcbiAgICAgICAgY29uc3Qgbm9kZSA9IHRlbXBsYXRlLmNvbnRlbnQuY2xvbmVOb2RlKHRydWUpO1xyXG4gICAgICAgIGlmIChmcmFnbWVudCkgcmV0dXJuIG5vZGU7XHJcbiAgICAgICAgcmV0dXJuIG5vZGUuY2hpbGROb2Rlcy5sZW5ndGggPiAxID8gbm9kZS5jaGlsZE5vZGVzIDogbm9kZS5jaGlsZE5vZGVzWzBdO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRUZXh0QXJlYSgpIHtcclxuICAgICAgICByZXR1cm4gRE9NLnF1ZXJ5KFwiLmNoYW5uZWxUZXh0QXJlYS0xTERiWUcgdGV4dGFyZWFcIik7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGluc2VydFRleHQodGV4dGFyZWEsIHRleHQpIHtcclxuICAgICAgICB0ZXh0YXJlYS5mb2N1cygpO1xyXG4gICAgICAgIHRleHRhcmVhLnNlbGVjdGlvblN0YXJ0ID0gMDtcclxuICAgICAgICB0ZXh0YXJlYS5zZWxlY3Rpb25FbmQgPSB0ZXh0YXJlYS52YWx1ZS5sZW5ndGg7XHJcbiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJpbnNlcnRUZXh0XCIsIGZhbHNlLCB0ZXh0KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZXNjYXBlKHMpIHtcclxuICAgICAgICByZXR1cm4gcy5yZXBsYWNlKC9bLS9cXFxcXiQqKz8uKCl8W1xcXXt9XS9nLCBcIlxcXFwkJlwiKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgdGVzdEpTT04oZGF0YSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHN1cHByZXNzRXJyb3JzKG1ldGhvZCwgbWVzc2FnZSkge1xyXG4gICAgICAgIHJldHVybiAoLi4ucGFyYW1zKSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7IHJldHVybiBtZXRob2QoLi4ucGFyYW1zKTtcdH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHsgTG9nZ2VyLnN0YWNrdHJhY2UoXCJTdXBwcmVzc2VkRXJyb3JcIiwgXCJFcnJvciBvY2N1cnJlZCBpbiBcIiArIG1lc3NhZ2UsIGUpOyB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgb25SZW1vdmVkKG5vZGUsIGNhbGxiYWNrKSB7XHJcbiAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgbXV0YXRpb25zLmxlbmd0aDsgbSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtdXRhdGlvbiA9IG11dGF0aW9uc1ttXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gQXJyYXkuZnJvbShtdXRhdGlvbi5yZW1vdmVkTm9kZXMpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGlyZWN0TWF0Y2ggPSBub2Rlcy5pbmRleE9mKG5vZGUpID4gLTE7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRNYXRjaCA9IG5vZGVzLnNvbWUocGFyZW50ID0+IHBhcmVudC5jb250YWlucyhub2RlKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGlyZWN0TWF0Y2ggfHwgcGFyZW50TWF0Y2gpIHtcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHtzdWJ0cmVlOiB0cnVlLCBjaGlsZExpc3Q6IHRydWV9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNFbXB0eShvYmopIHtcclxuICAgICAgICBpZiAob2JqID09IG51bGwgfHwgb2JqID09IHVuZGVmaW5lZCB8fCBvYmogPT0gXCJcIikgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgaWYgKHR5cGVvZihvYmopICE9PSBcIm9iamVjdFwiKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkgcmV0dXJuIG9iai5sZW5ndGggPT0gMDtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcclxuICAgICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2VuZXJhdGVzIGFuIGF1dG9tYXRpY2FsbHkgbWVtb2l6aW5nIHZlcnNpb24gb2YgYW4gb2JqZWN0LlxyXG4gICAgICogQGF1dGhvciBaZXJlYm9zXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IC0gb2JqZWN0IHRvIG1lbW9pemVcclxuICAgICAqIEByZXR1cm5zIHtQcm94eX0gdGhlIHByb3h5IHRvIHRoZSBvYmplY3QgdGhhdCBtZW1vaXplcyBwcm9wZXJ0aWVzXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBtZW1vaXplT2JqZWN0KG9iamVjdCkge1xyXG4gICAgICAgIGNvbnN0IHByb3h5ID0gbmV3IFByb3h5KG9iamVjdCwge1xyXG4gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKG9iaiwgbW9kKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIW9iai5oYXNPd25Qcm9wZXJ0eShtb2QpKSByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBtb2QpLmdldCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gb2JqW21vZF07XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG9ialttb2RdO1xyXG4gICAgICAgICAgICAgICAgICAgIG9ialttb2RdID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb2JqW21vZF07XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNldDogZnVuY3Rpb24ob2JqLCBtb2QsIHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KG1vZCkpIHJldHVybiBMb2dnZXIuZXJyb3IoXCJNZW1vaXplZE9iamVjdFwiLCBcIlRyeWluZyB0byBvdmVyd3JpdGUgZXhpc3RpbmcgcHJvcGVydHlcIik7XHJcbiAgICAgICAgICAgICAgICBvYmpbbW9kXSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9ialttb2RdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm94eSwgXCJoYXNPd25Qcm9wZXJ0eVwiLCB7dmFsdWU6IGZ1bmN0aW9uKHByb3ApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXNbcHJvcF0gIT09IHVuZGVmaW5lZDtcclxuICAgICAgICB9fSk7XHJcblxyXG4gICAgICAgIHJldHVybiBwcm94eTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZXAgZXh0ZW5kcyBhbiBvYmplY3Qgd2l0aCBhIHNldCBvZiBvdGhlciBvYmplY3RzLiBPYmplY3RzIGxhdGVyIGluIHRoZSBsaXN0XHJcbiAgICAgKiBvZiBgZXh0ZW5kZXJzYCBoYXZlIHByaW9yaXR5LCB0aGF0IGlzIHRvIHNheSBpZiBvbmUgc2V0cyBhIGtleSB0byBiZSBhIHByaW1pdGl2ZSxcclxuICAgICAqIGl0IHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgbmV4dCBvbmUgd2l0aCB0aGUgc2FtZSBrZXkuIElmIGl0IGlzIGFuIG9iamVjdCxcclxuICAgICAqIGFuZCB0aGUga2V5cyBtYXRjaCwgdGhlIG9iamVjdCBpcyBleHRlbmRlZC4gVGhpcyBoYXBwZW5zIHJlY3Vyc2l2ZWx5LlxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGV4dGVuZGVlIC0gT2JqZWN0IHRvIGJlIGV4dGVuZGVkXHJcbiAgICAgKiBAcGFyYW0gey4uLm9iamVjdH0gZXh0ZW5kZXJzIC0gT2JqZWN0cyB0byBleHRlbmQgd2l0aFxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gLSBBIHJlZmVyZW5jZSB0byBgZXh0ZW5kZWVgXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBleHRlbmQoZXh0ZW5kZWUsIC4uLmV4dGVuZGVycykge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXh0ZW5kZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGV4dGVuZGVyc1tpXSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGV4dGVuZGVyc1tpXS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBleHRlbmRlZVtrZXldID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBleHRlbmRlcnNbaV1ba2V5XSA9PT0gXCJvYmplY3RcIikgdGhpcy5leHRlbmQoZXh0ZW5kZWVba2V5XSwgZXh0ZW5kZXJzW2ldW2tleV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBleHRlbmRlcnNbaV1ba2V5XSA9PT0gXCJvYmplY3RcIikgZXh0ZW5kZWVba2V5XSA9IHt9LCB0aGlzLmV4dGVuZChleHRlbmRlZVtrZXldLCBleHRlbmRlcnNbaV1ba2V5XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBleHRlbmRlZVtrZXldID0gZXh0ZW5kZXJzW2ldW2tleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGV4dGVuZGVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRm9ybWF0IHN0cmluZ3Mgd2l0aCBwbGFjZWhvbGRlcnMgKGB7e3BsYWNlaG9sZGVyfX1gKSBpbnRvIGZ1bGwgc3RyaW5ncy5cclxuICAgICAqIFF1aWNrIGV4YW1wbGU6IGBQbHVnaW5VdGlsaXRpZXMuZm9ybWF0U3RyaW5nKFwiSGVsbG8sIHt7dXNlcn19XCIsIHt1c2VyOiBcIlplcmVib3NcIn0pYFxyXG4gICAgICogd291bGQgcmV0dXJuIFwiSGVsbG8sIFplcmVib3NcIi5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgLSBzdHJpbmcgdG8gZm9ybWF0XHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gdmFsdWVzIC0gb2JqZWN0IGxpdGVyYWwgb2YgcGxhY2Vob2xkZXJzIHRvIHJlcGxhY2VtZW50c1xyXG4gICAgICogQHJldHVybnMge3N0cmluZ30gdGhlIHByb3Blcmx5IGZvcm1hdHRlZCBzdHJpbmdcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGZvcm1hdFN0cmluZyhzdHJpbmcsIHZhbHVlcykge1xyXG4gICAgICAgIGZvciAoY29uc3QgdmFsIGluIHZhbHVlcykge1xyXG4gICAgICAgICAgICBsZXQgcmVwbGFjZW1lbnQgPSB2YWx1ZXNbdmFsXTtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVwbGFjZW1lbnQpKSByZXBsYWNlbWVudCA9IEpTT04uc3RyaW5naWZ5KHJlcGxhY2VtZW50KTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZihyZXBsYWNlbWVudCkgPT09IFwib2JqZWN0XCIgJiYgcmVwbGFjZW1lbnQgIT09IG51bGwpIHJlcGxhY2VtZW50ID0gcmVwbGFjZW1lbnQudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UobmV3IFJlZ0V4cChge3ske3ZhbH19fWAsIFwiZ1wiKSwgcmVwbGFjZW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc3RyaW5nO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmluZHMgYSB2YWx1ZSwgc3Vib2JqZWN0LCBvciBhcnJheSBmcm9tIGEgdHJlZSB0aGF0IG1hdGNoZXMgYSBzcGVjaWZpYyBmaWx0ZXIuXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gdHJlZSBUcmVlIHRoYXQgc2hvdWxkIGJlIHdhbGtlZFxyXG4gICAgICogQHBhcmFtIHtjYWxsYWJsZX0gc2VhcmNoRmlsdGVyIEZpbHRlciB0byBjaGVjayBhZ2FpbnN0IGVhY2ggb2JqZWN0IGFuZCBzdWJvYmplY3RcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIEFkZGl0aW9uYWwgb3B0aW9ucyB0byBjdXN0b21pemUgdGhlIHNlYXJjaFxyXG4gICAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fG51bGx9IFtvcHRpb25zLndhbGthYmxlPW51bGxdIEFycmF5IG9mIHN0cmluZ3MgdG8gdXNlIGFzIGtleXMgdGhhdCBhcmUgYWxsb3dlZCB0byBiZSB3YWxrZWQgb24uIE51bGwgdmFsdWUgaW5kaWNhdGVzIGFsbCBrZXlzIGFyZSB3YWxrYWJsZVxyXG4gICAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBbb3B0aW9ucy5pZ25vcmU9W11dIEFycmF5IG9mIHN0cmluZ3MgdG8gdXNlIGFzIGtleXMgdG8gZXhjbHVkZSBmcm9tIHRoZSBzZWFyY2gsIG1vc3QgaGVscGZ1bCB3aGVuIGB3YWxrYWJsZSA9IG51bGxgLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZmluZEluVHJlZSh0cmVlLCBzZWFyY2hGaWx0ZXIsIHt3YWxrYWJsZSA9IG51bGwsIGlnbm9yZSA9IFtdfSA9IHt9KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBzZWFyY2hGaWx0ZXIgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgICAgaWYgKHRyZWUuaGFzT3duUHJvcGVydHkoc2VhcmNoRmlsdGVyKSkgcmV0dXJuIHRyZWVbc2VhcmNoRmlsdGVyXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoc2VhcmNoRmlsdGVyKHRyZWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cmVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiB0cmVlICE9PSBcIm9iamVjdFwiIHx8IHRyZWUgPT0gbnVsbCkgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgICAgICAgbGV0IHRlbXBSZXR1cm4gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKHRyZWUgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHRyZWUpIHtcclxuICAgICAgICAgICAgICAgIHRlbXBSZXR1cm4gPSB0aGlzLmZpbmRJblRyZWUodmFsdWUsIHNlYXJjaEZpbHRlciwge3dhbGthYmxlLCBpZ25vcmV9KTtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGVtcFJldHVybiAhPSBcInVuZGVmaW5lZFwiKSByZXR1cm4gdGVtcFJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgdG9XYWxrID0gd2Fsa2FibGUgPT0gbnVsbCA/IE9iamVjdC5rZXlzKHRyZWUpIDogd2Fsa2FibGU7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHRvV2Fsaykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZih0cmVlW2tleV0pID09IFwidW5kZWZpbmVkXCIgfHwgaWdub3JlLmluY2x1ZGVzKGtleSkpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgdGVtcFJldHVybiA9IHRoaXMuZmluZEluVHJlZSh0cmVlW2tleV0sIHNlYXJjaEZpbHRlciwge3dhbGthYmxlLCBpZ25vcmV9KTtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGVtcFJldHVybiAhPSBcInVuZGVmaW5lZFwiKSByZXR1cm4gdGVtcFJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGVtcFJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgYSBuZXN0ZWQgcHJvcGVydHkgKGlmIGl0IGV4aXN0cykgc2FmZWx5LiBQYXRoIHNob3VsZCBiZSBzb21ldGhpbmcgbGlrZSBgcHJvcC5wcm9wMi5wcm9wM2AuXHJcbiAgICAgKiBOdW1iZXJzIGNhbiBiZSB1c2VkIGZvciBhcnJheXMgYXMgd2VsbCBsaWtlIGBwcm9wLnByb3AyLmFycmF5LjAuaWRgLlxyXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iaiAtIG9iamVjdCB0byBnZXQgbmVzdGVkIHByb3BlcnR5IG9mXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwcm9wZXJ0eSB0byBvYnRhaW5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldE5lc3RlZFByb3Aob2JqLCBwYXRoKSB7XHJcbiAgICAgICAgcmV0dXJuIHBhdGguc3BsaXQoL1xccz9cXC5cXHM/LykucmVkdWNlKGZ1bmN0aW9uKGN1cnJlbnRPYmosIHByb3ApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRPYmogJiYgY3VycmVudE9ialtwcm9wXTtcclxuICAgICAgICB9LCBvYmopO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmluZHMgYSB2YWx1ZSwgc3Vib2JqZWN0LCBvciBhcnJheSBmcm9tIGEgdHJlZSB0aGF0IG1hdGNoZXMgYSBzcGVjaWZpYyBmaWx0ZXIuIEdyZWF0IGZvciBwYXRjaGluZyByZW5kZXIgZnVuY3Rpb25zLlxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IHRyZWUgUmVhY3QgdHJlZSB0byBsb29rIHRocm91Z2guIENhbiBiZSBhIHJlbmRlcmVkIG9iamVjdCBvciBhbiBpbnRlcm5hbCBpbnN0YW5jZS5cclxuICAgICAqIEBwYXJhbSB7Y2FsbGFibGV9IHNlYXJjaEZpbHRlciBGaWx0ZXIgZnVuY3Rpb24gdG8gY2hlY2sgc3Vib2JqZWN0cyBhZ2FpbnN0LlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZmluZEluUmVuZGVyVHJlZSh0cmVlLCBzZWFyY2hGaWx0ZXIsIHt3YWxrYWJsZSA9IFtcInByb3BzXCIsIFwiY2hpbGRyZW5cIiwgXCJjaGlsZFwiLCBcInNpYmxpbmdcIl0sIGlnbm9yZSA9IFtdfSA9IHt9KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEluVHJlZSh0cmVlLCBzZWFyY2hGaWx0ZXIsIHt3YWxrYWJsZSwgaWdub3JlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaW5kcyBhIHZhbHVlLCBzdWJvYmplY3QsIG9yIGFycmF5IGZyb20gYSB0cmVlIHRoYXQgbWF0Y2hlcyBhIHNwZWNpZmljIGZpbHRlci4gR3JlYXQgZm9yIHBhdGNoaW5nIHJlbmRlciBmdW5jdGlvbnMuXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gdHJlZSBSZWFjdCB0cmVlIHRvIGxvb2sgdGhyb3VnaC4gQ2FuIGJlIGEgcmVuZGVyZWQgb2JqZWN0IG9yIGFuIGludGVybmFsIGluc3RhbmNlLlxyXG4gICAgICogQHBhcmFtIHtjYWxsYWJsZX0gc2VhcmNoRmlsdGVyIEZpbHRlciBmdW5jdGlvbiB0byBjaGVjayBzdWJvYmplY3RzIGFnYWluc3QuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBmaW5kSW5SZWFjdFRyZWUodHJlZSwgc2VhcmNoRmlsdGVyKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEluVHJlZSh0cmVlLCBzZWFyY2hGaWx0ZXIsIHt3YWxrYWJsZTogW1wicHJvcHNcIiwgXCJjaGlsZHJlblwiLCBcInJldHVyblwiLCBcInN0YXRlTm9kZVwiXX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRSZWFjdEluc3RhbmNlKG5vZGUpIHtcclxuICAgICAgICBpZiAobm9kZS5fX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSQpIHJldHVybiBub2RlLl9fcmVhY3RJbnRlcm5hbEluc3RhbmNlJDtcclxuICAgICAgICByZXR1cm4gbm9kZVtPYmplY3Qua2V5cyhub2RlKS5maW5kKGsgPT4gay5zdGFydHNXaXRoKFwiX19yZWFjdEludGVybmFsSW5zdGFuY2VcIikpXSB8fCBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG5cdCAqIEdyYWJzIGEgdmFsdWUgZnJvbSB0aGUgcmVhY3QgaW50ZXJuYWwgaW5zdGFuY2UuIEFsbG93cyB5b3UgdG8gZ3JhYlxyXG5cdCAqIGxvbmcgZGVwdGggdmFsdWVzIHNhZmVseSB3aXRob3V0IGFjY2Vzc2luZyBubyBsb25nZXIgdmFsaWQgcHJvcGVydGllcy5cclxuXHQgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBub2RlIC0gbm9kZSB0byBvYnRhaW4gcmVhY3QgaW5zdGFuY2Ugb2ZcclxuXHQgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyAtIG9wdGlvbnMgZm9yIHRoZSBzZWFyY2hcclxuXHQgKiBAcGFyYW0ge2FycmF5fSBbb3B0aW9ucy5pbmNsdWRlXSAtIGxpc3Qgb2YgaXRlbXMgdG8gaW5jbHVkZSBmcm9tIHRoZSBzZWFyY2hcclxuXHQgKiBAcGFyYW0ge2FycmF5fSBbb3B0aW9ucy5leGNsdWRlPVtcIlBvcG91dFwiLCBcIlRvb2x0aXBcIiwgXCJTY3JvbGxlclwiLCBcIkJhY2tncm91bmRGbGFzaFwiXV0gLSBsaXN0IG9mIGl0ZW1zIHRvIGV4Y2x1ZGUgZnJvbSB0aGUgc2VhcmNoXHJcblx0ICogQHBhcmFtIHtjYWxsYWJsZX0gW29wdGlvbnMuZmlsdGVyPV89Pl9dIC0gZmlsdGVyIHRvIGNoZWNrIHRoZSBjdXJyZW50IGluc3RhbmNlIHdpdGggKHNob3VsZCByZXR1cm4gYSBib29sZWFuKVxyXG5cdCAqIEByZXR1cm4geygqfG51bGwpfSB0aGUgb3duZXIgaW5zdGFuY2Ugb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZC5cclxuXHQgKi9cclxuXHRzdGF0aWMgZ2V0T3duZXJJbnN0YW5jZShub2RlLCB7aW5jbHVkZSwgZXhjbHVkZSA9IFtcIlBvcG91dFwiLCBcIlRvb2x0aXBcIiwgXCJTY3JvbGxlclwiLCBcIkJhY2tncm91bmRGbGFzaFwiXSwgZmlsdGVyID0gXyA9PiBffSA9IHt9KSB7XHJcblx0XHRpZiAobm9kZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cdFx0Y29uc3QgZXhjbHVkaW5nID0gaW5jbHVkZSA9PT0gdW5kZWZpbmVkO1xyXG5cdFx0Y29uc3QgbmFtZUZpbHRlciA9IGV4Y2x1ZGluZyA/IGV4Y2x1ZGUgOiBpbmNsdWRlO1xyXG5cdFx0ZnVuY3Rpb24gZ2V0RGlzcGxheU5hbWUob3duZXIpIHtcclxuXHRcdFx0Y29uc3QgdHlwZSA9IG93bmVyLnR5cGU7XHJcblx0XHRcdGlmICghdHlwZSkgcmV0dXJuIG51bGw7XHJcblx0XHRcdHJldHVybiB0eXBlLmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZSB8fCBudWxsO1xyXG5cdFx0fVxyXG5cdFx0ZnVuY3Rpb24gY2xhc3NGaWx0ZXIob3duZXIpIHtcclxuXHRcdFx0Y29uc3QgbmFtZSA9IGdldERpc3BsYXlOYW1lKG93bmVyKTtcclxuXHRcdFx0cmV0dXJuIChuYW1lICE9PSBudWxsICYmICEhKG5hbWVGaWx0ZXIuaW5jbHVkZXMobmFtZSkgXiBleGNsdWRpbmcpKTtcclxuXHRcdH1cclxuXHJcblx0XHRsZXQgY3VyciA9IHRoaXMuZ2V0UmVhY3RJbnN0YW5jZShub2RlKTtcclxuXHRcdGZvciAoY3VyciA9IGN1cnIgJiYgY3Vyci5yZXR1cm47IGN1cnIgIT09IG51bGw7IGN1cnIgPSBjdXJyLnJldHVybikge1xyXG5cdFx0XHRpZiAoY3VyciA9PT0gbnVsbCkgY29udGludWU7XHJcblx0XHRcdGNvbnN0IG93bmVyID0gY3Vyci5zdGF0ZU5vZGU7XHJcblx0XHRcdGlmIChjdXJyICE9PSBudWxsICYmICEob3duZXIgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkgJiYgY2xhc3NGaWx0ZXIoY3VycikgJiYgZmlsdGVyKG93bmVyKSkgcmV0dXJuIG93bmVyO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBudWxsO1xyXG5cdH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/utilities.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Utilities; });\n/* harmony import */ var _data_data_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../data/data.js */ \"./src/data/data.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _domtools__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./domtools */ \"./src/modules/domtools.js\");\n\n\n\nclass Utilities {\n static repoUrl(path) {\n return `https://cdn.staticaly.com/gh/${_data_data_js__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].repo}/BetterDiscordApp/${_data_data_js__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].hash}/${path}`;\n }\n /**\r\n * Parses a string of HTML and returns the results. If the second parameter is true,\r\n * the parsed HTML will be returned as a document fragment {@see https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment}.\r\n * This is extremely useful if you have a list of elements at the top level, they can then be appended all at once to another node.\r\n *\r\n * If the second parameter is false, then the return value will be the list of parsed\r\n * nodes and there were multiple top level nodes, otherwise the single node is returned.\r\n * @param {string} html - HTML to be parsed\r\n * @param {boolean} [fragment=false] - Whether or not the return should be the raw `DocumentFragment`\r\n * @returns {(DocumentFragment|NodeList|HTMLElement)} - The result of HTML parsing\r\n */\n\n\n static parseHTML(html, fragment = false) {\n const template = document.createElement(\"template\");\n template.innerHTML = html;\n const node = template.content.cloneNode(true);\n if (fragment) return node;\n return node.childNodes.length > 1 ? node.childNodes : node.childNodes[0];\n }\n\n static getTextArea() {\n return _domtools__WEBPACK_IMPORTED_MODULE_2__[\"default\"].query(\".channelTextArea-1LDbYG textarea\");\n }\n\n static insertText(textarea, text) {\n textarea.focus();\n textarea.selectionStart = 0;\n textarea.selectionEnd = textarea.value.length;\n document.execCommand(\"insertText\", false, text);\n }\n\n static escape(s) {\n return s.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\n }\n\n static testJSON(data) {\n try {\n return JSON.parse(data);\n } catch (err) {\n return false;\n }\n }\n\n static suppressErrors(method, message) {\n return (...params) => {\n try {\n return method(...params);\n } catch (e) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(\"SuppressedError\", \"Error occurred in \" + message, e);\n }\n };\n }\n\n static onRemoved(node, callback) {\n const observer = new MutationObserver(mutations => {\n for (let m = 0; m < mutations.length; m++) {\n const mutation = mutations[m];\n const nodes = Array.from(mutation.removedNodes);\n const directMatch = nodes.indexOf(node) > -1;\n const parentMatch = nodes.some(parent => parent.contains(node));\n\n if (directMatch || parentMatch) {\n observer.disconnect();\n callback();\n }\n }\n });\n observer.observe(document.body, {\n subtree: true,\n childList: true\n });\n }\n\n static isEmpty(obj) {\n if (obj == null || obj == undefined || obj == \"\") return true;\n if (typeof obj !== \"object\") return false;\n if (Array.isArray(obj)) return obj.length == 0;\n\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) return false;\n }\n\n return true;\n }\n /**\r\n * Generates an automatically memoizing version of an object.\r\n * @author Zerebos\r\n * @param {Object} object - object to memoize\r\n * @returns {Proxy} the proxy to the object that memoizes properties\r\n */\n\n\n static memoizeObject(object) {\n const proxy = new Proxy(object, {\n get: function (obj, mod) {\n if (!obj.hasOwnProperty(mod)) return undefined;\n\n if (Object.getOwnPropertyDescriptor(obj, mod).get) {\n const value = obj[mod];\n delete obj[mod];\n obj[mod] = value;\n }\n\n return obj[mod];\n },\n set: function (obj, mod, value) {\n if (obj.hasOwnProperty(mod)) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"MemoizedObject\", \"Trying to overwrite existing property\");\n obj[mod] = value;\n return obj[mod];\n }\n });\n Object.defineProperty(proxy, \"hasOwnProperty\", {\n value: function (prop) {\n return this[prop] !== undefined;\n }\n });\n return proxy;\n }\n /**\r\n * Deep extends an object with a set of other objects. Objects later in the list\r\n * of `extenders` have priority, that is to say if one sets a key to be a primitive,\r\n * it will be overwritten with the next one with the same key. If it is an object,\r\n * and the keys match, the object is extended. This happens recursively.\r\n * @param {object} extendee - Object to be extended\r\n * @param {...object} extenders - Objects to extend with\r\n * @returns {object} - A reference to `extendee`\r\n */\n\n\n static extend(extendee, ...extenders) {\n for (let i = 0; i < extenders.length; i++) {\n for (const key in extenders[i]) {\n if (extenders[i].hasOwnProperty(key)) {\n if (typeof extendee[key] === \"object\" && typeof extenders[i][key] === \"object\") this.extend(extendee[key], extenders[i][key]);else if (typeof extenders[i][key] === \"object\") extendee[key] = {}, this.extend(extendee[key], extenders[i][key]);else extendee[key] = extenders[i][key];\n }\n }\n }\n\n return extendee;\n }\n /**\r\n * Format strings with placeholders (`{{placeholder}}`) into full strings.\r\n * Quick example: `PluginUtilities.formatString(\"Hello, {{user}}\", {user: \"Zerebos\"})`\r\n * would return \"Hello, Zerebos\".\r\n * @param {string} string - string to format\r\n * @param {object} values - object literal of placeholders to replacements\r\n * @returns {string} the properly formatted string\r\n */\n\n\n static formatString(string, values) {\n for (const val in values) {\n let replacement = values[val];\n if (Array.isArray(replacement)) replacement = JSON.stringify(replacement);\n if (typeof replacement === \"object\" && replacement !== null) replacement = replacement.toString();\n string = string.replace(new RegExp(`{{${val}}}`, \"g\"), replacement);\n }\n\n return string;\n }\n /**\r\n * Finds a value, subobject, or array from a tree that matches a specific filter.\r\n * @param {object} tree Tree that should be walked\r\n * @param {callable} searchFilter Filter to check against each object and subobject\r\n * @param {object} options Additional options to customize the search\r\n * @param {Array|null} [options.walkable=null] Array of strings to use as keys that are allowed to be walked on. Null value indicates all keys are walkable\r\n * @param {Array} [options.ignore=[]] Array of strings to use as keys to exclude from the search, most helpful when `walkable = null`.\r\n */\n\n\n static findInTree(tree, searchFilter, {\n walkable = null,\n ignore = []\n } = {}) {\n if (typeof searchFilter === \"string\") {\n if (tree.hasOwnProperty(searchFilter)) return tree[searchFilter];\n } else if (searchFilter(tree)) {\n return tree;\n }\n\n if (typeof tree !== \"object\" || tree == null) return undefined;\n let tempReturn = undefined;\n\n if (tree instanceof Array) {\n for (const value of tree) {\n tempReturn = this.findInTree(value, searchFilter, {\n walkable,\n ignore\n });\n if (typeof tempReturn != \"undefined\") return tempReturn;\n }\n } else {\n const toWalk = walkable == null ? Object.keys(tree) : walkable;\n\n for (const key of toWalk) {\n if (typeof tree[key] == \"undefined\" || ignore.includes(key)) continue;\n tempReturn = this.findInTree(tree[key], searchFilter, {\n walkable,\n ignore\n });\n if (typeof tempReturn != \"undefined\") return tempReturn;\n }\n }\n\n return tempReturn;\n }\n /**\r\n * Gets a nested property (if it exists) safely. Path should be something like `prop.prop2.prop3`.\r\n * Numbers can be used for arrays as well like `prop.prop2.array.0.id`.\r\n * @param {Object} obj - object to get nested property of\r\n * @param {string} path - representation of the property to obtain\r\n */\n\n\n static getNestedProp(obj, path) {\n return path.split(/\\s?\\.\\s?/).reduce(function (currentObj, prop) {\n return currentObj && currentObj[prop];\n }, obj);\n }\n /**\r\n * Finds a value, subobject, or array from a tree that matches a specific filter. Great for patching render functions.\r\n * @param {object} tree React tree to look through. Can be a rendered object or an internal instance.\r\n * @param {callable} searchFilter Filter function to check subobjects against.\r\n */\n\n\n static findInRenderTree(tree, searchFilter, {\n walkable = [\"props\", \"children\", \"child\", \"sibling\"],\n ignore = []\n } = {}) {\n return this.findInTree(tree, searchFilter, {\n walkable,\n ignore\n });\n }\n /**\r\n * Finds a value, subobject, or array from a tree that matches a specific filter. Great for patching render functions.\r\n * @param {object} tree React tree to look through. Can be a rendered object or an internal instance.\r\n * @param {callable} searchFilter Filter function to check subobjects against.\r\n */\n\n\n static findInReactTree(tree, searchFilter) {\n return this.findInTree(tree, searchFilter, {\n walkable: [\"props\", \"children\", \"return\", \"stateNode\"]\n });\n }\n\n static getReactInstance(node) {\n if (node.__reactInternalInstance$) return node.__reactInternalInstance$;\n return node[Object.keys(node).find(k => k.startsWith(\"__reactInternalInstance\"))] || null;\n }\n /**\r\n * Grabs a value from the react internal instance. Allows you to grab\r\n * long depth values safely without accessing no longer valid properties.\r\n * @param {HTMLElement} node - node to obtain react instance of\r\n * @param {object} options - options for the search\r\n * @param {array} [options.include] - list of items to include from the search\r\n * @param {array} [options.exclude=[\"Popout\", \"Tooltip\", \"Scroller\", \"BackgroundFlash\"]] - list of items to exclude from the search\r\n * @param {callable} [options.filter=_=>_] - filter to check the current instance with (should return a boolean)\r\n * @return {(*|null)} the owner instance or undefined if not found.\r\n */\n\n\n static getOwnerInstance(node, {\n include,\n exclude = [\"Popout\", \"Tooltip\", \"Scroller\", \"BackgroundFlash\"],\n filter = _ => _\n } = {}) {\n if (node === undefined) return undefined;\n const excluding = include === undefined;\n const nameFilter = excluding ? exclude : include;\n\n function getDisplayName(owner) {\n const type = owner.type;\n if (!type) return null;\n return type.displayName || type.name || null;\n }\n\n function classFilter(owner) {\n const name = getDisplayName(owner);\n return name !== null && !!(nameFilter.includes(name) ^ excluding);\n }\n\n let curr = this.getReactInstance(node);\n\n for (curr = curr && curr.return; curr !== null; curr = curr.return) {\n if (curr === null) continue;\n const owner = curr.stateNode;\n if (curr !== null && !(owner instanceof HTMLElement) && classFilter(curr) && filter(owner)) return owner;\n }\n\n return null;\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy91dGlsaXRpZXMuanM/OTc2OSJdLCJuYW1lcyI6WyJVdGlsaXRpZXMiLCJyZXBvVXJsIiwicGF0aCIsIkNvbmZpZyIsInJlcG8iLCJoYXNoIiwicGFyc2VIVE1MIiwiaHRtbCIsImZyYWdtZW50IiwidGVtcGxhdGUiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJpbm5lckhUTUwiLCJub2RlIiwiY29udGVudCIsImNsb25lTm9kZSIsImNoaWxkTm9kZXMiLCJsZW5ndGgiLCJnZXRUZXh0QXJlYSIsIkRPTSIsInF1ZXJ5IiwiaW5zZXJ0VGV4dCIsInRleHRhcmVhIiwidGV4dCIsImZvY3VzIiwic2VsZWN0aW9uU3RhcnQiLCJzZWxlY3Rpb25FbmQiLCJ2YWx1ZSIsImV4ZWNDb21tYW5kIiwiZXNjYXBlIiwicyIsInJlcGxhY2UiLCJ0ZXN0SlNPTiIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJlcnIiLCJzdXBwcmVzc0Vycm9ycyIsIm1ldGhvZCIsIm1lc3NhZ2UiLCJwYXJhbXMiLCJlIiwiTG9nZ2VyIiwic3RhY2t0cmFjZSIsIm9uUmVtb3ZlZCIsImNhbGxiYWNrIiwib2JzZXJ2ZXIiLCJNdXRhdGlvbk9ic2VydmVyIiwibXV0YXRpb25zIiwibSIsIm11dGF0aW9uIiwibm9kZXMiLCJBcnJheSIsImZyb20iLCJyZW1vdmVkTm9kZXMiLCJkaXJlY3RNYXRjaCIsImluZGV4T2YiLCJwYXJlbnRNYXRjaCIsInNvbWUiLCJwYXJlbnQiLCJjb250YWlucyIsImRpc2Nvbm5lY3QiLCJvYnNlcnZlIiwiYm9keSIsInN1YnRyZWUiLCJjaGlsZExpc3QiLCJpc0VtcHR5Iiwib2JqIiwidW5kZWZpbmVkIiwiaXNBcnJheSIsImtleSIsImhhc093blByb3BlcnR5IiwibWVtb2l6ZU9iamVjdCIsIm9iamVjdCIsInByb3h5IiwiUHJveHkiLCJnZXQiLCJtb2QiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJzZXQiLCJlcnJvciIsImRlZmluZVByb3BlcnR5IiwicHJvcCIsImV4dGVuZCIsImV4dGVuZGVlIiwiZXh0ZW5kZXJzIiwiaSIsImZvcm1hdFN0cmluZyIsInN0cmluZyIsInZhbHVlcyIsInZhbCIsInJlcGxhY2VtZW50Iiwic3RyaW5naWZ5IiwidG9TdHJpbmciLCJSZWdFeHAiLCJmaW5kSW5UcmVlIiwidHJlZSIsInNlYXJjaEZpbHRlciIsIndhbGthYmxlIiwiaWdub3JlIiwidGVtcFJldHVybiIsInRvV2FsayIsImtleXMiLCJpbmNsdWRlcyIsImdldE5lc3RlZFByb3AiLCJzcGxpdCIsInJlZHVjZSIsImN1cnJlbnRPYmoiLCJmaW5kSW5SZW5kZXJUcmVlIiwiZmluZEluUmVhY3RUcmVlIiwiZ2V0UmVhY3RJbnN0YW5jZSIsIl9fcmVhY3RJbnRlcm5hbEluc3RhbmNlJCIsImZpbmQiLCJrIiwic3RhcnRzV2l0aCIsImdldE93bmVySW5zdGFuY2UiLCJpbmNsdWRlIiwiZXhjbHVkZSIsImZpbHRlciIsIl8iLCJleGNsdWRpbmciLCJuYW1lRmlsdGVyIiwiZ2V0RGlzcGxheU5hbWUiLCJvd25lciIsInR5cGUiLCJkaXNwbGF5TmFtZSIsIm5hbWUiLCJjbGFzc0ZpbHRlciIsImN1cnIiLCJyZXR1cm4iLCJzdGF0ZU5vZGUiLCJIVE1MRWxlbWVudCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVlLE1BQU1BLFNBQU4sQ0FBZ0I7QUFFM0IsU0FBT0MsT0FBUCxDQUFlQyxJQUFmLEVBQXFCO0FBQ2pCLFdBQVEsZ0NBQStCQyxvREFBTSxDQUFDQyxJQUFLLHFCQUFvQkQsb0RBQU0sQ0FBQ0UsSUFBSyxJQUFHSCxJQUFLLEVBQTNGO0FBQ0g7QUFFRDs7Ozs7Ozs7Ozs7OztBQVdBLFNBQU9JLFNBQVAsQ0FBaUJDLElBQWpCLEVBQXVCQyxRQUFRLEdBQUcsS0FBbEMsRUFBeUM7QUFDckMsVUFBTUMsUUFBUSxHQUFHQyxRQUFRLENBQUNDLGFBQVQs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O0FBQ25FLFVBQUlELElBQUksS0FBSyxJQUFiLEVBQW1CO0FBQ25CLFlBQU1MLEtBQUssR0FBR0ssSUFBSSxDQUFDRSxTQUFuQjtBQUNBLFVBQUlGLElBQUksS0FBSyxJQUFULElBQWlCLEVBQUVMLEtBQUssWUFBWVEsV0FBbkIsQ0FBakIsSUFBb0RKLFdBQVcsQ0FBQ0MsSUFBRCxDQUEvRCxJQUF5RVYsTUFBTSxDQUFDSyxLQUFELENBQW5GLEVBQTRGLE9BQU9BLEtBQVA7QUFDNUY7O0FBRUQsV0FBTyxJQUFQO0FBQ0E7O0FBalE2QiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL3V0aWxpdGllcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuL2xvZ2dlclwiO1xyXG5pbXBvcnQgRE9NIGZyb20gXCIuL2RvbXRvb2xzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBVdGlsaXRpZXMge1xyXG5cclxuICAgIHN0YXRpYyByZXBvVXJsKHBhdGgpIHtcclxuICAgICAgICByZXR1cm4gYGh0dHBzOi8vY2RuLnN0YXRpY2FseS5jb20vZ2gvJHtDb25maWcucmVwb30vQmV0dGVyRGlzY29yZEFwcC8ke0NvbmZpZy5oYXNofS8ke3BhdGh9YDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBhcnNlcyBhIHN0cmluZyBvZiBIVE1MIGFuZCByZXR1cm5zIHRoZSByZXN1bHRzLiBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0cnVlLFxyXG4gICAgICogdGhlIHBhcnNlZCBIVE1MIHdpbGwgYmUgcmV0dXJuZWQgYXMgYSBkb2N1bWVudCBmcmFnbWVudCB7QHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRG9jdW1lbnRGcmFnbWVudH0uXHJcbiAgICAgKiBUaGlzIGlzIGV4dHJlbWVseSB1c2VmdWwgaWYgeW91IGhhdmUgYSBsaXN0IG9mIGVsZW1lbnRzIGF0IHRoZSB0b3AgbGV2ZWwsIHRoZXkgY2FuIHRoZW4gYmUgYXBwZW5kZWQgYWxsIGF0IG9uY2UgdG8gYW5vdGhlciBub2RlLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIGZhbHNlLCB0aGVuIHRoZSByZXR1cm4gdmFsdWUgd2lsbCBiZSB0aGUgbGlzdCBvZiBwYXJzZWRcclxuICAgICAqIG5vZGVzIGFuZCB0aGVyZSB3ZXJlIG11bHRpcGxlIHRvcCBsZXZlbCBub2Rlcywgb3RoZXJ3aXNlIHRoZSBzaW5nbGUgbm9kZSBpcyByZXR1cm5lZC5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBodG1sIC0gSFRNTCB0byBiZSBwYXJzZWRcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2ZyYWdtZW50PWZhbHNlXSAtIFdoZXRoZXIgb3Igbm90IHRoZSByZXR1cm4gc2hvdWxkIGJlIHRoZSByYXcgYERvY3VtZW50RnJhZ21lbnRgXHJcbiAgICAgKiBAcmV0dXJucyB7KERvY3VtZW50RnJhZ21lbnR8Tm9kZUxpc3R8SFRNTEVsZW1lbnQpfSAtIFRoZSByZXN1bHQgb2YgSFRNTCBwYXJzaW5nXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBwYXJzZUhUTUwoaHRtbCwgZnJhZ21lbnQgPSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInRlbXBsYXRlXCIpO1xyXG4gICAgICAgIHRlbXBsYXRlLmlubmVySFRNTCA9IGh0bWw7XHJcbiAgICAgICAgY29uc3Qgbm9kZSA9IHRlbXBsYXRlLmNvbnRlbnQuY2xvbmVOb2RlKHRydWUpO1xyXG4gICAgICAgIGlmIChmcmFnbWVudCkgcmV0dXJuIG5vZGU7XHJcbiAgICAgICAgcmV0dXJuIG5vZGUuY2hpbGROb2Rlcy5sZW5ndGggPiAxID8gbm9kZS5jaGlsZE5vZGVzIDogbm9kZS5jaGlsZE5vZGVzWzBdO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRUZXh0QXJlYSgpIHtcclxuICAgICAgICByZXR1cm4gRE9NLnF1ZXJ5KFwiLmNoYW5uZWxUZXh0QXJlYS0xTERiWUcgdGV4dGFyZWFcIik7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGluc2VydFRleHQodGV4dGFyZWEsIHRleHQpIHtcclxuICAgICAgICB0ZXh0YXJlYS5mb2N1cygpO1xyXG4gICAgICAgIHRleHRhcmVhLnNlbGVjdGlvblN0YXJ0ID0gMDtcclxuICAgICAgICB0ZXh0YXJlYS5zZWxlY3Rpb25FbmQgPSB0ZXh0YXJlYS52YWx1ZS5sZW5ndGg7XHJcbiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJpbnNlcnRUZXh0XCIsIGZhbHNlLCB0ZXh0KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZXNjYXBlKHMpIHtcclxuICAgICAgICByZXR1cm4gcy5yZXBsYWNlKC9bLS9cXFxcXiQqKz8uKCl8W1xcXXt9XS9nLCBcIlxcXFwkJlwiKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgdGVzdEpTT04oZGF0YSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHN1cHByZXNzRXJyb3JzKG1ldGhvZCwgbWVzc2FnZSkge1xyXG4gICAgICAgIHJldHVybiAoLi4ucGFyYW1zKSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7IHJldHVybiBtZXRob2QoLi4ucGFyYW1zKTtcdH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHsgTG9nZ2VyLnN0YWNrdHJhY2UoXCJTdXBwcmVzc2VkRXJyb3JcIiwgXCJFcnJvciBvY2N1cnJlZCBpbiBcIiArIG1lc3NhZ2UsIGUpOyB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgb25SZW1vdmVkKG5vZGUsIGNhbGxiYWNrKSB7XHJcbiAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgbXV0YXRpb25zLmxlbmd0aDsgbSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtdXRhdGlvbiA9IG11dGF0aW9uc1ttXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gQXJyYXkuZnJvbShtdXRhdGlvbi5yZW1vdmVkTm9kZXMpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGlyZWN0TWF0Y2ggPSBub2Rlcy5pbmRleE9mKG5vZGUpID4gLTE7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRNYXRjaCA9IG5vZGVzLnNvbWUocGFyZW50ID0+IHBhcmVudC5jb250YWlucyhub2RlKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGlyZWN0TWF0Y2ggfHwgcGFyZW50TWF0Y2gpIHtcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHtzdWJ0cmVlOiB0cnVlLCBjaGlsZExpc3Q6IHRydWV9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNFbXB0eShvYmopIHtcclxuICAgICAgICBpZiAob2JqID09IG51bGwgfHwgb2JqID09IHVuZGVmaW5lZCB8fCBvYmogPT0gXCJcIikgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgaWYgKHR5cGVvZihvYmopICE9PSBcIm9iamVjdFwiKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkgcmV0dXJuIG9iai5sZW5ndGggPT0gMDtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcclxuICAgICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2VuZXJhdGVzIGFuIGF1dG9tYXRpY2FsbHkgbWVtb2l6aW5nIHZlcnNpb24gb2YgYW4gb2JqZWN0LlxyXG4gICAgICogQGF1dGhvciBaZXJlYm9zXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IC0gb2JqZWN0IHRvIG1lbW9pemVcclxuICAgICAqIEByZXR1cm5zIHtQcm94eX0gdGhlIHByb3h5IHRvIHRoZSBvYmplY3QgdGhhdCBtZW1vaXplcyBwcm9wZXJ0aWVzXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBtZW1vaXplT2JqZWN0KG9iamVjdCkge1xyXG4gICAgICAgIGNvbnN0IHByb3h5ID0gbmV3IFByb3h5KG9iamVjdCwge1xyXG4gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKG9iaiwgbW9kKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIW9iai5oYXNPd25Qcm9wZXJ0eShtb2QpKSByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBtb2QpLmdldCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gb2JqW21vZF07XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG9ialttb2RdO1xyXG4gICAgICAgICAgICAgICAgICAgIG9ialttb2RdID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb2JqW21vZF07XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNldDogZnVuY3Rpb24ob2JqLCBtb2QsIHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KG1vZCkpIHJldHVybiBMb2dnZXIuZXJyb3IoXCJNZW1vaXplZE9iamVjdFwiLCBcIlRyeWluZyB0byBvdmVyd3JpdGUgZXhpc3RpbmcgcHJvcGVydHlcIik7XHJcbiAgICAgICAgICAgICAgICBvYmpbbW9kXSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9ialttb2RdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm94eSwgXCJoYXNPd25Qcm9wZXJ0eVwiLCB7dmFsdWU6IGZ1bmN0aW9uKHByb3ApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXNbcHJvcF0gIT09IHVuZGVmaW5lZDtcclxuICAgICAgICB9fSk7XHJcblxyXG4gICAgICAgIHJldHVybiBwcm94eTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZXAgZXh0ZW5kcyBhbiBvYmplY3Qgd2l0aCBhIHNldCBvZiBvdGhlciBvYmplY3RzLiBPYmplY3RzIGxhdGVyIGluIHRoZSBsaXN0XHJcbiAgICAgKiBvZiBgZXh0ZW5kZXJzYCBoYXZlIHByaW9yaXR5LCB0aGF0IGlzIHRvIHNheSBpZiBvbmUgc2V0cyBhIGtleSB0byBiZSBhIHByaW1pdGl2ZSxcclxuICAgICAqIGl0IHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgbmV4dCBvbmUgd2l0aCB0aGUgc2FtZSBrZXkuIElmIGl0IGlzIGFuIG9iamVjdCxcclxuICAgICAqIGFuZCB0aGUga2V5cyBtYXRjaCwgdGhlIG9iamVjdCBpcyBleHRlbmRlZC4gVGhpcyBoYXBwZW5zIHJlY3Vyc2l2ZWx5LlxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGV4dGVuZGVlIC0gT2JqZWN0IHRvIGJlIGV4dGVuZGVkXHJcbiAgICAgKiBAcGFyYW0gey4uLm9iamVjdH0gZXh0ZW5kZXJzIC0gT2JqZWN0cyB0byBleHRlbmQgd2l0aFxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gLSBBIHJlZmVyZW5jZSB0byBgZXh0ZW5kZWVgXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBleHRlbmQoZXh0ZW5kZWUsIC4uLmV4dGVuZGVycykge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXh0ZW5kZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGV4dGVuZGVyc1tpXSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGV4dGVuZGVyc1tpXS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBleHRlbmRlZVtrZXldID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBleHRlbmRlcnNbaV1ba2V5XSA9PT0gXCJvYmplY3RcIikgdGhpcy5leHRlbmQoZXh0ZW5kZWVba2V5XSwgZXh0ZW5kZXJzW2ldW2tleV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBleHRlbmRlcnNbaV1ba2V5XSA9PT0gXCJvYmplY3RcIikgZXh0ZW5kZWVba2V5XSA9IHt9LCB0aGlzLmV4dGVuZChleHRlbmRlZVtrZXldLCBleHRlbmRlcnNbaV1ba2V5XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBleHRlbmRlZVtrZXldID0gZXh0ZW5kZXJzW2ldW2tleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGV4dGVuZGVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRm9ybWF0IHN0cmluZ3Mgd2l0aCBwbGFjZWhvbGRlcnMgKGB7e3BsYWNlaG9sZGVyfX1gKSBpbnRvIGZ1bGwgc3RyaW5ncy5cclxuICAgICAqIFF1aWNrIGV4YW1wbGU6IGBQbHVnaW5VdGlsaXRpZXMuZm9ybWF0U3RyaW5nKFwiSGVsbG8sIHt7dXNlcn19XCIsIHt1c2VyOiBcIlplcmVib3NcIn0pYFxyXG4gICAgICogd291bGQgcmV0dXJuIFwiSGVsbG8sIFplcmVib3NcIi5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgLSBzdHJpbmcgdG8gZm9ybWF0XHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gdmFsdWVzIC0gb2JqZWN0IGxpdGVyYWwgb2YgcGxhY2Vob2xkZXJzIHRvIHJlcGxhY2VtZW50c1xyXG4gICAgICogQHJldHVybnMge3N0cmluZ30gdGhlIHByb3Blcmx5IGZvcm1hdHRlZCBzdHJpbmdcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGZvcm1hdFN0cmluZyhzdHJpbmcsIHZhbHVlcykge1xyXG4gICAgICAgIGZvciAoY29uc3QgdmFsIGluIHZhbHVlcykge1xyXG4gICAgICAgICAgICBsZXQgcmVwbGFjZW1lbnQgPSB2YWx1ZXNbdmFsXTtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVwbGFjZW1lbnQpKSByZXBsYWNlbWVudCA9IEpTT04uc3RyaW5naWZ5KHJlcGxhY2VtZW50KTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZihyZXBsYWNlbWVudCkgPT09IFwib2JqZWN0XCIgJiYgcmVwbGFjZW1lbnQgIT09IG51bGwpIHJlcGxhY2VtZW50ID0gcmVwbGFjZW1lbnQudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UobmV3IFJlZ0V4cChge3ske3ZhbH19fWAsIFwiZ1wiKSwgcmVwbGFjZW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc3RyaW5nO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmluZHMgYSB2YWx1ZSwgc3Vib2JqZWN0LCBvciBhcnJheSBmcm9tIGEgdHJlZSB0aGF0IG1hdGNoZXMgYSBzcGVjaWZpYyBmaWx0ZXIuXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gdHJlZSBUcmVlIHRoYXQgc2hvdWxkIGJlIHdhbGtlZFxyXG4gICAgICogQHBhcmFtIHtjYWxsYWJsZX0gc2VhcmNoRmlsdGVyIEZpbHRlciB0byBjaGVjayBhZ2FpbnN0IGVhY2ggb2JqZWN0IGFuZCBzdWJvYmplY3RcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIEFkZGl0aW9uYWwgb3B0aW9ucyB0byBjdXN0b21pemUgdGhlIHNlYXJjaFxyXG4gICAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fG51bGx9IFtvcHRpb25zLndhbGthYmxlPW51bGxdIEFycmF5IG9mIHN0cmluZ3MgdG8gdXNlIGFzIGtleXMgdGhhdCBhcmUgYWxsb3dlZCB0byBiZSB3YWxrZWQgb24uIE51bGwgdmFsdWUgaW5kaWNhdGVzIGFsbCBrZXlzIGFyZSB3YWxrYWJsZVxyXG4gICAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBbb3B0aW9ucy5pZ25vcmU9W11dIEFycmF5IG9mIHN0cmluZ3MgdG8gdXNlIGFzIGtleXMgdG8gZXhjbHVkZSBmcm9tIHRoZSBzZWFyY2gsIG1vc3QgaGVscGZ1bCB3aGVuIGB3YWxrYWJsZSA9IG51bGxgLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZmluZEluVHJlZSh0cmVlLCBzZWFyY2hGaWx0ZXIsIHt3YWxrYWJsZSA9IG51bGwsIGlnbm9yZSA9IFtdfSA9IHt9KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBzZWFyY2hGaWx0ZXIgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgICAgaWYgKHRyZWUuaGFzT3duUHJvcGVydHkoc2VhcmNoRmlsdGVyKSkgcmV0dXJuIHRyZWVbc2VhcmNoRmlsdGVyXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoc2VhcmNoRmlsdGVyKHRyZWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cmVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiB0cmVlICE9PSBcIm9iamVjdFwiIHx8IHRyZWUgPT0gbnVsbCkgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgICAgICAgbGV0IHRlbXBSZXR1cm4gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKHRyZWUgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHRyZWUpIHtcclxuICAgICAgICAgICAgICAgIHRlbXBSZXR1cm4gPSB0aGlzLmZpbmRJblRyZWUodmFsdWUsIHNlYXJjaEZpbHRlciwge3dhbGthYmxlLCBpZ25vcmV9KTtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGVtcFJldHVybiAhPSBcInVuZGVmaW5lZFwiKSByZXR1cm4gdGVtcFJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgdG9XYWxrID0gd2Fsa2FibGUgPT0gbnVsbCA/IE9iamVjdC5rZXlzKHRyZWUpIDogd2Fsa2FibGU7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHRvV2Fsaykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZih0cmVlW2tleV0pID09IFwidW5kZWZpbmVkXCIgfHwgaWdub3JlLmluY2x1ZGVzKGtleSkpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgdGVtcFJldHVybiA9IHRoaXMuZmluZEluVHJlZSh0cmVlW2tleV0sIHNlYXJjaEZpbHRlciwge3dhbGthYmxlLCBpZ25vcmV9KTtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGVtcFJldHVybiAhPSBcInVuZGVmaW5lZFwiKSByZXR1cm4gdGVtcFJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGVtcFJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgYSBuZXN0ZWQgcHJvcGVydHkgKGlmIGl0IGV4aXN0cykgc2FmZWx5LiBQYXRoIHNob3VsZCBiZSBzb21ldGhpbmcgbGlrZSBgcHJvcC5wcm9wMi5wcm9wM2AuXHJcbiAgICAgKiBOdW1iZXJzIGNhbiBiZSB1c2VkIGZvciBhcnJheXMgYXMgd2VsbCBsaWtlIGBwcm9wLnByb3AyLmFycmF5LjAuaWRgLlxyXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iaiAtIG9iamVjdCB0byBnZXQgbmVzdGVkIHByb3BlcnR5IG9mXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwcm9wZXJ0eSB0byBvYnRhaW5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldE5lc3RlZFByb3Aob2JqLCBwYXRoKSB7XHJcbiAgICAgICAgcmV0dXJuIHBhdGguc3BsaXQoL1xccz9cXC5cXHM/LykucmVkdWNlKGZ1bmN0aW9uKGN1cnJlbnRPYmosIHByb3ApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRPYmogJiYgY3VycmVudE9ialtwcm9wXTtcclxuICAgICAgICB9LCBvYmopO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmluZHMgYSB2YWx1ZSwgc3Vib2JqZWN0LCBvciBhcnJheSBmcm9tIGEgdHJlZSB0aGF0IG1hdGNoZXMgYSBzcGVjaWZpYyBmaWx0ZXIuIEdyZWF0IGZvciBwYXRjaGluZyByZW5kZXIgZnVuY3Rpb25zLlxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IHRyZWUgUmVhY3QgdHJlZSB0byBsb29rIHRocm91Z2guIENhbiBiZSBhIHJlbmRlcmVkIG9iamVjdCBvciBhbiBpbnRlcm5hbCBpbnN0YW5jZS5cclxuICAgICAqIEBwYXJhbSB7Y2FsbGFibGV9IHNlYXJjaEZpbHRlciBGaWx0ZXIgZnVuY3Rpb24gdG8gY2hlY2sgc3Vib2JqZWN0cyBhZ2FpbnN0LlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZmluZEluUmVuZGVyVHJlZSh0cmVlLCBzZWFyY2hGaWx0ZXIsIHt3YWxrYWJsZSA9IFtcInByb3BzXCIsIFwiY2hpbGRyZW5cIiwgXCJjaGlsZFwiLCBcInNpYmxpbmdcIl0sIGlnbm9yZSA9IFtdfSA9IHt9KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEluVHJlZSh0cmVlLCBzZWFyY2hGaWx0ZXIsIHt3YWxrYWJsZSwgaWdub3JlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaW5kcyBhIHZhbHVlLCBzdWJvYmplY3QsIG9yIGFycmF5IGZyb20gYSB0cmVlIHRoYXQgbWF0Y2hlcyBhIHNwZWNpZmljIGZpbHRlci4gR3JlYXQgZm9yIHBhdGNoaW5nIHJlbmRlciBmdW5jdGlvbnMuXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gdHJlZSBSZWFjdCB0cmVlIHRvIGxvb2sgdGhyb3VnaC4gQ2FuIGJlIGEgcmVuZGVyZWQgb2JqZWN0IG9yIGFuIGludGVybmFsIGluc3RhbmNlLlxyXG4gICAgICogQHBhcmFtIHtjYWxsYWJsZX0gc2VhcmNoRmlsdGVyIEZpbHRlciBmdW5jdGlvbiB0byBjaGVjayBzdWJvYmplY3RzIGFnYWluc3QuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBmaW5kSW5SZWFjdFRyZWUodHJlZSwgc2VhcmNoRmlsdGVyKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEluVHJlZSh0cmVlLCBzZWFyY2hGaWx0ZXIsIHt3YWxrYWJsZTogW1wicHJvcHNcIiwgXCJjaGlsZHJlblwiLCBcInJldHVyblwiLCBcInN0YXRlTm9kZVwiXX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRSZWFjdEluc3RhbmNlKG5vZGUpIHtcclxuICAgICAgICBpZiAobm9kZS5fX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSQpIHJldHVybiBub2RlLl9fcmVhY3RJbnRlcm5hbEluc3RhbmNlJDtcclxuICAgICAgICByZXR1cm4gbm9kZVtPYmplY3Qua2V5cyhub2RlKS5maW5kKGsgPT4gay5zdGFydHNXaXRoKFwiX19yZWFjdEludGVybmFsSW5zdGFuY2VcIikpXSB8fCBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG5cdCAqIEdyYWJzIGEgdmFsdWUgZnJvbSB0aGUgcmVhY3QgaW50ZXJuYWwgaW5zdGFuY2UuIEFsbG93cyB5b3UgdG8gZ3JhYlxyXG5cdCAqIGxvbmcgZGVwdGggdmFsdWVzIHNhZmVseSB3aXRob3V0IGFjY2Vzc2luZyBubyBsb25nZXIgdmFsaWQgcHJvcGVydGllcy5cclxuXHQgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBub2RlIC0gbm9kZSB0byBvYnRhaW4gcmVhY3QgaW5zdGFuY2Ugb2ZcclxuXHQgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyAtIG9wdGlvbnMgZm9yIHRoZSBzZWFyY2hcclxuXHQgKiBAcGFyYW0ge2FycmF5fSBbb3B0aW9ucy5pbmNsdWRlXSAtIGxpc3Qgb2YgaXRlbXMgdG8gaW5jbHVkZSBmcm9tIHRoZSBzZWFyY2hcclxuXHQgKiBAcGFyYW0ge2FycmF5fSBbb3B0aW9ucy5leGNsdWRlPVtcIlBvcG91dFwiLCBcIlRvb2x0aXBcIiwgXCJTY3JvbGxlclwiLCBcIkJhY2tncm91bmRGbGFzaFwiXV0gLSBsaXN0IG9mIGl0ZW1zIHRvIGV4Y2x1ZGUgZnJvbSB0aGUgc2VhcmNoXHJcblx0ICogQHBhcmFtIHtjYWxsYWJsZX0gW29wdGlvbnMuZmlsdGVyPV89Pl9dIC0gZmlsdGVyIHRvIGNoZWNrIHRoZSBjdXJyZW50IGluc3RhbmNlIHdpdGggKHNob3VsZCByZXR1cm4gYSBib29sZWFuKVxyXG5cdCAqIEByZXR1cm4geygqfG51bGwpfSB0aGUgb3duZXIgaW5zdGFuY2Ugb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZC5cclxuXHQgKi9cclxuXHRzdGF0aWMgZ2V0T3duZXJJbnN0YW5jZShub2RlLCB7aW5jbHVkZSwgZXhjbHVkZSA9IFtcIlBvcG91dFwiLCBcIlRvb2x0aXBcIiwgXCJTY3JvbGxlclwiLCBcIkJhY2tncm91bmRGbGFzaFwiXSwgZmlsdGVyID0gXyA9PiBffSA9IHt9KSB7XHJcblx0XHRpZiAobm9kZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cdFx0Y29uc3QgZXhjbHVkaW5nID0gaW5jbHVkZSA9PT0gdW5kZWZpbmVkO1xyXG5cdFx0Y29uc3QgbmFtZUZpbHRlciA9IGV4Y2x1ZGluZyA/IGV4Y2x1ZGUgOiBpbmNsdWRlO1xyXG5cdFx0ZnVuY3Rpb24gZ2V0RGlzcGxheU5hbWUob3duZXIpIHtcclxuXHRcdFx0Y29uc3QgdHlwZSA9IG93bmVyLnR5cGU7XHJcblx0XHRcdGlmICghdHlwZSkgcmV0dXJuIG51bGw7XHJcblx0XHRcdHJldHVybiB0eXBlLmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZSB8fCBudWxsO1xyXG5cdFx0fVxyXG5cdFx0ZnVuY3Rpb24gY2xhc3NGaWx0ZXIob3duZXIpIHtcclxuXHRcdFx0Y29uc3QgbmFtZSA9IGdldERpc3BsYXlOYW1lKG93bmVyKTtcclxuXHRcdFx0cmV0dXJuIChuYW1lICE9PSBudWxsICYmICEhKG5hbWVGaWx0ZXIuaW5jbHVkZXMobmFtZSkgXiBleGNsdWRpbmcpKTtcclxuXHRcdH1cclxuXHJcblx0XHRsZXQgY3VyciA9IHRoaXMuZ2V0UmVhY3RJbnN0YW5jZShub2RlKTtcclxuXHRcdGZvciAoY3VyciA9IGN1cnIgJiYgY3Vyci5yZXR1cm47IGN1cnIgIT09IG51bGw7IGN1cnIgPSBjdXJyLnJldHVybikge1xyXG5cdFx0XHRpZiAoY3VyciA9PT0gbnVsbCkgY29udGludWU7XHJcblx0XHRcdGNvbnN0IG93bmVyID0gY3Vyci5zdGF0ZU5vZGU7XHJcblx0XHRcdGlmIChjdXJyICE9PSBudWxsICYmICEob3duZXIgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkgJiYgY2xhc3NGaWx0ZXIoY3VycikgJiYgZmlsdGVyKG93bmVyKSkgcmV0dXJuIG93bmVyO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBudWxsO1xyXG5cdH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/utilities.js\n"); /***/ }), @@ -682,7 +682,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return PublicServersConnection; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nconst SortedGuildStore = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"getSortedGuilds\");\nconst AvatarDefaults = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"getUserAvatarURL\", \"DEFAULT_AVATARS\");\nconst InviteActions = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"acceptInvite\");\n\nconst BrowserWindow = __webpack_require__(/*! electron */ \"electron\").remote.BrowserWindow;\n\nclass PublicServersConnection {\n static get endPoint() {\n return \"https://search.discordservers.com\";\n }\n\n static get joinEndPoint() {\n return \"https://j.discordservers.com\";\n }\n\n static get connectEndPoint() {\n return \"https://auth.discordservers.com/info\";\n }\n\n static getDefaultAvatar() {\n return AvatarDefaults.DEFAULT_AVATARS[Math.floor(Math.random() * 5)];\n }\n\n static hasJoined(id) {\n return SortedGuildStore.getFlattenedGuildIds().includes(id);\n }\n\n static search({\n term = \"\",\n category = \"\",\n from = 0\n } = {}) {\n const request = __webpack_require__(/*! request */ \"request\");\n\n return new Promise(resolve => {\n const queries = [];\n if (category) queries.push(`category=${category.replace(/ /g, \"%20\")}`);\n if (term) queries.push(`term=${term.replace(/ /g, \"%20\")}`);\n if (from) queries.push(`from=${from}`);\n const query = `?${queries.join(\"&\")}`;\n request.get({\n url: `${this.endPoint}${query}${query ? \"&schema=new\" : \"?schema=new\"}`,\n json: true\n }, (err, resp, data) => {\n if (err) return resolve(null);\n const next = data.size + data.from;\n resolve({\n servers: data.results,\n size: data.size,\n from: data.from,\n total: data.total,\n next: next >= data.total ? null : next\n });\n });\n });\n }\n\n static async join(id, native = false) {\n if (native) return InviteActions.acceptInvite(id);\n\n try {\n await fetch(`${this.joinEndPoint}/${id}`, {\n method: \"GET\",\n credentials: \"include\",\n mode: \"cors\",\n headers: {\n \"Accept\": \"application/json\",\n \"Content-Type\": \"application/json\"\n }\n });\n return true;\n } catch (e) {\n return false;\n }\n }\n\n static async checkConnection() {\n try {\n const response = await fetch(`https://auth.discordservers.com/info`, {\n method: \"GET\",\n credentials: \"include\",\n mode: \"cors\",\n headers: {\n \"Accept\": \"application/json\",\n \"Content-Type\": \"application/json\"\n }\n });\n const data = await response.json();\n this._accessToken = data.access_token;\n return data;\n } catch (error) {\n return false;\n }\n }\n\n static connect() {\n return new Promise(resolve => {\n const joinWindow = new BrowserWindow(this.windowOptions);\n const url = `https://auth.discordservers.com/connect?scopes=guilds.join&previousUrl=${this.connectEndPoint}`;\n joinWindow.webContents.on(\"did-navigate\", (event, navUrl) => {\n if (navUrl != this.connectEndPoint) return;\n joinWindow.close();\n resolve();\n });\n joinWindow.loadURL(url);\n });\n }\n\n static get windowOptions() {\n return {\n width: 380,\n height: 450,\n backgroundColor: \"#282b30\",\n show: true,\n resizable: true,\n maximizable: false,\n minimizable: false,\n alwaysOnTop: true,\n frame: false,\n center: true,\n webPreferences: {\n nodeIntegration: false\n }\n };\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc3RydWN0cy9wc2Nvbm5lY3Rpb24uanM/ZWZmNiJdLCJuYW1lcyI6WyJTb3J0ZWRHdWlsZFN0b3JlIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeVByb3BzIiwiQXZhdGFyRGVmYXVsdHMiLCJJbnZpdGVBY3Rpb25zIiwiQnJvd3NlcldpbmRvdyIsInJlcXVpcmUiLCJyZW1vdGUiLCJQdWJsaWNTZXJ2ZXJzQ29ubmVjdGlvbiIsImVuZFBvaW50Iiwiam9pbkVuZFBvaW50IiwiY29ubmVjdEVuZFBvaW50IiwiZ2V0RGVmYXVsdEF2YXRhciIsIkRFRkFVTFRfQVZBVEFSUyIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImhhc0pvaW5lZCIsImlkIiwiZ2V0RmxhdHRlbmVkR3VpbGRJZHMiLCJpbmNsdWRlcyIsInNlYXJjaCIsInRlcm0iLCJjYXRlZ29yeSIsImZyb20iLCJyZXF1ZXN0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJxdWVyaWVzIiwicHVzaCIsInJlcGxhY2UiLCJxdWVyeSIsImpvaW4iLCJnZXQiLCJ1cmwiLCJqc29uIiwiZXJyIiwicmVzcCIsImRhdGEiLCJuZXh0Iiwic2l6ZSIsInNlcnZlcnMiLCJyZXN1bHRzIiwidG90YWwiLCJuYXRpdmUiLCJhY2NlcHRJbnZpdGUiLCJmZXRjaCIsIm1ldGhvZCIsImNyZWRlbnRpYWxzIiwibW9kZSIsImhlYWRlcnMiLCJlIiwiY2hlY2tDb25uZWN0aW9uIiwicmVzcG9uc2UiLCJfYWNjZXNzVG9rZW4iLCJhY2Nlc3NfdG9rZW4iLCJlcnJvciIsImNvbm5lY3QiLCJqb2luV2luZG93Iiwid2luZG93T3B0aW9ucyIsIndlYkNvbnRlbnRzIiwib24iLCJldmVudCIsIm5hdlVybCIsImNsb3NlIiwibG9hZFVSTCIsIndpZHRoIiwiaGVpZ2h0IiwiYmFja2dyb3VuZENvbG9yIiwic2hvdyIsInJlc2l6YWJsZSIsIm1heGltaXphYmxlIiwibWluaW1pemFibGUiLCJhbHdheXNPblRvcCIs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WUFBTStCLFVBQVUsR0FBRyxJQUFJckQsYUFBSixDQUFrQixLQUFLc0QsYUFBdkIsQ0FBbkI7QUFDQSxZQUFNekIsR0FBRyxHQUFJLDBFQUF5RSxLQUFLdkIsZUFBZ0IsRUFBM0c7QUFDQStDLGdCQUFVLENBQUNFLFdBQVgsQ0FBdUJDLEVBQXZCLENBQTBCLGNBQTFCLEVBQTBDLENBQUNDLEtBQUQsRUFBUUMsTUFBUixLQUFtQjtBQUN6RCxZQUFJQSxNQUFNLElBQUksS0FBS3BELGVBQW5CLEVBQW9DO0FBQ3BDK0Msa0JBQVUsQ0FBQ00sS0FBWDtBQUNBckMsZUFBTztBQUNWLE9BSkQ7QUFLQStCLGdCQUFVLENBQUNPLE9BQVgsQ0FBbUIvQixHQUFuQjtBQUNILEtBVE0sQ0FBUDtBQVVIOztBQUVELGFBQVd5QixhQUFYLEdBQTJCO0FBQ3ZCLFdBQU87QUFDSE8sV0FBSyxFQUFFLEdBREo7QUFFSEMsWUFBTSxFQUFFLEdBRkw7QUFHSEMscUJBQWUsRUFBRSxTQUhkO0FBSUhDLFVBQUksRUFBRSxJQUpIO0FBS0hDLGVBQVMsRUFBRSxJQUxSO0FBTUhDLGlCQUFXLEVBQUUsS0FOVjtBQU9IQyxpQkFBVyxFQUFFLEtBUFY7QUFRSEMsaUJBQVcsRUFBRSxJQVJWO0FBU0hDLFdBQUssRUFBRSxLQVRKO0FBVUhDLFlBQU0sRUFBRSxJQVZMO0FBV0hDLG9CQUFjLEVBQUU7QUFDWkMsdUJBQWUsRUFBRTtBQURMO0FBWGIsS0FBUDtBQWVIOztBQXhHd0MiLCJmaWxlIjoiLi9zcmMvc3RydWN0cy9wc2Nvbm5lY3Rpb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1dlYnBhY2tNb2R1bGVzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuY29uc3QgU29ydGVkR3VpbGRTdG9yZSA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRTb3J0ZWRHdWlsZHNcIik7XHJcbmNvbnN0IEF2YXRhckRlZmF1bHRzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldFVzZXJBdmF0YXJVUkxcIiwgXCJERUZBVUxUX0FWQVRBUlNcIik7XHJcbmNvbnN0IEludml0ZUFjdGlvbnMgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiYWNjZXB0SW52aXRlXCIpO1xyXG5cclxuY29uc3QgQnJvd3NlcldpbmRvdyA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKS5yZW1vdGUuQnJvd3NlcldpbmRvdztcclxuXHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQdWJsaWNTZXJ2ZXJzQ29ubmVjdGlvbiB7XHJcblxyXG4gICAgc3RhdGljIGdldCBlbmRQb2ludCgpIHtyZXR1cm4gXCJodHRwczovL3NlYXJjaC5kaXNjb3Jkc2VydmVycy5jb21cIjt9XHJcbiAgICBzdGF0aWMgZ2V0IGpvaW5FbmRQb2ludCgpIHtyZXR1cm4gXCJodHRwczovL2ouZGlzY29yZHNlcnZlcnMuY29tXCI7fVxyXG4gICAgc3RhdGljIGdldCBjb25uZWN0RW5kUG9pbnQoKSB7cmV0dXJuIFwiaHR0cHM6Ly9hdXRoLmRpc2NvcmRzZXJ2ZXJzLmNvbS9pbmZvXCI7fVxyXG5cclxuICAgIHN0YXRpYyBnZXREZWZhdWx0QXZhdGFyKCkge1xyXG4gICAgICAgIHJldHVybiBBdmF0YXJEZWZhdWx0cy5ERUZBVUxUX0FWQVRBUlNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogNSldO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBoYXNKb2luZWQoaWQpIHtcclxuICAgICAgICByZXR1cm4gU29ydGVkR3VpbGRTdG9yZS5nZXRGbGF0dGVuZWRHdWlsZElkcygpLmluY2x1ZGVzKGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgc2VhcmNoKHt0ZXJtID0gXCJcIiwgY2F0ZWdvcnkgPSBcIlwiLCBmcm9tID0gMH0gPSB7fSkge1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSByZXF1aXJlKFwicmVxdWVzdFwiKTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJpZXMgPSBbXTtcclxuICAgICAgICAgICAgaWYgKGNhdGVnb3J5KSBxdWVyaWVzLnB1c2goYGNhdGVnb3J5PSR7Y2F0ZWdvcnkucmVwbGFjZSgvIC9nLCBcIiUyMFwiKX1gKTtcclxuICAgICAgICAgICAgaWYgKHRlcm0pIHF1ZXJpZXMucHVzaChgdGVybT0ke3Rlcm0ucmVwbGFjZSgvIC9nLCBcIiUyMFwiKX1gKTtcclxuICAgICAgICAgICAgaWYgKGZyb20pIHF1ZXJpZXMucHVzaChgZnJvbT0ke2Zyb219YCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5ID0gYD8ke3F1ZXJpZXMuam9pbihcIiZcIil9YDtcclxuICAgICAgICAgICAgcmVxdWVzdC5nZXQoe3VybDogYCR7dGhpcy5lbmRQb2ludH0ke3F1ZXJ5fSR7cXVlcnkgPyBcIiZzY2hlbWE9bmV3XCIgOiBcIj9zY2hlbWE9bmV3XCJ9YCwganNvbjogdHJ1ZX0sIChlcnIsIHJlc3AsIGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHJldHVybiByZXNvbHZlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IGRhdGEuc2l6ZSArIGRhdGEuZnJvbTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHNlcnZlcnM6IGRhdGEucmVzdWx0cyxcclxuICAgICAgICAgICAgICAgICAgICBzaXplOiBkYXRhLnNpemUsXHJcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogZGF0YS5mcm9tLFxyXG4gICAgICAgICAgICAgICAgICAgIHRvdGFsOiBkYXRhLnRvdGFsLFxyXG4gICAgICAgICAgICAgICAgICAgIG5leHQ6IG5leHQgPj0gZGF0YS50b3RhbCA/IG51bGwgOiBuZXh0XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGFzeW5jIGpvaW4oaWQsIG5hdGl2ZSA9IGZhbHNlKSB7XHJcbiAgICAgICAgaWYgKG5hdGl2ZSkgcmV0dXJuIEludml0ZUFjdGlvbnMuYWNjZXB0SW52aXRlKGlkKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCBmZXRjaChgJHt0aGlzLmpvaW5FbmRQb2ludH0vJHtpZH1gLHtcclxuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcclxuICAgICAgICAgICAgICAgIGNyZWRlbnRpYWxzOiBcImluY2x1ZGVcIixcclxuICAgICAgICAgICAgICAgIG1vZGU6IFwiY29yc1wiLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgIFwiQWNjZXB0XCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgYXN5bmMgY2hlY2tDb25uZWN0aW9uKCkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYGh0dHBzOi8vYXV0aC5kaXNjb3Jkc2VydmVycy5jb20vaW5mb2Ase1xyXG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxyXG4gICAgICAgICAgICAgICAgY3JlZGVudGlhbHM6IFwiaW5jbHVkZVwiLFxyXG4gICAgICAgICAgICAgICAgbW9kZTogXCJjb3JzXCIsXHJcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgXCJBY2NlcHRcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCJcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2FjY2Vzc1Rva2VuID0gZGF0YS5hY2Nlc3NfdG9rZW47XHJcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgY29ubmVjdCgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGpvaW5XaW5kb3cgPSBuZXcgQnJvd3NlcldpbmRvdyh0aGlzLndpbmRvd09wdGlvbnMpO1xyXG4gICAgICAgICAgICBjb25zdCB1cmwgPSBgaHR0cHM6Ly9hdXRoLmRpc2NvcmRzZXJ2ZXJzLmNvbS9jb25uZWN0P3Njb3Blcz1ndWlsZHMuam9pbiZwcmV2aW91c1VybD0ke3RoaXMuY29ubmVjdEVuZFBvaW50fWA7XHJcbiAgICAgICAgICAgIGpvaW5XaW5kb3cud2ViQ29udGVudHMub24oXCJkaWQtbmF2aWdhdGVcIiwgKGV2ZW50LCBuYXZVcmwpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChuYXZVcmwgIT0gdGhpcy5jb25uZWN0RW5kUG9pbnQpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGpvaW5XaW5kb3cuY2xvc2UoKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGpvaW5XaW5kb3cubG9hZFVSTCh1cmwpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQgd2luZG93T3B0aW9ucygpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB3aWR0aDogMzgwLFxyXG4gICAgICAgICAgICBoZWlnaHQ6IDQ1MCxcclxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMyODJiMzBcIixcclxuICAgICAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBtYXhpbWl6YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIG1pbmltaXphYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgYWx3YXlzT25Ub3A6IHRydWUsXHJcbiAgICAgICAgICAgIGZyYW1lOiBmYWxzZSxcclxuICAgICAgICAgICAgY2VudGVyOiB0cnVlLFxyXG4gICAgICAgICAgICB3ZWJQcmVmZXJlbmNlczoge1xyXG4gICAgICAgICAgICAgICAgbm9kZUludGVncmF0aW9uOiBmYWxzZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbn1cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/structs/psconnection.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return PublicServersConnection; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modules/modules.js */ \"./src/modules/modules.js\");\n\nconst SortedGuildStore = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"getSortedGuilds\");\nconst AvatarDefaults = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"getUserAvatarURL\", \"DEFAULT_AVATARS\");\nconst InviteActions = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"acceptInvite\");\n\nconst BrowserWindow = __webpack_require__(/*! electron */ \"electron\").remote.BrowserWindow;\n\nclass PublicServersConnection {\n static get endPoint() {\n return \"https://search.discordservers.com\";\n }\n\n static get joinEndPoint() {\n return \"https://j.discordservers.com\";\n }\n\n static get connectEndPoint() {\n return \"https://auth.discordservers.com/info\";\n }\n\n static getDefaultAvatar() {\n return AvatarDefaults.DEFAULT_AVATARS[Math.floor(Math.random() * 5)];\n }\n\n static hasJoined(id) {\n return SortedGuildStore.getFlattenedGuildIds().includes(id);\n }\n\n static search({\n term = \"\",\n category = \"\",\n from = 0\n } = {}) {\n const request = __webpack_require__(/*! request */ \"request\");\n\n return new Promise(resolve => {\n const queries = [];\n if (category) queries.push(`category=${category.replace(/ /g, \"%20\")}`);\n if (term) queries.push(`term=${term.replace(/ /g, \"%20\")}`);\n if (from) queries.push(`from=${from}`);\n const query = `?${queries.join(\"&\")}`;\n request.get({\n url: `${this.endPoint}${query}${query ? \"&schema=new\" : \"?schema=new\"}`,\n json: true\n }, (err, resp, data) => {\n if (err) return resolve(null);\n const next = data.size + data.from;\n resolve({\n servers: data.results,\n size: data.size,\n from: data.from,\n total: data.total,\n next: next >= data.total ? null : next\n });\n });\n });\n }\n\n static async join(id, native = false) {\n if (native) return InviteActions.acceptInvite(id);\n\n try {\n await fetch(`${this.joinEndPoint}/${id}`, {\n method: \"GET\",\n credentials: \"include\",\n mode: \"cors\",\n headers: {\n \"Accept\": \"application/json\",\n \"Content-Type\": \"application/json\"\n }\n });\n return true;\n } catch (e) {\n return false;\n }\n }\n\n static async checkConnection() {\n try {\n const response = await fetch(`https://auth.discordservers.com/info`, {\n method: \"GET\",\n credentials: \"include\",\n mode: \"cors\",\n headers: {\n \"Accept\": \"application/json\",\n \"Content-Type\": \"application/json\"\n }\n });\n const data = await response.json();\n this._accessToken = data.access_token;\n return data;\n } catch (error) {\n return false;\n }\n }\n\n static connect() {\n return new Promise(resolve => {\n const joinWindow = new BrowserWindow(this.windowOptions);\n const url = `https://auth.discordservers.com/connect?scopes=guilds.join&previousUrl=${this.connectEndPoint}`;\n joinWindow.webContents.on(\"did-navigate\", (event, navUrl) => {\n if (navUrl != this.connectEndPoint) return;\n joinWindow.close();\n resolve();\n });\n joinWindow.loadURL(url);\n });\n }\n\n static get windowOptions() {\n return {\n width: 380,\n height: 450,\n backgroundColor: \"#282b30\",\n show: true,\n resizable: true,\n maximizable: false,\n minimizable: false,\n alwaysOnTop: true,\n frame: false,\n center: true,\n webPreferences: {\n nodeIntegration: false\n }\n };\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc3RydWN0cy9wc2Nvbm5lY3Rpb24uanM/ZWZmNiJdLCJuYW1lcyI6WyJTb3J0ZWRHdWlsZFN0b3JlIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeVByb3BzIiwiQXZhdGFyRGVmYXVsdHMiLCJJbnZpdGVBY3Rpb25zIiwiQnJvd3NlcldpbmRvdyIsInJlcXVpcmUiLCJyZW1vdGUiLCJQdWJsaWNTZXJ2ZXJzQ29ubmVjdGlvbiIsImVuZFBvaW50Iiwiam9pbkVuZFBvaW50IiwiY29ubmVjdEVuZFBvaW50IiwiZ2V0RGVmYXVsdEF2YXRhciIsIkRFRkFVTFRfQVZBVEFSUyIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImhhc0pvaW5lZCIsImlkIiwiZ2V0RmxhdHRlbmVkR3VpbGRJZHMiLCJpbmNsdWRlcyIsInNlYXJjaCIsInRlcm0iLCJjYXRlZ29yeSIsImZyb20iLCJyZXF1ZXN0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJxdWVyaWVzIiwicHVzaCIsInJlcGxhY2UiLCJxdWVyeSIsImpvaW4iLCJnZXQiLCJ1cmwiLCJqc29uIiwiZXJyIiwicmVzcCIsImRhdGEiLCJuZXh0Iiwic2l6ZSIsInNlcnZlcnMiLCJyZXN1bHRzIiwidG90YWwiLCJuYXRpdmUiLCJhY2NlcHRJbnZpdGUiLCJmZXRjaCIsIm1ldGhvZCIsImNyZWRlbnRpYWxzIiwibW9kZSIsImhlYWRlcnMiLCJlIiwiY2hlY2tDb25uZWN0aW9uIiwicmVzcG9uc2UiLCJfYWNjZXNzVG9rZW4iLCJhY2Nlc3NfdG9rZW4iLCJlcnJvciIsImNvbm5lY3QiLCJqb2luV2luZG93Iiwid2luZG93T3B0aW9ucyIsIndlYkNvbnRlbnRzIiwib24iLCJldmVudCIsIm5hdlVybCIsImNsb3NlIiwibG9hZFVSTCIsIndpZHRoIiwiaGVpZ2h0IiwiYmFja2dyb3VuZENvbG9yIiwic2hvdyIsInJlc2l6YWJsZSIsIm1heGltaXphYmxlIiwibWluaW1pemFibGUiLCJhbHdheXNPblRvcCIs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WUFBTStCLFVBQVUsR0FBRyxJQUFJckQsYUFBSixDQUFrQixLQUFLc0QsYUFBdkIsQ0FBbkI7QUFDQSxZQUFNekIsR0FBRyxHQUFJLDBFQUF5RSxLQUFLdkIsZUFBZ0IsRUFBM0c7QUFDQStDLGdCQUFVLENBQUNFLFdBQVgsQ0FBdUJDLEVBQXZCLENBQTBCLGNBQTFCLEVBQTBDLENBQUNDLEtBQUQsRUFBUUMsTUFBUixLQUFtQjtBQUN6RCxZQUFJQSxNQUFNLElBQUksS0FBS3BELGVBQW5CLEVBQW9DO0FBQ3BDK0Msa0JBQVUsQ0FBQ00sS0FBWDtBQUNBckMsZUFBTztBQUNWLE9BSkQ7QUFLQStCLGdCQUFVLENBQUNPLE9BQVgsQ0FBbUIvQixHQUFuQjtBQUNILEtBVE0sQ0FBUDtBQVVIOztBQUVELGFBQVd5QixhQUFYLEdBQTJCO0FBQ3ZCLFdBQU87QUFDSE8sV0FBSyxFQUFFLEdBREo7QUFFSEMsWUFBTSxFQUFFLEdBRkw7QUFHSEMscUJBQWUsRUFBRSxTQUhkO0FBSUhDLFVBQUksRUFBRSxJQUpIO0FBS0hDLGVBQVMsRUFBRSxJQUxSO0FBTUhDLGlCQUFXLEVBQUUsS0FOVjtBQU9IQyxpQkFBVyxFQUFFLEtBUFY7QUFRSEMsaUJBQVcsRUFBRSxJQVJWO0FBU0hDLFdBQUssRUFBRSxLQVRKO0FBVUhDLFlBQU0sRUFBRSxJQVZMO0FBV0hDLG9CQUFjLEVBQUU7QUFDWkMsdUJBQWUsRUFBRTtBQURMO0FBWGIsS0FBUDtBQWVIOztBQXhHd0MiLCJmaWxlIjoiLi9zcmMvc3RydWN0cy9wc2Nvbm5lY3Rpb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1dlYnBhY2tNb2R1bGVzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuY29uc3QgU29ydGVkR3VpbGRTdG9yZSA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRTb3J0ZWRHdWlsZHNcIik7XHJcbmNvbnN0IEF2YXRhckRlZmF1bHRzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldFVzZXJBdmF0YXJVUkxcIiwgXCJERUZBVUxUX0FWQVRBUlNcIik7XHJcbmNvbnN0IEludml0ZUFjdGlvbnMgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiYWNjZXB0SW52aXRlXCIpO1xyXG5cclxuY29uc3QgQnJvd3NlcldpbmRvdyA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKS5yZW1vdGUuQnJvd3NlcldpbmRvdztcclxuXHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQdWJsaWNTZXJ2ZXJzQ29ubmVjdGlvbiB7XHJcblxyXG4gICAgc3RhdGljIGdldCBlbmRQb2ludCgpIHtyZXR1cm4gXCJodHRwczovL3NlYXJjaC5kaXNjb3Jkc2VydmVycy5jb21cIjt9XHJcbiAgICBzdGF0aWMgZ2V0IGpvaW5FbmRQb2ludCgpIHtyZXR1cm4gXCJodHRwczovL2ouZGlzY29yZHNlcnZlcnMuY29tXCI7fVxyXG4gICAgc3RhdGljIGdldCBjb25uZWN0RW5kUG9pbnQoKSB7cmV0dXJuIFwiaHR0cHM6Ly9hdXRoLmRpc2NvcmRzZXJ2ZXJzLmNvbS9pbmZvXCI7fVxyXG5cclxuICAgIHN0YXRpYyBnZXREZWZhdWx0QXZhdGFyKCkge1xyXG4gICAgICAgIHJldHVybiBBdmF0YXJEZWZhdWx0cy5ERUZBVUxUX0FWQVRBUlNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogNSldO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBoYXNKb2luZWQoaWQpIHtcclxuICAgICAgICByZXR1cm4gU29ydGVkR3VpbGRTdG9yZS5nZXRGbGF0dGVuZWRHdWlsZElkcygpLmluY2x1ZGVzKGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgc2VhcmNoKHt0ZXJtID0gXCJcIiwgY2F0ZWdvcnkgPSBcIlwiLCBmcm9tID0gMH0gPSB7fSkge1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSByZXF1aXJlKFwicmVxdWVzdFwiKTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJpZXMgPSBbXTtcclxuICAgICAgICAgICAgaWYgKGNhdGVnb3J5KSBxdWVyaWVzLnB1c2goYGNhdGVnb3J5PSR7Y2F0ZWdvcnkucmVwbGFjZSgvIC9nLCBcIiUyMFwiKX1gKTtcclxuICAgICAgICAgICAgaWYgKHRlcm0pIHF1ZXJpZXMucHVzaChgdGVybT0ke3Rlcm0ucmVwbGFjZSgvIC9nLCBcIiUyMFwiKX1gKTtcclxuICAgICAgICAgICAgaWYgKGZyb20pIHF1ZXJpZXMucHVzaChgZnJvbT0ke2Zyb219YCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5ID0gYD8ke3F1ZXJpZXMuam9pbihcIiZcIil9YDtcclxuICAgICAgICAgICAgcmVxdWVzdC5nZXQoe3VybDogYCR7dGhpcy5lbmRQb2ludH0ke3F1ZXJ5fSR7cXVlcnkgPyBcIiZzY2hlbWE9bmV3XCIgOiBcIj9zY2hlbWE9bmV3XCJ9YCwganNvbjogdHJ1ZX0sIChlcnIsIHJlc3AsIGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHJldHVybiByZXNvbHZlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IGRhdGEuc2l6ZSArIGRhdGEuZnJvbTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHNlcnZlcnM6IGRhdGEucmVzdWx0cyxcclxuICAgICAgICAgICAgICAgICAgICBzaXplOiBkYXRhLnNpemUsXHJcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogZGF0YS5mcm9tLFxyXG4gICAgICAgICAgICAgICAgICAgIHRvdGFsOiBkYXRhLnRvdGFsLFxyXG4gICAgICAgICAgICAgICAgICAgIG5leHQ6IG5leHQgPj0gZGF0YS50b3RhbCA/IG51bGwgOiBuZXh0XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGFzeW5jIGpvaW4oaWQsIG5hdGl2ZSA9IGZhbHNlKSB7XHJcbiAgICAgICAgaWYgKG5hdGl2ZSkgcmV0dXJuIEludml0ZUFjdGlvbnMuYWNjZXB0SW52aXRlKGlkKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCBmZXRjaChgJHt0aGlzLmpvaW5FbmRQb2ludH0vJHtpZH1gLHtcclxuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcclxuICAgICAgICAgICAgICAgIGNyZWRlbnRpYWxzOiBcImluY2x1ZGVcIixcclxuICAgICAgICAgICAgICAgIG1vZGU6IFwiY29yc1wiLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgIFwiQWNjZXB0XCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgYXN5bmMgY2hlY2tDb25uZWN0aW9uKCkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYGh0dHBzOi8vYXV0aC5kaXNjb3Jkc2VydmVycy5jb20vaW5mb2Ase1xyXG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxyXG4gICAgICAgICAgICAgICAgY3JlZGVudGlhbHM6IFwiaW5jbHVkZVwiLFxyXG4gICAgICAgICAgICAgICAgbW9kZTogXCJjb3JzXCIsXHJcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgXCJBY2NlcHRcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCJcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2FjY2Vzc1Rva2VuID0gZGF0YS5hY2Nlc3NfdG9rZW47XHJcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgY29ubmVjdCgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGpvaW5XaW5kb3cgPSBuZXcgQnJvd3NlcldpbmRvdyh0aGlzLndpbmRvd09wdGlvbnMpO1xyXG4gICAgICAgICAgICBjb25zdCB1cmwgPSBgaHR0cHM6Ly9hdXRoLmRpc2NvcmRzZXJ2ZXJzLmNvbS9jb25uZWN0P3Njb3Blcz1ndWlsZHMuam9pbiZwcmV2aW91c1VybD0ke3RoaXMuY29ubmVjdEVuZFBvaW50fWA7XHJcbiAgICAgICAgICAgIGpvaW5XaW5kb3cud2ViQ29udGVudHMub24oXCJkaWQtbmF2aWdhdGVcIiwgKGV2ZW50LCBuYXZVcmwpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChuYXZVcmwgIT0gdGhpcy5jb25uZWN0RW5kUG9pbnQpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGpvaW5XaW5kb3cuY2xvc2UoKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGpvaW5XaW5kb3cubG9hZFVSTCh1cmwpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQgd2luZG93T3B0aW9ucygpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB3aWR0aDogMzgwLFxyXG4gICAgICAgICAgICBoZWlnaHQ6IDQ1MCxcclxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMyODJiMzBcIixcclxuICAgICAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBtYXhpbWl6YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIG1pbmltaXphYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgYWx3YXlzT25Ub3A6IHRydWUsXHJcbiAgICAgICAgICAgIGZyYW1lOiBmYWxzZSxcclxuICAgICAgICAgICAgY2VudGVyOiB0cnVlLFxyXG4gICAgICAgICAgICB3ZWJQcmVmZXJlbmNlczoge1xyXG4gICAgICAgICAgICAgICAgbm9kZUludGVncmF0aW9uOiBmYWxzZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbn1cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/structs/psconnection.js\n"); /***/ }), @@ -718,7 +718,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Checkbox; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Checkbox extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.onClick = this.onClick.bind(this);\n this.state = {\n checked: this.props.checked || false\n };\n }\n\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-item\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-label label-JWQiNe da-label\"\n }, this.props.text), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-wrapper checkbox-3kaeSU da-checkbox checkbox-3EVISJ da-checkbox\",\n onClick: this.onClick\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-inner checkboxInner-3yjcPe da-checkboxInner\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n className: \"checkbox checkboxElement-1qV33p da-checkboxElement\",\n checked: this.state.checked,\n type: \"checkbox\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", null)), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", null)));\n }\n\n onClick() {\n this.props.onChange(!this.state.checked);\n this.setState({\n checked: !this.state.checked\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvY3VzdG9tY3NzL2NoZWNrYm94LmpzeD8yMmI1Il0sIm5hbWVzIjpbIkNoZWNrYm94IiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwib25DbGljayIsImJpbmQiLCJzdGF0ZSIsImNoZWNrZWQiLCJyZW5kZXIiLCJ0ZXh0Iiwib25DaGFuZ2UiLCJzZXRTdGF0ZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxRQUFOLFNBQXVCQyw2Q0FBSyxDQUFDQyxTQUE3QixDQUF1QztBQUNsREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsT0FBTCxHQUFlLEtBQUtBLE9BQUwsQ0FBYUMsSUFBYixDQUFrQixJQUFsQixDQUFmO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQUNDLGFBQU8sRUFBRSxLQUFLSixLQUFMLENBQVdJLE9BQVgsSUFBc0I7QUFBaEMsS0FBYjtBQUNIOztBQUVEQyxRQUFNLEdBQUc7QUFDTCx3QkFBTztBQUFLLGVBQVMsRUFBQztBQUFmLG9CQUNIO0FBQUssZUFBUyxFQUFDO0FBQWYsT0FBdUQsS0FBS0wsS0FBTCxDQUFXTSxJQUFsRSxDQURHLGVBRUg7QUFBSyxlQUFTLEVBQUMsMEVBQWY7QUFBMEYsYUFBTyxFQUFFLEtBQUtMO0FBQXhHLG9CQUNJO0FBQUssZUFBUyxFQUFDO0FBQWYsb0JBQ0k7QUFBTyxlQUFTLEVBQUMsb0RBQWpCO0FBQXNFLGFBQU8sRUFBRSxLQUFLRSxLQUFMLENBQVdDLE9BQTFGO0FBQW1HLFVBQUksRUFBQztBQUF4RyxNQURKLGVBRUkseUVBRkosQ0FESixlQUtJLHlFQUxKLENBRkcsQ0FBUDtBQVVIOztBQUVESCxTQUFPLEdBQUc7QUFDTixTQUFLRCxLQUFMLENBQVdPLFFBQVgsQ0FBb0IsQ0FBQyxLQUFLSixLQUFMLENBQVdDLE9BQWhDO0FBQ0EsU0FBS0ksUUFBTCxDQUFjO0FBQUNKLGFBQU8sRUFBRSxDQUFDLEtBQUtELEtBQUwsQ0FBV0M7QUFBdEIsS0FBZDtBQUNIOztBQXZCaUQiLCJmaWxlIjoiLi9zcmMvdWkvY3VzdG9tY3NzL2NoZWNrYm94LmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGVja2JveCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICB0aGlzLm9uQ2xpY2sgPSB0aGlzLm9uQ2xpY2suYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge2NoZWNrZWQ6IHRoaXMucHJvcHMuY2hlY2tlZCB8fCBmYWxzZX07XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImNoZWNrYm94LWl0ZW1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjaGVja2JveC1sYWJlbCBsYWJlbC1KV1FpTmUgZGEtbGFiZWxcIj57dGhpcy5wcm9wcy50ZXh0fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNoZWNrYm94LXdyYXBwZXIgY2hlY2tib3gtM2thZVNVIGRhLWNoZWNrYm94IGNoZWNrYm94LTNFVklTSiBkYS1jaGVja2JveFwiIG9uQ2xpY2s9e3RoaXMub25DbGlja30+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNoZWNrYm94LWlubmVyIGNoZWNrYm94SW5uZXItM3lqY1BlIGRhLWNoZWNrYm94SW5uZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3NOYW1lPVwiY2hlY2tib3ggY2hlY2tib3hFbGVtZW50LTFxVjMzcCBkYS1jaGVja2JveEVsZW1lbnRcIiBjaGVja2VkPXt0aGlzLnN0YXRlLmNoZWNrZWR9IHR5cGU9XCJjaGVja2JveFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxuXHJcbiAgICBvbkNsaWNrKCkge1xyXG4gICAgICAgIHRoaXMucHJvcHMub25DaGFuZ2UoIXRoaXMuc3RhdGUuY2hlY2tlZCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7Y2hlY2tlZDogIXRoaXMuc3RhdGUuY2hlY2tlZH0pO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/customcss/checkbox.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Checkbox; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass Checkbox extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.onClick = this.onClick.bind(this);\n this.state = {\n checked: this.props.checked || false\n };\n }\n\n render() {\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-item\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-label label-JWQiNe da-label\"\n }, this.props.text), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-wrapper checkbox-3kaeSU da-checkbox checkbox-3EVISJ da-checkbox\",\n onClick: this.onClick\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-inner checkboxInner-3yjcPe da-checkboxInner\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n className: \"checkbox checkboxElement-1qV33p da-checkboxElement\",\n checked: this.state.checked,\n type: \"checkbox\"\n }), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", null)), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", null)));\n }\n\n onClick() {\n this.props.onChange(!this.state.checked);\n this.setState({\n checked: !this.state.checked\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvY3VzdG9tY3NzL2NoZWNrYm94LmpzeD8yMmI1Il0sIm5hbWVzIjpbIkNoZWNrYm94IiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwib25DbGljayIsImJpbmQiLCJzdGF0ZSIsImNoZWNrZWQiLCJyZW5kZXIiLCJ0ZXh0Iiwib25DaGFuZ2UiLCJzZXRTdGF0ZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxRQUFOLFNBQXVCQyx5REFBSyxDQUFDQyxTQUE3QixDQUF1QztBQUNsREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsT0FBTCxHQUFlLEtBQUtBLE9BQUwsQ0FBYUMsSUFBYixDQUFrQixJQUFsQixDQUFmO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQUNDLGFBQU8sRUFBRSxLQUFLSixLQUFMLENBQVdJLE9BQVgsSUFBc0I7QUFBaEMsS0FBYjtBQUNIOztBQUVEQyxRQUFNLEdBQUc7QUFDTCx3QkFBTztBQUFLLGVBQVMsRUFBQztBQUFmLG9CQUNIO0FBQUssZUFBUyxFQUFDO0FBQWYsT0FBdUQsS0FBS0wsS0FBTCxDQUFXTSxJQUFsRSxDQURHLGVBRUg7QUFBSyxlQUFTLEVBQUMsMEVBQWY7QUFBMEYsYUFBTyxFQUFFLEtBQUtMO0FBQXhHLG9CQUNJO0FBQUssZUFBUyxFQUFDO0FBQWYsb0JBQ0k7QUFBTyxlQUFTLEVBQUMsb0RBQWpCO0FBQXNFLGFBQU8sRUFBRSxLQUFLRSxLQUFMLENBQVdDLE9BQTFGO0FBQW1HLFVBQUksRUFBQztBQUF4RyxNQURKLGVBRUkscUZBRkosQ0FESixlQUtJLHFGQUxKLENBRkcsQ0FBUDtBQVVIOztBQUVESCxTQUFPLEdBQUc7QUFDTixTQUFLRCxLQUFMLENBQVdPLFFBQVgsQ0FBb0IsQ0FBQyxLQUFLSixLQUFMLENBQVdDLE9BQWhDO0FBQ0EsU0FBS0ksUUFBTCxDQUFjO0FBQUNKLGFBQU8sRUFBRSxDQUFDLEtBQUtELEtBQUwsQ0FBV0M7QUFBdEIsS0FBZDtBQUNIOztBQXZCaUQiLCJmaWxlIjoiLi9zcmMvdWkvY3VzdG9tY3NzL2NoZWNrYm94LmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGVja2JveCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICB0aGlzLm9uQ2xpY2sgPSB0aGlzLm9uQ2xpY2suYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge2NoZWNrZWQ6IHRoaXMucHJvcHMuY2hlY2tlZCB8fCBmYWxzZX07XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImNoZWNrYm94LWl0ZW1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjaGVja2JveC1sYWJlbCBsYWJlbC1KV1FpTmUgZGEtbGFiZWxcIj57dGhpcy5wcm9wcy50ZXh0fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNoZWNrYm94LXdyYXBwZXIgY2hlY2tib3gtM2thZVNVIGRhLWNoZWNrYm94IGNoZWNrYm94LTNFVklTSiBkYS1jaGVja2JveFwiIG9uQ2xpY2s9e3RoaXMub25DbGlja30+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNoZWNrYm94LWlubmVyIGNoZWNrYm94SW5uZXItM3lqY1BlIGRhLWNoZWNrYm94SW5uZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3NOYW1lPVwiY2hlY2tib3ggY2hlY2tib3hFbGVtZW50LTFxVjMzcCBkYS1jaGVja2JveEVsZW1lbnRcIiBjaGVja2VkPXt0aGlzLnN0YXRlLmNoZWNrZWR9IHR5cGU9XCJjaGVja2JveFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxuXHJcbiAgICBvbkNsaWNrKCkge1xyXG4gICAgICAgIHRoaXMucHJvcHMub25DaGFuZ2UoIXRoaXMuc3RhdGUuY2hlY2tlZCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7Y2hlY2tlZDogIXRoaXMuc3RhdGUuY2hlY2tlZH0pO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/customcss/checkbox.jsx\n"); /***/ }), @@ -730,7 +730,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return CssEditor; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./editor */ \"./src/ui/customcss/editor.jsx\");\n/* harmony import */ var _icons_reload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/reload */ \"./src/ui/icons/reload.jsx\");\n/* harmony import */ var _icons_save__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/save */ \"./src/ui/icons/save.jsx\");\n/* harmony import */ var _icons_edit__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons/edit */ \"./src/ui/icons/edit.jsx\");\n/* harmony import */ var _icons_cog__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../icons/cog */ \"./src/ui/icons/cog.jsx\");\n/* harmony import */ var _icons_detach__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../icons/detach */ \"./src/ui/icons/detach.jsx\");\n\n // import Checkbox from \"./checkbox\";\n\n\n\n\n\n\nclass CssEditor extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.hasUnsavedChanges = false;\n this.onChange = this.onChange.bind(this);\n this.toggleLiveUpdate = this.toggleLiveUpdate.bind(this);\n this.updateCss = this.updateCss.bind(this);\n this.saveCss = this.saveCss.bind(this);\n this.openDetached = this.props.openDetached ? this.openDetached.bind(this) : null;\n this.openNative = this.openNative.bind(this);\n this.updateEditor = this.updateEditor.bind(this);\n this.controls = [{\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.update,\n onClick: this.updateCss\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_save__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.save,\n onClick: this.saveCss\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_edit__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.openNative,\n onClick: this.openNative\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_cog__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.settings,\n onClick: \"showSettings\"\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Collections.settings.customcss.liveUpdate.name,\n type: \"checkbox\",\n onChange: this.toggleLiveUpdate,\n checked: modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"settings\", \"customcss\", \"liveUpdate\"),\n side: \"right\"\n }];\n if (this.openDetached) this.controls.push({\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_detach__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.openDetached,\n onClick: this.openDetached,\n side: \"right\"\n });\n }\n\n componentDidMount() {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(\"customcss-updated\", this.updateEditor);\n }\n\n componentWillUnmount() {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].off(\"customcss-updated\", this.updateEditor);\n }\n\n updateEditor(newCSS) {\n if (!this.editor) return;\n this.editor.value = newCSS;\n }\n\n get value() {\n return this.editor.session.getValue();\n }\n\n set value(newValue) {\n this.editor.setValue(newValue);\n }\n\n showSettings() {\n return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor);\n }\n\n resize() {\n return this.editor.resize();\n }\n\n setEditorRef(editor) {\n this.editor = editor;\n if (this.props.editorRef && typeof this.props.editorRef.current !== \"undefined\") this.props.editorRef.current = editor;else if (this.props.editorRef) this.props.editorRef = editor;\n }\n\n onChange() {\n this.hasUnsavedChanges = true;\n if (this.props.onChange) this.props.onChange(...arguments);\n }\n\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_editor__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n ref: this.setEditorRef.bind(this),\n readOnly: this.props.readOnly,\n id: this.props.id || \"bd-customcss-editor\",\n onChange: this.onChange,\n controls: this.controls,\n value: this.props.css\n });\n }\n\n toggleLiveUpdate(checked) {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].set(\"settings\", \"customcss\", \"liveUpdate\", checked);\n }\n\n updateCss(event, newCss) {\n if (this.props.update) this.props.update(newCss);\n }\n\n saveCss(event, newCss) {\n this.hasUnsavedChanges = false;\n if (this.props.save) this.props.save(newCss);\n }\n\n openDetached(event, currentCSS) {\n if (!this.props.openDetached) return;\n this.props.openDetached(currentCSS);\n }\n\n openNative() {\n if (this.props.openNative) this.props.openNative();\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvY3VzdG9tY3NzL2Nzc2VkaXRvci5qc3g/NDIzMCJdLCJuYW1lcyI6WyJDc3NFZGl0b3IiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJoYXNVbnNhdmVkQ2hhbmdlcyIsIm9uQ2hhbmdlIiwiYmluZCIsInRvZ2dsZUxpdmVVcGRhdGUiLCJ1cGRhdGVDc3MiLCJzYXZlQ3NzIiwib3BlbkRldGFjaGVkIiwib3Blbk5hdGl2ZSIsInVwZGF0ZUVkaXRvciIsImNvbnRyb2xzIiwibGFiZWwiLCJjcmVhdGVFbGVtZW50IiwiUmVmcmVzaCIsInNpemUiLCJ0b29sdGlwIiwiU3RyaW5ncyIsIkN1c3RvbUNTUyIsInVwZGF0ZSIsIm9uQ2xpY2siLCJTYXZlIiwic2F2ZSIsIkVkaXQiLCJDb2ciLCJzZXR0aW5ncyIsIkNvbGxlY3Rpb25zIiwiY3VzdG9tY3NzIiwibGl2ZVVwZGF0ZSIsIm5hbWUiLCJ0eXBlIiwiY2hlY2tlZCIsIlNldHRpbmdzIiwiZ2V0Iiwic2lkZSIsInB1c2giLCJEZXRhY2giLCJjb21wb25lbnREaWRNb3VudCIsIkV2ZW50cyIsIm9uIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJvZmYiLCJuZXdDU1MiLCJlZGl0b3IiLCJ2YWx1ZSIsInNlc3Npb24iLCJnZXRWYWx1ZSIsIm5ld1ZhbHVlIiwic2V0VmFsdWUiLCJzaG93U2V0dGluZ3MiLCJrZXlCaW5kaW5nIiwiJGRlZmF1bHRIYW5kbGVyIiwiY29tbWFuZHMiLCJzaG93U2V0dGluZ3NNZW51IiwiZXhlYyIsInJlc2l6ZSIsInNldEVkaXRvclJlZiIsImVkaXRvclJlZiIsImN1cnJlbnQiLCJhcmd1bWVudHMiLCJyZW5kZXIiLCJyZWFkT25seSIsImlkIiwiY3NzIiwic2V0IiwiZXZlbnQiLCJuZXdDc3MiLCJjdXJyZW50Q1NTIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FB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RUQxRCxjQUFZLENBQUN5RCxLQUFELEVBQVFFLFVBQVIsRUFBb0I7QUFDNUIsUUFBSSxDQUFDLEtBQUtsRSxLQUFMLENBQVdPLFlBQWhCLEVBQThCO0FBQzlCLFNBQUtQLEtBQUwsQ0FBV08sWUFBWCxDQUF3QjJELFVBQXhCO0FBQ0g7O0FBRUQxRCxZQUFVLEdBQUc7QUFDVCxRQUFJLEtBQUtSLEtBQUwsQ0FBV1EsVUFBZixFQUEyQixLQUFLUixLQUFMLENBQVdRLFVBQVg7QUFDOUI7O0FBakZrRCIsImZpbGUiOiIuL3NyYy91aS9jdXN0b21jc3MvY3NzZWRpdG9yLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3QsIFNldHRpbmdzLCBFdmVudHMsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5pbXBvcnQgRWRpdG9yIGZyb20gXCIuL2VkaXRvclwiO1xyXG4vLyBpbXBvcnQgQ2hlY2tib3ggZnJvbSBcIi4vY2hlY2tib3hcIjtcclxuaW1wb3J0IFJlZnJlc2ggZnJvbSBcIi4uL2ljb25zL3JlbG9hZFwiO1xyXG5pbXBvcnQgU2F2ZSBmcm9tIFwiLi4vaWNvbnMvc2F2ZVwiO1xyXG5pbXBvcnQgRWRpdCBmcm9tIFwiLi4vaWNvbnMvZWRpdFwiO1xyXG5pbXBvcnQgQ29nIGZyb20gXCIuLi9pY29ucy9jb2dcIjtcclxuaW1wb3J0IERldGFjaCBmcm9tIFwiLi4vaWNvbnMvZGV0YWNoXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDc3NFZGl0b3IgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG5cclxuICAgICAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSB0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy50b2dnbGVMaXZlVXBkYXRlID0gdGhpcy50b2dnbGVMaXZlVXBkYXRlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDc3MgPSB0aGlzLnVwZGF0ZUNzcy5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuc2F2ZUNzcyA9IHRoaXMuc2F2ZUNzcy5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub3BlbkRldGFjaGVkID0gdGhpcy5wcm9wcy5vcGVuRGV0YWNoZWQgPyB0aGlzLm9wZW5EZXRhY2hlZC5iaW5kKHRoaXMpIDogbnVsbDtcclxuICAgICAgICB0aGlzLm9wZW5OYXRpdmUgPSB0aGlzLm9wZW5OYXRpdmUuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUVkaXRvciA9IHRoaXMudXBkYXRlRWRpdG9yLmJpbmQodGhpcyk7XHJcblxyXG4gICAgICAgIHRoaXMuY29udHJvbHMgPSBbXHJcbiAgICAgICAgICAgIHtsYWJlbDogUmVhY3QuY3JlYXRlRWxlbWVudChSZWZyZXNoLCB7c2l6ZTogXCIxOHB4XCJ9KSwgdG9vbHRpcDogU3RyaW5ncy5DdXN0b21DU1MudXBkYXRlLCBvbkNsaWNrOiB0aGlzLnVwZGF0ZUNzc30sXHJcbiAgICAgICAgICAgIHtsYWJlbDogUmVhY3QuY3JlYXRlRWxlbWVudChTYXZlLCB7c2l6ZTogXCIxOHB4XCJ9KSwgdG9vbHRpcDogU3RyaW5ncy5DdXN0b21DU1Muc2F2ZSwgb25DbGljazogdGhpcy5zYXZlQ3NzfSxcclxuICAgICAgICAgICAge2xhYmVsOiBSZWFjdC5jcmVhdGVFbGVtZW50KEVkaXQsIHtzaXplOiBcIjE4cHhcIn0pLCB0b29sdGlwOiBTdHJpbmdzLkN1c3RvbUNTUy5vcGVuTmF0aXZlLCBvbkNsaWNrOiB0aGlzLm9wZW5OYXRpdmV9LFxyXG4gICAgICAgICAgICB7bGFiZWw6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29nLCB7c2l6ZTogXCIxOHB4XCJ9KSwgdG9vbHRpcDogU3RyaW5ncy5DdXN0b21DU1Muc2V0dGluZ3MsIG9uQ2xpY2s6IFwic2hvd1NldHRpbmdzXCJ9LFxyXG4gICAgICAgICAgICB7bGFiZWw6IFN0cmluZ3MuQ29sbGVjdGlvbnMuc2V0dGluZ3MuY3VzdG9tY3NzLmxpdmVVcGRhdGUubmFtZSwgdHlwZTpcImNoZWNrYm94XCIsIG9uQ2hhbmdlOiB0aGlzLnRvZ2dsZUxpdmVVcGRhdGUsIGNoZWNrZWQ6IFNldHRpbmdzLmdldChcInNldHRpbmdzXCIsIFwiY3VzdG9tY3NzXCIsIFwibGl2ZVVwZGF0ZVwiKSwgc2lkZTogXCJyaWdodFwifVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgaWYgKHRoaXMub3BlbkRldGFjaGVkKSB0aGlzLmNvbnRyb2xzLnB1c2goe2xhYmVsOiBSZWFjdC5jcmVhdGVFbGVtZW50KERldGFjaCwge3NpemU6IFwiMThweFwifSksIHRvb2x0aXA6IFN0cmluZ3MuQ3VzdG9tQ1NTLm9wZW5EZXRhY2hlZCwgb25DbGljazogdGhpcy5vcGVuRGV0YWNoZWQsIHNpZGU6IFwicmlnaHRcIn0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgICAgIEV2ZW50cy5vbihcImN1c3RvbWNzcy11cGRhdGVkXCIsIHRoaXMudXBkYXRlRWRpdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgICAgICBFdmVudHMub2ZmKFwiY3VzdG9tY3NzLXVwZGF0ZWRcIiwgdGhpcy51cGRhdGVFZGl0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUVkaXRvcihuZXdDU1MpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZWRpdG9yKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5lZGl0b3IudmFsdWUgPSBuZXdDU1M7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHZhbHVlKCkge3JldHVybiB0aGlzLmVkaXRvci5zZXNzaW9uLmdldFZhbHVlKCk7fVxyXG4gICAgc2V0IHZhbHVlKG5ld1ZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iuc2V0VmFsdWUobmV3VmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dTZXR0aW5ncygpIHtyZXR1cm4gdGhpcy5lZGl0b3Iua2V5QmluZGluZy4kZGVmYXVsdEhhbmRsZXIuY29tbWFuZHMuc2hvd1NldHRpbmdzTWVudS5leGVjKHRoaXMuZWRpdG9yKTt9XHJcbiAgICByZXNpemUoKSB7cmV0dXJuIHRoaXMuZWRpdG9yLnJlc2l6ZSgpO31cclxuXHJcbiAgICBzZXRFZGl0b3JSZWYoZWRpdG9yKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuZWRpdG9yUmVmICYmIHR5cGVvZih0aGlzLnByb3BzLmVkaXRvclJlZi5jdXJyZW50KSAhPT0gXCJ1bmRlZmluZWRcIikgdGhpcy5wcm9wcy5lZGl0b3JSZWYuY3VycmVudCA9IGVkaXRvcjtcclxuICAgICAgICBlbHNlIGlmICh0aGlzLnByb3BzLmVkaXRvclJlZikgdGhpcy5wcm9wcy5lZGl0b3JSZWYgPSBlZGl0b3I7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UoKSB7XHJcbiAgICAgICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IHRydWU7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25DaGFuZ2UpIHRoaXMucHJvcHMub25DaGFuZ2UoLi4uYXJndW1lbnRzKTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxFZGl0b3IgcmVmPXt0aGlzLnNldEVkaXRvclJlZi5iaW5kKHRoaXMpfSByZWFkT25seT17dGhpcy5wcm9wcy5yZWFkT25seX0gaWQ9e3RoaXMucHJvcHMuaWQgfHwgXCJiZC1jdXN0b21jc3MtZWRpdG9yXCJ9IG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlfSBjb250cm9scz17dGhpcy5jb250cm9sc30gdmFsdWU9e3RoaXMucHJvcHMuY3NzfSAvPjtcclxuICAgIH1cclxuXHJcbiAgICB0b2dnbGVMaXZlVXBkYXRlKGNoZWNrZWQpIHtcclxuICAgICAgICBTZXR0aW5ncy5zZXQoXCJzZXR0aW5nc1wiLCBcImN1c3RvbWNzc1wiLCBcImxpdmVVcGRhdGVcIiwgY2hlY2tlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlQ3NzKGV2ZW50LCBuZXdDc3MpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy51cGRhdGUpIHRoaXMucHJvcHMudXBkYXRlKG5ld0Nzcyk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUNzcyhldmVudCwgbmV3Q3NzKSB7XHJcbiAgICAgICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLnNhdmUpIHRoaXMucHJvcHMuc2F2ZShuZXdDc3MpO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5EZXRhY2hlZChldmVudCwgY3VycmVudENTUykge1xyXG4gICAgICAgIGlmICghdGhpcy5wcm9wcy5vcGVuRGV0YWNoZWQpIHJldHVybjtcclxuICAgICAgICB0aGlzLnByb3BzLm9wZW5EZXRhY2hlZChjdXJyZW50Q1NTKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuTmF0aXZlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9wZW5OYXRpdmUpIHRoaXMucHJvcHMub3Blbk5hdGl2ZSgpO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/customcss/csseditor.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return CssEditor; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./editor */ \"./src/ui/customcss/editor.jsx\");\n/* harmony import */ var _icons_reload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/reload */ \"./src/ui/icons/reload.jsx\");\n/* harmony import */ var _icons_save__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/save */ \"./src/ui/icons/save.jsx\");\n/* harmony import */ var _icons_edit__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons/edit */ \"./src/ui/icons/edit.jsx\");\n/* harmony import */ var _icons_cog__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../icons/cog */ \"./src/ui/icons/cog.jsx\");\n/* harmony import */ var _icons_detach__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../icons/detach */ \"./src/ui/icons/detach.jsx\");\n\n // import Checkbox from \"./checkbox\";\n\n\n\n\n\n\nclass CssEditor extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.hasUnsavedChanges = false;\n this.onChange = this.onChange.bind(this);\n this.toggleLiveUpdate = this.toggleLiveUpdate.bind(this);\n this.updateCss = this.updateCss.bind(this);\n this.saveCss = this.saveCss.bind(this);\n this.openDetached = this.props.openDetached ? this.openDetached.bind(this) : null;\n this.openNative = this.openNative.bind(this);\n this.updateEditor = this.updateEditor.bind(this);\n this.controls = [{\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.update,\n onClick: this.updateCss\n }, {\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_save__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.save,\n onClick: this.saveCss\n }, {\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_edit__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.openNative,\n onClick: this.openNative\n }, {\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_cog__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.settings,\n onClick: \"showSettings\"\n }, {\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Collections.settings.customcss.liveUpdate.name,\n type: \"checkbox\",\n onChange: this.toggleLiveUpdate,\n checked: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"settings\", \"customcss\", \"liveUpdate\"),\n side: \"right\"\n }];\n if (this.openDetached) this.controls.push({\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_detach__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.openDetached,\n onClick: this.openDetached,\n side: \"right\"\n });\n }\n\n componentDidMount() {\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(\"customcss-updated\", this.updateEditor);\n }\n\n componentWillUnmount() {\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].off(\"customcss-updated\", this.updateEditor);\n }\n\n updateEditor(newCSS) {\n if (!this.editor) return;\n this.editor.value = newCSS;\n }\n\n get value() {\n return this.editor.session.getValue();\n }\n\n set value(newValue) {\n this.editor.setValue(newValue);\n }\n\n showSettings() {\n return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor);\n }\n\n resize() {\n return this.editor.resize();\n }\n\n setEditorRef(editor) {\n this.editor = editor;\n if (this.props.editorRef && typeof this.props.editorRef.current !== \"undefined\") this.props.editorRef.current = editor;else if (this.props.editorRef) this.props.editorRef = editor;\n }\n\n onChange() {\n this.hasUnsavedChanges = true;\n if (this.props.onChange) this.props.onChange(...arguments);\n }\n\n render() {\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_editor__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n ref: this.setEditorRef.bind(this),\n readOnly: this.props.readOnly,\n id: this.props.id || \"bd-customcss-editor\",\n onChange: this.onChange,\n controls: this.controls,\n value: this.props.css\n });\n }\n\n toggleLiveUpdate(checked) {\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].set(\"settings\", \"customcss\", \"liveUpdate\", checked);\n }\n\n updateCss(event, newCss) {\n if (this.props.update) this.props.update(newCss);\n }\n\n saveCss(event, newCss) {\n this.hasUnsavedChanges = false;\n if (this.props.save) this.props.save(newCss);\n }\n\n openDetached(event, currentCSS) {\n if (!this.props.openDetached) return;\n this.props.openDetached(currentCSS);\n }\n\n openNative() {\n if (this.props.openNative) this.props.openNative();\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvY3VzdG9tY3NzL2Nzc2VkaXRvci5qc3g/NDIzMCJdLCJuYW1lcyI6WyJDc3NFZGl0b3IiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJoYXNVbnNhdmVkQ2hhbmdlcyIsIm9uQ2hhbmdlIiwiYmluZCIsInRvZ2dsZUxpdmVVcGRhdGUiLCJ1cGRhdGVDc3MiLCJzYXZlQ3NzIiwib3BlbkRldGFjaGVkIiwib3Blbk5hdGl2ZSIsInVwZGF0ZUVkaXRvciIsImNvbnRyb2xzIiwibGFiZWwiLCJjcmVhdGVFbGVtZW50IiwiUmVmcmVzaCIsInNpemUiLCJ0b29sdGlwIiwiU3RyaW5ncyIsIkN1c3RvbUNTUyIsInVwZGF0ZSIsIm9uQ2xpY2siLCJTYXZlIiwic2F2ZSIsIkVkaXQiLCJDb2ciLCJzZXR0aW5ncyIsIkNvbGxlY3Rpb25zIiwiY3VzdG9tY3NzIiwibGl2ZVVwZGF0ZSIsIm5hbWUiLCJ0eXBlIiwiY2hlY2tlZCIsIlNldHRpbmdzIiwiZ2V0Iiwic2lkZSIsInB1c2giLCJEZXRhY2giLCJjb21wb25lbnREaWRNb3VudCIsIkV2ZW50cyIsIm9uIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJvZmYiLCJuZXdDU1MiLCJlZGl0b3IiLCJ2YWx1ZSIsInNlc3Npb24iLCJnZXRWYWx1ZSIsIm5ld1ZhbHVlIiwic2V0VmFsdWUiLCJzaG93U2V0dGluZ3MiLCJrZXlCaW5kaW5nIiwiJGRlZmF1bHRIYW5kbGVyIiwiY29tbWFuZHMiLCJzaG93U2V0dGluZ3NNZW51IiwiZXhlYyIsInJlc2l6ZSIsInNldEVkaXRvclJlZiIsImVkaXRvclJlZiIsImN1cnJlbnQiLCJhcmd1bWVudHMiLCJyZW5kZXIiLCJyZWFkT25seSIsImlkIiwiY3NzIiwic2V0IiwiZXZlbnQiLCJuZXdDc3MiLCJjdXJyZW50Q1NTIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FB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RUQxRCxjQUFZLENBQUN5RCxLQUFELEVBQVFFLFVBQVIsRUFBb0I7QUFDNUIsUUFBSSxDQUFDLEtBQUtsRSxLQUFMLENBQVdPLFlBQWhCLEVBQThCO0FBQzlCLFNBQUtQLEtBQUwsQ0FBV08sWUFBWCxDQUF3QjJELFVBQXhCO0FBQ0g7O0FBRUQxRCxZQUFVLEdBQUc7QUFDVCxRQUFJLEtBQUtSLEtBQUwsQ0FBV1EsVUFBZixFQUEyQixLQUFLUixLQUFMLENBQVdRLFVBQVg7QUFDOUI7O0FBakZrRCIsImZpbGUiOiIuL3NyYy91aS9jdXN0b21jc3MvY3NzZWRpdG9yLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3QsIFNldHRpbmdzLCBFdmVudHMsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5pbXBvcnQgRWRpdG9yIGZyb20gXCIuL2VkaXRvclwiO1xyXG4vLyBpbXBvcnQgQ2hlY2tib3ggZnJvbSBcIi4vY2hlY2tib3hcIjtcclxuaW1wb3J0IFJlZnJlc2ggZnJvbSBcIi4uL2ljb25zL3JlbG9hZFwiO1xyXG5pbXBvcnQgU2F2ZSBmcm9tIFwiLi4vaWNvbnMvc2F2ZVwiO1xyXG5pbXBvcnQgRWRpdCBmcm9tIFwiLi4vaWNvbnMvZWRpdFwiO1xyXG5pbXBvcnQgQ29nIGZyb20gXCIuLi9pY29ucy9jb2dcIjtcclxuaW1wb3J0IERldGFjaCBmcm9tIFwiLi4vaWNvbnMvZGV0YWNoXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDc3NFZGl0b3IgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG5cclxuICAgICAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSB0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy50b2dnbGVMaXZlVXBkYXRlID0gdGhpcy50b2dnbGVMaXZlVXBkYXRlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDc3MgPSB0aGlzLnVwZGF0ZUNzcy5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuc2F2ZUNzcyA9IHRoaXMuc2F2ZUNzcy5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub3BlbkRldGFjaGVkID0gdGhpcy5wcm9wcy5vcGVuRGV0YWNoZWQgPyB0aGlzLm9wZW5EZXRhY2hlZC5iaW5kKHRoaXMpIDogbnVsbDtcclxuICAgICAgICB0aGlzLm9wZW5OYXRpdmUgPSB0aGlzLm9wZW5OYXRpdmUuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUVkaXRvciA9IHRoaXMudXBkYXRlRWRpdG9yLmJpbmQodGhpcyk7XHJcblxyXG4gICAgICAgIHRoaXMuY29udHJvbHMgPSBbXHJcbiAgICAgICAgICAgIHtsYWJlbDogUmVhY3QuY3JlYXRlRWxlbWVudChSZWZyZXNoLCB7c2l6ZTogXCIxOHB4XCJ9KSwgdG9vbHRpcDogU3RyaW5ncy5DdXN0b21DU1MudXBkYXRlLCBvbkNsaWNrOiB0aGlzLnVwZGF0ZUNzc30sXHJcbiAgICAgICAgICAgIHtsYWJlbDogUmVhY3QuY3JlYXRlRWxlbWVudChTYXZlLCB7c2l6ZTogXCIxOHB4XCJ9KSwgdG9vbHRpcDogU3RyaW5ncy5DdXN0b21DU1Muc2F2ZSwgb25DbGljazogdGhpcy5zYXZlQ3NzfSxcclxuICAgICAgICAgICAge2xhYmVsOiBSZWFjdC5jcmVhdGVFbGVtZW50KEVkaXQsIHtzaXplOiBcIjE4cHhcIn0pLCB0b29sdGlwOiBTdHJpbmdzLkN1c3RvbUNTUy5vcGVuTmF0aXZlLCBvbkNsaWNrOiB0aGlzLm9wZW5OYXRpdmV9LFxyXG4gICAgICAgICAgICB7bGFiZWw6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29nLCB7c2l6ZTogXCIxOHB4XCJ9KSwgdG9vbHRpcDogU3RyaW5ncy5DdXN0b21DU1Muc2V0dGluZ3MsIG9uQ2xpY2s6IFwic2hvd1NldHRpbmdzXCJ9LFxyXG4gICAgICAgICAgICB7bGFiZWw6IFN0cmluZ3MuQ29sbGVjdGlvbnMuc2V0dGluZ3MuY3VzdG9tY3NzLmxpdmVVcGRhdGUubmFtZSwgdHlwZTpcImNoZWNrYm94XCIsIG9uQ2hhbmdlOiB0aGlzLnRvZ2dsZUxpdmVVcGRhdGUsIGNoZWNrZWQ6IFNldHRpbmdzLmdldChcInNldHRpbmdzXCIsIFwiY3VzdG9tY3NzXCIsIFwibGl2ZVVwZGF0ZVwiKSwgc2lkZTogXCJyaWdodFwifVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgaWYgKHRoaXMub3BlbkRldGFjaGVkKSB0aGlzLmNvbnRyb2xzLnB1c2goe2xhYmVsOiBSZWFjdC5jcmVhdGVFbGVtZW50KERldGFjaCwge3NpemU6IFwiMThweFwifSksIHRvb2x0aXA6IFN0cmluZ3MuQ3VzdG9tQ1NTLm9wZW5EZXRhY2hlZCwgb25DbGljazogdGhpcy5vcGVuRGV0YWNoZWQsIHNpZGU6IFwicmlnaHRcIn0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgICAgIEV2ZW50cy5vbihcImN1c3RvbWNzcy11cGRhdGVkXCIsIHRoaXMudXBkYXRlRWRpdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgICAgICBFdmVudHMub2ZmKFwiY3VzdG9tY3NzLXVwZGF0ZWRcIiwgdGhpcy51cGRhdGVFZGl0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUVkaXRvcihuZXdDU1MpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZWRpdG9yKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5lZGl0b3IudmFsdWUgPSBuZXdDU1M7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHZhbHVlKCkge3JldHVybiB0aGlzLmVkaXRvci5zZXNzaW9uLmdldFZhbHVlKCk7fVxyXG4gICAgc2V0IHZhbHVlKG5ld1ZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iuc2V0VmFsdWUobmV3VmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dTZXR0aW5ncygpIHtyZXR1cm4gdGhpcy5lZGl0b3Iua2V5QmluZGluZy4kZGVmYXVsdEhhbmRsZXIuY29tbWFuZHMuc2hvd1NldHRpbmdzTWVudS5leGVjKHRoaXMuZWRpdG9yKTt9XHJcbiAgICByZXNpemUoKSB7cmV0dXJuIHRoaXMuZWRpdG9yLnJlc2l6ZSgpO31cclxuXHJcbiAgICBzZXRFZGl0b3JSZWYoZWRpdG9yKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuZWRpdG9yUmVmICYmIHR5cGVvZih0aGlzLnByb3BzLmVkaXRvclJlZi5jdXJyZW50KSAhPT0gXCJ1bmRlZmluZWRcIikgdGhpcy5wcm9wcy5lZGl0b3JSZWYuY3VycmVudCA9IGVkaXRvcjtcclxuICAgICAgICBlbHNlIGlmICh0aGlzLnByb3BzLmVkaXRvclJlZikgdGhpcy5wcm9wcy5lZGl0b3JSZWYgPSBlZGl0b3I7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UoKSB7XHJcbiAgICAgICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IHRydWU7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25DaGFuZ2UpIHRoaXMucHJvcHMub25DaGFuZ2UoLi4uYXJndW1lbnRzKTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxFZGl0b3IgcmVmPXt0aGlzLnNldEVkaXRvclJlZi5iaW5kKHRoaXMpfSByZWFkT25seT17dGhpcy5wcm9wcy5yZWFkT25seX0gaWQ9e3RoaXMucHJvcHMuaWQgfHwgXCJiZC1jdXN0b21jc3MtZWRpdG9yXCJ9IG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlfSBjb250cm9scz17dGhpcy5jb250cm9sc30gdmFsdWU9e3RoaXMucHJvcHMuY3NzfSAvPjtcclxuICAgIH1cclxuXHJcbiAgICB0b2dnbGVMaXZlVXBkYXRlKGNoZWNrZWQpIHtcclxuICAgICAgICBTZXR0aW5ncy5zZXQoXCJzZXR0aW5nc1wiLCBcImN1c3RvbWNzc1wiLCBcImxpdmVVcGRhdGVcIiwgY2hlY2tlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlQ3NzKGV2ZW50LCBuZXdDc3MpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy51cGRhdGUpIHRoaXMucHJvcHMudXBkYXRlKG5ld0Nzcyk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUNzcyhldmVudCwgbmV3Q3NzKSB7XHJcbiAgICAgICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLnNhdmUpIHRoaXMucHJvcHMuc2F2ZShuZXdDc3MpO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5EZXRhY2hlZChldmVudCwgY3VycmVudENTUykge1xyXG4gICAgICAgIGlmICghdGhpcy5wcm9wcy5vcGVuRGV0YWNoZWQpIHJldHVybjtcclxuICAgICAgICB0aGlzLnByb3BzLm9wZW5EZXRhY2hlZChjdXJyZW50Q1NTKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuTmF0aXZlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9wZW5OYXRpdmUpIHRoaXMucHJvcHMub3Blbk5hdGl2ZSgpO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/customcss/csseditor.jsx\n"); /***/ }), @@ -742,7 +742,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return CodeEditor; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _checkbox__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./checkbox */ \"./src/ui/customcss/checkbox.jsx\");\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nconst Tooltip = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"Tooltip\");\nconst languages = [\"abap\", \"abc\", \"actionscript\", \"ada\", \"apache_conf\", \"asciidoc\", \"assembly_x86\", \"autohotkey\", \"batchfile\", \"bro\", \"c_cpp\", \"c9search\", \"cirru\", \"clojure\", \"cobol\", \"coffee\", \"coldfusion\", \"csharp\", \"csound_document\", \"csound_orchestra\", \"csound_score\", \"css\", \"curly\", \"d\", \"dart\", \"diff\", \"dockerfile\", \"dot\", \"drools\", \"dummy\", \"dummysyntax\", \"eiffel\", \"ejs\", \"elixir\", \"elm\", \"erlang\", \"forth\", \"fortran\", \"ftl\", \"gcode\", \"gherkin\", \"gitignore\", \"glsl\", \"gobstones\", \"golang\", \"graphqlschema\", \"groovy\", \"haml\", \"handlebars\", \"haskell\", \"haskell_cabal\", \"haxe\", \"hjson\", \"html\", \"html_elixir\", \"html_ruby\", \"ini\", \"io\", \"jack\", \"jade\", \"java\", \"javascript\", \"json\", \"jsoniq\", \"jsp\", \"jssm\", \"jsx\", \"julia\", \"kotlin\", \"latex\", \"less\", \"liquid\", \"lisp\", \"livescript\", \"logiql\", \"lsl\", \"lua\", \"luapage\", \"lucene\", \"makefile\", \"markdown\", \"mask\", \"matlab\", \"maze\", \"mel\", \"mushcode\", \"mysql\", \"nix\", \"nsis\", \"objectivec\", \"ocaml\", \"pascal\", \"perl\", \"pgsql\", \"php\", \"pig\", \"powershell\", \"praat\", \"prolog\", \"properties\", \"protobuf\", \"python\", \"r\", \"razor\", \"rdoc\", \"red\", \"rhtml\", \"rst\", \"ruby\", \"rust\", \"sass\", \"scad\", \"scala\", \"scheme\", \"scss\", \"sh\", \"sjs\", \"smarty\", \"snippets\", \"soy_template\", \"space\", \"sql\", \"sqlserver\", \"stylus\", \"svg\", \"swift\", \"tcl\", \"tex\", \"text\", \"textile\", \"toml\", \"tsx\", \"twig\", \"typescript\", \"vala\", \"vbscript\", \"velocity\", \"verilog\", \"vhdl\", \"wollok\", \"xml\", \"xquery\", \"yaml\", \"django\"];\nconst themes = [\"chrome\", \"clouds\", \"crimson_editor\", \"dawn\", \"dreamweaver\", \"eclipse\", \"github\", \"iplastic\", \"solarized_light\", \"textmate\", \"tomorrow\", \"xcode\", \"kuroir\", \"katzenmilch\", \"sqlserver\", \"ambiance\", \"chaos\", \"clouds_midnight\", \"cobalt\", \"gruvbox\", \"gob\", \"idle_fingers\", \"kr_theme\", \"merbivore\", \"merbivore_soft\", \"mono_industrial\", \"monokai\", \"pastel_on_dark\", \"solarized_dark\", \"terminal\", \"tomorrow_night\", \"tomorrow_night_blue\", \"tomorrow_night_bright\", \"tomorrow_night_eighties\", \"twilight\", \"vibrant_ink\"];\nclass CodeEditor extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n static get defaultId() {\n return \"bd-editor\";\n }\n\n constructor(props) {\n super(props);\n\n for (const control of this.props.controls) {\n if (control.type == \"checkbox\") continue;\n if (control.onClick == \"showSettings\") control.onClick = this.showSettings.bind(this);\n }\n\n this.props.theme = this.props.theme.toLowerCase().replace(/ /g, \"_\");\n if (!themes.includes(this.props.theme)) this.props.theme = CodeEditor.defaultProps.theme;\n this.props.language = this.props.language.toLowerCase().replace(/ /g, \"_\");\n if (!languages.includes(this.props.language)) this.props.language = CodeEditor.defaultProps.language;\n this.onChange = this.onChange.bind(this);\n }\n\n static get defaultProps() {\n return {\n controls: [],\n theme: \"bd-monokai\",\n language: \"css\",\n id: this.defaultId,\n fontSize: 14\n };\n }\n\n static get themes() {\n return themes;\n }\n\n componentDidMount() {\n this.editor = ace.edit(this.props.id); // Add id to the ace menu container\n\n const originalShow = this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec;\n\n this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec = function () {\n originalShow.apply(this, arguments);\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (!mutation.addedNodes.length || !(mutation.addedNodes[0] instanceof Element)) continue;\n const node = mutation.addedNodes[0];\n if (node.parentElement !== document.body || !node.querySelector(\"#ace_settingsmenu\")) continue;\n node.id = \"ace_settingsmenu_container\";\n observer.disconnect();\n }\n });\n observer.observe(document.body, {\n childList: true\n });\n };\n\n const theme = this.props.theme == CodeEditor.defaultProps.theme ? this.props.theme.split(\"-\")[1] : this.props.theme;\n this.editor.setTheme(`ace/theme/${theme}`);\n this.editor.session.setMode(`ace/mode/${this.props.language}`);\n this.editor.setShowPrintMargin(false);\n this.editor.setFontSize(this.props.fontSize);\n this.editor.on(\"change\", this.onChange);\n }\n\n componentWillUnmount() {\n this.editor.destroy();\n }\n\n get value() {\n return this.editor.session.getValue();\n }\n\n set value(newValue) {\n this.editor.setValue(newValue);\n }\n\n onChange() {\n if (this.props.onChange) this.props.onChange(this.value);\n }\n\n showSettings() {\n return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor);\n }\n\n resize() {\n return this.editor.resize();\n }\n\n buildControl(control) {\n if (control.type == \"checkbox\") return this.makeCheckbox(control);\n return this.makeButton(control);\n }\n\n makeCheckbox(checkbox) {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_checkbox__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: checkbox.label,\n onChange: checkbox.onChange,\n checked: checkbox.checked\n });\n }\n\n makeButton(button) {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: button.tooltip\n }, props => {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", _extends({}, props, {\n className: \"btn btn-primary\",\n onClick: event => {\n button.onClick(event, this.value);\n }\n }), button.label);\n });\n }\n\n render() {\n if (this.editor && this.editor.resize) this.editor.resize();\n const controlsLeft = this.props.controls.filter(c => c.side != \"right\").map(this.buildControl.bind(this));\n const controlsRight = this.props.controls.filter(c => c.side == \"right\").map(this.buildControl.bind(this));\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-editor-panel\",\n className: this.props.theme\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-editor-controls\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"controls-section controls-left\"\n }, controlsLeft), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"controls-section controls-right\"\n }, controlsRight)), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"editor-wrapper\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: this.props.id,\n className: \"editor \" + this.props.theme\n }, this.props.value)));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvY3VzdG9tY3NzL2VkaXRvci5qc3g/ZmZlMiJdLCJuYW1lcyI6WyJUb29sdGlwIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeURpc3BsYXlOYW1lIiwibGFuZ3VhZ2VzIiwidGhlbWVzIiwiQ29kZUVkaXRvciIsIlJlYWN0IiwiQ29tcG9uZW50IiwiZGVmYXVsdElkIiwiY29uc3RydWN0b3IiLCJwcm9wcyIsImNvbnRyb2wiLCJjb250cm9scyIsInR5cGUiLCJvbkNsaWNrIiwic2hvd1NldHRpbmdzIiwiYmluZCIsInRoZW1lIiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwiaW5jbHVkZXMiLCJkZWZhdWx0UHJvcHMiLCJsYW5ndWFnZSIsIm9uQ2hhbmdlIiwiaWQiLCJmb250U2l6ZSIsImNvbXBvbmVudERpZE1vdW50IiwiZWRpdG9yIiwiYWNlIiwiZWRpdCIsIm9yaWdpbmFsU2hvdyIsImtleUJpbmRpbmciLCIkZGVmYXVsdEhhbmRsZXIiLCJjb21tYW5kcyIsInNob3dTZXR0aW5nc01lbnUiLCJleGVjIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJvYnNlcnZlciIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJtdXRhdGlvbnMiLCJtdXRhdGlvbiIsImFkZGVkTm9kZXMiLCJsZW5ndGgiLCJFbGVtZW50Iiwibm9kZSIsInBhcmVudEVsZW1lbnQiLCJkb2N1bWVudCIsImJvZHkiLCJxdWVyeVNlbGVjdG9yIiwiZGlzY29ubmVjdCIsIm9ic2VydmUiLCJjaGlsZExpc3QiLCJzcGxpdCIsInNldFRoZW1lIiwic2Vzc2lvbiIsInNldE1vZGUiLCJzZXRTaG93UHJpbnRNYXJnaW4iLCJzZXRGb250U2l6ZSIsIm9uIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJkZXN0cm95IiwidmFsdWUiLCJnZXRWYWx1ZSIsIm5ld1ZhbHVlIiwic2V0VmFsdWUiLCJyZXNpemUiLCJidWlsZENvbnRyb2wiLCJtYWtlQ2hlY2tib3giLCJtYWtlQnV0dG9uIiwiY2hlY2tib3giLCJsYWJlbCIsImNoZWNrZWQiLCJidXR0b24iLCJ0b29sdGlwIiwiZXZlbnQiLCJyZW5kZXIiLCJjb250cm9sc0xlZnQiLCJmaWx0ZXIiLCJjIiwic2lkZSIsIm1hcCIsImNvbnRyb2xzUmlnaHQiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBRUE7QUFFQSxNQUFNQSxPQUFPLEdBQUdDLHNEQUFjLENBQUNDLGdCQUFmLENBQWdDLFNBQWhDLENBQWhCO0FBRUEsTUFBTUMsU0FBUyxHQUFHLENBQUMsTUFBRCxFQUFTLEtBQVQsRUFBZ0IsY0FBaEIsRUFBZ0MsS0FBaEMsRUFBdUMsYUFBdkMsRUFBc0QsVUFBdEQsRUFBa0UsY0FBbEUsRUFBa0YsWUFBbEYsRUFBZ0csV0FBaEcsRUFBNkcsS0FBN0csRUFBb0gsT0FBcEgsRUFBNkgsVUFBN0gsRUFBeUksT0FBekksRUFBa0osU0FBbEosRUFBNkosT0FBN0osRUFBc0ssUUFBdEssRUFBZ0wsWUFBaEwsRUFBOEwsUUFBOUwsRUFBd00saUJBQXhNLEVBQTJOLGtCQUEzTixFQUErTyxjQUEvTyxFQUErUCxLQUEvUCxFQUFzUSxPQUF0USxFQUErUSxHQUEvUSxFQUFvUixNQUFwUixFQUE0UixNQUE1UixFQUFvUyxZQUFwUyxFQUFrVCxLQUFsVCxFQUF5VCxRQUF6VCxFQUFtVSxPQUFuVSxFQUE0VSxhQUE1VSxFQUEyVixRQUEzVixFQUFxVyxLQUFyVyxFQUE0VyxRQUE1VyxFQUFzWCxLQUF0WCxFQUE2WCxRQUE3WCxFQUF1WSxPQUF2WSxFQUFnWixTQUFoWixFQUEyWixLQUEzWixFQUFrYSxPQUFsYSxFQUEyYSxTQUEzYSxFQUFzYixXQUF0YixFQUFtYyxNQUFuYyxFQUEyYyxXQUEzYyxFQUF3ZCxRQUF4ZCxFQUFrZSxlQUFsZSxFQUFtZixRQUFuZixFQUE2ZixNQUE3ZixFQUFxZ0IsWUFBcmdCLEVBQW1oQixTQUFuaEIsRUFBOGhCLGVBQTloQixFQUEraUIsTUFBL2lCLEVBQXVqQixPQUF2akIsRUFBZ2tCLE1BQWhrQixFQUF3a0IsYUFBeGtC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QUFMLElBQWUsS0FBS0EsTUFBTCxDQUFZdUMsTUFBL0IsRUFBdUMsS0FBS3ZDLE1BQUwsQ0FBWXVDLE1BQVo7QUFFdkMsVUFBTVcsWUFBWSxHQUFHLEtBQUtuRSxLQUFMLENBQVdFLFFBQVgsQ0FBb0JrRSxNQUFwQixDQUEyQkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLElBQUYsSUFBVSxPQUExQyxFQUFtREMsR0FBbkQsQ0FBdUQsS0FBS2QsWUFBTCxDQUFrQm5ELElBQWxCLENBQXVCLElBQXZCLENBQXZELENBQXJCO0FBQ0EsVUFBTWtFLGFBQWEsR0FBRyxLQUFLeEUsS0FBTCxDQUFXRSxRQUFYLENBQW9Ca0UsTUFBcEIsQ0FBMkJDLENBQUMsSUFBSUEsQ0FBQyxDQUFDQyxJQUFGLElBQVUsT0FBMUMsRUFBbURDLEdBQW5ELENBQXVELEtBQUtkLFlBQUwsQ0FBa0JuRCxJQUFsQixDQUF1QixJQUF2QixDQUF2RCxDQUF0QjtBQUVBLHdCQUFPO0FBQUssUUFBRSxFQUFDLGlCQUFSO0FBQTBCLGVBQVMsRUFBRSxLQUFLTixLQUFMLENBQVdPO0FBQWhELG9CQUNLO0FBQUssUUFBRSxFQUFDO0FBQVIsb0JBQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUNLNEQsWUFETCxDQURKLGVBSUk7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUNLSyxhQURMLENBSkosQ0FETCxlQVNLO0FBQUssZUFBUyxFQUFDO0FBQWYsb0JBQ0k7QUFBSyxRQUFFLEVBQUUsS0FBS3hFLEtBQUwsQ0FBV2MsRUFBcEI7QUFBd0IsZUFBUyxFQUFFLFlBQVksS0FBS2QsS0FBTCxDQUFXTztBQUExRCxPQUFrRSxLQUFLUCxLQUFMLENBQVdvRCxLQUE3RSxDQURKLENBVEwsQ0FBUDtBQWFIOztBQS9HbUQiLCJmaWxlIjoiLi9zcmMvdWkvY3VzdG9tY3NzL2VkaXRvci5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBXZWJwYWNrTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmltcG9ydCBDaGVja2JveCBmcm9tIFwiLi9jaGVja2JveFwiO1xyXG5cclxuY29uc3QgVG9vbHRpcCA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5RGlzcGxheU5hbWUoXCJUb29sdGlwXCIpO1xyXG5cclxuY29uc3QgbGFuZ3VhZ2VzID0gW1wiYWJhcFwiLCBcImFiY1wiLCBcImFjdGlvbnNjcmlwdFwiLCBcImFkYVwiLCBcImFwYWNoZV9jb25mXCIsIFwiYXNjaWlkb2NcIiwgXCJhc3NlbWJseV94ODZcIiwgXCJhdXRvaG90a2V5XCIsIFwiYmF0Y2hmaWxlXCIsIFwiYnJvXCIsIFwiY19jcHBcIiwgXCJjOXNlYXJjaFwiLCBcImNpcnJ1XCIsIFwiY2xvanVyZVwiLCBcImNvYm9sXCIsIFwiY29mZmVlXCIsIFwiY29sZGZ1c2lvblwiLCBcImNzaGFycFwiLCBcImNzb3VuZF9kb2N1bWVudFwiLCBcImNzb3VuZF9vcmNoZXN0cmFcIiwgXCJjc291bmRfc2NvcmVcIiwgXCJjc3NcIiwgXCJjdXJseVwiLCBcImRcIiwgXCJkYXJ0XCIsIFwiZGlmZlwiLCBcImRvY2tlcmZpbGVcIiwgXCJkb3RcIiwgXCJkcm9vbHNcIiwgXCJkdW1teVwiLCBcImR1bW15c3ludGF4XCIsIFwiZWlmZmVsXCIsIFwiZWpzXCIsIFwiZWxpeGlyXCIsIFwiZWxtXCIsIFwiZXJsYW5nXCIsIFwiZm9ydGhcIiwgXCJmb3J0cmFuXCIsIFwiZnRsXCIsIFwiZ2NvZGVcIiwgXCJnaGVya2luXCIsIFwiZ2l0aWdub3JlXCIsIFwiZ2xzbFwiLCBcImdvYnN0b25lc1wiLCBcImdvbGFuZ1wiLCBcImdyYXBocWxzY2hlbWFcIiwgXCJncm9vdnlcIiwgXCJoYW1sXCIsIFwiaGFuZGxlYmFyc1wiLCBcImhhc2tlbGxcIiwgXCJoYXNrZWxsX2NhYmFsXCIsIFwiaGF4ZVwiLCBcImhqc29uXCIsIFwiaHRtbFwiLCBcImh0bWxfZWxpeGlyXCIsIFwiaHRtbF9ydWJ5XCIsIFwiaW5pXCIsIFwiaW9cIiwgXCJqYWNrXCIsIFwiamFkZVwiLCBcImphdmFcIiwgXCJqYXZhc2NyaXB0XCIsIFwianNvblwiLCBcImpzb25pcVwiLCBcImpzcFwiLCBcImpzc21cIiwgXCJqc3hcIiwgXCJqdWxpYVwiLCBcImtvdGxpblwiLCBcImxhdGV4XCIsIFwibGVzc1wiLCBcImxpcXVpZFwiLCBcImxpc3BcIiwgXCJsaXZlc2NyaXB0XCIsIFwibG9naXFsXCIsIFwibHNsXCIsIFwibHVhXCIsIFwibHVhcGFnZVwiLCBcImx1Y2VuZVwiLCBcIm1ha2VmaWxlXCIsIFwibWFya2Rvd25cIiwgXCJtYXNrXCIsIFwibWF0bGFiXCIsIFwibWF6ZVwiLCBcIm1lbFwiLCBcIm11c2hjb2RlXCIsIFwibXlzcWxcIiwgXCJuaXhcIiwgXCJuc2lzXCIsIFwib2JqZWN0aXZlY1wiLCBcIm9jYW1sXCIsIFwicGFzY2FsXCIsIFwicGVybFwiLCBcInBnc3FsXCIsIFwicGhwXCIsIFwicGlnXCIsIFwicG93ZXJzaGVsbFwiLCBcInByYWF0XCIsIFwicHJvbG9nXCIsIFwicHJvcGVydGllc1wiLCBcInByb3RvYnVmXCIsIFwicHl0aG9uXCIsIFwiclwiLCBcInJhem9yXCIsIFwicmRvY1wiLCBcInJlZFwiLCBcInJodG1sXCIsIFwicnN0XCIsIFwicnVieVwiLCBcInJ1c3RcIiwgXCJzYXNzXCIsIFwic2NhZFwiLCBcInNjYWxhXCIsIFwic2NoZW1lXCIsIFwic2Nzc1wiLCBcInNoXCIsIFwic2pzXCIsIFwic21hcnR5XCIsIFwic25pcHBldHNcIiwgXCJzb3lfdGVtcGxhdGVcIiwgXCJzcGFjZVwiLCBcInNxbFwiLCBcInNxbHNlcnZlclwiLCBcInN0eWx1c1wiLCBcInN2Z1wiLCBcInN3aWZ0XCIsIFwidGNsXCIsIFwidGV4XCIsIFwidGV4dFwiLCBcInRleHRpbGVcIiwgXCJ0b21sXCIsIFwidHN4XCIsIFwidHdpZ1wiLCBcInR5cGVzY3JpcHRcIiwgXCJ2YWxhXCIsIFwidmJzY3JpcHRcIiwgXCJ2ZWxvY2l0eVwiLCBcInZlcmlsb2dcIiwgXCJ2aGRsXCIsIFwid29sbG9rXCIsIFwieG1sXCIsIFwieHF1ZXJ5XCIsIFwieWFtbFwiLCBcImRqYW5nb1wiXTtcclxuY29uc3QgdGhlbWVzID0gW1wiY2hyb21lXCIsIFwiY2xvdWRzXCIsIFwiY3JpbXNvbl9lZGl0b3JcIiwgXCJkYXduXCIsIFwiZHJlYW13ZWF2ZXJcIiwgXCJlY2xpcHNlXCIsIFwiZ2l0aHViXCIsIFwiaXBsYXN0aWNcIiwgXCJzb2xhcml6ZWRfbGlnaHRcIiwgXCJ0ZXh0bWF0ZVwiLCBcInRvbW9ycm93XCIsIFwieGNvZGVcIiwgXCJrdXJvaXJcIiwgXCJrYXR6ZW5taWxjaFwiLCBcInNxbHNlcnZlclwiLCBcImFtYmlhbmNlXCIsIFwiY2hhb3NcIiwgXCJjbG91ZHNfbWlkbmlnaHRcIiwgXCJjb2JhbHRcIiwgXCJncnV2Ym94XCIsIFwiZ29iXCIsIFwiaWRsZV9maW5nZXJzXCIsIFwia3JfdGhlbWVcIiwgXCJtZXJiaXZvcmVcIiwgXCJtZXJiaXZvcmVfc29mdFwiLCBcIm1vbm9faW5kdXN0cmlhbFwiLCBcIm1vbm9rYWlcIiwgXCJwYXN0ZWxfb25fZGFya1wiLCBcInNvbGFyaXplZF9kYXJrXCIsIFwidGVybWluYWxcIiwgXCJ0b21vcnJvd19uaWdodFwiLCBcInRvbW9ycm93X25pZ2h0X2JsdWVcIiwgXCJ0b21vcnJvd19uaWdodF9icmlnaHRcIiwgXCJ0b21vcnJvd19uaWdodF9laWdodGllc1wiLCBcInR3aWxpZ2h0XCIsIFwidmlicmFudF9pbmtcIl07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb2RlRWRpdG9yIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBnZXQgZGVmYXVsdElkKCkge3JldHVybiBcImJkLWVkaXRvclwiO31cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICBcclxuICAgICAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgdGhpcy5wcm9wcy5jb250cm9scykge1xyXG4gICAgICAgICAgICBpZiAoY29udHJvbC50eXBlID09IFwiY2hlY2tib3hcIikgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChjb250cm9sLm9uQ2xpY2sgPT0gXCJzaG93U2V0dGluZ3NcIikgY29udHJvbC5vbkNsaWNrID0gdGhpcy5zaG93U2V0dGluZ3MuYmluZCh0aGlzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucHJvcHMudGhlbWUgPSB0aGlzLnByb3BzLnRoZW1lLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvIC9nLCBcIl9cIik7XHJcbiAgICAgICAgaWYgKCF0aGVtZXMuaW5jbHVkZXModGhpcy5wcm9wcy50aGVtZSkpIHRoaXMucHJvcHMudGhlbWUgPSBDb2RlRWRpdG9yLmRlZmF1bHRQcm9wcy50aGVtZTtcclxuXHJcbiAgICAgICAgdGhpcy5wcm9wcy5sYW5ndWFnZSA9IHRoaXMucHJvcHMubGFuZ3VhZ2UudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8gL2csIFwiX1wiKTtcclxuICAgICAgICBpZiAoIWxhbmd1YWdlcy5pbmNsdWRlcyh0aGlzLnByb3BzLmxhbmd1YWdlKSkgdGhpcy5wcm9wcy5sYW5ndWFnZSA9IENvZGVFZGl0b3IuZGVmYXVsdFByb3BzLmxhbmd1YWdlO1xyXG5cclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQgZGVmYXVsdFByb3BzKCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGNvbnRyb2xzOiBbXSxcclxuICAgICAgICAgICAgdGhlbWU6IFwiYmQtbW9ub2thaVwiLFxyXG4gICAgICAgICAgICBsYW5ndWFnZTogXCJjc3NcIixcclxuICAgICAgICAgICAgaWQ6IHRoaXMuZGVmYXVsdElkLFxyXG4gICAgICAgICAgICBmb250U2l6ZTogMTRcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQgdGhlbWVzKCkge3JldHVybiB0aGVtZXM7fVxyXG5cclxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yID0gYWNlLmVkaXQodGhpcy5wcm9wcy5pZCk7XHJcblxyXG4gICAgICAgIC8vIEFkZCBpZCB0byB0aGUgYWNlIG1lbnUgY29udGFpbmVyXHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxTaG93ID0gdGhpcy5lZGl0b3Iua2V5QmluZGluZy4kZGVmYXVsdEhhbmRsZXIuY29tbWFuZHMuc2hvd1NldHRpbmdzTWVudS5leGVjO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLmtleUJpbmRpbmcuJGRlZmF1bHRIYW5kbGVyLmNvbW1hbmRzLnNob3dTZXR0aW5nc01lbnUuZXhlYyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICBvcmlnaW5hbFNob3cuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxuICAgICAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihtdXRhdGlvbnMgPT4ge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIW11dGF0aW9uLmFkZGVkTm9kZXMubGVuZ3RoIHx8ICEobXV0YXRpb24uYWRkZWROb2Rlc1swXSBpbnN0YW5jZW9mIEVsZW1lbnQpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gbXV0YXRpb24uYWRkZWROb2Rlc1swXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5wYXJlbnRFbGVtZW50ICE9PSBkb2N1bWVudC5ib2R5IHx8ICFub2RlLnF1ZXJ5U2VsZWN0b3IoXCIjYWNlX3NldHRpbmdzbWVudVwiKSkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5pZCA9IFwiYWNlX3NldHRpbmdzbWVudV9jb250YWluZXJcIjtcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHtjaGlsZExpc3Q6IHRydWV9KTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zdCB0aGVtZSA9IHRoaXMucHJvcHMudGhlbWUgPT0gQ29kZUVkaXRvci5kZWZhdWx0UHJvcHMudGhlbWUgPyB0aGlzLnByb3BzLnRoZW1lLnNwbGl0KFwiLVwiKVsxXSA6IHRoaXMucHJvcHMudGhlbWU7XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iuc2V0VGhlbWUoYGFjZS90aGVtZS8ke3RoZW1lfWApO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNlc3Npb24uc2V0TW9kZShgYWNlL21vZGUvJHt0aGlzLnByb3BzLmxhbmd1YWdlfWApO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNldFNob3dQcmludE1hcmdpbihmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iuc2V0Rm9udFNpemUodGhpcy5wcm9wcy5mb250U2l6ZSk7XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iub24oXCJjaGFuZ2VcIiwgdGhpcy5vbkNoYW5nZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3IuZGVzdHJveSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB2YWx1ZSgpIHtyZXR1cm4gdGhpcy5lZGl0b3Iuc2Vzc2lvbi5nZXRWYWx1ZSgpO31cclxuICAgIHNldCB2YWx1ZShuZXdWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNldFZhbHVlKG5ld1ZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNoYW5nZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkNoYW5nZSkgdGhpcy5wcm9wcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93U2V0dGluZ3MoKSB7cmV0dXJuIHRoaXMuZWRpdG9yLmtleUJpbmRpbmcuJGRlZmF1bHRIYW5kbGVyLmNvbW1hbmRzLnNob3dTZXR0aW5nc01lbnUuZXhlYyh0aGlzLmVkaXRvcik7fVxyXG4gICAgcmVzaXplKCkge3JldHVybiB0aGlzLmVkaXRvci5yZXNpemUoKTt9XHJcblxyXG4gICAgYnVpbGRDb250cm9sKGNvbnRyb2wpIHtcclxuICAgICAgICBpZiAoY29udHJvbC50eXBlID09IFwiY2hlY2tib3hcIikgcmV0dXJuIHRoaXMubWFrZUNoZWNrYm94KGNvbnRyb2wpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1ha2VCdXR0b24oY29udHJvbCk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFrZUNoZWNrYm94KGNoZWNrYm94KSB7XHJcbiAgICAgICAgcmV0dXJuIDxDaGVja2JveCB0ZXh0PXtjaGVja2JveC5sYWJlbH0gb25DaGFuZ2U9e2NoZWNrYm94Lm9uQ2hhbmdlfSBjaGVja2VkPXtjaGVja2JveC5jaGVja2VkfSAvPjtcclxuICAgIH1cclxuXHJcbiAgICBtYWtlQnV0dG9uKGJ1dHRvbikge1xyXG4gICAgICAgIHJldHVybiA8VG9vbHRpcCBjb2xvcj1cImJsYWNrXCIgcG9zaXRpb249XCJ0b3BcIiB0ZXh0PXtidXR0b24udG9vbHRpcH0+XHJcbiAgICAgICAgICAgICAgICAgICAge3Byb3BzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxidXR0b24gey4uLnByb3BzfSBjbGFzc05hbWU9XCJidG4gYnRuLXByaW1hcnlcIiBvbkNsaWNrPXsoZXZlbnQpID0+IHtidXR0b24ub25DbGljayhldmVudCwgdGhpcy52YWx1ZSk7fX0+e2J1dHRvbi5sYWJlbH08L2J1dHRvbj47XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD47XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmVkaXRvciAmJiB0aGlzLmVkaXRvci5yZXNpemUpIHRoaXMuZWRpdG9yLnJlc2l6ZSgpO1xyXG5cclxuICAgICAgICBjb25zdCBjb250cm9sc0xlZnQgPSB0aGlzLnByb3BzLmNvbnRyb2xzLmZpbHRlcihjID0+IGMuc2lkZSAhPSBcInJpZ2h0XCIpLm1hcCh0aGlzLmJ1aWxkQ29udHJvbC5iaW5kKHRoaXMpKTtcclxuICAgICAgICBjb25zdCBjb250cm9sc1JpZ2h0ID0gdGhpcy5wcm9wcy5jb250cm9scy5maWx0ZXIoYyA9PiBjLnNpZGUgPT0gXCJyaWdodFwiKS5tYXAodGhpcy5idWlsZENvbnRyb2wuYmluZCh0aGlzKSk7XHJcblxyXG4gICAgICAgIHJldHVybiA8ZGl2IGlkPVwiYmQtZWRpdG9yLXBhbmVsXCIgY2xhc3NOYW1lPXt0aGlzLnByb3BzLnRoZW1lfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiYmQtZWRpdG9yLWNvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udHJvbHMtc2VjdGlvbiBjb250cm9scy1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29udHJvbHNMZWZ0fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250cm9scy1zZWN0aW9uIGNvbnRyb2xzLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29udHJvbHNSaWdodH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJlZGl0b3Itd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPXt0aGlzLnByb3BzLmlkfSBjbGFzc05hbWU9e1wiZWRpdG9yIFwiICsgdGhpcy5wcm9wcy50aGVtZX0+e3RoaXMucHJvcHMudmFsdWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/customcss/editor.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return CodeEditor; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _checkbox__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./checkbox */ \"./src/ui/customcss/checkbox.jsx\");\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nconst Tooltip = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"Tooltip\");\nconst languages = [\"abap\", \"abc\", \"actionscript\", \"ada\", \"apache_conf\", \"asciidoc\", \"assembly_x86\", \"autohotkey\", \"batchfile\", \"bro\", \"c_cpp\", \"c9search\", \"cirru\", \"clojure\", \"cobol\", \"coffee\", \"coldfusion\", \"csharp\", \"csound_document\", \"csound_orchestra\", \"csound_score\", \"css\", \"curly\", \"d\", \"dart\", \"diff\", \"dockerfile\", \"dot\", \"drools\", \"dummy\", \"dummysyntax\", \"eiffel\", \"ejs\", \"elixir\", \"elm\", \"erlang\", \"forth\", \"fortran\", \"ftl\", \"gcode\", \"gherkin\", \"gitignore\", \"glsl\", \"gobstones\", \"golang\", \"graphqlschema\", \"groovy\", \"haml\", \"handlebars\", \"haskell\", \"haskell_cabal\", \"haxe\", \"hjson\", \"html\", \"html_elixir\", \"html_ruby\", \"ini\", \"io\", \"jack\", \"jade\", \"java\", \"javascript\", \"json\", \"jsoniq\", \"jsp\", \"jssm\", \"jsx\", \"julia\", \"kotlin\", \"latex\", \"less\", \"liquid\", \"lisp\", \"livescript\", \"logiql\", \"lsl\", \"lua\", \"luapage\", \"lucene\", \"makefile\", \"markdown\", \"mask\", \"matlab\", \"maze\", \"mel\", \"mushcode\", \"mysql\", \"nix\", \"nsis\", \"objectivec\", \"ocaml\", \"pascal\", \"perl\", \"pgsql\", \"php\", \"pig\", \"powershell\", \"praat\", \"prolog\", \"properties\", \"protobuf\", \"python\", \"r\", \"razor\", \"rdoc\", \"red\", \"rhtml\", \"rst\", \"ruby\", \"rust\", \"sass\", \"scad\", \"scala\", \"scheme\", \"scss\", \"sh\", \"sjs\", \"smarty\", \"snippets\", \"soy_template\", \"space\", \"sql\", \"sqlserver\", \"stylus\", \"svg\", \"swift\", \"tcl\", \"tex\", \"text\", \"textile\", \"toml\", \"tsx\", \"twig\", \"typescript\", \"vala\", \"vbscript\", \"velocity\", \"verilog\", \"vhdl\", \"wollok\", \"xml\", \"xquery\", \"yaml\", \"django\"];\nconst themes = [\"chrome\", \"clouds\", \"crimson_editor\", \"dawn\", \"dreamweaver\", \"eclipse\", \"github\", \"iplastic\", \"solarized_light\", \"textmate\", \"tomorrow\", \"xcode\", \"kuroir\", \"katzenmilch\", \"sqlserver\", \"ambiance\", \"chaos\", \"clouds_midnight\", \"cobalt\", \"gruvbox\", \"gob\", \"idle_fingers\", \"kr_theme\", \"merbivore\", \"merbivore_soft\", \"mono_industrial\", \"monokai\", \"pastel_on_dark\", \"solarized_dark\", \"terminal\", \"tomorrow_night\", \"tomorrow_night_blue\", \"tomorrow_night_bright\", \"tomorrow_night_eighties\", \"twilight\", \"vibrant_ink\"];\nclass CodeEditor extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n static get defaultId() {\n return \"bd-editor\";\n }\n\n constructor(props) {\n super(props);\n\n for (const control of this.props.controls) {\n if (control.type == \"checkbox\") continue;\n if (control.onClick == \"showSettings\") control.onClick = this.showSettings.bind(this);\n }\n\n this.props.theme = this.props.theme.toLowerCase().replace(/ /g, \"_\");\n if (!themes.includes(this.props.theme)) this.props.theme = CodeEditor.defaultProps.theme;\n this.props.language = this.props.language.toLowerCase().replace(/ /g, \"_\");\n if (!languages.includes(this.props.language)) this.props.language = CodeEditor.defaultProps.language;\n this.onChange = this.onChange.bind(this);\n }\n\n static get defaultProps() {\n return {\n controls: [],\n theme: \"bd-monokai\",\n language: \"css\",\n id: this.defaultId,\n fontSize: 14\n };\n }\n\n static get themes() {\n return themes;\n }\n\n componentDidMount() {\n this.editor = ace.edit(this.props.id); // Add id to the ace menu container\n\n const originalShow = this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec;\n\n this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec = function () {\n originalShow.apply(this, arguments);\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (!mutation.addedNodes.length || !(mutation.addedNodes[0] instanceof Element)) continue;\n const node = mutation.addedNodes[0];\n if (node.parentElement !== document.body || !node.querySelector(\"#ace_settingsmenu\")) continue;\n node.id = \"ace_settingsmenu_container\";\n observer.disconnect();\n }\n });\n observer.observe(document.body, {\n childList: true\n });\n };\n\n const theme = this.props.theme == CodeEditor.defaultProps.theme ? this.props.theme.split(\"-\")[1] : this.props.theme;\n this.editor.setTheme(`ace/theme/${theme}`);\n this.editor.session.setMode(`ace/mode/${this.props.language}`);\n this.editor.setShowPrintMargin(false);\n this.editor.setFontSize(this.props.fontSize);\n this.editor.on(\"change\", this.onChange);\n }\n\n componentWillUnmount() {\n this.editor.destroy();\n }\n\n get value() {\n return this.editor.session.getValue();\n }\n\n set value(newValue) {\n this.editor.setValue(newValue);\n }\n\n onChange() {\n if (this.props.onChange) this.props.onChange(this.value);\n }\n\n showSettings() {\n return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor);\n }\n\n resize() {\n return this.editor.resize();\n }\n\n buildControl(control) {\n if (control.type == \"checkbox\") return this.makeCheckbox(control);\n return this.makeButton(control);\n }\n\n makeCheckbox(checkbox) {\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_checkbox__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: checkbox.label,\n onChange: checkbox.onChange,\n checked: checkbox.checked\n });\n }\n\n makeButton(button) {\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: button.tooltip\n }, props => {\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", _extends({}, props, {\n className: \"btn btn-primary\",\n onClick: event => {\n button.onClick(event, this.value);\n }\n }), button.label);\n });\n }\n\n render() {\n if (this.editor && this.editor.resize) this.editor.resize();\n const controlsLeft = this.props.controls.filter(c => c.side != \"right\").map(this.buildControl.bind(this));\n const controlsRight = this.props.controls.filter(c => c.side == \"right\").map(this.buildControl.bind(this));\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-editor-panel\",\n className: this.props.theme\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-editor-controls\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"controls-section controls-left\"\n }, controlsLeft), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"controls-section controls-right\"\n }, controlsRight)), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"editor-wrapper\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: this.props.id,\n className: \"editor \" + this.props.theme\n }, this.props.value)));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvY3VzdG9tY3NzL2VkaXRvci5qc3g/ZmZlMiJdLCJuYW1lcyI6WyJUb29sdGlwIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeURpc3BsYXlOYW1lIiwibGFuZ3VhZ2VzIiwidGhlbWVzIiwiQ29kZUVkaXRvciIsIlJlYWN0IiwiQ29tcG9uZW50IiwiZGVmYXVsdElkIiwiY29uc3RydWN0b3IiLCJwcm9wcyIsImNvbnRyb2wiLCJjb250cm9scyIsInR5cGUiLCJvbkNsaWNrIiwic2hvd1NldHRpbmdzIiwiYmluZCIsInRoZW1lIiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwiaW5jbHVkZXMiLCJkZWZhdWx0UHJvcHMiLCJsYW5ndWFnZSIsIm9uQ2hhbmdlIiwiaWQiLCJmb250U2l6ZSIsImNvbXBvbmVudERpZE1vdW50IiwiZWRpdG9yIiwiYWNlIiwiZWRpdCIsIm9yaWdpbmFsU2hvdyIsImtleUJpbmRpbmciLCIkZGVmYXVsdEhhbmRsZXIiLCJjb21tYW5kcyIsInNob3dTZXR0aW5nc01lbnUiLCJleGVjIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJvYnNlcnZlciIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJtdXRhdGlvbnMiLCJtdXRhdGlvbiIsImFkZGVkTm9kZXMiLCJsZW5ndGgiLCJFbGVtZW50Iiwibm9kZSIsInBhcmVudEVsZW1lbnQiLCJkb2N1bWVudCIsImJvZHkiLCJxdWVyeVNlbGVjdG9yIiwiZGlzY29ubmVjdCIsIm9ic2VydmUiLCJjaGlsZExpc3QiLCJzcGxpdCIsInNldFRoZW1lIiwic2Vzc2lvbiIsInNldE1vZGUiLCJzZXRTaG93UHJpbnRNYXJnaW4iLCJzZXRGb250U2l6ZSIsIm9uIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJkZXN0cm95IiwidmFsdWUiLCJnZXRWYWx1ZSIsIm5ld1ZhbHVlIiwic2V0VmFsdWUiLCJyZXNpemUiLCJidWlsZENvbnRyb2wiLCJtYWtlQ2hlY2tib3giLCJtYWtlQnV0dG9uIiwiY2hlY2tib3giLCJsYWJlbCIsImNoZWNrZWQiLCJidXR0b24iLCJ0b29sdGlwIiwiZXZlbnQiLCJyZW5kZXIiLCJjb250cm9sc0xlZnQiLCJmaWx0ZXIiLCJjIiwic2lkZSIsIm1hcCIsImNvbnRyb2xzUmlnaHQiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBRUE7QUFFQSxNQUFNQSxPQUFPLEdBQUdDLGtFQUFjLENBQUNDLGdCQUFmLENBQWdDLFNBQWhDLENBQWhCO0FBRUEsTUFBTUMsU0FBUyxHQUFHLENBQUMsTUFBRCxFQUFTLEtBQVQsRUFBZ0IsY0FBaEIsRUFBZ0MsS0FBaEMsRUFBdUMsYUFBdkMsRUFBc0QsVUFBdEQsRUFBa0UsY0FBbEUsRUFBa0YsWUFBbEYsRUFBZ0csV0FBaEcsRUFBNkcsS0FBN0csRUFBb0gsT0FBcEgsRUFBNkgsVUFBN0gsRUFBeUksT0FBekksRUFBa0osU0FBbEosRUFBNkosT0FBN0osRUFBc0ssUUFBdEssRUFBZ0wsWUFBaEwsRUFBOEwsUUFBOUwsRUFBd00saUJBQXhNLEVBQTJOLGtCQUEzTixFQUErTyxjQUEvTyxFQUErUCxLQUEvUCxFQUFzUSxPQUF0USxFQUErUSxHQUEvUSxFQUFvUixNQUFwUixFQUE0UixNQUE1UixFQUFvUyxZQUFwUyxFQUFrVCxLQUFsVCxFQUF5VCxRQUF6VCxFQUFtVSxPQUFuVSxFQUE0VSxhQUE1VSxFQUEyVixRQUEzVixFQUFxVyxLQUFyVyxFQUE0VyxRQUE1VyxFQUFzWCxLQUF0WCxFQUE2WCxRQUE3WCxFQUF1WSxPQUF2WSxFQUFnWixTQUFoWixFQUEyWixLQUEzWixFQUFrYSxPQUFsYSxFQUEyYSxTQUEzYSxFQUFzYixXQUF0YixFQUFtYyxNQUFuYyxFQUEyYyxXQUEzYyxFQUF3ZCxRQUF4ZCxFQUFrZSxlQUFsZSxFQUFtZixRQUFuZixFQUE2ZixNQUE3ZixFQUFxZ0IsWUFBcmdCLEVBQW1oQixTQUFuaEIsRUFBOGhCLGVBQTloQixFQUEraUIsTUFBL2lCLEVBQXVqQixPQUF2akIsRUFBZ2tCLE1BQWhrQixFQUF3a0IsYUFBeGtCLEVBQXVsQixXQUF2bEIsRUFBb21CLEtBQXBtQixFQUEybUIsSUFBM21CLEVBQWluQixNQUFqbkIsRUFBeW5CLE1BQXpuQixFQUFpb0IsTUFBam9CLEVBQXlvQixZQUF6b0IsRUFBdXBCLE1BQXZwQixFQUErcEIsUUFBL3BCLEVBQXlxQixLQUF6cUIsRUFBZ3JCLE1BQWhyQixFQUF3ckIsS0FBeHJCLEVBQStyQixPQUEvckIsRUFBd3NCLFFBQXhzQixFQUFrdEIsT0FBbHRCLEVBQTJ0QixNQUEzdEIsRUFBbXVCLFFBQW51QixFQUE2dUIsTUFBN3VCLEVBQXF2QixZQUFydkIsRUFBbXdCLFFBQW53QixFQUE2d0IsS0FBN3dCLEVBQW94QixLQUFweEIsRUFBMnhCLFNBQTN4QixFQUFzeUIsUUFBdHlCLEVBQWd6QixVQUFoekIsRUFBNHpCLFVBQTV6QixFQUF3MEIsTUFBeDBCLEVBQWcxQixRQUFoMUIsRUFBMDFCLE1BQTExQixFQUFrMkIsS0FBbDJCLEVBQXkyQixVQUF6MkIsRUFBcTNCLE9BQXIzQixFQUE4M0IsS0FBOTNCLEVBQXE0QixNQUFyNEIsRUFBNjRCLFlBQTc0QixFQUEyNUIsT0FBMzVCLEVBQW82QixRQUFwNkIsRUFBODZCLE1BQTk2QixFQUFzN0IsT0FBdDdCLEVBQSs3QixLQUEvN0IsRUFBczhCLEtBQXQ4QixFQUE2OEIsWUFBNzhCLEVBQTI5QixPQUEzOUIsRUFBbytCLFFBQXArQixFQUE4K0IsWUFBOStCLEVBQTQvQixVQUE1L0IsRUFBd2dDLFFBQXhnQyxFQUFraEMsR0FBbGhDLEVBQXVoQyxPQUF2aEMsRUFBZ2lDLE1BQWhpQyxFQUF3aUMsS0FBeGlDLEVBQStpQyxPQUEvaUMsRUFBd2pDLEtBQXhqQyxFQUErakMsTUFBL2pDLEVBQXVrQyxNQUF2a0MsRUFBK2tDLE1BQS9rQyxFQUF1bEMsTUFBdmxDLEVBQStsQyxPQUEvbEMsRUFBd21DLFFBQXhtQyxFQUFrbkMsTUFBbG5DLEVBQTBuQyxJQUExbkMsRUFBZ29DLEtBQWhvQyxFQUF1b0MsUUFBdm9DLEVBQWlwQyxVQUFqcEMsRUFBNnBDLGNBQTdwQyxFQUE2cUMsT0FBN3FDLEVBQXNyQyxLQUF0ckMsRUFBNnJDLFdBQTdyQyxFQUEwc0MsUUFBMXNDLEVBQW90QyxLQUFwdEMsRUFBMnRDLE9BQTN0QyxFQUFvdUMsS0FBcHVDLEVBQTJ1QyxLQUEzdUMsRUFBa3ZDLE1BQWx2QyxFQUEwdkMsU0FBMXZDLEVBQXF3QyxNQUFyd0MsRUFBNndDLEtBQTd3QyxFQUFveEMsTUFBcHhDLEVBQTR4QyxZQUE1eEMsRUFBMHlDLE1BQTF5QyxFQUFrekMsVUFBbHpDLEVBQTh6QyxVQUE5ekMsRUFBMDBDLFNBQTEwQyxFQUFxMUMsTUFBcjFDLEVBQTYxQyxRQUE3MUMsRUFBdTJDLEtBQXYyQyxFQUE4MkMsUUFBOTJDLEVBQXczQyxNQUF4M0MsRUFBZzRDLFFBQWg0QyxDQUFsQjtBQUNBLE1BQU1DLE1BQU0sR0FBRyxDQUFDLFFBQUQsRUFBVyxRQUFYLEVBQXFCLGdCQUFyQixFQUF1QyxNQUF2QyxFQUErQyxhQUEvQyxFQUE4RCxTQUE5RCxFQUF5RSxRQUF6RSxFQUFtRixVQUFuRixFQUErRixpQkFBL0YsRUFBa0gsVUFBbEgsRUFBOEgsVUFBOUgsRUFBMEksT0FBMUksRUFBbUosUUFBbkosRUFBNkosYUFBN0osRUFBNEssV0FBNUssRUFBeUwsVUFBekwsRUFBcU0sT0FBck0sRUFBOE0saUJBQTlNLEVBQWlPLFFBQWpPLEVBQTJPLFNBQTNPLEVBQXNQLEtBQXRQLEVBQTZQLGNBQTdQLEVBQTZRLFVBQTdRLEVBQXlSLFdBQXpSLEVBQXNTLGdCQUF0UyxFQUF3VCxpQkFBeFQsRUFBMlUsU0FBM1UsRUFBc1YsZ0JBQXRWLEVBQXdXLGdCQUF4VyxFQUEwWCxVQUExWCxFQUFzWSxnQkFBdFksRUFBd1oscUJBQXhaLEVBQSthLHVCQUEvYSxFQUF3Yyx5QkFBeGMsRUFBbWUsVUFBbmUsRUFBK2UsYUFBL2UsQ0FBZjtBQUVlLE1BQU1DLFVBQU4sU0FBeUJDLHlEQUFLLENBQUNDLFNBQS9CLENBQXlDO0FBQ3BELGFBQVdDLFNBQVgsR0FBdUI7QUFBQyxXQUFPLFdBQVA7QUFBb0I7O0FBRTVDQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47O0FBRUEsU0FBSyxNQUFNQyxPQUFYLElBQXNCLEtBQUtELEtBQUwsQ0FBV0UsUUFBakMsRUFBMkM7QUFDdkMsVUFBSUQsT0FBTyxDQUFDRSxJQUFSLElBQWdCLFVBQXBCLEVBQWdDO0FBQ2hDLFVBQUlGLE9BQU8sQ0FBQ0csT0FBUixJQUFtQixjQUF2QixFQUF1Q0gsT0FBTyxDQUFDRyxPQUFSLEdBQWtCLEtBQUtDLFlBQUwsQ0FBa0JDLElBQWxCLENBQXVCLElBQXZCLENBQWxCO0FBQzFDOztBQUVELFNBQUtOLEtBQUwsQ0FBV08sS0FBWCxHQUFtQixLQUFLUCxLQUFMLENBQVdPLEtBQVgsQ0FBaUJDLFdBQWpCLEdBQStCQyxPQUEvQixDQUF1QyxJQUF2QyxFQUE2QyxHQUE3QyxDQUFuQjtBQUNBLFFBQUksQ0FBQ2YsTUFBTSxDQUFDZ0IsUUFBUCxDQUFnQixLQUFLVixLQUFMLENBQVdPLEtBQTNCLENBQUwsRUFBd0MsS0FBS1AsS0FBTCxDQUFXTyxLQUFYLEdBQW1CWixVQUFVLENBQUNnQixZQUFYLENBQXdCSixLQUEzQztBQUV4QyxTQUFLUCxLQUFMLENBQVdZLFFBQVgsR0FBc0IsS0FBS1osS0FBTCxDQUFXWSxRQUFYLENBQW9CSixXQUFwQixHQUFrQ0MsT0FBbEMsQ0FBMEMsSUFBMUMsRUFBZ0QsR0FBaEQsQ0FBdEI7QUFDQSxRQUFJLENBQUNoQixTQUFTLENBQUNpQixRQUFWLENBQW1CLEtBQUtWLEtBQUwsQ0FBV1ksUUFBOUIsQ0FBTCxFQUE4QyxLQUFLWixLQUFMLENBQVdZLFFBQVgsR0FBc0JqQixVQUFVLENBQUNnQixZQUFYLENBQXdCQyxRQUE5QztBQUU5QyxTQUFLQyxRQUFMLEdBQWdCLEtBQUtBLFFBQUwsQ0FBY1AsSUFBZCxDQUFtQixJQUFuQixDQUFoQjtBQUNIOztBQUVELGFBQVdLLFlBQVgsR0FBMEI7QUFDdEIsV0FBTztBQUNIVCxjQUFRLEVBQUUsRUFEUDtBQUVISyxXQUFLLEVBQUUsWUFGSjtBQUdISyxjQUFRLEVBQUUsS0FIUDtBQUlIRSxRQUFFLEVBQUUsS0FBS2hCLFNBSk47QUFLSGlCLGNBQVEsRUFBRTtBQUxQLEtBQVA7QUFPSDs7QUFFRCxhQUFXckIsTUFBWCxHQUFvQjtBQUFDLFdBQU9BLE1BQVA7QUFBZTs7QUFFcENzQixtQkFBaUIsR0FBRztBQUNoQixTQUFLQyxNQUFMLEdBQWNDLEdBQUcsQ0FBQ0MsSUFBSixDQUFTLEtBQUtuQixLQUFMLENBQVdjLEVBQXBCLENBQWQsQ0FEZ0IsQ0FHaEI7O0FBQ0EsVUFBTU0sWUFBWSxHQUFHLEtBQUtILE1BQUwsQ0FBWUksVUFBWixDQUF1QkMsZUFBdkIsQ0FBdUNDLFFBQXZDLENBQWdEQyxnQkFBaEQsQ0FBaUVDLElBQXRGOztBQUNBLFNBQUtSLE1BQUwsQ0FBWUksVUFBWixDQUF1QkMsZUFBdkIsQ0FBdUNDLFFBQXZDLENBQWdEQyxnQkFBaEQsQ0FBaUVDLElBQWpFLEdBQXdFLFlBQVc7QUFDL0VMLGtCQUFZLENBQUNNLEtBQWIsQ0FBbUIsSUFBbkIsRUFBeUJDLFNBQXpCO0FBQ0EsWUFBTUMsUUFBUSxHQUFHLElBQUlDLGdCQUFKLENBQXFCQyxTQUFTLElBQUk7QUFDL0MsYUFBSyxNQUFNQyxRQUFYLElBQXVCRCxTQUF2QixFQUFrQztBQUM5QixjQUFJLENBQUNDLFFBQVEsQ0FBQ0MsVUFBVCxDQUFvQkMsTUFBckIsSUFBK0IsRUFBRUYsUUFBUSxDQUFDQyxVQUFULENBQW9CLENBQXBCLGFBQWtDRSxPQUFwQyxDQUFuQyxFQUFpRjtBQUNqRixnQkFBTUMsSUFBSSxHQUFHSixRQUFRLENBQUNDLFVBQVQsQ0FBb0IsQ0FBcEIsQ0FBYjtBQUNBLGNBQUlHLElBQUksQ0FBQ0MsYUFBTCxLQUF1QkMsUUFBUSxDQUFDQyxJQUFoQyxJQUF3QyxDQUFDSCxJQUFJLENBQUNJLGFBQUwsQ0FBbUIsbUJBQW5CLENBQTdDLEVBQXNGO0FBQ3RGSixjQUFJLENBQUNyQixFQUFMLEdBQVUsNEJBQVY7QUFDQWMsa0JBQVEsQ0FBQ1ksVUFBVDtBQUNIO0FBQ0osT0FSZ0IsQ0FBakI7QUFTQVosY0FBUSxDQUFDYSxPQUFULENBQWlCSixRQUFRLENBQUNDLElBQTFCLEVBQWdDO0FBQUNJLGlCQUFTLEVBQUU7QUFBWixPQUFoQztBQUNILEtBWkQ7O0FBY0EsVUFBTW5DLEtBQUssR0FBRyxLQUFLUCxLQUFMLENBQVdPLEtBQVgsSUFBb0JaLFVBQVUsQ0FBQ2dCLFlBQVgsQ0FBd0JKLEtBQTVDLEdBQW9ELEtBQUtQLEtBQUwsQ0FBV08sS0FBWCxDQUFpQm9DLEtBQWpCLENBQXVCLEdBQXZCLEVBQTRCLENBQTVCLENBQXBELEdBQXFGLEtBQUszQyxLQUFMLENBQVdPLEtBQTlHO0FBQ0EsU0FBS1UsTUFBTCxDQUFZMkIsUUFBWixDQUFzQixhQUFZckMsS0FBTSxFQUF4QztBQUNBLFNBQUtVLE1BQUwsQ0FBWTRCLE9BQVosQ0FBb0JDLE9BQXBCLENBQTZCLFlBQVcsS0FBSzlDLEtBQUwsQ0FBV1ksUUFBUyxFQUE1RDtBQUNBLFNBQUtLLE1BQUwsQ0FBWThCLGtCQUFaLENBQStCLEtBQS9CO0FBQ0EsU0FBSzlCLE1BQUwsQ0FBWStCLFdBQVosQ0FBd0IsS0FBS2hELEtBQUwsQ0FBV2UsUUFBbkM7QUFDQSxTQUFLRSxNQUFMLENBQVlnQyxFQUFaLENBQWUsUUFBZixFQUF5QixLQUFLcEMsUUFBOUI7QUFDSDs7QUFFRHFDLHNCQUFvQixHQUFHO0FBQ25CLFNBQUtqQyxNQUFMLENBQVlrQyxPQUFaO0FBQ0g7O0FBRUQsTUFBSUMsS0FBSixHQUFZO0FBQUMsV0FBTyxLQUFLbkMsTUFBTCxDQUFZNEIsT0FBWixDQUFvQlEsUUFBcEIsRUFBUDtBQUF1Qzs7QUFDcEQsTUFBSUQsS0FBSixDQUFVRSxRQUFWLEVBQW9CO0FBQ2hCLFNBQUtyQyxNQUFMLENBQVlzQyxRQUFaLENBQXFCRCxRQUFyQjtBQUNIOztBQUVEekMsVUFBUSxHQUFHO0FBQ1AsUUFBSSxLQUFLYixLQUFMLENBQVdhLFFBQWYsRUFBeUIsS0FBS2IsS0FBTCxDQUFXYSxRQUFYLENBQW9CLEtBQUt1QyxLQUF6QjtBQUM1Qjs7QUFFRC9DLGNBQVksR0FBRztBQUFDLFdBQU8sS0FBS1ksTUFBTCxDQUFZSSxVQUFaLENBQXVCQyxlQUF2QixDQUF1Q0MsUUFBdkMsQ0FBZ0RDLGdCQUFoRCxDQUFpRUMsSUFBakUsQ0FBc0UsS0FBS1IsTUFBM0UsQ0FBUDtBQUEyRjs7QUFDM0d1QyxRQUFNLEdBQUc7QUFBQyxXQUFPLEtBQUt2QyxNQUFMLENBQVl1QyxNQUFaLEVBQVA7QUFBNkI7O0FBRXZDQyxjQUFZLENBQUN4RCxPQUFELEVBQVU7QUFDbEIsUUFBSUEsT0FBTyxDQUFDRSxJQUFSLElBQWdCLFVBQXBCLEVBQWdDLE9BQU8sS0FBS3VELFlBQUwsQ0FBa0J6RCxPQUFsQixDQUFQO0FBQ2hDLFdBQU8sS0FBSzBELFVBQUwsQ0FBZ0IxRCxPQUFoQixDQUFQO0FBQ0g7O0FBRUR5RCxjQUFZLENBQUNFLFFBQUQsRUFBVztBQUNuQix3QkFBTyx3RUFBQyxpREFBRDtBQUFVLFVBQUksRUFBRUEsUUFBUSxDQUFDQyxLQUF6QjtBQUFnQyxjQUFRLEVBQUVELFFBQVEsQ0FBQy9DLFFBQW5EO0FBQTZELGFBQU8sRUFBRStDLFFBQVEsQ0FBQ0U7QUFBL0UsTUFBUDtBQUNIOztBQUVESCxZQUFVLENBQUNJLE1BQUQsRUFBUztBQUNmLHdCQUFPLHdFQUFDLE9BQUQ7QUFBUyxXQUFLLEVBQUMsT0FBZjtBQUF1QixjQUFRLEVBQUMsS0FBaEM7QUFBc0MsVUFBSSxFQUFFQSxNQUFNLENBQUNDO0FBQW5ELE9BQ01oRSxLQUFLLElBQUk7QUFDTiwwQkFBTywrRkFBWUEsS0FBWjtBQUFtQixpQkFBUyxFQUFDLGlCQUE3QjtBQUErQyxlQUFPLEVBQUdpRSxLQUFELElBQVc7QUFBQ0YsZ0JBQU0sQ0FBQzNELE9BQVAsQ0FBZTZELEtBQWYsRUFBc0IsS0FBS2IsS0FBM0I7QUFBbUM7QUFBdkcsVUFBMEdXLE1BQU0sQ0FBQ0YsS0FBakgsQ0FBUDtBQUNILEtBSE4sQ0FBUDtBQUtIOztBQUVESyxRQUFNLEdBQUc7QUFDTCxRQUFJLEtBQUtqRCxNQUFMLElBQWUsS0FBS0EsTUFBTCxDQUFZdUMsTUFBL0IsRUFBdUMsS0FBS3ZDLE1BQUwsQ0FBWXVDLE1BQVo7QUFFdkMsVUFBTVcsWUFBWSxHQUFHLEtBQUtuRSxLQUFMLENBQVdFLFFBQVgsQ0FBb0JrRSxNQUFwQixDQUEyQkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLElBQUYsSUFBVSxPQUExQyxFQUFtREMsR0FBbkQsQ0FBdUQsS0FBS2QsWUFBTCxDQUFrQm5ELElBQWxCLENBQXVCLElBQXZCLENBQXZELENBQXJCO0FBQ0EsVUFBTWtFLGFBQWEsR0FBRyxLQUFLeEUsS0FBTCxDQUFXRSxRQUFYLENBQW9Ca0UsTUFBcEIsQ0FBMkJDLENBQUMsSUFBSUEsQ0FBQyxDQUFDQyxJQUFGLElBQVUsT0FBMUMsRUFBbURDLEdBQW5ELENBQXVELEtBQUtkLFlBQUwsQ0FBa0JuRCxJQUFsQixDQUF1QixJQUF2QixDQUF2RCxDQUF0QjtBQUVBLHdCQUFPO0FBQUssUUFBRSxFQUFDLGlCQUFSO0FBQTBCLGVBQVMsRUFBRSxLQUFLTixLQUFMLENBQVdPO0FBQWhELG9CQUNLO0FBQUssUUFBRSxFQUFDO0FBQVIsb0JBQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUNLNEQsWUFETCxDQURKLGVBSUk7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUNLSyxhQURMLENBSkosQ0FETCxlQVNLO0FBQUssZUFBUyxFQUFDO0FBQWYsb0JBQ0k7QUFBSyxRQUFFLEVBQUUsS0FBS3hFLEtBQUwsQ0FBV2MsRUFBcEI7QUFBd0IsZUFBUyxFQUFFLFlBQVksS0FBS2QsS0FBTCxDQUFXTztBQUExRCxPQUFrRSxLQUFLUCxLQUFMLENBQVdvRCxLQUE3RSxDQURKLENBVEwsQ0FBUDtBQWFIOztBQS9HbUQiLCJmaWxlIjoiLi9zcmMvdWkvY3VzdG9tY3NzL2VkaXRvci5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBXZWJwYWNrTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmltcG9ydCBDaGVja2JveCBmcm9tIFwiLi9jaGVja2JveFwiO1xyXG5cclxuY29uc3QgVG9vbHRpcCA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5RGlzcGxheU5hbWUoXCJUb29sdGlwXCIpO1xyXG5cclxuY29uc3QgbGFuZ3VhZ2VzID0gW1wiYWJhcFwiLCBcImFiY1wiLCBcImFjdGlvbnNjcmlwdFwiLCBcImFkYVwiLCBcImFwYWNoZV9jb25mXCIsIFwiYXNjaWlkb2NcIiwgXCJhc3NlbWJseV94ODZcIiwgXCJhdXRvaG90a2V5XCIsIFwiYmF0Y2hmaWxlXCIsIFwiYnJvXCIsIFwiY19jcHBcIiwgXCJjOXNlYXJjaFwiLCBcImNpcnJ1XCIsIFwiY2xvanVyZVwiLCBcImNvYm9sXCIsIFwiY29mZmVlXCIsIFwiY29sZGZ1c2lvblwiLCBcImNzaGFycFwiLCBcImNzb3VuZF9kb2N1bWVudFwiLCBcImNzb3VuZF9vcmNoZXN0cmFcIiwgXCJjc291bmRfc2NvcmVcIiwgXCJjc3NcIiwgXCJjdXJseVwiLCBcImRcIiwgXCJkYXJ0XCIsIFwiZGlmZlwiLCBcImRvY2tlcmZpbGVcIiwgXCJkb3RcIiwgXCJkcm9vbHNcIiwgXCJkdW1teVwiLCBcImR1bW15c3ludGF4XCIsIFwiZWlmZmVsXCIsIFwiZWpzXCIsIFwiZWxpeGlyXCIsIFwiZWxtXCIsIFwiZXJsYW5nXCIsIFwiZm9ydGhcIiwgXCJmb3J0cmFuXCIsIFwiZnRsXCIsIFwiZ2NvZGVcIiwgXCJnaGVya2luXCIsIFwiZ2l0aWdub3JlXCIsIFwiZ2xzbFwiLCBcImdvYnN0b25lc1wiLCBcImdvbGFuZ1wiLCBcImdyYXBocWxzY2hlbWFcIiwgXCJncm9vdnlcIiwgXCJoYW1sXCIsIFwiaGFuZGxlYmFyc1wiLCBcImhhc2tlbGxcIiwgXCJoYXNrZWxsX2NhYmFsXCIsIFwiaGF4ZVwiLCBcImhqc29uXCIsIFwiaHRtbFwiLCBcImh0bWxfZWxpeGlyXCIsIFwiaHRtbF9ydWJ5XCIsIFwiaW5pXCIsIFwiaW9cIiwgXCJqYWNrXCIsIFwiamFkZVwiLCBcImphdmFcIiwgXCJqYXZhc2NyaXB0XCIsIFwianNvblwiLCBcImpzb25pcVwiLCBcImpzcFwiLCBcImpzc21cIiwgXCJqc3hcIiwgXCJqdWxpYVwiLCBcImtvdGxpblwiLCBcImxhdGV4XCIsIFwibGVzc1wiLCBcImxpcXVpZFwiLCBcImxpc3BcIiwgXCJsaXZlc2NyaXB0XCIsIFwibG9naXFsXCIsIFwibHNsXCIsIFwibHVhXCIsIFwibHVhcGFnZVwiLCBcImx1Y2VuZVwiLCBcIm1ha2VmaWxlXCIsIFwibWFya2Rvd25cIiwgXCJtYXNrXCIsIFwibWF0bGFiXCIsIFwibWF6ZVwiLCBcIm1lbFwiLCBcIm11c2hjb2RlXCIsIFwibXlzcWxcIiwgXCJuaXhcIiwgXCJuc2lzXCIsIFwib2JqZWN0aXZlY1wiLCBcIm9jYW1sXCIsIFwicGFzY2FsXCIsIFwicGVybFwiLCBcInBnc3FsXCIsIFwicGhwXCIsIFwicGlnXCIsIFwicG93ZXJzaGVsbFwiLCBcInByYWF0XCIsIFwicHJvbG9nXCIsIFwicHJvcGVydGllc1wiLCBcInByb3RvYnVmXCIsIFwicHl0aG9uXCIsIFwiclwiLCBcInJhem9yXCIsIFwicmRvY1wiLCBcInJlZFwiLCBcInJodG1sXCIsIFwicnN0XCIsIFwicnVieVwiLCBcInJ1c3RcIiwgXCJzYXNzXCIsIFwic2NhZFwiLCBcInNjYWxhXCIsIFwic2NoZW1lXCIsIFwic2Nzc1wiLCBcInNoXCIsIFwic2pzXCIsIFwic21hcnR5XCIsIFwic25pcHBldHNcIiwgXCJzb3lfdGVtcGxhdGVcIiwgXCJzcGFjZVwiLCBcInNxbFwiLCBcInNxbHNlcnZlclwiLCBcInN0eWx1c1wiLCBcInN2Z1wiLCBcInN3aWZ0XCIsIFwidGNsXCIsIFwidGV4XCIsIFwidGV4dFwiLCBcInRleHRpbGVcIiwgXCJ0b21sXCIsIFwidHN4XCIsIFwidHdpZ1wiLCBcInR5cGVzY3JpcHRcIiwgXCJ2YWxhXCIsIFwidmJzY3JpcHRcIiwgXCJ2ZWxvY2l0eVwiLCBcInZlcmlsb2dcIiwgXCJ2aGRsXCIsIFwid29sbG9rXCIsIFwieG1sXCIsIFwieHF1ZXJ5XCIsIFwieWFtbFwiLCBcImRqYW5nb1wiXTtcclxuY29uc3QgdGhlbWVzID0gW1wiY2hyb21lXCIsIFwiY2xvdWRzXCIsIFwiY3JpbXNvbl9lZGl0b3JcIiwgXCJkYXduXCIsIFwiZHJlYW13ZWF2ZXJcIiwgXCJlY2xpcHNlXCIsIFwiZ2l0aHViXCIsIFwiaXBsYXN0aWNcIiwgXCJzb2xhcml6ZWRfbGlnaHRcIiwgXCJ0ZXh0bWF0ZVwiLCBcInRvbW9ycm93XCIsIFwieGNvZGVcIiwgXCJrdXJvaXJcIiwgXCJrYXR6ZW5taWxjaFwiLCBcInNxbHNlcnZlclwiLCBcImFtYmlhbmNlXCIsIFwiY2hhb3NcIiwgXCJjbG91ZHNfbWlkbmlnaHRcIiwgXCJjb2JhbHRcIiwgXCJncnV2Ym94XCIsIFwiZ29iXCIsIFwiaWRsZV9maW5nZXJzXCIsIFwia3JfdGhlbWVcIiwgXCJtZXJiaXZvcmVcIiwgXCJtZXJiaXZvcmVfc29mdFwiLCBcIm1vbm9faW5kdXN0cmlhbFwiLCBcIm1vbm9rYWlcIiwgXCJwYXN0ZWxfb25fZGFya1wiLCBcInNvbGFyaXplZF9kYXJrXCIsIFwidGVybWluYWxcIiwgXCJ0b21vcnJvd19uaWdodFwiLCBcInRvbW9ycm93X25pZ2h0X2JsdWVcIiwgXCJ0b21vcnJvd19uaWdodF9icmlnaHRcIiwgXCJ0b21vcnJvd19uaWdodF9laWdodGllc1wiLCBcInR3aWxpZ2h0XCIsIFwidmlicmFudF9pbmtcIl07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb2RlRWRpdG9yIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBnZXQgZGVmYXVsdElkKCkge3JldHVybiBcImJkLWVkaXRvclwiO31cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICBcclxuICAgICAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgdGhpcy5wcm9wcy5jb250cm9scykge1xyXG4gICAgICAgICAgICBpZiAoY29udHJvbC50eXBlID09IFwiY2hlY2tib3hcIikgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChjb250cm9sLm9uQ2xpY2sgPT0gXCJzaG93U2V0dGluZ3NcIikgY29udHJvbC5vbkNsaWNrID0gdGhpcy5zaG93U2V0dGluZ3MuYmluZCh0aGlzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucHJvcHMudGhlbWUgPSB0aGlzLnByb3BzLnRoZW1lLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvIC9nLCBcIl9cIik7XHJcbiAgICAgICAgaWYgKCF0aGVtZXMuaW5jbHVkZXModGhpcy5wcm9wcy50aGVtZSkpIHRoaXMucHJvcHMudGhlbWUgPSBDb2RlRWRpdG9yLmRlZmF1bHRQcm9wcy50aGVtZTtcclxuXHJcbiAgICAgICAgdGhpcy5wcm9wcy5sYW5ndWFnZSA9IHRoaXMucHJvcHMubGFuZ3VhZ2UudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8gL2csIFwiX1wiKTtcclxuICAgICAgICBpZiAoIWxhbmd1YWdlcy5pbmNsdWRlcyh0aGlzLnByb3BzLmxhbmd1YWdlKSkgdGhpcy5wcm9wcy5sYW5ndWFnZSA9IENvZGVFZGl0b3IuZGVmYXVsdFByb3BzLmxhbmd1YWdlO1xyXG5cclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQgZGVmYXVsdFByb3BzKCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGNvbnRyb2xzOiBbXSxcclxuICAgICAgICAgICAgdGhlbWU6IFwiYmQtbW9ub2thaVwiLFxyXG4gICAgICAgICAgICBsYW5ndWFnZTogXCJjc3NcIixcclxuICAgICAgICAgICAgaWQ6IHRoaXMuZGVmYXVsdElkLFxyXG4gICAgICAgICAgICBmb250U2l6ZTogMTRcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQgdGhlbWVzKCkge3JldHVybiB0aGVtZXM7fVxyXG5cclxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yID0gYWNlLmVkaXQodGhpcy5wcm9wcy5pZCk7XHJcblxyXG4gICAgICAgIC8vIEFkZCBpZCB0byB0aGUgYWNlIG1lbnUgY29udGFpbmVyXHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxTaG93ID0gdGhpcy5lZGl0b3Iua2V5QmluZGluZy4kZGVmYXVsdEhhbmRsZXIuY29tbWFuZHMuc2hvd1NldHRpbmdzTWVudS5leGVjO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLmtleUJpbmRpbmcuJGRlZmF1bHRIYW5kbGVyLmNvbW1hbmRzLnNob3dTZXR0aW5nc01lbnUuZXhlYyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICBvcmlnaW5hbFNob3cuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxuICAgICAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihtdXRhdGlvbnMgPT4ge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIW11dGF0aW9uLmFkZGVkTm9kZXMubGVuZ3RoIHx8ICEobXV0YXRpb24uYWRkZWROb2Rlc1swXSBpbnN0YW5jZW9mIEVsZW1lbnQpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gbXV0YXRpb24uYWRkZWROb2Rlc1swXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5wYXJlbnRFbGVtZW50ICE9PSBkb2N1bWVudC5ib2R5IHx8ICFub2RlLnF1ZXJ5U2VsZWN0b3IoXCIjYWNlX3NldHRpbmdzbWVudVwiKSkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5pZCA9IFwiYWNlX3NldHRpbmdzbWVudV9jb250YWluZXJcIjtcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHtjaGlsZExpc3Q6IHRydWV9KTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zdCB0aGVtZSA9IHRoaXMucHJvcHMudGhlbWUgPT0gQ29kZUVkaXRvci5kZWZhdWx0UHJvcHMudGhlbWUgPyB0aGlzLnByb3BzLnRoZW1lLnNwbGl0KFwiLVwiKVsxXSA6IHRoaXMucHJvcHMudGhlbWU7XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iuc2V0VGhlbWUoYGFjZS90aGVtZS8ke3RoZW1lfWApO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNlc3Npb24uc2V0TW9kZShgYWNlL21vZGUvJHt0aGlzLnByb3BzLmxhbmd1YWdlfWApO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNldFNob3dQcmludE1hcmdpbihmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iuc2V0Rm9udFNpemUodGhpcy5wcm9wcy5mb250U2l6ZSk7XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iub24oXCJjaGFuZ2VcIiwgdGhpcy5vbkNoYW5nZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3IuZGVzdHJveSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB2YWx1ZSgpIHtyZXR1cm4gdGhpcy5lZGl0b3Iuc2Vzc2lvbi5nZXRWYWx1ZSgpO31cclxuICAgIHNldCB2YWx1ZShuZXdWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNldFZhbHVlKG5ld1ZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNoYW5nZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkNoYW5nZSkgdGhpcy5wcm9wcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93U2V0dGluZ3MoKSB7cmV0dXJuIHRoaXMuZWRpdG9yLmtleUJpbmRpbmcuJGRlZmF1bHRIYW5kbGVyLmNvbW1hbmRzLnNob3dTZXR0aW5nc01lbnUuZXhlYyh0aGlzLmVkaXRvcik7fVxyXG4gICAgcmVzaXplKCkge3JldHVybiB0aGlzLmVkaXRvci5yZXNpemUoKTt9XHJcblxyXG4gICAgYnVpbGRDb250cm9sKGNvbnRyb2wpIHtcclxuICAgICAgICBpZiAoY29udHJvbC50eXBlID09IFwiY2hlY2tib3hcIikgcmV0dXJuIHRoaXMubWFrZUNoZWNrYm94KGNvbnRyb2wpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1ha2VCdXR0b24oY29udHJvbCk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFrZUNoZWNrYm94KGNoZWNrYm94KSB7XHJcbiAgICAgICAgcmV0dXJuIDxDaGVja2JveCB0ZXh0PXtjaGVja2JveC5sYWJlbH0gb25DaGFuZ2U9e2NoZWNrYm94Lm9uQ2hhbmdlfSBjaGVja2VkPXtjaGVja2JveC5jaGVja2VkfSAvPjtcclxuICAgIH1cclxuXHJcbiAgICBtYWtlQnV0dG9uKGJ1dHRvbikge1xyXG4gICAgICAgIHJldHVybiA8VG9vbHRpcCBjb2xvcj1cImJsYWNrXCIgcG9zaXRpb249XCJ0b3BcIiB0ZXh0PXtidXR0b24udG9vbHRpcH0+XHJcbiAgICAgICAgICAgICAgICAgICAge3Byb3BzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxidXR0b24gey4uLnByb3BzfSBjbGFzc05hbWU9XCJidG4gYnRuLXByaW1hcnlcIiBvbkNsaWNrPXsoZXZlbnQpID0+IHtidXR0b24ub25DbGljayhldmVudCwgdGhpcy52YWx1ZSk7fX0+e2J1dHRvbi5sYWJlbH08L2J1dHRvbj47XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD47XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmVkaXRvciAmJiB0aGlzLmVkaXRvci5yZXNpemUpIHRoaXMuZWRpdG9yLnJlc2l6ZSgpO1xyXG5cclxuICAgICAgICBjb25zdCBjb250cm9sc0xlZnQgPSB0aGlzLnByb3BzLmNvbnRyb2xzLmZpbHRlcihjID0+IGMuc2lkZSAhPSBcInJpZ2h0XCIpLm1hcCh0aGlzLmJ1aWxkQ29udHJvbC5iaW5kKHRoaXMpKTtcclxuICAgICAgICBjb25zdCBjb250cm9sc1JpZ2h0ID0gdGhpcy5wcm9wcy5jb250cm9scy5maWx0ZXIoYyA9PiBjLnNpZGUgPT0gXCJyaWdodFwiKS5tYXAodGhpcy5idWlsZENvbnRyb2wuYmluZCh0aGlzKSk7XHJcblxyXG4gICAgICAgIHJldHVybiA8ZGl2IGlkPVwiYmQtZWRpdG9yLXBhbmVsXCIgY2xhc3NOYW1lPXt0aGlzLnByb3BzLnRoZW1lfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiYmQtZWRpdG9yLWNvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udHJvbHMtc2VjdGlvbiBjb250cm9scy1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29udHJvbHNMZWZ0fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250cm9scy1zZWN0aW9uIGNvbnRyb2xzLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29udHJvbHNSaWdodH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJlZGl0b3Itd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPXt0aGlzLnByb3BzLmlkfSBjbGFzc05hbWU9e1wiZWRpdG9yIFwiICsgdGhpcy5wcm9wcy50aGVtZX0+e3RoaXMucHJvcHMudmFsdWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/customcss/editor.jsx\n"); /***/ }), @@ -754,7 +754,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BDEmote; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nconst TooltipWrapper = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"Tooltip\");\nclass BDEmote extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n shouldAnimate: !this.animateOnHover,\n isFavorite: this.props.isFavorite\n };\n this.onMouseEnter = this.onMouseEnter.bind(this);\n this.onMouseLeave = this.onMouseLeave.bind(this);\n this.onClick = this.onClick.bind(this);\n this.toggleFavorite = this.toggleFavorite.bind(this);\n }\n\n get animateOnHover() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"emotes\", \"general\", \"animateOnHover\");\n }\n\n get label() {\n return this.props.modifier ? `${this.props.name}:${this.props.modifier}` : this.props.name;\n }\n\n get modifierClass() {\n return this.props.modifier ? ` emote${this.props.modifier}` : \"\";\n }\n\n onMouseEnter() {\n if (!this.state.shouldAnimate && this.animateOnHover) this.setState({\n shouldAnimate: true\n }); // if (!this.state.isFavorite && EmoteMenu.favoriteEmotes[this.label]) this.setState({isFavorite: true});\n // else if (this.state.isFavorite && !EmoteMenu.favoriteEmotes[this.label]) this.setState({isFavorite: false});\n }\n\n onMouseLeave() {\n if (this.state.shouldAnimate && this.animateOnHover) this.setState({\n shouldAnimate: false\n });\n }\n\n onClick(e) {\n if (this.props.onClick) this.props.onClick(e);\n }\n\n toggleFavorite(e) {\n e.preventDefault();\n e.stopPropagation();\n if (this.state.isFavorite) modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].emit(\"emotes-favorite-removed\", this.label);else modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].emit(\"emotes-favorite-added\", this.label, this.props.url);\n this.setState({\n isFavorite: !this.state.isFavorite\n });\n }\n\n render() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(TooltipWrapper, {\n color: \"black\",\n position: \"top\",\n text: this.label,\n delay: 750\n }, childProps => {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", Object.assign({\n className: \"emotewrapper\" + (this.props.jumboable ? \" jumboable\" : \"\"),\n onMouseEnter: this.onMouseEnter,\n onMouseLeave: this.onMouseLeave,\n onClick: this.onClick\n }, childProps), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"img\", {\n draggable: false,\n className: \"emote\" + this.modifierClass + (this.props.jumboable ? \" jumboable\" : \"\") + (!this.state.shouldAnimate ? \" stop-animation\" : \"\"),\n dataModifier: this.props.modifier,\n alt: this.label,\n src: this.props.url\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n className: \"fav\" + (this.state.isFavorite ? \" active\" : \"\"),\n title: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Emotes.favoriteAction,\n type: \"button\",\n onClick: this.toggleFavorite\n }));\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvZW1vdGUuanM/NmNjYiJdLCJuYW1lcyI6WyJUb29sdGlwV3JhcHBlciIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlEaXNwbGF5TmFtZSIsIkJERW1vdGUiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzdGF0ZSIsInNob3VsZEFuaW1hdGUiLCJhbmltYXRlT25Ib3ZlciIsImlzRmF2b3JpdGUiLCJvbk1vdXNlRW50ZXIiLCJiaW5kIiwib25Nb3VzZUxlYXZlIiwib25DbGljayIsInRvZ2dsZUZhdm9yaXRlIiwiU2V0dGluZ3MiLCJnZXQiLCJsYWJlbCIsIm1vZGlmaWVyIiwibmFtZSIsIm1vZGlmaWVyQ2xhc3MiLCJzZXRTdGF0ZSIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsIkV2ZW50cyIsImVtaXQiLCJ1cmwiLCJyZW5kZXIiLCJjcmVhdGVFbGVtZW50IiwiY29sb3IiLCJwb3NpdGlvbiIsInRleHQiLCJkZWxheSIsImNoaWxkUHJvcHMiLCJPYmplY3QiLCJhc3NpZ24iLCJjbGFzc05hbWUiLCJqdW1ib2FibGUiLCJkcmFnZ2FibGUiLCJkYXRhTW9kaWZpZXIiLCJhbHQiLCJzcmMiLCJ0aXRsZSIsIlN0cmluZ3MiLCJFbW90ZXMiLCJmYXZvcml0ZUFjdGlvbiIsInR5cGUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUEsTUFBTUEsY0FBYyxHQUFHQyxzREFBYyxDQUFDQyxnQkFBZixDQUFnQyxTQUFoQyxDQUF2QjtBQUVlLE1BQU1DLE9BQU4sU0FBc0JDLDZDQUFLLENBQUNDLFNBQTVCLENBQXNDO0FBQ2pEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFFQSxTQUFLQyxLQUFMLEdBQWE7QUFDVEMsbUJBQWEsRUFBRSxDQUFDLEtBQUtDLGNBRFo7QUFFVEMsZ0JBQVUsRUFBRSxLQUFLSixLQUFMLENBQVdJO0FB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LGFBQU4sQ0FBb0IsS0FBcEIsRUFBMkI7QUFDdkJVLGlCQUFTLEVBQUUsS0FEWTtBQUV2QkYsaUJBQVMsRUFBRSxVQUFVLEtBQUtqQixhQUFmLElBQWdDLEtBQUtmLEtBQUwsQ0FBV2lDLFNBQVgsR0FBdUIsWUFBdkIsR0FBc0MsRUFBdEUsS0FBNkUsQ0FBQyxLQUFLaEMsS0FBTCxDQUFXQyxhQUFaLEdBQTRCLGlCQUE1QixHQUFnRCxFQUE3SCxDQUZZO0FBR3ZCaUMsb0JBQVksRUFBRSxLQUFLbkMsS0FBTCxDQUFXYSxRQUhGO0FBSXZCdUIsV0FBRyxFQUFFLEtBQUt4QixLQUphO0FBS3ZCeUIsV0FBRyxFQUFFLEtBQUtyQyxLQUFMLENBQVdzQjtBQUxPLE9BQTNCLENBTkcsRUFhSHpCLDZDQUFLLENBQUMyQixhQUFOLENBQW9CLE9BQXBCLEVBQTZCO0FBQ3pCUSxpQkFBUyxFQUFFLFNBQVMsS0FBSy9CLEtBQUwsQ0FBV0csVUFBWCxHQUF3QixTQUF4QixHQUFvQyxFQUE3QyxDQURjO0FBRXpCa0MsYUFBSyxFQUFFQywrQ0FBTyxDQUFDQyxNQUFSLENBQWVDLGNBRkc7QUFHekJDLFlBQUksRUFBRSxRQUhtQjtBQUl6QmxDLGVBQU8sRUFBRSxLQUFLQztBQUpXLE9BQTdCLENBYkcsQ0FBUDtBQW9CSCxLQTNCRSxDQUFQO0FBNEJIOztBQTlFZ0QiLCJmaWxlIjoiLi9zcmMvdWkvZW1vdGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1NldHRpbmdzLCBSZWFjdCwgV2VicGFja01vZHVsZXMsIEV2ZW50cywgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmNvbnN0IFRvb2x0aXBXcmFwcGVyID0gV2VicGFja01vZHVsZXMuZ2V0QnlEaXNwbGF5TmFtZShcIlRvb2x0aXBcIik7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCREVtb3RlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG5cclxuICAgICAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICAgICAgICBzaG91bGRBbmltYXRlOiAhdGhpcy5hbmltYXRlT25Ib3ZlcixcclxuICAgICAgICAgICAgaXNGYXZvcml0ZTogdGhpcy5wcm9wcy5pc0Zhdm9yaXRlXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5vbk1vdXNlRW50ZXIgPSB0aGlzLm9uTW91c2VFbnRlci5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub25Nb3VzZUxlYXZlID0gdGhpcy5vbk1vdXNlTGVhdmUuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLm9uQ2xpY2sgPSB0aGlzLm9uQ2xpY2suYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnRvZ2dsZUZhdm9yaXRlID0gdGhpcy50b2dnbGVGYXZvcml0ZS5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBhbmltYXRlT25Ib3ZlcigpIHtcclxuICAgICAgICByZXR1cm4gU2V0dGluZ3MuZ2V0KFwiZW1vdGVzXCIsIFwiZ2VuZXJhbFwiLCBcImFuaW1hdGVPbkhvdmVyXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBsYWJlbCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy5tb2RpZmllciA/IGAke3RoaXMucHJvcHMubmFtZX06JHt0aGlzLnByb3BzLm1vZGlmaWVyfWAgOiB0aGlzLnByb3BzLm5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG1vZGlmaWVyQ2xhc3MoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMubW9kaWZpZXIgPyBgIGVtb3RlJHt0aGlzLnByb3BzLm1vZGlmaWVyfWAgOiBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTW91c2VFbnRlcigpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc3RhdGUuc2hvdWxkQW5pbWF0ZSAmJiB0aGlzLmFuaW1hdGVPbkhvdmVyKSB0aGlzLnNldFN0YXRlKHtzaG91bGRBbmltYXRlOiB0cnVlfSk7XHJcbiAgICAgICAgLy8gaWYgKCF0aGlzLnN0YXRlLmlzRmF2b3JpdGUgJiYgRW1vdGVNZW51LmZhdm9yaXRlRW1vdGVzW3RoaXMubGFiZWxdKSB0aGlzLnNldFN0YXRlKHtpc0Zhdm9yaXRlOiB0cnVlfSk7XHJcbiAgICAgICAgLy8gZWxzZSBpZiAodGhpcy5zdGF0ZS5pc0Zhdm9yaXRlICYmICFFbW90ZU1lbnUuZmF2b3JpdGVFbW90ZXNbdGhpcy5sYWJlbF0pIHRoaXMuc2V0U3RhdGUoe2lzRmF2b3JpdGU6IGZhbHNlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Nb3VzZUxlYXZlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLnNob3VsZEFuaW1hdGUgJiYgdGhpcy5hbmltYXRlT25Ib3ZlcikgdGhpcy5zZXRTdGF0ZSh7c2hvdWxkQW5pbWF0ZTogZmFsc2V9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNsaWNrKGUpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkNsaWNrKSB0aGlzLnByb3BzLm9uQ2xpY2soZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlRmF2b3JpdGUoZSkge1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmlzRmF2b3JpdGUpIEV2ZW50cy5lbWl0KFwiZW1vdGVzLWZhdm9yaXRlLXJlbW92ZWRcIiwgdGhpcy5sYWJlbCk7XHJcbiAgICAgICAgZWxzZSBFdmVudHMuZW1pdChcImVtb3Rlcy1mYXZvcml0ZS1hZGRlZFwiLCB0aGlzLmxhYmVsLCB0aGlzLnByb3BzLnVybCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7aXNGYXZvcml0ZTogIXRoaXMuc3RhdGUuaXNGYXZvcml0ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChUb29sdGlwV3JhcHBlciwge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IFwiYmxhY2tcIixcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBcInRvcFwiLFxyXG4gICAgICAgICAgICAgICAgdGV4dDogdGhpcy5sYWJlbCxcclxuICAgICAgICAgICAgICAgIGRlbGF5OiA3NTBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKGNoaWxkUHJvcHMpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJlbW90ZXdyYXBwZXJcIiArICh0aGlzLnByb3BzLmp1bWJvYWJsZSA/IFwiIGp1bWJvYWJsZVwiIDogXCJcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyOiB0aGlzLm9uTW91c2VFbnRlcixcclxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlTGVhdmU6IHRoaXMub25Nb3VzZUxlYXZlLFxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IHRoaXMub25DbGlja1xyXG4gICAgICAgICAgICAgICAgfSwgY2hpbGRQcm9wcyksXHJcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImltZ1wiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdnYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJlbW90ZVwiICsgdGhpcy5tb2RpZmllckNsYXNzICsgKHRoaXMucHJvcHMuanVtYm9hYmxlID8gXCIganVtYm9hYmxlXCIgOiBcIlwiKSArICghdGhpcy5zdGF0ZS5zaG91bGRBbmltYXRlID8gXCIgc3RvcC1hbmltYXRpb25cIiA6IFwiXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhTW9kaWZpZXI6IHRoaXMucHJvcHMubW9kaWZpZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogdGhpcy5sYWJlbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLnByb3BzLnVybFxyXG4gICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJmYXZcIiArICh0aGlzLnN0YXRlLmlzRmF2b3JpdGUgPyBcIiBhY3RpdmVcIiA6IFwiXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogU3RyaW5ncy5FbW90ZXMuZmF2b3JpdGVBY3Rpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IHRoaXMudG9nZ2xlRmF2b3JpdGVcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/emote.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BDEmote; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modules/modules.js */ \"./src/modules/modules.js\");\n\nconst TooltipWrapper = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"Tooltip\");\nclass BDEmote extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n shouldAnimate: !this.animateOnHover,\n isFavorite: this.props.isFavorite\n };\n this.onMouseEnter = this.onMouseEnter.bind(this);\n this.onMouseLeave = this.onMouseLeave.bind(this);\n this.onClick = this.onClick.bind(this);\n this.toggleFavorite = this.toggleFavorite.bind(this);\n }\n\n get animateOnHover() {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"emotes\", \"general\", \"animateOnHover\");\n }\n\n get label() {\n return this.props.modifier ? `${this.props.name}:${this.props.modifier}` : this.props.name;\n }\n\n get modifierClass() {\n return this.props.modifier ? ` emote${this.props.modifier}` : \"\";\n }\n\n onMouseEnter() {\n if (!this.state.shouldAnimate && this.animateOnHover) this.setState({\n shouldAnimate: true\n }); // if (!this.state.isFavorite && EmoteMenu.favoriteEmotes[this.label]) this.setState({isFavorite: true});\n // else if (this.state.isFavorite && !EmoteMenu.favoriteEmotes[this.label]) this.setState({isFavorite: false});\n }\n\n onMouseLeave() {\n if (this.state.shouldAnimate && this.animateOnHover) this.setState({\n shouldAnimate: false\n });\n }\n\n onClick(e) {\n if (this.props.onClick) this.props.onClick(e);\n }\n\n toggleFavorite(e) {\n e.preventDefault();\n e.stopPropagation();\n if (this.state.isFavorite) _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].emit(\"emotes-favorite-removed\", this.label);else _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].emit(\"emotes-favorite-added\", this.label, this.props.url);\n this.setState({\n isFavorite: !this.state.isFavorite\n });\n }\n\n render() {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(TooltipWrapper, {\n color: \"black\",\n position: \"top\",\n text: this.label,\n delay: 750\n }, childProps => {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", Object.assign({\n className: \"emotewrapper\" + (this.props.jumboable ? \" jumboable\" : \"\"),\n onMouseEnter: this.onMouseEnter,\n onMouseLeave: this.onMouseLeave,\n onClick: this.onClick\n }, childProps), _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"img\", {\n draggable: false,\n className: \"emote\" + this.modifierClass + (this.props.jumboable ? \" jumboable\" : \"\") + (!this.state.shouldAnimate ? \" stop-animation\" : \"\"),\n dataModifier: this.props.modifier,\n alt: this.label,\n src: this.props.url\n }), _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n className: \"fav\" + (this.state.isFavorite ? \" active\" : \"\"),\n title: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Emotes.favoriteAction,\n type: \"button\",\n onClick: this.toggleFavorite\n }));\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvZW1vdGUuanM/NmNjYiJdLCJuYW1lcyI6WyJUb29sdGlwV3JhcHBlciIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlEaXNwbGF5TmFtZSIsIkJERW1vdGUiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzdGF0ZSIsInNob3VsZEFuaW1hdGUiLCJhbmltYXRlT25Ib3ZlciIsImlzRmF2b3JpdGUiLCJvbk1vdXNlRW50ZXIiLCJiaW5kIiwib25Nb3VzZUxlYXZlIiwib25DbGljayIsInRvZ2dsZUZhdm9yaXRlIiwiU2V0dGluZ3MiLCJnZXQiLCJsYWJlbCIsIm1vZGlmaWVyIiwibmFtZSIsIm1vZGlmaWVyQ2xhc3MiLCJzZXRTdGF0ZSIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsIkV2ZW50cyIsImVtaXQiLCJ1cmwiLCJyZW5kZXIiLCJjcmVhdGVFbGVtZW50IiwiY29sb3IiLCJwb3NpdGlvbiIsInRleHQiLCJkZWxheSIsImNoaWxkUHJvcHMiLCJPYmplY3QiLCJhc3NpZ24iLCJjbGFzc05hbWUiLCJqdW1ib2FibGUiLCJkcmFnZ2FibGUiLCJkYXRhTW9kaWZpZXIiLCJhbHQiLCJzcmMiLCJ0aXRsZSIsIlN0cmluZ3MiLCJFbW90ZXMiLCJmYXZvcml0ZUFjdGlvbiIsInR5cGUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUEsTUFBTUEsY0FBYyxHQUFHQyxrRUFBYyxDQUFDQyxnQkFBZixDQUFnQyxTQUFoQyxDQUF2QjtBQUVlLE1BQU1DLE9BQU4sU0FBc0JDLHlEQUFLLENBQUNDLFNBQTVCLENBQXNDO0FBQ2pEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFFQSxTQUFLQyxLQUFMLEdBQWE7QUFDVEMsbUJBQWEsRUFBRSxDQUFDLEtBQUtDLGNBRFo7QUFFVEMsZ0JBQVUsRUFBRSxLQUFLSixLQUFMLENBQVdJO0FB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LGFBQU4sQ0FBb0IsS0FBcEIsRUFBMkI7QUFDdkJVLGlCQUFTLEVBQUUsS0FEWTtBQUV2QkYsaUJBQVMsRUFBRSxVQUFVLEtBQUtqQixhQUFmLElBQWdDLEtBQUtmLEtBQUwsQ0FBV2lDLFNBQVgsR0FBdUIsWUFBdkIsR0FBc0MsRUFBdEUsS0FBNkUsQ0FBQyxLQUFLaEMsS0FBTCxDQUFXQyxhQUFaLEdBQTRCLGlCQUE1QixHQUFnRCxFQUE3SCxDQUZZO0FBR3ZCaUMsb0JBQVksRUFBRSxLQUFLbkMsS0FBTCxDQUFXYSxRQUhGO0FBSXZCdUIsV0FBRyxFQUFFLEtBQUt4QixLQUphO0FBS3ZCeUIsV0FBRyxFQUFFLEtBQUtyQyxLQUFMLENBQVdzQjtBQUxPLE9BQTNCLENBTkcsRUFhSHpCLHlEQUFLLENBQUMyQixhQUFOLENBQW9CLE9BQXBCLEVBQTZCO0FBQ3pCUSxpQkFBUyxFQUFFLFNBQVMsS0FBSy9CLEtBQUwsQ0FBV0csVUFBWCxHQUF3QixTQUF4QixHQUFvQyxFQUE3QyxDQURjO0FBRXpCa0MsYUFBSyxFQUFFQywyREFBTyxDQUFDQyxNQUFSLENBQWVDLGNBRkc7QUFHekJDLFlBQUksRUFBRSxRQUhtQjtBQUl6QmxDLGVBQU8sRUFBRSxLQUFLQztBQUpXLE9BQTdCLENBYkcsQ0FBUDtBQW9CSCxLQTNCRSxDQUFQO0FBNEJIOztBQTlFZ0QiLCJmaWxlIjoiLi9zcmMvdWkvZW1vdGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1NldHRpbmdzLCBSZWFjdCwgV2VicGFja01vZHVsZXMsIEV2ZW50cywgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmNvbnN0IFRvb2x0aXBXcmFwcGVyID0gV2VicGFja01vZHVsZXMuZ2V0QnlEaXNwbGF5TmFtZShcIlRvb2x0aXBcIik7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCREVtb3RlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG5cclxuICAgICAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICAgICAgICBzaG91bGRBbmltYXRlOiAhdGhpcy5hbmltYXRlT25Ib3ZlcixcclxuICAgICAgICAgICAgaXNGYXZvcml0ZTogdGhpcy5wcm9wcy5pc0Zhdm9yaXRlXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5vbk1vdXNlRW50ZXIgPSB0aGlzLm9uTW91c2VFbnRlci5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub25Nb3VzZUxlYXZlID0gdGhpcy5vbk1vdXNlTGVhdmUuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLm9uQ2xpY2sgPSB0aGlzLm9uQ2xpY2suYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnRvZ2dsZUZhdm9yaXRlID0gdGhpcy50b2dnbGVGYXZvcml0ZS5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBhbmltYXRlT25Ib3ZlcigpIHtcclxuICAgICAgICByZXR1cm4gU2V0dGluZ3MuZ2V0KFwiZW1vdGVzXCIsIFwiZ2VuZXJhbFwiLCBcImFuaW1hdGVPbkhvdmVyXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBsYWJlbCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy5tb2RpZmllciA/IGAke3RoaXMucHJvcHMubmFtZX06JHt0aGlzLnByb3BzLm1vZGlmaWVyfWAgOiB0aGlzLnByb3BzLm5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG1vZGlmaWVyQ2xhc3MoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMubW9kaWZpZXIgPyBgIGVtb3RlJHt0aGlzLnByb3BzLm1vZGlmaWVyfWAgOiBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTW91c2VFbnRlcigpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc3RhdGUuc2hvdWxkQW5pbWF0ZSAmJiB0aGlzLmFuaW1hdGVPbkhvdmVyKSB0aGlzLnNldFN0YXRlKHtzaG91bGRBbmltYXRlOiB0cnVlfSk7XHJcbiAgICAgICAgLy8gaWYgKCF0aGlzLnN0YXRlLmlzRmF2b3JpdGUgJiYgRW1vdGVNZW51LmZhdm9yaXRlRW1vdGVzW3RoaXMubGFiZWxdKSB0aGlzLnNldFN0YXRlKHtpc0Zhdm9yaXRlOiB0cnVlfSk7XHJcbiAgICAgICAgLy8gZWxzZSBpZiAodGhpcy5zdGF0ZS5pc0Zhdm9yaXRlICYmICFFbW90ZU1lbnUuZmF2b3JpdGVFbW90ZXNbdGhpcy5sYWJlbF0pIHRoaXMuc2V0U3RhdGUoe2lzRmF2b3JpdGU6IGZhbHNlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Nb3VzZUxlYXZlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLnNob3VsZEFuaW1hdGUgJiYgdGhpcy5hbmltYXRlT25Ib3ZlcikgdGhpcy5zZXRTdGF0ZSh7c2hvdWxkQW5pbWF0ZTogZmFsc2V9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNsaWNrKGUpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkNsaWNrKSB0aGlzLnByb3BzLm9uQ2xpY2soZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlRmF2b3JpdGUoZSkge1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmlzRmF2b3JpdGUpIEV2ZW50cy5lbWl0KFwiZW1vdGVzLWZhdm9yaXRlLXJlbW92ZWRcIiwgdGhpcy5sYWJlbCk7XHJcbiAgICAgICAgZWxzZSBFdmVudHMuZW1pdChcImVtb3Rlcy1mYXZvcml0ZS1hZGRlZFwiLCB0aGlzLmxhYmVsLCB0aGlzLnByb3BzLnVybCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7aXNGYXZvcml0ZTogIXRoaXMuc3RhdGUuaXNGYXZvcml0ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChUb29sdGlwV3JhcHBlciwge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IFwiYmxhY2tcIixcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBcInRvcFwiLFxyXG4gICAgICAgICAgICAgICAgdGV4dDogdGhpcy5sYWJlbCxcclxuICAgICAgICAgICAgICAgIGRlbGF5OiA3NTBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKGNoaWxkUHJvcHMpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJlbW90ZXdyYXBwZXJcIiArICh0aGlzLnByb3BzLmp1bWJvYWJsZSA/IFwiIGp1bWJvYWJsZVwiIDogXCJcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyOiB0aGlzLm9uTW91c2VFbnRlcixcclxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlTGVhdmU6IHRoaXMub25Nb3VzZUxlYXZlLFxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IHRoaXMub25DbGlja1xyXG4gICAgICAgICAgICAgICAgfSwgY2hpbGRQcm9wcyksXHJcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImltZ1wiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdnYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJlbW90ZVwiICsgdGhpcy5tb2RpZmllckNsYXNzICsgKHRoaXMucHJvcHMuanVtYm9hYmxlID8gXCIganVtYm9hYmxlXCIgOiBcIlwiKSArICghdGhpcy5zdGF0ZS5zaG91bGRBbmltYXRlID8gXCIgc3RvcC1hbmltYXRpb25cIiA6IFwiXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhTW9kaWZpZXI6IHRoaXMucHJvcHMubW9kaWZpZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogdGhpcy5sYWJlbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLnByb3BzLnVybFxyXG4gICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJmYXZcIiArICh0aGlzLnN0YXRlLmlzRmF2b3JpdGUgPyBcIiBhY3RpdmVcIiA6IFwiXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogU3RyaW5ncy5FbW90ZXMuZmF2b3JpdGVBY3Rpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IHRoaXMudG9nZ2xlRmF2b3JpdGVcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/emote.js\n"); /***/ }), @@ -766,7 +766,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ErrorBoundary; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! electron */ \"electron\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_1__);\n\n\nclass ErrorBoundary extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n hasError: false\n };\n }\n\n componentDidCatch() {\n this.setState({\n hasError: true\n });\n }\n\n render() {\n if (this.state.hasError) return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n onClick: () => electron__WEBPACK_IMPORTED_MODULE_1__[\"remote\"].getCurrentWindow().openDevTools(),\n className: \"react-error\"\n }, \"There was an unexpected Error. Click to open console for more details.\");\n return this.props.children;\n }\n\n}\nconst originalRender = ErrorBoundary.prototype.render;\nObject.defineProperty(ErrorBoundary.prototype, \"render\", {\n enumerable: false,\n configurable: false,\n set: function () {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"ErrorBoundary\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n },\n get: () => originalRender\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvZXJyb3Jib3VuZGFyeS5qc3g/ZDZkMSJdLCJuYW1lcyI6WyJFcnJvckJvdW5kYXJ5IiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3RhdGUiLCJoYXNFcnJvciIsImNvbXBvbmVudERpZENhdGNoIiwic2V0U3RhdGUiLCJyZW5kZXIiLCJyZW1vdGUiLCJnZXRDdXJyZW50V2luZG93Iiwib3BlbkRldlRvb2xzIiwiY2hpbGRyZW4iLCJvcmlnaW5hbFJlbmRlciIsInByb3RvdHlwZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsInNldCIsIkxvZ2dlciIsIndhcm4iLCJnZXQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ2UsTUFBTUEsYUFBTixTQUE0QkMsNkNBQUssQ0FBQ0MsU0FBbEMsQ0FBNEM7QUFDdkRDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2pCLFVBQU1BLEtBQU47QUFDQSxTQUFLQyxLQUFMLEdBQWE7QUFBQ0MsY0FBUSxFQUFFO0FBQVgsS0FBYjtBQUNEOztBQUVEQyxtQkFBaUIsR0FBRztBQUNsQixTQUFLQyxRQUFMLENBQWM7QUFBQ0YsY0FBUSxFQUFFO0FBQVgsS0FBZDtBQUNEOztBQUVERyxRQUFNLEdBQUc7QUFDUCxRQUFJLEtBQUtKLEtBQUwsQ0FBV0MsUUFBZixFQUF5QixvQkFBTztBQUFLLGFBQU8sRUFBRSxNQUFNSSwrQ0FBTSxDQUFDQyxnQkFBUCxHQUEwQkMsWUFBMUIsRUFBcEI7QUFBOEQsZUFBUyxFQUFDO0FBQXhFLGdGQUFQO0FBQ3pCLFdBQU8sS0FBS1IsS0FBTCxDQUFXUyxRQUFsQjtBQUNEOztBQWJzRDtBQWdCM0QsTUFBTUMsY0FBYyxHQUFHZCxhQUFhLENBQUNlLFNBQWQsQ0FBd0JOLE1BQS9DO0FBQ0FPLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQmpCLGFBQWEsQ0FBQ2UsU0FBcEMsRUFBK0MsUUFBL0MsRUFBeUQ7QUFDckRHLFlBQVUsRUFBRSxLQUR5QztBQUVyREMsY0FBWSxFQUFFLEtBRnVDO0FBR3JEQyxLQUFHLEVBQUUsWUFBVztBQUFDQyxrREFBTSxDQUFDQyxJQUFQLENBQVksZUFBWixFQUE2QixxR0FBN0I7QUFBcUksR0FIakc7QUFJckRDLEtBQUcsRUFBRSxNQUFNVDtBQUowQyxDQUF6RCIsImZpbGUiOiIuL3NyYy91aS9lcnJvcmJvdW5kYXJ5LmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3QsIExvZ2dlcn0gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IHtyZW1vdGV9IGZyb20gXCJlbGVjdHJvblwiO1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFcnJvckJvdW5kYXJ5IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgdGhpcy5zdGF0ZSA9IHtoYXNFcnJvcjogZmFsc2V9O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudERpZENhdGNoKCkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtoYXNFcnJvcjogdHJ1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgaWYgKHRoaXMuc3RhdGUuaGFzRXJyb3IpIHJldHVybiA8ZGl2IG9uQ2xpY2s9eygpID0+IHJlbW90ZS5nZXRDdXJyZW50V2luZG93KCkub3BlbkRldlRvb2xzKCl9IGNsYXNzTmFtZT1cInJlYWN0LWVycm9yXCI+VGhlcmUgd2FzIGFuIHVuZXhwZWN0ZWQgRXJyb3IuIENsaWNrIHRvIG9wZW4gY29uc29sZSBmb3IgbW9yZSBkZXRhaWxzLjwvZGl2PjsgIFxyXG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlbjsgXHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IG9yaWdpbmFsUmVuZGVyID0gRXJyb3JCb3VuZGFyeS5wcm90b3R5cGUucmVuZGVyO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoRXJyb3JCb3VuZGFyeS5wcm90b3R5cGUsIFwicmVuZGVyXCIsIHtcclxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcclxuICAgIHNldDogZnVuY3Rpb24oKSB7TG9nZ2VyLndhcm4oXCJFcnJvckJvdW5kYXJ5XCIsIFwiQWRkb24gcG9saWN5IGZvciBwbHVnaW5zICM1IGh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvd2lraS9BZGRvbi1Qb2xpY2llcyNwbHVnaW5zXCIpO30sXHJcbiAgICBnZXQ6ICgpID0+IG9yaWdpbmFsUmVuZGVyXHJcbn0pOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/errorboundary.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ErrorBoundary; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! electron */ \"electron\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_1__);\n\n\nclass ErrorBoundary extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n hasError: false\n };\n }\n\n componentDidCatch() {\n this.setState({\n hasError: true\n });\n }\n\n render() {\n if (this.state.hasError) return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n onClick: () => electron__WEBPACK_IMPORTED_MODULE_1__[\"remote\"].getCurrentWindow().openDevTools(),\n className: \"react-error\"\n }, \"There was an unexpected Error. Click to open console for more details.\");\n return this.props.children;\n }\n\n}\nconst originalRender = ErrorBoundary.prototype.render;\nObject.defineProperty(ErrorBoundary.prototype, \"render\", {\n enumerable: false,\n configurable: false,\n set: function () {\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"ErrorBoundary\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n },\n get: () => originalRender\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvZXJyb3Jib3VuZGFyeS5qc3g/ZDZkMSJdLCJuYW1lcyI6WyJFcnJvckJvdW5kYXJ5IiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3RhdGUiLCJoYXNFcnJvciIsImNvbXBvbmVudERpZENhdGNoIiwic2V0U3RhdGUiLCJyZW5kZXIiLCJyZW1vdGUiLCJnZXRDdXJyZW50V2luZG93Iiwib3BlbkRldlRvb2xzIiwiY2hpbGRyZW4iLCJvcmlnaW5hbFJlbmRlciIsInByb3RvdHlwZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsInNldCIsIkxvZ2dlciIsIndhcm4iLCJnZXQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ2UsTUFBTUEsYUFBTixTQUE0QkMseURBQUssQ0FBQ0MsU0FBbEMsQ0FBNEM7QUFDdkRDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2pCLFVBQU1BLEtBQU47QUFDQSxTQUFLQyxLQUFMLEdBQWE7QUFBQ0MsY0FBUSxFQUFFO0FBQVgsS0FBYjtBQUNEOztBQUVEQyxtQkFBaUIsR0FBRztBQUNsQixTQUFLQyxRQUFMLENBQWM7QUFBQ0YsY0FBUSxFQUFFO0FBQVgsS0FBZDtBQUNEOztBQUVERyxRQUFNLEdBQUc7QUFDUCxRQUFJLEtBQUtKLEtBQUwsQ0FBV0MsUUFBZixFQUF5QixvQkFBTztBQUFLLGFBQU8sRUFBRSxNQUFNSSwrQ0FBTSxDQUFDQyxnQkFBUCxHQUEwQkMsWUFBMUIsRUFBcEI7QUFBOEQsZUFBUyxFQUFDO0FBQXhFLGdGQUFQO0FBQ3pCLFdBQU8sS0FBS1IsS0FBTCxDQUFXUyxRQUFsQjtBQUNEOztBQWJzRDtBQWdCM0QsTUFBTUMsY0FBYyxHQUFHZCxhQUFhLENBQUNlLFNBQWQsQ0FBd0JOLE1BQS9DO0FBQ0FPLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQmpCLGFBQWEsQ0FBQ2UsU0FBcEMsRUFBK0MsUUFBL0MsRUFBeUQ7QUFDckRHLFlBQVUsRUFBRSxLQUR5QztBQUVyREMsY0FBWSxFQUFFLEtBRnVDO0FBR3JEQyxLQUFHLEVBQUUsWUFBVztBQUFDQyw4REFBTSxDQUFDQyxJQUFQLENBQVksZUFBWixFQUE2QixxR0FBN0I7QUFBcUksR0FIakc7QUFJckRDLEtBQUcsRUFBRSxNQUFNVDtBQUowQyxDQUF6RCIsImZpbGUiOiIuL3NyYy91aS9lcnJvcmJvdW5kYXJ5LmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3QsIExvZ2dlcn0gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IHtyZW1vdGV9IGZyb20gXCJlbGVjdHJvblwiO1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFcnJvckJvdW5kYXJ5IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgdGhpcy5zdGF0ZSA9IHtoYXNFcnJvcjogZmFsc2V9O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudERpZENhdGNoKCkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtoYXNFcnJvcjogdHJ1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgaWYgKHRoaXMuc3RhdGUuaGFzRXJyb3IpIHJldHVybiA8ZGl2IG9uQ2xpY2s9eygpID0+IHJlbW90ZS5nZXRDdXJyZW50V2luZG93KCkub3BlbkRldlRvb2xzKCl9IGNsYXNzTmFtZT1cInJlYWN0LWVycm9yXCI+VGhlcmUgd2FzIGFuIHVuZXhwZWN0ZWQgRXJyb3IuIENsaWNrIHRvIG9wZW4gY29uc29sZSBmb3IgbW9yZSBkZXRhaWxzLjwvZGl2PjsgIFxyXG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlbjsgXHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IG9yaWdpbmFsUmVuZGVyID0gRXJyb3JCb3VuZGFyeS5wcm90b3R5cGUucmVuZGVyO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoRXJyb3JCb3VuZGFyeS5wcm90b3R5cGUsIFwicmVuZGVyXCIsIHtcclxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcclxuICAgIHNldDogZnVuY3Rpb24oKSB7TG9nZ2VyLndhcm4oXCJFcnJvckJvdW5kYXJ5XCIsIFwiQWRkb24gcG9saWN5IGZvciBwbHVnaW5zICM1IGh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvd2lraS9BZGRvbi1Qb2xpY2llcyNwbHVnaW5zXCIpO30sXHJcbiAgICBnZXQ6ICgpID0+IG9yaWdpbmFsUmVuZGVyXHJcbn0pOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/errorboundary.jsx\n"); /***/ }), @@ -778,7 +778,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _window__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./window */ \"./src/ui/floating/window.jsx\");\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\n\nclass FloatingWindowContainer extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n windows: []\n };\n }\n\n get minY() {\n const appContainer = modules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].query(`#app-mount > div[class*=\"app-\"]`);\n if (appContainer) return appContainer.offsetTop;\n return 0;\n }\n\n render() {\n return this.state.windows.map(window => /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_window__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _extends({}, window, {\n close: this.close.bind(this, window.id),\n minY: this.minY\n }), window.children));\n }\n\n open(window) {\n this.setState({\n windows: [...this.state.windows, window]\n });\n }\n\n close(id) {\n this.setState({\n windows: this.state.windows.filter(w => {\n if (w.id == id && w.onClose) w.onClose();\n return w.id != id;\n })\n });\n }\n\n static get id() {\n return \"floating-windows\";\n }\n\n static get root() {\n if (this._root) return this._root;\n const container = document.createElement(\"div\");\n container.id = this.id;\n document.body.append(container);\n return this._root = container;\n }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FloatingWindowContainer);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvZmxvYXRpbmcvY29udGFpbmVyLmpzeD8xNTY5Il0sIm5hbWVzIjpbIkZsb2F0aW5nV2luZG93Q29udGFpbmVyIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3RhdGUiLCJ3aW5kb3dzIiwibWluWSIsImFwcENvbnRhaW5lciIsIkRPTSIsInF1ZXJ5Iiwib2Zmc2V0VG9wIiwicmVuZGVyIiwibWFwIiwid2luZG93IiwiY2xvc2UiLCJiaW5kIiwiaWQiLCJjaGlsZHJlbiIsIm9wZW4iLCJzZXRTdGF0ZSIsImZpbHRlciIsInciLCJvbkNsb3NlIiwicm9vdCIsIl9yb290IiwiY29udGFpbmVyIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiYm9keSIsImFwcGVuZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUVBOztBQUVBLE1BQU1BLHVCQUFOLFNBQXNDQyw2Q0FBSyxDQUFDQyxTQUE1QyxDQUFzRDtBQUVsREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQUNDLGFBQU8sRUFBRTtBQUFWLEtBQWI7QUFDSDs7QUFFRCxNQUFJQyxJQUFKLEdBQVc7QUFDUCxVQUFNQyxZQUFZLEdBQUdDLDJDQUFHLENBQUNDLEtBQUosQ0FBVyxpQ0FBWCxDQUFyQjtBQUNBLFFBQUlGLFlBQUosRUFBa0IsT0FBT0EsWUFBWSxDQUFDRyxTQUFwQjtBQUNsQixXQUFPLENBQVA7QUFDSDs7QUFFREMsUUFBTSxHQUFHO0FBQ0wsV0FBTyxLQUFLUCxLQUFMLENBQVdDLE9BQVgsQ0FBbUJPLEdBQW5CLENBQXVCQyxNQUFNLGlCQUNoQyw0REFBQywrQ0FBRCxlQUFvQkEsTUFBcEI7QUFBNEIsV0FBSyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0MsSUFBWCxDQUFnQixJQUFoQixFQUFzQkYsTUFBTSxDQUFDRyxFQUE3QixDQUFuQztBQUFxRSxVQUFJLEVBQUUsS0FBS1Y7QUFBaEYsUUFDU08sTUFBTSxDQUFDSSxRQURoQixDQURHLENBQVA7QUFLSDs7QUFFREMsTUFBSSxDQUFDTCxNQUFELEVBQVM7QUFDVCxTQUFLTSxRQUFMLENBQWM7QUFDVmQsYUFBTyxFQUFFLENBQUMsR0FBRyxLQUFLRCxLQUFMLENBQVdDLE9BQWYsRUFBd0JRLE1BQXhCO0FBREMsS0FBZDtBQUdIOztBQUVEQyxPQUFLLENBQUNFLEVBQUQsRUFBSztBQUNOLFNBQUtHLFFBQUwsQ0FBYztBQUNWZCxhQUFPLEVBQUUsS0FBS0QsS0FBTCxDQUFXQyxPQUFYLENBQW1CZSxNQUFuQixDQUEwQkMsQ0FBQyxJQUFJO0FBQ3BDLFlBQUlBLENBQUMsQ0FBQ0wsRUFBRixJQUFRQSxFQUFSLElBQWNLLENBQUMsQ0FBQ0MsT0FBcEIsRUFBNkJELENBQUMsQ0FBQ0MsT0FBRjtBQUM3QixlQUFPRCxDQUFDLENBQUNMLEVBQUYsSUFBUUEsRUFBZjtBQUNILE9BSFE7QUFEQyxLQUFkO0FBTUg7O0FBRUQsYUFBV0EsRUFBWCxHQUFnQjtBQUFDLFdBQU8sa0JBQVA7QUFBMkI7O0FBQzVDLGFBQVdPLElBQVgsR0FBa0I7QUFDZCxRQUFJLEtBQUtDLEtBQVQsRUFBZ0IsT0FBTyxLQUFLQSxLQUFaO0FBQ2hCLFVBQU1DLFNBQVMsR0FBR0MsUUFBUSxDQUFDQyxhQUFULENBQXVCLEtBQXZCLENBQWxCO0FBQ0FGLGFBQVMsQ0FBQ1QsRUFBVixHQUFlLEtBQUtBLEVBQXBCO0FBQ0FVLFlBQVEsQ0FBQ0UsSUFBVCxDQUFjQyxNQUFkLENBQXFCSixTQUFyQjtBQUNBLFdBQU8sS0FBS0QsS0FBTCxHQUFhQyxTQUFwQjtBQUNIOztBQTNDaUQ7O0FBOEN2QzFCLHNGQUFmIiwiZmlsZSI6Ii4vc3JjL3VpL2Zsb2F0aW5nL2NvbnRhaW5lci5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBET019IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5pbXBvcnQgRmxvYXRpbmdXaW5kb3cgZnJvbSBcIi4vd2luZG93XCI7XHJcblxyXG5jbGFzcyBGbG9hdGluZ1dpbmRvd0NvbnRhaW5lciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHt3aW5kb3dzOiBbXX07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG1pblkoKSB7XHJcbiAgICAgICAgY29uc3QgYXBwQ29udGFpbmVyID0gRE9NLnF1ZXJ5KGAjYXBwLW1vdW50ID4gZGl2W2NsYXNzKj1cImFwcC1cIl1gKTtcclxuICAgICAgICBpZiAoYXBwQ29udGFpbmVyKSByZXR1cm4gYXBwQ29udGFpbmVyLm9mZnNldFRvcDtcclxuICAgICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUud2luZG93cy5tYXAod2luZG93ID0+XHJcbiAgICAgICAgICAgIDxGbG9hdGluZ1dpbmRvdyB7Li4ud2luZG93fSBjbG9zZT17dGhpcy5jbG9zZS5iaW5kKHRoaXMsIHdpbmRvdy5pZCl9IG1pblk9e3RoaXMubWluWX0+XHJcbiAgICAgICAgICAgICAgICAgICAge3dpbmRvdy5jaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9GbG9hdGluZ1dpbmRvdz5cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW4od2luZG93KSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIHdpbmRvd3M6IFsuLi50aGlzLnN0YXRlLndpbmRvd3MsIHdpbmRvd11cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZShpZCkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICB3aW5kb3dzOiB0aGlzLnN0YXRlLndpbmRvd3MuZmlsdGVyKHcgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHcuaWQgPT0gaWQgJiYgdy5vbkNsb3NlKSB3Lm9uQ2xvc2UoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB3LmlkICE9IGlkO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQgaWQoKSB7cmV0dXJuIFwiZmxvYXRpbmctd2luZG93c1wiO31cclxuICAgIHN0YXRpYyBnZXQgcm9vdCgpIHtcclxuICAgICAgICBpZiAodGhpcy5fcm9vdCkgcmV0dXJuIHRoaXMuX3Jvb3Q7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICBjb250YWluZXIuaWQgPSB0aGlzLmlkO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKGNvbnRhaW5lcik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3QgPSBjb250YWluZXI7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEZsb2F0aW5nV2luZG93Q29udGFpbmVyOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/floating/container.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _window__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./window */ \"./src/ui/floating/window.jsx\");\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\n\nclass FloatingWindowContainer extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n windows: []\n };\n }\n\n get minY() {\n const appContainer = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].query(`#app-mount > div[class*=\"app-\"]`);\n if (appContainer) return appContainer.offsetTop;\n return 0;\n }\n\n render() {\n return this.state.windows.map(window => /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_window__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _extends({}, window, {\n close: this.close.bind(this, window.id),\n minY: this.minY\n }), window.children));\n }\n\n open(window) {\n this.setState({\n windows: [...this.state.windows, window]\n });\n }\n\n close(id) {\n this.setState({\n windows: this.state.windows.filter(w => {\n if (w.id == id && w.onClose) w.onClose();\n return w.id != id;\n })\n });\n }\n\n static get id() {\n return \"floating-windows\";\n }\n\n static get root() {\n if (this._root) return this._root;\n const container = document.createElement(\"div\");\n container.id = this.id;\n document.body.append(container);\n return this._root = container;\n }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FloatingWindowContainer);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvZmxvYXRpbmcvY29udGFpbmVyLmpzeD8xNTY5Il0sIm5hbWVzIjpbIkZsb2F0aW5nV2luZG93Q29udGFpbmVyIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3RhdGUiLCJ3aW5kb3dzIiwibWluWSIsImFwcENvbnRhaW5lciIsIkRPTSIsInF1ZXJ5Iiwib2Zmc2V0VG9wIiwicmVuZGVyIiwibWFwIiwid2luZG93IiwiY2xvc2UiLCJiaW5kIiwiaWQiLCJjaGlsZHJlbiIsIm9wZW4iLCJzZXRTdGF0ZSIsImZpbHRlciIsInciLCJvbkNsb3NlIiwicm9vdCIsIl9yb290IiwiY29udGFpbmVyIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiYm9keSIsImFwcGVuZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUVBOztBQUVBLE1BQU1BLHVCQUFOLFNBQXNDQyx5REFBSyxDQUFDQyxTQUE1QyxDQUFzRDtBQUVsREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQUNDLGFBQU8sRUFBRTtBQUFWLEtBQWI7QUFDSDs7QUFFRCxNQUFJQyxJQUFKLEdBQVc7QUFDUCxVQUFNQyxZQUFZLEdBQUdDLHVEQUFHLENBQUNDLEtBQUosQ0FBVyxpQ0FBWCxDQUFyQjtBQUNBLFFBQUlGLFlBQUosRUFBa0IsT0FBT0EsWUFBWSxDQUFDRyxTQUFwQjtBQUNsQixXQUFPLENBQVA7QUFDSDs7QUFFREMsUUFBTSxHQUFHO0FBQ0wsV0FBTyxLQUFLUCxLQUFMLENBQVdDLE9BQVgsQ0FBbUJPLEdBQW5CLENBQXVCQyxNQUFNLGlCQUNoQyx3RUFBQywrQ0FBRCxlQUFvQkEsTUFBcEI7QUFBNEIsV0FBSyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0MsSUFBWCxDQUFnQixJQUFoQixFQUFzQkYsTUFBTSxDQUFDRyxFQUE3QixDQUFuQztBQUFxRSxVQUFJLEVBQUUsS0FBS1Y7QUFBaEYsUUFDU08sTUFBTSxDQUFDSSxRQURoQixDQURHLENBQVA7QUFLSDs7QUFFREMsTUFBSSxDQUFDTCxNQUFELEVBQVM7QUFDVCxTQUFLTSxRQUFMLENBQWM7QUFDVmQsYUFBTyxFQUFFLENBQUMsR0FBRyxLQUFLRCxLQUFMLENBQVdDLE9BQWYsRUFBd0JRLE1BQXhCO0FBREMsS0FBZDtBQUdIOztBQUVEQyxPQUFLLENBQUNFLEVBQUQsRUFBSztBQUNOLFNBQUtHLFFBQUwsQ0FBYztBQUNWZCxhQUFPLEVBQUUsS0FBS0QsS0FBTCxDQUFXQyxPQUFYLENBQW1CZSxNQUFuQixDQUEwQkMsQ0FBQyxJQUFJO0FBQ3BDLFlBQUlBLENBQUMsQ0FBQ0wsRUFBRixJQUFRQSxFQUFSLElBQWNLLENBQUMsQ0FBQ0MsT0FBcEIsRUFBNkJELENBQUMsQ0FBQ0MsT0FBRjtBQUM3QixlQUFPRCxDQUFDLENBQUNMLEVBQUYsSUFBUUEsRUFBZjtBQUNILE9BSFE7QUFEQyxLQUFkO0FBTUg7O0FBRUQsYUFBV0EsRUFBWCxHQUFnQjtBQUFDLFdBQU8sa0JBQVA7QUFBMkI7O0FBQzVDLGFBQVdPLElBQVgsR0FBa0I7QUFDZCxRQUFJLEtBQUtDLEtBQVQsRUFBZ0IsT0FBTyxLQUFLQSxLQUFaO0FBQ2hCLFVBQU1DLFNBQVMsR0FBR0MsUUFBUSxDQUFDQyxhQUFULENBQXVCLEtBQXZCLENBQWxCO0FBQ0FGLGFBQVMsQ0FBQ1QsRUFBVixHQUFlLEtBQUtBLEVBQXBCO0FBQ0FVLFlBQVEsQ0FBQ0UsSUFBVCxDQUFjQyxNQUFkLENBQXFCSixTQUFyQjtBQUNBLFdBQU8sS0FBS0QsS0FBTCxHQUFhQyxTQUFwQjtBQUNIOztBQTNDaUQ7O0FBOEN2QzFCLHNGQUFmIiwiZmlsZSI6Ii4vc3JjL3VpL2Zsb2F0aW5nL2NvbnRhaW5lci5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBET019IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5pbXBvcnQgRmxvYXRpbmdXaW5kb3cgZnJvbSBcIi4vd2luZG93XCI7XHJcblxyXG5jbGFzcyBGbG9hdGluZ1dpbmRvd0NvbnRhaW5lciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHt3aW5kb3dzOiBbXX07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG1pblkoKSB7XHJcbiAgICAgICAgY29uc3QgYXBwQ29udGFpbmVyID0gRE9NLnF1ZXJ5KGAjYXBwLW1vdW50ID4gZGl2W2NsYXNzKj1cImFwcC1cIl1gKTtcclxuICAgICAgICBpZiAoYXBwQ29udGFpbmVyKSByZXR1cm4gYXBwQ29udGFpbmVyLm9mZnNldFRvcDtcclxuICAgICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUud2luZG93cy5tYXAod2luZG93ID0+XHJcbiAgICAgICAgICAgIDxGbG9hdGluZ1dpbmRvdyB7Li4ud2luZG93fSBjbG9zZT17dGhpcy5jbG9zZS5iaW5kKHRoaXMsIHdpbmRvdy5pZCl9IG1pblk9e3RoaXMubWluWX0+XHJcbiAgICAgICAgICAgICAgICAgICAge3dpbmRvdy5jaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9GbG9hdGluZ1dpbmRvdz5cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW4od2luZG93KSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIHdpbmRvd3M6IFsuLi50aGlzLnN0YXRlLndpbmRvd3MsIHdpbmRvd11cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZShpZCkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICB3aW5kb3dzOiB0aGlzLnN0YXRlLndpbmRvd3MuZmlsdGVyKHcgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHcuaWQgPT0gaWQgJiYgdy5vbkNsb3NlKSB3Lm9uQ2xvc2UoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB3LmlkICE9IGlkO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQgaWQoKSB7cmV0dXJuIFwiZmxvYXRpbmctd2luZG93c1wiO31cclxuICAgIHN0YXRpYyBnZXQgcm9vdCgpIHtcclxuICAgICAgICBpZiAodGhpcy5fcm9vdCkgcmV0dXJuIHRoaXMuX3Jvb3Q7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICBjb250YWluZXIuaWQgPSB0aGlzLmlkO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKGNvbnRhaW5lcik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3QgPSBjb250YWluZXI7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEZsb2F0aW5nV2luZG93Q29udGFpbmVyOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/floating/container.jsx\n"); /***/ }), @@ -790,7 +790,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var modu /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FloatingWindow; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _structs_screen__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../structs/screen */ \"./src/structs/screen.js\");\n/* harmony import */ var _icons_close__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/close */ \"./src/ui/icons/close.jsx\");\n/* harmony import */ var _icons_fullscreen__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/fullscreen */ \"./src/ui/icons/fullscreen.jsx\");\n/* harmony import */ var _modals__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../modals */ \"./src/ui/modals.js\");\n\n\n\n\n // const Draggable = WebpackModules.getByDisplayName(\"Draggable\");\n// {\n// \"dragAnywhere\": true,\n// \"className\": \"pictureInPictureWindow-1B5qSe\",\n// \"maxX\": 1969,\n// \"maxY\": this.maxY,\n// \"onDragStart\": \"Æ’ () {}\",\n// \"onDrag\": \"Æ’ () {}\",\n// \"onDragEnd\": \"Æ’ () {}\",\n// \"children\": \"
\",\n// \"initialX\": 0,\n// \"initialY\": 0\n// }\n\nclass FloatingWindow extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n modalOpen: false\n };\n this.offX = 0;\n this.offY = 0;\n this.maxX = this.props.maxX || _structs_screen__WEBPACK_IMPORTED_MODULE_1__[\"default\"].width;\n this.maxY = this.props.maxY || _structs_screen__WEBPACK_IMPORTED_MODULE_1__[\"default\"].height;\n this.minX = this.props.minX || 0;\n this.minY = this.props.minY || 0;\n this.titlebar = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.window = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.close = this.close.bind(this);\n this.maximize = this.maximize.bind(this);\n this.onDrag = this.onDrag.bind(this);\n this.onDragStart = this.onDragStart.bind(this);\n this.onDragStop = this.onDragStop.bind(this);\n this.onResizeStart = this.onResizeStart.bind(this);\n }\n\n componentDidMount() {\n this.window.current.addEventListener(\"mousedown\", this.onResizeStart, false);\n this.titlebar.current.addEventListener(\"mousedown\", this.onDragStart, false);\n document.addEventListener(\"mouseup\", this.onDragStop, false);\n }\n\n onResizeStart() {\n this.currentWidth = this.window.current.offsetWidth;\n this.currentHeight = this.window.current.offsetHeight;\n }\n\n onDragStop() {\n document.removeEventListener(\"mousemove\", this.onDrag, true);\n const width = this.window.current.offsetWidth;\n const height = this.window.current.offsetHeight;\n\n if (width != this.currentWidth || height != this.currentHeight) {\n if (this.props.onResize) this.props.onResize();\n const left = parseInt(this.window.current.style.left);\n const top = parseInt(this.window.current.style.top);\n if (left + width >= this.maxX) this.window.current.style.width = this.maxX - left + \"px\";\n if (top + height >= this.maxY) this.window.current.style.height = this.maxY - top + \"px\";\n }\n\n this.currentWidth = width;\n this.currentHeight = height;\n }\n\n onDragStart(e) {\n const div = this.window.current;\n this.offY = e.clientY - parseInt(div.offsetTop);\n this.offX = e.clientX - parseInt(div.offsetLeft);\n document.addEventListener(\"mousemove\", this.onDrag, true);\n }\n\n onDrag(e) {\n const div = this.window.current;\n let newTop = e.clientY - this.offY;\n if (newTop <= this.minY) newTop = this.minY;\n if (newTop + this.currentHeight >= this.maxY) newTop = this.maxY - this.currentHeight;\n let newLeft = e.clientX - this.offX;\n if (newLeft <= this.minX) newLeft = this.minX;\n if (newLeft + this.currentWidth >= this.maxX) newLeft = this.maxX - this.currentWidth;\n div.style.top = newTop + \"px\";\n div.style.left = newLeft + \"px\";\n }\n\n componentWillUnmount() {\n this.titlebar.current.removeEventListener(\"mousedown\", this.onDragStart, false);\n document.removeEventListener(\"mouseup\", this.onDragStop, false);\n }\n\n render() {\n const top = this.props.center ? _structs_screen__WEBPACK_IMPORTED_MODULE_1__[\"default\"].height / 2 - this.props.height / 2 : this.props.top;\n const left = this.props.center ? _structs_screen__WEBPACK_IMPORTED_MODULE_1__[\"default\"].width / 2 - this.props.width / 2 : this.props.left; // console.log(top, left);\n\n const className = `floating-window${` ${this.props.className}` || \"\"}${this.props.resizable ? \" resizable\" : \"\"}${this.state.modalOpen ? \" modal-open\" : \"\"}`;\n const styles = {\n height: this.props.height,\n width: this.props.width,\n left: left || 0,\n top: top || 0\n };\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: this.props.id,\n className: className,\n ref: this.window,\n style: styles\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"floating-window-titlebar\",\n ref: this.titlebar\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"title\"\n }, this.props.title), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"floating-window-buttons\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"button maximize-button\",\n onClick: this.maximize\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_fullscreen__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: \"18px\"\n })), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"button close-button\",\n onClick: this.close\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_close__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null)))), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"floating-window-content\"\n }, this.props.children));\n }\n\n maximize() {\n this.window.current.style.width = \"100%\";\n this.window.current.style.height = \"100%\";\n if (this.props.onResize) this.props.onResize();\n const width = this.window.current.offsetWidth;\n const height = this.window.current.offsetHeight;\n const left = parseInt(this.window.current.style.left);\n const top = parseInt(this.window.current.style.top);\n const right = left + width;\n const bottom = top + height; // Prevent expanding off the bottom and right and readjust position\n\n if (bottom > this.maxY) this.window.current.style.top = this.maxY - height + \"px\";\n if (right > this.maxX) this.window.current.style.left = this.maxX - width + \"px\";\n const newLeft = parseInt(this.window.current.style.left);\n const newTop = parseInt(this.window.current.style.top); // For small screens it's possible this pushes us off the other direction... we need to readjust size\n\n if (newTop < this.minY) {\n const difference = this.minY - newTop;\n this.window.current.style.top = this.minY + \"px\";\n this.window.current.style.height = height - difference + \"px\";\n }\n\n if (newLeft < this.minX) {\n const difference = this.minX - newLeft;\n this.window.current.style.left = this.minX + \"px\";\n this.window.current.style.height = width - difference + \"px\";\n }\n }\n\n async close() {\n let shouldClose = true;\n const confirmClose = typeof this.props.confirmClose == \"function\" ? this.props.confirmClose() : this.props.confirmClose;\n\n if (confirmClose) {\n this.setState({\n modalOpen: true\n });\n shouldClose = await this.confirmClose();\n this.setState({\n modalOpen: false\n });\n }\n\n if (this.props.close && shouldClose) this.props.close();\n }\n\n confirmClose() {\n return new Promise(resolve => {\n _modals__WEBPACK_IMPORTED_MODULE_4__[\"default\"].showConfirmationModal(modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Modals.confirmAction, this.props.confirmationText, {\n danger: true,\n confirmText: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Modals.close,\n onConfirm: () => {\n resolve(true);\n },\n onCancel: () => {\n resolve(false);\n }\n });\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvZmxvYXRpbmcvd2luZG93LmpzeD9jZjNkIl0sIm5hbWVzIjpbIkZsb2F0aW5nV2luZG93IiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3RhdGUiLCJtb2RhbE9wZW4iLCJvZmZYIiwib2ZmWSIsIm1heFgiLCJTY3JlZW4iLCJ3aWR0aCIsIm1heFkiLCJoZWlnaHQiLCJtaW5YIiwibWluWSIsInRpdGxlYmFyIiwiY3JlYXRlUmVmIiwid2luZG93IiwiY2xvc2UiLCJiaW5kIiwibWF4aW1pemUiLCJvbkRyYWciLCJvbkRyYWdTdGFydCIsIm9uRHJhZ1N0b3AiLCJvblJlc2l6ZVN0YXJ0IiwiY29tcG9uZW50RGlkTW91bnQiLCJjdXJyZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsImRvY3VtZW50IiwiY3VycmVudFdpZHRoIiwib2Zmc2V0V2lkdGgiLCJjdXJyZW50SGVpZ2h0Iiwib2Zmc2V0SGVpZ2h0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9uUmVzaXplIiwibGVmdCIsInBhcnNlSW50Iiwic3R5bGUiLCJ0b3AiLCJlIiwiZGl2IiwiY2xpZW50WSIsIm9mZnNldFRvcCIsImNsaWVudFgiLCJvZmZzZXRMZWZ0IiwibmV3VG9wIiwibmV3TGVmdCIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVuZGVyIiwiY2VudGVyIiwiY2xhc3NOYW1lIiwicmVzaXphYmxlIiwic3R5bGVzIiwiaWQiLCJ0aXRsZSIsImNoaWxkcmVuIiwicmlnaHQiLCJib3R0b20iLCJkaWZmZXJlbmNlIiwic2hvdWxkQ2xvc2UiLCJjb25maXJtQ2xvc2UiLCJzZXRTdGF0ZSIsIlByb21pc2UiLCJyZXNvbHZlIiwiTW9kYWxzIiwic2hvd0NvbmZpcm1hdGlvbk1vZGFsIiwiU3RyaW5ncyIsImNvbmZpcm1BY3Rpb24iLCJjb25maXJtYXRpb25UZXh0IiwiZGFuZ2VyIiwiY29uZmlybVRleHQiLCJvbkNvbmZpcm0iLCJv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QUFZLEdBQUcsT0FBTyxLQUFLekQsS0FBTCxDQUFXeUQsWUFBbEIsSUFBbUMsVUFBbkMsR0FBZ0QsS0FBS3pELEtBQUwsQ0FBV3lELFlBQVgsRUFBaEQsR0FBNEUsS0FBS3pELEtBQUwsQ0FBV3lELFlBQTVHOztBQUNBLFFBQUlBLFlBQUosRUFBa0I7QUFDZCxXQUFLQyxRQUFMLENBQWM7QUFBQ3hELGlCQUFTLEVBQUU7QUFBWixPQUFkO0FBQ0FzRCxpQkFBVyxHQUFHLE1BQU0sS0FBS0MsWUFBTCxFQUFwQjtBQUNBLFdBQUtDLFFBQUwsQ0FBYztBQUFDeEQsaUJBQVMsRUFBRTtBQUFaLE9BQWQ7QUFDSDs7QUFDRCxRQUFJLEtBQUtGLEtBQUwsQ0FBV2UsS0FBWCxJQUFvQnlDLFdBQXhCLEVBQXFDLEtBQUt4RCxLQUFMLENBQVdlLEtBQVg7QUFDeEM7O0FBRUQwQyxjQUFZLEdBQUc7QUFDWCxXQUFPLElBQUlFLE9BQUosQ0FBWUMsT0FBTyxJQUFJO0FBQzFCQyxxREFBTSxDQUFDQyxxQkFBUCxDQUE2QkMsK0NBQU8sQ0FBQ0YsTUFBUixDQUFlRyxhQUE1QyxFQUEyRCxLQUFLaEUsS0FBTCxDQUFXaUUsZ0JBQXRFLEVBQXdGO0FBQ3BGQyxjQUFNLEVBQUUsSUFENEU7QUFFcEZDLG1CQUFXLEVBQUVKLCtDQUFPLENBQUNGLE1BQVIsQ0FBZTlDLEtBRndEO0FBR3BGcUQsaUJBQVMsRUFBRSxNQUFNO0FBQUNSLGlCQUFPLENBQUMsSUFBRCxDQUFQO0FBQWUsU0FIbUQ7QUFJcEZTLGdCQUFRLEVBQUUsTUFBTTtBQUFDVCxpQkFBTyxDQUFDLEtBQUQsQ0FBUDtBQUFnQjtBQUptRCxPQUF4RjtBQU1ILEtBUE0sQ0FBUDtBQVFIOztBQTNKdUQiLCJmaWxlIjoiLi9zcmMvdWkvZmxvYXRpbmcvd2luZG93LmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3QsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5pbXBvcnQgU2NyZWVuIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL3NjcmVlblwiO1xyXG5pbXBvcnQgQ2xvc2VCdXR0b24gZnJvbSBcIi4uL2ljb25zL2Nsb3NlXCI7XHJcbmltcG9ydCBNYXhpbWl6ZUljb24gZnJvbSBcIi4uL2ljb25zL2Z1bGxzY3JlZW5cIjtcclxuaW1wb3J0IE1vZGFscyBmcm9tIFwiLi4vbW9kYWxzXCI7XHJcblxyXG4vLyBjb25zdCBEcmFnZ2FibGUgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeURpc3BsYXlOYW1lKFwiRHJhZ2dhYmxlXCIpO1xyXG4vLyB7XHJcbi8vICAgICBcImRyYWdBbnl3aGVyZVwiOiB0cnVlLFxyXG4vLyAgICAgXCJjbGFzc05hbWVcIjogXCJwaWN0dXJlSW5QaWN0dXJlV2luZG93LTFCNXFTZVwiLFxyXG4vLyAgICAgXCJtYXhYXCI6IDE5NjksXHJcbi8vICAgICBcIm1heFlcIjogdGhpcy5tYXhZLFxyXG4vLyAgICAgXCJvbkRyYWdTdGFydFwiOiBcIsaSICgpIHt9XCIsXHJcbi8vICAgICBcIm9uRHJhZ1wiOiBcIsaSICgpIHt9XCIsXHJcbi8vICAgICBcIm9uRHJhZ0VuZFwiOiBcIsaSICgpIHt9XCIsXHJcbi8vICAgICBcImNoaWxkcmVuXCI6IFwiPGRpdiAvPlwiLFxyXG4vLyAgICAgXCJpbml0aWFsWFwiOiAwLFxyXG4vLyAgICAgXCJpbml0aWFsWVwiOiAwXHJcbi8vICAgfVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmxvYXRpbmdXaW5kb3cgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG5cclxuICAgICAgICB0aGlzLnN0YXRlID0ge21vZGFsT3BlbjogZmFsc2V9O1xyXG5cclxuICAgICAgICB0aGlzLm9mZlggPSAwO1xyXG4gICAgICAgIHRoaXMub2ZmWSA9IDA7XHJcblxyXG4gICAgICAgIHRoaXMubWF4WCA9IHRoaXMucHJvcHMubWF4WCB8fCBTY3JlZW4ud2lkdGg7XHJcbiAgICAgICAgdGhpcy5tYXhZID0gdGhpcy5wcm9wcy5tYXhZIHx8IFNjcmVlbi5oZWlnaHQ7XHJcbiAgICAgICAgdGhpcy5taW5YID0gdGhpcy5wcm9wcy5taW5YIHx8IDA7XHJcbiAgICAgICAgdGhpcy5taW5ZID0gdGhpcy5wcm9wcy5taW5ZIHx8IDA7XHJcblxyXG4gICAgICAgIHRoaXMudGl0bGViYXIgPSBSZWFjdC5jcmVhdGVSZWYoKTtcclxuICAgICAgICB0aGlzLndpbmRvdyA9IFJlYWN0LmNyZWF0ZVJlZigpO1xyXG5cclxuICAgICAgICB0aGlzLmNsb3NlID0gdGhpcy5jbG9zZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMubWF4aW1pemUgPSB0aGlzLm1heGltaXplLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5vbkRyYWcgPSB0aGlzLm9uRHJhZy5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub25EcmFnU3RhcnQgPSB0aGlzLm9uRHJhZ1N0YXJ0LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5vbkRyYWdTdG9wID0gdGhpcy5vbkRyYWdTdG9wLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5vblJlc2l6ZVN0YXJ0ID0gdGhpcy5vblJlc2l6ZVN0YXJ0LmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICAgICAgdGhpcy53aW5kb3cuY3VycmVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIHRoaXMub25SZXNpemVTdGFydCwgZmFsc2UpO1xyXG4gICAgICAgIHRoaXMudGl0bGViYXIuY3VycmVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIHRoaXMub25EcmFnU3RhcnQsIGZhbHNlKTtcclxuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCB0aGlzLm9uRHJhZ1N0b3AsIGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICBvblJlc2l6ZVN0YXJ0KCkge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFdpZHRoID0gdGhpcy53aW5kb3cuY3VycmVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgICB0aGlzLmN1cnJlbnRIZWlnaHQgPSB0aGlzLndpbmRvdy5jdXJyZW50Lm9mZnNldEhlaWdodDtcclxuICAgIH1cclxuXHJcbiAgICBvbkRyYWdTdG9wKCkge1xyXG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5vbkRyYWcsIHRydWUpO1xyXG4gICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy53aW5kb3cuY3VycmVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLndpbmRvdy5jdXJyZW50Lm9mZnNldEhlaWdodDtcclxuICAgICAgICBpZiAod2lkdGggIT0gdGhpcy5jdXJyZW50V2lkdGggfHwgaGVpZ2h0ICE9IHRoaXMuY3VycmVudEhlaWdodCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJlc2l6ZSkgdGhpcy5wcm9wcy5vblJlc2l6ZSgpO1xyXG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gcGFyc2VJbnQodGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS5sZWZ0KTtcclxuICAgICAgICAgICAgY29uc3QgdG9wID0gcGFyc2VJbnQodGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS50b3ApO1xyXG4gICAgICAgICAgICBpZiAobGVmdCArIHdpZHRoID49IHRoaXMubWF4WCkgdGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS53aWR0aCA9ICh0aGlzLm1heFggLSBsZWZ0KSArIFwicHhcIjtcclxuICAgICAgICAgICAgaWYgKHRvcCArIGhlaWdodCA+PSB0aGlzLm1heFkpIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUuaGVpZ2h0ID0gKHRoaXMubWF4WSAtIHRvcCkgKyBcInB4XCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY3VycmVudFdpZHRoID0gd2lkdGg7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50SGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIG9uRHJhZ1N0YXJ0KGUpIHtcclxuICAgICAgICBjb25zdCBkaXYgPSB0aGlzLndpbmRvdy5jdXJyZW50O1xyXG4gICAgICAgIHRoaXMub2ZmWSA9IGUuY2xpZW50WSAtIHBhcnNlSW50KGRpdi5vZmZzZXRUb3ApO1xyXG4gICAgICAgIHRoaXMub2ZmWCA9IGUuY2xpZW50WCAtIHBhcnNlSW50KGRpdi5vZmZzZXRMZWZ0KTtcclxuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMub25EcmFnLCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkRyYWcoZSkge1xyXG4gICAgICAgIGNvbnN0IGRpdiA9IHRoaXMud2luZG93LmN1cnJlbnQ7XHJcbiAgICAgICAgbGV0IG5ld1RvcCA9IChlLmNsaWVudFkgLSB0aGlzLm9mZlkpO1xyXG4gICAgICAgIGlmIChuZXdUb3AgPD0gdGhpcy5taW5ZKSBuZXdUb3AgPSB0aGlzLm1pblk7XHJcbiAgICAgICAgaWYgKG5ld1RvcCArIHRoaXMuY3VycmVudEhlaWdodCA+PSB0aGlzLm1heFkpIG5ld1RvcCA9IHRoaXMubWF4WSAtIHRoaXMuY3VycmVudEhlaWdodDtcclxuXHJcbiAgICAgICAgbGV0IG5ld0xlZnQgPSAoZS5jbGllbnRYIC0gdGhpcy5vZmZYKTtcclxuICAgICAgICBpZiAobmV3TGVmdCA8PSB0aGlzLm1pblgpIG5ld0xlZnQgPSB0aGlzLm1pblg7XHJcbiAgICAgICAgaWYgKG5ld0xlZnQgKyB0aGlzLmN1cnJlbnRXaWR0aCA+PSB0aGlzLm1heFgpIG5ld0xlZnQgPSB0aGlzLm1heFggLSB0aGlzLmN1cnJlbnRXaWR0aDtcclxuXHJcbiAgICAgICAgZGl2LnN0eWxlLnRvcCA9IG5ld1RvcCArIFwicHhcIjtcclxuICAgICAgICBkaXYuc3R5bGUubGVmdCA9IG5ld0xlZnQgKyBcInB4XCI7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICAgICAgdGhpcy50aXRsZWJhci5jdXJyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgdGhpcy5vbkRyYWdTdGFydCwgZmFsc2UpO1xyXG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMub25EcmFnU3RvcCwgZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCB0b3AgPSB0aGlzLnByb3BzLmNlbnRlciA/IChTY3JlZW4uaGVpZ2h0IC8gMikgLSAodGhpcy5wcm9wcy5oZWlnaHQgLyAyKSA6IHRoaXMucHJvcHMudG9wO1xyXG4gICAgICAgIGNvbnN0IGxlZnQgPSB0aGlzLnByb3BzLmNlbnRlciA/IChTY3JlZW4ud2lkdGggLyAyKSAtICh0aGlzLnByb3BzLndpZHRoIC8gMikgOiB0aGlzLnByb3BzLmxlZnQgO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHRvcCwgbGVmdCk7XHJcbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gYGZsb2F0aW5nLXdpbmRvdyR7YCAke3RoaXMucHJvcHMuY2xhc3NOYW1lfWAgfHwgXCJcIn0ke3RoaXMucHJvcHMucmVzaXphYmxlID8gXCIgcmVzaXphYmxlXCIgOiBcIlwifSR7dGhpcy5zdGF0ZS5tb2RhbE9wZW4gPyBcIiBtb2RhbC1vcGVuXCIgOiBcIlwifWA7XHJcbiAgICAgICAgY29uc3Qgc3R5bGVzID0ge2hlaWdodDogdGhpcy5wcm9wcy5oZWlnaHQsIHdpZHRoOiB0aGlzLnByb3BzLndpZHRoLCBsZWZ0OiBsZWZ0IHx8IDAsIHRvcDogdG9wIHx8IDB9O1xyXG4gICAgICAgIHJldHVybiA8ZGl2IGlkPXt0aGlzLnByb3BzLmlkfSBjbGFzc05hbWU9e2NsYXNzTmFtZX0gcmVmPXt0aGlzLndpbmRvd30gc3R5bGU9e3N0eWxlc30+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbG9hdGluZy13aW5kb3ctdGl0bGViYXJcIiByZWY9e3RoaXMudGl0bGViYXJ9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0aXRsZVwiPnt0aGlzLnByb3BzLnRpdGxlfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbG9hdGluZy13aW5kb3ctYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJidXR0b24gbWF4aW1pemUtYnV0dG9uXCIgb25DbGljaz17dGhpcy5tYXhpbWl6ZX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE1heGltaXplSWNvbiBzaXplPVwiMThweFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYnV0dG9uIGNsb3NlLWJ1dHRvblwiIG9uQ2xpY2s9e3RoaXMuY2xvc2V9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDbG9zZUJ1dHRvbiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxvYXRpbmctd2luZG93LWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuY2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcblxyXG4gICAgbWF4aW1pemUoKSB7XHJcbiAgICAgICAgdGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS53aWR0aCA9IFwiMTAwJVwiO1xyXG4gICAgICAgIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUuaGVpZ2h0ID0gXCIxMDAlXCI7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25SZXNpemUpIHRoaXMucHJvcHMub25SZXNpemUoKTtcclxuXHJcbiAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLndpbmRvdy5jdXJyZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMud2luZG93LmN1cnJlbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgICAgIGNvbnN0IGxlZnQgPSBwYXJzZUludCh0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLmxlZnQpO1xyXG4gICAgICAgIGNvbnN0IHRvcCA9IHBhcnNlSW50KHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUudG9wKTtcclxuXHJcbiAgICAgICAgY29uc3QgcmlnaHQgPSBsZWZ0ICsgd2lkdGg7XHJcbiAgICAgICAgY29uc3QgYm90dG9tID0gdG9wICsgaGVpZ2h0O1xyXG5cclxuICAgICAgICAvLyBQcmV2ZW50IGV4cGFuZGluZyBvZmYgdGhlIGJvdHRvbSBhbmQgcmlnaHQgYW5kIHJlYWRqdXN0IHBvc2l0aW9uXHJcbiAgICAgICAgaWYgKGJvdHRvbSA+IHRoaXMubWF4WSkgdGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS50b3AgPSAodGhpcy5tYXhZIC0gaGVpZ2h0KSArIFwicHhcIjtcclxuICAgICAgICBpZiAocmlnaHQgPiB0aGlzLm1heFgpIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUubGVmdCA9ICh0aGlzLm1heFggLSB3aWR0aCkgKyBcInB4XCI7XHJcblxyXG4gICAgICAgIGNvbnN0IG5ld0xlZnQgPSBwYXJzZUludCh0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLmxlZnQpO1xyXG4gICAgICAgIGNvbnN0IG5ld1RvcCA9IHBhcnNlSW50KHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUudG9wKTtcclxuXHJcbiAgICAgICAgLy8gRm9yIHNtYWxsIHNjcmVlbnMgaXQncyBwb3NzaWJsZSB0aGlzIHB1c2hlcyB1cyBvZmYgdGhlIG90aGVyIGRpcmVjdGlvbi4uLiB3ZSBuZWVkIHRvIHJlYWRqdXN0IHNpemVcclxuICAgICAgICBpZiAobmV3VG9wIDwgdGhpcy5taW5ZKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpZmZlcmVuY2UgPSB0aGlzLm1pblkgLSBuZXdUb3A7XHJcbiAgICAgICAgICAgIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUudG9wID0gdGhpcy5taW5ZICsgXCJweFwiO1xyXG4gICAgICAgICAgICB0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLmhlaWdodCA9IChoZWlnaHQgLSBkaWZmZXJlbmNlKSArIFwicHhcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5ld0xlZnQgPCB0aGlzLm1pblgpIHtcclxuICAgICAgICAgICAgY29uc3QgZGlmZmVyZW5jZSA9IHRoaXMubWluWCAtIG5ld0xlZnQ7XHJcbiAgICAgICAgICAgIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUubGVmdCA9IHRoaXMubWluWCArIFwicHhcIjtcclxuICAgICAgICAgICAgdGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS5oZWlnaHQgPSAod2lkdGggLSBkaWZmZXJlbmNlKSArIFwicHhcIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2xvc2UoKSB7XHJcbiAgICAgICAgbGV0IHNob3VsZENsb3NlID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBjb25maXJtQ2xvc2UgPSB0eXBlb2YodGhpcy5wcm9wcy5jb25maXJtQ2xvc2UpID09IFwiZnVuY3Rpb25cIiA/IHRoaXMucHJvcHMuY29uZmlybUNsb3NlKCkgOiB0aGlzLnByb3BzLmNvbmZpcm1DbG9zZTtcclxuICAgICAgICBpZiAoY29uZmlybUNsb3NlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe21vZGFsT3BlbjogdHJ1ZX0pO1xyXG4gICAgICAgICAgICBzaG91bGRDbG9zZSA9IGF3YWl0IHRoaXMuY29uZmlybUNsb3NlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe21vZGFsT3BlbjogZmFsc2V9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuY2xvc2UgJiYgc2hvdWxkQ2xvc2UpIHRoaXMucHJvcHMuY2xvc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25maXJtQ2xvc2UoKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICBNb2RhbHMuc2hvd0NvbmZpcm1hdGlvbk1vZGFsKFN0cmluZ3MuTW9kYWxzLmNvbmZpcm1BY3Rpb24sIHRoaXMucHJvcHMuY29uZmlybWF0aW9uVGV4dCwge1xyXG4gICAgICAgICAgICAgICAgZGFuZ2VyOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgY29uZmlybVRleHQ6IFN0cmluZ3MuTW9kYWxzLmNsb3NlLFxyXG4gICAgICAgICAgICAgICAgb25Db25maXJtOiAoKSA9PiB7cmVzb2x2ZSh0cnVlKTt9LFxyXG4gICAgICAgICAgICAgICAgb25DYW5jZWw6ICgpID0+IHtyZXNvbHZlKGZhbHNlKTt9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/floating/window.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FloatingWindow; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _structs_screen__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../structs/screen */ \"./src/structs/screen.js\");\n/* harmony import */ var _icons_close__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/close */ \"./src/ui/icons/close.jsx\");\n/* harmony import */ var _icons_fullscreen__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/fullscreen */ \"./src/ui/icons/fullscreen.jsx\");\n/* harmony import */ var _modals__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../modals */ \"./src/ui/modals.js\");\n\n\n\n\n // const Draggable = WebpackModules.getByDisplayName(\"Draggable\");\n// {\n// \"dragAnywhere\": true,\n// \"className\": \"pictureInPictureWindow-1B5qSe\",\n// \"maxX\": 1969,\n// \"maxY\": this.maxY,\n// \"onDragStart\": \"Æ’ () {}\",\n// \"onDrag\": \"Æ’ () {}\",\n// \"onDragEnd\": \"Æ’ () {}\",\n// \"children\": \"
\",\n// \"initialX\": 0,\n// \"initialY\": 0\n// }\n\nclass FloatingWindow extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n modalOpen: false\n };\n this.offX = 0;\n this.offY = 0;\n this.maxX = this.props.maxX || _structs_screen__WEBPACK_IMPORTED_MODULE_1__[\"default\"].width;\n this.maxY = this.props.maxY || _structs_screen__WEBPACK_IMPORTED_MODULE_1__[\"default\"].height;\n this.minX = this.props.minX || 0;\n this.minY = this.props.minY || 0;\n this.titlebar = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.window = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.close = this.close.bind(this);\n this.maximize = this.maximize.bind(this);\n this.onDrag = this.onDrag.bind(this);\n this.onDragStart = this.onDragStart.bind(this);\n this.onDragStop = this.onDragStop.bind(this);\n this.onResizeStart = this.onResizeStart.bind(this);\n }\n\n componentDidMount() {\n this.window.current.addEventListener(\"mousedown\", this.onResizeStart, false);\n this.titlebar.current.addEventListener(\"mousedown\", this.onDragStart, false);\n document.addEventListener(\"mouseup\", this.onDragStop, false);\n }\n\n onResizeStart() {\n this.currentWidth = this.window.current.offsetWidth;\n this.currentHeight = this.window.current.offsetHeight;\n }\n\n onDragStop() {\n document.removeEventListener(\"mousemove\", this.onDrag, true);\n const width = this.window.current.offsetWidth;\n const height = this.window.current.offsetHeight;\n\n if (width != this.currentWidth || height != this.currentHeight) {\n if (this.props.onResize) this.props.onResize();\n const left = parseInt(this.window.current.style.left);\n const top = parseInt(this.window.current.style.top);\n if (left + width >= this.maxX) this.window.current.style.width = this.maxX - left + \"px\";\n if (top + height >= this.maxY) this.window.current.style.height = this.maxY - top + \"px\";\n }\n\n this.currentWidth = width;\n this.currentHeight = height;\n }\n\n onDragStart(e) {\n const div = this.window.current;\n this.offY = e.clientY - parseInt(div.offsetTop);\n this.offX = e.clientX - parseInt(div.offsetLeft);\n document.addEventListener(\"mousemove\", this.onDrag, true);\n }\n\n onDrag(e) {\n const div = this.window.current;\n let newTop = e.clientY - this.offY;\n if (newTop <= this.minY) newTop = this.minY;\n if (newTop + this.currentHeight >= this.maxY) newTop = this.maxY - this.currentHeight;\n let newLeft = e.clientX - this.offX;\n if (newLeft <= this.minX) newLeft = this.minX;\n if (newLeft + this.currentWidth >= this.maxX) newLeft = this.maxX - this.currentWidth;\n div.style.top = newTop + \"px\";\n div.style.left = newLeft + \"px\";\n }\n\n componentWillUnmount() {\n this.titlebar.current.removeEventListener(\"mousedown\", this.onDragStart, false);\n document.removeEventListener(\"mouseup\", this.onDragStop, false);\n }\n\n render() {\n const top = this.props.center ? _structs_screen__WEBPACK_IMPORTED_MODULE_1__[\"default\"].height / 2 - this.props.height / 2 : this.props.top;\n const left = this.props.center ? _structs_screen__WEBPACK_IMPORTED_MODULE_1__[\"default\"].width / 2 - this.props.width / 2 : this.props.left; // console.log(top, left);\n\n const className = `floating-window${` ${this.props.className}` || \"\"}${this.props.resizable ? \" resizable\" : \"\"}${this.state.modalOpen ? \" modal-open\" : \"\"}`;\n const styles = {\n height: this.props.height,\n width: this.props.width,\n left: left || 0,\n top: top || 0\n };\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: this.props.id,\n className: className,\n ref: this.window,\n style: styles\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"floating-window-titlebar\",\n ref: this.titlebar\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"title\"\n }, this.props.title), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"floating-window-buttons\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"button maximize-button\",\n onClick: this.maximize\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_fullscreen__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: \"18px\"\n })), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"button close-button\",\n onClick: this.close\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_close__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null)))), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"floating-window-content\"\n }, this.props.children));\n }\n\n maximize() {\n this.window.current.style.width = \"100%\";\n this.window.current.style.height = \"100%\";\n if (this.props.onResize) this.props.onResize();\n const width = this.window.current.offsetWidth;\n const height = this.window.current.offsetHeight;\n const left = parseInt(this.window.current.style.left);\n const top = parseInt(this.window.current.style.top);\n const right = left + width;\n const bottom = top + height; // Prevent expanding off the bottom and right and readjust position\n\n if (bottom > this.maxY) this.window.current.style.top = this.maxY - height + \"px\";\n if (right > this.maxX) this.window.current.style.left = this.maxX - width + \"px\";\n const newLeft = parseInt(this.window.current.style.left);\n const newTop = parseInt(this.window.current.style.top); // For small screens it's possible this pushes us off the other direction... we need to readjust size\n\n if (newTop < this.minY) {\n const difference = this.minY - newTop;\n this.window.current.style.top = this.minY + \"px\";\n this.window.current.style.height = height - difference + \"px\";\n }\n\n if (newLeft < this.minX) {\n const difference = this.minX - newLeft;\n this.window.current.style.left = this.minX + \"px\";\n this.window.current.style.height = width - difference + \"px\";\n }\n }\n\n async close() {\n let shouldClose = true;\n const confirmClose = typeof this.props.confirmClose == \"function\" ? this.props.confirmClose() : this.props.confirmClose;\n\n if (confirmClose) {\n this.setState({\n modalOpen: true\n });\n shouldClose = await this.confirmClose();\n this.setState({\n modalOpen: false\n });\n }\n\n if (this.props.close && shouldClose) this.props.close();\n }\n\n confirmClose() {\n return new Promise(resolve => {\n _modals__WEBPACK_IMPORTED_MODULE_4__[\"default\"].showConfirmationModal(_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Modals.confirmAction, this.props.confirmationText, {\n danger: true,\n confirmText: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Modals.close,\n onConfirm: () => {\n resolve(true);\n },\n onCancel: () => {\n resolve(false);\n }\n });\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvZmxvYXRpbmcvd2luZG93LmpzeD9jZjNkIl0sIm5hbWVzIjpbIkZsb2F0aW5nV2luZG93IiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3RhdGUiLCJtb2RhbE9wZW4iLCJvZmZYIiwib2ZmWSIsIm1heFgiLCJTY3JlZW4iLCJ3aWR0aCIsIm1heFkiLCJoZWlnaHQiLCJtaW5YIiwibWluWSIsInRpdGxlYmFyIiwiY3JlYXRlUmVmIiwid2luZG93IiwiY2xvc2UiLCJiaW5kIiwibWF4aW1pemUiLCJvbkRyYWciLCJvbkRyYWdTdGFydCIsIm9uRHJhZ1N0b3AiLCJvblJlc2l6ZVN0YXJ0IiwiY29tcG9uZW50RGlkTW91bnQiLCJjdXJyZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsImRvY3VtZW50IiwiY3VycmVudFdpZHRoIiwib2Zmc2V0V2lkdGgiLCJjdXJyZW50SGVpZ2h0Iiwib2Zmc2V0SGVpZ2h0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9uUmVzaXplIiwibGVmdCIsInBhcnNlSW50Iiwic3R5bGUiLCJ0b3AiLCJlIiwiZGl2IiwiY2xpZW50WSIsIm9mZnNldFRvcCIsImNsaWVudFgiLCJvZmZzZXRMZWZ0IiwibmV3VG9wIiwibmV3TGVmdCIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVuZGVyIiwiY2VudGVyIiwiY2xhc3NOYW1lIiwicmVzaXphYmxlIiwic3R5bGVzIiwiaWQiLCJ0aXRsZSIsImNoaWxkcmVuIiwicmlnaHQiLCJib3R0b20iLCJkaWZmZXJlbmNlIiwic2hvdWxkQ2xvc2UiLCJjb25maXJtQ2xvc2UiLCJzZXRTdGF0ZSIsIlByb21pc2UiLCJyZXNvbHZlIiwiTW9kYWxzIiwic2hvd0NvbmZpcm1hdGlvbk1vZGFsIiwiU3RyaW5ncyIsImNvbmZpcm1BY3Rpb24iLCJjb25maXJtYXRpb25UZXh0IiwiZGFuZ2VyIiwiY29uZmlybVRleHQiLCJvbkNvbmZpcm0iLCJvbkNhbmNlbCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtDQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlLE1BQU1BLGNBQU4sU0FBNkJDLHlEQUFLLENBQUNDLFNBQW5DLENBQTZDO0FBRXhEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFFQSxTQUFLQyxLQUFMLEdBQWE7QUFBQ0MsZUFBUyxFQUFFO0FBQVosS0FBYjtBQUVBLFNBQUtDLElBQUwsR0FBWSxDQUFaO0FBQ0EsU0FBS0MsSUFBTCxHQUFZLENBQVo7QUFFQSxTQUFLQyxJQUFMLEdBQVksS0FBS0wsS0FBTCxDQUFXSyxJQUFYLElBQW1CQyx1REFBTSxDQUFDQyxLQUF0QztBQUNBLFNBQUtDLElBQUwsR0FBWSxLQUFLUixLQUFMLENBQVdRLElBQVgsSUFBbUJGLHVEQUFNLENBQUNHLE1BQXRDO0FBQ0EsU0FBS0MsSUFBTCxHQUFZLEtBQUtWLEtBQUwsQ0FBV1UsSUFBWCxJQUFtQixDQUEvQjtBQUNBLFNBQUtDLElBQUwsR0FBWSxLQUFLWCxLQUFMLENBQVdXLElBQVgsSUFBbUIsQ0FBL0I7QUFFQSxTQUFLQyxRQUFMLEdBQWdCZix5REFBSyxDQUFDZ0IsU0FBTixFQUFoQjtBQUNBLFNBQUtDLE1BQUwsR0FBY2pCLHlEQUFLLENBQUNnQixTQUFOLEVBQWQ7QUFFQSxTQUFLRSxLQUFMLEdBQWEsS0FBS0EsS0FBTCxDQUFXQyxJQUFYLENBQWdCLElBQWhCLENBQWI7QUFDQSxTQUFLQyxRQUFMLEdBQWdCLEtBQUtBLFFBQUwsQ0FBY0QsSUFBZCxDQUFtQixJQUFuQixDQUFoQjtBQUNBLFNBQUtFLE1BQUwsR0FBYyxLQUFLQSxNQUFMLENBQVlGLElBQVosQ0FBaUIsSUFBakIsQ0FBZDtBQUNBLFNBQUtHLFdBQUwsR0FBbUIsS0FBS0EsV0FBTCxDQUFpQkgsSUFBakIsQ0FBc0IsSUFBdEIsQ0FBbkI7QUFDQSxTQUFLSSxVQUFMLEdBQWtCLEtBQUtBLFVBQUwsQ0FBZ0JKLElBQWhCLENBQXFCLElBQXJCLENBQWxCO0FBQ0EsU0FBS0ssYUFBTCxHQUFxQixLQUFLQSxhQUFMLENBQW1CTCxJQUFuQixDQUF3QixJQUF4QixDQUFyQjtBQUNIOztBQUVETSxtQkFBaUIsR0FBRztBQUNoQixTQUFLUixNQUFMLENBQVlTLE9BQVosQ0FBb0JDLGdCQUFwQixDQUFxQyxXQUFyQyxFQUFrRCxLQUFLSCxhQUF2RCxFQUFzRSxLQUF0RTtBQUNBLFNBQUtULFFBQUwsQ0FBY1csT0FBZCxDQUFzQkMsZ0JBQXRCLENBQXVDLFdBQXZDLEVBQW9ELEtBQUtMLFdBQXpELEVBQXNFLEtBQXRFO0FBQ0FNLFlBQVEsQ0FBQ0QsZ0JBQVQsQ0FBMEIsU0FBMUIsRUFBcUMsS0FBS0osVUFBMUMsRUFBc0QsS0FBdEQ7QUFDSDs7QUFFREMsZUFBYSxHQUFHO0FBQ1osU0FBS0ssWUFBTCxHQUFvQixLQUFLWixNQUFMLENBQVlTLE9BQVosQ0FBb0JJLFdBQXhDO0FBQ0EsU0FBS0MsYUFBTCxHQUFxQixLQUFLZCxNQUFMLENBQVlTLE9BQVosQ0FBb0JNLFlBQXpDO0FBQ0g7O0FBRURULFlBQVUsR0FBRztBQUNUSyxZQUFRLENBQUNLLG1CQUFULENBQTZCLFdBQTdCLEVBQTBDLEtBQUtaLE1BQS9DLEVBQXVELElBQXZEO0FBQ0EsVUFBTVgsS0FBSyxHQUFHLEtBQUtPLE1BQUwsQ0FBWVMsT0FBWixDQUFvQkksV0FBbEM7QUFDQSxVQUFNbEIsTUFBTSxHQUFHLEtBQUtLLE1BQUwsQ0FBWVMsT0FBWixDQUFvQk0sWUFBbkM7O0FBQ0EsUUFBSXRCLEtBQUssSUFBSSxLQUFLbUIsWUFBZCxJQUE4QmpCLE1BQU0sSUFBSSxLQUFLbUIsYUFBakQsRUFBZ0U7QUFDNUQsVUFBSSxLQUFLNUIsS0FBTCxDQUFXK0IsUUFBZixFQUF5QixLQUFLL0IsS0FBTCxDQUFXK0IsUUFBWDtBQUN6QixZQUFNQyxJQUFJLEdBQUdDLFFBQVEsQ0FBQyxLQUFLbkIsTUFBTCxDQUFZUyxPQUFaLENBQW9CVyxLQUFwQixDQUEwQkYsSUFBM0IsQ0FBckI7QUFDQSxZQUFNRyxHQUFHLEdBQUdGLFFBQVEsQ0FBQyxLQUFLbkIsTUFBTCxDQUFZUyxPQUFaLENBQW9CVyxLQUFwQixDQUEwQkMsR0FBM0IsQ0FBcEI7QUFDQSxVQUFJSCxJQUFJLEdBQUd6QixLQUFQLElBQWdCLEtBQUtGLElBQXpCLEVBQStCLEtBQUtTLE1BQUwsQ0FBWVMsT0FBWixDQUFvQlcsS0FBcEIsQ0FBMEIzQixLQUExQixHQUFtQyxLQUFLRixJQUFMLEdBQVkyQixJQUFiLEdBQXFCLElBQXZEO0FBQy9CLFVBQUlHLEdBQUcsR0FBRzFCLE1BQU4sSUFBZ0IsS0FBS0QsSUFBekIsRUFBK0IsS0FBS00sTUFBTCxDQUFZUyxPQUFaLENBQW9CVyxLQUFwQixDQUEwQnpCLE1BQTFCLEdBQW9DLEtBQUtELElBQUwsR0FBWTJCLEdBQWIsR0FBb0IsSUFBdkQ7QUFDbEM7O0FBQ0QsU0FBS1QsWUFBTCxHQUFvQm5CLEtBQXBCO0FBQ0EsU0FBS3FCLGFBQUwsR0FBcUJuQixNQUFyQjtBQUNIOztBQUVEVSxhQUFXLENBQUNpQixDQUFELEVBQUk7QUFDWCxVQUFNQyxHQUFHLEdBQUcsS0FBS3ZCLE1BQUwsQ0FBWVMsT0FBeEI7QUFDQSxTQUFLbkIsSUFBTCxHQUFZZ0MsQ0FBQyxDQUFDRSxPQUFGLEdBQVlMLFFBQVEsQ0FBQ0ksR0FBRyxDQUFDRSxTQUFMLENBQWhDO0FBQ0EsU0FBS3BDLElBQUwsR0FBWWlDLENBQUMsQ0FBQ0ksT0FBRixHQUFZUCxRQUFRLENBQUNJLEdBQUcsQ0FBQ0ksVUFBTCxDQUFoQztBQUNBaEIsWUFBUSxDQUFDRCxnQkFBVCxDQUEwQixXQUExQixFQUF1QyxLQUFLTixNQUE1QyxFQUFvRCxJQUFwRDtBQUNIOztBQUVEQSxRQUFNLENBQUNrQixDQUFELEVBQUk7QUFDTixVQUFNQyxHQUFHLEdBQUcsS0FBS3ZCLE1BQUwsQ0FBWVMsT0FBeEI7QUFDQSxRQUFJbUIsTUFBTSxHQUFJTixDQUFDLENBQUNFLE9BQUYsR0FBWSxLQUFLbEMsSUFBL0I7QUFDQSxRQUFJc0MsTUFBTSxJQUFJLEtBQUsvQixJQUFuQixFQUF5QitCLE1BQU0sR0FBRyxLQUFLL0IsSUFBZDtBQUN6QixRQUFJK0IsTUFBTSxHQUFHLEtBQUtkLGFBQWQsSUFBK0IsS0FBS3BCLElBQXhDLEVBQThDa0MsTUFBTSxHQUFHLEtBQUtsQyxJQUFMLEdBQVksS0FBS29CLGFBQTFCO0FBRTlDLFFBQUllLE9BQU8sR0FBSVAsQ0FBQyxDQUFDSSxPQUFGLEdBQVksS0FBS3JDLElBQWhDO0FBQ0EsUUFBSXdDLE9BQU8sSUFBSSxLQUFLakMsSUFBcEIsRUFBMEJpQyxPQUFPLEdBQUcsS0FBS2pDLElBQWY7QUFDMUIsUUFBSWlDLE9BQU8sR0FBRyxLQUFLakIsWUFBZixJQUErQixLQUFLckIsSUFBeEMsRUFBOENzQyxPQUFPLEdBQUcsS0FBS3RDLElBQUwsR0FBWSxLQUFLcUIsWUFBM0I7QUFFOUNXLE9BQUcsQ0FBQ0gsS0FBSixDQUFVQyxHQUFWLEdBQWdCTyxNQUFNLEdBQUcsSUFBekI7QUFDQUwsT0FBRyxDQUFDSCxLQUFKLENBQVVGLElBQVYsR0FBaUJXLE9BQU8sR0FBRyxJQUEzQjtBQUNIOztBQUVEQyxzQkFBb0IsR0FBRztBQUNuQixTQUFLaEMsUUFBTCxDQUFjVyxPQUFkLENBQXNCTyxtQkFBdEIsQ0FBMEMsV0FBMUMsRUFBdUQsS0FBS1gsV0FBNUQsRUFBeUUsS0FBekU7QUFDQU0sWUFBUSxDQUFDSyxtQkFBVCxDQUE2QixTQUE3QixFQUF3QyxLQUFLVixVQUE3QyxFQUF5RCxLQUF6RDtBQUNIOztBQUVEeUIsUUFBTSxHQUFHO0FBQ0wsVUFBTVYsR0FBRyxHQUFHLEtBQUtuQyxLQUFMLENBQVc4QyxNQUFYLEdBQXFCeEMsdURBQU0sQ0FBQ0csTUFBUCxHQUFnQixDQUFqQixHQUF1QixLQUFLVCxLQUFMLENBQVdTLE1BQVgsR0FBb0IsQ0FBL0QsR0FBb0UsS0FBS1QsS0FBTCxDQUFXbUMsR0FBM0Y7QUFDQSxVQUFNSCxJQUFJLEdBQUcsS0FBS2hDLEtBQUwsQ0FBVzhDLE1BQVgsR0FBcUJ4Qyx1REFBTSxDQUFDQyxLQUFQLEdBQWUsQ0FBaEIsR0FBc0IsS0FBS1AsS0FBTCxDQUFXTyxLQUFYLEdBQW1CLENBQTdELEdBQWtFLEtBQUtQLEtBQUwsQ0FBV2dDLElBQTFGLENBRkssQ0FHTDs7QUFDQSxVQUFNZSxTQUFTLEdBQUksa0JBQWtCLElBQUcsS0FBSy9DLEtBQUwsQ0FBVytDLFNBQVUsRUFBekIsSUFBOEIsRUFBRyxHQUFFLEtBQUsvQyxLQUFMLENBQVdnRCxTQUFYLEdBQXVCLFlBQXZCLEdBQXNDLEVBQUcsR0FBRSxLQUFLL0MsS0FBTCxDQUFXQyxTQUFYLEdBQXVCLGFBQXZCLEdBQXVDLEVBQUcsRUFBNUo7QUFDQSxVQUFNK0MsTUFBTSxHQUFHO0FBQUN4QyxZQUFNLEVBQUUsS0FBS1QsS0FBTCxDQUFXUyxNQUFwQjtBQUE0QkYsV0FBSyxFQUFFLEtBQUtQLEtBQUwsQ0FBV08sS0FBOUM7QUFBcUR5QixVQUFJLEVBQUVBLElBQUksSUFBSSxDQUFuRTtBQUFzRUcsU0FBRyxFQUFFQSxHQUFHLElBQUk7QUFBbEYsS0FBZjtBQUNBLHdCQUFPO0FBQUssUUFBRSxFQUFFLEtBQUtuQyxLQUFMLENBQVdrRCxFQUFwQjtBQUF3QixlQUFTLEVBQUVILFNBQW5DO0FBQThDLFNBQUcsRUFBRSxLQUFLakMsTUFBeEQ7QUFBZ0UsV0FBSyxFQUFFbUM7QUFBdkUsb0JBQ0s7QUFBSyxlQUFTLEVBQUMsMEJBQWY7QUFBMEMsU0FBRyxFQUFFLEtBQUtyQztBQUFwRCxvQkFDSTtBQUFNLGVBQVMsRUFBQztBQUFoQixPQUF5QixLQUFLWixLQUFMLENBQVdtRCxLQUFwQyxDQURKLGVBRUk7QUFBSyxlQUFTLEVBQUM7QUFBZixvQkFDSTtBQUFLLGVBQVMsRUFBQyx3QkFBZjtBQUF3QyxhQUFPLEVBQUUsS0FBS2xDO0FBQXRELG9CQUNJLHdFQUFDLHlEQUFEO0FBQWMsVUFBSSxFQUFDO0FBQW5CLE1BREosQ0FESixlQUlJO0FBQUssZUFBUyxFQUFDLHFCQUFmO0FBQXFDLGFBQU8sRUFBRSxLQUFLRjtBQUFuRCxvQkFDSSx3RUFBQyxvREFBRCxPQURKLENBSkosQ0FGSixDQURMLGVBWUs7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUNLLEtBQUtmLEtBQUwsQ0FBV29ELFFBRGhCLENBWkwsQ0FBUDtBQWdCSDs7QUFFRG5DLFVBQVEsR0FBRztBQUNQLFNBQUtILE1BQUwsQ0FBWVMsT0FBWixDQUFvQlcsS0FBcEIsQ0FBMEIzQixLQUExQixHQUFrQyxNQUFsQztBQUNBLFNBQUtPLE1BQUwsQ0FBWVMsT0FBWixDQUFvQlcsS0FBcEIsQ0FBMEJ6QixNQUExQixHQUFtQyxNQUFuQztBQUNBLFFBQUksS0FBS1QsS0FBTCxDQUFXK0IsUUFBZixFQUF5QixLQUFLL0IsS0FBTCxDQUFXK0IsUUFBWDtBQUV6QixVQUFNeEIsS0FBSyxHQUFHLEtBQUtPLE1BQUwsQ0FBWVMsT0FBWixDQUFvQkksV0FBbEM7QUFDQSxVQUFNbEIsTUFBTSxHQUFHLEtBQUtLLE1BQUwsQ0FBWVMsT0FBWixDQUFvQk0sWUFBbkM7QUFDQSxVQUFNRyxJQUFJLEdBQUdDLFFBQVEsQ0FBQyxLQUFLbkIsTUFBTCxDQUFZUyxPQUFaLENBQW9CVyxLQUFwQixDQUEwQkYsSUFBM0IsQ0FBckI7QUFDQSxVQUFNRyxHQUFHLEdBQUdGLFFBQVEsQ0FBQyxLQUFLbkIsTUFBTCxDQUFZUyxPQUFaLENBQW9CVyxLQUFwQixDQUEwQkMsR0FBM0IsQ0FBcEI7QUFFQSxVQUFNa0IsS0FBSyxHQUFHckIsSUFBSSxHQUFHekIsS0FBckI7QUFDQSxVQUFNK0MsTUFBTSxHQUFHbkIsR0FBRyxHQUFHMUIsTUFBckIsQ0FYTyxDQWFQOztBQUNBLFFBQUk2QyxNQUFNLEdBQUcsS0FBSzlDLElBQWxCLEVBQXdCLEtBQUtNLE1BQUwsQ0FBWVMsT0FBWixDQUFvQlcsS0FBcEIsQ0FBMEJDLEdBQTFCLEdBQWlDLEtBQUszQixJQUFMLEdBQVlDLE1BQWIsR0FBdUIsSUFBdkQ7QUFDeEIsUUFBSTRDLEtBQUssR0FBRyxLQUFLaEQsSUFBakIsRUFBdUIsS0FBS1MsTUFBTCxDQUFZUyxPQUFaLENBQW9CVyxLQUFwQixDQUEwQkYsSUFBMUIsR0FBa0MsS0FBSzNCLElBQUwsR0FBWUUsS0FBYixHQUFzQixJQUF2RDtBQUV2QixVQUFNb0MsT0FBTyxHQUFHVixRQUFRLENBQUMsS0FBS25CLE1BQUwsQ0FBWVMsT0FBWixDQUFvQlcsS0FBcEIsQ0FBMEJGLElBQTNCLENBQXhCO0FBQ0EsVUFBTVUsTUFBTSxHQUFHVCxRQUFRLENBQUMsS0FBS25CLE1BQUwsQ0FBWVMsT0FBWixDQUFvQlcsS0FBcEIsQ0FBMEJDLEdBQTNCLENBQXZCLENBbEJPLENBb0JQOztBQUNBLFFBQUlPLE1BQU0sR0FBRyxLQUFLL0IsSUFBbEIsRUFBd0I7QUFDcEIsWUFBTTRDLFVBQVUsR0FBRyxLQUFLNUMsSUFBTCxHQUFZK0IsTUFBL0I7QUFDQSxXQUFLNUIsTUFBTCxDQUFZUyxPQUFaLENBQW9CVyxLQUFwQixDQUEwQkMsR0FBMUIsR0FBZ0MsS0FBS3hCLElBQUwsR0FBWSxJQUE1QztBQUNBLFdBQUtHLE1BQUwsQ0FBWVMsT0FBWixDQUFvQlcsS0FBcEIsQ0FBMEJ6QixNQUExQixHQUFvQ0EsTUFBTSxHQUFHOEMsVUFBVixHQUF3QixJQUEzRDtBQUNIOztBQUNELFFBQUlaLE9BQU8sR0FBRyxLQUFLakMsSUFBbkIsRUFBeUI7QUFDckIsWUFBTTZDLFVBQVUsR0FBRyxLQUFLN0MsSUFBTCxHQUFZaUMsT0FBL0I7QUFDQSxXQUFLN0IsTUFBTCxDQUFZUyxPQUFaLENBQW9CVyxLQUFwQixDQUEwQkYsSUFBMUIsR0FBaUMsS0FBS3RCLElBQUwsR0FBWSxJQUE3QztBQUNBLFdBQUtJLE1BQUwsQ0FBWVMsT0FBWixDQUFvQlcsS0FBcEIsQ0FBMEJ6QixNQUExQixHQUFvQ0YsS0FBSyxHQUFHZ0QsVUFBVCxHQUF1QixJQUExRDtBQUNIO0FBQ0o7O0FBRUQsUUFBTXhDLEtBQU4sR0FBYztBQUNWLFFBQUl5QyxXQUFXLEdBQUcsSUFBbEI7QUFDQSxVQUFNQyxZQUFZLEdBQUcsT0FBTyxLQUFLekQsS0FBTCxDQUFXeUQsWUFBbEIsSUFBbUMsVUFBbkMsR0FBZ0QsS0FBS3pELEtBQUwsQ0FBV3lELFlBQVgsRUFBaEQsR0FBNEUsS0FBS3pELEtBQUwsQ0FBV3lELFlBQTVHOztBQUNBLFFBQUlBLFlBQUosRUFBa0I7QUFDZCxXQUFLQyxRQUFMLENBQWM7QUFBQ3hELGlCQUFTLEVBQUU7QUFBWixPQUFkO0FBQ0FzRCxpQkFBVyxHQUFHLE1BQU0sS0FBS0MsWUFBTCxFQUFwQjtBQUNBLFdBQUtDLFFBQUwsQ0FBYztBQUFDeEQsaUJBQVMsRUFBRTtBQUFaLE9BQWQ7QUFDSDs7QUFDRCxRQUFJLEtBQUtGLEtBQUwsQ0FBV2UsS0FBWCxJQUFvQnlDLFdBQXhCLEVBQXFDLEtBQUt4RCxLQUFMLENBQVdlLEtBQVg7QUFDeEM7O0FBRUQwQyxjQUFZLEdBQUc7QUFDWCxXQUFPLElBQUlFLE9BQUosQ0FBWUMsT0FBTyxJQUFJO0FBQzFCQyxxREFBTSxDQUFDQyxxQkFBUCxDQUE2QkMsMkRBQU8sQ0FBQ0YsTUFBUixDQUFlRyxhQUE1QyxFQUEyRCxLQUFLaEUsS0FBTCxDQUFXaUUsZ0JBQXRFLEVBQXdGO0FBQ3BGQyxjQUFNLEVBQUUsSUFENEU7QUFFcEZDLG1CQUFXLEVBQUVKLDJEQUFPLENBQUNGLE1BQVIsQ0FBZTlDLEtBRndEO0FBR3BGcUQsaUJBQVMsRUFBRSxNQUFNO0FBQUNSLGlCQUFPLENBQUMsSUFBRCxDQUFQO0FBQWUsU0FIbUQ7QUFJcEZTLGdCQUFRLEVBQUUsTUFBTTtBQUFDVCxpQkFBTyxDQUFDLEtBQUQsQ0FBUDtBQUFnQjtBQUptRCxPQUF4RjtBQU1ILEtBUE0sQ0FBUDtBQVFIOztBQTNKdUQiLCJmaWxlIjoiLi9zcmMvdWkvZmxvYXRpbmcvd2luZG93LmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3QsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5pbXBvcnQgU2NyZWVuIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL3NjcmVlblwiO1xyXG5pbXBvcnQgQ2xvc2VCdXR0b24gZnJvbSBcIi4uL2ljb25zL2Nsb3NlXCI7XHJcbmltcG9ydCBNYXhpbWl6ZUljb24gZnJvbSBcIi4uL2ljb25zL2Z1bGxzY3JlZW5cIjtcclxuaW1wb3J0IE1vZGFscyBmcm9tIFwiLi4vbW9kYWxzXCI7XHJcblxyXG4vLyBjb25zdCBEcmFnZ2FibGUgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeURpc3BsYXlOYW1lKFwiRHJhZ2dhYmxlXCIpO1xyXG4vLyB7XHJcbi8vICAgICBcImRyYWdBbnl3aGVyZVwiOiB0cnVlLFxyXG4vLyAgICAgXCJjbGFzc05hbWVcIjogXCJwaWN0dXJlSW5QaWN0dXJlV2luZG93LTFCNXFTZVwiLFxyXG4vLyAgICAgXCJtYXhYXCI6IDE5NjksXHJcbi8vICAgICBcIm1heFlcIjogdGhpcy5tYXhZLFxyXG4vLyAgICAgXCJvbkRyYWdTdGFydFwiOiBcIsaSICgpIHt9XCIsXHJcbi8vICAgICBcIm9uRHJhZ1wiOiBcIsaSICgpIHt9XCIsXHJcbi8vICAgICBcIm9uRHJhZ0VuZFwiOiBcIsaSICgpIHt9XCIsXHJcbi8vICAgICBcImNoaWxkcmVuXCI6IFwiPGRpdiAvPlwiLFxyXG4vLyAgICAgXCJpbml0aWFsWFwiOiAwLFxyXG4vLyAgICAgXCJpbml0aWFsWVwiOiAwXHJcbi8vICAgfVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmxvYXRpbmdXaW5kb3cgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG5cclxuICAgICAgICB0aGlzLnN0YXRlID0ge21vZGFsT3BlbjogZmFsc2V9O1xyXG5cclxuICAgICAgICB0aGlzLm9mZlggPSAwO1xyXG4gICAgICAgIHRoaXMub2ZmWSA9IDA7XHJcblxyXG4gICAgICAgIHRoaXMubWF4WCA9IHRoaXMucHJvcHMubWF4WCB8fCBTY3JlZW4ud2lkdGg7XHJcbiAgICAgICAgdGhpcy5tYXhZID0gdGhpcy5wcm9wcy5tYXhZIHx8IFNjcmVlbi5oZWlnaHQ7XHJcbiAgICAgICAgdGhpcy5taW5YID0gdGhpcy5wcm9wcy5taW5YIHx8IDA7XHJcbiAgICAgICAgdGhpcy5taW5ZID0gdGhpcy5wcm9wcy5taW5ZIHx8IDA7XHJcblxyXG4gICAgICAgIHRoaXMudGl0bGViYXIgPSBSZWFjdC5jcmVhdGVSZWYoKTtcclxuICAgICAgICB0aGlzLndpbmRvdyA9IFJlYWN0LmNyZWF0ZVJlZigpO1xyXG5cclxuICAgICAgICB0aGlzLmNsb3NlID0gdGhpcy5jbG9zZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMubWF4aW1pemUgPSB0aGlzLm1heGltaXplLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5vbkRyYWcgPSB0aGlzLm9uRHJhZy5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub25EcmFnU3RhcnQgPSB0aGlzLm9uRHJhZ1N0YXJ0LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5vbkRyYWdTdG9wID0gdGhpcy5vbkRyYWdTdG9wLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5vblJlc2l6ZVN0YXJ0ID0gdGhpcy5vblJlc2l6ZVN0YXJ0LmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICAgICAgdGhpcy53aW5kb3cuY3VycmVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIHRoaXMub25SZXNpemVTdGFydCwgZmFsc2UpO1xyXG4gICAgICAgIHRoaXMudGl0bGViYXIuY3VycmVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIHRoaXMub25EcmFnU3RhcnQsIGZhbHNlKTtcclxuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCB0aGlzLm9uRHJhZ1N0b3AsIGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICBvblJlc2l6ZVN0YXJ0KCkge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFdpZHRoID0gdGhpcy53aW5kb3cuY3VycmVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgICB0aGlzLmN1cnJlbnRIZWlnaHQgPSB0aGlzLndpbmRvdy5jdXJyZW50Lm9mZnNldEhlaWdodDtcclxuICAgIH1cclxuXHJcbiAgICBvbkRyYWdTdG9wKCkge1xyXG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5vbkRyYWcsIHRydWUpO1xyXG4gICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy53aW5kb3cuY3VycmVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLndpbmRvdy5jdXJyZW50Lm9mZnNldEhlaWdodDtcclxuICAgICAgICBpZiAod2lkdGggIT0gdGhpcy5jdXJyZW50V2lkdGggfHwgaGVpZ2h0ICE9IHRoaXMuY3VycmVudEhlaWdodCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJlc2l6ZSkgdGhpcy5wcm9wcy5vblJlc2l6ZSgpO1xyXG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gcGFyc2VJbnQodGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS5sZWZ0KTtcclxuICAgICAgICAgICAgY29uc3QgdG9wID0gcGFyc2VJbnQodGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS50b3ApO1xyXG4gICAgICAgICAgICBpZiAobGVmdCArIHdpZHRoID49IHRoaXMubWF4WCkgdGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS53aWR0aCA9ICh0aGlzLm1heFggLSBsZWZ0KSArIFwicHhcIjtcclxuICAgICAgICAgICAgaWYgKHRvcCArIGhlaWdodCA+PSB0aGlzLm1heFkpIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUuaGVpZ2h0ID0gKHRoaXMubWF4WSAtIHRvcCkgKyBcInB4XCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY3VycmVudFdpZHRoID0gd2lkdGg7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50SGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIG9uRHJhZ1N0YXJ0KGUpIHtcclxuICAgICAgICBjb25zdCBkaXYgPSB0aGlzLndpbmRvdy5jdXJyZW50O1xyXG4gICAgICAgIHRoaXMub2ZmWSA9IGUuY2xpZW50WSAtIHBhcnNlSW50KGRpdi5vZmZzZXRUb3ApO1xyXG4gICAgICAgIHRoaXMub2ZmWCA9IGUuY2xpZW50WCAtIHBhcnNlSW50KGRpdi5vZmZzZXRMZWZ0KTtcclxuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMub25EcmFnLCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkRyYWcoZSkge1xyXG4gICAgICAgIGNvbnN0IGRpdiA9IHRoaXMud2luZG93LmN1cnJlbnQ7XHJcbiAgICAgICAgbGV0IG5ld1RvcCA9IChlLmNsaWVudFkgLSB0aGlzLm9mZlkpO1xyXG4gICAgICAgIGlmIChuZXdUb3AgPD0gdGhpcy5taW5ZKSBuZXdUb3AgPSB0aGlzLm1pblk7XHJcbiAgICAgICAgaWYgKG5ld1RvcCArIHRoaXMuY3VycmVudEhlaWdodCA+PSB0aGlzLm1heFkpIG5ld1RvcCA9IHRoaXMubWF4WSAtIHRoaXMuY3VycmVudEhlaWdodDtcclxuXHJcbiAgICAgICAgbGV0IG5ld0xlZnQgPSAoZS5jbGllbnRYIC0gdGhpcy5vZmZYKTtcclxuICAgICAgICBpZiAobmV3TGVmdCA8PSB0aGlzLm1pblgpIG5ld0xlZnQgPSB0aGlzLm1pblg7XHJcbiAgICAgICAgaWYgKG5ld0xlZnQgKyB0aGlzLmN1cnJlbnRXaWR0aCA+PSB0aGlzLm1heFgpIG5ld0xlZnQgPSB0aGlzLm1heFggLSB0aGlzLmN1cnJlbnRXaWR0aDtcclxuXHJcbiAgICAgICAgZGl2LnN0eWxlLnRvcCA9IG5ld1RvcCArIFwicHhcIjtcclxuICAgICAgICBkaXYuc3R5bGUubGVmdCA9IG5ld0xlZnQgKyBcInB4XCI7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICAgICAgdGhpcy50aXRsZWJhci5jdXJyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgdGhpcy5vbkRyYWdTdGFydCwgZmFsc2UpO1xyXG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMub25EcmFnU3RvcCwgZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCB0b3AgPSB0aGlzLnByb3BzLmNlbnRlciA/IChTY3JlZW4uaGVpZ2h0IC8gMikgLSAodGhpcy5wcm9wcy5oZWlnaHQgLyAyKSA6IHRoaXMucHJvcHMudG9wO1xyXG4gICAgICAgIGNvbnN0IGxlZnQgPSB0aGlzLnByb3BzLmNlbnRlciA/IChTY3JlZW4ud2lkdGggLyAyKSAtICh0aGlzLnByb3BzLndpZHRoIC8gMikgOiB0aGlzLnByb3BzLmxlZnQgO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHRvcCwgbGVmdCk7XHJcbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gYGZsb2F0aW5nLXdpbmRvdyR7YCAke3RoaXMucHJvcHMuY2xhc3NOYW1lfWAgfHwgXCJcIn0ke3RoaXMucHJvcHMucmVzaXphYmxlID8gXCIgcmVzaXphYmxlXCIgOiBcIlwifSR7dGhpcy5zdGF0ZS5tb2RhbE9wZW4gPyBcIiBtb2RhbC1vcGVuXCIgOiBcIlwifWA7XHJcbiAgICAgICAgY29uc3Qgc3R5bGVzID0ge2hlaWdodDogdGhpcy5wcm9wcy5oZWlnaHQsIHdpZHRoOiB0aGlzLnByb3BzLndpZHRoLCBsZWZ0OiBsZWZ0IHx8IDAsIHRvcDogdG9wIHx8IDB9O1xyXG4gICAgICAgIHJldHVybiA8ZGl2IGlkPXt0aGlzLnByb3BzLmlkfSBjbGFzc05hbWU9e2NsYXNzTmFtZX0gcmVmPXt0aGlzLndpbmRvd30gc3R5bGU9e3N0eWxlc30+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbG9hdGluZy13aW5kb3ctdGl0bGViYXJcIiByZWY9e3RoaXMudGl0bGViYXJ9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0aXRsZVwiPnt0aGlzLnByb3BzLnRpdGxlfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbG9hdGluZy13aW5kb3ctYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJidXR0b24gbWF4aW1pemUtYnV0dG9uXCIgb25DbGljaz17dGhpcy5tYXhpbWl6ZX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE1heGltaXplSWNvbiBzaXplPVwiMThweFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYnV0dG9uIGNsb3NlLWJ1dHRvblwiIG9uQ2xpY2s9e3RoaXMuY2xvc2V9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDbG9zZUJ1dHRvbiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxvYXRpbmctd2luZG93LWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuY2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcblxyXG4gICAgbWF4aW1pemUoKSB7XHJcbiAgICAgICAgdGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS53aWR0aCA9IFwiMTAwJVwiO1xyXG4gICAgICAgIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUuaGVpZ2h0ID0gXCIxMDAlXCI7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25SZXNpemUpIHRoaXMucHJvcHMub25SZXNpemUoKTtcclxuXHJcbiAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLndpbmRvdy5jdXJyZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMud2luZG93LmN1cnJlbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgICAgIGNvbnN0IGxlZnQgPSBwYXJzZUludCh0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLmxlZnQpO1xyXG4gICAgICAgIGNvbnN0IHRvcCA9IHBhcnNlSW50KHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUudG9wKTtcclxuXHJcbiAgICAgICAgY29uc3QgcmlnaHQgPSBsZWZ0ICsgd2lkdGg7XHJcbiAgICAgICAgY29uc3QgYm90dG9tID0gdG9wICsgaGVpZ2h0O1xyXG5cclxuICAgICAgICAvLyBQcmV2ZW50IGV4cGFuZGluZyBvZmYgdGhlIGJvdHRvbSBhbmQgcmlnaHQgYW5kIHJlYWRqdXN0IHBvc2l0aW9uXHJcbiAgICAgICAgaWYgKGJvdHRvbSA+IHRoaXMubWF4WSkgdGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS50b3AgPSAodGhpcy5tYXhZIC0gaGVpZ2h0KSArIFwicHhcIjtcclxuICAgICAgICBpZiAocmlnaHQgPiB0aGlzLm1heFgpIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUubGVmdCA9ICh0aGlzLm1heFggLSB3aWR0aCkgKyBcInB4XCI7XHJcblxyXG4gICAgICAgIGNvbnN0IG5ld0xlZnQgPSBwYXJzZUludCh0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLmxlZnQpO1xyXG4gICAgICAgIGNvbnN0IG5ld1RvcCA9IHBhcnNlSW50KHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUudG9wKTtcclxuXHJcbiAgICAgICAgLy8gRm9yIHNtYWxsIHNjcmVlbnMgaXQncyBwb3NzaWJsZSB0aGlzIHB1c2hlcyB1cyBvZmYgdGhlIG90aGVyIGRpcmVjdGlvbi4uLiB3ZSBuZWVkIHRvIHJlYWRqdXN0IHNpemVcclxuICAgICAgICBpZiAobmV3VG9wIDwgdGhpcy5taW5ZKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpZmZlcmVuY2UgPSB0aGlzLm1pblkgLSBuZXdUb3A7XHJcbiAgICAgICAgICAgIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUudG9wID0gdGhpcy5taW5ZICsgXCJweFwiO1xyXG4gICAgICAgICAgICB0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLmhlaWdodCA9IChoZWlnaHQgLSBkaWZmZXJlbmNlKSArIFwicHhcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5ld0xlZnQgPCB0aGlzLm1pblgpIHtcclxuICAgICAgICAgICAgY29uc3QgZGlmZmVyZW5jZSA9IHRoaXMubWluWCAtIG5ld0xlZnQ7XHJcbiAgICAgICAgICAgIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUubGVmdCA9IHRoaXMubWluWCArIFwicHhcIjtcclxuICAgICAgICAgICAgdGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS5oZWlnaHQgPSAod2lkdGggLSBkaWZmZXJlbmNlKSArIFwicHhcIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2xvc2UoKSB7XHJcbiAgICAgICAgbGV0IHNob3VsZENsb3NlID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBjb25maXJtQ2xvc2UgPSB0eXBlb2YodGhpcy5wcm9wcy5jb25maXJtQ2xvc2UpID09IFwiZnVuY3Rpb25cIiA/IHRoaXMucHJvcHMuY29uZmlybUNsb3NlKCkgOiB0aGlzLnByb3BzLmNvbmZpcm1DbG9zZTtcclxuICAgICAgICBpZiAoY29uZmlybUNsb3NlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe21vZGFsT3BlbjogdHJ1ZX0pO1xyXG4gICAgICAgICAgICBzaG91bGRDbG9zZSA9IGF3YWl0IHRoaXMuY29uZmlybUNsb3NlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe21vZGFsT3BlbjogZmFsc2V9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuY2xvc2UgJiYgc2hvdWxkQ2xvc2UpIHRoaXMucHJvcHMuY2xvc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25maXJtQ2xvc2UoKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICBNb2RhbHMuc2hvd0NvbmZpcm1hdGlvbk1vZGFsKFN0cmluZ3MuTW9kYWxzLmNvbmZpcm1BY3Rpb24sIHRoaXMucHJvcHMuY29uZmlybWF0aW9uVGV4dCwge1xyXG4gICAgICAgICAgICAgICAgZGFuZ2VyOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgY29uZmlybVRleHQ6IFN0cmluZ3MuTW9kYWxzLmNsb3NlLFxyXG4gICAgICAgICAgICAgICAgb25Db25maXJtOiAoKSA9PiB7cmVzb2x2ZSh0cnVlKTt9LFxyXG4gICAgICAgICAgICAgICAgb25DYW5jZWw6ICgpID0+IHtyZXNvbHZlKGZhbHNlKTt9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/floating/window.jsx\n"); /***/ }), @@ -802,7 +802,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FloatingWindows; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _floating_container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./floating/container */ \"./src/ui/floating/container.jsx\");\n\n\nclass FloatingWindows {\n static initialize() {\n const containerRef = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n const container = /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_floating_container__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n ref: containerRef\n });\n const wrapped = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"AppReferencePositionLayer\").AppLayerProvider().props.layerContext.Provider, {\n value: [document.querySelector(\"#app-mount > .layerContainer-yqaFcK\")]\n }, container);\n const div = modules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].createElement(`
`);\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DOMManager\"].bdBody.append(div);\n modules__WEBPACK_IMPORTED_MODULE_0__[\"ReactDOM\"].render(wrapped, div);\n this.ref = containerRef;\n }\n\n static open(window) {\n if (!this.ref) this.initialize();\n return this.ref.current.open(window);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvZmxvYXRpbmd3aW5kb3dzLmpzPzE3NDMiXSwibmFtZXMiOlsiRmxvYXRpbmdXaW5kb3dzIiwiaW5pdGlhbGl6ZSIsImNvbnRhaW5lclJlZiIsIlJlYWN0IiwiY3JlYXRlUmVmIiwiY29udGFpbmVyIiwid3JhcHBlZCIsImNyZWF0ZUVsZW1lbnQiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5UHJvcHMiLCJBcHBMYXllclByb3ZpZGVyIiwicHJvcHMiLCJsYXllckNvbnRleHQiLCJQcm92aWRlciIsInZhbHVlIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZGl2IiwiRE9NIiwiRE9NTWFuYWdlciIsImJkQm9keSIsImFwcGVuZCIsIlJlYWN0RE9NIiwicmVuZGVyIiwicmVmIiwib3BlbiIsIndpbmRvdyIsImN1cnJlbnQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVlLE1BQU1BLGVBQU4sQ0FBc0I7QUFDakMsU0FBT0MsVUFBUCxHQUFvQjtBQUNoQixVQUFNQyxZQUFZLEdBQUdDLDZDQUFLLENBQUNDLFNBQU4sRUFBckI7QUFDQSxVQUFNQyxTQUFTLGdCQUFHLDREQUFDLDJEQUFEO0FBQXlCLFNBQUcsRUFBRUg7QUFBOUIsTUFBbEI7QUFDQSxVQUFNSSxPQUFPLEdBQUdILDZDQUFLLENBQUNJLGFBQU4sQ0FBb0JDLHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIsMkJBQTFCLEVBQXVEQyxnQkFBdkQsR0FBMEVDLEtBQTFFLENBQWdGQyxZQUFoRixDQUE2RkMsUUFBakgsRUFBMkg7QUFBQ0MsV0FBSyxFQUFFLENBQUNDLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixxQ0FBdkIsQ0FBRDtBQUFSLEtBQTNILEVBQXFNWCxTQUFyTSxDQUFoQjtBQUNBLFVBQU1ZLEdBQUcsR0FBR0MsMkNBQUcsQ0FBQ1gsYUFBSixDQUFtQixtQ0FBbkIsQ0FBWjtBQUNBWSxzREFBVSxDQUFDQyxNQUFYLENBQWtCQyxNQUFsQixDQUF5QkosR0FBekI7QUFDQUssb0RBQVEsQ0FBQ0MsTUFBVCxDQUFnQmpCLE9BQWhCLEVBQXlCVyxHQUF6QjtBQUNBLFNBQUtPLEdBQUwsR0FBV3RCLFlBQVg7QUFDSDs7QUFFRCxTQUFPdUIsSUFBUCxDQUFZQyxNQUFaLEVBQW9CO0FBQ2hCLFFBQUksQ0FBQyxLQUFLRixHQUFWLEVBQWUsS0FBS3ZCLFVBQUw7QUFDZixXQUFPLEtBQUt1QixHQUFMLENBQVNHLE9BQVQsQ0FBaUJGLElBQWpCLENBQXNCQyxNQUF0QixDQUFQO0FBQ0g7O0FBZGdDIiwiZmlsZSI6Ii4vc3JjL3VpL2Zsb2F0aW5nd2luZG93cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7V2VicGFja01vZHVsZXMsIFJlYWN0LCBSZWFjdERPTSwgRE9NLCBET01NYW5hZ2VyfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgRmxvYXRpbmdXaW5kb3dDb250YWluZXIgZnJvbSBcIi4vZmxvYXRpbmcvY29udGFpbmVyXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGbG9hdGluZ1dpbmRvd3Mge1xyXG4gICAgc3RhdGljIGluaXRpYWxpemUoKSB7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyUmVmID0gUmVhY3QuY3JlYXRlUmVmKCk7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gPEZsb2F0aW5nV2luZG93Q29udGFpbmVyIHJlZj17Y29udGFpbmVyUmVmfSAvPjtcclxuICAgICAgICBjb25zdCB3cmFwcGVkID0gUmVhY3QuY3JlYXRlRWxlbWVudChXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiQXBwUmVmZXJlbmNlUG9zaXRpb25MYXllclwiKS5BcHBMYXllclByb3ZpZGVyKCkucHJvcHMubGF5ZXJDb250ZXh0LlByb3ZpZGVyLCB7dmFsdWU6IFtkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2FwcC1tb3VudCA+IC5sYXllckNvbnRhaW5lci15cWFGY0tcIildfSwgY29udGFpbmVyKTtcclxuICAgICAgICBjb25zdCBkaXYgPSBET00uY3JlYXRlRWxlbWVudChgPGRpdiBpZD1cImZsb2F0aW5nLXdpbmRvd3MtbGF5ZXJcIj5gKTtcclxuICAgICAgICBET01NYW5hZ2VyLmJkQm9keS5hcHBlbmQoZGl2KTtcclxuICAgICAgICBSZWFjdERPTS5yZW5kZXIod3JhcHBlZCwgZGl2KTtcclxuICAgICAgICB0aGlzLnJlZiA9IGNvbnRhaW5lclJlZjtcclxuICAgIH1cclxuICAgIFxyXG4gICAgc3RhdGljIG9wZW4od2luZG93KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJlZikgdGhpcy5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmLmN1cnJlbnQub3Blbih3aW5kb3cpO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/floatingwindows.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FloatingWindows; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _floating_container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./floating/container */ \"./src/ui/floating/container.jsx\");\n\n\nclass FloatingWindows {\n static initialize() {\n const containerRef = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n const container = /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_floating_container__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n ref: containerRef\n });\n const wrapped = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"AppReferencePositionLayer\").AppLayerProvider().props.layerContext.Provider, {\n value: [document.querySelector(\"#app-mount > .layerContainer-yqaFcK\")]\n }, container);\n const div = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].createElement(`
`);\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"DOMManager\"].bdBody.append(div);\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"ReactDOM\"].render(wrapped, div);\n this.ref = containerRef;\n }\n\n static open(window) {\n if (!this.ref) this.initialize();\n return this.ref.current.open(window);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvZmxvYXRpbmd3aW5kb3dzLmpzPzE3NDMiXSwibmFtZXMiOlsiRmxvYXRpbmdXaW5kb3dzIiwiaW5pdGlhbGl6ZSIsImNvbnRhaW5lclJlZiIsIlJlYWN0IiwiY3JlYXRlUmVmIiwiY29udGFpbmVyIiwid3JhcHBlZCIsImNyZWF0ZUVsZW1lbnQiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5UHJvcHMiLCJBcHBMYXllclByb3ZpZGVyIiwicHJvcHMiLCJsYXllckNvbnRleHQiLCJQcm92aWRlciIsInZhbHVlIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZGl2IiwiRE9NIiwiRE9NTWFuYWdlciIsImJkQm9keSIsImFwcGVuZCIsIlJlYWN0RE9NIiwicmVuZGVyIiwicmVmIiwib3BlbiIsIndpbmRvdyIsImN1cnJlbnQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVlLE1BQU1BLGVBQU4sQ0FBc0I7QUFDakMsU0FBT0MsVUFBUCxHQUFvQjtBQUNoQixVQUFNQyxZQUFZLEdBQUdDLHlEQUFLLENBQUNDLFNBQU4sRUFBckI7QUFDQSxVQUFNQyxTQUFTLGdCQUFHLHdFQUFDLDJEQUFEO0FBQXlCLFNBQUcsRUFBRUg7QUFBOUIsTUFBbEI7QUFDQSxVQUFNSSxPQUFPLEdBQUdILHlEQUFLLENBQUNJLGFBQU4sQ0FBb0JDLGtFQUFjLENBQUNDLFVBQWYsQ0FBMEIsMkJBQTFCLEVBQXVEQyxnQkFBdkQsR0FBMEVDLEtBQTFFLENBQWdGQyxZQUFoRixDQUE2RkMsUUFBakgsRUFBMkg7QUFBQ0MsV0FBSyxFQUFFLENBQUNDLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixxQ0FBdkIsQ0FBRDtBQUFSLEtBQTNILEVBQXFNWCxTQUFyTSxDQUFoQjtBQUNBLFVBQU1ZLEdBQUcsR0FBR0MsdURBQUcsQ0FBQ1gsYUFBSixDQUFtQixtQ0FBbkIsQ0FBWjtBQUNBWSxrRUFBVSxDQUFDQyxNQUFYLENBQWtCQyxNQUFsQixDQUF5QkosR0FBekI7QUFDQUssZ0VBQVEsQ0FBQ0MsTUFBVCxDQUFnQmpCLE9BQWhCLEVBQXlCVyxHQUF6QjtBQUNBLFNBQUtPLEdBQUwsR0FBV3RCLFlBQVg7QUFDSDs7QUFFRCxTQUFPdUIsSUFBUCxDQUFZQyxNQUFaLEVBQW9CO0FBQ2hCLFFBQUksQ0FBQyxLQUFLRixHQUFWLEVBQWUsS0FBS3ZCLFVBQUw7QUFDZixXQUFPLEtBQUt1QixHQUFMLENBQVNHLE9BQVQsQ0FBaUJGLElBQWpCLENBQXNCQyxNQUF0QixDQUFQO0FBQ0g7O0FBZGdDIiwiZmlsZSI6Ii4vc3JjL3VpL2Zsb2F0aW5nd2luZG93cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7V2VicGFja01vZHVsZXMsIFJlYWN0LCBSZWFjdERPTSwgRE9NLCBET01NYW5hZ2VyfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgRmxvYXRpbmdXaW5kb3dDb250YWluZXIgZnJvbSBcIi4vZmxvYXRpbmcvY29udGFpbmVyXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGbG9hdGluZ1dpbmRvd3Mge1xyXG4gICAgc3RhdGljIGluaXRpYWxpemUoKSB7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyUmVmID0gUmVhY3QuY3JlYXRlUmVmKCk7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gPEZsb2F0aW5nV2luZG93Q29udGFpbmVyIHJlZj17Y29udGFpbmVyUmVmfSAvPjtcclxuICAgICAgICBjb25zdCB3cmFwcGVkID0gUmVhY3QuY3JlYXRlRWxlbWVudChXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiQXBwUmVmZXJlbmNlUG9zaXRpb25MYXllclwiKS5BcHBMYXllclByb3ZpZGVyKCkucHJvcHMubGF5ZXJDb250ZXh0LlByb3ZpZGVyLCB7dmFsdWU6IFtkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2FwcC1tb3VudCA+IC5sYXllckNvbnRhaW5lci15cWFGY0tcIildfSwgY29udGFpbmVyKTtcclxuICAgICAgICBjb25zdCBkaXYgPSBET00uY3JlYXRlRWxlbWVudChgPGRpdiBpZD1cImZsb2F0aW5nLXdpbmRvd3MtbGF5ZXJcIj5gKTtcclxuICAgICAgICBET01NYW5hZ2VyLmJkQm9keS5hcHBlbmQoZGl2KTtcclxuICAgICAgICBSZWFjdERPTS5yZW5kZXIod3JhcHBlZCwgZGl2KTtcclxuICAgICAgICB0aGlzLnJlZiA9IGNvbnRhaW5lclJlZjtcclxuICAgIH1cclxuICAgIFxyXG4gICAgc3RhdGljIG9wZW4od2luZG93KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJlZikgdGhpcy5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmLmN1cnJlbnQub3Blbih3aW5kb3cpO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/floatingwindows.js\n"); /***/ }), @@ -814,7 +814,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BDLogo; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass BDLogo extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: \"bd-logo \" + this.props.className,\n height: \"100%\",\n width: this.props.size || \"16px\",\n viewBox: \"0 0 2000 2000\",\n style: {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"metadata\", null), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"defs\", null, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"filter\", {\n id: \"shadow1\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"feDropShadow\", {\n dx: \"20\",\n dy: \"0\",\n stdDeviation: \"20\",\n floodColor: \"rgba(0,0,0,0.35)\"\n })), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"filter\", {\n id: \"shadow2\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"feDropShadow\", {\n dx: \"15\",\n dy: \"0\",\n stdDeviation: \"20\",\n floodColor: \"rgba(255,255,255,0.15)\"\n })), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"filter\", {\n id: \"shadow3\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"feDropShadow\", {\n dx: \"10\",\n dy: \"0\",\n stdDeviation: \"20\",\n floodColor: \"rgba(0,0,0,0.35)\"\n }))), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"g\", null, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n style: {\n filter: \"url(#shadow3)\"\n },\n fill: \"#171717\",\n opacity: \"1\",\n d: \"M1195.44+135.442L1195.44+135.442L997.6+136.442C1024.2+149.742+1170.34+163.542+1193.64+179.742C1264.34+228.842+1319.74+291.242+1358.24+365.042C1398.14+441.642+1419.74+530.642+1422.54+629.642L1422.54+630.842L1422.54+632.042C1422.54+773.142+1422.54+1228.14+1422.54+1369.14L1422.54+1370.34L1422.54+1371.54C1419.84+1470.54+1398.24+1559.54+1358.24+1636.14C1319.74+1709.94+1264.44+1772.34+1193.64+1821.44C1171.04+1837.14+1025.7+1850.54+1000+1863.54L1193.54+1864.54C1539.74+1866.44+1864.54+1693.34+1864.54+1296.64L1864.54+716.942C1866.44+312.442+1541.64+135.442+1195.44+135.442Z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n style: {\n filter: \"url(#shadow2)\"\n },\n fill: \"#3E82E5\",\n opacity: \"1\",\n d: \"M1695.54+631.442C1685.84+278.042+1409.34+135.442+1052.94+135.442L361.74+136.442L803.74+490.442L1060.74+490.442C1335.24+490.442+1335.24+835.342+1060.74+835.342L1060.74+1164.84C1150.22+1164.84+1210.53+1201.48+1241.68+1250.87C1306.07+1353+1245.76+1509.64+1060.74+1509.64L361.74+1863.54L1052.94+1864.54C1409.24+1864.54+1685.74+1721.94+1695.54+1368.54C1695.54+1205.94+1651.04+1084.44+1572.64+999.942C1651.04+915.542+1695.54+794.042+1695.54+631.442Z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n style: {\n filter: \"url(#shadow1)\"\n },\n fill: \"#FFFFFF\",\n opacity: \"1\",\n d: \"M1469.25+631.442C1459.55+278.042+1183.05+135.442+826.65+135.442L135.45+135.442L135.45+1004C135.45+1004+135.427+1255.21+355.626+1255.21C575.825+1255.21+575.848+1004+575.848+1004L577.45+490.442L834.45+490.442C1108.95+490.442+1108.95+835.342+834.45+835.342L664.65+835.342L664.65+1164.84L834.45+1164.84C923.932+1164.84+984.244+1201.48+1015.39+1250.87C1079.78+1353+1019.47+1509.64+834.45+1509.64L135.45+1509.64L135.45+1864.54L826.65+1864.54C1182.95+1864.54+1459.45+1721.94+1469.25+1368.54C1469.25+1205.94+1424.75+1084.44+1346.35+999.942C1424.75+915.542+1469.25+794.042+1469.25+631.442Z\"\n })));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvYmRsb2dvLmpzeD9iZDg5Il0sIm5hbWVzIjpbIkJETG9nbyIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwicHJvcHMiLCJjbGFzc05hbWUiLCJzaXplIiwiZmlsbFJ1bGUiLCJjbGlwUnVsZSIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VMaW5lam9pbiIsImZpbHRlciJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxNQUFOLFNBQXFCQyw2Q0FBSyxDQUFDQyxTQUEzQixDQUFxQztBQUNoREMsUUFBTSxHQUFHO0FBQ0wsd0JBQU87QUFBSyxlQUFTLEVBQUUsYUFBYSxLQUFLQyxLQUFMLENBQVdDLFNBQXhDO0FBQW1ELFlBQU0sRUFBQyxNQUExRDtBQUFpRSxXQUFLLEVBQUUsS0FBS0QsS0FBTCxDQUFXRSxJQUFYLElBQW1CLE1BQTNGO0FBQW1HLGFBQU8sRUFBQyxlQUEzRztBQUEySCxXQUFLLEVBQUU7QUFBQ0MsZ0JBQVEsRUFBRSxTQUFYO0FBQXNCQyxnQkFBUSxFQUFFLFNBQWhDO0FBQTJDQyxxQkFBYSxFQUFFLE9BQTFEO0FBQW1FQyxzQkFBYyxFQUFFO0FBQW5GO0FBQWxJLG9CQUNILDZFQURHLGVBRUgsdUZBQ0k7QUFBUSxRQUFFLEVBQUM7QUFBWCxvQkFBcUI7QUFBYyxRQUFFLEVBQUMsSUFBakI7QUFBc0IsUUFBRSxFQUFDLEdBQXpCO0FBQTZCLGtCQUFZLEVBQUMsSUFBMUM7QUFBK0MsZ0JBQVUsRUFBQztBQUExRCxNQUFyQixDQURKLGVBRUk7QUFBUSxRQUFFLEVBQUM7QUFBWCxvQkFBcUI7QUFBYyxRQUFFLEVBQUMsSUFBakI7QUFBc0IsUUFBRSxFQUFDLEdBQXpCO0FBQTZCLGtCQUFZLEVBQUMsSUFBMUM7QUFBK0MsZ0JBQVUsRUFBQztBQUExRCxNQUFyQixDQUZKLGVBR0k7QUFBUSxRQUFFLEVBQUM7QUFBWCxvQkFBcUI7QUFBYyxRQUFFLEVBQUMsSUFBakI7QUFBc0IsUUFBRSxFQUFDLEdBQXpCO0FBQTZCLGtCQUFZLEVBQUMsSUFBMUM7QUFBK0MsZ0JBQVUsRUFBQztBQUExRCxNQUFyQixDQUhKLENBRkcsZUFPSCxvRkFDSTtBQUFNLFdBQUssRUFBRTtBQUFDQyxjQUFNLEVBQUU7QUFBVCxPQUFiO0FBQXdDLFVBQUksRUFBQyxTQUE3QztBQUF1RCxhQUFPLEVBQUMsR0FBL0Q7QUFBbUUsT0FBQyxFQUFDO0FBQXJFLE1BREosZUFFSTtBQUFNLFdBQUssRUFBRTtBQUFDQSxjQUFNLEVBQUU7QUFBVCxPQUFiO0FBQXdDLFVBQUksRUFBQyxTQUE3QztBQUF1RCxhQUFPLEVBQUMsR0FBL0Q7QUFBbUUsT0FBQyxFQUFDO0FBQXJFLE1BRkosZUFHSTtBQUFNLFdBQUssRUFBRTtBQUFDQSxjQUFNLEVBQUU7QUFBVCxPQUFiO0FBQXdDLFVBQUksRUFBQyxTQUE3QztBQUF1RCxhQUFPLEVBQUMsR0FBL0Q7QUFBbUUsT0FBQyxFQUFDO0FBQXJFLE1BSEosQ0FQRyxDQUFQO0FBYUg7O0FBZitDIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL2JkbG9nby5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQkRMb2dvIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gPHN2ZyBjbGFzc05hbWU9e1wiYmQtbG9nbyBcIiArIHRoaXMucHJvcHMuY2xhc3NOYW1lfSBoZWlnaHQ9XCIxMDAlXCIgd2lkdGg9e3RoaXMucHJvcHMuc2l6ZSB8fCBcIjE2cHhcIn0gdmlld0JveD1cIjAgMCAyMDAwIDIwMDBcIiBzdHlsZT17e2ZpbGxSdWxlOiBcImV2ZW5vZGRcIiwgY2xpcFJ1bGU6IFwiZXZlbm9kZFwiLCBzdHJva2VMaW5lY2FwOiBcInJvdW5kXCIsIHN0cm9rZUxpbmVqb2luOiBcInJvdW5kXCJ9fT5cclxuICAgICAgICAgICAgPG1ldGFkYXRhIC8+XHJcbiAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cInNoYWRvdzFcIj48ZmVEcm9wU2hhZG93IGR4PVwiMjBcIiBkeT1cIjBcIiBzdGREZXZpYXRpb249XCIyMFwiIGZsb29kQ29sb3I9XCJyZ2JhKDAsMCwwLDAuMzUpXCIgLz48L2ZpbHRlcj5cclxuICAgICAgICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJzaGFkb3cyXCI+PGZlRHJvcFNoYWRvdyBkeD1cIjE1XCIgZHk9XCIwXCIgc3RkRGV2aWF0aW9uPVwiMjBcIiBmbG9vZENvbG9yPVwicmdiYSgyNTUsMjU1LDI1NSwwLjE1KVwiIC8+PC9maWx0ZXI+XHJcbiAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwic2hhZG93M1wiPjxmZURyb3BTaGFkb3cgZHg9XCIxMFwiIGR5PVwiMFwiIHN0ZERldmlhdGlvbj1cIjIwXCIgZmxvb2RDb2xvcj1cInJnYmEoMCwwLDAsMC4zNSlcIiAvPjwvZmlsdGVyPlxyXG4gICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgIDxnPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggc3R5bGU9e3tmaWx0ZXI6IFwidXJsKCNzaGFkb3czKVwifX0gZmlsbD1cIiMxNzE3MTdcIiBvcGFjaXR5PVwiMVwiIGQ9XCJNMTE5NS40NCsxMzUuNDQyTDExOTUuNDQrMTM1LjQ0Mkw5OTcuNisxMzYuNDQyQzEwMjQuMisxNDkuNzQyKzExNzAuMzQrMTYzLjU0MisxMTkzLjY0KzE3OS43NDJDMTI2NC4zNCsyMjguODQyKzEzMTkuNzQrMjkxLjI0MisxMzU4LjI0KzM2NS4wNDJDMTM5OC4xNCs0NDEuNjQyKzE0MTkuNzQrNTMwLjY0MisxNDIyLjU0KzYyOS42NDJMMTQyMi41NCs2MzAuODQyTDE0MjIuNTQrNjMyLjA0MkMxNDIyLjU0Kzc3My4xNDIrMTQyMi41NCsxMjI4LjE0KzE0MjIuNTQrMTM2OS4xNEwxNDIyLjU0KzEzNzAuMzRMMTQyMi41NCsxMzcxLjU0QzE0MTkuODQrMTQ3MC41NCsxMzk4LjI0KzE1NTkuNTQrMTM1OC4yNCsxNjM2LjE0QzEzMTkuNzQrMTcwOS45NCsxMjY0LjQ0KzE3NzIuMzQrMTE5My42NCsxODIxLjQ0QzExNzEuMDQrMTgzNy4xNCsxMDI1LjcrMTg1MC41NCsxMDAwKzE4NjMuNTRMMTE5My41NCsxODY0LjU0QzE1MzkuNzQrMTg2Ni40NCsxODY0LjU0KzE2OTMuMzQrMTg2NC41NCsxMjk2LjY0TDE4NjQuNTQrNzE2Ljk0MkMxODY2LjQ0KzMxMi40NDIrMTU0MS42NCsxMzUuNDQyKzExOTUuNDQrMTM1LjQ0MlpcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggc3R5bGU9e3tmaWx0ZXI6IFwidXJsKCNzaGFkb3cyKVwifX0gZmlsbD1cIiMzRTgyRTVcIiBvcGFjaXR5PVwiMVwiIGQ9XCJNMTY5NS41NCs2MzEuNDQyQzE2ODUuODQrMjc4LjA0MisxNDA5LjM0KzEzNS40NDIrMTA1Mi45NCsxMzUuNDQyTDM2MS43NCsxMzYuNDQyTDgwMy43NCs0OTAuNDQyTDEwNjAuNzQrNDkwLjQ0MkMxMzM1LjI0KzQ5MC40NDIrMTMzNS4yNCs4MzUuMzQyKzEwNjAuNzQrODM1LjM0MkwxMDYwLjc0KzExNjQuODRDMTE1MC4yMisxMTY0Ljg0KzEyMTAuNTMrMTIwMS40OCsxMjQxLjY4KzEyNTAuODdDMTMwNi4wNysxMzUzKzEyNDUuNzYrMTUwOS42NCsxMDYwLjc0KzE1MDkuNjRMMzYxLjc0KzE4NjMuNTRMMTA1Mi45NCsxODY0LjU0QzE0MDkuMjQrMTg2NC41NCsxNjg1Ljc0KzE3MjEuOTQrMTY5NS41NCsxMzY4LjU0QzE2OTUuNTQrMTIwNS45NCsxNjUxLjA0KzEwODQuNDQrMTU3Mi42NCs5OTkuOTQyQzE2NTEuMDQrOTE1LjU0MisxNjk1LjU0Kzc5NC4wNDIrMTY5NS41NCs2MzEuNDQyWlwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBzdHlsZT17e2ZpbHRlcjogXCJ1cmwoI3NoYWRvdzEpXCJ9fSBmaWxsPVwiI0ZGRkZGRlwiIG9wYWNpdHk9XCIxXCIgZD1cIk0xNDY5LjI1KzYzMS40NDJDMTQ1OS41NSsyNzguMDQyKzExODMuMDUrMTM1LjQ0Mis4MjYuNjUrMTM1LjQ0MkwxMzUuNDUrMTM1LjQ0MkwxMzUuNDUrMTAwNEMxMzUuNDUrMTAwNCsxMzUuNDI3KzEyNTUuMjErMzU1LjYyNisxMjU1LjIxQzU3NS44MjUrMTI1NS4yMSs1NzUuODQ4KzEwMDQrNTc1Ljg0OCsxMDA0TDU3Ny40NSs0OTAuNDQyTDgzNC40NSs0OTAuNDQyQzExMDguOTUrNDkwLjQ0MisxMTA4Ljk1KzgzNS4zNDIrODM0LjQ1KzgzNS4zNDJMNjY0LjY1KzgzNS4zNDJMNjY0LjY1KzExNjQuODRMODM0LjQ1KzExNjQuODRDOTIzLjkzMisxMTY0Ljg0Kzk4NC4yNDQrMTIwMS40OCsxMDE1LjM5KzEyNTAuODdDMTA3OS43OCsxMzUzKzEwMTkuNDcrMTUwOS42NCs4MzQuNDUrMTUwOS42NEwxMzUuNDUrMTUwOS42NEwxMzUuNDUrMTg2NC41NEw4MjYuNjUrMTg2NC41NEMxMTgyLjk1KzE4NjQuNTQrMTQ1OS40NSsxNzIxLjk0KzE0NjkuMjUrMTM2OC41NEMxNDY5LjI1KzEyMDUuOTQrMTQyNC43NSsxMDg0LjQ0KzEzNDYuMzUrOTk5Ljk0MkMxNDI0Ljc1KzkxNS41NDIrMTQ2OS4yNSs3OTQuMDQyKzE0NjkuMjUrNjMxLjQ0MlpcIiAvPlxyXG4gICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/bdlogo.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BDLogo; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass BDLogo extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: \"bd-logo \" + this.props.className,\n height: \"100%\",\n width: this.props.size || \"16px\",\n viewBox: \"0 0 2000 2000\",\n style: {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"metadata\", null), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"defs\", null, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"filter\", {\n id: \"shadow1\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"feDropShadow\", {\n dx: \"20\",\n dy: \"0\",\n stdDeviation: \"20\",\n floodColor: \"rgba(0,0,0,0.35)\"\n })), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"filter\", {\n id: \"shadow2\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"feDropShadow\", {\n dx: \"15\",\n dy: \"0\",\n stdDeviation: \"20\",\n floodColor: \"rgba(255,255,255,0.15)\"\n })), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"filter\", {\n id: \"shadow3\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"feDropShadow\", {\n dx: \"10\",\n dy: \"0\",\n stdDeviation: \"20\",\n floodColor: \"rgba(0,0,0,0.35)\"\n }))), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"g\", null, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n style: {\n filter: \"url(#shadow3)\"\n },\n fill: \"#171717\",\n opacity: \"1\",\n d: \"M1195.44+135.442L1195.44+135.442L997.6+136.442C1024.2+149.742+1170.34+163.542+1193.64+179.742C1264.34+228.842+1319.74+291.242+1358.24+365.042C1398.14+441.642+1419.74+530.642+1422.54+629.642L1422.54+630.842L1422.54+632.042C1422.54+773.142+1422.54+1228.14+1422.54+1369.14L1422.54+1370.34L1422.54+1371.54C1419.84+1470.54+1398.24+1559.54+1358.24+1636.14C1319.74+1709.94+1264.44+1772.34+1193.64+1821.44C1171.04+1837.14+1025.7+1850.54+1000+1863.54L1193.54+1864.54C1539.74+1866.44+1864.54+1693.34+1864.54+1296.64L1864.54+716.942C1866.44+312.442+1541.64+135.442+1195.44+135.442Z\"\n }), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n style: {\n filter: \"url(#shadow2)\"\n },\n fill: \"#3E82E5\",\n opacity: \"1\",\n d: \"M1695.54+631.442C1685.84+278.042+1409.34+135.442+1052.94+135.442L361.74+136.442L803.74+490.442L1060.74+490.442C1335.24+490.442+1335.24+835.342+1060.74+835.342L1060.74+1164.84C1150.22+1164.84+1210.53+1201.48+1241.68+1250.87C1306.07+1353+1245.76+1509.64+1060.74+1509.64L361.74+1863.54L1052.94+1864.54C1409.24+1864.54+1685.74+1721.94+1695.54+1368.54C1695.54+1205.94+1651.04+1084.44+1572.64+999.942C1651.04+915.542+1695.54+794.042+1695.54+631.442Z\"\n }), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n style: {\n filter: \"url(#shadow1)\"\n },\n fill: \"#FFFFFF\",\n opacity: \"1\",\n d: \"M1469.25+631.442C1459.55+278.042+1183.05+135.442+826.65+135.442L135.45+135.442L135.45+1004C135.45+1004+135.427+1255.21+355.626+1255.21C575.825+1255.21+575.848+1004+575.848+1004L577.45+490.442L834.45+490.442C1108.95+490.442+1108.95+835.342+834.45+835.342L664.65+835.342L664.65+1164.84L834.45+1164.84C923.932+1164.84+984.244+1201.48+1015.39+1250.87C1079.78+1353+1019.47+1509.64+834.45+1509.64L135.45+1509.64L135.45+1864.54L826.65+1864.54C1182.95+1864.54+1459.45+1721.94+1469.25+1368.54C1469.25+1205.94+1424.75+1084.44+1346.35+999.942C1424.75+915.542+1469.25+794.042+1469.25+631.442Z\"\n })));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvYmRsb2dvLmpzeD9iZDg5Il0sIm5hbWVzIjpbIkJETG9nbyIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwicHJvcHMiLCJjbGFzc05hbWUiLCJzaXplIiwiZmlsbFJ1bGUiLCJjbGlwUnVsZSIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VMaW5lam9pbiIsImZpbHRlciJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxNQUFOLFNBQXFCQyx5REFBSyxDQUFDQyxTQUEzQixDQUFxQztBQUNoREMsUUFBTSxHQUFHO0FBQ0wsd0JBQU87QUFBSyxlQUFTLEVBQUUsYUFBYSxLQUFLQyxLQUFMLENBQVdDLFNBQXhDO0FBQW1ELFlBQU0sRUFBQyxNQUExRDtBQUFpRSxXQUFLLEVBQUUsS0FBS0QsS0FBTCxDQUFXRSxJQUFYLElBQW1CLE1BQTNGO0FBQW1HLGFBQU8sRUFBQyxlQUEzRztBQUEySCxXQUFLLEVBQUU7QUFBQ0MsZ0JBQVEsRUFBRSxTQUFYO0FBQXNCQyxnQkFBUSxFQUFFLFNBQWhDO0FBQTJDQyxxQkFBYSxFQUFFLE9BQTFEO0FBQW1FQyxzQkFBYyxFQUFFO0FBQW5GO0FBQWxJLG9CQUNILHlGQURHLGVBRUgsbUdBQ0k7QUFBUSxRQUFFLEVBQUM7QUFBWCxvQkFBcUI7QUFBYyxRQUFFLEVBQUMsSUFBakI7QUFBc0IsUUFBRSxFQUFDLEdBQXpCO0FBQTZCLGtCQUFZLEVBQUMsSUFBMUM7QUFBK0MsZ0JBQVUsRUFBQztBQUExRCxNQUFyQixDQURKLGVBRUk7QUFBUSxRQUFFLEVBQUM7QUFBWCxvQkFBcUI7QUFBYyxRQUFFLEVBQUMsSUFBakI7QUFBc0IsUUFBRSxFQUFDLEdBQXpCO0FBQTZCLGtCQUFZLEVBQUMsSUFBMUM7QUFBK0MsZ0JBQVUsRUFBQztBQUExRCxNQUFyQixDQUZKLGVBR0k7QUFBUSxRQUFFLEVBQUM7QUFBWCxvQkFBcUI7QUFBYyxRQUFFLEVBQUMsSUFBakI7QUFBc0IsUUFBRSxFQUFDLEdBQXpCO0FBQTZCLGtCQUFZLEVBQUMsSUFBMUM7QUFBK0MsZ0JBQVUsRUFBQztBQUExRCxNQUFyQixDQUhKLENBRkcsZUFPSCxnR0FDSTtBQUFNLFdBQUssRUFBRTtBQUFDQyxjQUFNLEVBQUU7QUFBVCxPQUFiO0FBQXdDLFVBQUksRUFBQyxTQUE3QztBQUF1RCxhQUFPLEVBQUMsR0FBL0Q7QUFBbUUsT0FBQyxFQUFDO0FBQXJFLE1BREosZUFFSTtBQUFNLFdBQUssRUFBRTtBQUFDQSxjQUFNLEVBQUU7QUFBVCxPQUFiO0FBQXdDLFVBQUksRUFBQyxTQUE3QztBQUF1RCxhQUFPLEVBQUMsR0FBL0Q7QUFBbUUsT0FBQyxFQUFDO0FBQXJFLE1BRkosZUFHSTtBQUFNLFdBQUssRUFBRTtBQUFDQSxjQUFNLEVBQUU7QUFBVCxPQUFiO0FBQXdDLFVBQUksRUFBQyxTQUE3QztBQUF1RCxhQUFPLEVBQUMsR0FBL0Q7QUFBbUUsT0FBQyxFQUFDO0FBQXJFLE1BSEosQ0FQRyxDQUFQO0FBYUg7O0FBZitDIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL2JkbG9nby5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQkRMb2dvIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gPHN2ZyBjbGFzc05hbWU9e1wiYmQtbG9nbyBcIiArIHRoaXMucHJvcHMuY2xhc3NOYW1lfSBoZWlnaHQ9XCIxMDAlXCIgd2lkdGg9e3RoaXMucHJvcHMuc2l6ZSB8fCBcIjE2cHhcIn0gdmlld0JveD1cIjAgMCAyMDAwIDIwMDBcIiBzdHlsZT17e2ZpbGxSdWxlOiBcImV2ZW5vZGRcIiwgY2xpcFJ1bGU6IFwiZXZlbm9kZFwiLCBzdHJva2VMaW5lY2FwOiBcInJvdW5kXCIsIHN0cm9rZUxpbmVqb2luOiBcInJvdW5kXCJ9fT5cclxuICAgICAgICAgICAgPG1ldGFkYXRhIC8+XHJcbiAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cInNoYWRvdzFcIj48ZmVEcm9wU2hhZG93IGR4PVwiMjBcIiBkeT1cIjBcIiBzdGREZXZpYXRpb249XCIyMFwiIGZsb29kQ29sb3I9XCJyZ2JhKDAsMCwwLDAuMzUpXCIgLz48L2ZpbHRlcj5cclxuICAgICAgICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJzaGFkb3cyXCI+PGZlRHJvcFNoYWRvdyBkeD1cIjE1XCIgZHk9XCIwXCIgc3RkRGV2aWF0aW9uPVwiMjBcIiBmbG9vZENvbG9yPVwicmdiYSgyNTUsMjU1LDI1NSwwLjE1KVwiIC8+PC9maWx0ZXI+XHJcbiAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwic2hhZG93M1wiPjxmZURyb3BTaGFkb3cgZHg9XCIxMFwiIGR5PVwiMFwiIHN0ZERldmlhdGlvbj1cIjIwXCIgZmxvb2RDb2xvcj1cInJnYmEoMCwwLDAsMC4zNSlcIiAvPjwvZmlsdGVyPlxyXG4gICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgIDxnPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggc3R5bGU9e3tmaWx0ZXI6IFwidXJsKCNzaGFkb3czKVwifX0gZmlsbD1cIiMxNzE3MTdcIiBvcGFjaXR5PVwiMVwiIGQ9XCJNMTE5NS40NCsxMzUuNDQyTDExOTUuNDQrMTM1LjQ0Mkw5OTcuNisxMzYuNDQyQzEwMjQuMisxNDkuNzQyKzExNzAuMzQrMTYzLjU0MisxMTkzLjY0KzE3OS43NDJDMTI2NC4zNCsyMjguODQyKzEzMTkuNzQrMjkxLjI0MisxMzU4LjI0KzM2NS4wNDJDMTM5OC4xNCs0NDEuNjQyKzE0MTkuNzQrNTMwLjY0MisxNDIyLjU0KzYyOS42NDJMMTQyMi41NCs2MzAuODQyTDE0MjIuNTQrNjMyLjA0MkMxNDIyLjU0Kzc3My4xNDIrMTQyMi41NCsxMjI4LjE0KzE0MjIuNTQrMTM2OS4xNEwxNDIyLjU0KzEzNzAuMzRMMTQyMi41NCsxMzcxLjU0QzE0MTkuODQrMTQ3MC41NCsxMzk4LjI0KzE1NTkuNTQrMTM1OC4yNCsxNjM2LjE0QzEzMTkuNzQrMTcwOS45NCsxMjY0LjQ0KzE3NzIuMzQrMTE5My42NCsxODIxLjQ0QzExNzEuMDQrMTgzNy4xNCsxMDI1LjcrMTg1MC41NCsxMDAwKzE4NjMuNTRMMTE5My41NCsxODY0LjU0QzE1MzkuNzQrMTg2Ni40NCsxODY0LjU0KzE2OTMuMzQrMTg2NC41NCsxMjk2LjY0TDE4NjQuNTQrNzE2Ljk0MkMxODY2LjQ0KzMxMi40NDIrMTU0MS42NCsxMzUuNDQyKzExOTUuNDQrMTM1LjQ0MlpcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggc3R5bGU9e3tmaWx0ZXI6IFwidXJsKCNzaGFkb3cyKVwifX0gZmlsbD1cIiMzRTgyRTVcIiBvcGFjaXR5PVwiMVwiIGQ9XCJNMTY5NS41NCs2MzEuNDQyQzE2ODUuODQrMjc4LjA0MisxNDA5LjM0KzEzNS40NDIrMTA1Mi45NCsxMzUuNDQyTDM2MS43NCsxMzYuNDQyTDgwMy43NCs0OTAuNDQyTDEwNjAuNzQrNDkwLjQ0MkMxMzM1LjI0KzQ5MC40NDIrMTMzNS4yNCs4MzUuMzQyKzEwNjAuNzQrODM1LjM0MkwxMDYwLjc0KzExNjQuODRDMTE1MC4yMisxMTY0Ljg0KzEyMTAuNTMrMTIwMS40OCsxMjQxLjY4KzEyNTAuODdDMTMwNi4wNysxMzUzKzEyNDUuNzYrMTUwOS42NCsxMDYwLjc0KzE1MDkuNjRMMzYxLjc0KzE4NjMuNTRMMTA1Mi45NCsxODY0LjU0QzE0MDkuMjQrMTg2NC41NCsxNjg1Ljc0KzE3MjEuOTQrMTY5NS41NCsxMzY4LjU0QzE2OTUuNTQrMTIwNS45NCsxNjUxLjA0KzEwODQuNDQrMTU3Mi42NCs5OTkuOTQyQzE2NTEuMDQrOTE1LjU0MisxNjk1LjU0Kzc5NC4wNDIrMTY5NS41NCs2MzEuNDQyWlwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBzdHlsZT17e2ZpbHRlcjogXCJ1cmwoI3NoYWRvdzEpXCJ9fSBmaWxsPVwiI0ZGRkZGRlwiIG9wYWNpdHk9XCIxXCIgZD1cIk0xNDY5LjI1KzYzMS40NDJDMTQ1OS41NSsyNzguMDQyKzExODMuMDUrMTM1LjQ0Mis4MjYuNjUrMTM1LjQ0MkwxMzUuNDUrMTM1LjQ0MkwxMzUuNDUrMTAwNEMxMzUuNDUrMTAwNCsxMzUuNDI3KzEyNTUuMjErMzU1LjYyNisxMjU1LjIxQzU3NS44MjUrMTI1NS4yMSs1NzUuODQ4KzEwMDQrNTc1Ljg0OCsxMDA0TDU3Ny40NSs0OTAuNDQyTDgzNC40NSs0OTAuNDQyQzExMDguOTUrNDkwLjQ0MisxMTA4Ljk1KzgzNS4zNDIrODM0LjQ1KzgzNS4zNDJMNjY0LjY1KzgzNS4zNDJMNjY0LjY1KzExNjQuODRMODM0LjQ1KzExNjQuODRDOTIzLjkzMisxMTY0Ljg0Kzk4NC4yNDQrMTIwMS40OCsxMDE1LjM5KzEyNTAuODdDMTA3OS43OCsxMzUzKzEwMTkuNDcrMTUwOS42NCs4MzQuNDUrMTUwOS42NEwxMzUuNDUrMTUwOS42NEwxMzUuNDUrMTg2NC41NEw4MjYuNjUrMTg2NC41NEMxMTgyLjk1KzE4NjQuNTQrMTQ1OS40NSsxNzIxLjk0KzE0NjkuMjUrMTM2OC41NEMxNDY5LjI1KzEyMDUuOTQrMTQyNC43NSsxMDg0LjQ0KzEzNDYuMzUrOTk5Ljk0MkMxNDI0Ljc1KzkxNS41NDIrMTQ2OS4yNSs3OTQuMDQyKzE0NjkuMjUrNjMxLjQ0MlpcIiAvPlxyXG4gICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/bdlogo.jsx\n"); /***/ }), @@ -826,7 +826,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return CloseButton; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass CloseButton extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 12 12\",\n style: {\n width: \"18px\",\n height: \"18px\"\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"g\", {\n className: \"background\",\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h12v12H0\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n className: \"fill\",\n fill: \"#dcddde\",\n d: \"M9.5 3.205L8.795 2.5 6 5.295 3.205 2.5l-.705.705L5.295 6 2.5 8.795l.705.705L6 6.705 8.795 9.5l.705-.705L6.705 6\"\n })));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvY2xvc2UuanN4P2JjZTEiXSwibmFtZXMiOlsiQ2xvc2VCdXR0b24iLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsIndpZHRoIiwiaGVpZ2h0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLFdBQU4sU0FBMEJDLDZDQUFLLENBQUNDLFNBQWhDLENBQTBDO0FBQ3JEQyxRQUFNLEdBQUc7QUFDTCx3QkFBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFdBQUssRUFBRTtBQUFDQyxhQUFLLEVBQUUsTUFBUjtBQUFnQkMsY0FBTSxFQUFFO0FBQXhCO0FBQWhDLG9CQUNIO0FBQUcsZUFBUyxFQUFDLFlBQWI7QUFBMEIsVUFBSSxFQUFDLE1BQS9CO0FBQXNDLGNBQVEsRUFBQztBQUEvQyxvQkFDSTtBQUFNLE9BQUMsRUFBQztBQUFSLE1BREosZUFFSTtBQUFNLGVBQVMsRUFBQyxNQUFoQjtBQUF1QixVQUFJLEVBQUMsU0FBNUI7QUFBc0MsT0FBQyxFQUFDO0FBQXhDLE1BRkosQ0FERyxDQUFQO0FBTUg7O0FBUm9EIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL2Nsb3NlLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDbG9zZUJ1dHRvbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgdmlld0JveD1cIjAgMCAxMiAxMlwiIHN0eWxlPXt7d2lkdGg6IFwiMThweFwiLCBoZWlnaHQ6IFwiMThweFwifX0+XHJcbiAgICAgICAgICAgIDxnIGNsYXNzTmFtZT1cImJhY2tncm91bmRcIiBmaWxsPVwibm9uZVwiIGZpbGxSdWxlPVwiZXZlbm9kZFwiPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0wIDBoMTJ2MTJIMFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzc05hbWU9XCJmaWxsXCIgZmlsbD1cIiNkY2RkZGVcIiBkPVwiTTkuNSAzLjIwNUw4Ljc5NSAyLjUgNiA1LjI5NSAzLjIwNSAyLjVsLS43MDUuNzA1TDUuMjk1IDYgMi41IDguNzk1bC43MDUuNzA1TDYgNi43MDUgOC43OTUgOS41bC43MDUtLjcwNUw2LjcwNSA2XCIgLz5cclxuICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgIDwvc3ZnPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/icons/close.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return CloseButton; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass CloseButton extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 12 12\",\n style: {\n width: \"18px\",\n height: \"18px\"\n }\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"g\", {\n className: \"background\",\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h12v12H0\"\n }), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n className: \"fill\",\n fill: \"#dcddde\",\n d: \"M9.5 3.205L8.795 2.5 6 5.295 3.205 2.5l-.705.705L5.295 6 2.5 8.795l.705.705L6 6.705 8.795 9.5l.705-.705L6.705 6\"\n })));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvY2xvc2UuanN4P2JjZTEiXSwibmFtZXMiOlsiQ2xvc2VCdXR0b24iLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsIndpZHRoIiwiaGVpZ2h0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLFdBQU4sU0FBMEJDLHlEQUFLLENBQUNDLFNBQWhDLENBQTBDO0FBQ3JEQyxRQUFNLEdBQUc7QUFDTCx3QkFBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFdBQUssRUFBRTtBQUFDQyxhQUFLLEVBQUUsTUFBUjtBQUFnQkMsY0FBTSxFQUFFO0FBQXhCO0FBQWhDLG9CQUNIO0FBQUcsZUFBUyxFQUFDLFlBQWI7QUFBMEIsVUFBSSxFQUFDLE1BQS9CO0FBQXNDLGNBQVEsRUFBQztBQUEvQyxvQkFDSTtBQUFNLE9BQUMsRUFBQztBQUFSLE1BREosZUFFSTtBQUFNLGVBQVMsRUFBQyxNQUFoQjtBQUF1QixVQUFJLEVBQUMsU0FBNUI7QUFBc0MsT0FBQyxFQUFDO0FBQXhDLE1BRkosQ0FERyxDQUFQO0FBTUg7O0FBUm9EIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL2Nsb3NlLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDbG9zZUJ1dHRvbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgdmlld0JveD1cIjAgMCAxMiAxMlwiIHN0eWxlPXt7d2lkdGg6IFwiMThweFwiLCBoZWlnaHQ6IFwiMThweFwifX0+XHJcbiAgICAgICAgICAgIDxnIGNsYXNzTmFtZT1cImJhY2tncm91bmRcIiBmaWxsPVwibm9uZVwiIGZpbGxSdWxlPVwiZXZlbm9kZFwiPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0wIDBoMTJ2MTJIMFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzc05hbWU9XCJmaWxsXCIgZmlsbD1cIiNkY2RkZGVcIiBkPVwiTTkuNSAzLjIwNUw4Ljc5NSAyLjUgNiA1LjI5NSAzLjIwNSAyLjVsLS43MDUuNzA1TDUuMjk1IDYgMi41IDguNzk1bC43MDUuNzA1TDYgNi43MDUgOC43OTUgOS41bC43MDUtLjcwNUw2LjcwNSA2XCIgLz5cclxuICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgIDwvc3ZnPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/icons/close.jsx\n"); /***/ }), @@ -838,7 +838,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Cog; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Cog extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"20px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 20 20\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h20v20H0V0z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvY29nLmpzeD8wYWJkIl0sIm5hbWVzIjpbIkNvZyIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwid2lkdGgiLCJoZWlnaHQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsR0FBTixTQUFrQkMsNkNBQUssQ0FBQ0MsU0FBeEIsQ0FBa0M7QUFDN0NDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFdBQUssRUFBRTtBQUFDRSxhQUFLLEVBQUVGLElBQVI7QUFBY0csY0FBTSxFQUFFSDtBQUF0QjtBQUFoQyxvQkFDQztBQUFNLFVBQUksRUFBQyxNQUFYO0FBQWtCLE9BQUMsRUFBQztBQUFwQixNQURELGVBRUM7QUFBTSxPQUFDLEVBQUM7QUFBUixNQUZELENBQVA7QUFJSDs7QUFQNEMiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvY29nLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb2cgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIyMHB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgdmlld0JveD1cIjAgMCAyMCAyMFwiIHN0eWxlPXt7d2lkdGg6IHNpemUsIGhlaWdodDogc2l6ZX19PlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyMHYyMEgwVjB6XCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUuOTUgMTAuNzhjLjAzLS4yNS4wNS0uNTEuMDUtLjc4cy0uMDItLjUzLS4wNi0uNzhsMS42OS0xLjMyYy4xNS0uMTIuMTktLjM0LjEtLjUxbC0xLjYtMi43N2MtLjEtLjE4LS4zMS0uMjQtLjQ5LS4xOGwtMS45OS44Yy0uNDItLjMyLS44Ni0uNTgtMS4zNS0uNzhMMTIgMi4zNGMtLjAzLS4yLS4yLS4zNC0uNC0uMzRIOC40Yy0uMiAwLS4zNi4xNC0uMzkuMzRsLS4zIDIuMTJjLS40OS4yLS45NC40Ny0xLjM1Ljc4bC0xLjk5LS44Yy0uMTgtLjA3LS4zOSAwLS40OS4xOGwtMS42IDIuNzdjLS4xLjE4LS4wNi4zOS4xLjUxbDEuNjkgMS4zMmMtLjA0LjI1LS4wNy41Mi0uMDcuNzhzLjAyLjUzLjA2Ljc4TDIuMzcgMTIuMWMtLjE1LjEyLS4xOS4zNC0uMS41MWwxLjYgMi43N2MuMS4xOC4zMS4yNC40OS4xOGwxLjk5LS44Yy40Mi4zMi44Ni41OCAxLjM1Ljc4bC4zIDIuMTJjLjA0LjIuMi4zNC40LjM0aDMuMmMuMiAwIC4zNy0uMTQuMzktLjM0bC4zLTIuMTJjLjQ5LS4yLjk0LS40NyAxLjM1LS43OGwxLjk5LjhjLjE4LjA3LjM5IDAgLjQ5LS4xOGwxLjYtMi43N2MuMS0uMTguMDYtLjM5LS4xLS41MWwtMS42Ny0xLjMyek0xMCAxM2MtMS42NSAwLTMtMS4zNS0zLTNzMS4zNS0zIDMtMyAzIDEuMzUgMyAzLTEuMzUgMy0zIDN6XCIgLz5cclxuICAgICAgICAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/cog.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Cog; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass Cog extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"20px\";\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 20 20\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h20v20H0V0z\"\n }), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvY29nLmpzeD8wYWJkIl0sIm5hbWVzIjpbIkNvZyIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwid2lkdGgiLCJoZWlnaHQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsR0FBTixTQUFrQkMseURBQUssQ0FBQ0MsU0FBeEIsQ0FBa0M7QUFDN0NDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFdBQUssRUFBRTtBQUFDRSxhQUFLLEVBQUVGLElBQVI7QUFBY0csY0FBTSxFQUFFSDtBQUF0QjtBQUFoQyxvQkFDQztBQUFNLFVBQUksRUFBQyxNQUFYO0FBQWtCLE9BQUMsRUFBQztBQUFwQixNQURELGVBRUM7QUFBTSxPQUFDLEVBQUM7QUFBUixNQUZELENBQVA7QUFJSDs7QUFQNEMiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvY29nLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb2cgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIyMHB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgdmlld0JveD1cIjAgMCAyMCAyMFwiIHN0eWxlPXt7d2lkdGg6IHNpemUsIGhlaWdodDogc2l6ZX19PlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyMHYyMEgwVjB6XCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUuOTUgMTAuNzhjLjAzLS4yNS4wNS0uNTEuMDUtLjc4cy0uMDItLjUzLS4wNi0uNzhsMS42OS0xLjMyYy4xNS0uMTIuMTktLjM0LjEtLjUxbC0xLjYtMi43N2MtLjEtLjE4LS4zMS0uMjQtLjQ5LS4xOGwtMS45OS44Yy0uNDItLjMyLS44Ni0uNTgtMS4zNS0uNzhMMTIgMi4zNGMtLjAzLS4yLS4yLS4zNC0uNC0uMzRIOC40Yy0uMiAwLS4zNi4xNC0uMzkuMzRsLS4zIDIuMTJjLS40OS4yLS45NC40Ny0xLjM1Ljc4bC0xLjk5LS44Yy0uMTgtLjA3LS4zOSAwLS40OS4xOGwtMS42IDIuNzdjLS4xLjE4LS4wNi4zOS4xLjUxbDEuNjkgMS4zMmMtLjA0LjI1LS4wNy41Mi0uMDcuNzhzLjAyLjUzLjA2Ljc4TDIuMzcgMTIuMWMtLjE1LjEyLS4xOS4zNC0uMS41MWwxLjYgMi43N2MuMS4xOC4zMS4yNC40OS4xOGwxLjk5LS44Yy40Mi4zMi44Ni41OCAxLjM1Ljc4bC4zIDIuMTJjLjA0LjIuMi4zNC40LjM0aDMuMmMuMiAwIC4zNy0uMTQuMzktLjM0bC4zLTIuMTJjLjQ5LS4yLjk0LS40NyAxLjM1LS43OGwxLjk5LjhjLjE4LjA3LjM5IDAgLjQ5LS4xOGwxLjYtMi43N2MuMS0uMTguMDYtLjM5LS4xLS41MWwtMS42Ny0xLjMyek0xMCAxM2MtMS42NSAwLTMtMS4zNS0zLTNzMS4zNS0zIDMtMyAzIDEuMzUgMyAzLTEuMzUgMy0zIDN6XCIgLz5cclxuICAgICAgICAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/cog.jsx\n"); /***/ }), @@ -850,7 +850,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Delete; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Delete extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n fill: \"#FFFFFF\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n },\n onClick: this.props.onClick\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvZGVsZXRlLmpzeD81YjBiIl0sIm5hbWVzIjpbIkRlbGV0ZSIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwiY2xhc3NOYW1lIiwid2lkdGgiLCJoZWlnaHQiLCJvbkNsaWNrIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLE1BQU4sU0FBcUJDLDZDQUFLLENBQUNDLFNBQTNCLENBQXFDO0FBQ2hEQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxJQUFJLEdBQUcsS0FBS0MsS0FBTCxDQUFXRCxJQUFYLElBQW1CLE1BQWhDO0FBQ0Esd0JBQU87QUFBSyxlQUFTLEVBQUUsS0FBS0MsS0FBTCxDQUFXQyxTQUFYLElBQXdCLEVBQXhDO0FBQTRDLFVBQUksRUFBQyxTQUFqRDtBQUEyRCxhQUFPLEVBQUMsV0FBbkU7QUFBK0UsV0FBSyxFQUFFO0FBQUNDLGFBQUssRUFBRUgsSUFBUjtBQUFjSSxjQUFNLEVBQUVKO0FBQXRCLE9BQXRGO0FBQW1ILGFBQU8sRUFBRSxLQUFLQyxLQUFMLENBQVdJO0FBQXZJLG9CQUNLO0FBQU0sVUFBSSxFQUFDLE1BQVg7QUFBa0IsT0FBQyxFQUFDO0FBQXBCLE1BREwsZUFDNEM7QUFBTSxPQUFDLEVBQUM7QUFBUixNQUQ1QyxlQUVLO0FBQU0sVUFBSSxFQUFDLE1BQVg7QUFBa0IsT0FBQyxFQUFDO0FBQXBCLE1BRkwsQ0FBUDtBQUlIOztBQVArQyIsImZpbGUiOiIuL3NyYy91aS9pY29ucy9kZWxldGUuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERlbGV0ZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMucHJvcHMuc2l6ZSB8fCBcIjI0cHhcIjtcclxuICAgICAgICByZXR1cm4gPHN2ZyBjbGFzc05hbWU9e3RoaXMucHJvcHMuY2xhc3NOYW1lIHx8IFwiXCJ9IGZpbGw9XCIjRkZGRkZGXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0eWxlPXt7d2lkdGg6IHNpemUsIGhlaWdodDogc2l6ZX19IG9uQ2xpY2s9e3RoaXMucHJvcHMub25DbGlja30+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyNHYyNEgwVjB6XCIvPjxwYXRoIGQ9XCJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyem0yLjQ2LTcuMTJsMS40MS0xLjQxTDEyIDEyLjU5bDIuMTItMi4xMiAxLjQxIDEuNDFMMTMuNDEgMTRsMi4xMiAyLjEyLTEuNDEgMS40MUwxMiAxNS40MWwtMi4xMiAyLjEyLTEuNDEtMS40MUwxMC41OSAxNGwtMi4xMy0yLjEyek0xNS41IDRsLTEtMWgtNWwtMSAxSDV2MmgxNFY0elwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwibm9uZVwiIGQ9XCJNMCAwaDI0djI0SDB6XCIvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/delete.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Delete; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass Delete extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n fill: \"#FFFFFF\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n },\n onClick: this.props.onClick\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z\"\n }), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvZGVsZXRlLmpzeD81YjBiIl0sIm5hbWVzIjpbIkRlbGV0ZSIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwiY2xhc3NOYW1lIiwid2lkdGgiLCJoZWlnaHQiLCJvbkNsaWNrIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLE1BQU4sU0FBcUJDLHlEQUFLLENBQUNDLFNBQTNCLENBQXFDO0FBQ2hEQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxJQUFJLEdBQUcsS0FBS0MsS0FBTCxDQUFXRCxJQUFYLElBQW1CLE1BQWhDO0FBQ0Esd0JBQU87QUFBSyxlQUFTLEVBQUUsS0FBS0MsS0FBTCxDQUFXQyxTQUFYLElBQXdCLEVBQXhDO0FBQTRDLFVBQUksRUFBQyxTQUFqRDtBQUEyRCxhQUFPLEVBQUMsV0FBbkU7QUFBK0UsV0FBSyxFQUFFO0FBQUNDLGFBQUssRUFBRUgsSUFBUjtBQUFjSSxjQUFNLEVBQUVKO0FBQXRCLE9BQXRGO0FBQW1ILGFBQU8sRUFBRSxLQUFLQyxLQUFMLENBQVdJO0FBQXZJLG9CQUNLO0FBQU0sVUFBSSxFQUFDLE1BQVg7QUFBa0IsT0FBQyxFQUFDO0FBQXBCLE1BREwsZUFDNEM7QUFBTSxPQUFDLEVBQUM7QUFBUixNQUQ1QyxlQUVLO0FBQU0sVUFBSSxFQUFDLE1BQVg7QUFBa0IsT0FBQyxFQUFDO0FBQXBCLE1BRkwsQ0FBUDtBQUlIOztBQVArQyIsImZpbGUiOiIuL3NyYy91aS9pY29ucy9kZWxldGUuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERlbGV0ZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMucHJvcHMuc2l6ZSB8fCBcIjI0cHhcIjtcclxuICAgICAgICByZXR1cm4gPHN2ZyBjbGFzc05hbWU9e3RoaXMucHJvcHMuY2xhc3NOYW1lIHx8IFwiXCJ9IGZpbGw9XCIjRkZGRkZGXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0eWxlPXt7d2lkdGg6IHNpemUsIGhlaWdodDogc2l6ZX19IG9uQ2xpY2s9e3RoaXMucHJvcHMub25DbGlja30+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyNHYyNEgwVjB6XCIvPjxwYXRoIGQ9XCJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyem0yLjQ2LTcuMTJsMS40MS0xLjQxTDEyIDEyLjU5bDIuMTItMi4xMiAxLjQxIDEuNDFMMTMuNDEgMTRsMi4xMiAyLjEyLTEuNDEgMS40MUwxMiAxNS40MWwtMi4xMiAyLjEyLTEuNDEtMS40MUwxMC41OSAxNGwtMi4xMy0yLjEyek0xNS41IDRsLTEtMWgtNWwtMSAxSDV2MmgxNFY0elwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwibm9uZVwiIGQ9XCJNMCAwaDI0djI0SDB6XCIvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/delete.jsx\n"); /***/ }), @@ -862,7 +862,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Detach; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Detach extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvZGV0YWNoLmpzeD8zY2VhIl0sIm5hbWVzIjpbIkRldGFjaCIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwid2lkdGgiLCJoZWlnaHQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsTUFBTixTQUFxQkMsNkNBQUssQ0FBQ0MsU0FBM0IsQ0FBcUM7QUFDaERDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFdBQUssRUFBRTtBQUFDRSxhQUFLLEVBQUVGLElBQVI7QUFBY0csY0FBTSxFQUFFSDtBQUF0QjtBQUFoQyxvQkFDQztBQUFNLE9BQUMsRUFBQyxlQUFSO0FBQXdCLFVBQUksRUFBQztBQUE3QixNQURELGVBRUM7QUFBTSxPQUFDLEVBQUM7QUFBUixNQUZELENBQVA7QUFJSDs7QUFQK0MiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvZGV0YWNoLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEZXRhY2ggZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIyNHB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0eWxlPXt7d2lkdGg6IHNpemUsIGhlaWdodDogc2l6ZX19PlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE5IDE5SDVWNWg3VjNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi03aC0ydjd6TTE0IDN2MmgzLjU5bC05LjgzIDkuODMgMS40MSAxLjQxTDE5IDYuNDFWMTBoMlYzaC03elwiIC8+XHJcbiAgICAgICAgICAgICAgIDwvc3ZnPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/icons/detach.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Detach; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass Detach extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n }), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvZGV0YWNoLmpzeD8zY2VhIl0sIm5hbWVzIjpbIkRldGFjaCIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwid2lkdGgiLCJoZWlnaHQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsTUFBTixTQUFxQkMseURBQUssQ0FBQ0MsU0FBM0IsQ0FBcUM7QUFDaERDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFdBQUssRUFBRTtBQUFDRSxhQUFLLEVBQUVGLElBQVI7QUFBY0csY0FBTSxFQUFFSDtBQUF0QjtBQUFoQyxvQkFDQztBQUFNLE9BQUMsRUFBQyxlQUFSO0FBQXdCLFVBQUksRUFBQztBQUE3QixNQURELGVBRUM7QUFBTSxPQUFDLEVBQUM7QUFBUixNQUZELENBQVA7QUFJSDs7QUFQK0MiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvZGV0YWNoLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEZXRhY2ggZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIyNHB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0eWxlPXt7d2lkdGg6IHNpemUsIGhlaWdodDogc2l6ZX19PlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE5IDE5SDVWNWg3VjNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi03aC0ydjd6TTE0IDN2MmgzLjU5bC05LjgzIDkuODMgMS40MSAxLjQxTDE5IDYuNDFWMTBoMlYzaC03elwiIC8+XHJcbiAgICAgICAgICAgICAgIDwvc3ZnPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/icons/detach.jsx\n"); /***/ }), @@ -874,7 +874,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return DownArrow; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass DownArrow extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"16px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n fill: \"#FFFFFF\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M8.12 9.29L12 13.17l3.88-3.88c.39-.39 1.02-.39 1.41 0 .39.39.39 1.02 0 1.41l-4.59 4.59c-.39.39-1.02.39-1.41 0L6.7 10.7c-.39-.39-.39-1.02 0-1.41.39-.38 1.03-.39 1.42 0z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvZG93bmFycm93LmpzeD8yMWY1Il0sIm5hbWVzIjpbIkRvd25BcnJvdyIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwiY2xhc3NOYW1lIiwid2lkdGgiLCJoZWlnaHQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsU0FBTixTQUF3QkMsNkNBQUssQ0FBQ0MsU0FBOUIsQ0FBd0M7QUFDbkRDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGVBQVMsRUFBRSxLQUFLQyxLQUFMLENBQVdDLFNBQVgsSUFBd0IsRUFBeEM7QUFBNEMsVUFBSSxFQUFDLFNBQWpEO0FBQTJELGFBQU8sRUFBQyxXQUFuRTtBQUErRSxXQUFLLEVBQUU7QUFBQ0MsYUFBSyxFQUFFSCxJQUFSO0FBQWNJLGNBQU0sRUFBRUo7QUFBdEI7QUFBdEYsb0JBQ0s7QUFBTSxPQUFDLEVBQUM7QUFBUixNQURMLENBQVA7QUFHSDs7QUFOa0QiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvZG93bmFycm93LmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEb3duQXJyb3cgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIxNnB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgY2xhc3NOYW1lPXt0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCBcIlwifSBmaWxsPVwiI0ZGRkZGRlwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fT5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMTIgOS4yOUwxMiAxMy4xN2wzLjg4LTMuODhjLjM5LS4zOSAxLjAyLS4zOSAxLjQxIDAgLjM5LjM5LjM5IDEuMDIgMCAxLjQxbC00LjU5IDQuNTljLS4zOS4zOS0xLjAyLjM5LTEuNDEgMEw2LjcgMTAuN2MtLjM5LS4zOS0uMzktMS4wMiAwLTEuNDEuMzktLjM4IDEuMDMtLjM5IDEuNDIgMHpcIi8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/downarrow.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return DownArrow; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass DownArrow extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"16px\";\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n fill: \"#FFFFFF\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M8.12 9.29L12 13.17l3.88-3.88c.39-.39 1.02-.39 1.41 0 .39.39.39 1.02 0 1.41l-4.59 4.59c-.39.39-1.02.39-1.41 0L6.7 10.7c-.39-.39-.39-1.02 0-1.41.39-.38 1.03-.39 1.42 0z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvZG93bmFycm93LmpzeD8yMWY1Il0sIm5hbWVzIjpbIkRvd25BcnJvdyIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwiY2xhc3NOYW1lIiwid2lkdGgiLCJoZWlnaHQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsU0FBTixTQUF3QkMseURBQUssQ0FBQ0MsU0FBOUIsQ0FBd0M7QUFDbkRDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGVBQVMsRUFBRSxLQUFLQyxLQUFMLENBQVdDLFNBQVgsSUFBd0IsRUFBeEM7QUFBNEMsVUFBSSxFQUFDLFNBQWpEO0FBQTJELGFBQU8sRUFBQyxXQUFuRTtBQUErRSxXQUFLLEVBQUU7QUFBQ0MsYUFBSyxFQUFFSCxJQUFSO0FBQWNJLGNBQU0sRUFBRUo7QUFBdEI7QUFBdEYsb0JBQ0s7QUFBTSxPQUFDLEVBQUM7QUFBUixNQURMLENBQVA7QUFHSDs7QUFOa0QiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvZG93bmFycm93LmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEb3duQXJyb3cgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIxNnB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgY2xhc3NOYW1lPXt0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCBcIlwifSBmaWxsPVwiI0ZGRkZGRlwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fT5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMTIgOS4yOUwxMiAxMy4xN2wzLjg4LTMuODhjLjM5LS4zOSAxLjAyLS4zOSAxLjQxIDAgLjM5LjM5LjM5IDEuMDIgMCAxLjQxbC00LjU5IDQuNTljLS4zOS4zOS0xLjAyLjM5LTEuNDEgMEw2LjcgMTAuN2MtLjM5LS4zOS0uMzktMS4wMiAwLTEuNDEuMzktLjM4IDEuMDMtLjM5IDEuNDIgMHpcIi8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/downarrow.jsx\n"); /***/ }), @@ -886,7 +886,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Edit; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Edit extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n fill: \"#FFFFFF\",\n style: {\n width: size,\n height: size\n },\n onClick: this.props.onClick\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvZWRpdC5qc3g/NDZlMyJdLCJuYW1lcyI6WyJFZGl0IiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJzaXplIiwicHJvcHMiLCJ3aWR0aCIsImhlaWdodCIsIm9uQ2xpY2siXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsSUFBTixTQUFtQkMsNkNBQUssQ0FBQ0MsU0FBekIsQ0FBbUM7QUFDOUNDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFVBQUksRUFBQyxTQUE5QjtBQUF3QyxXQUFLLEVBQUU7QUFBQ0UsYUFBSyxFQUFFRixJQUFSO0FBQWNHLGNBQU0sRUFBRUg7QUFBdEIsT0FBL0M7QUFBNEUsYUFBTyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0c7QUFBaEcsb0JBQ0M7QUFBTSxPQUFDLEVBQUM7QUFBUixNQURELGVBRUM7QUFBTSxPQUFDLEVBQUMsZUFBUjtBQUF3QixVQUFJLEVBQUM7QUFBN0IsTUFGRCxDQUFQO0FBSUg7O0FBUDZDIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL2VkaXQuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkaXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIyNHB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCIjRkZGRkZGXCIgc3R5bGU9e3t3aWR0aDogc2l6ZSwgaGVpZ2h0OiBzaXplfX0gb25DbGljaz17dGhpcy5wcm9wcy5vbkNsaWNrfT5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMyAxNy4yNVYyMWgzLjc1TDE3LjgxIDkuOTRsLTMuNzUtMy43NUwzIDE3LjI1ek0yMC43MSA3LjA0Yy4zOS0uMzkuMzktMS4wMiAwLTEuNDFsLTIuMzQtMi4zNGMtLjM5LS4zOS0xLjAyLS4zOS0xLjQxIDBsLTEuODMgMS44MyAzLjc1IDMuNzUgMS44My0xLjgzelwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/edit.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Edit; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass Edit extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n fill: \"#FFFFFF\",\n style: {\n width: size,\n height: size\n },\n onClick: this.props.onClick\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\"\n }), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvZWRpdC5qc3g/NDZlMyJdLCJuYW1lcyI6WyJFZGl0IiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJzaXplIiwicHJvcHMiLCJ3aWR0aCIsImhlaWdodCIsIm9uQ2xpY2siXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsSUFBTixTQUFtQkMseURBQUssQ0FBQ0MsU0FBekIsQ0FBbUM7QUFDOUNDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFVBQUksRUFBQyxTQUE5QjtBQUF3QyxXQUFLLEVBQUU7QUFBQ0UsYUFBSyxFQUFFRixJQUFSO0FBQWNHLGNBQU0sRUFBRUg7QUFBdEIsT0FBL0M7QUFBNEUsYUFBTyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0c7QUFBaEcsb0JBQ0M7QUFBTSxPQUFDLEVBQUM7QUFBUixNQURELGVBRUM7QUFBTSxPQUFDLEVBQUMsZUFBUjtBQUF3QixVQUFJLEVBQUM7QUFBN0IsTUFGRCxDQUFQO0FBSUg7O0FBUDZDIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL2VkaXQuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkaXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIyNHB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCIjRkZGRkZGXCIgc3R5bGU9e3t3aWR0aDogc2l6ZSwgaGVpZ2h0OiBzaXplfX0gb25DbGljaz17dGhpcy5wcm9wcy5vbkNsaWNrfT5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMyAxNy4yNVYyMWgzLjc1TDE3LjgxIDkuOTRsLTMuNzUtMy43NUwzIDE3LjI1ek0yMC43MSA3LjA0Yy4zOS0uMzkuMzktMS4wMiAwLTEuNDFsLTIuMzQtMi4zNGMtLjM5LS4zOS0xLjAyLS4zOS0xLjQxIDBsLTEuODMgMS44MyAzLjc1IDMuNzUgMS44My0xLjgzelwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/edit.jsx\n"); /***/ }), @@ -898,7 +898,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FullScreen; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass FullScreen extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n fill: \"#FFFFFF\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n },\n onClick: this.props.onClick\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvZnVsbHNjcmVlbi5qc3g/ZjUzMSJdLCJuYW1lcyI6WyJGdWxsU2NyZWVuIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJzaXplIiwicHJvcHMiLCJjbGFzc05hbWUiLCJ3aWR0aCIsImhlaWdodCIsIm9uQ2xpY2siXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsVUFBTixTQUF5QkMsNkNBQUssQ0FBQ0MsU0FBL0IsQ0FBeUM7QUFDcERDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGVBQVMsRUFBRSxLQUFLQyxLQUFMLENBQVdDLFNBQVgsSUFBd0IsRUFBeEM7QUFBNEMsVUFBSSxFQUFDLFNBQWpEO0FBQTJELGFBQU8sRUFBQyxXQUFuRTtBQUErRSxXQUFLLEVBQUU7QUFBQ0MsYUFBSyxFQUFFSCxJQUFSO0FBQWNJLGNBQU0sRUFBRUo7QUFBdEIsT0FBdEY7QUFBbUgsYUFBTyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0k7QUFBdkksb0JBQ0s7QUFBTSxVQUFJLEVBQUMsTUFBWDtBQUFrQixPQUFDLEVBQUM7QUFBcEIsTUFETCxlQUVLO0FBQU0sT0FBQyxFQUFDO0FBQVIsTUFGTCxDQUFQO0FBSUg7O0FBUG1EIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL2Z1bGxzY3JlZW4uanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZ1bGxTY3JlZW4gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIyNHB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgY2xhc3NOYW1lPXt0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCBcIlwifSBmaWxsPVwiI0ZGRkZGRlwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fSBvbkNsaWNrPXt0aGlzLnByb3BzLm9uQ2xpY2t9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJub25lXCIgZD1cIk0wIDBoMjR2MjRIMFYwelwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTcgMTRINXY1aDV2LTJIN3YtM3ptLTItNGgyVjdoM1Y1SDV2NXptMTIgN2gtM3YyaDV2LTVoLTJ2M3pNMTQgNXYyaDN2M2gyVjVoLTV6XCIvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/fullscreen.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FullScreen; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass FullScreen extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n fill: \"#FFFFFF\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n },\n onClick: this.props.onClick\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvZnVsbHNjcmVlbi5qc3g/ZjUzMSJdLCJuYW1lcyI6WyJGdWxsU2NyZWVuIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJzaXplIiwicHJvcHMiLCJjbGFzc05hbWUiLCJ3aWR0aCIsImhlaWdodCIsIm9uQ2xpY2siXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsVUFBTixTQUF5QkMseURBQUssQ0FBQ0MsU0FBL0IsQ0FBeUM7QUFDcERDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGVBQVMsRUFBRSxLQUFLQyxLQUFMLENBQVdDLFNBQVgsSUFBd0IsRUFBeEM7QUFBNEMsVUFBSSxFQUFDLFNBQWpEO0FBQTJELGFBQU8sRUFBQyxXQUFuRTtBQUErRSxXQUFLLEVBQUU7QUFBQ0MsYUFBSyxFQUFFSCxJQUFSO0FBQWNJLGNBQU0sRUFBRUo7QUFBdEIsT0FBdEY7QUFBbUgsYUFBTyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0k7QUFBdkksb0JBQ0s7QUFBTSxVQUFJLEVBQUMsTUFBWDtBQUFrQixPQUFDLEVBQUM7QUFBcEIsTUFETCxlQUVLO0FBQU0sT0FBQyxFQUFDO0FBQVIsTUFGTCxDQUFQO0FBSUg7O0FBUG1EIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL2Z1bGxzY3JlZW4uanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZ1bGxTY3JlZW4gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIyNHB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgY2xhc3NOYW1lPXt0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCBcIlwifSBmaWxsPVwiI0ZGRkZGRlwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fSBvbkNsaWNrPXt0aGlzLnByb3BzLm9uQ2xpY2t9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJub25lXCIgZD1cIk0wIDBoMjR2MjRIMFYwelwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTcgMTRINXY1aDV2LTJIN3YtM3ptLTItNGgyVjdoM1Y1SDV2NXptMTIgN2gtM3YyaDV2LTVoLTJ2M3pNMTQgNXYyaDN2M2gyVjVoLTV6XCIvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/fullscreen.jsx\n"); /***/ }), @@ -910,7 +910,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return History; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass History extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"18px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n fill: \"#FFFFFF\",\n className: this.props.className || \"\",\n style: {\n width: size,\n height: size\n },\n onClick: this.props.onClick\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvaGlzdG9yeS5qc3g/NjZiYyJdLCJuYW1lcyI6WyJIaXN0b3J5IiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJzaXplIiwicHJvcHMiLCJjbGFzc05hbWUiLCJ3aWR0aCIsImhlaWdodCIsIm9uQ2xpY2siXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsT0FBTixTQUFzQkMsNkNBQUssQ0FBQ0MsU0FBNUIsQ0FBc0M7QUFDakRDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFVBQUksRUFBQyxTQUE5QjtBQUF3QyxlQUFTLEVBQUUsS0FBS0MsS0FBTCxDQUFXQyxTQUFYLElBQXdCLEVBQTNFO0FBQStFLFdBQUssRUFBRTtBQUFDQyxhQUFLLEVBQUVILElBQVI7QUFBY0ksY0FBTSxFQUFFSjtBQUF0QixPQUF0RjtBQUFtSCxhQUFPLEVBQUUsS0FBS0MsS0FBTCxDQUFXSTtBQUF2SSxvQkFDQztBQUFNLE9BQUMsRUFBQyxlQUFSO0FBQXdCLFVBQUksRUFBQztBQUE3QixNQURELGVBRUM7QUFBTSxPQUFDLEVBQUM7QUFBUixNQUZELENBQVA7QUFJSDs7QUFQZ0QiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvaGlzdG9yeS5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSGlzdG9yeSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMucHJvcHMuc2l6ZSB8fCBcIjE4cHhcIjtcclxuICAgICAgICByZXR1cm4gPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIiNGRkZGRkZcIiBjbGFzc05hbWU9e3RoaXMucHJvcHMuY2xhc3NOYW1lIHx8IFwiXCJ9IHN0eWxlPXt7d2lkdGg6IHNpemUsIGhlaWdodDogc2l6ZX19IG9uQ2xpY2s9e3RoaXMucHJvcHMub25DbGlja30+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMyAzYy00Ljk3IDAtOSA0LjAzLTkgOUgxbDMuODkgMy44OS4wNy4xNEw5IDEySDZjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgNy0zLjEzIDctNyA3Yy0xLjkzIDAtMy42OC0uNzktNC45NC0yLjA2bC0xLjQyIDEuNDJDOC4yNyAxOS45OSAxMC41MSAyMSAxMyAyMWM0Ljk3IDAgOS00LjAzIDktOXMtNC4wMy05LTktOXptLTEgNXY1bDQuMjggMi41NC43Mi0xLjIxLTMuNS0yLjA4VjhIMTJ6XCIvPlxyXG4gICAgICAgICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/history.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return History; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass History extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"18px\";\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n fill: \"#FFFFFF\",\n className: this.props.className || \"\",\n style: {\n width: size,\n height: size\n },\n onClick: this.props.onClick\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n }), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvaGlzdG9yeS5qc3g/NjZiYyJdLCJuYW1lcyI6WyJIaXN0b3J5IiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJzaXplIiwicHJvcHMiLCJjbGFzc05hbWUiLCJ3aWR0aCIsImhlaWdodCIsIm9uQ2xpY2siXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsT0FBTixTQUFzQkMseURBQUssQ0FBQ0MsU0FBNUIsQ0FBc0M7QUFDakRDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFVBQUksRUFBQyxTQUE5QjtBQUF3QyxlQUFTLEVBQUUsS0FBS0MsS0FBTCxDQUFXQyxTQUFYLElBQXdCLEVBQTNFO0FBQStFLFdBQUssRUFBRTtBQUFDQyxhQUFLLEVBQUVILElBQVI7QUFBY0ksY0FBTSxFQUFFSjtBQUF0QixPQUF0RjtBQUFtSCxhQUFPLEVBQUUsS0FBS0MsS0FBTCxDQUFXSTtBQUF2SSxvQkFDQztBQUFNLE9BQUMsRUFBQyxlQUFSO0FBQXdCLFVBQUksRUFBQztBQUE3QixNQURELGVBRUM7QUFBTSxPQUFDLEVBQUM7QUFBUixNQUZELENBQVA7QUFJSDs7QUFQZ0QiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvaGlzdG9yeS5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSGlzdG9yeSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMucHJvcHMuc2l6ZSB8fCBcIjE4cHhcIjtcclxuICAgICAgICByZXR1cm4gPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIiNGRkZGRkZcIiBjbGFzc05hbWU9e3RoaXMucHJvcHMuY2xhc3NOYW1lIHx8IFwiXCJ9IHN0eWxlPXt7d2lkdGg6IHNpemUsIGhlaWdodDogc2l6ZX19IG9uQ2xpY2s9e3RoaXMucHJvcHMub25DbGlja30+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMyAzYy00Ljk3IDAtOSA0LjAzLTkgOUgxbDMuODkgMy44OS4wNy4xNEw5IDEySDZjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgNy0zLjEzIDctNyA3Yy0xLjkzIDAtMy42OC0uNzktNC45NC0yLjA2bC0xLjQyIDEuNDJDOC4yNyAxOS45OSAxMC41MSAyMSAxMyAyMWM0Ljk3IDAgOS00LjAzIDktOXMtNC4wMy05LTktOXptLTEgNXY1bDQuMjggMi41NC43Mi0xLjIxLTMuNS0yLjA4VjhIMTJ6XCIvPlxyXG4gICAgICAgICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/history.jsx\n"); /***/ }), @@ -922,7 +922,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReloadIcon; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass ReloadIcon extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n onClick: this.props.onClick,\n fill: \"#dcddde\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvcmVsb2FkLmpzeD8zOGIyIl0sIm5hbWVzIjpbIlJlbG9hZEljb24iLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsInNpemUiLCJwcm9wcyIsImNsYXNzTmFtZSIsIm9uQ2xpY2siLCJ3aWR0aCIsImhlaWdodCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxVQUFOLFNBQXlCQyw2Q0FBSyxDQUFDQyxTQUEvQixDQUF5QztBQUNwREMsUUFBTSxHQUFHO0FBQ0wsVUFBTUMsSUFBSSxHQUFHLEtBQUtDLEtBQUwsQ0FBV0QsSUFBWCxJQUFtQixNQUFoQztBQUNBLHdCQUFPO0FBQUssZUFBUyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0MsU0FBWCxJQUF3QixFQUF4QztBQUE0QyxhQUFPLEVBQUUsS0FBS0QsS0FBTCxDQUFXRSxPQUFoRTtBQUF5RSxVQUFJLEVBQUMsU0FBOUU7QUFBd0YsYUFBTyxFQUFDLFdBQWhHO0FBQTRHLFdBQUssRUFBRTtBQUFDQyxhQUFLLEVBQUVKLElBQVI7QUFBY0ssY0FBTSxFQUFFTDtBQUF0QjtBQUFuSCxvQkFDSDtBQUFNLE9BQUMsRUFBQztBQUFSLE1BREcsZUFFSDtBQUFNLFVBQUksRUFBQyxNQUFYO0FBQWtCLE9BQUMsRUFBQztBQUFwQixNQUZHLENBQVA7QUFJSDs7QUFQbUQiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvcmVsb2FkLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWxvYWRJY29uIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5wcm9wcy5zaXplIHx8IFwiMjRweFwiO1xyXG4gICAgICAgIHJldHVybiA8c3ZnIGNsYXNzTmFtZT17dGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgXCJcIn0gb25DbGljaz17dGhpcy5wcm9wcy5vbkNsaWNrfSBmaWxsPVwiI2RjZGRkZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fT5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0xNy42NSA2LjM1QzE2LjIgNC45IDE0LjIxIDQgMTIgNGMtNC40MiAwLTcuOTkgMy41OC03Ljk5IDhzMy41NyA4IDcuOTkgOGMzLjczIDAgNi44NC0yLjU1IDcuNzMtNmgtMi4wOGMtLjgyIDIuMzMtMy4wNCA0LTUuNjUgNC0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02YzEuNjYgMCAzLjE0LjY5IDQuMjIgMS43OEwxMyAxMWg3VjRsLTIuMzUgMi4zNXpcIiAvPlxyXG4gICAgICAgICAgICA8cGF0aCBmaWxsPVwibm9uZVwiIGQ9XCJNMCAwaDI0djI0SDB6XCIgLz5cclxuICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/reload.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReloadIcon; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass ReloadIcon extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n onClick: this.props.onClick,\n fill: \"#dcddde\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z\"\n }), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvcmVsb2FkLmpzeD8zOGIyIl0sIm5hbWVzIjpbIlJlbG9hZEljb24iLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsInNpemUiLCJwcm9wcyIsImNsYXNzTmFtZSIsIm9uQ2xpY2siLCJ3aWR0aCIsImhlaWdodCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxVQUFOLFNBQXlCQyx5REFBSyxDQUFDQyxTQUEvQixDQUF5QztBQUNwREMsUUFBTSxHQUFHO0FBQ0wsVUFBTUMsSUFBSSxHQUFHLEtBQUtDLEtBQUwsQ0FBV0QsSUFBWCxJQUFtQixNQUFoQztBQUNBLHdCQUFPO0FBQUssZUFBUyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0MsU0FBWCxJQUF3QixFQUF4QztBQUE0QyxhQUFPLEVBQUUsS0FBS0QsS0FBTCxDQUFXRSxPQUFoRTtBQUF5RSxVQUFJLEVBQUMsU0FBOUU7QUFBd0YsYUFBTyxFQUFDLFdBQWhHO0FBQTRHLFdBQUssRUFBRTtBQUFDQyxhQUFLLEVBQUVKLElBQVI7QUFBY0ssY0FBTSxFQUFFTDtBQUF0QjtBQUFuSCxvQkFDSDtBQUFNLE9BQUMsRUFBQztBQUFSLE1BREcsZUFFSDtBQUFNLFVBQUksRUFBQyxNQUFYO0FBQWtCLE9BQUMsRUFBQztBQUFwQixNQUZHLENBQVA7QUFJSDs7QUFQbUQiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvcmVsb2FkLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWxvYWRJY29uIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5wcm9wcy5zaXplIHx8IFwiMjRweFwiO1xyXG4gICAgICAgIHJldHVybiA8c3ZnIGNsYXNzTmFtZT17dGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgXCJcIn0gb25DbGljaz17dGhpcy5wcm9wcy5vbkNsaWNrfSBmaWxsPVwiI2RjZGRkZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fT5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0xNy42NSA2LjM1QzE2LjIgNC45IDE0LjIxIDQgMTIgNGMtNC40MiAwLTcuOTkgMy41OC03Ljk5IDhzMy41NyA4IDcuOTkgOGMzLjczIDAgNi44NC0yLjU1IDcuNzMtNmgtMi4wOGMtLjgyIDIuMzMtMy4wNCA0LTUuNjUgNC0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02YzEuNjYgMCAzLjE0LjY5IDQuMjIgMS43OEwxMyAxMWg3VjRsLTIuMzUgMi4zNXpcIiAvPlxyXG4gICAgICAgICAgICA8cGF0aCBmaWxsPVwibm9uZVwiIGQ9XCJNMCAwaDI0djI0SDB6XCIgLz5cclxuICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/reload.jsx\n"); /***/ }), @@ -934,7 +934,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Save; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Save extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm2 16H5V5h11.17L19 7.83V19zm-7-7c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zM6 6h9v4H6z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvc2F2ZS5qc3g/NTgwZiJdLCJuYW1lcyI6WyJTYXZlIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJzaXplIiwicHJvcHMiLCJ3aWR0aCIsImhlaWdodCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxJQUFOLFNBQW1CQyw2Q0FBSyxDQUFDQyxTQUF6QixDQUFtQztBQUM5Q0MsUUFBTSxHQUFHO0FBQ0wsVUFBTUMsSUFBSSxHQUFHLEtBQUtDLEtBQUwsQ0FBV0QsSUFBWCxJQUFtQixNQUFoQztBQUNBLHdCQUFPO0FBQUssYUFBTyxFQUFDLFdBQWI7QUFBeUIsV0FBSyxFQUFFO0FBQUNFLGFBQUssRUFBRUYsSUFBUjtBQUFjRyxjQUFNLEVBQUVIO0FBQXRCO0FBQWhDLG9CQUNDO0FBQU0sVUFBSSxFQUFDLE1BQVg7QUFBa0IsT0FBQyxFQUFDO0FBQXBCLE1BREQsZUFFQztBQUFNLE9BQUMsRUFBQztBQUFSLE1BRkQsQ0FBUDtBQUlIOztBQVA2QyIsImZpbGUiOiIuL3NyYy91aS9pY29ucy9zYXZlLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTYXZlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5wcm9wcy5zaXplIHx8IFwiMjRweFwiO1xyXG4gICAgICAgIHJldHVybiA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fT5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJub25lXCIgZD1cIk0wIDBoMjR2MjRIMFYwelwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE3IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptMiAxNkg1VjVoMTEuMTdMMTkgNy44M1YxOXptLTctN2MtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6TTYgNmg5djRINnpcIiAvPlxyXG4gICAgICAgICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/save.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Save; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass Save extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm2 16H5V5h11.17L19 7.83V19zm-7-7c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zM6 6h9v4H6z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvc2F2ZS5qc3g/NTgwZiJdLCJuYW1lcyI6WyJTYXZlIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJzaXplIiwicHJvcHMiLCJ3aWR0aCIsImhlaWdodCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxJQUFOLFNBQW1CQyx5REFBSyxDQUFDQyxTQUF6QixDQUFtQztBQUM5Q0MsUUFBTSxHQUFHO0FBQ0wsVUFBTUMsSUFBSSxHQUFHLEtBQUtDLEtBQUwsQ0FBV0QsSUFBWCxJQUFtQixNQUFoQztBQUNBLHdCQUFPO0FBQUssYUFBTyxFQUFDLFdBQWI7QUFBeUIsV0FBSyxFQUFFO0FBQUNFLGFBQUssRUFBRUYsSUFBUjtBQUFjRyxjQUFNLEVBQUVIO0FBQXRCO0FBQWhDLG9CQUNDO0FBQU0sVUFBSSxFQUFDLE1BQVg7QUFBa0IsT0FBQyxFQUFDO0FBQXBCLE1BREQsZUFFQztBQUFNLE9BQUMsRUFBQztBQUFSLE1BRkQsQ0FBUDtBQUlIOztBQVA2QyIsImZpbGUiOiIuL3NyYy91aS9pY29ucy9zYXZlLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTYXZlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5wcm9wcy5zaXplIHx8IFwiMjRweFwiO1xyXG4gICAgICAgIHJldHVybiA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fT5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJub25lXCIgZD1cIk0wIDBoMjR2MjRIMFYwelwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE3IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptMiAxNkg1VjVoMTEuMTdMMTkgNy44M1YxOXptLTctN2MtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6TTYgNmg5djRINnpcIiAvPlxyXG4gICAgICAgICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/save.jsx\n"); /***/ }), @@ -946,7 +946,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Search; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Search extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"16px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n fill: \"#FFFFFF\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvc2VhcmNoLmpzeD84MDlmIl0sIm5hbWVzIjpbIlNlYXJjaCIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwiY2xhc3NOYW1lIiwid2lkdGgiLCJoZWlnaHQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsTUFBTixTQUFxQkMsNkNBQUssQ0FBQ0MsU0FBM0IsQ0FBcUM7QUFDaERDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGVBQVMsRUFBRSxLQUFLQyxLQUFMLENBQVdDLFNBQVgsSUFBd0IsRUFBeEM7QUFBNEMsVUFBSSxFQUFDLFNBQWpEO0FBQTJELGFBQU8sRUFBQyxXQUFuRTtBQUErRSxXQUFLLEVBQUU7QUFBQ0MsYUFBSyxFQUFFSCxJQUFSO0FBQWNJLGNBQU0sRUFBRUo7QUFBdEI7QUFBdEYsb0JBQ0s7QUFBTSxVQUFJLEVBQUMsTUFBWDtBQUFrQixPQUFDLEVBQUM7QUFBcEIsTUFETCxlQUVLO0FBQU0sT0FBQyxFQUFDO0FBQVIsTUFGTCxDQUFQO0FBSUg7O0FBUCtDIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL3NlYXJjaC5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VhcmNoIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5wcm9wcy5zaXplIHx8IFwiMTZweFwiO1xyXG4gICAgICAgIHJldHVybiA8c3ZnIGNsYXNzTmFtZT17dGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgXCJcIn0gZmlsbD1cIiNGRkZGRkZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3R5bGU9e3t3aWR0aDogc2l6ZSwgaGVpZ2h0OiBzaXplfX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyNHYyNEgwVjB6XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpcIi8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/search.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Search; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass Search extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"16px\";\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n fill: \"#FFFFFF\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvc2VhcmNoLmpzeD84MDlmIl0sIm5hbWVzIjpbIlNlYXJjaCIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwiY2xhc3NOYW1lIiwid2lkdGgiLCJoZWlnaHQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsTUFBTixTQUFxQkMseURBQUssQ0FBQ0MsU0FBM0IsQ0FBcUM7QUFDaERDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGVBQVMsRUFBRSxLQUFLQyxLQUFMLENBQVdDLFNBQVgsSUFBd0IsRUFBeEM7QUFBNEMsVUFBSSxFQUFDLFNBQWpEO0FBQTJELGFBQU8sRUFBQyxXQUFuRTtBQUErRSxXQUFLLEVBQUU7QUFBQ0MsYUFBSyxFQUFFSCxJQUFSO0FBQWNJLGNBQU0sRUFBRUo7QUFBdEI7QUFBdEYsb0JBQ0s7QUFBTSxVQUFJLEVBQUMsTUFBWDtBQUFrQixPQUFDLEVBQUM7QUFBcEIsTUFETCxlQUVLO0FBQU0sT0FBQyxFQUFDO0FBQVIsTUFGTCxDQUFQO0FBSUg7O0FBUCtDIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL3NlYXJjaC5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VhcmNoIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5wcm9wcy5zaXplIHx8IFwiMTZweFwiO1xyXG4gICAgICAgIHJldHVybiA8c3ZnIGNsYXNzTmFtZT17dGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgXCJcIn0gZmlsbD1cIiNGRkZGRkZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3R5bGU9e3t3aWR0aDogc2l6ZSwgaGVpZ2h0OiBzaXplfX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyNHYyNEgwVjB6XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpcIi8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/search.jsx\n"); /***/ }), @@ -958,7 +958,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AddonEditor; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _customcss_editor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../customcss/editor */ \"./src/ui/customcss/editor.jsx\");\n/* harmony import */ var _icons_save__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/save */ \"./src/ui/icons/save.jsx\");\n/* harmony import */ var _icons_edit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/edit */ \"./src/ui/icons/edit.jsx\");\n/* harmony import */ var _icons_cog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons/cog */ \"./src/ui/icons/cog.jsx\");\n\n\n\n\n\nclass AddonEditor extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.hasUnsavedChanges = false;\n this.onChange = this.onChange.bind(this);\n this.save = this.save.bind(this);\n this.openNative = this.openNative.bind(this);\n this.update = this.update.bind(this);\n this.controls = [{\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_save__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.save,\n onClick: this.save\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_edit__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.openNative,\n onClick: this.openNative\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_cog__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.settings,\n onClick: \"showSettings\"\n }];\n }\n\n update() {\n this.forceUpdate();\n }\n\n updateEditor(newCSS) {\n if (!this.editor) return;\n this.editor.value = newCSS;\n }\n\n get value() {\n return this.editor.session.getValue();\n }\n\n set value(newValue) {\n this.editor.setValue(newValue);\n }\n\n showSettings() {\n return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor);\n }\n\n resize() {\n return this.editor.resize();\n }\n\n setEditorRef(editor) {\n this.editor = editor;\n if (this.props.editorRef && typeof this.props.editorRef.current !== \"undefined\") this.props.editorRef.current = editor;else if (this.props.editorRef) this.props.editorRef = editor;\n }\n\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_customcss_editor__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n ref: this.setEditorRef.bind(this),\n language: this.props.language,\n id: this.props.id || \"bd-addon-editor\",\n controls: this.controls,\n value: this.props.content,\n onChange: this.onChange\n });\n }\n\n onChange() {\n this.hasUnsavedChanges = true;\n }\n\n save(event, content) {\n this.hasUnsavedChanges = false;\n if (this.props.save) this.props.save(content);\n }\n\n openNative() {\n if (this.props.openNative) this.props.openNative();\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvbWlzYy9hZGRvbmVkaXRvci5qc3g/ZWI5YyJdLCJuYW1lcyI6WyJBZGRvbkVkaXRvciIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsImhhc1Vuc2F2ZWRDaGFuZ2VzIiwib25DaGFuZ2UiLCJiaW5kIiwic2F2ZSIsIm9wZW5OYXRpdmUiLCJ1cGRhdGUiLCJjb250cm9scyIsImxhYmVsIiwiY3JlYXRlRWxlbWVudCIsIlNhdmUiLCJzaXplIiwidG9vbHRpcCIsIlN0cmluZ3MiLCJDdXN0b21DU1MiLCJvbkNsaWNrIiwiRWRpdCIsIkNvZyIsInNldHRpbmdzIiwiZm9yY2VVcGRhdGUiLCJ1cGRhdGVFZGl0b3IiLCJuZXdDU1MiLCJlZGl0b3IiLCJ2YWx1ZSIsInNlc3Npb24iLCJnZXRWYWx1ZSIsIm5ld1ZhbHVlIiwic2V0VmFsdWUiLCJzaG93U2V0dGluZ3MiLCJrZXlCaW5kaW5nIiwiJGRlZmF1bHRIYW5kbGVyIiwiY29tbWFuZHMiLCJzaG93U2V0dGluZ3NNZW51IiwiZXhlYyIsInJlc2l6ZSIsInNldEVkaXRvclJlZiIsImVkaXRvclJlZiIsImN1cnJlbnQiLCJyZW5kZXIiLCJsYW5ndWFnZSIsImlkIiwiY29udGVudCIsImV2ZW50Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFZSxNQUFNQSxXQUFOLFNBQTBCQyw2Q0FBSyxDQUFDQyxTQUFoQyxDQUEwQztBQUVyREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBRUEsU0FBS0MsaUJBQUwsR0FBeUIsS0FBekI7QUFDQSxTQUFLQyxRQUFMLEdBQWdCLEtBQUtBLFFBQUwsQ0FBY0MsSUFBZCxDQUFtQixJQUFuQixDQUFoQjtBQUNBLFNBQUtDLElBQUwsR0FBWSxLQUFLQSxJQUFMLENBQVVELElBQVYsQ0FBZSxJQUFmLENB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QXlCLElBQXpCO0FBQ0g7O0FBRURHLE1BQUksQ0FBQ3NDLEtBQUQsRUFBUUQsT0FBUixFQUFpQjtBQUNqQixTQUFLeEMsaUJBQUwsR0FBeUIsS0FBekI7QUFDQSxRQUFJLEtBQUtELEtBQUwsQ0FBV0ksSUFBZixFQUFxQixLQUFLSixLQUFMLENBQVdJLElBQVgsQ0FBZ0JxQyxPQUFoQjtBQUN4Qjs7QUFFRHBDLFlBQVUsR0FBRztBQUNULFFBQUksS0FBS0wsS0FBTCxDQUFXSyxVQUFmLEVBQTJCLEtBQUtMLEtBQUwsQ0FBV0ssVUFBWDtBQUM5Qjs7QUF4RG9EIiwiZmlsZSI6Ii4vc3JjL3VpL21pc2MvYWRkb25lZGl0b3IuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmltcG9ydCBFZGl0b3IgZnJvbSBcIi4uL2N1c3RvbWNzcy9lZGl0b3JcIjtcclxuaW1wb3J0IFNhdmUgZnJvbSBcIi4uL2ljb25zL3NhdmVcIjtcclxuaW1wb3J0IEVkaXQgZnJvbSBcIi4uL2ljb25zL2VkaXRcIjtcclxuaW1wb3J0IENvZyBmcm9tIFwiLi4vaWNvbnMvY29nXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBZGRvbkVkaXRvciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcblxyXG4gICAgICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuc2F2ZSA9IHRoaXMuc2F2ZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub3Blbk5hdGl2ZSA9IHRoaXMub3Blbk5hdGl2ZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlID0gdGhpcy51cGRhdGUuYmluZCh0aGlzKTtcclxuXHJcbiAgICAgICAgdGhpcy5jb250cm9scyA9IFtcclxuICAgICAgICAgICAge2xhYmVsOiBSZWFjdC5jcmVhdGVFbGVtZW50KFNhdmUsIHtzaXplOiBcIjE4cHhcIn0pLCB0b29sdGlwOiBTdHJpbmdzLkN1c3RvbUNTUy5zYXZlLCBvbkNsaWNrOiB0aGlzLnNhdmV9LFxyXG4gICAgICAgICAgICB7bGFiZWw6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoRWRpdCwge3NpemU6IFwiMThweFwifSksIHRvb2x0aXA6IFN0cmluZ3MuQ3VzdG9tQ1NTLm9wZW5OYXRpdmUsIG9uQ2xpY2s6IHRoaXMub3Blbk5hdGl2ZX0sXHJcbiAgICAgICAgICAgIHtsYWJlbDogUmVhY3QuY3JlYXRlRWxlbWVudChDb2csIHtzaXplOiBcIjE4cHhcIn0pLCB0b29sdGlwOiBTdHJpbmdzLkN1c3RvbUNTUy5zZXR0aW5ncywgb25DbGljazogXCJzaG93U2V0dGluZ3NcIn1cclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZSgpIHtcclxuICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlRWRpdG9yKG5ld0NTUykge1xyXG4gICAgICAgIGlmICghdGhpcy5lZGl0b3IpIHJldHVybjtcclxuICAgICAgICB0aGlzLmVkaXRvci52YWx1ZSA9IG5ld0NTUztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgdmFsdWUoKSB7cmV0dXJuIHRoaXMuZWRpdG9yLnNlc3Npb24uZ2V0VmFsdWUoKTt9XHJcbiAgICBzZXQgdmFsdWUobmV3VmFsdWUpIHtcclxuICAgICAgICB0aGlzLmVkaXRvci5zZXRWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd1NldHRpbmdzKCkge3JldHVybiB0aGlzLmVkaXRvci5rZXlCaW5kaW5nLiRkZWZhdWx0SGFuZGxlci5jb21tYW5kcy5zaG93U2V0dGluZ3NNZW51LmV4ZWModGhpcy5lZGl0b3IpO31cclxuICAgIHJlc2l6ZSgpIHtyZXR1cm4gdGhpcy5lZGl0b3IucmVzaXplKCk7fVxyXG5cclxuICAgIHNldEVkaXRvclJlZihlZGl0b3IpIHtcclxuICAgICAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5lZGl0b3JSZWYgJiYgdHlwZW9mKHRoaXMucHJvcHMuZWRpdG9yUmVmLmN1cnJlbnQpICE9PSBcInVuZGVmaW5lZFwiKSB0aGlzLnByb3BzLmVkaXRvclJlZi5jdXJyZW50ID0gZWRpdG9yO1xyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMucHJvcHMuZWRpdG9yUmVmKSB0aGlzLnByb3BzLmVkaXRvclJlZiA9IGVkaXRvcjtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxFZGl0b3IgcmVmPXt0aGlzLnNldEVkaXRvclJlZi5iaW5kKHRoaXMpfSBsYW5ndWFnZT17dGhpcy5wcm9wcy5sYW5ndWFnZX0gaWQ9e3RoaXMucHJvcHMuaWQgfHwgXCJiZC1hZGRvbi1lZGl0b3JcIn0gY29udHJvbHM9e3RoaXMuY29udHJvbHN9IHZhbHVlPXt0aGlzLnByb3BzLmNvbnRlbnR9IG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlfSAvPjtcclxuICAgIH1cclxuXHJcbiAgICBvbkNoYW5nZSgpIHtcclxuICAgICAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlKGV2ZW50LCBjb250ZW50KSB7XHJcbiAgICAgICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLnNhdmUpIHRoaXMucHJvcHMuc2F2ZShjb250ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuTmF0aXZlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9wZW5OYXRpdmUpIHRoaXMucHJvcHMub3Blbk5hdGl2ZSgpO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/misc/addoneditor.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AddonEditor; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _customcss_editor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../customcss/editor */ \"./src/ui/customcss/editor.jsx\");\n/* harmony import */ var _icons_save__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/save */ \"./src/ui/icons/save.jsx\");\n/* harmony import */ var _icons_edit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/edit */ \"./src/ui/icons/edit.jsx\");\n/* harmony import */ var _icons_cog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons/cog */ \"./src/ui/icons/cog.jsx\");\n\n\n\n\n\nclass AddonEditor extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.hasUnsavedChanges = false;\n this.onChange = this.onChange.bind(this);\n this.save = this.save.bind(this);\n this.openNative = this.openNative.bind(this);\n this.update = this.update.bind(this);\n this.controls = [{\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_save__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.save,\n onClick: this.save\n }, {\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_edit__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.openNative,\n onClick: this.openNative\n }, {\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_cog__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.settings,\n onClick: \"showSettings\"\n }];\n }\n\n update() {\n this.forceUpdate();\n }\n\n updateEditor(newCSS) {\n if (!this.editor) return;\n this.editor.value = newCSS;\n }\n\n get value() {\n return this.editor.session.getValue();\n }\n\n set value(newValue) {\n this.editor.setValue(newValue);\n }\n\n showSettings() {\n return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor);\n }\n\n resize() {\n return this.editor.resize();\n }\n\n setEditorRef(editor) {\n this.editor = editor;\n if (this.props.editorRef && typeof this.props.editorRef.current !== \"undefined\") this.props.editorRef.current = editor;else if (this.props.editorRef) this.props.editorRef = editor;\n }\n\n render() {\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_customcss_editor__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n ref: this.setEditorRef.bind(this),\n language: this.props.language,\n id: this.props.id || \"bd-addon-editor\",\n controls: this.controls,\n value: this.props.content,\n onChange: this.onChange\n });\n }\n\n onChange() {\n this.hasUnsavedChanges = true;\n }\n\n save(event, content) {\n this.hasUnsavedChanges = false;\n if (this.props.save) this.props.save(content);\n }\n\n openNative() {\n if (this.props.openNative) this.props.openNative();\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvbWlzYy9hZGRvbmVkaXRvci5qc3g/ZWI5YyJdLCJuYW1lcyI6WyJBZGRvbkVkaXRvciIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsImhhc1Vuc2F2ZWRDaGFuZ2VzIiwib25DaGFuZ2UiLCJiaW5kIiwic2F2ZSIsIm9wZW5OYXRpdmUiLCJ1cGRhdGUiLCJjb250cm9scyIsImxhYmVsIiwiY3JlYXRlRWxlbWVudCIsIlNhdmUiLCJzaXplIiwidG9vbHRpcCIsIlN0cmluZ3MiLCJDdXN0b21DU1MiLCJvbkNsaWNrIiwiRWRpdCIsIkNvZyIsInNldHRpbmdzIiwiZm9yY2VVcGRhdGUiLCJ1cGRhdGVFZGl0b3IiLCJuZXdDU1MiLCJlZGl0b3IiLCJ2YWx1ZSIsInNlc3Npb24iLCJnZXRWYWx1ZSIsIm5ld1ZhbHVlIiwic2V0VmFsdWUiLCJzaG93U2V0dGluZ3MiLCJrZXlCaW5kaW5nIiwiJGRlZmF1bHRIYW5kbGVyIiwiY29tbWFuZHMiLCJzaG93U2V0dGluZ3NNZW51IiwiZXhlYyIsInJlc2l6ZSIsInNldEVkaXRvclJlZiIsImVkaXRvclJlZiIsImN1cnJlbnQiLCJyZW5kZXIiLCJsYW5ndWFnZSIsImlkIiwiY29udGVudCIsImV2ZW50Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFZSxNQUFNQSxXQUFOLFNBQTBCQyx5REFBSyxDQUFDQyxTQUFoQyxDQUEwQztBQUVyREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBRUEsU0FBS0MsaUJBQUwsR0FBeUIsS0FBekI7QUFDQSxTQUFLQyxRQUFMLEdBQWdCLEtBQUtBLFFBQUwsQ0FBY0MsSUFBZCxDQUFtQixJQUFuQixDQUFoQjtBQUNBLFNBQUtDLElBQUwsR0FBWSxLQUFLQSxJQUFMLENBQVVELElBQVYsQ0FBZSxJQUFmLENB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QXlCLElBQXpCO0FBQ0g7O0FBRURHLE1BQUksQ0FBQ3NDLEtBQUQsRUFBUUQsT0FBUixFQUFpQjtBQUNqQixTQUFLeEMsaUJBQUwsR0FBeUIsS0FBekI7QUFDQSxRQUFJLEtBQUtELEtBQUwsQ0FBV0ksSUFBZixFQUFxQixLQUFLSixLQUFMLENBQVdJLElBQVgsQ0FBZ0JxQyxPQUFoQjtBQUN4Qjs7QUFFRHBDLFlBQVUsR0FBRztBQUNULFFBQUksS0FBS0wsS0FBTCxDQUFXSyxVQUFmLEVBQTJCLEtBQUtMLEtBQUwsQ0FBV0ssVUFBWDtBQUM5Qjs7QUF4RG9EIiwiZmlsZSI6Ii4vc3JjL3VpL21pc2MvYWRkb25lZGl0b3IuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmltcG9ydCBFZGl0b3IgZnJvbSBcIi4uL2N1c3RvbWNzcy9lZGl0b3JcIjtcclxuaW1wb3J0IFNhdmUgZnJvbSBcIi4uL2ljb25zL3NhdmVcIjtcclxuaW1wb3J0IEVkaXQgZnJvbSBcIi4uL2ljb25zL2VkaXRcIjtcclxuaW1wb3J0IENvZyBmcm9tIFwiLi4vaWNvbnMvY29nXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBZGRvbkVkaXRvciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcblxyXG4gICAgICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuc2F2ZSA9IHRoaXMuc2F2ZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub3Blbk5hdGl2ZSA9IHRoaXMub3Blbk5hdGl2ZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlID0gdGhpcy51cGRhdGUuYmluZCh0aGlzKTtcclxuXHJcbiAgICAgICAgdGhpcy5jb250cm9scyA9IFtcclxuICAgICAgICAgICAge2xhYmVsOiBSZWFjdC5jcmVhdGVFbGVtZW50KFNhdmUsIHtzaXplOiBcIjE4cHhcIn0pLCB0b29sdGlwOiBTdHJpbmdzLkN1c3RvbUNTUy5zYXZlLCBvbkNsaWNrOiB0aGlzLnNhdmV9LFxyXG4gICAgICAgICAgICB7bGFiZWw6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoRWRpdCwge3NpemU6IFwiMThweFwifSksIHRvb2x0aXA6IFN0cmluZ3MuQ3VzdG9tQ1NTLm9wZW5OYXRpdmUsIG9uQ2xpY2s6IHRoaXMub3Blbk5hdGl2ZX0sXHJcbiAgICAgICAgICAgIHtsYWJlbDogUmVhY3QuY3JlYXRlRWxlbWVudChDb2csIHtzaXplOiBcIjE4cHhcIn0pLCB0b29sdGlwOiBTdHJpbmdzLkN1c3RvbUNTUy5zZXR0aW5ncywgb25DbGljazogXCJzaG93U2V0dGluZ3NcIn1cclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZSgpIHtcclxuICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlRWRpdG9yKG5ld0NTUykge1xyXG4gICAgICAgIGlmICghdGhpcy5lZGl0b3IpIHJldHVybjtcclxuICAgICAgICB0aGlzLmVkaXRvci52YWx1ZSA9IG5ld0NTUztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgdmFsdWUoKSB7cmV0dXJuIHRoaXMuZWRpdG9yLnNlc3Npb24uZ2V0VmFsdWUoKTt9XHJcbiAgICBzZXQgdmFsdWUobmV3VmFsdWUpIHtcclxuICAgICAgICB0aGlzLmVkaXRvci5zZXRWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd1NldHRpbmdzKCkge3JldHVybiB0aGlzLmVkaXRvci5rZXlCaW5kaW5nLiRkZWZhdWx0SGFuZGxlci5jb21tYW5kcy5zaG93U2V0dGluZ3NNZW51LmV4ZWModGhpcy5lZGl0b3IpO31cclxuICAgIHJlc2l6ZSgpIHtyZXR1cm4gdGhpcy5lZGl0b3IucmVzaXplKCk7fVxyXG5cclxuICAgIHNldEVkaXRvclJlZihlZGl0b3IpIHtcclxuICAgICAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5lZGl0b3JSZWYgJiYgdHlwZW9mKHRoaXMucHJvcHMuZWRpdG9yUmVmLmN1cnJlbnQpICE9PSBcInVuZGVmaW5lZFwiKSB0aGlzLnByb3BzLmVkaXRvclJlZi5jdXJyZW50ID0gZWRpdG9yO1xyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMucHJvcHMuZWRpdG9yUmVmKSB0aGlzLnByb3BzLmVkaXRvclJlZiA9IGVkaXRvcjtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxFZGl0b3IgcmVmPXt0aGlzLnNldEVkaXRvclJlZi5iaW5kKHRoaXMpfSBsYW5ndWFnZT17dGhpcy5wcm9wcy5sYW5ndWFnZX0gaWQ9e3RoaXMucHJvcHMuaWQgfHwgXCJiZC1hZGRvbi1lZGl0b3JcIn0gY29udHJvbHM9e3RoaXMuY29udHJvbHN9IHZhbHVlPXt0aGlzLnByb3BzLmNvbnRlbnR9IG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlfSAvPjtcclxuICAgIH1cclxuXHJcbiAgICBvbkNoYW5nZSgpIHtcclxuICAgICAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlKGV2ZW50LCBjb250ZW50KSB7XHJcbiAgICAgICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLnNhdmUpIHRoaXMucHJvcHMuc2F2ZShjb250ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuTmF0aXZlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9wZW5OYXRpdmUpIHRoaXMucHJvcHMub3Blbk5hdGl2ZSgpO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/misc/addoneditor.jsx\n"); /***/ }), @@ -970,7 +970,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Modals; });\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _structs_string__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../structs/string */ \"./src/structs/string.js\");\n\n\n\nclass Modals {\n static get shouldShowAddonErrors() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(\"settings\", \"addons\", \"addonErrors\");\n }\n\n static get ModalActions() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"openModal\", \"updateModal\");\n }\n\n static get ModalStack() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"push\", \"update\", \"pop\", \"popWithKey\");\n }\n\n static get AlertModal() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByPrototypes(\"handleCancel\", \"handleSubmit\", \"handleMinorConfirm\");\n }\n\n static get TextElement() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"Sizes\", \"Weights\");\n }\n\n static get ConfirmationModal() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].findByDisplayName(\"ConfirmModal\");\n }\n\n static get Markdown() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].findByDisplayName(\"Markdown\");\n }\n\n static default(title, content) {\n const modal = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
\n
\n
\n
\n
\n
${title}
\n
\n
\n
\n
\n ${content}\n
\n
\n
\n
\n \n
\n
\n
\n
`);\n modal.querySelector(\".footer button\").addEventListener(\"click\", () => {\n modal.classList.add(\"closing\");\n setTimeout(() => {\n modal.remove();\n }, 300);\n });\n modal.querySelector(\".bd-backdrop\").addEventListener(\"click\", () => {\n modal.classList.add(\"closing\");\n setTimeout(() => {\n modal.remove();\n }, 300);\n });\n document.querySelector(\"#app-mount\").append(modal);\n }\n\n static alert(title, content) {\n this.showConfirmationModal(title, content, {\n cancelText: \"\"\n });\n }\n /**\r\n * Shows a generic but very customizable confirmation modal with optional confirm and cancel callbacks.\r\n * @param {string} title - title of the modal\r\n * @param {(string|ReactElement|Array)} children - a single or mixed array of react elements and strings. Everything is wrapped in Discord's `Markdown` component so strings will show and render properly.\r\n * @param {object} [options] - options to modify the modal\r\n * @param {boolean} [options.danger=false] - whether the main button should be red or not\r\n * @param {string} [options.confirmText=Okay] - text for the confirmation/submit button\r\n * @param {string} [options.cancelText=Cancel] - text for the cancel button\r\n * @param {callable} [options.onConfirm=NOOP] - callback to occur when clicking the submit button\r\n * @param {callable} [options.onCancel=NOOP] - callback to occur when clicking the cancel button\r\n * @param {string} [options.key] - key used to identify the modal. If not provided, one is generated and returned\r\n * @returns {string} - the key used for this modal\r\n */\n\n\n static showConfirmationModal(title, content, options = {}) {\n const Markdown = this.Markdown;\n const ConfirmationModal = this.ConfirmationModal;\n const ModalActions = this.ModalActions;\n if (content instanceof _structs_string__WEBPACK_IMPORTED_MODULE_2__[\"default\"]) content = content.toString();\n if (!this.ModalActions || !this.ConfirmationModal || !this.Markdown) return this.default(title, content);\n\n const emptyFunction = () => {};\n\n const {\n onConfirm = emptyFunction,\n onCancel = emptyFunction,\n confirmText = modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.okay,\n cancelText = modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.cancel,\n danger = false,\n key = undefined\n } = options;\n if (!Array.isArray(content)) content = [content];\n content = content.map(c => typeof c === \"string\" ? modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(Markdown, null, c) : c);\n return ModalActions.openModal(props => {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(ConfirmationModal, Object.assign({\n header: title,\n red: danger,\n confirmText: confirmText,\n cancelText: cancelText,\n onConfirm: onConfirm,\n onCancel: onCancel\n }, props), content);\n }, {\n modalKey: key\n });\n }\n\n static showAddonErrors({\n plugins: pluginErrors = [],\n themes: themeErrors = []\n }) {\n if (!pluginErrors || !themeErrors || !this.shouldShowAddonErrors) return;\n if (!pluginErrors.length && !themeErrors.length) return;\n const modal = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
\n
\n
\n
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.addonErrors}
\n
\n
\n
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Panels.plugins}
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Panels.themes}
\n
\n
\n
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.name}
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.message}
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.error}
\n
\n
\n
\n\n
\n
\n
\n
\n \n
\n
\n
\n
`);\n\n const generateTab = function (errors) {\n const container = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n\n for (const err of errors) {\n const error = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
\n
${err.name ? err.name : err.file}
\n
${err.message}
\n \n
`);\n container.append(error);\n\n if (err.error) {\n error.querySelectorAll(\"a\").forEach(el => el.addEventListener(\"click\", e => {\n e.preventDefault();\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Logger\"].stacktrace(\"AddonError\", `Error details for ${err.name ? err.name : err.file}.`, err.error);\n }));\n }\n }\n\n return container;\n };\n\n const tabs = [generateTab(pluginErrors), generateTab(themeErrors)];\n modal.querySelectorAll(\".tab-bar-item\").forEach(el => el.addEventListener(\"click\", e => {\n e.preventDefault();\n const selected = modal.querySelector(\".tab-bar-item.selected\");\n if (selected) modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].removeClass(selected, \"selected\");\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].addClass(e.target, \"selected\");\n const scroller = modal.querySelector(\".scroller\");\n scroller.innerHTML = \"\";\n scroller.append(tabs[modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].index(e.target)]);\n }));\n modal.querySelector(\".footer button\").addEventListener(\"click\", () => {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].addClass(modal, \"closing\");\n setTimeout(() => {\n modal.remove();\n }, 300);\n });\n modal.querySelector(\".bd-backdrop\").addEventListener(\"click\", () => {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].addClass(modal, \"closing\");\n setTimeout(() => {\n modal.remove();\n }, 300);\n });\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].query(\"#app-mount\").append(modal);\n if (pluginErrors.length) modal.querySelector(\".tab-bar-item\").click();else modal.querySelectorAll(\".tab-bar-item\")[1].click();\n }\n\n static showChangelogModal(options = {}) {\n const ModalStack = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"push\", \"update\", \"pop\", \"popWithKey\");\n const ChangelogClasses = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"fixed\", \"improved\");\n const TextElement = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].findByDisplayName(\"Text\");\n const FlexChild = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"Child\");\n const Titles = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"Tags\", \"default\");\n const Changelog = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.defaultProps && m.defaultProps.selectable == false);\n const MarkdownParser = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"defaultRules\", \"parse\");\n if (!Changelog || !ModalStack || !ChangelogClasses || !TextElement || !FlexChild || !Titles || !MarkdownParser) return modules__WEBPACK_IMPORTED_MODULE_1__[\"Logger\"].warn(\"Modals\", \"showChangelogModal missing modules\");\n const {\n image = \"https://repository-images.githubusercontent.com/105473537/957b5480-7c26-11e9-8401-50fa820cbae5\",\n description = \"\",\n changes = [],\n title = \"BandagedBD\",\n subtitle = `v${data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].bbdVersion}`,\n footer\n } = options;\n const ce = modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement;\n const changelogItems = [ce(\"img\", {\n src: image\n })];\n if (description) changelogItems.push(ce(\"p\", null, MarkdownParser.parse(description)));\n\n for (let c = 0; c < changes.length; c++) {\n const entry = changes[c];\n const type = ChangelogClasses[entry.type] ? ChangelogClasses[entry.type] : ChangelogClasses.added;\n const margin = c == 0 ? ChangelogClasses.marginTop : \"\";\n changelogItems.push(ce(\"h1\", {\n className: `${type} ${margin}`\n }, entry.title));\n const list = ce(\"ul\", null, entry.items.map(i => ce(\"li\", null, MarkdownParser.parse(i))));\n changelogItems.push(list);\n }\n\n const renderHeader = function () {\n return ce(FlexChild.Child, {\n grow: 1,\n shrink: 1\n }, ce(Titles.default, {\n tag: Titles.Tags.H4\n }, title), ce(TextElement, {\n size: TextElement.Sizes.SMALL,\n color: TextElement.Colors.STANDARD,\n className: ChangelogClasses.date\n }, subtitle));\n };\n\n const renderFooter = () => {\n const Anchor = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.displayName == \"Anchor\");\n const AnchorClasses = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"anchorUnderlineOnHover\") || {\n anchor: \"anchor-3Z-8Bb\",\n anchorUnderlineOnHover: \"anchorUnderlineOnHover-2ESHQB\"\n };\n\n const joinSupportServer = click => {\n click.preventDefault();\n click.stopPropagation();\n ModalStack.pop();\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].InviteActions.acceptInviteAndTransitionToInviteChannel(\"2HScm8j\");\n };\n\n const supportLink = Anchor ? ce(Anchor, {\n onClick: joinSupportServer\n }, \"Join our Discord Server.\") : ce(\"a\", {\n className: `${AnchorClasses.anchor} ${AnchorClasses.anchorUnderlineOnHover}`,\n onClick: joinSupportServer\n }, \"Join our Discord Server.\");\n const defaultFooter = ce(TextElement, {\n size: TextElement.Sizes.SMALL,\n color: TextElement.Colors.STANDARD\n }, \"Need support? \", supportLink);\n return ce(FlexChild.Child, {\n grow: 1,\n shrink: 1\n }, footer ? footer : defaultFooter);\n };\n\n return ModalStack.push(Changelog, {\n className: ChangelogClasses.container,\n selectable: true,\n onScroll: _ => _,\n onClose: _ => _,\n renderHeader: renderHeader,\n renderFooter: renderFooter,\n children: changelogItems\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvbW9kYWxzLmpzPzNhYjIiXSwibmFtZXMiOlsiTW9kYWxzIiwic2hvdWxkU2hvd0FkZG9uRXJyb3JzIiwiU2V0dGluZ3MiLCJnZXQiLCJNb2RhbEFjdGlvbnMiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5UHJvcHMiLCJNb2RhbFN0YWNrIiwiQWxlcnRNb2RhbCIsImdldEJ5UHJvdG90eXBlcyIsIlRleHRFbGVtZW50IiwiQ29uZmlybWF0aW9uTW9kYWwiLCJmaW5kQnlEaXNwbGF5TmFtZSIsIk1hcmtkb3duIiwiZGVmYXVsdCIsInRpdGxlIiwiY29udGVudCIsIm1vZGFsIiwiRE9NIiwiY3JlYXRlRWxlbWVudCIsIlN0cmluZ3MiLCJva2F5IiwicXVlcnlTZWxlY3RvciIsImFkZEV2ZW50TGlzdGVuZXIiLCJjbGFzc0xpc3QiLCJhZGQiLCJzZXRUaW1lb3V0IiwicmVtb3ZlIiwiZG9jdW1lbnQiLCJhcHBlbmQiLCJhbGVydCIsInNob3dDb25maXJtYXRpb25Nb2RhbCIsImNhbmNlbFRleHQiLCJvcHRpb25zIiwiRm9ybWF0dGFibGVTdHJpbmciLCJ0b1N0cmluZyIsImVtcHR5RnVuY3Rpb24iLCJvbkNvbmZpcm0iLCJvbkNhbmNlbCIsImNvbmZpcm1UZXh0IiwiY2FuY2VsIiwiZGFuZ2VyIiwia2V5IiwidW5kZWZpbmVkIiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwiYyIsIlJlYWN0Iiwib3Blbk1vZGFsIiwicHJvcHMiLCJPYmplY3QiLCJhc3NpZ24iLCJoZWFkZXIiLCJyZWQiLCJtb2RhbEtleSIsInNob3dBZGRvbkVycm9ycyIsInBsdWdpbnMiLCJwbHVnaW5FcnJvcnMiLCJ0aGVtZXMiLCJ0aGVtZUVycm9ycyIsImxlbmd0aCIsImFkZG9uRXJyb3JzIiwiUGFuZWxzIiwibmFtZSIsIm1lc3NhZ2UiLCJlcnJvciIsImdlbmVyYXRlVGFiIiwiZXJyb3JzIiwiY29udGFpbmVyIiwiZXJyIiwiZmlsZSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmb3JFYWNoIiwiZWwiLCJlIiwicHJldmVudERlZmF1bHQiLCJMb2dnZXIiLCJzdGFja3RyYWNlIiwidGFicyIsInNlbGVjdGVkIiwicmVtb3ZlQ2xhc3MiLCJhZGRDbGFzcyIsInRhcmdldCIsInNjcm9sbGVyIiwiaW5uZXJIVE1MIiwiaW5kZXgiLCJxdWVyeSIsImNsaWNrIiwic2hvd0NoYW5nZWxvZ01vZGFsIiwiQ2hhbmdlbG9nQ2xhc3NlcyIsIkZsZXhDaGlsZCIsIlRpdGxlcyIsIkNoYW5nZWxvZyIsImdldE1vZHVsZSIsIm0iLCJkZWZhdWx0UHJvcHMiLCJzZWxlY3RhYmxlIiwiTWFya2Rvd25QYXJzZXIiLCJ3YXJuIiwiaW1hZ2UiLCJkZXNjcmlwdGlvbiIsImNoYW5nZXMiLCJzdWJ0aXRsZSIsIkNvbmZpZyIsImJiZFZlcnNpb24iLCJmb290ZXIiLCJjZSIsImNoYW5nZWxvZ0l0ZW1zIiwic3JjIiwicHVzaCIsInBhcnNlIiwiZW50cnkiLCJ0eXBlIiwiYWRkZWQiLCJtYXJnaW4iLCJtYXJnaW5Ub3AiLCJjbGFzc05hbWUiLCJsaXN0IiwiaXRlbXMiLCJpIiwicmVuZGVySGVhZGVyIiwiQ2hpbGQiLCJncm93Iiwic2hyaW5rIiwidGFnIiwiVGFncyIsIkg0Iiwic2l6ZSIsIlNpemVzIiwiU01BTEwiLCJjb2xvciIsIkNvbG9ycyIsIlNUQU5EQVJEIiwiZGF0ZSIsInJlbmRlckZvb3RlciIsIkFuY2hvciIsImRpc3BsYXlOYW1lIiwiQW5jaG9yQ2xhc3NlcyIsImFuY2hvciIsImFuY2hvclVuZGVybGluZU9uSG92ZXIiLCJqb2luU3VwcG9ydFNlcnZlciIsInN0b3BQcm9wYWdhdGlvbiIsInBvcCIsIkRpc2NvcmRNb2R1bGVzIiwiSW52aXRlQWN0aW9ucyIsImFjY2VwdEludml0ZUFuZFRyYW5zaXRpb25Ub0ludml0ZUNoYW5uZWwiLCJzdXBwb3J0TGluayIsIm9uQ2xpY2siLCJkZWZhdWx0Rm9vdGVyIiwib25TY3JvbGwiLCJfIiwib25DbG9zZSIsImNoaWxkcmVuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRWUsTUFBTUEsTUFBTixDQUFhO0FBRXhCLGFBQVdDLHFCQUFYLEdBQW1DO0FBQUMsV0FBT0MsZ0RBQVEsQ0FBQ0MsR0FBVCxDQUFhLFVBQWIsRUFBeUIsUUFBekIsRUFBbUMsYUFBbkMsQ0FBUDtBQUEwRDs7QUFFOUYsYUFBV0MsWUFBWCxHQUEwQjtBQUFDLFdBQU9DLHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIsV0FBMUIsRUFBdUMsYUFBdkMsQ0FBUDtBQUE4RDs7QUFDekYsYUFBV0MsVUFBWCxHQUF3QjtBQUFDLFdBQU9GLHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIsTUFBMUIsRUFBa0MsUUFBbEMsRUFBNEMsS0FBNUMsRUFBbUQsWUFBbkQsQ0FBUDtBQUF5RTs7QUFDbEcsYUFBV0UsVUFBWCxHQUF3QjtBQUFDLFdBQU9ILHNEQUFjLENBQUNJLGVBQWYsQ0FBK0IsY0FBL0IsRUFBK0MsY0FBL0MsRUFBK0Qsb0JBQS9ELENBQVA7QUFBNkY7O0FBQ3RILGFBQVdDLFdBQVgsR0FBeUI7QUFBQyxXQUFPTCxzREFBYyxDQUFDQyxVQUFmLENBQTBCLE9BQTFCLEVBQW1DLFNBQW5DLENBQVA7QUFBc0Q7O0FBQ2hGLGFBQVdLLGlCQUFYLEdBQStCO0FBQUMsV0FBT04sc0RBQWMsQ0FBQ08saUJBQWYsQ0FBaUMsY0FBakMsQ0FBUDtBQUF5RDs7QUFDekYsYUFBV0MsUUFBWCxHQUFzQjtBQUFDLFdBQU9SLHNEQUFjLENBQUNPLGlCQUFmLENBQWlDLFVBQWpDLENBQVA7QUFBcUQ7O0FBRTVFLFNBQU9FLE9BQVAsQ0FBZUMsS0FBZixFQUFzQkMsT0FBdEIsRUFBK0I7QUFDM0IsVUFBTUMsS0FBSyxHQUFHQywyQ0FBRyxDQUFDQyxhQUFKLENBQW1COzs7OztpREFLUUosS0FBTTs7Ozs7c0NBS2pCQyxPQUFROzs7OztzRUFLd0JJLCtDQUFPLENBQUNwQixNQUFSLENBQWVxQixJQUFLOzs7O21CQWZwRSxDQUFkO0FBb0JBSixTQUFLLENBQUNLLGFBQU4sQ0FBb0IsZ0JBQXBCLEVBQXNDQyxnQkFBdEMsQ0FBdUQsT0FBdkQsRUFBZ0UsTUFBTTtBQUNsRU4sV0FBSyxDQUFDTyxTQUFOLENBQWdCQyxHQUFoQixDQUFvQixTQUFwQjtBQUNBQyxnQkFBVSxDQUFDLE1BQU07QUFBRVQsYUFBSyxDQUFDVSxNQUFOO0FBQWlCLE9BQTFCLEVBQTRCLEdBQTVCLENBQVY7QUFDSCxLQUhEO0FBSUFWLFNBQUssQ0FBQ0ssYUFBTixDQUFvQixjQUFwQixFQUFvQ0MsZ0JBQXBDLENBQXFELE9BQXJELEVBQThELE1BQU07QUFDaEVOLFdBQUssQ0FBQ08sU0FBTixDQUFnQkMsR0FBaEIsQ0FBb0IsU0FBcEI7QUFDQUMsZ0JBQVUsQ0FBQyxNQUFNO0FBQUVULGFBQUssQ0FBQ1UsTUFBTjtBQUFpQixPQUExQixFQUE0QixHQUE1QixDQUFWO0FBQ0gsS0FIRDtBQUlBQyxZQUFRLENBQUNOLGFBQVQsQ0FBdUIsWUFBdkIsRUFBcUNPLE1BQXJDLENBQTRDWixLQUE1QztBQUNIOztBQUVELFNBQU9hLEtBQVAsQ0FBYWYsS0FBYixFQUFvQkMsT0FBcEIsRUFBNkI7QUFDekIsU0FBS2UscUJBQUwsQ0FBMkJoQixLQUEzQixFQUFrQ0MsT0FBbEMsRUFBMkM7QUFBQ2dCLGdCQUFVLEVBQUU7QUFBYixLQUEzQztBQUNIO0FBRUQ7Ozs7Ozs7Ozs7Ozs7OztBQWFBLFNBQU9ELHFCQUFQLENBQTZCaEIsS0FBN0IsRUFBb0NDLE9BQXBDLEVBQTZDaUIsT0FBTyxHQUFHLEVBQXZELEVBQTJEO0FBQ3ZELFVBQU1wQixRQUFRLEdBQUcsS0FBS0EsUUFBdEI7QUFDQSxVQUFNRixpQkFBaUIsR0FBRyxLQUFLQSxpQkFBL0I7QUFDQSxVQUFNUCxZQUFZLEdBQUcsS0FBS0EsWUFBMUI7QUFDQSxRQUFJWSxPQUFPLFlBQVlrQix1REFBdkIsRUFBMENsQixPQUFPLEdBQUdBLE9BQU8sQ0FBQ21CLFFBQVIsRUFBVjtBQUMxQyxRQUFJLENBQUMsS0FBSy9CLFlBQU4sSUFBc0IsQ0FBQyxLQUFLTyxpQkFBNUIsSUFBaUQsQ0FBQyxLQUFLRSxRQUEzRCxFQUFxRSxPQUFPLEtBQUtDLE9BQUwsQ0FBYUMsS0FBYixFQUFvQkMsT0FBcEIsQ0FBUDs7QUFFckUsVUFBTW9CLGFBQWEsR0FBRyxNQUFNLENBQUUsQ0FBOUI7O0FBQ0EsVUFBTTtBQUFDQyxlQUFTLEdBQUdELGFBQWI7QUFBNEJFLGNBQVEsR0FBR0YsYUFBdkM7QUFBc0RHLGlCQUFXLEdBQUduQiwrQ0FBTyxDQUFDcEIsTUFBUixDQUFlcUIsSUFBbkY7QUFBeUZXLGdCQUFVLEdBQUdaLCtDQUFPLENBQUNwQixNQUFSLENBQWV3QyxNQUFySDtBQUE2SEMsWUFBTSxHQUFHLEtBQXRJO0FBQTZJQyxTQUFHLEdBQUdDO0FBQW5KLFFBQWdLVixPQUF0SztBQUVBLFFBQUksQ0FBQ1csS0FBSyxDQUFDQyxPQUFOLENBQWM3QixPQUFkLENBQUwsRUFBNkJBLE9BQU8sR0FBRyxDQUFDQSxPQUFELENBQVY7QUFDN0JBLFdBQU8sR0FBR0EsT0FBTyxDQUFDOEIsR0FBUixDQUFZQyxDQUFDLElBQUksT0FBT0EsQ0FBUCxLQUFjLFFBQWQsR0FBeUJDLDZDQUFLLENBQUM3QixhQUFOLENBQW9CTixRQUFwQixFQUE4QixJQUE5QixFQUFvQ2tDLENBQXBDLENBQXpCLEdBQWtFQSxDQUFuRixDQUFWO0FBRUEsV0FBTzNDLFlBQVksQ0FBQzZDLFNBQWIsQ0FBdUJDLEtBQUssSUFBSTtBQUNuQyxhQUFPRiw2Q0FBSyxDQUFDN0IsYUFBTixDQUFvQlIsaUJBQXBCLEVBQXVDd0MsTUFBTSxDQUFDQyxNQUFQLENBQWM7QUFDeERDLGNBQU0sRUFBRXRDLEtBRGdEO0FBRXhEdUMsV0FBRyxFQUFFYixNQUZtRDtBQUd4REYsbUJBQVcsRUFBRUEsV0FIMkM7QUFJeERQLGtCQUFVLEVBQUVBLFVBSjRDO0FBS3hESyxpQkFBUyxFQUFFQSxTQUw2QztBQU14REMsZ0JBQVEsRUFBRUE7QUFOOEMsT0FBZCxFQU8zQ1ksS0FQMkMsQ0FBdkMsRUFPSWxDLE9BUEosQ0FBUDtBQVFILEtBVE0sRUFTSjtBQUFDdUMsY0FBUSxFQUFFYjtBQUFYLEtBVEksQ0FBUDtBQVVIOztBQUVELFNBQU9jLGVBQVAsQ0FBdUI7QUFBQ0MsV0FBTyxFQUFFQyxZQUFZLEdBQUcsRUFBekI7QUFBNkJDLFVBQU0sRUFBRUMsV0FBVyxHQUFHO0FBQW5ELEdBQXZCLEVBQStFO0FBQzNFLFFBQUksQ0FBQ0YsWUFBRCxJQUFpQixDQUFDRSxXQUFsQixJQUFpQyxDQUFDLEtBQUszRCxxQkFBM0MsRUFBa0U7QUFDbEUsUUFBSSxDQUFDeUQsWUFBWSxDQUFDRyxNQUFkLElBQXdCLENBQUNELFdBQVcsQ0FBQ0MsTUFBekMsRUFBaUQ7QUFDakQsVUFBTTVDLEtBQUssR0FBR0MsMkNBQUcsQ0FBQ0MsYUFBSixDQUFtQjs7Ozt1RkFJOENDLCtDQUFPLENBQUNwQixNQUFSLENBQWU4RCxXQUFZOzs7O3dFQUkxQzFDLCtDQUFPLENBQUMyQyxNQUFSLENBQWVOLE9BQVE7d0VBQ3ZCckMsK0NBQU8sQ0FBQzJDLE1BQVIsQ0FBZUosTUFBTzs7OztnRkFJZHZDLCtDQUFPLENBQUNwQixNQUFSLENBQWVnRSxJQUFLO21GQUNqQjVDLCtDQUFPLENBQUNwQixNQUFSLENBQWVpRSxPQUFRO2lGQUN6QjdDLCtDQUFPLENBQUNwQixNQUFSLENBQWVrRSxLQUFNOzs7Ozs7Ozs7OEVBU3hCOUMsK0NBQU8sQ0FBQ3BCLE1BQVIsQ0FBZXFCLElBQUs7Ozs7MkJBeEI1RSxDQUFkOztBQThCQSxVQUFNOEMsV0FBVyxHQUFHLFVBQVNDLE1BQVQsRUFBaUI7QUFDakMsWUFBTUMsU0FBUyxHQUFHbkQsMkNBQUcsQ0FBQ0MsYUFBSixDQUFtQixzQkFBbkIsQ0FBbEI7O0FBQ0EsV0FBSyxNQUFNbUQsR0FBWCxJQUFrQkYsTUFBbEIsRUFBMEI7QUFDdEIsY0FBTUYsS0FBSyxHQUFHaEQsMkNBQUcsQ0FBQ0MsYUFBSixDQUFtQjs0RUFDMkJtRCxHQUFHLENBQUNOLElBQUosR0FBV00sR0FBRyxDQUFDTixJQUFmLEdBQXNCTSxHQUFHLENBQUNDLElBQUs7K0VBQzVCRCxHQUFHLENBQUNMLE9BQVE7MkdBQ2dCSyxHQUFHLENBQUNKLEtBQUosR0FBWUksR0FBRyxDQUFDSixLQUFKLENBQVVELE9BQXRCLEdBQWdDLEVBQUc7dUNBSGhILENBQWQ7QUFLQUksaUJBQVMsQ0FBQ3hDLE1BQVYsQ0FBaUJxQyxLQUFqQjs7QUFDQSxZQUFJSSxHQUFHLENBQUNKLEtBQVIsRUFBZTtBQUNYQSxlQUFLLENBQUNNLGdCQUFOLENBQXVCLEdBQXZCLEVBQTRCQyxPQUE1QixDQUFvQ0MsRUFBRSxJQUFJQSxFQUFFLENBQUNuRCxnQkFBSCxDQUFvQixPQUFwQixFQUE4Qm9ELENBQUQsSUFBTztBQUMxRUEsYUFBQyxDQUFDQyxjQUFGO0FBQ0FDLDBEQUFNLENBQUNDLFVBQVAsQ0FBa0IsWUFBbEIsRUFBaUMscUJBQW9CUixHQUFHLENBQUNOLElBQUosR0FBV00sR0FBRyxDQUFDTixJQUFmLEdBQXNCTSxHQUFHLENBQUNDLElBQUssR0FBcEYsRUFBd0ZELEdBQUcsQ0FBQ0osS0FBNUY7QUFDSCxXQUh5QyxDQUExQztBQUlIO0FBQ0o7O0FBQ0QsYUFBT0csU0FBUDtBQUNILEtBakJEOztBQW1CQSxVQUFNVSxJQUFJLEdBQUcsQ0FBQ1osV0FBVyxDQUFDVCxZQUFELENBQVosRUFBNEJTLFdBQVcsQ0FBQ1AsV0FBRCxDQUF2QyxDQUFiO0FBRUEzQyxTQUFLLENBQUN1RCxnQkFBTixDQUF1QixlQUF2QixFQUF3Q0MsT0FBeEMsQ0FBZ0RDLEVBQUUsSUFBSUEsRUFBRSxDQUFDbkQsZ0JBQUgsQ0FBb0IsT0FBcEIsRUFBOEJvRCxDQUFELElBQU87QUFDdEZBLE9BQUMsQ0FBQ0MsY0FBRjtBQUNBLFlBQU1JLFFBQVEsR0FBRy9ELEtBQUssQ0FBQ0ssYUFBTixDQUFvQix3QkFBcEIsQ0FBakI7QUFDQSxVQUFJMEQsUUFBSixFQUFjOUQsMkNBQUcsQ0FBQytELFdBQUosQ0FBZ0JELFFBQWhCLEVBQTBCLFVBQTFCO0FBQ2Q5RCxpREFBRyxDQUFDZ0UsUUFBSixDQUFhUCxDQUFDLENBQUNRLE1BQWYsRUFBdUIsVUFBdkI7QUFDQSxZQUFNQyxRQUFRLEdBQUduRSxLQUFLLENBQUNLLGFBQU4sQ0FBb0IsV0FBcEIsQ0FBakI7QUFDQThELGNBQVEsQ0FBQ0MsU0FBVCxHQUFxQixFQUFyQjtBQUNBRCxjQUFRLENBQUN2RCxNQUFULENBQWdCa0QsSUFBSSxDQUFDN0QsMkNBQUcsQ0FBQ29FLEtBQUosQ0FBVVgsQ0FBQyxDQUFDUSxNQUFaLENBQUQsQ0FBcEI7QUFDSCxLQVJxRCxDQUF0RDtBQVVBbEUsU0FBSyxDQUFDSyxhQUFOLENBQW9CLGdCQUFwQixFQUFzQ0MsZ0JBQXRDLENBQXVELE9BQXZELEVBQWdFLE1BQU07QUFDbEVMLGlEQUFHLENBQUNnRSxRQUFKLENBQWFqRSxLQUFiLEVBQW9CLFNBQXBCO0FBQ0FTLGdCQUFVLENBQUMsTUFBTTtBQUFFVCxhQUFLLENBQUNVLE1BQU47QUFBaUIsT0FBMUIsRUFBNEIsR0FBNUIsQ0FBVjtBQUNILEtBSEQ7QUFJQVYsU0FBSyxDQUFDSyxhQUFOLENBQW9CLGNBQXBCLEVBQW9DQyxnQkFBcEMsQ0FBcUQsT0FBckQsRUFBOEQsTUFBTTtBQUNoRUwsaURBQUcsQ0FBQ2dFLFFBQUosQ0FBYWpFLEtBQWIsRUFBb0IsU0FBcEI7QUFDQVMsZ0JBQVUsQ0FBQyxNQUFNO0FBQUVULGFBQUssQ0FBQ1UsTUFBTjtBQUFpQixPQUExQixFQUE0QixHQUE1QixDQUFWO0FBQ0gsS0FIRDtBQUlBVCwrQ0FBRyxDQUFDcUUsS0FBSixDQUFVLFlBQVYsRUFBd0IxRCxNQUF4QixDQUErQlosS0FBL0I7QUFDQSxRQUFJeUMsWUFBWSxDQUFDRyxNQUFqQixFQUF5QjVDLEtBQUssQ0FBQ0ssYUFBTixDQUFvQixlQUFwQixFQUFxQ2tFLEtBQXJDLEdBQXpCLEtBQ0t2RSxLQUFLLENBQUN1RCxnQkFBTixDQUF1QixlQUF2QixFQUF3QyxDQUF4QyxFQUEyQ2dCLEtBQTNDO0FBQ1I7O0FBRUQsU0FBT0Msa0JBQVAsQ0FBMEJ4RCxPQUFPLEdBQUcsRUFBcEMsRUFBd0M7QUFDcEMsVUFBTTFCLFVBQVUsR0FBR0Ysc0RBQWMsQ0FBQ0MsVUFBZixDQUEwQixNQUExQixFQUFrQyxRQUFsQyxFQUE0QyxLQUE1QyxFQUFtRCxZQUFuRCxDQUFuQjtBQUNBLFVBQU1vRixnQkFBZ0IsR0FBR3JGLHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIsT0FBMUIsRUFBbUMsVUFBbkMsQ0FBekI7QUFDQSxVQUFNSSxXQUFXLEdBQUdMLHNEQUFjLENBQUNPLGlCQUFmLENBQWlDLE1BQWpDLENBQXBCO0FBQ0EsVUFBTStFLFNBQVMsR0FBR3RGLHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIsT0FBMUIsQ0FBbEI7QUFDQSxVQUFNc0YsTUFBTSxHQUFHdkYsc0RBQWMsQ0FBQ0MsVUFBZixDQUEwQixNQUExQixFQUFrQyxTQUFsQyxDQUFmO0FBQ0EsVUFBTXVGLFNBQVMsR0FBR3hGLHNEQUFjLENBQUN5RixTQUFmLENBQXlCQyxDQUFDLElBQUlBLENBQUMsQ0FBQ0MsWUFBRixJQUFrQkQsQ0FBQyxDQUFDQyxZQUFGLENBQWVDLFVBQWYsSUFBNkIsS0FBN0UsQ0FBbEI7QUFDQSxVQUFNQyxjQUFjLEdBQUc3RixzREFBYyxDQUFDQyxVQUFmLENBQTBCLGNBQTFCLEVBQTBDLE9BQTFDLENBQXZCO0FBQ0EsUUFBSSxDQUFDdUYsU0FBRCxJQUFjLENBQUN0RixVQUFmLElBQTZCLENBQUNtRixnQkFBOUIsSUFBa0QsQ0FBQ2hGLFdBQW5ELElBQWtFLENBQUNpRixTQUFuRSxJQUFnRixDQUFDQyxNQUFqRixJQUEyRixDQUFDTSxjQUFoRyxFQUFnSCxPQUFPckIsOENBQU0sQ0FBQ3NCLElBQVAsQ0FBWSxRQUFaLEVBQXNCLG9DQUF0QixDQUFQO0FBRWhILFVBQU07QUFBQ0MsV0FBSyxHQUFHLGdHQUFUO0FBQTJHQyxpQkFBVyxHQUFHLEVBQXpIO0FBQTZIQyxhQUFPLEdBQUcsRUFBdkk7QUFBMkl2RixXQUFLLEdBQUcsWUFBbko7QUFBaUt3RixjQUFRLEdBQUksSUFBR0MsMkNBQU0sQ0FBQ0MsVUFBVyxFQUFsTTtBQUFxTUM7QUFBck0sUUFBK016RSxPQUFyTjtBQUNBLFVBQU0wRSxFQUFFLEdBQUczRCw2Q0FBSyxDQUFDN0IsYUFBakI7QUFDQSxVQUFNeUYsY0FBYyxHQUFHLENBQUNELEVBQUUsQ0FBQyxLQUFELEVBQVE7QUFBQ0UsU0FBRyxFQUFFVDtBQUFOLEtBQVIsQ0FBSCxDQUF2QjtBQUNBLFFBQUlDLFdBQUosRUFBaUJPLGNBQWMsQ0FBQ0UsSUFBZixDQUFvQkgsRUFBRSxDQUFDLEdBQUQsRUFBTSxJQUFOLEVBQVlULGNBQWMsQ0FBQ2EsS0FBZixDQUFxQlYsV0FBckIsQ0FBWixDQUF0Qjs7QUFDakIsU0FBSyxJQUFJdEQsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR3VELE9BQU8sQ0FBQ3pDLE1BQTVCLEVBQW9DZCxDQUFDLEVBQXJDLEVBQXlDO0FBQ3JDLFlBQU1pRSxLQUFLLEdBQUdWLE9BQU8sQ0FBQ3ZELENBQUQsQ0FBckI7QUFDQSxZQUFNa0UsSUFBSSxHQUFHdkIsZ0JBQWdCLENBQUNzQixLQUFLLENBQUNDLElBQVAsQ0FBaEIsR0FBK0J2QixnQkFBZ0IsQ0FBQ3NCLEtBQUssQ0FBQ0MsSUFBUCxDQUEvQyxHQUE4RHZCLGdCQUFnQixDQUFDd0IsS0FBNUY7QUFDQSxZQUFNQyxNQUFNLEdBQUdwRSxDQUFDLElBQUksQ0FBTCxHQUFTMkMsZ0JBQWdCLENBQUMwQixTQUExQixHQUFzQyxFQUFyRDtBQUNBUixvQkFBYyxDQUFDRSxJQUFmLENBQW9CSCxFQUFFLENBQUMsSUFBRCxFQUFPO0FBQUNVLGlCQUFTLEVBQUcsR0FBRUosSUFBSyxJQUFHRSxNQUFPO0FBQTlCLE9BQVAsRUFBMENILEtBQUssQ0FBQ2pHLEtBQWhELENBQXRCO0FBQ0EsWUFBTXVHLElBQUksR0FBR1gsRUFBRSxDQUFDLElBQUQsRUFBTyxJQUFQLEVBQWFLLEtBQUssQ0FBQ08sS0FBTixDQUFZekUsR0FBWixDQUFnQjBFLENBQUMsSUFBSWIsRUFBRSxDQUFDLElBQUQsRUFBTyxJQUFQLEVBQWFULGNBQWMsQ0FBQ2EsS0FBZixDQUFxQlMsQ0FBckIsQ0FBYixDQUF2QixDQUFiLENBQWY7QUFDQVosb0JBQWMsQ0FBQ0UsSUFBZixDQUFvQlEsSUFBcEI7QUFDSDs7QUFDRCxVQUFNRyxZQUFZLEdBQUcsWUFBVztBQUM1QixhQUFPZCxFQUFFLENBQUNoQixTQUFTLENBQUMrQixLQUFYLEVBQWtCO0FBQUNDLFlBQUksRUFBRSxDQUFQO0FBQVVDLGNBQU0sRUFBRTtBQUFsQixPQUFsQixFQUNMakIsRUFBRSxDQUFDZixNQUFNLENBQUM5RSxPQUFSLEVBQWlCO0FBQUMrRyxXQUFHLEVBQUVqQyxNQUFNLENBQUNrQyxJQUFQLENBQVlDO0FBQWxCLE9BQWpCLEVBQXdDaEgsS0FBeEMsQ0FERyxFQUVMNEYsRUFBRSxDQUFDakcsV0FBRCxFQUFjO0FBQUNzSCxZQUFJLEVBQUV0SCxXQUFXLENBQUN1SCxLQUFaLENBQWtCQyxLQUF6QjtBQUFnQ0MsYUFBSyxFQUFFekgsV0FBVyxDQUFDMEgsTUFBWixDQUFtQkMsUUFBMUQ7QUFBb0VoQixpQkFBUyxFQUFFM0IsZ0JBQWdCLENBQUM0QztBQUFoRyxPQUFkLEVBQXFIL0IsUUFBckgsQ0FGRyxDQUFUO0FBSUgsS0FMRDs7QUFPQSxVQUFNZ0MsWUFBWSxHQUFHLE1BQU07QUFDdkIsWUFBTUMsTUFBTSxHQUFHbkksc0RBQWMsQ0FBQ3lGLFNBQWYsQ0FBeUJDLENBQUMsSUFBSUEsQ0FBQyxDQUFDMEMsV0FBRixJQUFpQixRQUEvQyxDQUFmO0FBQ0EsWUFBTUMsYUFBYSxHQUFHckksc0RBQWMsQ0FBQ0MsVUFBZixDQUEwQix3QkFBMUIsS0FBdUQ7QUFBQ3FJLGNBQU0sRUFBRSxlQUFUO0FBQTBCQyw4QkFBc0IsRUFBRTtBQUFsRCxPQUE3RTs7QUFDQSxZQUFNQyxpQkFBaUIsR0FBSXJELEtBQUQsSUFBVztBQUNqQ0EsYUFBSyxDQUFDWixjQUFOO0FBQ0FZLGFBQUssQ0FBQ3NELGVBQU47QUFDQXZJLGtCQUFVLENBQUN3SSxHQUFYO0FBQ0FDLDhEQUFjLENBQUNDLGFBQWYsQ0FBNkJDLHdDQUE3QixDQUFzRSxTQUF0RTtBQUNILE9BTEQ7O0FBTUEsWUFBTUMsV0FBVyxHQUFHWCxNQUFNLEdBQUc3QixFQUFFLENBQUM2QixNQUFELEVBQVM7QUFBQ1ksZUFBTyxFQUFFUDtBQUFWLE9BQVQsRUFBdUMsMEJBQXZDLENBQUwsR0FBMEVsQyxFQUFFLENBQUMsR0FBRCxFQUFNO0FBQUNVLGlCQUFTLEVBQUcsR0FBRXFCLGFBQWEsQ0FBQ0MsTUFBTyxJQUFHRCxhQUFhLENBQUNFLHNCQUF1QixFQUE1RTtBQUErRVEsZUFBTyxFQUFFUDtBQUF4RixPQUFOLEVBQWtILDBCQUFsSCxDQUF0RztBQUNBLFlBQU1RLGFBQWEsR0FBRzFDLEVBQUUsQ0FBQ2pHLFdBQUQsRUFBYztBQUFDc0gsWUFBSSxFQUFFdEgsV0FBVyxDQUFDdUgsS0FBWixDQUFrQkMsS0FBekI7QUFBZ0NDLGFBQUssRUFBRXpILFdBQVcsQ0FBQzBILE1BQVosQ0FBbUJDO0FBQTFELE9BQWQsRUFBbUYsZ0JBQW5GLEVBQXFHYyxXQUFyRyxDQUF4QjtBQUNBLGFBQU94QyxFQUFFLENBQUNoQixTQUFTLENBQUMrQixLQUFYLEVBQWtCO0FBQUNDLFlBQUksRUFBRSxDQUFQO0FBQVVDLGNBQU0sRUFBRTtBQUFsQixPQUFsQixFQUF3Q2xCLE1BQU0sR0FBR0EsTUFBSCxHQUFZMkMsYUFBMUQsQ0FBVDtBQUNILEtBWkQ7O0FBY0EsV0FBTzlJLFVBQVUsQ0FBQ3VHLElBQVgsQ0FBZ0JqQixTQUFoQixFQUEyQjtBQUM5QndCLGVBQVMsRUFBRTNCLGdCQUFnQixDQUFDckIsU0FERTtBQUU5QjRCLGdCQUFVLEVBQUUsSUFGa0I7QUFHOUJxRCxjQUFRLEVBQUVDLENBQUMsSUFBSUEsQ0FIZTtBQUk5QkMsYUFBTyxFQUFFRCxDQUFDLElBQUlBLENBSmdCO0FBSzlCOUIsa0JBQVksRUFBRUEsWUFMZ0I7QUFNOUJjLGtCQUFZLEVBQUVBLFlBTmdCO0FBTzlCa0IsY0FBUSxFQUFFN0M7QUFQb0IsS0FBM0IsQ0FBUDtBQVNIOztBQXROdUIiLCJmaWxlIjoiLi9zcmMvdWkvbW9kYWxzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25maWd9IGZyb20gXCJkYXRhXCI7XHJcbmltcG9ydCB7TG9nZ2VyLCBXZWJwYWNrTW9kdWxlcywgUmVhY3QsIFNldHRpbmdzLCBTdHJpbmdzLCBET00sIERpc2NvcmRNb2R1bGVzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgRm9ybWF0dGFibGVTdHJpbmcgZnJvbSBcIi4uL3N0cnVjdHMvc3RyaW5nXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNb2RhbHMge1xyXG5cclxuICAgIHN0YXRpYyBnZXQgc2hvdWxkU2hvd0FkZG9uRXJyb3JzKCkge3JldHVybiBTZXR0aW5ncy5nZXQoXCJzZXR0aW5nc1wiLCBcImFkZG9uc1wiLCBcImFkZG9uRXJyb3JzXCIpO31cclxuXHJcbiAgICBzdGF0aWMgZ2V0IE1vZGFsQWN0aW9ucygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIm9wZW5Nb2RhbFwiLCBcInVwZGF0ZU1vZGFsXCIpO31cclxuICAgIHN0YXRpYyBnZXQgTW9kYWxTdGFjaygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInB1c2hcIiwgXCJ1cGRhdGVcIiwgXCJwb3BcIiwgXCJwb3BXaXRoS2V5XCIpO31cclxuICAgIHN0YXRpYyBnZXQgQWxlcnRNb2RhbCgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm90b3R5cGVzKFwiaGFuZGxlQ2FuY2VsXCIsIFwiaGFuZGxlU3VibWl0XCIsIFwiaGFuZGxlTWlub3JDb25maXJtXCIpO31cclxuICAgIHN0YXRpYyBnZXQgVGV4dEVsZW1lbnQoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJTaXplc1wiLCBcIldlaWdodHNcIik7fVxyXG4gICAgc3RhdGljIGdldCBDb25maXJtYXRpb25Nb2RhbCgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZmluZEJ5RGlzcGxheU5hbWUoXCJDb25maXJtTW9kYWxcIik7fVxyXG4gICAgc3RhdGljIGdldCBNYXJrZG93bigpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZmluZEJ5RGlzcGxheU5hbWUoXCJNYXJrZG93blwiKTt9XHJcblxyXG4gICAgc3RhdGljIGRlZmF1bHQodGl0bGUsIGNvbnRlbnQpIHtcclxuICAgICAgICBjb25zdCBtb2RhbCA9IERPTS5jcmVhdGVFbGVtZW50KGA8ZGl2IGNsYXNzPVwiYmQtbW9kYWwtd3JhcHBlciB0aGVtZS1kYXJrXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmQtYmFja2Ryb3AgYmFja2Ryb3AtMXdybUtCXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmQtbW9kYWwgbW9kYWwtMVVHZG5SXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJkLW1vZGFsLWlubmVyIGlubmVyLTFKZUdWY1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyIGhlYWRlci0xUl9BakZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPiR7dGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmQtbW9kYWwtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbGVyLXdyYXAgZmFkZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXIgZm9vdGVyLTJ5ZkNnWCBmb290ZXItM3JEV2RDIGZvb3Rlci0yZ0wxcHBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYmQtYnV0dG9uXCI+JHtTdHJpbmdzLk1vZGFscy5va2F5fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5gKTtcclxuICAgICAgICBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLmZvb3RlciBidXR0b25cIikuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgICAgICAgICAgbW9kYWwuY2xhc3NMaXN0LmFkZChcImNsb3NpbmdcIik7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyBtb2RhbC5yZW1vdmUoKTsgfSwgMzAwKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLmJkLWJhY2tkcm9wXCIpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIG1vZGFsLmNsYXNzTGlzdC5hZGQoXCJjbG9zaW5nXCIpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgbW9kYWwucmVtb3ZlKCk7IH0sIDMwMCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhcHAtbW91bnRcIikuYXBwZW5kKG1vZGFsKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgYWxlcnQodGl0bGUsIGNvbnRlbnQpIHtcclxuICAgICAgICB0aGlzLnNob3dDb25maXJtYXRpb25Nb2RhbCh0aXRsZSwgY29udGVudCwge2NhbmNlbFRleHQ6IFwiXCJ9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNob3dzIGEgZ2VuZXJpYyBidXQgdmVyeSBjdXN0b21pemFibGUgY29uZmlybWF0aW9uIG1vZGFsIHdpdGggb3B0aW9uYWwgY29uZmlybSBhbmQgY2FuY2VsIGNhbGxiYWNrcy5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSAtIHRpdGxlIG9mIHRoZSBtb2RhbFxyXG4gICAgICogQHBhcmFtIHsoc3RyaW5nfFJlYWN0RWxlbWVudHxBcnJheTxzdHJpbmd8UmVhY3RFbGVtZW50Pil9IGNoaWxkcmVuIC0gYSBzaW5nbGUgb3IgbWl4ZWQgYXJyYXkgb2YgcmVhY3QgZWxlbWVudHMgYW5kIHN0cmluZ3MuIEV2ZXJ5dGhpbmcgaXMgd3JhcHBlZCBpbiBEaXNjb3JkJ3MgYE1hcmtkb3duYCBjb21wb25lbnQgc28gc3RyaW5ncyB3aWxsIHNob3cgYW5kIHJlbmRlciBwcm9wZXJseS5cclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc10gLSBvcHRpb25zIHRvIG1vZGlmeSB0aGUgbW9kYWxcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuZGFuZ2VyPWZhbHNlXSAtIHdoZXRoZXIgdGhlIG1haW4gYnV0dG9uIHNob3VsZCBiZSByZWQgb3Igbm90XHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuY29uZmlybVRleHQ9T2theV0gLSB0ZXh0IGZvciB0aGUgY29uZmlybWF0aW9uL3N1Ym1pdCBidXR0b25cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5jYW5jZWxUZXh0PUNhbmNlbF0gLSB0ZXh0IGZvciB0aGUgY2FuY2VsIGJ1dHRvblxyXG4gICAgICogQHBhcmFtIHtjYWxsYWJsZX0gW29wdGlvbnMub25Db25maXJtPU5PT1BdIC0gY2FsbGJhY2sgdG8gb2NjdXIgd2hlbiBjbGlja2luZyB0aGUgc3VibWl0IGJ1dHRvblxyXG4gICAgICogQHBhcmFtIHtjYWxsYWJsZX0gW29wdGlvbnMub25DYW5jZWw9Tk9PUF0gLSBjYWxsYmFjayB0byBvY2N1ciB3aGVuIGNsaWNraW5nIHRoZSBjYW5jZWwgYnV0dG9uXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMua2V5XSAtIGtleSB1c2VkIHRvIGlkZW50aWZ5IHRoZSBtb2RhbC4gSWYgbm90IHByb3ZpZGVkLCBvbmUgaXMgZ2VuZXJhdGVkIGFuZCByZXR1cm5lZFxyXG4gICAgICogQHJldHVybnMge3N0cmluZ30gLSB0aGUga2V5IHVzZWQgZm9yIHRoaXMgbW9kYWxcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHNob3dDb25maXJtYXRpb25Nb2RhbCh0aXRsZSwgY29udGVudCwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICAgICAgY29uc3QgTWFya2Rvd24gPSB0aGlzLk1hcmtkb3duO1xyXG4gICAgICAgIGNvbnN0IENvbmZpcm1hdGlvbk1vZGFsID0gdGhpcy5Db25maXJtYXRpb25Nb2RhbDtcclxuICAgICAgICBjb25zdCBNb2RhbEFjdGlvbnMgPSB0aGlzLk1vZGFsQWN0aW9ucztcclxuICAgICAgICBpZiAoY29udGVudCBpbnN0YW5jZW9mIEZvcm1hdHRhYmxlU3RyaW5nKSBjb250ZW50ID0gY29udGVudC50b1N0cmluZygpO1xyXG4gICAgICAgIGlmICghdGhpcy5Nb2RhbEFjdGlvbnMgfHwgIXRoaXMuQ29uZmlybWF0aW9uTW9kYWwgfHwgIXRoaXMuTWFya2Rvd24pIHJldHVybiB0aGlzLmRlZmF1bHQodGl0bGUsIGNvbnRlbnQpO1xyXG5cclxuICAgICAgICBjb25zdCBlbXB0eUZ1bmN0aW9uID0gKCkgPT4ge307XHJcbiAgICAgICAgY29uc3Qge29uQ29uZmlybSA9IGVtcHR5RnVuY3Rpb24sIG9uQ2FuY2VsID0gZW1wdHlGdW5jdGlvbiwgY29uZmlybVRleHQgPSBTdHJpbmdzLk1vZGFscy5va2F5LCBjYW5jZWxUZXh0ID0gU3RyaW5ncy5Nb2RhbHMuY2FuY2VsLCBkYW5nZXIgPSBmYWxzZSwga2V5ID0gdW5kZWZpbmVkfSA9IG9wdGlvbnM7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbnRlbnQpKSBjb250ZW50ID0gW2NvbnRlbnRdO1xyXG4gICAgICAgIGNvbnRlbnQgPSBjb250ZW50Lm1hcChjID0+IHR5cGVvZihjKSA9PT0gXCJzdHJpbmdcIiA/IFJlYWN0LmNyZWF0ZUVsZW1lbnQoTWFya2Rvd24sIG51bGwsIGMpIDogYyk7XHJcblxyXG4gICAgICAgIHJldHVybiBNb2RhbEFjdGlvbnMub3Blbk1vZGFsKHByb3BzID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29uZmlybWF0aW9uTW9kYWwsIE9iamVjdC5hc3NpZ24oe1xyXG4gICAgICAgICAgICAgICAgaGVhZGVyOiB0aXRsZSxcclxuICAgICAgICAgICAgICAgIHJlZDogZGFuZ2VyLFxyXG4gICAgICAgICAgICAgICAgY29uZmlybVRleHQ6IGNvbmZpcm1UZXh0LFxyXG4gICAgICAgICAgICAgICAgY2FuY2VsVGV4dDogY2FuY2VsVGV4dCxcclxuICAgICAgICAgICAgICAgIG9uQ29uZmlybTogb25Db25maXJtLFxyXG4gICAgICAgICAgICAgICAgb25DYW5jZWw6IG9uQ2FuY2VsXHJcbiAgICAgICAgICAgIH0sIHByb3BzKSwgY29udGVudCk7XHJcbiAgICAgICAgfSwge21vZGFsS2V5OiBrZXl9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgc2hvd0FkZG9uRXJyb3JzKHtwbHVnaW5zOiBwbHVnaW5FcnJvcnMgPSBbXSwgdGhlbWVzOiB0aGVtZUVycm9ycyA9IFtdfSkge1xyXG4gICAgICAgIGlmICghcGx1Z2luRXJyb3JzIHx8ICF0aGVtZUVycm9ycyB8fCAhdGhpcy5zaG91bGRTaG93QWRkb25FcnJvcnMpIHJldHVybjtcclxuICAgICAgICBpZiAoIXBsdWdpbkVycm9ycy5sZW5ndGggJiYgIXRoZW1lRXJyb3JzLmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IG1vZGFsID0gRE9NLmNyZWF0ZUVsZW1lbnQoYDxkaXYgY2xhc3M9XCJiZC1tb2RhbC13cmFwcGVyIHRoZW1lLWRhcmtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJkLWJhY2tkcm9wIGJhY2tkcm9wLTF3cm1LQlwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmQtbW9kYWwgYmQtY29udGVudC1tb2RhbCBtb2RhbC0xVUdkblJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZC1tb2RhbC1pbm5lciBpbm5lci0xSmVHVmNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyIGhlYWRlci0xUl9BakZcIj48ZGl2IGNsYXNzPVwidGl0bGVcIj4ke1N0cmluZ3MuTW9kYWxzLmFkZG9uRXJyb3JzfTwvZGl2PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZC1tb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWItYmFyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1iYXIgVE9QXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1iYXItaXRlbVwiPiR7U3RyaW5ncy5QYW5lbHMucGx1Z2luc308L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiLWJhci1pdGVtXCI+JHtTdHJpbmdzLlBhbmVscy50aGVtZXN9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gY29sdW1uLW5hbWVcIj4ke1N0cmluZ3MuTW9kYWxzLm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIGNvbHVtbi1tZXNzYWdlXCI+JHtTdHJpbmdzLk1vZGFscy5tZXNzYWdlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiBjb2x1bW4tZXJyb3JcIj4ke1N0cmluZ3MuTW9kYWxzLmVycm9yfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbGVyLXdyYXAgZmFkZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbGVyXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXIgZm9vdGVyLTJ5ZkNnWCBmb290ZXItM3JEV2RDIGZvb3Rlci0yZ0wxcHBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJiZC1idXR0b25cIj4ke1N0cmluZ3MuTW9kYWxzLm9rYXl9PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+YCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGdlbmVyYXRlVGFiID0gZnVuY3Rpb24oZXJyb3JzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IERPTS5jcmVhdGVFbGVtZW50KGA8ZGl2IGNsYXNzPVwiZXJyb3JzXCI+YCk7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgZXJyIG9mIGVycm9ycykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBET00uY3JlYXRlRWxlbWVudChgPGRpdiBjbGFzcz1cImVycm9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gY29sdW1uLW5hbWVcIj4ke2Vyci5uYW1lID8gZXJyLm5hbWUgOiBlcnIuZmlsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiBjb2x1bW4tbWVzc2FnZVwiPiR7ZXJyLm1lc3NhZ2V9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gY29sdW1uLWVycm9yXCI+PGEgY2xhc3M9XCJlcnJvci1saW5rXCIgaHJlZj1cIlwiPiR7ZXJyLmVycm9yID8gZXJyLmVycm9yLm1lc3NhZ2UgOiBcIlwifTwvYT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5gKTtcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmQoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVyci5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLnF1ZXJ5U2VsZWN0b3JBbGwoXCJhXCIpLmZvckVhY2goZWwgPT4gZWwuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2VyLnN0YWNrdHJhY2UoXCJBZGRvbkVycm9yXCIsIGBFcnJvciBkZXRhaWxzIGZvciAke2Vyci5uYW1lID8gZXJyLm5hbWUgOiBlcnIuZmlsZX0uYCwgZXJyLmVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lcjtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zdCB0YWJzID0gW2dlbmVyYXRlVGFiKHBsdWdpbkVycm9ycyksIGdlbmVyYXRlVGFiKHRoZW1lRXJyb3JzKV07XHJcblxyXG4gICAgICAgIG1vZGFsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIudGFiLWJhci1pdGVtXCIpLmZvckVhY2goZWwgPT4gZWwuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIChlKSA9PiB7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLnRhYi1iYXItaXRlbS5zZWxlY3RlZFwiKTtcclxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSBET00ucmVtb3ZlQ2xhc3Moc2VsZWN0ZWQsIFwic2VsZWN0ZWRcIik7XHJcbiAgICAgICAgICAgIERPTS5hZGRDbGFzcyhlLnRhcmdldCwgXCJzZWxlY3RlZFwiKTtcclxuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsZXIgPSBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLnNjcm9sbGVyXCIpO1xyXG4gICAgICAgICAgICBzY3JvbGxlci5pbm5lckhUTUwgPSBcIlwiO1xyXG4gICAgICAgICAgICBzY3JvbGxlci5hcHBlbmQodGFic1tET00uaW5kZXgoZS50YXJnZXQpXSk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLmZvb3RlciBidXR0b25cIikuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgICAgICAgICAgRE9NLmFkZENsYXNzKG1vZGFsLCBcImNsb3NpbmdcIik7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyBtb2RhbC5yZW1vdmUoKTsgfSwgMzAwKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLmJkLWJhY2tkcm9wXCIpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIERPTS5hZGRDbGFzcyhtb2RhbCwgXCJjbG9zaW5nXCIpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgbW9kYWwucmVtb3ZlKCk7IH0sIDMwMCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgRE9NLnF1ZXJ5KFwiI2FwcC1tb3VudFwiKS5hcHBlbmQobW9kYWwpO1xyXG4gICAgICAgIGlmIChwbHVnaW5FcnJvcnMubGVuZ3RoKSBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLnRhYi1iYXItaXRlbVwiKS5jbGljaygpO1xyXG4gICAgICAgIGVsc2UgbW9kYWwucXVlcnlTZWxlY3RvckFsbChcIi50YWItYmFyLWl0ZW1cIilbMV0uY2xpY2soKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgc2hvd0NoYW5nZWxvZ01vZGFsKG9wdGlvbnMgPSB7fSkge1xyXG4gICAgICAgIGNvbnN0IE1vZGFsU3RhY2sgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwicHVzaFwiLCBcInVwZGF0ZVwiLCBcInBvcFwiLCBcInBvcFdpdGhLZXlcIik7XHJcbiAgICAgICAgY29uc3QgQ2hhbmdlbG9nQ2xhc3NlcyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJmaXhlZFwiLCBcImltcHJvdmVkXCIpO1xyXG4gICAgICAgIGNvbnN0IFRleHRFbGVtZW50ID0gV2VicGFja01vZHVsZXMuZmluZEJ5RGlzcGxheU5hbWUoXCJUZXh0XCIpO1xyXG4gICAgICAgIGNvbnN0IEZsZXhDaGlsZCA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJDaGlsZFwiKTtcclxuICAgICAgICBjb25zdCBUaXRsZXMgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiVGFnc1wiLCBcImRlZmF1bHRcIik7XHJcbiAgICAgICAgY29uc3QgQ2hhbmdlbG9nID0gV2VicGFja01vZHVsZXMuZ2V0TW9kdWxlKG0gPT4gbS5kZWZhdWx0UHJvcHMgJiYgbS5kZWZhdWx0UHJvcHMuc2VsZWN0YWJsZSA9PSBmYWxzZSk7XHJcbiAgICAgICAgY29uc3QgTWFya2Rvd25QYXJzZXIgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZGVmYXVsdFJ1bGVzXCIsIFwicGFyc2VcIik7XHJcbiAgICAgICAgaWYgKCFDaGFuZ2Vsb2cgfHwgIU1vZGFsU3RhY2sgfHwgIUNoYW5nZWxvZ0NsYXNzZXMgfHwgIVRleHRFbGVtZW50IHx8ICFGbGV4Q2hpbGQgfHwgIVRpdGxlcyB8fCAhTWFya2Rvd25QYXJzZXIpIHJldHVybiBMb2dnZXIud2FybihcIk1vZGFsc1wiLCBcInNob3dDaGFuZ2Vsb2dNb2RhbCBtaXNzaW5nIG1vZHVsZXNcIik7XHJcbiAgICBcclxuICAgICAgICBjb25zdCB7aW1hZ2UgPSBcImh0dHBzOi8vcmVwb3NpdG9yeS1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzEwNTQ3MzUzNy85NTdiNTQ4MC03YzI2LTExZTktODQwMS01MGZhODIwY2JhZTVcIiwgZGVzY3JpcHRpb24gPSBcIlwiLCBjaGFuZ2VzID0gW10sIHRpdGxlID0gXCJCYW5kYWdlZEJEXCIsIHN1YnRpdGxlID0gYHYke0NvbmZpZy5iYmRWZXJzaW9ufWAsIGZvb3Rlcn0gPSBvcHRpb25zO1xyXG4gICAgICAgIGNvbnN0IGNlID0gUmVhY3QuY3JlYXRlRWxlbWVudDtcclxuICAgICAgICBjb25zdCBjaGFuZ2Vsb2dJdGVtcyA9IFtjZShcImltZ1wiLCB7c3JjOiBpbWFnZX0pXTtcclxuICAgICAgICBpZiAoZGVzY3JpcHRpb24pIGNoYW5nZWxvZ0l0ZW1zLnB1c2goY2UoXCJwXCIsIG51bGwsIE1hcmtkb3duUGFyc2VyLnBhcnNlKGRlc2NyaXB0aW9uKSkpO1xyXG4gICAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgY2hhbmdlcy5sZW5ndGg7IGMrKykge1xyXG4gICAgICAgICAgICBjb25zdCBlbnRyeSA9IGNoYW5nZXNbY107XHJcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBDaGFuZ2Vsb2dDbGFzc2VzW2VudHJ5LnR5cGVdID8gQ2hhbmdlbG9nQ2xhc3Nlc1tlbnRyeS50eXBlXSA6IENoYW5nZWxvZ0NsYXNzZXMuYWRkZWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hcmdpbiA9IGMgPT0gMCA/IENoYW5nZWxvZ0NsYXNzZXMubWFyZ2luVG9wIDogXCJcIjtcclxuICAgICAgICAgICAgY2hhbmdlbG9nSXRlbXMucHVzaChjZShcImgxXCIsIHtjbGFzc05hbWU6IGAke3R5cGV9ICR7bWFyZ2lufWAsfSwgZW50cnkudGl0bGUpKTtcclxuICAgICAgICAgICAgY29uc3QgbGlzdCA9IGNlKFwidWxcIiwgbnVsbCwgZW50cnkuaXRlbXMubWFwKGkgPT4gY2UoXCJsaVwiLCBudWxsLCBNYXJrZG93blBhcnNlci5wYXJzZShpKSkpKTtcclxuICAgICAgICAgICAgY2hhbmdlbG9nSXRlbXMucHVzaChsaXN0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcmVuZGVySGVhZGVyID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjZShGbGV4Q2hpbGQuQ2hpbGQsIHtncm93OiAxLCBzaHJpbms6IDF9LFxyXG4gICAgICAgICAgICAgICAgY2UoVGl0bGVzLmRlZmF1bHQsIHt0YWc6IFRpdGxlcy5UYWdzLkg0fSwgdGl0bGUpLFxyXG4gICAgICAgICAgICAgICAgY2UoVGV4dEVsZW1lbnQsIHtzaXplOiBUZXh0RWxlbWVudC5TaXplcy5TTUFMTCwgY29sb3I6IFRleHRFbGVtZW50LkNvbG9ycy5TVEFOREFSRCwgY2xhc3NOYW1lOiBDaGFuZ2Vsb2dDbGFzc2VzLmRhdGV9LCBzdWJ0aXRsZSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9O1xyXG4gICAgXHJcbiAgICAgICAgY29uc3QgcmVuZGVyRm9vdGVyID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBBbmNob3IgPSBXZWJwYWNrTW9kdWxlcy5nZXRNb2R1bGUobSA9PiBtLmRpc3BsYXlOYW1lID09IFwiQW5jaG9yXCIpO1xyXG4gICAgICAgICAgICBjb25zdCBBbmNob3JDbGFzc2VzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImFuY2hvclVuZGVybGluZU9uSG92ZXJcIikgfHwge2FuY2hvcjogXCJhbmNob3ItM1otOEJiXCIsIGFuY2hvclVuZGVybGluZU9uSG92ZXI6IFwiYW5jaG9yVW5kZXJsaW5lT25Ib3Zlci0yRVNIUUJcIn07XHJcbiAgICAgICAgICAgIGNvbnN0IGpvaW5TdXBwb3J0U2VydmVyID0gKGNsaWNrKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjbGljay5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgY2xpY2suc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBNb2RhbFN0YWNrLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgRGlzY29yZE1vZHVsZXMuSW52aXRlQWN0aW9ucy5hY2NlcHRJbnZpdGVBbmRUcmFuc2l0aW9uVG9JbnZpdGVDaGFubmVsKFwiMkhTY204alwiKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgY29uc3Qgc3VwcG9ydExpbmsgPSBBbmNob3IgPyBjZShBbmNob3IsIHtvbkNsaWNrOiBqb2luU3VwcG9ydFNlcnZlcn0sIFwiSm9pbiBvdXIgRGlzY29yZCBTZXJ2ZXIuXCIpIDogY2UoXCJhXCIsIHtjbGFzc05hbWU6IGAke0FuY2hvckNsYXNzZXMuYW5jaG9yfSAke0FuY2hvckNsYXNzZXMuYW5jaG9yVW5kZXJsaW5lT25Ib3Zlcn1gLCBvbkNsaWNrOiBqb2luU3VwcG9ydFNlcnZlcn0sIFwiSm9pbiBvdXIgRGlzY29yZCBTZXJ2ZXIuXCIpO1xyXG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0Rm9vdGVyID0gY2UoVGV4dEVsZW1lbnQsIHtzaXplOiBUZXh0RWxlbWVudC5TaXplcy5TTUFMTCwgY29sb3I6IFRleHRFbGVtZW50LkNvbG9ycy5TVEFOREFSRH0sIFwiTmVlZCBzdXBwb3J0PyBcIiwgc3VwcG9ydExpbmspO1xyXG4gICAgICAgICAgICByZXR1cm4gY2UoRmxleENoaWxkLkNoaWxkLCB7Z3JvdzogMSwgc2hyaW5rOiAxfSwgZm9vdGVyID8gZm9vdGVyIDogZGVmYXVsdEZvb3Rlcik7XHJcbiAgICAgICAgfTtcclxuICAgIFxyXG4gICAgICAgIHJldHVybiBNb2RhbFN0YWNrLnB1c2goQ2hhbmdlbG9nLCB7XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZTogQ2hhbmdlbG9nQ2xhc3Nlcy5jb250YWluZXIsXHJcbiAgICAgICAgICAgIHNlbGVjdGFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIG9uU2Nyb2xsOiBfID0+IF8sXHJcbiAgICAgICAgICAgIG9uQ2xvc2U6IF8gPT4gXyxcclxuICAgICAgICAgICAgcmVuZGVySGVhZGVyOiByZW5kZXJIZWFkZXIsXHJcbiAgICAgICAgICAgIHJlbmRlckZvb3RlcjogcmVuZGVyRm9vdGVyLFxyXG4gICAgICAgICAgICBjaGlsZHJlbjogY2hhbmdlbG9nSXRlbXNcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/modals.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Modals; });\n/* harmony import */ var _data_data_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../data/data.js */ \"./src/data/data.js\");\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _structs_string__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../structs/string */ \"./src/structs/string.js\");\n\n\n\nclass Modals {\n static get shouldShowAddonErrors() {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(\"settings\", \"addons\", \"addonErrors\");\n }\n\n static get ModalActions() {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"openModal\", \"updateModal\");\n }\n\n static get ModalStack() {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"push\", \"update\", \"pop\", \"popWithKey\");\n }\n\n static get AlertModal() {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByPrototypes(\"handleCancel\", \"handleSubmit\", \"handleMinorConfirm\");\n }\n\n static get TextElement() {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"Sizes\", \"Weights\");\n }\n\n static get ConfirmationModal() {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].findByDisplayName(\"ConfirmModal\");\n }\n\n static get Markdown() {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].findByDisplayName(\"Markdown\");\n }\n\n static default(title, content) {\n const modal = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
\n
\n
\n
\n
\n
${title}
\n
\n
\n
\n
\n ${content}\n
\n
\n
\n
\n \n
\n
\n
\n
`);\n modal.querySelector(\".footer button\").addEventListener(\"click\", () => {\n modal.classList.add(\"closing\");\n setTimeout(() => {\n modal.remove();\n }, 300);\n });\n modal.querySelector(\".bd-backdrop\").addEventListener(\"click\", () => {\n modal.classList.add(\"closing\");\n setTimeout(() => {\n modal.remove();\n }, 300);\n });\n document.querySelector(\"#app-mount\").append(modal);\n }\n\n static alert(title, content) {\n this.showConfirmationModal(title, content, {\n cancelText: \"\"\n });\n }\n /**\r\n * Shows a generic but very customizable confirmation modal with optional confirm and cancel callbacks.\r\n * @param {string} title - title of the modal\r\n * @param {(string|ReactElement|Array)} children - a single or mixed array of react elements and strings. Everything is wrapped in Discord's `Markdown` component so strings will show and render properly.\r\n * @param {object} [options] - options to modify the modal\r\n * @param {boolean} [options.danger=false] - whether the main button should be red or not\r\n * @param {string} [options.confirmText=Okay] - text for the confirmation/submit button\r\n * @param {string} [options.cancelText=Cancel] - text for the cancel button\r\n * @param {callable} [options.onConfirm=NOOP] - callback to occur when clicking the submit button\r\n * @param {callable} [options.onCancel=NOOP] - callback to occur when clicking the cancel button\r\n * @param {string} [options.key] - key used to identify the modal. If not provided, one is generated and returned\r\n * @returns {string} - the key used for this modal\r\n */\n\n\n static showConfirmationModal(title, content, options = {}) {\n const Markdown = this.Markdown;\n const ConfirmationModal = this.ConfirmationModal;\n const ModalActions = this.ModalActions;\n if (content instanceof _structs_string__WEBPACK_IMPORTED_MODULE_2__[\"default\"]) content = content.toString();\n if (!this.ModalActions || !this.ConfirmationModal || !this.Markdown) return this.default(title, content);\n\n const emptyFunction = () => {};\n\n const {\n onConfirm = emptyFunction,\n onCancel = emptyFunction,\n confirmText = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.okay,\n cancelText = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.cancel,\n danger = false,\n key = undefined\n } = options;\n if (!Array.isArray(content)) content = [content];\n content = content.map(c => typeof c === \"string\" ? _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(Markdown, null, c) : c);\n return ModalActions.openModal(props => {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(ConfirmationModal, Object.assign({\n header: title,\n red: danger,\n confirmText: confirmText,\n cancelText: cancelText,\n onConfirm: onConfirm,\n onCancel: onCancel\n }, props), content);\n }, {\n modalKey: key\n });\n }\n\n static showAddonErrors({\n plugins: pluginErrors = [],\n themes: themeErrors = []\n }) {\n if (!pluginErrors || !themeErrors || !this.shouldShowAddonErrors) return;\n if (!pluginErrors.length && !themeErrors.length) return;\n const modal = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
\n
\n
\n
\n
${_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.addonErrors}
\n
\n
\n
\n
${_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Panels.plugins}
\n
${_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Panels.themes}
\n
\n
\n
\n
${_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.name}
\n
${_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.message}
\n
${_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.error}
\n
\n
\n
\n\n
\n
\n
\n
\n \n
\n
\n
\n
`);\n\n const generateTab = function (errors) {\n const container = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n\n for (const err of errors) {\n const error = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
\n
${err.name ? err.name : err.file}
\n
${err.message}
\n \n
`);\n container.append(error);\n\n if (err.error) {\n error.querySelectorAll(\"a\").forEach(el => el.addEventListener(\"click\", e => {\n e.preventDefault();\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Logger\"].stacktrace(\"AddonError\", `Error details for ${err.name ? err.name : err.file}.`, err.error);\n }));\n }\n }\n\n return container;\n };\n\n const tabs = [generateTab(pluginErrors), generateTab(themeErrors)];\n modal.querySelectorAll(\".tab-bar-item\").forEach(el => el.addEventListener(\"click\", e => {\n e.preventDefault();\n const selected = modal.querySelector(\".tab-bar-item.selected\");\n if (selected) _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].removeClass(selected, \"selected\");\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].addClass(e.target, \"selected\");\n const scroller = modal.querySelector(\".scroller\");\n scroller.innerHTML = \"\";\n scroller.append(tabs[_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].index(e.target)]);\n }));\n modal.querySelector(\".footer button\").addEventListener(\"click\", () => {\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].addClass(modal, \"closing\");\n setTimeout(() => {\n modal.remove();\n }, 300);\n });\n modal.querySelector(\".bd-backdrop\").addEventListener(\"click\", () => {\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].addClass(modal, \"closing\");\n setTimeout(() => {\n modal.remove();\n }, 300);\n });\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].query(\"#app-mount\").append(modal);\n if (pluginErrors.length) modal.querySelector(\".tab-bar-item\").click();else modal.querySelectorAll(\".tab-bar-item\")[1].click();\n }\n\n static showChangelogModal(options = {}) {\n const ModalStack = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"push\", \"update\", \"pop\", \"popWithKey\");\n const ChangelogClasses = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"fixed\", \"improved\");\n const TextElement = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].findByDisplayName(\"Text\");\n const FlexChild = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"Child\");\n const Titles = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"Tags\", \"default\");\n const Changelog = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.defaultProps && m.defaultProps.selectable == false);\n const MarkdownParser = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"defaultRules\", \"parse\");\n if (!Changelog || !ModalStack || !ChangelogClasses || !TextElement || !FlexChild || !Titles || !MarkdownParser) return _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Logger\"].warn(\"Modals\", \"showChangelogModal missing modules\");\n const {\n image = \"https://repository-images.githubusercontent.com/105473537/957b5480-7c26-11e9-8401-50fa820cbae5\",\n description = \"\",\n changes = [],\n title = \"BandagedBD\",\n subtitle = `v${_data_data_js__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].bbdVersion}`,\n footer\n } = options;\n const ce = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement;\n const changelogItems = [ce(\"img\", {\n src: image\n })];\n if (description) changelogItems.push(ce(\"p\", null, MarkdownParser.parse(description)));\n\n for (let c = 0; c < changes.length; c++) {\n const entry = changes[c];\n const type = ChangelogClasses[entry.type] ? ChangelogClasses[entry.type] : ChangelogClasses.added;\n const margin = c == 0 ? ChangelogClasses.marginTop : \"\";\n changelogItems.push(ce(\"h1\", {\n className: `${type} ${margin}`\n }, entry.title));\n const list = ce(\"ul\", null, entry.items.map(i => ce(\"li\", null, MarkdownParser.parse(i))));\n changelogItems.push(list);\n }\n\n const renderHeader = function () {\n return ce(FlexChild.Child, {\n grow: 1,\n shrink: 1\n }, ce(Titles.default, {\n tag: Titles.Tags.H4\n }, title), ce(TextElement, {\n size: TextElement.Sizes.SMALL,\n color: TextElement.Colors.STANDARD,\n className: ChangelogClasses.date\n }, subtitle));\n };\n\n const renderFooter = () => {\n const Anchor = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.displayName == \"Anchor\");\n const AnchorClasses = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"anchorUnderlineOnHover\") || {\n anchor: \"anchor-3Z-8Bb\",\n anchorUnderlineOnHover: \"anchorUnderlineOnHover-2ESHQB\"\n };\n\n const joinSupportServer = click => {\n click.preventDefault();\n click.stopPropagation();\n ModalStack.pop();\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].InviteActions.acceptInviteAndTransitionToInviteChannel(\"2HScm8j\");\n };\n\n const supportLink = Anchor ? ce(Anchor, {\n onClick: joinSupportServer\n }, \"Join our Discord Server.\") : ce(\"a\", {\n className: `${AnchorClasses.anchor} ${AnchorClasses.anchorUnderlineOnHover}`,\n onClick: joinSupportServer\n }, \"Join our Discord Server.\");\n const defaultFooter = ce(TextElement, {\n size: TextElement.Sizes.SMALL,\n color: TextElement.Colors.STANDARD\n }, \"Need support? \", supportLink);\n return ce(FlexChild.Child, {\n grow: 1,\n shrink: 1\n }, footer ? footer : defaultFooter);\n };\n\n return ModalStack.push(Changelog, {\n className: ChangelogClasses.container,\n selectable: true,\n onScroll: _ => _,\n onClose: _ => _,\n renderHeader: renderHeader,\n renderFooter: renderFooter,\n children: changelogItems\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvbW9kYWxzLmpzPzNhYjIiXSwibmFtZXMiOlsiTW9kYWxzIiwic2hvdWxkU2hvd0FkZG9uRXJyb3JzIiwiU2V0dGluZ3MiLCJnZXQiLCJNb2RhbEFjdGlvbnMiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5UHJvcHMiLCJNb2RhbFN0YWNrIiwiQWxlcnRNb2RhbCIsImdldEJ5UHJvdG90eXBlcyIsIlRleHRFbGVtZW50IiwiQ29uZmlybWF0aW9uTW9kYWwiLCJmaW5kQnlEaXNwbGF5TmFtZSIsIk1hcmtkb3duIiwiZGVmYXVsdCIsInRpdGxlIiwiY29udGVudCIsIm1vZGFsIiwiRE9NIiwiY3JlYXRlRWxlbWVudCIsIlN0cmluZ3MiLCJva2F5IiwicXVlcnlTZWxlY3RvciIsImFkZEV2ZW50TGlzdGVuZXIiLCJjbGFzc0xpc3QiLCJhZGQiLCJzZXRUaW1lb3V0IiwicmVtb3ZlIiwiZG9jdW1lbnQiLCJhcHBlbmQiLCJhbGVydCIsInNob3dDb25maXJtYXRpb25Nb2RhbCIsImNhbmNlbFRleHQiLCJvcHRpb25zIiwiRm9ybWF0dGFibGVTdHJpbmciLCJ0b1N0cmluZyIsImVtcHR5RnVuY3Rpb24iLCJvbkNvbmZpcm0iLCJvbkNhbmNlbCIsImNvbmZpcm1UZXh0IiwiY2FuY2VsIiwiZGFuZ2VyIiwia2V5IiwidW5kZWZpbmVkIiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwiYyIsIlJlYWN0Iiwib3Blbk1vZGFsIiwicHJvcHMiLCJPYmplY3QiLCJhc3NpZ24iLCJoZWFkZXIiLCJyZWQiLCJtb2RhbEtleSIsInNob3dBZGRvbkVycm9ycyIsInBsdWdpbnMiLCJwbHVnaW5FcnJvcnMiLCJ0aGVtZXMiLCJ0aGVtZUVycm9ycyIsImxlbmd0aCIsImFkZG9uRXJyb3JzIiwiUGFuZWxzIiwibmFtZSIsIm1lc3NhZ2UiLCJlcnJvciIsImdlbmVyYXRlVGFiIiwiZXJyb3JzIiwiY29udGFpbmVyIiwiZXJyIiwiZmlsZSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmb3JFYWNoIiwiZWwiLCJlIiwicHJldmVudERlZmF1bHQiLCJMb2dnZXIiLCJzdGFja3RyYWNlIiwidGFicyIsInNlbGVjdGVkIiwicmVtb3ZlQ2xhc3MiLCJhZGRDbGFzcyIsInRhcmdldCIsInNjcm9sbGVyIiwiaW5uZXJIVE1MIiwiaW5kZXgiLCJxdWVyeSIsImNsaWNrIiwic2hvd0NoYW5nZWxvZ01vZGFsIiwiQ2hhbmdlbG9nQ2xhc3NlcyIsIkZsZXhDaGlsZCIsIlRpdGxlcyIsIkNoYW5nZWxvZyIsImdldE1vZHVsZSIsIm0iLCJkZWZhdWx0UHJvcHMiLCJzZWxlY3RhYmxlIiwiTWFya2Rvd25QYXJzZXIiLCJ3YXJuIiwiaW1hZ2UiLCJkZXNjcmlwdGlvbiIsImNoYW5nZXMiLCJzdWJ0aXRsZSIsIkNvbmZpZyIsImJiZFZlcnNpb24iLCJmb290ZXIiLCJjZSIsImNoYW5nZWxvZ0l0ZW1zIiwic3JjIiwicHVzaCIsInBhcnNlIiwiZW50cnkiLCJ0eXBlIiwiYWRkZWQiLCJtYXJnaW4iLCJtYXJnaW5Ub3AiLCJjbGFzc05hbWUiLCJsaXN0IiwiaXRlbXMiLCJpIiwicmVuZGVySGVhZGVyIiwiQ2hpbGQiLCJncm93Iiwic2hyaW5rIiwidGFnIiwiVGFncyIsIkg0Iiwic2l6ZSIsIlNpemVzIiwiU01BTEwiLCJjb2xvciIsIkNvbG9ycyIsIlNUQU5EQVJEIiwiZGF0ZSIsInJlbmRlckZvb3RlciIsIkFuY2hvciIsImRpc3BsYXlOYW1lIiwiQW5jaG9yQ2xhc3NlcyIsImFuY2hvciIsImFuY2hvclVuZGVybGluZU9uSG92ZXIiLCJqb2luU3VwcG9ydFNlcnZlciIsInN0b3BQcm9wYWdhdGlvbiIsInBvcCIsIkRpc2NvcmRNb2R1bGVzIiwiSW52aXRlQWN0aW9ucyIsImFjY2VwdEludml0ZUFuZFRyYW5zaXRpb25Ub0ludml0ZUNoYW5uZWwiLCJzdXBwb3J0TGluayIsIm9uQ2xpY2siLCJkZWZhdWx0Rm9vdGVyIiwib25TY3JvbGwiLCJfIiwib25DbG9zZSIsImNoaWxkcmVuIl0s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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25maWd9IGZyb20gXCJkYXRhXCI7XHJcbmltcG9ydCB7TG9nZ2VyLCBXZWJwYWNrTW9kdWxlcywgUmVhY3QsIFNldHRpbmdzLCBTdHJpbmdzLCBET00sIERpc2NvcmRNb2R1bGVzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgRm9ybWF0dGFibGVTdHJpbmcgZnJvbSBcIi4uL3N0cnVjdHMvc3RyaW5nXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNb2RhbHMge1xyXG5cclxuICAgIHN0YXRpYyBnZXQgc2hvdWxkU2hvd0FkZG9uRXJyb3JzKCkge3JldHVybiBTZXR0aW5ncy5nZXQoXCJzZXR0aW5nc1wiLCBcImFkZG9uc1wiLCBcImFkZG9uRXJyb3JzXCIpO31cclxuXHJcbiAgICBzdGF0aWMgZ2V0IE1vZGFsQWN0aW9ucygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIm9wZW5Nb2RhbFwiLCBcInVwZGF0ZU1vZGFsXCIpO31cclxuICAgIHN0YXRpYyBnZXQgTW9kYWxTdGFjaygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInB1c2hcIiwgXCJ1cGRhdGVcIiwgXCJwb3BcIiwgXCJwb3BXaXRoS2V5XCIpO31cclxuICAgIHN0YXRpYyBnZXQgQWxlcnRNb2RhbCgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm90b3R5cGVzKFwiaGFuZGxlQ2FuY2VsXCIsIFwiaGFuZGxlU3VibWl0XCIsIFwiaGFuZGxlTWlub3JDb25maXJtXCIpO31cclxuICAgIHN0YXRpYyBnZXQgVGV4dEVsZW1lbnQoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJTaXplc1wiLCBcIldlaWdodHNcIik7fVxyXG4gICAgc3RhdGljIGdldCBDb25maXJtYXRpb25Nb2RhbCgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZmluZEJ5RGlzcGxheU5hbWUoXCJDb25maXJtTW9kYWxcIik7fVxyXG4gICAgc3RhdGljIGdldCBNYXJrZG93bigpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZmluZEJ5RGlzcGxheU5hbWUoXCJNYXJrZG93blwiKTt9XHJcblxyXG4gICAgc3RhdGljIGRlZmF1bHQodGl0bGUsIGNvbnRlbnQpIHtcclxuICAgICAgICBjb25zdCBtb2RhbCA9IERPTS5jcmVhdGVFbGVtZW50KGA8ZGl2IGNsYXNzPVwiYmQtbW9kYWwtd3JhcHBlciB0aGVtZS1kYXJrXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmQtYmFja2Ryb3AgYmFja2Ryb3AtMXdybUtCXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmQtbW9kYWwgbW9kYWwtMVVHZG5SXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJkLW1vZGFsLWlubmVyIGlubmVyLTFKZUdWY1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyIGhlYWRlci0xUl9BakZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPiR7dGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmQtbW9kYWwtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbGVyLXdyYXAgZmFkZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXIgZm9vdGVyLTJ5ZkNnWCBmb290ZXItM3JEV2RDIGZvb3Rlci0yZ0wxcHBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYmQtYnV0dG9uXCI+JHtTdHJpbmdzLk1vZGFscy5va2F5fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5gKTtcclxuICAgICAgICBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLmZvb3RlciBidXR0b25cIikuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgICAgICAgICAgbW9kYWwuY2xhc3NMaXN0LmFkZChcImNsb3NpbmdcIik7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyBtb2RhbC5yZW1vdmUoKTsgfSwgMzAwKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLmJkLWJhY2tkcm9wXCIpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIG1vZGFsLmNsYXNzTGlzdC5hZGQoXCJjbG9zaW5nXCIpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgbW9kYWwucmVtb3ZlKCk7IH0sIDMwMCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhcHAtbW91bnRcIikuYXBwZW5kKG1vZGFsKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgYWxlcnQodGl0bGUsIGNvbnRlbnQpIHtcclxuICAgICAgICB0aGlzLnNob3dDb25maXJtYXRpb25Nb2RhbCh0aXRsZSwgY29udGVudCwge2NhbmNlbFRleHQ6IFwiXCJ9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNob3dzIGEgZ2VuZXJpYyBidXQgdmVyeSBjdXN0b21pemFibGUgY29uZmlybWF0aW9uIG1vZGFsIHdpdGggb3B0aW9uYWwgY29uZmlybSBhbmQgY2FuY2VsIGNhbGxiYWNrcy5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSAtIHRpdGxlIG9mIHRoZSBtb2RhbFxyXG4gICAgICogQHBhcmFtIHsoc3RyaW5nfFJlYWN0RWxlbWVudHxBcnJheTxzdHJpbmd8UmVhY3RFbGVtZW50Pil9IGNoaWxkcmVuIC0gYSBzaW5nbGUgb3IgbWl4ZWQgYXJyYXkgb2YgcmVhY3QgZWxlbWVudHMgYW5kIHN0cmluZ3MuIEV2ZXJ5dGhpbmcgaXMgd3JhcHBlZCBpbiBEaXNjb3JkJ3MgYE1hcmtkb3duYCBjb21wb25lbnQgc28gc3RyaW5ncyB3aWxsIHNob3cgYW5kIHJlbmRlciBwcm9wZXJseS5cclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc10gLSBvcHRpb25zIHRvIG1vZGlmeSB0aGUgbW9kYWxcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuZGFuZ2VyPWZhbHNlXSAtIHdoZXRoZXIgdGhlIG1haW4gYnV0dG9uIHNob3VsZCBiZSByZWQgb3Igbm90XHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuY29uZmlybVRleHQ9T2theV0gLSB0ZXh0IGZvciB0aGUgY29uZmlybWF0aW9uL3N1Ym1pdCBidXR0b25cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5jYW5jZWxUZXh0PUNhbmNlbF0gLSB0ZXh0IGZvciB0aGUgY2FuY2VsIGJ1dHRvblxyXG4gICAgICogQHBhcmFtIHtjYWxsYWJsZX0gW29wdGlvbnMub25Db25maXJtPU5PT1BdIC0gY2FsbGJhY2sgdG8gb2NjdXIgd2hlbiBjbGlja2luZyB0aGUgc3VibWl0IGJ1dHRvblxyXG4gICAgICogQHBhcmFtIHtjYWxsYWJsZX0gW29wdGlvbnMub25DYW5jZWw9Tk9PUF0gLSBjYWxsYmFjayB0byBvY2N1ciB3aGVuIGNsaWNraW5nIHRoZSBjYW5jZWwgYnV0dG9uXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMua2V5XSAtIGtleSB1c2VkIHRvIGlkZW50aWZ5IHRoZSBtb2RhbC4gSWYgbm90IHByb3ZpZGVkLCBvbmUgaXMgZ2VuZXJhdGVkIGFuZCByZXR1cm5lZFxyXG4gICAgICogQHJldHVybnMge3N0cmluZ30gLSB0aGUga2V5IHVzZWQgZm9yIHRoaXMgbW9kYWxcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHNob3dDb25maXJtYXRpb25Nb2RhbCh0aXRsZSwgY29udGVudCwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICAgICAgY29uc3QgTWFya2Rvd24gPSB0aGlzLk1hcmtkb3duO1xyXG4gICAgICAgIGNvbnN0IENvbmZpcm1hdGlvbk1vZGFsID0gdGhpcy5Db25maXJtYXRpb25Nb2RhbDtcclxuICAgICAgICBjb25zdCBNb2RhbEFjdGlvbnMgPSB0aGlzLk1vZGFsQWN0aW9ucztcclxuICAgICAgICBpZiAoY29udGVudCBpbnN0YW5jZW9mIEZvcm1hdHRhYmxlU3RyaW5nKSBjb250ZW50ID0gY29udGVudC50b1N0cmluZygpO1xyXG4gICAgICAgIGlmICghdGhpcy5Nb2RhbEFjdGlvbnMgfHwgIXRoaXMuQ29uZmlybWF0aW9uTW9kYWwgfHwgIXRoaXMuTWFya2Rvd24pIHJldHVybiB0aGlzLmRlZmF1bHQodGl0bGUsIGNvbnRlbnQpO1xyXG5cclxuICAgICAgICBjb25zdCBlbXB0eUZ1bmN0aW9uID0gKCkgPT4ge307XHJcbiAgICAgICAgY29uc3Qge29uQ29uZmlybSA9IGVtcHR5RnVuY3Rpb24sIG9uQ2FuY2VsID0gZW1wdHlGdW5jdGlvbiwgY29uZmlybVRleHQgPSBTdHJpbmdzLk1vZGFscy5va2F5LCBjYW5jZWxUZXh0ID0gU3RyaW5ncy5Nb2RhbHMuY2FuY2VsLCBkYW5nZXIgPSBmYWxzZSwga2V5ID0gdW5kZWZpbmVkfSA9IG9wdGlvbnM7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbnRlbnQpKSBjb250ZW50ID0gW2NvbnRlbnRdO1xyXG4gICAgICAgIGNvbnRlbnQgPSBjb250ZW50Lm1hcChjID0+IHR5cGVvZihjKSA9PT0gXCJzdHJpbmdcIiA/IFJlYWN0LmNyZWF0ZUVsZW1lbnQoTWFya2Rvd24sIG51bGwsIGMpIDogYyk7XHJcblxyXG4gICAgICAgIHJldHVybiBNb2RhbEFjdGlvbnMub3Blbk1vZGFsKHByb3BzID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29uZmlybWF0aW9uTW9kYWwsIE9iamVjdC5hc3NpZ24oe1xyXG4gICAgICAgICAgICAgICAgaGVhZGVyOiB0aXRsZSxcclxuICAgICAgICAgICAgICAgIHJlZDogZGFuZ2VyLFxyXG4gICAgICAgICAgICAgICAgY29uZmlybVRleHQ6IGNvbmZpcm1UZXh0LFxyXG4gICAgICAgICAgICAgICAgY2FuY2VsVGV4dDogY2FuY2VsVGV4dCxcclxuICAgICAgICAgICAgICAgIG9uQ29uZmlybTogb25Db25maXJtLFxyXG4gICAgICAgICAgICAgICAgb25DYW5jZWw6IG9uQ2FuY2VsXHJcbiAgICAgICAgICAgIH0sIHByb3BzKSwgY29udGVudCk7XHJcbiAgICAgICAgfSwge21vZGFsS2V5OiBrZXl9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgc2hvd0FkZG9uRXJyb3JzKHtwbHVnaW5zOiBwbHVnaW5FcnJvcnMgPSBbXSwgdGhlbWVzOiB0aGVtZUVycm9ycyA9IFtdfSkge1xyXG4gICAgICAgIGlmICghcGx1Z2luRXJyb3JzIHx8ICF0aGVtZUVycm9ycyB8fCAhdGhpcy5zaG91bGRTaG93QWRkb25FcnJvcnMpIHJldHVybjtcclxuICAgICAgICBpZiAoIXBsdWdpbkVycm9ycy5sZW5ndGggJiYgIXRoZW1lRXJyb3JzLmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IG1vZGFsID0gRE9NLmNyZWF0ZUVsZW1lbnQoYDxkaXYgY2xhc3M9XCJiZC1tb2RhbC13cmFwcGVyIHRoZW1lLWRhcmtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJkLWJhY2tkcm9wIGJhY2tkcm9wLTF3cm1LQlwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmQtbW9kYWwgYmQtY29udGVudC1tb2RhbCBtb2RhbC0xVUdkblJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZC1tb2RhbC1pbm5lciBpbm5lci0xSmVHVmNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyIGhlYWRlci0xUl9BakZcIj48ZGl2IGNsYXNzPVwidGl0bGVcIj4ke1N0cmluZ3MuTW9kYWxzLmFkZG9uRXJyb3JzfTwvZGl2PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZC1tb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWItYmFyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1iYXIgVE9QXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1iYXItaXRlbVwiPiR7U3RyaW5ncy5QYW5lbHMucGx1Z2luc308L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiLWJhci1pdGVtXCI+JHtTdHJpbmdzLlBhbmVscy50aGVtZXN9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gY29sdW1uLW5hbWVcIj4ke1N0cmluZ3MuTW9kYWxzLm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIGNvbHVtbi1tZXNzYWdlXCI+JHtTdHJpbmdzLk1vZGFscy5tZXNzYWdlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiBjb2x1bW4tZXJyb3JcIj4ke1N0cmluZ3MuTW9kYWxzLmVycm9yfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbGVyLXdyYXAgZmFkZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbGVyXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXIgZm9vdGVyLTJ5ZkNnWCBmb290ZXItM3JEV2RDIGZvb3Rlci0yZ0wxcHBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJiZC1idXR0b25cIj4ke1N0cmluZ3MuTW9kYWxzLm9rYXl9PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+YCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGdlbmVyYXRlVGFiID0gZnVuY3Rpb24oZXJyb3JzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IERPTS5jcmVhdGVFbGVtZW50KGA8ZGl2IGNsYXNzPVwiZXJyb3JzXCI+YCk7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgZXJyIG9mIGVycm9ycykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBET00uY3JlYXRlRWxlbWVudChgPGRpdiBjbGFzcz1cImVycm9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gY29sdW1uLW5hbWVcIj4ke2Vyci5uYW1lID8gZXJyLm5hbWUgOiBlcnIuZmlsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiBjb2x1bW4tbWVzc2FnZVwiPiR7ZXJyLm1lc3NhZ2V9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gY29sdW1uLWVycm9yXCI+PGEgY2xhc3M9XCJlcnJvci1saW5rXCIgaHJlZj1cIlwiPiR7ZXJyLmVycm9yID8gZXJyLmVycm9yLm1lc3NhZ2UgOiBcIlwifTwvYT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5gKTtcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmQoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVyci5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLnF1ZXJ5U2VsZWN0b3JBbGwoXCJhXCIpLmZvckVhY2goZWwgPT4gZWwuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2VyLnN0YWNrdHJhY2UoXCJBZGRvbkVycm9yXCIsIGBFcnJvciBkZXRhaWxzIGZvciAke2Vyci5uYW1lID8gZXJyLm5hbWUgOiBlcnIuZmlsZX0uYCwgZXJyLmVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lcjtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zdCB0YWJzID0gW2dlbmVyYXRlVGFiKHBsdWdpbkVycm9ycyksIGdlbmVyYXRlVGFiKHRoZW1lRXJyb3JzKV07XHJcblxyXG4gICAgICAgIG1vZGFsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIudGFiLWJhci1pdGVtXCIpLmZvckVhY2goZWwgPT4gZWwuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIChlKSA9PiB7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLnRhYi1iYXItaXRlbS5zZWxlY3RlZFwiKTtcclxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSBET00ucmVtb3ZlQ2xhc3Moc2VsZWN0ZWQsIFwic2VsZWN0ZWRcIik7XHJcbiAgICAgICAgICAgIERPTS5hZGRDbGFzcyhlLnRhcmdldCwgXCJzZWxlY3RlZFwiKTtcclxuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsZXIgPSBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLnNjcm9sbGVyXCIpO1xyXG4gICAgICAgICAgICBzY3JvbGxlci5pbm5lckhUTUwgPSBcIlwiO1xyXG4gICAgICAgICAgICBzY3JvbGxlci5hcHBlbmQodGFic1tET00uaW5kZXgoZS50YXJnZXQpXSk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLmZvb3RlciBidXR0b25cIikuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgICAgICAgICAgRE9NLmFkZENsYXNzKG1vZGFsLCBcImNsb3NpbmdcIik7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyBtb2RhbC5yZW1vdmUoKTsgfSwgMzAwKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLmJkLWJhY2tkcm9wXCIpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIERPTS5hZGRDbGFzcyhtb2RhbCwgXCJjbG9zaW5nXCIpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgbW9kYWwucmVtb3ZlKCk7IH0sIDMwMCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgRE9NLnF1ZXJ5KFwiI2FwcC1tb3VudFwiKS5hcHBlbmQobW9kYWwpO1xyXG4gICAgICAgIGlmIChwbHVnaW5FcnJvcnMubGVuZ3RoKSBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLnRhYi1iYXItaXRlbVwiKS5jbGljaygpO1xyXG4gICAgICAgIGVsc2UgbW9kYWwucXVlcnlTZWxlY3RvckFsbChcIi50YWItYmFyLWl0ZW1cIilbMV0uY2xpY2soKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgc2hvd0NoYW5nZWxvZ01vZGFsKG9wdGlvbnMgPSB7fSkge1xyXG4gICAgICAgIGNvbnN0IE1vZGFsU3RhY2sgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwicHVzaFwiLCBcInVwZGF0ZVwiLCBcInBvcFwiLCBcInBvcFdpdGhLZXlcIik7XHJcbiAgICAgICAgY29uc3QgQ2hhbmdlbG9nQ2xhc3NlcyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJmaXhlZFwiLCBcImltcHJvdmVkXCIpO1xyXG4gICAgICAgIGNvbnN0IFRleHRFbGVtZW50ID0gV2VicGFja01vZHVsZXMuZmluZEJ5RGlzcGxheU5hbWUoXCJUZXh0XCIpO1xyXG4gICAgICAgIGNvbnN0IEZsZXhDaGlsZCA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJDaGlsZFwiKTtcclxuICAgICAgICBjb25zdCBUaXRsZXMgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiVGFnc1wiLCBcImRlZmF1bHRcIik7XHJcbiAgICAgICAgY29uc3QgQ2hhbmdlbG9nID0gV2VicGFja01vZHVsZXMuZ2V0TW9kdWxlKG0gPT4gbS5kZWZhdWx0UHJvcHMgJiYgbS5kZWZhdWx0UHJvcHMuc2VsZWN0YWJsZSA9PSBmYWxzZSk7XHJcbiAgICAgICAgY29uc3QgTWFya2Rvd25QYXJzZXIgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZGVmYXVsdFJ1bGVzXCIsIFwicGFyc2VcIik7XHJcbiAgICAgICAgaWYgKCFDaGFuZ2Vsb2cgfHwgIU1vZGFsU3RhY2sgfHwgIUNoYW5nZWxvZ0NsYXNzZXMgfHwgIVRleHRFbGVtZW50IHx8ICFGbGV4Q2hpbGQgfHwgIVRpdGxlcyB8fCAhTWFya2Rvd25QYXJzZXIpIHJldHVybiBMb2dnZXIud2FybihcIk1vZGFsc1wiLCBcInNob3dDaGFuZ2Vsb2dNb2RhbCBtaXNzaW5nIG1vZHVsZXNcIik7XHJcbiAgICBcclxuICAgICAgICBjb25zdCB7aW1hZ2UgPSBcImh0dHBzOi8vcmVwb3NpdG9yeS1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzEwNTQ3MzUzNy85NTdiNTQ4MC03YzI2LTExZTktODQwMS01MGZhODIwY2JhZTVcIiwgZGVzY3JpcHRpb24gPSBcIlwiLCBjaGFuZ2VzID0gW10sIHRpdGxlID0gXCJCYW5kYWdlZEJEXCIsIHN1YnRpdGxlID0gYHYke0NvbmZpZy5iYmRWZXJzaW9ufWAsIGZvb3Rlcn0gPSBvcHRpb25zO1xyXG4gICAgICAgIGNvbnN0IGNlID0gUmVhY3QuY3JlYXRlRWxlbWVudDtcclxuICAgICAgICBjb25zdCBjaGFuZ2Vsb2dJdGVtcyA9IFtjZShcImltZ1wiLCB7c3JjOiBpbWFnZX0pXTtcclxuICAgICAgICBpZiAoZGVzY3JpcHRpb24pIGNoYW5nZWxvZ0l0ZW1zLnB1c2goY2UoXCJwXCIsIG51bGwsIE1hcmtkb3duUGFyc2VyLnBhcnNlKGRlc2NyaXB0aW9uKSkpO1xyXG4gICAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgY2hhbmdlcy5sZW5ndGg7IGMrKykge1xyXG4gICAgICAgICAgICBjb25zdCBlbnRyeSA9IGNoYW5nZXNbY107XHJcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBDaGFuZ2Vsb2dDbGFzc2VzW2VudHJ5LnR5cGVdID8gQ2hhbmdlbG9nQ2xhc3Nlc1tlbnRyeS50eXBlXSA6IENoYW5nZWxvZ0NsYXNzZXMuYWRkZWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hcmdpbiA9IGMgPT0gMCA/IENoYW5nZWxvZ0NsYXNzZXMubWFyZ2luVG9wIDogXCJcIjtcclxuICAgICAgICAgICAgY2hhbmdlbG9nSXRlbXMucHVzaChjZShcImgxXCIsIHtjbGFzc05hbWU6IGAke3R5cGV9ICR7bWFyZ2lufWAsfSwgZW50cnkudGl0bGUpKTtcclxuICAgICAgICAgICAgY29uc3QgbGlzdCA9IGNlKFwidWxcIiwgbnVsbCwgZW50cnkuaXRlbXMubWFwKGkgPT4gY2UoXCJsaVwiLCBudWxsLCBNYXJrZG93blBhcnNlci5wYXJzZShpKSkpKTtcclxuICAgICAgICAgICAgY2hhbmdlbG9nSXRlbXMucHVzaChsaXN0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcmVuZGVySGVhZGVyID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjZShGbGV4Q2hpbGQuQ2hpbGQsIHtncm93OiAxLCBzaHJpbms6IDF9LFxyXG4gICAgICAgICAgICAgICAgY2UoVGl0bGVzLmRlZmF1bHQsIHt0YWc6IFRpdGxlcy5UYWdzLkg0fSwgdGl0bGUpLFxyXG4gICAgICAgICAgICAgICAgY2UoVGV4dEVsZW1lbnQsIHtzaXplOiBUZXh0RWxlbWVudC5TaXplcy5TTUFMTCwgY29sb3I6IFRleHRFbGVtZW50LkNvbG9ycy5TVEFOREFSRCwgY2xhc3NOYW1lOiBDaGFuZ2Vsb2dDbGFzc2VzLmRhdGV9LCBzdWJ0aXRsZSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9O1xyXG4gICAgXHJcbiAgICAgICAgY29uc3QgcmVuZGVyRm9vdGVyID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBBbmNob3IgPSBXZWJwYWNrTW9kdWxlcy5nZXRNb2R1bGUobSA9PiBtLmRpc3BsYXlOYW1lID09IFwiQW5jaG9yXCIpO1xyXG4gICAgICAgICAgICBjb25zdCBBbmNob3JDbGFzc2VzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImFuY2hvclVuZGVybGluZU9uSG92ZXJcIikgfHwge2FuY2hvcjogXCJhbmNob3ItM1otOEJiXCIsIGFuY2hvclVuZGVybGluZU9uSG92ZXI6IFwiYW5jaG9yVW5kZXJsaW5lT25Ib3Zlci0yRVNIUUJcIn07XHJcbiAgICAgICAgICAgIGNvbnN0IGpvaW5TdXBwb3J0U2VydmVyID0gKGNsaWNrKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjbGljay5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgY2xpY2suc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBNb2RhbFN0YWNrLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgRGlzY29yZE1vZHVsZXMuSW52aXRlQWN0aW9ucy5hY2NlcHRJbnZpdGVBbmRUcmFuc2l0aW9uVG9JbnZpdGVDaGFubmVsKFwiMkhTY204alwiKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgY29uc3Qgc3VwcG9ydExpbmsgPSBBbmNob3IgPyBjZShBbmNob3IsIHtvbkNsaWNrOiBqb2luU3VwcG9ydFNlcnZlcn0sIFwiSm9pbiBvdXIgRGlzY29yZCBTZXJ2ZXIuXCIpIDogY2UoXCJhXCIsIHtjbGFzc05hbWU6IGAke0FuY2hvckNsYXNzZXMuYW5jaG9yfSAke0FuY2hvckNsYXNzZXMuYW5jaG9yVW5kZXJsaW5lT25Ib3Zlcn1gLCBvbkNsaWNrOiBqb2luU3VwcG9ydFNlcnZlcn0sIFwiSm9pbiBvdXIgRGlzY29yZCBTZXJ2ZXIuXCIpO1xyXG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0Rm9vdGVyID0gY2UoVGV4dEVsZW1lbnQsIHtzaXplOiBUZXh0RWxlbWVudC5TaXplcy5TTUFMTCwgY29sb3I6IFRleHRFbGVtZW50LkNvbG9ycy5TVEFOREFSRH0sIFwiTmVlZCBzdXBwb3J0PyBcIiwgc3VwcG9ydExpbmspO1xyXG4gICAgICAgICAgICByZXR1cm4gY2UoRmxleENoaWxkLkNoaWxkLCB7Z3JvdzogMSwgc2hyaW5rOiAxfSwgZm9vdGVyID8gZm9vdGVyIDogZGVmYXVsdEZvb3Rlcik7XHJcbiAgICAgICAgfTtcclxuICAgIFxyXG4gICAgICAgIHJldHVybiBNb2RhbFN0YWNrLnB1c2goQ2hhbmdlbG9nLCB7XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZTogQ2hhbmdlbG9nQ2xhc3Nlcy5jb250YWluZXIsXHJcbiAgICAgICAgICAgIHNlbGVjdGFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIG9uU2Nyb2xsOiBfID0+IF8sXHJcbiAgICAgICAgICAgIG9uQ2xvc2U6IF8gPT4gXyxcclxuICAgICAgICAgICAgcmVuZGVySGVhZGVyOiByZW5kZXJIZWFkZXIsXHJcbiAgICAgICAgICAgIHJlbmRlckZvb3RlcjogcmVuZGVyRm9vdGVyLFxyXG4gICAgICAgICAgICBjaGlsZHJlbjogY2hhbmdlbG9nSXRlbXNcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/modals.js\n"); /***/ }), @@ -982,7 +982,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ServerCard; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass ServerCard extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n if (!this.props.server.iconUrl) this.props.server.iconUrl = this.props.defaultAvatar();\n this.state = {\n imageError: false,\n joined: this.props.joined\n };\n this.join = this.join.bind(this);\n this.handleError = this.handleError.bind(this);\n }\n\n render() {\n const {\n server\n } = this.props;\n const buttonText = typeof this.state.joined == \"string\" ? `${modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.joining}...` : this.state.joined ? modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.joined : modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.join;\n const buttonClass = `bd-button${this.state.joined == true ? \" bd-button-success\" : \"\"}`;\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-server-card${server.pinned ? \" bd-server-card-pinned\" : \"\"}`\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"img\", {\n className: \"bd-server-image\",\n src: server.iconUrl,\n onError: this.handleError\n }), \",\", /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-content\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-header\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"h5\", {\n className: \"bd-server-name\"\n }, server.name), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"h5\", {\n className: \"bd-server-member-count\"\n }, server.members, \" Members\")), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-scroller-wrap bd-server-description-container\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-scroller bd-server-description\"\n }, server.description)), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-footer\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-tags\"\n }, server.categories.join(\", \")), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: buttonClass,\n onClick: this.join\n }, buttonText))));\n }\n\n handleError() {\n this.props.server.iconUrl = this.props.defaultAvatar();\n this.setState({\n imageError: true\n });\n }\n\n async join() {\n if (this.state.joined) return;\n this.setState({\n joined: \"joining\"\n });\n const didJoin = await this.props.join(this.props.server.identifier, this.props.server.nativejoin);\n this.setState({\n joined: didJoin\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvcHVibGljc2VydmVycy9jYXJkLmpzeD83NjAyIl0sIm5hbWVzIjpbIlNlcnZlckNhcmQiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzZXJ2ZXIiLCJpY29uVXJsIiwiZGVmYXVsdEF2YXRhciIsInN0YXRlIiwiaW1hZ2VFcnJvciIsImpvaW5lZCIsImpvaW4iLCJiaW5kIiwiaGFuZGxlRXJyb3IiLCJyZW5kZXIiLCJidXR0b25UZXh0IiwiU3RyaW5ncyIsIlB1YmxpY1NlcnZlcnMiLCJqb2luaW5nIiwiYnV0dG9uQ2xhc3MiLCJwaW5uZWQiLCJuYW1lIiwibWVtYmVycyIsImRlc2NyaXB0aW9uIiwiY2F0ZWdvcmllcyIsInNldFN0YXRlIiwiZGlkSm9pbiIsImlkZW50aWZpZXIiLCJuYXRpdmVqb2luIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLFVBQU4sU0FBeUJDLDZDQUFLLENBQUNDLFNBQS9CLENBQXlDO0FBQ3BEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDQSxRQUFJLENBQUMsS0FBS0EsS0FBTCxDQUFXQyxNQUFYLENBQWtCQyxPQUF2QixFQUFnQyxLQUFLRixLQUFMLENBQVdDLE1BQVgsQ0FBa0JDLE9BQWxCLEdBQTRCLEtBQUtGLEtBQUwsQ0FBV0csYUFBWCxFQUE1QjtBQUNoQyxTQUFLQyxLQUFMLEdBQWE7QUFDVEMsZ0JBQVUsRUFBRSxLQURIO0FBRVRDLFlBQU0sRUFBRSxLQUFLTixLQUFMLENBQVdNO0FBRlYsS0FBYjtBQUlBLFNBQUtDLElBQUwsR0FBWSxLQUFLQSxJQUFMLENBQVVDLElBQVYsQ0FBZSxJQUFmLENBQVo7QUFDQSxTQUFLQyxXQUFMLEdBQW1CLEtBQUtBLFdBQUwsQ0FBaUJELElBQWpCLENBQXNCLElBQXRCLENBQW5CO0FBQ0g7O0FBRURFLFFBQU0sR0FBRztBQUNMLFVBQU07QUFBQ1Q7QUFBRCxRQUFXLEtBQUtELEtBQXRCO0FBQ0EsVUFBTVcsVUFBVSxHQUFHLE9BQU8sS0FBS1AsS0FBTCxDQUFXRSxNQUFsQixJQUE2QixRQUE3QixHQUF5QyxHQUFFTSwrQ0FBTyxDQUFDQyxhQUFSLENBQXNCQyxPQUFRLEtBQXpFLEdBQWdGLEtBQUtWLEtBQUwsQ0FBV0UsTUFBWCxHQUFvQk0sK0NBQU8sQ0FBQ0MsYUFBUixDQUFzQlAsTUFBMUMsR0FBbURNLCtDQUFPLENBQUNDLGFBQVIsQ0FBc0JOLElBQTVLO0FBQ0EsVUFBTVEsV0FBVyxHQUFJLFlBQVcsS0FBS1gsS0FBTCxDQUFXRSxNQUFYLElBQXFCLElBQXJCLEdBQTRCLG9CQUE1QixHQUFtRCxFQUFHLEVBQXRGO0FBQ0Esd0JBQU87QUFBSyxlQUFTLEVBQUcsaUJBQWdCTCxNQUFNLENBQUNlLE1BQVAsR0FBZ0Isd0JBQWhCLEdBQTJDLEVBQUc7QUFBL0Usb0JBQ0M7QUFBSyxlQUFTLEVBQUMsaUJBQWY7QUFBaUMsU0FBRyxFQUFFZixNQUFNLENBQUNDLE9BQTdDO0FBQXNELGFBQU8sRUFBRSxLQUFLTztBQUFwRSxNQURELG9CQUVDO0FBQUssZUFBUyxFQUFDO0FBQWYsb0JBQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixvQkFDSTtBQUFJLGVBQVMsRUFBQztBQUFkLE9BQWdDUixNQUFNLENBQUNnQixJQUF2QyxDQURKLGVBRUk7QUFBSSxlQUFTLEVBQUM7QUFBZCxPQUF3Q2hCLE1BQU0sQ0FBQ2lCLE9BQS9DLGFBRkosQ0FESixlQUtJO0FBQUssZUFBUyxFQUFDO0FBQWYsb0JBQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUFvRGpCLE1BQU0sQ0FBQ2tCLFdBQTNELENBREosQ0FMSixlQVFJO0FBQUssZUFBUyxFQUFDO0FBQWYsb0JBQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUFpQ2xCLE1BQU0sQ0FBQ21CLFVBQVAsQ0FBa0JiLElBQWxCLENBQXVCLElBQXZCLENBQWpDLENBREosZUFFSTtBQUFRLFVBQUksRUFBQyxRQUFiO0FBQXNCLGVBQVMsRUFBRVEsV0FBakM7QUFBOEMsYUFBTyxFQUFFLEtBQUtSO0FBQTVELE9BQW1FSSxVQUFuRSxDQUZKLENBUkosQ0FGRCxDQUFQO0FBZ0JIOztBQUVERixhQUFXLEdBQUc7QUFDVixTQUFLVCxLQUFMLENBQVdDLE1BQVgsQ0FBa0JDLE9BQWxCLEdBQTRCLEtBQUtGLEtBQUwsQ0FBV0csYUFBWCxFQUE1QjtBQUNBLFNBQUtrQixRQUFMLENBQWM7QUFBQ2hCLGdCQUFVLEVBQUU7QUFBYixLQUFkO0FBQ0g7O0FBRUQsUUFBTUUsSUFBTixHQUFhO0FBQ1QsUUFBSSxLQUFLSCxLQUFMLENBQVdFLE1BQWYsRUFBdUI7QUFDdkIsU0FBS2UsUUFBTCxDQUFjO0FBQUNmLFlBQU0sRUFBRTtBQUFULEtBQWQ7QUFDQSxVQUFNZ0IsT0FBTyxHQUFHLE1BQU0sS0FBS3RCLEtBQUwsQ0FBV08sSUFBWCxDQUFnQixLQUFLUCxLQUFMLENBQVdDLE1BQVgsQ0FBa0JzQixVQUFsQyxFQUE4QyxLQUFLdkIsS0FBTCxDQUFXQyxNQUFYLENBQWtCdUIsVUFBaEUsQ0FBdEI7QUFDQSxTQUFLSCxRQUFMLENBQWM7QUFBQ2YsWUFBTSxFQUFFZ0I7QUFBVCxLQUFkO0FBQ0g7O0FBNUNtRCIsImZpbGUiOiIuL3NyYy91aS9wdWJsaWNzZXJ2ZXJzL2NhcmQuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlcnZlckNhcmQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnByb3BzLnNlcnZlci5pY29uVXJsKSB0aGlzLnByb3BzLnNlcnZlci5pY29uVXJsID0gdGhpcy5wcm9wcy5kZWZhdWx0QXZhdGFyKCk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgICAgICAgaW1hZ2VFcnJvcjogZmFsc2UsXHJcbiAgICAgICAgICAgIGpvaW5lZDogdGhpcy5wcm9wcy5qb2luZWRcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuam9pbiA9IHRoaXMuam9pbi5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IgPSB0aGlzLmhhbmRsZUVycm9yLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHtzZXJ2ZXJ9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICBjb25zdCBidXR0b25UZXh0ID0gdHlwZW9mKHRoaXMuc3RhdGUuam9pbmVkKSA9PSBcInN0cmluZ1wiID8gYCR7U3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmpvaW5pbmd9Li4uYCA6IHRoaXMuc3RhdGUuam9pbmVkID8gU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmpvaW5lZCA6IFN0cmluZ3MuUHVibGljU2VydmVycy5qb2luO1xyXG4gICAgICAgIGNvbnN0IGJ1dHRvbkNsYXNzID0gYGJkLWJ1dHRvbiR7dGhpcy5zdGF0ZS5qb2luZWQgPT0gdHJ1ZSA/IFwiIGJkLWJ1dHRvbi1zdWNjZXNzXCIgOiBcIlwifWA7XHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtgYmQtc2VydmVyLWNhcmQke3NlcnZlci5waW5uZWQgPyBcIiBiZC1zZXJ2ZXItY2FyZC1waW5uZWRcIiA6IFwiXCJ9YH0+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT1cImJkLXNlcnZlci1pbWFnZVwiIHNyYz17c2VydmVyLmljb25Vcmx9IG9uRXJyb3I9e3RoaXMuaGFuZGxlRXJyb3J9IC8+LFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZXJ2ZXItY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VydmVyLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3NOYW1lPVwiYmQtc2VydmVyLW5hbWVcIj57c2VydmVyLm5hbWV9PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzTmFtZT1cImJkLXNlcnZlci1tZW1iZXItY291bnRcIj57c2VydmVyLm1lbWJlcnN9IE1lbWJlcnM8L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNjcm9sbGVyLXdyYXAgYmQtc2VydmVyLWRlc2NyaXB0aW9uLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNjcm9sbGVyIGJkLXNlcnZlci1kZXNjcmlwdGlvblwiPntzZXJ2ZXIuZGVzY3JpcHRpb259PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZXJ2ZXItZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VydmVyLXRhZ3NcIj57c2VydmVyLmNhdGVnb3JpZXMuam9pbihcIiwgXCIpfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9e2J1dHRvbkNsYXNzfSBvbkNsaWNrPXt0aGlzLmpvaW59PntidXR0b25UZXh0fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVFcnJvcigpIHtcclxuICAgICAgICB0aGlzLnByb3BzLnNlcnZlci5pY29uVXJsID0gdGhpcy5wcm9wcy5kZWZhdWx0QXZhdGFyKCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7aW1hZ2VFcnJvcjogdHJ1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGpvaW4oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuam9pbmVkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7am9pbmVkOiBcImpvaW5pbmdcIn0pO1xyXG4gICAgICAgIGNvbnN0IGRpZEpvaW4gPSBhd2FpdCB0aGlzLnByb3BzLmpvaW4odGhpcy5wcm9wcy5zZXJ2ZXIuaWRlbnRpZmllciwgdGhpcy5wcm9wcy5zZXJ2ZXIubmF0aXZlam9pbik7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7am9pbmVkOiBkaWRKb2lufSk7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/publicservers/card.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ServerCard; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass ServerCard extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n if (!this.props.server.iconUrl) this.props.server.iconUrl = this.props.defaultAvatar();\n this.state = {\n imageError: false,\n joined: this.props.joined\n };\n this.join = this.join.bind(this);\n this.handleError = this.handleError.bind(this);\n }\n\n render() {\n const {\n server\n } = this.props;\n const buttonText = typeof this.state.joined == \"string\" ? `${_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.joining}...` : this.state.joined ? _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.joined : _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.join;\n const buttonClass = `bd-button${this.state.joined == true ? \" bd-button-success\" : \"\"}`;\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-server-card${server.pinned ? \" bd-server-card-pinned\" : \"\"}`\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"img\", {\n className: \"bd-server-image\",\n src: server.iconUrl,\n onError: this.handleError\n }), \",\", /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-content\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-header\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"h5\", {\n className: \"bd-server-name\"\n }, server.name), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"h5\", {\n className: \"bd-server-member-count\"\n }, server.members, \" Members\")), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-scroller-wrap bd-server-description-container\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-scroller bd-server-description\"\n }, server.description)), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-footer\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-tags\"\n }, server.categories.join(\", \")), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: buttonClass,\n onClick: this.join\n }, buttonText))));\n }\n\n handleError() {\n this.props.server.iconUrl = this.props.defaultAvatar();\n this.setState({\n imageError: true\n });\n }\n\n async join() {\n if (this.state.joined) return;\n this.setState({\n joined: \"joining\"\n });\n const didJoin = await this.props.join(this.props.server.identifier, this.props.server.nativejoin);\n this.setState({\n joined: didJoin\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvcHVibGljc2VydmVycy9jYXJkLmpzeD83NjAyIl0sIm5hbWVzIjpbIlNlcnZlckNhcmQiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzZXJ2ZXIiLCJpY29uVXJsIiwiZGVmYXVsdEF2YXRhciIsInN0YXRlIiwiaW1hZ2VFcnJvciIsImpvaW5lZCIsImpvaW4iLCJiaW5kIiwiaGFuZGxlRXJyb3IiLCJyZW5kZXIiLCJidXR0b25UZXh0IiwiU3RyaW5ncyIsIlB1YmxpY1NlcnZlcnMiLCJqb2luaW5nIiwiYnV0dG9uQ2xhc3MiLCJwaW5uZWQiLCJuYW1lIiwibWVtYmVycyIsImRlc2NyaXB0aW9uIiwiY2F0ZWdvcmllcyIsInNldFN0YXRlIiwiZGlkSm9pbiIsImlkZW50aWZpZXIiLCJuYXRpdmVqb2luIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLFVBQU4sU0FBeUJDLHlEQUFLLENBQUNDLFNBQS9CLENBQXlDO0FBQ3BEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDQSxRQUFJLENBQUMsS0FBS0EsS0FBTCxDQUFXQyxNQUFYLENBQWtCQyxPQUF2QixFQUFnQyxLQUFLRixLQUFMLENBQVdDLE1BQVgsQ0FBa0JDLE9BQWxCLEdBQTRCLEtBQUtGLEtBQUwsQ0FBV0csYUFBWCxFQUE1QjtBQUNoQyxTQUFLQyxLQUFMLEdBQWE7QUFDVEMsZ0JBQVUsRUFBRSxLQURIO0FBRVRDLFlBQU0sRUFBRSxLQUFLTixLQUFMLENBQVdNO0FBRlYsS0FBYjtBQUlBLFNBQUtDLElBQUwsR0FBWSxLQUFLQSxJQUFMLENBQVVDLElBQVYsQ0FBZSxJQUFmLENBQVo7QUFDQSxTQUFLQyxXQUFMLEdBQW1CLEtBQUtBLFdBQUwsQ0FBaUJELElBQWpCLENBQXNCLElBQXRCLENBQW5CO0FBQ0g7O0FBRURFLFFBQU0sR0FBRztBQUNMLFVBQU07QUFBQ1Q7QUFBRCxRQUFXLEtBQUtELEtBQXRCO0FBQ0EsVUFBTVcsVUFBVSxHQUFHLE9BQU8sS0FBS1AsS0FBTCxDQUFXRSxNQUFsQixJQUE2QixRQUE3QixHQUF5QyxHQUFFTSwyREFBTyxDQUFDQyxhQUFSLENBQXNCQyxPQUFRLEtBQXpFLEdBQWdGLEtBQUtWLEtBQUwsQ0FBV0UsTUFBWCxHQUFvQk0sMkRBQU8sQ0FBQ0MsYUFBUixDQUFzQlAsTUFBMUMsR0FBbURNLDJEQUFPLENBQUNDLGFBQVIsQ0FBc0JOLElBQTVLO0FBQ0EsVUFBTVEsV0FBVyxHQUFJLFlBQVcsS0FBS1gsS0FBTCxDQUFXRSxNQUFYLElBQXFCLElBQXJCLEdBQTRCLG9CQUE1QixHQUFtRCxFQUFHLEVBQXRGO0FBQ0Esd0JBQU87QUFBSyxlQUFTLEVBQUcsaUJBQWdCTCxNQUFNLENBQUNlLE1BQVAsR0FBZ0Isd0JBQWhCLEdBQTJDLEVBQUc7QUFBL0Usb0JBQ0M7QUFBSyxlQUFTLEVBQUMsaUJBQWY7QUFBaUMsU0FBRyxFQUFFZixNQUFNLENBQUNDLE9BQTdDO0FBQXNELGFBQU8sRUFBRSxLQUFLTztBQUFwRSxNQURELG9CQUVDO0FBQUssZUFBUyxFQUFDO0FBQWYsb0JBQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixvQkFDSTtBQUFJLGVBQVMsRUFBQztBQUFkLE9BQWdDUixNQUFNLENBQUNnQixJQUF2QyxDQURKLGVBRUk7QUFBSSxlQUFTLEVBQUM7QUFBZCxPQUF3Q2hCLE1BQU0sQ0FBQ2lCLE9BQS9DLGFBRkosQ0FESixlQUtJO0FBQUssZUFBUyxFQUFDO0FBQWYsb0JBQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUFvRGpCLE1BQU0sQ0FBQ2tCLFdBQTNELENBREosQ0FMSixlQVFJO0FBQUssZUFBUyxFQUFDO0FBQWYsb0JBQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUFpQ2xCLE1BQU0sQ0FBQ21CLFVBQVAsQ0FBa0JiLElBQWxCLENBQXVCLElBQXZCLENBQWpDLENBREosZUFFSTtBQUFRLFVBQUksRUFBQyxRQUFiO0FBQXNCLGVBQVMsRUFBRVEsV0FBakM7QUFBOEMsYUFBTyxFQUFFLEtBQUtSO0FBQTVELE9BQW1FSSxVQUFuRSxDQUZKLENBUkosQ0FGRCxDQUFQO0FBZ0JIOztBQUVERixhQUFXLEdBQUc7QUFDVixTQUFLVCxLQUFMLENBQVdDLE1BQVgsQ0FBa0JDLE9BQWxCLEdBQTRCLEtBQUtGLEtBQUwsQ0FBV0csYUFBWCxFQUE1QjtBQUNBLFNBQUtrQixRQUFMLENBQWM7QUFBQ2hCLGdCQUFVLEVBQUU7QUFBYixLQUFkO0FBQ0g7O0FBRUQsUUFBTUUsSUFBTixHQUFhO0FBQ1QsUUFBSSxLQUFLSCxLQUFMLENBQVdFLE1BQWYsRUFBdUI7QUFDdkIsU0FBS2UsUUFBTCxDQUFjO0FBQUNmLFlBQU0sRUFBRTtBQUFULEtBQWQ7QUFDQSxVQUFNZ0IsT0FBTyxHQUFHLE1BQU0sS0FBS3RCLEtBQUwsQ0FBV08sSUFBWCxDQUFnQixLQUFLUCxLQUFMLENBQVdDLE1BQVgsQ0FBa0JzQixVQUFsQyxFQUE4QyxLQUFLdkIsS0FBTCxDQUFXQyxNQUFYLENBQWtCdUIsVUFBaEUsQ0FBdEI7QUFDQSxTQUFLSCxRQUFMLENBQWM7QUFBQ2YsWUFBTSxFQUFFZ0I7QUFBVCxLQUFkO0FBQ0g7O0FBNUNtRCIsImZpbGUiOiIuL3NyYy91aS9wdWJsaWNzZXJ2ZXJzL2NhcmQuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlcnZlckNhcmQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnByb3BzLnNlcnZlci5pY29uVXJsKSB0aGlzLnByb3BzLnNlcnZlci5pY29uVXJsID0gdGhpcy5wcm9wcy5kZWZhdWx0QXZhdGFyKCk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgICAgICAgaW1hZ2VFcnJvcjogZmFsc2UsXHJcbiAgICAgICAgICAgIGpvaW5lZDogdGhpcy5wcm9wcy5qb2luZWRcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuam9pbiA9IHRoaXMuam9pbi5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IgPSB0aGlzLmhhbmRsZUVycm9yLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHtzZXJ2ZXJ9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICBjb25zdCBidXR0b25UZXh0ID0gdHlwZW9mKHRoaXMuc3RhdGUuam9pbmVkKSA9PSBcInN0cmluZ1wiID8gYCR7U3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmpvaW5pbmd9Li4uYCA6IHRoaXMuc3RhdGUuam9pbmVkID8gU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmpvaW5lZCA6IFN0cmluZ3MuUHVibGljU2VydmVycy5qb2luO1xyXG4gICAgICAgIGNvbnN0IGJ1dHRvbkNsYXNzID0gYGJkLWJ1dHRvbiR7dGhpcy5zdGF0ZS5qb2luZWQgPT0gdHJ1ZSA/IFwiIGJkLWJ1dHRvbi1zdWNjZXNzXCIgOiBcIlwifWA7XHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtgYmQtc2VydmVyLWNhcmQke3NlcnZlci5waW5uZWQgPyBcIiBiZC1zZXJ2ZXItY2FyZC1waW5uZWRcIiA6IFwiXCJ9YH0+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT1cImJkLXNlcnZlci1pbWFnZVwiIHNyYz17c2VydmVyLmljb25Vcmx9IG9uRXJyb3I9e3RoaXMuaGFuZGxlRXJyb3J9IC8+LFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZXJ2ZXItY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VydmVyLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3NOYW1lPVwiYmQtc2VydmVyLW5hbWVcIj57c2VydmVyLm5hbWV9PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzTmFtZT1cImJkLXNlcnZlci1tZW1iZXItY291bnRcIj57c2VydmVyLm1lbWJlcnN9IE1lbWJlcnM8L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNjcm9sbGVyLXdyYXAgYmQtc2VydmVyLWRlc2NyaXB0aW9uLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNjcm9sbGVyIGJkLXNlcnZlci1kZXNjcmlwdGlvblwiPntzZXJ2ZXIuZGVzY3JpcHRpb259PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZXJ2ZXItZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VydmVyLXRhZ3NcIj57c2VydmVyLmNhdGVnb3JpZXMuam9pbihcIiwgXCIpfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9e2J1dHRvbkNsYXNzfSBvbkNsaWNrPXt0aGlzLmpvaW59PntidXR0b25UZXh0fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVFcnJvcigpIHtcclxuICAgICAgICB0aGlzLnByb3BzLnNlcnZlci5pY29uVXJsID0gdGhpcy5wcm9wcy5kZWZhdWx0QXZhdGFyKCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7aW1hZ2VFcnJvcjogdHJ1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGpvaW4oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuam9pbmVkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7am9pbmVkOiBcImpvaW5pbmdcIn0pO1xyXG4gICAgICAgIGNvbnN0IGRpZEpvaW4gPSBhd2FpdCB0aGlzLnByb3BzLmpvaW4odGhpcy5wcm9wcy5zZXJ2ZXIuaWRlbnRpZmllciwgdGhpcy5wcm9wcy5zZXJ2ZXIubmF0aXZlam9pbik7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7am9pbmVkOiBkaWRKb2lufSk7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/publicservers/card.jsx\n"); /***/ }), @@ -994,7 +994,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return PublicServers; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _settings_title__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../settings/title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _card__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./card */ \"./src/ui/publicservers/card.jsx\");\n/* harmony import */ var _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../structs/psconnection */ \"./src/structs/psconnection.js\");\n/* harmony import */ var _settings_components_search__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../settings/components/search */ \"./src/ui/settings/components/search.jsx\");\n\n\n\n\n\nconst SettingsView = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"SettingsView\");\nclass PublicServers extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n get categoryButtons() {\n return [\"All\", \"FPS Games\", \"MMO Games\", \"Strategy Games\", \"MOBA Games\", \"RPG Games\", \"Tabletop Games\", \"Sandbox Games\", \"Simulation Games\", \"Music\", \"Community\", \"Language\", \"Programming\", \"Other\"];\n }\n\n constructor(props) {\n super(props);\n this.state = {\n category: \"All\",\n query: \"\",\n loading: true,\n user: null,\n results: {\n servers: [],\n size: 0,\n from: 0,\n total: 0,\n next: null\n }\n };\n this.changeCategory = this.changeCategory.bind(this);\n this.searchKeyDown = this.searchKeyDown.bind(this);\n this.connect = this.connect.bind(this);\n this.loadNextPage = this.loadNextPage.bind(this);\n this.join = this.join.bind(this);\n }\n\n componentDidMount() {\n this.checkConnection();\n }\n\n async checkConnection() {\n const userData = await _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].checkConnection();\n\n if (!userData) {\n return this.setState({\n loading: true,\n user: null\n });\n }\n\n this.setState({\n user: userData\n });\n this.search();\n }\n\n async connect() {\n await _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].connect();\n this.checkConnection();\n }\n\n searchKeyDown(e) {\n if (this.state.loading || e.which !== 13) return;\n this.search(e.target.value);\n }\n\n async search(term = \"\", from = 0) {\n this.setState({\n query: term,\n loading: true\n });\n const results = await _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].search({\n term,\n category: this.state.category == \"All\" ? \"\" : this.state.category,\n from\n });\n\n if (!results) {\n return this.setState({\n results: {\n servers: [],\n size: 0,\n from: 0,\n total: 0,\n next: null\n }\n });\n }\n\n this.setState({\n loading: false,\n results\n });\n }\n\n async changeCategory(id) {\n if (this.state.loading) return;\n await new Promise(resolve => this.setState({\n category: id\n }, resolve));\n this.search();\n }\n\n loadNextPage() {\n if (this.state.loading) return;\n this.search(this.state.query, this.state.results.next);\n }\n\n async join(id, native = false) {\n return await _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].join(id, native);\n }\n\n get searchBox() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_components_search__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n onKeyDown: this.searchKeyDown,\n placeholder: `${modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.search}...`\n });\n }\n\n get title() {\n if (!this.state.user) return modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.notConnected;\n if (this.state.loading) return `${modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.loading}...`;\n const start = this.state.results.from + 1;\n const total = this.state.results.total;\n const end = this.state.results.next ? this.state.results.next : total;\n let title = modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.results.format({\n start,\n end,\n total,\n category: this.state.category\n });\n if (this.state.query) title += \" \" + modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.query.format({\n query: this.state.query\n });\n return title;\n }\n\n get content() {\n const connectButton = this.state.user ? null : {\n title: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.connect,\n onClick: this.connect\n };\n const pinned = this.state.category == \"All\" || !this.state.user ? this.bdServer : null;\n const servers = this.state.results.servers.map(server => {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_card__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n key: server.identifier,\n server: server,\n joined: _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].hasJoined(server.identifier),\n join: this.join,\n defaultAvatar: _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getDefaultAvatar\n });\n });\n return [modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_title__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: this.title,\n button: connectButton\n }), pinned, servers, this.state.results.next ? this.nextButton : null, this.state.results.servers.length > 0 && modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_title__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: this.title\n })];\n }\n\n get nextButton() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: \"bd-button bd-button-next\",\n onClick: this.loadNextPage\n }, this.state.loading ? modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.loading : modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.loadMore);\n }\n\n get connection() {\n const {\n user\n } = this.state;\n if (!user) return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-connection\"\n });\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-connection\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-footnote\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.connection.format(user)), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: \"bd-button bd-button-reconnect\",\n onClick: this.connect\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.reconnect));\n }\n\n get bdServer() {\n const server = {\n name: \"BetterDiscord\",\n online: \"7500+\",\n members: \"20000+\",\n categories: [\"community\", \"programming\", \"support\"],\n description: \"Official BetterDiscord server for plugins, themes, support, etc\",\n identifier: \"86004744966914048\",\n iconUrl: \"https://cdn.discordapp.com/icons/86004744966914048/292e7f6bfff2b71dfd13e508a859aedd.webp\",\n nativejoin: true,\n invite_code: \"0Tmfo5ZbORCRqbAd\",\n pinned: true\n };\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_card__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n server: server,\n pinned: true,\n joined: _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].hasJoined(server.identifier),\n defaultAvatar: _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getDefaultAvatar\n });\n }\n\n render() {\n const categories = this.categoryButtons.map(name => ({\n section: name,\n label: name,\n element: () => this.content\n }));\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(SettingsView, {\n onClose: this.props.close,\n onSetSection: this.changeCategory,\n section: this.state.category,\n sections: [{\n section: \"HEADER\",\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.search\n }, {\n section: \"CUSTOM\",\n element: () => this.searchBox\n }, {\n section: \"HEADER\",\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.categories\n }, ...categories, {\n section: \"DIVIDER\"\n }, {\n section: \"HEADER\",\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"a\", {\n href: \"https://discordservers.com\",\n target: \"_blank\"\n }, \"DiscordServers.com\")\n }, {\n section: \"DIVIDER\"\n }, {\n section: \"CUSTOM\",\n element: () => this.connection\n }],\n theme: \"dark\"\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvcHVibGljc2VydmVycy9tZW51LmpzPzlhY2QiXSwibmFtZXMiOlsiU2V0dGluZ3NWaWV3IiwiV2VicGFja01vZHVsZXMiLCJnZXRCeURpc3BsYXlOYW1lIiwiUHVibGljU2VydmVycyIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY2F0ZWdvcnlCdXR0b25zIiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN0YXRlIiwiY2F0ZWdvcnkiLCJxdWVyeSIsImxvYWRpbmciLCJ1c2VyIiwicmVzdWx0cyIsInNlcnZlcnMiLCJzaXplIiwiZnJvbSIsInRvdGFsIiwibmV4dCIsImNoYW5nZUNhdGVnb3J5IiwiYmluZCIsInNlYXJjaEtleURvd24iLCJjb25uZWN0IiwibG9hZE5leHRQYWdlIiwiam9pbiIsImNvbXBvbmVudERpZE1vdW50IiwiY2hlY2tDb25uZWN0aW9uIiwidXNlckRhdGEiLCJDb25uZWN0aW9uIiwic2V0U3RhdGUiLCJzZWFyY2giLCJlIiwid2hpY2giLCJ0YXJnZXQiLCJ2YWx1ZSIsInRlcm0iLCJpZCIsIlByb21pc2UiLCJyZXNvbHZlIiwibmF0aXZlIiwic2VhcmNoQm94IiwiU3RyaW5ncyIsInRpdGxlIiwibm90Q29ubmVjdGVkIiwic3RhcnQiLCJlbmQiLCJmb3JtYXQiLCJjb250ZW50IiwiY29ubmVjdEJ1dHRvbiIsIm9uQ2xpY2siLCJwaW5uZWQiLCJiZFNlcnZlciIsIm1hcCIsInNlcnZlciIsImNyZWF0ZUVsZW1lbnQiLCJTZXJ2ZXJDYXJkIiwia2V5IiwiaWRlbnRpZmllciIsImpvaW5lZCIsImhhc0pvaW5lZCIsImRlZmF1bHRBdmF0YXIiLCJnZXREZWZhdWx0QXZhdGFyIiwiU2V0dGluZ3NUaXRsZSIsInRleHQiLCJidXR0b24iLCJuZXh0QnV0dG9uIiwibGVuZ3RoIiwidHlwZSIsImNsYXNzTmFtZSIsImxvYWRNb3JlIiwiY29ubmVjdGlvbiIsInJlY29ubmVjdCIsIm5hbWUiLCJvbmxpbmUiLCJtZW1iZXJzIiwiY2F0ZWdvcmllcyIsImRlc2NyaXB0aW9uIiwiaWNvblVybCIsIm5hdGl2ZWpvaW4iLCJpbnZpdGVfY29kZSIsInJlbmRlciIsInNlY3Rpb24iLCJsYWJlbCIsImVsZW1lbnQiLCJvbkNsb3NlIiwiY2xvc2UiLCJvblNldFNlY3Rpb24iLCJzZWN0aW9ucyIsImhyZWYiLCJ0aGVtZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsWUFBWSxHQUFHQyxzREFBYyxDQUFDQyxnQkFBZixDQUFnQyxjQUFoQyxDQUFyQjtBQUVlLE1BQU1DLGFBQU4sU0FBNEJDLDZDQUFLLENBQUNDLFNBQWxDLENBQTRDO0FBRXZELE1BQUlDLGVBQUosR0FBc0I7QUFDbEIsV0FBTyxDQUFDLEtBQUQsRUFBUSxXQUFSLEVBQXFCLFdBQXJCLEVBQWtDLGdCQUFsQyxFQUFvRCxZQUFwRCxFQUFrRSxXQUFsRSxFQUErRSxnQkFBL0UsRUFBaUcsZUFBakcsRUFBa0gsa0JBQWxILEVBQXNJLE9BQXRJLEVBQStJLFdBQS9JLEVBQTRKLFVBQTVKLEVBQXdLLGFBQXhLLEVBQXVMLE9BQXZMLENBQVA7QUFDSDs7QUFFREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQ1RDLGNBQVEsRUFBRSxLQUREO0FBRVRDLFdBQUssRUFBRSxFQUZFO0FBR1RDLGFBQU8sRUFBRSxJQUhBO0FBSVRDLFVBQUksRUFBRSxJQUpHO0FBS1RDLGFBQU8sRUFBRTtBQUNMQyxlQUFPLEVBQUUsRUFESjtBQUVMQyxZQUFJLEVBQUUsQ0FGRDtBQUdMQyxZQUFJLEVBQUUsQ0FIRDtBQUlMQyxhQUFLLEVBQUUsQ0FKRjtBQUtMQyxZQUFJLEVBQUU7QUFMRDtBQUxBLEtBQWI7QUFjQSxTQUFLQyxjQUFMLEdBQXNCLEtBQUtBLGNBQUwsQ0FBb0JDLElBQXBCLENBQXlCLElBQXpCLENBQXRCO0FB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QUNyQ3FGLGFBQU8sRUFBRSxLQUFLN0UsS0FBTCxDQUFXOEUsS0FEaUI7QUFFckNDLGtCQUFZLEVBQUUsS0FBS25FLGNBRmtCO0FBR3JDOEQsYUFBTyxFQUFFLEtBQUt6RSxLQUFMLENBQVdDLFFBSGlCO0FBSXJDOEUsY0FBUSxFQUFFLENBQ047QUFBQ04sZUFBTyxFQUFFLFFBQVY7QUFBb0JDLGFBQUssRUFBRXpDLCtDQUFPLENBQUN2QyxhQUFSLENBQXNCNEI7QUFBakQsT0FETSxFQUVOO0FBQUNtRCxlQUFPLEVBQUUsUUFBVjtBQUFvQkUsZUFBTyxFQUFFLE1BQU0sS0FBSzNDO0FBQXhDLE9BRk0sRUFHTjtBQUFDeUMsZUFBTyxFQUFFLFFBQVY7QUFBb0JDLGFBQUssRUFBRXpDLCtDQUFPLENBQUN2QyxhQUFSLENBQXNCeUU7QUFBakQsT0FITSxFQUlOLEdBQUdBLFVBSkcsRUFLTjtBQUFDTSxlQUFPLEVBQUU7QUFBVixPQUxNLEVBTU47QUFBQ0EsZUFBTyxFQUFFLFFBQVY7QUFBb0JDLGFBQUssRUFBRS9FLDZDQUFLLENBQUNtRCxhQUFOLENBQW9CLEdBQXBCLEVBQXlCO0FBQUNrQyxjQUFJLEVBQUUsNEJBQVA7QUFBcUN2RCxnQkFBTSxFQUFFO0FBQTdDLFNBQXpCLEVBQWlGLG9CQUFqRjtBQUEzQixPQU5NLEVBT047QUFBQ2dELGVBQU8sRUFBRTtBQUFWLE9BUE0sRUFRTjtBQUFDQSxlQUFPLEVBQUUsUUFBVjtBQUFvQkUsZUFBTyxFQUFFLE1BQU0sS0FBS2I7QUFBeEMsT0FSTSxDQUoyQjtBQWNyQ21CLFdBQUssRUFBRTtBQWQ4QixLQUFsQyxDQUFQO0FBZ0JIOztBQWxLc0QiLCJmaWxlIjoiLi9zcmMvdWkvcHVibGljc2VydmVycy9tZW51LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgV2VicGFja01vZHVsZXMsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBTZXR0aW5nc1RpdGxlIGZyb20gXCIuLi9zZXR0aW5ncy90aXRsZVwiO1xyXG5pbXBvcnQgU2VydmVyQ2FyZCBmcm9tIFwiLi9jYXJkXCI7XHJcbmltcG9ydCBDb25uZWN0aW9uIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL3BzY29ubmVjdGlvblwiO1xyXG5pbXBvcnQgU2VhcmNoIGZyb20gXCIuLi9zZXR0aW5ncy9jb21wb25lbnRzL3NlYXJjaFwiO1xyXG5cclxuY29uc3QgU2V0dGluZ3NWaWV3ID0gV2VicGFja01vZHVsZXMuZ2V0QnlEaXNwbGF5TmFtZShcIlNldHRpbmdzVmlld1wiKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFB1YmxpY1NlcnZlcnMgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG5cclxuICAgIGdldCBjYXRlZ29yeUJ1dHRvbnMoKSB7XHJcbiAgICAgICAgcmV0dXJuIFtcIkFsbFwiLCBcIkZQUyBHYW1lc1wiLCBcIk1NTyBHYW1lc1wiLCBcIlN0cmF0ZWd5IEdhbWVzXCIsIFwiTU9CQSBHYW1lc1wiLCBcIlJQRyBHYW1lc1wiLCBcIlRhYmxldG9wIEdhbWVzXCIsIFwiU2FuZGJveCBHYW1lc1wiLCBcIlNpbXVsYXRpb24gR2FtZXNcIiwgXCJNdXNpY1wiLCBcIkNvbW11bml0eVwiLCBcIkxhbmd1YWdlXCIsIFwiUHJvZ3JhbW1pbmdcIiwgXCJPdGhlclwiXTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICAgICAgICBjYXRlZ29yeTogXCJBbGxcIixcclxuICAgICAgICAgICAgcXVlcnk6IFwiXCIsXHJcbiAgICAgICAgICAgIGxvYWRpbmc6IHRydWUsXHJcbiAgICAgICAgICAgIHVzZXI6IG51bGwsXHJcbiAgICAgICAgICAgIHJlc3VsdHM6IHtcclxuICAgICAgICAgICAgICAgIHNlcnZlcnM6IFtdLFxyXG4gICAgICAgICAgICAgICAgc2l6ZTogMCxcclxuICAgICAgICAgICAgICAgIGZyb206IDAsXHJcbiAgICAgICAgICAgICAgICB0b3RhbDogMCxcclxuICAgICAgICAgICAgICAgIG5leHQ6IG51bGxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuY2hhbmdlQ2F0ZWdvcnkgPSB0aGlzLmNoYW5nZUNhdGVnb3J5LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hLZXlEb3duID0gdGhpcy5zZWFyY2hLZXlEb3duLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5jb25uZWN0ID0gdGhpcy5jb25uZWN0LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5sb2FkTmV4dFBhZ2UgPSB0aGlzLmxvYWROZXh0UGFnZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuam9pbiA9IHRoaXMuam9pbi5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgICAgIHRoaXMuY2hlY2tDb25uZWN0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2hlY2tDb25uZWN0aW9uKCkge1xyXG4gICAgICAgIGNvbnN0IHVzZXJEYXRhID0gYXdhaXQgQ29ubmVjdGlvbi5jaGVja0Nvbm5lY3Rpb24oKTtcclxuICAgICAgICBpZiAoIXVzZXJEYXRhKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFN0YXRlKHtsb2FkaW5nOiB0cnVlLCB1c2VyOiBudWxsfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe3VzZXI6IHVzZXJEYXRhfSk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2goKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjb25uZWN0KCkge1xyXG4gICAgICAgIGF3YWl0IENvbm5lY3Rpb24uY29ubmVjdCgpO1xyXG4gICAgICAgIHRoaXMuY2hlY2tDb25uZWN0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VhcmNoS2V5RG93bihlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUubG9hZGluZyB8fCBlLndoaWNoICE9PSAxMykgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoKGUudGFyZ2V0LnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzZWFyY2godGVybSA9IFwiXCIsIGZyb20gPSAwKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7cXVlcnk6IHRlcm0sIGxvYWRpbmc6IHRydWV9KTtcclxuICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgQ29ubmVjdGlvbi5zZWFyY2goe3Rlcm0sIGNhdGVnb3J5OiB0aGlzLnN0YXRlLmNhdGVnb3J5ID09IFwiQWxsXCIgPyBcIlwiIDogdGhpcy5zdGF0ZS5jYXRlZ29yeSwgZnJvbX0pO1xyXG4gICAgICAgIGlmICghcmVzdWx0cykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRTdGF0ZSh7cmVzdWx0czoge1xyXG4gICAgICAgICAgICAgICAgc2VydmVyczogW10sXHJcbiAgICAgICAgICAgICAgICBzaXplOiAwLFxyXG4gICAgICAgICAgICAgICAgZnJvbTogMCxcclxuICAgICAgICAgICAgICAgIHRvdGFsOiAwLFxyXG4gICAgICAgICAgICAgICAgbmV4dDogbnVsbFxyXG4gICAgICAgICAgICB9fSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2xvYWRpbmc6IGZhbHNlLCByZXN1bHRzfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2hhbmdlQ2F0ZWdvcnkoaWQpIHtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5sb2FkaW5nKSByZXR1cm47XHJcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB0aGlzLnNldFN0YXRlKHtjYXRlZ29yeTogaWR9LCByZXNvbHZlKSk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2goKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkTmV4dFBhZ2UoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUubG9hZGluZykgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoKHRoaXMuc3RhdGUucXVlcnksIHRoaXMuc3RhdGUucmVzdWx0cy5uZXh0KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBqb2luKGlkLCBuYXRpdmUgPSBmYWxzZSkge1xyXG4gICAgICAgIHJldHVybiBhd2FpdCBDb25uZWN0aW9uLmpvaW4oaWQsIG5hdGl2ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNlYXJjaEJveCgpIHtcclxuICAgICAgICByZXR1cm4gPFNlYXJjaCBvbktleURvd249e3RoaXMuc2VhcmNoS2V5RG93bn0gcGxhY2Vob2xkZXI9e2Ake1N0cmluZ3MuUHVibGljU2VydmVycy5zZWFyY2h9Li4uYH0gLz47XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHRpdGxlKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5zdGF0ZS51c2VyKSByZXR1cm4gU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLm5vdENvbm5lY3RlZDtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5sb2FkaW5nKSByZXR1cm4gYCR7U3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmxvYWRpbmd9Li4uYDtcclxuICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuc3RhdGUucmVzdWx0cy5mcm9tICsgMTtcclxuICAgICAgICBjb25zdCB0b3RhbCA9IHRoaXMuc3RhdGUucmVzdWx0cy50b3RhbDtcclxuICAgICAgICBjb25zdCBlbmQgPSB0aGlzLnN0YXRlLnJlc3VsdHMubmV4dCA/IHRoaXMuc3RhdGUucmVzdWx0cy5uZXh0IDogdG90YWw7XHJcbiAgICAgICAgbGV0IHRpdGxlID0gU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLnJlc3VsdHMuZm9ybWF0KHtzdGFydCwgZW5kLCB0b3RhbCwgY2F0ZWdvcnk6IHRoaXMuc3RhdGUuY2F0ZWdvcnl9KTtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5xdWVyeSkgdGl0bGUgKz0gXCIgXCIgKyBTdHJpbmdzLlB1YmxpY1NlcnZlcnMucXVlcnkuZm9ybWF0KHtxdWVyeTogdGhpcy5zdGF0ZS5xdWVyeX0pO1xyXG4gICAgICAgIHJldHVybiB0aXRsZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29udGVudCgpIHtcclxuICAgICAgICBjb25zdCBjb25uZWN0QnV0dG9uID0gdGhpcy5zdGF0ZS51c2VyID8gbnVsbCA6IHt0aXRsZTogU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmNvbm5lY3QsIG9uQ2xpY2s6IHRoaXMuY29ubmVjdH07XHJcbiAgICAgICAgY29uc3QgcGlubmVkID0gdGhpcy5zdGF0ZS5jYXRlZ29yeSA9PSBcIkFsbFwiIHx8ICF0aGlzLnN0YXRlLnVzZXIgPyB0aGlzLmJkU2VydmVyIDogbnVsbDtcclxuICAgICAgICBjb25zdCBzZXJ2ZXJzID0gdGhpcy5zdGF0ZS5yZXN1bHRzLnNlcnZlcnMubWFwKChzZXJ2ZXIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2VydmVyQ2FyZCwge2tleTogc2VydmVyLmlkZW50aWZpZXIsIHNlcnZlcjogc2VydmVyLCBqb2luZWQ6IENvbm5lY3Rpb24uaGFzSm9pbmVkKHNlcnZlci5pZGVudGlmaWVyKSwgam9pbjogdGhpcy5qb2luLCBkZWZhdWx0QXZhdGFyOiBDb25uZWN0aW9uLmdldERlZmF1bHRBdmF0YXJ9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gW1JlYWN0LmNyZWF0ZUVsZW1lbnQoU2V0dGluZ3NUaXRsZSwge3RleHQ6IHRoaXMudGl0bGUsIGJ1dHRvbjogY29ubmVjdEJ1dHRvbn0pLFxyXG4gICAgICAgICAgICBwaW5uZWQsXHJcbiAgICAgICAgICAgIHNlcnZlcnMsXHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGUucmVzdWx0cy5uZXh0ID8gdGhpcy5uZXh0QnV0dG9uIDogbnVsbCxcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZS5yZXN1bHRzLnNlcnZlcnMubGVuZ3RoID4gMCAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KFNldHRpbmdzVGl0bGUsIHt0ZXh0OiB0aGlzLnRpdGxlfSldO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBuZXh0QnV0dG9uKCkge1xyXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIHt0eXBlOiBcImJ1dHRvblwiLCBjbGFzc05hbWU6IFwiYmQtYnV0dG9uIGJkLWJ1dHRvbi1uZXh0XCIsIG9uQ2xpY2s6IHRoaXMubG9hZE5leHRQYWdlfSwgdGhpcy5zdGF0ZS5sb2FkaW5nID8gU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmxvYWRpbmcgOiBTdHJpbmdzLlB1YmxpY1NlcnZlcnMubG9hZE1vcmUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjb25uZWN0aW9uKCkge1xyXG4gICAgICAgIGNvbnN0IHt1c2VyfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgaWYgKCF1c2VyKSByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7aWQ6IFwiYmQtY29ubmVjdGlvblwifSk7XHJcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2lkOiBcImJkLWNvbm5lY3Rpb25cIn0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTogXCJiZC1mb290bm90ZVwifSwgU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmNvbm5lY3Rpb24uZm9ybWF0KHVzZXIpKSxcclxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCB7dHlwZTogXCJidXR0b25cIiwgY2xhc3NOYW1lOiBcImJkLWJ1dHRvbiBiZC1idXR0b24tcmVjb25uZWN0XCIsIG9uQ2xpY2s6IHRoaXMuY29ubmVjdH0sIFN0cmluZ3MuUHVibGljU2VydmVycy5yZWNvbm5lY3QpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYmRTZXJ2ZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2VydmVyID0ge1xyXG4gICAgICAgICAgICBuYW1lOiBcIkJldHRlckRpc2NvcmRcIixcclxuICAgICAgICAgICAgb25saW5lOiBcIjc1MDArXCIsXHJcbiAgICAgICAgICAgIG1lbWJlcnM6IFwiMjAwMDArXCIsXHJcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IFtcImNvbW11bml0eVwiLCBcInByb2dyYW1taW5nXCIsIFwic3VwcG9ydFwiXSxcclxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiT2ZmaWNpYWwgQmV0dGVyRGlzY29yZCBzZXJ2ZXIgZm9yIHBsdWdpbnMsIHRoZW1lcywgc3VwcG9ydCwgZXRjXCIsXHJcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IFwiODYwMDQ3NDQ5NjY5MTQwNDhcIixcclxuICAgICAgICAgICAgaWNvblVybDogXCJodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9pY29ucy84NjAwNDc0NDk2NjkxNDA0OC8yOTJlN2Y2YmZmZjJiNzFkZmQxM2U1MDhhODU5YWVkZC53ZWJwXCIsXHJcbiAgICAgICAgICAgIG5hdGl2ZWpvaW46IHRydWUsXHJcbiAgICAgICAgICAgIGludml0ZV9jb2RlOiBcIjBUbWZvNVpiT1JDUnFiQWRcIixcclxuICAgICAgICAgICAgcGlubmVkOiB0cnVlXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChTZXJ2ZXJDYXJkLCB7c2VydmVyOiBzZXJ2ZXIsIHBpbm5lZDogdHJ1ZSwgam9pbmVkOiBDb25uZWN0aW9uLmhhc0pvaW5lZChzZXJ2ZXIuaWRlbnRpZmllciksIGRlZmF1bHRBdmF0YXI6IENvbm5lY3Rpb24uZ2V0RGVmYXVsdEF2YXRhcn0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBjYXRlZ29yaWVzID0gdGhpcy5jYXRlZ29yeUJ1dHRvbnMubWFwKG5hbWUgPT4gKHtcclxuICAgICAgICAgICAgICAgIHNlY3Rpb246IG5hbWUsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogbmFtZSxcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQ6ICgpID0+IHRoaXMuY29udGVudFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2V0dGluZ3NWaWV3LCB7XHJcbiAgICAgICAgICAgIG9uQ2xvc2U6IHRoaXMucHJvcHMuY2xvc2UsXHJcbiAgICAgICAgICAgIG9uU2V0U2VjdGlvbjogdGhpcy5jaGFuZ2VDYXRlZ29yeSxcclxuICAgICAgICAgICAgc2VjdGlvbjogdGhpcy5zdGF0ZS5jYXRlZ29yeSxcclxuICAgICAgICAgICAgc2VjdGlvbnM6IFtcclxuICAgICAgICAgICAgICAgIHtzZWN0aW9uOiBcIkhFQURFUlwiLCBsYWJlbDogU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLnNlYXJjaH0sXHJcbiAgICAgICAgICAgICAgICB7c2VjdGlvbjogXCJDVVNUT01cIiwgZWxlbWVudDogKCkgPT4gdGhpcy5zZWFyY2hCb3h9LFxyXG4gICAgICAgICAgICAgICAge3NlY3Rpb246IFwiSEVBREVSXCIsIGxhYmVsOiBTdHJpbmdzLlB1YmxpY1NlcnZlcnMuY2F0ZWdvcmllc30sXHJcbiAgICAgICAgICAgICAgICAuLi5jYXRlZ29yaWVzLFxyXG4gICAgICAgICAgICAgICAge3NlY3Rpb246IFwiRElWSURFUlwifSxcclxuICAgICAgICAgICAgICAgIHtzZWN0aW9uOiBcIkhFQURFUlwiLCBsYWJlbDogUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwge2hyZWY6IFwiaHR0cHM6Ly9kaXNjb3Jkc2VydmVycy5jb21cIiwgdGFyZ2V0OiBcIl9ibGFua1wifSwgXCJEaXNjb3JkU2VydmVycy5jb21cIil9LFxyXG4gICAgICAgICAgICAgICAge3NlY3Rpb246IFwiRElWSURFUlwifSxcclxuICAgICAgICAgICAgICAgIHtzZWN0aW9uOiBcIkNVU1RPTVwiLCBlbGVtZW50OiAoKSA9PiB0aGlzLmNvbm5lY3Rpb259XHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIHRoZW1lOiBcImRhcmtcIlxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/publicservers/menu.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return PublicServers; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _settings_title__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../settings/title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _card__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./card */ \"./src/ui/publicservers/card.jsx\");\n/* harmony import */ var _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../structs/psconnection */ \"./src/structs/psconnection.js\");\n/* harmony import */ var _settings_components_search__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../settings/components/search */ \"./src/ui/settings/components/search.jsx\");\n\n\n\n\n\nconst SettingsView = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"SettingsView\");\nclass PublicServers extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n get categoryButtons() {\n return [\"All\", \"FPS Games\", \"MMO Games\", \"Strategy Games\", \"MOBA Games\", \"RPG Games\", \"Tabletop Games\", \"Sandbox Games\", \"Simulation Games\", \"Music\", \"Community\", \"Language\", \"Programming\", \"Other\"];\n }\n\n constructor(props) {\n super(props);\n this.state = {\n category: \"All\",\n query: \"\",\n loading: true,\n user: null,\n results: {\n servers: [],\n size: 0,\n from: 0,\n total: 0,\n next: null\n }\n };\n this.changeCategory = this.changeCategory.bind(this);\n this.searchKeyDown = this.searchKeyDown.bind(this);\n this.connect = this.connect.bind(this);\n this.loadNextPage = this.loadNextPage.bind(this);\n this.join = this.join.bind(this);\n }\n\n componentDidMount() {\n this.checkConnection();\n }\n\n async checkConnection() {\n const userData = await _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].checkConnection();\n\n if (!userData) {\n return this.setState({\n loading: true,\n user: null\n });\n }\n\n this.setState({\n user: userData\n });\n this.search();\n }\n\n async connect() {\n await _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].connect();\n this.checkConnection();\n }\n\n searchKeyDown(e) {\n if (this.state.loading || e.which !== 13) return;\n this.search(e.target.value);\n }\n\n async search(term = \"\", from = 0) {\n this.setState({\n query: term,\n loading: true\n });\n const results = await _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].search({\n term,\n category: this.state.category == \"All\" ? \"\" : this.state.category,\n from\n });\n\n if (!results) {\n return this.setState({\n results: {\n servers: [],\n size: 0,\n from: 0,\n total: 0,\n next: null\n }\n });\n }\n\n this.setState({\n loading: false,\n results\n });\n }\n\n async changeCategory(id) {\n if (this.state.loading) return;\n await new Promise(resolve => this.setState({\n category: id\n }, resolve));\n this.search();\n }\n\n loadNextPage() {\n if (this.state.loading) return;\n this.search(this.state.query, this.state.results.next);\n }\n\n async join(id, native = false) {\n return await _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].join(id, native);\n }\n\n get searchBox() {\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_components_search__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n onKeyDown: this.searchKeyDown,\n placeholder: `${_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.search}...`\n });\n }\n\n get title() {\n if (!this.state.user) return _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.notConnected;\n if (this.state.loading) return `${_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.loading}...`;\n const start = this.state.results.from + 1;\n const total = this.state.results.total;\n const end = this.state.results.next ? this.state.results.next : total;\n let title = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.results.format({\n start,\n end,\n total,\n category: this.state.category\n });\n if (this.state.query) title += \" \" + _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.query.format({\n query: this.state.query\n });\n return title;\n }\n\n get content() {\n const connectButton = this.state.user ? null : {\n title: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.connect,\n onClick: this.connect\n };\n const pinned = this.state.category == \"All\" || !this.state.user ? this.bdServer : null;\n const servers = this.state.results.servers.map(server => {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_card__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n key: server.identifier,\n server: server,\n joined: _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].hasJoined(server.identifier),\n join: this.join,\n defaultAvatar: _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getDefaultAvatar\n });\n });\n return [_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_title__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: this.title,\n button: connectButton\n }), pinned, servers, this.state.results.next ? this.nextButton : null, this.state.results.servers.length > 0 && _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_title__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: this.title\n })];\n }\n\n get nextButton() {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: \"bd-button bd-button-next\",\n onClick: this.loadNextPage\n }, this.state.loading ? _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.loading : _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.loadMore);\n }\n\n get connection() {\n const {\n user\n } = this.state;\n if (!user) return _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-connection\"\n });\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-connection\"\n }, _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-footnote\"\n }, _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.connection.format(user)), _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: \"bd-button bd-button-reconnect\",\n onClick: this.connect\n }, _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.reconnect));\n }\n\n get bdServer() {\n const server = {\n name: \"BetterDiscord\",\n online: \"7500+\",\n members: \"20000+\",\n categories: [\"community\", \"programming\", \"support\"],\n description: \"Official BetterDiscord server for plugins, themes, support, etc\",\n identifier: \"86004744966914048\",\n iconUrl: \"https://cdn.discordapp.com/icons/86004744966914048/292e7f6bfff2b71dfd13e508a859aedd.webp\",\n nativejoin: true,\n invite_code: \"0Tmfo5ZbORCRqbAd\",\n pinned: true\n };\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_card__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n server: server,\n pinned: true,\n joined: _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].hasJoined(server.identifier),\n defaultAvatar: _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getDefaultAvatar\n });\n }\n\n render() {\n const categories = this.categoryButtons.map(name => ({\n section: name,\n label: name,\n element: () => this.content\n }));\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(SettingsView, {\n onClose: this.props.close,\n onSetSection: this.changeCategory,\n section: this.state.category,\n sections: [{\n section: \"HEADER\",\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.search\n }, {\n section: \"CUSTOM\",\n element: () => this.searchBox\n }, {\n section: \"HEADER\",\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.categories\n }, ...categories, {\n section: \"DIVIDER\"\n }, {\n section: \"HEADER\",\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"a\", {\n href: \"https://discordservers.com\",\n target: \"_blank\"\n }, \"DiscordServers.com\")\n }, {\n section: \"DIVIDER\"\n }, {\n section: \"CUSTOM\",\n element: () => this.connection\n }],\n theme: \"dark\"\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvcHVibGljc2VydmVycy9tZW51LmpzPzlhY2QiXSwibmFtZXMiOlsiU2V0dGluZ3NWaWV3IiwiV2VicGFja01vZHVsZXMiLCJnZXRCeURpc3BsYXlOYW1lIiwiUHVibGljU2VydmVycyIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY2F0ZWdvcnlCdXR0b25zIiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN0YXRlIiwiY2F0ZWdvcnkiLCJxdWVyeSIsImxvYWRpbmciLCJ1c2VyIiwicmVzdWx0cyIsInNlcnZlcnMiLCJzaXplIiwiZnJvbSIsInRvdGFsIiwibmV4dCIsImNoYW5nZUNhdGVnb3J5IiwiYmluZCIsInNlYXJjaEtleURvd24iLCJjb25uZWN0IiwibG9hZE5leHRQYWdlIiwiam9pbiIsImNvbXBvbmVudERpZE1vdW50IiwiY2hlY2tDb25uZWN0aW9uIiwidXNlckRhdGEiLCJDb25uZWN0aW9uIiwic2V0U3RhdGUiLCJzZWFyY2giLCJlIiwid2hpY2giLCJ0YXJnZXQiLCJ2YWx1ZSIsInRlcm0iLCJpZCIsIlByb21pc2UiLCJyZXNvbHZlIiwibmF0aXZlIiwic2VhcmNoQm94IiwiU3RyaW5ncyIsInRpdGxlIiwibm90Q29ubmVjdGVkIiwic3RhcnQiLCJlbmQiLCJmb3JtYXQiLCJjb250ZW50IiwiY29ubmVjdEJ1dHRvbiIsIm9uQ2xpY2siLCJwaW5uZWQiLCJiZFNlcnZlciIsIm1hcCIsInNlcnZlciIsImNyZWF0ZUVsZW1lbnQiLCJTZXJ2ZXJDYXJkIiwia2V5IiwiaWRlbnRpZmllciIsImpvaW5lZCIsImhhc0pvaW5lZCIsImRlZmF1bHRBdmF0YXIiLCJnZXREZWZhdWx0QXZhdGFyIiwiU2V0dGluZ3NUaXRsZSIsInRleHQiLCJidXR0b24iLCJuZXh0QnV0dG9uIiwibGVuZ3RoIiwidHlwZSIsImNsYXNzTmFtZSIsImxvYWRNb3JlIiwiY29ubmVjdGlvbiIsInJlY29ubmVjdCIsIm5hbWUiLCJvbmxpbmUiLCJtZW1iZXJzIiwiY2F0ZWdvcmllcyIsImRlc2NyaXB0aW9uIiwiaWNvblVybCIsIm5hdGl2ZWpvaW4iLCJpbnZpdGVfY29kZSIsInJlbmRlciIsInNlY3Rpb24iLCJsYWJlbCIsImVsZW1lbnQiLCJvbkNsb3NlIiwiY2xvc2UiLCJvblNldFNlY3Rpb24iLCJzZWN0aW9ucyIsImhyZWYiLCJ0aGVtZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsWUFBWSxHQUFHQyxrRUFBYyxDQUFDQyxnQkFBZixDQUFnQyxjQUFoQyxDQUFyQjtBQUVlLE1BQU1DLGFBQU4sU0FBNEJDLHlEQUFLLENBQUNDLFNBQWxDLENBQTRDO0FBRXZELE1BQUlDLGVBQUosR0FBc0I7QUFDbEIsV0FBTyxDQUFDLEtBQUQsRUFBUSxXQUFSLEVBQXFCLFdBQXJCLEVBQWtDLGdCQUFsQyxFQUFvRCxZQUFwRCxFQUFrRSxXQUFsRSxFQUErRSxnQkFBL0UsRUFBaUcsZUFBakcsRUFBa0gsa0JBQWxILEVBQXNJLE9BQXRJLEVBQStJLFdBQS9JLEVBQTRKLFVBQTVKLEVBQXdLLGFBQXhLLEVBQXVMLE9BQXZMLENBQVA7QUFDSDs7QUFFREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQ1RDLGNBQVEsRUFBRSxLQUREO0FBRVRDLFdBQUssRUFBRSxFQUZFO0FBR1RDLGFBQU8sRUFBRSxJQUhBO0FBSVRDLFVBQUksRUFBRSxJQUpHO0FBS1RDLGFBQU8sRUFBRTtBQUNMQyxlQUFPLEVBQUUsRUFESjtBQUVMQyxZQUFJLEVBQUUsQ0FGRDtBQUdMQyxZQUFJLEVBQUUsQ0FIRDtBQUlMQyxhQUFLLEVBQUUsQ0FKRjtBQUtMQyxZQUFJLEVBQUU7QUFMRDtBQUxBLEtBQWI7QUFjQSxTQUFLQyxjQUFMLEdBQXNCLEtBQUtBLGNBQUwsQ0FBb0JDLElBQXBCLENBQXlCLElBQXpCLENBQXRCO0FB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QUNyQ3FGLGFBQU8sRUFBRSxLQUFLN0UsS0FBTCxDQUFXOEUsS0FEaUI7QUFFckNDLGtCQUFZLEVBQUUsS0FBS25FLGNBRmtCO0FBR3JDOEQsYUFBTyxFQUFFLEtBQUt6RSxLQUFMLENBQVdDLFFBSGlCO0FBSXJDOEUsY0FBUSxFQUFFLENBQ047QUFBQ04sZUFBTyxFQUFFLFFBQVY7QUFBb0JDLGFBQUssRUFBRXpDLDJEQUFPLENBQUN2QyxhQUFSLENBQXNCNEI7QUFBakQsT0FETSxFQUVOO0FBQUNtRCxlQUFPLEVBQUUsUUFBVjtBQUFvQkUsZUFBTyxFQUFFLE1BQU0sS0FBSzNDO0FBQXhDLE9BRk0sRUFHTjtBQUFDeUMsZUFBTyxFQUFFLFFBQVY7QUFBb0JDLGFBQUssRUFBRXpDLDJEQUFPLENBQUN2QyxhQUFSLENBQXNCeUU7QUFBakQsT0FITSxFQUlOLEdBQUdBLFVBSkcsRUFLTjtBQUFDTSxlQUFPLEVBQUU7QUFBVixPQUxNLEVBTU47QUFBQ0EsZUFBTyxFQUFFLFFBQVY7QUFBb0JDLGFBQUssRUFBRS9FLHlEQUFLLENBQUNtRCxhQUFOLENBQW9CLEdBQXBCLEVBQXlCO0FBQUNrQyxjQUFJLEVBQUUsNEJBQVA7QUFBcUN2RCxnQkFBTSxFQUFFO0FBQTdDLFNBQXpCLEVBQWlGLG9CQUFqRjtBQUEzQixPQU5NLEVBT047QUFBQ2dELGVBQU8sRUFBRTtBQUFWLE9BUE0sRUFRTjtBQUFDQSxlQUFPLEVBQUUsUUFBVjtBQUFvQkUsZUFBTyxFQUFFLE1BQU0sS0FBS2I7QUFBeEMsT0FSTSxDQUoyQjtBQWNyQ21CLFdBQUssRUFBRTtBQWQ4QixLQUFsQyxDQUFQO0FBZ0JIOztBQWxLc0QiLCJmaWxlIjoiLi9zcmMvdWkvcHVibGljc2VydmVycy9tZW51LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgV2VicGFja01vZHVsZXMsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBTZXR0aW5nc1RpdGxlIGZyb20gXCIuLi9zZXR0aW5ncy90aXRsZVwiO1xyXG5pbXBvcnQgU2VydmVyQ2FyZCBmcm9tIFwiLi9jYXJkXCI7XHJcbmltcG9ydCBDb25uZWN0aW9uIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL3BzY29ubmVjdGlvblwiO1xyXG5pbXBvcnQgU2VhcmNoIGZyb20gXCIuLi9zZXR0aW5ncy9jb21wb25lbnRzL3NlYXJjaFwiO1xyXG5cclxuY29uc3QgU2V0dGluZ3NWaWV3ID0gV2VicGFja01vZHVsZXMuZ2V0QnlEaXNwbGF5TmFtZShcIlNldHRpbmdzVmlld1wiKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFB1YmxpY1NlcnZlcnMgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG5cclxuICAgIGdldCBjYXRlZ29yeUJ1dHRvbnMoKSB7XHJcbiAgICAgICAgcmV0dXJuIFtcIkFsbFwiLCBcIkZQUyBHYW1lc1wiLCBcIk1NTyBHYW1lc1wiLCBcIlN0cmF0ZWd5IEdhbWVzXCIsIFwiTU9CQSBHYW1lc1wiLCBcIlJQRyBHYW1lc1wiLCBcIlRhYmxldG9wIEdhbWVzXCIsIFwiU2FuZGJveCBHYW1lc1wiLCBcIlNpbXVsYXRpb24gR2FtZXNcIiwgXCJNdXNpY1wiLCBcIkNvbW11bml0eVwiLCBcIkxhbmd1YWdlXCIsIFwiUHJvZ3JhbW1pbmdcIiwgXCJPdGhlclwiXTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICAgICAgICBjYXRlZ29yeTogXCJBbGxcIixcclxuICAgICAgICAgICAgcXVlcnk6IFwiXCIsXHJcbiAgICAgICAgICAgIGxvYWRpbmc6IHRydWUsXHJcbiAgICAgICAgICAgIHVzZXI6IG51bGwsXHJcbiAgICAgICAgICAgIHJlc3VsdHM6IHtcclxuICAgICAgICAgICAgICAgIHNlcnZlcnM6IFtdLFxyXG4gICAgICAgICAgICAgICAgc2l6ZTogMCxcclxuICAgICAgICAgICAgICAgIGZyb206IDAsXHJcbiAgICAgICAgICAgICAgICB0b3RhbDogMCxcclxuICAgICAgICAgICAgICAgIG5leHQ6IG51bGxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuY2hhbmdlQ2F0ZWdvcnkgPSB0aGlzLmNoYW5nZUNhdGVnb3J5LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hLZXlEb3duID0gdGhpcy5zZWFyY2hLZXlEb3duLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5jb25uZWN0ID0gdGhpcy5jb25uZWN0LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5sb2FkTmV4dFBhZ2UgPSB0aGlzLmxvYWROZXh0UGFnZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuam9pbiA9IHRoaXMuam9pbi5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgICAgIHRoaXMuY2hlY2tDb25uZWN0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2hlY2tDb25uZWN0aW9uKCkge1xyXG4gICAgICAgIGNvbnN0IHVzZXJEYXRhID0gYXdhaXQgQ29ubmVjdGlvbi5jaGVja0Nvbm5lY3Rpb24oKTtcclxuICAgICAgICBpZiAoIXVzZXJEYXRhKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFN0YXRlKHtsb2FkaW5nOiB0cnVlLCB1c2VyOiBudWxsfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe3VzZXI6IHVzZXJEYXRhfSk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2goKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjb25uZWN0KCkge1xyXG4gICAgICAgIGF3YWl0IENvbm5lY3Rpb24uY29ubmVjdCgpO1xyXG4gICAgICAgIHRoaXMuY2hlY2tDb25uZWN0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VhcmNoS2V5RG93bihlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUubG9hZGluZyB8fCBlLndoaWNoICE9PSAxMykgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoKGUudGFyZ2V0LnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzZWFyY2godGVybSA9IFwiXCIsIGZyb20gPSAwKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7cXVlcnk6IHRlcm0sIGxvYWRpbmc6IHRydWV9KTtcclxuICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgQ29ubmVjdGlvbi5zZWFyY2goe3Rlcm0sIGNhdGVnb3J5OiB0aGlzLnN0YXRlLmNhdGVnb3J5ID09IFwiQWxsXCIgPyBcIlwiIDogdGhpcy5zdGF0ZS5jYXRlZ29yeSwgZnJvbX0pO1xyXG4gICAgICAgIGlmICghcmVzdWx0cykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRTdGF0ZSh7cmVzdWx0czoge1xyXG4gICAgICAgICAgICAgICAgc2VydmVyczogW10sXHJcbiAgICAgICAgICAgICAgICBzaXplOiAwLFxyXG4gICAgICAgICAgICAgICAgZnJvbTogMCxcclxuICAgICAgICAgICAgICAgIHRvdGFsOiAwLFxyXG4gICAgICAgICAgICAgICAgbmV4dDogbnVsbFxyXG4gICAgICAgICAgICB9fSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2xvYWRpbmc6IGZhbHNlLCByZXN1bHRzfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2hhbmdlQ2F0ZWdvcnkoaWQpIHtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5sb2FkaW5nKSByZXR1cm47XHJcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB0aGlzLnNldFN0YXRlKHtjYXRlZ29yeTogaWR9LCByZXNvbHZlKSk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2goKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkTmV4dFBhZ2UoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUubG9hZGluZykgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoKHRoaXMuc3RhdGUucXVlcnksIHRoaXMuc3RhdGUucmVzdWx0cy5uZXh0KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBqb2luKGlkLCBuYXRpdmUgPSBmYWxzZSkge1xyXG4gICAgICAgIHJldHVybiBhd2FpdCBDb25uZWN0aW9uLmpvaW4oaWQsIG5hdGl2ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNlYXJjaEJveCgpIHtcclxuICAgICAgICByZXR1cm4gPFNlYXJjaCBvbktleURvd249e3RoaXMuc2VhcmNoS2V5RG93bn0gcGxhY2Vob2xkZXI9e2Ake1N0cmluZ3MuUHVibGljU2VydmVycy5zZWFyY2h9Li4uYH0gLz47XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHRpdGxlKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5zdGF0ZS51c2VyKSByZXR1cm4gU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLm5vdENvbm5lY3RlZDtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5sb2FkaW5nKSByZXR1cm4gYCR7U3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmxvYWRpbmd9Li4uYDtcclxuICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuc3RhdGUucmVzdWx0cy5mcm9tICsgMTtcclxuICAgICAgICBjb25zdCB0b3RhbCA9IHRoaXMuc3RhdGUucmVzdWx0cy50b3RhbDtcclxuICAgICAgICBjb25zdCBlbmQgPSB0aGlzLnN0YXRlLnJlc3VsdHMubmV4dCA/IHRoaXMuc3RhdGUucmVzdWx0cy5uZXh0IDogdG90YWw7XHJcbiAgICAgICAgbGV0IHRpdGxlID0gU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLnJlc3VsdHMuZm9ybWF0KHtzdGFydCwgZW5kLCB0b3RhbCwgY2F0ZWdvcnk6IHRoaXMuc3RhdGUuY2F0ZWdvcnl9KTtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5xdWVyeSkgdGl0bGUgKz0gXCIgXCIgKyBTdHJpbmdzLlB1YmxpY1NlcnZlcnMucXVlcnkuZm9ybWF0KHtxdWVyeTogdGhpcy5zdGF0ZS5xdWVyeX0pO1xyXG4gICAgICAgIHJldHVybiB0aXRsZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29udGVudCgpIHtcclxuICAgICAgICBjb25zdCBjb25uZWN0QnV0dG9uID0gdGhpcy5zdGF0ZS51c2VyID8gbnVsbCA6IHt0aXRsZTogU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmNvbm5lY3QsIG9uQ2xpY2s6IHRoaXMuY29ubmVjdH07XHJcbiAgICAgICAgY29uc3QgcGlubmVkID0gdGhpcy5zdGF0ZS5jYXRlZ29yeSA9PSBcIkFsbFwiIHx8ICF0aGlzLnN0YXRlLnVzZXIgPyB0aGlzLmJkU2VydmVyIDogbnVsbDtcclxuICAgICAgICBjb25zdCBzZXJ2ZXJzID0gdGhpcy5zdGF0ZS5yZXN1bHRzLnNlcnZlcnMubWFwKChzZXJ2ZXIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2VydmVyQ2FyZCwge2tleTogc2VydmVyLmlkZW50aWZpZXIsIHNlcnZlcjogc2VydmVyLCBqb2luZWQ6IENvbm5lY3Rpb24uaGFzSm9pbmVkKHNlcnZlci5pZGVudGlmaWVyKSwgam9pbjogdGhpcy5qb2luLCBkZWZhdWx0QXZhdGFyOiBDb25uZWN0aW9uLmdldERlZmF1bHRBdmF0YXJ9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gW1JlYWN0LmNyZWF0ZUVsZW1lbnQoU2V0dGluZ3NUaXRsZSwge3RleHQ6IHRoaXMudGl0bGUsIGJ1dHRvbjogY29ubmVjdEJ1dHRvbn0pLFxyXG4gICAgICAgICAgICBwaW5uZWQsXHJcbiAgICAgICAgICAgIHNlcnZlcnMsXHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGUucmVzdWx0cy5uZXh0ID8gdGhpcy5uZXh0QnV0dG9uIDogbnVsbCxcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZS5yZXN1bHRzLnNlcnZlcnMubGVuZ3RoID4gMCAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KFNldHRpbmdzVGl0bGUsIHt0ZXh0OiB0aGlzLnRpdGxlfSldO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBuZXh0QnV0dG9uKCkge1xyXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIHt0eXBlOiBcImJ1dHRvblwiLCBjbGFzc05hbWU6IFwiYmQtYnV0dG9uIGJkLWJ1dHRvbi1uZXh0XCIsIG9uQ2xpY2s6IHRoaXMubG9hZE5leHRQYWdlfSwgdGhpcy5zdGF0ZS5sb2FkaW5nID8gU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmxvYWRpbmcgOiBTdHJpbmdzLlB1YmxpY1NlcnZlcnMubG9hZE1vcmUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjb25uZWN0aW9uKCkge1xyXG4gICAgICAgIGNvbnN0IHt1c2VyfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgaWYgKCF1c2VyKSByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7aWQ6IFwiYmQtY29ubmVjdGlvblwifSk7XHJcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2lkOiBcImJkLWNvbm5lY3Rpb25cIn0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTogXCJiZC1mb290bm90ZVwifSwgU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmNvbm5lY3Rpb24uZm9ybWF0KHVzZXIpKSxcclxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCB7dHlwZTogXCJidXR0b25cIiwgY2xhc3NOYW1lOiBcImJkLWJ1dHRvbiBiZC1idXR0b24tcmVjb25uZWN0XCIsIG9uQ2xpY2s6IHRoaXMuY29ubmVjdH0sIFN0cmluZ3MuUHVibGljU2VydmVycy5yZWNvbm5lY3QpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYmRTZXJ2ZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2VydmVyID0ge1xyXG4gICAgICAgICAgICBuYW1lOiBcIkJldHRlckRpc2NvcmRcIixcclxuICAgICAgICAgICAgb25saW5lOiBcIjc1MDArXCIsXHJcbiAgICAgICAgICAgIG1lbWJlcnM6IFwiMjAwMDArXCIsXHJcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IFtcImNvbW11bml0eVwiLCBcInByb2dyYW1taW5nXCIsIFwic3VwcG9ydFwiXSxcclxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiT2ZmaWNpYWwgQmV0dGVyRGlzY29yZCBzZXJ2ZXIgZm9yIHBsdWdpbnMsIHRoZW1lcywgc3VwcG9ydCwgZXRjXCIsXHJcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IFwiODYwMDQ3NDQ5NjY5MTQwNDhcIixcclxuICAgICAgICAgICAgaWNvblVybDogXCJodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9pY29ucy84NjAwNDc0NDk2NjkxNDA0OC8yOTJlN2Y2YmZmZjJiNzFkZmQxM2U1MDhhODU5YWVkZC53ZWJwXCIsXHJcbiAgICAgICAgICAgIG5hdGl2ZWpvaW46IHRydWUsXHJcbiAgICAgICAgICAgIGludml0ZV9jb2RlOiBcIjBUbWZvNVpiT1JDUnFiQWRcIixcclxuICAgICAgICAgICAgcGlubmVkOiB0cnVlXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChTZXJ2ZXJDYXJkLCB7c2VydmVyOiBzZXJ2ZXIsIHBpbm5lZDogdHJ1ZSwgam9pbmVkOiBDb25uZWN0aW9uLmhhc0pvaW5lZChzZXJ2ZXIuaWRlbnRpZmllciksIGRlZmF1bHRBdmF0YXI6IENvbm5lY3Rpb24uZ2V0RGVmYXVsdEF2YXRhcn0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBjYXRlZ29yaWVzID0gdGhpcy5jYXRlZ29yeUJ1dHRvbnMubWFwKG5hbWUgPT4gKHtcclxuICAgICAgICAgICAgICAgIHNlY3Rpb246IG5hbWUsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogbmFtZSxcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQ6ICgpID0+IHRoaXMuY29udGVudFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2V0dGluZ3NWaWV3LCB7XHJcbiAgICAgICAgICAgIG9uQ2xvc2U6IHRoaXMucHJvcHMuY2xvc2UsXHJcbiAgICAgICAgICAgIG9uU2V0U2VjdGlvbjogdGhpcy5jaGFuZ2VDYXRlZ29yeSxcclxuICAgICAgICAgICAgc2VjdGlvbjogdGhpcy5zdGF0ZS5jYXRlZ29yeSxcclxuICAgICAgICAgICAgc2VjdGlvbnM6IFtcclxuICAgICAgICAgICAgICAgIHtzZWN0aW9uOiBcIkhFQURFUlwiLCBsYWJlbDogU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLnNlYXJjaH0sXHJcbiAgICAgICAgICAgICAgICB7c2VjdGlvbjogXCJDVVNUT01cIiwgZWxlbWVudDogKCkgPT4gdGhpcy5zZWFyY2hCb3h9LFxyXG4gICAgICAgICAgICAgICAge3NlY3Rpb246IFwiSEVBREVSXCIsIGxhYmVsOiBTdHJpbmdzLlB1YmxpY1NlcnZlcnMuY2F0ZWdvcmllc30sXHJcbiAgICAgICAgICAgICAgICAuLi5jYXRlZ29yaWVzLFxyXG4gICAgICAgICAgICAgICAge3NlY3Rpb246IFwiRElWSURFUlwifSxcclxuICAgICAgICAgICAgICAgIHtzZWN0aW9uOiBcIkhFQURFUlwiLCBsYWJlbDogUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwge2hyZWY6IFwiaHR0cHM6Ly9kaXNjb3Jkc2VydmVycy5jb21cIiwgdGFyZ2V0OiBcIl9ibGFua1wifSwgXCJEaXNjb3JkU2VydmVycy5jb21cIil9LFxyXG4gICAgICAgICAgICAgICAge3NlY3Rpb246IFwiRElWSURFUlwifSxcclxuICAgICAgICAgICAgICAgIHtzZWN0aW9uOiBcIkNVU1RPTVwiLCBlbGVtZW50OiAoKSA9PiB0aGlzLmNvbm5lY3Rpb259XHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIHRoZW1lOiBcImRhcmtcIlxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/publicservers/menu.js\n"); /***/ }), @@ -1006,7 +1006,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _settings_addonlist__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./settings/addonlist */ \"./src/ui/settings/addonlist.jsx\");\n/* harmony import */ var _settings_group__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./settings/group */ \"./src/ui/settings/group.jsx\");\n/* harmony import */ var _settings_title__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./settings/title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _settings_sidebarheader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./settings/sidebarheader */ \"./src/ui/settings/sidebarheader.jsx\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class SettingsRenderer {\n constructor() {\n this.patchSections();\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(\"strings-updated\", this.forceUpdate);\n }\n\n onDrawerToggle(collection, group, state) {\n const drawerStates = modules__WEBPACK_IMPORTED_MODULE_0__[\"DataStore\"].getBDData(\"drawerStates\") || {};\n if (!drawerStates[collection]) drawerStates[collection] = {};\n drawerStates[collection][group] = state;\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DataStore\"].setBDData(\"drawerStates\", drawerStates);\n }\n\n getDrawerState(collection, group, defaultValue) {\n const drawerStates = modules__WEBPACK_IMPORTED_MODULE_0__[\"DataStore\"].getBDData(\"drawerStates\") || {};\n if (!drawerStates[collection]) return defaultValue;\n if (!drawerStates[collection].hasOwnProperty(group)) return defaultValue;\n return drawerStates[collection][group];\n }\n\n onChange(onChange) {\n return (collection, category, id) => {\n const before = modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].collections.length + modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].panels.length;\n onChange(collection, category, id);\n const after = modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].collections.length + modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].panels.length;\n if (before != after) setTimeout(this.forceUpdate.bind(this), 50);\n };\n }\n\n buildSettingsPanel(id, title, config, state, onChange, button = null) {\n config.forEach(section => {\n section.settings.forEach(item => item.value = state[section.id][item.id]);\n });\n return this.getSettingsPanel(id, title, config, this.onChange(onChange), button);\n }\n\n getSettingsPanel(id, title, groups, onChange, button = null) {\n return [modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_title__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n text: title,\n button: button\n }), groups.map(section => {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_group__WEBPACK_IMPORTED_MODULE_2__[\"default\"], Object.assign({}, section, {\n onChange: onChange,\n onDrawerToggle: state => this.onDrawerToggle(id, section.id, state),\n shown: this.getDrawerState(id, section.id, section.hasOwnProperty(\"shown\") ? section.shown : true)\n }));\n })];\n }\n\n getAddonPanel(title, addonList, addonState, options = {}) {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_addonlist__WEBPACK_IMPORTED_MODULE_1__[\"default\"], Object.assign({}, {\n title: title,\n addonList: addonList,\n addonState: addonState\n }, options));\n }\n\n async patchSections() {\n const UserSettings = await modules__WEBPACK_IMPORTED_MODULE_0__[\"ReactComponents\"].get(\"UserSettings\", m => m.prototype && m.prototype.generateSections);\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Patcher\"].after(\"SettingsManager\", UserSettings.prototype, \"render\", thisObject => {\n thisObject._reactInternalFiber.return.return.return.return.return.return.return.memoizedProps.id = \"user-settings\";\n });\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Patcher\"].after(\"SettingsManager\", UserSettings.prototype, \"generateSections\", (thisObject, args, returnValue) => {\n let location = returnValue.findIndex(s => s.section.toLowerCase() == \"linux\") + 1;\n\n const insert = section => {\n returnValue.splice(location, 0, section);\n location++;\n };\n\n insert({\n section: \"DIVIDER\"\n }); // Header\n\n insert({\n section: \"CUSTOM\",\n element: _settings_sidebarheader__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n });\n\n for (const collection of modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].collections) {\n if (collection.disabled) continue;\n insert({\n section: collection.name,\n label: collection.name,\n element: () => this.buildSettingsPanel(collection.id, collection.name, collection.settings, modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].state[collection.id], modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].onSettingChange.bind(modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"], collection.id), collection.button ? collection.button : null)\n });\n }\n\n for (const panel of modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].panels.sort((a, b) => a.order > b.order)) {\n if (panel.clickListener) panel.onClick = event => panel.clickListener(thisObject, event, returnValue);\n insert(panel);\n }\n });\n this.forceUpdate();\n }\n\n forceUpdate() {\n const viewClass = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"standardSidebarView\").standardSidebarView.split(\" \")[0];\n const node = document.querySelector(`.${viewClass}`);\n if (!node) return;\n const stateNode = modules__WEBPACK_IMPORTED_MODULE_0__[\"Utilities\"].findInReactTree(modules__WEBPACK_IMPORTED_MODULE_0__[\"Utilities\"].getReactInstance(node), m => m && m.generateSections, {\n walkable: [\"return\", \"stateNode\"]\n });\n if (stateNode) stateNode.forceUpdate();\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MuanM/NzZiZSJdLCJuYW1lcyI6WyJTZXR0aW5nc1JlbmRlcmVyIiwiY29uc3RydWN0b3IiLCJwYXRjaFNlY3Rpb25zIiwiRXZlbnRzIiwib24iLCJmb3JjZVVwZGF0ZSIsIm9uRHJhd2VyVG9nZ2xlIiwiY29sbGVjdGlvbiIsImdyb3VwIiwic3RhdGUiLCJkcmF3ZXJTdGF0ZXMiLCJEYXRhU3RvcmUiLCJnZXRCRERhdGEiLCJzZXRCRERhdGEiLCJnZXREcmF3ZXJTdGF0ZSIsImRlZmF1bHRWYWx1ZSIsImhhc093blByb3BlcnR5Iiwib25DaGFuZ2UiLCJjYXRlZ29yeSIsImlkIiwiYmVmb3JlIiwiU2V0dGluZ3MiLCJjb2xsZWN0aW9ucyIsImxlbmd0aCIsInBhbmVscyIsImFmdGVyIiwic2V0VGltZW91dCIsImJpbmQiLCJidWlsZFNldHRpbmdzUGFuZWwiLCJ0aXRsZSIsImNvbmZpZyIsImJ1dHRvbiIsImZvckVhY2giLCJzZWN0aW9uIiwic2V0dGluZ3MiLCJpdGVtIiwidmFsdWUiLCJnZXRTZXR0aW5nc1BhbmVsIiwiZ3JvdXBzIiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiU2V0dGluZ3NUaXRsZSIsInRleHQiLCJtYXAiLCJTZXR0aW5nc0dyb3VwIiwiT2JqZWN0IiwiYXNzaWduIiwic2hvd24iLCJnZXRBZGRvblBhbmVsIiwiYWRkb25MaXN0IiwiYWRkb25TdGF0ZSIsIm9wdGlvbnMiLCJBZGRvbkxpc3QiLCJVc2VyU2V0dGluZ3MiLCJSZWFjdENvbXBvbmVudHMiLCJnZXQiLCJtIiwicHJvdG90eXBlIiwiZ2VuZXJhdGVTZWN0aW9ucyIsIlBhdGNoZXIiLCJ0aGlzT2JqZWN0IiwiX3JlYWN0SW50ZXJuYWxGaWJlciIsInJldHVybiIsIm1lbW9pemVkUHJvcHMiLCJhcmdzIiwicmV0dXJuVmFsdWUiLCJsb2NhdGlvbiIsImZpbmRJbmRleCIsInMiLCJ0b0xvd2VyQ2FzZSIsImluc2VydCIsInNwbGljZSIsImVsZW1lbnQiLCJIZWFkZXIiLCJkaXNhYmxlZCIsIm5hbWUiLCJsYWJlbCIsIm9uU2V0dGluZ0NoYW5nZSIsInBhbmVsIiwic29ydCIsImEiLCJiIiwib3JkZXIiLCJjbGlja0xpc3RlbmVyIiwib25DbGljayIsImV2ZW50Iiwidmlld0NsYXNzIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeVByb3BzIiwic3RhbmRhcmRTaWRlYmFyVmlldyIsInNwbGl0Iiwibm9kZSIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsInN0YXRlTm9kZSIsIlV0aWxpdGllcyIsImZpbmRJblJlYWN0VHJlZSIsImdldFJlYWN0SW5zdGFuY2UiLCJ3YWxrYWJsZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVlLG1FQUFJLE1BQU1BLGdCQUFOLENBQXVCO0FBRXRDQyxhQUFXLEdBQUc7QUFDVixTQUFLQyxhQUFMO0FBQ0FDLGtEQUFNLENBQUNDLEVBQVAsQ0FBVSxpQkFBVixFQUE2QixLQUFLQyxXQUFsQztBQUNIOztBQUVEQyxnQkFBYyxDQUFDQyxVQUFELEVBQWFDLEtBQWIsRUFBb0JDLEtBQXBCLEVBQTJCO0FBQ3JDLFVBQU1DLFlBQVksR0FBR0MsaURBQVMsQ0FBQ0MsU0FBVixDQUFvQixjQUFwQixLQUF1QyxFQUE1RDtBQUNBLFFBQUksQ0FBQ0YsWUFBWSxDQUFDSCxVQUFELENBQWpCLEVBQStCRyxZQUFZLENBQUNILFVBQUQsQ0FBWixHQUEyQixFQUEzQjtBQUMvQkcsZ0JBQVksQ0FBQ0gsVUFBRCxDQUFaLENBQXlCQyxLQUF6QixJQUFrQ0MsS0FBbEM7QUFDQUUscURBQVMsQ0FBQ0UsU0FBVixDQUFvQixjQUFwQixFQUFvQ0gsWUFBcEM7QUFDSDs7QUFFREksZ0JBQWMsQ0FBQ1AsVUFBRCxFQUFhQyxLQUFiLEVBQW9CTyxZQUFwQixFQUFrQztBQUM1QyxVQUFNTCxZQUFZLEdBQUdDLGlEQUFTLENBQUNDLFNBQVYsQ0FB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QUFELElBQVdQLEtBQUssQ0FBQ0ssYUFBTixDQUFvQnZCLFVBQXBCLEVBQWdDeUIsS0FBaEMsRUFBdUNwQixXQUF2QyxDQUEzQjtBQUN6QkssY0FBTSxDQUFDUSxLQUFELENBQU47QUFDSDtBQUNKLEtBckJEO0FBc0JBLFNBQUt6RSxXQUFMO0FBQ0g7O0FBRURBLGFBQVcsR0FBRztBQUNWLFVBQU1pRixTQUFTLEdBQUdDLHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIscUJBQTFCLEVBQWlEQyxtQkFBakQsQ0FBcUVDLEtBQXJFLENBQTJFLEdBQTNFLEVBQWdGLENBQWhGLENBQWxCO0FBQ0EsVUFBTUMsSUFBSSxHQUFHQyxRQUFRLENBQUNDLGFBQVQsQ0FBd0IsSUFBR1AsU0FBVSxFQUFyQyxDQUFiO0FBQ0EsUUFBSSxDQUFDSyxJQUFMLEVBQVc7QUFDWCxVQUFNRyxTQUFTLEdBQUdDLGlEQUFTLENBQUNDLGVBQVYsQ0FBMEJELGlEQUFTLENBQUNFLGdCQUFWLENBQTJCTixJQUEzQixDQUExQixFQUE0RG5DLENBQUMsSUFBSUEsQ0FBQyxJQUFJQSxDQUFDLENBQUNFLGdCQUF4RSxFQUEwRjtBQUFDd0MsY0FBUSxFQUFFLENBQUMsUUFBRCxFQUFXLFdBQVg7QUFBWCxLQUExRixDQUFsQjtBQUNBLFFBQUlKLFNBQUosRUFBZUEsU0FBUyxDQUFDekYsV0FBVjtBQUNsQjs7QUEzRnFDLENBQTNCLEVBQWYiLCJmaWxlIjoiLi9zcmMvdWkvc2V0dGluZ3MuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBXZWJwYWNrTW9kdWxlcywgUGF0Y2hlciwgUmVhY3RDb21wb25lbnRzLCBVdGlsaXRpZXMsIFNldHRpbmdzLCBFdmVudHMsIERhdGFTdG9yZX0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmltcG9ydCBBZGRvbkxpc3QgZnJvbSBcIi4vc2V0dGluZ3MvYWRkb25saXN0XCI7XHJcbmltcG9ydCBTZXR0aW5nc0dyb3VwIGZyb20gXCIuL3NldHRpbmdzL2dyb3VwXCI7XHJcbmltcG9ydCBTZXR0aW5nc1RpdGxlIGZyb20gXCIuL3NldHRpbmdzL3RpdGxlXCI7XHJcbmltcG9ydCBIZWFkZXIgZnJvbSBcIi4vc2V0dGluZ3Mvc2lkZWJhcmhlYWRlclwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIFNldHRpbmdzUmVuZGVyZXIge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMucGF0Y2hTZWN0aW9ucygpO1xyXG4gICAgICAgIEV2ZW50cy5vbihcInN0cmluZ3MtdXBkYXRlZFwiLCB0aGlzLmZvcmNlVXBkYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkRyYXdlclRvZ2dsZShjb2xsZWN0aW9uLCBncm91cCwgc3RhdGUpIHtcclxuICAgICAgICBjb25zdCBkcmF3ZXJTdGF0ZXMgPSBEYXRhU3RvcmUuZ2V0QkREYXRhKFwiZHJhd2VyU3RhdGVzXCIpIHx8IHt9O1xyXG4gICAgICAgIGlmICghZHJhd2VyU3RhdGVzW2NvbGxlY3Rpb25dKSBkcmF3ZXJTdGF0ZXNbY29sbGVjdGlvbl0gPSB7fTtcclxuICAgICAgICBkcmF3ZXJTdGF0ZXNbY29sbGVjdGlvbl1bZ3JvdXBdID0gc3RhdGU7XHJcbiAgICAgICAgRGF0YVN0b3JlLnNldEJERGF0YShcImRyYXdlclN0YXRlc1wiLCBkcmF3ZXJTdGF0ZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERyYXdlclN0YXRlKGNvbGxlY3Rpb24sIGdyb3VwLCBkZWZhdWx0VmFsdWUpIHtcclxuICAgICAgICBjb25zdCBkcmF3ZXJTdGF0ZXMgPSBEYXRhU3RvcmUuZ2V0QkREYXRhKFwiZHJhd2VyU3RhdGVzXCIpIHx8IHt9O1xyXG4gICAgICAgIGlmICghZHJhd2VyU3RhdGVzW2NvbGxlY3Rpb25dKSByZXR1cm4gZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIGlmICghZHJhd2VyU3RhdGVzW2NvbGxlY3Rpb25dLmhhc093blByb3BlcnR5KGdyb3VwKSkgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcclxuICAgICAgICByZXR1cm4gZHJhd2VyU3RhdGVzW2NvbGxlY3Rpb25dW2dyb3VwXTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNoYW5nZShvbkNoYW5nZSkge1xyXG4gICAgICAgIHJldHVybiAoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJlZm9yZSA9IFNldHRpbmdzLmNvbGxlY3Rpb25zLmxlbmd0aCArIFNldHRpbmdzLnBhbmVscy5sZW5ndGg7XHJcbiAgICAgICAgICAgIG9uQ2hhbmdlKGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGFmdGVyID0gU2V0dGluZ3MuY29sbGVjdGlvbnMubGVuZ3RoICsgU2V0dGluZ3MucGFuZWxzLmxlbmd0aDtcclxuICAgICAgICAgICAgaWYgKGJlZm9yZSAhPSBhZnRlcikgc2V0VGltZW91dCh0aGlzLmZvcmNlVXBkYXRlLmJpbmQodGhpcyksIDUwKTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGJ1aWxkU2V0dGluZ3NQYW5lbChpZCwgdGl0bGUsIGNvbmZpZywgc3RhdGUsIG9uQ2hhbmdlLCBidXR0b24gPSBudWxsKSB7XHJcbiAgICAgICAgY29uZmlnLmZvckVhY2goc2VjdGlvbiA9PiB7XHJcbiAgICAgICAgICAgIHNlY3Rpb24uc2V0dGluZ3MuZm9yRWFjaChpdGVtID0+IGl0ZW0udmFsdWUgPSBzdGF0ZVtzZWN0aW9uLmlkXVtpdGVtLmlkXSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U2V0dGluZ3NQYW5lbChpZCwgdGl0bGUsIGNvbmZpZywgdGhpcy5vbkNoYW5nZShvbkNoYW5nZSksIGJ1dHRvbik7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2V0dGluZ3NQYW5lbChpZCwgdGl0bGUsIGdyb3Vwcywgb25DaGFuZ2UsIGJ1dHRvbiA9IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gW1JlYWN0LmNyZWF0ZUVsZW1lbnQoU2V0dGluZ3NUaXRsZSwge3RleHQ6IHRpdGxlLCBidXR0b246IGJ1dHRvbn0pLCBncm91cHMubWFwKHNlY3Rpb24gPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChTZXR0aW5nc0dyb3VwLCBPYmplY3QuYXNzaWduKHt9LCBzZWN0aW9uLCB7XHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2UsXHJcbiAgICAgICAgICAgICAgICBvbkRyYXdlclRvZ2dsZTogc3RhdGUgPT4gdGhpcy5vbkRyYXdlclRvZ2dsZShpZCwgc2VjdGlvbi5pZCwgc3RhdGUpLFxyXG4gICAgICAgICAgICAgICAgc2hvd246IHRoaXMuZ2V0RHJhd2VyU3RhdGUoaWQsIHNlY3Rpb24uaWQsIHNlY3Rpb24uaGFzT3duUHJvcGVydHkoXCJzaG93blwiKSA/IHNlY3Rpb24uc2hvd24gOiB0cnVlKVxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSldO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFkZG9uUGFuZWwodGl0bGUsIGFkZG9uTGlzdCwgYWRkb25TdGF0ZSwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkb25MaXN0LCBPYmplY3QuYXNzaWduKHt9LCB7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICAgICAgYWRkb25MaXN0OiBhZGRvbkxpc3QsXHJcbiAgICAgICAgICAgIGFkZG9uU3RhdGU6IGFkZG9uU3RhdGVcclxuICAgICAgICB9LCBvcHRpb25zKSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgcGF0Y2hTZWN0aW9ucygpIHtcclxuICAgICAgICBjb25zdCBVc2VyU2V0dGluZ3MgPSBhd2FpdCBSZWFjdENvbXBvbmVudHMuZ2V0KFwiVXNlclNldHRpbmdzXCIsIG0gPT4gbS5wcm90b3R5cGUgJiYgbS5wcm90b3R5cGUuZ2VuZXJhdGVTZWN0aW9ucyk7XHJcbiAgICAgICAgUGF0Y2hlci5hZnRlcihcIlNldHRpbmdzTWFuYWdlclwiLCBVc2VyU2V0dGluZ3MucHJvdG90eXBlLCBcInJlbmRlclwiLCAodGhpc09iamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzT2JqZWN0Ll9yZWFjdEludGVybmFsRmliZXIucmV0dXJuLnJldHVybi5yZXR1cm4ucmV0dXJuLnJldHVybi5yZXR1cm4ucmV0dXJuLm1lbW9pemVkUHJvcHMuaWQgPSBcInVzZXItc2V0dGluZ3NcIjtcclxuICAgICAgICB9KTtcclxuICAgICAgICBQYXRjaGVyLmFmdGVyKFwiU2V0dGluZ3NNYW5hZ2VyXCIsIFVzZXJTZXR0aW5ncy5wcm90b3R5cGUsIFwiZ2VuZXJhdGVTZWN0aW9uc1wiLCAodGhpc09iamVjdCwgYXJncywgcmV0dXJuVmFsdWUpID0+IHtcclxuICAgICAgICAgICAgbGV0IGxvY2F0aW9uID0gcmV0dXJuVmFsdWUuZmluZEluZGV4KHMgPT4gcy5zZWN0aW9uLnRvTG93ZXJDYXNlKCkgPT0gXCJsaW51eFwiKSArIDE7XHJcbiAgICAgICAgICAgIGNvbnN0IGluc2VydCA9IChzZWN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZS5zcGxpY2UobG9jYXRpb24sIDAsIHNlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgbG9jYXRpb24rKztcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgaW5zZXJ0KHtzZWN0aW9uOiBcIkRJVklERVJcIn0pO1xyXG4gICAgICAgICAgICAvLyBIZWFkZXJcclxuICAgICAgICAgICAgaW5zZXJ0KHtzZWN0aW9uOiBcIkNVU1RPTVwiLCBlbGVtZW50OiBIZWFkZXJ9KTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBjb2xsZWN0aW9uIG9mIFNldHRpbmdzLmNvbGxlY3Rpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29sbGVjdGlvbi5kaXNhYmxlZCkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBpbnNlcnQoe1xyXG4gICAgICAgICAgICAgICAgICAgIHNlY3Rpb246IGNvbGxlY3Rpb24ubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogY29sbGVjdGlvbi5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6ICgpID0+IHRoaXMuYnVpbGRTZXR0aW5nc1BhbmVsKGNvbGxlY3Rpb24uaWQsIGNvbGxlY3Rpb24ubmFtZSwgY29sbGVjdGlvbi5zZXR0aW5ncywgU2V0dGluZ3Muc3RhdGVbY29sbGVjdGlvbi5pZF0sIFNldHRpbmdzLm9uU2V0dGluZ0NoYW5nZS5iaW5kKFNldHRpbmdzLCBjb2xsZWN0aW9uLmlkKSwgY29sbGVjdGlvbi5idXR0b24gPyBjb2xsZWN0aW9uLmJ1dHRvbiA6IG51bGwpXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBhbmVsIG9mIFNldHRpbmdzLnBhbmVscy5zb3J0KChhLGIpID0+IGEub3JkZXIgPiBiLm9yZGVyKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHBhbmVsLmNsaWNrTGlzdGVuZXIpIHBhbmVsLm9uQ2xpY2sgPSAoZXZlbnQpID0+IHBhbmVsLmNsaWNrTGlzdGVuZXIodGhpc09iamVjdCwgZXZlbnQsIHJldHVyblZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGluc2VydChwYW5lbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yY2VVcGRhdGUoKSB7XHJcbiAgICAgICAgY29uc3Qgdmlld0NsYXNzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInN0YW5kYXJkU2lkZWJhclZpZXdcIikuc3RhbmRhcmRTaWRlYmFyVmlldy5zcGxpdChcIiBcIilbMF07XHJcbiAgICAgICAgY29uc3Qgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke3ZpZXdDbGFzc31gKTtcclxuICAgICAgICBpZiAoIW5vZGUpIHJldHVybjtcclxuICAgICAgICBjb25zdCBzdGF0ZU5vZGUgPSBVdGlsaXRpZXMuZmluZEluUmVhY3RUcmVlKFV0aWxpdGllcy5nZXRSZWFjdEluc3RhbmNlKG5vZGUpLCBtID0+IG0gJiYgbS5nZW5lcmF0ZVNlY3Rpb25zLCB7d2Fsa2FibGU6IFtcInJldHVyblwiLCBcInN0YXRlTm9kZVwiXX0pO1xyXG4gICAgICAgIGlmIChzdGF0ZU5vZGUpIHN0YXRlTm9kZS5mb3JjZVVwZGF0ZSgpO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _settings_addonlist__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./settings/addonlist */ \"./src/ui/settings/addonlist.jsx\");\n/* harmony import */ var _settings_group__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./settings/group */ \"./src/ui/settings/group.jsx\");\n/* harmony import */ var _settings_title__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./settings/title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _settings_sidebarheader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./settings/sidebarheader */ \"./src/ui/settings/sidebarheader.jsx\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class SettingsRenderer {\n constructor() {\n this.patchSections();\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(\"strings-updated\", this.forceUpdate);\n }\n\n onDrawerToggle(collection, group, state) {\n const drawerStates = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"DataStore\"].getBDData(\"drawerStates\") || {};\n if (!drawerStates[collection]) drawerStates[collection] = {};\n drawerStates[collection][group] = state;\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"DataStore\"].setBDData(\"drawerStates\", drawerStates);\n }\n\n getDrawerState(collection, group, defaultValue) {\n const drawerStates = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"DataStore\"].getBDData(\"drawerStates\") || {};\n if (!drawerStates[collection]) return defaultValue;\n if (!drawerStates[collection].hasOwnProperty(group)) return defaultValue;\n return drawerStates[collection][group];\n }\n\n onChange(onChange) {\n return (collection, category, id) => {\n const before = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].collections.length + _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].panels.length;\n onChange(collection, category, id);\n const after = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].collections.length + _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].panels.length;\n if (before != after) setTimeout(this.forceUpdate.bind(this), 50);\n };\n }\n\n buildSettingsPanel(id, title, config, state, onChange, button = null) {\n config.forEach(section => {\n section.settings.forEach(item => item.value = state[section.id][item.id]);\n });\n return this.getSettingsPanel(id, title, config, this.onChange(onChange), button);\n }\n\n getSettingsPanel(id, title, groups, onChange, button = null) {\n return [_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_title__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n text: title,\n button: button\n }), groups.map(section => {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_group__WEBPACK_IMPORTED_MODULE_2__[\"default\"], Object.assign({}, section, {\n onChange: onChange,\n onDrawerToggle: state => this.onDrawerToggle(id, section.id, state),\n shown: this.getDrawerState(id, section.id, section.hasOwnProperty(\"shown\") ? section.shown : true)\n }));\n })];\n }\n\n getAddonPanel(title, addonList, addonState, options = {}) {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_addonlist__WEBPACK_IMPORTED_MODULE_1__[\"default\"], Object.assign({}, {\n title: title,\n addonList: addonList,\n addonState: addonState\n }, options));\n }\n\n async patchSections() {\n const UserSettings = await _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"ReactComponents\"].get(\"UserSettings\", m => m.prototype && m.prototype.generateSections);\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Patcher\"].after(\"SettingsManager\", UserSettings.prototype, \"render\", thisObject => {\n thisObject._reactInternalFiber.return.return.return.return.return.return.return.memoizedProps.id = \"user-settings\";\n });\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Patcher\"].after(\"SettingsManager\", UserSettings.prototype, \"generateSections\", (thisObject, args, returnValue) => {\n let location = returnValue.findIndex(s => s.section.toLowerCase() == \"linux\") + 1;\n\n const insert = section => {\n returnValue.splice(location, 0, section);\n location++;\n };\n\n insert({\n section: \"DIVIDER\"\n }); // Header\n\n insert({\n section: \"CUSTOM\",\n element: _settings_sidebarheader__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n });\n\n for (const collection of _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].collections) {\n if (collection.disabled) continue;\n insert({\n section: collection.name,\n label: collection.name,\n element: () => this.buildSettingsPanel(collection.id, collection.name, collection.settings, _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].state[collection.id], _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].onSettingChange.bind(_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"], collection.id), collection.button ? collection.button : null)\n });\n }\n\n for (const panel of _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].panels.sort((a, b) => a.order > b.order)) {\n if (panel.clickListener) panel.onClick = event => panel.clickListener(thisObject, event, returnValue);\n insert(panel);\n }\n });\n this.forceUpdate();\n }\n\n forceUpdate() {\n const viewClass = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"standardSidebarView\").standardSidebarView.split(\" \")[0];\n const node = document.querySelector(`.${viewClass}`);\n if (!node) return;\n const stateNode = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Utilities\"].findInReactTree(_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Utilities\"].getReactInstance(node), m => m && m.generateSections, {\n walkable: [\"return\", \"stateNode\"]\n });\n if (stateNode) stateNode.forceUpdate();\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MuanM/NzZiZSJdLCJuYW1lcyI6WyJTZXR0aW5nc1JlbmRlcmVyIiwiY29uc3RydWN0b3IiLCJwYXRjaFNlY3Rpb25zIiwiRXZlbnRzIiwib24iLCJmb3JjZVVwZGF0ZSIsIm9uRHJhd2VyVG9nZ2xlIiwiY29sbGVjdGlvbiIsImdyb3VwIiwic3RhdGUiLCJkcmF3ZXJTdGF0ZXMiLCJEYXRhU3RvcmUiLCJnZXRCRERhdGEiLCJzZXRCRERhdGEiLCJnZXREcmF3ZXJTdGF0ZSIsImRlZmF1bHRWYWx1ZSIsImhhc093blByb3BlcnR5Iiwib25DaGFuZ2UiLCJjYXRlZ29yeSIsImlkIiwiYmVmb3JlIiwiU2V0dGluZ3MiLCJjb2xsZWN0aW9ucyIsImxlbmd0aCIsInBhbmVscyIsImFmdGVyIiwic2V0VGltZW91dCIsImJpbmQiLCJidWlsZFNldHRpbmdzUGFuZWwiLCJ0aXRsZSIsImNvbmZpZyIsImJ1dHRvbiIsImZvckVhY2giLCJzZWN0aW9uIiwic2V0dGluZ3MiLCJpdGVtIiwidmFsdWUiLCJnZXRTZXR0aW5nc1BhbmVsIiwiZ3JvdXBzIiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiU2V0dGluZ3NUaXRsZSIsInRleHQiLCJtYXAiLCJTZXR0aW5nc0dyb3VwIiwiT2JqZWN0IiwiYXNzaWduIiwic2hvd24iLCJnZXRBZGRvblBhbmVsIiwiYWRkb25MaXN0IiwiYWRkb25TdGF0ZSIsIm9wdGlvbnMiLCJBZGRvbkxpc3QiLCJVc2VyU2V0dGluZ3MiLCJSZWFjdENvbXBvbmVudHMiLCJnZXQiLCJtIiwicHJvdG90eXBlIiwiZ2VuZXJhdGVTZWN0aW9ucyIsIlBhdGNoZXIiLCJ0aGlzT2JqZWN0IiwiX3JlYWN0SW50ZXJuYWxGaWJlciIsInJldHVybiIsIm1lbW9pemVkUHJvcHMiLCJhcmdzIiwicmV0dXJuVmFsdWUiLCJsb2NhdGlvbiIsImZpbmRJbmRleCIsInMiLCJ0b0xvd2VyQ2FzZSIsImluc2VydCIsInNwbGljZSIsImVsZW1lbnQiLCJIZWFkZXIiLCJkaXNhYmxlZCIsIm5hbWUiLCJsYWJlbCIsIm9uU2V0dGluZ0NoYW5nZSIsInBhbmVsIiwic29ydCIsImEiLCJiIiwib3JkZXIiLCJjbGlja0xpc3RlbmVyIiwib25DbGljayIsImV2ZW50Iiwidmlld0NsYXNzIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeVByb3BzIiwic3RhbmRhcmRTaWRlYmFyVmlldyIsInNwbGl0Iiwibm9kZSIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsInN0YXRlTm9kZSIsIlV0aWxpdGllcyIsImZpbmRJblJlYWN0VHJlZSIsImdldFJlYWN0SW5zdGFuY2UiLCJ3YWxrYWJsZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVlLG1FQUFJLE1BQU1BLGdCQUFOLENBQXVCO0FBRXRDQyxhQUFXLEdBQUc7QUFDVixTQUFLQyxhQUFMO0FBQ0FDLDhEQUFNLENBQUNDLEVBQVAsQ0FBVSxpQkFBVixFQUE2QixLQUFLQyxXQUFsQztBQUNIOztBQUVEQyxnQkFBYyxDQUFDQyxVQUFELEVBQWFDLEtBQWIsRUFBb0JDLEtBQXBCLEVBQTJCO0FBQ3JDLFVBQU1DLFlBQVksR0FBR0MsNkRBQVMsQ0FBQ0MsU0FBVixDQUFvQixjQUFwQixLQUF1QyxFQUE1RDtBQUNBLFFBQUksQ0FBQ0YsWUFBWSxDQUFDSCxVQUFELENBQWpCLEVBQStCRyxZQUFZLENBQUNILFVBQUQsQ0FBWixHQUEyQixFQUEzQjtBQUMvQkcsZ0JBQVksQ0FBQ0gsVUFBRCxDQUFaLENBQXlCQyxLQUF6QixJQUFrQ0MsS0FBbEM7QUFDQUUsaUVBQVMsQ0FBQ0UsU0FBVixDQUFvQixjQUFwQixFQUFvQ0gsWUFBcEM7QUFDSDs7QUFFREksZ0JBQWMsQ0FBQ1AsVUFBRCxFQUFhQyxLQUFiLEVBQW9CTyxZQUFwQixFQUFrQztBQUM1QyxVQUFNTCxZQUFZLEdBQUdDLDZEQUFTLENBQUNDLFNBQVYsQ0FB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QUFELElBQVdQLEtBQUssQ0FBQ0ssYUFBTixDQUFvQnZCLFVBQXBCLEVBQWdDeUIsS0FBaEMsRUFBdUNwQixXQUF2QyxDQUEzQjtBQUN6QkssY0FBTSxDQUFDUSxLQUFELENBQU47QUFDSDtBQUNKLEtBckJEO0FBc0JBLFNBQUt6RSxXQUFMO0FBQ0g7O0FBRURBLGFBQVcsR0FBRztBQUNWLFVBQU1pRixTQUFTLEdBQUdDLGtFQUFjLENBQUNDLFVBQWYsQ0FBMEIscUJBQTFCLEVBQWlEQyxtQkFBakQsQ0FBcUVDLEtBQXJFLENBQTJFLEdBQTNFLEVBQWdGLENBQWhGLENBQWxCO0FBQ0EsVUFBTUMsSUFBSSxHQUFHQyxRQUFRLENBQUNDLGFBQVQsQ0FBd0IsSUFBR1AsU0FBVSxFQUFyQyxDQUFiO0FBQ0EsUUFBSSxDQUFDSyxJQUFMLEVBQVc7QUFDWCxVQUFNRyxTQUFTLEdBQUdDLDZEQUFTLENBQUNDLGVBQVYsQ0FBMEJELDZEQUFTLENBQUNFLGdCQUFWLENBQTJCTixJQUEzQixDQUExQixFQUE0RG5DLENBQUMsSUFBSUEsQ0FBQyxJQUFJQSxDQUFDLENBQUNFLGdCQUF4RSxFQUEwRjtBQUFDd0MsY0FBUSxFQUFFLENBQUMsUUFBRCxFQUFXLFdBQVg7QUFBWCxLQUExRixDQUFsQjtBQUNBLFFBQUlKLFNBQUosRUFBZUEsU0FBUyxDQUFDekYsV0FBVjtBQUNsQjs7QUEzRnFDLENBQTNCLEVBQWYiLCJmaWxlIjoiLi9zcmMvdWkvc2V0dGluZ3MuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBXZWJwYWNrTW9kdWxlcywgUGF0Y2hlciwgUmVhY3RDb21wb25lbnRzLCBVdGlsaXRpZXMsIFNldHRpbmdzLCBFdmVudHMsIERhdGFTdG9yZX0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmltcG9ydCBBZGRvbkxpc3QgZnJvbSBcIi4vc2V0dGluZ3MvYWRkb25saXN0XCI7XHJcbmltcG9ydCBTZXR0aW5nc0dyb3VwIGZyb20gXCIuL3NldHRpbmdzL2dyb3VwXCI7XHJcbmltcG9ydCBTZXR0aW5nc1RpdGxlIGZyb20gXCIuL3NldHRpbmdzL3RpdGxlXCI7XHJcbmltcG9ydCBIZWFkZXIgZnJvbSBcIi4vc2V0dGluZ3Mvc2lkZWJhcmhlYWRlclwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIFNldHRpbmdzUmVuZGVyZXIge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMucGF0Y2hTZWN0aW9ucygpO1xyXG4gICAgICAgIEV2ZW50cy5vbihcInN0cmluZ3MtdXBkYXRlZFwiLCB0aGlzLmZvcmNlVXBkYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkRyYXdlclRvZ2dsZShjb2xsZWN0aW9uLCBncm91cCwgc3RhdGUpIHtcclxuICAgICAgICBjb25zdCBkcmF3ZXJTdGF0ZXMgPSBEYXRhU3RvcmUuZ2V0QkREYXRhKFwiZHJhd2VyU3RhdGVzXCIpIHx8IHt9O1xyXG4gICAgICAgIGlmICghZHJhd2VyU3RhdGVzW2NvbGxlY3Rpb25dKSBkcmF3ZXJTdGF0ZXNbY29sbGVjdGlvbl0gPSB7fTtcclxuICAgICAgICBkcmF3ZXJTdGF0ZXNbY29sbGVjdGlvbl1bZ3JvdXBdID0gc3RhdGU7XHJcbiAgICAgICAgRGF0YVN0b3JlLnNldEJERGF0YShcImRyYXdlclN0YXRlc1wiLCBkcmF3ZXJTdGF0ZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERyYXdlclN0YXRlKGNvbGxlY3Rpb24sIGdyb3VwLCBkZWZhdWx0VmFsdWUpIHtcclxuICAgICAgICBjb25zdCBkcmF3ZXJTdGF0ZXMgPSBEYXRhU3RvcmUuZ2V0QkREYXRhKFwiZHJhd2VyU3RhdGVzXCIpIHx8IHt9O1xyXG4gICAgICAgIGlmICghZHJhd2VyU3RhdGVzW2NvbGxlY3Rpb25dKSByZXR1cm4gZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIGlmICghZHJhd2VyU3RhdGVzW2NvbGxlY3Rpb25dLmhhc093blByb3BlcnR5KGdyb3VwKSkgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcclxuICAgICAgICByZXR1cm4gZHJhd2VyU3RhdGVzW2NvbGxlY3Rpb25dW2dyb3VwXTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNoYW5nZShvbkNoYW5nZSkge1xyXG4gICAgICAgIHJldHVybiAoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJlZm9yZSA9IFNldHRpbmdzLmNvbGxlY3Rpb25zLmxlbmd0aCArIFNldHRpbmdzLnBhbmVscy5sZW5ndGg7XHJcbiAgICAgICAgICAgIG9uQ2hhbmdlKGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGFmdGVyID0gU2V0dGluZ3MuY29sbGVjdGlvbnMubGVuZ3RoICsgU2V0dGluZ3MucGFuZWxzLmxlbmd0aDtcclxuICAgICAgICAgICAgaWYgKGJlZm9yZSAhPSBhZnRlcikgc2V0VGltZW91dCh0aGlzLmZvcmNlVXBkYXRlLmJpbmQodGhpcyksIDUwKTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGJ1aWxkU2V0dGluZ3NQYW5lbChpZCwgdGl0bGUsIGNvbmZpZywgc3RhdGUsIG9uQ2hhbmdlLCBidXR0b24gPSBudWxsKSB7XHJcbiAgICAgICAgY29uZmlnLmZvckVhY2goc2VjdGlvbiA9PiB7XHJcbiAgICAgICAgICAgIHNlY3Rpb24uc2V0dGluZ3MuZm9yRWFjaChpdGVtID0+IGl0ZW0udmFsdWUgPSBzdGF0ZVtzZWN0aW9uLmlkXVtpdGVtLmlkXSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U2V0dGluZ3NQYW5lbChpZCwgdGl0bGUsIGNvbmZpZywgdGhpcy5vbkNoYW5nZShvbkNoYW5nZSksIGJ1dHRvbik7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2V0dGluZ3NQYW5lbChpZCwgdGl0bGUsIGdyb3Vwcywgb25DaGFuZ2UsIGJ1dHRvbiA9IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gW1JlYWN0LmNyZWF0ZUVsZW1lbnQoU2V0dGluZ3NUaXRsZSwge3RleHQ6IHRpdGxlLCBidXR0b246IGJ1dHRvbn0pLCBncm91cHMubWFwKHNlY3Rpb24gPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChTZXR0aW5nc0dyb3VwLCBPYmplY3QuYXNzaWduKHt9LCBzZWN0aW9uLCB7XHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2UsXHJcbiAgICAgICAgICAgICAgICBvbkRyYXdlclRvZ2dsZTogc3RhdGUgPT4gdGhpcy5vbkRyYXdlclRvZ2dsZShpZCwgc2VjdGlvbi5pZCwgc3RhdGUpLFxyXG4gICAgICAgICAgICAgICAgc2hvd246IHRoaXMuZ2V0RHJhd2VyU3RhdGUoaWQsIHNlY3Rpb24uaWQsIHNlY3Rpb24uaGFzT3duUHJvcGVydHkoXCJzaG93blwiKSA/IHNlY3Rpb24uc2hvd24gOiB0cnVlKVxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSldO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFkZG9uUGFuZWwodGl0bGUsIGFkZG9uTGlzdCwgYWRkb25TdGF0ZSwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkb25MaXN0LCBPYmplY3QuYXNzaWduKHt9LCB7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICAgICAgYWRkb25MaXN0OiBhZGRvbkxpc3QsXHJcbiAgICAgICAgICAgIGFkZG9uU3RhdGU6IGFkZG9uU3RhdGVcclxuICAgICAgICB9LCBvcHRpb25zKSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgcGF0Y2hTZWN0aW9ucygpIHtcclxuICAgICAgICBjb25zdCBVc2VyU2V0dGluZ3MgPSBhd2FpdCBSZWFjdENvbXBvbmVudHMuZ2V0KFwiVXNlclNldHRpbmdzXCIsIG0gPT4gbS5wcm90b3R5cGUgJiYgbS5wcm90b3R5cGUuZ2VuZXJhdGVTZWN0aW9ucyk7XHJcbiAgICAgICAgUGF0Y2hlci5hZnRlcihcIlNldHRpbmdzTWFuYWdlclwiLCBVc2VyU2V0dGluZ3MucHJvdG90eXBlLCBcInJlbmRlclwiLCAodGhpc09iamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzT2JqZWN0Ll9yZWFjdEludGVybmFsRmliZXIucmV0dXJuLnJldHVybi5yZXR1cm4ucmV0dXJuLnJldHVybi5yZXR1cm4ucmV0dXJuLm1lbW9pemVkUHJvcHMuaWQgPSBcInVzZXItc2V0dGluZ3NcIjtcclxuICAgICAgICB9KTtcclxuICAgICAgICBQYXRjaGVyLmFmdGVyKFwiU2V0dGluZ3NNYW5hZ2VyXCIsIFVzZXJTZXR0aW5ncy5wcm90b3R5cGUsIFwiZ2VuZXJhdGVTZWN0aW9uc1wiLCAodGhpc09iamVjdCwgYXJncywgcmV0dXJuVmFsdWUpID0+IHtcclxuICAgICAgICAgICAgbGV0IGxvY2F0aW9uID0gcmV0dXJuVmFsdWUuZmluZEluZGV4KHMgPT4gcy5zZWN0aW9uLnRvTG93ZXJDYXNlKCkgPT0gXCJsaW51eFwiKSArIDE7XHJcbiAgICAgICAgICAgIGNvbnN0IGluc2VydCA9IChzZWN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZS5zcGxpY2UobG9jYXRpb24sIDAsIHNlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgbG9jYXRpb24rKztcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgaW5zZXJ0KHtzZWN0aW9uOiBcIkRJVklERVJcIn0pO1xyXG4gICAgICAgICAgICAvLyBIZWFkZXJcclxuICAgICAgICAgICAgaW5zZXJ0KHtzZWN0aW9uOiBcIkNVU1RPTVwiLCBlbGVtZW50OiBIZWFkZXJ9KTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBjb2xsZWN0aW9uIG9mIFNldHRpbmdzLmNvbGxlY3Rpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29sbGVjdGlvbi5kaXNhYmxlZCkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBpbnNlcnQoe1xyXG4gICAgICAgICAgICAgICAgICAgIHNlY3Rpb246IGNvbGxlY3Rpb24ubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogY29sbGVjdGlvbi5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6ICgpID0+IHRoaXMuYnVpbGRTZXR0aW5nc1BhbmVsKGNvbGxlY3Rpb24uaWQsIGNvbGxlY3Rpb24ubmFtZSwgY29sbGVjdGlvbi5zZXR0aW5ncywgU2V0dGluZ3Muc3RhdGVbY29sbGVjdGlvbi5pZF0sIFNldHRpbmdzLm9uU2V0dGluZ0NoYW5nZS5iaW5kKFNldHRpbmdzLCBjb2xsZWN0aW9uLmlkKSwgY29sbGVjdGlvbi5idXR0b24gPyBjb2xsZWN0aW9uLmJ1dHRvbiA6IG51bGwpXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBhbmVsIG9mIFNldHRpbmdzLnBhbmVscy5zb3J0KChhLGIpID0+IGEub3JkZXIgPiBiLm9yZGVyKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHBhbmVsLmNsaWNrTGlzdGVuZXIpIHBhbmVsLm9uQ2xpY2sgPSAoZXZlbnQpID0+IHBhbmVsLmNsaWNrTGlzdGVuZXIodGhpc09iamVjdCwgZXZlbnQsIHJldHVyblZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGluc2VydChwYW5lbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yY2VVcGRhdGUoKSB7XHJcbiAgICAgICAgY29uc3Qgdmlld0NsYXNzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInN0YW5kYXJkU2lkZWJhclZpZXdcIikuc3RhbmRhcmRTaWRlYmFyVmlldy5zcGxpdChcIiBcIilbMF07XHJcbiAgICAgICAgY29uc3Qgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke3ZpZXdDbGFzc31gKTtcclxuICAgICAgICBpZiAoIW5vZGUpIHJldHVybjtcclxuICAgICAgICBjb25zdCBzdGF0ZU5vZGUgPSBVdGlsaXRpZXMuZmluZEluUmVhY3RUcmVlKFV0aWxpdGllcy5nZXRSZWFjdEluc3RhbmNlKG5vZGUpLCBtID0+IG0gJiYgbS5nZW5lcmF0ZVNlY3Rpb25zLCB7d2Fsa2FibGU6IFtcInJldHVyblwiLCBcInN0YXRlTm9kZVwiXX0pO1xyXG4gICAgICAgIGlmIChzdGF0ZU5vZGUpIHN0YXRlTm9kZS5mb3JjZVVwZGF0ZSgpO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings.js\n"); /***/ }), @@ -1018,7 +1018,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var modu /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AddonCard; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_close__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../icons/close */ \"./src/ui/icons/close.jsx\");\n/* harmony import */ var _icons_reload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/reload */ \"./src/ui/icons/reload.jsx\");\n/* harmony import */ var _icons_edit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/edit */ \"./src/ui/icons/edit.jsx\");\n/* harmony import */ var _icons_delete__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons/delete */ \"./src/ui/icons/delete.jsx\");\n/* harmony import */ var _components_switch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/switch */ \"./src/ui/settings/components/switch.jsx\");\n/* harmony import */ var _errorboundary__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../errorboundary */ \"./src/ui/errorboundary.jsx\");\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\n\n\n\n\n\nconst Tooltip = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"Tooltip\");\nclass AddonCard extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n settingsOpen: false\n };\n this.settingsPanel = \"\";\n this.panelRef = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.onChange = this.onChange.bind(this);\n this.reload = this.reload.bind(this);\n this.showSettings = this.showSettings.bind(this);\n this.closeSettings = this.closeSettings.bind(this);\n }\n\n reload() {\n if (!this.props.reload) return;\n this.props.addon = this.props.reload(this.props.addon.id);\n this.forceUpdate();\n }\n\n componentDidUpdate() {\n if (!this.state.settingsOpen) return;\n if (this.settingsPanel instanceof Node) this.panelRef.current.appendChild(this.settingsPanel);\n setImmediate(() => {\n const isHidden = (container, element) => {\n const cTop = container.scrollTop;\n const cBottom = cTop + container.clientHeight;\n const eTop = element.offsetTop;\n const eBottom = eTop + element.clientHeight;\n return eTop < cTop || eBottom > cBottom;\n };\n\n const thisNode = this.panelRef.current;\n const container = thisNode.closest(\".scrollerBase-289Jih\");\n if (!container || !isHidden(container, thisNode)) return;\n const thisNodeOffset = modules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].offset(thisNode);\n const containerOffset = modules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].offset(container);\n const original = container.scrollTop;\n const endPoint = thisNodeOffset.top - containerOffset.top + container.scrollTop - 30;\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].animate({\n duration: 300,\n update: function (progress) {\n if (endPoint > original) container.scrollTop = original + progress * (endPoint - original);else container.scrollTop = original - progress * (original - endPoint);\n }\n });\n });\n }\n\n getString(value) {\n return typeof value == \"string\" ? value : value.toString();\n }\n\n onChange() {\n this.props.onChange && this.props.onChange(this.props.addon.id);\n this.props.enabled = !this.props.enabled;\n this.forceUpdate();\n }\n\n showSettings() {\n if (!this.props.hasSettings) return;\n this.setState({\n settingsOpen: true\n });\n }\n\n closeSettings() {\n if (this.settingsPanel instanceof Node) this.panelRef.current.innerHTML = \"\";\n this.setState({\n settingsOpen: false\n });\n }\n\n buildTitle(name, version, author) {\n const title = modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.title.split(/({{[A-Za-z]+}})/);\n const nameIndex = title.findIndex(s => s == \"{{name}}\");\n if (nameIndex) title[nameIndex] = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-name\"\n }, name);\n const versionIndex = title.findIndex(s => s == \"{{version}}\");\n if (nameIndex) title[versionIndex] = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-version\"\n }, version);\n const authorIndex = title.findIndex(s => s == \"{{author}}\");\n if (nameIndex) title[authorIndex] = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-author\"\n }, author);\n return title.flat();\n }\n\n get settingsComponent() {\n const addon = this.props.addon;\n const name = this.getString(addon.name);\n\n try {\n this.settingsPanel = this.props.getSettingsPanel();\n } catch (err) {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].stacktrace(\"Addon Settings\", \"Unable to get settings panel for \" + name + \".\", err);\n }\n\n const props = {\n id: `${name}-settings`,\n className: \"addon-settings\",\n ref: this.panelRef\n };\n\n if (typeof this.settingsPanel == \"string\") {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"Addon Settings\", \"Using a DOMString is officially deprecated.\");\n props.dangerouslySetInnerHTML = this.settingsPanel;\n }\n\n let child = null;\n if (typeof this.settingsPanel === \"function\") child = /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(this.settingsPanel, null);\n if (this.settingsPanel.$$typeof && this.settingsPanel.$$typeof === Symbol.for(\"react.element\")) child = this.settingsPanel;\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-addon-card settings-open bd-switch-item\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-close\",\n onClick: this.closeSettings\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_close__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null)), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", props, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_errorboundary__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, child)));\n }\n\n buildLink(which) {\n const url = this.props.addon[which];\n if (!url) return null;\n const link = /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"a\", {\n className: \"bd-link bd-link-website\",\n href: url,\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons[which]);\n\n if (which == \"invite\") {\n link.props.onClick = function (event) {\n event.preventDefault();\n event.stopPropagation();\n let code = url;\n const tester = /\\.gg\\/(.*)$/;\n if (tester.test(code)) code = code.match(tester)[1];\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DiscordModules\"].LayerStack.popLayer();\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DiscordModules\"].InviteActions.acceptInviteAndTransitionToInviteChannel(code);\n };\n }\n\n return link;\n }\n\n get footer() {\n const links = [\"website\", \"source\", \"invite\", \"donate\", \"patreon\"];\n if (!links.some(l => this.props.addon[l]) && !this.props.hasSettings) return null;\n const linkComponents = links.map(this.buildLink.bind(this)).filter(c => c);\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-footer\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-links\"\n }, linkComponents.map((comp, i) => i < linkComponents.length - 1 ? [comp, \" | \"] : comp).flat()), this.props.hasSettings && /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n onClick: this.showSettings,\n className: \"bd-button bd-button-addon-settings\",\n disabled: !this.props.enabled\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.addonSettings));\n }\n\n makeButton(title, children, action) {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: title\n }, props => {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", _extends({}, props, {\n className: \"bd-addon-button\",\n onClick: action\n }), children);\n });\n }\n\n render() {\n if (this.state.settingsOpen) return this.settingsComponent;\n const addon = this.props.addon;\n const name = this.getString(addon.name);\n const author = this.getString(addon.author);\n const description = this.getString(addon.description);\n const version = this.getString(addon.version);\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: `${addon.id}-card`,\n className: \"bd-addon-card settings-closed\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-addon-header\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-title\"\n }, this.buildTitle(name, version, author)), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-controls\"\n }, this.props.editAddon && this.makeButton(modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.editAddon, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_edit__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null), this.props.editAddon), this.props.deleteAddon && this.makeButton(modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.deleteAddon, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_delete__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null), this.props.deleteAddon), this.props.showReloadIcon && this.makeButton(modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.reload, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"bd-reload bd-reload-card\"\n }), this.reload), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_switch__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n checked: this.props.enabled,\n onChange: this.onChange\n }))), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-description-wrap scroller-wrap fade\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-description scroller\"\n }, description)), this.footer);\n }\n\n}\nconst originalRender = AddonCard.prototype.render;\nObject.defineProperty(AddonCard.prototype, \"render\", {\n enumerable: false,\n configurable: false,\n set: function () {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"AddonCard\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n },\n get: () => originalRender\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvYWRkb25jYXJkLmpzeD82MzczIl0sIm5hbWVzIjpbIlRvb2x0aXAiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5RGlzcGxheU5hbWUiLCJBZGRvbkNhcmQiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzdGF0ZSIsInNldHRpbmdzT3BlbiIsInNldHRpbmdzUGFuZWwiLCJwYW5lbFJlZiIsImNyZWF0ZVJlZiIsIm9uQ2hhbmdlIiwiYmluZCIsInJlbG9hZCIsInNob3dTZXR0aW5ncyIsImNsb3NlU2V0dGluZ3MiLCJhZGRvbiIsImlkIiwiZm9yY2VVcGRhdGUiLCJjb21wb25lbnREaWRVcGRhdGUiLCJOb2RlIiwiY3VycmVudCIsImFwcGVuZENoaWxkIiwic2V0SW1tZWRpYXRlIiwiaXNIaWRkZW4iLCJjb250YWluZXIiLCJlbGVtZW50IiwiY1RvcCIsInNjcm9sbFRvcCIsImNCb3R0b20iLCJjbGllbnRIZWlnaHQiLCJlVG9wIiwib2Zmc2V0VG9wIiwiZUJvdHRvbSIsInRoaXNOb2RlIiwiY2xvc2VzdCIsInRoaXNOb2RlT2Zmc2V0IiwiRE9NIiwib2Zmc2V0IiwiY29udGFpbmVyT2Zmc2V0Iiwib3JpZ2luYWwiLCJlbmRQb2ludCIsInRvcCIsImFuaW1hdGUiLCJkdXJhdGlvbiIsInVwZGF0ZSIsInByb2dyZXNzIiwiZ2V0U3RyaW5nIiwidmFsdWUiLCJ0b1N0cmluZyIsImVuYWJsZWQiLCJoYXNTZXR0aW5ncyIsInNldFN0YXRlIiwiaW5uZXJIVE1MIiwiYnVpbGRUaXRsZSIsIm5hbWUiLCJ2ZXJzaW9uIiwiYXV0aG9yIiwidGl0bGUiLCJTdHJpbmdzIiwiQWRkb25zIiwic3BsaXQiLCJuYW1lSW5kZXgiLCJmaW5kSW5kZXgiLCJzIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInZlcnNpb25JbmRleCIsImF1dGhvckluZGV4IiwiZmxhdCIsInNldHRpbmdzQ29tcG9uZW50IiwiZ2V0U2V0dGluZ3NQYW5lbCIsImVyciIsIkxvZ2dlciIsInN0YWNrdHJhY2UiLCJyZWYiLCJ3YXJuIiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJjaGlsZCIsIiQkdHlwZW9mIiwiU3ltYm9sIiwiZm9yIiwiYnVpbGRMaW5rIiwid2hpY2giLCJ1cmwiLCJsaW5rIiwib25DbGljayIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJjb2RlIiwidGVzdGVyIiwidGVzdCIsIm1hdGNoIiwiRGlzY29yZE1vZHVsZXMiLCJMYXllclN0YWNrIiwicG9wTGF5ZXIiLCJJbnZpdGVBY3Rpb25zIiwiYWNjZXB0SW52aXRlQW5kVHJhbnNpdGlvblRvSW52aXRlQ2hhbm5lbCIsImZvb3RlciIsImxpbmtzIiwic29tZSIsImwiLCJsaW5rQ29tcG9uZW50cyIsIm1hcCIsImZpbHRlciIsImMiLCJjb21wIiwiaSIsImxlbmd0aCIsImFkZG9uU2V0dGluZ3MiLCJtYWtlQnV0dG9uIiwiY2hpbGRyZW4iLCJhY3Rpb24iLCJyZW5kZXIiLCJkZXNjcmlwdGlvbiIsImVkaXRBZGRvbiIsImRlbGV0ZUFkZG9uIiwic2hvd1JlbG9hZEljb24iLCJvcmlnaW5hbFJlbmRlciIsInByb3RvdHlwZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsInNldCIsImdldCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLE9BQU8sR0FBR0Msc0RBQWMsQ0FBQ0MsZ0JBQWYsQ0FBZ0MsU0FBaEMsQ0FBaEI7QUFFZSxNQUFNQyxTQUFOLFNBQXdCQyw2Q0FBSyxDQUFDQyxTQUE5QixDQUF3QztBQUVuREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQ1RDLGtCQUFZLEVBQUU7QUFETCxLQUFiO0FBSUEs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UCxDQUFzQnpILFNBQVMsQ0FBQ3VILFNBQWhDLEVBQTJDLFFBQTNDLEVBQXFEO0FBQ2pERyxZQUFVLEVBQUUsS0FEcUM7QUFFakRDLGNBQVksRUFBRSxLQUZtQztBQUdqREMsS0FBRyxFQUFFLFlBQVc7QUFBQ3BELGtEQUFNLENBQUNHLElBQVAsQ0FBWSxXQUFaLEVBQXlCLHFHQUF6QjtBQUFpSSxHQUhqRztBQUlqRGtELEtBQUcsRUFBRSxNQUFNUDtBQUpzQyxDQUFyRCIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy9hZGRvbmNhcmQuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgTG9nZ2VyLCBTdHJpbmdzLCBXZWJwYWNrTW9kdWxlcywgRE9NLCBEaXNjb3JkTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IENsb3NlQnV0dG9uIGZyb20gXCIuLi9pY29ucy9jbG9zZVwiO1xyXG5pbXBvcnQgUmVsb2FkSWNvbiBmcm9tIFwiLi4vaWNvbnMvcmVsb2FkXCI7XHJcbmltcG9ydCBFZGl0SWNvbiBmcm9tIFwiLi4vaWNvbnMvZWRpdFwiO1xyXG5pbXBvcnQgRGVsZXRlSWNvbiBmcm9tIFwiLi4vaWNvbnMvZGVsZXRlXCI7XHJcbmltcG9ydCBTd2l0Y2ggZnJvbSBcIi4vY29tcG9uZW50cy9zd2l0Y2hcIjtcclxuaW1wb3J0IEVycm9yQm91bmRhcnkgZnJvbSAgXCIuLi9lcnJvcmJvdW5kYXJ5XCI7XHJcblxyXG5jb25zdCBUb29sdGlwID0gV2VicGFja01vZHVsZXMuZ2V0QnlEaXNwbGF5TmFtZShcIlRvb2x0aXBcIik7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBZGRvbkNhcmQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgICAgICAgIHNldHRpbmdzT3BlbjogZmFsc2VcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnNldHRpbmdzUGFuZWwgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMucGFuZWxSZWYgPSBSZWFjdC5jcmVhdGVSZWYoKTtcclxuXHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnJlbG9hZCA9IHRoaXMucmVsb2FkLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zaG93U2V0dGluZ3MgPSB0aGlzLnNob3dTZXR0aW5ncy5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuY2xvc2VTZXR0aW5ncyA9IHRoaXMuY2xvc2VTZXR0aW5ncy5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbG9hZCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMucHJvcHMucmVsb2FkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5wcm9wcy5hZGRvbiA9IHRoaXMucHJvcHMucmVsb2FkKHRoaXMucHJvcHMuYWRkb24uaWQpO1xyXG4gICAgICAgIHRoaXMuZm9yY2VVcGRhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnREaWRVcGRhdGUoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnN0YXRlLnNldHRpbmdzT3BlbikgcmV0dXJuO1xyXG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzUGFuZWwgaW5zdGFuY2VvZiBOb2RlKSB0aGlzLnBhbmVsUmVmLmN1cnJlbnQuYXBwZW5kQ2hpbGQodGhpcy5zZXR0aW5nc1BhbmVsKTtcclxuXHJcbiAgICAgICAgc2V0SW1tZWRpYXRlKCgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaXNIaWRkZW4gPSAoY29udGFpbmVyLCBlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjVG9wID0gY29udGFpbmVyLnNjcm9sbFRvcDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNCb3R0b20gPSBjVG9wICsgY29udGFpbmVyLmNsaWVudEhlaWdodDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVUb3AgPSBlbGVtZW50Lm9mZnNldFRvcDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVCb3R0b20gPSBlVG9wICsgZWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gIChlVG9wIDwgY1RvcCB8fCBlQm90dG9tID4gY0JvdHRvbSk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBjb25zdCB0aGlzTm9kZSA9IHRoaXMucGFuZWxSZWYuY3VycmVudDtcclxuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpc05vZGUuY2xvc2VzdChcIi5zY3JvbGxlckJhc2UtMjg5SmloXCIpO1xyXG4gICAgICAgICAgICBpZiAoIWNvbnRhaW5lciB8fCAhaXNIaWRkZW4oY29udGFpbmVyLCB0aGlzTm9kZSkpIHJldHVybjtcclxuICAgICAgICAgICAgY29uc3QgdGhpc05vZGVPZmZzZXQgPSBET00ub2Zmc2V0KHRoaXNOb2RlKTtcclxuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyT2Zmc2V0ID0gRE9NLm9mZnNldChjb250YWluZXIpO1xyXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XHJcbiAgICAgICAgICAgIGNvbnN0IGVuZFBvaW50ID0gdGhpc05vZGVPZmZzZXQudG9wIC0gY29udGFpbmVyT2Zmc2V0LnRvcCArIGNvbnRhaW5lci5zY3JvbGxUb3AgLSAzMDtcclxuICAgICAgICAgICAgRE9NLmFuaW1hdGUoe1xyXG4gICAgICAgICAgICAgICAgZHVyYXRpb246IDMwMCxcclxuICAgICAgICAgICAgICAgIHVwZGF0ZTogZnVuY3Rpb24ocHJvZ3Jlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZW5kUG9pbnQgPiBvcmlnaW5hbCkgY29udGFpbmVyLnNjcm9sbFRvcCA9IG9yaWdpbmFsICsgKHByb2dyZXNzICogKGVuZFBvaW50IC0gb3JpZ2luYWwpKTtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGNvbnRhaW5lci5zY3JvbGxUb3AgPSBvcmlnaW5hbCAtIChwcm9ncmVzcyAqIChvcmlnaW5hbCAtIGVuZFBvaW50KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFN0cmluZyh2YWx1ZSkge3JldHVybiB0eXBlb2YgdmFsdWUgPT0gXCJzdHJpbmdcIiA/IHZhbHVlIDogdmFsdWUudG9TdHJpbmcoKTt9XHJcblxyXG4gICAgb25DaGFuZ2UoKSB7XHJcbiAgICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZSAmJiB0aGlzLnByb3BzLm9uQ2hhbmdlKHRoaXMucHJvcHMuYWRkb24uaWQpO1xyXG4gICAgICAgIHRoaXMucHJvcHMuZW5hYmxlZCA9ICF0aGlzLnByb3BzLmVuYWJsZWQ7XHJcbiAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dTZXR0aW5ncygpIHtcclxuICAgICAgICBpZiAoIXRoaXMucHJvcHMuaGFzU2V0dGluZ3MpIHJldHVybjtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtzZXR0aW5nc09wZW46IHRydWV9KTtcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZVNldHRpbmdzKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzUGFuZWwgaW5zdGFuY2VvZiBOb2RlKSB0aGlzLnBhbmVsUmVmLmN1cnJlbnQuaW5uZXJIVE1MID0gXCJcIjtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtzZXR0aW5nc09wZW46IGZhbHNlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYnVpbGRUaXRsZShuYW1lLCB2ZXJzaW9uLCBhdXRob3IpIHtcclxuICAgICAgICBjb25zdCB0aXRsZSA9IFN0cmluZ3MuQWRkb25zLnRpdGxlLnNwbGl0KC8oe3tbQS1aYS16XSt9fSkvKTtcclxuICAgICAgICBjb25zdCBuYW1lSW5kZXggPSB0aXRsZS5maW5kSW5kZXgocyA9PiBzID09IFwie3tuYW1lfX1cIik7XHJcbiAgICAgICAgaWYgKG5hbWVJbmRleCkgdGl0bGVbbmFtZUluZGV4XSA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtjbGFzc05hbWU6IFwiYmQtbmFtZVwifSwgbmFtZSk7XHJcbiAgICAgICAgY29uc3QgdmVyc2lvbkluZGV4ID0gdGl0bGUuZmluZEluZGV4KHMgPT4gcyA9PSBcInt7dmVyc2lvbn19XCIpO1xyXG4gICAgICAgIGlmIChuYW1lSW5kZXgpIHRpdGxlW3ZlcnNpb25JbmRleF0gPSBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7Y2xhc3NOYW1lOiBcImJkLXZlcnNpb25cIn0sIHZlcnNpb24pO1xyXG4gICAgICAgIGNvbnN0IGF1dGhvckluZGV4ID0gdGl0bGUuZmluZEluZGV4KHMgPT4gcyA9PSBcInt7YXV0aG9yfX1cIik7XHJcbiAgICAgICAgaWYgKG5hbWVJbmRleCkgdGl0bGVbYXV0aG9ySW5kZXhdID0gUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge2NsYXNzTmFtZTogXCJiZC1hdXRob3JcIn0sIGF1dGhvcik7XHJcbiAgICAgICAgcmV0dXJuIHRpdGxlLmZsYXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgc2V0dGluZ3NDb21wb25lbnQoKSB7XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0aGlzLnByb3BzLmFkZG9uO1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldFN0cmluZyhhZGRvbi5uYW1lKTtcclxuICAgICAgICB0cnkgeyB0aGlzLnNldHRpbmdzUGFuZWwgPSB0aGlzLnByb3BzLmdldFNldHRpbmdzUGFuZWwoKTsgfVxyXG4gICAgICAgIGNhdGNoIChlcnIpIHsgTG9nZ2VyLnN0YWNrdHJhY2UoXCJBZGRvbiBTZXR0aW5nc1wiLCBcIlVuYWJsZSB0byBnZXQgc2V0dGluZ3MgcGFuZWwgZm9yIFwiICsgbmFtZSArIFwiLlwiLCBlcnIpOyB9XHJcblxyXG4gICAgICAgIGNvbnN0IHByb3BzID0ge2lkOiBgJHtuYW1lfS1zZXR0aW5nc2AsIGNsYXNzTmFtZTogXCJhZGRvbi1zZXR0aW5nc1wiLCByZWY6IHRoaXMucGFuZWxSZWZ9O1xyXG4gICAgICAgIGlmICh0eXBlb2YodGhpcy5zZXR0aW5nc1BhbmVsKSA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgIExvZ2dlci53YXJuKFwiQWRkb24gU2V0dGluZ3NcIiwgXCJVc2luZyBhIERPTVN0cmluZyBpcyBvZmZpY2lhbGx5IGRlcHJlY2F0ZWQuXCIpO1xyXG4gICAgICAgICAgICBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCA9IHRoaXMuc2V0dGluZ3NQYW5lbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBjaGlsZCA9IG51bGw7XHJcbiAgICAgICAgaWYgKHR5cGVvZih0aGlzLnNldHRpbmdzUGFuZWwpID09PSBcImZ1bmN0aW9uXCIpIGNoaWxkID0gPHRoaXMuc2V0dGluZ3NQYW5lbCAvPjtcclxuICAgICAgICBpZiAodGhpcy5zZXR0aW5nc1BhbmVsLiQkdHlwZW9mICYmIHRoaXMuc2V0dGluZ3NQYW5lbC4kJHR5cGVvZiA9PT0gU3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIikpIGNoaWxkID0gdGhpcy5zZXR0aW5nc1BhbmVsO1xyXG5cclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1hZGRvbi1jYXJkIHNldHRpbmdzLW9wZW4gYmQtc3dpdGNoLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLWNsb3NlXCIgb25DbGljaz17dGhpcy5jbG9zZVNldHRpbmdzfT48Q2xvc2VCdXR0b24gLz48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHsuLi5wcm9wc30+PEVycm9yQm91bmRhcnk+e2NoaWxkfTwvRXJyb3JCb3VuZGFyeT48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxuXHJcbiAgICBidWlsZExpbmsod2hpY2gpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLnByb3BzLmFkZG9uW3doaWNoXTtcclxuICAgICAgICBpZiAoIXVybCkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgY29uc3QgbGluayA9IDxhIGNsYXNzTmFtZT1cImJkLWxpbmsgYmQtbGluay13ZWJzaXRlXCIgaHJlZj17dXJsfSB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+e1N0cmluZ3MuQWRkb25zW3doaWNoXX08L2E+O1xyXG4gICAgICAgIGlmICh3aGljaCA9PSBcImludml0ZVwiKSB7XHJcbiAgICAgICAgICAgIGxpbmsucHJvcHMub25DbGljayA9IGZ1bmN0aW9uKGV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgY29kZSA9IHVybDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRlc3RlciA9IC9cXC5nZ1xcLyguKikkLztcclxuICAgICAgICAgICAgICAgIGlmICh0ZXN0ZXIudGVzdChjb2RlKSkgY29kZSA9IGNvZGUubWF0Y2godGVzdGVyKVsxXTtcclxuICAgICAgICAgICAgICAgIERpc2NvcmRNb2R1bGVzLkxheWVyU3RhY2sucG9wTGF5ZXIoKTtcclxuICAgICAgICAgICAgICAgIERpc2NvcmRNb2R1bGVzLkludml0ZUFjdGlvbnMuYWNjZXB0SW52aXRlQW5kVHJhbnNpdGlvblRvSW52aXRlQ2hhbm5lbChjb2RlKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGxpbms7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGZvb3RlcigpIHtcclxuICAgICAgICBjb25zdCBsaW5rcyA9IFtcIndlYnNpdGVcIiwgXCJzb3VyY2VcIiwgXCJpbnZpdGVcIiwgXCJkb25hdGVcIiwgXCJwYXRyZW9uXCJdO1xyXG4gICAgICAgIGlmICghbGlua3Muc29tZShsID0+IHRoaXMucHJvcHMuYWRkb25bbF0pICYmICF0aGlzLnByb3BzLmhhc1NldHRpbmdzKSByZXR1cm4gbnVsbDtcclxuICAgICAgICBjb25zdCBsaW5rQ29tcG9uZW50cyA9IGxpbmtzLm1hcCh0aGlzLmJ1aWxkTGluay5iaW5kKHRoaXMpKS5maWx0ZXIoYyA9PiBjKTtcclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1mb290ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJiZC1saW5rc1wiPntsaW5rQ29tcG9uZW50cy5tYXAoKGNvbXAsIGkpID0+IGkgPCBsaW5rQ29tcG9uZW50cy5sZW5ndGggLSAxID8gW2NvbXAsIFwiIHwgXCJdIDogY29tcCkuZmxhdCgpfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5oYXNTZXR0aW5ncyAmJiA8YnV0dG9uIG9uQ2xpY2s9e3RoaXMuc2hvd1NldHRpbmdzfSBjbGFzc05hbWU9XCJiZC1idXR0b24gYmQtYnV0dG9uLWFkZG9uLXNldHRpbmdzXCIgZGlzYWJsZWQ9eyF0aGlzLnByb3BzLmVuYWJsZWR9PntTdHJpbmdzLkFkZG9ucy5hZGRvblNldHRpbmdzfTwvYnV0dG9uPn1cclxuICAgICAgICAgICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxuXHJcbiAgICBtYWtlQnV0dG9uKHRpdGxlLCBjaGlsZHJlbiwgYWN0aW9uKSB7XHJcbiAgICAgICAgcmV0dXJuICA8VG9vbHRpcCBjb2xvcj1cImJsYWNrXCIgcG9zaXRpb249XCJ0b3BcIiB0ZXh0PXt0aXRsZX0+XHJcbiAgICAgICAgICAgICAgICAgICAgeyhwcm9wcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPGRpdiB7Li4ucHJvcHN9IGNsYXNzTmFtZT1cImJkLWFkZG9uLWJ1dHRvblwiIG9uQ2xpY2s9e2FjdGlvbn0+e2NoaWxkcmVufTwvZGl2PjtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPC9Ub29sdGlwPjtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuc2V0dGluZ3NPcGVuKSByZXR1cm4gdGhpcy5zZXR0aW5nc0NvbXBvbmVudDtcclxuXHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0aGlzLnByb3BzLmFkZG9uO1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldFN0cmluZyhhZGRvbi5uYW1lKTtcclxuICAgICAgICBjb25zdCBhdXRob3IgPSB0aGlzLmdldFN0cmluZyhhZGRvbi5hdXRob3IpO1xyXG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy5nZXRTdHJpbmcoYWRkb24uZGVzY3JpcHRpb24pO1xyXG4gICAgICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmdldFN0cmluZyhhZGRvbi52ZXJzaW9uKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIDxkaXYgaWQ9e2Ake2FkZG9uLmlkfS1jYXJkYH0gY2xhc3NOYW1lPVwiYmQtYWRkb24tY2FyZCBzZXR0aW5ncy1jbG9zZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLWFkZG9uLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYmQtdGl0bGVcIj57dGhpcy5idWlsZFRpdGxlKG5hbWUsIHZlcnNpb24sIGF1dGhvcil9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1jb250cm9sc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmVkaXRBZGRvbiAmJiB0aGlzLm1ha2VCdXR0b24oU3RyaW5ncy5BZGRvbnMuZWRpdEFkZG9uLCA8RWRpdEljb24gLz4sIHRoaXMucHJvcHMuZWRpdEFkZG9uKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5kZWxldGVBZGRvbiAmJiB0aGlzLm1ha2VCdXR0b24oU3RyaW5ncy5BZGRvbnMuZGVsZXRlQWRkb24sIDxEZWxldGVJY29uIC8+LCB0aGlzLnByb3BzLmRlbGV0ZUFkZG9uKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5zaG93UmVsb2FkSWNvbiAmJiB0aGlzLm1ha2VCdXR0b24oU3RyaW5ncy5BZGRvbnMucmVsb2FkLCA8UmVsb2FkSWNvbiBjbGFzc05hbWU9XCJiZC1yZWxvYWQgYmQtcmVsb2FkLWNhcmRcIiAvPiwgdGhpcy5yZWxvYWQpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2ggY2hlY2tlZD17dGhpcy5wcm9wcy5lbmFibGVkfSBvbkNoYW5nZT17dGhpcy5vbkNoYW5nZX0gLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtZGVzY3JpcHRpb24td3JhcCBzY3JvbGxlci13cmFwIGZhZGVcIj48ZGl2IGNsYXNzTmFtZT1cImJkLWRlc2NyaXB0aW9uIHNjcm9sbGVyXCI+e2Rlc2NyaXB0aW9ufTwvZGl2PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLmZvb3Rlcn1cclxuICAgICAgICAgICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxufVxyXG5cclxuY29uc3Qgb3JpZ2luYWxSZW5kZXIgPSBBZGRvbkNhcmQucHJvdG90eXBlLnJlbmRlcjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEFkZG9uQ2FyZC5wcm90b3R5cGUsIFwicmVuZGVyXCIsIHtcclxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcclxuICAgIHNldDogZnVuY3Rpb24oKSB7TG9nZ2VyLndhcm4oXCJBZGRvbkNhcmRcIiwgXCJBZGRvbiBwb2xpY3kgZm9yIHBsdWdpbnMgIzUgaHR0cHM6Ly9naXRodWIuY29tL3JhdWVuemkvQmV0dGVyRGlzY29yZEFwcC93aWtpL0FkZG9uLVBvbGljaWVzI3BsdWdpbnNcIik7fSxcclxuICAgIGdldDogKCkgPT4gb3JpZ2luYWxSZW5kZXJcclxufSk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/addoncard.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AddonCard; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_close__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../icons/close */ \"./src/ui/icons/close.jsx\");\n/* harmony import */ var _icons_reload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/reload */ \"./src/ui/icons/reload.jsx\");\n/* harmony import */ var _icons_edit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/edit */ \"./src/ui/icons/edit.jsx\");\n/* harmony import */ var _icons_delete__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons/delete */ \"./src/ui/icons/delete.jsx\");\n/* harmony import */ var _components_switch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/switch */ \"./src/ui/settings/components/switch.jsx\");\n/* harmony import */ var _errorboundary__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../errorboundary */ \"./src/ui/errorboundary.jsx\");\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\n\n\n\n\n\nconst Tooltip = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"Tooltip\");\nclass AddonCard extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n settingsOpen: false\n };\n this.settingsPanel = \"\";\n this.panelRef = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.onChange = this.onChange.bind(this);\n this.reload = this.reload.bind(this);\n this.showSettings = this.showSettings.bind(this);\n this.closeSettings = this.closeSettings.bind(this);\n }\n\n reload() {\n if (!this.props.reload) return;\n this.props.addon = this.props.reload(this.props.addon.id);\n this.forceUpdate();\n }\n\n componentDidUpdate() {\n if (!this.state.settingsOpen) return;\n if (this.settingsPanel instanceof Node) this.panelRef.current.appendChild(this.settingsPanel);\n setImmediate(() => {\n const isHidden = (container, element) => {\n const cTop = container.scrollTop;\n const cBottom = cTop + container.clientHeight;\n const eTop = element.offsetTop;\n const eBottom = eTop + element.clientHeight;\n return eTop < cTop || eBottom > cBottom;\n };\n\n const thisNode = this.panelRef.current;\n const container = thisNode.closest(\".scrollerBase-289Jih\");\n if (!container || !isHidden(container, thisNode)) return;\n const thisNodeOffset = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].offset(thisNode);\n const containerOffset = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].offset(container);\n const original = container.scrollTop;\n const endPoint = thisNodeOffset.top - containerOffset.top + container.scrollTop - 30;\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].animate({\n duration: 300,\n update: function (progress) {\n if (endPoint > original) container.scrollTop = original + progress * (endPoint - original);else container.scrollTop = original - progress * (original - endPoint);\n }\n });\n });\n }\n\n getString(value) {\n return typeof value == \"string\" ? value : value.toString();\n }\n\n onChange() {\n this.props.onChange && this.props.onChange(this.props.addon.id);\n this.props.enabled = !this.props.enabled;\n this.forceUpdate();\n }\n\n showSettings() {\n if (!this.props.hasSettings) return;\n this.setState({\n settingsOpen: true\n });\n }\n\n closeSettings() {\n if (this.settingsPanel instanceof Node) this.panelRef.current.innerHTML = \"\";\n this.setState({\n settingsOpen: false\n });\n }\n\n buildTitle(name, version, author) {\n const title = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.title.split(/({{[A-Za-z]+}})/);\n const nameIndex = title.findIndex(s => s == \"{{name}}\");\n if (nameIndex) title[nameIndex] = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-name\"\n }, name);\n const versionIndex = title.findIndex(s => s == \"{{version}}\");\n if (nameIndex) title[versionIndex] = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-version\"\n }, version);\n const authorIndex = title.findIndex(s => s == \"{{author}}\");\n if (nameIndex) title[authorIndex] = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-author\"\n }, author);\n return title.flat();\n }\n\n get settingsComponent() {\n const addon = this.props.addon;\n const name = this.getString(addon.name);\n\n try {\n this.settingsPanel = this.props.getSettingsPanel();\n } catch (err) {\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].stacktrace(\"Addon Settings\", \"Unable to get settings panel for \" + name + \".\", err);\n }\n\n const props = {\n id: `${name}-settings`,\n className: \"addon-settings\",\n ref: this.panelRef\n };\n\n if (typeof this.settingsPanel == \"string\") {\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"Addon Settings\", \"Using a DOMString is officially deprecated.\");\n props.dangerouslySetInnerHTML = this.settingsPanel;\n }\n\n let child = null;\n if (typeof this.settingsPanel === \"function\") child = /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(this.settingsPanel, null);\n if (this.settingsPanel.$$typeof && this.settingsPanel.$$typeof === Symbol.for(\"react.element\")) child = this.settingsPanel;\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-addon-card settings-open bd-switch-item\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-close\",\n onClick: this.closeSettings\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_close__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null)), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", props, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_errorboundary__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, child)));\n }\n\n buildLink(which) {\n const url = this.props.addon[which];\n if (!url) return null;\n const link = /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"a\", {\n className: \"bd-link bd-link-website\",\n href: url,\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n }, _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons[which]);\n\n if (which == \"invite\") {\n link.props.onClick = function (event) {\n event.preventDefault();\n event.stopPropagation();\n let code = url;\n const tester = /\\.gg\\/(.*)$/;\n if (tester.test(code)) code = code.match(tester)[1];\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"DiscordModules\"].LayerStack.popLayer();\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"DiscordModules\"].InviteActions.acceptInviteAndTransitionToInviteChannel(code);\n };\n }\n\n return link;\n }\n\n get footer() {\n const links = [\"website\", \"source\", \"invite\", \"donate\", \"patreon\"];\n if (!links.some(l => this.props.addon[l]) && !this.props.hasSettings) return null;\n const linkComponents = links.map(this.buildLink.bind(this)).filter(c => c);\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-footer\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-links\"\n }, linkComponents.map((comp, i) => i < linkComponents.length - 1 ? [comp, \" | \"] : comp).flat()), this.props.hasSettings && /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n onClick: this.showSettings,\n className: \"bd-button bd-button-addon-settings\",\n disabled: !this.props.enabled\n }, _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.addonSettings));\n }\n\n makeButton(title, children, action) {\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: title\n }, props => {\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", _extends({}, props, {\n className: \"bd-addon-button\",\n onClick: action\n }), children);\n });\n }\n\n render() {\n if (this.state.settingsOpen) return this.settingsComponent;\n const addon = this.props.addon;\n const name = this.getString(addon.name);\n const author = this.getString(addon.author);\n const description = this.getString(addon.description);\n const version = this.getString(addon.version);\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: `${addon.id}-card`,\n className: \"bd-addon-card settings-closed\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-addon-header\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-title\"\n }, this.buildTitle(name, version, author)), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-controls\"\n }, this.props.editAddon && this.makeButton(_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.editAddon, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_edit__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null), this.props.editAddon), this.props.deleteAddon && this.makeButton(_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.deleteAddon, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_delete__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null), this.props.deleteAddon), this.props.showReloadIcon && this.makeButton(_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.reload, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"bd-reload bd-reload-card\"\n }), this.reload), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_switch__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n checked: this.props.enabled,\n onChange: this.onChange\n }))), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-description-wrap scroller-wrap fade\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-description scroller\"\n }, description)), this.footer);\n }\n\n}\nconst originalRender = AddonCard.prototype.render;\nObject.defineProperty(AddonCard.prototype, \"render\", {\n enumerable: false,\n configurable: false,\n set: function () {\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"AddonCard\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n },\n get: () => originalRender\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvYWRkb25jYXJkLmpzeD82MzczIl0sIm5hbWVzIjpbIlRvb2x0aXAiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5RGlzcGxheU5hbWUiLCJBZGRvbkNhcmQiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzdGF0ZSIsInNldHRpbmdzT3BlbiIsInNldHRpbmdzUGFuZWwiLCJwYW5lbFJlZiIsImNyZWF0ZVJlZiIsIm9uQ2hhbmdlIiwiYmluZCIsInJlbG9hZCIsInNob3dTZXR0aW5ncyIsImNsb3NlU2V0dGluZ3MiLCJhZGRvbiIsImlkIiwiZm9yY2VVcGRhdGUiLCJjb21wb25lbnREaWRVcGRhdGUiLCJOb2RlIiwiY3VycmVudCIsImFwcGVuZENoaWxkIiwic2V0SW1tZWRpYXRlIiwiaXNIaWRkZW4iLCJjb250YWluZXIiLCJlbGVtZW50IiwiY1RvcCIsInNjcm9sbFRvcCIsImNCb3R0b20iLCJjbGllbnRIZWlnaHQiLCJlVG9wIiwib2Zmc2V0VG9wIiwiZUJvdHRvbSIsInRoaXNOb2RlIiwiY2xvc2VzdCIsInRoaXNOb2RlT2Zmc2V0IiwiRE9NIiwib2Zmc2V0IiwiY29udGFpbmVyT2Zmc2V0Iiwib3JpZ2luYWwiLCJlbmRQb2ludCIsInRvcCIsImFuaW1hdGUiLCJkdXJhdGlvbiIsInVwZGF0ZSIsInByb2dyZXNzIiwiZ2V0U3RyaW5nIiwidmFsdWUiLCJ0b1N0cmluZyIsImVuYWJsZWQiLCJoYXNTZXR0aW5ncyIsInNldFN0YXRlIiwiaW5uZXJIVE1MIiwiYnVpbGRUaXRsZSIsIm5hbWUiLCJ2ZXJzaW9uIiwiYXV0aG9yIiwidGl0bGUiLCJTdHJpbmdzIiwiQWRkb25zIiwic3BsaXQiLCJuYW1lSW5kZXgiLCJmaW5kSW5kZXgiLCJzIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInZlcnNpb25JbmRleCIsImF1dGhvckluZGV4IiwiZmxhdCIsInNldHRpbmdzQ29tcG9uZW50IiwiZ2V0U2V0dGluZ3NQYW5lbCIsImVyciIsIkxvZ2dlciIsInN0YWNrdHJhY2UiLCJyZWYiLCJ3YXJuIiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJjaGlsZCIsIiQkdHlwZW9mIiwiU3ltYm9sIiwiZm9yIiwiYnVpbGRMaW5rIiwid2hpY2giLCJ1cmwiLCJsaW5rIiwib25DbGljayIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJjb2RlIiwidGVzdGVyIiwidGVzdCIsIm1hdGNoIiwiRGlzY29yZE1vZHVsZXMiLCJMYXllclN0YWNrIiwicG9wTGF5ZXIiLCJJbnZpdGVBY3Rpb25zIiwiYWNjZXB0SW52aXRlQW5kVHJhbnNpdGlvblRvSW52aXRlQ2hhbm5lbCIsImZvb3RlciIsImxpbmtzIiwic29tZSIsImwiLCJsaW5rQ29tcG9uZW50cyIsIm1hcCIsImZpbHRlciIsImMiLCJjb21wIiwiaSIsImxlbmd0aCIsImFkZG9uU2V0dGluZ3MiLCJtYWtlQnV0dG9uIiwiY2hpbGRyZW4iLCJhY3Rpb24iLCJyZW5kZXIiLCJkZXNjcmlwdGlvbiIsImVkaXRBZGRvbiIsImRlbGV0ZUFkZG9uIiwic2hvd1JlbG9hZEljb24iLCJvcmlnaW5hbFJlbmRlciIsInByb3RvdHlwZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsInNldCIsImdldCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLE9BQU8sR0FBR0Msa0VBQWMsQ0FBQ0MsZ0JBQWYsQ0FBZ0MsU0FBaEMsQ0FBaEI7QUFFZSxNQUFNQyxTQUFOLFNBQXdCQyx5REFBSyxDQUFDQyxTQUE5QixDQUF3QztBQUVuREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQ1RDLGtCQUFZLEVBQUU7QUFETCxLQUFiO0FBSUEs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UCxDQUFzQnpILFNBQVMsQ0FBQ3VILFNBQWhDLEVBQTJDLFFBQTNDLEVBQXFEO0FBQ2pERyxZQUFVLEVBQUUsS0FEcUM7QUFFakRDLGNBQVksRUFBRSxLQUZtQztBQUdqREMsS0FBRyxFQUFFLFlBQVc7QUFBQ3BELDhEQUFNLENBQUNHLElBQVAsQ0FBWSxXQUFaLEVBQXlCLHFHQUF6QjtBQUFpSSxHQUhqRztBQUlqRGtELEtBQUcsRUFBRSxNQUFNUDtBQUpzQyxDQUFyRCIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy9hZGRvbmNhcmQuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgTG9nZ2VyLCBTdHJpbmdzLCBXZWJwYWNrTW9kdWxlcywgRE9NLCBEaXNjb3JkTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IENsb3NlQnV0dG9uIGZyb20gXCIuLi9pY29ucy9jbG9zZVwiO1xyXG5pbXBvcnQgUmVsb2FkSWNvbiBmcm9tIFwiLi4vaWNvbnMvcmVsb2FkXCI7XHJcbmltcG9ydCBFZGl0SWNvbiBmcm9tIFwiLi4vaWNvbnMvZWRpdFwiO1xyXG5pbXBvcnQgRGVsZXRlSWNvbiBmcm9tIFwiLi4vaWNvbnMvZGVsZXRlXCI7XHJcbmltcG9ydCBTd2l0Y2ggZnJvbSBcIi4vY29tcG9uZW50cy9zd2l0Y2hcIjtcclxuaW1wb3J0IEVycm9yQm91bmRhcnkgZnJvbSAgXCIuLi9lcnJvcmJvdW5kYXJ5XCI7XHJcblxyXG5jb25zdCBUb29sdGlwID0gV2VicGFja01vZHVsZXMuZ2V0QnlEaXNwbGF5TmFtZShcIlRvb2x0aXBcIik7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBZGRvbkNhcmQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgICAgICAgIHNldHRpbmdzT3BlbjogZmFsc2VcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnNldHRpbmdzUGFuZWwgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMucGFuZWxSZWYgPSBSZWFjdC5jcmVhdGVSZWYoKTtcclxuXHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnJlbG9hZCA9IHRoaXMucmVsb2FkLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zaG93U2V0dGluZ3MgPSB0aGlzLnNob3dTZXR0aW5ncy5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuY2xvc2VTZXR0aW5ncyA9IHRoaXMuY2xvc2VTZXR0aW5ncy5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbG9hZCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMucHJvcHMucmVsb2FkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5wcm9wcy5hZGRvbiA9IHRoaXMucHJvcHMucmVsb2FkKHRoaXMucHJvcHMuYWRkb24uaWQpO1xyXG4gICAgICAgIHRoaXMuZm9yY2VVcGRhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnREaWRVcGRhdGUoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnN0YXRlLnNldHRpbmdzT3BlbikgcmV0dXJuO1xyXG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzUGFuZWwgaW5zdGFuY2VvZiBOb2RlKSB0aGlzLnBhbmVsUmVmLmN1cnJlbnQuYXBwZW5kQ2hpbGQodGhpcy5zZXR0aW5nc1BhbmVsKTtcclxuXHJcbiAgICAgICAgc2V0SW1tZWRpYXRlKCgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaXNIaWRkZW4gPSAoY29udGFpbmVyLCBlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjVG9wID0gY29udGFpbmVyLnNjcm9sbFRvcDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNCb3R0b20gPSBjVG9wICsgY29udGFpbmVyLmNsaWVudEhlaWdodDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVUb3AgPSBlbGVtZW50Lm9mZnNldFRvcDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVCb3R0b20gPSBlVG9wICsgZWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gIChlVG9wIDwgY1RvcCB8fCBlQm90dG9tID4gY0JvdHRvbSk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBjb25zdCB0aGlzTm9kZSA9IHRoaXMucGFuZWxSZWYuY3VycmVudDtcclxuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpc05vZGUuY2xvc2VzdChcIi5zY3JvbGxlckJhc2UtMjg5SmloXCIpO1xyXG4gICAgICAgICAgICBpZiAoIWNvbnRhaW5lciB8fCAhaXNIaWRkZW4oY29udGFpbmVyLCB0aGlzTm9kZSkpIHJldHVybjtcclxuICAgICAgICAgICAgY29uc3QgdGhpc05vZGVPZmZzZXQgPSBET00ub2Zmc2V0KHRoaXNOb2RlKTtcclxuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyT2Zmc2V0ID0gRE9NLm9mZnNldChjb250YWluZXIpO1xyXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XHJcbiAgICAgICAgICAgIGNvbnN0IGVuZFBvaW50ID0gdGhpc05vZGVPZmZzZXQudG9wIC0gY29udGFpbmVyT2Zmc2V0LnRvcCArIGNvbnRhaW5lci5zY3JvbGxUb3AgLSAzMDtcclxuICAgICAgICAgICAgRE9NLmFuaW1hdGUoe1xyXG4gICAgICAgICAgICAgICAgZHVyYXRpb246IDMwMCxcclxuICAgICAgICAgICAgICAgIHVwZGF0ZTogZnVuY3Rpb24ocHJvZ3Jlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZW5kUG9pbnQgPiBvcmlnaW5hbCkgY29udGFpbmVyLnNjcm9sbFRvcCA9IG9yaWdpbmFsICsgKHByb2dyZXNzICogKGVuZFBvaW50IC0gb3JpZ2luYWwpKTtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGNvbnRhaW5lci5zY3JvbGxUb3AgPSBvcmlnaW5hbCAtIChwcm9ncmVzcyAqIChvcmlnaW5hbCAtIGVuZFBvaW50KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFN0cmluZyh2YWx1ZSkge3JldHVybiB0eXBlb2YgdmFsdWUgPT0gXCJzdHJpbmdcIiA/IHZhbHVlIDogdmFsdWUudG9TdHJpbmcoKTt9XHJcblxyXG4gICAgb25DaGFuZ2UoKSB7XHJcbiAgICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZSAmJiB0aGlzLnByb3BzLm9uQ2hhbmdlKHRoaXMucHJvcHMuYWRkb24uaWQpO1xyXG4gICAgICAgIHRoaXMucHJvcHMuZW5hYmxlZCA9ICF0aGlzLnByb3BzLmVuYWJsZWQ7XHJcbiAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dTZXR0aW5ncygpIHtcclxuICAgICAgICBpZiAoIXRoaXMucHJvcHMuaGFzU2V0dGluZ3MpIHJldHVybjtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtzZXR0aW5nc09wZW46IHRydWV9KTtcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZVNldHRpbmdzKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzUGFuZWwgaW5zdGFuY2VvZiBOb2RlKSB0aGlzLnBhbmVsUmVmLmN1cnJlbnQuaW5uZXJIVE1MID0gXCJcIjtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtzZXR0aW5nc09wZW46IGZhbHNlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYnVpbGRUaXRsZShuYW1lLCB2ZXJzaW9uLCBhdXRob3IpIHtcclxuICAgICAgICBjb25zdCB0aXRsZSA9IFN0cmluZ3MuQWRkb25zLnRpdGxlLnNwbGl0KC8oe3tbQS1aYS16XSt9fSkvKTtcclxuICAgICAgICBjb25zdCBuYW1lSW5kZXggPSB0aXRsZS5maW5kSW5kZXgocyA9PiBzID09IFwie3tuYW1lfX1cIik7XHJcbiAgICAgICAgaWYgKG5hbWVJbmRleCkgdGl0bGVbbmFtZUluZGV4XSA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtjbGFzc05hbWU6IFwiYmQtbmFtZVwifSwgbmFtZSk7XHJcbiAgICAgICAgY29uc3QgdmVyc2lvbkluZGV4ID0gdGl0bGUuZmluZEluZGV4KHMgPT4gcyA9PSBcInt7dmVyc2lvbn19XCIpO1xyXG4gICAgICAgIGlmIChuYW1lSW5kZXgpIHRpdGxlW3ZlcnNpb25JbmRleF0gPSBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7Y2xhc3NOYW1lOiBcImJkLXZlcnNpb25cIn0sIHZlcnNpb24pO1xyXG4gICAgICAgIGNvbnN0IGF1dGhvckluZGV4ID0gdGl0bGUuZmluZEluZGV4KHMgPT4gcyA9PSBcInt7YXV0aG9yfX1cIik7XHJcbiAgICAgICAgaWYgKG5hbWVJbmRleCkgdGl0bGVbYXV0aG9ySW5kZXhdID0gUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge2NsYXNzTmFtZTogXCJiZC1hdXRob3JcIn0sIGF1dGhvcik7XHJcbiAgICAgICAgcmV0dXJuIHRpdGxlLmZsYXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgc2V0dGluZ3NDb21wb25lbnQoKSB7XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0aGlzLnByb3BzLmFkZG9uO1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldFN0cmluZyhhZGRvbi5uYW1lKTtcclxuICAgICAgICB0cnkgeyB0aGlzLnNldHRpbmdzUGFuZWwgPSB0aGlzLnByb3BzLmdldFNldHRpbmdzUGFuZWwoKTsgfVxyXG4gICAgICAgIGNhdGNoIChlcnIpIHsgTG9nZ2VyLnN0YWNrdHJhY2UoXCJBZGRvbiBTZXR0aW5nc1wiLCBcIlVuYWJsZSB0byBnZXQgc2V0dGluZ3MgcGFuZWwgZm9yIFwiICsgbmFtZSArIFwiLlwiLCBlcnIpOyB9XHJcblxyXG4gICAgICAgIGNvbnN0IHByb3BzID0ge2lkOiBgJHtuYW1lfS1zZXR0aW5nc2AsIGNsYXNzTmFtZTogXCJhZGRvbi1zZXR0aW5nc1wiLCByZWY6IHRoaXMucGFuZWxSZWZ9O1xyXG4gICAgICAgIGlmICh0eXBlb2YodGhpcy5zZXR0aW5nc1BhbmVsKSA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgIExvZ2dlci53YXJuKFwiQWRkb24gU2V0dGluZ3NcIiwgXCJVc2luZyBhIERPTVN0cmluZyBpcyBvZmZpY2lhbGx5IGRlcHJlY2F0ZWQuXCIpO1xyXG4gICAgICAgICAgICBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCA9IHRoaXMuc2V0dGluZ3NQYW5lbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBjaGlsZCA9IG51bGw7XHJcbiAgICAgICAgaWYgKHR5cGVvZih0aGlzLnNldHRpbmdzUGFuZWwpID09PSBcImZ1bmN0aW9uXCIpIGNoaWxkID0gPHRoaXMuc2V0dGluZ3NQYW5lbCAvPjtcclxuICAgICAgICBpZiAodGhpcy5zZXR0aW5nc1BhbmVsLiQkdHlwZW9mICYmIHRoaXMuc2V0dGluZ3NQYW5lbC4kJHR5cGVvZiA9PT0gU3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIikpIGNoaWxkID0gdGhpcy5zZXR0aW5nc1BhbmVsO1xyXG5cclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1hZGRvbi1jYXJkIHNldHRpbmdzLW9wZW4gYmQtc3dpdGNoLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLWNsb3NlXCIgb25DbGljaz17dGhpcy5jbG9zZVNldHRpbmdzfT48Q2xvc2VCdXR0b24gLz48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHsuLi5wcm9wc30+PEVycm9yQm91bmRhcnk+e2NoaWxkfTwvRXJyb3JCb3VuZGFyeT48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxuXHJcbiAgICBidWlsZExpbmsod2hpY2gpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLnByb3BzLmFkZG9uW3doaWNoXTtcclxuICAgICAgICBpZiAoIXVybCkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgY29uc3QgbGluayA9IDxhIGNsYXNzTmFtZT1cImJkLWxpbmsgYmQtbGluay13ZWJzaXRlXCIgaHJlZj17dXJsfSB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+e1N0cmluZ3MuQWRkb25zW3doaWNoXX08L2E+O1xyXG4gICAgICAgIGlmICh3aGljaCA9PSBcImludml0ZVwiKSB7XHJcbiAgICAgICAgICAgIGxpbmsucHJvcHMub25DbGljayA9IGZ1bmN0aW9uKGV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgY29kZSA9IHVybDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRlc3RlciA9IC9cXC5nZ1xcLyguKikkLztcclxuICAgICAgICAgICAgICAgIGlmICh0ZXN0ZXIudGVzdChjb2RlKSkgY29kZSA9IGNvZGUubWF0Y2godGVzdGVyKVsxXTtcclxuICAgICAgICAgICAgICAgIERpc2NvcmRNb2R1bGVzLkxheWVyU3RhY2sucG9wTGF5ZXIoKTtcclxuICAgICAgICAgICAgICAgIERpc2NvcmRNb2R1bGVzLkludml0ZUFjdGlvbnMuYWNjZXB0SW52aXRlQW5kVHJhbnNpdGlvblRvSW52aXRlQ2hhbm5lbChjb2RlKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGxpbms7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGZvb3RlcigpIHtcclxuICAgICAgICBjb25zdCBsaW5rcyA9IFtcIndlYnNpdGVcIiwgXCJzb3VyY2VcIiwgXCJpbnZpdGVcIiwgXCJkb25hdGVcIiwgXCJwYXRyZW9uXCJdO1xyXG4gICAgICAgIGlmICghbGlua3Muc29tZShsID0+IHRoaXMucHJvcHMuYWRkb25bbF0pICYmICF0aGlzLnByb3BzLmhhc1NldHRpbmdzKSByZXR1cm4gbnVsbDtcclxuICAgICAgICBjb25zdCBsaW5rQ29tcG9uZW50cyA9IGxpbmtzLm1hcCh0aGlzLmJ1aWxkTGluay5iaW5kKHRoaXMpKS5maWx0ZXIoYyA9PiBjKTtcclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1mb290ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJiZC1saW5rc1wiPntsaW5rQ29tcG9uZW50cy5tYXAoKGNvbXAsIGkpID0+IGkgPCBsaW5rQ29tcG9uZW50cy5sZW5ndGggLSAxID8gW2NvbXAsIFwiIHwgXCJdIDogY29tcCkuZmxhdCgpfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5oYXNTZXR0aW5ncyAmJiA8YnV0dG9uIG9uQ2xpY2s9e3RoaXMuc2hvd1NldHRpbmdzfSBjbGFzc05hbWU9XCJiZC1idXR0b24gYmQtYnV0dG9uLWFkZG9uLXNldHRpbmdzXCIgZGlzYWJsZWQ9eyF0aGlzLnByb3BzLmVuYWJsZWR9PntTdHJpbmdzLkFkZG9ucy5hZGRvblNldHRpbmdzfTwvYnV0dG9uPn1cclxuICAgICAgICAgICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxuXHJcbiAgICBtYWtlQnV0dG9uKHRpdGxlLCBjaGlsZHJlbiwgYWN0aW9uKSB7XHJcbiAgICAgICAgcmV0dXJuICA8VG9vbHRpcCBjb2xvcj1cImJsYWNrXCIgcG9zaXRpb249XCJ0b3BcIiB0ZXh0PXt0aXRsZX0+XHJcbiAgICAgICAgICAgICAgICAgICAgeyhwcm9wcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPGRpdiB7Li4ucHJvcHN9IGNsYXNzTmFtZT1cImJkLWFkZG9uLWJ1dHRvblwiIG9uQ2xpY2s9e2FjdGlvbn0+e2NoaWxkcmVufTwvZGl2PjtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPC9Ub29sdGlwPjtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuc2V0dGluZ3NPcGVuKSByZXR1cm4gdGhpcy5zZXR0aW5nc0NvbXBvbmVudDtcclxuXHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0aGlzLnByb3BzLmFkZG9uO1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldFN0cmluZyhhZGRvbi5uYW1lKTtcclxuICAgICAgICBjb25zdCBhdXRob3IgPSB0aGlzLmdldFN0cmluZyhhZGRvbi5hdXRob3IpO1xyXG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy5nZXRTdHJpbmcoYWRkb24uZGVzY3JpcHRpb24pO1xyXG4gICAgICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmdldFN0cmluZyhhZGRvbi52ZXJzaW9uKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIDxkaXYgaWQ9e2Ake2FkZG9uLmlkfS1jYXJkYH0gY2xhc3NOYW1lPVwiYmQtYWRkb24tY2FyZCBzZXR0aW5ncy1jbG9zZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLWFkZG9uLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYmQtdGl0bGVcIj57dGhpcy5idWlsZFRpdGxlKG5hbWUsIHZlcnNpb24sIGF1dGhvcil9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1jb250cm9sc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmVkaXRBZGRvbiAmJiB0aGlzLm1ha2VCdXR0b24oU3RyaW5ncy5BZGRvbnMuZWRpdEFkZG9uLCA8RWRpdEljb24gLz4sIHRoaXMucHJvcHMuZWRpdEFkZG9uKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5kZWxldGVBZGRvbiAmJiB0aGlzLm1ha2VCdXR0b24oU3RyaW5ncy5BZGRvbnMuZGVsZXRlQWRkb24sIDxEZWxldGVJY29uIC8+LCB0aGlzLnByb3BzLmRlbGV0ZUFkZG9uKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5zaG93UmVsb2FkSWNvbiAmJiB0aGlzLm1ha2VCdXR0b24oU3RyaW5ncy5BZGRvbnMucmVsb2FkLCA8UmVsb2FkSWNvbiBjbGFzc05hbWU9XCJiZC1yZWxvYWQgYmQtcmVsb2FkLWNhcmRcIiAvPiwgdGhpcy5yZWxvYWQpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2ggY2hlY2tlZD17dGhpcy5wcm9wcy5lbmFibGVkfSBvbkNoYW5nZT17dGhpcy5vbkNoYW5nZX0gLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtZGVzY3JpcHRpb24td3JhcCBzY3JvbGxlci13cmFwIGZhZGVcIj48ZGl2IGNsYXNzTmFtZT1cImJkLWRlc2NyaXB0aW9uIHNjcm9sbGVyXCI+e2Rlc2NyaXB0aW9ufTwvZGl2PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLmZvb3Rlcn1cclxuICAgICAgICAgICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxufVxyXG5cclxuY29uc3Qgb3JpZ2luYWxSZW5kZXIgPSBBZGRvbkNhcmQucHJvdG90eXBlLnJlbmRlcjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEFkZG9uQ2FyZC5wcm90b3R5cGUsIFwicmVuZGVyXCIsIHtcclxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcclxuICAgIHNldDogZnVuY3Rpb24oKSB7TG9nZ2VyLndhcm4oXCJBZGRvbkNhcmRcIiwgXCJBZGRvbiBwb2xpY3kgZm9yIHBsdWdpbnMgIzUgaHR0cHM6Ly9naXRodWIuY29tL3JhdWVuemkvQmV0dGVyRGlzY29yZEFwcC93aWtpL0FkZG9uLVBvbGljaWVzI3BsdWdpbnNcIik7fSxcclxuICAgIGdldDogKCkgPT4gb3JpZ2luYWxSZW5kZXJcclxufSk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/addoncard.jsx\n"); /***/ }), @@ -1030,7 +1030,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AddonList; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _modals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _icons_reload__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/reload */ \"./src/ui/icons/reload.jsx\");\n/* harmony import */ var _addoncard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./addoncard */ \"./src/ui/settings/addoncard.jsx\");\n/* harmony import */ var _components_dropdown__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/dropdown */ \"./src/ui/settings/components/dropdown.jsx\");\n/* harmony import */ var _components_search__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/search */ \"./src/ui/settings/components/search.jsx\");\n/* harmony import */ var _errorboundary__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../errorboundary */ \"./src/ui/errorboundary.jsx\");\n\n\n\n\n\n\n\n\nclass AddonList extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n sort: \"name\",\n ascending: true,\n query: \"\"\n };\n this.sort = this.sort.bind(this);\n this.reverse = this.reverse.bind(this);\n this.search = this.search.bind(this);\n this.update = this.update.bind(this);\n }\n\n componentDidMount() {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(`${this.props.prefix}-loaded`, this.update);\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(`${this.props.prefix}-unloaded`, this.update);\n }\n\n componentWillUnmount() {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].off(`${this.props.prefix}-loaded`, this.update);\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].off(`${this.props.prefix}-unloaded`, this.update);\n }\n\n update() {\n this.forceUpdate();\n }\n\n reload() {\n if (this.props.refreshList) this.props.refreshList();\n this.forceUpdate();\n }\n\n reverse(value) {\n this.setState({\n ascending: value\n });\n }\n\n sort(value) {\n this.setState({\n sort: value\n });\n }\n\n search(event) {\n this.setState({\n query: event.target.value.toLocaleLowerCase()\n });\n }\n\n get sortOptions() {\n return [{\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.name,\n value: \"name\"\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.author,\n value: \"author\"\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.version,\n value: \"version\"\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.added,\n value: \"added\"\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.modified,\n value: \"modified\"\n }];\n }\n\n get directions() {\n return [{\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.ascending,\n value: true\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.descending,\n value: false\n }];\n }\n\n render() {\n const {\n title,\n folder,\n addonList,\n addonState,\n onChange,\n reload\n } = this.props;\n const showReloadIcon = !modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"settings\", \"addons\", \"autoReload\");\n const button = folder ? {\n title: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.openFolder.format({\n type: title\n }),\n onClick: () => {\n const shell = __webpack_require__(/*! electron */ \"electron\").shell;\n\n const open = shell.openItem || shell.openPath;\n open(folder);\n }\n } : null;\n const sortedAddons = addonList.sort((a, b) => {\n const first = a[this.state.sort];\n const second = b[this.state.sort];\n if (typeof first == \"string\") return first.toLocaleLowerCase().localeCompare(second.toLocaleLowerCase());\n if (first > second) return 1;\n if (second > first) return -1;\n return 0;\n });\n if (!this.state.ascending) sortedAddons.reverse();\n return [/*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_title__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n key: \"title\",\n text: title,\n button: button,\n otherChildren: showReloadIcon && /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"bd-reload\",\n onClick: this.reload.bind(this)\n })\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-controls bd-addon-controls\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_search__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n onChange: this.search,\n placeholder: `${modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.search.format({\n type: this.props.title\n })}...`\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-addon-dropdowns\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-wrapper\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"label\", {\n className: \"bd-label\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.sortBy, \":\"), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_dropdown__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n options: this.sortOptions,\n onChange: this.sort,\n style: \"transparent\"\n })), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-wrapper\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"label\", {\n className: \"bd-label\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.order, \":\"), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_dropdown__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n options: this.directions,\n onChange: this.reverse,\n style: \"transparent\"\n })))), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n key: \"addonList\",\n className: \"bd-addon-list\"\n }, sortedAddons.map(addon => {\n if (this.state.query) {\n let matches = addon.name.toLocaleLowerCase().includes(this.state.query);\n matches = matches || addon.author.toLocaleLowerCase().includes(this.state.query);\n matches = matches || addon.description.toLocaleLowerCase().includes(this.state.query);\n if (!matches) return null;\n }\n\n const hasSettings = addon.type && typeof addon.plugin.getSettingsPanel === \"function\";\n const getSettings = hasSettings && addon.plugin.getSettingsPanel.bind(addon.plugin);\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_errorboundary__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_addoncard__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n editAddon: this.editAddon.bind(this, addon.id),\n deleteAddon: this.deleteAddon.bind(this, addon.id),\n showReloadIcon: showReloadIcon,\n key: addon.id,\n enabled: addonState[addon.id],\n addon: addon,\n onChange: onChange,\n reload: reload,\n hasSettings: hasSettings,\n getSettingsPanel: getSettings\n }));\n }))];\n }\n\n editAddon(id) {\n if (this.props.editAddon) this.props.editAddon(id);\n }\n\n async deleteAddon(id) {\n const addon = this.props.addonList.find(a => a.id == id);\n const shouldDelete = await this.confirmDelete(addon);\n if (!shouldDelete) return;\n if (this.props.deleteAddon) this.props.deleteAddon(addon);\n }\n\n confirmDelete(addon) {\n return new Promise(resolve => {\n _modals__WEBPACK_IMPORTED_MODULE_1__[\"default\"].showConfirmationModal(modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Modals.confirmAction, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.confirmDelete.format({\n name: addon.name\n }), {\n danger: true,\n confirmText: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.deleteAddon,\n onConfirm: () => {\n resolve(true);\n },\n onCancel: () => {\n resolve(false);\n }\n });\n });\n }\n\n}\nconst originalRender = AddonList.prototype.render;\nObject.defineProperty(AddonList.prototype, \"render\", {\n enumerable: false,\n configurable: false,\n set: function () {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"AddonList\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n },\n get: () => originalRender\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvYWRkb25saXN0LmpzeD82NGQyIl0sIm5hbWVzIjpbIkFkZG9uTGlzdCIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN0YXRlIiwic29ydCIsImFzY2VuZGluZyIsInF1ZXJ5IiwiYmluZCIsInJldmVyc2UiLCJzZWFyY2giLCJ1cGRhdGUiLCJjb21wb25lbnREaWRNb3VudCIsIkV2ZW50cyIsIm9uIiwicHJlZml4IiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJvZmYiLCJmb3JjZVVwZGF0ZSIsInJlbG9hZCIsInJlZnJlc2hMaXN0IiwidmFsdWUiLCJzZXRTdGF0ZSIsImV2ZW50IiwidGFyZ2V0IiwidG9Mb2NhbGVMb3dlckNhc2UiLCJzb3J0T3B0aW9ucyIsImxhYmVsIiwiU3RyaW5ncyIsIkFkZG9ucyIsIm5hbWUiLCJhdXRob3IiLCJ2ZXJzaW9uIiwiYWRkZWQiLCJtb2RpZmllZCIsImRpcmVjdGlvbnMiLCJTb3J0aW5nIiwiZGVzY2VuZGluZyIsInJlbmRlciIsInRpdGxlIiwiZm9sZGVyIiwiYWRkb25MaXN0IiwiYWRkb25TdGF0ZSIsIm9uQ2hhbmdlIiwic2hvd1JlbG9hZEljb24iLCJTZXR0aW5ncyIsImdldCIsImJ1dHRvbiIsIm9wZW5Gb2xkZXIiLCJmb3JtYXQiLCJ0eXBlIiwib25DbGljayIsInNoZWxsIiwicmVxdWlyZSIsIm9wZW4iLCJvcGVuSXRlbSIsIm9wZW5QYXRoIiwic29ydGVkQWRkb25zIiwiYSIsImIiLCJmaXJzdCIsInNlY29uZCIsImxvY2FsZUNvbXBhcmUiLCJzb3J0QnkiLCJvcmRlciIsIm1hcCIsImFkZG9uIiwibWF0Y2hlcyIsImluY2x1ZGVzIiwiZGVzY3JpcHRpb24iLCJoYXNTZXR0aW5ncyIsInBsdWdpbiIsImdldFNldHRpbmdzUGFuZWwiLCJnZXRTZXR0aW5ncyIsImVkaXRBZGRvbiIsImlkIiwiZGVsZXRlQWRkb24iLCJmaW5kIiwic2hvdWxkRGVsZXRlIiwiY29uZmlybURlbGV0ZSIsIlByb21pc2UiLCJyZXNvbHZlIiwiTW9kYWxzIiwic2hvd0NvbmZpcm1hdGlvbk1vZGFsIiwiY29uZmlybUFjdGlvbiIsImRhbmdlciIsImNvbmZpcm1UZXh0Iiwib25Db25maXJtIiwib25DYW5jZWwiLCJvcmlnaW5hbFJlbmRlciIsInByb3RvdHlwZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsInNldCIsIkxvZ2dlciIsIndhcm4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVlLE1BQU1BLFNBQU4sU0FBd0JDLDZDQUFLLENBQUNDLFNBQTlCLENBQXdDO0FBRW5EQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDQSxTQUFLQyxLQUFMLEdBQWE7QUFBQ0MsVUFBSSxFQUFFLE1BQVA7QUFBZUMsZUFBUyxFQUFFLElBQTFCO0FBQWdDQyxXQUFLLEVBQUU7QUFBdkMsS0FBYjtBQUNBLFNBQUtGLElBQUwsR0FBWSxLQUFLQSxJQUFMLENBQVVHLElBQVYsQ0FBZSxJQUFmLENBQVo7QUFDQSxTQUFLQyxPQUFMLEdBQWUsS0FBS0EsT0FBTCxDQUFhRCxJQUFiLENBQWtCLElBQWxCLENBQWY7QUFDQSxTQUFLRSxNQUFMLEdBQWMsS0FBS0EsTUFBTCxDQUFZRixJQUFaLENBQWlCLElBQWpCLENBQWQ7QUFDQSxTQUFLRyxNQUFMLEdBQWMsS0FBS0EsTUFBTCxDQUFZSCxJQUFaLENBQWlCLElBQWpCLENBQWQ7QUFDSDs7QUFFREksbUJBQWlCLEdBQUc7QUFDaEJDLGtEQUFNLENBQUNDLEVBQVAsQ0FBVyxHQUFFLEtBQUtYLEtBQUwsQ0FBV1ksTUFBTyxTQUEvQixFQUF5QyxLQUFLSixNQUE5QztBQUNBRSxrREFBTSxDQUFDQyxF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MkYsU0FBaEMsRUFBMkMsUUFBM0MsRUFBcUQ7QUFDakRHLFlBQVUsRUFBRSxLQURxQztBQUVqREMsY0FBWSxFQUFFLEtBRm1DO0FBR2pEQyxLQUFHLEVBQUUsWUFBVztBQUFDQyxrREFBTSxDQUFDQyxJQUFQLENBQVksV0FBWixFQUF5QixxR0FBekI7QUFBaUksR0FIakc7QUFJakRuRCxLQUFHLEVBQUUsTUFBTTJDO0FBSnNDLENBQXJEIiwiZmlsZSI6Ii4vc3JjL3VpL3NldHRpbmdzL2FkZG9ubGlzdC5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBTZXR0aW5ncywgU3RyaW5ncywgRXZlbnRzLCBMb2dnZXJ9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5pbXBvcnQgTW9kYWxzIGZyb20gXCIuLi9tb2RhbHNcIjtcclxuaW1wb3J0IFNldHRpbmdzVGl0bGUgZnJvbSBcIi4vdGl0bGVcIjtcclxuaW1wb3J0IFJlbG9hZEljb24gZnJvbSBcIi4uL2ljb25zL3JlbG9hZFwiO1xyXG5pbXBvcnQgQWRkb25DYXJkIGZyb20gXCIuL2FkZG9uY2FyZFwiO1xyXG5pbXBvcnQgRHJvcGRvd24gZnJvbSBcIi4vY29tcG9uZW50cy9kcm9wZG93blwiO1xyXG5pbXBvcnQgU2VhcmNoIGZyb20gXCIuL2NvbXBvbmVudHMvc2VhcmNoXCI7XHJcbmltcG9ydCBFcnJvckJvdW5kYXJ5IGZyb20gIFwiLi4vZXJyb3Jib3VuZGFyeVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWRkb25MaXN0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge3NvcnQ6IFwibmFtZVwiLCBhc2NlbmRpbmc6IHRydWUsIHF1ZXJ5OiBcIlwifTtcclxuICAgICAgICB0aGlzLnNvcnQgPSB0aGlzLnNvcnQuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnJldmVyc2UgPSB0aGlzLnJldmVyc2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnNlYXJjaCA9IHRoaXMuc2VhcmNoLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGUgPSB0aGlzLnVwZGF0ZS5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgICAgICBFdmVudHMub24oYCR7dGhpcy5wcm9wcy5wcmVmaXh9LWxvYWRlZGAsIHRoaXMudXBkYXRlKTtcclxuICAgICAgICBFdmVudHMub24oYCR7dGhpcy5wcm9wcy5wcmVmaXh9LXVubG9hZGVkYCwgdGhpcy51cGRhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgICAgIEV2ZW50cy5vZmYoYCR7dGhpcy5wcm9wcy5wcmVmaXh9LWxvYWRlZGAsIHRoaXMudXBkYXRlKTtcclxuICAgICAgICBFdmVudHMub2ZmKGAke3RoaXMucHJvcHMucHJlZml4fS11bmxvYWRlZGAsIHRoaXMudXBkYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGUoKSB7XHJcbiAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbG9hZCgpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5yZWZyZXNoTGlzdCkgdGhpcy5wcm9wcy5yZWZyZXNoTGlzdCgpO1xyXG4gICAgICAgIHRoaXMuZm9yY2VVcGRhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXZlcnNlKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7YXNjZW5kaW5nOiB2YWx1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNvcnQodmFsdWUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtzb3J0OiB2YWx1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNlYXJjaChldmVudCkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe3F1ZXJ5OiBldmVudC50YXJnZXQudmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKX0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBzb3J0T3B0aW9ucygpIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB7bGFiZWw6IFN0cmluZ3MuQWRkb25zLm5hbWUsIHZhbHVlOiBcIm5hbWVcIn0sXHJcbiAgICAgICAgICAgIHtsYWJlbDogU3RyaW5ncy5BZGRvbnMuYXV0aG9yLCB2YWx1ZTogXCJhdXRob3JcIn0sXHJcbiAgICAgICAgICAgIHtsYWJlbDogU3RyaW5ncy5BZGRvbnMudmVyc2lvbiwgdmFsdWU6IFwidmVyc2lvblwifSxcclxuICAgICAgICAgICAge2xhYmVsOiBTdHJpbmdzLkFkZG9ucy5hZGRlZCwgdmFsdWU6IFwiYWRkZWRcIn0sXHJcbiAgICAgICAgICAgIHtsYWJlbDogU3RyaW5ncy5BZGRvbnMubW9kaWZpZWQsIHZhbHVlOiBcIm1vZGlmaWVkXCJ9XHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZGlyZWN0aW9ucygpIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB7bGFiZWw6IFN0cmluZ3MuU29ydGluZy5hc2NlbmRpbmcsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge2xhYmVsOiBTdHJpbmdzLlNvcnRpbmcuZGVzY2VuZGluZywgdmFsdWU6IGZhbHNlfVxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHt0aXRsZSwgZm9sZGVyLCBhZGRvbkxpc3QsIGFkZG9uU3RhdGUsIG9uQ2hhbmdlLCByZWxvYWR9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICBjb25zdCBzaG93UmVsb2FkSWNvbiA9ICFTZXR0aW5ncy5nZXQoXCJzZXR0aW5nc1wiLCBcImFkZG9uc1wiLCBcImF1dG9SZWxvYWRcIik7XHJcbiAgICAgICAgY29uc3QgYnV0dG9uID0gZm9sZGVyID8ge3RpdGxlOiBTdHJpbmdzLkFkZG9ucy5vcGVuRm9sZGVyLmZvcm1hdCh7dHlwZTogdGl0bGV9KSwgb25DbGljazogKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzaGVsbCA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKS5zaGVsbDtcclxuICAgICAgICAgICAgY29uc3Qgb3BlbiA9IHNoZWxsLm9wZW5JdGVtIHx8IHNoZWxsLm9wZW5QYXRoO1xyXG4gICAgICAgICAgICBvcGVuKGZvbGRlcik7XHJcbiAgICAgICAgfX0gOiBudWxsO1xyXG4gICAgICAgIGNvbnN0IHNvcnRlZEFkZG9ucyA9IGFkZG9uTGlzdC5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0ID0gYVt0aGlzLnN0YXRlLnNvcnRdO1xyXG4gICAgICAgICAgICBjb25zdCBzZWNvbmQgPSBiW3RoaXMuc3RhdGUuc29ydF07XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YoZmlyc3QpID09IFwic3RyaW5nXCIpIHJldHVybiBmaXJzdC50b0xvY2FsZUxvd2VyQ2FzZSgpLmxvY2FsZUNvbXBhcmUoc2Vjb25kLnRvTG9jYWxlTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgICBpZiAoZmlyc3QgPiBzZWNvbmQpIHJldHVybiAxO1xyXG4gICAgICAgICAgICBpZiAoc2Vjb25kID4gZmlyc3QpIHJldHVybiAtMTtcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnN0YXRlLmFzY2VuZGluZykgc29ydGVkQWRkb25zLnJldmVyc2UoKTtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICA8U2V0dGluZ3NUaXRsZSBrZXk9XCJ0aXRsZVwiIHRleHQ9e3RpdGxlfSBidXR0b249e2J1dHRvbn0gb3RoZXJDaGlsZHJlbj17c2hvd1JlbG9hZEljb24gJiYgPFJlbG9hZEljb24gY2xhc3NOYW1lPVwiYmQtcmVsb2FkXCIgb25DbGljaz17dGhpcy5yZWxvYWQuYmluZCh0aGlzKX0gLz59IC8+LFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLWNvbnRyb2xzIGJkLWFkZG9uLWNvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgICAgICA8U2VhcmNoIG9uQ2hhbmdlPXt0aGlzLnNlYXJjaH0gcGxhY2Vob2xkZXI9e2Ake1N0cmluZ3MuQWRkb25zLnNlYXJjaC5mb3JtYXQoe3R5cGU6IHRoaXMucHJvcHMudGl0bGV9KX0uLi5gfSAvPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1hZGRvbi1kcm9wZG93bnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNlbGVjdC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJiZC1sYWJlbFwiPntTdHJpbmdzLlNvcnRpbmcuc29ydEJ5fTo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd24gb3B0aW9ucz17dGhpcy5zb3J0T3B0aW9uc30gb25DaGFuZ2U9e3RoaXMuc29ydH0gc3R5bGU9XCJ0cmFuc3BhcmVudFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZWxlY3Qtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiYmQtbGFiZWxcIj57U3RyaW5ncy5Tb3J0aW5nLm9yZGVyfTo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd24gb3B0aW9ucz17dGhpcy5kaXJlY3Rpb25zfSBvbkNoYW5nZT17dGhpcy5yZXZlcnNlfSBzdHlsZT1cInRyYW5zcGFyZW50XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj4sXHJcbiAgICAgICAgICAgIDxkaXYga2V5PVwiYWRkb25MaXN0XCIgY2xhc3NOYW1lPXtcImJkLWFkZG9uLWxpc3RcIn0+XHJcbiAgICAgICAgICAgIHtzb3J0ZWRBZGRvbnMubWFwKGFkZG9uID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLnF1ZXJ5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoZXMgPSBhZGRvbi5uYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zdGF0ZS5xdWVyeSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcyA9IG1hdGNoZXMgfHwgYWRkb24uYXV0aG9yLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zdGF0ZS5xdWVyeSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcyA9IG1hdGNoZXMgfHwgYWRkb24uZGVzY3JpcHRpb24udG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnN0YXRlLnF1ZXJ5KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoZXMpIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgaGFzU2V0dGluZ3MgPSBhZGRvbi50eXBlICYmIHR5cGVvZihhZGRvbi5wbHVnaW4uZ2V0U2V0dGluZ3NQYW5lbCkgPT09IFwiZnVuY3Rpb25cIjtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGdldFNldHRpbmdzID0gaGFzU2V0dGluZ3MgJiYgYWRkb24ucGx1Z2luLmdldFNldHRpbmdzUGFuZWwuYmluZChhZGRvbi5wbHVnaW4pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxFcnJvckJvdW5kYXJ5PjxBZGRvbkNhcmQgZWRpdEFkZG9uPXt0aGlzLmVkaXRBZGRvbi5iaW5kKHRoaXMsIGFkZG9uLmlkKX0gZGVsZXRlQWRkb249e3RoaXMuZGVsZXRlQWRkb24uYmluZCh0aGlzLCBhZGRvbi5pZCl9IHNob3dSZWxvYWRJY29uPXtzaG93UmVsb2FkSWNvbn0ga2V5PXthZGRvbi5pZH0gZW5hYmxlZD17YWRkb25TdGF0ZVthZGRvbi5pZF19IGFkZG9uPXthZGRvbn0gb25DaGFuZ2U9e29uQ2hhbmdlfSByZWxvYWQ9e3JlbG9hZH0gaGFzU2V0dGluZ3M9e2hhc1NldHRpbmdzfSBnZXRTZXR0aW5nc1BhbmVsPXtnZXRTZXR0aW5nc30gLz48L0Vycm9yQm91bmRhcnk+O1xyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBlZGl0QWRkb24oaWQpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5lZGl0QWRkb24pIHRoaXMucHJvcHMuZWRpdEFkZG9uKGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkZWxldGVBZGRvbihpZCkge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdGhpcy5wcm9wcy5hZGRvbkxpc3QuZmluZChhID0+IGEuaWQgPT0gaWQpO1xyXG4gICAgICAgIGNvbnN0IHNob3VsZERlbGV0ZSA9IGF3YWl0IHRoaXMuY29uZmlybURlbGV0ZShhZGRvbik7XHJcbiAgICAgICAgaWYgKCFzaG91bGREZWxldGUpIHJldHVybjtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5kZWxldGVBZGRvbikgdGhpcy5wcm9wcy5kZWxldGVBZGRvbihhZGRvbik7XHJcbiAgICB9XHJcblxyXG4gICAgY29uZmlybURlbGV0ZShhZGRvbikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgTW9kYWxzLnNob3dDb25maXJtYXRpb25Nb2RhbChTdHJpbmdzLk1vZGFscy5jb25maXJtQWN0aW9uLCBTdHJpbmdzLkFkZG9ucy5jb25maXJtRGVsZXRlLmZvcm1hdCh7bmFtZTogYWRkb24ubmFtZX0pLCB7XHJcbiAgICAgICAgICAgICAgICBkYW5nZXI6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjb25maXJtVGV4dDogU3RyaW5ncy5BZGRvbnMuZGVsZXRlQWRkb24sXHJcbiAgICAgICAgICAgICAgICBvbkNvbmZpcm06ICgpID0+IHtyZXNvbHZlKHRydWUpO30sXHJcbiAgICAgICAgICAgICAgICBvbkNhbmNlbDogKCkgPT4ge3Jlc29sdmUoZmFsc2UpO31cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IG9yaWdpbmFsUmVuZGVyID0gQWRkb25MaXN0LnByb3RvdHlwZS5yZW5kZXI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShBZGRvbkxpc3QucHJvdG90eXBlLCBcInJlbmRlclwiLCB7XHJcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXHJcbiAgICBzZXQ6IGZ1bmN0aW9uKCkge0xvZ2dlci53YXJuKFwiQWRkb25MaXN0XCIsIFwiQWRkb24gcG9saWN5IGZvciBwbHVnaW5zICM1IGh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvd2lraS9BZGRvbi1Qb2xpY2llcyNwbHVnaW5zXCIpO30sXHJcbiAgICBnZXQ6ICgpID0+IG9yaWdpbmFsUmVuZGVyXHJcbn0pOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/addonlist.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AddonList; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _modals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _icons_reload__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/reload */ \"./src/ui/icons/reload.jsx\");\n/* harmony import */ var _addoncard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./addoncard */ \"./src/ui/settings/addoncard.jsx\");\n/* harmony import */ var _components_dropdown__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/dropdown */ \"./src/ui/settings/components/dropdown.jsx\");\n/* harmony import */ var _components_search__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/search */ \"./src/ui/settings/components/search.jsx\");\n/* harmony import */ var _errorboundary__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../errorboundary */ \"./src/ui/errorboundary.jsx\");\n\n\n\n\n\n\n\n\nclass AddonList extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n sort: \"name\",\n ascending: true,\n query: \"\"\n };\n this.sort = this.sort.bind(this);\n this.reverse = this.reverse.bind(this);\n this.search = this.search.bind(this);\n this.update = this.update.bind(this);\n }\n\n componentDidMount() {\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(`${this.props.prefix}-loaded`, this.update);\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(`${this.props.prefix}-unloaded`, this.update);\n }\n\n componentWillUnmount() {\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].off(`${this.props.prefix}-loaded`, this.update);\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].off(`${this.props.prefix}-unloaded`, this.update);\n }\n\n update() {\n this.forceUpdate();\n }\n\n reload() {\n if (this.props.refreshList) this.props.refreshList();\n this.forceUpdate();\n }\n\n reverse(value) {\n this.setState({\n ascending: value\n });\n }\n\n sort(value) {\n this.setState({\n sort: value\n });\n }\n\n search(event) {\n this.setState({\n query: event.target.value.toLocaleLowerCase()\n });\n }\n\n get sortOptions() {\n return [{\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.name,\n value: \"name\"\n }, {\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.author,\n value: \"author\"\n }, {\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.version,\n value: \"version\"\n }, {\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.added,\n value: \"added\"\n }, {\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.modified,\n value: \"modified\"\n }];\n }\n\n get directions() {\n return [{\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.ascending,\n value: true\n }, {\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.descending,\n value: false\n }];\n }\n\n render() {\n const {\n title,\n folder,\n addonList,\n addonState,\n onChange,\n reload\n } = this.props;\n const showReloadIcon = !_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"settings\", \"addons\", \"autoReload\");\n const button = folder ? {\n title: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.openFolder.format({\n type: title\n }),\n onClick: () => {\n const shell = __webpack_require__(/*! electron */ \"electron\").shell;\n\n const open = shell.openItem || shell.openPath;\n open(folder);\n }\n } : null;\n const sortedAddons = addonList.sort((a, b) => {\n const first = a[this.state.sort];\n const second = b[this.state.sort];\n if (typeof first == \"string\") return first.toLocaleLowerCase().localeCompare(second.toLocaleLowerCase());\n if (first > second) return 1;\n if (second > first) return -1;\n return 0;\n });\n if (!this.state.ascending) sortedAddons.reverse();\n return [/*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_title__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n key: \"title\",\n text: title,\n button: button,\n otherChildren: showReloadIcon && /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"bd-reload\",\n onClick: this.reload.bind(this)\n })\n }), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-controls bd-addon-controls\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_search__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n onChange: this.search,\n placeholder: `${_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.search.format({\n type: this.props.title\n })}...`\n }), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-addon-dropdowns\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-wrapper\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"label\", {\n className: \"bd-label\"\n }, _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.sortBy, \":\"), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_dropdown__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n options: this.sortOptions,\n onChange: this.sort,\n style: \"transparent\"\n })), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-wrapper\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"label\", {\n className: \"bd-label\"\n }, _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.order, \":\"), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_dropdown__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n options: this.directions,\n onChange: this.reverse,\n style: \"transparent\"\n })))), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n key: \"addonList\",\n className: \"bd-addon-list\"\n }, sortedAddons.map(addon => {\n if (this.state.query) {\n let matches = addon.name.toLocaleLowerCase().includes(this.state.query);\n matches = matches || addon.author.toLocaleLowerCase().includes(this.state.query);\n matches = matches || addon.description.toLocaleLowerCase().includes(this.state.query);\n if (!matches) return null;\n }\n\n const hasSettings = addon.type && typeof addon.plugin.getSettingsPanel === \"function\";\n const getSettings = hasSettings && addon.plugin.getSettingsPanel.bind(addon.plugin);\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_errorboundary__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_addoncard__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n editAddon: this.editAddon.bind(this, addon.id),\n deleteAddon: this.deleteAddon.bind(this, addon.id),\n showReloadIcon: showReloadIcon,\n key: addon.id,\n enabled: addonState[addon.id],\n addon: addon,\n onChange: onChange,\n reload: reload,\n hasSettings: hasSettings,\n getSettingsPanel: getSettings\n }));\n }))];\n }\n\n editAddon(id) {\n if (this.props.editAddon) this.props.editAddon(id);\n }\n\n async deleteAddon(id) {\n const addon = this.props.addonList.find(a => a.id == id);\n const shouldDelete = await this.confirmDelete(addon);\n if (!shouldDelete) return;\n if (this.props.deleteAddon) this.props.deleteAddon(addon);\n }\n\n confirmDelete(addon) {\n return new Promise(resolve => {\n _modals__WEBPACK_IMPORTED_MODULE_1__[\"default\"].showConfirmationModal(_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Modals.confirmAction, _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.confirmDelete.format({\n name: addon.name\n }), {\n danger: true,\n confirmText: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.deleteAddon,\n onConfirm: () => {\n resolve(true);\n },\n onCancel: () => {\n resolve(false);\n }\n });\n });\n }\n\n}\nconst originalRender = AddonList.prototype.render;\nObject.defineProperty(AddonList.prototype, \"render\", {\n enumerable: false,\n configurable: false,\n set: function () {\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"AddonList\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n },\n get: () => originalRender\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvYWRkb25saXN0LmpzeD82NGQyIl0sIm5hbWVzIjpbIkFkZG9uTGlzdCIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN0YXRlIiwic29ydCIsImFzY2VuZGluZyIsInF1ZXJ5IiwiYmluZCIsInJldmVyc2UiLCJzZWFyY2giLCJ1cGRhdGUiLCJjb21wb25lbnREaWRNb3VudCIsIkV2ZW50cyIsIm9uIiwicHJlZml4IiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJvZmYiLCJmb3JjZVVwZGF0ZSIsInJlbG9hZCIsInJlZnJlc2hMaXN0IiwidmFsdWUiLCJzZXRTdGF0ZSIsImV2ZW50IiwidGFyZ2V0IiwidG9Mb2NhbGVMb3dlckNhc2UiLCJzb3J0T3B0aW9ucyIsImxhYmVsIiwiU3RyaW5ncyIsIkFkZG9ucyIsIm5hbWUiLCJhdXRob3IiLCJ2ZXJzaW9uIiwiYWRkZWQiLCJtb2RpZmllZCIsImRpcmVjdGlvbnMiLCJTb3J0aW5nIiwiZGVzY2VuZGluZyIsInJlbmRlciIsInRpdGxlIiwiZm9sZGVyIiwiYWRkb25MaXN0IiwiYWRkb25TdGF0ZSIsIm9uQ2hhbmdlIiwic2hvd1JlbG9hZEljb24iLCJTZXR0aW5ncyIsImdldCIsImJ1dHRvbiIsIm9wZW5Gb2xkZXIiLCJmb3JtYXQiLCJ0eXBlIiwib25DbGljayIsInNoZWxsIiwicmVxdWlyZSIsIm9wZW4iLCJvcGVuSXRlbSIsIm9wZW5QYXRoIiwic29ydGVkQWRkb25zIiwiYSIsImIiLCJmaXJzdCIsInNlY29uZCIsImxvY2FsZUNvbXBhcmUiLCJzb3J0QnkiLCJvcmRlciIsIm1hcCIsImFkZG9uIiwibWF0Y2hlcyIsImluY2x1ZGVzIiwiZGVzY3JpcHRpb24iLCJoYXNTZXR0aW5ncyIsInBsdWdpbiIsImdldFNldHRpbmdzUGFuZWwiLCJnZXRTZXR0aW5ncyIsImVkaXRBZGRvbiIsImlkIiwiZGVsZXRlQWRkb24iLCJmaW5kIiwic2hvdWxkRGVsZXRlIiwiY29uZmlybURlbGV0ZSIsIlByb21pc2UiLCJyZXNvbHZlIiwiTW9kYWxzIiwic2hvd0NvbmZpcm1hdGlvbk1vZGFsIiwiY29uZmlybUFjdGlvbiIsImRhbmdlciIsImNvbmZpcm1UZXh0Iiwib25Db25maXJtIiwib25DYW5jZWwiLCJvcmlnaW5hbFJlbmRlciIsInByb3RvdHlwZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsInNldCIsIkxvZ2dlciIsIndhcm4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVlLE1BQU1BLFNBQU4sU0FBd0JDLHlEQUFLLENBQUNDLFNBQTlCLENBQXdDO0FBRW5EQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDQSxTQUFLQyxLQUFMLEdBQWE7QUFBQ0MsVUFBSSxFQUFFLE1BQVA7QUFBZUMsZUFBUyxFQUFFLElBQTFCO0FBQWdDQyxXQUFLLEVBQUU7QUFBdkMsS0FBYjtBQUNBLFNBQUtGLElBQUwsR0FBWSxLQUFLQSxJQUFMLENBQVVHLElBQVYsQ0FBZSxJQUFmLENBQVo7QUFDQSxTQUFLQyxPQUFMLEdBQWUsS0FBS0EsT0FBTCxDQUFhRCxJQUFiLENBQWtCLElBQWxCLENBQWY7QUFDQSxTQUFLRSxNQUFMLEdBQWMsS0FBS0EsTUFBTCxDQUFZRixJQUFaLENBQWlCLElBQWpCLENBQWQ7QUFDQSxTQUFLRyxNQUFMLEdBQWMsS0FBS0EsTUFBTCxDQUFZSCxJQUFaLENBQWlCLElBQWpCLENBQWQ7QUFDSDs7QUFFREksbUJBQWlCLEdBQUc7QUFDaEJDLDhEQUFNLENBQUNDLEVBQVAsQ0FBVyxHQUFFLEtBQUtYLEtBQUwsQ0FBV1ksTUFBTyxTQUEvQixFQUF5QyxLQUFLSixNQUE5QztBQUNBRSw4REFBTSxDQUFDQyxF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MkYsU0FBaEMsRUFBMkMsUUFBM0MsRUFBcUQ7QUFDakRHLFlBQVUsRUFBRSxLQURxQztBQUVqREMsY0FBWSxFQUFFLEtBRm1DO0FBR2pEQyxLQUFHLEVBQUUsWUFBVztBQUFDQyw4REFBTSxDQUFDQyxJQUFQLENBQVksV0FBWixFQUF5QixxR0FBekI7QUFBaUksR0FIakc7QUFJakRuRCxLQUFHLEVBQUUsTUFBTTJDO0FBSnNDLENBQXJEIiwiZmlsZSI6Ii4vc3JjL3VpL3NldHRpbmdzL2FkZG9ubGlzdC5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBTZXR0aW5ncywgU3RyaW5ncywgRXZlbnRzLCBMb2dnZXJ9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5pbXBvcnQgTW9kYWxzIGZyb20gXCIuLi9tb2RhbHNcIjtcclxuaW1wb3J0IFNldHRpbmdzVGl0bGUgZnJvbSBcIi4vdGl0bGVcIjtcclxuaW1wb3J0IFJlbG9hZEljb24gZnJvbSBcIi4uL2ljb25zL3JlbG9hZFwiO1xyXG5pbXBvcnQgQWRkb25DYXJkIGZyb20gXCIuL2FkZG9uY2FyZFwiO1xyXG5pbXBvcnQgRHJvcGRvd24gZnJvbSBcIi4vY29tcG9uZW50cy9kcm9wZG93blwiO1xyXG5pbXBvcnQgU2VhcmNoIGZyb20gXCIuL2NvbXBvbmVudHMvc2VhcmNoXCI7XHJcbmltcG9ydCBFcnJvckJvdW5kYXJ5IGZyb20gIFwiLi4vZXJyb3Jib3VuZGFyeVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWRkb25MaXN0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge3NvcnQ6IFwibmFtZVwiLCBhc2NlbmRpbmc6IHRydWUsIHF1ZXJ5OiBcIlwifTtcclxuICAgICAgICB0aGlzLnNvcnQgPSB0aGlzLnNvcnQuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnJldmVyc2UgPSB0aGlzLnJldmVyc2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnNlYXJjaCA9IHRoaXMuc2VhcmNoLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGUgPSB0aGlzLnVwZGF0ZS5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgICAgICBFdmVudHMub24oYCR7dGhpcy5wcm9wcy5wcmVmaXh9LWxvYWRlZGAsIHRoaXMudXBkYXRlKTtcclxuICAgICAgICBFdmVudHMub24oYCR7dGhpcy5wcm9wcy5wcmVmaXh9LXVubG9hZGVkYCwgdGhpcy51cGRhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgICAgIEV2ZW50cy5vZmYoYCR7dGhpcy5wcm9wcy5wcmVmaXh9LWxvYWRlZGAsIHRoaXMudXBkYXRlKTtcclxuICAgICAgICBFdmVudHMub2ZmKGAke3RoaXMucHJvcHMucHJlZml4fS11bmxvYWRlZGAsIHRoaXMudXBkYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGUoKSB7XHJcbiAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbG9hZCgpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5yZWZyZXNoTGlzdCkgdGhpcy5wcm9wcy5yZWZyZXNoTGlzdCgpO1xyXG4gICAgICAgIHRoaXMuZm9yY2VVcGRhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXZlcnNlKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7YXNjZW5kaW5nOiB2YWx1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNvcnQodmFsdWUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtzb3J0OiB2YWx1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNlYXJjaChldmVudCkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe3F1ZXJ5OiBldmVudC50YXJnZXQudmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKX0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBzb3J0T3B0aW9ucygpIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB7bGFiZWw6IFN0cmluZ3MuQWRkb25zLm5hbWUsIHZhbHVlOiBcIm5hbWVcIn0sXHJcbiAgICAgICAgICAgIHtsYWJlbDogU3RyaW5ncy5BZGRvbnMuYXV0aG9yLCB2YWx1ZTogXCJhdXRob3JcIn0sXHJcbiAgICAgICAgICAgIHtsYWJlbDogU3RyaW5ncy5BZGRvbnMudmVyc2lvbiwgdmFsdWU6IFwidmVyc2lvblwifSxcclxuICAgICAgICAgICAge2xhYmVsOiBTdHJpbmdzLkFkZG9ucy5hZGRlZCwgdmFsdWU6IFwiYWRkZWRcIn0sXHJcbiAgICAgICAgICAgIHtsYWJlbDogU3RyaW5ncy5BZGRvbnMubW9kaWZpZWQsIHZhbHVlOiBcIm1vZGlmaWVkXCJ9XHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZGlyZWN0aW9ucygpIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB7bGFiZWw6IFN0cmluZ3MuU29ydGluZy5hc2NlbmRpbmcsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge2xhYmVsOiBTdHJpbmdzLlNvcnRpbmcuZGVzY2VuZGluZywgdmFsdWU6IGZhbHNlfVxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHt0aXRsZSwgZm9sZGVyLCBhZGRvbkxpc3QsIGFkZG9uU3RhdGUsIG9uQ2hhbmdlLCByZWxvYWR9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICBjb25zdCBzaG93UmVsb2FkSWNvbiA9ICFTZXR0aW5ncy5nZXQoXCJzZXR0aW5nc1wiLCBcImFkZG9uc1wiLCBcImF1dG9SZWxvYWRcIik7XHJcbiAgICAgICAgY29uc3QgYnV0dG9uID0gZm9sZGVyID8ge3RpdGxlOiBTdHJpbmdzLkFkZG9ucy5vcGVuRm9sZGVyLmZvcm1hdCh7dHlwZTogdGl0bGV9KSwgb25DbGljazogKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzaGVsbCA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKS5zaGVsbDtcclxuICAgICAgICAgICAgY29uc3Qgb3BlbiA9IHNoZWxsLm9wZW5JdGVtIHx8IHNoZWxsLm9wZW5QYXRoO1xyXG4gICAgICAgICAgICBvcGVuKGZvbGRlcik7XHJcbiAgICAgICAgfX0gOiBudWxsO1xyXG4gICAgICAgIGNvbnN0IHNvcnRlZEFkZG9ucyA9IGFkZG9uTGlzdC5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0ID0gYVt0aGlzLnN0YXRlLnNvcnRdO1xyXG4gICAgICAgICAgICBjb25zdCBzZWNvbmQgPSBiW3RoaXMuc3RhdGUuc29ydF07XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YoZmlyc3QpID09IFwic3RyaW5nXCIpIHJldHVybiBmaXJzdC50b0xvY2FsZUxvd2VyQ2FzZSgpLmxvY2FsZUNvbXBhcmUoc2Vjb25kLnRvTG9jYWxlTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgICBpZiAoZmlyc3QgPiBzZWNvbmQpIHJldHVybiAxO1xyXG4gICAgICAgICAgICBpZiAoc2Vjb25kID4gZmlyc3QpIHJldHVybiAtMTtcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnN0YXRlLmFzY2VuZGluZykgc29ydGVkQWRkb25zLnJldmVyc2UoKTtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICA8U2V0dGluZ3NUaXRsZSBrZXk9XCJ0aXRsZVwiIHRleHQ9e3RpdGxlfSBidXR0b249e2J1dHRvbn0gb3RoZXJDaGlsZHJlbj17c2hvd1JlbG9hZEljb24gJiYgPFJlbG9hZEljb24gY2xhc3NOYW1lPVwiYmQtcmVsb2FkXCIgb25DbGljaz17dGhpcy5yZWxvYWQuYmluZCh0aGlzKX0gLz59IC8+LFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLWNvbnRyb2xzIGJkLWFkZG9uLWNvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgICAgICA8U2VhcmNoIG9uQ2hhbmdlPXt0aGlzLnNlYXJjaH0gcGxhY2Vob2xkZXI9e2Ake1N0cmluZ3MuQWRkb25zLnNlYXJjaC5mb3JtYXQoe3R5cGU6IHRoaXMucHJvcHMudGl0bGV9KX0uLi5gfSAvPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1hZGRvbi1kcm9wZG93bnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNlbGVjdC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJiZC1sYWJlbFwiPntTdHJpbmdzLlNvcnRpbmcuc29ydEJ5fTo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd24gb3B0aW9ucz17dGhpcy5zb3J0T3B0aW9uc30gb25DaGFuZ2U9e3RoaXMuc29ydH0gc3R5bGU9XCJ0cmFuc3BhcmVudFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZWxlY3Qtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiYmQtbGFiZWxcIj57U3RyaW5ncy5Tb3J0aW5nLm9yZGVyfTo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd24gb3B0aW9ucz17dGhpcy5kaXJlY3Rpb25zfSBvbkNoYW5nZT17dGhpcy5yZXZlcnNlfSBzdHlsZT1cInRyYW5zcGFyZW50XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj4sXHJcbiAgICAgICAgICAgIDxkaXYga2V5PVwiYWRkb25MaXN0XCIgY2xhc3NOYW1lPXtcImJkLWFkZG9uLWxpc3RcIn0+XHJcbiAgICAgICAgICAgIHtzb3J0ZWRBZGRvbnMubWFwKGFkZG9uID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLnF1ZXJ5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoZXMgPSBhZGRvbi5uYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zdGF0ZS5xdWVyeSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcyA9IG1hdGNoZXMgfHwgYWRkb24uYXV0aG9yLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zdGF0ZS5xdWVyeSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcyA9IG1hdGNoZXMgfHwgYWRkb24uZGVzY3JpcHRpb24udG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnN0YXRlLnF1ZXJ5KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoZXMpIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgaGFzU2V0dGluZ3MgPSBhZGRvbi50eXBlICYmIHR5cGVvZihhZGRvbi5wbHVnaW4uZ2V0U2V0dGluZ3NQYW5lbCkgPT09IFwiZnVuY3Rpb25cIjtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGdldFNldHRpbmdzID0gaGFzU2V0dGluZ3MgJiYgYWRkb24ucGx1Z2luLmdldFNldHRpbmdzUGFuZWwuYmluZChhZGRvbi5wbHVnaW4pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxFcnJvckJvdW5kYXJ5PjxBZGRvbkNhcmQgZWRpdEFkZG9uPXt0aGlzLmVkaXRBZGRvbi5iaW5kKHRoaXMsIGFkZG9uLmlkKX0gZGVsZXRlQWRkb249e3RoaXMuZGVsZXRlQWRkb24uYmluZCh0aGlzLCBhZGRvbi5pZCl9IHNob3dSZWxvYWRJY29uPXtzaG93UmVsb2FkSWNvbn0ga2V5PXthZGRvbi5pZH0gZW5hYmxlZD17YWRkb25TdGF0ZVthZGRvbi5pZF19IGFkZG9uPXthZGRvbn0gb25DaGFuZ2U9e29uQ2hhbmdlfSByZWxvYWQ9e3JlbG9hZH0gaGFzU2V0dGluZ3M9e2hhc1NldHRpbmdzfSBnZXRTZXR0aW5nc1BhbmVsPXtnZXRTZXR0aW5nc30gLz48L0Vycm9yQm91bmRhcnk+O1xyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBlZGl0QWRkb24oaWQpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5lZGl0QWRkb24pIHRoaXMucHJvcHMuZWRpdEFkZG9uKGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkZWxldGVBZGRvbihpZCkge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdGhpcy5wcm9wcy5hZGRvbkxpc3QuZmluZChhID0+IGEuaWQgPT0gaWQpO1xyXG4gICAgICAgIGNvbnN0IHNob3VsZERlbGV0ZSA9IGF3YWl0IHRoaXMuY29uZmlybURlbGV0ZShhZGRvbik7XHJcbiAgICAgICAgaWYgKCFzaG91bGREZWxldGUpIHJldHVybjtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5kZWxldGVBZGRvbikgdGhpcy5wcm9wcy5kZWxldGVBZGRvbihhZGRvbik7XHJcbiAgICB9XHJcblxyXG4gICAgY29uZmlybURlbGV0ZShhZGRvbikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgTW9kYWxzLnNob3dDb25maXJtYXRpb25Nb2RhbChTdHJpbmdzLk1vZGFscy5jb25maXJtQWN0aW9uLCBTdHJpbmdzLkFkZG9ucy5jb25maXJtRGVsZXRlLmZvcm1hdCh7bmFtZTogYWRkb24ubmFtZX0pLCB7XHJcbiAgICAgICAgICAgICAgICBkYW5nZXI6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjb25maXJtVGV4dDogU3RyaW5ncy5BZGRvbnMuZGVsZXRlQWRkb24sXHJcbiAgICAgICAgICAgICAgICBvbkNvbmZpcm06ICgpID0+IHtyZXNvbHZlKHRydWUpO30sXHJcbiAgICAgICAgICAgICAgICBvbkNhbmNlbDogKCkgPT4ge3Jlc29sdmUoZmFsc2UpO31cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IG9yaWdpbmFsUmVuZGVyID0gQWRkb25MaXN0LnByb3RvdHlwZS5yZW5kZXI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShBZGRvbkxpc3QucHJvdG90eXBlLCBcInJlbmRlclwiLCB7XHJcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXHJcbiAgICBzZXQ6IGZ1bmN0aW9uKCkge0xvZ2dlci53YXJuKFwiQWRkb25MaXN0XCIsIFwiQWRkb24gcG9saWN5IGZvciBwbHVnaW5zICM1IGh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvd2lraS9BZGRvbi1Qb2xpY2llcyNwbHVnaW5zXCIpO30sXHJcbiAgICBnZXQ6ICgpID0+IG9yaWdpbmFsUmVuZGVyXHJcbn0pOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/addonlist.jsx\n"); /***/ }), @@ -1042,7 +1042,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Select; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_downarrow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../icons/downarrow */ \"./src/ui/icons/downarrow.jsx\");\n\n\nclass Select extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n open: false,\n value: this.props.value || this.props.options[0].value\n };\n this.dropdown = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.onChange = this.onChange.bind(this);\n this.showMenu = this.showMenu.bind(this);\n this.hideMenu = this.hideMenu.bind(this);\n }\n\n showMenu(event) {\n event.preventDefault();\n this.setState({\n open: true\n }, () => {\n document.addEventListener(\"click\", this.hideMenu);\n });\n }\n\n hideMenu() {\n this.setState({\n open: false\n }, () => {\n document.removeEventListener(\"click\", this.hideMenu);\n });\n }\n\n onChange(value) {\n this.setState({\n value\n });\n if (this.props.onChange) this.props.onChange(value);\n }\n\n get selected() {\n return this.props.options.find(o => o.value == this.state.value);\n }\n\n get options() {\n const selected = this.selected;\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-options\"\n }, this.props.options.map(opt => /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-select-option${selected.value == opt.value ? \" selected\" : \"\"}`,\n onClick: this.onChange.bind(this, opt.value)\n }, opt.label)));\n }\n\n render() {\n const style = this.props.style == \"transparent\" ? \" bd-select-transparent\" : \"\";\n const isOpen = this.state.open ? \" menu-open\" : \"\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-select${style}${isOpen}`,\n onClick: this.showMenu,\n ref: this.dropdown\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-value\"\n }, this.selected.label), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_downarrow__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n className: \"bd-select-arrow\"\n }), this.state.open && this.options);\n }\n\n} // return
\n// \n//
\n//
\n//
{this.selected.label}
\n// \n//
\n//
\n// {this.state.open && this.options}\n//
;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvY29tcG9uZW50cy9kcm9wZG93bi5qc3g/NGE5YyJdLCJuYW1lcyI6WyJTZWxlY3QiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzdGF0ZSIsIm9wZW4iLCJ2YWx1ZSIsIm9wdGlvbnMiLCJkcm9wZG93biIsImNyZWF0ZVJlZiIsIm9uQ2hhbmdlIiwiYmluZCIsInNob3dNZW51IiwiaGlkZU1lbnUiLCJldmVudCIsInByZXZlbnREZWZhdWx0Iiwic2V0U3RhdGUiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2VsZWN0ZWQiLCJmaW5kIiwibyIsIm1hcCIsIm9wdCIsImxhYmVsIiwicmVuZGVyIiwic3R5bGUiLCJpc09wZW4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVlLE1BQU1BLE1BQU4sU0FBcUJDLDZDQUFLLENBQUNDLFNBQTNCLENBQXFDO0FBQ2hEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDQSxTQUFLQyxLQUFMLEdBQWE7QUFBQ0MsVUFBSSxFQUFFLEtBQVA7QUFBY0MsV0FBSyxFQUFFLEtBQUtILEtBQUwsQ0FBV0csS0FBWCxJQUFvQixLQUFLSCxLQUFMLENBQVdJLE9BQVgsQ0FBbUIsQ0FBbkIsRUFBc0JEO0FBQS9ELEtBQWI7QUFDQSxTQUFLRSxRQUFMLEdBQWdCUiw2Q0FBSyxDQUFDUyxTQUFOLEVBQWhCO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQixLQUFLQSxRQUFMLENBQWNDLElBQWQsQ0FBbUIsSUFBbkIsQ0FBaEI7QUFDQSxTQUFLQyxRQUFMLEdBQWdCLEtBQUtBLFFBQUwsQ0FBY0QsSUFBZCxDQUFtQixJQUFuQixDQUFoQjtBQUNBLFNBQUtFLFFBQUwsR0FBZ0IsS0FBS0EsUUFBTCxDQUFjRixJQUFkLENBQW1CLElBQW5CLENBQWhCO0FBQ0g7O0FBRURDLFVBQVEsQ0FBQ0UsS0FBRCxFQUFRO0FBQ1pBLFNBQUssQ0FBQ0MsY0FBTjtBQUNBLFNBQUtDLFFBQUwsQ0FBYztBQUFDWCxVQUFJLEVBQUU7QUFBUCxLQUFkLEVBQTRCLE1BQU07QUFDOUJZLGNBQVEsQ0FBQ0MsZ0JBQVQsQ0FBMEIsT0FBMUIsRUFBbUMsS0FBS0wsUUFBeEM7QUFDSCxLQUZEO0FBR0g7O0FBRURBLFVBQVEsR0FBRztBQUNQLFNBQUtHLFFBQUwsQ0FBYztBQUFDWCxVQUFJLEVBQUU7QUFBUCxLQUFkLEVBQTZCLE1BQU07QUFDL0JZLGNBQVEsQ0FBQ0UsbUJBQVQsQ0FBNkIsT0FBN0IsRUFBc0MsS0FBS04sUUFBM0M7QUFDSCxLQUZEO0FBR0g7O0FBRURILFVBQVEsQ0FBQ0osS0FBRCxFQUFRO0FBQ1osU0FBS1UsUUFBTCxDQUFjO0FBQUNWO0FBQUQsS0FBZDtBQUNBLFFBQUksS0FBS0gsS0FBTCxDQUFXTyxRQUFmLEVBQXlCLEtBQUtQLEtBQUwsQ0FBV08sUUFBWCxDQUFvQkosS0FBcEI7QUFDNUI7O0FBRUQsTUFBSWMsUUFBSixHQUFlO0FBQUMsV0FBTyxLQUFLakIsS0FBTCxDQUFXSSxPQUFYLENBQW1CYyxJQUFuQixDQUF3QkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNoQixLQUFGLElBQVcsS0FBS0YsS0FBTCxDQUFXRSxLQUFuRCxDQUFQO0FBQWtFOztBQUVsRixNQUFJQyxPQUFKLEdBQWM7QUFDVixVQUFNYSxRQUFRLEdBQUcsS0FBS0EsUUFBdEI7QUFDQSx3QkFBTztBQUFLLGVBQVMsRUFBQztBQUFmLE9BQ0YsS0FBS2pCLEtBQUwsQ0FBV0ksT0FBWCxDQUFtQmdCLEdBQW5CLENBQXVCQyxHQUFHLGlCQUN2QjtBQUFLLGVBQVMsRUFBRyxtQkFBa0JKLFFBQVEsQ0FBQ2QsS0FBVCxJQUFrQmtCLEdBQUcsQ0FBQ2xCLEtBQXRCLEdBQThCLFdBQTlCLEdBQTRDLEVBQUcsRUFBbEY7QUFBcUYsYUFBTyxFQUFFLEtBQUtJLFFBQUwsQ0FBY0MsSUFBZCxDQUFtQixJQUFuQixFQUF5QmEsR0FBRyxDQUFDbEIsS0FBN0I7QUFBOUYsT0FBb0lrQixHQUFHLENBQUNDLEtBQXhJLENBREgsQ0FERSxDQUFQO0FBS0g7O0FBRURDLFFBQU0sR0FBRztBQUNMLFVBQU1DLEtBQUssR0FBRyxLQUFLeEIsS0FBTCxDQUFXd0IsS0FBWCxJQUFvQixhQUFwQixHQUFvQyx3QkFBcEMsR0FBK0QsRUFBN0U7QUFDQSxVQUFNQyxNQUFNLEdBQUcsS0FBS3hCLEtBQUwsQ0FBV0MsSUFBWCxHQUFrQixZQUFsQixHQUFpQyxFQUFoRDtBQUNBLHdCQUFRO0FBQUssZUFBUyxFQUFHLFlBQVdzQixLQUFNLEdBQUVDLE1BQU8sRUFBM0M7QUFBOEMsYUFBTyxFQUFFLEtBQUtoQixRQUE1RDtBQUFzRSxTQUFHLEVBQUUsS0FBS0o7QUFBaEYsb0JBQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUFrQyxLQUFLWSxRQUFMLENBQWNLLEtBQWhELENBREosZUFFSSw0REFBQyx3REFBRDtBQUFPLGVBQVMsRUFBQztBQUFqQixNQUZKLEVBR0ssS0FBS3JCLEtBQUwsQ0FBV0MsSUFBWCxJQUFtQixLQUFLRSxPQUg3QixDQUFSO0FBS0g7O0FBL0MrQyxDLENBa0RwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy9jb21wb25lbnRzL2Ryb3Bkb3duLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBBcnJvdyBmcm9tIFwiLi4vLi4vaWNvbnMvZG93bmFycm93XCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWxlY3QgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtvcGVuOiBmYWxzZSwgdmFsdWU6IHRoaXMucHJvcHMudmFsdWUgfHwgdGhpcy5wcm9wcy5vcHRpb25zWzBdLnZhbHVlfTtcclxuICAgICAgICB0aGlzLmRyb3Bkb3duID0gUmVhY3QuY3JlYXRlUmVmKCk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnNob3dNZW51ID0gdGhpcy5zaG93TWVudS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuaGlkZU1lbnUgPSB0aGlzLmhpZGVNZW51LmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd01lbnUoZXZlbnQpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe29wZW46IHRydWV9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCB0aGlzLmhpZGVNZW51KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBoaWRlTWVudSgpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtvcGVuOiBmYWxzZX0sICgpID0+IHtcclxuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuaGlkZU1lbnUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2hhbmdlKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7dmFsdWV9KTtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkNoYW5nZSkgdGhpcy5wcm9wcy5vbkNoYW5nZSh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNlbGVjdGVkKCkge3JldHVybiB0aGlzLnByb3BzLm9wdGlvbnMuZmluZChvID0+IG8udmFsdWUgPT0gdGhpcy5zdGF0ZS52YWx1ZSk7fVxyXG5cclxuICAgIGdldCBvcHRpb25zKCkge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZDtcclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1zZWxlY3Qtb3B0aW9uc1wiPlxyXG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5vcHRpb25zLm1hcChvcHQgPT4gXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGJkLXNlbGVjdC1vcHRpb24ke3NlbGVjdGVkLnZhbHVlID09IG9wdC52YWx1ZSA/IFwiIHNlbGVjdGVkXCIgOiBcIlwifWB9IG9uQ2xpY2s9e3RoaXMub25DaGFuZ2UuYmluZCh0aGlzLCBvcHQudmFsdWUpfT57b3B0LmxhYmVsfTwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc3R5bGUgPSB0aGlzLnByb3BzLnN0eWxlID09IFwidHJhbnNwYXJlbnRcIiA/IFwiIGJkLXNlbGVjdC10cmFuc3BhcmVudFwiIDogXCJcIjtcclxuICAgICAgICBjb25zdCBpc09wZW4gPSB0aGlzLnN0YXRlLm9wZW4gPyBcIiBtZW51LW9wZW5cIiA6IFwiXCI7XHJcbiAgICAgICAgcmV0dXJuICA8ZGl2IGNsYXNzTmFtZT17YGJkLXNlbGVjdCR7c3R5bGV9JHtpc09wZW59YH0gb25DbGljaz17dGhpcy5zaG93TWVudX0gcmVmPXt0aGlzLmRyb3Bkb3dufT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNlbGVjdC12YWx1ZVwiPnt0aGlzLnNlbGVjdGVkLmxhYmVsfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxBcnJvdyBjbGFzc05hbWU9XCJiZC1zZWxlY3QtYXJyb3dcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnN0YXRlLm9wZW4gJiYgdGhpcy5vcHRpb25zfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG59XHJcblxyXG4vLyByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1zZWxlY3Qtd3JhcFwiPlxyXG4vLyA8bGFiZWwgY2xhc3NOYW1lPVwiYmQtbGFiZWxcIj57dGhpcy5wcm9wcy5sYWJlbH08L2xhYmVsPlxyXG4vLyA8ZGl2IGNsYXNzTmFtZT17YGJkLXNlbGVjdCR7c3R5bGV9JHtpc09wZW59YH0gb25DbGljaz17dGhpcy5zaG93TWVudX0gcmVmPXt0aGlzLmRyb3Bkb3dufT5cclxuLy8gICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VsZWN0LWNvbnRyb2xzXCI+XHJcbi8vICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZWxlY3QtdmFsdWVcIj57dGhpcy5zZWxlY3RlZC5sYWJlbH08L2Rpdj5cclxuLy8gICAgICAgICA8QXJyb3cgY2xhc3NOYW1lPVwiYmQtc2VsZWN0LWFycm93XCIgLz5cclxuLy8gICAgIDwvZGl2PlxyXG4vLyA8L2Rpdj5cclxuLy8ge3RoaXMuc3RhdGUub3BlbiAmJiB0aGlzLm9wdGlvbnN9XHJcbi8vIDwvZGl2PjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/settings/components/dropdown.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Select; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_downarrow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../icons/downarrow */ \"./src/ui/icons/downarrow.jsx\");\n\n\nclass Select extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n open: false,\n value: this.props.value || this.props.options[0].value\n };\n this.dropdown = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.onChange = this.onChange.bind(this);\n this.showMenu = this.showMenu.bind(this);\n this.hideMenu = this.hideMenu.bind(this);\n }\n\n showMenu(event) {\n event.preventDefault();\n this.setState({\n open: true\n }, () => {\n document.addEventListener(\"click\", this.hideMenu);\n });\n }\n\n hideMenu() {\n this.setState({\n open: false\n }, () => {\n document.removeEventListener(\"click\", this.hideMenu);\n });\n }\n\n onChange(value) {\n this.setState({\n value\n });\n if (this.props.onChange) this.props.onChange(value);\n }\n\n get selected() {\n return this.props.options.find(o => o.value == this.state.value);\n }\n\n get options() {\n const selected = this.selected;\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-options\"\n }, this.props.options.map(opt => /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-select-option${selected.value == opt.value ? \" selected\" : \"\"}`,\n onClick: this.onChange.bind(this, opt.value)\n }, opt.label)));\n }\n\n render() {\n const style = this.props.style == \"transparent\" ? \" bd-select-transparent\" : \"\";\n const isOpen = this.state.open ? \" menu-open\" : \"\";\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-select${style}${isOpen}`,\n onClick: this.showMenu,\n ref: this.dropdown\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-value\"\n }, this.selected.label), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_downarrow__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n className: \"bd-select-arrow\"\n }), this.state.open && this.options);\n }\n\n} // return
\n// \n//
\n//
\n//
{this.selected.label}
\n// \n//
\n//
\n// {this.state.open && this.options}\n//
;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvY29tcG9uZW50cy9kcm9wZG93bi5qc3g/NGE5YyJdLCJuYW1lcyI6WyJTZWxlY3QiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzdGF0ZSIsIm9wZW4iLCJ2YWx1ZSIsIm9wdGlvbnMiLCJkcm9wZG93biIsImNyZWF0ZVJlZiIsIm9uQ2hhbmdlIiwiYmluZCIsInNob3dNZW51IiwiaGlkZU1lbnUiLCJldmVudCIsInByZXZlbnREZWZhdWx0Iiwic2V0U3RhdGUiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2VsZWN0ZWQiLCJmaW5kIiwibyIsIm1hcCIsIm9wdCIsImxhYmVsIiwicmVuZGVyIiwic3R5bGUiLCJpc09wZW4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVlLE1BQU1BLE1BQU4sU0FBcUJDLHlEQUFLLENBQUNDLFNBQTNCLENBQXFDO0FBQ2hEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDQSxTQUFLQyxLQUFMLEdBQWE7QUFBQ0MsVUFBSSxFQUFFLEtBQVA7QUFBY0MsV0FBSyxFQUFFLEtBQUtILEtBQUwsQ0FBV0csS0FBWCxJQUFvQixLQUFLSCxLQUFMLENBQVdJLE9BQVgsQ0FBbUIsQ0FBbkIsRUFBc0JEO0FBQS9ELEtBQWI7QUFDQSxTQUFLRSxRQUFMLEdBQWdCUix5REFBSyxDQUFDUyxTQUFOLEVBQWhCO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQixLQUFLQSxRQUFMLENBQWNDLElBQWQsQ0FBbUIsSUFBbkIsQ0FBaEI7QUFDQSxTQUFLQyxRQUFMLEdBQWdCLEtBQUtBLFFBQUwsQ0FBY0QsSUFBZCxDQUFtQixJQUFuQixDQUFoQjtBQUNBLFNBQUtFLFFBQUwsR0FBZ0IsS0FBS0EsUUFBTCxDQUFjRixJQUFkLENBQW1CLElBQW5CLENBQWhCO0FBQ0g7O0FBRURDLFVBQVEsQ0FBQ0UsS0FBRCxFQUFRO0FBQ1pBLFNBQUssQ0FBQ0MsY0FBTjtBQUNBLFNBQUtDLFFBQUwsQ0FBYztBQUFDWCxVQUFJLEVBQUU7QUFBUCxLQUFkLEVBQTRCLE1BQU07QUFDOUJZLGNBQVEsQ0FBQ0MsZ0JBQVQsQ0FBMEIsT0FBMUIsRUFBbUMsS0FBS0wsUUFBeEM7QUFDSCxLQUZEO0FBR0g7O0FBRURBLFVBQVEsR0FBRztBQUNQLFNBQUtHLFFBQUwsQ0FBYztBQUFDWCxVQUFJLEVBQUU7QUFBUCxLQUFkLEVBQTZCLE1BQU07QUFDL0JZLGNBQVEsQ0FBQ0UsbUJBQVQsQ0FBNkIsT0FBN0IsRUFBc0MsS0FBS04sUUFBM0M7QUFDSCxLQUZEO0FBR0g7O0FBRURILFVBQVEsQ0FBQ0osS0FBRCxFQUFRO0FBQ1osU0FBS1UsUUFBTCxDQUFjO0FBQUNWO0FBQUQsS0FBZDtBQUNBLFFBQUksS0FBS0gsS0FBTCxDQUFXTyxRQUFmLEVBQXlCLEtBQUtQLEtBQUwsQ0FBV08sUUFBWCxDQUFvQkosS0FBcEI7QUFDNUI7O0FBRUQsTUFBSWMsUUFBSixHQUFlO0FBQUMsV0FBTyxLQUFLakIsS0FBTCxDQUFXSSxPQUFYLENBQW1CYyxJQUFuQixDQUF3QkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNoQixLQUFGLElBQVcsS0FBS0YsS0FBTCxDQUFXRSxLQUFuRCxDQUFQO0FBQWtFOztBQUVsRixNQUFJQyxPQUFKLEdBQWM7QUFDVixVQUFNYSxRQUFRLEdBQUcsS0FBS0EsUUFBdEI7QUFDQSx3QkFBTztBQUFLLGVBQVMsRUFBQztBQUFmLE9BQ0YsS0FBS2pCLEtBQUwsQ0FBV0ksT0FBWCxDQUFtQmdCLEdBQW5CLENBQXVCQyxHQUFHLGlCQUN2QjtBQUFLLGVBQVMsRUFBRyxtQkFBa0JKLFFBQVEsQ0FBQ2QsS0FBVCxJQUFrQmtCLEdBQUcsQ0FBQ2xCLEtBQXRCLEdBQThCLFdBQTlCLEdBQTRDLEVBQUcsRUFBbEY7QUFBcUYsYUFBTyxFQUFFLEtBQUtJLFFBQUwsQ0FBY0MsSUFBZCxDQUFtQixJQUFuQixFQUF5QmEsR0FBRyxDQUFDbEIsS0FBN0I7QUFBOUYsT0FBb0lrQixHQUFHLENBQUNDLEtBQXhJLENBREgsQ0FERSxDQUFQO0FBS0g7O0FBRURDLFFBQU0sR0FBRztBQUNMLFVBQU1DLEtBQUssR0FBRyxLQUFLeEIsS0FBTCxDQUFXd0IsS0FBWCxJQUFvQixhQUFwQixHQUFvQyx3QkFBcEMsR0FBK0QsRUFBN0U7QUFDQSxVQUFNQyxNQUFNLEdBQUcsS0FBS3hCLEtBQUwsQ0FBV0MsSUFBWCxHQUFrQixZQUFsQixHQUFpQyxFQUFoRDtBQUNBLHdCQUFRO0FBQUssZUFBUyxFQUFHLFlBQVdzQixLQUFNLEdBQUVDLE1BQU8sRUFBM0M7QUFBOEMsYUFBTyxFQUFFLEtBQUtoQixRQUE1RDtBQUFzRSxTQUFHLEVBQUUsS0FBS0o7QUFBaEYsb0JBQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUFrQyxLQUFLWSxRQUFMLENBQWNLLEtBQWhELENBREosZUFFSSx3RUFBQyx3REFBRDtBQUFPLGVBQVMsRUFBQztBQUFqQixNQUZKLEVBR0ssS0FBS3JCLEtBQUwsQ0FBV0MsSUFBWCxJQUFtQixLQUFLRSxPQUg3QixDQUFSO0FBS0g7O0FBL0MrQyxDLENBa0RwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy9jb21wb25lbnRzL2Ryb3Bkb3duLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBBcnJvdyBmcm9tIFwiLi4vLi4vaWNvbnMvZG93bmFycm93XCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWxlY3QgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtvcGVuOiBmYWxzZSwgdmFsdWU6IHRoaXMucHJvcHMudmFsdWUgfHwgdGhpcy5wcm9wcy5vcHRpb25zWzBdLnZhbHVlfTtcclxuICAgICAgICB0aGlzLmRyb3Bkb3duID0gUmVhY3QuY3JlYXRlUmVmKCk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnNob3dNZW51ID0gdGhpcy5zaG93TWVudS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuaGlkZU1lbnUgPSB0aGlzLmhpZGVNZW51LmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd01lbnUoZXZlbnQpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe29wZW46IHRydWV9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCB0aGlzLmhpZGVNZW51KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBoaWRlTWVudSgpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtvcGVuOiBmYWxzZX0sICgpID0+IHtcclxuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuaGlkZU1lbnUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2hhbmdlKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7dmFsdWV9KTtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkNoYW5nZSkgdGhpcy5wcm9wcy5vbkNoYW5nZSh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNlbGVjdGVkKCkge3JldHVybiB0aGlzLnByb3BzLm9wdGlvbnMuZmluZChvID0+IG8udmFsdWUgPT0gdGhpcy5zdGF0ZS52YWx1ZSk7fVxyXG5cclxuICAgIGdldCBvcHRpb25zKCkge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZDtcclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1zZWxlY3Qtb3B0aW9uc1wiPlxyXG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5vcHRpb25zLm1hcChvcHQgPT4gXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGJkLXNlbGVjdC1vcHRpb24ke3NlbGVjdGVkLnZhbHVlID09IG9wdC52YWx1ZSA/IFwiIHNlbGVjdGVkXCIgOiBcIlwifWB9IG9uQ2xpY2s9e3RoaXMub25DaGFuZ2UuYmluZCh0aGlzLCBvcHQudmFsdWUpfT57b3B0LmxhYmVsfTwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc3R5bGUgPSB0aGlzLnByb3BzLnN0eWxlID09IFwidHJhbnNwYXJlbnRcIiA/IFwiIGJkLXNlbGVjdC10cmFuc3BhcmVudFwiIDogXCJcIjtcclxuICAgICAgICBjb25zdCBpc09wZW4gPSB0aGlzLnN0YXRlLm9wZW4gPyBcIiBtZW51LW9wZW5cIiA6IFwiXCI7XHJcbiAgICAgICAgcmV0dXJuICA8ZGl2IGNsYXNzTmFtZT17YGJkLXNlbGVjdCR7c3R5bGV9JHtpc09wZW59YH0gb25DbGljaz17dGhpcy5zaG93TWVudX0gcmVmPXt0aGlzLmRyb3Bkb3dufT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNlbGVjdC12YWx1ZVwiPnt0aGlzLnNlbGVjdGVkLmxhYmVsfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxBcnJvdyBjbGFzc05hbWU9XCJiZC1zZWxlY3QtYXJyb3dcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnN0YXRlLm9wZW4gJiYgdGhpcy5vcHRpb25zfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG59XHJcblxyXG4vLyByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1zZWxlY3Qtd3JhcFwiPlxyXG4vLyA8bGFiZWwgY2xhc3NOYW1lPVwiYmQtbGFiZWxcIj57dGhpcy5wcm9wcy5sYWJlbH08L2xhYmVsPlxyXG4vLyA8ZGl2IGNsYXNzTmFtZT17YGJkLXNlbGVjdCR7c3R5bGV9JHtpc09wZW59YH0gb25DbGljaz17dGhpcy5zaG93TWVudX0gcmVmPXt0aGlzLmRyb3Bkb3dufT5cclxuLy8gICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VsZWN0LWNvbnRyb2xzXCI+XHJcbi8vICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZWxlY3QtdmFsdWVcIj57dGhpcy5zZWxlY3RlZC5sYWJlbH08L2Rpdj5cclxuLy8gICAgICAgICA8QXJyb3cgY2xhc3NOYW1lPVwiYmQtc2VsZWN0LWFycm93XCIgLz5cclxuLy8gICAgIDwvZGl2PlxyXG4vLyA8L2Rpdj5cclxuLy8ge3RoaXMuc3RhdGUub3BlbiAmJiB0aGlzLm9wdGlvbnN9XHJcbi8vIDwvZGl2PjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/settings/components/dropdown.jsx\n"); /***/ }), @@ -1054,7 +1054,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return SettingItem; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass SettingItem extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-item\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-header\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"label\", {\n htmlFor: this.props.id,\n className: \"bd-setting-title\"\n }, this.props.name), this.props.children), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-note\"\n }, this.props.note), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-divider\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvY29tcG9uZW50cy9pdGVtLmpzeD83NjU3Il0sIm5hbWVzIjpbIlNldHRpbmdJdGVtIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJwcm9wcyIsImlkIiwibmFtZSIsImNoaWxkcmVuIiwibm90ZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxXQUFOLFNBQTBCQyw2Q0FBSyxDQUFDQyxTQUFoQyxDQUEwQztBQUNyREMsUUFBTSxHQUFHO0FBQ0wsd0JBQU87QUFBSyxlQUFTLEVBQUU7QUFBaEIsb0JBQ0s7QUFBSyxlQUFTLEVBQUU7QUFBaEIsb0JBQ0k7QUFBTyxhQUFPLEVBQUUsS0FBS0MsS0FBTCxDQUFXQyxFQUEzQjtBQUErQixlQUFTLEVBQUU7QUFBMUMsT0FBK0QsS0FBS0QsS0FBTCxDQUFXRSxJQUExRSxDQURKLEVBRUssS0FBS0YsS0FBTCxDQUFXRyxRQUZoQixDQURMLGVBS0s7QUFBSyxlQUFTLEVBQUU7QUFBaEIsT0FBb0MsS0FBS0gsS0FBTCxDQUFXSSxJQUEvQyxDQUxMLGVBTUs7QUFBSyxlQUFTLEVBQUU7QUFBaEIsTUFOTCxDQUFQO0FBUUg7O0FBVm9EIiwiZmlsZSI6Ii4vc3JjL3VpL3NldHRpbmdzL2NvbXBvbmVudHMvaXRlbS5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2V0dGluZ0l0ZW0gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17XCJiZC1zZXR0aW5nLWl0ZW1cIn0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e1wiYmQtc2V0dGluZy1oZWFkZXJcIn0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBodG1sRm9yPXt0aGlzLnByb3BzLmlkfSBjbGFzc05hbWU9e1wiYmQtc2V0dGluZy10aXRsZVwifT57dGhpcy5wcm9wcy5uYW1lfTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVufVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcImJkLXNldHRpbmctbm90ZVwifT57dGhpcy5wcm9wcy5ub3RlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcImJkLXNldHRpbmctZGl2aWRlclwifSAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/components/item.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return SettingItem; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass SettingItem extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-item\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-header\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"label\", {\n htmlFor: this.props.id,\n className: \"bd-setting-title\"\n }, this.props.name), this.props.children), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-note\"\n }, this.props.note), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-divider\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvY29tcG9uZW50cy9pdGVtLmpzeD83NjU3Il0sIm5hbWVzIjpbIlNldHRpbmdJdGVtIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJwcm9wcyIsImlkIiwibmFtZSIsImNoaWxkcmVuIiwibm90ZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxXQUFOLFNBQTBCQyx5REFBSyxDQUFDQyxTQUFoQyxDQUEwQztBQUNyREMsUUFBTSxHQUFHO0FBQ0wsd0JBQU87QUFBSyxlQUFTLEVBQUU7QUFBaEIsb0JBQ0s7QUFBSyxlQUFTLEVBQUU7QUFBaEIsb0JBQ0k7QUFBTyxhQUFPLEVBQUUsS0FBS0MsS0FBTCxDQUFXQyxFQUEzQjtBQUErQixlQUFTLEVBQUU7QUFBMUMsT0FBK0QsS0FBS0QsS0FBTCxDQUFXRSxJQUExRSxDQURKLEVBRUssS0FBS0YsS0FBTCxDQUFXRyxRQUZoQixDQURMLGVBS0s7QUFBSyxlQUFTLEVBQUU7QUFBaEIsT0FBb0MsS0FBS0gsS0FBTCxDQUFXSSxJQUEvQyxDQUxMLGVBTUs7QUFBSyxlQUFTLEVBQUU7QUFBaEIsTUFOTCxDQUFQO0FBUUg7O0FBVm9EIiwiZmlsZSI6Ii4vc3JjL3VpL3NldHRpbmdzL2NvbXBvbmVudHMvaXRlbS5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2V0dGluZ0l0ZW0gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17XCJiZC1zZXR0aW5nLWl0ZW1cIn0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e1wiYmQtc2V0dGluZy1oZWFkZXJcIn0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBodG1sRm9yPXt0aGlzLnByb3BzLmlkfSBjbGFzc05hbWU9e1wiYmQtc2V0dGluZy10aXRsZVwifT57dGhpcy5wcm9wcy5uYW1lfTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVufVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcImJkLXNldHRpbmctbm90ZVwifT57dGhpcy5wcm9wcy5ub3RlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcImJkLXNldHRpbmctZGl2aWRlclwifSAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/components/item.jsx\n"); /***/ }), @@ -1066,7 +1066,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Search; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_search__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../icons/search */ \"./src/ui/icons/search.jsx\");\n\n\nclass Search extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-search-wrapper\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n onChange: this.props.onChange,\n onKeyDown: this.props.onKeyDown,\n type: \"text\",\n className: \"bd-search\",\n placeholder: this.props.placeholder,\n maxLength: \"50\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_search__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvY29tcG9uZW50cy9zZWFyY2guanN4PzY3MjQiXSwibmFtZXMiOlsiU2VhcmNoIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJwcm9wcyIsIm9uQ2hhbmdlIiwib25LZXlEb3duIiwicGxhY2Vob2xkZXIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVlLE1BQU1BLE1BQU4sU0FBcUJDLDZDQUFLLENBQUNDLFNBQTNCLENBQXFDO0FBQ2hEQyxRQUFNLEdBQUc7QUFDTCx3QkFBTztBQUFLLGVBQVMsRUFBQztBQUFmLG9CQUNLO0FBQU8sY0FBUSxFQUFFLEtBQUtDLEtBQUwsQ0FBV0MsUUFBNUI7QUFBc0MsZUFBUyxFQUFFLEtBQUtELEtBQUwsQ0FBV0UsU0FBNUQ7QUFBdUUsVUFBSSxFQUFDLE1BQTVFO0FBQW1GLGVBQVMsRUFBQyxXQUE3RjtBQUF5RyxpQkFBVyxFQUFFLEtBQUtGLEtBQUwsQ0FBV0csV0FBakk7QUFBOEksZUFBUyxFQUFDO0FBQXhKLE1BREwsZUFFSyw0REFBQyxxREFBRCxPQUZMLENBQVA7QUFJSDs7QUFOK0MiLCJmaWxlIjoiLi9zcmMvdWkvc2V0dGluZ3MvY29tcG9uZW50cy9zZWFyY2guanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IFNlYXJjaEljb24gZnJvbSBcIi4uLy4uL2ljb25zL3NlYXJjaFwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VhcmNoIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1zZWFyY2gtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBvbkNoYW5nZT17dGhpcy5wcm9wcy5vbkNoYW5nZX0gb25LZXlEb3duPXt0aGlzLnByb3BzLm9uS2V5RG93bn0gdHlwZT1cInRleHRcIiBjbGFzc05hbWU9XCJiZC1zZWFyY2hcIiBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5wbGFjZWhvbGRlcn0gbWF4TGVuZ3RoPVwiNTBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uIC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/settings/components/search.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Search; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_search__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../icons/search */ \"./src/ui/icons/search.jsx\");\n\n\nclass Search extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-search-wrapper\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n onChange: this.props.onChange,\n onKeyDown: this.props.onKeyDown,\n type: \"text\",\n className: \"bd-search\",\n placeholder: this.props.placeholder,\n maxLength: \"50\"\n }), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_search__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvY29tcG9uZW50cy9zZWFyY2guanN4PzY3MjQiXSwibmFtZXMiOlsiU2VhcmNoIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJwcm9wcyIsIm9uQ2hhbmdlIiwib25LZXlEb3duIiwicGxhY2Vob2xkZXIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVlLE1BQU1BLE1BQU4sU0FBcUJDLHlEQUFLLENBQUNDLFNBQTNCLENBQXFDO0FBQ2hEQyxRQUFNLEdBQUc7QUFDTCx3QkFBTztBQUFLLGVBQVMsRUFBQztBQUFmLG9CQUNLO0FBQU8sY0FBUSxFQUFFLEtBQUtDLEtBQUwsQ0FBV0MsUUFBNUI7QUFBc0MsZUFBUyxFQUFFLEtBQUtELEtBQUwsQ0FBV0UsU0FBNUQ7QUFBdUUsVUFBSSxFQUFDLE1BQTVFO0FBQW1GLGVBQVMsRUFBQyxXQUE3RjtBQUF5RyxpQkFBVyxFQUFFLEtBQUtGLEtBQUwsQ0FBV0csV0FBakk7QUFBOEksZUFBUyxFQUFDO0FBQXhKLE1BREwsZUFFSyx3RUFBQyxxREFBRCxPQUZMLENBQVA7QUFJSDs7QUFOK0MiLCJmaWxlIjoiLi9zcmMvdWkvc2V0dGluZ3MvY29tcG9uZW50cy9zZWFyY2guanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IFNlYXJjaEljb24gZnJvbSBcIi4uLy4uL2ljb25zL3NlYXJjaFwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VhcmNoIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1zZWFyY2gtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBvbkNoYW5nZT17dGhpcy5wcm9wcy5vbkNoYW5nZX0gb25LZXlEb3duPXt0aGlzLnByb3BzLm9uS2V5RG93bn0gdHlwZT1cInRleHRcIiBjbGFzc05hbWU9XCJiZC1zZWFyY2hcIiBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5wbGFjZWhvbGRlcn0gbWF4TGVuZ3RoPVwiNTBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uIC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/settings/components/search.jsx\n"); /***/ }), @@ -1078,7 +1078,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Switch; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Switch extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n checked: this.props.checked\n };\n this.onChange = this.onChange.bind(this);\n }\n\n onChange() {\n if (this.props.disabled) return;\n this.props.onChange(!this.state.checked);\n this.setState({\n checked: !this.state.checked\n });\n }\n\n render() {\n const enabledClass = this.props.disabled ? \" bd-switch-disabled\" : \"\";\n const checkedClass = this.state.checked ? \" bd-switch-checked\" : \"\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-switch` + enabledClass + checkedClass\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n type: \"checkbox\",\n id: this.props.id,\n className: `bd-checkbox`,\n disabled: this.props.disabled,\n checked: this.state.checked,\n onChange: this.onChange\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvY29tcG9uZW50cy9zd2l0Y2guanN4PzYxZDIiXSwibmFtZXMiOlsiU3dpdGNoIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3RhdGUiLCJjaGVja2VkIiwib25DaGFuZ2UiLCJiaW5kIiwiZGlzYWJsZWQiLCJzZXRTdGF0ZSIsInJlbmRlciIsImVuYWJsZWRDbGFzcyIsImNoZWNrZWRDbGFzcyIsImlkIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLE1BQU4sU0FBcUJDLDZDQUFLLENBQUNDLFNBQTNCLENBQXFDO0FBQ2hEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDQSxTQUFLQyxLQUFMLEdBQWE7QUFBQ0MsYUFBTyxFQUFFLEtBQUtGLEtBQUwsQ0FBV0U7QUFBckIsS0FBYjtBQUNBLFNBQUtDLFFBQUwsR0FBZ0IsS0FBS0EsUUFBTCxDQUFjQyxJQUFkLENBQW1CLElBQW5CLENBQWhCO0FBQ0g7O0FBRURELFVBQVEsR0FBRztBQUNQLFFBQUksS0FBS0gsS0FBTCxDQUFXSyxRQUFmLEVBQXlCO0FBQ3pCLFNBQUtMLEtBQUwsQ0FBV0csUUFBWCxDQUFvQixDQUFDLEtBQUtGLEtBQUwsQ0FBV0MsT0FBaEM7QUFDQSxTQUFLSSxRQUFMLENBQWM7QUFBQ0osYUFBTyxFQUFFLENBQUMsS0FBS0QsS0FBTCxDQUFXQztBQUF0QixLQUFkO0FBQ0g7O0FBRURLLFFBQU0sR0FBRztBQUNMLFVBQU1DLFlBQVksR0FBRyxLQUFLUixLQUFMLENBQVdLLFFBQVgsR0FBc0IscUJBQXRCLEdBQThDLEVBQW5FO0FBQ0EsVUFBTUksWUFBWSxHQUFHLEtBQUtSLEtBQUwsQ0FBV0MsT0FBWCxHQUFxQixvQkFBckIsR0FBNEMsRUFBakU7QUFDQSx3QkFBUTtBQUFLLGVBQVMsRUFBRyxXQUFELEdBQWNNLFlBQWQsR0FBNkJDO0FBQTdDLG9CQUNJO0FBQU8sVUFBSSxFQUFDLFVBQVo7QUFBdUIsUUFBRSxFQUFFLEtBQUtULEtBQUwsQ0FBV1UsRUFBdEM7QUFBMEMsZUFBUyxFQUFHLGFBQXREO0FBQW9FLGNBQVEsRUFBRSxLQUFLVixLQUFMLENBQVdLLFFBQXpGO0FBQW1HLGFBQU8sRUFBRSxLQUFLSixLQUFMLENBQVdDLE9BQXZIO0FBQWdJLGNBQVEsRUFBRSxLQUFLQztBQUEvSSxNQURKLENBQVI7QUFHSDs7QUFuQitDIiwiZmlsZSI6Ii4vc3JjL3VpL3NldHRpbmdzL2NvbXBvbmVudHMvc3dpdGNoLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTd2l0Y2ggZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtjaGVja2VkOiB0aGlzLnByb3BzLmNoZWNrZWR9O1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSB0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuZGlzYWJsZWQpIHJldHVybjtcclxuICAgICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKCF0aGlzLnN0YXRlLmNoZWNrZWQpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2NoZWNrZWQ6ICF0aGlzLnN0YXRlLmNoZWNrZWR9KTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3QgZW5hYmxlZENsYXNzID0gdGhpcy5wcm9wcy5kaXNhYmxlZCA/IFwiIGJkLXN3aXRjaC1kaXNhYmxlZFwiIDogXCJcIjtcclxuICAgICAgICBjb25zdCBjaGVja2VkQ2xhc3MgPSB0aGlzLnN0YXRlLmNoZWNrZWQgPyBcIiBiZC1zd2l0Y2gtY2hlY2tlZFwiIDogXCJcIjtcclxuICAgICAgICByZXR1cm4gIDxkaXYgY2xhc3NOYW1lPXtgYmQtc3dpdGNoYCArIGVuYWJsZWRDbGFzcyArIGNoZWNrZWRDbGFzc30+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPXt0aGlzLnByb3BzLmlkfSBjbGFzc05hbWU9e2BiZC1jaGVja2JveGB9IGRpc2FibGVkPXt0aGlzLnByb3BzLmRpc2FibGVkfSBjaGVja2VkPXt0aGlzLnN0YXRlLmNoZWNrZWR9IG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlfSAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/components/switch.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Switch; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass Switch extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n checked: this.props.checked\n };\n this.onChange = this.onChange.bind(this);\n }\n\n onChange() {\n if (this.props.disabled) return;\n this.props.onChange(!this.state.checked);\n this.setState({\n checked: !this.state.checked\n });\n }\n\n render() {\n const enabledClass = this.props.disabled ? \" bd-switch-disabled\" : \"\";\n const checkedClass = this.state.checked ? \" bd-switch-checked\" : \"\";\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-switch` + enabledClass + checkedClass\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n type: \"checkbox\",\n id: this.props.id,\n className: `bd-checkbox`,\n disabled: this.props.disabled,\n checked: this.state.checked,\n onChange: this.onChange\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvY29tcG9uZW50cy9zd2l0Y2guanN4PzYxZDIiXSwibmFtZXMiOlsiU3dpdGNoIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3RhdGUiLCJjaGVja2VkIiwib25DaGFuZ2UiLCJiaW5kIiwiZGlzYWJsZWQiLCJzZXRTdGF0ZSIsInJlbmRlciIsImVuYWJsZWRDbGFzcyIsImNoZWNrZWRDbGFzcyIsImlkIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLE1BQU4sU0FBcUJDLHlEQUFLLENBQUNDLFNBQTNCLENBQXFDO0FBQ2hEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDQSxTQUFLQyxLQUFMLEdBQWE7QUFBQ0MsYUFBTyxFQUFFLEtBQUtGLEtBQUwsQ0FBV0U7QUFBckIsS0FBYjtBQUNBLFNBQUtDLFFBQUwsR0FBZ0IsS0FBS0EsUUFBTCxDQUFjQyxJQUFkLENBQW1CLElBQW5CLENBQWhCO0FBQ0g7O0FBRURELFVBQVEsR0FBRztBQUNQLFFBQUksS0FBS0gsS0FBTCxDQUFXSyxRQUFmLEVBQXlCO0FBQ3pCLFNBQUtMLEtBQUwsQ0FBV0csUUFBWCxDQUFvQixDQUFDLEtBQUtGLEtBQUwsQ0FBV0MsT0FBaEM7QUFDQSxTQUFLSSxRQUFMLENBQWM7QUFBQ0osYUFBTyxFQUFFLENBQUMsS0FBS0QsS0FBTCxDQUFXQztBQUF0QixLQUFkO0FBQ0g7O0FBRURLLFFBQU0sR0FBRztBQUNMLFVBQU1DLFlBQVksR0FBRyxLQUFLUixLQUFMLENBQVdLLFFBQVgsR0FBc0IscUJBQXRCLEdBQThDLEVBQW5FO0FBQ0EsVUFBTUksWUFBWSxHQUFHLEtBQUtSLEtBQUwsQ0FBV0MsT0FBWCxHQUFxQixvQkFBckIsR0FBNEMsRUFBakU7QUFDQSx3QkFBUTtBQUFLLGVBQVMsRUFBRyxXQUFELEdBQWNNLFlBQWQsR0FBNkJDO0FBQTdDLG9CQUNJO0FBQU8sVUFBSSxFQUFDLFVBQVo7QUFBdUIsUUFBRSxFQUFFLEtBQUtULEtBQUwsQ0FBV1UsRUFBdEM7QUFBMEMsZUFBUyxFQUFHLGFBQXREO0FBQW9FLGNBQVEsRUFBRSxLQUFLVixLQUFMLENBQVdLLFFBQXpGO0FBQW1HLGFBQU8sRUFBRSxLQUFLSixLQUFMLENBQVdDLE9BQXZIO0FBQWdJLGNBQVEsRUFBRSxLQUFLQztBQUEvSSxNQURKLENBQVI7QUFHSDs7QUFuQitDIiwiZmlsZSI6Ii4vc3JjL3VpL3NldHRpbmdzL2NvbXBvbmVudHMvc3dpdGNoLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTd2l0Y2ggZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtjaGVja2VkOiB0aGlzLnByb3BzLmNoZWNrZWR9O1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSB0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuZGlzYWJsZWQpIHJldHVybjtcclxuICAgICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKCF0aGlzLnN0YXRlLmNoZWNrZWQpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2NoZWNrZWQ6ICF0aGlzLnN0YXRlLmNoZWNrZWR9KTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3QgZW5hYmxlZENsYXNzID0gdGhpcy5wcm9wcy5kaXNhYmxlZCA/IFwiIGJkLXN3aXRjaC1kaXNhYmxlZFwiIDogXCJcIjtcclxuICAgICAgICBjb25zdCBjaGVja2VkQ2xhc3MgPSB0aGlzLnN0YXRlLmNoZWNrZWQgPyBcIiBiZC1zd2l0Y2gtY2hlY2tlZFwiIDogXCJcIjtcclxuICAgICAgICByZXR1cm4gIDxkaXYgY2xhc3NOYW1lPXtgYmQtc3dpdGNoYCArIGVuYWJsZWRDbGFzcyArIGNoZWNrZWRDbGFzc30+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPXt0aGlzLnByb3BzLmlkfSBjbGFzc05hbWU9e2BiZC1jaGVja2JveGB9IGRpc2FibGVkPXt0aGlzLnByb3BzLmRpc2FibGVkfSBjaGVja2VkPXt0aGlzLnN0YXRlLmNoZWNrZWR9IG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlfSAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/components/switch.jsx\n"); /***/ }), @@ -1090,7 +1090,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Divider; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Divider extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-divider divider-3573oO marginTop8-1DLZ1n marginBottom40-2vIwTv\"\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvZGl2aWRlci5qc3g/YzhjYyJdLCJuYW1lcyI6WyJEaXZpZGVyIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsT0FBTixTQUFzQkMsNkNBQUssQ0FBQ0MsU0FBNUIsQ0FBc0M7QUFDakRDLFFBQU0sR0FBRztBQUNMLHdCQUFPO0FBQUssZUFBUyxFQUFDO0FBQWYsTUFBUDtBQUNIOztBQUhnRCIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy9kaXZpZGVyLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXZpZGVyIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1kaXZpZGVyIGRpdmlkZXItMzU3M29PIG1hcmdpblRvcDgtMURMWjFuIG1hcmdpbkJvdHRvbTQwLTJ2SXdUdlwiIC8+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/divider.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Divider; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass Divider extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-divider divider-3573oO marginTop8-1DLZ1n marginBottom40-2vIwTv\"\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvZGl2aWRlci5qc3g/YzhjYyJdLCJuYW1lcyI6WyJEaXZpZGVyIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsT0FBTixTQUFzQkMseURBQUssQ0FBQ0MsU0FBNUIsQ0FBc0M7QUFDakRDLFFBQU0sR0FBRztBQUNMLHdCQUFPO0FBQUssZUFBUyxFQUFDO0FBQWYsTUFBUDtBQUNIOztBQUhnRCIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy9kaXZpZGVyLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXZpZGVyIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1kaXZpZGVyIGRpdmlkZXItMzU3M29PIG1hcmdpblRvcDgtMURMWjFuIG1hcmdpbkJvdHRvbTQwLTJ2SXdUdlwiIC8+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/divider.jsx\n"); /***/ }), @@ -1102,7 +1102,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Group; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _divider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./divider */ \"./src/ui/settings/divider.jsx\");\n/* harmony import */ var _components_switch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/switch */ \"./src/ui/settings/components/switch.jsx\");\n/* harmony import */ var _components_dropdown__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/dropdown */ \"./src/ui/settings/components/dropdown.jsx\");\n/* harmony import */ var _components_item__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/item */ \"./src/ui/settings/components/item.jsx\");\n\n\n\n\n\n\nconst baseClassName = \"bd-settings-group\";\nclass Group extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n\n if (this.props.button && this.props.collapsible) {\n const original = this.props.button.onClick;\n\n this.props.button.onClick = event => {\n event.stopPropagation();\n original(...arguments);\n };\n }\n\n if (!this.props.hasOwnProperty(\"shown\")) this.props.shown = true;\n this.container = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.state = {\n collapsed: this.props.collapsible && !this.props.shown\n };\n this.onChange = this.onChange.bind(this);\n this.toggleCollapse = this.toggleCollapse.bind(this);\n }\n\n toggleCollapse() {\n const container = this.container.current;\n const timeout = this.state.collapsed ? 300 : 1;\n container.style.setProperty(\"height\", container.scrollHeight + \"px\");\n container.classList.add(\"animating\");\n this.setState({\n collapsed: !this.state.collapsed\n }, () => setTimeout(() => {\n container.style.setProperty(\"height\", \"\");\n container.classList.remove(\"animating\");\n }, timeout));\n if (this.props.onDrawerToggle) this.props.onDrawerToggle(this.state.collapsed);\n }\n\n onChange(id, value) {\n if (!this.props.onChange) return;\n if (this.props.id) this.props.onChange(this.props.id, id, value);else this.props.onChange(id, value);\n this.forceUpdate();\n }\n\n render() {\n const {\n settings\n } = this.props;\n const collapseClass = this.props.collapsible ? `collapsible ${this.state.collapsed ? \"collapsed\" : \"expanded\"}` : \"\";\n const groupClass = `${baseClassName} ${collapseClass}`;\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: groupClass\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_title__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: this.props.name,\n collapsible: this.props.collapsible,\n onClick: this.toggleCollapse,\n button: this.props.button,\n isGroup: true\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-settings-container\",\n ref: this.container\n }, settings.filter(s => !s.hidden).map(setting => {\n let component = null;\n if (setting.type == \"dropdown\") component = /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_dropdown__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n disabled: setting.disabled,\n id: setting.id,\n options: setting.options,\n value: setting.value,\n onChange: this.onChange.bind(this, setting.id)\n });\n if (setting.type == \"switch\") component = /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_switch__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n disabled: setting.disabled,\n id: setting.id,\n checked: setting.value,\n onChange: this.onChange.bind(this, setting.id)\n });\n if (!component) return null;\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_item__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n id: setting.id,\n key: setting.id,\n name: setting.name,\n note: setting.note\n }, component);\n })), this.props.showDivider && /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_divider__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null));\n }\n\n}\nconst originalRender = Group.prototype.render;\nObject.defineProperty(Group.prototype, \"render\", {\n enumerable: false,\n configurable: false,\n set: function () {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"Group\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n },\n get: () => originalRender\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvZ3JvdXAuanN4PzFiNzIiXSwibmFtZXMiOlsiYmFzZUNsYXNzTmFtZSIsIkdyb3VwIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiYnV0dG9uIiwiY29sbGFwc2libGUiLCJvcmlnaW5hbCIsIm9uQ2xpY2siLCJldmVudCIsInN0b3BQcm9wYWdhdGlvbiIsImFyZ3VtZW50cyIsImhhc093blByb3BlcnR5Iiwic2hvd24iLCJjb250YWluZXIiLCJjcmVhdGVSZWYiLCJzdGF0ZSIsImNvbGxhcHNlZCIsIm9uQ2hhbmdlIiwiYmluZCIsInRvZ2dsZUNvbGxhcHNlIiwiY3VycmVudCIsInRpbWVvdXQiLCJzdHlsZSIsInNldFByb3BlcnR5Iiwic2Nyb2xsSGVpZ2h0IiwiY2xhc3NMaXN0IiwiYWRkIiwic2V0U3RhdGUiLCJzZXRUaW1lb3V0IiwicmVtb3ZlIiwib25EcmF3ZXJUb2dnbGUiLCJpZCIsInZhbHVlIiwiZm9yY2VVcGRhdGUiLCJyZW5kZXIiLCJzZXR0aW5ncyIsImNvbGxhcHNlQ2xhc3MiLCJncm91cENsYXNzIiwibmFtZSIsImZpbHRlciIsInMiLCJoaWRkZW4iLCJtYXAiLCJzZXR0aW5nIiwiY29tcG9uZW50IiwidHlwZSIsImRpc2FibGVkIiwib3B0aW9ucyIsIm5vdGUiLCJzaG93RGl2aWRlciIsIm9yaWdpbmFsUmVuZGVyIiwicHJvdG90eXBlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwic2V0IiwiTG9nZ2VyIiwid2FybiIsImdldCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLGFBQWEsR0FBRyxtQkFBdEI7QUFFZSxNQUFNQyxLQUFOLFNBQW9CQyw2Q0FBSyxDQUFDQyxTQUEx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eUJ5QixPQUFPLENBQUNaLEVBQWpDO0FBQXRGLFFBQVo7QUFDOUIsVUFBSSxDQUFDYSxTQUFMLEVBQWdCLE9BQU8sSUFBUDtBQUNoQiwwQkFBTyw0REFBQyx3REFBRDtBQUFNLFVBQUUsRUFBRUQsT0FBTyxDQUFDWixFQUFsQjtBQUFzQixXQUFHLEVBQUVZLE9BQU8sQ0FBQ1osRUFBbkM7QUFBdUMsWUFBSSxFQUFFWSxPQUFPLENBQUNMLElBQXJEO0FBQTJELFlBQUksRUFBRUssT0FBTyxDQUFDSztBQUF6RSxTQUFnRkosU0FBaEYsQ0FBUDtBQUNILEtBTkEsQ0FETCxDQUZMLEVBV00sS0FBS3pDLEtBQUwsQ0FBVzhDLFdBQVgsaUJBQTBCLDREQUFDLGdEQUFELE9BWGhDLENBQVA7QUFhSDs7QUE1RDhDO0FBK0RuRCxNQUFNQyxjQUFjLEdBQUduRCxLQUFLLENBQUNvRCxTQUFOLENBQWdCakIsTUFBdkM7QUFDQWtCLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQnRELEtBQUssQ0FBQ29ELFNBQTVCLEVBQXVDLFFBQXZDLEVBQWlEO0FBQzdDRyxZQUFVLEVBQUUsS0FEaUM7QUFFN0NDLGNBQVksRUFBRSxLQUYrQjtBQUc3Q0MsS0FBRyxFQUFFLFlBQVc7QUFBQ0Msa0RBQU0sQ0FBQ0MsSUFBUCxDQUFZLE9BQVosRUFBcUIscUdBQXJCO0FBQTZILEdBSGpHO0FBSTdDQyxLQUFHLEVBQUUsTUFBTVQ7QUFKa0MsQ0FBakQiLCJmaWxlIjoiLi9zcmMvdWkvc2V0dGluZ3MvZ3JvdXAuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgTG9nZ2VyfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgVGl0bGUgZnJvbSBcIi4vdGl0bGVcIjtcclxuaW1wb3J0IERpdmlkZXIgZnJvbSBcIi4vZGl2aWRlclwiO1xyXG5pbXBvcnQgU3dpdGNoIGZyb20gXCIuL2NvbXBvbmVudHMvc3dpdGNoXCI7XHJcbmltcG9ydCBEcm9wZG93biBmcm9tIFwiLi9jb21wb25lbnRzL2Ryb3Bkb3duXCI7XHJcbmltcG9ydCBJdGVtIGZyb20gXCIuL2NvbXBvbmVudHMvaXRlbVwiO1xyXG5cclxuY29uc3QgYmFzZUNsYXNzTmFtZSA9IFwiYmQtc2V0dGluZ3MtZ3JvdXBcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdyb3VwIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5idXR0b24gJiYgdGhpcy5wcm9wcy5jb2xsYXBzaWJsZSkge1xyXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbCA9IHRoaXMucHJvcHMuYnV0dG9uLm9uQ2xpY2s7XHJcbiAgICAgICAgICAgIHRoaXMucHJvcHMuYnV0dG9uLm9uQ2xpY2sgPSAoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgb3JpZ2luYWwoLi4uYXJndW1lbnRzKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5wcm9wcy5oYXNPd25Qcm9wZXJ0eShcInNob3duXCIpKSB0aGlzLnByb3BzLnNob3duID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5jb250YWluZXIgPSBSZWFjdC5jcmVhdGVSZWYoKTtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICAgICAgICBjb2xsYXBzZWQ6IHRoaXMucHJvcHMuY29sbGFwc2libGUgJiYgIXRoaXMucHJvcHMuc2hvd25cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMudG9nZ2xlQ29sbGFwc2UgPSB0aGlzLnRvZ2dsZUNvbGxhcHNlLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlQ29sbGFwc2UoKSB7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jb250YWluZXIuY3VycmVudDtcclxuICAgICAgICBjb25zdCB0aW1lb3V0ID0gdGhpcy5zdGF0ZS5jb2xsYXBzZWQgPyAzMDAgOiAxO1xyXG4gICAgICAgIGNvbnRhaW5lci5zdHlsZS5zZXRQcm9wZXJ0eShcImhlaWdodFwiLCBjb250YWluZXIuc2Nyb2xsSGVpZ2h0ICsgXCJweFwiKTtcclxuICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZChcImFuaW1hdGluZ1wiKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtjb2xsYXBzZWQ6ICF0aGlzLnN0YXRlLmNvbGxhcHNlZH0sICgpID0+IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb250YWluZXIuc3R5bGUuc2V0UHJvcGVydHkoXCJoZWlnaHRcIiwgXCJcIik7XHJcbiAgICAgICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKFwiYW5pbWF0aW5nXCIpO1xyXG4gICAgICAgIH0sIHRpbWVvdXQpKTtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkRyYXdlclRvZ2dsZSkgdGhpcy5wcm9wcy5vbkRyYXdlclRvZ2dsZSh0aGlzLnN0YXRlLmNvbGxhcHNlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UoaWQsIHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnByb3BzLm9uQ2hhbmdlKSByZXR1cm47XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuaWQpIHRoaXMucHJvcHMub25DaGFuZ2UodGhpcy5wcm9wcy5pZCwgaWQsIHZhbHVlKTtcclxuICAgICAgICBlbHNlIHRoaXMucHJvcHMub25DaGFuZ2UoaWQsIHZhbHVlKTtcclxuICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHtzZXR0aW5nc30gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgIGNvbnN0IGNvbGxhcHNlQ2xhc3MgPSB0aGlzLnByb3BzLmNvbGxhcHNpYmxlID8gYGNvbGxhcHNpYmxlICR7dGhpcy5zdGF0ZS5jb2xsYXBzZWQgPyBcImNvbGxhcHNlZFwiIDogXCJleHBhbmRlZFwifWAgOiBcIlwiO1xyXG4gICAgICAgIGNvbnN0IGdyb3VwQ2xhc3MgPSBgJHtiYXNlQ2xhc3NOYW1lfSAke2NvbGxhcHNlQ2xhc3N9YDtcclxuXHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtncm91cENsYXNzfT5cclxuICAgICAgICAgICAgICAgICAgICA8VGl0bGUgdGV4dD17dGhpcy5wcm9wcy5uYW1lfSBjb2xsYXBzaWJsZT17dGhpcy5wcm9wcy5jb2xsYXBzaWJsZX0gb25DbGljaz17dGhpcy50b2dnbGVDb2xsYXBzZX0gYnV0dG9uPXt0aGlzLnByb3BzLmJ1dHRvbn0gaXNHcm91cD17dHJ1ZX0gLz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNldHRpbmdzLWNvbnRhaW5lclwiIHJlZj17dGhpcy5jb250YWluZXJ9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7c2V0dGluZ3MuZmlsdGVyKHMgPT4gIXMuaGlkZGVuKS5tYXAoKHNldHRpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb21wb25lbnQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmcudHlwZSA9PSBcImRyb3Bkb3duXCIpIGNvbXBvbmVudCA9IDxEcm9wZG93biBkaXNhYmxlZD17c2V0dGluZy5kaXNhYmxlZH0gaWQ9e3NldHRpbmcuaWR9IG9wdGlvbnM9e3NldHRpbmcub3B0aW9uc30gdmFsdWU9e3NldHRpbmcudmFsdWV9IG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcywgc2V0dGluZy5pZCl9IC8+O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmcudHlwZSA9PSBcInN3aXRjaFwiKSBjb21wb25lbnQgPSA8U3dpdGNoIGRpc2FibGVkPXtzZXR0aW5nLmRpc2FibGVkfSBpZD17c2V0dGluZy5pZH0gY2hlY2tlZD17c2V0dGluZy52YWx1ZX0gb25DaGFuZ2U9e3RoaXMub25DaGFuZ2UuYmluZCh0aGlzLCBzZXR0aW5nLmlkKX0gLz47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbXBvbmVudCkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPEl0ZW0gaWQ9e3NldHRpbmcuaWR9IGtleT17c2V0dGluZy5pZH0gbmFtZT17c2V0dGluZy5uYW1lfSBub3RlPXtzZXR0aW5nLm5vdGV9Pntjb21wb25lbnR9PC9JdGVtPjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuc2hvd0RpdmlkZXIgJiYgPERpdmlkZXIgLz59XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IG9yaWdpbmFsUmVuZGVyID0gR3JvdXAucHJvdG90eXBlLnJlbmRlcjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEdyb3VwLnByb3RvdHlwZSwgXCJyZW5kZXJcIiwge1xyXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICBjb25maWd1cmFibGU6IGZhbHNlLFxyXG4gICAgc2V0OiBmdW5jdGlvbigpIHtMb2dnZXIud2FybihcIkdyb3VwXCIsIFwiQWRkb24gcG9saWN5IGZvciBwbHVnaW5zICM1IGh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvd2lraS9BZGRvbi1Qb2xpY2llcyNwbHVnaW5zXCIpO30sXHJcbiAgICBnZXQ6ICgpID0+IG9yaWdpbmFsUmVuZGVyXHJcbn0pOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/group.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Group; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _divider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./divider */ \"./src/ui/settings/divider.jsx\");\n/* harmony import */ var _components_switch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/switch */ \"./src/ui/settings/components/switch.jsx\");\n/* harmony import */ var _components_dropdown__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/dropdown */ \"./src/ui/settings/components/dropdown.jsx\");\n/* harmony import */ var _components_item__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/item */ \"./src/ui/settings/components/item.jsx\");\n\n\n\n\n\n\nconst baseClassName = \"bd-settings-group\";\nclass Group extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n\n if (this.props.button && this.props.collapsible) {\n const original = this.props.button.onClick;\n\n this.props.button.onClick = event => {\n event.stopPropagation();\n original(...arguments);\n };\n }\n\n if (!this.props.hasOwnProperty(\"shown\")) this.props.shown = true;\n this.container = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.state = {\n collapsed: this.props.collapsible && !this.props.shown\n };\n this.onChange = this.onChange.bind(this);\n this.toggleCollapse = this.toggleCollapse.bind(this);\n }\n\n toggleCollapse() {\n const container = this.container.current;\n const timeout = this.state.collapsed ? 300 : 1;\n container.style.setProperty(\"height\", container.scrollHeight + \"px\");\n container.classList.add(\"animating\");\n this.setState({\n collapsed: !this.state.collapsed\n }, () => setTimeout(() => {\n container.style.setProperty(\"height\", \"\");\n container.classList.remove(\"animating\");\n }, timeout));\n if (this.props.onDrawerToggle) this.props.onDrawerToggle(this.state.collapsed);\n }\n\n onChange(id, value) {\n if (!this.props.onChange) return;\n if (this.props.id) this.props.onChange(this.props.id, id, value);else this.props.onChange(id, value);\n this.forceUpdate();\n }\n\n render() {\n const {\n settings\n } = this.props;\n const collapseClass = this.props.collapsible ? `collapsible ${this.state.collapsed ? \"collapsed\" : \"expanded\"}` : \"\";\n const groupClass = `${baseClassName} ${collapseClass}`;\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: groupClass\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_title__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: this.props.name,\n collapsible: this.props.collapsible,\n onClick: this.toggleCollapse,\n button: this.props.button,\n isGroup: true\n }), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-settings-container\",\n ref: this.container\n }, settings.filter(s => !s.hidden).map(setting => {\n let component = null;\n if (setting.type == \"dropdown\") component = /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_dropdown__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n disabled: setting.disabled,\n id: setting.id,\n options: setting.options,\n value: setting.value,\n onChange: this.onChange.bind(this, setting.id)\n });\n if (setting.type == \"switch\") component = /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_switch__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n disabled: setting.disabled,\n id: setting.id,\n checked: setting.value,\n onChange: this.onChange.bind(this, setting.id)\n });\n if (!component) return null;\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_item__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n id: setting.id,\n key: setting.id,\n name: setting.name,\n note: setting.note\n }, component);\n })), this.props.showDivider && /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_divider__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null));\n }\n\n}\nconst originalRender = Group.prototype.render;\nObject.defineProperty(Group.prototype, \"render\", {\n enumerable: false,\n configurable: false,\n set: function () {\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"Group\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n },\n get: () => originalRender\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvZ3JvdXAuanN4PzFiNzIiXSwibmFtZXMiOlsiYmFzZUNsYXNzTmFtZSIsIkdyb3VwIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiYnV0dG9uIiwiY29sbGFwc2libGUiLCJvcmlnaW5hbCIsIm9uQ2xpY2siLCJldmVudCIsInN0b3BQcm9wYWdhdGlvbiIsImFyZ3VtZW50cyIsImhhc093blByb3BlcnR5Iiwic2hvd24iLCJjb250YWluZXIiLCJjcmVhdGVSZWYiLCJzdGF0ZSIsImNvbGxhcHNlZCIsIm9uQ2hhbmdlIiwiYmluZCIsInRvZ2dsZUNvbGxhcHNlIiwiY3VycmVudCIsInRpbWVvdXQiLCJzdHlsZSIsInNldFByb3BlcnR5Iiwic2Nyb2xsSGVpZ2h0IiwiY2xhc3NMaXN0IiwiYWRkIiwic2V0U3RhdGUiLCJzZXRUaW1lb3V0IiwicmVtb3ZlIiwib25EcmF3ZXJUb2dnbGUiLCJpZCIsInZhbHVlIiwiZm9yY2VVcGRhdGUiLCJyZW5kZXIiLCJzZXR0aW5ncyIsImNvbGxhcHNlQ2xhc3MiLCJncm91cENsYXNzIiwibmFtZSIsImZpbHRlciIsInMiLCJoaWRkZW4iLCJtYXAiLCJzZXR0aW5nIiwiY29tcG9uZW50IiwidHlwZSIsImRpc2FibGVkIiwib3B0aW9ucyIsIm5vdGUiLCJzaG93RGl2aWRlciIsIm9yaWdpbmFsUmVuZGVyIiwicHJvdG90eXBlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwic2V0IiwiTG9nZ2VyIiwid2FybiIsImdldCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLGFBQWEsR0FBRyxtQkFBdEI7QUFFZSxNQUFNQyxLQUFOLFNBQW9CQyx5REFBSyxDQUFDQyxTQUEx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eUJ5QixPQUFPLENBQUNaLEVBQWpDO0FBQXRGLFFBQVo7QUFDOUIsVUFBSSxDQUFDYSxTQUFMLEVBQWdCLE9BQU8sSUFBUDtBQUNoQiwwQkFBTyx3RUFBQyx3REFBRDtBQUFNLFVBQUUsRUFBRUQsT0FBTyxDQUFDWixFQUFsQjtBQUFzQixXQUFHLEVBQUVZLE9BQU8sQ0FBQ1osRUFBbkM7QUFBdUMsWUFBSSxFQUFFWSxPQUFPLENBQUNMLElBQXJEO0FBQTJELFlBQUksRUFBRUssT0FBTyxDQUFDSztBQUF6RSxTQUFnRkosU0FBaEYsQ0FBUDtBQUNILEtBTkEsQ0FETCxDQUZMLEVBV00sS0FBS3pDLEtBQUwsQ0FBVzhDLFdBQVgsaUJBQTBCLHdFQUFDLGdEQUFELE9BWGhDLENBQVA7QUFhSDs7QUE1RDhDO0FBK0RuRCxNQUFNQyxjQUFjLEdBQUduRCxLQUFLLENBQUNvRCxTQUFOLENBQWdCakIsTUFBdkM7QUFDQWtCLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQnRELEtBQUssQ0FBQ29ELFNBQTVCLEVBQXVDLFFBQXZDLEVBQWlEO0FBQzdDRyxZQUFVLEVBQUUsS0FEaUM7QUFFN0NDLGNBQVksRUFBRSxLQUYrQjtBQUc3Q0MsS0FBRyxFQUFFLFlBQVc7QUFBQ0MsOERBQU0sQ0FBQ0MsSUFBUCxDQUFZLE9BQVosRUFBcUIscUdBQXJCO0FBQTZILEdBSGpHO0FBSTdDQyxLQUFHLEVBQUUsTUFBTVQ7QUFKa0MsQ0FBakQiLCJmaWxlIjoiLi9zcmMvdWkvc2V0dGluZ3MvZ3JvdXAuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgTG9nZ2VyfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgVGl0bGUgZnJvbSBcIi4vdGl0bGVcIjtcclxuaW1wb3J0IERpdmlkZXIgZnJvbSBcIi4vZGl2aWRlclwiO1xyXG5pbXBvcnQgU3dpdGNoIGZyb20gXCIuL2NvbXBvbmVudHMvc3dpdGNoXCI7XHJcbmltcG9ydCBEcm9wZG93biBmcm9tIFwiLi9jb21wb25lbnRzL2Ryb3Bkb3duXCI7XHJcbmltcG9ydCBJdGVtIGZyb20gXCIuL2NvbXBvbmVudHMvaXRlbVwiO1xyXG5cclxuY29uc3QgYmFzZUNsYXNzTmFtZSA9IFwiYmQtc2V0dGluZ3MtZ3JvdXBcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdyb3VwIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5idXR0b24gJiYgdGhpcy5wcm9wcy5jb2xsYXBzaWJsZSkge1xyXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbCA9IHRoaXMucHJvcHMuYnV0dG9uLm9uQ2xpY2s7XHJcbiAgICAgICAgICAgIHRoaXMucHJvcHMuYnV0dG9uLm9uQ2xpY2sgPSAoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgb3JpZ2luYWwoLi4uYXJndW1lbnRzKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5wcm9wcy5oYXNPd25Qcm9wZXJ0eShcInNob3duXCIpKSB0aGlzLnByb3BzLnNob3duID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5jb250YWluZXIgPSBSZWFjdC5jcmVhdGVSZWYoKTtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICAgICAgICBjb2xsYXBzZWQ6IHRoaXMucHJvcHMuY29sbGFwc2libGUgJiYgIXRoaXMucHJvcHMuc2hvd25cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMudG9nZ2xlQ29sbGFwc2UgPSB0aGlzLnRvZ2dsZUNvbGxhcHNlLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlQ29sbGFwc2UoKSB7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jb250YWluZXIuY3VycmVudDtcclxuICAgICAgICBjb25zdCB0aW1lb3V0ID0gdGhpcy5zdGF0ZS5jb2xsYXBzZWQgPyAzMDAgOiAxO1xyXG4gICAgICAgIGNvbnRhaW5lci5zdHlsZS5zZXRQcm9wZXJ0eShcImhlaWdodFwiLCBjb250YWluZXIuc2Nyb2xsSGVpZ2h0ICsgXCJweFwiKTtcclxuICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZChcImFuaW1hdGluZ1wiKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtjb2xsYXBzZWQ6ICF0aGlzLnN0YXRlLmNvbGxhcHNlZH0sICgpID0+IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb250YWluZXIuc3R5bGUuc2V0UHJvcGVydHkoXCJoZWlnaHRcIiwgXCJcIik7XHJcbiAgICAgICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKFwiYW5pbWF0aW5nXCIpO1xyXG4gICAgICAgIH0sIHRpbWVvdXQpKTtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkRyYXdlclRvZ2dsZSkgdGhpcy5wcm9wcy5vbkRyYXdlclRvZ2dsZSh0aGlzLnN0YXRlLmNvbGxhcHNlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UoaWQsIHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnByb3BzLm9uQ2hhbmdlKSByZXR1cm47XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuaWQpIHRoaXMucHJvcHMub25DaGFuZ2UodGhpcy5wcm9wcy5pZCwgaWQsIHZhbHVlKTtcclxuICAgICAgICBlbHNlIHRoaXMucHJvcHMub25DaGFuZ2UoaWQsIHZhbHVlKTtcclxuICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHtzZXR0aW5nc30gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgIGNvbnN0IGNvbGxhcHNlQ2xhc3MgPSB0aGlzLnByb3BzLmNvbGxhcHNpYmxlID8gYGNvbGxhcHNpYmxlICR7dGhpcy5zdGF0ZS5jb2xsYXBzZWQgPyBcImNvbGxhcHNlZFwiIDogXCJleHBhbmRlZFwifWAgOiBcIlwiO1xyXG4gICAgICAgIGNvbnN0IGdyb3VwQ2xhc3MgPSBgJHtiYXNlQ2xhc3NOYW1lfSAke2NvbGxhcHNlQ2xhc3N9YDtcclxuXHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtncm91cENsYXNzfT5cclxuICAgICAgICAgICAgICAgICAgICA8VGl0bGUgdGV4dD17dGhpcy5wcm9wcy5uYW1lfSBjb2xsYXBzaWJsZT17dGhpcy5wcm9wcy5jb2xsYXBzaWJsZX0gb25DbGljaz17dGhpcy50b2dnbGVDb2xsYXBzZX0gYnV0dG9uPXt0aGlzLnByb3BzLmJ1dHRvbn0gaXNHcm91cD17dHJ1ZX0gLz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNldHRpbmdzLWNvbnRhaW5lclwiIHJlZj17dGhpcy5jb250YWluZXJ9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7c2V0dGluZ3MuZmlsdGVyKHMgPT4gIXMuaGlkZGVuKS5tYXAoKHNldHRpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb21wb25lbnQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmcudHlwZSA9PSBcImRyb3Bkb3duXCIpIGNvbXBvbmVudCA9IDxEcm9wZG93biBkaXNhYmxlZD17c2V0dGluZy5kaXNhYmxlZH0gaWQ9e3NldHRpbmcuaWR9IG9wdGlvbnM9e3NldHRpbmcub3B0aW9uc30gdmFsdWU9e3NldHRpbmcudmFsdWV9IG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcywgc2V0dGluZy5pZCl9IC8+O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmcudHlwZSA9PSBcInN3aXRjaFwiKSBjb21wb25lbnQgPSA8U3dpdGNoIGRpc2FibGVkPXtzZXR0aW5nLmRpc2FibGVkfSBpZD17c2V0dGluZy5pZH0gY2hlY2tlZD17c2V0dGluZy52YWx1ZX0gb25DaGFuZ2U9e3RoaXMub25DaGFuZ2UuYmluZCh0aGlzLCBzZXR0aW5nLmlkKX0gLz47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbXBvbmVudCkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPEl0ZW0gaWQ9e3NldHRpbmcuaWR9IGtleT17c2V0dGluZy5pZH0gbmFtZT17c2V0dGluZy5uYW1lfSBub3RlPXtzZXR0aW5nLm5vdGV9Pntjb21wb25lbnR9PC9JdGVtPjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuc2hvd0RpdmlkZXIgJiYgPERpdmlkZXIgLz59XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IG9yaWdpbmFsUmVuZGVyID0gR3JvdXAucHJvdG90eXBlLnJlbmRlcjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEdyb3VwLnByb3RvdHlwZSwgXCJyZW5kZXJcIiwge1xyXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICBjb25maWd1cmFibGU6IGZhbHNlLFxyXG4gICAgc2V0OiBmdW5jdGlvbigpIHtMb2dnZXIud2FybihcIkdyb3VwXCIsIFwiQWRkb24gcG9saWN5IGZvciBwbHVnaW5zICM1IGh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvd2lraS9BZGRvbi1Qb2xpY2llcyNwbHVnaW5zXCIpO30sXHJcbiAgICBnZXQ6ICgpID0+IG9yaWdpbmFsUmVuZGVyXHJcbn0pOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/group.jsx\n"); /***/ }), @@ -1114,7 +1114,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return SettingsTitle; });\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_history__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/history */ \"./src/ui/icons/history.jsx\");\n/* harmony import */ var _modals__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../modals */ \"./src/ui/modals.js\");\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\n\n\nconst SidebarComponents = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.Header && m.Separator && m.Item);\nconst Tooltip = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByDisplayName(\"Tooltip\");\nclass SettingsTitle extends modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"div\", {\n className: \"bd-sidebar-header\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(SidebarComponents.Header, null, \"BandagedBD\"), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: \"Changelog\"\n }, props => /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"div\", _extends({}, props, {\n className: \"bd-changelog-button\",\n onClick: () => _modals__WEBPACK_IMPORTED_MODULE_3__[\"default\"].showChangelogModal(data__WEBPACK_IMPORTED_MODULE_0__[\"Changelog\"])\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_icons_history__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"bd-icon\",\n size: \"16px\"\n }))));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3Mvc2lkZWJhcmhlYWRlci5qc3g/YTk1YSJdLCJuYW1lcyI6WyJTaWRlYmFyQ29tcG9uZW50cyIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0TW9kdWxlIiwibSIsIkhlYWRlciIsIlNlcGFyYXRvciIsIkl0ZW0iLCJUb29sdGlwIiwiZ2V0QnlEaXNwbGF5TmFtZSIsIlNldHRpbmdzVGl0bGUiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJyZW5kZXIiLCJNb2RhbHMiLCJzaG93Q2hhbmdlbG9nTW9kYWwiLCJDaGFuZ2Vsb2ciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQSxNQUFNQSxpQkFBaUIsR0FBR0Msc0RBQWMsQ0FBQ0MsU0FBZixDQUF5QkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLE1BQUYsSUFBWUQsQ0FBQyxDQUFDRSxTQUFkLElBQTJCRixDQUFDLENBQUNHLElBQTNELENBQTFCO0FBQ0EsTUFBTUMsT0FBTyxHQUFHTixzREFBYyxDQUFDTyxnQkFBZixDQUFnQyxTQUFoQyxDQUFoQjtBQUVlLE1BQU1DLGFBQU4sU0FBNEJDLDZDQUFLLENBQUNDLFNBQWxDLENBQTRDO0FBQ3ZEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDSDs7QUFFREMsUUFBTSxHQUFHO0FBQ0wsd0JBQU87QUFBSyxlQUFTLEVBQUM7QUFBZixvQkFDSyw0REFBQyxpQkFBRCxDQUFtQixNQUFuQixxQkFETCxlQUVLLDREQUFDLE9BQUQ7QUFBUyxXQUFLLEVBQUMsT0FBZjtBQUF1QixjQUFRLEVBQUMsS0FBaEM7QUFBc0MsVUFBSSxFQUFDO0FBQTNDLE9BQ0tELEtBQUssaUJBQ0YsZ0ZBQVNBLEtBQVQ7QUFBZ0IsZUFBUyxFQUFDLHFCQUExQjtBQUFnRCxhQUFPLEVBQUUsTUFBTUUsK0NBQU0sQ0FBQ0Msa0JBQVAsQ0FBMEJDLDhDQUExQjtBQUEvRCxxQkFDSSw0REFBQyxzREFBRDtBQUFhLGVBQVMsRUFBQyxTQUF2QjtBQUFpQyxVQUFJLEVBQUM7QUFBdEMsTUFESixDQUZSLENBRkwsQ0FBUDtBQVVIOztBQWhCc0QiLCJmaWxlIjoiLi9zcmMvdWkvc2V0dGluZ3Mvc2lkZWJhcmhlYWRlci5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZWxvZ30gZnJvbSBcImRhdGFcIjtcclxuaW1wb3J0IHtSZWFjdCwgV2VicGFja01vZHVsZXN9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBIaXN0b3J5SWNvbiBmcm9tIFwiLi4vaWNvbnMvaGlzdG9yeVwiO1xyXG5pbXBvcnQgTW9kYWxzIGZyb20gXCIuLi9tb2RhbHNcIjtcclxuXHJcbmNvbnN0IFNpZGViYXJDb21wb25lbnRzID0gV2VicGFja01vZHVsZXMuZ2V0TW9kdWxlKG0gPT4gbS5IZWFkZXIgJiYgbS5TZXBhcmF0b3IgJiYgbS5JdGVtKTtcclxuY29uc3QgVG9vbHRpcCA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5RGlzcGxheU5hbWUoXCJUb29sdGlwXCIpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2V0dGluZ3NUaXRsZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2lkZWJhci1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8U2lkZWJhckNvbXBvbmVudHMuSGVhZGVyPkJhbmRhZ2VkQkQ8L1NpZGViYXJDb21wb25lbnRzLkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcCBjb2xvcj1cImJsYWNrXCIgcG9zaXRpb249XCJ0b3BcIiB0ZXh0PVwiQ2hhbmdlbG9nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcyA9PiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgey4uLnByb3BzfSBjbGFzc05hbWU9XCJiZC1jaGFuZ2Vsb2ctYnV0dG9uXCIgb25DbGljaz17KCkgPT4gTW9kYWxzLnNob3dDaGFuZ2Vsb2dNb2RhbChDaGFuZ2Vsb2cpfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlzdG9yeUljb24gY2xhc3NOYW1lPVwiYmQtaWNvblwiIHNpemU9XCIxNnB4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/sidebarheader.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return SettingsTitle; });\n/* harmony import */ var _data_data_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../data/data.js */ \"./src/data/data.js\");\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_history__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/history */ \"./src/ui/icons/history.jsx\");\n/* harmony import */ var _modals__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../modals */ \"./src/ui/modals.js\");\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\n\n\nconst SidebarComponents = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.Header && m.Separator && m.Item);\nconst Tooltip = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByDisplayName(\"Tooltip\");\nclass SettingsTitle extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"div\", {\n className: \"bd-sidebar-header\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(SidebarComponents.Header, null, \"BandagedBD\"), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: \"Changelog\"\n }, props => /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"div\", _extends({}, props, {\n className: \"bd-changelog-button\",\n onClick: () => _modals__WEBPACK_IMPORTED_MODULE_3__[\"default\"].showChangelogModal(_data_data_js__WEBPACK_IMPORTED_MODULE_0__[\"Changelog\"])\n }), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_icons_history__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"bd-icon\",\n size: \"16px\"\n }))));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3Mvc2lkZWJhcmhlYWRlci5qc3g/YTk1YSJdLCJuYW1lcyI6WyJTaWRlYmFyQ29tcG9uZW50cyIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0TW9kdWxlIiwibSIsIkhlYWRlciIsIlNlcGFyYXRvciIsIkl0ZW0iLCJUb29sdGlwIiwiZ2V0QnlEaXNwbGF5TmFtZSIsIlNldHRpbmdzVGl0bGUiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJyZW5kZXIiLCJNb2RhbHMiLCJzaG93Q2hhbmdlbG9nTW9kYWwiLCJDaGFuZ2Vsb2ciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQSxNQUFNQSxpQkFBaUIsR0FBR0Msa0VBQWMsQ0FBQ0MsU0FBZixDQUF5QkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLE1BQUYsSUFBWUQsQ0FBQyxDQUFDRSxTQUFkLElBQTJCRixDQUFDLENBQUNHLElBQTNELENBQTFCO0FBQ0EsTUFBTUMsT0FBTyxHQUFHTixrRUFBYyxDQUFDTyxnQkFBZixDQUFnQyxTQUFoQyxDQUFoQjtBQUVlLE1BQU1DLGFBQU4sU0FBNEJDLHlEQUFLLENBQUNDLFNBQWxDLENBQTRDO0FBQ3ZEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDSDs7QUFFREMsUUFBTSxHQUFHO0FBQ0wsd0JBQU87QUFBSyxlQUFTLEVBQUM7QUFBZixvQkFDSyx3RUFBQyxpQkFBRCxDQUFtQixNQUFuQixxQkFETCxlQUVLLHdFQUFDLE9BQUQ7QUFBUyxXQUFLLEVBQUMsT0FBZjtBQUF1QixjQUFRLEVBQUMsS0FBaEM7QUFBc0MsVUFBSSxFQUFDO0FBQTNDLE9BQ0tELEtBQUssaUJBQ0YsNEZBQVNBLEtBQVQ7QUFBZ0IsZUFBUyxFQUFDLHFCQUExQjtBQUFnRCxhQUFPLEVBQUUsTUFBTUUsK0NBQU0sQ0FBQ0Msa0JBQVAsQ0FBMEJDLHVEQUExQjtBQUEvRCxxQkFDSSx3RUFBQyxzREFBRDtBQUFhLGVBQVMsRUFBQyxTQUF2QjtBQUFpQyxVQUFJLEVBQUM7QUFBdEMsTUFESixDQUZSLENBRkwsQ0FBUDtBQVVIOztBQWhCc0QiLCJmaWxlIjoiLi9zcmMvdWkvc2V0dGluZ3Mvc2lkZWJhcmhlYWRlci5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZWxvZ30gZnJvbSBcImRhdGFcIjtcclxuaW1wb3J0IHtSZWFjdCwgV2VicGFja01vZHVsZXN9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBIaXN0b3J5SWNvbiBmcm9tIFwiLi4vaWNvbnMvaGlzdG9yeVwiO1xyXG5pbXBvcnQgTW9kYWxzIGZyb20gXCIuLi9tb2RhbHNcIjtcclxuXHJcbmNvbnN0IFNpZGViYXJDb21wb25lbnRzID0gV2VicGFja01vZHVsZXMuZ2V0TW9kdWxlKG0gPT4gbS5IZWFkZXIgJiYgbS5TZXBhcmF0b3IgJiYgbS5JdGVtKTtcclxuY29uc3QgVG9vbHRpcCA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5RGlzcGxheU5hbWUoXCJUb29sdGlwXCIpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2V0dGluZ3NUaXRsZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2lkZWJhci1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8U2lkZWJhckNvbXBvbmVudHMuSGVhZGVyPkJhbmRhZ2VkQkQ8L1NpZGViYXJDb21wb25lbnRzLkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcCBjb2xvcj1cImJsYWNrXCIgcG9zaXRpb249XCJ0b3BcIiB0ZXh0PVwiQ2hhbmdlbG9nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcyA9PiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgey4uLnByb3BzfSBjbGFzc05hbWU9XCJiZC1jaGFuZ2Vsb2ctYnV0dG9uXCIgb25DbGljaz17KCkgPT4gTW9kYWxzLnNob3dDaGFuZ2Vsb2dNb2RhbChDaGFuZ2Vsb2cpfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlzdG9yeUljb24gY2xhc3NOYW1lPVwiYmQtaWNvblwiIHNpemU9XCIxNnB4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/sidebarheader.jsx\n"); /***/ }), @@ -1126,7 +1126,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return SettingsTitle; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nconst className = \"bd-settings-title h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi defaultColor-1_ajX0 defaultMarginh2-2LTaUL marginBottom20-32qID7\";\nconst className2 = \"bd-settings-title bd-settings-group-title h5-18_1nd title-3sZWYQ size12-3R0845 height16-2Lv3qA weightSemiBold-NJexzi da-h5 da-title da-size12 da-height16 da-weightSemiBold marginBottom4-2qk4Hy da-marginBottom4 marginTop8-1DLZ1n da-marginTop8\";\nclass SettingsTitle extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n } //h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi da-h2 da-title da-size16 da-height20 da-weightSemiBold defaultColor-1_ajX0 da-defaultColor marginTop60-3PGbtK da-marginTop60 marginBottom20-32qID7 da-marginBottom20\n\n\n render() {\n const baseClass = this.props.isGroup ? className2 : className;\n const titleClass = this.props.className ? `${baseClass} ${this.props.className}` : baseClass;\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"h2\", {\n className: titleClass,\n onClick: () => {\n this.props.onClick && this.props.onClick();\n }\n }, this.props.text, this.props.button && /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n className: \"bd-button bd-button-title\",\n onClick: this.props.button.onClick\n }, this.props.button.title), this.props.otherChildren);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvdGl0bGUuanN4P2I1OWIiXSwibmFtZXMiOlsiY2xhc3NOYW1lIiwiY2xhc3NOYW1lMiIsIlNldHRpbmdzVGl0bGUiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJyZW5kZXIiLCJiYXNlQ2xhc3MiLCJpc0dyb3VwIiwidGl0bGVDbGFzcyIsIm9uQ2xpY2siLCJ0ZXh0IiwiYnV0dG9uIiwidGl0bGUiLCJvdGhlckNoaWxkcmVuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBLE1BQU1BLFNBQVMsR0FBRywrSkFBbEI7QUFDQSxNQUFNQyxVQUFVLEdBQUcsbVBBQW5CO0FBRWUsTUFBTUMsYUFBTixTQUE0QkMsNkNBQUssQ0FBQ0MsU0FBbEMsQ0FBNEM7QUFDdkRDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2YsVUFBTUEsS0FBTjtBQUNILEdBSHNELENBSTNEOzs7QUFDSUMsUUFBTSxHQUFHO0FBQ0wsVUFBTUMsU0FBUyxHQUFHLEtBQUtGLEtBQUwsQ0FBV0csT0FBWCxHQUFxQlIsVUFBckIsR0FBa0NELFNBQXBEO0FBQ0EsVUFBTVUsVUFBVSxHQUFHLEtBQUtKLEtBQUwsQ0FBV04sU0FBWCxHQUF3QixHQUFFUSxTQUFVLElBQUcsS0FBS0YsS0FBTCxDQUFXTixTQUFVLEVBQTVELEdBQWdFUSxTQUFuRjtBQUNBLHdCQUFPO0FBQUksZUFBUyxFQUFFRSxVQUFmO0FBQTJCLGFBQU8sRUFBRSxNQUFNO0FBQUMsYUFBS0osS0FBTCxDQUFXSyxPQUFYLElBQXNCLEtBQUtMLEtBQUwsQ0FBV0ssT0FBWCxFQUF0QjtBQUE0QztBQUF2RixPQUNFLEtBQUtMLEtBQUwsQ0FBV00sSUFEYixFQUVFLEtBQUtOLEtBQUwsQ0FBV08sTUFBWCxpQkFBcUI7QUFBUSxlQUFTLEVBQUMsMkJBQWxCO0FBQThDLGFBQU8sRUFBRSxLQUFLUCxLQUFMLENBQVdPLE1BQVgsQ0FBa0JGO0FBQXpFLE9BQW1GLEtBQUtMLEtBQUwsQ0FBV08sTUFBWCxDQUFrQkMsS0FBckcsQ0FGdkIsRUFHRSxLQUFLUixLQUFMLENBQVdTLGFBSGIsQ0FBUDtBQUtIOztBQWJzRCIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy90aXRsZS5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuY29uc3QgY2xhc3NOYW1lID0gXCJiZC1zZXR0aW5ncy10aXRsZSBoMi0yZ1dFLW8gdGl0bGUtM3NaV1lRIHNpemUxNi0xNGNHejUgaGVpZ2h0MjAtbU8yZUlOIHdlaWdodFNlbWlCb2xkLU5KZXh6aSBkZWZhdWx0Q29sb3ItMV9halgwIGRlZmF1bHRNYXJnaW5oMi0yTFRhVUwgbWFyZ2luQm90dG9tMjAtMzJxSUQ3XCI7XHJcbmNvbnN0IGNsYXNzTmFtZTIgPSBcImJkLXNldHRpbmdzLXRpdGxlIGJkLXNldHRpbmdzLWdyb3VwLXRpdGxlIGg1LTE4XzFuZCB0aXRsZS0zc1pXWVEgc2l6ZTEyLTNSMDg0NSBoZWlnaHQxNi0yTHYzcUEgd2VpZ2h0U2VtaUJvbGQtTkpleHppIGRhLWg1IGRhLXRpdGxlIGRhLXNpemUxMiBkYS1oZWlnaHQxNiBkYS13ZWlnaHRTZW1pQm9sZCBtYXJnaW5Cb3R0b200LTJxazRIeSBkYS1tYXJnaW5Cb3R0b200IG1hcmdpblRvcDgtMURMWjFuIGRhLW1hcmdpblRvcDhcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNldHRpbmdzVGl0bGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICB9XHJcbi8vaDItMmdXRS1vIHRpdGxlLTNzWldZUSBzaXplMTYtMTRjR3o1IGhlaWdodDIwLW1PMmVJTiB3ZWlnaHRTZW1pQm9sZC1OSmV4emkgZGEtaDIgZGEtdGl0bGUgZGEtc2l6ZTE2IGRhLWhlaWdodDIwIGRhLXdlaWdodFNlbWlCb2xkIGRlZmF1bHRDb2xvci0xX2FqWDAgZGEtZGVmYXVsdENvbG9yIG1hcmdpblRvcDYwLTNQR2J0SyBkYS1tYXJnaW5Ub3A2MCBtYXJnaW5Cb3R0b20yMC0zMnFJRDcgZGEtbWFyZ2luQm90dG9tMjBcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBiYXNlQ2xhc3MgPSB0aGlzLnByb3BzLmlzR3JvdXAgPyBjbGFzc05hbWUyIDogY2xhc3NOYW1lO1xyXG4gICAgICAgIGNvbnN0IHRpdGxlQ2xhc3MgPSB0aGlzLnByb3BzLmNsYXNzTmFtZSA/IGAke2Jhc2VDbGFzc30gJHt0aGlzLnByb3BzLmNsYXNzTmFtZX1gIDogYmFzZUNsYXNzO1xyXG4gICAgICAgIHJldHVybiA8aDIgY2xhc3NOYW1lPXt0aXRsZUNsYXNzfSBvbkNsaWNrPXsoKSA9PiB7dGhpcy5wcm9wcy5vbkNsaWNrICYmIHRoaXMucHJvcHMub25DbGljaygpO319PlxyXG4gICAgICAgICAgICAgICAge3RoaXMucHJvcHMudGV4dH1cclxuICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmJ1dHRvbiAmJiA8YnV0dG9uIGNsYXNzTmFtZT1cImJkLWJ1dHRvbiBiZC1idXR0b24tdGl0bGVcIiBvbkNsaWNrPXt0aGlzLnByb3BzLmJ1dHRvbi5vbkNsaWNrfT57dGhpcy5wcm9wcy5idXR0b24udGl0bGV9PC9idXR0b24+fVxyXG4gICAgICAgICAgICAgICAge3RoaXMucHJvcHMub3RoZXJDaGlsZHJlbn1cclxuICAgICAgICAgICAgICAgIDwvaDI+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/title.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return SettingsTitle; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nconst className = \"bd-settings-title h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi defaultColor-1_ajX0 defaultMarginh2-2LTaUL marginBottom20-32qID7\";\nconst className2 = \"bd-settings-title bd-settings-group-title h5-18_1nd title-3sZWYQ size12-3R0845 height16-2Lv3qA weightSemiBold-NJexzi da-h5 da-title da-size12 da-height16 da-weightSemiBold marginBottom4-2qk4Hy da-marginBottom4 marginTop8-1DLZ1n da-marginTop8\";\nclass SettingsTitle extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n } //h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi da-h2 da-title da-size16 da-height20 da-weightSemiBold defaultColor-1_ajX0 da-defaultColor marginTop60-3PGbtK da-marginTop60 marginBottom20-32qID7 da-marginBottom20\n\n\n render() {\n const baseClass = this.props.isGroup ? className2 : className;\n const titleClass = this.props.className ? `${baseClass} ${this.props.className}` : baseClass;\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"h2\", {\n className: titleClass,\n onClick: () => {\n this.props.onClick && this.props.onClick();\n }\n }, this.props.text, this.props.button && /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n className: \"bd-button bd-button-title\",\n onClick: this.props.button.onClick\n }, this.props.button.title), this.props.otherChildren);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvdGl0bGUuanN4P2I1OWIiXSwibmFtZXMiOlsiY2xhc3NOYW1lIiwiY2xhc3NOYW1lMiIsIlNldHRpbmdzVGl0bGUiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJyZW5kZXIiLCJiYXNlQ2xhc3MiLCJpc0dyb3VwIiwidGl0bGVDbGFzcyIsIm9uQ2xpY2siLCJ0ZXh0IiwiYnV0dG9uIiwidGl0bGUiLCJvdGhlckNoaWxkcmVuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBLE1BQU1BLFNBQVMsR0FBRywrSkFBbEI7QUFDQSxNQUFNQyxVQUFVLEdBQUcsbVBBQW5CO0FBRWUsTUFBTUMsYUFBTixTQUE0QkMseURBQUssQ0FBQ0MsU0FBbEMsQ0FBNEM7QUFDdkRDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2YsVUFBTUEsS0FBTjtBQUNILEdBSHNELENBSTNEOzs7QUFDSUMsUUFBTSxHQUFHO0FBQ0wsVUFBTUMsU0FBUyxHQUFHLEtBQUtGLEtBQUwsQ0FBV0csT0FBWCxHQUFxQlIsVUFBckIsR0FBa0NELFNBQXBEO0FBQ0EsVUFBTVUsVUFBVSxHQUFHLEtBQUtKLEtBQUwsQ0FBV04sU0FBWCxHQUF3QixHQUFFUSxTQUFVLElBQUcsS0FBS0YsS0FBTCxDQUFXTixTQUFVLEVBQTVELEdBQWdFUSxTQUFuRjtBQUNBLHdCQUFPO0FBQUksZUFBUyxFQUFFRSxVQUFmO0FBQTJCLGFBQU8sRUFBRSxNQUFNO0FBQUMsYUFBS0osS0FBTCxDQUFXSyxPQUFYLElBQXNCLEtBQUtMLEtBQUwsQ0FBV0ssT0FBWCxFQUF0QjtBQUE0QztBQUF2RixPQUNFLEtBQUtMLEtBQUwsQ0FBV00sSUFEYixFQUVFLEtBQUtOLEtBQUwsQ0FBV08sTUFBWCxpQkFBcUI7QUFBUSxlQUFTLEVBQUMsMkJBQWxCO0FBQThDLGFBQU8sRUFBRSxLQUFLUCxLQUFMLENBQVdPLE1BQVgsQ0FBa0JGO0FBQXpFLE9BQW1GLEtBQUtMLEtBQUwsQ0FBV08sTUFBWCxDQUFrQkMsS0FBckcsQ0FGdkIsRUFHRSxLQUFLUixLQUFMLENBQVdTLGFBSGIsQ0FBUDtBQUtIOztBQWJzRCIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy90aXRsZS5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuY29uc3QgY2xhc3NOYW1lID0gXCJiZC1zZXR0aW5ncy10aXRsZSBoMi0yZ1dFLW8gdGl0bGUtM3NaV1lRIHNpemUxNi0xNGNHejUgaGVpZ2h0MjAtbU8yZUlOIHdlaWdodFNlbWlCb2xkLU5KZXh6aSBkZWZhdWx0Q29sb3ItMV9halgwIGRlZmF1bHRNYXJnaW5oMi0yTFRhVUwgbWFyZ2luQm90dG9tMjAtMzJxSUQ3XCI7XHJcbmNvbnN0IGNsYXNzTmFtZTIgPSBcImJkLXNldHRpbmdzLXRpdGxlIGJkLXNldHRpbmdzLWdyb3VwLXRpdGxlIGg1LTE4XzFuZCB0aXRsZS0zc1pXWVEgc2l6ZTEyLTNSMDg0NSBoZWlnaHQxNi0yTHYzcUEgd2VpZ2h0U2VtaUJvbGQtTkpleHppIGRhLWg1IGRhLXRpdGxlIGRhLXNpemUxMiBkYS1oZWlnaHQxNiBkYS13ZWlnaHRTZW1pQm9sZCBtYXJnaW5Cb3R0b200LTJxazRIeSBkYS1tYXJnaW5Cb3R0b200IG1hcmdpblRvcDgtMURMWjFuIGRhLW1hcmdpblRvcDhcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNldHRpbmdzVGl0bGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICB9XHJcbi8vaDItMmdXRS1vIHRpdGxlLTNzWldZUSBzaXplMTYtMTRjR3o1IGhlaWdodDIwLW1PMmVJTiB3ZWlnaHRTZW1pQm9sZC1OSmV4emkgZGEtaDIgZGEtdGl0bGUgZGEtc2l6ZTE2IGRhLWhlaWdodDIwIGRhLXdlaWdodFNlbWlCb2xkIGRlZmF1bHRDb2xvci0xX2FqWDAgZGEtZGVmYXVsdENvbG9yIG1hcmdpblRvcDYwLTNQR2J0SyBkYS1tYXJnaW5Ub3A2MCBtYXJnaW5Cb3R0b20yMC0zMnFJRDcgZGEtbWFyZ2luQm90dG9tMjBcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBiYXNlQ2xhc3MgPSB0aGlzLnByb3BzLmlzR3JvdXAgPyBjbGFzc05hbWUyIDogY2xhc3NOYW1lO1xyXG4gICAgICAgIGNvbnN0IHRpdGxlQ2xhc3MgPSB0aGlzLnByb3BzLmNsYXNzTmFtZSA/IGAke2Jhc2VDbGFzc30gJHt0aGlzLnByb3BzLmNsYXNzTmFtZX1gIDogYmFzZUNsYXNzO1xyXG4gICAgICAgIHJldHVybiA8aDIgY2xhc3NOYW1lPXt0aXRsZUNsYXNzfSBvbkNsaWNrPXsoKSA9PiB7dGhpcy5wcm9wcy5vbkNsaWNrICYmIHRoaXMucHJvcHMub25DbGljaygpO319PlxyXG4gICAgICAgICAgICAgICAge3RoaXMucHJvcHMudGV4dH1cclxuICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmJ1dHRvbiAmJiA8YnV0dG9uIGNsYXNzTmFtZT1cImJkLWJ1dHRvbiBiZC1idXR0b24tdGl0bGVcIiBvbkNsaWNrPXt0aGlzLnByb3BzLmJ1dHRvbi5vbkNsaWNrfT57dGhpcy5wcm9wcy5idXR0b24udGl0bGV9PC9idXR0b24+fVxyXG4gICAgICAgICAgICAgICAge3RoaXMucHJvcHMub3RoZXJDaGlsZHJlbn1cclxuICAgICAgICAgICAgICAgIDwvaDI+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/title.jsx\n"); /***/ }), @@ -1138,7 +1138,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Toasts; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nconst channelsClass = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"sidebar\", \"hasNotice\").sidebar.split(\" \")[0];\nconst membersWrapClass = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"membersWrap\").membersWrap.split(\" \")[0];\nclass Toasts {\n static get shouldShowToasts() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"settings\", \"general\", \"showToasts\");\n }\n /** Shorthand for `type = \"success\"` for {@link module:Toasts.show} */\n\n\n static async success(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"success\"\n }));\n }\n /** Shorthand for `type = \"info\"` for {@link module:Toasts.show} */\n\n\n static async info(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"info\"\n }));\n }\n /** Shorthand for `type = \"warning\"` for {@link module:Toasts.show} */\n\n\n static async warning(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"warning\"\n }));\n }\n /** Shorthand for `type = \"error\"` for {@link module:Toasts.show} */\n\n\n static async error(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"error\"\n }));\n }\n /** Shorthand for `type = \"default\"` for {@link module:Toasts.show} */\n\n\n static async default(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"\"\n }));\n }\n /**\r\n * This shows a toast similar to android towards the bottom of the screen.\r\n *\r\n * @param {string} content The string to show in the toast.\r\n * @param {object} options Options object. Optional parameter.\r\n * @param {string} [options.type=\"\"] Changes the type of the toast stylistically and semantically. Choices: \"\", \"info\", \"success\", \"danger\"/\"error\", \"warning\"/\"warn\". Default: \"\"\r\n * @param {boolean} [options.icon=true] Determines whether the icon should show corresponding to the type. A toast without type will always have no icon. Default: true\r\n * @param {number} [options.timeout=3000] Adjusts the time (in ms) the toast should be shown for before disappearing automatically. Default: 3000\r\n * @param {boolean} [options.forceShow=false] Whether to force showing the toast and ignore the bd setting\r\n */\n\n\n static show(content, options = {}) {\n const {\n type = \"\",\n icon = true,\n timeout = 3000,\n forceShow = false\n } = options;\n if (!this.shouldShowToasts && !forceShow) return;\n this.ensureContainer();\n const toastElem = document.createElement(\"div\");\n toastElem.classList.add(\"bd-toast\");\n if (type) toastElem.classList.add(\"toast-\" + type);\n if (type && icon) toastElem.classList.add(\"icon\");\n toastElem.innerText = content;\n document.querySelector(\".bd-toasts\").appendChild(toastElem);\n setTimeout(() => {\n toastElem.classList.add(\"closing\");\n setTimeout(() => {\n toastElem.remove();\n if (!document.querySelectorAll(\".bd-toasts .bd-toast\").length) document.querySelector(\".bd-toasts\").remove();\n }, 300);\n }, timeout);\n }\n\n static ensureContainer() {\n if (document.querySelector(\".bd-toasts\")) return;\n const container = document.querySelector(`.${channelsClass} + div`);\n const memberlist = container.querySelector(`.${membersWrapClass}`);\n const form = container ? container.querySelector(\"form\") : null;\n const left = container ? container.getBoundingClientRect().left : 310;\n const right = memberlist ? memberlist.getBoundingClientRect().left : 0;\n const width = right ? right - container.getBoundingClientRect().left : container.offsetWidth;\n const bottom = form ? form.offsetHeight : 80;\n const toastWrapper = document.createElement(\"div\");\n toastWrapper.classList.add(\"bd-toasts\");\n toastWrapper.style.setProperty(\"left\", left + \"px\");\n toastWrapper.style.setProperty(\"width\", width + \"px\");\n toastWrapper.style.setProperty(\"bottom\", bottom + \"px\");\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DOMManager\"].bdBody.appendChild(toastWrapper);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvdG9hc3RzLmpzP2NmZTUiXSwibmFtZXMiOlsiY2hhbm5lbHNDbGFzcyIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlQcm9wcyIsInNpZGViYXIiLCJzcGxpdCIsIm1lbWJlcnNXcmFwQ2xhc3MiLCJtZW1iZXJzV3JhcCIsIlRvYXN0cyIsInNob3VsZFNob3dUb2FzdHMiLCJTZXR0aW5ncyIsImdldCIsInN1Y2Nlc3MiLCJjb250ZW50Iiwib3B0aW9ucyIsInNob3ciLCJPYmplY3QiLCJhc3NpZ24iLCJ0eXBlIiwiaW5mbyIsIndhcm5pbmciLCJlcnJvciIsImRlZmF1bHQiLCJpY29uIiwidGltZW91dCIsImZvcmNlU2hvdyIsImVuc3VyZUNvbnRhaW5lciIsInRvYXN0RWxlbSIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTGlzdCIsImFkZCIsImlubmVyVGV4dCIsInF1ZXJ5U2VsZWN0b3IiLCJhcHBlbmRDaGlsZCIsInNldFRpbWVvdXQiLCJyZW1vdmUiLCJxdWVyeVNlbGVjdG9yQWxsIiwibGVuZ3RoIiwiY29udGFpbmVyIiwibWVtYmVybGlzdCIsImZvcm0iLCJsZWZ0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwicmlnaHQiLCJ3aWR0aCIsIm9mZnNldFdpZHRoIiwiYm90dG9tIiwib2Zmc2V0SGVpZ2h0IiwidG9hc3RXcmFwcGVyIiwic3R5bGUiLCJzZXRQcm9wZXJ0eSIsIkRPTU1hbmFnZXIiLCJiZEJvZHkiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUEsTUFBTUEsYUFBYSxHQUFHQyxzREFBYyxDQUFDQyxVQUFmLENBQTBCLFNBQTFCLEVBQXFDLFdBQXJDLEVBQWtEQyxPQUFsRCxDQUEwREMsS0FBMUQsQ0FBZ0UsR0FBaEUsRUFBcUUsQ0FBckUsQ0FBdEI7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBR0osc0RBQWMsQ0FBQ0MsVUFBZixDQUEwQixhQUExQixFQUF5Q0ksV0FBekMs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QUEvQixFQUF1Q1QsSUFBSSxHQUFHLElBQTlDO0FBQ0FPLGdCQUFZLENBQUNDLEtBQWIsQ0FBbUJDLFdBQW5CLENBQStCLE9BQS9CLEVBQXdDTixLQUFLLEdBQUcsSUFBaEQ7QUFDQUksZ0JBQVksQ0FBQ0MsS0FBYixDQUFtQkMsV0FBbkIsQ0FBK0IsUUFBL0IsRUFBeUNKLE1BQU0sR0FBRyxJQUFsRDtBQUNBSyxzREFBVSxDQUFDQyxNQUFYLENBQWtCbkIsV0FBbEIsQ0FBOEJlLFlBQTlCO0FBQ0g7O0FBL0R1QiIsImZpbGUiOiIuL3NyYy91aS90b2FzdHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1dlYnBhY2tNb2R1bGVzLCBTZXR0aW5ncywgRE9NTWFuYWdlcn0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmNvbnN0IGNoYW5uZWxzQ2xhc3MgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwic2lkZWJhclwiLCBcImhhc05vdGljZVwiKS5zaWRlYmFyLnNwbGl0KFwiIFwiKVswXTtcclxuY29uc3QgbWVtYmVyc1dyYXBDbGFzcyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJtZW1iZXJzV3JhcFwiKS5tZW1iZXJzV3JhcC5zcGxpdChcIiBcIilbMF07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUb2FzdHMge1xyXG5cclxuICAgIHN0YXRpYyBnZXQgc2hvdWxkU2hvd1RvYXN0cygpIHtyZXR1cm4gU2V0dGluZ3MuZ2V0KFwic2V0dGluZ3NcIiwgXCJnZW5lcmFsXCIsIFwic2hvd1RvYXN0c1wiKTt9XHJcblxyXG4gICAgLyoqIFNob3J0aGFuZCBmb3IgYHR5cGUgPSBcInN1Y2Nlc3NcImAgZm9yIHtAbGluayBtb2R1bGU6VG9hc3RzLnNob3d9ICovXHJcbiAgICBzdGF0aWMgYXN5bmMgc3VjY2Vzcyhjb250ZW50LCBvcHRpb25zID0ge30pIHtyZXR1cm4gdGhpcy5zaG93KGNvbnRlbnQsIE9iamVjdC5hc3NpZ24ob3B0aW9ucywge3R5cGU6IFwic3VjY2Vzc1wifSkpO31cclxuXHJcbiAgICAvKiogU2hvcnRoYW5kIGZvciBgdHlwZSA9IFwiaW5mb1wiYCBmb3Ige0BsaW5rIG1vZHVsZTpUb2FzdHMuc2hvd30gKi9cclxuICAgIHN0YXRpYyBhc3luYyBpbmZvKGNvbnRlbnQsIG9wdGlvbnMgPSB7fSkge3JldHVybiB0aGlzLnNob3coY29udGVudCwgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJpbmZvXCJ9KSk7fVxyXG5cclxuICAgIC8qKiBTaG9ydGhhbmQgZm9yIGB0eXBlID0gXCJ3YXJuaW5nXCJgIGZvciB7QGxpbmsgbW9kdWxlOlRvYXN0cy5zaG93fSAqL1xyXG4gICAgc3RhdGljIGFzeW5jIHdhcm5pbmcoY29udGVudCwgb3B0aW9ucyA9IHt9KSB7cmV0dXJuIHRoaXMuc2hvdyhjb250ZW50LCBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHt0eXBlOiBcIndhcm5pbmdcIn0pKTt9XHJcblxyXG4gICAgLyoqIFNob3J0aGFuZCBmb3IgYHR5cGUgPSBcImVycm9yXCJgIGZvciB7QGxpbmsgbW9kdWxlOlRvYXN0cy5zaG93fSAqL1xyXG4gICAgc3RhdGljIGFzeW5jIGVycm9yKGNvbnRlbnQsIG9wdGlvbnMgPSB7fSkge3JldHVybiB0aGlzLnNob3coY29udGVudCwgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJlcnJvclwifSkpO31cclxuXHJcbiAgICAvKiogU2hvcnRoYW5kIGZvciBgdHlwZSA9IFwiZGVmYXVsdFwiYCBmb3Ige0BsaW5rIG1vZHVsZTpUb2FzdHMuc2hvd30gKi9cclxuICAgIHN0YXRpYyBhc3luYyBkZWZhdWx0KGNvbnRlbnQsIG9wdGlvbnMgPSB7fSkge3JldHVybiB0aGlzLnNob3coY29udGVudCwgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJcIn0pKTt9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIHNob3dzIGEgdG9hc3Qgc2ltaWxhciB0byBhbmRyb2lkIHRvd2FyZHMgdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IFRoZSBzdHJpbmcgdG8gc2hvdyBpbiB0aGUgdG9hc3QuXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyBPcHRpb25zIG9iamVjdC4gT3B0aW9uYWwgcGFyYW1ldGVyLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnR5cGU9XCJcIl0gQ2hhbmdlcyB0aGUgdHlwZSBvZiB0aGUgdG9hc3Qgc3R5bGlzdGljYWxseSBhbmQgc2VtYW50aWNhbGx5LiBDaG9pY2VzOiBcIlwiLCBcImluZm9cIiwgXCJzdWNjZXNzXCIsIFwiZGFuZ2VyXCIvXCJlcnJvclwiLCBcIndhcm5pbmdcIi9cIndhcm5cIi4gRGVmYXVsdDogXCJcIlxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5pY29uPXRydWVdIERldGVybWluZXMgd2hldGhlciB0aGUgaWNvbiBzaG91bGQgc2hvdyBjb3JyZXNwb25kaW5nIHRvIHRoZSB0eXBlLiBBIHRvYXN0IHdpdGhvdXQgdHlwZSB3aWxsIGFsd2F5cyBoYXZlIG5vIGljb24uIERlZmF1bHQ6IHRydWVcclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy50aW1lb3V0PTMwMDBdIEFkanVzdHMgdGhlIHRpbWUgKGluIG1zKSB0aGUgdG9hc3Qgc2hvdWxkIGJlIHNob3duIGZvciBiZWZvcmUgZGlzYXBwZWFyaW5nIGF1dG9tYXRpY2FsbHkuIERlZmF1bHQ6IDMwMDBcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuZm9yY2VTaG93PWZhbHNlXSBXaGV0aGVyIHRvIGZvcmNlIHNob3dpbmcgdGhlIHRvYXN0IGFuZCBpZ25vcmUgdGhlIGJkIHNldHRpbmdcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHNob3coY29udGVudCwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICAgICAgY29uc3Qge3R5cGUgPSBcIlwiLCBpY29uID0gdHJ1ZSwgdGltZW91dCA9IDMwMDAsIGZvcmNlU2hvdyA9IGZhbHNlfSA9IG9wdGlvbnM7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNob3VsZFNob3dUb2FzdHMgJiYgIWZvcmNlU2hvdykgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuZW5zdXJlQ29udGFpbmVyKCk7XHJcbiAgICAgICAgY29uc3QgdG9hc3RFbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICB0b2FzdEVsZW0uY2xhc3NMaXN0LmFkZChcImJkLXRvYXN0XCIpO1xyXG4gICAgICAgIGlmICh0eXBlKSB0b2FzdEVsZW0uY2xhc3NMaXN0LmFkZChcInRvYXN0LVwiICsgdHlwZSk7XHJcbiAgICAgICAgaWYgKHR5cGUgJiYgaWNvbikgdG9hc3RFbGVtLmNsYXNzTGlzdC5hZGQoXCJpY29uXCIpO1xyXG4gICAgICAgIHRvYXN0RWxlbS5pbm5lclRleHQgPSBjb250ZW50O1xyXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuYmQtdG9hc3RzXCIpLmFwcGVuZENoaWxkKHRvYXN0RWxlbSk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRvYXN0RWxlbS5jbGFzc0xpc3QuYWRkKFwiY2xvc2luZ1wiKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0b2FzdEVsZW0ucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYmQtdG9hc3RzIC5iZC10b2FzdFwiKS5sZW5ndGgpIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuYmQtdG9hc3RzXCIpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICB9LCAzMDApO1xyXG4gICAgICAgIH0sIHRpbWVvdXQpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBlbnN1cmVDb250YWluZXIoKSB7XHJcbiAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuYmQtdG9hc3RzXCIpKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLiR7Y2hhbm5lbHNDbGFzc30gKyBkaXZgKTtcclxuICAgICAgICBjb25zdCBtZW1iZXJsaXN0ID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoYC4ke21lbWJlcnNXcmFwQ2xhc3N9YCk7XHJcbiAgICAgICAgY29uc3QgZm9ybSA9IGNvbnRhaW5lciA/IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKFwiZm9ybVwiKSA6IG51bGw7XHJcbiAgICAgICAgY29uc3QgbGVmdCA9IGNvbnRhaW5lciA/IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IDogMzEwO1xyXG4gICAgICAgIGNvbnN0IHJpZ2h0ID0gbWVtYmVybGlzdCA/IG1lbWJlcmxpc3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCA6IDA7XHJcbiAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCA/IHJpZ2h0IC0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgOiBjb250YWluZXIub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgY29uc3QgYm90dG9tID0gZm9ybSA/IGZvcm0ub2Zmc2V0SGVpZ2h0IDogODA7XHJcbiAgICAgICAgY29uc3QgdG9hc3RXcmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICB0b2FzdFdyYXBwZXIuY2xhc3NMaXN0LmFkZChcImJkLXRvYXN0c1wiKTtcclxuICAgICAgICB0b2FzdFdyYXBwZXIuc3R5bGUuc2V0UHJvcGVydHkoXCJsZWZ0XCIsIGxlZnQgKyBcInB4XCIpO1xyXG4gICAgICAgIHRvYXN0V3JhcHBlci5zdHlsZS5zZXRQcm9wZXJ0eShcIndpZHRoXCIsIHdpZHRoICsgXCJweFwiKTtcclxuICAgICAgICB0b2FzdFdyYXBwZXIuc3R5bGUuc2V0UHJvcGVydHkoXCJib3R0b21cIiwgYm90dG9tICsgXCJweFwiKTtcclxuICAgICAgICBET01NYW5hZ2VyLmJkQm9keS5hcHBlbmRDaGlsZCh0b2FzdFdyYXBwZXIpO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/toasts.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Toasts; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modules/modules.js */ \"./src/modules/modules.js\");\n\nconst channelsClass = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"sidebar\", \"hasNotice\").sidebar.split(\" \")[0];\nconst membersWrapClass = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"membersWrap\").membersWrap.split(\" \")[0];\nclass Toasts {\n static get shouldShowToasts() {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"settings\", \"general\", \"showToasts\");\n }\n /** Shorthand for `type = \"success\"` for {@link module:Toasts.show} */\n\n\n static async success(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"success\"\n }));\n }\n /** Shorthand for `type = \"info\"` for {@link module:Toasts.show} */\n\n\n static async info(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"info\"\n }));\n }\n /** Shorthand for `type = \"warning\"` for {@link module:Toasts.show} */\n\n\n static async warning(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"warning\"\n }));\n }\n /** Shorthand for `type = \"error\"` for {@link module:Toasts.show} */\n\n\n static async error(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"error\"\n }));\n }\n /** Shorthand for `type = \"default\"` for {@link module:Toasts.show} */\n\n\n static async default(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"\"\n }));\n }\n /**\r\n * This shows a toast similar to android towards the bottom of the screen.\r\n *\r\n * @param {string} content The string to show in the toast.\r\n * @param {object} options Options object. Optional parameter.\r\n * @param {string} [options.type=\"\"] Changes the type of the toast stylistically and semantically. Choices: \"\", \"info\", \"success\", \"danger\"/\"error\", \"warning\"/\"warn\". Default: \"\"\r\n * @param {boolean} [options.icon=true] Determines whether the icon should show corresponding to the type. A toast without type will always have no icon. Default: true\r\n * @param {number} [options.timeout=3000] Adjusts the time (in ms) the toast should be shown for before disappearing automatically. Default: 3000\r\n * @param {boolean} [options.forceShow=false] Whether to force showing the toast and ignore the bd setting\r\n */\n\n\n static show(content, options = {}) {\n const {\n type = \"\",\n icon = true,\n timeout = 3000,\n forceShow = false\n } = options;\n if (!this.shouldShowToasts && !forceShow) return;\n this.ensureContainer();\n const toastElem = document.createElement(\"div\");\n toastElem.classList.add(\"bd-toast\");\n if (type) toastElem.classList.add(\"toast-\" + type);\n if (type && icon) toastElem.classList.add(\"icon\");\n toastElem.innerText = content;\n document.querySelector(\".bd-toasts\").appendChild(toastElem);\n setTimeout(() => {\n toastElem.classList.add(\"closing\");\n setTimeout(() => {\n toastElem.remove();\n if (!document.querySelectorAll(\".bd-toasts .bd-toast\").length) document.querySelector(\".bd-toasts\").remove();\n }, 300);\n }, timeout);\n }\n\n static ensureContainer() {\n if (document.querySelector(\".bd-toasts\")) return;\n const container = document.querySelector(`.${channelsClass} + div`);\n const memberlist = container.querySelector(`.${membersWrapClass}`);\n const form = container ? container.querySelector(\"form\") : null;\n const left = container ? container.getBoundingClientRect().left : 310;\n const right = memberlist ? memberlist.getBoundingClientRect().left : 0;\n const width = right ? right - container.getBoundingClientRect().left : container.offsetWidth;\n const bottom = form ? form.offsetHeight : 80;\n const toastWrapper = document.createElement(\"div\");\n toastWrapper.classList.add(\"bd-toasts\");\n toastWrapper.style.setProperty(\"left\", left + \"px\");\n toastWrapper.style.setProperty(\"width\", width + \"px\");\n toastWrapper.style.setProperty(\"bottom\", bottom + \"px\");\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"DOMManager\"].bdBody.appendChild(toastWrapper);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvdG9hc3RzLmpzP2NmZTUiXSwibmFtZXMiOlsiY2hhbm5lbHNDbGFzcyIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlQcm9wcyIsInNpZGViYXIiLCJzcGxpdCIsIm1lbWJlcnNXcmFwQ2xhc3MiLCJtZW1iZXJzV3JhcCIsIlRvYXN0cyIsInNob3VsZFNob3dUb2FzdHMiLCJTZXR0aW5ncyIsImdldCIsInN1Y2Nlc3MiLCJjb250ZW50Iiwib3B0aW9ucyIsInNob3ciLCJPYmplY3QiLCJhc3NpZ24iLCJ0eXBlIiwiaW5mbyIsIndhcm5pbmciLCJlcnJvciIsImRlZmF1bHQiLCJpY29uIiwidGltZW91dCIsImZvcmNlU2hvdyIsImVuc3VyZUNvbnRhaW5lciIsInRvYXN0RWxlbSIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTGlzdCIsImFkZCIsImlubmVyVGV4dCIsInF1ZXJ5U2VsZWN0b3IiLCJhcHBlbmRDaGlsZCIsInNldFRpbWVvdXQiLCJyZW1vdmUiLCJxdWVyeVNlbGVjdG9yQWxsIiwibGVuZ3RoIiwiY29udGFpbmVyIiwibWVtYmVybGlzdCIsImZvcm0iLCJsZWZ0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwicmlnaHQiLCJ3aWR0aCIsIm9mZnNldFdpZHRoIiwiYm90dG9tIiwib2Zmc2V0SGVpZ2h0IiwidG9hc3RXcmFwcGVyIiwic3R5bGUiLCJzZXRQcm9wZXJ0eSIsIkRPTU1hbmFnZXIiLCJiZEJvZHkiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUEsTUFBTUEsYUFBYSxHQUFHQyxrRUFBYyxDQUFDQyxVQUFmLENBQTBCLFNBQTFCLEVBQXFDLFdBQXJDLEVBQWtEQyxPQUFsRCxDQUEwREMsS0FBMUQsQ0FBZ0UsR0FBaEUsRUFBcUUsQ0FBckUsQ0FBdEI7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBR0osa0VBQWMsQ0FBQ0MsVUFBZixDQUEwQixhQUExQixFQUF5Q0ksV0FBekMsQ0FBcURGLEtBQXJELENBQTJELEdBQTNELEVBQWdFLENBQWhFLENBQXpCO0FBRWUsTUFBTUcsTUFBTixDQUFhO0FBRXhCLGFBQVdDLGdCQUFYLEdBQThCO0FBQUMsV0FBT0MsNERBQVEsQ0FBQ0MsR0FBVCxDQUFhLFVBQWIsRUFBeUIsU0FBekIsRUFBb0MsWUFBcEMsQ0FBUDtBQUEwRDtBQUV6Rjs7O0FBQ0EsZUFBYUMsT0FBYixDQUFxQkMsT0FBckIsRUFBOEJDLE9BQU8sR0FBRyxFQUF4QyxFQUE0QztBQUFDLFdBQU8sS0FBS0MsSUFBTCxDQUFVRixPQUFWLEVBQW1CRyxNQUFNLENBQUNDLE1BQVAsQ0FBY0gsT0FBZCxFQUF1QjtBQUFDSSxVQUFJLEVBQUU7QUFBUCxLQUF2QixDQUFuQixDQUFQO0FBQXNFO0FBRW5IOzs7QUFDQSxlQUFhQyxJQUFiLENBQWtCTixPQUFsQixFQUEyQkMsT0FBTyxHQUFHLEVBQXJDLEVBQXlDO0FBQUMsV0FBTyxLQUFLQyxJQUFMLENBQVVGLE9BQVYsRUFBbUJHLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjSCxPQUFkLEVBQXVCO0FBQUNJLFVBQUksRUFBRTtBQUFQLEtBQXZCLENBQW5CLENBQVA7QUFBbUU7QUFFN0c7OztBQUNBLGVBQWFFLE9BQWIsQ0FBcUJQLE9BQXJCLEVBQThCQyxPQUFPLEdBQUcsRUFBeEMsRUFBNEM7QUFBQyxXQUFPLEtBQUtDLElBQUwsQ0FBVUYsT0FBVixFQUFtQkcsTUFBTSxDQUFDQyxNQUFQLENBQWNILE9BQWQsRUFBdUI7QUFBQ0ksVUFBSSxFQUFFO0FBQVAsS0FBdkIsQ0FBbkIsQ0FBUDtBQUFzRTtBQUVuSDs7O0FBQ0EsZUFBYUcsS0FBYixDQUFtQlIsT0FBbkIsRUFBNEJDLE9BQU8sR0FBRyxFQUF0QyxFQUEwQztBQUFDLFdBQU8sS0FBS0MsSUFBTCxDQUFVRixPQUFWLEVBQW1CRyxNQUFNLENBQUNDLE1BQVAsQ0FBY0gsT0FBZCxFQUF1QjtBQUFDSSxVQUFJLEVBQUU7QUFBUCxLQUF2QixDQUFuQixDQUFQO0FBQW9FO0FBRS9HOzs7QUFDQSxlQUFhSSxPQUFiLENBQXFCVCxPQUFyQixFQUE4QkMsT0FBTyxHQUFHLEVBQXhDLEVBQTRDO0FBQUMsV0FBTyxLQUFLQyxJQUFMLENBQVVGLE9BQVYsRUFBbUJHLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjSCxPQUFkLEVBQXVCO0FBQUNJLFVBQUksRUFBRTtBQUFQLEtBQXZCLENBQW5CLENBQVA7QUFBK0Q7QUFFNUc7Ozs7Ozs7Ozs7OztBQVVBLFNBQU9ILElBQVAsQ0FBWUYsT0FBWixFQUFxQkMsT0FBTyxHQUFHLEVBQS9CLEVBQW1DO0FBQy9CLFVBQU07QUFBQ0ksVUFBSSxHQUFHLEVBQVI7QUFBWUssVUFBSSxHQUFHLElBQW5CO0FBQXlCQyxhQUFPLEdBQUcsSUFBbkM7QUFBeUNDLGVBQVMsR0FBRztBQUFyRCxRQUE4RFgsT0FBcEU7QUFDQSxRQUFJLENBQUMsS0FBS0wsZ0JBQU4sSUFBMEIsQ0FBQ2dCLFNBQS9CLEVBQTBDO0FBQzFDLFNBQUtDLGVBQUw7QUFDQSxVQUFNQyxTQUFTLEdBQUdDLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixLQUF2QixDQUFsQjtBQUNBRixhQUFTLENBQUNHLFNBQVYsQ0FBb0JDLEdBQXBCLENBQXdCLFVBQXhCO0FBQ0EsUUFBSWIsSUFBSixFQUFVUyxTQUFTLENBQUNHLFNBQVYsQ0FBb0JDLEdBQXBCLENBQXdCLFdBQVdiLElBQW5DO0FBQ1YsUUFBSUEsSUFBSSxJQUFJSyxJQUFaLEVBQWtCSSxTQUFTLENBQUNHLFNBQVYsQ0FBb0JDLEdBQXBCLENBQXdCLE1BQXhCO0FBQ2xCSixhQUFTLENBQUNLLFNBQVYsR0FBc0JuQixPQUF0QjtBQUNBZSxZQUFRLENBQUNLLGFBQVQsQ0FBdUIsWUFBdkIsRUFBcUNDLFdBQXJDLENBQWlEUCxTQUFqRDtBQUNBUSxjQUFVLENBQUMsTUFBTTtBQUNiUixlQUFTLENBQUNHLFNBQVYsQ0FBb0JDLEdBQXBCLENBQXdCLFNBQXhCO0FBQ0FJLGdCQUFVLENBQUMsTUFBTTtBQUNiUixpQkFBUyxDQUFDUyxNQUFWO0FBQ0EsWUFBSSxDQUFDUixRQUFRLENBQUNTLGdCQUFULENBQTBCLHNCQUExQixFQUFrREMsTUFBdkQsRUFBK0RWLFFBQVEsQ0FBQ0ssYUFBVCxDQUF1QixZQUF2QixFQUFxQ0csTUFBckM7QUFDbEUsT0FIUyxFQUdQLEdBSE8sQ0FBVjtBQUlILEtBTlMsRUFNUFosT0FOTyxDQUFWO0FBT0g7O0FBRUQsU0FBT0UsZUFBUCxHQUF5QjtBQUNyQixRQUFJRSxRQUFRLENBQUNLLGFBQVQsQ0FBdUIsWUFBdkIsQ0FBSixFQUEwQztBQUMxQyxVQUFNTSxTQUFTLEdBQUdYLFFBQVEsQ0FBQ0ssYUFBVCxDQUF3QixJQUFHaEMsYUFBYyxRQUF6QyxDQUFsQjtBQUNBLFVBQU11QyxVQUFVLEdBQUdELFNBQVMsQ0FBQ04sYUFBVixDQUF5QixJQUFHM0IsZ0JBQWlCLEVBQTdDLENBQW5CO0FBQ0EsVUFBTW1DLElBQUksR0FBR0YsU0FBUyxHQUFHQSxTQUFTLENBQUNOLGFBQVYsQ0FBd0IsTUFBeEIsQ0FBSCxHQUFxQyxJQUEzRDtBQUNBLFVBQU1TLElBQUksR0FBR0gsU0FBUyxHQUFHQSxTQUFTLENBQUNJLHFCQUFWLEdBQWtDRCxJQUFyQyxHQUE0QyxHQUFsRTtBQUNBLFVBQU1FLEtBQUssR0FBR0osVUFBVSxHQUFHQSxVQUFVLENBQUNHLHFCQUFYLEdBQW1DRCxJQUF0QyxHQUE2QyxDQUFyRTtBQUNBLFVBQU1HLEtBQUssR0FBR0QsS0FBSyxHQUFHQSxLQUFLLEdBQUdMLFNBQVMsQ0FBQ0kscUJBQVYsR0FBa0NELElBQTdDLEdBQW9ESCxTQUFTLENBQUNPLFdBQWpGO0FBQ0EsVUFBTUMsTUFBTSxHQUFHTixJQUFJLEdBQUdBLElBQUksQ0FBQ08sWUFBUixHQUF1QixFQUExQztBQUNBLFVBQU1DLFlBQVksR0FBR3JCLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixLQUF2QixDQUFyQjtBQUNBb0IsZ0JBQVksQ0FBQ25CLFNBQWIsQ0FBdUJDLEdBQXZCLENBQTJCLFdBQTNCO0FBQ0FrQixnQkFBWSxDQUFDQyxLQUFiLENBQW1CQyxXQUFuQixDQUErQixNQUEvQixFQUF1Q1QsSUFBSSxHQUFHLElBQTlDO0FBQ0FPLGdCQUFZLENBQUNDLEtBQWIsQ0FBbUJDLFdBQW5CLENBQStCLE9BQS9CLEVBQXdDTixLQUFLLEdBQUcsSUFBaEQ7QUFDQUksZ0JBQVksQ0FBQ0MsS0FBYixDQUFtQkMsV0FBbkIsQ0FBK0IsUUFBL0IsRUFBeUNKLE1BQU0sR0FBRyxJQUFsRDtBQUNBSyxrRUFBVSxDQUFDQyxNQUFYLENBQWtCbkIsV0FBbEIsQ0FBOEJlLFlBQTlCO0FBQ0g7O0FBL0R1QiIsImZpbGUiOiIuL3NyYy91aS90b2FzdHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1dlYnBhY2tNb2R1bGVzLCBTZXR0aW5ncywgRE9NTWFuYWdlcn0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmNvbnN0IGNoYW5uZWxzQ2xhc3MgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwic2lkZWJhclwiLCBcImhhc05vdGljZVwiKS5zaWRlYmFyLnNwbGl0KFwiIFwiKVswXTtcclxuY29uc3QgbWVtYmVyc1dyYXBDbGFzcyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJtZW1iZXJzV3JhcFwiKS5tZW1iZXJzV3JhcC5zcGxpdChcIiBcIilbMF07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUb2FzdHMge1xyXG5cclxuICAgIHN0YXRpYyBnZXQgc2hvdWxkU2hvd1RvYXN0cygpIHtyZXR1cm4gU2V0dGluZ3MuZ2V0KFwic2V0dGluZ3NcIiwgXCJnZW5lcmFsXCIsIFwic2hvd1RvYXN0c1wiKTt9XHJcblxyXG4gICAgLyoqIFNob3J0aGFuZCBmb3IgYHR5cGUgPSBcInN1Y2Nlc3NcImAgZm9yIHtAbGluayBtb2R1bGU6VG9hc3RzLnNob3d9ICovXHJcbiAgICBzdGF0aWMgYXN5bmMgc3VjY2Vzcyhjb250ZW50LCBvcHRpb25zID0ge30pIHtyZXR1cm4gdGhpcy5zaG93KGNvbnRlbnQsIE9iamVjdC5hc3NpZ24ob3B0aW9ucywge3R5cGU6IFwic3VjY2Vzc1wifSkpO31cclxuXHJcbiAgICAvKiogU2hvcnRoYW5kIGZvciBgdHlwZSA9IFwiaW5mb1wiYCBmb3Ige0BsaW5rIG1vZHVsZTpUb2FzdHMuc2hvd30gKi9cclxuICAgIHN0YXRpYyBhc3luYyBpbmZvKGNvbnRlbnQsIG9wdGlvbnMgPSB7fSkge3JldHVybiB0aGlzLnNob3coY29udGVudCwgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJpbmZvXCJ9KSk7fVxyXG5cclxuICAgIC8qKiBTaG9ydGhhbmQgZm9yIGB0eXBlID0gXCJ3YXJuaW5nXCJgIGZvciB7QGxpbmsgbW9kdWxlOlRvYXN0cy5zaG93fSAqL1xyXG4gICAgc3RhdGljIGFzeW5jIHdhcm5pbmcoY29udGVudCwgb3B0aW9ucyA9IHt9KSB7cmV0dXJuIHRoaXMuc2hvdyhjb250ZW50LCBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHt0eXBlOiBcIndhcm5pbmdcIn0pKTt9XHJcblxyXG4gICAgLyoqIFNob3J0aGFuZCBmb3IgYHR5cGUgPSBcImVycm9yXCJgIGZvciB7QGxpbmsgbW9kdWxlOlRvYXN0cy5zaG93fSAqL1xyXG4gICAgc3RhdGljIGFzeW5jIGVycm9yKGNvbnRlbnQsIG9wdGlvbnMgPSB7fSkge3JldHVybiB0aGlzLnNob3coY29udGVudCwgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJlcnJvclwifSkpO31cclxuXHJcbiAgICAvKiogU2hvcnRoYW5kIGZvciBgdHlwZSA9IFwiZGVmYXVsdFwiYCBmb3Ige0BsaW5rIG1vZHVsZTpUb2FzdHMuc2hvd30gKi9cclxuICAgIHN0YXRpYyBhc3luYyBkZWZhdWx0KGNvbnRlbnQsIG9wdGlvbnMgPSB7fSkge3JldHVybiB0aGlzLnNob3coY29udGVudCwgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJcIn0pKTt9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIHNob3dzIGEgdG9hc3Qgc2ltaWxhciB0byBhbmRyb2lkIHRvd2FyZHMgdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IFRoZSBzdHJpbmcgdG8gc2hvdyBpbiB0aGUgdG9hc3QuXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyBPcHRpb25zIG9iamVjdC4gT3B0aW9uYWwgcGFyYW1ldGVyLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnR5cGU9XCJcIl0gQ2hhbmdlcyB0aGUgdHlwZSBvZiB0aGUgdG9hc3Qgc3R5bGlzdGljYWxseSBhbmQgc2VtYW50aWNhbGx5LiBDaG9pY2VzOiBcIlwiLCBcImluZm9cIiwgXCJzdWNjZXNzXCIsIFwiZGFuZ2VyXCIvXCJlcnJvclwiLCBcIndhcm5pbmdcIi9cIndhcm5cIi4gRGVmYXVsdDogXCJcIlxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5pY29uPXRydWVdIERldGVybWluZXMgd2hldGhlciB0aGUgaWNvbiBzaG91bGQgc2hvdyBjb3JyZXNwb25kaW5nIHRvIHRoZSB0eXBlLiBBIHRvYXN0IHdpdGhvdXQgdHlwZSB3aWxsIGFsd2F5cyBoYXZlIG5vIGljb24uIERlZmF1bHQ6IHRydWVcclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy50aW1lb3V0PTMwMDBdIEFkanVzdHMgdGhlIHRpbWUgKGluIG1zKSB0aGUgdG9hc3Qgc2hvdWxkIGJlIHNob3duIGZvciBiZWZvcmUgZGlzYXBwZWFyaW5nIGF1dG9tYXRpY2FsbHkuIERlZmF1bHQ6IDMwMDBcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuZm9yY2VTaG93PWZhbHNlXSBXaGV0aGVyIHRvIGZvcmNlIHNob3dpbmcgdGhlIHRvYXN0IGFuZCBpZ25vcmUgdGhlIGJkIHNldHRpbmdcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHNob3coY29udGVudCwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICAgICAgY29uc3Qge3R5cGUgPSBcIlwiLCBpY29uID0gdHJ1ZSwgdGltZW91dCA9IDMwMDAsIGZvcmNlU2hvdyA9IGZhbHNlfSA9IG9wdGlvbnM7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNob3VsZFNob3dUb2FzdHMgJiYgIWZvcmNlU2hvdykgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuZW5zdXJlQ29udGFpbmVyKCk7XHJcbiAgICAgICAgY29uc3QgdG9hc3RFbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICB0b2FzdEVsZW0uY2xhc3NMaXN0LmFkZChcImJkLXRvYXN0XCIpO1xyXG4gICAgICAgIGlmICh0eXBlKSB0b2FzdEVsZW0uY2xhc3NMaXN0LmFkZChcInRvYXN0LVwiICsgdHlwZSk7XHJcbiAgICAgICAgaWYgKHR5cGUgJiYgaWNvbikgdG9hc3RFbGVtLmNsYXNzTGlzdC5hZGQoXCJpY29uXCIpO1xyXG4gICAgICAgIHRvYXN0RWxlbS5pbm5lclRleHQgPSBjb250ZW50O1xyXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuYmQtdG9hc3RzXCIpLmFwcGVuZENoaWxkKHRvYXN0RWxlbSk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRvYXN0RWxlbS5jbGFzc0xpc3QuYWRkKFwiY2xvc2luZ1wiKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0b2FzdEVsZW0ucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYmQtdG9hc3RzIC5iZC10b2FzdFwiKS5sZW5ndGgpIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuYmQtdG9hc3RzXCIpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICB9LCAzMDApO1xyXG4gICAgICAgIH0sIHRpbWVvdXQpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBlbnN1cmVDb250YWluZXIoKSB7XHJcbiAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuYmQtdG9hc3RzXCIpKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLiR7Y2hhbm5lbHNDbGFzc30gKyBkaXZgKTtcclxuICAgICAgICBjb25zdCBtZW1iZXJsaXN0ID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoYC4ke21lbWJlcnNXcmFwQ2xhc3N9YCk7XHJcbiAgICAgICAgY29uc3QgZm9ybSA9IGNvbnRhaW5lciA/IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKFwiZm9ybVwiKSA6IG51bGw7XHJcbiAgICAgICAgY29uc3QgbGVmdCA9IGNvbnRhaW5lciA/IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IDogMzEwO1xyXG4gICAgICAgIGNvbnN0IHJpZ2h0ID0gbWVtYmVybGlzdCA/IG1lbWJlcmxpc3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCA6IDA7XHJcbiAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCA/IHJpZ2h0IC0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgOiBjb250YWluZXIub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgY29uc3QgYm90dG9tID0gZm9ybSA/IGZvcm0ub2Zmc2V0SGVpZ2h0IDogODA7XHJcbiAgICAgICAgY29uc3QgdG9hc3RXcmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICB0b2FzdFdyYXBwZXIuY2xhc3NMaXN0LmFkZChcImJkLXRvYXN0c1wiKTtcclxuICAgICAgICB0b2FzdFdyYXBwZXIuc3R5bGUuc2V0UHJvcGVydHkoXCJsZWZ0XCIsIGxlZnQgKyBcInB4XCIpO1xyXG4gICAgICAgIHRvYXN0V3JhcHBlci5zdHlsZS5zZXRQcm9wZXJ0eShcIndpZHRoXCIsIHdpZHRoICsgXCJweFwiKTtcclxuICAgICAgICB0b2FzdFdyYXBwZXIuc3R5bGUuc2V0UHJvcGVydHkoXCJib3R0b21cIiwgYm90dG9tICsgXCJweFwiKTtcclxuICAgICAgICBET01NYW5hZ2VyLmJkQm9keS5hcHBlbmRDaGlsZCh0b2FzdFdyYXBwZXIpO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/toasts.js\n"); /***/ }), diff --git a/dist/index.min.js b/dist/index.min.js index d42cf968..f79c0620 100644 --- a/dist/index.min.js +++ b/dist/index.min.js @@ -1 +1 @@ -!function(e){var t={};function s(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,s),i.l=!0,i.exports}s.m=e,s.c=t,s.d=function(e,t,n){s.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.t=function(e,t){if(1&t&&(e=s(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(s.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)s.d(n,i,function(t){return e[t]}.bind(null,i));return n},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,"a",t),t},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s.p="",s(s.s=9)}([function(e,t){e.exports=require("electron")},function(e,t){e.exports=require("path")},function(e,t){e.exports=require("fs")},function(e,t){e.exports=require("request")},function(e,t){e.exports=require("module")},function(e,t){e.exports=require("events")},function(e,t){e.exports=require("rimraf")},function(e,t){e.exports=require("yauzl")},function(e,t){e.exports=require("mkdirp")},function(e,t,s){"use strict";s.r(t);var n={};s.r(n),s.d(n,"CustomCSS",(function(){return ht})),s.d(n,"WindowPrefs",(function(){return ut})),s.d(n,"TwentyFourHour",(function(){return pt})),s.d(n,"ClassNormalizer",(function(){return gt})),s.d(n,"PublicServers",(function(){return xt})),s.d(n,"VoiceDisconnect",(function(){return Nt})),s.d(n,"ColoredText",(function(){return Dt})),s.d(n,"DarkMode",(function(){return At})),s.d(n,"MinimalMode",(function(){return kt})),s.d(n,"VoiceMode",(function(){return Tt})),s.d(n,"EmoteModule",(function(){return Ut})),s.d(n,"EmoteMenu",(function(){return qt})),s.d(n,"CopySelector",(function(){return $t})),s.d(n,"Debugger",(function(){return Wt})),s.d(n,"ReactDevTools",(function(){return Zt}));var i={local:!1,localServer:"//localhost:8080",minified:!0,version:"0.3.0",branch:"master",repo:"rauenzi",minSupportedVersion:"0.3.0",bbdVersion:"1.0.0"},o=[{type:"category",id:"general",name:"General",collapsible:!0,settings:[{type:"switch",id:"download",value:!0},{type:"switch",id:"emoteMenu",value:!0},{type:"switch",id:"hideEmojiMenu",value:!1,enableWith:"emoteMenu"},{type:"switch",id:"showNames",value:!0},{type:"switch",id:"modifiers",value:!0},{type:"switch",id:"animateOnHover",value:!1}]},{type:"category",id:"categories",name:"Categories",collapsible:!0,settings:[{type:"switch",id:"twitchglobal",value:!0},{type:"switch",id:"twitchsubscriber",value:!1},{type:"switch",id:"frankerfacez",value:!0},{type:"switch",id:"bttv",value:!0}]}],r=[{type:"category",id:"general",collapsible:!0,settings:[{type:"switch",id:"emotes",value:!0},{type:"switch",id:"publicServers",value:!0},{type:"switch",id:"voiceDisconnect",value:!1},{type:"switch",id:"twentyFourHour",value:!1},{type:"switch",id:"classNormalizer",value:!0},{type:"switch",id:"showToasts",value:!0}]},{type:"category",id:"appearance",collapsible:!0,settings:[{type:"switch",id:"voiceMode",value:!1},{type:"switch",id:"minimalMode",value:!1},{type:"switch",id:"hideChannels",value:!1,enableWith:"minimalMode"},{type:"switch",id:"darkMode",value:!0},{type:"switch",id:"coloredText",value:!1}]},{type:"category",id:"addons",collapsible:!0,shown:!1,settings:[{type:"switch",id:"addonErrors",value:!0},{type:"switch",id:"autoScroll",value:!0},{type:"switch",id:"autoReload",value:!0},{type:"dropdown",id:"editAction",value:"detached",options:[{value:"detached"},{value:"system"}]}]},{type:"category",id:"customcss",collapsible:!0,shown:!1,settings:[{type:"switch",id:"customcss",value:!0},{type:"switch",id:"liveUpdate",value:!1},{type:"dropdown",id:"openAction",value:"settings",options:[{value:"settings"},{value:"detached"},{value:"system"}]}]},{type:"category",id:"developer",collapsible:!0,shown:!1,settings:[{type:"switch",id:"debuggerHotkey",value:!1},{type:"switch",id:"copySelector",value:!1},{type:"switch",id:"reactDevTools",value:!1}]},{type:"category",id:"window",collapsible:!0,shown:!1,settings:[{type:"switch",id:"transparency",value:!1},{type:"switch",id:"frame",value:!1,hidden:!0}]}],a={Panels:{plugins:"Plugins",themes:"Themes",customcss:"Custom CSS"},Collections:{settings:{name:"Settings",general:{name:"General",emotes:{name:"Emote System",note:"Enables BD's emote system"},publicServers:{name:"Public Servers",note:"Display public servers button"},voiceDisconnect:{name:"Voice Disconnect",note:"Disconnect from voice server when closing Discord"},twentyFourHour:{name:"24-Hour Timestamps",note:"Hides channels when in minimal mode"},classNormalizer:{name:"Normalize Classes",note:"Adds stable classes to elements to help themes. (e.g. adds .da-channels to .channels-Ie2l6A)"},showToasts:{name:"Show Toasts",note:"Shows a small notification for important information"}},appearance:{name:"Appearance",voiceMode:{name:"Voice Mode",note:"Hides everything that isn't voice chat"},minimalMode:{name:"Minimal Mode",note:"Hide elements and reduce the size of elements"},hideChannels:{name:"Hide Channels",note:"Hides channels when in minimal mode"},darkMode:{name:"Dark Mode",note:"Make certain elements dark by default"},coloredText:{name:"Colored Text",note:"Make text colour the same as role color"}},addons:{name:"Addon Manager",addonErrors:{name:"Show Addon Errors",note:"Shows a modal with plugin/theme errors"},autoScroll:{name:"Scroll To Settings",note:"Auto-scrolls to a plugin's settings when the button is clicked (only if out of view)"},autoReload:{name:"Automatic Loading",note:"Automatically loads, reloads, and unloads plugins and themes"},editAction:{name:"Edit Action",note:"Where plugins & themes appear when editing",options:{detached:"Detached Window",system:"System Editor"}}},customcss:{name:"Custom CSS",customcss:{name:"Custom CSS",note:"Enables the Custom CSS tab"},liveUpdate:{name:"Live Update",note:"Updates the css as you type"},startDetached:{name:"Start Detached",note:"Clicking the Custom CSS tab opens the editor in a separate window"},nativeOpen:{name:"Open in Native Editor",note:"Clicking the Custom CSS tab opens your custom css in your native editor"},openAction:{name:"Editor Location",note:"Where Custom CSS should open by default",options:{settings:"Settings Menu",detached:"Detached Window",system:"System Editor"}}},developer:{name:"Developer Settings",debuggerHotkey:{name:"Debugger Hotkey",note:"Allows activating debugger when pressing F8"},copySelector:{name:"Copy Selector",note:'Adds a "Copy Selector" option to context menus when developer mode is active'},reactDevTools:{name:"React Developer Tools",note:"Injects your local installation of React Developer Tools into Discord"}},window:{name:"Window Preferences",transparency:{name:"Enable Transparency",note:"Enables the main window to be see-through (requires restart)"},frame:{name:"Window Frame",note:"Adds the native os window frame to the main window"}}},emotes:{name:"Emotes",general:{name:"General",download:{name:"Download Emotes",note:"Download emotes whenever they are out of date"},emoteMenu:{name:"Emote Menu",note:"Show Twitch/Favourite emotes in emote menu"},hideEmojiMenu:{name:"Hide Emoji Menu",note:"Hides Discord's emoji menu when using emote menu"},autoCaps:{name:"Emote Autocapitalization",note:"Autocapitalize emote commands"},showNames:{name:"Show Names",note:"Show emote names on hover"},modifiers:{name:"Show Emote Modifiers",note:"Enable emote mods (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)"},animateOnHover:{name:"Animate On Hover",note:"Only animate the emote modifiers on hover"}},categories:{name:"Categories",twitchglobal:{name:"Twitch Globals",note:"Show Twitch global emotes"},twitchsubscriber:{name:"Twitch Subscribers",note:"Show Twitch subscriber emotes"},frankerfacez:{name:"FrankerFaceZ",note:"Show emotes from FFZ"},bttv:{name:"BetterTTV",note:"Show emotes from BTTV"}}}},Addons:{title:"{{name}} v{{version}} by {{author}}",openFolder:"Open {{type}} Folder",reload:"Reload",addonSettings:"Settings",website:"Website",source:"Source",invite:"Support Server",donate:"Donate",patreon:"Patreon",name:"Name",author:"Author",version:"Version",added:"Date Added",modified:"Date Modified",search:"Search {{type}}",editAddon:"Edit",deleteAddon:"Delete",confirmDelete:"Are you sure you want to delete {{name}}?",confirmationText:"You have unsaved changes to {{name}}. Closing this window will lose all those changes.",enabled:"{{name}} has been enabled.",disabled:"{{name}} has been disabled.",couldNotEnable:"{{name}} could not be enabled.",couldNotDisable:"{{name}} could not be disabled.",couldNotStart:"{{name}} could not be started.",couldNotStop:"{{name}} could not be stopped.",methodError:"{{method}} could not be fired.",unknownAuthor:"Unknown Author",noDescription:"Description not provided."},CustomCSS:{confirmationText:"You have unsaved changes to your Custom CSS. Closing this window will lose all those changes.",update:"Update",save:"Save",openNative:"Open in System Editor",openDetached:"Detach Window",settings:"Editor Settings",editorTitle:"Custom CSS Editor"},Developer:{copySelector:"Copy Selector"},Emotes:{loading:"Loading emotes in the background do not reload.",loaded:"All emotes successfully loaded.",clearEmotes:"Clear Emote Data",favoriteAction:"Favorite!"},PublicServers:{button:"public",join:"Join",joining:"Joining",joined:"Joined",loading:"Loading",loadMore:"Load More",notConnected:"Not connected to DiscordServers.com!",search:"Search",connect:"Connect",reconnect:"Reconnect",categories:"Categories",connection:"Connected as: {{username}}#{{discriminator}}",results:"Showing {{start}}-{{end}} of {{total}} results in {{category}}",query:"for {{query}}"},Modals:{confirmAction:"Are You Sure?",okay:"Okay",cancel:"Cancel",close:"Close",name:"Name",message:"Message",error:"Error",addonErrors:"Addon Errors",restartRequired:"Restart Required",restartNow:"Restart Now",restartLater:"Restart Later",additionalInfo:"Additional Info"},ReactDevTools:{notFound:"Extension Not Found",notFoundDetails:"Unable to find the React Developer Tools extension on your PC. Please install the extension on your local Chrome installation."},Sorting:{sortBy:"Sort By",order:"Order",ascending:"Ascending",descending:"Descending"},Startup:{notSupported:"Not Supported",versionMismatch:"BandagedBD Injector v{{injector}} is not supported by the latest remote (v{{remote}}).\n\nPlease download the latest version from [GitHub](https://github.com/rauenzi/BetterDiscordApp/releases/latest)",incompatibleApp:"BandagedBD does not work with {{app}}. Please uninstall one of them.",updateNow:"Update Now",maybeLater:"Maybe Later",updateAvailable:"Update Available",updateInfo:"There is an update available for BandagedBD's Injector ({{version}}).\n\nYou can either update and restart now, or later.",updateFailed:"Could Not Update",manualUpdate:"Unable to update automatically, please download the installer and reinstall normally.\n\n[Download Installer](https://github.com/rauenzi/BetterDiscordApp/releases/latest)",jqueryFailed:"jQuery Failed To Load",jqueryFailedDetails:"jQuery could not be loaded, and some plugins may not work properly. Proceed at your own risk."},WindowPrefs:{enabledInfo:"This option requires a transparent theme in order to work properly. On Windows this may break your aero snapping and maximizing.\n\nIn order to take effect, Discord needs to be restarted. Do you want to restart now?",disabledInfo:"In order to take effect, Discord needs to be restarted. Do you want to restart now?"}},l={description:"Don't be shocked, this modal is supposed to be here.",changes:[{title:"What's New?",items:["**BandagedBD will now keep you updated with changelogs!** I will try to only show a changelog when there's more than a tiny or internal change.","**Twitter (@BandagedBD)** I created a Twitter to try and provide support and such for those without access to the server. https://Twitter.com/BandagedBD"]},{title:"Fixes",type:"fixed",items:["**Colored Text** option should work again.","**Emotes** should show up in chat.","Fixed a bug where BBD attempted to patch the TabBar module incorrectly. (Thanks, DevilBro)"]},{title:"Minor Stuff",type:"improved",items:["**Colour->Color.** Swapped to using English-US spelling by default to be consistent, and to potentially be prepared for localization.","**Versions simplified.** The BandagedBD version now integrates into Discord's at the bottom-left of settings instead of randomly being a part of the setting list."]}]};const d={err:"error",error:"error",dbg:"debug",debug:"debug",log:"log",warn:"warn",info:"info"};class c{static stacktrace(e,t,s){console.error(`%c[${e}]%c ${t}\n\n%c`,"color: #3a71c1; font-weight: 700;","color: red; font-weight: 700;","color: red;",s)}static err(e,...t){c._log(e,t,"error")}static warn(e,...t){c._log(e,t,"warn")}static info(e,...t){c._log(e,t,"info")}static debug(e,...t){c._log(e,t,"debug")}static log(e,...t){c._log(e,t)}static _log(e,t,s="log"){s=c.parseType(s),Array.isArray(t)||(t=[t]),console[s](`%c[BandagedBD]%c [${e}]%c`,"color: #3E82E5; font-weight: 700;","color: #3a71c1;","",...t)}static parseType(e){return d[e]||"log"}}class h{static escapeID(e){return e.replace(/^[^a-z]+|[^\w-]+/gi,"-")}static addStyle(e,t){document.head.append(h.createElement(``))}static removeStyle(e){const t=document.getElementById(e);t&&t.remove()}static addScript(e,t){return new Promise(s=>{const n=document.createElement("script");n.id=e,n.src=t,n.type="text/javascript",n.onload=s,document.head.append(n)})}static removeScript(e){e=this.escapeID(e);const t=document.getElementById(e);t&&t.remove()}static animate({timing:e=(e=>e),update:t,duration:s}){const n=performance.now();requestAnimationFrame((function i(o){let r=(o-n)/s;r>1&&(r=1);const a=e(r);t(a),r<1&&requestAnimationFrame(i)}))}static Q(e){const t=this.parseHTML(e);return(t instanceof NodeList?Array.from(t).some(e=>1===e.nodeType):1===t.nodeType)?t:this.query(e)}static query(e,t){return t||(t=document),t.querySelector(e)}static queryAll(e,t){return t||(t=document),t.querySelectorAll(e)}static parseHTML(e,t=!1){const s=document.createElement("template");s.innerHTML=e;const n=s.content.cloneNode(!0);return t?n:n.childNodes.length>1?n.childNodes:n.childNodes[0]}static createElement(e,t=!1){return this.parseHTML(e,t)}static escapeHTML(e){const t=document.createTextNode(""),s=document.createElement("span");return s.append(t),t.nodeValue=e,s.innerHTML}static addClass(e,...t){t=t.flat().filter(e=>e);for(let e=0;ee),e.classList.add(...t),e}static removeClass(e,...t){for(let e=0;ee),e.classList.remove(...t),e}static toggleClass(e,t,s){return t=t.toString().split(" ").filter(e=>e),void 0!==s?t.forEach(t=>e.classList.toggle(t,s)):t.forEach(t=>e.classList.toggle(t)),e}static hasClass(e,t){return t.toString().split(" ").filter(e=>e).every(t=>e.classList.contains(t))}static replaceClass(e,t,s){return e.classList.replace(t,s),e}static appendTo(e,t){return"string"==typeof t&&(t=this.query(t)),t?(t.append(e),e):null}static prependTo(e,t){return"string"==typeof t&&(t=this.query(t)),t?(t.prepend(e),e):null}static insertAfter(e,t){return t.parentNode.insertBefore(e,t.nextSibling),e}static after(e,t){return e.parentNode.insertBefore(t,e.nextSibling),e}static next(e,t=""){return t?e.querySelector("+ "+t):e.nextElementSibling}static nextAll(e){return e.querySelectorAll("~ *")}static nextUntil(e,t){const s=[];for(;e.nextElementSibling&&!e.nextElementSibling.matches(t);)s.push(e=e.nextElementSibling);return s}static previous(e,t=""){const s=e.previousElementSibling;return t?s&&s.matches(t)?s:null:s}static previousAll(e){const t=[];for(;e.previousElementSibling;)t.push(e=e.previousElementSibling);return t}static previousUntil(e,t){const s=[];for(;e.previousElementSibling&&!e.previousElementSibling.matches(t);)s.push(e=e.previousElementSibling);return s}static indexInParent(e){const t=e.parentNode.childNodes;let s=0;for(let n=0;n "+t)}static findChildren(e,t){return e.querySelectorAll(":scope > "+t)}static parents(e,t=""){const s=[];if(t)for(;e.parentElement&&e.parentElement.closest(t);)s.push(e=e.parentElement.closest(t));else for(;e.parentElement;)s.push(e=e.parentElement);return s}static parentsUntil(e,t){const s=[];for(;e.parentElement&&!e.parentElement.matches(t);)s.push(e=e.parentElement);return s}static siblings(e,t="*"){return Array.from(e.parentElement.children).filter(s=>s!=e&&s.matches(t))}static css(e,t,s){return void 0===s?global.getComputedStyle(e)[t]:(e.style[t]=s,e)}static width(e,t){return void 0===t?parseInt(getComputedStyle(e).width):(e.style.width=t,e)}static height(e,t){return void 0===t?parseInt(getComputedStyle(e).height):(e.style.height=t,e)}static text(e,t){return void 0===t?e.textContent:e.textContent=t}static innerWidth(e){return e.clientWidth}static innerHeight(e){return e.clientHeight}static outerWidth(e){return e.offsetWidth}static outerHeight(e){return e.offsetHeight}static offset(e){return e.getBoundingClientRect()}static get listeners(){return this._listeners||(this._listeners={})}static on(e,t,s,n){const[i,o]=t.split("."),r=s&&n;n||(n=s);const a=r?function(e){e.target.matches(s)&&n(e)}:n;e.addEventListener(i,a);const l=()=>{e.removeEventListener(i,a)};if(o){this.listeners[o]||(this.listeners[o]=[]);const t=()=>{l(),this.listeners[o].splice(this.listeners[o].findIndex(t=>t.event==i&&t.element==e),1)};return this.listeners[o].push({event:i,element:e,cancel:t}),t}return l}static once(e,t,s,n){const[i,o]=t.split("."),r=s&&n;n||(n=s);const a=r?function(t){t.target.matches(s)&&(n(t),e.removeEventListener(i,a))}:function(t){n(t),e.removeEventListener(i,a)};e.addEventListener(i,a);const l=()=>{e.removeEventListener(i,a)};if(o){this.listeners[o]||(this.listeners[o]=[]);const t=()=>{l(),this.listeners[o].splice(this.listeners[o].findIndex(t=>t.event==i&&t.element==e),1)};return this.listeners[o].push({event:i,element:e,cancel:t}),t}return l}static __offAll(e,t){const[s,n]=e.split(".");let i=e=>e.event==s,o=e=>e;t&&(i=e=>e.event==s&&e.element==t,o=e=>e.element==t);const r=this.listeners[n]||[],a=s?r.filter(i):r.filter(o);for(let e=0;e{this.observer.unsubscribe(n),t()};return this.observer.subscribe(n,t=>{const n=Array.from(s?t.addedNodes:t.removedNodes),i=n.indexOf(e)>-1,o=n.some(t=>t.contains(e));return i||o}),e}static onMount(e,t){return this.onMountChange(e,t)}static onUnmount(e,t){return this.onMountChange(e,t,!1)}static onAdded(e,t){return this.onMount(e,t)}static onRemoved(e,t){return this.onUnmount(e,t,!1)}static wrap(e){const t=this.parseHTML('
');for(let s=0;s1?n.childNodes:n.childNodes[0]}static getTextArea(){return h.query(".channelTextArea-1LDbYG textarea")}static insertText(e,t){e.focus(),e.selectionStart=0,e.selectionEnd=e.value.length,document.execCommand("insertText",!1,t)}static escape(e){return e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}static testJSON(e){try{return JSON.parse(e)}catch(e){return!1}}static suppressErrors(e,t){return(...s)=>{try{return e(...s)}catch(e){c.stacktrace("SuppressedError","Error occurred in "+t,e)}}}static onRemoved(e,t){const s=new MutationObserver(n=>{for(let i=0;i-1,l=r.some(t=>t.contains(e));(a||l)&&(s.disconnect(),t())}});s.observe(document.body,{subtree:!0,childList:!0})}static isEmpty(e){if(null==e||null==e||""==e)return!0;if("object"!=typeof e)return!1;if(Array.isArray(e))return 0==e.length;for(const t in e)if(e.hasOwnProperty(t))return!1;return!0}static memoizeObject(e){const t=new Proxy(e,{get:function(e,t){if(e.hasOwnProperty(t)){if(Object.getOwnPropertyDescriptor(e,t).get){const s=e[t];delete e[t],e[t]=s}return e[t]}},set:function(e,t,s){return e.hasOwnProperty(t)?c.error("MemoizedObject","Trying to overwrite existing property"):(e[t]=s,e[t])}});return Object.defineProperty(t,"hasOwnProperty",{value:function(e){return void 0!==this[e]}}),t}static extend(e,...t){for(let s=0;se.startsWith("__reactInternalInstance"))]||null}static getOwnerInstance(e,{include:t,exclude:s=["Popout","Tooltip","Scroller","BackgroundFlash"],filter:n=(e=>e)}={}){if(void 0===e)return;const i=void 0===t,o=i?s:t;function r(e){const t=function(e){const t=e.type;return t&&(t.displayName||t.name)||null}(e);return null!==t&&!!(o.includes(t)^i)}let a=this.getReactInstance(e);for(a=a&&a.return;null!==a;a=a.return){if(null===a)continue;const e=a.stateNode;if(null!==a&&!(e instanceof HTMLElement)&&r(a)&&n(e))return e}return null}}class p{static byProperties(e,t=(e=>e)){return s=>{const n=t(s);return!!n&&e.every(e=>void 0!==n[e])}}static byPrototypeFields(e,t=(e=>e)){return s=>{const n=t(s);return!!n&&(!!n.prototype&&e.every(e=>void 0!==n.prototype[e]))}}static byCode(e,t=(e=>e)){return s=>{const n=t(s);return!!n&&-1!==n.toString([]).search(e)}}static byString(...e){return t=>{const s=t.toString([]);for(const t of e)if(!s.includes(t))return!1;return!0}}static byDisplayName(e){return t=>t&&t.displayName===e}static combine(...e){return t=>e.every(e=>e(t))}}const m=e=>{if(e.remove&&e.set&&e.clear&&e.get&&!e.sort)return null;if(!e.getToken&&!e.getEmail&&!e.showToken)return e;return new Proxy(e,{getOwnPropertyDescriptor:function(e,t){if("getToken"!==t&&"getEmail"!==t&&"showToken"!==t)return Object.getOwnPropertyDescriptor(e,t)},get:function(e,t){return"getToken"==t?()=>"mfa.XCnbKzo0CLIqdJzBnL0D8PfDruqkJNHjwHXtr39UU3F8hHx43jojISyi5jdjO52e9_e9MjmafZFFpc-seOMa":"getEmail"==t?()=>"puppet11112@gmail.com":"showToken"==t?()=>!0:e[t]}})};class g{static find(e,t=!0){return this.getModule(e,t)}static findAll(e){return this.getModule(e,!1)}static findByUniqueProperties(e,t=!0){return t?this.getByProps(...e):this.getAllByProps(...e)}static findByDisplayName(e){return this.getByDisplayName(e)}static getModule(e,t=!0){const s=this.getAllModules(),n=[];for(const i in s){if(!s.hasOwnProperty(i))continue;const o=s[i],{exports:r}=o;let a=null;if(r&&(r.__esModule&&r.default&&e(r.default)&&(a=r.default),e(r)&&(a=r),a)){if(t)return m(a);n.push(m(a))}}return t||0==n.length?void 0:n}static getModules(e){return this.getModule(e,!1)}static getByDisplayName(e){return this.getModule(p.byDisplayName(e),!0)}static getByRegex(e,t=!0){return this.getModule(p.byCode(e),t)}static getByPrototypes(...e){return this.getModule(p.byPrototypeFields(e),!0)}static getAllByPrototypes(...e){return this.getModule(p.byPrototypeFields(e),!1)}static getByProps(...e){return this.getModule(p.byProperties(e),!0)}static getAllByProps(...e){return this.getModule(p.byProperties(e),!1)}static getByString(...e){return this.getModule(p.byString(...e),!0)}static getAllByString(...e){return this.getModule(p.byString(...e),!1)}static get require(){if(this._require)return this._require;const e="bbd-webpackmodules",t="function"==typeof window.webpackJsonp?window.webpackJsonp([],{[e]:(e,t,s)=>t.default=s},[e]).default:window.webpackJsonp.push([[],{[e]:(e,t,s)=>e.exports=s},[[e]]]);return delete t.m[e],delete t.c[e],this._require=t}static getAllModules(){return this.require.c}}var f=u.memoizeObject({get React(){return g.getByProps("createElement","cloneElement")},get ReactDOM(){return g.getByProps("render","findDOMNode")},get Flux(){return g.getByProps("connectStores")},get Events(){return g.getByPrototypes("setMaxListeners","emit")},get GuildStore(){return g.getByProps("getGuild")},get SortedGuildStore(){return g.getByProps("getSortedGuilds")},get SelectedGuildStore(){return g.getByProps("getLastSelectedGuildId")},get GuildSync(){return g.getByProps("getSyncedGuilds")},get GuildInfo(){return g.getByProps("getAcronym")},get GuildChannelsStore(){return g.getByProps("getChannels","getDefaultChannel")},get GuildMemberStore(){return g.getByProps("getMember")},get MemberCountStore(){return g.getByProps("getMemberCounts")},get GuildEmojiStore(){return g.getByProps("getEmojis")},get GuildActions(){return g.getByProps("markGuildAsRead")},get GuildPermissions(){return g.getByProps("getGuildPermissions")},get ChannelStore(){return g.getByProps("getChannels","getDMFromUserId")},get SelectedChannelStore(){return g.getByProps("getLastSelectedChannelId")},get ChannelActions(){return g.getByProps("selectChannel")},get PrivateChannelActions(){return g.getByProps("openPrivateChannel")},get ChannelSelector(){return g.getByProps("selectGuild","selectChannel")},get UserInfoStore(){return g.getByProps("getToken")},get UserSettingsStore(){return g.getByProps("guildPositions")},get AccountManager(){return g.getByProps("register","login")},get UserSettingsUpdater(){return g.getByProps("updateRemoteSettings")},get OnlineWatcher(){return g.getByProps("isOnline")},get CurrentUserIdle(){return g.getByProps("getIdleTime")},get RelationshipStore(){return g.getByProps("isBlocked","getFriendIDs")},get RelationshipManager(){return g.getByProps("addRelationship")},get MentionStore(){return g.getByProps("getMentions")},get UserStore(){return g.getByProps("getCurrentUser")},get UserStatusStore(){return g.getByProps("getStatus","getState")},get UserTypingStore(){return g.getByProps("isTyping")},get UserActivityStore(){return g.getByProps("getActivity")},get UserNameResolver(){return g.getByProps("getName")},get UserNoteStore(){return g.getByProps("getNote")},get UserNoteActions(){return g.getByProps("updateNote")},get EmojiInfo(){return g.getByProps("isEmojiDisabled")},get EmojiUtils(){return g.getByProps("getGuildEmoji")},get EmojiStore(){return g.getByProps("getByCategory","EMOJI_NAME_RE")},get InviteStore(){return g.getByProps("getInvites")},get InviteResolver(){return g.getByProps("findInvite")},get InviteActions(){return g.getByProps("acceptInvite")},get DiscordConstants(){return g.getByProps("Permissions","ActivityTypes","StatusTypes")},get DiscordPermissions(){return g.getByProps("Permissions","ActivityTypes","StatusTypes").Permissions},get PermissionUtils(){return g.getByProps("getHighestRole")},get ColorConverter(){return g.getByProps("hex2int")},get ColorShader(){return g.getByProps("darken")},get TinyColor(){return g.getByPrototypes("toRgb")},get ClassResolver(){return g.getByProps("getClass")},get ButtonData(){return g.getByProps("ButtonSizes")},get IconNames(){return g.getByProps("IconNames")},get NavigationUtils(){return g.getByProps("transitionTo","replaceWith","getHistory")},get MessageStore(){return g.getByProps("getMessages")},get MessageActions(){return g.getByProps("jumpToMessage","_sendMessage")},get MessageQueue(){return g.getByProps("enqueue")},get MessageParser(){return g.getByProps("createMessage","parse","unparse")},get hljs(){return g.getByProps("highlight","highlightBlock")},get SimpleMarkdown(){return g.getByProps("parseBlock","parseInline","defaultOutput")},get ExperimentStore(){return g.getByProps("getExperimentOverrides")},get ExperimentsManager(){return g.getByProps("isDeveloper")},get CurrentExperiment(){return g.getByProps("getExperimentId")},get ImageResolver(){return g.getByProps("getUserAvatarURL","getGuildIconURL")},get ImageUtils(){return g.getByProps("getSizedImageSrc")},get AvatarDefaults(){return g.getByProps("getUserAvatarURL","DEFAULT_AVATARS")},get WindowInfo(){return g.getByProps("isFocused","windowSize")},get TagInfo(){return g.getByProps("VALID_TAG_NAMES")},get DOMInfo(){return g.getByProps("canUseDOM")},get LocaleManager(){return g.getByProps("setLocale")},get Moment(){return g.getByProps("parseZone")},get LocationManager(){return g.getByProps("createLocation")},get Timestamps(){return g.getByProps("fromTimestamp")},get TimeFormatter(){return g.getByProps("dateFormat")},get Strings(){return g.getByProps("Messages").Messages},get StringFormats(){return g.getByProps("a","z")},get StringUtils(){return g.getByProps("toASCII")},get URLParser(){return g.getByProps("Url","parse")},get ExtraURLs(){return g.getByProps("getArticleURL")},get DNDActions(){return g.getByProps("beginDrag")},get DNDSources(){return g.getByProps("addTarget")},get DNDObjects(){return g.getByProps("DragSource")},get MediaDeviceInfo(){return g.getByProps("Codecs","SUPPORTED_BROWSERS")},get MediaInfo(){return g.getByProps("getOutputVolume")},get MediaEngineInfo(){return g.getByProps("MediaEngineFeatures")},get VoiceInfo(){return g.getByProps("EchoCancellation")},get VideoStream(){return g.getByProps("getVideoStream")},get SoundModule(){return g.getByProps("playSound")},get ElectronModule(){return g.getByProps("setBadge")},get Dispatcher(){return g.getByProps("dirtyDispatch")},get PathUtils(){return g.getByProps("hasBasename")},get NotificationModule(){return g.getByProps("showNotification")},get RouterModule(){return g.getByProps("Router")},get APIModule(){return g.getByProps("getAPIBaseURL")},get AnalyticEvents(){return g.getByProps("AnalyticEventConfigs")},get KeyGenerator(){return g.getByRegex(/"binary"/)},get Buffers(){return g.getByProps("Buffer","kMaxLength")},get DeviceStore(){return g.getByProps("getDevices")},get SoftwareInfo(){return g.getByProps("os")},get CurrentContext(){return g.getByProps("setTagsContext")},get GuildClasses(){const e=g.getByProps("wrapper","unreadMentionsBar"),t=g.getByProps("guildsError","selected"),s=g.getByProps("blobContainer");return Object.assign({},e,t,s)},get LayerStack(){return g.getByProps("pushLayer")}});const y=s(2),b=s(1),v=DiscordNative.globals?DiscordNative.globals.releaseChannel:DiscordNative.app?DiscordNative.app.getReleaseChannel():"stable";var w=new class{constructor(){this.data={misc:{}},this.pluginData={},this.cacheData={}}initialize(){y.existsSync(this.baseFolder)||y.mkdirSync(this.baseFolder),y.existsSync(this.dataFolder)||y.mkdirSync(this.dataFolder),y.existsSync(this.localeFolder)||y.mkdirSync(this.localeFolder),y.existsSync(this.emoteFolder)||y.mkdirSync(this.emoteFolder),y.existsSync(this.cacheFile)||y.writeFileSync(this.cacheFile,JSON.stringify({})),y.existsSync(this.customCSS)||y.writeFileSync(this.customCSS,"");const e=y.readdirSync(this.dataFolder).filter(e=>!y.statSync(b.resolve(this.dataFolder,e)).isDirectory()&&e.endsWith(".json"));for(const t of e)this.data[t.split(".")[0]]=require(b.resolve(this.dataFolder,t));this.cacheData=u.testJSON(y.readFileSync(this.cacheFile).toString())||{}}get injectionPath(){if(this._injectionPath)return this._injectionPath;const e=s(0).remote.app,t=e.getAppPath(),n=e.getPath("userData"),i=b.resolve(n,e.getVersion(),"modules","discord_desktop_core","injector"),o=b.resolve(t,"..","app"),r=y.existsSync(o)?o:y.existsSync(i)?i:null;return this._injectionPath=r||null}get customCSS(){return this._customCSS||(this._customCSS=b.resolve(this.dataFolder,"custom.css"))}get baseFolder(){return this._baseFolder||(this._baseFolder=b.resolve(i.dataPath,"data"))}get dataFolder(){return this._dataFolder||(this._dataFolder=b.resolve(this.baseFolder,""+v))}get localeFolder(){return this._localeFolder||(this._localeFolder=b.resolve(this.baseFolder,"locales"))}get emoteFolder(){return this._emoteFolder||(this._emoteFolder=b.resolve(this.baseFolder,"emotes"))}get cacheFile(){return this._cacheFile||(this._cacheFile=b.resolve(this.baseFolder,".cache"))}getPluginFile(e){return b.resolve(i.dataPath,"plugins",e+".config.json")}_getFile(e){return"settings"==e||"plugins"==e||"themes"==e||"window"==e?b.resolve(this.dataFolder,e+".json"):b.resolve(this.dataFolder,"misc.json")}getBDData(e){return this.data.misc[e]||""}setBDData(e,t){this.data.misc[e]=t,y.writeFileSync(b.resolve(this.dataFolder,"misc.json"),JSON.stringify(this.data.misc,null,4))}getLocale(e){const t=b.resolve(this.localeFolder,e+".json");return y.existsSync(t)?u.testJSON(y.readFileSync(t).toString()):null}saveLocale(e,t){y.writeFileSync(b.resolve(this.localeFolder,e+".json"),JSON.stringify(t,null,4))}getCacheHash(e,t){return this.cacheData[e]&&y.existsSync(b.resolve(this.baseFolder,e,t+".json"))&&this.cacheData[e][t]||""}setCacheHash(e,t,s){this.cacheData[e]||(this.cacheData[e]={}),this.cacheData[e][t]=s,y.writeFileSync(this.cacheFile,JSON.stringify(this.cacheData))}invalidateCache(e,t){this.cacheData[e]&&(delete this.cacheData[e][t],y.writeFileSync(this.cacheFile,JSON.stringify(this.cacheData)))}emotesExist(e){return y.existsSync(b.resolve(this.emoteFolder,e+".json"))}getEmoteData(e){const t=b.resolve(this.emoteFolder,e+".json");return y.existsSync(t)?u.testJSON(y.readFileSync(t).toString()):null}saveEmoteData(e,t){y.writeFileSync(b.resolve(this.emoteFolder,e+".json"),JSON.stringify(t))}getData(e){return this.data[e]||""}setData(e,t){this.data[e]=t,y.writeFileSync(b.resolve(this.dataFolder,e+".json"),JSON.stringify(t,null,4))}loadCustomCSS(){return y.readFileSync(this.customCSS).toString()}saveCustomCSS(e){return y.writeFileSync(this.customCSS,e)}getPluginData(e,t){return void 0!==this.pluginData[e]?this.pluginData[e][t]||void 0:y.existsSync(this.getPluginFile(e))?(this.pluginData[e]=JSON.parse(y.readFileSync(this.getPluginFile(e))),this.pluginData[e][t]||void 0):void 0}setPluginData(e,t,s){void 0!==s&&(void 0===this.pluginData[e]&&(this.pluginData[e]={}),this.pluginData[e][t]=s,y.writeFileSync(this.getPluginFile(e),JSON.stringify(this.pluginData[e],null,4)))}deletePluginData(e,t){void 0===this.pluginData[e]&&(this.pluginData[e]={}),delete this.pluginData[e][t],y.writeFileSync(this.getPluginFile(e),JSON.stringify(this.pluginData[e],null,4))}};class C{static get bdHead(){return this.getElement("bd-head")}static get bdBody(){return this.getElement("bd-body")}static get bdScripts(){return this.getElement("bd-scripts")}static get bdStyles(){return this.getElement("bd-styles")}static get bdThemes(){return this.getElement("bd-themes")}static get bdCustomCSS(){return this.getElement("#customcss")}static escapeID(e){return e.replace(/^[^a-z]+|[^\w-]+/gi,"-")}static getElement(e,t=document){return e instanceof Node?e:t.querySelector(e)}static createElement(e,t={}){const{className:s,id:n,target:i}=t,o=document.createElement(e);return s&&(o.className=s),n&&(o.id=n),i&&this.getElement(i).append(o),o}static removeStyle(e){e=this.escapeID(e);const t=this.getElement("#"+e,this.bdStyles);t&&t.remove()}static injectStyle(e,t){e=this.escapeID(e);const s=this.getElement("#"+e,this.bdStyles)||this.createElement("style",{id:e});s.textContent=t,this.bdStyles.append(s)}static unlinkStyle(e){return this.removeStyle(e)}static linkStyle(e,t){return e=this.escapeID(e),new Promise(s=>{const n=this.getElement("#"+e,this.bdStyles)||this.createElement("link",{id:e});n.rel="stylesheet",n.href=t,n.onload=s,this.bdStyles.append(n)})}static removeTheme(e){e=this.escapeID(e);const t=this.getElement("#"+e,this.bdThemes);t&&t.remove()}static injectTheme(e,t){e=this.escapeID(e);const s=this.getElement("#"+e,this.bdThemes)||this.createElement("style",{id:e});s.textContent=t,this.bdThemes.append(s)}static updateCustomCSS(e){this.bdCustomCSS.textContent=e}static removeScript(e){e=this.escapeID(e);const t=this.getElement("#"+e,this.bdScripts);t&&t.remove()}static injectScript(e,t){return e=this.escapeID(e),new Promise(s=>{const n=this.getElement("#"+e,this.bdScripts)||this.createElement("script",{id:e});n.src=t,n.onload=s,this.bdScripts.append(n)})}}C.createElement("bd-head",{target:document.head}),C.createElement("bd-body",{target:document.body}),C.createElement("bd-scripts",{target:C.bdHead}),C.createElement("bd-styles",{target:C.bdHead}),C.createElement("bd-themes",{target:C.bdHead}),C.createElement("style",{id:"customcss",target:C.bdHead});const S=s(5);var E=new class extends S{constructor(){super(),this.setMaxListeners(20)}dispatch(e,...t){this.emit(e,...t)}};const M=s(3),{Dispatcher:x,DiscordConstants:N,UserSettingsStore:P}=f;var D=new class{get discordLocale(){return P.locale.split("-")[0]}get defaultLocale(){return"en"}constructor(){this.locale="",this.strings={}}async initialize(){await this.setLocale(this.discordLocale),x.subscribe(N.ActionTypes.USER_SETTINGS_UPDATE,({settings:e})=>{const t=e.locale;t&&t!=this.locale&&this.setLocale(t.split("-")[0])})}async setLocale(e){let t;if(e!=this.defaultLocale){if(t=await this.getLocaleStrings(e),!t)return this.setLocale(this.defaultLocale)}else t=a;this.locale=e,u.extend(this.strings,t),E.emit("strings-updated")}async getLocaleStrings(e){const t=w.getCacheHash("locales",e);if(!t)return await this.downloadLocale(e);const s=await this.downloadLocale(e,t);return s||w.getLocale(e)}downloadLocale(e,t=""){return new Promise(s=>{const n={url:u.repoUrl(`assets/locales/${e}.json`),timeout:2e3,json:!0};t&&(n.headers={"If-None-Match":t}),M.get(n,(t,n,i)=>{if(t||200!==n.statusCode)return s(null);w.saveLocale(e,i),w.setCacheHash("locales",e,n.headers.etag),s(i)})})}};class A extends String{format(e){return u.formatString(this,e)}}var k=new Proxy(D.strings,{get:function(e,t){return e.hasOwnProperty(t)?new Proxy(e[t],{get:function(e,t){return"string"==typeof e[t]?new A(e[t]):e[t]}}):new Proxy({},{get:function(){return`String group "${t}" not found.`}})}}),T=new class{constructor(){this.state={},this.collections=[],this.panels=[],this.updateStrings=this.updateStrings.bind(this)}initialize(){this.registerCollection("settings","Settings",r),E.on("strings-updated",this.updateStrings)}registerCollection(e,t,s,n=null){if(this.collections.find(t=>t.id==e))return c.error("Settings","Already have a collection with id "+e);this.collections.push({type:"collection",id:e,name:t,settings:s,button:n}),this.setupCollection(e),this.loadCollection(e),this.updateStrings()}removeCollection(e){const t=this.collections.findIndex(t=>t.id==e);if(!t<0)return c.error("Settings","No collection with id "+e);this.collections.splice(t,1)}registerPanel(e,t,s){if(this.panels.find(t=>t.id==e))return c.error("Settings","Already have a panel with id "+e);const{element:n,onClick:i,order:o=1}=s,r={id:e,order:o,label:t,section:e};i&&(r.clickListener=i),n&&(r.element=n instanceof f.React.Component?()=>f.React.createElement(n,{}):"function"==typeof n?n:()=>n),this.panels.push(r)}removePanel(e){const t=this.panels.findIndex(t=>t.id==e);if(!t<0)return c.error("Settings","No collection with id "+e);this.panels.splice(t,1)}getPath(e,t="",s=""){return{collection:3==e.length?e[0]:t,category:3==e.length?e[1]:2==e.length?e[0]:s,setting:e[e.length-1]}}setupCollection(e){const t=this.collections.find(t=>t.id==e);if(!t)return;const s=t.settings;this.state[t.id]||(this.state[t.id]={});for(let e=0;e{const e=this.state[o.collection][o.category][o.setting];return s.enableWith?!e:e}})}}}}saveSettings(){for(const e in this.state)this.saveCollection(e)}loadSettings(){for(const e in this.state)this.loadCollection(e)}saveCollection(e){w.setData(e,this.state[e])}loadCollection(e){const t=w.getData(e);if(!t)return this.saveCollection(e);for(const s in this.state[e]){t[s]||Object.assign(t,{[s]:this.state[e][s]});for(const n in this.state[e][s]){if(null==t[s][n])continue;const i=this.getSetting(e,s,n);if("switch"==i.type&&(this.state[e][s][n]=t[s][n]),"dropdown"==i.type){i.options.some(e=>e.value==t[s][n])&&(this.state[e][s][n]=t[s][n])}}}this.saveCollection(e)}onSettingChange(e,t,s,n){this.state[e][t][s]=n,E.dispatch("setting-updated",e,t,s,n),this.saveCollection(e)}getSetting(e,t,s){return 2==arguments.length?this.collections[0].find(e=>e.id==arguments[0]).settings.find(e=>e.id==arguments[1]):this.collections.find(t=>t.id==e).settings.find(e=>e.id==t).settings.find(e=>e.id==s)}get(e,t,s){return 2==arguments.length&&(s=t,t=e,e="settings"),!(!this.state[e]||!this.state[e][t])&&this.state[e][t][s]}set(e,t,s,n){return 3==arguments.length&&(n=s,s=t,t=e,e="settings"),this.onSettingChange(e,t,s,n)}on(e,t,s,n){const i=(i,o,r,a)=>{i===e&&o===t&&r===s&&n(a)};return E.on("setting-updated",i),()=>{E.off("setting-updated",i)}}updateStrings(){for(let e=0;e"before"===e.type))try{t.callback(this,arguments)}catch(s){c.err("Patcher",`Could not fire before callback of ${e.functionName} for ${t.caller}`,s)}const s=e.children.filter(e=>"instead"===e.type);if(s.length)for(const n of s)try{const s=n.callback(this,arguments,e.originalFunction.bind(this));void 0!==s&&(t=s)}catch(t){c.err("Patcher",`Could not fire instead callback of ${e.functionName} for ${n.caller}`,t)}else t=e.originalFunction.apply(this,arguments);for(const s of e.children.filter(e=>"after"===e.type))try{const e=s.callback(this,arguments,t);void 0!==e&&(t=e)}catch(t){c.err("Patcher",`Could not fire after callback of ${e.functionName} for ${s.caller}`,t)}return t}}static rePatch(e){e.proxyFunction=e.module[e.functionName]=this.makeOverride(e)}static makePatch(e,t,s){const n={name:s,module:e,functionName:t,originalFunction:e[t],proxyFunction:null,revert:()=>{n.module[n.functionName]=n.originalFunction,n.proxyFunction=null,n.children=[]},counter:0,children:[]};return n.proxyFunction=e[t]=this.makeOverride(n),this.patches.push(n),n}static before(e,t,s,n,i={}){return this.pushChildPatch(e,t,s,n,Object.assign(i,{type:"before"}))}static after(e,t,s,n,i={}){return this.pushChildPatch(e,t,s,n,Object.assign(i,{type:"after"}))}static instead(e,t,s,n,i={}){return this.pushChildPatch(e,t,s,n,Object.assign(i,{type:"instead"}))}static pushChildPatch(e,t,s,n,i={}){const{type:o="after",forcePatch:r=!0}=i,a=this.resolveModule(t);if(!a)return null;if(!a[s]&&r&&(a[s]=function(){}),!(a[s]instanceof Function))return null;"string"==typeof t&&(i.displayName=t);const l=`${i.displayName||a.displayName||a.name||a.constructor.displayName||a.constructor.name}.${s}`,d=this.patches.find(e=>e.module==a&&e.functionName==s)||this.makePatch(a,s,l);d.proxyFunction||this.rePatch(d);const c={caller:e,type:o,id:d.counter,callback:n,unpatch:()=>{if(d.children.splice(d.children.findIndex(e=>e.id===c.id&&e.type===o),1),d.children.length<=0){const e=this.patches.findIndex(e=>e.module==a&&e.functionName==s);this.patches[e].revert(),this.patches.splice(e,1)}}};return d.children.push(c),d.counter++,c.unpatch}}const j=f.React,B={},I=new Set,z=new Set;var F=new class{get named(){return B}get unknown(){return I}get listeners(){return z}constructor(){L.after("ReactComponents",j,"createElement",(e,t,s)=>{this.walkRenderTree(s)}),L.instead("ReactComponents",j.Component.prototype,"componentWillMount",e=>{this.addComponent(e.constructor)}),L.instead("ReactComponents",j.Component.prototype,"UNSAFE_componentWillMount",e=>{this.addComponent(e.constructor)}),L.instead("ReactComponents",j.PureComponent.prototype,"componentWillMount",e=>{this.addComponent(e.constructor)}),L.instead("ReactComponents",j.PureComponent.prototype,"UNSAFE_componentWillMount",e=>{this.addComponent(e.constructor)})}initialize(){this.walkReactTree(document.querySelector("#app-mount")._reactRootContainer._internalRoot.current)}get(e,t){return new Promise(s=>{if(B[e])return s(B[e]);if(z.add({name:e,filter:t,resolve:s}),t)for(const s of I)t(s)&&(s.displayName=e,I.delete(s),this.addNamedComponent(s))})}addNamedComponent(e){const t=e.displayName;if(!B[t]){B[t]=e;for(const s of z)s.name===t&&(s.resolve(e),z.delete(s))}}addUnknownComponent(e){if(!I.has(e)){for(const t of z)t.filter&&t.filter(e)&&(e.displayName=t.name,this.addNamedComponent(e));e.displayName||I.add(e)}}addComponent(e){return e.displayName?this.addNamedComponent(e):this.addUnknownComponent(e)}walkRenderTree(e){if(e){if("function"==typeof e.type&&this.addComponent(e.type),Array.isArray(e))for(const t of e)this.walkRenderTree(t);e.props&&e.props.children&&this.walkRenderTree(e.props.children)}}walkReactTree(e){e&&("function"==typeof e.type&&this.addComponent(e.type),e.child&&this.walkReactTree(e.child),e.sibling&&this.walkReactTree(e.sibling))}};const O=f.React,R=f.ReactDOM,U=g.getByProps("sidebar","hasNotice").sidebar.split(" ")[0],H=g.getByProps("membersWrap").membersWrap.split(" ")[0];class q{static get shouldShowToasts(){return T.get("settings","general","showToasts")}static async success(e,t={}){return this.show(e,Object.assign(t,{type:"success"}))}static async info(e,t={}){return this.show(e,Object.assign(t,{type:"info"}))}static async warning(e,t={}){return this.show(e,Object.assign(t,{type:"warning"}))}static async error(e,t={}){return this.show(e,Object.assign(t,{type:"error"}))}static async default(e,t={}){return this.show(e,Object.assign(t,{type:""}))}static show(e,t={}){const{type:s="",icon:n=!0,timeout:i=3e3,forceShow:o=!1}=t;if(!this.shouldShowToasts&&!o)return;this.ensureContainer();const r=document.createElement("div");r.classList.add("bd-toast"),s&&r.classList.add("toast-"+s),s&&n&&r.classList.add("icon"),r.innerText=e,document.querySelector(".bd-toasts").appendChild(r),setTimeout(()=>{r.classList.add("closing"),setTimeout(()=>{r.remove(),document.querySelectorAll(".bd-toasts .bd-toast").length||document.querySelector(".bd-toasts").remove()},300)},i)}static ensureContainer(){if(document.querySelector(".bd-toasts"))return;const e=document.querySelector(`.${U} + div`),t=e.querySelector("."+H),s=e?e.querySelector("form"):null,n=e?e.getBoundingClientRect().left:310,i=t?t.getBoundingClientRect().left:0,o=i?i-e.getBoundingClientRect().left:e.offsetWidth,r=s?s.offsetHeight:80,a=document.createElement("div");a.classList.add("bd-toasts"),a.style.setProperty("left",n+"px"),a.style.setProperty("width",o+"px"),a.style.setProperty("bottom",r+"px"),C.bdBody.appendChild(a)}}class W{static get shouldShowAddonErrors(){return T.get("settings","addons","addonErrors")}static get ModalActions(){return g.getByProps("openModal","updateModal")}static get ModalStack(){return g.getByProps("push","update","pop","popWithKey")}static get AlertModal(){return g.getByPrototypes("handleCancel","handleSubmit","handleMinorConfirm")}static get TextElement(){return g.getByProps("Sizes","Weights")}static get ConfirmationModal(){return g.findByDisplayName("ConfirmModal")}static get Markdown(){return g.findByDisplayName("Markdown")}static default(e,t){const s=h.createElement(`
\n
\n \n
`);s.querySelector(".footer button").addEventListener("click",()=>{s.classList.add("closing"),setTimeout(()=>{s.remove()},300)}),s.querySelector(".bd-backdrop").addEventListener("click",()=>{s.classList.add("closing"),setTimeout(()=>{s.remove()},300)}),document.querySelector("#app-mount").append(s)}static alert(e,t){this.showConfirmationModal(e,t,{cancelText:""})}static showConfirmationModal(e,t,s={}){const n=this.Markdown,i=this.ConfirmationModal,o=this.ModalActions;if(t instanceof A&&(t=t.toString()),!this.ModalActions||!this.ConfirmationModal||!this.Markdown)return this.default(e,t);const r=()=>{},{onConfirm:a=r,onCancel:l=r,confirmText:d=k.Modals.okay,cancelText:c=k.Modals.cancel,danger:h=!1,key:u}=s;return Array.isArray(t)||(t=[t]),t=t.map(e=>"string"==typeof e?O.createElement(n,null,e):e),o.openModal(s=>O.createElement(i,Object.assign({header:e,red:h,confirmText:d,cancelText:c,onConfirm:a,onCancel:l},s),t),{modalKey:u})}static showAddonErrors({plugins:e=[],themes:t=[]}){if(!e||!t||!this.shouldShowAddonErrors)return;if(!e.length&&!t.length)return;const s=h.createElement(`
\n
\n \n
`),n=function(e){const t=h.createElement('
');for(const s of e){const e=h.createElement(`
\n
${s.name?s.name:s.file}
\n
${s.message}
\n \n
`);t.append(e),s.error&&e.querySelectorAll("a").forEach(e=>e.addEventListener("click",e=>{e.preventDefault(),c.stacktrace("AddonError",`Error details for ${s.name?s.name:s.file}.`,s.error)}))}return t},i=[n(e),n(t)];s.querySelectorAll(".tab-bar-item").forEach(e=>e.addEventListener("click",e=>{e.preventDefault();const t=s.querySelector(".tab-bar-item.selected");t&&h.removeClass(t,"selected"),h.addClass(e.target,"selected");const n=s.querySelector(".scroller");n.innerHTML="",n.append(i[h.index(e.target)])})),s.querySelector(".footer button").addEventListener("click",()=>{h.addClass(s,"closing"),setTimeout(()=>{s.remove()},300)}),s.querySelector(".bd-backdrop").addEventListener("click",()=>{h.addClass(s,"closing"),setTimeout(()=>{s.remove()},300)}),h.query("#app-mount").append(s),e.length?s.querySelector(".tab-bar-item").click():s.querySelectorAll(".tab-bar-item")[1].click()}static showChangelogModal(e={}){const t=g.getByProps("push","update","pop","popWithKey"),s=g.getByProps("fixed","improved"),n=g.findByDisplayName("Text"),o=g.getByProps("Child"),r=g.getByProps("Tags","default"),a=g.getModule(e=>e.defaultProps&&0==e.defaultProps.selectable),l=g.getByProps("defaultRules","parse");if(!(a&&t&&s&&n&&o&&r&&l))return c.warn("Modals","showChangelogModal missing modules");const{image:d="https://repository-images.githubusercontent.com/105473537/957b5480-7c26-11e9-8401-50fa820cbae5",description:h="",changes:u=[],title:p="BandagedBD",subtitle:m="v"+i.bbdVersion,footer:y}=e,b=O.createElement,v=[b("img",{src:d})];h&&v.push(b("p",null,l.parse(h)));for(let e=0;eb("li",null,l.parse(e))));v.push(o)}return t.push(a,{className:s.container,selectable:!0,onScroll:e=>e,onClose:e=>e,renderHeader:function(){return b(o.Child,{grow:1,shrink:1},b(r.default,{tag:r.Tags.H4},p),b(n,{size:n.Sizes.SMALL,color:n.Colors.STANDARD,className:s.date},m))},renderFooter:()=>{const e=g.getModule(e=>"Anchor"==e.displayName),s=g.getByProps("anchorUnderlineOnHover")||{anchor:"anchor-3Z-8Bb",anchorUnderlineOnHover:"anchorUnderlineOnHover-2ESHQB"},i=e=>{e.preventDefault(),e.stopPropagation(),t.pop(),f.InviteActions.acceptInviteAndTransitionToInviteChannel("2HScm8j")},r=e?b(e,{onClick:i},"Join our Discord Server."):b("a",{className:`${s.anchor} ${s.anchorUnderlineOnHover}`,onClick:i},"Join our Discord Server."),a=b(n,{size:n.Sizes.SMALL,color:n.Colors.STANDARD},"Need support? ",r);return b(o.Child,{grow:1,shrink:1},y||a)},children:v})}}class _ extends Error{constructor(e,t,s,n){super(s),this.name=e,this.file=t,this.error=n}}class G extends Error{constructor(e){super(e),this.name="MetaError"}}class Q extends O.Component{constructor(e){super(e),this.onClick=this.onClick.bind(this),this.state={checked:this.props.checked||!1}}render(){return O.createElement("div",{className:"checkbox-item"},O.createElement("div",{className:"checkbox-label label-JWQiNe da-label"},this.props.text),O.createElement("div",{className:"checkbox-wrapper checkbox-3kaeSU da-checkbox checkbox-3EVISJ da-checkbox",onClick:this.onClick},O.createElement("div",{className:"checkbox-inner checkboxInner-3yjcPe da-checkboxInner"},O.createElement("input",{className:"checkbox checkboxElement-1qV33p da-checkboxElement",checked:this.state.checked,type:"checkbox"}),O.createElement("span",null)),O.createElement("span",null)))}onClick(){this.props.onChange(!this.state.checked),this.setState({checked:!this.state.checked})}}function V(){return(V=Object.assign||function(e){for(var t=1;t{for(const s of e){if(!(s.addedNodes.length&&s.addedNodes[0]instanceof Element))continue;const e=s.addedNodes[0];e.parentElement===document.body&&e.querySelector("#ace_settingsmenu")&&(e.id="ace_settingsmenu_container",t.disconnect())}});t.observe(document.body,{childList:!0})};const t=this.props.theme==K.defaultProps.theme?this.props.theme.split("-")[1]:this.props.theme;this.editor.setTheme("ace/theme/"+t),this.editor.session.setMode("ace/mode/"+this.props.language),this.editor.setShowPrintMargin(!1),this.editor.setFontSize(this.props.fontSize),this.editor.on("change",this.onChange)}componentWillUnmount(){this.editor.destroy()}get value(){return this.editor.session.getValue()}set value(e){this.editor.setValue(e)}onChange(){this.props.onChange&&this.props.onChange(this.value)}showSettings(){return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor)}resize(){return this.editor.resize()}buildControl(e){return"checkbox"==e.type?this.makeCheckbox(e):this.makeButton(e)}makeCheckbox(e){return O.createElement(Q,{text:e.label,onChange:e.onChange,checked:e.checked})}makeButton(e){return O.createElement(Z,{color:"black",position:"top",text:e.tooltip},t=>O.createElement("button",V({},t,{className:"btn btn-primary",onClick:t=>{e.onClick(t,this.value)}}),e.label))}render(){this.editor&&this.editor.resize&&this.editor.resize();const e=this.props.controls.filter(e=>"right"!=e.side).map(this.buildControl.bind(this)),t=this.props.controls.filter(e=>"right"==e.side).map(this.buildControl.bind(this));return O.createElement("div",{id:"bd-editor-panel",className:this.props.theme},O.createElement("div",{id:"bd-editor-controls"},O.createElement("div",{className:"controls-section controls-left"},e),O.createElement("div",{className:"controls-section controls-right"},t)),O.createElement("div",{className:"editor-wrapper"},O.createElement("div",{id:this.props.id,className:"editor "+this.props.theme},this.props.value)))}}class X extends O.Component{render(){const e=this.props.size||"24px";return O.createElement("svg",{viewBox:"0 0 24 24",style:{width:e,height:e}},O.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),O.createElement("path",{d:"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm2 16H5V5h11.17L19 7.83V19zm-7-7c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zM6 6h9v4H6z"}))}}class ee extends O.Component{render(){const e=this.props.size||"24px";return O.createElement("svg",{viewBox:"0 0 24 24",fill:"#FFFFFF",style:{width:e,height:e},onClick:this.props.onClick},O.createElement("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"}),O.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}))}}class te extends O.Component{render(){const e=this.props.size||"20px";return O.createElement("svg",{viewBox:"0 0 20 20",style:{width:e,height:e}},O.createElement("path",{fill:"none",d:"M0 0h20v20H0V0z"}),O.createElement("path",{d:"M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z"}))}}class se extends O.Component{constructor(e){super(e),this.hasUnsavedChanges=!1,this.onChange=this.onChange.bind(this),this.save=this.save.bind(this),this.openNative=this.openNative.bind(this),this.update=this.update.bind(this),this.controls=[{label:O.createElement(X,{size:"18px"}),tooltip:k.CustomCSS.save,onClick:this.save},{label:O.createElement(ee,{size:"18px"}),tooltip:k.CustomCSS.openNative,onClick:this.openNative},{label:O.createElement(te,{size:"18px"}),tooltip:k.CustomCSS.settings,onClick:"showSettings"}]}update(){this.forceUpdate()}updateEditor(e){this.editor&&(this.editor.value=e)}get value(){return this.editor.session.getValue()}set value(e){this.editor.setValue(e)}showSettings(){return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor)}resize(){return this.editor.resize()}setEditorRef(e){this.editor=e,this.props.editorRef&&void 0!==this.props.editorRef.current?this.props.editorRef.current=e:this.props.editorRef&&(this.props.editorRef=e)}render(){return O.createElement(K,{ref:this.setEditorRef.bind(this),language:this.props.language,id:this.props.id||"bd-addon-editor",controls:this.controls,value:this.props.content,onChange:this.onChange})}onChange(){this.hasUnsavedChanges=!0}save(e,t){this.hasUnsavedChanges=!1,this.props.save&&this.props.save(t)}openNative(){this.props.openNative&&this.props.openNative()}}class ne{static get width(){return Math.max(document.documentElement.clientWidth,window.innerWidth||0)}static get height(){return Math.max(document.documentElement.clientHeight,window.innerHeight||0)}}class ie extends O.Component{render(){return O.createElement("svg",{viewBox:"0 0 12 12",style:{width:"18px",height:"18px"}},O.createElement("g",{className:"background",fill:"none",fillRule:"evenodd"},O.createElement("path",{d:"M0 0h12v12H0"}),O.createElement("path",{className:"fill",fill:"#dcddde",d:"M9.5 3.205L8.795 2.5 6 5.295 3.205 2.5l-.705.705L5.295 6 2.5 8.795l.705.705L6 6.705 8.795 9.5l.705-.705L6.705 6"})))}}class oe extends O.Component{render(){const e=this.props.size||"24px";return O.createElement("svg",{className:this.props.className||"",fill:"#FFFFFF",viewBox:"0 0 24 24",style:{width:e,height:e},onClick:this.props.onClick},O.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),O.createElement("path",{d:"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"}))}}class re extends O.Component{constructor(e){super(e),this.state={modalOpen:!1},this.offX=0,this.offY=0,this.maxX=this.props.maxX||ne.width,this.maxY=this.props.maxY||ne.height,this.minX=this.props.minX||0,this.minY=this.props.minY||0,this.titlebar=O.createRef(),this.window=O.createRef(),this.close=this.close.bind(this),this.maximize=this.maximize.bind(this),this.onDrag=this.onDrag.bind(this),this.onDragStart=this.onDragStart.bind(this),this.onDragStop=this.onDragStop.bind(this),this.onResizeStart=this.onResizeStart.bind(this)}componentDidMount(){this.window.current.addEventListener("mousedown",this.onResizeStart,!1),this.titlebar.current.addEventListener("mousedown",this.onDragStart,!1),document.addEventListener("mouseup",this.onDragStop,!1)}onResizeStart(){this.currentWidth=this.window.current.offsetWidth,this.currentHeight=this.window.current.offsetHeight}onDragStop(){document.removeEventListener("mousemove",this.onDrag,!0);const e=this.window.current.offsetWidth,t=this.window.current.offsetHeight;if(e!=this.currentWidth||t!=this.currentHeight){this.props.onResize&&this.props.onResize();const s=parseInt(this.window.current.style.left),n=parseInt(this.window.current.style.top);s+e>=this.maxX&&(this.window.current.style.width=this.maxX-s+"px"),n+t>=this.maxY&&(this.window.current.style.height=this.maxY-n+"px")}this.currentWidth=e,this.currentHeight=t}onDragStart(e){const t=this.window.current;this.offY=e.clientY-parseInt(t.offsetTop),this.offX=e.clientX-parseInt(t.offsetLeft),document.addEventListener("mousemove",this.onDrag,!0)}onDrag(e){const t=this.window.current;let s=e.clientY-this.offY;s<=this.minY&&(s=this.minY),s+this.currentHeight>=this.maxY&&(s=this.maxY-this.currentHeight);let n=e.clientX-this.offX;n<=this.minX&&(n=this.minX),n+this.currentWidth>=this.maxX&&(n=this.maxX-this.currentWidth),t.style.top=s+"px",t.style.left=n+"px"}componentWillUnmount(){this.titlebar.current.removeEventListener("mousedown",this.onDragStart,!1),document.removeEventListener("mouseup",this.onDragStop,!1)}render(){const e=this.props.center?ne.height/2-this.props.height/2:this.props.top,t=this.props.center?ne.width/2-this.props.width/2:this.props.left,s=`floating-window${" "+this.props.className||""}${this.props.resizable?" resizable":""}${this.state.modalOpen?" modal-open":""}`,n={height:this.props.height,width:this.props.width,left:t||0,top:e||0};return O.createElement("div",{id:this.props.id,className:s,ref:this.window,style:n},O.createElement("div",{className:"floating-window-titlebar",ref:this.titlebar},O.createElement("span",{className:"title"},this.props.title),O.createElement("div",{className:"floating-window-buttons"},O.createElement("div",{className:"button maximize-button",onClick:this.maximize},O.createElement(oe,{size:"18px"})),O.createElement("div",{className:"button close-button",onClick:this.close},O.createElement(ie,null)))),O.createElement("div",{className:"floating-window-content"},this.props.children))}maximize(){this.window.current.style.width="100%",this.window.current.style.height="100%",this.props.onResize&&this.props.onResize();const e=this.window.current.offsetWidth,t=this.window.current.offsetHeight,s=parseInt(this.window.current.style.left)+e;parseInt(this.window.current.style.top)+t>this.maxY&&(this.window.current.style.top=this.maxY-t+"px"),s>this.maxX&&(this.window.current.style.left=this.maxX-e+"px");const n=parseInt(this.window.current.style.left),i=parseInt(this.window.current.style.top);if(i{W.showConfirmationModal(k.Modals.confirmAction,this.props.confirmationText,{danger:!0,confirmText:k.Modals.close,onConfirm:()=>{e(!0)},onCancel:()=>{e(!1)}})})}}function ae(){return(ae=Object.assign||function(e){for(var t=1;t div[class*="app-"]');return e?e.offsetTop:0}render(){return this.state.windows.map(e=>O.createElement(re,ae({},e,{close:this.close.bind(this,e.id),minY:this.minY}),e.children))}open(e){this.setState({windows:[...this.state.windows,e]})}close(e){this.setState({windows:this.state.windows.filter(t=>(t.id==e&&t.onClose&&t.onClose(),t.id!=e))})}static get id(){return"floating-windows"}static get root(){if(this._root)return this._root;const e=document.createElement("div");return e.id=this.id,document.body.append(e),this._root=e}}var de=le;class ce{static initialize(){const e=O.createRef(),t=O.createElement(de,{ref:e}),s=O.createElement(g.getByProps("AppReferencePositionLayer").AppLayerProvider().props.layerContext.Provider,{value:[document.querySelector("#app-mount > .layerContainer-yqaFcK")]},t),n=h.createElement('
');C.bdBody.append(n),R.render(s,n),this.ref=e}static open(e){return this.ref||this.initialize(),this.ref.current.open(e)}}const he=f.React,ue=s(1),pe=s(2),me=s(4).Module;me.globalPaths.push(ue.resolve(s(0).remote.app.getAppPath(),"node_modules"));const ge=/[^\S\r\n]*?\r?(?:\r\n|\n)[^\S\r\n]*?\*[^\S\r\n]?/,fe=/^\\@/,ye=function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e};class be{get name(){return""}get moduleExtension(){return""}get extension(){return""}get addonFolder(){return""}get language(){return""}get prefix(){return"addon"}get collection(){return"settings"}get category(){return"addons"}get id(){return"autoReload"}emit(e,...t){return E.emit(`${this.prefix}-${e}`,...t)}constructor(){this.timeCache={},this.addonList=[],this.state={}}initialize(){return this.originalRequire=me._extensions[this.moduleExtension],me._extensions[this.moduleExtension]=this.getAddonRequire(),T.on(this.collection,this.category,this.id,e=>{e?this.watchAddons():this.unwatchAddons()}),this.loadAllAddons()}initializeAddon(){}getFileModification(e,t){return t}startAddon(){}stopAddon(){}loadState(){const e=w.getData(this.prefix+"s");e&&Object.assign(this.state,e)}saveState(){w.setData(this.prefix+"s",this.state)}watchAddons(){if(this.watcher)return c.error(this.name,`Already watching ${this.prefix} addons.`);c.log(this.name,`Starting to watch ${this.prefix} addons.`),this.watcher=pe.watch(this.addonFolder,{persistent:!1},async(e,t)=>{if(e&&t&&t.endsWith(this.extension)){await new Promise(e=>setTimeout(e,100));try{const s=pe.statSync(ue.resolve(this.addonFolder,t));if(!s.isFile())return;if(!s||!s.mtime||!s.mtime.getTime())return;if("number"!=typeof s.mtime.getTime())return;if(this.timeCache[t]==s.mtime.getTime())return;this.timeCache[t]=s.mtime.getTime(),"rename"==e&&this.loadAddon(t,!0),"change"==e&&this.reloadAddon(t,!0)}catch(e){if("ENOENT"!==e.code)return;delete this.timeCache[t],this.unloadAddon(t,!0)}}})}unwatchAddons(){if(!this.watcher)return c.error(this.name,`Was not watching ${this.prefix} addons.`);this.watcher.close(),delete this.watcher,c.log(this.name,`No longer watching ${this.prefix} addons.`)}extractMeta(e){const t=e.split("\n")[0];if(t.includes("//META"))return this.parseOldMeta(e);if(t.includes("/**"))return this.parseNewMeta(e);throw new G("META was not found.")}parseOldMeta(e){const t=e.split("\n")[0],s=t.substring(t.lastIndexOf("//META")+6,t.lastIndexOf("*//")),n=u.testJSON(s);if(!n)throw new G("META could not be parsed.");if(!n.name)throw new G("META missing name data.");return n.format="json",n}parseNewMeta(e){const t=e.split("/**",2)[1].split("*/",1)[0],s={};let n="",i="";for(const e of t.split(ge))if(0!==e.length)if("@"===e.charAt(0)&&" "!==e.charAt(1)){s[n]=i;const t=e.indexOf(" ");n=e.substr(1,t-1),i=e.substr(t+1)}else i+=" "+e.replace("\\n","\n").replace(fe,"@");return s[n]=i.trim(),delete s[""],s.format="jsdoc",s}getAddonRequire(){const e=this,t=this.originalRequire;return function(s,n){const i=ue.resolve(e.addonFolder,ue.basename(n));if(!pe.existsSync(i)||n!==pe.realpathSync(i))return Reflect.apply(t,this,arguments);let o=pe.readFileSync(n,"utf8");o=ye(o);const r=pe.statSync(n),a=e.extractMeta(o);a.author||(a.author=k.Addons.unknownAuthor),a.version||(a.version="???"),a.description||(a.description=k.Addons.noDescription),a.id=a.name,a.filename=ue.basename(n),a.added=r.atimeMs,a.modified=r.mtimeMs,a.size=r.size,o=e.getFileModification(s,o,a),s._compile(o,n)}}loadAddon(e,t=!1){if(void 0===e)return;try{require(ue.resolve(this.addonFolder,e))}catch(n){return new _(e,e,"Could not be compiled.",{message:n.message,stack:n.stack})}const s=require(ue.resolve(this.addonFolder,e));if(this.addonList.find(e=>e.id==s.id))return new _(s.name,e,"There is already a plugin with name "+s.name);const n=this.initializeAddon(s);return n||(this.addonList.push(s),t&&q.success(`${s.name} v${s.version} was loaded.`),this.emit("loaded",s.id),this.state[s.id]?this.startAddon(s):this.state[s.id]=!1)}unloadAddon(e,t=!0,s=!1){const n="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e;return!!n&&(this.state[n.id]&&(s?this.stopAddon(n):this.disableAddon(n)),delete require.cache[require.resolve(ue.resolve(this.addonFolder,n.filename))],this.addonList.splice(this.addonList.indexOf(n),1),this.emit("unloaded",n.id),t&&q.success(n.name+" was unloaded."),!0)}reloadAddon(e,t=!0){const s="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e,n=this.unloadAddon(s,t,!0);return n?this.loadAddon(s.filename,t):n}isLoaded(e){return!!this.addonList.find(t=>t.id==e||t.filename==e)}isEnabled(e){const t=this.addonList.find(t=>t.id==e||t.filename==e);return!!t&&this.state[t.id]}getAddon(e){return this.addonList.find(t=>t.id==e||t.filename==e)}enableAddon(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;t&&(this.state[t.id]||(this.state[t.id]=!0,this.startAddon(t),this.saveState()))}disableAddon(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;t&&this.state[t.id]&&(this.state[t.id]=!1,this.stopAddon(t),this.saveState())}toggleAddon(e){this.state[e]?this.disableAddon(e):this.enableAddon(e)}loadNewAddons(){const e=pe.readdirSync(this.addonFolder),t=this.addonList.filter(t=>!e.includes(t.filename)).map(e=>e.id);return{added:e.filter(e=>!this.addonList.find(t=>t.filename==e)&&e.endsWith(this.extension)&&pe.statSync(ue.resolve(this.addonFolder,e)).isFile()),removed:t}}updateList(){const e=this.loadNewAddons();for(const t of e.added)this.loadAddon(t);for(const t of e.removed)this.unloadAddon(t)}loadAllAddons(){this.loadState();const e=[],t=pe.readdirSync(this.addonFolder);for(const s of t){if(!pe.statSync(ue.resolve(this.addonFolder,s)).isFile()||!s.endsWith(this.extension))continue;const t=this.loadAddon(s,!1);t instanceof _&&e.push(t)}return this.saveState(),T.get(this.collection,this.category,this.id)&&this.watchAddons(),e}deleteAddon(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e;return pe.unlinkSync(ue.resolve(this.addonFolder,t.filename))}saveAddon(e,t){const s="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e;return pe.writeFileSync(ue.resolve(this.addonFolder,s.filename),t)}editAddon(e,t){const n="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e,i=ue.resolve(this.addonFolder,n.filename);return void 0===t&&(t="system"==T.get("settings","addons","editAction")),t?s(0).shell.openItem(""+i):this.openDetached(n)}openDetached(e){const t=ue.resolve(this.addonFolder,e.filename),s=pe.readFileSync(t).toString(),n=he.createRef(),i=he.createElement(se,{id:"bd-floating-editor-"+e.name,ref:n,content:s,save:this.saveAddon.bind(this,e),openNative:this.editAddon.bind(this,e,!0),language:this.language});ce.open({onClose:()=>{this.isDetached=!1},onResize:()=>{n&&n.current&&n.current.resize&&n.current.resize()},title:e.name,id:s.id,className:"floating-addon-window",height:470,width:410,center:!0,resizable:!0,children:i,confirmClose:()=>!(!n||!n.current)&&n.current.hasUnsavedChanges,confirmationText:k.Addons.confirmationText.format({name:e.name})})}}class ve extends O.Component{constructor(e){super(e)}render(){const e=this.props.isGroup?"bd-settings-title bd-settings-group-title h5-18_1nd title-3sZWYQ size12-3R0845 height16-2Lv3qA weightSemiBold-NJexzi da-h5 da-title da-size12 da-height16 da-weightSemiBold marginBottom4-2qk4Hy da-marginBottom4 marginTop8-1DLZ1n da-marginTop8":"bd-settings-title h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi defaultColor-1_ajX0 defaultMarginh2-2LTaUL marginBottom20-32qID7",t=this.props.className?`${e} ${this.props.className}`:e;return O.createElement("h2",{className:t,onClick:()=>{this.props.onClick&&this.props.onClick()}},this.props.text,this.props.button&&O.createElement("button",{className:"bd-button bd-button-title",onClick:this.props.button.onClick},this.props.button.title),this.props.otherChildren)}}class we extends O.Component{render(){const e=this.props.size||"24px";return O.createElement("svg",{className:this.props.className||"",onClick:this.props.onClick,fill:"#dcddde",viewBox:"0 0 24 24",style:{width:e,height:e}},O.createElement("path",{d:"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"}),O.createElement("path",{fill:"none",d:"M0 0h24v24H0z"}))}}class Ce extends O.Component{render(){const e=this.props.size||"24px";return O.createElement("svg",{className:this.props.className||"",fill:"#FFFFFF",viewBox:"0 0 24 24",style:{width:e,height:e},onClick:this.props.onClick},O.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),O.createElement("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z"}),O.createElement("path",{fill:"none",d:"M0 0h24v24H0z"}))}}class Se extends O.Component{constructor(e){super(e),this.state={checked:this.props.checked},this.onChange=this.onChange.bind(this)}onChange(){this.props.disabled||(this.props.onChange(!this.state.checked),this.setState({checked:!this.state.checked}))}render(){const e=this.props.disabled?" bd-switch-disabled":"",t=this.state.checked?" bd-switch-checked":"";return O.createElement("div",{className:"bd-switch"+e+t},O.createElement("input",{type:"checkbox",id:this.props.id,className:"bd-checkbox",disabled:this.props.disabled,checked:this.state.checked,onChange:this.onChange}))}}var Ee=s(0);class Me extends O.Component{constructor(e){super(e),this.state={hasError:!1}}componentDidCatch(){this.setState({hasError:!0})}render(){return this.state.hasError?O.createElement("div",{onClick:()=>Ee.remote.getCurrentWindow().openDevTools(),className:"react-error"},"There was an unexpected Error. Click to open console for more details."):this.props.children}}const xe=Me.prototype.render;function Ne(){return(Ne=Object.assign||function(e){for(var t=1;txe});const Pe=g.getByDisplayName("Tooltip");class De extends O.Component{constructor(e){super(e),this.state={settingsOpen:!1},this.settingsPanel="",this.panelRef=O.createRef(),this.onChange=this.onChange.bind(this),this.reload=this.reload.bind(this),this.showSettings=this.showSettings.bind(this),this.closeSettings=this.closeSettings.bind(this)}reload(){this.props.reload&&(this.props.addon=this.props.reload(this.props.addon.id),this.forceUpdate())}componentDidUpdate(){this.state.settingsOpen&&(this.settingsPanel instanceof Node&&this.panelRef.current.appendChild(this.settingsPanel),setImmediate(()=>{const e=this.panelRef.current,t=e.closest(".scrollerBase-289Jih");if(!t||!((e,t)=>{const s=e.scrollTop,n=s+e.clientHeight,i=t.offsetTop,o=i+t.clientHeight;return in})(t,e))return;const s=h.offset(e),n=h.offset(t),i=t.scrollTop,o=s.top-n.top+t.scrollTop-30;h.animate({duration:300,update:function(e){t.scrollTop=o>i?i+e*(o-i):i-e*(i-o)}})}))}getString(e){return"string"==typeof e?e:e.toString()}onChange(){this.props.onChange&&this.props.onChange(this.props.addon.id),this.props.enabled=!this.props.enabled,this.forceUpdate()}showSettings(){this.props.hasSettings&&this.setState({settingsOpen:!0})}closeSettings(){this.settingsPanel instanceof Node&&(this.panelRef.current.innerHTML=""),this.setState({settingsOpen:!1})}buildTitle(e,t,s){const n=k.Addons.title.split(/({{[A-Za-z]+}})/),i=n.findIndex(e=>"{{name}}"==e);i&&(n[i]=O.createElement("span",{className:"bd-name"},e));const o=n.findIndex(e=>"{{version}}"==e);i&&(n[o]=O.createElement("span",{className:"bd-version"},t));const r=n.findIndex(e=>"{{author}}"==e);return i&&(n[r]=O.createElement("span",{className:"bd-author"},s)),n.flat()}get settingsComponent(){const e=this.props.addon,t=this.getString(e.name);try{this.settingsPanel=this.props.getSettingsPanel()}catch(e){c.stacktrace("Addon Settings","Unable to get settings panel for "+t+".",e)}const s={id:t+"-settings",className:"addon-settings",ref:this.panelRef};"string"==typeof this.settingsPanel&&(c.warn("Addon Settings","Using a DOMString is officially deprecated."),s.dangerouslySetInnerHTML=this.settingsPanel);let n=null;return"function"==typeof this.settingsPanel&&(n=O.createElement(this.settingsPanel,null)),this.settingsPanel.$$typeof&&this.settingsPanel.$$typeof===Symbol.for("react.element")&&(n=this.settingsPanel),O.createElement("div",{className:"bd-addon-card settings-open bd-switch-item"},O.createElement("div",{className:"bd-close",onClick:this.closeSettings},O.createElement(ie,null)),O.createElement("div",s,O.createElement(Me,null,n)))}buildLink(e){const t=this.props.addon[e];if(!t)return null;const s=O.createElement("a",{className:"bd-link bd-link-website",href:t,target:"_blank",rel:"noopener noreferrer"},k.Addons[e]);return"invite"==e&&(s.props.onClick=function(e){e.preventDefault(),e.stopPropagation();let s=t;const n=/\.gg\/(.*)$/;n.test(s)&&(s=s.match(n)[1]),f.LayerStack.popLayer(),f.InviteActions.acceptInviteAndTransitionToInviteChannel(s)}),s}get footer(){const e=["website","source","invite","donate","patreon"];if(!e.some(e=>this.props.addon[e])&&!this.props.hasSettings)return null;const t=e.map(this.buildLink.bind(this)).filter(e=>e);return O.createElement("div",{className:"bd-footer"},O.createElement("span",{className:"bd-links"},t.map((e,s)=>sO.createElement("div",Ne({},e,{className:"bd-addon-button",onClick:s}),t))}render(){if(this.state.settingsOpen)return this.settingsComponent;const e=this.props.addon,t=this.getString(e.name),s=this.getString(e.author),n=this.getString(e.description),i=this.getString(e.version);return O.createElement("div",{id:e.id+"-card",className:"bd-addon-card settings-closed"},O.createElement("div",{className:"bd-addon-header"},O.createElement("span",{className:"bd-title"},this.buildTitle(t,i,s)),O.createElement("div",{className:"bd-controls"},this.props.editAddon&&this.makeButton(k.Addons.editAddon,O.createElement(ee,null),this.props.editAddon),this.props.deleteAddon&&this.makeButton(k.Addons.deleteAddon,O.createElement(Ce,null),this.props.deleteAddon),this.props.showReloadIcon&&this.makeButton(k.Addons.reload,O.createElement(we,{className:"bd-reload bd-reload-card"}),this.reload),O.createElement(Se,{checked:this.props.enabled,onChange:this.onChange}))),O.createElement("div",{className:"bd-description-wrap scroller-wrap fade"},O.createElement("div",{className:"bd-description scroller"},n)),this.footer)}}const Ae=De.prototype.render;Object.defineProperty(De.prototype,"render",{enumerable:!1,configurable:!1,set:function(){c.warn("AddonCard","Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins")},get:()=>Ae});class ke extends O.Component{render(){const e=this.props.size||"16px";return O.createElement("svg",{className:this.props.className||"",fill:"#FFFFFF",viewBox:"0 0 24 24",style:{width:e,height:e}},O.createElement("path",{d:"M8.12 9.29L12 13.17l3.88-3.88c.39-.39 1.02-.39 1.41 0 .39.39.39 1.02 0 1.41l-4.59 4.59c-.39.39-1.02.39-1.41 0L6.7 10.7c-.39-.39-.39-1.02 0-1.41.39-.38 1.03-.39 1.42 0z"}))}}class Te extends O.Component{constructor(e){super(e),this.state={open:!1,value:this.props.value||this.props.options[0].value},this.dropdown=O.createRef(),this.onChange=this.onChange.bind(this),this.showMenu=this.showMenu.bind(this),this.hideMenu=this.hideMenu.bind(this)}showMenu(e){e.preventDefault(),this.setState({open:!0},()=>{document.addEventListener("click",this.hideMenu)})}hideMenu(){this.setState({open:!1},()=>{document.removeEventListener("click",this.hideMenu)})}onChange(e){this.setState({value:e}),this.props.onChange&&this.props.onChange(e)}get selected(){return this.props.options.find(e=>e.value==this.state.value)}get options(){const e=this.selected;return O.createElement("div",{className:"bd-select-options"},this.props.options.map(t=>O.createElement("div",{className:"bd-select-option"+(e.value==t.value?" selected":""),onClick:this.onChange.bind(this,t.value)},t.label)))}render(){const e="transparent"==this.props.style?" bd-select-transparent":"",t=this.state.open?" menu-open":"";return O.createElement("div",{className:`bd-select${e}${t}`,onClick:this.showMenu,ref:this.dropdown},O.createElement("div",{className:"bd-select-value"},this.selected.label),O.createElement(ke,{className:"bd-select-arrow"}),this.state.open&&this.options)}}class Le extends O.Component{render(){const e=this.props.size||"16px";return O.createElement("svg",{className:this.props.className||"",fill:"#FFFFFF",viewBox:"0 0 24 24",style:{width:e,height:e}},O.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),O.createElement("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"}))}}class je extends O.Component{render(){return O.createElement("div",{className:"bd-search-wrapper"},O.createElement("input",{onChange:this.props.onChange,onKeyDown:this.props.onKeyDown,type:"text",className:"bd-search",placeholder:this.props.placeholder,maxLength:"50"}),O.createElement(Le,null))}}class Be extends O.Component{constructor(e){super(e),this.state={sort:"name",ascending:!0,query:""},this.sort=this.sort.bind(this),this.reverse=this.reverse.bind(this),this.search=this.search.bind(this),this.update=this.update.bind(this)}componentDidMount(){E.on(this.props.prefix+"-loaded",this.update),E.on(this.props.prefix+"-unloaded",this.update)}componentWillUnmount(){E.off(this.props.prefix+"-loaded",this.update),E.off(this.props.prefix+"-unloaded",this.update)}update(){this.forceUpdate()}reload(){this.props.refreshList&&this.props.refreshList(),this.forceUpdate()}reverse(e){this.setState({ascending:e})}sort(e){this.setState({sort:e})}search(e){this.setState({query:e.target.value.toLocaleLowerCase()})}get sortOptions(){return[{label:k.Addons.name,value:"name"},{label:k.Addons.author,value:"author"},{label:k.Addons.version,value:"version"},{label:k.Addons.added,value:"added"},{label:k.Addons.modified,value:"modified"}]}get directions(){return[{label:k.Sorting.ascending,value:!0},{label:k.Sorting.descending,value:!1}]}render(){const{title:e,folder:t,addonList:n,addonState:i,onChange:o,reload:r}=this.props,a=!T.get("settings","addons","autoReload"),l=t?{title:k.Addons.openFolder.format({type:e}),onClick:()=>{const e=s(0).shell;(e.openItem||e.openPath)(t)}}:null,d=n.sort((e,t)=>{const s=e[this.state.sort],n=t[this.state.sort];return"string"==typeof s?s.toLocaleLowerCase().localeCompare(n.toLocaleLowerCase()):s>n?1:n>s?-1:0});return this.state.ascending||d.reverse(),[O.createElement(ve,{key:"title",text:e,button:l,otherChildren:a&&O.createElement(we,{className:"bd-reload",onClick:this.reload.bind(this)})}),O.createElement("div",{className:"bd-controls bd-addon-controls"},O.createElement(je,{onChange:this.search,placeholder:k.Addons.search.format({type:this.props.title})+"..."}),O.createElement("div",{className:"bd-addon-dropdowns"},O.createElement("div",{className:"bd-select-wrapper"},O.createElement("label",{className:"bd-label"},k.Sorting.sortBy,":"),O.createElement(Te,{options:this.sortOptions,onChange:this.sort,style:"transparent"})),O.createElement("div",{className:"bd-select-wrapper"},O.createElement("label",{className:"bd-label"},k.Sorting.order,":"),O.createElement(Te,{options:this.directions,onChange:this.reverse,style:"transparent"})))),O.createElement("div",{key:"addonList",className:"bd-addon-list"},d.map(e=>{if(this.state.query){let t=e.name.toLocaleLowerCase().includes(this.state.query);if(t=t||e.author.toLocaleLowerCase().includes(this.state.query),t=t||e.description.toLocaleLowerCase().includes(this.state.query),!t)return null}const t=e.type&&"function"==typeof e.plugin.getSettingsPanel,s=t&&e.plugin.getSettingsPanel.bind(e.plugin);return O.createElement(Me,null,O.createElement(De,{editAddon:this.editAddon.bind(this,e.id),deleteAddon:this.deleteAddon.bind(this,e.id),showReloadIcon:a,key:e.id,enabled:i[e.id],addon:e,onChange:o,reload:r,hasSettings:t,getSettingsPanel:s}))}))]}editAddon(e){this.props.editAddon&&this.props.editAddon(e)}async deleteAddon(e){const t=this.props.addonList.find(t=>t.id==e);await this.confirmDelete(t)&&this.props.deleteAddon&&this.props.deleteAddon(t)}confirmDelete(e){return new Promise(t=>{W.showConfirmationModal(k.Modals.confirmAction,k.Addons.confirmDelete.format({name:e.name}),{danger:!0,confirmText:k.Addons.deleteAddon,onConfirm:()=>{t(!0)},onCancel:()=>{t(!1)}})})}}const Ie=Be.prototype.render;Object.defineProperty(Be.prototype,"render",{enumerable:!1,configurable:!1,set:function(){c.warn("AddonList","Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins")},get:()=>Ie});class ze extends O.Component{render(){return O.createElement("div",{className:"bd-divider divider-3573oO marginTop8-1DLZ1n marginBottom40-2vIwTv"})}}class Fe extends O.Component{render(){return O.createElement("div",{className:"bd-setting-item"},O.createElement("div",{className:"bd-setting-header"},O.createElement("label",{htmlFor:this.props.id,className:"bd-setting-title"},this.props.name),this.props.children),O.createElement("div",{className:"bd-setting-note"},this.props.note),O.createElement("div",{className:"bd-setting-divider"}))}}class Oe extends O.Component{constructor(e){if(super(e),this.props.button&&this.props.collapsible){const e=this.props.button.onClick;this.props.button.onClick=t=>{t.stopPropagation(),e(...arguments)}}this.props.hasOwnProperty("shown")||(this.props.shown=!0),this.container=O.createRef(),this.state={collapsed:this.props.collapsible&&!this.props.shown},this.onChange=this.onChange.bind(this),this.toggleCollapse=this.toggleCollapse.bind(this)}toggleCollapse(){const e=this.container.current,t=this.state.collapsed?300:1;e.style.setProperty("height",e.scrollHeight+"px"),e.classList.add("animating"),this.setState({collapsed:!this.state.collapsed},()=>setTimeout(()=>{e.style.setProperty("height",""),e.classList.remove("animating")},t)),this.props.onDrawerToggle&&this.props.onDrawerToggle(this.state.collapsed)}onChange(e,t){this.props.onChange&&(this.props.id?this.props.onChange(this.props.id,e,t):this.props.onChange(e,t),this.forceUpdate())}render(){const{settings:e}=this.props,t="bd-settings-group "+(this.props.collapsible?"collapsible "+(this.state.collapsed?"collapsed":"expanded"):"");return O.createElement("div",{className:t},O.createElement(ve,{text:this.props.name,collapsible:this.props.collapsible,onClick:this.toggleCollapse,button:this.props.button,isGroup:!0}),O.createElement("div",{className:"bd-settings-container",ref:this.container},e.filter(e=>!e.hidden).map(e=>{let t=null;return"dropdown"==e.type&&(t=O.createElement(Te,{disabled:e.disabled,id:e.id,options:e.options,value:e.value,onChange:this.onChange.bind(this,e.id)})),"switch"==e.type&&(t=O.createElement(Se,{disabled:e.disabled,id:e.id,checked:e.value,onChange:this.onChange.bind(this,e.id)})),t?O.createElement(Fe,{id:e.id,key:e.id,name:e.name,note:e.note},t):null})),this.props.showDivider&&O.createElement(ze,null))}}const Re=Oe.prototype.render;Object.defineProperty(Oe.prototype,"render",{enumerable:!1,configurable:!1,set:function(){c.warn("Group","Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins")},get:()=>Re});class Ue extends O.Component{render(){const e=this.props.size||"18px";return O.createElement("svg",{viewBox:"0 0 24 24",fill:"#FFFFFF",className:this.props.className||"",style:{width:e,height:e},onClick:this.props.onClick},O.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}),O.createElement("path",{d:"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z"}))}}function He(){return(He=Object.assign||function(e){for(var t=1;te.Header&&e.Separator&&e.Item),$e=g.getByDisplayName("Tooltip");class We extends O.Component{constructor(e){super(e)}render(){return O.createElement("div",{className:"bd-sidebar-header"},O.createElement(qe.Header,null,"BandagedBD"),O.createElement($e,{color:"black",position:"top",text:"Changelog"},e=>O.createElement("div",He({},e,{className:"bd-changelog-button",onClick:()=>W.showChangelogModal(l)}),O.createElement(Ue,{className:"bd-icon",size:"16px"}))))}}var _e=new class{constructor(){this.patchSections(),E.on("strings-updated",this.forceUpdate)}onDrawerToggle(e,t,s){const n=w.getBDData("drawerStates")||{};n[e]||(n[e]={}),n[e][t]=s,w.setBDData("drawerStates",n)}getDrawerState(e,t,s){const n=w.getBDData("drawerStates")||{};return n[e]&&n[e].hasOwnProperty(t)?n[e][t]:s}onChange(e){return(t,s,n)=>{const i=T.collections.length+T.panels.length;e(t,s,n);i!=T.collections.length+T.panels.length&&setTimeout(this.forceUpdate.bind(this),50)}}buildSettingsPanel(e,t,s,n,i,o=null){return s.forEach(e=>{e.settings.forEach(t=>t.value=n[e.id][t.id])}),this.getSettingsPanel(e,t,s,this.onChange(i),o)}getSettingsPanel(e,t,s,n,i=null){return[O.createElement(ve,{text:t,button:i}),s.map(t=>O.createElement(Oe,Object.assign({},t,{onChange:n,onDrawerToggle:s=>this.onDrawerToggle(e,t.id,s),shown:this.getDrawerState(e,t.id,!t.hasOwnProperty("shown")||t.shown)})))]}getAddonPanel(e,t,s,n={}){return O.createElement(Be,Object.assign({},{title:e,addonList:t,addonState:s},n))}async patchSections(){const e=await F.get("UserSettings",e=>e.prototype&&e.prototype.generateSections);L.after("SettingsManager",e.prototype,"render",e=>{e._reactInternalFiber.return.return.return.return.return.return.return.memoizedProps.id="user-settings"}),L.after("SettingsManager",e.prototype,"generateSections",(e,t,s)=>{let n=s.findIndex(e=>"linux"==e.section.toLowerCase())+1;const i=e=>{s.splice(n,0,e),n++};i({section:"DIVIDER"}),i({section:"CUSTOM",element:We});for(const e of T.collections)e.disabled||i({section:e.name,label:e.name,element:()=>this.buildSettingsPanel(e.id,e.name,e.settings,T.state[e.id],T.onSettingChange.bind(T,e.id),e.button?e.button:null)});for(const t of T.panels.sort((e,t)=>e.order>t.order))t.clickListener&&(t.onClick=n=>t.clickListener(e,n,s)),i(t)}),this.forceUpdate()}forceUpdate(){const e=g.getByProps("standardSidebarView").standardSidebarView.split(" ")[0],t=document.querySelector("."+e);if(!t)return;const s=u.findInReactTree(u.getReactInstance(t),e=>e&&e.generateSections,{walkable:["return","stateNode"]});s&&s.forceUpdate()}};const Ge=s(1),Qe=s(0).remote;var Ve=new class extends be{get name(){return"PluginManager"}get moduleExtension(){return".js"}get extension(){return".plugin.js"}get addonFolder(){return Ge.resolve(i.dataPath,"plugins")}get prefix(){return"plugin"}get language(){return"javascript"}constructor(){super(),this.onSwitch=this.onSwitch.bind(this),this.observer=new MutationObserver(e=>{for(let t=0,s=e.length;t_e.getAddonPanel(k.Panels.plugins,this.addonList,this.state,{folder:this.addonFolder,onChange:this.togglePlugin.bind(this),reload:this.reloadPlugin.bind(this),refreshList:this.updatePluginList.bind(this),saveAddon:this.saveAddon.bind(this),editAddon:this.editAddon.bind(this),deleteAddon:this.deleteAddon.bind(this),prefix:this.prefix})}),e}updatePluginList(){return this.updateList()}loadAllPlugins(){return this.loadAllAddons()}enablePlugin(e){return this.enableAddon(e)}disablePlugin(e){return this.disableAddon(e)}togglePlugin(e){return this.toggleAddon(e)}unloadPlugin(e){return this.unloadAddon(e)}loadPlugin(e){const t=this.loadAddon(e);t&&W.showAddonErrors({themes:[t]})}reloadPlugin(e){const t=this.reloadAddon(e);return t&&W.showAddonErrors({plugins:[t]}),"string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e}initializeAddon(e){if(!e.type)return new _(e.name,e.filename,"Plugin had no exports",{message:"Plugin had no exports or no name property.",stack:""});try{const t=new e.type;e.plugin=t,e.name=t.getName()||e.name,e.author=t.getAuthor()||e.author||"No author",e.description=t.getDescription()||e.description||"No description",e.version=t.getVersion()||e.version||"No version";try{"function"==typeof e.plugin.load&&e.plugin.load()}catch(t){return this.state[e.id]=!1,new _(e.name,e.filename,"load() could not be fired.",{message:t.message,stack:t.stack})}}catch(t){return new _(e.name,e.filename,"Could not be constructed.",{message:t.message,stack:t.stack})}}getFileModification(e,t,s){e._compile(t,e.filename);return u.isEmpty(e.exports)?(c.warn(this.name,s.name+", please start assigning module.exports"),t+=`\nmodule.exports = ${JSON.stringify(s)};\nmodule.exports.type = ${s.exports||s.name};`):(s.type=e.exports,e.exports=s,"")}startAddon(e){return this.startPlugin(e)}stopAddon(e){return this.stopPlugin(e)}getAddon(e){return this.getPlugin(e)}startPlugin(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;if(!t)return;const s=t.plugin;try{s.start()}catch(e){return this.state[t.id]=!1,q.error(k.Addons.couldNotStart.format({name:t.name,version:t.version})),c.stacktrace(this.name,t.name+" could not be started.",e),new _(t.name,t.filename,k.Addons.enabled.format({method:"start()"}),{message:e.message,stack:e.stack})}this.emit("started",t.id),q.show(k.Addons.enabled.format({name:t.name,version:t.version}))}stopPlugin(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;if(!t)return;const s=t.plugin;try{s.stop()}catch(e){return this.state[t.id]=!1,q.error(k.Addons.couldNotStop.format({name:t.name,version:t.version})),c.stacktrace(this.name,t.name+" could not be stopped.",e),new _(t.name,t.filename,k.Addons.enabled.format({method:"stop()"}),{message:e.message,stack:e.stack})}this.emit("stopped",t.id),q.show(k.Addons.disabled.format({name:t.name,version:t.version}))}getPlugin(e){const t=this.addonList.find(t=>t.id==e||t.filename==e);if(t)return t.plugin}setupFunctions(){Qe.getCurrentWebContents().on("did-navigate-in-page",this.onSwitch.bind(this)),this.observer.observe(document,{childList:!0,subtree:!0})}onSwitch(){this.emit("page-switch");for(let e=0;e_e.getAddonPanel(k.Panels.themes,this.addonList,this.state,{folder:this.addonFolder,onChange:this.toggleTheme.bind(this),reload:this.reloadTheme.bind(this),refreshList:this.updateThemeList.bind(this),saveAddon:this.saveAddon.bind(this),editAddon:this.editAddon.bind(this),deleteAddon:this.deleteAddon.bind(this),prefix:this.prefix})}),e}updateThemeList(){return this.updateList()}loadAllThemes(){return this.loadAllAddons()}enableTheme(e){return this.enableAddon(e)}disableTheme(e){return this.disableAddon(e)}toggleTheme(e){return this.toggleAddon(e)}unloadTheme(e){return this.unloadAddon(e)}loadTheme(e){const t=this.loadAddon(e);t&&W.showAddonErrors({themes:[t]})}reloadTheme(e){const t=this.reloadAddon(e);t&&W.showAddonErrors({themes:[t]})}getFileModification(e,t,s){return s.css=t,`module.exports = ${JSON.stringify(s)};`}startAddon(e){return this.addTheme(e)}stopAddon(e){return this.removeTheme(e)}addTheme(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;t&&(C.injectTheme(t.id,t.css),q.show(k.Addons.enabled.format({name:t.name,version:t.version})))}removeTheme(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;t&&(C.removeTheme(t.id),q.show(k.Addons.disabled.format({name:t.name,version:t.version})))}};const Je={get React(){return f.React},get ReactDOM(){return f.ReactDOM},get WindowConfigFile(){return""},get settings(){return T.collections},get emotes(){return{}},get version(){return i.version},getAllWindowPreferences:function(){return w.getData("windowprefs")||{}},getWindowPreference:function(e){return this.getAllWindowPreferences()[e]},setWindowPreference:function(e,t){const s=this.getAllWindowPreferences();return s[e]=t,w.setData("windowprefs",s)},injectCSS:function(e,t){C.injectStyle(e,t)},clearCSS:function(e){C.removeStyle(e)},linkJS:function(e,t){return C.injectScript(e,t)},unlinkJS:function(e){C.removeScript(e)},alert:function(e,t){W.alert(e,t)},showConfirmationModal:function(e,t,s={}){return W.showConfirmationModal(e,t,s)},showToast:function(e,t={}){q.show(e,t)},findModule:function(e){return g.getModule(e)},findAllModules:function(e){return g.getModule(e,!1)},findModuleByProps:function(...e){return g.getByProps(...e)},findModuleByPrototypes:function(...e){return g.getByPrototypes(...e)},findModuleByDisplayName:function(e){return g.getByDisplayName(e)},getInternalInstance:function(e){if(e instanceof window.jQuery||e instanceof Element)return e instanceof jQuery&&(e=e[0]),u.getReactInstance(e)},loadData:function(e,t){return w.getPluginData(e,t)}};Je.getData=Je.loadData,Je.saveData=function(e,t,s){return w.setPluginData(e,t,s)},Je.setData=Je.saveData,Je.deleteData=function(e,t){return w.deletePluginData(e,t)},Je.monkeyPatch=function(e,t,s){const{before:n,after:i,instead:o,once:r=!1}=s,a=n?"before":i?"after":o?"instead":"";if(!a)return c.err("BdApi","Must provide one of: after, before, instead");const l={originalMethod:e[t],callOriginalMethod:()=>l.originalMethod.apply(l.thisObject,l.methodArguments)};l.cancelPatch=L[a]("BdApi",e,t,(e,t,n)=>{l.thisObject=e,l.methodArguments=t,l.returnValue=n;try{Reflect.apply(s[a],null,[l]),r&&l.cancelPatch()}catch(e){}})},Je.onRemoved=function(e,t){return u.onRemoved(e,t)},Je.suppressErrors=function(e,t){return u.suppressErrors(e,t)},Je.testJSON=function(e){return u.testJSON(e)},Je.getPlugin=function(e){return c.warn("BdApi","getPlugin is deprecated. Please make use of the addon api (BdApi.Plugins)"),Ve.addonList.find(t=>t.name==e)},Je.isPluginEnabled=function(e){c.warn("BdApi","isPluginEnabled is deprecated. Please make use of the addon api (BdApi.Plugins)");const t=this.getPlugin(e);return!!t&&Ve.isEnabled(t.id)},Je.isThemeEnabled=function(e){c.warn("BdApi","isThemeEnabled is deprecated. Please make use of the addon api (BdApi.Themes)");const t=Ye.addonList.find(t=>t.name==e);return!!t&&Ye.isEnabled(t.id)},Je.isSettingEnabled=function(e,t,s){return T.get(e,t,s)},Je.enableSetting=function(e,t,s){return T.set(e,t,s,!0)},Je.disableSetting=function(e,t,s){return T.set(e,t,s,!1)},Je.toggleSetting=function(e,t,s){return T.set(e,t,s,!T.get(e,t,s))},Je.getBDData=function(e){return w.getBDData(e)},Je.setBDData=function(e,t){return w.setBDData(e,t)};const Ke=e=>new class{get folder(){return e.addonFolder}isEnabled(t){return e.isEnabled(t)}enable(t){return e.enableAddon(t)}disable(t){return e.disableAddon(t)}toggle(t){return e.toggleAddon(t)}reload(t){return e.reloadAddon(t)}get(t){return e.getAddon(t)}getAll(){return e.addonList.map(t=>e.getAddon(t.id))}};Je.Plugins=Ke(Ve),Je.Themes=Ke(Ye),Je.Patcher={patch:(e,t,s,n,i={})=>"string"!=typeof e?c.err("BdApi.Patcher","Parameter 0 of patch must be a string representing the caller"):"before"!==i.type&&"instead"!==i.type&&"after"!==i.type?c.err("BdApi.Patcher","options.type must be one of: before, instead, after"):L.pushChildPatch(e,t,s,n,i),before:(e,t,s,n,i={})=>Je.Patcher.patch(e,t,s,n,Object.assign(i,{type:"before"})),instead:(e,t,s,n,i={})=>Je.Patcher.patch(e,t,s,n,Object.assign(i,{type:"instead"})),after:(e,t,s,n,i={})=>Je.Patcher.patch(e,t,s,n,Object.assign(i,{type:"after"})),unpatchAll:e=>"string"!=typeof e?c.err("BdApi.Patcher","Parameter 0 of unpatchAll must be a string representing the caller"):L.unpatchAll(e)},Object.freeze(Je),Object.freeze(Je.Plugins),Object.freeze(Je.Themes),Object.freeze(Je.Patcher);var Xe=Je;const et=document.createElement("style");et.textContent="/* BEGIN V2 LOADER */\n/* =============== */\n\n#bd-loading-icon {\n background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+IDwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyBoZWlnaHQ9IjEwMCUiIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iMTAwJSIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMjAwMCAyMDAwIj4gICAgPG1ldGFkYXRhIC8+ICAgIDxkZWZzPiAgICAgICAgPGZpbHRlciBpZD0ic2hhZG93MSI+ICAgICAgICA8ZmVEcm9wU2hhZG93IGR4PSIyMCIgZHk9IjAiIHN0ZERldmlhdGlvbj0iMjAiIGZsb29kLWNvbG9yPSJyZ2JhKDAsMCwwLDAuMzUpIi8+ICAgICAgICA8L2ZpbHRlcj4gICAgICAgIDxmaWx0ZXIgaWQ9InNoYWRvdzIiPiAgICAgICAgPGZlRHJvcFNoYWRvdyBkeD0iMTUiIGR5PSIwIiBzdGREZXZpYXRpb249IjIwIiBmbG9vZC1jb2xvcj0icmdiYSgyNTUsMjU1LDI1NSwwLjE1KSIvPiAgICAgICAgPC9maWx0ZXI+ICAgICAgICA8ZmlsdGVyIGlkPSJzaGFkb3czIj4gICAgICAgIDxmZURyb3BTaGFkb3cgZHg9IjEwIiBkeT0iMCIgc3RkRGV2aWF0aW9uPSIyMCIgZmxvb2QtY29sb3I9InJnYmEoMCwwLDAsMC4zNSkiLz4gICAgICAgIDwvZmlsdGVyPiAgICA8L2RlZnM+ICAgIDxnPiAgICAgICAgPHBhdGggc3R5bGU9ImZpbHRlcjogdXJsKCNzaGFkb3czKSIgZD0iTTExOTUuNDQrMTM1LjQ0MkwxMTk1LjQ0KzEzNS40NDJMOTk3LjYrMTM2LjQ0MkMxMDI0LjIrMTQ5Ljc0MisxMTcwLjM0KzE2My41NDIrMTE5My42NCsxNzkuNzQyQzEyNjQuMzQrMjI4Ljg0MisxMzE5Ljc0KzI5MS4yNDIrMTM1OC4yNCszNjUuMDQyQzEzOTguMTQrNDQxLjY0MisxNDE5Ljc0KzUzMC42NDIrMTQyMi41NCs2MjkuNjQyTDE0MjIuNTQrNjMwLjg0MkwxNDIyLjU0KzYzMi4wNDJDMTQyMi41NCs3NzMuMTQyKzE0MjIuNTQrMTIyOC4xNCsxNDIyLjU0KzEzNjkuMTRMMTQyMi41NCsxMzcwLjM0TDE0MjIuNTQrMTM3MS41NEMxNDE5Ljg0KzE0NzAuNTQrMTM5OC4yNCsxNTU5LjU0KzEzNTguMjQrMTYzNi4xNEMxMzE5Ljc0KzE3MDkuOTQrMTI2NC40NCsxNzcyLjM0KzExOTMuNjQrMTgyMS40NEMxMTcxLjA0KzE4MzcuMTQrMTAyNS43KzE4NTAuNTQrMTAwMCsxODYzLjU0TDExOTMuNTQrMTg2NC41NEMxNTM5Ljc0KzE4NjYuNDQrMTg2NC41NCsxNjkzLjM0KzE4NjQuNTQrMTI5Ni42NEwxODY0LjU0KzcxNi45NDJDMTg2Ni40NCszMTIuNDQyKzE1NDEuNjQrMTM1LjQ0MisxMTk1LjQ0KzEzNS40NDJaIiBmaWxsPSIjMTcxNzE3IiBvcGFjaXR5PSIxIi8+ICAgICAgICA8cGF0aCBzdHlsZT0iZmlsdGVyOiB1cmwoI3NoYWRvdzIpIiBkPSJNMTY5NS41NCs2MzEuNDQyQzE2ODUuODQrMjc4LjA0MisxNDA5LjM0KzEzNS40NDIrMTA1Mi45NCsxMzUuNDQyTDM2MS43NCsxMzYuNDQyTDgwMy43NCs0OTAuNDQyTDEwNjAuNzQrNDkwLjQ0MkMxMzM1LjI0KzQ5MC40NDIrMTMzNS4yNCs4MzUuMzQyKzEwNjAuNzQrODM1LjM0MkwxMDYwLjc0KzExNjQuODRDMTE1MC4yMisxMTY0Ljg0KzEyMTAuNTMrMTIwMS40OCsxMjQxLjY4KzEyNTAuODdDMTMwNi4wNysxMzUzKzEyNDUuNzYrMTUwOS42NCsxMDYwLjc0KzE1MDkuNjRMMzYxLjc0KzE4NjMuNTRMMTA1Mi45NCsxODY0LjU0QzE0MDkuMjQrMTg2NC41NCsxNjg1Ljc0KzE3MjEuOTQrMTY5NS41NCsxMzY4LjU0QzE2OTUuNTQrMTIwNS45NCsxNjUxLjA0KzEwODQuNDQrMTU3Mi42NCs5OTkuOTQyQzE2NTEuMDQrOTE1LjU0MisxNjk1LjU0Kzc5NC4wNDIrMTY5NS41NCs2MzEuNDQyWiIgZmlsbD0iIzNFODJFNSIgb3BhY2l0eT0iMSIvPiAgICAgICAgPHBhdGggc3R5bGU9ImZpbHRlcjogdXJsKCNzaGFkb3cxKSIgZD0iTTE0NjkuMjUrNjMxLjQ0MkMxNDU5LjU1KzI3OC4wNDIrMTE4My4wNSsxMzUuNDQyKzgyNi42NSsxMzUuNDQyTDEzNS40NSsxMzUuNDQyTDEzNS40NSsxMDA0QzEzNS40NSsxMDA0KzEzNS40MjcrMTI1NS4yMSszNTUuNjI2KzEyNTUuMjFDNTc1LjgyNSsxMjU1LjIxKzU3NS44NDgrMTAwNCs1NzUuODQ4KzEwMDRMNTc3LjQ1KzQ5MC40NDJMODM0LjQ1KzQ5MC40NDJDMTEwOC45NSs0OTAuNDQyKzExMDguOTUrODM1LjM0Mis4MzQuNDUrODM1LjM0Mkw2NjQuNjUrODM1LjM0Mkw2NjQuNjUrMTE2NC44NEw4MzQuNDUrMTE2NC44NEM5MjMuOTMyKzExNjQuODQrOTg0LjI0NCsxMjAxLjQ4KzEwMTUuMzkrMTI1MC44N0MxMDc5Ljc4KzEzNTMrMTAxOS40NysxNTA5LjY0KzgzNC40NSsxNTA5LjY0TDEzNS40NSsxNTA5LjY0TDEzNS40NSsxODY0LjU0TDgyNi42NSsxODY0LjU0QzExODIuOTUrMTg2NC41NCsxNDU5LjQ1KzE3MjEuOTQrMTQ2OS4yNSsxMzY4LjU0QzE0NjkuMjUrMTIwNS45NCsxNDI0Ljc1KzEwODQuNDQrMTM0Ni4zNSs5OTkuOTQyQzE0MjQuNzUrOTE1LjU0MisxNDY5LjI1Kzc5NC4wNDIrMTQ2OS4yNSs2MzEuNDQyWiIgZmlsbD0iI0ZGRkZGRiIgb3BhY2l0eT0iMSIvPiAgICA8L2c+PC9zdmc+);\n}\n#bd-loading-icon {\n position: fixed;\n bottom:5px;\n right:5px;\n z-index: 2147483647;\n display: block;\n width: 20px;\n height: 20px;\n background-size: 100% 100%;\n animation: bd-loading-animation 1.5s ease-in-out infinite;\n}\n\n@keyframes bd-loading-animation {\n 0% { opacity: 0.05; }\n 50% { opacity: 0.6; }\n 100% { opacity: 0.05; }\n}\n/* =============== */\n/* END V2 LOADER */";const tt=document.createElement("div");tt.id="bd-loading-icon",tt.className="bd-loaderv2",tt.title="BandagedBD is loading...";var st=class{static show(){document.body.appendChild(et),document.body.appendChild(tt)}static hide(){et&&et.remove(),tt&&tt.remove()}};class nt{get name(){return"Unnamed Builtin"}get collection(){return"settings"}get category(){return"general"}get id(){return"None"}async initialize(){T.get(this.collection,this.category,this.id)&&await this.enable(),E.on("setting-updated",(e,t,s,n)=>{e==this.collection&&t===this.category&&s===this.id&&(n?this.enable():this.disable())}),this.initialized=!0}registerSetting(e,t,s,n,i){return 4==arguments.length?(e=this.collection,t=arguments[0],s=arguments[1],n=arguments[2],i=arguments[3]):3==arguments.length&&(e=this.collection,t=this.category,s=arguments[0],n=arguments[1],i=arguments[2]),T.on(e,t,s,e=>{e?n():i()})}get(e,t,s){return 2==arguments.length?(e=this.collection,t=arguments[0],s=arguments[1]):1==arguments.length&&(e=this.collection,t=this.category,s=arguments[0]),T.get(e,t,s)}async enable(){this.log("Enabled");try{await this.enabled()}catch(e){this.stacktrace("Could not be enabled",e)}}async disable(){this.log("Disabled");try{await this.disabled()}catch(e){this.stacktrace("Could not be disabled",e)}}async enabled(){}async disabled(){}log(...e){c.log(this.name,...e)}warn(...e){c.warn(this.name,...e)}error(...e){c.err(this.name,...e)}stacktrace(e,t){c.stacktrace(this.name,e,t)}before(e,t,s){return L.before(this.name,e,t,s)}after(e,t,s){return L.after(this.name,e,t,s)}unpatchAll(){return L.unpatchAll(this.name)}}class it extends O.Component{render(){const e=this.props.size||"24px";return O.createElement("svg",{viewBox:"0 0 24 24",style:{width:e,height:e}},O.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}),O.createElement("path",{d:"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"}))}}class ot extends O.Component{constructor(e){super(e),this.hasUnsavedChanges=!1,this.onChange=this.onChange.bind(this),this.toggleLiveUpdate=this.toggleLiveUpdate.bind(this),this.updateCss=this.updateCss.bind(this),this.saveCss=this.saveCss.bind(this),this.openDetached=this.props.openDetached?this.openDetached.bind(this):null,this.openNative=this.openNative.bind(this),this.updateEditor=this.updateEditor.bind(this),this.controls=[{label:O.createElement(we,{size:"18px"}),tooltip:k.CustomCSS.update,onClick:this.updateCss},{label:O.createElement(X,{size:"18px"}),tooltip:k.CustomCSS.save,onClick:this.saveCss},{label:O.createElement(ee,{size:"18px"}),tooltip:k.CustomCSS.openNative,onClick:this.openNative},{label:O.createElement(te,{size:"18px"}),tooltip:k.CustomCSS.settings,onClick:"showSettings"},{label:k.Collections.settings.customcss.liveUpdate.name,type:"checkbox",onChange:this.toggleLiveUpdate,checked:T.get("settings","customcss","liveUpdate"),side:"right"}],this.openDetached&&this.controls.push({label:O.createElement(it,{size:"18px"}),tooltip:k.CustomCSS.openDetached,onClick:this.openDetached,side:"right"})}componentDidMount(){E.on("customcss-updated",this.updateEditor)}componentWillUnmount(){E.off("customcss-updated",this.updateEditor)}updateEditor(e){this.editor&&(this.editor.value=e)}get value(){return this.editor.session.getValue()}set value(e){this.editor.setValue(e)}showSettings(){return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor)}resize(){return this.editor.resize()}setEditorRef(e){this.editor=e,this.props.editorRef&&void 0!==this.props.editorRef.current?this.props.editorRef.current=e:this.props.editorRef&&(this.props.editorRef=e)}onChange(){this.hasUnsavedChanges=!0,this.props.onChange&&this.props.onChange(...arguments)}render(){return O.createElement(K,{ref:this.setEditorRef.bind(this),readOnly:this.props.readOnly,id:this.props.id||"bd-customcss-editor",onChange:this.onChange,controls:this.controls,value:this.props.css})}toggleLiveUpdate(e){T.set("settings","customcss","liveUpdate",e)}updateCss(e,t){this.props.update&&this.props.update(t)}saveCss(e,t){this.hasUnsavedChanges=!1,this.props.save&&this.props.save(t)}openDetached(e,t){this.props.openDetached&&this.props.openDetached(t)}openNative(){this.props.openNative&&this.props.openNative()}}const rt=s(2),at=s(0),lt=g.getByProps("updateAccount"),dt=g.getByProps("dirtyDispatch"),ct=g.getByProps("ActionTypes").ActionTypes;var ht=new class extends nt{get name(){return"Custom CSS"}get category(){return"customcss"}get id(){return"customcss"}get startDetached(){return"detached"==T.get(this.collection,this.category,"openAction")}get nativeOpen(){return"system"==T.get(this.collection,this.category,"openAction")}constructor(){super(),this.savedCss="",this.insertedCss="",this.isDetached=!1}async enabled(){window.ace||C.injectScript("ace-script","https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js").then(()=>{window.require.original&&(window.require=window.require.original)}),T.registerPanel(this.id,k.Panels.customcss,{order:2,element:()=>[O.createElement(ve,{text:k.CustomCSS.editorTitle}),O.createElement(ot,{css:this.savedCss,save:this.saveCSS.bind(this),update:this.insertCSS.bind(this),openNative:this.openNative.bind(this),openDetached:this.openDetached.bind(this),onChange:this.onChange.bind(this)})],onClick:e=>{if(this.isDetached)return;if(this.nativeOpen)return this.openNative();if(this.startDetached)return this.openDetached();const t=u.findInRenderTree(e._reactInternalFiber,e=>e&&e.onSetSection,{walkable:["child","memoizedProps","props","children"]});t&&t.onSetSection&&t.onSetSection(this.id)}}),this.loadCSS(),this.insertCSS(this.savedCss),this.watchContent()}disabled(){T.removePanel(this.id),this.unwatchContent()}watchContent(){if(this.watcher)return this.error("Already watching content.");const e={};this.log("Starting to watch content."),this.watcher=rt.watch(w.customCSS,{persistent:!1},async(t,s)=>{if(!t||!s)return;await new Promise(e=>setTimeout(e,50));try{rt.statSync(w.customCSS)}catch(t){if("ENOENT"!==t.code)return;delete e[s],this.saveCSS("")}const n=rt.statSync(w.customCSS);if(n&&n.mtime&&n.mtime.getTime()&&"number"==typeof n.mtime.getTime()&&e[s]!=n.mtime.getTime()&&(e[s]=n.mtime.getTime(),"change"==t)){const e=w.loadCustomCSS();if(e==this.savedCss)return;this.savedCss=e,this.insertCSS(this.savedCss),E.emit("customcss-updated",this.savedCss)}})}unwatchContent(){if(!this.watcher)return this.error("Was not watching content.");this.watcher.close(),delete this.watcher,this.log("No longer watching content.")}onChange(e){T.get("settings","customcss","liveUpdate")&&(this.insertCSS(e),this.saveCSS(e))}loadCSS(){this.savedCss=w.loadCustomCSS()}insertCSS(e){void 0===e?e=this.insertedCss:this.insertedCss=e,C.updateCustomCSS(e)}saveCSS(e){void 0!==e&&(this.savedCss=e),w.saveCustomCSS(this.savedCss)}openNative(){at.shell.openExternal("file://"+w.customCSS)}openDetached(e){const t=O.createRef(),s=O.createElement(ot,{id:"bd-floating-editor",ref:t,css:e,save:this.saveCSS.bind(this),update:this.insertCSS.bind(this),openNative:this.openNative.bind(this),onChange:this.onChange.bind(this)});ce.open({onClose:()=>{this.isDetached=!1},onResize:()=>{t&&t.current&&t.current.resize&&t.current.resize()},title:k.CustomCSS.editorTitle,id:"floating-editor-window",height:470,width:410,center:!0,resizable:!0,children:s,confirmClose:()=>!(!t||!t.current)&&t.current.hasUnsavedChanges,confirmationText:k.CustomCSS.confirmationText}),this.isDetached=!0,lt.close(),dt.dirtyDispatch({type:ct.LAYER_POP})}},ut=new class extends nt{get name(){return"WindowPrefs"}get category(){return"window"}get id(){return"transparency"}enabled(){this.setWindowPreference("transparent",!0),this.setWindowPreference("backgroundColor","#00000000"),this.showModal(k.WindowPrefs.enabledInfo)}disabled(){this.deleteWindowPreference("transparent"),this.deleteWindowPreference("backgroundColor"),this.showModal(k.WindowPrefs.disabledInfo)}showModal(e){this.initialized&&W.showConfirmationModal(k.Modals.additionalInfo,e,{confirmText:k.Modals.restartNow,cancelText:k.Modals.restartLater,onConfirm:()=>{const e=s(0).remote.app;e.relaunch(),e.exit()}})}getWindowPreference(e){return(w.getData("windowprefs")||{})[e]}setWindowPreference(e,t){const s=w.getData("windowprefs")||{};s[e]=t,w.setData("windowprefs",s)}deleteWindowPreference(e){const t=w.getData("windowprefs")||{};delete t[e],w.setData("windowprefs",t)}},pt=new class extends nt{get name(){return"24Hour"}get category(){return"general"}get id(){return"twentyFourHour"}enabled(){this.inject24Hour()}disabled(){this.unpatchAll()}inject24Hour(){const e=new RegExp("([0-9]{1,2}):([0-9]{1,2})\\s(AM|PM)"),t=(t,s,n)=>{const i=n.match(e);if(i&&4===i.length)return"AM"===i[3]?n.replace(i[0],`${"12"===i[1]?"00":i[1].padStart(2,"0")}:${i[2]}`):n.replace(i[0],`${"12"===i[1]?"12":parseInt(i[1])+12}:${i[2]}`)};this.after(f.TimeFormatter,"calendarFormat",t),this.after(f.TimeFormatter,"dateFormat",t)}};const mt=new RegExp("^(?!da-)((?:[A-Za-z]|[0-9]|-)+)-(?:[A-Za-z]|[0-9]|-|_){6}$");var gt=new class extends nt{get id(){return"classNormalizer"}get category(){return"general"}get name(){return"ClassNormalizer"}enabled(){this.hasPatched||(this.patchClassModules(g.getModules(this.moduleFilter.bind(this))),this.normalizeElement(document.querySelector("#app-mount")),this.hasPatched=!0,this.patchDOMMethods())}disabled(){this.hasPatched&&(this.unpatchClassModules(g.getModules(this.moduleFilter.bind(this))),this.revertElement(document.querySelector("#app-mount")),this.hasPatched=!1)}patchClassModules(e){for(const t of e)this.patchClassModule("da",t)}unpatchClassModules(e){for(const t of e)this.unpatchClassModule("da",t)}shouldIgnore(e){return!isNaN(e)||(!!(e.endsWith("px")||e.endsWith("ch")||e.endsWith("em")||e.endsWith("ms"))||(!!e.startsWith("layerContainer-")||(!(!e.startsWith("#")||7!=e.length&&4!=e.length)||!(!e.includes("calc(")&&!e.includes("rgba")))))}moduleFilter(e){if("object"!=typeof e||Array.isArray(e))return!1;if(e.__esModule)return!1;if(!Object.keys(e).length)return!1;for(const t in e){const s=e[t];if("string"!=typeof s)return!1;if(!this.shouldIgnore(s)){if(1===s.split("-").length)return!1;if(!mt.test(s.split(" ")[0]))return!1}}return!0}patchClassModule(e,t){for(const s in t){const n=t[s];if(this.shouldIgnore(n))continue;const i=n.split(" ");for(const n of i){const i=n.match(mt);if(!i||!i.length||i.length<2)continue;const o=i[1].split("-").map((e,t)=>t?e[0].toUpperCase()+e.slice(1):e).join("");t[s]+=` ${e}-${o}`}}}unpatchClassModule(e,t){for(const s in t){const n=t[s];if(this.shouldIgnore(n))continue;let i="";const o=n.split(" ");for(const t of o)t.startsWith(e+"-")||(i+=" "+t);t[s]=i.trim()}}normalizeElement(e){if(!(e instanceof Element))return;const t=e.classList;for(let s=0,n=t.length;st?e[0].toUpperCase()+e.slice(1):e).join("");e.classList.add("da-"+n)}for(const t of e.children)this.normalizeElement(t)}revertElement(e){if(!(e instanceof Element))return;e.children&&e.children.length&&this.revertElement(e.children[0]),e.nextElementSibling&&this.revertElement(e.nextElementSibling);const t=e.classList,s=[];for(let e=0;e{const o=[];t&&o.push("category="+t.replace(/ /g,"%20")),e&&o.push("term="+e.replace(/ /g,"%20")),n&&o.push("from="+n);const r="?"+o.join("&");i.get({url:`${this.endPoint}${r}${r?"&schema=new":"?schema=new"}`,json:!0},(e,t,n)=>{if(e)return s(null);const i=n.size+n.from;s({servers:n.results,size:n.size,from:n.from,total:n.total,next:i>=n.total?null:i})})})}static async join(e,t=!1){if(t)return vt.acceptInvite(e);try{return await fetch(`${this.joinEndPoint}/${e}`,{method:"GET",credentials:"include",mode:"cors",headers:{Accept:"application/json","Content-Type":"application/json"}}),!0}catch(e){return!1}}static async checkConnection(){try{const e=await fetch("https://auth.discordservers.com/info",{method:"GET",credentials:"include",mode:"cors",headers:{Accept:"application/json","Content-Type":"application/json"}}),t=await e.json();return this._accessToken=t.access_token,t}catch(e){return!1}}static connect(){return new Promise(e=>{const t=new wt(this.windowOptions),s="https://auth.discordservers.com/connect?scopes=guilds.join&previousUrl="+this.connectEndPoint;t.webContents.on("did-navigate",(s,n)=>{n==this.connectEndPoint&&(t.close(),e())}),t.loadURL(s)})}static get windowOptions(){return{width:380,height:450,backgroundColor:"#282b30",show:!0,resizable:!0,maximizable:!1,minimizable:!1,alwaysOnTop:!0,frame:!1,center:!0,webPreferences:{nodeIntegration:!1}}}}const St=g.getByDisplayName("SettingsView");class Et extends O.Component{get categoryButtons(){return["All","FPS Games","MMO Games","Strategy Games","MOBA Games","RPG Games","Tabletop Games","Sandbox Games","Simulation Games","Music","Community","Language","Programming","Other"]}constructor(e){super(e),this.state={category:"All",query:"",loading:!0,user:null,results:{servers:[],size:0,from:0,total:0,next:null}},this.changeCategory=this.changeCategory.bind(this),this.searchKeyDown=this.searchKeyDown.bind(this),this.connect=this.connect.bind(this),this.loadNextPage=this.loadNextPage.bind(this),this.join=this.join.bind(this)}componentDidMount(){this.checkConnection()}async checkConnection(){const e=await Ct.checkConnection();if(!e)return this.setState({loading:!0,user:null});this.setState({user:e}),this.search()}async connect(){await Ct.connect(),this.checkConnection()}searchKeyDown(e){this.state.loading||13!==e.which||this.search(e.target.value)}async search(e="",t=0){this.setState({query:e,loading:!0});const s=await Ct.search({term:e,category:"All"==this.state.category?"":this.state.category,from:t});if(!s)return this.setState({results:{servers:[],size:0,from:0,total:0,next:null}});this.setState({loading:!1,results:s})}async changeCategory(e){this.state.loading||(await new Promise(t=>this.setState({category:e},t)),this.search())}loadNextPage(){this.state.loading||this.search(this.state.query,this.state.results.next)}async join(e,t=!1){return await Ct.join(e,t)}get searchBox(){return O.createElement(je,{onKeyDown:this.searchKeyDown,placeholder:k.PublicServers.search+"..."})}get title(){if(!this.state.user)return k.PublicServers.notConnected;if(this.state.loading)return k.PublicServers.loading+"...";const e=this.state.results.from+1,t=this.state.results.total,s=this.state.results.next?this.state.results.next:t;let n=k.PublicServers.results.format({start:e,end:s,total:t,category:this.state.category});return this.state.query&&(n+=" "+k.PublicServers.query.format({query:this.state.query})),n}get content(){const e=this.state.user?null:{title:k.PublicServers.connect,onClick:this.connect},t="All"!=this.state.category&&this.state.user?null:this.bdServer,s=this.state.results.servers.map(e=>O.createElement(ft,{key:e.identifier,server:e,joined:Ct.hasJoined(e.identifier),join:this.join,defaultAvatar:Ct.getDefaultAvatar}));return[O.createElement(ve,{text:this.title,button:e}),t,s,this.state.results.next?this.nextButton:null,this.state.results.servers.length>0&&O.createElement(ve,{text:this.title})]}get nextButton(){return O.createElement("button",{type:"button",className:"bd-button bd-button-next",onClick:this.loadNextPage},this.state.loading?k.PublicServers.loading:k.PublicServers.loadMore)}get connection(){const{user:e}=this.state;return e?O.createElement("div",{id:"bd-connection"},O.createElement("div",{className:"bd-footnote"},k.PublicServers.connection.format(e)),O.createElement("button",{type:"button",className:"bd-button bd-button-reconnect",onClick:this.connect},k.PublicServers.reconnect)):O.createElement("div",{id:"bd-connection"})}get bdServer(){const e={name:"BetterDiscord",online:"7500+",members:"20000+",categories:["community","programming","support"],description:"Official BetterDiscord server for plugins, themes, support, etc",identifier:"86004744966914048",iconUrl:"https://cdn.discordapp.com/icons/86004744966914048/292e7f6bfff2b71dfd13e508a859aedd.webp",nativejoin:!0,invite_code:"0Tmfo5ZbORCRqbAd",pinned:!0};return O.createElement(ft,{server:e,pinned:!0,joined:Ct.hasJoined(e.identifier),defaultAvatar:Ct.getDefaultAvatar})}render(){const e=this.categoryButtons.map(e=>({section:e,label:e,element:()=>this.content}));return O.createElement(St,{onClose:this.props.close,onSetSection:this.changeCategory,section:this.state.category,sections:[{section:"HEADER",label:k.PublicServers.search},{section:"CUSTOM",element:()=>this.searchBox},{section:"HEADER",label:k.PublicServers.categories},...e,{section:"DIVIDER"},{section:"HEADER",label:O.createElement("a",{href:"https://discordservers.com",target:"_blank"},"DiscordServers.com")},{section:"DIVIDER"},{section:"CUSTOM",element:()=>this.connection}],theme:"dark"})}}const Mt=g.getByProps("pushLayer");var xt=new class extends nt{get name(){return"PublicServers"}get category(){return"general"}get id(){return"publicServers"}enabled(){const e=g.find(e=>e.default&&"NavigableGuilds"==e.default.displayName),t=g.findByDisplayName("Guilds");e||t||this.warn("Can't find GuildList component"),this.guildPatch=this.after(e||t.prototype,e?"default":"render",this._appendButton),this._appendButton()}disabled(){this.unpatchAll(),h.query("#bd-pub-li").remove()}_appendButton(){const e=f.GuildClasses.wrapper.split(" ")[0],t=h.query(`.${e} .scroller-2TZvBN >:first-child`);h.after(t,this.button)}openPublicServers(){Mt.pushLayer(()=>f.React.createElement(Et,{close:Mt.popLayer}))}get button(){const e=h.createElement(`
`),t=h.createElement(`
${k.PublicServers.button}
`);return t.addEventListener("click",()=>{this.openPublicServers()}),e.append(t),e}},Nt=new class extends nt{get name(){return"VoiceDisconnect"}get category(){return"general"}get id(){return"voiceDisconnect"}constructor(){super(),this.beforeUnload=this.beforeUnload.bind(this)}enabled(){window.addEventListener("beforeunload",this.beforeUnload)}disabled(){window.removeEventListener("beforeunload",this.beforeUnload)}beforeUnload(){f.ChannelActions.selectVoiceChannel(null,null)}};const Pt=g.getModule(e=>e.default&&e.default.displayName&&"Message"==e.default.displayName);var Dt=new class extends nt{get name(){return"ColoredText"}get category(){return"appearance"}get id(){return"coloredText"}enabled(){this.injectColoredText()}disabled(){this.unpatchAll()}injectColoredText(){this.after(Pt.prototype,"render",(e,t,s)=>{this.after(s.props,"children",{silent:!0,after:({returnValue:t})=>{const s=t.props.children[1],n=e.props.message.colorString;s&&n&&(s.props.style={color:n})}})})}removeColoredText(){document.querySelectorAll(".markup-2BOw-j").forEach(e=>{e.style.setProperty("color","")})}},At=new class extends nt{get name(){return"DarkMode"}get category(){return"appearance"}get id(){return"darkMode"}enabled(){document.getElementById("app-mount").classList.add("bda-dark","bd-dark")}disabled(){document.getElementById("app-mount").classList.remove("bda-dark","bd-dark")}},kt=new class extends nt{get name(){return"MinimalMode"}get category(){return"appearance"}get id(){return"minimalMode"}get hideChannelsID(){return"hideChannels"}get hideChannels(){return this.get(this.hideChannelsID)}constructor(){super(),this.enableHideChannels=this.enableHideChannels.bind(this),this.disableHideChannels=this.disableHideChannels.bind(this)}enabled(){document.body.classList.add("bd-minimal"),this.hideChannels&&this.enableHideChannels(),this.hideChannelCancel=this.registerSetting(this.hideChannelsID,this.enableHideChannels,this.disableHideChannels)}disabled(){document.body.classList.remove("bd-minimal"),this.hideChannels&&this.disableHideChannels(),this.hideChannelCancel&&this.hideChannelCancel()}enableHideChannels(){document.body.classList.add("bd-minimal-chan")}disableHideChannels(){document.body.classList.remove("bd-minimal-chan")}},Tt=new class extends nt{get name(){return"VoiceMode"}get category(){return"appearance"}get id(){return"voiceMode"}enabled(){document.querySelector(".chat-3bRxxu").style.setProperty("visibility","hidden"),document.querySelector(".chat-3bRxxu").style.setProperty("min-width","0px"),document.querySelector(".channels-Ie2l6A").style.setProperty("flex-grow","100000")}disabled(){document.querySelector(".chat-3bRxxu").style.setProperty("visibility",""),document.querySelector(".chat-3bRxxu").style.setProperty("min-width",""),document.querySelector(".channels-Ie2l6A").style.setProperty("flex-grow","")}};const Lt=g.getByDisplayName("Tooltip");class jt extends O.Component{constructor(e){super(e),this.state={shouldAnimate:!this.animateOnHover,isFavorite:this.props.isFavorite},this.onMouseEnter=this.onMouseEnter.bind(this),this.onMouseLeave=this.onMouseLeave.bind(this),this.onClick=this.onClick.bind(this),this.toggleFavorite=this.toggleFavorite.bind(this)}get animateOnHover(){return T.get("emotes","general","animateOnHover")}get label(){return this.props.modifier?`${this.props.name}:${this.props.modifier}`:this.props.name}get modifierClass(){return this.props.modifier?" emote"+this.props.modifier:""}onMouseEnter(){!this.state.shouldAnimate&&this.animateOnHover&&this.setState({shouldAnimate:!0})}onMouseLeave(){this.state.shouldAnimate&&this.animateOnHover&&this.setState({shouldAnimate:!1})}onClick(e){this.props.onClick&&this.props.onClick(e)}toggleFavorite(e){e.preventDefault(),e.stopPropagation(),this.state.isFavorite?E.emit("emotes-favorite-removed",this.label):E.emit("emotes-favorite-added",this.label,this.props.url),this.setState({isFavorite:!this.state.isFavorite})}render(){return O.createElement(Lt,{color:"black",position:"top",text:this.label,delay:750},e=>O.createElement("div",Object.assign({className:"emotewrapper"+(this.props.jumboable?" jumboable":""),onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,onClick:this.onClick},e),O.createElement("img",{draggable:!1,className:"emote"+this.modifierClass+(this.props.jumboable?" jumboable":"")+(this.state.shouldAnimate?"":" stop-animation"),dataModifier:this.props.modifier,alt:this.label,src:this.props.url}),O.createElement("input",{className:"fav"+(this.state.isFavorite?" active":""),title:k.Emotes.favoriteAction,type:"button",onClick:this.toggleFavorite})))}}const Bt=s(3),It={TwitchGlobal:new A("https://static-cdn.jtvnw.net/emoticons/v1/{{id}}/1.0"),TwitchSubscriber:new A("https://static-cdn.jtvnw.net/emoticons/v1/{{id}}/1.0"),FrankerFaceZ:new A("https://cdn.frankerfacez.com/emoticon/{{id}}/1"),BTTV:new A("https://cdn.betterttv.net/emote/{{id}}/1x")},zt={TwitchGlobal:{},TwitchSubscriber:{},BTTV:{},FrankerFaceZ:{}},Ft=[],Ot=["twitch","subscriber","bttv","ffz"],Rt=["flip","spin","pulse","spin2","spin3","1spin","2spin","3spin","tr","bl","br","shake","shake2","shake3","flap"];var Ut=new class extends nt{get name(){return"Emotes"}get collection(){return"settings"}get category(){return"general"}get id(){return"emotes"}get categories(){return Object.keys(zt).filter(e=>this.isCategoryEnabled(e))}get shouldDownload(){return T.get("emotes",this.category,"download")}isCategoryEnabled(e){return super.get("emotes","categories",e.toLowerCase())}get(e){return super.get("emotes","general",e)}get MessageComponent(){return g.find(e=>e.default&&e.default.displayName&&"Message"==e.default.displayName)}get Emotes(){return zt}get TwitchGlobal(){return zt.TwitchGlobal}get TwitchSubscriber(){return zt.TwitchSubscriber}get BTTV(){return zt.BTTV}get FrankerFaceZ(){return zt.FrankerFaceZ}get blacklist(){return Ft}get favorites(){return this.favoriteEmotes}getUrl(e,t){return It[e].format({id:zt[e][t]})}getCategory(e){return zt[e]}getRemoteFile(e){return u.repoUrl(`assets/emotes/${e.toLowerCase()}.json`)}initialize(){super.initialize();const e=w.getBDData("favoriteEmotes");this.favoriteEmotes=e||{},this.addFavorite=this.addFavorite.bind(this),this.removeFavorite=this.removeFavorite.bind(this),this.onCategoryToggle=this.onCategoryToggle.bind(this),this.resetEmotes=this.resetEmotes.bind(this)}async enabled(){T.registerCollection("emotes","Emotes",o,{title:k.Emotes.clearEmotes,onClick:this.resetEmotes}),await this.getBlacklist(),await this.loadEmoteData(),E.on("emotes-favorite-added",this.addFavorite),E.on("emotes-favorite-removed",this.removeFavorite),E.on("setting-updated",this.onCategoryToggle),this.patchMessageContent()}disabled(){E.off("setting-updated",this.onCategoryToggle),E.off("emotes-favorite-added",this.addFavorite),E.off("emotes-favorite-removed",this.removeFavorite),T.removeCollection("emotes"),this.emptyEmotes(),this.cancelEmoteRender&&(this.cancelEmoteRender(),delete this.cancelEmoteRender)}onCategoryToggle(e,t,s,n){if("emotes"==e&&"categories"==t)return n?this.loadEmoteData(s):this.unloadEmoteData(s)}addFavorite(e,t){this.favoriteEmotes.hasOwnProperty(e)||(this.favoriteEmotes[e]=t),this.saveFavorites()}removeFavorite(e){this.favoriteEmotes.hasOwnProperty(e)&&(delete this.favoriteEmotes[e],this.saveFavorites())}isFavorite(e){return this.favoriteEmotes.hasOwnProperty(e)}saveFavorites(){w.setBDData("favoriteEmotes",this.favoriteEmotes)}emptyEmotes(){for(const e in zt)Object.assign(zt,{[e]:{}})}patchMessageContent(){this.cancelEmoteRender||(this.cancelEmoteRender=this.before(this.MessageComponent,"default",(e,t)=>{const s=t[0].childrenMessageContent.props.content;if(!s||!s.length)return;for(let e=0;e"string"==typeof e&&""==e.replace(/\s*/,"")||(!(!e.type||"BDEmote"!=e.type.name)||!!(e.props&&e.props.children&&e.props.children.props&&e.props.children.props.emojiName))))for(const e of s)"object"==typeof e&&("BDEmote"==e.type.name?e.props.jumboable=!0:e.props&&e.props.children&&e.props.children.props&&e.props.children.props.emojiName&&(e.props.children.props.jumboable=!0))}))}async getBlacklist(){try{const e="Blacklist",t=w.emotesExist(e),s=await this.isCacheValid(e),n=s||!s&&t&&!this.shouldDownload?w.getEmoteData(e):await this.downloadEmotes(e);Ft.push(...n)}catch(e){}}isCacheValid(e){return new Promise(t=>{const s=w.getCacheHash("emotes",e);if(!s)return t(!1);Bt.head({url:this.getRemoteFile(e),headers:{"If-None-Match":s}},(e,s)=>{t(304==s.statusCode)})})}async loadEmoteData(e){e||(e=this.categories),Array.isArray(e)||(e=[e]);const t=Object.keys(zt);e=e.map(e=>t.find(t=>t.toLowerCase()==e.toLowerCase())),q.show(k.Emotes.loading,{type:"info"}),this.emotesLoaded=!1;for(const t of e){const e=w.emotesExist(t),s=await this.isCacheValid(t);let n=null;if(s||!s&&e&&!this.shouldDownload){this.log(`Loading ${t} emotes from local cache.`);const e=w.getEmoteData(t);Object.keys(e).length>0&&(n=e)}n||(n=await this.downloadEmotes(t)),Object.assign(zt[t],n),await new Promise(e=>setTimeout(e,1e3))}this.emotesLoaded=!0,E.dispatch("emotes-loaded"),q.show(k.Emotes.loaded,{type:"success"})}unloadEmoteData(e){e||(e=this.categories),Array.isArray(e)||(e=[e]);const t=Object.keys(zt);e=e.map(e=>t.find(t=>t.toLowerCase()==e.toLowerCase()));for(const t of e)delete zt[t],zt[t]={}}downloadEmotes(e){const t=this.getRemoteFile(e);this.log(`Downloading ${e} from ${t}`);const s={url:t,timeout:1e4,json:!0};return new Promise(t=>{Bt.get(s,(s,n,i)=>{if(s||200!=n.statusCode)return this.stacktrace(`Could not download ${e} emotes.`,s),t({});for(const e in i)(e.length<4||Ft.includes(e)||!i[e])&&delete i[e];w.saveEmoteData(e,i),w.setCacheHash("emotes",e,n.headers.etag),t(i),this.log("Downloaded "+e)})})}resetEmotes(){const e=Object.keys(zt);this.unloadEmoteData(e);for(const t of e)w.invalidateCache("emotes",t);this.loadEmoteData()}};const Ht=(e,t,s={})=>{const{onContextMenu:n,onClick:i}=s,o=h.createElement(`
\n ${e}\n
`);return n&&o.addEventListener("contextmenu",n),o.addEventListener("click",i),o};var qt=new class extends nt{get name(){return"EmoteMenu"}get collection(){return"emotes"}get category(){return"general"}get id(){return"emoteMenu"}get hideEmojisID(){return"hideEmojiMenu"}get hideEmojis(){return this.get(this.hideEmojisID)}constructor(){super(),this.lastTab="bd-qem-emojis",this.qmeHeader=h.createElement('
\n \n \n
');for(const e of this.qmeHeader.getElementsByTagName("button"))e.addEventListener("click",this.switchMenu.bind(this));this.teContainer=h.createElement('
\n
\n
\n
\n\n
\n
\n
\n
'),this.teContainerInner=this.teContainer.querySelector(".emote-menu-inner"),this.faContainer=h.createElement('
\n
\n
\n
\n\n
\n
\n
\n
'),this.faContainerInner=this.faContainer.querySelector(".emote-menu-inner"),this.observer=new MutationObserver(e=>{for(const t of e)this.observe(t)}),this.enableHideEmojis=this.enableHideEmojis.bind(this),this.disableHideEmojis=this.disableHideEmojis.bind(this),this.updateTwitchEmotes=this.updateTwitchEmotes.bind(this)}async enabled(){return W.alert("Emote Menu Broken","Emote Menu is currently broken, it is recommended to disable this until it is fixed.")}disabled(){E.off("emotes-loaded",this.updateTwitchEmotes),this.observer.disconnect(),this.disableHideEmojis(),this.hideEmojiCancel&&this.hideEmojiCancel()}enableHideEmojis(){const e=document.querySelector(".emojiPicker-3m1S-j");e&&e.classList.add("bd-qme-hidden")}disableHideEmojis(){const e=document.querySelector(".emojiPicker-3m1S-j");e&&e.classList.remove("bd-qme-hidden")}insertEmote(e){const t=u.getTextArea();u.insertText(t[0]," "==t.val().slice(-1)?t.val()+e:t.val()+" "+e)}favContext(e){e.stopPropagation();const t=e.target.closest(".emote-container").children[0],s=$('
Remove
');s.css({top:e.pageY-$("#bd-qem-favourite-container").offset().top,left:e.pageX-$("#bd-qem-favourite-container").offset().left}),$(t).parent().append(s),s.on("click",e=>{e.preventDefault(),e.stopPropagation(),$(t).remove(),Ut.removeFavorite($(t).attr("title")),this.updateFavorites(),$(document).off("mousedown.emotemenu")}),$(document).on("mousedown.emotemenu",(function(e){"removemenu"!=e.target.id&&($("#removemenu").remove(),$(document).off("mousedown.emotemenu"))}))}switchMenu(e){let t="string"==typeof e?e:e.target.id;"bd-qem-emojis"==t&&this.hideEmojis&&(t="bd-qem-favourite");const s=$("#bd-qem-twitch"),n=$("#bd-qem-favourite"),i=$("#bd-qem-emojis");switch(s.removeClass("active"),n.removeClass("active"),i.removeClass("active"),$(".emojiPicker-3m1S-j").hide(),$("#bd-qem-favourite-container").hide(),$("#bd-qem-twitch-container").hide(),t){case"bd-qem-twitch":s.addClass("active"),$("#bd-qem-twitch-container").show();break;case"bd-qem-favourite":n.addClass("active"),$("#bd-qem-favourite-container").show();break;case"bd-qem-emojis":i.addClass("active"),$(".emojiPicker-3m1S-j").show(),$(".emojiPicker-3m1S-j input").focus()}t&&(this.lastTab=t)}observe(e){if(!(e.addedNodes.length&&e.addedNodes[0]instanceof Element))return;const t=e.addedNodes[0];if(!t.classList.contains("layer-v9HyYc")||!t.getElementsByClassName("emojiPicker-3m1S-j").length||t.querySelector(".emojiPicker-3m1S-j").parentElement.classList.contains("animatorLeft-1EQxU0"))return;const s=$(t);this.hideEmojis?s.addClass("bd-qme-hidden"):s.removeClass("bd-qme-hidden"),s.prepend(this.qmeHeader),s.append(this.teContainer),s.append(this.faContainer),this.switchMenu(this.lastTab)}updateTwitchEmotes(){for(;this.teContainerInner.firstChild;)this.teContainerInner.firstChild.remove();for(const e in Ut.getCategory("TwitchGlobal")){if(!Ut.getCategory("TwitchGlobal").hasOwnProperty(e))continue;const t=Ut.getUrl("TwitchGlobal",e),s=Ht(e,t,{onClick:this.insertEmote.bind(this,e)});this.teContainerInner.append(s)}}updateFavorites(){for(;this.faContainerInner.firstChild;)this.faContainerInner.firstChild.remove();for(const e in Ut.favorites){const t=Ut.favorites[e],s=Ht(e,t,{onClick:this.insertEmote.bind(this,e),onContextMenu:this.favContext.bind(this)});this.faContainerInner.append(s)}Ut.saveFavorites()}},$t=new class extends nt{get name(){return"DeveloperMode"}get category(){return"developer"}get id(){return"developerMode"}get selectorModeID(){return"copySelector"}get selectorMode(){return this.get(this.selectorModeID)}constructor(){super(),this.copySelectorListener=this.copySelectorListener.bind(this)}enabled(){document.addEventListener("contextmenu",this.copySelectorListener)}disabled(){document.removeEventListener("contextmenu",this.copySelectorListener)}copySelectorListener(e){e.stopPropagation();const t=this.getSelector(e.target);setImmediate((function(){let s=h.query(".contextMenu-HLZMGh");if(!s){const t=h.query("#app-mount"),n=h.createElement('
');s=h.createElement('
'),n.append(s),t.append(n),n.style.top=e.clientY+"px",n.style.left=e.clientX+"px",n.style.zIndex="1002";const i=function(e){e.keyCode&&27!==e.keyCode||(n.remove(),document.removeEventListener("click",i),document.removeEventListener("contextmenu",i),document.removeEventListener("keyup",i))};document.addEventListener("click",i),document.addEventListener("contextmenu",i),document.addEventListener("keyup",i)}const n=h.createElement('
'),i=h.createElement('
');i.append(h.createElement(`
${k.Developer.copySelector}
`)),i.addEventListener("click",()=>{f.ElectronModule.copy(t),s.style.display="none"}),n.append(i),s.append(n)}))}getSelector(e){if(e.id)return"#"+e.id;const t=this.getRules(e),s=t[t.length-1];return s?s.selectorText:e.classList.length?"."+Array.from(e.classList).join("."):"."+Array.from(e.parentElement.classList).join(".")}getRules(e,t=e.ownerDocument.styleSheets){return[...t].filter(e=>!e.href||!e.href.includes("BetterDiscordApp")).map(e=>[...e.cssRules||[]]).flat().filter(t=>t&&t.selectorText&&e.matches(t.selectorText)&&t.style.length&&t.selectorText.split(", ").length<8&&!t.selectorText.split(", ").includes("*"))}},Wt=new class extends nt{get name(){return"Debugger"}get category(){return"developer"}get id(){return"debuggerHotkey"}enabled(){document.addEventListener("keydown",this.debugListener)}disabled(){document.removeEventListener("keydown",this.debugListener)}debugListener(e){119!==e.which&&118!=e.which||(e.preventDefault(),e.stopImmediatePropagation())}};const _t=s(0),Gt=s(2),Qt=s(1),Vt=_t.remote.BrowserWindow;var Zt=new class extends nt{get name(){return"ReactDevTools"}get category(){return"developer"}get id(){return"reactDevTools"}initialize(){super.initialize(),this.findExtension()}findExtension(){let e="";if(e="win32"===process.platform?Qt.resolve(process.env.LOCALAPPDATA,"Google/Chrome/User Data"):"linux"===process.platform?Qt.resolve(process.env.HOME,".config/google-chrome"):"darwin"===process.platform?Qt.resolve(process.env.HOME,"Library/Application Support/Google/Chrome"):Qt.resolve(process.env.HOME,".config/chromium"),e+="/Default/Extensions/fmkadmapgofadopljbjfkapdkoienihi/",Gt.existsSync(e)){const t=Gt.readdirSync(e);e=Qt.resolve(e,t[t.length-1])}this.extensionPath=e,this.isExtensionInstalled=Gt.existsSync(e)}enabled(){if(this.isExtensionInstalled||this.findExtension(),!this.isExtensionInstalled)return W.alert(k.ReactDevTools.notFound,k.ReactDevTools.notFoundDetails);Vt.addDevToolsExtension(this.extensionPath)?this.log("Successfully installed react devtools."):this.error("Couldn't find react devtools in chrome extensions!")}disabled(){this.isExtensionInstalled&&Vt.removeDevToolsExtension("React Developer Tools")}};class Yt extends O.Component{render(){return O.createElement("svg",{className:"bd-logo "+this.props.className,height:"100%",width:this.props.size||"16px",viewBox:"0 0 2000 2000",style:{fillRule:"evenodd",clipRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}},O.createElement("metadata",null),O.createElement("defs",null,O.createElement("filter",{id:"shadow1"},O.createElement("feDropShadow",{dx:"20",dy:"0",stdDeviation:"20",floodColor:"rgba(0,0,0,0.35)"})),O.createElement("filter",{id:"shadow2"},O.createElement("feDropShadow",{dx:"15",dy:"0",stdDeviation:"20",floodColor:"rgba(255,255,255,0.15)"})),O.createElement("filter",{id:"shadow3"},O.createElement("feDropShadow",{dx:"10",dy:"0",stdDeviation:"20",floodColor:"rgba(0,0,0,0.35)"}))),O.createElement("g",null,O.createElement("path",{style:{filter:"url(#shadow3)"},fill:"#171717",opacity:"1",d:"M1195.44+135.442L1195.44+135.442L997.6+136.442C1024.2+149.742+1170.34+163.542+1193.64+179.742C1264.34+228.842+1319.74+291.242+1358.24+365.042C1398.14+441.642+1419.74+530.642+1422.54+629.642L1422.54+630.842L1422.54+632.042C1422.54+773.142+1422.54+1228.14+1422.54+1369.14L1422.54+1370.34L1422.54+1371.54C1419.84+1470.54+1398.24+1559.54+1358.24+1636.14C1319.74+1709.94+1264.44+1772.34+1193.64+1821.44C1171.04+1837.14+1025.7+1850.54+1000+1863.54L1193.54+1864.54C1539.74+1866.44+1864.54+1693.34+1864.54+1296.64L1864.54+716.942C1866.44+312.442+1541.64+135.442+1195.44+135.442Z"}),O.createElement("path",{style:{filter:"url(#shadow2)"},fill:"#3E82E5",opacity:"1",d:"M1695.54+631.442C1685.84+278.042+1409.34+135.442+1052.94+135.442L361.74+136.442L803.74+490.442L1060.74+490.442C1335.24+490.442+1335.24+835.342+1060.74+835.342L1060.74+1164.84C1150.22+1164.84+1210.53+1201.48+1241.68+1250.87C1306.07+1353+1245.76+1509.64+1060.74+1509.64L361.74+1863.54L1052.94+1864.54C1409.24+1864.54+1685.74+1721.94+1695.54+1368.54C1695.54+1205.94+1651.04+1084.44+1572.64+999.942C1651.04+915.542+1695.54+794.042+1695.54+631.442Z"}),O.createElement("path",{style:{filter:"url(#shadow1)"},fill:"#FFFFFF",opacity:"1",d:"M1469.25+631.442C1459.55+278.042+1183.05+135.442+826.65+135.442L135.45+135.442L135.45+1004C135.45+1004+135.427+1255.21+355.626+1255.21C575.825+1255.21+575.848+1004+575.848+1004L577.45+490.442L834.45+490.442C1108.95+490.442+1108.95+835.342+834.45+835.342L664.65+835.342L664.65+1164.84L834.45+1164.84C923.932+1164.84+984.244+1201.48+1015.39+1250.87C1079.78+1353+1019.47+1509.64+834.45+1509.64L135.45+1509.64L135.45+1864.54L826.65+1864.54C1182.95+1864.54+1459.45+1721.94+1469.25+1368.54C1469.25+1205.94+1424.75+1084.44+1346.35+999.942C1424.75+915.542+1469.25+794.042+1469.25+631.442Z"})))}}const Jt=f.React,Kt=g.getByDisplayName("Tooltip");var Xt=new class{initialize(){u.suppressErrors(this.patchSocial.bind(this),"BD Social Patch")(),u.suppressErrors(this.patchGuildPills.bind(this),"BD Guild Pills Patch")(),u.suppressErrors(this.patchGuildListItems.bind(this),"BD Guild List Items Patch")(),u.suppressErrors(this.patchGuildSeparator.bind(this),"BD Guild Separator Patch")(),u.suppressErrors(this.patchMessageHeader.bind(this),"BD Message Header Patch")(),u.suppressErrors(this.patchMemberList.bind(this),"BD Member List Patch")()}patchSocial(){if(this.socialPatch)return;const e=g.getByDisplayName("TabBar"),t=g.getByDisplayName("Anchor");e&&(this.socialPatch=L.after("ComponentPatcher",e.prototype,"render",(e,s,n)=>{const o=n.props.children;if(!o||!o.length||o.length<3)return;if("Separator"!==o[o.length-3].type.displayName)return;if(!o[o.length-2].type.toString().includes("socialLinks"))return;if(t){const e=o[o.length-2].type,s=function(){const s=e(...arguments);return s.props.children.push(f.React.createElement(t,{className:"bd-social-link",href:"https://twitter.com/BandagedBD",title:"BandagedBD",target:"_blank"},f.React.createElement(Yt,{size:"16px",className:"bd-social-logo"}))),s};o[o.length-2].type=s}const r=f.React.createElement("div",{className:"colorMuted-HdFt4q size12-3cLvbJ"},"Injector "+i.version),a=`(${i.hash?i.hash.substring(0,7):i.branch})`,l=f.React.createElement("div",{className:"colorMuted-HdFt4q size12-3cLvbJ"},`BBD ${i.bbdVersion} `,f.React.createElement("span",{className:"versionHash-2gXjIB da-versionHash"},a)),d=o[o.length-1].type;o[o.length-1].type=function(){const e=d(...arguments);return e.props.children.splice(e.props.children.length-1,0,r),e.props.children.splice(1,0,l),e}}))}patchGuildListItems(){if(this.guildListItemsPatch)return;const e=f.GuildClasses.listItem.split(" ")[0],t=f.GuildClasses.blobContainer.split(" ")[0],s=u.getReactInstance(document.querySelector(`.${e} .${t}`).parentElement).return.type;s&&(this.guildListItemsPatch=L.after("ComponentPatcher",s.prototype,"render",(e,t,s)=>{if(!s||!e)return;const n=e.props;return s.props.className+=" bd-guild",n.unread&&(s.props.className+=" bd-unread"),n.selected&&(s.props.className+=" bd-selected"),n.audio&&(s.props.className+=" bd-audio"),n.video&&(s.props.className+=" bd-video"),n.badge&&(s.props.className+=" bd-badge"),n.animatable&&(s.props.className+=" bd-animatable"),s}))}patchGuildPills(){if(this.guildPillPatch)return;const e=g.getModule(e=>e.default&&!e.default.displayName&&e.default.toString&&e.default.toString().includes("translate3d"));e&&(this.guildPillPatch=L.after("ComponentPatcher",e,"default",(e,t,s)=>{const n=t[0];return n.unread&&(s.props.className+=" bd-unread"),n.selected&&(s.props.className+=" bd-selected"),n.hovered&&(s.props.className+=" bd-hovered"),s}))}patchGuildSeparator(){if(this.guildSeparatorPatch)return;const e=g.getByDisplayName("Guilds"),t=g.getByProps("renderListItem");if(!t||!e)return;const s=function(){const e=t.Separator(...arguments);return e.props.className+=" bd-guild-separator",e};this.guildSeparatorPatch=L.after("ComponentPatcher",e.prototype,"render",(e,t,n)=>{const i=u.findInReactTree(n,e=>e.type&&!e.type.displayName&&"function"==typeof e.type&&u.isEmpty(e.props));i&&(i.type=s)})}patchMessageHeader(){if(this.messageHeaderPatch)return;const e=g.getByProps("MessageTimestamp"),t=g.find(e=>"Anchor"==e.displayName);t&&e&&e.default&&(this.messageHeaderPatch=L.after("ComponentPatcher",e,"default",(e,s,n)=>{const i=u.getNestedProp(s[0],"message.author"),o=u.getNestedProp(n,"props.children.1.props.children.1.props.children");o&&i&&i.id&&"249746236008169473"===i.id&&Array.isArray(o)&&o.push(Jt.createElement(Kt,{color:"black",position:"top",text:"BandagedBD Developer"},e=>Jt.createElement(t,Object.assign({className:"bd-chat-badge",href:"https://github.com/rauenzi/BetterDiscordApp",title:"BandagedBD",target:"_blank"},e),Jt.createElement(Yt,{size:"16px",className:"bd-logo"}))))}))}patchMemberList(){if(this.memberListPatch)return;const e=g.findByDisplayName("MemberListItem"),t=g.find(e=>"Anchor"==e.displayName);t&&e&&e.prototype&&e.prototype.renderDecorators&&(this.memberListPatch=L.after("ComponentPatcher",e.prototype,"renderDecorators",(e,s,n)=>{const i=u.getNestedProp(e,"props.user"),o=u.getNestedProp(n,"props.children");o&&i&&i.id&&"249746236008169473"===i.id&&Array.isArray(o)&&o.push(Jt.createElement(Kt,{color:"black",position:"top",text:"BandagedBD Developer"},e=>Jt.createElement(t,Object.assign({className:"bd-member-badge",href:"https://github.com/rauenzi/BetterDiscordApp",title:"BandagedBD",target:"_blank"},e),Jt.createElement(Yt,{size:"16px",className:"bd-logo"}))))}))}};const{ipcRenderer:es}=s(0),ts=f.GuildClasses;!function(){const e=Object.getOwnPropertyDescriptor(HTMLIFrameElement.prototype,"contentWindow").get;Object.defineProperty(HTMLIFrameElement.prototype,"contentWindow",{get:function(){const t=Reflect.apply(e,this,arguments);return new Proxy(t,{getOwnPropertyDescriptor:function(e,t){if("localStorage"!==t)return Object.getOwnPropertyDescriptor(e,t)},get:function(e,t){if("localStorage"===t)return null;const s=e[t];return"function"==typeof s?s.bind(e):s}})}}),Object.defineProperty(Reflect,"apply",{value:Reflect.apply,writable:!1,configurable:!1}),Object.defineProperty(Function.prototype,"bind",{value:Function.prototype.bind,writable:!1,configurable:!1});const t=XMLHttpRequest.prototype.open;XMLHttpRequest.prototype.open=function(){const e=arguments[1];return e.toLowerCase().includes("api/webhooks")?null:Reflect.apply(t,this,arguments)}}(),function(){const e="betterdiscord/",t=s(4),n=t._load;t._load=function(t){if("betterdiscord"===t||t.startsWith(e)){if("bdapi"==t.substr(e.length))return Xe}return n.apply(this,arguments)}}(),window.BdApi=Xe,st.show(),new class{constructor(){es.invoke("bd-config","get").then(e=>{this.hasStarted||(Object.assign(i,e),this.init())})}get dependencies(){return[{name:"jquery",type:"script",url:"//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js",backup:"//cdn.jsdelivr.net/gh/jquery/jquery@2.0.0/jquery.min.js",local:null},{name:"bd-stylesheet",type:"style",url:"//cdn.staticaly.com/gh/{{repo}}/BetterDiscordApp/{{hash}}/dist/style.min.css",backup:"//rauenzi.github.io/BetterDiscordApp/dist/style.min.css",local:"{{localServer}}/BetterDiscordApp/dist/style.min.css"}]}setConfig(e){this.hasStarted||Object.assign(i,e)}async init(){if(this.hasStarted)return;this.hasStarted=!0;let e=new Promise(e=>e());if(window.$&&window.jQuery||(e=this.loadDependencies()),w.initialize(),await D.initialize(),i.versioni.version&&W.showConfirmationModal(k.Startup.updateAvailable,k.Startup.updateInfo.format({version:t}),{confirmText:k.Startup.updateNow,cancelText:k.Startup.maybeLater,onConfirm:async()=>{const e=()=>{W.alert(k.Startup.updateFailed,k.Startup.manualUpdate)};try{if(!await this.updateInjector())return e();const t=s(0).remote.app;t.relaunch(),t.exit()}catch(t){e()}}}),c.log("Startup","Initializing Settings"),T.initialize(),await this.waitForGuilds(),F.initialize(),Xt.initialize();for(const e in n)n[e].initialize();await e,c.log("Startup","Loading Plugins");const o=Ve.initialize();c.log("Startup","Loading Themes");const r=Ye.initialize();c.log("Startup","Removing Loading Icon"),st.hide(),c.log("Startup","Collecting Startup Errors"),W.showAddonErrors({plugins:o,themes:r});const a=w.getBDData("version");i.bbdVersion>a&&(W.showChangelogModal(l),w.setBDData("version",i.bbdVersion))}waitForGuilds(){let e=0;return new Promise(t=>{const s=function(){e++,"complete"!=document.readyState&&setTimeout(s,100);const n=ts.wrapper.split(" ")[0],o=ts.listItem.split(" ")[0],r=ts.blobContainer.split(" ")[0];return document.querySelectorAll(`.${n} .${o} .${r}`).length>0||e>=50?t(i.deferLoaded=!0):void setTimeout(s,100)};s()})}async loadDependencies(){for(const e of this.dependencies){const t=u.formatString(i.local&&null!=e.local?e.local:e.url,{repo:i.repo,hash:i.hash,localServer:i.localServer});c.log("Startup",`Loading Resource (${t})`);const s=("script"==e.type?C.injectScript:C.linkStyle).bind(C);try{await s(e.name,t)}catch(n){const o=u.formatString(e.backup,{minified:i.minified?".min":""});c.stacktrace("Startup",`Could not load ${t}. Using backup ${o}`,n);try{await s(e.name,o)}catch(s){c.stacktrace("Startup",`Could not load ${t}. Using backup ${o}`,n),"jquery"===e.name&&W.alert(k.Startup.jqueryFailed,k.Startup.jqueryFailedDetails)}}}}async updateInjector(){const e=w.injectionPath;if(!e)return!1;const t=s(2),n=s(1),i=s(6),o=s(7),r=s(8),a=s(3),l=n.resolve(e,".."),d=n.basename(e),h="https://github.com/rauenzi/BetterDiscordApp/archive/injector.zip",u=n.resolve(l,"injector.zip"),p=n.resolve(l,"BetterDiscordApp-injector");c.log("InjectorUpdate","Downloading "+h);let m=await new Promise(e=>{a.get({url:h,encoding:null},async(s,n,i)=>{if(s||200!==n.statusCode)return e(!1);await new Promise(e=>t.exists(u,e))&&await new Promise(e=>t.rename(u,`${u}.bak${Math.round(performance.now())}`,e)),c.log("InjectorUpdate","Writing "+u),t.writeFile(u,i,t=>e(!t))})});if(!m)return m;await new Promise(e=>t.exists(p,e))&&await new Promise(e=>t.rename(p,`${p}.bak${Math.round(performance.now())}`,e));const g=await new Promise(e=>o.open(u,{lazyEntries:!0},(t,s)=>e(s)));g.on("entry",(function(e){if(e.fileName.endsWith("/"))return g.readEntry();c.log("InjectorUpdate","Extracting "+e.fileName);const s=n.resolve(l,e.fileName);r.sync(n.dirname(s)),g.openReadStream(e,(function(e,n){if(e)return m=!1;n.on("end",(function(){g.readEntry()})),n.pipe(t.createWriteStream(s))}))})),g.readEntry(),await new Promise(e=>g.once("end",e));const f=n.resolve(l,`${d}.bak${Math.round(performance.now())}`);return await new Promise(s=>t.rename(e,f,s)),c.log("InjectorUpdate",`Renaming ${n.basename(p)} to ${d}`),m=await new Promise(s=>t.rename(p,e,e=>s(!e))),m?m?(await new Promise(e=>i(f,e)),await new Promise(e=>t.unlink(u,e)),c.log("InjectorUpdate","Injector Updated!"),m):(c.err("InjectorUpdate","Something went wrong... restoring backups."),await new Promise(e=>i(p,e)),await new Promise(s=>t.rename(f,e,s)),m):(c.err("InjectorUpdate","Failed to rename the final directory"),m)}}}]); \ No newline at end of file +!function(e){var t={};function s(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,s),i.l=!0,i.exports}s.m=e,s.c=t,s.d=function(e,t,n){s.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.t=function(e,t){if(1&t&&(e=s(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(s.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)s.d(n,i,function(t){return e[t]}.bind(null,i));return n},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,"a",t),t},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s.p="",s(s.s=9)}([function(e,t){e.exports=require("electron")},function(e,t){e.exports=require("path")},function(e,t){e.exports=require("fs")},function(e,t){e.exports=require("request")},function(e,t){e.exports=require("module")},function(e,t){e.exports=require("events")},function(e,t){e.exports=require("rimraf")},function(e,t){e.exports=require("yauzl")},function(e,t){e.exports=require("mkdirp")},function(e,t,s){"use strict";s.r(t);var n={};s.r(n),s.d(n,"CustomCSS",(function(){return ht})),s.d(n,"WindowPrefs",(function(){return ut})),s.d(n,"TwentyFourHour",(function(){return pt})),s.d(n,"ClassNormalizer",(function(){return gt})),s.d(n,"PublicServers",(function(){return xt})),s.d(n,"VoiceDisconnect",(function(){return Nt})),s.d(n,"ColoredText",(function(){return Dt})),s.d(n,"DarkMode",(function(){return At})),s.d(n,"MinimalMode",(function(){return kt})),s.d(n,"VoiceMode",(function(){return Tt})),s.d(n,"EmoteModule",(function(){return Ut})),s.d(n,"EmoteMenu",(function(){return qt})),s.d(n,"CopySelector",(function(){return $t})),s.d(n,"Debugger",(function(){return Wt})),s.d(n,"ReactDevTools",(function(){return Zt}));var i={local:!1,localPath:"",localServer:"//localhost:8080",minified:!0,version:"0.3.0",branch:"master",repo:"rauenzi",minSupportedVersion:"0.3.0",bbdVersion:"1.0.0"},o=[{type:"category",id:"general",name:"General",collapsible:!0,settings:[{type:"switch",id:"download",value:!0},{type:"switch",id:"emoteMenu",value:!0},{type:"switch",id:"hideEmojiMenu",value:!1,enableWith:"emoteMenu"},{type:"switch",id:"showNames",value:!0},{type:"switch",id:"modifiers",value:!0},{type:"switch",id:"animateOnHover",value:!1}]},{type:"category",id:"categories",name:"Categories",collapsible:!0,settings:[{type:"switch",id:"twitchglobal",value:!0},{type:"switch",id:"twitchsubscriber",value:!1},{type:"switch",id:"frankerfacez",value:!0},{type:"switch",id:"bttv",value:!0}]}],r=[{type:"category",id:"general",collapsible:!0,settings:[{type:"switch",id:"emotes",value:!0},{type:"switch",id:"publicServers",value:!0},{type:"switch",id:"voiceDisconnect",value:!1},{type:"switch",id:"twentyFourHour",value:!1},{type:"switch",id:"classNormalizer",value:!0},{type:"switch",id:"showToasts",value:!0}]},{type:"category",id:"appearance",collapsible:!0,settings:[{type:"switch",id:"voiceMode",value:!1},{type:"switch",id:"minimalMode",value:!1},{type:"switch",id:"hideChannels",value:!1,enableWith:"minimalMode"},{type:"switch",id:"darkMode",value:!0},{type:"switch",id:"coloredText",value:!1}]},{type:"category",id:"addons",collapsible:!0,shown:!1,settings:[{type:"switch",id:"addonErrors",value:!0},{type:"switch",id:"autoScroll",value:!0},{type:"switch",id:"autoReload",value:!0},{type:"dropdown",id:"editAction",value:"detached",options:[{value:"detached"},{value:"system"}]}]},{type:"category",id:"customcss",collapsible:!0,shown:!1,settings:[{type:"switch",id:"customcss",value:!0},{type:"switch",id:"liveUpdate",value:!1},{type:"dropdown",id:"openAction",value:"settings",options:[{value:"settings"},{value:"detached"},{value:"system"}]}]},{type:"category",id:"developer",collapsible:!0,shown:!1,settings:[{type:"switch",id:"debuggerHotkey",value:!1},{type:"switch",id:"copySelector",value:!1},{type:"switch",id:"reactDevTools",value:!1}]},{type:"category",id:"window",collapsible:!0,shown:!1,settings:[{type:"switch",id:"transparency",value:!1},{type:"switch",id:"frame",value:!1,hidden:!0}]}],a={Panels:{plugins:"Plugins",themes:"Themes",customcss:"Custom CSS"},Collections:{settings:{name:"Settings",general:{name:"General",emotes:{name:"Emote System",note:"Enables BD's emote system"},publicServers:{name:"Public Servers",note:"Display public servers button"},voiceDisconnect:{name:"Voice Disconnect",note:"Disconnect from voice server when closing Discord"},twentyFourHour:{name:"24-Hour Timestamps",note:"Hides channels when in minimal mode"},classNormalizer:{name:"Normalize Classes",note:"Adds stable classes to elements to help themes. (e.g. adds .da-channels to .channels-Ie2l6A)"},showToasts:{name:"Show Toasts",note:"Shows a small notification for important information"}},appearance:{name:"Appearance",voiceMode:{name:"Voice Mode",note:"Hides everything that isn't voice chat"},minimalMode:{name:"Minimal Mode",note:"Hide elements and reduce the size of elements"},hideChannels:{name:"Hide Channels",note:"Hides channels when in minimal mode"},darkMode:{name:"Dark Mode",note:"Make certain elements dark by default"},coloredText:{name:"Colored Text",note:"Make text colour the same as role color"}},addons:{name:"Addon Manager",addonErrors:{name:"Show Addon Errors",note:"Shows a modal with plugin/theme errors"},autoScroll:{name:"Scroll To Settings",note:"Auto-scrolls to a plugin's settings when the button is clicked (only if out of view)"},autoReload:{name:"Automatic Loading",note:"Automatically loads, reloads, and unloads plugins and themes"},editAction:{name:"Edit Action",note:"Where plugins & themes appear when editing",options:{detached:"Detached Window",system:"System Editor"}}},customcss:{name:"Custom CSS",customcss:{name:"Custom CSS",note:"Enables the Custom CSS tab"},liveUpdate:{name:"Live Update",note:"Updates the css as you type"},startDetached:{name:"Start Detached",note:"Clicking the Custom CSS tab opens the editor in a separate window"},nativeOpen:{name:"Open in Native Editor",note:"Clicking the Custom CSS tab opens your custom css in your native editor"},openAction:{name:"Editor Location",note:"Where Custom CSS should open by default",options:{settings:"Settings Menu",detached:"Detached Window",system:"System Editor"}}},developer:{name:"Developer Settings",debuggerHotkey:{name:"Debugger Hotkey",note:"Allows activating debugger when pressing F8"},copySelector:{name:"Copy Selector",note:'Adds a "Copy Selector" option to context menus when developer mode is active'},reactDevTools:{name:"React Developer Tools",note:"Injects your local installation of React Developer Tools into Discord"}},window:{name:"Window Preferences",transparency:{name:"Enable Transparency",note:"Enables the main window to be see-through (requires restart)"},frame:{name:"Window Frame",note:"Adds the native os window frame to the main window"}}},emotes:{name:"Emotes",general:{name:"General",download:{name:"Download Emotes",note:"Download emotes whenever they are out of date"},emoteMenu:{name:"Emote Menu",note:"Show Twitch/Favourite emotes in emote menu"},hideEmojiMenu:{name:"Hide Emoji Menu",note:"Hides Discord's emoji menu when using emote menu"},autoCaps:{name:"Emote Autocapitalization",note:"Autocapitalize emote commands"},showNames:{name:"Show Names",note:"Show emote names on hover"},modifiers:{name:"Show Emote Modifiers",note:"Enable emote mods (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)"},animateOnHover:{name:"Animate On Hover",note:"Only animate the emote modifiers on hover"}},categories:{name:"Categories",twitchglobal:{name:"Twitch Globals",note:"Show Twitch global emotes"},twitchsubscriber:{name:"Twitch Subscribers",note:"Show Twitch subscriber emotes"},frankerfacez:{name:"FrankerFaceZ",note:"Show emotes from FFZ"},bttv:{name:"BetterTTV",note:"Show emotes from BTTV"}}}},Addons:{title:"{{name}} v{{version}} by {{author}}",openFolder:"Open {{type}} Folder",reload:"Reload",addonSettings:"Settings",website:"Website",source:"Source",invite:"Support Server",donate:"Donate",patreon:"Patreon",name:"Name",author:"Author",version:"Version",added:"Date Added",modified:"Date Modified",search:"Search {{type}}",editAddon:"Edit",deleteAddon:"Delete",confirmDelete:"Are you sure you want to delete {{name}}?",confirmationText:"You have unsaved changes to {{name}}. Closing this window will lose all those changes.",enabled:"{{name}} has been enabled.",disabled:"{{name}} has been disabled.",couldNotEnable:"{{name}} could not be enabled.",couldNotDisable:"{{name}} could not be disabled.",couldNotStart:"{{name}} could not be started.",couldNotStop:"{{name}} could not be stopped.",methodError:"{{method}} could not be fired.",unknownAuthor:"Unknown Author",noDescription:"Description not provided."},CustomCSS:{confirmationText:"You have unsaved changes to your Custom CSS. Closing this window will lose all those changes.",update:"Update",save:"Save",openNative:"Open in System Editor",openDetached:"Detach Window",settings:"Editor Settings",editorTitle:"Custom CSS Editor"},Developer:{copySelector:"Copy Selector"},Emotes:{loading:"Loading emotes in the background do not reload.",loaded:"All emotes successfully loaded.",clearEmotes:"Clear Emote Data",favoriteAction:"Favorite!"},PublicServers:{button:"public",join:"Join",joining:"Joining",joined:"Joined",loading:"Loading",loadMore:"Load More",notConnected:"Not connected to DiscordServers.com!",search:"Search",connect:"Connect",reconnect:"Reconnect",categories:"Categories",connection:"Connected as: {{username}}#{{discriminator}}",results:"Showing {{start}}-{{end}} of {{total}} results in {{category}}",query:"for {{query}}"},Modals:{confirmAction:"Are You Sure?",okay:"Okay",cancel:"Cancel",close:"Close",name:"Name",message:"Message",error:"Error",addonErrors:"Addon Errors",restartRequired:"Restart Required",restartNow:"Restart Now",restartLater:"Restart Later",additionalInfo:"Additional Info"},ReactDevTools:{notFound:"Extension Not Found",notFoundDetails:"Unable to find the React Developer Tools extension on your PC. Please install the extension on your local Chrome installation."},Sorting:{sortBy:"Sort By",order:"Order",ascending:"Ascending",descending:"Descending"},Startup:{notSupported:"Not Supported",versionMismatch:"BandagedBD Injector v{{injector}} is not supported by the latest remote (v{{remote}}).\n\nPlease download the latest version from [GitHub](https://github.com/rauenzi/BetterDiscordApp/releases/latest)",incompatibleApp:"BandagedBD does not work with {{app}}. Please uninstall one of them.",updateNow:"Update Now",maybeLater:"Maybe Later",updateAvailable:"Update Available",updateInfo:"There is an update available for BandagedBD's Injector ({{version}}).\n\nYou can either update and restart now, or later.",updateFailed:"Could Not Update",manualUpdate:"Unable to update automatically, please download the installer and reinstall normally.\n\n[Download Installer](https://github.com/rauenzi/BetterDiscordApp/releases/latest)",jqueryFailed:"jQuery Failed To Load",jqueryFailedDetails:"jQuery could not be loaded, and some plugins may not work properly. Proceed at your own risk."},WindowPrefs:{enabledInfo:"This option requires a transparent theme in order to work properly. On Windows this may break your aero snapping and maximizing.\n\nIn order to take effect, Discord needs to be restarted. Do you want to restart now?",disabledInfo:"In order to take effect, Discord needs to be restarted. Do you want to restart now?"}},l={description:"Don't be shocked, this modal is supposed to be here.",changes:[{title:"What's New?",items:["**BandagedBD will now keep you updated with changelogs!** I will try to only show a changelog when there's more than a tiny or internal change.","**Twitter (@BandagedBD)** I created a Twitter to try and provide support and such for those without access to the server. https://Twitter.com/BandagedBD"]},{title:"Fixes",type:"fixed",items:["**Colored Text** option should work again.","**Emotes** should show up in chat.","Fixed a bug where BBD attempted to patch the TabBar module incorrectly. (Thanks, DevilBro)"]},{title:"Minor Stuff",type:"improved",items:["**Colour->Color.** Swapped to using English-US spelling by default to be consistent, and to potentially be prepared for localization.","**Versions simplified.** The BandagedBD version now integrates into Discord's at the bottom-left of settings instead of randomly being a part of the setting list."]}]};const d={err:"error",error:"error",dbg:"debug",debug:"debug",log:"log",warn:"warn",info:"info"};class c{static stacktrace(e,t,s){console.error(`%c[${e}]%c ${t}\n\n%c`,"color: #3a71c1; font-weight: 700;","color: red; font-weight: 700;","color: red;",s)}static err(e,...t){c._log(e,t,"error")}static warn(e,...t){c._log(e,t,"warn")}static info(e,...t){c._log(e,t,"info")}static debug(e,...t){c._log(e,t,"debug")}static log(e,...t){c._log(e,t)}static _log(e,t,s="log"){s=c.parseType(s),Array.isArray(t)||(t=[t]),console[s](`%c[BandagedBD]%c [${e}]%c`,"color: #3E82E5; font-weight: 700;","color: #3a71c1;","",...t)}static parseType(e){return d[e]||"log"}}class h{static escapeID(e){return e.replace(/^[^a-z]+|[^\w-]+/gi,"-")}static addStyle(e,t){document.head.append(h.createElement(``))}static removeStyle(e){const t=document.getElementById(e);t&&t.remove()}static addScript(e,t){return new Promise(s=>{const n=document.createElement("script");n.id=e,n.src=t,n.type="text/javascript",n.onload=s,document.head.append(n)})}static removeScript(e){e=this.escapeID(e);const t=document.getElementById(e);t&&t.remove()}static animate({timing:e=(e=>e),update:t,duration:s}){const n=performance.now();requestAnimationFrame((function i(o){let r=(o-n)/s;r>1&&(r=1);const a=e(r);t(a),r<1&&requestAnimationFrame(i)}))}static Q(e){const t=this.parseHTML(e);return(t instanceof NodeList?Array.from(t).some(e=>1===e.nodeType):1===t.nodeType)?t:this.query(e)}static query(e,t){return t||(t=document),t.querySelector(e)}static queryAll(e,t){return t||(t=document),t.querySelectorAll(e)}static parseHTML(e,t=!1){const s=document.createElement("template");s.innerHTML=e;const n=s.content.cloneNode(!0);return t?n:n.childNodes.length>1?n.childNodes:n.childNodes[0]}static createElement(e,t=!1){return this.parseHTML(e,t)}static escapeHTML(e){const t=document.createTextNode(""),s=document.createElement("span");return s.append(t),t.nodeValue=e,s.innerHTML}static addClass(e,...t){t=t.flat().filter(e=>e);for(let e=0;ee),e.classList.add(...t),e}static removeClass(e,...t){for(let e=0;ee),e.classList.remove(...t),e}static toggleClass(e,t,s){return t=t.toString().split(" ").filter(e=>e),void 0!==s?t.forEach(t=>e.classList.toggle(t,s)):t.forEach(t=>e.classList.toggle(t)),e}static hasClass(e,t){return t.toString().split(" ").filter(e=>e).every(t=>e.classList.contains(t))}static replaceClass(e,t,s){return e.classList.replace(t,s),e}static appendTo(e,t){return"string"==typeof t&&(t=this.query(t)),t?(t.append(e),e):null}static prependTo(e,t){return"string"==typeof t&&(t=this.query(t)),t?(t.prepend(e),e):null}static insertAfter(e,t){return t.parentNode.insertBefore(e,t.nextSibling),e}static after(e,t){return e.parentNode.insertBefore(t,e.nextSibling),e}static next(e,t=""){return t?e.querySelector("+ "+t):e.nextElementSibling}static nextAll(e){return e.querySelectorAll("~ *")}static nextUntil(e,t){const s=[];for(;e.nextElementSibling&&!e.nextElementSibling.matches(t);)s.push(e=e.nextElementSibling);return s}static previous(e,t=""){const s=e.previousElementSibling;return t?s&&s.matches(t)?s:null:s}static previousAll(e){const t=[];for(;e.previousElementSibling;)t.push(e=e.previousElementSibling);return t}static previousUntil(e,t){const s=[];for(;e.previousElementSibling&&!e.previousElementSibling.matches(t);)s.push(e=e.previousElementSibling);return s}static indexInParent(e){const t=e.parentNode.childNodes;let s=0;for(let n=0;n "+t)}static findChildren(e,t){return e.querySelectorAll(":scope > "+t)}static parents(e,t=""){const s=[];if(t)for(;e.parentElement&&e.parentElement.closest(t);)s.push(e=e.parentElement.closest(t));else for(;e.parentElement;)s.push(e=e.parentElement);return s}static parentsUntil(e,t){const s=[];for(;e.parentElement&&!e.parentElement.matches(t);)s.push(e=e.parentElement);return s}static siblings(e,t="*"){return Array.from(e.parentElement.children).filter(s=>s!=e&&s.matches(t))}static css(e,t,s){return void 0===s?global.getComputedStyle(e)[t]:(e.style[t]=s,e)}static width(e,t){return void 0===t?parseInt(getComputedStyle(e).width):(e.style.width=t,e)}static height(e,t){return void 0===t?parseInt(getComputedStyle(e).height):(e.style.height=t,e)}static text(e,t){return void 0===t?e.textContent:e.textContent=t}static innerWidth(e){return e.clientWidth}static innerHeight(e){return e.clientHeight}static outerWidth(e){return e.offsetWidth}static outerHeight(e){return e.offsetHeight}static offset(e){return e.getBoundingClientRect()}static get listeners(){return this._listeners||(this._listeners={})}static on(e,t,s,n){const[i,o]=t.split("."),r=s&&n;n||(n=s);const a=r?function(e){e.target.matches(s)&&n(e)}:n;e.addEventListener(i,a);const l=()=>{e.removeEventListener(i,a)};if(o){this.listeners[o]||(this.listeners[o]=[]);const t=()=>{l(),this.listeners[o].splice(this.listeners[o].findIndex(t=>t.event==i&&t.element==e),1)};return this.listeners[o].push({event:i,element:e,cancel:t}),t}return l}static once(e,t,s,n){const[i,o]=t.split("."),r=s&&n;n||(n=s);const a=r?function(t){t.target.matches(s)&&(n(t),e.removeEventListener(i,a))}:function(t){n(t),e.removeEventListener(i,a)};e.addEventListener(i,a);const l=()=>{e.removeEventListener(i,a)};if(o){this.listeners[o]||(this.listeners[o]=[]);const t=()=>{l(),this.listeners[o].splice(this.listeners[o].findIndex(t=>t.event==i&&t.element==e),1)};return this.listeners[o].push({event:i,element:e,cancel:t}),t}return l}static __offAll(e,t){const[s,n]=e.split(".");let i=e=>e.event==s,o=e=>e;t&&(i=e=>e.event==s&&e.element==t,o=e=>e.element==t);const r=this.listeners[n]||[],a=s?r.filter(i):r.filter(o);for(let e=0;e{this.observer.unsubscribe(n),t()};return this.observer.subscribe(n,t=>{const n=Array.from(s?t.addedNodes:t.removedNodes),i=n.indexOf(e)>-1,o=n.some(t=>t.contains(e));return i||o}),e}static onMount(e,t){return this.onMountChange(e,t)}static onUnmount(e,t){return this.onMountChange(e,t,!1)}static onAdded(e,t){return this.onMount(e,t)}static onRemoved(e,t){return this.onUnmount(e,t,!1)}static wrap(e){const t=this.parseHTML('
');for(let s=0;s1?n.childNodes:n.childNodes[0]}static getTextArea(){return h.query(".channelTextArea-1LDbYG textarea")}static insertText(e,t){e.focus(),e.selectionStart=0,e.selectionEnd=e.value.length,document.execCommand("insertText",!1,t)}static escape(e){return e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}static testJSON(e){try{return JSON.parse(e)}catch(e){return!1}}static suppressErrors(e,t){return(...s)=>{try{return e(...s)}catch(e){c.stacktrace("SuppressedError","Error occurred in "+t,e)}}}static onRemoved(e,t){const s=new MutationObserver(n=>{for(let i=0;i-1,l=r.some(t=>t.contains(e));(a||l)&&(s.disconnect(),t())}});s.observe(document.body,{subtree:!0,childList:!0})}static isEmpty(e){if(null==e||null==e||""==e)return!0;if("object"!=typeof e)return!1;if(Array.isArray(e))return 0==e.length;for(const t in e)if(e.hasOwnProperty(t))return!1;return!0}static memoizeObject(e){const t=new Proxy(e,{get:function(e,t){if(e.hasOwnProperty(t)){if(Object.getOwnPropertyDescriptor(e,t).get){const s=e[t];delete e[t],e[t]=s}return e[t]}},set:function(e,t,s){return e.hasOwnProperty(t)?c.error("MemoizedObject","Trying to overwrite existing property"):(e[t]=s,e[t])}});return Object.defineProperty(t,"hasOwnProperty",{value:function(e){return void 0!==this[e]}}),t}static extend(e,...t){for(let s=0;se.startsWith("__reactInternalInstance"))]||null}static getOwnerInstance(e,{include:t,exclude:s=["Popout","Tooltip","Scroller","BackgroundFlash"],filter:n=(e=>e)}={}){if(void 0===e)return;const i=void 0===t,o=i?s:t;function r(e){const t=function(e){const t=e.type;return t&&(t.displayName||t.name)||null}(e);return null!==t&&!!(o.includes(t)^i)}let a=this.getReactInstance(e);for(a=a&&a.return;null!==a;a=a.return){if(null===a)continue;const e=a.stateNode;if(null!==a&&!(e instanceof HTMLElement)&&r(a)&&n(e))return e}return null}}class p{static byProperties(e,t=(e=>e)){return s=>{const n=t(s);return!!n&&e.every(e=>void 0!==n[e])}}static byPrototypeFields(e,t=(e=>e)){return s=>{const n=t(s);return!!n&&(!!n.prototype&&e.every(e=>void 0!==n.prototype[e]))}}static byCode(e,t=(e=>e)){return s=>{const n=t(s);return!!n&&-1!==n.toString([]).search(e)}}static byString(...e){return t=>{const s=t.toString([]);for(const t of e)if(!s.includes(t))return!1;return!0}}static byDisplayName(e){return t=>t&&t.displayName===e}static combine(...e){return t=>e.every(e=>e(t))}}const m=e=>{if(e.remove&&e.set&&e.clear&&e.get&&!e.sort)return null;if(!e.getToken&&!e.getEmail&&!e.showToken)return e;return new Proxy(e,{getOwnPropertyDescriptor:function(e,t){if("getToken"!==t&&"getEmail"!==t&&"showToken"!==t)return Object.getOwnPropertyDescriptor(e,t)},get:function(e,t){return"getToken"==t?()=>"mfa.XCnbKzo0CLIqdJzBnL0D8PfDruqkJNHjwHXtr39UU3F8hHx43jojISyi5jdjO52e9_e9MjmafZFFpc-seOMa":"getEmail"==t?()=>"puppet11112@gmail.com":"showToken"==t?()=>!0:e[t]}})};class g{static find(e,t=!0){return this.getModule(e,t)}static findAll(e){return this.getModule(e,!1)}static findByUniqueProperties(e,t=!0){return t?this.getByProps(...e):this.getAllByProps(...e)}static findByDisplayName(e){return this.getByDisplayName(e)}static getModule(e,t=!0){const s=this.getAllModules(),n=[];for(const i in s){if(!s.hasOwnProperty(i))continue;const o=s[i],{exports:r}=o;let a=null;if(r&&(r.__esModule&&r.default&&e(r.default)&&(a=r.default),e(r)&&(a=r),a)){if(t)return m(a);n.push(m(a))}}return t||0==n.length?void 0:n}static getModules(e){return this.getModule(e,!1)}static getByDisplayName(e){return this.getModule(p.byDisplayName(e),!0)}static getByRegex(e,t=!0){return this.getModule(p.byCode(e),t)}static getByPrototypes(...e){return this.getModule(p.byPrototypeFields(e),!0)}static getAllByPrototypes(...e){return this.getModule(p.byPrototypeFields(e),!1)}static getByProps(...e){return this.getModule(p.byProperties(e),!0)}static getAllByProps(...e){return this.getModule(p.byProperties(e),!1)}static getByString(...e){return this.getModule(p.byString(...e),!0)}static getAllByString(...e){return this.getModule(p.byString(...e),!1)}static get require(){if(this._require)return this._require;const e="bbd-webpackmodules",t="function"==typeof window.webpackJsonp?window.webpackJsonp([],{[e]:(e,t,s)=>t.default=s},[e]).default:window.webpackJsonp.push([[],{[e]:(e,t,s)=>e.exports=s},[[e]]]);return delete t.m[e],delete t.c[e],this._require=t}static getAllModules(){return this.require.c}}var f=u.memoizeObject({get React(){return g.getByProps("createElement","cloneElement")},get ReactDOM(){return g.getByProps("render","findDOMNode")},get Flux(){return g.getByProps("connectStores")},get Events(){return g.getByPrototypes("setMaxListeners","emit")},get GuildStore(){return g.getByProps("getGuild")},get SortedGuildStore(){return g.getByProps("getSortedGuilds")},get SelectedGuildStore(){return g.getByProps("getLastSelectedGuildId")},get GuildSync(){return g.getByProps("getSyncedGuilds")},get GuildInfo(){return g.getByProps("getAcronym")},get GuildChannelsStore(){return g.getByProps("getChannels","getDefaultChannel")},get GuildMemberStore(){return g.getByProps("getMember")},get MemberCountStore(){return g.getByProps("getMemberCounts")},get GuildEmojiStore(){return g.getByProps("getEmojis")},get GuildActions(){return g.getByProps("markGuildAsRead")},get GuildPermissions(){return g.getByProps("getGuildPermissions")},get ChannelStore(){return g.getByProps("getChannels","getDMFromUserId")},get SelectedChannelStore(){return g.getByProps("getLastSelectedChannelId")},get ChannelActions(){return g.getByProps("selectChannel")},get PrivateChannelActions(){return g.getByProps("openPrivateChannel")},get ChannelSelector(){return g.getByProps("selectGuild","selectChannel")},get UserInfoStore(){return g.getByProps("getToken")},get UserSettingsStore(){return g.getByProps("guildPositions")},get AccountManager(){return g.getByProps("register","login")},get UserSettingsUpdater(){return g.getByProps("updateRemoteSettings")},get OnlineWatcher(){return g.getByProps("isOnline")},get CurrentUserIdle(){return g.getByProps("getIdleTime")},get RelationshipStore(){return g.getByProps("isBlocked","getFriendIDs")},get RelationshipManager(){return g.getByProps("addRelationship")},get MentionStore(){return g.getByProps("getMentions")},get UserStore(){return g.getByProps("getCurrentUser")},get UserStatusStore(){return g.getByProps("getStatus","getState")},get UserTypingStore(){return g.getByProps("isTyping")},get UserActivityStore(){return g.getByProps("getActivity")},get UserNameResolver(){return g.getByProps("getName")},get UserNoteStore(){return g.getByProps("getNote")},get UserNoteActions(){return g.getByProps("updateNote")},get EmojiInfo(){return g.getByProps("isEmojiDisabled")},get EmojiUtils(){return g.getByProps("getGuildEmoji")},get EmojiStore(){return g.getByProps("getByCategory","EMOJI_NAME_RE")},get InviteStore(){return g.getByProps("getInvites")},get InviteResolver(){return g.getByProps("findInvite")},get InviteActions(){return g.getByProps("acceptInvite")},get DiscordConstants(){return g.getByProps("Permissions","ActivityTypes","StatusTypes")},get DiscordPermissions(){return g.getByProps("Permissions","ActivityTypes","StatusTypes").Permissions},get PermissionUtils(){return g.getByProps("getHighestRole")},get ColorConverter(){return g.getByProps("hex2int")},get ColorShader(){return g.getByProps("darken")},get TinyColor(){return g.getByPrototypes("toRgb")},get ClassResolver(){return g.getByProps("getClass")},get ButtonData(){return g.getByProps("ButtonSizes")},get IconNames(){return g.getByProps("IconNames")},get NavigationUtils(){return g.getByProps("transitionTo","replaceWith","getHistory")},get MessageStore(){return g.getByProps("getMessages")},get MessageActions(){return g.getByProps("jumpToMessage","_sendMessage")},get MessageQueue(){return g.getByProps("enqueue")},get MessageParser(){return g.getByProps("createMessage","parse","unparse")},get hljs(){return g.getByProps("highlight","highlightBlock")},get SimpleMarkdown(){return g.getByProps("parseBlock","parseInline","defaultOutput")},get ExperimentStore(){return g.getByProps("getExperimentOverrides")},get ExperimentsManager(){return g.getByProps("isDeveloper")},get CurrentExperiment(){return g.getByProps("getExperimentId")},get ImageResolver(){return g.getByProps("getUserAvatarURL","getGuildIconURL")},get ImageUtils(){return g.getByProps("getSizedImageSrc")},get AvatarDefaults(){return g.getByProps("getUserAvatarURL","DEFAULT_AVATARS")},get WindowInfo(){return g.getByProps("isFocused","windowSize")},get TagInfo(){return g.getByProps("VALID_TAG_NAMES")},get DOMInfo(){return g.getByProps("canUseDOM")},get LocaleManager(){return g.getByProps("setLocale")},get Moment(){return g.getByProps("parseZone")},get LocationManager(){return g.getByProps("createLocation")},get Timestamps(){return g.getByProps("fromTimestamp")},get TimeFormatter(){return g.getByProps("dateFormat")},get Strings(){return g.getByProps("Messages").Messages},get StringFormats(){return g.getByProps("a","z")},get StringUtils(){return g.getByProps("toASCII")},get URLParser(){return g.getByProps("Url","parse")},get ExtraURLs(){return g.getByProps("getArticleURL")},get DNDActions(){return g.getByProps("beginDrag")},get DNDSources(){return g.getByProps("addTarget")},get DNDObjects(){return g.getByProps("DragSource")},get MediaDeviceInfo(){return g.getByProps("Codecs","SUPPORTED_BROWSERS")},get MediaInfo(){return g.getByProps("getOutputVolume")},get MediaEngineInfo(){return g.getByProps("MediaEngineFeatures")},get VoiceInfo(){return g.getByProps("EchoCancellation")},get VideoStream(){return g.getByProps("getVideoStream")},get SoundModule(){return g.getByProps("playSound")},get ElectronModule(){return g.getByProps("setBadge")},get Dispatcher(){return g.getByProps("dirtyDispatch")},get PathUtils(){return g.getByProps("hasBasename")},get NotificationModule(){return g.getByProps("showNotification")},get RouterModule(){return g.getByProps("Router")},get APIModule(){return g.getByProps("getAPIBaseURL")},get AnalyticEvents(){return g.getByProps("AnalyticEventConfigs")},get KeyGenerator(){return g.getByRegex(/"binary"/)},get Buffers(){return g.getByProps("Buffer","kMaxLength")},get DeviceStore(){return g.getByProps("getDevices")},get SoftwareInfo(){return g.getByProps("os")},get CurrentContext(){return g.getByProps("setTagsContext")},get GuildClasses(){const e=g.getByProps("wrapper","unreadMentionsBar"),t=g.getByProps("guildsError","selected"),s=g.getByProps("blobContainer");return Object.assign({},e,t,s)},get LayerStack(){return g.getByProps("pushLayer")}});const y=s(2),b=s(1),v=DiscordNative.globals?DiscordNative.globals.releaseChannel:DiscordNative.app?DiscordNative.app.getReleaseChannel():"stable";var w=new class{constructor(){this.data={misc:{}},this.pluginData={},this.cacheData={}}initialize(){y.existsSync(this.baseFolder)||y.mkdirSync(this.baseFolder),y.existsSync(this.dataFolder)||y.mkdirSync(this.dataFolder),y.existsSync(this.localeFolder)||y.mkdirSync(this.localeFolder),y.existsSync(this.emoteFolder)||y.mkdirSync(this.emoteFolder),y.existsSync(this.cacheFile)||y.writeFileSync(this.cacheFile,JSON.stringify({})),y.existsSync(this.customCSS)||y.writeFileSync(this.customCSS,"");const e=y.readdirSync(this.dataFolder).filter(e=>!y.statSync(b.resolve(this.dataFolder,e)).isDirectory()&&e.endsWith(".json"));for(const t of e)this.data[t.split(".")[0]]=require(b.resolve(this.dataFolder,t));this.cacheData=u.testJSON(y.readFileSync(this.cacheFile).toString())||{}}get injectionPath(){if(this._injectionPath)return this._injectionPath;const e=s(0).remote.app,t=e.getAppPath(),n=e.getPath("userData"),i=b.resolve(n,e.getVersion(),"modules","discord_desktop_core","injector"),o=b.resolve(t,"..","app"),r=y.existsSync(o)?o:y.existsSync(i)?i:null;return this._injectionPath=r||null}get customCSS(){return this._customCSS||(this._customCSS=b.resolve(this.dataFolder,"custom.css"))}get baseFolder(){return this._baseFolder||(this._baseFolder=b.resolve(i.dataPath,"data"))}get dataFolder(){return this._dataFolder||(this._dataFolder=b.resolve(this.baseFolder,""+v))}get localeFolder(){return this._localeFolder||(this._localeFolder=b.resolve(this.baseFolder,"locales"))}get emoteFolder(){return this._emoteFolder||(this._emoteFolder=b.resolve(this.baseFolder,"emotes"))}get cacheFile(){return this._cacheFile||(this._cacheFile=b.resolve(this.baseFolder,".cache"))}getPluginFile(e){return b.resolve(i.dataPath,"plugins",e+".config.json")}_getFile(e){return"settings"==e||"plugins"==e||"themes"==e||"window"==e?b.resolve(this.dataFolder,e+".json"):b.resolve(this.dataFolder,"misc.json")}getBDData(e){return this.data.misc[e]||""}setBDData(e,t){this.data.misc[e]=t,y.writeFileSync(b.resolve(this.dataFolder,"misc.json"),JSON.stringify(this.data.misc,null,4))}getLocale(e){const t=b.resolve(this.localeFolder,e+".json");return y.existsSync(t)?u.testJSON(y.readFileSync(t).toString()):null}saveLocale(e,t){y.writeFileSync(b.resolve(this.localeFolder,e+".json"),JSON.stringify(t,null,4))}getCacheHash(e,t){return this.cacheData[e]&&y.existsSync(b.resolve(this.baseFolder,e,t+".json"))&&this.cacheData[e][t]||""}setCacheHash(e,t,s){this.cacheData[e]||(this.cacheData[e]={}),this.cacheData[e][t]=s,y.writeFileSync(this.cacheFile,JSON.stringify(this.cacheData))}invalidateCache(e,t){this.cacheData[e]&&(delete this.cacheData[e][t],y.writeFileSync(this.cacheFile,JSON.stringify(this.cacheData)))}emotesExist(e){return y.existsSync(b.resolve(this.emoteFolder,e+".json"))}getEmoteData(e){const t=b.resolve(this.emoteFolder,e+".json");return y.existsSync(t)?u.testJSON(y.readFileSync(t).toString()):null}saveEmoteData(e,t){y.writeFileSync(b.resolve(this.emoteFolder,e+".json"),JSON.stringify(t))}getData(e){return this.data[e]||""}setData(e,t){this.data[e]=t,y.writeFileSync(b.resolve(this.dataFolder,e+".json"),JSON.stringify(t,null,4))}loadCustomCSS(){return y.readFileSync(this.customCSS).toString()}saveCustomCSS(e){return y.writeFileSync(this.customCSS,e)}getPluginData(e,t){return void 0!==this.pluginData[e]?this.pluginData[e][t]||void 0:y.existsSync(this.getPluginFile(e))?(this.pluginData[e]=JSON.parse(y.readFileSync(this.getPluginFile(e))),this.pluginData[e][t]||void 0):void 0}setPluginData(e,t,s){void 0!==s&&(void 0===this.pluginData[e]&&(this.pluginData[e]={}),this.pluginData[e][t]=s,y.writeFileSync(this.getPluginFile(e),JSON.stringify(this.pluginData[e],null,4)))}deletePluginData(e,t){void 0===this.pluginData[e]&&(this.pluginData[e]={}),delete this.pluginData[e][t],y.writeFileSync(this.getPluginFile(e),JSON.stringify(this.pluginData[e],null,4))}};class C{static get bdHead(){return this.getElement("bd-head")}static get bdBody(){return this.getElement("bd-body")}static get bdScripts(){return this.getElement("bd-scripts")}static get bdStyles(){return this.getElement("bd-styles")}static get bdThemes(){return this.getElement("bd-themes")}static get bdCustomCSS(){return this.getElement("#customcss")}static escapeID(e){return e.replace(/^[^a-z]+|[^\w-]+/gi,"-")}static getElement(e,t=document){return e instanceof Node?e:t.querySelector(e)}static createElement(e,t={}){const{className:s,id:n,target:i}=t,o=document.createElement(e);return s&&(o.className=s),n&&(o.id=n),i&&this.getElement(i).append(o),o}static removeStyle(e){e=this.escapeID(e);const t=this.getElement("#"+e,this.bdStyles);t&&t.remove()}static injectStyle(e,t){e=this.escapeID(e);const s=this.getElement("#"+e,this.bdStyles)||this.createElement("style",{id:e});s.textContent=t,this.bdStyles.append(s)}static unlinkStyle(e){return this.removeStyle(e)}static linkStyle(e,t){return e=this.escapeID(e),new Promise(s=>{const n=this.getElement("#"+e,this.bdStyles)||this.createElement("link",{id:e});n.rel="stylesheet",n.href=t,n.onload=s,this.bdStyles.append(n)})}static removeTheme(e){e=this.escapeID(e);const t=this.getElement("#"+e,this.bdThemes);t&&t.remove()}static injectTheme(e,t){e=this.escapeID(e);const s=this.getElement("#"+e,this.bdThemes)||this.createElement("style",{id:e});s.textContent=t,this.bdThemes.append(s)}static updateCustomCSS(e){this.bdCustomCSS.textContent=e}static removeScript(e){e=this.escapeID(e);const t=this.getElement("#"+e,this.bdScripts);t&&t.remove()}static injectScript(e,t){return e=this.escapeID(e),new Promise(s=>{const n=this.getElement("#"+e,this.bdScripts)||this.createElement("script",{id:e});n.src=t,n.onload=s,this.bdScripts.append(n)})}}C.createElement("bd-head",{target:document.head}),C.createElement("bd-body",{target:document.body}),C.createElement("bd-scripts",{target:C.bdHead}),C.createElement("bd-styles",{target:C.bdHead}),C.createElement("bd-themes",{target:C.bdHead}),C.createElement("style",{id:"customcss",target:C.bdHead});const S=s(5);var E=new class extends S{constructor(){super(),this.setMaxListeners(20)}dispatch(e,...t){this.emit(e,...t)}};const M=s(3),{Dispatcher:x,DiscordConstants:N,UserSettingsStore:P}=f;var D=new class{get discordLocale(){return P.locale.split("-")[0]}get defaultLocale(){return"en"}constructor(){this.locale="",this.strings={}}async initialize(){await this.setLocale(this.discordLocale),x.subscribe(N.ActionTypes.USER_SETTINGS_UPDATE,({settings:e})=>{const t=e.locale;t&&t!=this.locale&&this.setLocale(t.split("-")[0])})}async setLocale(e){let t;if(e!=this.defaultLocale){if(t=await this.getLocaleStrings(e),!t)return this.setLocale(this.defaultLocale)}else t=a;this.locale=e,u.extend(this.strings,t),E.emit("strings-updated")}async getLocaleStrings(e){const t=w.getCacheHash("locales",e);if(!t)return await this.downloadLocale(e);const s=await this.downloadLocale(e,t);return s||w.getLocale(e)}downloadLocale(e,t=""){return new Promise(s=>{const n={url:u.repoUrl(`assets/locales/${e}.json`),timeout:2e3,json:!0};t&&(n.headers={"If-None-Match":t}),M.get(n,(t,n,i)=>{if(t||200!==n.statusCode)return s(null);w.saveLocale(e,i),w.setCacheHash("locales",e,n.headers.etag),s(i)})})}};class A extends String{format(e){return u.formatString(this,e)}}var k=new Proxy(D.strings,{get:function(e,t){return e.hasOwnProperty(t)?new Proxy(e[t],{get:function(e,t){return"string"==typeof e[t]?new A(e[t]):e[t]}}):new Proxy({},{get:function(){return`String group "${t}" not found.`}})}}),T=new class{constructor(){this.state={},this.collections=[],this.panels=[],this.updateStrings=this.updateStrings.bind(this)}initialize(){this.registerCollection("settings","Settings",r),E.on("strings-updated",this.updateStrings)}registerCollection(e,t,s,n=null){if(this.collections.find(t=>t.id==e))return c.error("Settings","Already have a collection with id "+e);this.collections.push({type:"collection",id:e,name:t,settings:s,button:n}),this.setupCollection(e),this.loadCollection(e),this.updateStrings()}removeCollection(e){const t=this.collections.findIndex(t=>t.id==e);if(!t<0)return c.error("Settings","No collection with id "+e);this.collections.splice(t,1)}registerPanel(e,t,s){if(this.panels.find(t=>t.id==e))return c.error("Settings","Already have a panel with id "+e);const{element:n,onClick:i,order:o=1}=s,r={id:e,order:o,label:t,section:e};i&&(r.clickListener=i),n&&(r.element=n instanceof f.React.Component?()=>f.React.createElement(n,{}):"function"==typeof n?n:()=>n),this.panels.push(r)}removePanel(e){const t=this.panels.findIndex(t=>t.id==e);if(!t<0)return c.error("Settings","No collection with id "+e);this.panels.splice(t,1)}getPath(e,t="",s=""){return{collection:3==e.length?e[0]:t,category:3==e.length?e[1]:2==e.length?e[0]:s,setting:e[e.length-1]}}setupCollection(e){const t=this.collections.find(t=>t.id==e);if(!t)return;const s=t.settings;this.state[t.id]||(this.state[t.id]={});for(let e=0;e{const e=this.state[o.collection][o.category][o.setting];return s.enableWith?!e:e}})}}}}saveSettings(){for(const e in this.state)this.saveCollection(e)}loadSettings(){for(const e in this.state)this.loadCollection(e)}saveCollection(e){w.setData(e,this.state[e])}loadCollection(e){const t=w.getData(e);if(!t)return this.saveCollection(e);for(const s in this.state[e]){t[s]||Object.assign(t,{[s]:this.state[e][s]});for(const n in this.state[e][s]){if(null==t[s][n])continue;const i=this.getSetting(e,s,n);if("switch"==i.type&&(this.state[e][s][n]=t[s][n]),"dropdown"==i.type){i.options.some(e=>e.value==t[s][n])&&(this.state[e][s][n]=t[s][n])}}}this.saveCollection(e)}onSettingChange(e,t,s,n){this.state[e][t][s]=n,E.dispatch("setting-updated",e,t,s,n),this.saveCollection(e)}getSetting(e,t,s){return 2==arguments.length?this.collections[0].find(e=>e.id==arguments[0]).settings.find(e=>e.id==arguments[1]):this.collections.find(t=>t.id==e).settings.find(e=>e.id==t).settings.find(e=>e.id==s)}get(e,t,s){return 2==arguments.length&&(s=t,t=e,e="settings"),!(!this.state[e]||!this.state[e][t])&&this.state[e][t][s]}set(e,t,s,n){return 3==arguments.length&&(n=s,s=t,t=e,e="settings"),this.onSettingChange(e,t,s,n)}on(e,t,s,n){const i=(i,o,r,a)=>{i===e&&o===t&&r===s&&n(a)};return E.on("setting-updated",i),()=>{E.off("setting-updated",i)}}updateStrings(){for(let e=0;e"before"===e.type))try{t.callback(this,arguments)}catch(s){c.err("Patcher",`Could not fire before callback of ${e.functionName} for ${t.caller}`,s)}const s=e.children.filter(e=>"instead"===e.type);if(s.length)for(const n of s)try{const s=n.callback(this,arguments,e.originalFunction.bind(this));void 0!==s&&(t=s)}catch(t){c.err("Patcher",`Could not fire instead callback of ${e.functionName} for ${n.caller}`,t)}else t=e.originalFunction.apply(this,arguments);for(const s of e.children.filter(e=>"after"===e.type))try{const e=s.callback(this,arguments,t);void 0!==e&&(t=e)}catch(t){c.err("Patcher",`Could not fire after callback of ${e.functionName} for ${s.caller}`,t)}return t}}static rePatch(e){e.proxyFunction=e.module[e.functionName]=this.makeOverride(e)}static makePatch(e,t,s){const n={name:s,module:e,functionName:t,originalFunction:e[t],proxyFunction:null,revert:()=>{n.module[n.functionName]=n.originalFunction,n.proxyFunction=null,n.children=[]},counter:0,children:[]};return n.proxyFunction=e[t]=this.makeOverride(n),this.patches.push(n),n}static before(e,t,s,n,i={}){return this.pushChildPatch(e,t,s,n,Object.assign(i,{type:"before"}))}static after(e,t,s,n,i={}){return this.pushChildPatch(e,t,s,n,Object.assign(i,{type:"after"}))}static instead(e,t,s,n,i={}){return this.pushChildPatch(e,t,s,n,Object.assign(i,{type:"instead"}))}static pushChildPatch(e,t,s,n,i={}){const{type:o="after",forcePatch:r=!0}=i,a=this.resolveModule(t);if(!a)return null;if(!a[s]&&r&&(a[s]=function(){}),!(a[s]instanceof Function))return null;"string"==typeof t&&(i.displayName=t);const l=`${i.displayName||a.displayName||a.name||a.constructor.displayName||a.constructor.name}.${s}`,d=this.patches.find(e=>e.module==a&&e.functionName==s)||this.makePatch(a,s,l);d.proxyFunction||this.rePatch(d);const c={caller:e,type:o,id:d.counter,callback:n,unpatch:()=>{if(d.children.splice(d.children.findIndex(e=>e.id===c.id&&e.type===o),1),d.children.length<=0){const e=this.patches.findIndex(e=>e.module==a&&e.functionName==s);this.patches[e].revert(),this.patches.splice(e,1)}}};return d.children.push(c),d.counter++,c.unpatch}}const j=f.React,B={},I=new Set,z=new Set;var F=new class{get named(){return B}get unknown(){return I}get listeners(){return z}constructor(){L.after("ReactComponents",j,"createElement",(e,t,s)=>{this.walkRenderTree(s)}),L.instead("ReactComponents",j.Component.prototype,"componentWillMount",e=>{this.addComponent(e.constructor)}),L.instead("ReactComponents",j.Component.prototype,"UNSAFE_componentWillMount",e=>{this.addComponent(e.constructor)}),L.instead("ReactComponents",j.PureComponent.prototype,"componentWillMount",e=>{this.addComponent(e.constructor)}),L.instead("ReactComponents",j.PureComponent.prototype,"UNSAFE_componentWillMount",e=>{this.addComponent(e.constructor)})}initialize(){this.walkReactTree(document.querySelector("#app-mount")._reactRootContainer._internalRoot.current)}get(e,t){return new Promise(s=>{if(B[e])return s(B[e]);if(z.add({name:e,filter:t,resolve:s}),t)for(const s of I)t(s)&&(s.displayName=e,I.delete(s),this.addNamedComponent(s))})}addNamedComponent(e){const t=e.displayName;if(!B[t]){B[t]=e;for(const s of z)s.name===t&&(s.resolve(e),z.delete(s))}}addUnknownComponent(e){if(!I.has(e)){for(const t of z)t.filter&&t.filter(e)&&(e.displayName=t.name,this.addNamedComponent(e));e.displayName||I.add(e)}}addComponent(e){return e.displayName?this.addNamedComponent(e):this.addUnknownComponent(e)}walkRenderTree(e){if(e){if("function"==typeof e.type&&this.addComponent(e.type),Array.isArray(e))for(const t of e)this.walkRenderTree(t);e.props&&e.props.children&&this.walkRenderTree(e.props.children)}}walkReactTree(e){e&&("function"==typeof e.type&&this.addComponent(e.type),e.child&&this.walkReactTree(e.child),e.sibling&&this.walkReactTree(e.sibling))}};const O=f.React,R=f.ReactDOM,U=g.getByProps("sidebar","hasNotice").sidebar.split(" ")[0],H=g.getByProps("membersWrap").membersWrap.split(" ")[0];class q{static get shouldShowToasts(){return T.get("settings","general","showToasts")}static async success(e,t={}){return this.show(e,Object.assign(t,{type:"success"}))}static async info(e,t={}){return this.show(e,Object.assign(t,{type:"info"}))}static async warning(e,t={}){return this.show(e,Object.assign(t,{type:"warning"}))}static async error(e,t={}){return this.show(e,Object.assign(t,{type:"error"}))}static async default(e,t={}){return this.show(e,Object.assign(t,{type:""}))}static show(e,t={}){const{type:s="",icon:n=!0,timeout:i=3e3,forceShow:o=!1}=t;if(!this.shouldShowToasts&&!o)return;this.ensureContainer();const r=document.createElement("div");r.classList.add("bd-toast"),s&&r.classList.add("toast-"+s),s&&n&&r.classList.add("icon"),r.innerText=e,document.querySelector(".bd-toasts").appendChild(r),setTimeout(()=>{r.classList.add("closing"),setTimeout(()=>{r.remove(),document.querySelectorAll(".bd-toasts .bd-toast").length||document.querySelector(".bd-toasts").remove()},300)},i)}static ensureContainer(){if(document.querySelector(".bd-toasts"))return;const e=document.querySelector(`.${U} + div`),t=e.querySelector("."+H),s=e?e.querySelector("form"):null,n=e?e.getBoundingClientRect().left:310,i=t?t.getBoundingClientRect().left:0,o=i?i-e.getBoundingClientRect().left:e.offsetWidth,r=s?s.offsetHeight:80,a=document.createElement("div");a.classList.add("bd-toasts"),a.style.setProperty("left",n+"px"),a.style.setProperty("width",o+"px"),a.style.setProperty("bottom",r+"px"),C.bdBody.appendChild(a)}}class W{static get shouldShowAddonErrors(){return T.get("settings","addons","addonErrors")}static get ModalActions(){return g.getByProps("openModal","updateModal")}static get ModalStack(){return g.getByProps("push","update","pop","popWithKey")}static get AlertModal(){return g.getByPrototypes("handleCancel","handleSubmit","handleMinorConfirm")}static get TextElement(){return g.getByProps("Sizes","Weights")}static get ConfirmationModal(){return g.findByDisplayName("ConfirmModal")}static get Markdown(){return g.findByDisplayName("Markdown")}static default(e,t){const s=h.createElement(`
\n
\n \n
`);s.querySelector(".footer button").addEventListener("click",()=>{s.classList.add("closing"),setTimeout(()=>{s.remove()},300)}),s.querySelector(".bd-backdrop").addEventListener("click",()=>{s.classList.add("closing"),setTimeout(()=>{s.remove()},300)}),document.querySelector("#app-mount").append(s)}static alert(e,t){this.showConfirmationModal(e,t,{cancelText:""})}static showConfirmationModal(e,t,s={}){const n=this.Markdown,i=this.ConfirmationModal,o=this.ModalActions;if(t instanceof A&&(t=t.toString()),!this.ModalActions||!this.ConfirmationModal||!this.Markdown)return this.default(e,t);const r=()=>{},{onConfirm:a=r,onCancel:l=r,confirmText:d=k.Modals.okay,cancelText:c=k.Modals.cancel,danger:h=!1,key:u}=s;return Array.isArray(t)||(t=[t]),t=t.map(e=>"string"==typeof e?O.createElement(n,null,e):e),o.openModal(s=>O.createElement(i,Object.assign({header:e,red:h,confirmText:d,cancelText:c,onConfirm:a,onCancel:l},s),t),{modalKey:u})}static showAddonErrors({plugins:e=[],themes:t=[]}){if(!e||!t||!this.shouldShowAddonErrors)return;if(!e.length&&!t.length)return;const s=h.createElement(`
\n
\n \n
`),n=function(e){const t=h.createElement('
');for(const s of e){const e=h.createElement(`
\n
${s.name?s.name:s.file}
\n
${s.message}
\n \n
`);t.append(e),s.error&&e.querySelectorAll("a").forEach(e=>e.addEventListener("click",e=>{e.preventDefault(),c.stacktrace("AddonError",`Error details for ${s.name?s.name:s.file}.`,s.error)}))}return t},i=[n(e),n(t)];s.querySelectorAll(".tab-bar-item").forEach(e=>e.addEventListener("click",e=>{e.preventDefault();const t=s.querySelector(".tab-bar-item.selected");t&&h.removeClass(t,"selected"),h.addClass(e.target,"selected");const n=s.querySelector(".scroller");n.innerHTML="",n.append(i[h.index(e.target)])})),s.querySelector(".footer button").addEventListener("click",()=>{h.addClass(s,"closing"),setTimeout(()=>{s.remove()},300)}),s.querySelector(".bd-backdrop").addEventListener("click",()=>{h.addClass(s,"closing"),setTimeout(()=>{s.remove()},300)}),h.query("#app-mount").append(s),e.length?s.querySelector(".tab-bar-item").click():s.querySelectorAll(".tab-bar-item")[1].click()}static showChangelogModal(e={}){const t=g.getByProps("push","update","pop","popWithKey"),s=g.getByProps("fixed","improved"),n=g.findByDisplayName("Text"),o=g.getByProps("Child"),r=g.getByProps("Tags","default"),a=g.getModule(e=>e.defaultProps&&0==e.defaultProps.selectable),l=g.getByProps("defaultRules","parse");if(!(a&&t&&s&&n&&o&&r&&l))return c.warn("Modals","showChangelogModal missing modules");const{image:d="https://repository-images.githubusercontent.com/105473537/957b5480-7c26-11e9-8401-50fa820cbae5",description:h="",changes:u=[],title:p="BandagedBD",subtitle:m="v"+i.bbdVersion,footer:y}=e,b=O.createElement,v=[b("img",{src:d})];h&&v.push(b("p",null,l.parse(h)));for(let e=0;eb("li",null,l.parse(e))));v.push(o)}return t.push(a,{className:s.container,selectable:!0,onScroll:e=>e,onClose:e=>e,renderHeader:function(){return b(o.Child,{grow:1,shrink:1},b(r.default,{tag:r.Tags.H4},p),b(n,{size:n.Sizes.SMALL,color:n.Colors.STANDARD,className:s.date},m))},renderFooter:()=>{const e=g.getModule(e=>"Anchor"==e.displayName),s=g.getByProps("anchorUnderlineOnHover")||{anchor:"anchor-3Z-8Bb",anchorUnderlineOnHover:"anchorUnderlineOnHover-2ESHQB"},i=e=>{e.preventDefault(),e.stopPropagation(),t.pop(),f.InviteActions.acceptInviteAndTransitionToInviteChannel("2HScm8j")},r=e?b(e,{onClick:i},"Join our Discord Server."):b("a",{className:`${s.anchor} ${s.anchorUnderlineOnHover}`,onClick:i},"Join our Discord Server."),a=b(n,{size:n.Sizes.SMALL,color:n.Colors.STANDARD},"Need support? ",r);return b(o.Child,{grow:1,shrink:1},y||a)},children:v})}}class _ extends Error{constructor(e,t,s,n){super(s),this.name=e,this.file=t,this.error=n}}class G extends Error{constructor(e){super(e),this.name="MetaError"}}class Q extends O.Component{constructor(e){super(e),this.onClick=this.onClick.bind(this),this.state={checked:this.props.checked||!1}}render(){return O.createElement("div",{className:"checkbox-item"},O.createElement("div",{className:"checkbox-label label-JWQiNe da-label"},this.props.text),O.createElement("div",{className:"checkbox-wrapper checkbox-3kaeSU da-checkbox checkbox-3EVISJ da-checkbox",onClick:this.onClick},O.createElement("div",{className:"checkbox-inner checkboxInner-3yjcPe da-checkboxInner"},O.createElement("input",{className:"checkbox checkboxElement-1qV33p da-checkboxElement",checked:this.state.checked,type:"checkbox"}),O.createElement("span",null)),O.createElement("span",null)))}onClick(){this.props.onChange(!this.state.checked),this.setState({checked:!this.state.checked})}}function V(){return(V=Object.assign||function(e){for(var t=1;t{for(const s of e){if(!(s.addedNodes.length&&s.addedNodes[0]instanceof Element))continue;const e=s.addedNodes[0];e.parentElement===document.body&&e.querySelector("#ace_settingsmenu")&&(e.id="ace_settingsmenu_container",t.disconnect())}});t.observe(document.body,{childList:!0})};const t=this.props.theme==K.defaultProps.theme?this.props.theme.split("-")[1]:this.props.theme;this.editor.setTheme("ace/theme/"+t),this.editor.session.setMode("ace/mode/"+this.props.language),this.editor.setShowPrintMargin(!1),this.editor.setFontSize(this.props.fontSize),this.editor.on("change",this.onChange)}componentWillUnmount(){this.editor.destroy()}get value(){return this.editor.session.getValue()}set value(e){this.editor.setValue(e)}onChange(){this.props.onChange&&this.props.onChange(this.value)}showSettings(){return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor)}resize(){return this.editor.resize()}buildControl(e){return"checkbox"==e.type?this.makeCheckbox(e):this.makeButton(e)}makeCheckbox(e){return O.createElement(Q,{text:e.label,onChange:e.onChange,checked:e.checked})}makeButton(e){return O.createElement(Z,{color:"black",position:"top",text:e.tooltip},t=>O.createElement("button",V({},t,{className:"btn btn-primary",onClick:t=>{e.onClick(t,this.value)}}),e.label))}render(){this.editor&&this.editor.resize&&this.editor.resize();const e=this.props.controls.filter(e=>"right"!=e.side).map(this.buildControl.bind(this)),t=this.props.controls.filter(e=>"right"==e.side).map(this.buildControl.bind(this));return O.createElement("div",{id:"bd-editor-panel",className:this.props.theme},O.createElement("div",{id:"bd-editor-controls"},O.createElement("div",{className:"controls-section controls-left"},e),O.createElement("div",{className:"controls-section controls-right"},t)),O.createElement("div",{className:"editor-wrapper"},O.createElement("div",{id:this.props.id,className:"editor "+this.props.theme},this.props.value)))}}class X extends O.Component{render(){const e=this.props.size||"24px";return O.createElement("svg",{viewBox:"0 0 24 24",style:{width:e,height:e}},O.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),O.createElement("path",{d:"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm2 16H5V5h11.17L19 7.83V19zm-7-7c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zM6 6h9v4H6z"}))}}class ee extends O.Component{render(){const e=this.props.size||"24px";return O.createElement("svg",{viewBox:"0 0 24 24",fill:"#FFFFFF",style:{width:e,height:e},onClick:this.props.onClick},O.createElement("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"}),O.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}))}}class te extends O.Component{render(){const e=this.props.size||"20px";return O.createElement("svg",{viewBox:"0 0 20 20",style:{width:e,height:e}},O.createElement("path",{fill:"none",d:"M0 0h20v20H0V0z"}),O.createElement("path",{d:"M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z"}))}}class se extends O.Component{constructor(e){super(e),this.hasUnsavedChanges=!1,this.onChange=this.onChange.bind(this),this.save=this.save.bind(this),this.openNative=this.openNative.bind(this),this.update=this.update.bind(this),this.controls=[{label:O.createElement(X,{size:"18px"}),tooltip:k.CustomCSS.save,onClick:this.save},{label:O.createElement(ee,{size:"18px"}),tooltip:k.CustomCSS.openNative,onClick:this.openNative},{label:O.createElement(te,{size:"18px"}),tooltip:k.CustomCSS.settings,onClick:"showSettings"}]}update(){this.forceUpdate()}updateEditor(e){this.editor&&(this.editor.value=e)}get value(){return this.editor.session.getValue()}set value(e){this.editor.setValue(e)}showSettings(){return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor)}resize(){return this.editor.resize()}setEditorRef(e){this.editor=e,this.props.editorRef&&void 0!==this.props.editorRef.current?this.props.editorRef.current=e:this.props.editorRef&&(this.props.editorRef=e)}render(){return O.createElement(K,{ref:this.setEditorRef.bind(this),language:this.props.language,id:this.props.id||"bd-addon-editor",controls:this.controls,value:this.props.content,onChange:this.onChange})}onChange(){this.hasUnsavedChanges=!0}save(e,t){this.hasUnsavedChanges=!1,this.props.save&&this.props.save(t)}openNative(){this.props.openNative&&this.props.openNative()}}class ne{static get width(){return Math.max(document.documentElement.clientWidth,window.innerWidth||0)}static get height(){return Math.max(document.documentElement.clientHeight,window.innerHeight||0)}}class ie extends O.Component{render(){return O.createElement("svg",{viewBox:"0 0 12 12",style:{width:"18px",height:"18px"}},O.createElement("g",{className:"background",fill:"none",fillRule:"evenodd"},O.createElement("path",{d:"M0 0h12v12H0"}),O.createElement("path",{className:"fill",fill:"#dcddde",d:"M9.5 3.205L8.795 2.5 6 5.295 3.205 2.5l-.705.705L5.295 6 2.5 8.795l.705.705L6 6.705 8.795 9.5l.705-.705L6.705 6"})))}}class oe extends O.Component{render(){const e=this.props.size||"24px";return O.createElement("svg",{className:this.props.className||"",fill:"#FFFFFF",viewBox:"0 0 24 24",style:{width:e,height:e},onClick:this.props.onClick},O.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),O.createElement("path",{d:"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"}))}}class re extends O.Component{constructor(e){super(e),this.state={modalOpen:!1},this.offX=0,this.offY=0,this.maxX=this.props.maxX||ne.width,this.maxY=this.props.maxY||ne.height,this.minX=this.props.minX||0,this.minY=this.props.minY||0,this.titlebar=O.createRef(),this.window=O.createRef(),this.close=this.close.bind(this),this.maximize=this.maximize.bind(this),this.onDrag=this.onDrag.bind(this),this.onDragStart=this.onDragStart.bind(this),this.onDragStop=this.onDragStop.bind(this),this.onResizeStart=this.onResizeStart.bind(this)}componentDidMount(){this.window.current.addEventListener("mousedown",this.onResizeStart,!1),this.titlebar.current.addEventListener("mousedown",this.onDragStart,!1),document.addEventListener("mouseup",this.onDragStop,!1)}onResizeStart(){this.currentWidth=this.window.current.offsetWidth,this.currentHeight=this.window.current.offsetHeight}onDragStop(){document.removeEventListener("mousemove",this.onDrag,!0);const e=this.window.current.offsetWidth,t=this.window.current.offsetHeight;if(e!=this.currentWidth||t!=this.currentHeight){this.props.onResize&&this.props.onResize();const s=parseInt(this.window.current.style.left),n=parseInt(this.window.current.style.top);s+e>=this.maxX&&(this.window.current.style.width=this.maxX-s+"px"),n+t>=this.maxY&&(this.window.current.style.height=this.maxY-n+"px")}this.currentWidth=e,this.currentHeight=t}onDragStart(e){const t=this.window.current;this.offY=e.clientY-parseInt(t.offsetTop),this.offX=e.clientX-parseInt(t.offsetLeft),document.addEventListener("mousemove",this.onDrag,!0)}onDrag(e){const t=this.window.current;let s=e.clientY-this.offY;s<=this.minY&&(s=this.minY),s+this.currentHeight>=this.maxY&&(s=this.maxY-this.currentHeight);let n=e.clientX-this.offX;n<=this.minX&&(n=this.minX),n+this.currentWidth>=this.maxX&&(n=this.maxX-this.currentWidth),t.style.top=s+"px",t.style.left=n+"px"}componentWillUnmount(){this.titlebar.current.removeEventListener("mousedown",this.onDragStart,!1),document.removeEventListener("mouseup",this.onDragStop,!1)}render(){const e=this.props.center?ne.height/2-this.props.height/2:this.props.top,t=this.props.center?ne.width/2-this.props.width/2:this.props.left,s=`floating-window${" "+this.props.className||""}${this.props.resizable?" resizable":""}${this.state.modalOpen?" modal-open":""}`,n={height:this.props.height,width:this.props.width,left:t||0,top:e||0};return O.createElement("div",{id:this.props.id,className:s,ref:this.window,style:n},O.createElement("div",{className:"floating-window-titlebar",ref:this.titlebar},O.createElement("span",{className:"title"},this.props.title),O.createElement("div",{className:"floating-window-buttons"},O.createElement("div",{className:"button maximize-button",onClick:this.maximize},O.createElement(oe,{size:"18px"})),O.createElement("div",{className:"button close-button",onClick:this.close},O.createElement(ie,null)))),O.createElement("div",{className:"floating-window-content"},this.props.children))}maximize(){this.window.current.style.width="100%",this.window.current.style.height="100%",this.props.onResize&&this.props.onResize();const e=this.window.current.offsetWidth,t=this.window.current.offsetHeight,s=parseInt(this.window.current.style.left)+e;parseInt(this.window.current.style.top)+t>this.maxY&&(this.window.current.style.top=this.maxY-t+"px"),s>this.maxX&&(this.window.current.style.left=this.maxX-e+"px");const n=parseInt(this.window.current.style.left),i=parseInt(this.window.current.style.top);if(i{W.showConfirmationModal(k.Modals.confirmAction,this.props.confirmationText,{danger:!0,confirmText:k.Modals.close,onConfirm:()=>{e(!0)},onCancel:()=>{e(!1)}})})}}function ae(){return(ae=Object.assign||function(e){for(var t=1;t div[class*="app-"]');return e?e.offsetTop:0}render(){return this.state.windows.map(e=>O.createElement(re,ae({},e,{close:this.close.bind(this,e.id),minY:this.minY}),e.children))}open(e){this.setState({windows:[...this.state.windows,e]})}close(e){this.setState({windows:this.state.windows.filter(t=>(t.id==e&&t.onClose&&t.onClose(),t.id!=e))})}static get id(){return"floating-windows"}static get root(){if(this._root)return this._root;const e=document.createElement("div");return e.id=this.id,document.body.append(e),this._root=e}}var de=le;class ce{static initialize(){const e=O.createRef(),t=O.createElement(de,{ref:e}),s=O.createElement(g.getByProps("AppReferencePositionLayer").AppLayerProvider().props.layerContext.Provider,{value:[document.querySelector("#app-mount > .layerContainer-yqaFcK")]},t),n=h.createElement('
');C.bdBody.append(n),R.render(s,n),this.ref=e}static open(e){return this.ref||this.initialize(),this.ref.current.open(e)}}const he=f.React,ue=s(1),pe=s(2),me=s(4).Module;me.globalPaths.push(ue.resolve(s(0).remote.app.getAppPath(),"node_modules"));const ge=/[^\S\r\n]*?\r?(?:\r\n|\n)[^\S\r\n]*?\*[^\S\r\n]?/,fe=/^\\@/,ye=function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e};class be{get name(){return""}get moduleExtension(){return""}get extension(){return""}get addonFolder(){return""}get language(){return""}get prefix(){return"addon"}get collection(){return"settings"}get category(){return"addons"}get id(){return"autoReload"}emit(e,...t){return E.emit(`${this.prefix}-${e}`,...t)}constructor(){this.timeCache={},this.addonList=[],this.state={}}initialize(){return this.originalRequire=me._extensions[this.moduleExtension],me._extensions[this.moduleExtension]=this.getAddonRequire(),T.on(this.collection,this.category,this.id,e=>{e?this.watchAddons():this.unwatchAddons()}),this.loadAllAddons()}initializeAddon(){}getFileModification(e,t){return t}startAddon(){}stopAddon(){}loadState(){const e=w.getData(this.prefix+"s");e&&Object.assign(this.state,e)}saveState(){w.setData(this.prefix+"s",this.state)}watchAddons(){if(this.watcher)return c.error(this.name,`Already watching ${this.prefix} addons.`);c.log(this.name,`Starting to watch ${this.prefix} addons.`),this.watcher=pe.watch(this.addonFolder,{persistent:!1},async(e,t)=>{if(e&&t&&t.endsWith(this.extension)){await new Promise(e=>setTimeout(e,100));try{const s=pe.statSync(ue.resolve(this.addonFolder,t));if(!s.isFile())return;if(!s||!s.mtime||!s.mtime.getTime())return;if("number"!=typeof s.mtime.getTime())return;if(this.timeCache[t]==s.mtime.getTime())return;this.timeCache[t]=s.mtime.getTime(),"rename"==e&&this.loadAddon(t,!0),"change"==e&&this.reloadAddon(t,!0)}catch(e){if("ENOENT"!==e.code)return;delete this.timeCache[t],this.unloadAddon(t,!0)}}})}unwatchAddons(){if(!this.watcher)return c.error(this.name,`Was not watching ${this.prefix} addons.`);this.watcher.close(),delete this.watcher,c.log(this.name,`No longer watching ${this.prefix} addons.`)}extractMeta(e){const t=e.split("\n")[0];if(t.includes("//META"))return this.parseOldMeta(e);if(t.includes("/**"))return this.parseNewMeta(e);throw new G("META was not found.")}parseOldMeta(e){const t=e.split("\n")[0],s=t.substring(t.lastIndexOf("//META")+6,t.lastIndexOf("*//")),n=u.testJSON(s);if(!n)throw new G("META could not be parsed.");if(!n.name)throw new G("META missing name data.");return n.format="json",n}parseNewMeta(e){const t=e.split("/**",2)[1].split("*/",1)[0],s={};let n="",i="";for(const e of t.split(ge))if(0!==e.length)if("@"===e.charAt(0)&&" "!==e.charAt(1)){s[n]=i;const t=e.indexOf(" ");n=e.substr(1,t-1),i=e.substr(t+1)}else i+=" "+e.replace("\\n","\n").replace(fe,"@");return s[n]=i.trim(),delete s[""],s.format="jsdoc",s}getAddonRequire(){const e=this,t=this.originalRequire;return function(s,n){const i=ue.resolve(e.addonFolder,ue.basename(n));if(!pe.existsSync(i)||n!==pe.realpathSync(i))return Reflect.apply(t,this,arguments);let o=pe.readFileSync(n,"utf8");o=ye(o);const r=pe.statSync(n),a=e.extractMeta(o);a.author||(a.author=k.Addons.unknownAuthor),a.version||(a.version="???"),a.description||(a.description=k.Addons.noDescription),a.id=a.name,a.filename=ue.basename(n),a.added=r.atimeMs,a.modified=r.mtimeMs,a.size=r.size,o=e.getFileModification(s,o,a),s._compile(o,n)}}loadAddon(e,t=!1){if(void 0===e)return;try{require(ue.resolve(this.addonFolder,e))}catch(n){return new _(e,e,"Could not be compiled.",{message:n.message,stack:n.stack})}const s=require(ue.resolve(this.addonFolder,e));if(this.addonList.find(e=>e.id==s.id))return new _(s.name,e,"There is already a plugin with name "+s.name);const n=this.initializeAddon(s);return n||(this.addonList.push(s),t&&q.success(`${s.name} v${s.version} was loaded.`),this.emit("loaded",s.id),this.state[s.id]?this.startAddon(s):this.state[s.id]=!1)}unloadAddon(e,t=!0,s=!1){const n="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e;return!!n&&(this.state[n.id]&&(s?this.stopAddon(n):this.disableAddon(n)),delete require.cache[require.resolve(ue.resolve(this.addonFolder,n.filename))],this.addonList.splice(this.addonList.indexOf(n),1),this.emit("unloaded",n.id),t&&q.success(n.name+" was unloaded."),!0)}reloadAddon(e,t=!0){const s="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e,n=this.unloadAddon(s,t,!0);return n?this.loadAddon(s.filename,t):n}isLoaded(e){return!!this.addonList.find(t=>t.id==e||t.filename==e)}isEnabled(e){const t=this.addonList.find(t=>t.id==e||t.filename==e);return!!t&&this.state[t.id]}getAddon(e){return this.addonList.find(t=>t.id==e||t.filename==e)}enableAddon(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;t&&(this.state[t.id]||(this.state[t.id]=!0,this.startAddon(t),this.saveState()))}disableAddon(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;t&&this.state[t.id]&&(this.state[t.id]=!1,this.stopAddon(t),this.saveState())}toggleAddon(e){this.state[e]?this.disableAddon(e):this.enableAddon(e)}loadNewAddons(){const e=pe.readdirSync(this.addonFolder),t=this.addonList.filter(t=>!e.includes(t.filename)).map(e=>e.id);return{added:e.filter(e=>!this.addonList.find(t=>t.filename==e)&&e.endsWith(this.extension)&&pe.statSync(ue.resolve(this.addonFolder,e)).isFile()),removed:t}}updateList(){const e=this.loadNewAddons();for(const t of e.added)this.loadAddon(t);for(const t of e.removed)this.unloadAddon(t)}loadAllAddons(){this.loadState();const e=[],t=pe.readdirSync(this.addonFolder);for(const s of t){if(!pe.statSync(ue.resolve(this.addonFolder,s)).isFile()||!s.endsWith(this.extension))continue;const t=this.loadAddon(s,!1);t instanceof _&&e.push(t)}return this.saveState(),T.get(this.collection,this.category,this.id)&&this.watchAddons(),e}deleteAddon(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e;return pe.unlinkSync(ue.resolve(this.addonFolder,t.filename))}saveAddon(e,t){const s="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e;return pe.writeFileSync(ue.resolve(this.addonFolder,s.filename),t)}editAddon(e,t){const n="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e,i=ue.resolve(this.addonFolder,n.filename);return void 0===t&&(t="system"==T.get("settings","addons","editAction")),t?s(0).shell.openItem(""+i):this.openDetached(n)}openDetached(e){const t=ue.resolve(this.addonFolder,e.filename),s=pe.readFileSync(t).toString(),n=he.createRef(),i=he.createElement(se,{id:"bd-floating-editor-"+e.name,ref:n,content:s,save:this.saveAddon.bind(this,e),openNative:this.editAddon.bind(this,e,!0),language:this.language});ce.open({onClose:()=>{this.isDetached=!1},onResize:()=>{n&&n.current&&n.current.resize&&n.current.resize()},title:e.name,id:s.id,className:"floating-addon-window",height:470,width:410,center:!0,resizable:!0,children:i,confirmClose:()=>!(!n||!n.current)&&n.current.hasUnsavedChanges,confirmationText:k.Addons.confirmationText.format({name:e.name})})}}class ve extends O.Component{constructor(e){super(e)}render(){const e=this.props.isGroup?"bd-settings-title bd-settings-group-title h5-18_1nd title-3sZWYQ size12-3R0845 height16-2Lv3qA weightSemiBold-NJexzi da-h5 da-title da-size12 da-height16 da-weightSemiBold marginBottom4-2qk4Hy da-marginBottom4 marginTop8-1DLZ1n da-marginTop8":"bd-settings-title h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi defaultColor-1_ajX0 defaultMarginh2-2LTaUL marginBottom20-32qID7",t=this.props.className?`${e} ${this.props.className}`:e;return O.createElement("h2",{className:t,onClick:()=>{this.props.onClick&&this.props.onClick()}},this.props.text,this.props.button&&O.createElement("button",{className:"bd-button bd-button-title",onClick:this.props.button.onClick},this.props.button.title),this.props.otherChildren)}}class we extends O.Component{render(){const e=this.props.size||"24px";return O.createElement("svg",{className:this.props.className||"",onClick:this.props.onClick,fill:"#dcddde",viewBox:"0 0 24 24",style:{width:e,height:e}},O.createElement("path",{d:"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"}),O.createElement("path",{fill:"none",d:"M0 0h24v24H0z"}))}}class Ce extends O.Component{render(){const e=this.props.size||"24px";return O.createElement("svg",{className:this.props.className||"",fill:"#FFFFFF",viewBox:"0 0 24 24",style:{width:e,height:e},onClick:this.props.onClick},O.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),O.createElement("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z"}),O.createElement("path",{fill:"none",d:"M0 0h24v24H0z"}))}}class Se extends O.Component{constructor(e){super(e),this.state={checked:this.props.checked},this.onChange=this.onChange.bind(this)}onChange(){this.props.disabled||(this.props.onChange(!this.state.checked),this.setState({checked:!this.state.checked}))}render(){const e=this.props.disabled?" bd-switch-disabled":"",t=this.state.checked?" bd-switch-checked":"";return O.createElement("div",{className:"bd-switch"+e+t},O.createElement("input",{type:"checkbox",id:this.props.id,className:"bd-checkbox",disabled:this.props.disabled,checked:this.state.checked,onChange:this.onChange}))}}var Ee=s(0);class Me extends O.Component{constructor(e){super(e),this.state={hasError:!1}}componentDidCatch(){this.setState({hasError:!0})}render(){return this.state.hasError?O.createElement("div",{onClick:()=>Ee.remote.getCurrentWindow().openDevTools(),className:"react-error"},"There was an unexpected Error. Click to open console for more details."):this.props.children}}const xe=Me.prototype.render;function Ne(){return(Ne=Object.assign||function(e){for(var t=1;txe});const Pe=g.getByDisplayName("Tooltip");class De extends O.Component{constructor(e){super(e),this.state={settingsOpen:!1},this.settingsPanel="",this.panelRef=O.createRef(),this.onChange=this.onChange.bind(this),this.reload=this.reload.bind(this),this.showSettings=this.showSettings.bind(this),this.closeSettings=this.closeSettings.bind(this)}reload(){this.props.reload&&(this.props.addon=this.props.reload(this.props.addon.id),this.forceUpdate())}componentDidUpdate(){this.state.settingsOpen&&(this.settingsPanel instanceof Node&&this.panelRef.current.appendChild(this.settingsPanel),setImmediate(()=>{const e=this.panelRef.current,t=e.closest(".scrollerBase-289Jih");if(!t||!((e,t)=>{const s=e.scrollTop,n=s+e.clientHeight,i=t.offsetTop,o=i+t.clientHeight;return in})(t,e))return;const s=h.offset(e),n=h.offset(t),i=t.scrollTop,o=s.top-n.top+t.scrollTop-30;h.animate({duration:300,update:function(e){t.scrollTop=o>i?i+e*(o-i):i-e*(i-o)}})}))}getString(e){return"string"==typeof e?e:e.toString()}onChange(){this.props.onChange&&this.props.onChange(this.props.addon.id),this.props.enabled=!this.props.enabled,this.forceUpdate()}showSettings(){this.props.hasSettings&&this.setState({settingsOpen:!0})}closeSettings(){this.settingsPanel instanceof Node&&(this.panelRef.current.innerHTML=""),this.setState({settingsOpen:!1})}buildTitle(e,t,s){const n=k.Addons.title.split(/({{[A-Za-z]+}})/),i=n.findIndex(e=>"{{name}}"==e);i&&(n[i]=O.createElement("span",{className:"bd-name"},e));const o=n.findIndex(e=>"{{version}}"==e);i&&(n[o]=O.createElement("span",{className:"bd-version"},t));const r=n.findIndex(e=>"{{author}}"==e);return i&&(n[r]=O.createElement("span",{className:"bd-author"},s)),n.flat()}get settingsComponent(){const e=this.props.addon,t=this.getString(e.name);try{this.settingsPanel=this.props.getSettingsPanel()}catch(e){c.stacktrace("Addon Settings","Unable to get settings panel for "+t+".",e)}const s={id:t+"-settings",className:"addon-settings",ref:this.panelRef};"string"==typeof this.settingsPanel&&(c.warn("Addon Settings","Using a DOMString is officially deprecated."),s.dangerouslySetInnerHTML=this.settingsPanel);let n=null;return"function"==typeof this.settingsPanel&&(n=O.createElement(this.settingsPanel,null)),this.settingsPanel.$$typeof&&this.settingsPanel.$$typeof===Symbol.for("react.element")&&(n=this.settingsPanel),O.createElement("div",{className:"bd-addon-card settings-open bd-switch-item"},O.createElement("div",{className:"bd-close",onClick:this.closeSettings},O.createElement(ie,null)),O.createElement("div",s,O.createElement(Me,null,n)))}buildLink(e){const t=this.props.addon[e];if(!t)return null;const s=O.createElement("a",{className:"bd-link bd-link-website",href:t,target:"_blank",rel:"noopener noreferrer"},k.Addons[e]);return"invite"==e&&(s.props.onClick=function(e){e.preventDefault(),e.stopPropagation();let s=t;const n=/\.gg\/(.*)$/;n.test(s)&&(s=s.match(n)[1]),f.LayerStack.popLayer(),f.InviteActions.acceptInviteAndTransitionToInviteChannel(s)}),s}get footer(){const e=["website","source","invite","donate","patreon"];if(!e.some(e=>this.props.addon[e])&&!this.props.hasSettings)return null;const t=e.map(this.buildLink.bind(this)).filter(e=>e);return O.createElement("div",{className:"bd-footer"},O.createElement("span",{className:"bd-links"},t.map((e,s)=>sO.createElement("div",Ne({},e,{className:"bd-addon-button",onClick:s}),t))}render(){if(this.state.settingsOpen)return this.settingsComponent;const e=this.props.addon,t=this.getString(e.name),s=this.getString(e.author),n=this.getString(e.description),i=this.getString(e.version);return O.createElement("div",{id:e.id+"-card",className:"bd-addon-card settings-closed"},O.createElement("div",{className:"bd-addon-header"},O.createElement("span",{className:"bd-title"},this.buildTitle(t,i,s)),O.createElement("div",{className:"bd-controls"},this.props.editAddon&&this.makeButton(k.Addons.editAddon,O.createElement(ee,null),this.props.editAddon),this.props.deleteAddon&&this.makeButton(k.Addons.deleteAddon,O.createElement(Ce,null),this.props.deleteAddon),this.props.showReloadIcon&&this.makeButton(k.Addons.reload,O.createElement(we,{className:"bd-reload bd-reload-card"}),this.reload),O.createElement(Se,{checked:this.props.enabled,onChange:this.onChange}))),O.createElement("div",{className:"bd-description-wrap scroller-wrap fade"},O.createElement("div",{className:"bd-description scroller"},n)),this.footer)}}const Ae=De.prototype.render;Object.defineProperty(De.prototype,"render",{enumerable:!1,configurable:!1,set:function(){c.warn("AddonCard","Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins")},get:()=>Ae});class ke extends O.Component{render(){const e=this.props.size||"16px";return O.createElement("svg",{className:this.props.className||"",fill:"#FFFFFF",viewBox:"0 0 24 24",style:{width:e,height:e}},O.createElement("path",{d:"M8.12 9.29L12 13.17l3.88-3.88c.39-.39 1.02-.39 1.41 0 .39.39.39 1.02 0 1.41l-4.59 4.59c-.39.39-1.02.39-1.41 0L6.7 10.7c-.39-.39-.39-1.02 0-1.41.39-.38 1.03-.39 1.42 0z"}))}}class Te extends O.Component{constructor(e){super(e),this.state={open:!1,value:this.props.value||this.props.options[0].value},this.dropdown=O.createRef(),this.onChange=this.onChange.bind(this),this.showMenu=this.showMenu.bind(this),this.hideMenu=this.hideMenu.bind(this)}showMenu(e){e.preventDefault(),this.setState({open:!0},()=>{document.addEventListener("click",this.hideMenu)})}hideMenu(){this.setState({open:!1},()=>{document.removeEventListener("click",this.hideMenu)})}onChange(e){this.setState({value:e}),this.props.onChange&&this.props.onChange(e)}get selected(){return this.props.options.find(e=>e.value==this.state.value)}get options(){const e=this.selected;return O.createElement("div",{className:"bd-select-options"},this.props.options.map(t=>O.createElement("div",{className:"bd-select-option"+(e.value==t.value?" selected":""),onClick:this.onChange.bind(this,t.value)},t.label)))}render(){const e="transparent"==this.props.style?" bd-select-transparent":"",t=this.state.open?" menu-open":"";return O.createElement("div",{className:`bd-select${e}${t}`,onClick:this.showMenu,ref:this.dropdown},O.createElement("div",{className:"bd-select-value"},this.selected.label),O.createElement(ke,{className:"bd-select-arrow"}),this.state.open&&this.options)}}class Le extends O.Component{render(){const e=this.props.size||"16px";return O.createElement("svg",{className:this.props.className||"",fill:"#FFFFFF",viewBox:"0 0 24 24",style:{width:e,height:e}},O.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),O.createElement("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"}))}}class je extends O.Component{render(){return O.createElement("div",{className:"bd-search-wrapper"},O.createElement("input",{onChange:this.props.onChange,onKeyDown:this.props.onKeyDown,type:"text",className:"bd-search",placeholder:this.props.placeholder,maxLength:"50"}),O.createElement(Le,null))}}class Be extends O.Component{constructor(e){super(e),this.state={sort:"name",ascending:!0,query:""},this.sort=this.sort.bind(this),this.reverse=this.reverse.bind(this),this.search=this.search.bind(this),this.update=this.update.bind(this)}componentDidMount(){E.on(this.props.prefix+"-loaded",this.update),E.on(this.props.prefix+"-unloaded",this.update)}componentWillUnmount(){E.off(this.props.prefix+"-loaded",this.update),E.off(this.props.prefix+"-unloaded",this.update)}update(){this.forceUpdate()}reload(){this.props.refreshList&&this.props.refreshList(),this.forceUpdate()}reverse(e){this.setState({ascending:e})}sort(e){this.setState({sort:e})}search(e){this.setState({query:e.target.value.toLocaleLowerCase()})}get sortOptions(){return[{label:k.Addons.name,value:"name"},{label:k.Addons.author,value:"author"},{label:k.Addons.version,value:"version"},{label:k.Addons.added,value:"added"},{label:k.Addons.modified,value:"modified"}]}get directions(){return[{label:k.Sorting.ascending,value:!0},{label:k.Sorting.descending,value:!1}]}render(){const{title:e,folder:t,addonList:n,addonState:i,onChange:o,reload:r}=this.props,a=!T.get("settings","addons","autoReload"),l=t?{title:k.Addons.openFolder.format({type:e}),onClick:()=>{const e=s(0).shell;(e.openItem||e.openPath)(t)}}:null,d=n.sort((e,t)=>{const s=e[this.state.sort],n=t[this.state.sort];return"string"==typeof s?s.toLocaleLowerCase().localeCompare(n.toLocaleLowerCase()):s>n?1:n>s?-1:0});return this.state.ascending||d.reverse(),[O.createElement(ve,{key:"title",text:e,button:l,otherChildren:a&&O.createElement(we,{className:"bd-reload",onClick:this.reload.bind(this)})}),O.createElement("div",{className:"bd-controls bd-addon-controls"},O.createElement(je,{onChange:this.search,placeholder:k.Addons.search.format({type:this.props.title})+"..."}),O.createElement("div",{className:"bd-addon-dropdowns"},O.createElement("div",{className:"bd-select-wrapper"},O.createElement("label",{className:"bd-label"},k.Sorting.sortBy,":"),O.createElement(Te,{options:this.sortOptions,onChange:this.sort,style:"transparent"})),O.createElement("div",{className:"bd-select-wrapper"},O.createElement("label",{className:"bd-label"},k.Sorting.order,":"),O.createElement(Te,{options:this.directions,onChange:this.reverse,style:"transparent"})))),O.createElement("div",{key:"addonList",className:"bd-addon-list"},d.map(e=>{if(this.state.query){let t=e.name.toLocaleLowerCase().includes(this.state.query);if(t=t||e.author.toLocaleLowerCase().includes(this.state.query),t=t||e.description.toLocaleLowerCase().includes(this.state.query),!t)return null}const t=e.type&&"function"==typeof e.plugin.getSettingsPanel,s=t&&e.plugin.getSettingsPanel.bind(e.plugin);return O.createElement(Me,null,O.createElement(De,{editAddon:this.editAddon.bind(this,e.id),deleteAddon:this.deleteAddon.bind(this,e.id),showReloadIcon:a,key:e.id,enabled:i[e.id],addon:e,onChange:o,reload:r,hasSettings:t,getSettingsPanel:s}))}))]}editAddon(e){this.props.editAddon&&this.props.editAddon(e)}async deleteAddon(e){const t=this.props.addonList.find(t=>t.id==e);await this.confirmDelete(t)&&this.props.deleteAddon&&this.props.deleteAddon(t)}confirmDelete(e){return new Promise(t=>{W.showConfirmationModal(k.Modals.confirmAction,k.Addons.confirmDelete.format({name:e.name}),{danger:!0,confirmText:k.Addons.deleteAddon,onConfirm:()=>{t(!0)},onCancel:()=>{t(!1)}})})}}const Ie=Be.prototype.render;Object.defineProperty(Be.prototype,"render",{enumerable:!1,configurable:!1,set:function(){c.warn("AddonList","Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins")},get:()=>Ie});class ze extends O.Component{render(){return O.createElement("div",{className:"bd-divider divider-3573oO marginTop8-1DLZ1n marginBottom40-2vIwTv"})}}class Fe extends O.Component{render(){return O.createElement("div",{className:"bd-setting-item"},O.createElement("div",{className:"bd-setting-header"},O.createElement("label",{htmlFor:this.props.id,className:"bd-setting-title"},this.props.name),this.props.children),O.createElement("div",{className:"bd-setting-note"},this.props.note),O.createElement("div",{className:"bd-setting-divider"}))}}class Oe extends O.Component{constructor(e){if(super(e),this.props.button&&this.props.collapsible){const e=this.props.button.onClick;this.props.button.onClick=t=>{t.stopPropagation(),e(...arguments)}}this.props.hasOwnProperty("shown")||(this.props.shown=!0),this.container=O.createRef(),this.state={collapsed:this.props.collapsible&&!this.props.shown},this.onChange=this.onChange.bind(this),this.toggleCollapse=this.toggleCollapse.bind(this)}toggleCollapse(){const e=this.container.current,t=this.state.collapsed?300:1;e.style.setProperty("height",e.scrollHeight+"px"),e.classList.add("animating"),this.setState({collapsed:!this.state.collapsed},()=>setTimeout(()=>{e.style.setProperty("height",""),e.classList.remove("animating")},t)),this.props.onDrawerToggle&&this.props.onDrawerToggle(this.state.collapsed)}onChange(e,t){this.props.onChange&&(this.props.id?this.props.onChange(this.props.id,e,t):this.props.onChange(e,t),this.forceUpdate())}render(){const{settings:e}=this.props,t="bd-settings-group "+(this.props.collapsible?"collapsible "+(this.state.collapsed?"collapsed":"expanded"):"");return O.createElement("div",{className:t},O.createElement(ve,{text:this.props.name,collapsible:this.props.collapsible,onClick:this.toggleCollapse,button:this.props.button,isGroup:!0}),O.createElement("div",{className:"bd-settings-container",ref:this.container},e.filter(e=>!e.hidden).map(e=>{let t=null;return"dropdown"==e.type&&(t=O.createElement(Te,{disabled:e.disabled,id:e.id,options:e.options,value:e.value,onChange:this.onChange.bind(this,e.id)})),"switch"==e.type&&(t=O.createElement(Se,{disabled:e.disabled,id:e.id,checked:e.value,onChange:this.onChange.bind(this,e.id)})),t?O.createElement(Fe,{id:e.id,key:e.id,name:e.name,note:e.note},t):null})),this.props.showDivider&&O.createElement(ze,null))}}const Re=Oe.prototype.render;Object.defineProperty(Oe.prototype,"render",{enumerable:!1,configurable:!1,set:function(){c.warn("Group","Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins")},get:()=>Re});class Ue extends O.Component{render(){const e=this.props.size||"18px";return O.createElement("svg",{viewBox:"0 0 24 24",fill:"#FFFFFF",className:this.props.className||"",style:{width:e,height:e},onClick:this.props.onClick},O.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}),O.createElement("path",{d:"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z"}))}}function He(){return(He=Object.assign||function(e){for(var t=1;te.Header&&e.Separator&&e.Item),$e=g.getByDisplayName("Tooltip");class We extends O.Component{constructor(e){super(e)}render(){return O.createElement("div",{className:"bd-sidebar-header"},O.createElement(qe.Header,null,"BandagedBD"),O.createElement($e,{color:"black",position:"top",text:"Changelog"},e=>O.createElement("div",He({},e,{className:"bd-changelog-button",onClick:()=>W.showChangelogModal(l)}),O.createElement(Ue,{className:"bd-icon",size:"16px"}))))}}var _e=new class{constructor(){this.patchSections(),E.on("strings-updated",this.forceUpdate)}onDrawerToggle(e,t,s){const n=w.getBDData("drawerStates")||{};n[e]||(n[e]={}),n[e][t]=s,w.setBDData("drawerStates",n)}getDrawerState(e,t,s){const n=w.getBDData("drawerStates")||{};return n[e]&&n[e].hasOwnProperty(t)?n[e][t]:s}onChange(e){return(t,s,n)=>{const i=T.collections.length+T.panels.length;e(t,s,n);i!=T.collections.length+T.panels.length&&setTimeout(this.forceUpdate.bind(this),50)}}buildSettingsPanel(e,t,s,n,i,o=null){return s.forEach(e=>{e.settings.forEach(t=>t.value=n[e.id][t.id])}),this.getSettingsPanel(e,t,s,this.onChange(i),o)}getSettingsPanel(e,t,s,n,i=null){return[O.createElement(ve,{text:t,button:i}),s.map(t=>O.createElement(Oe,Object.assign({},t,{onChange:n,onDrawerToggle:s=>this.onDrawerToggle(e,t.id,s),shown:this.getDrawerState(e,t.id,!t.hasOwnProperty("shown")||t.shown)})))]}getAddonPanel(e,t,s,n={}){return O.createElement(Be,Object.assign({},{title:e,addonList:t,addonState:s},n))}async patchSections(){const e=await F.get("UserSettings",e=>e.prototype&&e.prototype.generateSections);L.after("SettingsManager",e.prototype,"render",e=>{e._reactInternalFiber.return.return.return.return.return.return.return.memoizedProps.id="user-settings"}),L.after("SettingsManager",e.prototype,"generateSections",(e,t,s)=>{let n=s.findIndex(e=>"linux"==e.section.toLowerCase())+1;const i=e=>{s.splice(n,0,e),n++};i({section:"DIVIDER"}),i({section:"CUSTOM",element:We});for(const e of T.collections)e.disabled||i({section:e.name,label:e.name,element:()=>this.buildSettingsPanel(e.id,e.name,e.settings,T.state[e.id],T.onSettingChange.bind(T,e.id),e.button?e.button:null)});for(const t of T.panels.sort((e,t)=>e.order>t.order))t.clickListener&&(t.onClick=n=>t.clickListener(e,n,s)),i(t)}),this.forceUpdate()}forceUpdate(){const e=g.getByProps("standardSidebarView").standardSidebarView.split(" ")[0],t=document.querySelector("."+e);if(!t)return;const s=u.findInReactTree(u.getReactInstance(t),e=>e&&e.generateSections,{walkable:["return","stateNode"]});s&&s.forceUpdate()}};const Ge=s(1),Qe=s(0).remote;var Ve=new class extends be{get name(){return"PluginManager"}get moduleExtension(){return".js"}get extension(){return".plugin.js"}get addonFolder(){return Ge.resolve(i.dataPath,"plugins")}get prefix(){return"plugin"}get language(){return"javascript"}constructor(){super(),this.onSwitch=this.onSwitch.bind(this),this.observer=new MutationObserver(e=>{for(let t=0,s=e.length;t_e.getAddonPanel(k.Panels.plugins,this.addonList,this.state,{folder:this.addonFolder,onChange:this.togglePlugin.bind(this),reload:this.reloadPlugin.bind(this),refreshList:this.updatePluginList.bind(this),saveAddon:this.saveAddon.bind(this),editAddon:this.editAddon.bind(this),deleteAddon:this.deleteAddon.bind(this),prefix:this.prefix})}),e}updatePluginList(){return this.updateList()}loadAllPlugins(){return this.loadAllAddons()}enablePlugin(e){return this.enableAddon(e)}disablePlugin(e){return this.disableAddon(e)}togglePlugin(e){return this.toggleAddon(e)}unloadPlugin(e){return this.unloadAddon(e)}loadPlugin(e){const t=this.loadAddon(e);t&&W.showAddonErrors({themes:[t]})}reloadPlugin(e){const t=this.reloadAddon(e);return t&&W.showAddonErrors({plugins:[t]}),"string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e}initializeAddon(e){if(!e.type)return new _(e.name,e.filename,"Plugin had no exports",{message:"Plugin had no exports or no name property.",stack:""});try{const t=new e.type;e.plugin=t,e.name=t.getName()||e.name,e.author=t.getAuthor()||e.author||"No author",e.description=t.getDescription()||e.description||"No description",e.version=t.getVersion()||e.version||"No version";try{"function"==typeof e.plugin.load&&e.plugin.load()}catch(t){return this.state[e.id]=!1,new _(e.name,e.filename,"load() could not be fired.",{message:t.message,stack:t.stack})}}catch(t){return new _(e.name,e.filename,"Could not be constructed.",{message:t.message,stack:t.stack})}}getFileModification(e,t,s){e._compile(t,e.filename);return u.isEmpty(e.exports)?(c.warn(this.name,s.name+", please start assigning module.exports"),t+=`\nmodule.exports = ${JSON.stringify(s)};\nmodule.exports.type = ${s.exports||s.name};`):(s.type=e.exports,e.exports=s,"")}startAddon(e){return this.startPlugin(e)}stopAddon(e){return this.stopPlugin(e)}getAddon(e){return this.getPlugin(e)}startPlugin(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;if(!t)return;const s=t.plugin;try{s.start()}catch(e){return this.state[t.id]=!1,q.error(k.Addons.couldNotStart.format({name:t.name,version:t.version})),c.stacktrace(this.name,t.name+" could not be started.",e),new _(t.name,t.filename,k.Addons.enabled.format({method:"start()"}),{message:e.message,stack:e.stack})}this.emit("started",t.id),q.show(k.Addons.enabled.format({name:t.name,version:t.version}))}stopPlugin(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;if(!t)return;const s=t.plugin;try{s.stop()}catch(e){return this.state[t.id]=!1,q.error(k.Addons.couldNotStop.format({name:t.name,version:t.version})),c.stacktrace(this.name,t.name+" could not be stopped.",e),new _(t.name,t.filename,k.Addons.enabled.format({method:"stop()"}),{message:e.message,stack:e.stack})}this.emit("stopped",t.id),q.show(k.Addons.disabled.format({name:t.name,version:t.version}))}getPlugin(e){const t=this.addonList.find(t=>t.id==e||t.filename==e);if(t)return t.plugin}setupFunctions(){Qe.getCurrentWebContents().on("did-navigate-in-page",this.onSwitch.bind(this)),this.observer.observe(document,{childList:!0,subtree:!0})}onSwitch(){this.emit("page-switch");for(let e=0;e_e.getAddonPanel(k.Panels.themes,this.addonList,this.state,{folder:this.addonFolder,onChange:this.toggleTheme.bind(this),reload:this.reloadTheme.bind(this),refreshList:this.updateThemeList.bind(this),saveAddon:this.saveAddon.bind(this),editAddon:this.editAddon.bind(this),deleteAddon:this.deleteAddon.bind(this),prefix:this.prefix})}),e}updateThemeList(){return this.updateList()}loadAllThemes(){return this.loadAllAddons()}enableTheme(e){return this.enableAddon(e)}disableTheme(e){return this.disableAddon(e)}toggleTheme(e){return this.toggleAddon(e)}unloadTheme(e){return this.unloadAddon(e)}loadTheme(e){const t=this.loadAddon(e);t&&W.showAddonErrors({themes:[t]})}reloadTheme(e){const t=this.reloadAddon(e);t&&W.showAddonErrors({themes:[t]})}getFileModification(e,t,s){return s.css=t,`module.exports = ${JSON.stringify(s)};`}startAddon(e){return this.addTheme(e)}stopAddon(e){return this.removeTheme(e)}addTheme(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;t&&(C.injectTheme(t.id,t.css),q.show(k.Addons.enabled.format({name:t.name,version:t.version})))}removeTheme(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;t&&(C.removeTheme(t.id),q.show(k.Addons.disabled.format({name:t.name,version:t.version})))}};const Je={get React(){return f.React},get ReactDOM(){return f.ReactDOM},get WindowConfigFile(){return""},get settings(){return T.collections},get emotes(){return{}},get version(){return i.version},getAllWindowPreferences:function(){return w.getData("windowprefs")||{}},getWindowPreference:function(e){return this.getAllWindowPreferences()[e]},setWindowPreference:function(e,t){const s=this.getAllWindowPreferences();return s[e]=t,w.setData("windowprefs",s)},injectCSS:function(e,t){C.injectStyle(e,t)},clearCSS:function(e){C.removeStyle(e)},linkJS:function(e,t){return C.injectScript(e,t)},unlinkJS:function(e){C.removeScript(e)},alert:function(e,t){W.alert(e,t)},showConfirmationModal:function(e,t,s={}){return W.showConfirmationModal(e,t,s)},showToast:function(e,t={}){q.show(e,t)},findModule:function(e){return g.getModule(e)},findAllModules:function(e){return g.getModule(e,!1)},findModuleByProps:function(...e){return g.getByProps(...e)},findModuleByPrototypes:function(...e){return g.getByPrototypes(...e)},findModuleByDisplayName:function(e){return g.getByDisplayName(e)},getInternalInstance:function(e){if(e instanceof window.jQuery||e instanceof Element)return e instanceof jQuery&&(e=e[0]),u.getReactInstance(e)},loadData:function(e,t){return w.getPluginData(e,t)}};Je.getData=Je.loadData,Je.saveData=function(e,t,s){return w.setPluginData(e,t,s)},Je.setData=Je.saveData,Je.deleteData=function(e,t){return w.deletePluginData(e,t)},Je.monkeyPatch=function(e,t,s){const{before:n,after:i,instead:o,once:r=!1}=s,a=n?"before":i?"after":o?"instead":"";if(!a)return c.err("BdApi","Must provide one of: after, before, instead");const l={originalMethod:e[t],callOriginalMethod:()=>l.originalMethod.apply(l.thisObject,l.methodArguments)};l.cancelPatch=L[a]("BdApi",e,t,(e,t,n)=>{l.thisObject=e,l.methodArguments=t,l.returnValue=n;try{Reflect.apply(s[a],null,[l]),r&&l.cancelPatch()}catch(e){}})},Je.onRemoved=function(e,t){return u.onRemoved(e,t)},Je.suppressErrors=function(e,t){return u.suppressErrors(e,t)},Je.testJSON=function(e){return u.testJSON(e)},Je.getPlugin=function(e){return c.warn("BdApi","getPlugin is deprecated. Please make use of the addon api (BdApi.Plugins)"),Ve.addonList.find(t=>t.name==e)},Je.isPluginEnabled=function(e){c.warn("BdApi","isPluginEnabled is deprecated. Please make use of the addon api (BdApi.Plugins)");const t=this.getPlugin(e);return!!t&&Ve.isEnabled(t.id)},Je.isThemeEnabled=function(e){c.warn("BdApi","isThemeEnabled is deprecated. Please make use of the addon api (BdApi.Themes)");const t=Ye.addonList.find(t=>t.name==e);return!!t&&Ye.isEnabled(t.id)},Je.isSettingEnabled=function(e,t,s){return T.get(e,t,s)},Je.enableSetting=function(e,t,s){return T.set(e,t,s,!0)},Je.disableSetting=function(e,t,s){return T.set(e,t,s,!1)},Je.toggleSetting=function(e,t,s){return T.set(e,t,s,!T.get(e,t,s))},Je.getBDData=function(e){return w.getBDData(e)},Je.setBDData=function(e,t){return w.setBDData(e,t)};const Ke=e=>new class{get folder(){return e.addonFolder}isEnabled(t){return e.isEnabled(t)}enable(t){return e.enableAddon(t)}disable(t){return e.disableAddon(t)}toggle(t){return e.toggleAddon(t)}reload(t){return e.reloadAddon(t)}get(t){return e.getAddon(t)}getAll(){return e.addonList.map(t=>e.getAddon(t.id))}};Je.Plugins=Ke(Ve),Je.Themes=Ke(Ye),Je.Patcher={patch:(e,t,s,n,i={})=>"string"!=typeof e?c.err("BdApi.Patcher","Parameter 0 of patch must be a string representing the caller"):"before"!==i.type&&"instead"!==i.type&&"after"!==i.type?c.err("BdApi.Patcher","options.type must be one of: before, instead, after"):L.pushChildPatch(e,t,s,n,i),before:(e,t,s,n,i={})=>Je.Patcher.patch(e,t,s,n,Object.assign(i,{type:"before"})),instead:(e,t,s,n,i={})=>Je.Patcher.patch(e,t,s,n,Object.assign(i,{type:"instead"})),after:(e,t,s,n,i={})=>Je.Patcher.patch(e,t,s,n,Object.assign(i,{type:"after"})),unpatchAll:e=>"string"!=typeof e?c.err("BdApi.Patcher","Parameter 0 of unpatchAll must be a string representing the caller"):L.unpatchAll(e)},Object.freeze(Je),Object.freeze(Je.Plugins),Object.freeze(Je.Themes),Object.freeze(Je.Patcher);var Xe=Je;const et=document.createElement("style");et.textContent="/* BEGIN V2 LOADER */\n/* =============== */\n\n#bd-loading-icon {\n background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+IDwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyBoZWlnaHQ9IjEwMCUiIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iMTAwJSIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMjAwMCAyMDAwIj4gICAgPG1ldGFkYXRhIC8+ICAgIDxkZWZzPiAgICAgICAgPGZpbHRlciBpZD0ic2hhZG93MSI+ICAgICAgICA8ZmVEcm9wU2hhZG93IGR4PSIyMCIgZHk9IjAiIHN0ZERldmlhdGlvbj0iMjAiIGZsb29kLWNvbG9yPSJyZ2JhKDAsMCwwLDAuMzUpIi8+ICAgICAgICA8L2ZpbHRlcj4gICAgICAgIDxmaWx0ZXIgaWQ9InNoYWRvdzIiPiAgICAgICAgPGZlRHJvcFNoYWRvdyBkeD0iMTUiIGR5PSIwIiBzdGREZXZpYXRpb249IjIwIiBmbG9vZC1jb2xvcj0icmdiYSgyNTUsMjU1LDI1NSwwLjE1KSIvPiAgICAgICAgPC9maWx0ZXI+ICAgICAgICA8ZmlsdGVyIGlkPSJzaGFkb3czIj4gICAgICAgIDxmZURyb3BTaGFkb3cgZHg9IjEwIiBkeT0iMCIgc3RkRGV2aWF0aW9uPSIyMCIgZmxvb2QtY29sb3I9InJnYmEoMCwwLDAsMC4zNSkiLz4gICAgICAgIDwvZmlsdGVyPiAgICA8L2RlZnM+ICAgIDxnPiAgICAgICAgPHBhdGggc3R5bGU9ImZpbHRlcjogdXJsKCNzaGFkb3czKSIgZD0iTTExOTUuNDQrMTM1LjQ0MkwxMTk1LjQ0KzEzNS40NDJMOTk3LjYrMTM2LjQ0MkMxMDI0LjIrMTQ5Ljc0MisxMTcwLjM0KzE2My41NDIrMTE5My42NCsxNzkuNzQyQzEyNjQuMzQrMjI4Ljg0MisxMzE5Ljc0KzI5MS4yNDIrMTM1OC4yNCszNjUuMDQyQzEzOTguMTQrNDQxLjY0MisxNDE5Ljc0KzUzMC42NDIrMTQyMi41NCs2MjkuNjQyTDE0MjIuNTQrNjMwLjg0MkwxNDIyLjU0KzYzMi4wNDJDMTQyMi41NCs3NzMuMTQyKzE0MjIuNTQrMTIyOC4xNCsxNDIyLjU0KzEzNjkuMTRMMTQyMi41NCsxMzcwLjM0TDE0MjIuNTQrMTM3MS41NEMxNDE5Ljg0KzE0NzAuNTQrMTM5OC4yNCsxNTU5LjU0KzEzNTguMjQrMTYzNi4xNEMxMzE5Ljc0KzE3MDkuOTQrMTI2NC40NCsxNzcyLjM0KzExOTMuNjQrMTgyMS40NEMxMTcxLjA0KzE4MzcuMTQrMTAyNS43KzE4NTAuNTQrMTAwMCsxODYzLjU0TDExOTMuNTQrMTg2NC41NEMxNTM5Ljc0KzE4NjYuNDQrMTg2NC41NCsxNjkzLjM0KzE4NjQuNTQrMTI5Ni42NEwxODY0LjU0KzcxNi45NDJDMTg2Ni40NCszMTIuNDQyKzE1NDEuNjQrMTM1LjQ0MisxMTk1LjQ0KzEzNS40NDJaIiBmaWxsPSIjMTcxNzE3IiBvcGFjaXR5PSIxIi8+ICAgICAgICA8cGF0aCBzdHlsZT0iZmlsdGVyOiB1cmwoI3NoYWRvdzIpIiBkPSJNMTY5NS41NCs2MzEuNDQyQzE2ODUuODQrMjc4LjA0MisxNDA5LjM0KzEzNS40NDIrMTA1Mi45NCsxMzUuNDQyTDM2MS43NCsxMzYuNDQyTDgwMy43NCs0OTAuNDQyTDEwNjAuNzQrNDkwLjQ0MkMxMzM1LjI0KzQ5MC40NDIrMTMzNS4yNCs4MzUuMzQyKzEwNjAuNzQrODM1LjM0MkwxMDYwLjc0KzExNjQuODRDMTE1MC4yMisxMTY0Ljg0KzEyMTAuNTMrMTIwMS40OCsxMjQxLjY4KzEyNTAuODdDMTMwNi4wNysxMzUzKzEyNDUuNzYrMTUwOS42NCsxMDYwLjc0KzE1MDkuNjRMMzYxLjc0KzE4NjMuNTRMMTA1Mi45NCsxODY0LjU0QzE0MDkuMjQrMTg2NC41NCsxNjg1Ljc0KzE3MjEuOTQrMTY5NS41NCsxMzY4LjU0QzE2OTUuNTQrMTIwNS45NCsxNjUxLjA0KzEwODQuNDQrMTU3Mi42NCs5OTkuOTQyQzE2NTEuMDQrOTE1LjU0MisxNjk1LjU0Kzc5NC4wNDIrMTY5NS41NCs2MzEuNDQyWiIgZmlsbD0iIzNFODJFNSIgb3BhY2l0eT0iMSIvPiAgICAgICAgPHBhdGggc3R5bGU9ImZpbHRlcjogdXJsKCNzaGFkb3cxKSIgZD0iTTE0NjkuMjUrNjMxLjQ0MkMxNDU5LjU1KzI3OC4wNDIrMTE4My4wNSsxMzUuNDQyKzgyNi42NSsxMzUuNDQyTDEzNS40NSsxMzUuNDQyTDEzNS40NSsxMDA0QzEzNS40NSsxMDA0KzEzNS40MjcrMTI1NS4yMSszNTUuNjI2KzEyNTUuMjFDNTc1LjgyNSsxMjU1LjIxKzU3NS44NDgrMTAwNCs1NzUuODQ4KzEwMDRMNTc3LjQ1KzQ5MC40NDJMODM0LjQ1KzQ5MC40NDJDMTEwOC45NSs0OTAuNDQyKzExMDguOTUrODM1LjM0Mis4MzQuNDUrODM1LjM0Mkw2NjQuNjUrODM1LjM0Mkw2NjQuNjUrMTE2NC44NEw4MzQuNDUrMTE2NC44NEM5MjMuOTMyKzExNjQuODQrOTg0LjI0NCsxMjAxLjQ4KzEwMTUuMzkrMTI1MC44N0MxMDc5Ljc4KzEzNTMrMTAxOS40NysxNTA5LjY0KzgzNC40NSsxNTA5LjY0TDEzNS40NSsxNTA5LjY0TDEzNS40NSsxODY0LjU0TDgyNi42NSsxODY0LjU0QzExODIuOTUrMTg2NC41NCsxNDU5LjQ1KzE3MjEuOTQrMTQ2OS4yNSsxMzY4LjU0QzE0NjkuMjUrMTIwNS45NCsxNDI0Ljc1KzEwODQuNDQrMTM0Ni4zNSs5OTkuOTQyQzE0MjQuNzUrOTE1LjU0MisxNDY5LjI1Kzc5NC4wNDIrMTQ2OS4yNSs2MzEuNDQyWiIgZmlsbD0iI0ZGRkZGRiIgb3BhY2l0eT0iMSIvPiAgICA8L2c+PC9zdmc+);\n}\n#bd-loading-icon {\n position: fixed;\n bottom:5px;\n right:5px;\n z-index: 2147483647;\n display: block;\n width: 20px;\n height: 20px;\n background-size: 100% 100%;\n animation: bd-loading-animation 1.5s ease-in-out infinite;\n}\n\n@keyframes bd-loading-animation {\n 0% { opacity: 0.05; }\n 50% { opacity: 0.6; }\n 100% { opacity: 0.05; }\n}\n/* =============== */\n/* END V2 LOADER */";const tt=document.createElement("div");tt.id="bd-loading-icon",tt.className="bd-loaderv2",tt.title="BandagedBD is loading...";var st=class{static show(){document.body.appendChild(et),document.body.appendChild(tt)}static hide(){et&&et.remove(),tt&&tt.remove()}};class nt{get name(){return"Unnamed Builtin"}get collection(){return"settings"}get category(){return"general"}get id(){return"None"}async initialize(){T.get(this.collection,this.category,this.id)&&await this.enable(),E.on("setting-updated",(e,t,s,n)=>{e==this.collection&&t===this.category&&s===this.id&&(n?this.enable():this.disable())}),this.initialized=!0}registerSetting(e,t,s,n,i){return 4==arguments.length?(e=this.collection,t=arguments[0],s=arguments[1],n=arguments[2],i=arguments[3]):3==arguments.length&&(e=this.collection,t=this.category,s=arguments[0],n=arguments[1],i=arguments[2]),T.on(e,t,s,e=>{e?n():i()})}get(e,t,s){return 2==arguments.length?(e=this.collection,t=arguments[0],s=arguments[1]):1==arguments.length&&(e=this.collection,t=this.category,s=arguments[0]),T.get(e,t,s)}async enable(){this.log("Enabled");try{await this.enabled()}catch(e){this.stacktrace("Could not be enabled",e)}}async disable(){this.log("Disabled");try{await this.disabled()}catch(e){this.stacktrace("Could not be disabled",e)}}async enabled(){}async disabled(){}log(...e){c.log(this.name,...e)}warn(...e){c.warn(this.name,...e)}error(...e){c.err(this.name,...e)}stacktrace(e,t){c.stacktrace(this.name,e,t)}before(e,t,s){return L.before(this.name,e,t,s)}after(e,t,s){return L.after(this.name,e,t,s)}unpatchAll(){return L.unpatchAll(this.name)}}class it extends O.Component{render(){const e=this.props.size||"24px";return O.createElement("svg",{viewBox:"0 0 24 24",style:{width:e,height:e}},O.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}),O.createElement("path",{d:"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"}))}}class ot extends O.Component{constructor(e){super(e),this.hasUnsavedChanges=!1,this.onChange=this.onChange.bind(this),this.toggleLiveUpdate=this.toggleLiveUpdate.bind(this),this.updateCss=this.updateCss.bind(this),this.saveCss=this.saveCss.bind(this),this.openDetached=this.props.openDetached?this.openDetached.bind(this):null,this.openNative=this.openNative.bind(this),this.updateEditor=this.updateEditor.bind(this),this.controls=[{label:O.createElement(we,{size:"18px"}),tooltip:k.CustomCSS.update,onClick:this.updateCss},{label:O.createElement(X,{size:"18px"}),tooltip:k.CustomCSS.save,onClick:this.saveCss},{label:O.createElement(ee,{size:"18px"}),tooltip:k.CustomCSS.openNative,onClick:this.openNative},{label:O.createElement(te,{size:"18px"}),tooltip:k.CustomCSS.settings,onClick:"showSettings"},{label:k.Collections.settings.customcss.liveUpdate.name,type:"checkbox",onChange:this.toggleLiveUpdate,checked:T.get("settings","customcss","liveUpdate"),side:"right"}],this.openDetached&&this.controls.push({label:O.createElement(it,{size:"18px"}),tooltip:k.CustomCSS.openDetached,onClick:this.openDetached,side:"right"})}componentDidMount(){E.on("customcss-updated",this.updateEditor)}componentWillUnmount(){E.off("customcss-updated",this.updateEditor)}updateEditor(e){this.editor&&(this.editor.value=e)}get value(){return this.editor.session.getValue()}set value(e){this.editor.setValue(e)}showSettings(){return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor)}resize(){return this.editor.resize()}setEditorRef(e){this.editor=e,this.props.editorRef&&void 0!==this.props.editorRef.current?this.props.editorRef.current=e:this.props.editorRef&&(this.props.editorRef=e)}onChange(){this.hasUnsavedChanges=!0,this.props.onChange&&this.props.onChange(...arguments)}render(){return O.createElement(K,{ref:this.setEditorRef.bind(this),readOnly:this.props.readOnly,id:this.props.id||"bd-customcss-editor",onChange:this.onChange,controls:this.controls,value:this.props.css})}toggleLiveUpdate(e){T.set("settings","customcss","liveUpdate",e)}updateCss(e,t){this.props.update&&this.props.update(t)}saveCss(e,t){this.hasUnsavedChanges=!1,this.props.save&&this.props.save(t)}openDetached(e,t){this.props.openDetached&&this.props.openDetached(t)}openNative(){this.props.openNative&&this.props.openNative()}}const rt=s(2),at=s(0),lt=g.getByProps("updateAccount"),dt=g.getByProps("dirtyDispatch"),ct=g.getByProps("ActionTypes").ActionTypes;var ht=new class extends nt{get name(){return"Custom CSS"}get category(){return"customcss"}get id(){return"customcss"}get startDetached(){return"detached"==T.get(this.collection,this.category,"openAction")}get nativeOpen(){return"system"==T.get(this.collection,this.category,"openAction")}constructor(){super(),this.savedCss="",this.insertedCss="",this.isDetached=!1}async enabled(){window.ace||C.injectScript("ace-script","https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js").then(()=>{window.require.original&&(window.require=window.require.original)}),T.registerPanel(this.id,k.Panels.customcss,{order:2,element:()=>[O.createElement(ve,{text:k.CustomCSS.editorTitle}),O.createElement(ot,{css:this.savedCss,save:this.saveCSS.bind(this),update:this.insertCSS.bind(this),openNative:this.openNative.bind(this),openDetached:this.openDetached.bind(this),onChange:this.onChange.bind(this)})],onClick:e=>{if(this.isDetached)return;if(this.nativeOpen)return this.openNative();if(this.startDetached)return this.openDetached();const t=u.findInRenderTree(e._reactInternalFiber,e=>e&&e.onSetSection,{walkable:["child","memoizedProps","props","children"]});t&&t.onSetSection&&t.onSetSection(this.id)}}),this.loadCSS(),this.insertCSS(this.savedCss),this.watchContent()}disabled(){T.removePanel(this.id),this.unwatchContent()}watchContent(){if(this.watcher)return this.error("Already watching content.");const e={};this.log("Starting to watch content."),this.watcher=rt.watch(w.customCSS,{persistent:!1},async(t,s)=>{if(!t||!s)return;await new Promise(e=>setTimeout(e,50));try{rt.statSync(w.customCSS)}catch(t){if("ENOENT"!==t.code)return;delete e[s],this.saveCSS("")}const n=rt.statSync(w.customCSS);if(n&&n.mtime&&n.mtime.getTime()&&"number"==typeof n.mtime.getTime()&&e[s]!=n.mtime.getTime()&&(e[s]=n.mtime.getTime(),"change"==t)){const e=w.loadCustomCSS();if(e==this.savedCss)return;this.savedCss=e,this.insertCSS(this.savedCss),E.emit("customcss-updated",this.savedCss)}})}unwatchContent(){if(!this.watcher)return this.error("Was not watching content.");this.watcher.close(),delete this.watcher,this.log("No longer watching content.")}onChange(e){T.get("settings","customcss","liveUpdate")&&(this.insertCSS(e),this.saveCSS(e))}loadCSS(){this.savedCss=w.loadCustomCSS()}insertCSS(e){void 0===e?e=this.insertedCss:this.insertedCss=e,C.updateCustomCSS(e)}saveCSS(e){void 0!==e&&(this.savedCss=e),w.saveCustomCSS(this.savedCss)}openNative(){at.shell.openExternal("file://"+w.customCSS)}openDetached(e){const t=O.createRef(),s=O.createElement(ot,{id:"bd-floating-editor",ref:t,css:e,save:this.saveCSS.bind(this),update:this.insertCSS.bind(this),openNative:this.openNative.bind(this),onChange:this.onChange.bind(this)});ce.open({onClose:()=>{this.isDetached=!1},onResize:()=>{t&&t.current&&t.current.resize&&t.current.resize()},title:k.CustomCSS.editorTitle,id:"floating-editor-window",height:470,width:410,center:!0,resizable:!0,children:s,confirmClose:()=>!(!t||!t.current)&&t.current.hasUnsavedChanges,confirmationText:k.CustomCSS.confirmationText}),this.isDetached=!0,lt.close(),dt.dirtyDispatch({type:ct.LAYER_POP})}},ut=new class extends nt{get name(){return"WindowPrefs"}get category(){return"window"}get id(){return"transparency"}enabled(){this.setWindowPreference("transparent",!0),this.setWindowPreference("backgroundColor","#00000000"),this.showModal(k.WindowPrefs.enabledInfo)}disabled(){this.deleteWindowPreference("transparent"),this.deleteWindowPreference("backgroundColor"),this.showModal(k.WindowPrefs.disabledInfo)}showModal(e){this.initialized&&W.showConfirmationModal(k.Modals.additionalInfo,e,{confirmText:k.Modals.restartNow,cancelText:k.Modals.restartLater,onConfirm:()=>{const e=s(0).remote.app;e.relaunch(),e.exit()}})}getWindowPreference(e){return(w.getData("windowprefs")||{})[e]}setWindowPreference(e,t){const s=w.getData("windowprefs")||{};s[e]=t,w.setData("windowprefs",s)}deleteWindowPreference(e){const t=w.getData("windowprefs")||{};delete t[e],w.setData("windowprefs",t)}},pt=new class extends nt{get name(){return"24Hour"}get category(){return"general"}get id(){return"twentyFourHour"}enabled(){this.inject24Hour()}disabled(){this.unpatchAll()}inject24Hour(){const e=new RegExp("([0-9]{1,2}):([0-9]{1,2})\\s(AM|PM)"),t=(t,s,n)=>{const i=n.match(e);if(i&&4===i.length)return"AM"===i[3]?n.replace(i[0],`${"12"===i[1]?"00":i[1].padStart(2,"0")}:${i[2]}`):n.replace(i[0],`${"12"===i[1]?"12":parseInt(i[1])+12}:${i[2]}`)};this.after(f.TimeFormatter,"calendarFormat",t),this.after(f.TimeFormatter,"dateFormat",t)}};const mt=new RegExp("^(?!da-)((?:[A-Za-z]|[0-9]|-)+)-(?:[A-Za-z]|[0-9]|-|_){6}$");var gt=new class extends nt{get id(){return"classNormalizer"}get category(){return"general"}get name(){return"ClassNormalizer"}enabled(){this.hasPatched||(this.patchClassModules(g.getModules(this.moduleFilter.bind(this))),this.normalizeElement(document.querySelector("#app-mount")),this.hasPatched=!0,this.patchDOMMethods())}disabled(){this.hasPatched&&(this.unpatchClassModules(g.getModules(this.moduleFilter.bind(this))),this.revertElement(document.querySelector("#app-mount")),this.hasPatched=!1)}patchClassModules(e){for(const t of e)this.patchClassModule("da",t)}unpatchClassModules(e){for(const t of e)this.unpatchClassModule("da",t)}shouldIgnore(e){return!isNaN(e)||(!!(e.endsWith("px")||e.endsWith("ch")||e.endsWith("em")||e.endsWith("ms"))||(!!e.startsWith("layerContainer-")||(!(!e.startsWith("#")||7!=e.length&&4!=e.length)||!(!e.includes("calc(")&&!e.includes("rgba")))))}moduleFilter(e){if("object"!=typeof e||Array.isArray(e))return!1;if(e.__esModule)return!1;if(!Object.keys(e).length)return!1;for(const t in e){const s=e[t];if("string"!=typeof s)return!1;if(!this.shouldIgnore(s)){if(1===s.split("-").length)return!1;if(!mt.test(s.split(" ")[0]))return!1}}return!0}patchClassModule(e,t){for(const s in t){const n=t[s];if(this.shouldIgnore(n))continue;const i=n.split(" ");for(const n of i){const i=n.match(mt);if(!i||!i.length||i.length<2)continue;const o=i[1].split("-").map((e,t)=>t?e[0].toUpperCase()+e.slice(1):e).join("");t[s]+=` ${e}-${o}`}}}unpatchClassModule(e,t){for(const s in t){const n=t[s];if(this.shouldIgnore(n))continue;let i="";const o=n.split(" ");for(const t of o)t.startsWith(e+"-")||(i+=" "+t);t[s]=i.trim()}}normalizeElement(e){if(!(e instanceof Element))return;const t=e.classList;for(let s=0,n=t.length;st?e[0].toUpperCase()+e.slice(1):e).join("");e.classList.add("da-"+n)}for(const t of e.children)this.normalizeElement(t)}revertElement(e){if(!(e instanceof Element))return;e.children&&e.children.length&&this.revertElement(e.children[0]),e.nextElementSibling&&this.revertElement(e.nextElementSibling);const t=e.classList,s=[];for(let e=0;e{const o=[];t&&o.push("category="+t.replace(/ /g,"%20")),e&&o.push("term="+e.replace(/ /g,"%20")),n&&o.push("from="+n);const r="?"+o.join("&");i.get({url:`${this.endPoint}${r}${r?"&schema=new":"?schema=new"}`,json:!0},(e,t,n)=>{if(e)return s(null);const i=n.size+n.from;s({servers:n.results,size:n.size,from:n.from,total:n.total,next:i>=n.total?null:i})})})}static async join(e,t=!1){if(t)return vt.acceptInvite(e);try{return await fetch(`${this.joinEndPoint}/${e}`,{method:"GET",credentials:"include",mode:"cors",headers:{Accept:"application/json","Content-Type":"application/json"}}),!0}catch(e){return!1}}static async checkConnection(){try{const e=await fetch("https://auth.discordservers.com/info",{method:"GET",credentials:"include",mode:"cors",headers:{Accept:"application/json","Content-Type":"application/json"}}),t=await e.json();return this._accessToken=t.access_token,t}catch(e){return!1}}static connect(){return new Promise(e=>{const t=new wt(this.windowOptions),s="https://auth.discordservers.com/connect?scopes=guilds.join&previousUrl="+this.connectEndPoint;t.webContents.on("did-navigate",(s,n)=>{n==this.connectEndPoint&&(t.close(),e())}),t.loadURL(s)})}static get windowOptions(){return{width:380,height:450,backgroundColor:"#282b30",show:!0,resizable:!0,maximizable:!1,minimizable:!1,alwaysOnTop:!0,frame:!1,center:!0,webPreferences:{nodeIntegration:!1}}}}const St=g.getByDisplayName("SettingsView");class Et extends O.Component{get categoryButtons(){return["All","FPS Games","MMO Games","Strategy Games","MOBA Games","RPG Games","Tabletop Games","Sandbox Games","Simulation Games","Music","Community","Language","Programming","Other"]}constructor(e){super(e),this.state={category:"All",query:"",loading:!0,user:null,results:{servers:[],size:0,from:0,total:0,next:null}},this.changeCategory=this.changeCategory.bind(this),this.searchKeyDown=this.searchKeyDown.bind(this),this.connect=this.connect.bind(this),this.loadNextPage=this.loadNextPage.bind(this),this.join=this.join.bind(this)}componentDidMount(){this.checkConnection()}async checkConnection(){const e=await Ct.checkConnection();if(!e)return this.setState({loading:!0,user:null});this.setState({user:e}),this.search()}async connect(){await Ct.connect(),this.checkConnection()}searchKeyDown(e){this.state.loading||13!==e.which||this.search(e.target.value)}async search(e="",t=0){this.setState({query:e,loading:!0});const s=await Ct.search({term:e,category:"All"==this.state.category?"":this.state.category,from:t});if(!s)return this.setState({results:{servers:[],size:0,from:0,total:0,next:null}});this.setState({loading:!1,results:s})}async changeCategory(e){this.state.loading||(await new Promise(t=>this.setState({category:e},t)),this.search())}loadNextPage(){this.state.loading||this.search(this.state.query,this.state.results.next)}async join(e,t=!1){return await Ct.join(e,t)}get searchBox(){return O.createElement(je,{onKeyDown:this.searchKeyDown,placeholder:k.PublicServers.search+"..."})}get title(){if(!this.state.user)return k.PublicServers.notConnected;if(this.state.loading)return k.PublicServers.loading+"...";const e=this.state.results.from+1,t=this.state.results.total,s=this.state.results.next?this.state.results.next:t;let n=k.PublicServers.results.format({start:e,end:s,total:t,category:this.state.category});return this.state.query&&(n+=" "+k.PublicServers.query.format({query:this.state.query})),n}get content(){const e=this.state.user?null:{title:k.PublicServers.connect,onClick:this.connect},t="All"!=this.state.category&&this.state.user?null:this.bdServer,s=this.state.results.servers.map(e=>O.createElement(ft,{key:e.identifier,server:e,joined:Ct.hasJoined(e.identifier),join:this.join,defaultAvatar:Ct.getDefaultAvatar}));return[O.createElement(ve,{text:this.title,button:e}),t,s,this.state.results.next?this.nextButton:null,this.state.results.servers.length>0&&O.createElement(ve,{text:this.title})]}get nextButton(){return O.createElement("button",{type:"button",className:"bd-button bd-button-next",onClick:this.loadNextPage},this.state.loading?k.PublicServers.loading:k.PublicServers.loadMore)}get connection(){const{user:e}=this.state;return e?O.createElement("div",{id:"bd-connection"},O.createElement("div",{className:"bd-footnote"},k.PublicServers.connection.format(e)),O.createElement("button",{type:"button",className:"bd-button bd-button-reconnect",onClick:this.connect},k.PublicServers.reconnect)):O.createElement("div",{id:"bd-connection"})}get bdServer(){const e={name:"BetterDiscord",online:"7500+",members:"20000+",categories:["community","programming","support"],description:"Official BetterDiscord server for plugins, themes, support, etc",identifier:"86004744966914048",iconUrl:"https://cdn.discordapp.com/icons/86004744966914048/292e7f6bfff2b71dfd13e508a859aedd.webp",nativejoin:!0,invite_code:"0Tmfo5ZbORCRqbAd",pinned:!0};return O.createElement(ft,{server:e,pinned:!0,joined:Ct.hasJoined(e.identifier),defaultAvatar:Ct.getDefaultAvatar})}render(){const e=this.categoryButtons.map(e=>({section:e,label:e,element:()=>this.content}));return O.createElement(St,{onClose:this.props.close,onSetSection:this.changeCategory,section:this.state.category,sections:[{section:"HEADER",label:k.PublicServers.search},{section:"CUSTOM",element:()=>this.searchBox},{section:"HEADER",label:k.PublicServers.categories},...e,{section:"DIVIDER"},{section:"HEADER",label:O.createElement("a",{href:"https://discordservers.com",target:"_blank"},"DiscordServers.com")},{section:"DIVIDER"},{section:"CUSTOM",element:()=>this.connection}],theme:"dark"})}}const Mt=g.getByProps("pushLayer");var xt=new class extends nt{get name(){return"PublicServers"}get category(){return"general"}get id(){return"publicServers"}enabled(){const e=g.find(e=>e.default&&"NavigableGuilds"==e.default.displayName),t=g.findByDisplayName("Guilds");e||t||this.warn("Can't find GuildList component"),this.guildPatch=this.after(e||t.prototype,e?"default":"render",this._appendButton),this._appendButton()}disabled(){this.unpatchAll(),h.query("#bd-pub-li").remove()}_appendButton(){const e=f.GuildClasses.wrapper.split(" ")[0],t=h.query(`.${e} .scroller-2TZvBN >:first-child`);h.after(t,this.button)}openPublicServers(){Mt.pushLayer(()=>f.React.createElement(Et,{close:Mt.popLayer}))}get button(){const e=h.createElement(`
`),t=h.createElement(`
${k.PublicServers.button}
`);return t.addEventListener("click",()=>{this.openPublicServers()}),e.append(t),e}},Nt=new class extends nt{get name(){return"VoiceDisconnect"}get category(){return"general"}get id(){return"voiceDisconnect"}constructor(){super(),this.beforeUnload=this.beforeUnload.bind(this)}enabled(){window.addEventListener("beforeunload",this.beforeUnload)}disabled(){window.removeEventListener("beforeunload",this.beforeUnload)}beforeUnload(){f.ChannelActions.selectVoiceChannel(null,null)}};const Pt=g.getModule(e=>e.default&&e.default.displayName&&"Message"==e.default.displayName);var Dt=new class extends nt{get name(){return"ColoredText"}get category(){return"appearance"}get id(){return"coloredText"}enabled(){this.injectColoredText()}disabled(){this.unpatchAll()}injectColoredText(){this.after(Pt.prototype,"render",(e,t,s)=>{this.after(s.props,"children",{silent:!0,after:({returnValue:t})=>{const s=t.props.children[1],n=e.props.message.colorString;s&&n&&(s.props.style={color:n})}})})}removeColoredText(){document.querySelectorAll(".markup-2BOw-j").forEach(e=>{e.style.setProperty("color","")})}},At=new class extends nt{get name(){return"DarkMode"}get category(){return"appearance"}get id(){return"darkMode"}enabled(){document.getElementById("app-mount").classList.add("bda-dark","bd-dark")}disabled(){document.getElementById("app-mount").classList.remove("bda-dark","bd-dark")}},kt=new class extends nt{get name(){return"MinimalMode"}get category(){return"appearance"}get id(){return"minimalMode"}get hideChannelsID(){return"hideChannels"}get hideChannels(){return this.get(this.hideChannelsID)}constructor(){super(),this.enableHideChannels=this.enableHideChannels.bind(this),this.disableHideChannels=this.disableHideChannels.bind(this)}enabled(){document.body.classList.add("bd-minimal"),this.hideChannels&&this.enableHideChannels(),this.hideChannelCancel=this.registerSetting(this.hideChannelsID,this.enableHideChannels,this.disableHideChannels)}disabled(){document.body.classList.remove("bd-minimal"),this.hideChannels&&this.disableHideChannels(),this.hideChannelCancel&&this.hideChannelCancel()}enableHideChannels(){document.body.classList.add("bd-minimal-chan")}disableHideChannels(){document.body.classList.remove("bd-minimal-chan")}},Tt=new class extends nt{get name(){return"VoiceMode"}get category(){return"appearance"}get id(){return"voiceMode"}enabled(){document.querySelector(".chat-3bRxxu").style.setProperty("visibility","hidden"),document.querySelector(".chat-3bRxxu").style.setProperty("min-width","0px"),document.querySelector(".channels-Ie2l6A").style.setProperty("flex-grow","100000")}disabled(){document.querySelector(".chat-3bRxxu").style.setProperty("visibility",""),document.querySelector(".chat-3bRxxu").style.setProperty("min-width",""),document.querySelector(".channels-Ie2l6A").style.setProperty("flex-grow","")}};const Lt=g.getByDisplayName("Tooltip");class jt extends O.Component{constructor(e){super(e),this.state={shouldAnimate:!this.animateOnHover,isFavorite:this.props.isFavorite},this.onMouseEnter=this.onMouseEnter.bind(this),this.onMouseLeave=this.onMouseLeave.bind(this),this.onClick=this.onClick.bind(this),this.toggleFavorite=this.toggleFavorite.bind(this)}get animateOnHover(){return T.get("emotes","general","animateOnHover")}get label(){return this.props.modifier?`${this.props.name}:${this.props.modifier}`:this.props.name}get modifierClass(){return this.props.modifier?" emote"+this.props.modifier:""}onMouseEnter(){!this.state.shouldAnimate&&this.animateOnHover&&this.setState({shouldAnimate:!0})}onMouseLeave(){this.state.shouldAnimate&&this.animateOnHover&&this.setState({shouldAnimate:!1})}onClick(e){this.props.onClick&&this.props.onClick(e)}toggleFavorite(e){e.preventDefault(),e.stopPropagation(),this.state.isFavorite?E.emit("emotes-favorite-removed",this.label):E.emit("emotes-favorite-added",this.label,this.props.url),this.setState({isFavorite:!this.state.isFavorite})}render(){return O.createElement(Lt,{color:"black",position:"top",text:this.label,delay:750},e=>O.createElement("div",Object.assign({className:"emotewrapper"+(this.props.jumboable?" jumboable":""),onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,onClick:this.onClick},e),O.createElement("img",{draggable:!1,className:"emote"+this.modifierClass+(this.props.jumboable?" jumboable":"")+(this.state.shouldAnimate?"":" stop-animation"),dataModifier:this.props.modifier,alt:this.label,src:this.props.url}),O.createElement("input",{className:"fav"+(this.state.isFavorite?" active":""),title:k.Emotes.favoriteAction,type:"button",onClick:this.toggleFavorite})))}}const Bt=s(3),It={TwitchGlobal:new A("https://static-cdn.jtvnw.net/emoticons/v1/{{id}}/1.0"),TwitchSubscriber:new A("https://static-cdn.jtvnw.net/emoticons/v1/{{id}}/1.0"),FrankerFaceZ:new A("https://cdn.frankerfacez.com/emoticon/{{id}}/1"),BTTV:new A("https://cdn.betterttv.net/emote/{{id}}/1x")},zt={TwitchGlobal:{},TwitchSubscriber:{},BTTV:{},FrankerFaceZ:{}},Ft=[],Ot=["twitch","subscriber","bttv","ffz"],Rt=["flip","spin","pulse","spin2","spin3","1spin","2spin","3spin","tr","bl","br","shake","shake2","shake3","flap"];var Ut=new class extends nt{get name(){return"Emotes"}get collection(){return"settings"}get category(){return"general"}get id(){return"emotes"}get categories(){return Object.keys(zt).filter(e=>this.isCategoryEnabled(e))}get shouldDownload(){return T.get("emotes",this.category,"download")}isCategoryEnabled(e){return super.get("emotes","categories",e.toLowerCase())}get(e){return super.get("emotes","general",e)}get MessageComponent(){return g.find(e=>e.default&&e.default.displayName&&"Message"==e.default.displayName)}get Emotes(){return zt}get TwitchGlobal(){return zt.TwitchGlobal}get TwitchSubscriber(){return zt.TwitchSubscriber}get BTTV(){return zt.BTTV}get FrankerFaceZ(){return zt.FrankerFaceZ}get blacklist(){return Ft}get favorites(){return this.favoriteEmotes}getUrl(e,t){return It[e].format({id:zt[e][t]})}getCategory(e){return zt[e]}getRemoteFile(e){return u.repoUrl(`assets/emotes/${e.toLowerCase()}.json`)}initialize(){super.initialize();const e=w.getBDData("favoriteEmotes");this.favoriteEmotes=e||{},this.addFavorite=this.addFavorite.bind(this),this.removeFavorite=this.removeFavorite.bind(this),this.onCategoryToggle=this.onCategoryToggle.bind(this),this.resetEmotes=this.resetEmotes.bind(this)}async enabled(){T.registerCollection("emotes","Emotes",o,{title:k.Emotes.clearEmotes,onClick:this.resetEmotes}),await this.getBlacklist(),await this.loadEmoteData(),E.on("emotes-favorite-added",this.addFavorite),E.on("emotes-favorite-removed",this.removeFavorite),E.on("setting-updated",this.onCategoryToggle),this.patchMessageContent()}disabled(){E.off("setting-updated",this.onCategoryToggle),E.off("emotes-favorite-added",this.addFavorite),E.off("emotes-favorite-removed",this.removeFavorite),T.removeCollection("emotes"),this.emptyEmotes(),this.cancelEmoteRender&&(this.cancelEmoteRender(),delete this.cancelEmoteRender)}onCategoryToggle(e,t,s,n){if("emotes"==e&&"categories"==t)return n?this.loadEmoteData(s):this.unloadEmoteData(s)}addFavorite(e,t){this.favoriteEmotes.hasOwnProperty(e)||(this.favoriteEmotes[e]=t),this.saveFavorites()}removeFavorite(e){this.favoriteEmotes.hasOwnProperty(e)&&(delete this.favoriteEmotes[e],this.saveFavorites())}isFavorite(e){return this.favoriteEmotes.hasOwnProperty(e)}saveFavorites(){w.setBDData("favoriteEmotes",this.favoriteEmotes)}emptyEmotes(){for(const e in zt)Object.assign(zt,{[e]:{}})}patchMessageContent(){this.cancelEmoteRender||(this.cancelEmoteRender=this.before(this.MessageComponent,"default",(e,t)=>{const s=t[0].childrenMessageContent.props.content;if(!s||!s.length)return;for(let e=0;e"string"==typeof e&&""==e.replace(/\s*/,"")||(!(!e.type||"BDEmote"!=e.type.name)||!!(e.props&&e.props.children&&e.props.children.props&&e.props.children.props.emojiName))))for(const e of s)"object"==typeof e&&("BDEmote"==e.type.name?e.props.jumboable=!0:e.props&&e.props.children&&e.props.children.props&&e.props.children.props.emojiName&&(e.props.children.props.jumboable=!0))}))}async getBlacklist(){try{const e="Blacklist",t=w.emotesExist(e),s=await this.isCacheValid(e),n=s||!s&&t&&!this.shouldDownload?w.getEmoteData(e):await this.downloadEmotes(e);Ft.push(...n)}catch(e){}}isCacheValid(e){return new Promise(t=>{const s=w.getCacheHash("emotes",e);if(!s)return t(!1);Bt.head({url:this.getRemoteFile(e),headers:{"If-None-Match":s}},(e,s)=>{t(304==s.statusCode)})})}async loadEmoteData(e){e||(e=this.categories),Array.isArray(e)||(e=[e]);const t=Object.keys(zt);e=e.map(e=>t.find(t=>t.toLowerCase()==e.toLowerCase())),q.show(k.Emotes.loading,{type:"info"}),this.emotesLoaded=!1;for(const t of e){const e=w.emotesExist(t),s=await this.isCacheValid(t);let n=null;if(s||!s&&e&&!this.shouldDownload){this.log(`Loading ${t} emotes from local cache.`);const e=w.getEmoteData(t);Object.keys(e).length>0&&(n=e)}n||(n=await this.downloadEmotes(t)),Object.assign(zt[t],n),await new Promise(e=>setTimeout(e,1e3))}this.emotesLoaded=!0,E.dispatch("emotes-loaded"),q.show(k.Emotes.loaded,{type:"success"})}unloadEmoteData(e){e||(e=this.categories),Array.isArray(e)||(e=[e]);const t=Object.keys(zt);e=e.map(e=>t.find(t=>t.toLowerCase()==e.toLowerCase()));for(const t of e)delete zt[t],zt[t]={}}downloadEmotes(e){const t=this.getRemoteFile(e);this.log(`Downloading ${e} from ${t}`);const s={url:t,timeout:1e4,json:!0};return new Promise(t=>{Bt.get(s,(s,n,i)=>{if(s||200!=n.statusCode)return this.stacktrace(`Could not download ${e} emotes.`,s),t({});for(const e in i)(e.length<4||Ft.includes(e)||!i[e])&&delete i[e];w.saveEmoteData(e,i),w.setCacheHash("emotes",e,n.headers.etag),t(i),this.log("Downloaded "+e)})})}resetEmotes(){const e=Object.keys(zt);this.unloadEmoteData(e);for(const t of e)w.invalidateCache("emotes",t);this.loadEmoteData()}};const Ht=(e,t,s={})=>{const{onContextMenu:n,onClick:i}=s,o=h.createElement(`
\n ${e}\n
`);return n&&o.addEventListener("contextmenu",n),o.addEventListener("click",i),o};var qt=new class extends nt{get name(){return"EmoteMenu"}get collection(){return"emotes"}get category(){return"general"}get id(){return"emoteMenu"}get hideEmojisID(){return"hideEmojiMenu"}get hideEmojis(){return this.get(this.hideEmojisID)}constructor(){super(),this.lastTab="bd-qem-emojis",this.qmeHeader=h.createElement('
\n \n \n
');for(const e of this.qmeHeader.getElementsByTagName("button"))e.addEventListener("click",this.switchMenu.bind(this));this.teContainer=h.createElement('
\n
\n
\n
\n\n
\n
\n
\n
'),this.teContainerInner=this.teContainer.querySelector(".emote-menu-inner"),this.faContainer=h.createElement('
\n
\n
\n
\n\n
\n
\n
\n
'),this.faContainerInner=this.faContainer.querySelector(".emote-menu-inner"),this.observer=new MutationObserver(e=>{for(const t of e)this.observe(t)}),this.enableHideEmojis=this.enableHideEmojis.bind(this),this.disableHideEmojis=this.disableHideEmojis.bind(this),this.updateTwitchEmotes=this.updateTwitchEmotes.bind(this)}async enabled(){return W.alert("Emote Menu Broken","Emote Menu is currently broken, it is recommended to disable this until it is fixed.")}disabled(){E.off("emotes-loaded",this.updateTwitchEmotes),this.observer.disconnect(),this.disableHideEmojis(),this.hideEmojiCancel&&this.hideEmojiCancel()}enableHideEmojis(){const e=document.querySelector(".emojiPicker-3m1S-j");e&&e.classList.add("bd-qme-hidden")}disableHideEmojis(){const e=document.querySelector(".emojiPicker-3m1S-j");e&&e.classList.remove("bd-qme-hidden")}insertEmote(e){const t=u.getTextArea();u.insertText(t[0]," "==t.val().slice(-1)?t.val()+e:t.val()+" "+e)}favContext(e){e.stopPropagation();const t=e.target.closest(".emote-container").children[0],s=$('
Remove
');s.css({top:e.pageY-$("#bd-qem-favourite-container").offset().top,left:e.pageX-$("#bd-qem-favourite-container").offset().left}),$(t).parent().append(s),s.on("click",e=>{e.preventDefault(),e.stopPropagation(),$(t).remove(),Ut.removeFavorite($(t).attr("title")),this.updateFavorites(),$(document).off("mousedown.emotemenu")}),$(document).on("mousedown.emotemenu",(function(e){"removemenu"!=e.target.id&&($("#removemenu").remove(),$(document).off("mousedown.emotemenu"))}))}switchMenu(e){let t="string"==typeof e?e:e.target.id;"bd-qem-emojis"==t&&this.hideEmojis&&(t="bd-qem-favourite");const s=$("#bd-qem-twitch"),n=$("#bd-qem-favourite"),i=$("#bd-qem-emojis");switch(s.removeClass("active"),n.removeClass("active"),i.removeClass("active"),$(".emojiPicker-3m1S-j").hide(),$("#bd-qem-favourite-container").hide(),$("#bd-qem-twitch-container").hide(),t){case"bd-qem-twitch":s.addClass("active"),$("#bd-qem-twitch-container").show();break;case"bd-qem-favourite":n.addClass("active"),$("#bd-qem-favourite-container").show();break;case"bd-qem-emojis":i.addClass("active"),$(".emojiPicker-3m1S-j").show(),$(".emojiPicker-3m1S-j input").focus()}t&&(this.lastTab=t)}observe(e){if(!(e.addedNodes.length&&e.addedNodes[0]instanceof Element))return;const t=e.addedNodes[0];if(!t.classList.contains("layer-v9HyYc")||!t.getElementsByClassName("emojiPicker-3m1S-j").length||t.querySelector(".emojiPicker-3m1S-j").parentElement.classList.contains("animatorLeft-1EQxU0"))return;const s=$(t);this.hideEmojis?s.addClass("bd-qme-hidden"):s.removeClass("bd-qme-hidden"),s.prepend(this.qmeHeader),s.append(this.teContainer),s.append(this.faContainer),this.switchMenu(this.lastTab)}updateTwitchEmotes(){for(;this.teContainerInner.firstChild;)this.teContainerInner.firstChild.remove();for(const e in Ut.getCategory("TwitchGlobal")){if(!Ut.getCategory("TwitchGlobal").hasOwnProperty(e))continue;const t=Ut.getUrl("TwitchGlobal",e),s=Ht(e,t,{onClick:this.insertEmote.bind(this,e)});this.teContainerInner.append(s)}}updateFavorites(){for(;this.faContainerInner.firstChild;)this.faContainerInner.firstChild.remove();for(const e in Ut.favorites){const t=Ut.favorites[e],s=Ht(e,t,{onClick:this.insertEmote.bind(this,e),onContextMenu:this.favContext.bind(this)});this.faContainerInner.append(s)}Ut.saveFavorites()}},$t=new class extends nt{get name(){return"DeveloperMode"}get category(){return"developer"}get id(){return"developerMode"}get selectorModeID(){return"copySelector"}get selectorMode(){return this.get(this.selectorModeID)}constructor(){super(),this.copySelectorListener=this.copySelectorListener.bind(this)}enabled(){document.addEventListener("contextmenu",this.copySelectorListener)}disabled(){document.removeEventListener("contextmenu",this.copySelectorListener)}copySelectorListener(e){e.stopPropagation();const t=this.getSelector(e.target);setImmediate((function(){let s=h.query(".contextMenu-HLZMGh");if(!s){const t=h.query("#app-mount"),n=h.createElement('
');s=h.createElement('
'),n.append(s),t.append(n),n.style.top=e.clientY+"px",n.style.left=e.clientX+"px",n.style.zIndex="1002";const i=function(e){e.keyCode&&27!==e.keyCode||(n.remove(),document.removeEventListener("click",i),document.removeEventListener("contextmenu",i),document.removeEventListener("keyup",i))};document.addEventListener("click",i),document.addEventListener("contextmenu",i),document.addEventListener("keyup",i)}const n=h.createElement('
'),i=h.createElement('
');i.append(h.createElement(`
${k.Developer.copySelector}
`)),i.addEventListener("click",()=>{f.ElectronModule.copy(t),s.style.display="none"}),n.append(i),s.append(n)}))}getSelector(e){if(e.id)return"#"+e.id;const t=this.getRules(e),s=t[t.length-1];return s?s.selectorText:e.classList.length?"."+Array.from(e.classList).join("."):"."+Array.from(e.parentElement.classList).join(".")}getRules(e,t=e.ownerDocument.styleSheets){return[...t].filter(e=>!e.href||!e.href.includes("BetterDiscordApp")).map(e=>[...e.cssRules||[]]).flat().filter(t=>t&&t.selectorText&&e.matches(t.selectorText)&&t.style.length&&t.selectorText.split(", ").length<8&&!t.selectorText.split(", ").includes("*"))}},Wt=new class extends nt{get name(){return"Debugger"}get category(){return"developer"}get id(){return"debuggerHotkey"}enabled(){document.addEventListener("keydown",this.debugListener)}disabled(){document.removeEventListener("keydown",this.debugListener)}debugListener(e){119!==e.which&&118!=e.which||(e.preventDefault(),e.stopImmediatePropagation())}};const _t=s(0),Gt=s(2),Qt=s(1),Vt=_t.remote.BrowserWindow;var Zt=new class extends nt{get name(){return"ReactDevTools"}get category(){return"developer"}get id(){return"reactDevTools"}initialize(){super.initialize(),this.findExtension()}findExtension(){let e="";if(e="win32"===process.platform?Qt.resolve(process.env.LOCALAPPDATA,"Google/Chrome/User Data"):"linux"===process.platform?Qt.resolve(process.env.HOME,".config/google-chrome"):"darwin"===process.platform?Qt.resolve(process.env.HOME,"Library/Application Support/Google/Chrome"):Qt.resolve(process.env.HOME,".config/chromium"),e+="/Default/Extensions/fmkadmapgofadopljbjfkapdkoienihi/",Gt.existsSync(e)){const t=Gt.readdirSync(e);e=Qt.resolve(e,t[t.length-1])}this.extensionPath=e,this.isExtensionInstalled=Gt.existsSync(e)}enabled(){if(this.isExtensionInstalled||this.findExtension(),!this.isExtensionInstalled)return W.alert(k.ReactDevTools.notFound,k.ReactDevTools.notFoundDetails);Vt.addDevToolsExtension(this.extensionPath)?this.log("Successfully installed react devtools."):this.error("Couldn't find react devtools in chrome extensions!")}disabled(){this.isExtensionInstalled&&Vt.removeDevToolsExtension("React Developer Tools")}};class Yt extends O.Component{render(){return O.createElement("svg",{className:"bd-logo "+this.props.className,height:"100%",width:this.props.size||"16px",viewBox:"0 0 2000 2000",style:{fillRule:"evenodd",clipRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}},O.createElement("metadata",null),O.createElement("defs",null,O.createElement("filter",{id:"shadow1"},O.createElement("feDropShadow",{dx:"20",dy:"0",stdDeviation:"20",floodColor:"rgba(0,0,0,0.35)"})),O.createElement("filter",{id:"shadow2"},O.createElement("feDropShadow",{dx:"15",dy:"0",stdDeviation:"20",floodColor:"rgba(255,255,255,0.15)"})),O.createElement("filter",{id:"shadow3"},O.createElement("feDropShadow",{dx:"10",dy:"0",stdDeviation:"20",floodColor:"rgba(0,0,0,0.35)"}))),O.createElement("g",null,O.createElement("path",{style:{filter:"url(#shadow3)"},fill:"#171717",opacity:"1",d:"M1195.44+135.442L1195.44+135.442L997.6+136.442C1024.2+149.742+1170.34+163.542+1193.64+179.742C1264.34+228.842+1319.74+291.242+1358.24+365.042C1398.14+441.642+1419.74+530.642+1422.54+629.642L1422.54+630.842L1422.54+632.042C1422.54+773.142+1422.54+1228.14+1422.54+1369.14L1422.54+1370.34L1422.54+1371.54C1419.84+1470.54+1398.24+1559.54+1358.24+1636.14C1319.74+1709.94+1264.44+1772.34+1193.64+1821.44C1171.04+1837.14+1025.7+1850.54+1000+1863.54L1193.54+1864.54C1539.74+1866.44+1864.54+1693.34+1864.54+1296.64L1864.54+716.942C1866.44+312.442+1541.64+135.442+1195.44+135.442Z"}),O.createElement("path",{style:{filter:"url(#shadow2)"},fill:"#3E82E5",opacity:"1",d:"M1695.54+631.442C1685.84+278.042+1409.34+135.442+1052.94+135.442L361.74+136.442L803.74+490.442L1060.74+490.442C1335.24+490.442+1335.24+835.342+1060.74+835.342L1060.74+1164.84C1150.22+1164.84+1210.53+1201.48+1241.68+1250.87C1306.07+1353+1245.76+1509.64+1060.74+1509.64L361.74+1863.54L1052.94+1864.54C1409.24+1864.54+1685.74+1721.94+1695.54+1368.54C1695.54+1205.94+1651.04+1084.44+1572.64+999.942C1651.04+915.542+1695.54+794.042+1695.54+631.442Z"}),O.createElement("path",{style:{filter:"url(#shadow1)"},fill:"#FFFFFF",opacity:"1",d:"M1469.25+631.442C1459.55+278.042+1183.05+135.442+826.65+135.442L135.45+135.442L135.45+1004C135.45+1004+135.427+1255.21+355.626+1255.21C575.825+1255.21+575.848+1004+575.848+1004L577.45+490.442L834.45+490.442C1108.95+490.442+1108.95+835.342+834.45+835.342L664.65+835.342L664.65+1164.84L834.45+1164.84C923.932+1164.84+984.244+1201.48+1015.39+1250.87C1079.78+1353+1019.47+1509.64+834.45+1509.64L135.45+1509.64L135.45+1864.54L826.65+1864.54C1182.95+1864.54+1459.45+1721.94+1469.25+1368.54C1469.25+1205.94+1424.75+1084.44+1346.35+999.942C1424.75+915.542+1469.25+794.042+1469.25+631.442Z"})))}}const Jt=f.React,Kt=g.getByDisplayName("Tooltip");var Xt=new class{initialize(){u.suppressErrors(this.patchSocial.bind(this),"BD Social Patch")(),u.suppressErrors(this.patchGuildPills.bind(this),"BD Guild Pills Patch")(),u.suppressErrors(this.patchGuildListItems.bind(this),"BD Guild List Items Patch")(),u.suppressErrors(this.patchGuildSeparator.bind(this),"BD Guild Separator Patch")(),u.suppressErrors(this.patchMessageHeader.bind(this),"BD Message Header Patch")(),u.suppressErrors(this.patchMemberList.bind(this),"BD Member List Patch")()}patchSocial(){if(this.socialPatch)return;const e=g.getByDisplayName("TabBar"),t=g.getByDisplayName("Anchor");e&&(this.socialPatch=L.after("ComponentPatcher",e.prototype,"render",(e,s,n)=>{const o=n.props.children;if(!o||!o.length||o.length<3)return;if("Separator"!==o[o.length-3].type.displayName)return;if(!o[o.length-2].type.toString().includes("socialLinks"))return;if(t){const e=o[o.length-2].type,s=function(){const s=e(...arguments);return s.props.children.push(f.React.createElement(t,{className:"bd-social-link",href:"https://twitter.com/BandagedBD",title:"BandagedBD",target:"_blank"},f.React.createElement(Yt,{size:"16px",className:"bd-social-logo"}))),s};o[o.length-2].type=s}const r=f.React.createElement("div",{className:"colorMuted-HdFt4q size12-3cLvbJ"},"Injector "+i.version),a=`(${i.hash?i.hash.substring(0,7):i.branch})`,l=f.React.createElement("div",{className:"colorMuted-HdFt4q size12-3cLvbJ"},`BBD ${i.bbdVersion} `,f.React.createElement("span",{className:"versionHash-2gXjIB da-versionHash"},a)),d=o[o.length-1].type;o[o.length-1].type=function(){const e=d(...arguments);return e.props.children.splice(e.props.children.length-1,0,r),e.props.children.splice(1,0,l),e}}))}patchGuildListItems(){if(this.guildListItemsPatch)return;const e=f.GuildClasses.listItem.split(" ")[0],t=f.GuildClasses.blobContainer.split(" ")[0],s=u.getReactInstance(document.querySelector(`.${e} .${t}`).parentElement).return.type;s&&(this.guildListItemsPatch=L.after("ComponentPatcher",s.prototype,"render",(e,t,s)=>{if(!s||!e)return;const n=e.props;return s.props.className+=" bd-guild",n.unread&&(s.props.className+=" bd-unread"),n.selected&&(s.props.className+=" bd-selected"),n.audio&&(s.props.className+=" bd-audio"),n.video&&(s.props.className+=" bd-video"),n.badge&&(s.props.className+=" bd-badge"),n.animatable&&(s.props.className+=" bd-animatable"),s}))}patchGuildPills(){if(this.guildPillPatch)return;const e=g.getModule(e=>e.default&&!e.default.displayName&&e.default.toString&&e.default.toString().includes("translate3d"));e&&(this.guildPillPatch=L.after("ComponentPatcher",e,"default",(e,t,s)=>{const n=t[0];return n.unread&&(s.props.className+=" bd-unread"),n.selected&&(s.props.className+=" bd-selected"),n.hovered&&(s.props.className+=" bd-hovered"),s}))}patchGuildSeparator(){if(this.guildSeparatorPatch)return;const e=g.getByDisplayName("Guilds"),t=g.getByProps("renderListItem");if(!t||!e)return;const s=function(){const e=t.Separator(...arguments);return e.props.className+=" bd-guild-separator",e};this.guildSeparatorPatch=L.after("ComponentPatcher",e.prototype,"render",(e,t,n)=>{const i=u.findInReactTree(n,e=>e.type&&!e.type.displayName&&"function"==typeof e.type&&u.isEmpty(e.props));i&&(i.type=s)})}patchMessageHeader(){if(this.messageHeaderPatch)return;const e=g.getByProps("MessageTimestamp"),t=g.find(e=>"Anchor"==e.displayName);t&&e&&e.default&&(this.messageHeaderPatch=L.after("ComponentPatcher",e,"default",(e,s,n)=>{const i=u.getNestedProp(s[0],"message.author"),o=u.getNestedProp(n,"props.children.1.props.children.1.props.children");o&&i&&i.id&&"249746236008169473"===i.id&&Array.isArray(o)&&o.push(Jt.createElement(Kt,{color:"black",position:"top",text:"BandagedBD Developer"},e=>Jt.createElement(t,Object.assign({className:"bd-chat-badge",href:"https://github.com/rauenzi/BetterDiscordApp",title:"BandagedBD",target:"_blank"},e),Jt.createElement(Yt,{size:"16px",className:"bd-logo"}))))}))}patchMemberList(){if(this.memberListPatch)return;const e=g.findByDisplayName("MemberListItem"),t=g.find(e=>"Anchor"==e.displayName);t&&e&&e.prototype&&e.prototype.renderDecorators&&(this.memberListPatch=L.after("ComponentPatcher",e.prototype,"renderDecorators",(e,s,n)=>{const i=u.getNestedProp(e,"props.user"),o=u.getNestedProp(n,"props.children");o&&i&&i.id&&"249746236008169473"===i.id&&Array.isArray(o)&&o.push(Jt.createElement(Kt,{color:"black",position:"top",text:"BandagedBD Developer"},e=>Jt.createElement(t,Object.assign({className:"bd-member-badge",href:"https://github.com/rauenzi/BetterDiscordApp",title:"BandagedBD",target:"_blank"},e),Jt.createElement(Yt,{size:"16px",className:"bd-logo"}))))}))}};const es=s(2),ts=s(1),{ipcRenderer:ss}=s(0),ns=f.GuildClasses;!function(){const e=Object.getOwnPropertyDescriptor(HTMLIFrameElement.prototype,"contentWindow").get;Object.defineProperty(HTMLIFrameElement.prototype,"contentWindow",{get:function(){const t=Reflect.apply(e,this,arguments);return new Proxy(t,{getOwnPropertyDescriptor:function(e,t){if("localStorage"!==t)return Object.getOwnPropertyDescriptor(e,t)},get:function(e,t){if("localStorage"===t)return null;const s=e[t];return"function"==typeof s?s.bind(e):s}})}}),Object.defineProperty(Reflect,"apply",{value:Reflect.apply,writable:!1,configurable:!1}),Object.defineProperty(Function.prototype,"bind",{value:Function.prototype.bind,writable:!1,configurable:!1});const t=XMLHttpRequest.prototype.open;XMLHttpRequest.prototype.open=function(){const e=arguments[1];return e.toLowerCase().includes("api/webhooks")?null:Reflect.apply(t,this,arguments)}}(),function(){const e="betterdiscord/",t=s(4),n=t._load;t._load=function(t){if("betterdiscord"===t||t.startsWith(e)){if("bdapi"==t.substr(e.length))return Xe}return n.apply(this,arguments)}}(),window.BdApi=Xe,st.show(),new class{constructor(){ss.invoke("bd-config","get").then(e=>{this.hasStarted||(Object.assign(i,e),this.init())})}get dependencies(){return[{name:"jquery",type:"script",url:"//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js",backup:"//cdn.jsdelivr.net/gh/jquery/jquery@2.0.0/jquery.min.js",local:null},{name:"bd-stylesheet",type:"style",url:"//cdn.staticaly.com/gh/{{repo}}/BetterDiscordApp/{{hash}}/dist/style.min.css",backup:"//rauenzi.github.io/BetterDiscordApp/dist/style.min.css",local:"{{localServer}}/BetterDiscordApp/dist/style.min.css",localPath:"style.min.css"}]}setConfig(e){this.hasStarted||Object.assign(i,e)}async init(){if(this.hasStarted)return;this.hasStarted=!0;let e=new Promise(e=>e());if(window.$&&window.jQuery||(e=this.loadDependencies()),w.initialize(),await D.initialize(),i.versioni.version&&W.showConfirmationModal(k.Startup.updateAvailable,k.Startup.updateInfo.format({version:t}),{confirmText:k.Startup.updateNow,cancelText:k.Startup.maybeLater,onConfirm:async()=>{const e=()=>{W.alert(k.Startup.updateFailed,k.Startup.manualUpdate)};try{if(!await this.updateInjector())return e();const t=s(0).remote.app;t.relaunch(),t.exit()}catch(t){e()}}}),c.log("Startup","Initializing Settings"),T.initialize(),await this.waitForGuilds(),F.initialize(),Xt.initialize();for(const e in n)n[e].initialize();await e,c.log("Startup","Loading Plugins");const o=Ve.initialize();c.log("Startup","Loading Themes");const r=Ye.initialize();c.log("Startup","Removing Loading Icon"),st.hide(),c.log("Startup","Collecting Startup Errors"),W.showAddonErrors({plugins:o,themes:r});const a=w.getBDData("version");i.bbdVersion>a&&(W.showChangelogModal(l),w.setBDData("version",i.bbdVersion))}waitForGuilds(){let e=0;return new Promise(t=>{const s=function(){e++,"complete"!=document.readyState&&setTimeout(s,100);const n=ns.wrapper.split(" ")[0],o=ns.listItem.split(" ")[0],r=ns.blobContainer.split(" ")[0];return document.querySelectorAll(`.${n} .${o} .${r}`).length>0||e>=50?t(i.deferLoaded=!0):void setTimeout(s,100)};s()})}async loadDependencies(){for(const e of this.dependencies){if(i.local&&i.localPath&&e.localPath&&es.existsSync(ts.resolve(i.localPath,e.localPath))){const t=es.readFileSync(ts.resolve(i.localPath,e.localPath)).toString();C.injectStyle(e.name,t);continue}const t=u.formatString(i.local&&null!=e.local?e.local:e.url,{repo:i.repo,hash:i.hash,localServer:i.localServer});c.log("Startup",`Loading Resource (${t})`);const s=("script"==e.type?C.injectScript:C.linkStyle).bind(C);try{await s(e.name,t)}catch(n){const o=u.formatString(e.backup,{minified:i.minified?".min":""});c.stacktrace("Startup",`Could not load ${t}. Using backup ${o}`,n);try{await s(e.name,o)}catch(s){c.stacktrace("Startup",`Could not load ${t}. Using backup ${o}`,n),"jquery"===e.name&&W.alert(k.Startup.jqueryFailed,k.Startup.jqueryFailedDetails)}}}}async updateInjector(){const e=w.injectionPath;if(!e)return!1;const t=s(2),n=s(1),i=s(6),o=s(7),r=s(8),a=s(3),l=n.resolve(e,".."),d=n.basename(e),h="https://github.com/rauenzi/BetterDiscordApp/archive/injector.zip",u=n.resolve(l,"injector.zip"),p=n.resolve(l,"BetterDiscordApp-injector");c.log("InjectorUpdate","Downloading "+h);let m=await new Promise(e=>{a.get({url:h,encoding:null},async(s,n,i)=>{if(s||200!==n.statusCode)return e(!1);await new Promise(e=>t.exists(u,e))&&await new Promise(e=>t.rename(u,`${u}.bak${Math.round(performance.now())}`,e)),c.log("InjectorUpdate","Writing "+u),t.writeFile(u,i,t=>e(!t))})});if(!m)return m;await new Promise(e=>t.exists(p,e))&&await new Promise(e=>t.rename(p,`${p}.bak${Math.round(performance.now())}`,e));const g=await new Promise(e=>o.open(u,{lazyEntries:!0},(t,s)=>e(s)));g.on("entry",(function(e){if(e.fileName.endsWith("/"))return g.readEntry();c.log("InjectorUpdate","Extracting "+e.fileName);const s=n.resolve(l,e.fileName);r.sync(n.dirname(s)),g.openReadStream(e,(function(e,n){if(e)return m=!1;n.on("end",(function(){g.readEntry()})),n.pipe(t.createWriteStream(s))}))})),g.readEntry(),await new Promise(e=>g.once("end",e));const f=n.resolve(l,`${d}.bak${Math.round(performance.now())}`);return await new Promise(s=>t.rename(e,f,s)),c.log("InjectorUpdate",`Renaming ${n.basename(p)} to ${d}`),m=await new Promise(s=>t.rename(p,e,e=>s(!e))),m?m?(await new Promise(e=>i(f,e)),await new Promise(e=>t.unlink(u,e)),c.log("InjectorUpdate","Injector Updated!"),m):(c.err("InjectorUpdate","Something went wrong... restoring backups."),await new Promise(e=>i(p,e)),await new Promise(s=>t.rename(f,e,s)),m):(c.err("InjectorUpdate","Failed to rename the final directory"),m)}}}]); \ No newline at end of file diff --git a/package.json b/package.json index 7e85e34a..f1570781 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,9 @@ "watch-css": "gulp watch-css", "minify-css": "gulp minify-css", "lint-css": "stylelint src/styles/*.css && stylelint src/styles/**/*.css && stylelint dist/style.css", + "dist": "npm run minify", "minify": "npm run build-prod && npm run minify-css", - "build-all": "npm run build-prod && npm run build-css && npm run minify-css", + "build-all": "npm run build && npm run build-prod && npm run build-css && npm run minify-css", "lint": "npm run lint-js && npm run lint-css", "test": "mocha --require @babel/register --recursive \"./tests/*.js\"" }, diff --git a/src/data/config.js b/src/data/config.js index 74a83d5c..129e264b 100644 --- a/src/data/config.js +++ b/src/data/config.js @@ -1,5 +1,6 @@ export default { local: false, + localPath: "", localServer: "//localhost:8080", minified: true, version: "0.3.0", diff --git a/src/modules/core.js b/src/modules/core.js index 25c2acad..3821e218 100644 --- a/src/modules/core.js +++ b/src/modules/core.js @@ -1,3 +1,6 @@ +const fs = require("fs"); +const path = require("path"); + import LocaleManager from "./localemanager"; import Logger from "./logger"; @@ -17,6 +20,7 @@ import ComponentPatcher from "./componentpatcher"; import Strings from "./strings"; import LoadingIcon from "../loadingicon"; import Utilities from "./utilities"; +import { DOM } from "modules"; const {ipcRenderer} = require("electron"); const GuildClasses = DiscordModules.GuildClasses; @@ -44,7 +48,8 @@ export default class Core { type: "style", url: "//cdn.staticaly.com/gh/{{repo}}/BetterDiscordApp/{{hash}}/dist/style.min.css", backup: "//rauenzi.github.io/BetterDiscordApp/dist/style.min.css", - local: "{{localServer}}/BetterDiscordApp/dist/style.min.css" + local: "{{localServer}}/BetterDiscordApp/dist/style.min.css", + localPath: "style.min.css" } ]; } @@ -141,6 +146,13 @@ export default class Core { async loadDependencies() { for (const data of this.dependencies) { + if (Config.local && Config.localPath && data.localPath) { + if (fs.existsSync(path.resolve(Config.localPath, data.localPath))) { + const css = fs.readFileSync(path.resolve(Config.localPath, data.localPath)).toString(); + DOMManager.injectStyle(data.name, css); + continue; + } + } const url = Utilities.formatString((Config.local && data.local != null) ? data.local : data.url, {repo: Config.repo, hash: Config.hash, localServer: Config.localServer}); Logger.log(`Startup`, `Loading Resource (${url})`); const injector = (data.type == "script" ? DOMManager.injectScript : DOMManager.linkStyle).bind(DOMManager);