diff --git a/.eslintrc b/.eslintrc
index 7d8d06aa..7488ace1 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -32,16 +32,11 @@
"Set": false,
"WeakMap": false,
"Promise": false,
- "bdplugins": false,
- "bdthemes": false,
- "betterDiscordIPC": false,
- "bdVersion": false,
- "version": false,
- "_bdhash": true,
"ace": false,
"Reflect": false,
"DiscordNative": false,
"self": "off",
- "name": "off"
+ "name": "off",
+ "__non_webpack_require__": false
}
}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 98f97486..b512c09d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1 @@
-node_modules
-src
-webpack.config.js
-current.js
\ No newline at end of file
+node_modules
\ No newline at end of file
diff --git a/js/main.js b/js/main.js
index d25bc639..da6fe18b 100644
--- a/js/main.js
+++ b/js/main.js
@@ -1,5242 +1,767 @@
-/* BetterDiscordApp Core JavaScript
- * Version: 1.78
- * Author: Jiiks | http://jiiks.net
- * Date: 27/08/2015 - 16:36
- * Last Update: 01/05/2016
- * https://github.com/Jiiks/BetterDiscordApp
- */
-
-/* Localstorage fix */
-(function() {
-
- const __fs = window.require("fs");
- const __process = window.require("process");
- const __platform = __process.platform;
- const __dataPath = (__platform === "win32" ? __process.env.APPDATA : __platform === "darwin" ? __process.env.HOME + "/Library/Preferences" : process.env.HOME + "/.config") + "/BetterDiscord/";
- const localStorageFile = "localStorage.json";
-
- let __data = {};
- if (__fs.existsSync(`${__dataPath}${localStorageFile}`)) {
- try {
- __data = JSON.parse(__fs.readFileSync(`${__dataPath}${localStorageFile}`));
- }
- catch (err) {
- console.log(err);
- }
- }
- else if (__fs.existsSync(localStorageFile)) {
- try {
- __data = JSON.parse(__fs.readFileSync(localStorageFile));
- }
- catch (err) {
- console.log(err);
- }
- }
-
- const __ls = __data;
- __ls.setItem = function(i, v) {
- __ls[i] = v;
- this.save();
- };
- __ls.getItem = function(i) {
- return __ls[i] || null;
- };
- __ls.save = function() {
- __fs.writeFileSync(`${__dataPath}${localStorageFile}`, JSON.stringify(this), null, 4);
- };
-
- const __proxy = new Proxy(__ls, {
- set: function(target, name, val) {
- __ls[name] = val;
- __ls.save();
- },
- get: function(target, name) {
- return __ls[name] || null;
- }
- });
-
- window.localStorage = __proxy;
-
-})();
-
-(() => {
- const v2Loader = document.createElement("div");
- v2Loader.className = "bd-loaderv2";
- v2Loader.title = "BandagedBD is loading...";
- document.body.appendChild(v2Loader);
-})();
-
-/* global DiscordNative:false */
-
-var DataStore = (() => {
- const fs = require("fs");
- const path = require("path");
- const releaseChannel = DiscordNative.globals.releaseChannel;
-
- return new class DataStore {
- constructor() {
- this.data = {settings: {stable: {}, canary: {}, ptb: {}}};
- this.pluginData = {};
- }
-
- initialize() {
- try {
- if (!fs.existsSync(this.BDFile)) fs.writeFileSync(this.BDFile, JSON.stringify(this.data, null, 4));
- const data = require(this.BDFile);
- if (data.hasOwnProperty("settings")) this.data = data;
- if (!fs.existsSync(this.settingsFile)) return;
- let settings = require(this.settingsFile);
- fs.unlinkSync(this.settingsFile);
- if (settings.hasOwnProperty("settings")) settings = Object.assign({stable: {}, canary: {}, ptb: {}}, {[releaseChannel]: settings});
- else settings = Object.assign({stable: {}, canary: {}, ptb: {}}, settings);
- this.setBDData("settings", settings);
- }
- catch (err) {
- BdApi.alert("Corrupt Storage", "The bd storage has somehow become corrupt. You may either try to salvage the file or delete it then reload.");
- }
- }
-
- get BDFile() {return this._BDFile || (this._BDFile = path.resolve(bdConfig.dataPath, "bdstorage.json"));}
- get settingsFile() {return this._settingsFile || (this._settingsFile = path.resolve(bdConfig.dataPath, "bdsettings.json"));}
- getPluginFile(pluginName) {return path.resolve(ContentManager.pluginsFolder, pluginName + ".config.json");}
-
- getSettingGroup(key) {
- return this.data.settings[releaseChannel][key] || null;
- }
-
- setSettingGroup(key, data) {
- this.data.settings[releaseChannel][key] = data;
- fs.writeFileSync(this.BDFile, JSON.stringify(this.data, null, 4));
- }
-
- getBDData(key) {
- return this.data[key] || "";
- }
-
- setBDData(key, value) {
- this.data[key] = value;
- fs.writeFileSync(this.BDFile, JSON.stringify(this.data, null, 4));
- }
-
- getPluginData(pluginName, key) {
- if (this.pluginData[pluginName] !== undefined) return this.pluginData[pluginName][key] || undefined;
- if (!fs.existsSync(this.getPluginFile(pluginName))) return undefined;
- this.pluginData[pluginName] = JSON.parse(fs.readFileSync(this.getPluginFile(pluginName)));
- return this.pluginData[pluginName][key] || undefined;
- }
-
- setPluginData(pluginName, key, value) {
- if (value === undefined) return;
- if (this.pluginData[pluginName] === undefined) this.pluginData[pluginName] = {};
- this.pluginData[pluginName][key] = value;
- fs.writeFileSync(this.getPluginFile(pluginName), JSON.stringify(this.pluginData[pluginName], null, 4));
- }
-
- deletePluginData(pluginName, key) {
- if (this.pluginData[pluginName] === undefined) this.pluginData[pluginName] = {};
- delete this.pluginData[pluginName][key];
- fs.writeFileSync(this.getPluginFile(pluginName), JSON.stringify(this.pluginData[pluginName], null, 4));
- }
- };
-})();
-
-var BDEvents = (() => {
- const EventEmitter = require("events");
- return new class BDEvents extends EventEmitter {
- dispatch(eventName, ...args) {this.emit(eventName, ...args);}
- off(eventName, eventAction) {this.removeListener(eventName, eventAction);}
- };
-})();
-
-
-
-window.bdStorage = class bdPluginStorage {
- static get(key) {
- Utils.warn("Deprecation Notice", "Please use BdApi.getBDData(). bdStorage may be removed in future versions.");
- return DataStore.getBDData(key);
- }
-
- static set(key, data) {
- Utils.warn("Deprecation Notice", "Please use BdApi.setBDData(). bdStorage may be removed in future versions.");
- DataStore.setBDData(key, data);
- }
-};
-
-window.bdPluginStorage = class bdPluginStorage {
- static get(pluginName, key) {
- Utils.warn("Deprecation Notice", `${pluginName}, please use BdApi.loadData() or BdApi.getData(). bdPluginStorage may be removed in future versions.`);
- return DataStore.getPluginData(pluginName, key) || null;
- }
-
- static set(pluginName, key, data) {
- Utils.warn("Deprecation Notice", `${pluginName}, please use BdApi.saveData() or BdApi.setData(). bdPluginStorage may be removed in future versions.`);
- if (typeof(data) === "undefined") return Utils.warn("Deprecation Notice", "Trying to set undefined value in plugin " + pluginName);
- DataStore.setPluginData(pluginName, key, data);
- }
-
- static delete(pluginName, key) {
- Utils.warn("Deprecation Notice", `${pluginName}, please use BdApi.deleteData(). bdPluginStorage may be removed in future versions.`);
- DataStore.deletePluginData(pluginName, key);
- }
-};
-
-var settingsPanel, emoteModule, quickEmoteMenu, voiceMode, pluginModule, themeModule, dMode, publicServersModule;
-var minSupportedVersion = "0.3.0";
-var bbdVersion = "0.2.24";
-var bbdChangelog = {
- description: "Mostly behind the scenes changes here.",
- changes: [
- {title: "What's New?", items: ["**Dark Mode is back!** Or rather... it's toggleable again and no longer forced on.", "**Changes for developers!** Plugin and theme developers will now have more options to customize their plugin cards in their METAs and also a new META structure."]},
- {title: "Fixes", type: "fixed", items: ["**Emote Menu** should now show both Twich Global emotes and your favorites, you should even be able to click on them again!"]},
- {title: "Minor Stuff", type: "improved", items: ["**Clean Code.** Well not really. But BD's code is starting to be cleaned up to make it easier to maintain and better performing."]}
- ]
-};
-
-
-var mainCore;
-
-var settings = {
- "Custom css live update": {id: "bda-css-0", info: "", implemented: true, hidden: true, cat: "core"},
- "Custom css auto udpate": {id: "bda-css-1", info: "", implemented: true, hidden: true, cat: "core"},
- "BetterDiscord Blue": {id: "bda-gs-b", info: "Replace Discord blue with BD Blue", implemented: false, hidden: false, cat: "core"},
-
- /* Core */
- /* ====== */
- "Public Servers": {id: "bda-gs-1", info: "Display public servers button", implemented: true, hidden: false, cat: "core", category: "modules"},
- "Minimal Mode": {id: "bda-gs-2", info: "Hide elements and reduce the size of elements.", implemented: true, hidden: false, cat: "core", category: "modules"},
- "Voice Mode": {id: "bda-gs-4", info: "Only show voice chat", implemented: true, hidden: false, cat: "core", category: "modules"},
- "Hide Channels": {id: "bda-gs-3", info: "Hide channels in minimal mode", implemented: true, hidden: false, cat: "core", category: "modules"},
- "Dark Mode": {id: "bda-gs-5", info: "Make certain elements dark by default(wip)", implemented: true, hidden: false, cat: "core", category: "modules"},
- "Voice Disconnect": {id: "bda-dc-0", info: "Disconnect from voice server when closing Discord", implemented: true, hidden: false, cat: "core", category: "modules"},
- "24 Hour Timestamps": {id: "bda-gs-6", info: "Replace 12hr timestamps with proper ones", implemented: true, hidden: false, cat: "core", category: "modules"},
- "Colored Text": {id: "bda-gs-7", info: "Make text color the same as role color", implemented: true, hidden: false, cat: "core", category: "modules"},
- "Normalize Classes": {id: "fork-ps-4", info: "Adds stable classes to elements to help themes. (e.g. adds .da-channels to .channels-Ie2l6A)", implemented: true, hidden: false, cat: "core", category: "modules"},
-
- /* Content */
- "Content Error Modal": {id: "fork-ps-1", info: "Shows a modal with plugin/theme errors", implemented: true, hidden: false, cat: "core", category: "content manager"},
- "Show Toasts": {id: "fork-ps-2", info: "Shows a small notification for important information", implemented: true, hidden: false, cat: "core", category: "content manager"},
- "Scroll To Settings": {id: "fork-ps-3", info: "Auto-scrolls to a plugin's settings when the button is clicked (only if out of view)", implemented: true, hidden: false, cat: "core", category: "content manager"},
- "Automatic Loading": {id: "fork-ps-5", info: "Automatically loads, reloads, and unloads plugins and themes", implemented: true, hidden: false, cat: "core", category: "content manager"},
-
- /* Developer */
- "Developer Mode": {id: "bda-gs-8", info: "Developer Mode", implemented: true, hidden: false, cat: "core", category: "developer settings"},
- "Copy Selector": {id: "fork-dm-1", info: "Adds a \"Copy Selector\" option to context menus when developer mode is active", implemented: true, hidden: false, cat: "core", category: "developer settings"},
-
- /* Window Prefs */
- "Enable Transparency": {id: "fork-wp-1", info: "Enables the main window to be see-through (requires restart)", implemented: true, hidden: false, cat: "core", category: "window preferences"},
- "Window Frame": {id: "fork-wp-2", info: "Adds the native os window frame to the main window", implemented: false, hidden: true, cat: "core", category: "window preferences"},
-
-
- /* Emotes */
- /* ====== */
- "Download Emotes": {id: "fork-es-3", info: "Download emotes when the cache is expired", implemented: true, hidden: false, cat: "emote"},
- "Twitch Emotes": {id: "bda-es-7", info: "Show Twitch emotes", implemented: true, hidden: false, cat: "emote"},
- "FrankerFaceZ Emotes": {id: "bda-es-1", info: "Show FrankerFaceZ Emotes", implemented: true, hidden: false, cat: "emote"},
- "BetterTTV Emotes": {id: "bda-es-2", info: "Show BetterTTV Emotes", implemented: true, hidden: false, cat: "emote"},
- "Emote Menu": {id: "bda-es-0", info: "Show Twitch/Favourite emotes in emote menu", implemented: true, hidden: false, cat: "emote"},
- "Emoji Menu": {id: "bda-es-9", info: "Show Discord emoji menu", implemented: true, hidden: false, cat: "emote"},
- "Emote Auto Capitalization": {id: "bda-es-4", info: "Autocapitalize emote commands", implemented: true, hidden: false, cat: "emote"},
- "Show Names": {id: "bda-es-6", info: "Show emote names on hover", implemented: true, hidden: false, cat: "emote"},
- "Show emote modifiers": {id: "bda-es-8", info: "Enable emote mods (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)", implemented: true, hidden: false, cat: "emote"},
- "Animate On Hover": {id: "fork-es-2", info: "Only animate the emote modifiers on hover", implemented: true, hidden: false, cat: "emote"}
-};
-
-var defaultCookie = {
- "bda-gs-1": true,
- "bda-gs-2": false,
- "bda-gs-3": false,
- "bda-gs-4": false,
- "bda-gs-5": true,
- "bda-gs-6": false,
- "bda-gs-7": false,
- "bda-gs-8": false,
- "bda-es-0": true,
- "bda-es-1": true,
- "bda-es-2": true,
- "bda-es-4": false,
- "bda-es-6": true,
- "bda-es-7": true,
- "bda-gs-b": false,
- "bda-es-8": true,
- "bda-dc-0": false,
- "bda-css-0": false,
- "bda-css-1": false,
- "bda-es-9": true,
- "fork-dm-1": false,
- "fork-ps-1": true,
- "fork-ps-2": true,
- "fork-ps-3": true,
- "fork-ps-4": true,
- "fork-ps-5": true,
- "fork-es-2": false,
- "fork-es-3": true,
- "fork-wp-1": false,
- "fork-wp-2": false
-};
-
-
-var settingsCookie = {};
-
-var bdpluginErrors = [], bdthemeErrors = []; // define for backwards compatibility
-
-var bdConfig = null;
-
-function Core(config) {
- window.bdConfig = config;
-}
-
-Core.prototype.init = async function() {
- if (bdConfig.version < minSupportedVersion) {
- this.alert("Not Supported", "BetterDiscord v" + bdConfig.version + " (your version)" + " is not supported by the latest js (" + bbdVersion + ").
Please download the latest version from GitHub");
- return;
- }
-
- if (window.ED) {
- this.alert("Not Supported", "BandagedBD does not work with EnhancedDiscord. Please uninstall one of them.");
- return;
- }
-
- if (window.WebSocket && window.WebSocket.name && window.WebSocket.name.includes("Patched")) {
- this.alert("Not Supported", "BandagedBD does not work with Powercord. Please uninstall one of them.");
- return;
- }
-
- const latestLocalVersion = bdConfig.updater ? bdConfig.updater.LatestVersion : bdConfig.latestVersion;
- if (latestLocalVersion > bdConfig.version) {
- this.alert("Update Available", `
- An update for BandagedBD is available (${latestLocalVersion})! Please Reinstall!
- Download Installer
- `);
- }
-
- Utils.log("Startup", "Initializing Settings");
- this.initSettings();
- emoteModule = new EmoteModule();
- quickEmoteMenu = new QuickEmoteMenu();
- Utils.log("Startup", "Initializing EmoteModule");
- window.emotePromise = emoteModule.init().then(() => {
- emoteModule.initialized = true;
- Utils.log("Startup", "Initializing QuickEmoteMenu");
- quickEmoteMenu.init();
- });
- publicServersModule = new V2_PublicServers();
-
- voiceMode = new VoiceMode();
- dMode = new devMode();
-
- this.injectExternals();
-
- await this.checkForGuilds();
- BDV2.initialize();
- Utils.log("Startup", "Updating Settings");
- settingsPanel = new V2_SettingsPanel();
- settingsPanel.initializeSettings();
-
- Utils.log("Startup", "Loading Plugins");
- pluginModule = new PluginModule();
- pluginModule.loadPlugins();
-
- Utils.log("Startup", "Loading Themes");
- themeModule = new ThemeModule();
- themeModule.loadThemes();
-
- $("#customcss").detach().appendTo(document.head);
-
- window.addEventListener("beforeunload", function() {
- if (settingsCookie["bda-dc-0"]) document.querySelector(".btn.btn-disconnect").click();
- });
-
- emoteModule.autoCapitalize();
-
- Utils.log("Startup", "Removing Loading Icon");
- document.getElementsByClassName("bd-loaderv2")[0].remove();
- Utils.log("Startup", "Initializing Main Observer");
- this.initObserver();
-
- // Show loading errors
- if (settingsCookie["fork-ps-1"]) {
- Utils.log("Startup", "Collecting Startup Errors");
- this.showContentErrors({plugins: bdpluginErrors, themes: bdthemeErrors});
- }
-
- const previousVersion = DataStore.getBDData("version");
- if (bbdVersion > previousVersion) {
- if (bbdChangelog) this.showChangelogModal(bbdChangelog);
- DataStore.setBDData("version", bbdVersion);
- }
-};
-
-Core.prototype.checkForGuilds = function() {
- let timesChecked = 0;
- return new Promise(resolve => {
- const checkForGuilds = function() {
- const wrapper = BDV2.guildClasses.wrapper.split(" ")[0];
- if (document.querySelectorAll(`.${wrapper}`).length > 0) timesChecked++;
- const guild = BDV2.guildClasses.listItem.split(" ")[0];
- const blob = BDV2.guildClasses.blobContainer.split(" ")[0];
- if (document.querySelectorAll(`.${wrapper} .${guild} .${blob}`).length > 0) return resolve(bdConfig.deferLoaded = true);
- else if (timesChecked >= 50) return resolve(bdConfig.deferLoaded = true);
- setTimeout(checkForGuilds, 100);
- };
- $(document).ready(function () {
- setTimeout(checkForGuilds, 100);
- });
- });
-};
-
-Core.prototype.injectExternals = async function() {
- await Utils.injectJs("https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js");
- if (require.original) window.require = require.original;
-};
-
-Core.prototype.initSettings = function () {
- DataStore.initialize();
- if (!DataStore.getSettingGroup("settings")) {
- settingsCookie = defaultCookie;
- this.saveSettings();
- }
- else {
- this.loadSettings();
- $("\");\n }\n\n $(\"#customcss\").text(this.editor.session.getValue()).detach().appendTo(document.head);\n }\n\n saveCss() {\n _dataStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].setBDData(\"bdcustomcss\", btoa(this.editor.session.getValue()));\n }\n\n detach() {\n const self = this;\n self.setState({\n detached: true\n });\n const droot = self.detachedRoot;\n\n if (!droot) {\n console.log(\"FAILED TO INJECT ROOT: .app\");\n return;\n }\n\n _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].reactDom.render(self.detachedEditor, droot);\n }\n\n get detachedRoot() {\n const _root = $(\"#bd-customcss-detach-container\");\n\n if (!_root.length) {\n if (!this.injectDetachedRoot()) return null;\n return this.detachedRoot;\n }\n\n return _root[0];\n }\n\n injectDetachedRoot() {\n if (!$(\".app, .app-2rEoOp\").length) return false;\n $(\"
\", {\n id: \"bd-customcss-detach-container\"\n }).insertAfter($(\".app, .app-2rEoOp\"));\n return true;\n }\n\n attach() {\n const self = this;\n self.setState({\n detached: false\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3JlYWN0L2Nzc0VkaXRvci5qcz81NWY5Il0sIm5hbWVzIjpbIlYyQ19Dc3NFZGl0b3IiLCJCRFYyIiwicmVhY3RDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic2VsZiIsImxpbmVzIiwic2V0SW5pdGlhbFN0YXRlIiwiYXR0YWNoIiwiYmluZCIsImRldGFjaGVkRWRpdG9yIiwicmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiVjJDX0Nzc0VkaXRvckRldGFjaGVkIiwib25DbGljayIsInVwZGF0ZUNzcyIsInNhdmVDc3MiLCJkZXRhY2giLCJzdGF0ZSIsImRldGFjaGVkIiwiZWRpdG9yRGV0YWNoZWQiLCJjb21wb25lbnREaWRNb3VudCIsImVkaXRvciIsImFjZSIsImVkaXQiLCJzZXRUaGVtZSIsInNlc3Npb24iLCJzZXRNb2RlIiwic2V0U2hvd1ByaW50TWFyZ2luIiwic2V0Rm9udFNpemUiLCJvbiIsInNldHRpbmdzQ29va2llIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJkZXN0cm95IiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJldlByb3BzIiwicHJldlN0YXRlIiwicmVhY3REb20iLCJ1bm1vdW50Q29tcG9uZW50QXROb2RlIiwiZGV0YWNoZWRSb290IiwiY29kZU1pcnJvciIsIm9wdGlvbnMiLCJsaW5lTnVtYmVycyIsIm1vZGUiLCJpbmRlbnRVbml0IiwidGhlbWUiLCJzY3JvbGxiYXJTdHlsZSIsImNzcyIsIl9jY3NzIiwiRGF0YVN0b3JlIiwiZ2V0QkREYXRhIiwiY2NzcyIsImF0b2IiLCJ1cGRhdGVMaW5lQ291bnQiLCJsaW5lQ291bnQiLCJyZWZzIiwidmFsdWUiLCJzcGxpdCIsImxlbmd0aCIsInRleHRDb250ZW50IiwiQXJyYXkiLCJmcm9tIiwiXyIsImkiLCJqb2luIiwicmVuZGVyIiwiY2xhc3NOYW1lIiwic3R5bGUiLCJwYWRkaW5nIiwiaWQiLCJTZXR0aW5nc1RpdGxlIiwidGV4dCIsInJlZiIsIkNoZWNrYm94Iiwib25DaGFuZ2UiLCJjaGVja2VkIiwiYm9yZGVyUmFkaXVzIiwiYm9yZGVyUmlnaHQiLCJib3JkZXJMZWZ0IiwiZm9udFNpemUiLCJtYXJnaW5MZWZ0IiwiYXJnIiwiU2V0dGluZ3MiLCJzYXZlU2V0dGluZ3MiLCIkIiwiYXBwZW5kIiwiZ2V0VmFsdWUiLCJhcHBlbmRUbyIsImRvY3VtZW50IiwiaGVhZCIsInNldEJERGF0YSIsImJ0b2EiLCJzZXRTdGF0ZSIsImRyb290IiwiY29uc29sZSIsImxvZyIsIl9yb290IiwiaW5qZWN0RGV0YWNoZWRSb290IiwiaW5zZXJ0QWZ0ZXIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRWUsTUFBTUEsYUFBTixTQUE0QkMsMkNBQUksQ0FBQ0MsY0FBakMsQ0FBZ0Q7QUFFM0RDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2YsVUFBTUEsS0FBTjtBQUNBLFVBQU1DLElBQUksR0FBRyxJQUFiO0FBQ0FBLFFBQUksQ0FBQ0QsS0FBTCxDQUFXRSxLQUFYLEdBQW1CLENBQW5CO0FBQ0FELFFBQUksQ0FBQ0UsZUFBTDtBQUNBRixRQUFJLENBQUNHLE1BQUwsR0FBY0gsSUFBSSxDQUFDRyxNQUFMLENBQVlDLElBQVosQ0FBaUJKLElBQWpCLENBQWQ7QUFDQUEsUUFBSSxDQUFDSyxjQUFMLEdBQXNCVCwyQ0FBSSxDQUFDVSxLQUFMLENBQVdDLGFBQVgsQ0FBeUJDLDBEQUF6QixFQUFnRDtBQUFDTCxZQUFNLEVBQUVILElBQUksQ0FBQ0c7QUFBZCxLQUFoRCxDQUF0QjtBQUNBSCxRQUFJLENBQUNTLE9BQUwsR0FBZVQsSUFBSSxDQUFDUyxPQUFMLENBQWFMLElBQWIsQ0FBa0JKLElBQWxCLENBQWY7QUFDQUEsUUFBSSxDQUFDVSxTQUFMLEdBQWlCVixJQUFJLENBQUNVLFNBQUwsQ0FBZU4sSUFBZixDQUFvQkosSUFBcEIs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RUFBMENtRixLQUExQztBQUNIOztBQUVELE1BQUl0RCxZQUFKLEdBQW1CO0FBQ2YsVUFBTXlELEtBQUssR0FBR1osQ0FBQyxDQUFDLGdDQUFELENBQWY7O0FBQ0EsUUFBSSxDQUFDWSxLQUFLLENBQUN0QyxNQUFYLEVBQW1CO0FBQ2YsVUFBSSxDQUFDLEtBQUt1QyxrQkFBTCxFQUFMLEVBQWdDLE9BQU8sSUFBUDtBQUNoQyxhQUFPLEtBQUsxRCxZQUFaO0FBQ0g7O0FBQ0QsV0FBT3lELEtBQUssQ0FBQyxDQUFELENBQVo7QUFDSDs7QUFFREMsb0JBQWtCLEdBQUc7QUFDakIsUUFBSSxDQUFDYixDQUFDLENBQUMsbUJBQUQsQ0FBRCxDQUF1QjFCLE1BQTVCLEVBQW9DLE9BQU8sS0FBUDtBQUNwQzBCLEtBQUMsQ0FBQyxRQUFELEVBQVc7QUFDUmYsUUFBRSxFQUFFO0FBREksS0FBWCxDQUFELENBRUc2QixXQUZILENBRWVkLENBQUMsQ0FBQyxtQkFBRCxDQUZoQjtBQUdBLFdBQU8sSUFBUDtBQUNIOztBQUVENUUsUUFBTSxHQUFHO0FBQ0wsVUFBTUgsSUFBSSxHQUFHLElBQWI7QUFDQUEsUUFBSSxDQUFDdUYsUUFBTCxDQUFjO0FBQ1Z6RSxjQUFRLEVBQUU7QUFEQSxLQUFkO0FBR0g7O0FBbE8wRCIsImZpbGUiOiIuL3NyYy9yZWFjdC9jc3NFZGl0b3IuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3NldHRpbmdzQ29va2llfSBmcm9tIFwiLi4vMGdsb2JhbHNcIjtcclxuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuLi9zZXR0aW5nc1BhbmVsXCI7XHJcbmltcG9ydCBCRFYyIGZyb20gXCIuLi92MlwiO1xyXG5pbXBvcnQgRGF0YVN0b3JlIGZyb20gXCIuLi9kYXRhU3RvcmVcIjtcclxuXHJcbmltcG9ydCBTZXR0aW5nc1RpdGxlIGZyb20gXCIuL3NldHRpbmdzVGl0bGVcIjtcclxuaW1wb3J0IENoZWNrYm94IGZyb20gXCIuL2NoZWNrYm94XCI7XHJcbmltcG9ydCBWMkNfQ3NzRWRpdG9yRGV0YWNoZWQgZnJvbSBcIi4vY3NzRWRpdG9yRGV0YWNoZWRcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFYyQ19Dc3NFZGl0b3IgZXh0ZW5kcyBCRFYyLnJlYWN0Q29tcG9uZW50IHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcclxuICAgICAgICBzZWxmLnByb3BzLmxpbmVzID0gMDtcclxuICAgICAgICBzZWxmLnNldEluaXRpYWxTdGF0ZSgpO1xyXG4gICAgICAgIHNlbGYuYXR0YWNoID0gc2VsZi5hdHRhY2guYmluZChzZWxmKTtcclxuICAgICAgICBzZWxmLmRldGFjaGVkRWRpdG9yID0gQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFYyQ19Dc3NFZGl0b3JEZXRhY2hlZCwge2F0dGFjaDogc2VsZi5hdHRhY2h9KTtcclxuICAgICAgICBzZWxmLm9uQ2xpY2sgPSBzZWxmLm9uQ2xpY2suYmluZChzZWxmKTtcclxuICAgICAgICBzZWxmLnVwZGF0ZUNzcyA9IHNlbGYudXBkYXRlQ3NzLmJpbmQoc2VsZik7XHJcbiAgICAgICAgc2VsZi5zYXZlQ3NzID0gc2VsZi5zYXZlQ3NzLmJpbmQoc2VsZik7XHJcbiAgICAgICAgc2VsZi5kZXRhY2ggPSBzZWxmLmRldGFjaC5iaW5kKHNlbGYpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEluaXRpYWxTdGF0ZSgpIHtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICAgICAgICBkZXRhY2hlZDogdGhpcy5wcm9wcy5kZXRhY2hlZCB8fCBCRFYyLmVkaXRvckRldGFjaGVkXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgICAgICAvLyB0aGlzLnVwZGF0ZUxpbmVDb3VudCgpO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yID0gYWNlLmVkaXQoXCJiZC1jdXN0b21jc3MtZWRpdG9yXCIpO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNldFRoZW1lKFwiYWNlL3RoZW1lL21vbm9rYWlcIik7XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iuc2Vzc2lvbi5zZXRNb2RlKFwiYWNlL21vZGUvY3NzXCIpO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNldFNob3dQcmludE1hcmdpbihmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iuc2V0Rm9udFNpemUoMTQpO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLm9uKFwiY2hhbmdlXCIsICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFzZXR0aW5nc0Nvb2tpZVtcImJkYS1jc3MtMFwiXSkgcmV0dXJuO1xyXG4gICAgICAgICAgICB0aGlzLnNhdmVDc3MoKTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVDc3MoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgICAgICB0aGlzLmVkaXRvci5kZXN0cm95KCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcywgcHJldlN0YXRlKSB7XHJcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgaWYgKHByZXZTdGF0ZS5kZXRhY2hlZCAmJiAhc2VsZi5zdGF0ZS5kZXRhY2hlZCkge1xyXG4gICAgICAgICAgICBCRFYyLnJlYWN0RG9tLnVubW91bnRDb21wb25lbnRBdE5vZGUoc2VsZi5kZXRhY2hlZFJvb3QpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb2RlTWlycm9yKCkge1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBvcHRpb25zKCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGxpbmVOdW1iZXJzOiB0cnVlLFxyXG4gICAgICAgICAgICBtb2RlOiBcImNzc1wiLFxyXG4gICAgICAgICAgICBpbmRlbnRVbml0OiA0LFxyXG4gICAgICAgICAgICB0aGVtZTogXCJtYXRlcmlhbFwiLFxyXG4gICAgICAgICAgICBzY3JvbGxiYXJTdHlsZTogXCJzaW1wbGVcIlxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGNzcygpIHtcclxuICAgICAgICBjb25zdCBfY2NzcyA9IERhdGFTdG9yZS5nZXRCRERhdGEoXCJiZGN1c3RvbWNzc1wiKTtcclxuICAgICAgICBsZXQgY2NzcyA9IFwiXCI7XHJcbiAgICAgICAgaWYgKF9jY3NzICYmIF9jY3NzICE9PSBcIlwiKSB7XHJcbiAgICAgICAgICAgIGNjc3MgPSBhdG9iKF9jY3NzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGNjc3M7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlTGluZUNvdW50KCkge1xyXG4gICAgICAgIGNvbnN0IGxpbmVDb3VudCA9IHRoaXMucmVmcy5lZGl0b3IudmFsdWUuc3BsaXQoXCJcXG5cIikubGVuZ3RoO1xyXG4gICAgICAgIGlmIChsaW5lQ291bnQgPT0gdGhpcy5wcm9wcy5saW5lcykgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMucmVmcy5saW5lcy50ZXh0Q29udGVudCA9IEFycmF5LmZyb20obmV3IEFycmF5KGxpbmVDb3VudCksIChfLCBpKSA9PiBpICsgMSkuam9pbihcIi5cXG5cIikgKyBcIi5cIjtcclxuICAgICAgICB0aGlzLnByb3BzLmxpbmVzID0gbGluZUNvdW50O1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcclxuXHJcbiAgICAgICAgY29uc3Qge2RldGFjaGVkfSA9IHNlbGYuc3RhdGU7XHJcbiAgICAgICAgcmV0dXJuIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgXCJkaXZcIixcclxuICAgICAgICAgICAge2NsYXNzTmFtZTogXCJjb250ZW50Q29sdW1uLTJocklZSCBjb250ZW50Q29sdW1uRGVmYXVsdC0xVlFrR00gY29udGVudC1jb2x1bW4gZGVmYXVsdFwiLCBzdHlsZToge3BhZGRpbmc6IFwiNjBweCA0MHB4IDBweFwifX0sXHJcbiAgICAgICAgICAgIGRldGFjaGVkICYmIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgIFwiZGl2XCIsXHJcbiAgICAgICAgICAgICAgICB7aWQ6IFwiZWRpdG9yLWRldGFjaGVkXCJ9LFxyXG4gICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFNldHRpbmdzVGl0bGUsIHt0ZXh0OiBcIkN1c3RvbSBDU1MgRWRpdG9yXCJ9KSxcclxuICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgICAgICBcImgzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICBcIkVkaXRvciBEZXRhY2hlZFwiXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgICAgIFwiYnV0dG9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAge2NsYXNzTmFtZTogXCJidG4gYnRuLXByaW1hcnlcIiwgb25DbGljazogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hdHRhY2goKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfX0sXHJcbiAgICAgICAgICAgICAgICAgICAgXCJBdHRhY2hcIlxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAhZGV0YWNoZWQgJiYgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgXCJkaXZcIixcclxuICAgICAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoU2V0dGluZ3NUaXRsZSwge3RleHQ6IFwiQ3VzdG9tIENTUyBFZGl0b3JcIn0pLFxyXG4gICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtjbGFzc05hbWU6IFwiZWRpdG9yLXdyYXBwZXJcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtpZDogXCJiZC1jdXN0b21jc3MtZWRpdG9yXCIsIGNsYXNzTmFtZTogXCJlZGl0b3JcIiwgcmVmOiBcImVkaXRvclwifSwgc2VsZi5jc3MpXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXHJcbiAgICAgICAgICAgICAgICAgICAge2lkOiBcImJkLWN1c3RvbWNzcy1hdHRhY2gtY29udHJvbHNcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcInVsXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtjbGFzc05hbWU6IFwiY2hlY2tib3gtZ3JvdXBcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChDaGVja2JveCwge2lkOiBcImxpdmUtdXBkYXRlXCIsIHRleHQ6IFwiTGl2ZSBVcGRhdGVcIiwgb25DaGFuZ2U6IHRoaXMub25DaGFuZ2UsIGNoZWNrZWQ6IHNldHRpbmdzQ29va2llW1wiYmRhLWNzcy0wXCJdfSlcclxuICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAge2lkOiBcImJkLWN1c3RvbWNzcy1kZXRhY2gtY29udHJvbHMtYnV0dG9uXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJ1dHRvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0eWxlOiB7Ym9yZGVyUmFkaXVzOiBcIjNweCAwIDAgM3B4XCIsIGJvcmRlclJpZ2h0OiBcIjFweCBzb2xpZCAjM2Y0MTQ2XCJ9LCBjbGFzc05hbWU6IFwiYnRuIGJ0bi1wcmltYXJ5XCIsIG9uQ2xpY2s6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vbkNsaWNrKFwidXBkYXRlXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJVcGRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJ1dHRvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0eWxlOiB7Ym9yZGVyUmFkaXVzOiBcIjBcIiwgYm9yZGVyTGVmdDogXCIxcHggc29saWQgIzJkMmQyZFwiLCBib3JkZXJSaWdodDogXCIxcHggc29saWQgIzJkMmQyZFwifSwgY2xhc3NOYW1lOiBcImJ0biBidG4tcHJpbWFyeVwiLCBvbkNsaWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub25DbGljayhcInNhdmVcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNhdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJ1dHRvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0eWxlOiB7Ym9yZGVyUmFkaXVzOiBcIjAgM3B4IDNweCAwXCIsIGJvcmRlckxlZnQ6IFwiMXB4IHNvbGlkICMzZjQxNDZcIn0sIGNsYXNzTmFtZTogXCJidG4gYnRuLXByaW1hcnlcIiwgb25DbGljazogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm9uQ2xpY2soXCJkZXRhY2hcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRldGFjaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwic3BhblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0eWxlOiB7Zm9udFNpemU6IFwiMTBweFwiLCBtYXJnaW5MZWZ0OiBcIjVweFwifX0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlVuc2F2ZWQgY2hhbmdlcyBhcmUgbG9zdCBvbiBkZXRhY2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTogXCJoZWxwLXRleHRcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByZXNzIFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFwiY29kZVwiLCB7Y2xhc3NOYW1lOiBcImlubGluZVwifSwgXCJjdHJsXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIrXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtjbGFzc05hbWU6IFwiaW5saW5lXCJ9LCBcIixcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiB3aXRoIHRoZSBlZGl0b3IgZm9jdXNlZCB0byBhY2Nlc3MgdGhlIGVkaXRvcidzIHNldHRpbmdzLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2xpY2soYXJnKSB7XHJcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgc3dpdGNoIChhcmcpIHtcclxuICAgICAgICAgICAgY2FzZSBcInVwZGF0ZVwiOlxyXG4gICAgICAgICAgICAgICAgc2VsZi51cGRhdGVDc3MoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwic2F2ZVwiOlxyXG4gICAgICAgICAgICAgICAgc2VsZi5zYXZlQ3NzKCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcImRldGFjaFwiOlxyXG4gICAgICAgICAgICAgICAgc2VsZi5kZXRhY2goKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbkNoYW5nZShpZCwgY2hlY2tlZCkge1xyXG4gICAgICAgIHN3aXRjaCAoaWQpIHtcclxuICAgICAgICAgICAgY2FzZSBcImxpdmUtdXBkYXRlXCI6XHJcbiAgICAgICAgICAgICAgICBzZXR0aW5nc0Nvb2tpZVtcImJkYS1jc3MtMFwiXSA9IGNoZWNrZWQ7XHJcbiAgICAgICAgICAgICAgICBTZXR0aW5ncy5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVDc3MoKSB7XHJcbiAgICAgICAgaWYgKCQoXCIjY3VzdG9tY3NzXCIpLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgICQoXCJoZWFkXCIpLmFwcGVuZChcIjxzdHlsZSBpZD1cXFwiY3VzdG9tY3NzXFxcIj48L3N0eWxlPlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgJChcIiNjdXN0b21jc3NcIikudGV4dCh0aGlzLmVkaXRvci5zZXNzaW9uLmdldFZhbHVlKCkpLmRldGFjaCgpLmFwcGVuZFRvKGRvY3VtZW50LmhlYWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmVDc3MoKSB7XHJcbiAgICAgICAgRGF0YVN0b3JlLnNldEJERGF0YShcImJkY3VzdG9tY3NzXCIsIGJ0b2EodGhpcy5lZGl0b3Iuc2Vzc2lvbi5nZXRWYWx1ZSgpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZGV0YWNoKCkge1xyXG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIHNlbGYuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBkZXRhY2hlZDogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IGRyb290ID0gc2VsZi5kZXRhY2hlZFJvb3Q7XHJcbiAgICAgICAgaWYgKCFkcm9vdCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkZBSUxFRCBUTyBJTkpFQ1QgUk9PVDogLmFwcFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBCRFYyLnJlYWN0RG9tLnJlbmRlcihzZWxmLmRldGFjaGVkRWRpdG9yLCBkcm9vdCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGRldGFjaGVkUm9vdCgpIHtcclxuICAgICAgICBjb25zdCBfcm9vdCA9ICQoXCIjYmQtY3VzdG9tY3NzLWRldGFjaC1jb250YWluZXJcIik7XHJcbiAgICAgICAgaWYgKCFfcm9vdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmluamVjdERldGFjaGVkUm9vdCgpKSByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGV0YWNoZWRSb290O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gX3Jvb3RbMF07XHJcbiAgICB9XHJcblxyXG4gICAgaW5qZWN0RGV0YWNoZWRSb290KCkge1xyXG4gICAgICAgIGlmICghJChcIi5hcHAsIC5hcHAtMnJFb09wXCIpLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICQoXCI8ZGl2Lz5cIiwge1xyXG4gICAgICAgICAgICBpZDogXCJiZC1jdXN0b21jc3MtZGV0YWNoLWNvbnRhaW5lclwiXHJcbiAgICAgICAgfSkuaW5zZXJ0QWZ0ZXIoJChcIi5hcHAsIC5hcHAtMnJFb09wXCIpKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBhdHRhY2goKSB7XHJcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgc2VsZi5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIGRldGFjaGVkOiBmYWxzZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/react/cssEditor.js\n");
+/***/ }),
+/***/ "./src/react/cssEditorDetached.js":
+/*!****************************************!*\
+ !*** ./src/react/cssEditorDetached.js ***!
+ \****************************************/
+/*! exports provided: default */
+/***/ (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 V2C_CssEditorDetached; });\n/* harmony import */ var _0globals__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../0globals */ \"./src/0globals.js\");\n/* harmony import */ var _settingsPanel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../settingsPanel */ \"./src/settingsPanel.js\");\n/* harmony import */ var _v2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../v2 */ \"./src/v2.js\");\n/* harmony import */ var _dataStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dataStore */ \"./src/dataStore.js\");\n/* harmony import */ var _checkbox__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./checkbox */ \"./src/react/checkbox.js\");\n\n\n\n\n\nclass V2C_CssEditorDetached extends _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].reactComponent {\n constructor(props) {\n super(props);\n const self = this;\n self.onClick = self.onClick.bind(self);\n self.updateCss = self.updateCss.bind(self);\n self.saveCss = self.saveCss.bind(self);\n self.onChange = self.onChange.bind(self);\n }\n\n componentDidMount() {\n $(\"#app-mount\").addClass(\"bd-detached-editor\");\n _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].editorDetached = true; // this.updateLineCount();\n\n this.editor = ace.edit(\"bd-customcss-editor-detached\");\n this.editor.setTheme(\"ace/theme/monokai\");\n this.editor.session.setMode(\"ace/mode/css\");\n this.editor.setShowPrintMargin(false);\n this.editor.setFontSize(14);\n this.editor.on(\"change\", () => {\n if (!_0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"][\"bda-css-0\"]) return;\n this.saveCss();\n this.updateCss();\n });\n }\n\n componentWillUnmount() {\n $(\"#app-mount\").removeClass(\"bd-detached-editor\");\n _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].editorDetached = false;\n this.editor.destroy();\n }\n\n updateLineCount() {\n const lineCount = this.refs.editor.value.split(\"\\n\").length;\n if (lineCount == this.props.lines) return;\n this.refs.lines.textContent = Array.from(new Array(lineCount), (_, i) => i + 1).join(\".\\n\") + \".\";\n this.props.lines = lineCount;\n }\n\n get options() {\n return {\n lineNumbers: true,\n mode: \"css\",\n indentUnit: 4,\n theme: \"material\",\n scrollbarStyle: \"simple\"\n };\n }\n\n get css() {\n const _ccss = _dataStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getBDData(\"bdcustomcss\");\n\n let ccss = \"\";\n\n if (_ccss && _ccss !== \"\") {\n ccss = atob(_ccss);\n }\n\n return ccss;\n }\n\n get root() {\n const _root = $(\"#bd-customcss-detach-container\");\n\n if (!_root.length) {\n if (!this.injectRoot()) return null;\n return this.detachedRoot;\n }\n\n return _root[0];\n }\n\n injectRoot() {\n if (!$(\".app, .app-2rEoOp\").length) return false;\n $(\"\", {\n id: \"bd-customcss-detach-container\"\n }).insertAfter($(\".app, .app-2rEoOp\"));\n return true;\n }\n\n render() {\n const self = this;\n return _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(\"div\", {\n className: \"bd-detached-css-editor\",\n id: \"bd-customcss-detach-editor\"\n }, _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(\"div\", {\n id: \"bd-customcss-innerpane\"\n }, _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(\"div\", {\n className: \"editor-wrapper\"\n }, _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(\"div\", {\n id: \"bd-customcss-editor-detached\",\n className: \"editor\",\n ref: \"editor\"\n }, self.css)), _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(\"div\", {\n id: \"bd-customcss-attach-controls\"\n }, _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(\"ul\", {\n className: \"checkbox-group\"\n }, _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(_checkbox__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n id: \"live-update\",\n text: \"Live Update\",\n onChange: self.onChange,\n checked: _0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"][\"bda-css-0\"]\n })), _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(\"div\", {\n id: \"bd-customcss-detach-controls-button\"\n }, _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(\"button\", {\n style: {\n borderRadius: \"3px 0 0 3px\",\n borderRight: \"1px solid #3f4146\"\n },\n className: \"btn btn-primary\",\n onClick: () => {\n self.onClick(\"update\");\n }\n }, \"Update\"), _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(\"button\", {\n style: {\n borderRadius: \"0\",\n borderLeft: \"1px solid #2d2d2d\",\n borderRight: \"1px solid #2d2d2d\"\n },\n className: \"btn btn-primary\",\n onClick: () => {\n self.onClick(\"save\");\n }\n }, \"Save\"), _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(\"button\", {\n style: {\n borderRadius: \"0 3px 3px 0\",\n borderLeft: \"1px solid #3f4146\"\n },\n className: \"btn btn-primary\",\n onClick: () => {\n self.onClick(\"attach\");\n }\n }, \"Attach\"), _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(\"span\", {\n style: {\n fontSize: \"10px\",\n marginLeft: \"5px\"\n }\n }, \"Unsaved changes are lost on attach\")))));\n }\n\n onChange(id, checked) {\n switch (id) {\n case \"live-update\":\n _0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"][\"bda-css-0\"] = checked;\n _settingsPanel__WEBPACK_IMPORTED_MODULE_1__[\"default\"].saveSettings();\n break;\n }\n }\n\n onClick(id) {\n const self = this;\n\n switch (id) {\n case \"attach\":\n if ($(\"#editor-detached\").length) self.props.attach();\n _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].reactDom.unmountComponentAtNode(self.root);\n self.root.remove();\n break;\n\n case \"update\":\n self.updateCss();\n break;\n\n case \"save\":\n self.saveCss();\n break;\n }\n }\n\n updateCss() {\n if ($(\"#customcss\").length == 0) {\n $(\"head\").append(\"\");\n }\n\n $(\"#customcss\").text(this.editor.session.getValue()).detach().appendTo(document.head);\n }\n\n saveCss() {\n _dataStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].setBDData(\"bdcustomcss\", btoa(this.editor.session.getValue()));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3JlYWN0L2Nzc0VkaXRvckRldGFjaGVkLmpzPzc2ZTciXSwibmFtZXMiOlsiVjJDX0Nzc0VkaXRvckRldGFjaGVkIiwiQkRWMiIsInJlYWN0Q29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInNlbGYiLCJvbkNsaWNrIiwiYmluZCIsInVwZGF0ZUNzcyIsInNhdmVDc3MiLCJvbkNoYW5nZSIsImNvbXBvbmVudERpZE1vdW50IiwiJCIsImFkZENsYXNzIiwiZWRpdG9yRGV0YWNoZWQiLCJlZGl0b3IiLCJhY2UiLCJlZGl0Iiwic2V0VGhlbWUiLCJzZXNzaW9uIiwic2V0TW9kZSIsInNldFNob3dQcmludE1hcmdpbiIsInNldEZvbnRTaXplIiwib24iLCJzZXR0aW5nc0Nvb2tpZSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVtb3ZlQ2xhc3MiLCJkZXN0cm95IiwidXBkYXRlTGluZUNvdW50IiwibGluZUNvdW50IiwicmVmcyIsInZhbHVlIiwic3BsaXQiLCJsZW5ndGgiLCJsaW5lcyIsInRleHRDb250ZW50IiwiQXJyYXkiLCJmcm9tIiwiXyIsImkiLCJqb2luIiwib3B0aW9ucyIsImxpbmVOdW1iZXJzIiwibW9kZSIsImluZGVudFVuaXQiLCJ0aGVtZSIsInNjcm9sbGJhclN0eWxlIiwiY3NzIiwiX2Njc3MiLCJEYXRhU3RvcmUiLCJnZXRCRERhdGEiLCJjY3NzIiwiYXRvYiIsInJvb3QiLCJfcm9vdCIsImluamVjdFJvb3QiLCJkZXRhY2hlZFJvb3QiLCJpZCIsImluc2VydEFmdGVyIiwicmVuZGVyIiwicmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwicmVmIiwiQ2hlY2tib3giLCJ0ZXh0IiwiY2hlY2tlZCIsInN0eWxlIiwiYm9yZGVyUmFkaXVzIiwiYm9yZGVyUmlnaHQiLCJib3JkZXJMZWZ0IiwiZm9udFNpemUiLCJtYXJnaW5MZWZ0IiwiU2V0dGluZ3MiLCJzYXZlU2V0dGluZ3MiLCJhdHRhY2giLCJyZWFjdERvbSIsInVubW91bnRDb21wb25lbnRBdE5vZGUiLCJyZW1vdmUiLCJhcHBlbmQiLCJnZXRWYWx1ZSIsImRldGFjaCIsImFwcGVuZFRvIiwiZG9jdW1lbnQiLCJoZWFkIiwic2V0QkREYXRhIiwiYnRvYSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRWUsTUFBTUEscUJBQU4sU0FBb0NDLDJDQUFJLENBQUNDLGNBQXpDLENBQXdEO0FBRW5FQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDQSxVQUFNQyxJQUFJLEdBQUcsSUFBYjtBQUNBQSxRQUFJLENBQUNDLE9BQUwsR0FBZUQsSUFBSSxDQUFDQyxPQUFMLENBQWFDLElBQWIsQ0FBa0JGLElBQWxCLENBQWY7QUFDQUEsUUFBSSxDQUFDRyxTQUFMLEdBQWlCSCxJQUFJLENBQUNHLFNBQUwsQ0FBZUQsSUFBZixDQUFvQkYsSUFBcEIsQ0FBakI7QUFDQUEsUUFBSSxDQUFDSSxPQUFMLEdBQWVKLElBQUksQ0FBQ0ksT0FBTCxDQUFhRixJQUFiLENBQWtCRixJQUFsQixDQUFmO0FBQ0FBLFFBQUksQ0FBQ0ssUUFBTCxHQUFnQkwsSUFBSSxDQUFDSyxRQUFMLENBQWNILElBQWQsQ0FBbUJGLElBQW5CLENBQWhCO0FBQ0g7O0FBRURNLG1CQUFpQixHQUFHO0FBQ2hCQyxLQUFDLENBQUMsWUFBRCxDQUFELENBQWdCQyxRQUFoQixDQUF5QixvQkFBekI7QUFDQVosK0NBQUksQ0FBQ2EsY0FBTCxHQUFzQixJQUF0QixDQUZnQixDQUdoQjs7QUFDQSxTQUFLQyxNQUFMLEdBQWNDLEdBQUcsQ0FBQ0MsSUFBSixDQUFTLDhCQUFULENBQWQ7QUFDQSxTQUFLRixNQUFMLENBQVlHLFFBQVosQ0FBcUIsbUJBQXJCO0FBQ0EsU0FBS0gsTUFBTCxDQUFZSSxPQUFaLENBQW9CQyxPQUFwQixDQUE0QixjQUE1QjtBQUNBLFNBQUtM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QWtDNUIsSUFBSSxDQUFDRCxLQUFMLENBQVd1RSxNQUFYO0FBQ2xDMUUsbURBQUksQ0FBQzJFLFFBQUwsQ0FBY0Msc0JBQWQsQ0FBcUN4RSxJQUFJLENBQUNnRCxJQUExQztBQUNBaEQsWUFBSSxDQUFDZ0QsSUFBTCxDQUFVeUIsTUFBVjtBQUNBOztBQUNKLFdBQUssUUFBTDtBQUNJekUsWUFBSSxDQUFDRyxTQUFMO0FBQ0E7O0FBQ0osV0FBSyxNQUFMO0FBQ0lILFlBQUksQ0FBQ0ksT0FBTDtBQUNBO0FBWFI7QUFhSDs7QUFFREQsV0FBUyxHQUFHO0FBQ1IsUUFBSUksQ0FBQyxDQUFDLFlBQUQsQ0FBRCxDQUFnQnFCLE1BQWhCLElBQTBCLENBQTlCLEVBQWlDO0FBQzdCckIsT0FBQyxDQUFDLE1BQUQsQ0FBRCxDQUFVbUUsTUFBVixDQUFpQixrQ0FBakI7QUFDSDs7QUFDRG5FLEtBQUMsQ0FBQyxZQUFELENBQUQsQ0FBZ0JxRCxJQUFoQixDQUFxQixLQUFLbEQsTUFBTCxDQUFZSSxPQUFaLENBQW9CNkQsUUFBcEIsRUFBckIsRUFBcURDLE1BQXJELEdBQThEQyxRQUE5RCxDQUF1RUMsUUFBUSxDQUFDQyxJQUFoRjtBQUNIOztBQUVEM0UsU0FBTyxHQUFHO0FBQ053QyxzREFBUyxDQUFDb0MsU0FBVixDQUFvQixhQUFwQixFQUFtQ0MsSUFBSSxDQUFDLEtBQUt2RSxNQUFMLENBQVlJLE9BQVosQ0FBb0I2RCxRQUFwQixFQUFELENBQXZDO0FBQ0g7O0FBdEtrRSIsImZpbGUiOiIuL3NyYy9yZWFjdC9jc3NFZGl0b3JEZXRhY2hlZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7c2V0dGluZ3NDb29raWV9IGZyb20gXCIuLi8wZ2xvYmFsc1wiO1xyXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4uL3NldHRpbmdzUGFuZWxcIjtcclxuaW1wb3J0IEJEVjIgZnJvbSBcIi4uL3YyXCI7XHJcbmltcG9ydCBEYXRhU3RvcmUgZnJvbSBcIi4uL2RhdGFTdG9yZVwiO1xyXG5cclxuaW1wb3J0IENoZWNrYm94IGZyb20gXCIuL2NoZWNrYm94XCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWMkNfQ3NzRWRpdG9yRGV0YWNoZWQgZXh0ZW5kcyBCRFYyLnJlYWN0Q29tcG9uZW50IHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcclxuICAgICAgICBzZWxmLm9uQ2xpY2sgPSBzZWxmLm9uQ2xpY2suYmluZChzZWxmKTtcclxuICAgICAgICBzZWxmLnVwZGF0ZUNzcyA9IHNlbGYudXBkYXRlQ3NzLmJpbmQoc2VsZik7XHJcbiAgICAgICAgc2VsZi5zYXZlQ3NzID0gc2VsZi5zYXZlQ3NzLmJpbmQoc2VsZik7XHJcbiAgICAgICAgc2VsZi5vbkNoYW5nZSA9IHNlbGYub25DaGFuZ2UuYmluZChzZWxmKTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgICAgICAkKFwiI2FwcC1tb3VudFwiKS5hZGRDbGFzcyhcImJkLWRldGFjaGVkLWVkaXRvclwiKTtcclxuICAgICAgICBCRFYyLmVkaXRvckRldGFjaGVkID0gdHJ1ZTtcclxuICAgICAgICAvLyB0aGlzLnVwZGF0ZUxpbmVDb3VudCgpO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yID0gYWNlLmVkaXQoXCJiZC1jdXN0b21jc3MtZWRpdG9yLWRldGFjaGVkXCIpO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNldFRoZW1lKFwiYWNlL3RoZW1lL21vbm9rYWlcIik7XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iuc2Vzc2lvbi5zZXRNb2RlKFwiYWNlL21vZGUvY3NzXCIpO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNldFNob3dQcmludE1hcmdpbihmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iuc2V0Rm9udFNpemUoMTQpO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLm9uKFwiY2hhbmdlXCIsICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFzZXR0aW5nc0Nvb2tpZVtcImJkYS1jc3MtMFwiXSkgcmV0dXJuO1xyXG4gICAgICAgICAgICB0aGlzLnNhdmVDc3MoKTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVDc3MoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICAgICAgJChcIiNhcHAtbW91bnRcIikucmVtb3ZlQ2xhc3MoXCJiZC1kZXRhY2hlZC1lZGl0b3JcIik7XHJcbiAgICAgICAgQkRWMi5lZGl0b3JEZXRhY2hlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLmRlc3Ryb3koKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVMaW5lQ291bnQoKSB7XHJcbiAgICAgICAgY29uc3QgbGluZUNvdW50ID0gdGhpcy5yZWZzLmVkaXRvci52YWx1ZS5zcGxpdChcIlxcblwiKS5sZW5ndGg7XHJcbiAgICAgICAgaWYgKGxpbmVDb3VudCA9PSB0aGlzLnByb3BzLmxpbmVzKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5yZWZzLmxpbmVzLnRleHRDb250ZW50ID0gQXJyYXkuZnJvbShuZXcgQXJyYXkobGluZUNvdW50KSwgKF8sIGkpID0+IGkgKyAxKS5qb2luKFwiLlxcblwiKSArIFwiLlwiO1xyXG4gICAgICAgIHRoaXMucHJvcHMubGluZXMgPSBsaW5lQ291bnQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG9wdGlvbnMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbGluZU51bWJlcnM6IHRydWUsXHJcbiAgICAgICAgICAgIG1vZGU6IFwiY3NzXCIsXHJcbiAgICAgICAgICAgIGluZGVudFVuaXQ6IDQsXHJcbiAgICAgICAgICAgIHRoZW1lOiBcIm1hdGVyaWFsXCIsXHJcbiAgICAgICAgICAgIHNjcm9sbGJhclN0eWxlOiBcInNpbXBsZVwiXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY3NzKCkge1xyXG4gICAgICAgIGNvbnN0IF9jY3NzID0gRGF0YVN0b3JlLmdldEJERGF0YShcImJkY3VzdG9tY3NzXCIpO1xyXG4gICAgICAgIGxldCBjY3NzID0gXCJcIjtcclxuICAgICAgICBpZiAoX2Njc3MgJiYgX2Njc3MgIT09IFwiXCIpIHtcclxuICAgICAgICAgICAgY2NzcyA9IGF0b2IoX2Njc3MpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY2NzcztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgcm9vdCgpIHtcclxuICAgICAgICBjb25zdCBfcm9vdCA9ICQoXCIjYmQtY3VzdG9tY3NzLWRldGFjaC1jb250YWluZXJcIik7XHJcbiAgICAgICAgaWYgKCFfcm9vdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmluamVjdFJvb3QoKSkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRldGFjaGVkUm9vdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIF9yb290WzBdO1xyXG4gICAgfVxyXG5cclxuICAgIGluamVjdFJvb3QoKSB7XHJcbiAgICAgICAgaWYgKCEkKFwiLmFwcCwgLmFwcC0yckVvT3BcIikubGVuZ3RoKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgJChcIjxkaXYvPlwiLCB7XHJcbiAgICAgICAgICAgIGlkOiBcImJkLWN1c3RvbWNzcy1kZXRhY2gtY29udGFpbmVyXCJcclxuICAgICAgICB9KS5pbnNlcnRBZnRlcigkKFwiLmFwcCwgLmFwcC0yckVvT3BcIikpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcclxuICAgICAgICByZXR1cm4gQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICBcImRpdlwiLFxyXG4gICAgICAgICAgICB7Y2xhc3NOYW1lOiBcImJkLWRldGFjaGVkLWNzcy1lZGl0b3JcIiwgaWQ6IFwiYmQtY3VzdG9tY3NzLWRldGFjaC1lZGl0b3JcIn0sXHJcbiAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgIFwiZGl2XCIsXHJcbiAgICAgICAgICAgICAgICB7aWQ6IFwiYmQtY3VzdG9tY3NzLWlubmVycGFuZVwifSxcclxuICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7Y2xhc3NOYW1lOiBcImVkaXRvci13cmFwcGVyXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7aWQ6IFwiYmQtY3VzdG9tY3NzLWVkaXRvci1kZXRhY2hlZFwiLCBjbGFzc05hbWU6IFwiZWRpdG9yXCIsIHJlZjogXCJlZGl0b3JcIn0sIHNlbGYuY3NzKVxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHtpZDogXCJiZC1jdXN0b21jc3MtYXR0YWNoLWNvbnRyb2xzXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ1bFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2xhc3NOYW1lOiBcImNoZWNrYm94LWdyb3VwXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tib3gsIHtpZDogXCJsaXZlLXVwZGF0ZVwiLCB0ZXh0OiBcIkxpdmUgVXBkYXRlXCIsIG9uQ2hhbmdlOiBzZWxmLm9uQ2hhbmdlLCBjaGVja2VkOiBzZXR0aW5nc0Nvb2tpZVtcImJkYS1jc3MtMFwiXX0pXHJcbiAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtpZDogXCJiZC1jdXN0b21jc3MtZGV0YWNoLWNvbnRyb2xzLWJ1dHRvblwifSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJidXR0b25cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzdHlsZToge2JvcmRlclJhZGl1czogXCIzcHggMCAwIDNweFwiLCBib3JkZXJSaWdodDogXCIxcHggc29saWQgIzNmNDE0NlwifSwgY2xhc3NOYW1lOiBcImJ0biBidG4tcHJpbWFyeVwiLCBvbkNsaWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub25DbGljayhcInVwZGF0ZVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVXBkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJidXR0b25cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzdHlsZToge2JvcmRlclJhZGl1czogXCIwXCIsIGJvcmRlckxlZnQ6IFwiMXB4IHNvbGlkICMyZDJkMmRcIiwgYm9yZGVyUmlnaHQ6IFwiMXB4IHNvbGlkICMyZDJkMmRcIn0sIGNsYXNzTmFtZTogXCJidG4gYnRuLXByaW1hcnlcIiwgb25DbGljazogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm9uQ2xpY2soXCJzYXZlXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTYXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJidXR0b25cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzdHlsZToge2JvcmRlclJhZGl1czogXCIwIDNweCAzcHggMFwiLCBib3JkZXJMZWZ0OiBcIjFweCBzb2xpZCAjM2Y0MTQ2XCJ9LCBjbGFzc05hbWU6IFwiYnRuIGJ0bi1wcmltYXJ5XCIsIG9uQ2xpY2s6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vbkNsaWNrKFwiYXR0YWNoXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBdHRhY2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInNwYW5cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzdHlsZToge2ZvbnRTaXplOiBcIjEwcHhcIiwgbWFyZ2luTGVmdDogXCI1cHhcIn19LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJVbnNhdmVkIGNoYW5nZXMgYXJlIGxvc3Qgb24gYXR0YWNoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UoaWQsIGNoZWNrZWQpIHtcclxuICAgICAgICBzd2l0Y2ggKGlkKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJsaXZlLXVwZGF0ZVwiOlxyXG4gICAgICAgICAgICAgICAgc2V0dGluZ3NDb29raWVbXCJiZGEtY3NzLTBcIl0gPSBjaGVja2VkO1xyXG4gICAgICAgICAgICAgICAgU2V0dGluZ3Muc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25DbGljayhpZCkge1xyXG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIHN3aXRjaCAoaWQpIHtcclxuICAgICAgICAgICAgY2FzZSBcImF0dGFjaFwiOlxyXG4gICAgICAgICAgICAgICAgaWYgKCQoXCIjZWRpdG9yLWRldGFjaGVkXCIpLmxlbmd0aCkgc2VsZi5wcm9wcy5hdHRhY2goKTtcclxuICAgICAgICAgICAgICAgIEJEVjIucmVhY3REb20udW5tb3VudENvbXBvbmVudEF0Tm9kZShzZWxmLnJvb3QpO1xyXG4gICAgICAgICAgICAgICAgc2VsZi5yb290LnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ1cGRhdGVcIjpcclxuICAgICAgICAgICAgICAgIHNlbGYudXBkYXRlQ3NzKCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcInNhdmVcIjpcclxuICAgICAgICAgICAgICAgIHNlbGYuc2F2ZUNzcygpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUNzcygpIHtcclxuICAgICAgICBpZiAoJChcIiNjdXN0b21jc3NcIikubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgJChcImhlYWRcIikuYXBwZW5kKFwiPHN0eWxlIGlkPVxcXCJjdXN0b21jc3NcXFwiPjwvc3R5bGU+XCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAkKFwiI2N1c3RvbWNzc1wiKS50ZXh0KHRoaXMuZWRpdG9yLnNlc3Npb24uZ2V0VmFsdWUoKSkuZGV0YWNoKCkuYXBwZW5kVG8oZG9jdW1lbnQuaGVhZCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUNzcygpIHtcclxuICAgICAgICBEYXRhU3RvcmUuc2V0QkREYXRhKFwiYmRjdXN0b21jc3NcIiwgYnRvYSh0aGlzLmVkaXRvci5zZXNzaW9uLmdldFZhbHVlKCkpKTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/react/cssEditorDetached.js\n");
+/***/ }),
+/***/ "./src/react/layer.js":
+/*!****************************!*\
+ !*** ./src/react/layer.js ***!
+ \****************************/
+/*! exports provided: default */
+/***/ (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 V2C_Layer; });\n/* harmony import */ var _v2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../v2 */ \"./src/v2.js\");\n\nclass V2C_Layer extends _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].reactComponent {\n constructor(props) {\n super(props);\n }\n\n componentDidMount() {\n $(window).on(`keyup.${this.props.id}`, e => {\n if (e.which === 27) {\n _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].reactDom.unmountComponentAtNode(this.refs.root.parentNode);\n }\n });\n $(`#${this.props.id}`).animate({\n opacity: 1\n }, {\n step: function (now) {\n $(this).css(\"transform\", `scale(${1.1 - 0.1 * now}) translateZ(0px)`);\n },\n duration: 200,\n done: () => {\n $(`#${this.props.id}`).css(\"opacity\", \"\").css(\"transform\", \"\");\n }\n });\n }\n\n componentWillUnmount() {\n $(window).off(`keyup.${this.props.id}`);\n $(`#${this.props.id}`).animate({\n opacity: 0\n }, {\n step: function (now) {\n $(this).css(\"transform\", `scale(${1.1 - 0.1 * now}) translateZ(0px)`);\n },\n duration: 200,\n done: () => {\n $(`#${this.props.rootId}`).remove();\n }\n });\n $(\"[class*=\\\"layer-\\\"]\").removeClass(\"publicServersOpen\").animate({\n opacity: 1\n }, {\n step: function (now) {\n $(this).css(\"transform\", `scale(${0.07 * now + 0.93}) translateZ(0px)`);\n },\n duration: 200,\n done: () => {\n $(\"[class*=\\\"layer-\\\"]\").css(\"opacity\", \"\").css(\"transform\", \"\");\n }\n });\n }\n\n componentWillMount() {\n $(\"[class*=\\\"layer-\\\"]\").addClass(\"publicServersOpen\").animate({\n opacity: 0\n }, {\n step: function (now) {\n $(this).css(\"transform\", `scale(${0.07 * now + 0.93}) translateZ(0px)`);\n },\n duration: 200\n });\n }\n\n render() {\n return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"layer bd-layer layer-3QrUeG\",\n id: this.props.id,\n ref: \"root\",\n style: {\n opacity: 0,\n transform: \"scale(1.1) translateZ(0px)\"\n }\n }, this.props.children);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3JlYWN0L2xheWVyLmpzP2IwZmMiXSwibmFtZXMiOlsiVjJDX0xheWVyIiwiQkRWMiIsInJlYWN0Q29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsImNvbXBvbmVudERpZE1vdW50IiwiJCIsIndpbmRvdyIsIm9uIiwiaWQiLCJlIiwid2hpY2giLCJyZWFjdERvbSIsInVubW91bnRDb21wb25lbnRBdE5vZGUiLCJyZWZzIiwicm9vdCIsInBhcmVudE5vZGUiLCJhbmltYXRlIiwib3BhY2l0eSIsInN0ZXAiLCJub3ciLCJjc3MiLCJkdXJhdGlvbiIsImRvbmUiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsIm9mZiIsInJvb3RJZCIsInJlbW92ZSIsInJlbW92ZUNsYXNzIiwiY29tcG9uZW50V2lsbE1vdW50IiwiYWRkQ2xhc3MiLCJyZW5kZXIiLCJyZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJyZWYiLCJzdHlsZSIsInRyYW5zZm9ybSIsImNoaWxkcmVuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLFNBQU4sU0FBd0JDLDJDQUFJLENBQUNDLGNBQTdCLENBQTRDO0FBRXZEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDSDs7QUFFREMsbUJBQWlCLEdBQUc7QUFDaEJDLEtBQUMsQ0FBQ0MsTUFBRCxDQUFELENBQVVDLEVBQVYsQ0FBYyxTQUFRLEtBQUtKLEtBQUwsQ0FBV0ssRUFBRyxFQUFwQyxFQUF1Q0MsQ0FBQyxJQUFJO0FBQ3hDLFVBQUlBLENBQUMsQ0FBQ0MsS0FBRixLQUFZLEVBQWhCLEVBQW9CO0FBQ2hCVixtREFBSSxDQUFDVyxRQUFMLENBQWNDLHNCQUFkLENBQXFDLEtBQUtDLElBQUwsQ0FBVUMsSUFBVixDQUFlQyxVQUFwRDtBQUNIO0FBQ0osS0FKRDtBQU1BVixLQUFDLENBQUUsSUFBRyxLQUFLRixLQUFMLENBQVdL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QUFMLENBQVdrQyxRQUhSLENBQVA7QUFLSDs7QUF6RHNEIiwiZmlsZSI6Ii4vc3JjL3JlYWN0L2xheWVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJEVjIgZnJvbSBcIi4uL3YyXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWMkNfTGF5ZXIgZXh0ZW5kcyBCRFYyLnJlYWN0Q29tcG9uZW50IHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgICAgICAkKHdpbmRvdykub24oYGtleXVwLiR7dGhpcy5wcm9wcy5pZH1gLCBlID0+IHtcclxuICAgICAgICAgICAgaWYgKGUud2hpY2ggPT09IDI3KSB7XHJcbiAgICAgICAgICAgICAgICBCRFYyLnJlYWN0RG9tLnVubW91bnRDb21wb25lbnRBdE5vZGUodGhpcy5yZWZzLnJvb3QucGFyZW50Tm9kZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgJChgIyR7dGhpcy5wcm9wcy5pZH1gKS5hbmltYXRlKHtvcGFjaXR5OiAxfSwge1xyXG4gICAgICAgICAgICBzdGVwOiBmdW5jdGlvbihub3cpIHtcclxuICAgICAgICAgICAgICAkKHRoaXMpLmNzcyhcInRyYW5zZm9ybVwiLCBgc2NhbGUoJHsxLjEgLSAwLjEgKiBub3d9KSB0cmFuc2xhdGVaKDBweClgKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZHVyYXRpb246IDIwMCxcclxuICAgICAgICAgICAgZG9uZTogKCkgPT4geyQoYCMke3RoaXMucHJvcHMuaWR9YCkuY3NzKFwib3BhY2l0eVwiLCBcIlwiKS5jc3MoXCJ0cmFuc2Zvcm1cIiwgXCJcIik7fVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgICAgICQod2luZG93KS5vZmYoYGtleXVwLiR7dGhpcy5wcm9wcy5pZH1gKTtcclxuICAgICAgICAkKGAjJHt0aGlzLnByb3BzLmlkfWApLmFuaW1hdGUoe29wYWNpdHk6IDB9LCB7XHJcbiAgICAgICAgICAgIHN0ZXA6IGZ1bmN0aW9uKG5vdykge1xyXG4gICAgICAgICAgICAgICQodGhpcykuY3NzKFwidHJhbnNmb3JtXCIsIGBzY2FsZSgkezEuMSAtIDAuMSAqIG5vd30pIHRyYW5zbGF0ZVooMHB4KWApO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBkdXJhdGlvbjogMjAwLFxyXG4gICAgICAgICAgICBkb25lOiAoKSA9PiB7JChgIyR7dGhpcy5wcm9wcy5yb290SWR9YCkucmVtb3ZlKCk7fVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAkKFwiW2NsYXNzKj1cXFwibGF5ZXItXFxcIl1cIikucmVtb3ZlQ2xhc3MoXCJwdWJsaWNTZXJ2ZXJzT3BlblwiKS5hbmltYXRlKHtvcGFjaXR5OiAxfSwge1xyXG4gICAgICAgICAgICBzdGVwOiBmdW5jdGlvbihub3cpIHtcclxuICAgICAgICAgICAgICAkKHRoaXMpLmNzcyhcInRyYW5zZm9ybVwiLCBgc2NhbGUoJHswLjA3ICogbm93ICsgMC45M30pIHRyYW5zbGF0ZVooMHB4KWApO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBkdXJhdGlvbjogMjAwLFxyXG4gICAgICAgICAgICBkb25lOiAoKSA9PiB7JChcIltjbGFzcyo9XFxcImxheWVyLVxcXCJdXCIpLmNzcyhcIm9wYWNpdHlcIiwgXCJcIikuY3NzKFwidHJhbnNmb3JtXCIsIFwiXCIpO31cclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgY29tcG9uZW50V2lsbE1vdW50KCkge1xyXG4gICAgICAgICQoXCJbY2xhc3MqPVxcXCJsYXllci1cXFwiXVwiKS5hZGRDbGFzcyhcInB1YmxpY1NlcnZlcnNPcGVuXCIpLmFuaW1hdGUoe29wYWNpdHk6IDB9LCB7XHJcbiAgICAgICAgICAgIHN0ZXA6IGZ1bmN0aW9uKG5vdykge1xyXG4gICAgICAgICAgICAgICQodGhpcykuY3NzKFwidHJhbnNmb3JtXCIsIGBzY2FsZSgkezAuMDcgKiBub3cgKyAwLjkzfSkgdHJhbnNsYXRlWigwcHgpYCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOiAyMDBcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgXCJkaXZcIixcclxuICAgICAgICAgICAge2NsYXNzTmFtZTogXCJsYXllciBiZC1sYXllciBsYXllci0zUXJVZUdcIiwgaWQ6IHRoaXMucHJvcHMuaWQsIHJlZjogXCJyb290XCIsIHN0eWxlOiB7b3BhY2l0eTogMCwgdHJhbnNmb3JtOiBcInNjYWxlKDEuMSkgdHJhbnNsYXRlWigwcHgpXCJ9fSxcclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5jaGlsZHJlblxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/react/layer.js\n");
+/***/ }),
+/***/ "./src/react/list.js":
+/*!***************************!*\
+ !*** ./src/react/list.js ***!
+ \***************************/
+/*! exports provided: default */
+/***/ (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 V2C_List; });\n/* harmony import */ var _v2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../v2 */ \"./src/v2.js\");\n\nclass V2C_List extends _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].reactComponent {\n constructor(props) {\n super(props);\n }\n\n render() {\n return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"ul\", {\n className: this.props.className\n }, this.props.children);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3JlYWN0L2xpc3QuanM/YWEwYyJdLCJuYW1lcyI6WyJWMkNfTGlzdCIsIkJEVjIiLCJyZWFjdENvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJyZW5kZXIiLCJyZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJjaGlsZHJlbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxRQUFOLFNBQXVCQywyQ0FBSSxDQUFDQyxjQUE1QixDQUEyQztBQUN0REMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0g7O0FBRURDLFFBQU0sR0FBRztBQUNMLFdBQU9KLDJDQUFJLENBQUNLLEtBQUwsQ0FBV0MsYUFBWCxDQUNILElBREcsRUFFSDtBQUFDQyxlQUFTLEVBQUUsS0FBS0osS0FBTCxDQUFXSTtBQUF2QixLQUZHLEVBR0gsS0FBS0osS0FBTCxDQUFXSyxRQUhSLENBQVA7QUFLSDs7QUFYcUQiLCJmaWxlIjoiLi9zcmMvcmVhY3QvbGlzdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCRFYyIGZyb20gXCIuLi92MlwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVjJDX0xpc3QgZXh0ZW5kcyBCRFYyLnJlYWN0Q29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICBcInVsXCIsXHJcbiAgICAgICAgICAgIHtjbGFzc05hbWU6IHRoaXMucHJvcHMuY2xhc3NOYW1lfSxcclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5jaGlsZHJlblxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/react/list.js\n");
+/***/ }),
+/***/ "./src/react/pluginCard.js":
+/*!*********************************!*\
+ !*** ./src/react/pluginCard.js ***!
+ \*********************************/
+/*! exports provided: default */
+/***/ (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 V2C_PluginCard; });\n/* harmony import */ var _0globals__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../0globals */ \"./src/0globals.js\");\n/* harmony import */ var _v2__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../v2 */ \"./src/v2.js\");\n/* harmony import */ var _pluginModule__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../pluginModule */ \"./src/pluginModule.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ \"./src/utils.js\");\n/* harmony import */ var _xSvg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./xSvg */ \"./src/react/xSvg.js\");\n/* harmony import */ var _reloadIcon__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./reloadIcon */ \"./src/react/reloadIcon.js\");\n/* harmony import */ var _tooltipWrap__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./tooltipWrap */ \"./src/react/tooltipWrap.js\");\n\n\n\n\n\n\n\nclass V2C_PluginCard extends _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].reactComponent {\n constructor(props) {\n super(props);\n const self = this;\n self.onChange = self.onChange.bind(self);\n self.showSettings = self.showSettings.bind(self);\n self.setInitialState();\n self.hasSettings = typeof self.props.plugin.getSettingsPanel === \"function\";\n self.settingsPanel = \"\";\n this.reload = this.reload.bind(this);\n this.onReload = this.onReload.bind(this);\n }\n\n setInitialState() {\n this.state = {\n checked: _0globals__WEBPACK_IMPORTED_MODULE_0__[\"pluginCookie\"][this.props.plugin.getName()],\n settings: false,\n reloads: 0\n };\n } // componentDidMount() {\n // BDEvents.on(\"plugin-reloaded\", this.onReload);\n // }\n // componentWillUnmount() {\n // BDEvents.off(\"plugin-reloaded\", this.onReload);\n // }\n\n\n onReload(pluginName) {\n if (pluginName !== this.props.plugin.getName()) return;\n this.setState({\n reloads: this.state.reloads + 1\n });\n }\n\n componentDidUpdate() {\n if (this.state.settings) {\n if (typeof this.settingsPanel === \"object\") {\n this.refs.settingspanel.appendChild(this.settingsPanel);\n }\n\n if (!_0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"][\"fork-ps-3\"]) return;\n\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 self = $(_v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].reactDom.findDOMNode(this));\n const container = self.parents(\".scroller\");\n if (!isHidden(container[0], self[0])) return;\n container.animate({\n scrollTop: self.offset().top - container.offset().top + container.scrollTop() - 30\n }, 300);\n }\n }\n\n reload() {\n const plugin = this.props.plugin.getName();\n _pluginModule__WEBPACK_IMPORTED_MODULE_2__[\"default\"].reloadPlugin(plugin);\n this.props.plugin = _0globals__WEBPACK_IMPORTED_MODULE_0__[\"bdplugins\"][plugin].plugin;\n this.onReload(this.props.plugin.getName());\n }\n\n getString(value) {\n return typeof value == \"string\" ? value : value.toString();\n }\n\n makeLink(title, url) {\n const props = {\n className: \"bda-link bda-link-website\",\n target: \"_blank\"\n };\n if (typeof url == \"string\") props.href = url;\n if (typeof url == \"function\") props.onClick = event => {\n event.preventDefault();\n event.stopPropagation();\n url();\n };\n return _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(\"a\", props, title);\n }\n\n render() {\n const self = this;\n const {\n plugin\n } = this.props;\n const name = this.getString(plugin.getName());\n const author = this.getString(plugin.getAuthor());\n const description = this.getString(plugin.getDescription());\n const version = this.getString(plugin.getVersion());\n const meta = _0globals__WEBPACK_IMPORTED_MODULE_0__[\"bdplugins\"][name];\n\n if (this.state.settings) {\n try {\n self.settingsPanel = plugin.getSettingsPanel();\n } catch (err) {\n _utils__WEBPACK_IMPORTED_MODULE_3__[\"default\"].err(\"Plugins\", \"Unable to get settings panel for \" + plugin.getName() + \".\", err);\n }\n\n return _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(\"li\", {\n className: \"settings-open ui-switch-item\"\n }, _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(\"div\", {\n style: {\n \"float\": \"right\",\n \"cursor\": \"pointer\"\n },\n onClick: () => {\n this.refs.settingspanel.innerHTML = \"\";\n self.setState({\n settings: false\n });\n }\n }, _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(_xSvg__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null)), typeof self.settingsPanel === \"object\" && _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(\"div\", {\n id: `plugin-settings-${name}`,\n className: \"plugin-settings\",\n ref: \"settingspanel\"\n }), typeof self.settingsPanel !== \"object\" && _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(\"div\", {\n id: `plugin-settings-${name}`,\n className: \"plugin-settings\",\n ref: \"settingspanel\",\n dangerouslySetInnerHTML: {\n __html: self.settingsPanel\n }\n }));\n }\n\n const links = [];\n if (meta.website) links.push(this.makeLink(\"Website\", meta.website));\n if (meta.source) links.push(this.makeLink(\"Source\", meta.source));\n\n if (meta.invite) {\n links.push(this.makeLink(\"Support Server\", () => {\n const tester = /\\.gg\\/(.*)$/;\n let code = meta.invite;\n if (tester.test(code)) code = code.match(tester)[1];\n _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].LayerStack.popLayer();\n _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].InviteActions.acceptInviteAndTransitionToInviteChannel(code);\n }));\n }\n\n if (meta.donate) links.push(this.makeLink(\"Donate\", meta.donate));\n if (meta.patreon) links.push(this.makeLink(\"Patreon\", meta.patreon));\n const authorProps = {\n className: \"bda-author\"\n };\n\n if (meta.authorLink || meta.authorId) {\n authorProps.className += ` ${_v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].anchorClasses.anchor} ${_v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].anchorClasses.anchorUnderlineOnHover}`;\n authorProps.target = \"_blank\";\n if (meta.authorLink) authorProps.href = meta.authorLink;\n if (meta.authorId) authorProps.onClick = () => {\n _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].LayerStack.popLayer();\n _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].openDM(meta.authorId);\n };\n }\n\n return _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(\"li\", {\n \"data-name\": name,\n \"data-version\": version,\n \"className\": \"settings-closed ui-switch-item\"\n }, _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(\"div\", {\n className: \"bda-header\"\n }, _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(\"span\", {\n className: \"bda-header-title\"\n }, _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(\"span\", {\n className: \"bda-name\"\n }, name), \" v\", _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(\"span\", {\n className: \"bda-version\"\n }, version), \" by \", _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(meta.authorLink || meta.authorId ? \"a\" : \"span\", authorProps, author)), _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(\"div\", {\n className: \"bda-controls\"\n }, !_0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"][\"fork-ps-5\"] && _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(Object(_tooltipWrap__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_reloadIcon__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n color: \"black\",\n side: \"top\",\n text: \"Reload\"\n }), {\n className: \"bd-reload-card\",\n onClick: this.reload\n }), _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(\"label\", {\n className: \"ui-switch-wrapper ui-flex-child\",\n style: {\n flex: \"0 0 auto\"\n }\n }, _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(\"input\", {\n checked: this.state.checked,\n onChange: this.onChange,\n className: \"ui-switch-checkbox\",\n type: \"checkbox\"\n }), _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(\"div\", {\n className: this.state.checked ? \"ui-switch checked\" : \"ui-switch\"\n })))), _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(\"div\", {\n className: \"bda-description-wrap scroller-wrap fade\"\n }, _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(\"div\", {\n className: \"bda-description scroller\"\n }, description)), (links.length || this.hasSettings) && _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(\"div\", {\n className: \"bda-footer\"\n }, _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(\"span\", {\n className: \"bda-links\"\n }, ...links.map((element, index) => index < links.length - 1 ? [element, \" | \"] : element).flat()), this.hasSettings && _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(\"button\", {\n onClick: this.showSettings,\n className: \"bda-settings-button\",\n disabled: !this.state.checked\n }, \"Settings\")));\n }\n\n onChange() {\n this.setState({\n checked: !this.state.checked\n });\n _pluginModule__WEBPACK_IMPORTED_MODULE_2__[\"default\"].togglePlugin(this.props.plugin.getName());\n }\n\n showSettings() {\n if (!this.hasSettings) return;\n this.setState({\n settings: true\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3JlYWN0L3BsdWdpbkNhcmQuanM/OGJiMSJdLCJuYW1lcyI6WyJWMkNfUGx1Z2luQ2FyZCIsIkJEVjIiLCJyZWFjdENvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzZWxmIiwib25DaGFuZ2UiLCJiaW5kIiwic2hvd1NldHRpbmdzIiwic2V0SW5pdGlhbFN0YXRlIiwiaGFzU2V0dGluZ3MiLCJwbHVnaW4iLCJnZXRTZXR0aW5nc1BhbmVsIiwic2V0dGluZ3NQYW5lbCIsInJlbG9hZCIsIm9uUmVsb2FkIiwic3RhdGUiLCJjaGVja2VkIiwicGx1Z2luQ29va2llIiwiZ2V0TmFtZSIsInNldHRpbmdzIiwicmVsb2FkcyIsInBsdWdpbk5hbWUiLCJzZXRTdGF0ZSIsImNvbXBvbmVudERpZFVwZGF0ZSIsInJlZnMiLCJzZXR0aW5nc3BhbmVsIiwiYXBwZW5kQ2hpbGQiLCJzZXR0aW5nc0Nvb2tpZSIsImlzSGlkZGVuIiwiY29udGFpbmVyIiwiZWxlbWVudCIsImNUb3AiLCJzY3JvbGxUb3AiLCJjQm90dG9tIiwiY2xpZW50SGVpZ2h0IiwiZVRvcCIsIm9mZnNldFRvcCIsImVCb3R0b20iLCIkIiwicmVhY3REb20iLCJmaW5kRE9NTm9kZSIsInBhcmVudHMiLCJhbmltYXRlIiwib2Zmc2V0IiwidG9wIiwicGx1Z2luTW9kdWxlIiwicmVsb2FkUGx1Z2luIiwiYmRwbHVnaW5zIiwiZ2V0U3RyaW5nIiwidmFsdWUiLCJ0b1N0cmluZyIsIm1ha2VMaW5rIiwidGl0bGUiLCJ1cmwiLCJjbGFzc05hbWUiLCJ0YXJnZXQiLCJocmVmIiwib25DbGljayIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJyZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJyZW5kZXIiLCJuYW1lIiwiYXV0aG9yIiwiZ2V0QXV0aG9yIiwiZGVzY3JpcHRpb24iLCJnZXREZXNjcmlwdGlvbiIsInZlcnNpb24iLCJnZXRWZXJzaW9uIiwibWV0YSIsImVyciIsIlV0aWxzIiwic3R5bGUiLCJpbm5lckhUTUwiLCJYU3ZnIiwiaWQiLCJyZWYiLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsIl9faHRtbCIsImxpbmtzIiwid2Vic2l0ZSIsInB1c2giLCJzb3VyY2UiLCJpbnZpdGUiLCJ0ZXN0ZXIiLCJjb2RlIiwidGVzdCIsIm1hdGNoIiwiTGF5ZXJTdGFjayIsInBvcExheWVyIiwiSW52aXRlQWN0aW9ucyIsImFjY2VwdEludml0ZUFuZFRyYW5zaXRpb25Ub0ludml0ZUNoYW5uZWwiLCJkb25hdGUiLCJwYXRyZW9uIiwiYXV0aG9yUHJvcHMiLCJhdXRob3JMaW5rIiwiYXV0aG9ySWQiLCJhbmNob3JDbGFzc2VzIiwiYW5jaG9yIiwiYW5jaG9yVW5kZXJsaW5lT25Ib3ZlciIsIm9wZW5ETSIsIlRvb2x0aXBXcmFwIiwiUmVsb2FkSWNvbiIsImNvbG9yIiwic2lkZSIsInRleHQiLCJmbGV4IiwidHlwZSIsImxlbmd0aCIsIm1hcCIsImluZGV4IiwiZmxhdCIsImRpc2FibGVkIiwidG9nZ2xlUGx1Z2luIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVlLE1BQU1BLGNBQU4sU0FBNkJDLDJDQUFJLENBQUNDLGNBQWxDLENBQWlEO0FBRTVEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDQSxVQUFNQyxJQUFJLEdBQUcsSUFBYjtBQUNBQSxRQUFJLENBQUNDLFFBQUwsR0FBZ0JELElBQUksQ0FBQ0MsUUFBTCxDQUFjQyxJQUFkLENBQW1CRixJQUFuQixDQUFoQjtBQUNBQSxRQUFJLENBQUNHLFlBQUwsR0FBb0JILElBQUksQ0FBQ0csWUFBTCxDQUFrQkQsSUFBbEIsQ0FBdUJGLElBQXZCLENBQXBCO0FBQ0FBLFFBQUksQ0FBQ0ksZUFBTDtBQUNBSixRQUFJLENBQUNLLFdBQUws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MkNBQUksQ0FBQzZELEtBQUwsQ0FBV0MsYUFBWCxDQUF5QixRQUF6QixFQUFtQztBQUFDTCxhQUFPLEVBQUUsS0FBS2xELFlBQWY7QUFBNkIrQyxlQUFTLEVBQUUscUJBQXhDO0FBQStENEQsY0FBUSxFQUFFLENBQUMsS0FBS25HLEtBQUwsQ0FBV0M7QUFBckYsS0FBbkMsRUFBa0ksVUFBbEksQ0FKYyxDQXBCbkMsQ0FBUDtBQTJCSDs7QUFFRFgsVUFBUSxHQUFHO0FBQ1AsU0FBS2lCLFFBQUwsQ0FBYztBQUFDTixhQUFPLEVBQUUsQ0FBQyxLQUFLRCxLQUFMLENBQVdDO0FBQXRCLEtBQWQ7QUFDQTZCLHlEQUFZLENBQUNzRSxZQUFiLENBQTBCLEtBQUtoSCxLQUFMLENBQVdPLE1BQVgsQ0FBa0JRLE9BQWxCLEVBQTFCO0FBQ0g7O0FBRURYLGNBQVksR0FBRztBQUNYLFFBQUksQ0FBQyxLQUFLRSxXQUFWLEVBQXVCO0FBQ3ZCLFNBQUthLFFBQUwsQ0FBYztBQUFDSCxjQUFRLEVBQUU7QUFBWCxLQUFkO0FBQ0g7O0FBeksyRCIsImZpbGUiOiIuL3NyYy9yZWFjdC9wbHVnaW5DYXJkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzZXR0aW5nc0Nvb2tpZSwgcGx1Z2luQ29va2llLCBiZHBsdWdpbnN9IGZyb20gXCIuLi8wZ2xvYmFsc1wiO1xyXG5pbXBvcnQgQkRWMiBmcm9tIFwiLi4vdjJcIjtcclxuaW1wb3J0IHBsdWdpbk1vZHVsZSBmcm9tIFwiLi4vcGx1Z2luTW9kdWxlXCI7XHJcbmltcG9ydCBVdGlscyBmcm9tIFwiLi4vdXRpbHNcIjtcclxuXHJcbmltcG9ydCBYU3ZnIGZyb20gXCIuL3hTdmdcIjtcclxuaW1wb3J0IFJlbG9hZEljb24gZnJvbSBcIi4vcmVsb2FkSWNvblwiO1xyXG5pbXBvcnQgVG9vbHRpcFdyYXAgZnJvbSBcIi4vdG9vbHRpcFdyYXBcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFYyQ19QbHVnaW5DYXJkIGV4dGVuZHMgQkRWMi5yZWFjdENvbXBvbmVudCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgc2VsZi5vbkNoYW5nZSA9IHNlbGYub25DaGFuZ2UuYmluZChzZWxmKTtcclxuICAgICAgICBzZWxmLnNob3dTZXR0aW5ncyA9IHNlbGYuc2hvd1NldHRpbmdzLmJpbmQoc2VsZik7XHJcbiAgICAgICAgc2VsZi5zZXRJbml0aWFsU3RhdGUoKTtcclxuICAgICAgICBzZWxmLmhhc1NldHRpbmdzID0gdHlwZW9mIHNlbGYucHJvcHMucGx1Z2luLmdldFNldHRpbmdzUGFuZWwgPT09IFwiZnVuY3Rpb25cIjtcclxuICAgICAgICBzZWxmLnNldHRpbmdzUGFuZWwgPSBcIlwiO1xyXG5cclxuICAgICAgICB0aGlzLnJlbG9hZCA9IHRoaXMucmVsb2FkLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5vblJlbG9hZCA9IHRoaXMub25SZWxvYWQuYmluZCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRJbml0aWFsU3RhdGUoKSB7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgICAgICAgY2hlY2tlZDogcGx1Z2luQ29va2llW3RoaXMucHJvcHMucGx1Z2luLmdldE5hbWUoKV0sXHJcbiAgICAgICAgICAgIHNldHRpbmdzOiBmYWxzZSxcclxuICAgICAgICAgICAgcmVsb2FkczogMFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICAvLyAgICAgQkRFdmVudHMub24oXCJwbHVnaW4tcmVsb2FkZWRcIiwgdGhpcy5vblJlbG9hZCk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgLy8gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICAvLyAgICAgQkRFdmVudHMub2ZmKFwicGx1Z2luLXJlbG9hZGVkXCIsIHRoaXMub25SZWxvYWQpO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIG9uUmVsb2FkKHBsdWdpbk5hbWUpIHtcclxuICAgICAgICBpZiAocGx1Z2luTmFtZSAhPT0gdGhpcy5wcm9wcy5wbHVnaW4uZ2V0TmFtZSgpKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7cmVsb2FkczogdGhpcy5zdGF0ZS5yZWxvYWRzICsgMX0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5zZXR0aW5ncykge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2V0dGluZ3NQYW5lbCA9PT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWZzLnNldHRpbmdzcGFuZWwuYXBwZW5kQ2hpbGQodGhpcy5zZXR0aW5nc1BhbmVsKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCFzZXR0aW5nc0Nvb2tpZVtcImZvcmstcHMtM1wiXSkgcmV0dXJuO1xyXG4gICAgICAgICAgICBjb25zdCBpc0hpZGRlbiA9IChjb250YWluZXIsIGVsZW1lbnQpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBjVG9wID0gY29udGFpbmVyLnNjcm9sbFRvcDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNCb3R0b20gPSBjVG9wICsgY29udGFpbmVyLmNsaWVudEhlaWdodDtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBlVG9wID0gZWxlbWVudC5vZmZzZXRUb3A7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlQm90dG9tID0gZVRvcCArIGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiAgKGVUb3AgPCBjVG9wIHx8IGVCb3R0b20gPiBjQm90dG9tKTtcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGYgPSAkKEJEVjIucmVhY3REb20uZmluZERPTU5vZGUodGhpcykpO1xyXG4gICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBzZWxmLnBhcmVudHMoXCIuc2Nyb2xsZXJcIik7XHJcbiAgICAgICAgICAgIGlmICghaXNIaWRkZW4oY29udGFpbmVyWzBdLCBzZWxmWzBdKSkgcmV0dXJuO1xyXG4gICAgICAgICAgICBjb250YWluZXIuYW5pbWF0ZSh7XHJcbiAgICAgICAgICAgICAgICBzY3JvbGxUb3A6IHNlbGYub2Zmc2V0KCkudG9wIC0gY29udGFpbmVyLm9mZnNldCgpLnRvcCArIGNvbnRhaW5lci5zY3JvbGxUb3AoKSAtIDMwXHJcbiAgICAgICAgICAgIH0sIDMwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlbG9hZCgpIHtcclxuICAgICAgICBjb25zdCBwbHVnaW4gPSB0aGlzLnByb3BzLnBsdWdpbi5nZXROYW1lKCk7XHJcbiAgICAgICAgcGx1Z2luTW9kdWxlLnJlbG9hZFBsdWdpbihwbHVnaW4pO1xyXG4gICAgICAgIHRoaXMucHJvcHMucGx1Z2luID0gYmRwbHVnaW5zW3BsdWdpbl0ucGx1Z2luO1xyXG4gICAgICAgIHRoaXMub25SZWxvYWQodGhpcy5wcm9wcy5wbHVnaW4uZ2V0TmFtZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTdHJpbmcodmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09IFwic3RyaW5nXCIgPyB2YWx1ZSA6IHZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFrZUxpbmsodGl0bGUsIHVybCkge1xyXG4gICAgICAgIGNvbnN0IHByb3BzID0ge2NsYXNzTmFtZTogXCJiZGEtbGluayBiZGEtbGluay13ZWJzaXRlXCIsIHRhcmdldDogXCJfYmxhbmtcIn07XHJcbiAgICAgICAgaWYgKHR5cGVvZih1cmwpID09IFwic3RyaW5nXCIpIHByb3BzLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgaWYgKHR5cGVvZih1cmwpID09IFwiZnVuY3Rpb25cIikgcHJvcHMub25DbGljayA9IChldmVudCkgPT4ge2V2ZW50LnByZXZlbnREZWZhdWx0KCk7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB1cmwoKTt9O1xyXG4gICAgICAgIHJldHVybiBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJhXCIsIHByb3BzLCB0aXRsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIFxyXG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIGNvbnN0IHtwbHVnaW59ID0gdGhpcy5wcm9wcztcclxuICAgICAgICBjb25zdCBuYW1lID0gdGhpcy5nZXRTdHJpbmcocGx1Z2luLmdldE5hbWUoKSk7XHJcbiAgICAgICAgY29uc3QgYXV0aG9yID0gdGhpcy5nZXRTdHJpbmcocGx1Z2luLmdldEF1dGhvcigpKTtcclxuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHRoaXMuZ2V0U3RyaW5nKHBsdWdpbi5nZXREZXNjcmlwdGlvbigpKTtcclxuICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5nZXRTdHJpbmcocGx1Z2luLmdldFZlcnNpb24oKSk7XHJcbiAgICAgICAgY29uc3QgbWV0YSA9IGJkcGx1Z2luc1tuYW1lXTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuc2V0dGluZ3MpIHtcclxuICAgICAgICAgICAgdHJ5IHsgc2VsZi5zZXR0aW5nc1BhbmVsID0gcGx1Z2luLmdldFNldHRpbmdzUGFuZWwoKTsgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7IFV0aWxzLmVycihcIlBsdWdpbnNcIiwgXCJVbmFibGUgdG8gZ2V0IHNldHRpbmdzIHBhbmVsIGZvciBcIiArIHBsdWdpbi5nZXROYW1lKCkgKyBcIi5cIiwgZXJyKTsgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcImxpXCIsIHtjbGFzc05hbWU6IFwic2V0dGluZ3Mtb3BlbiB1aS1zd2l0Y2gtaXRlbVwifSxcclxuICAgICAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge3N0eWxlOiB7XCJmbG9hdFwiOiBcInJpZ2h0XCIsIFwiY3Vyc29yXCI6IFwicG9pbnRlclwifSwgb25DbGljazogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZzLnNldHRpbmdzcGFuZWwuaW5uZXJIVE1MID0gXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0U3RhdGUoe3NldHRpbmdzOiBmYWxzZX0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9fSxcclxuICAgICAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoWFN2ZywgbnVsbClcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICB0eXBlb2Ygc2VsZi5zZXR0aW5nc1BhbmVsID09PSBcIm9iamVjdFwiICYmIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7aWQ6IGBwbHVnaW4tc2V0dGluZ3MtJHtuYW1lfWAsIGNsYXNzTmFtZTogXCJwbHVnaW4tc2V0dGluZ3NcIiwgcmVmOiBcInNldHRpbmdzcGFuZWxcIn0pLFxyXG4gICAgICAgICAgICAgICAgdHlwZW9mIHNlbGYuc2V0dGluZ3NQYW5lbCAhPT0gXCJvYmplY3RcIiAmJiBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2lkOiBgcGx1Z2luLXNldHRpbmdzLSR7bmFtZX1gLCBjbGFzc05hbWU6IFwicGx1Z2luLXNldHRpbmdzXCIsIHJlZjogXCJzZXR0aW5nc3BhbmVsXCIsIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7X19odG1sOiBzZWxmLnNldHRpbmdzUGFuZWx9fSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGxpbmtzID0gW107XHJcbiAgICAgICAgaWYgKG1ldGEud2Vic2l0ZSkgbGlua3MucHVzaCh0aGlzLm1ha2VMaW5rKFwiV2Vic2l0ZVwiLCBtZXRhLndlYnNpdGUpKTtcclxuICAgICAgICBpZiAobWV0YS5zb3VyY2UpIGxpbmtzLnB1c2godGhpcy5tYWtlTGluayhcIlNvdXJjZVwiLCBtZXRhLnNvdXJjZSkpO1xyXG4gICAgICAgIGlmIChtZXRhLmludml0ZSkge1xyXG4gICAgICAgICAgICBsaW5rcy5wdXNoKHRoaXMubWFrZUxpbmsoXCJTdXBwb3J0IFNlcnZlclwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0ZXN0ZXIgPSAvXFwuZ2dcXC8oLiopJC87XHJcbiAgICAgICAgICAgICAgICBsZXQgY29kZSA9IG1ldGEuaW52aXRlO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRlc3Rlci50ZXN0KGNvZGUpKSBjb2RlID0gY29kZS5tYXRjaCh0ZXN0ZXIpWzFdO1xyXG4gICAgICAgICAgICAgICAgQkRWMi5MYXllclN0YWNrLnBvcExheWVyKCk7XHJcbiAgICAgICAgICAgICAgICBCRFYyLkludml0ZUFjdGlvbnMuYWNjZXB0SW52aXRlQW5kVHJhbnNpdGlvblRvSW52aXRlQ2hhbm5lbChjb2RlKTtcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobWV0YS5kb25hdGUpIGxpbmtzLnB1c2godGhpcy5tYWtlTGluayhcIkRvbmF0ZVwiLCBtZXRhLmRvbmF0ZSkpO1xyXG4gICAgICAgIGlmIChtZXRhLnBhdHJlb24pIGxpbmtzLnB1c2godGhpcy5tYWtlTGluayhcIlBhdHJlb25cIiwgbWV0YS5wYXRyZW9uKSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGF1dGhvclByb3BzID0ge2NsYXNzTmFtZTogXCJiZGEtYXV0aG9yXCJ9O1xyXG4gICAgICAgIGlmIChtZXRhLmF1dGhvckxpbmsgfHwgbWV0YS5hdXRob3JJZCkge1xyXG4gICAgICAgICAgICBhdXRob3JQcm9wcy5jbGFzc05hbWUgKz0gYCAke0JEVjIuYW5jaG9yQ2xhc3Nlcy5hbmNob3J9ICR7QkRWMi5hbmNob3JDbGFzc2VzLmFuY2hvclVuZGVybGluZU9uSG92ZXJ9YDtcclxuICAgICAgICAgICAgYXV0aG9yUHJvcHMudGFyZ2V0ID0gXCJfYmxhbmtcIjtcclxuXHJcbiAgICAgICAgICAgIGlmIChtZXRhLmF1dGhvckxpbmspIGF1dGhvclByb3BzLmhyZWYgPSBtZXRhLmF1dGhvckxpbms7XHJcbiAgICAgICAgICAgIGlmIChtZXRhLmF1dGhvcklkKSBhdXRob3JQcm9wcy5vbkNsaWNrID0gKCkgPT4ge0JEVjIuTGF5ZXJTdGFjay5wb3BMYXllcigpOyBCRFYyLm9wZW5ETShtZXRhLmF1dGhvcklkKTt9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuXHJcbiAgICAgICAgcmV0dXJuIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcImxpXCIsIHtcImRhdGEtbmFtZVwiOiBuYW1lLCBcImRhdGEtdmVyc2lvblwiOiB2ZXJzaW9uLCBcImNsYXNzTmFtZVwiOiBcInNldHRpbmdzLWNsb3NlZCB1aS1zd2l0Y2gtaXRlbVwifSxcclxuICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtjbGFzc05hbWU6IFwiYmRhLWhlYWRlclwifSxcclxuICAgICAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtjbGFzc05hbWU6IFwiYmRhLWhlYWRlci10aXRsZVwifSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7Y2xhc3NOYW1lOiBcImJkYS1uYW1lXCJ9LCBuYW1lKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCIgdlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtjbGFzc05hbWU6IFwiYmRhLXZlcnNpb25cIn0sIHZlcnNpb24pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiBieSBcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KG1ldGEuYXV0aG9yTGluayB8fCBtZXRhLmF1dGhvcklkID8gXCJhXCIgOiBcInNwYW5cIiwgYXV0aG9yUHJvcHMsIGF1dGhvcilcclxuICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7Y2xhc3NOYW1lOiBcImJkYS1jb250cm9sc1wifSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgIXNldHRpbmdzQ29va2llW1wiZm9yay1wcy01XCJdICYmIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChUb29sdGlwV3JhcChSZWxvYWRJY29uLCB7Y29sb3I6IFwiYmxhY2tcIiwgc2lkZTogXCJ0b3BcIiwgdGV4dDogXCJSZWxvYWRcIn0pLCB7Y2xhc3NOYW1lOiBcImJkLXJlbG9hZC1jYXJkXCIsIG9uQ2xpY2s6IHRoaXMucmVsb2FkfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcImxhYmVsXCIsIHtjbGFzc05hbWU6IFwidWktc3dpdGNoLXdyYXBwZXIgdWktZmxleC1jaGlsZFwiLCBzdHlsZToge2ZsZXg6IFwiMCAwIGF1dG9cIn19LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge2NoZWNrZWQ6IHRoaXMuc3RhdGUuY2hlY2tlZCwgb25DaGFuZ2U6IHRoaXMub25DaGFuZ2UsIGNsYXNzTmFtZTogXCJ1aS1zd2l0Y2gtY2hlY2tib3hcIiwgdHlwZTogXCJjaGVja2JveFwifSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTogdGhpcy5zdGF0ZS5jaGVja2VkID8gXCJ1aS1zd2l0Y2ggY2hlY2tlZFwiIDogXCJ1aS1zd2l0Y2hcIn0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7Y2xhc3NOYW1lOiBcImJkYS1kZXNjcmlwdGlvbi13cmFwIHNjcm9sbGVyLXdyYXAgZmFkZVwifSxcclxuICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7Y2xhc3NOYW1lOiBcImJkYS1kZXNjcmlwdGlvbiBzY3JvbGxlclwifSwgZGVzY3JpcHRpb24pXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIChsaW5rcy5sZW5ndGggfHwgdGhpcy5oYXNTZXR0aW5ncykgJiYgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtjbGFzc05hbWU6IFwiYmRhLWZvb3RlclwifSxcclxuICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge2NsYXNzTmFtZTogXCJiZGEtbGlua3NcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4uKGxpbmtzLm1hcCgoZWxlbWVudCwgaW5kZXgpID0+IGluZGV4IDwgbGlua3MubGVuZ3RoIC0gMSA/IFtlbGVtZW50LCBcIiB8IFwiXSA6IGVsZW1lbnQpLmZsYXQoKSlcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICB0aGlzLmhhc1NldHRpbmdzICYmIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCB7b25DbGljazogdGhpcy5zaG93U2V0dGluZ3MsIGNsYXNzTmFtZTogXCJiZGEtc2V0dGluZ3MtYnV0dG9uXCIsIGRpc2FibGVkOiAhdGhpcy5zdGF0ZS5jaGVja2VkfSwgXCJTZXR0aW5nc1wiKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNoYW5nZSgpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtjaGVja2VkOiAhdGhpcy5zdGF0ZS5jaGVja2VkfSk7XHJcbiAgICAgICAgcGx1Z2luTW9kdWxlLnRvZ2dsZVBsdWdpbih0aGlzLnByb3BzLnBsdWdpbi5nZXROYW1lKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dTZXR0aW5ncygpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaGFzU2V0dGluZ3MpIHJldHVybjtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtzZXR0aW5nczogdHJ1ZX0pO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/react/pluginCard.js\n");
+/***/ }),
+/***/ "./src/react/publicServers.js":
+/*!************************************!*\
+ !*** ./src/react/publicServers.js ***!
+ \************************************/
+/*! exports provided: default */
+/***/ (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 V2C_PublicServers; });\n/* harmony import */ var _v2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../v2 */ \"./src/v2.js\");\n/* harmony import */ var _tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tools */ \"./src/react/tools.js\");\n/* harmony import */ var _serverCard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./serverCard */ \"./src/react/serverCard.js\");\n/* harmony import */ var _sidebarView__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./sidebarView */ \"./src/react/sidebarView.js\");\n/* harmony import */ var _settingsTitle__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./settingsTitle */ \"./src/react/settingsTitle.js\");\n/* harmony import */ var _tabBarSeparator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./tabBarSeparator */ \"./src/react/tabBarSeparator.js\");\n/* harmony import */ var _tabBarHeader__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./tabBarHeader */ \"./src/react/tabBarHeader.js\");\n/* harmony import */ var _tabBarItem__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./tabBarItem */ \"./src/react/tabBarItem.js\");\n\n\n\n\n\n\n\n\nclass V2C_PublicServers extends _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].reactComponent {\n constructor(props) {\n super(props);\n this.setInitialState();\n this.close = this.close.bind(this);\n this.changeCategory = this.changeCategory.bind(this);\n this.search = this.search.bind(this);\n this.searchKeyDown = this.searchKeyDown.bind(this);\n this.checkConnection = this.checkConnection.bind(this);\n this.join = this.join.bind(this);\n this.connect = this.connect.bind(this);\n this.GuildStore = _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].WebpackModules.findByUniqueProperties([\"getGuilds\"]);\n this.AvatarDefaults = _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].WebpackModules.findByUniqueProperties([\"getUserAvatarURL\", \"DEFAULT_AVATARS\"]);\n this.InviteActions = _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].WebpackModules.findByUniqueProperties([\"acceptInvite\"]);\n this.SortedGuildStore = _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].WebpackModules.findByUniqueProperties([\"getSortedGuilds\"]);\n }\n\n componentDidMount() {\n this.checkConnection();\n }\n\n setInitialState() {\n this.state = {\n selectedCategory: -1,\n title: \"Loading...\",\n loading: true,\n servers: [],\n next: null,\n connection: {\n state: 0,\n user: null\n }\n };\n }\n\n close() {\n _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].reactDom.unmountComponentAtNode(document.getElementById(this.props.rootId));\n }\n\n search(query, clear) {\n const self = this;\n $.ajax({\n method: \"GET\",\n url: `${self.endPoint}${query}${query ? \"&schema=new\" : \"?schema=new\"}`,\n success: data => {\n let servers = data.results.reduce((arr, server) => {\n server.joined = false;\n arr.push(server); // arr.push();\n\n return arr;\n }, []);\n\n if (!clear) {\n servers = self.state.servers.concat(servers);\n } else {//servers.unshift(self.bdServer);\n }\n\n let end = data.size + data.from;\n data.next = `?from=${end}`;\n if (self.state.term) data.next += `&term=${self.state.term}`;\n if (self.state.selectedCategory) data.next += `&category=${self.categoryButtons[self.state.selectedCategory]}`;\n\n if (end >= data.total) {\n end = data.total;\n data.next = null;\n }\n\n let title = `Showing 1-${end} of ${data.total} results in ${self.categoryButtons[self.state.selectedCategory]}`;\n if (self.state.term) title += ` for ${self.state.term}`;\n self.setState({\n loading: false,\n title: title,\n servers: servers,\n next: data.next\n });\n\n if (clear) {\n //console.log(self);\n self.refs.sbv.refs.contentScroller.scrollTop = 0;\n }\n },\n error: () => {\n self.setState({\n loading: false,\n title: \"Failed to load servers. Check console for details\"\n });\n }\n });\n }\n\n join(serverCard) {\n if (serverCard.props.pinned) return this.InviteActions.acceptInvite(serverCard.props.invite_code);\n $.ajax({\n method: \"GET\",\n url: `${this.joinEndPoint}/${serverCard.props.server.identifier}`,\n headers: {\n \"Accept\": \"application/json;\",\n \"Content-Type\": \"application/json;\",\n \"x-discord-token\": this.state.connection.user.accessToken\n },\n crossDomain: true,\n xhrFields: {\n withCredentials: true\n },\n success: () => {\n serverCard.setState({\n joined: true\n });\n }\n });\n }\n\n connect() {\n const self = this;\n const options = self.windowOptions;\n options.x = Math.round(window.screenX + window.innerWidth / 2 - options.width / 2);\n options.y = Math.round(window.screenY + window.innerHeight / 2 - options.height / 2);\n self.joinWindow = new (window.require(\"electron\").remote.BrowserWindow)(options);\n const url = \"https://auth.discordservers.com/connect?scopes=guilds.join&previousUrl=https://auth.discordservers.com/info\";\n self.joinWindow.webContents.on(\"did-navigate\", (event, url) => {\n if (url != \"https://auth.discordservers.com/info\") return;\n self.joinWindow.close();\n self.checkConnection();\n });\n self.joinWindow.loadURL(url);\n }\n\n get windowOptions() {\n return {\n width: 500,\n height: 550,\n backgroundColor: \"#282b30\",\n show: true,\n resizable: false,\n maximizable: false,\n minimizable: false,\n alwaysOnTop: true,\n frame: false,\n center: false,\n webPreferences: {\n nodeIntegration: false\n }\n };\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 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 const guildList = this.SortedGuildStore.getFlattenedGuildIds();\n const defaultList = this.AvatarDefaults.DEFAULT_AVATARS;\n return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(_serverCard__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n server: server,\n pinned: true,\n join: this.join,\n guildList: guildList,\n fallback: defaultList[Math.floor(Math.random() * 5)]\n });\n }\n\n get endPoint() {\n return \"https://search.discordservers.com\";\n }\n\n get joinEndPoint() {\n return \"https://j.discordservers.com\";\n }\n\n get connectEndPoint() {\n return \"https://join.discordservers.com/connect\";\n }\n\n checkConnection() {\n const self = this;\n\n try {\n $.ajax({\n method: \"GET\",\n url: `https://auth.discordservers.com/info`,\n headers: {\n \"Accept\": \"application/json;\",\n \"Content-Type\": \"application/json;\"\n },\n crossDomain: true,\n xhrFields: {\n withCredentials: true\n },\n success: data => {\n // Utils.log(\"PublicServer\", \"Got data: \" + JSON.stringify(data));\n self.setState({\n selectedCategory: 0,\n connection: {\n state: 2,\n user: data\n }\n });\n self.search(\"\", true);\n },\n error: () => {\n self.setState({\n title: \"Not connected to discordservers.com!\",\n loading: true,\n selectedCategory: -1,\n connection: {\n state: 1,\n user: null\n }\n });\n }\n });\n } catch (error) {\n self.setState({\n title: \"Not connected to discordservers.com!\",\n loading: true,\n selectedCategory: -1,\n connection: {\n state: 1,\n user: null\n }\n });\n }\n }\n\n render() {\n return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(_sidebarView__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n ref: \"sbv\",\n children: this.component\n });\n }\n\n get component() {\n return {\n sidebar: {\n component: this.sidebar\n },\n content: {\n component: this.content\n },\n tools: {\n component: _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(_tools__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n key: \"pt\",\n ref: \"tools\",\n onClick: this.close\n })\n }\n };\n }\n\n get sidebar() {\n return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"sidebar\",\n key: \"ps\"\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"ui-tab-bar SIDE\"\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"ui-tab-bar-header\",\n style: {\n fontSize: \"16px\"\n }\n }, \"Public Servers\"), _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(_tabBarSeparator__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null), this.searchInput, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(_tabBarSeparator__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null), _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(_tabBarHeader__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n text: \"Categories\"\n }), this.categoryButtons.map((value, index) => {\n return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(_tabBarItem__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n id: index,\n onClick: this.changeCategory,\n key: index,\n text: value,\n selected: this.state.selectedCategory === index\n });\n }), _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(_tabBarSeparator__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null), this.footer, this.connection));\n }\n\n get searchInput() {\n return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"ui-form-item\"\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"ui-text-input flex-vertical\",\n style: {\n width: \"172px\",\n marginLeft: \"10px\"\n }\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"input\", {\n ref: \"searchinput\",\n onKeyDown: this.searchKeyDown,\n onChange: () => {},\n type: \"text\",\n className: \"input default\",\n placeholder: \"Search...\",\n maxLength: \"50\"\n })));\n }\n\n searchKeyDown(e) {\n const self = this;\n if (self.state.loading || e.which !== 13) return;\n self.setState({\n loading: true,\n title: \"Loading...\",\n term: e.target.value\n });\n let query = `?term=${e.target.value}`;\n\n if (self.state.selectedCategory !== 0) {\n query += `&category=${self.categoryButtons[self.state.selectedCategory]}`;\n }\n\n self.search(query, true);\n }\n\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 changeCategory(id) {\n const self = this;\n if (self.state.loading) return;\n self.refs.searchinput.value = \"\";\n self.setState({\n loading: true,\n selectedCategory: id,\n title: \"Loading...\",\n term: null\n });\n\n if (id === 0) {\n self.search(\"\", true);\n return;\n }\n\n self.search(`?category=${self.categoryButtons[id]}`, true);\n }\n\n get content() {\n const self = this;\n const guildList = this.SortedGuildStore.getFlattenedGuildIds();\n const defaultList = this.AvatarDefaults.DEFAULT_AVATARS;\n if (self.state.connection.state === 1) return self.notConnected;\n return [_v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n ref: \"content\",\n key: \"pc\",\n className: \"contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default\"\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(_settingsTitle__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n text: self.state.title\n }), self.bdServer, self.state.servers.map(server => {\n return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(_serverCard__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n key: server.identifier,\n server: server,\n join: self.join,\n guildList: guildList,\n fallback: defaultList[Math.floor(Math.random() * 5)]\n });\n }), self.state.next && _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"button\", {\n type: \"button\",\n onClick: () => {\n if (self.state.loading) return;\n self.setState({\n loading: true\n });\n self.search(self.state.next, false);\n },\n className: \"ui-button filled brand small grow\",\n style: {\n width: \"100%\",\n marginTop: \"10px\",\n marginBottom: \"10px\"\n }\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"ui-button-contents\"\n }, self.state.loading ? \"Loading\" : \"Load More\")), self.state.servers.length > 0 && _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(_settingsTitle__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n text: self.state.title\n }))];\n }\n\n get notConnected() {\n const self = this; //return BDV2.react.createElement(SettingsTitle, { text: self.state.title });\n\n return [_v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n key: \"ncc\",\n ref: \"content\",\n className: \"contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default\"\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"h2\", {\n className: \"ui-form-title h2 margin-reset margin-bottom-20\"\n }, \"Not connected to discordservers.com!\", _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"button\", {\n onClick: self.connect,\n type: \"button\",\n className: \"ui-button filled brand small grow\",\n style: {\n display: \"inline-block\",\n minHeight: \"18px\",\n marginLeft: \"10px\",\n lineHeight: \"14px\"\n }\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"ui-button-contents\"\n }, \"Connect\"))), self.bdServer)];\n }\n\n get footer() {\n return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"ui-tab-bar-header\"\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"a\", {\n href: \"https://discordservers.com\",\n target: \"_blank\"\n }, \"Discordservers.com\"));\n }\n\n get connection() {\n const self = this;\n const {\n connection\n } = self.state;\n if (connection.state !== 2) return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"span\", null);\n return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"span\", null, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(_tabBarSeparator__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null), _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"span\", {\n style: {\n color: \"#b9bbbe\",\n fontSize: \"10px\",\n marginLeft: \"10px\"\n }\n }, \"Connected as: \", `${connection.user.username}#${connection.user.discriminator}`), _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n style: {\n padding: \"5px 10px 0 10px\"\n }\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"button\", {\n style: {\n width: \"100%\",\n minHeight: \"20px\"\n },\n type: \"button\",\n className: \"ui-button filled brand small grow\"\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"ui-button-contents\",\n onClick: self.connect\n }, \"Reconnect\"))));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3JlYWN0L3B1YmxpY1NlcnZlcnMuanM/MjI3YSJdLCJuYW1lcyI6WyJWMkNfUHVibGljU2VydmVycyIsIkJEVjIiLCJyZWFjdENvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzZXRJbml0aWFsU3RhdGUiLCJjbG9zZSIsImJpbmQiLCJjaGFuZ2VDYXRlZ29yeSIsInNlYXJjaCIsInNlYXJjaEtleURvd24iLCJjaGVja0Nvbm5lY3Rpb24iLCJqb2luIiwiY29ubmVjdCIsIkd1aWxkU3RvcmUiLCJXZWJwYWNrTW9kdWxlcyIsImZpbmRCeVVuaXF1ZVByb3BlcnRpZXMiLCJBdmF0YXJEZWZhdWx0cyIsIkludml0ZUFjdGlvbnMiLCJTb3J0ZWRHdWlsZFN0b3JlIiwiY29tcG9uZW50RGlkTW91bnQiLCJzdGF0ZSIsInNlbGVjdGVkQ2F0ZWdvcnkiLCJ0aXRsZSIsImxvYWRpbmciLCJzZXJ2ZXJzIiwibmV4dCIsImNvbm5lY3Rpb24iLCJ1c2VyIiwicmVhY3REb20iLCJ1bm1vdW50Q29tcG9uZW50QXROb2RlIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsInJvb3RJZCIsInF1ZXJ5IiwiY2xlYXIiLCJzZWxmIiwiJCIsImFqYXgiLCJtZXRob2QiLCJ1cmwiLCJlbmRQb2ludCIsInN1Y2Nlc3MiLCJkYXRhIiwicmVzdWx0cyIsInJlZHVjZSIsImFyciIsInNlcnZlciIsImpvaW5lZCIsInB1c2giLCJjb25jYXQiLCJlbmQiLCJzaXplIiwiZnJvbSIsInRlcm0iLCJjYXRlZ29yeUJ1dHRvbnMiLCJ0b3RhbCIsInNldFN0YXRlIiwicmVmcyIsInNidiIsImNvbnRlbnRTY3JvbGxlciIsInNjcm9sbFRvcCIsImVycm9yIiwic2VydmVyQ2FyZCIsInBpbm5lZCIsImFjY2VwdEludml0ZSIsImludml0ZV9jb2RlIiwiam9pbkVuZFBvaW50IiwiaWRlbnRpZmllciIsImhlYWRlcnMiLCJhY2Nlc3NUb2tlbiIsImNyb3NzRG9tYWluIiwieGhyRmllbGRzIiwid2l0aENyZWRlbnRpYWxzIiwib3B0aW9ucyIsIndpbmRvd09wdGlvbnMiLCJ4IiwiTWF0aCIsInJvdW5kIiwid2luZG93Iiwic2NyZWVuWCIsImlubmVyV2lkdGgiLCJ3aWR0aCIsInkiLCJzY3JlZW5ZIiwiaW5uZXJIZWlnaHQiLCJoZWlnaHQiLCJqb2luV2luZG93IiwicmVxdWlyZSIsInJlbW90ZSIsIkJyb3dzZXJXaW5kb3ciLCJ3ZWJDb250ZW50cyIsIm9uIiwiZXZlbnQiLCJsb2FkVVJMIiwiYmFja2dyb3VuZENvbG9yIiwic2hvdyIsInJlc2l6YWJsZSIsIm1heGltaXphYmxlIiwibWluaW1pemFibGUiLCJhbHdheXNPblRvcCIsImZyYW1lIiwiY2VudGVyIiwid2ViUHJlZmVyZW5jZXMiLCJub2RlSW50ZWdyYXRpb24iLCJiZFNlcnZlciIsIm5hbWUiLCJvbmxpbmUiLCJtZW1iZXJzIiwiY2F0ZWdvcmllcyIsImRlc2NyaXB0aW9uIiwiaWNvblVybCIsIm5hdGl2ZWpvaW4iLCJndWlsZExpc3QiLCJnZXRGbGF0dGVuZWRHdWlsZElkcyIsImRlZmF1bHRMaXN0IiwiREVGQVVMVF9BVkFUQVJTIiwicmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiU2VydmVyQ2FyZCIsImZhbGxiYWNrIiwiZmxvb3IiLCJyYW5kb20iLCJjb25uZWN0RW5kUG9pbnQiLCJyZW5kZXIiLCJTaWRlYmFyVmlldyIsInJlZiIsImNoaWxkcmVuIiwiY29tcG9uZW50Iiwic2lkZWJhciIsImNvbnRlbnQiLCJ0b29scyIsIlRvb2xzIiwia2V5Iiwib25DbGljayIsImNsYXNzTmFtZSIsInN0eWxlIiwiZm9udFNpemUiLCJUYWJCYXJTZXBhcmF0b3IiLCJzZWFyY2hJbnB1dCIsIlRhYkJhckhlYWRlciIsInRleHQiLCJtYXAiLCJ2YWx1ZSIsImluZGV4IiwiVGFiQmFySXRlbSIsImlkIiwic2VsZWN0ZWQiLCJmb290ZXIiLCJtYXJnaW5MZWZ0Iiwib25LZXlEb3duIiwib25DaGFuZ2UiLCJ0eXBlIiwicGxhY2Vob2xkZXIiLCJtYXhMZW5ndGgiLCJlIiwid2hpY2giLCJ0YXJnZXQiLCJzZWFyY2hpbnB1dCIsIm5vdENvbm5lY3RlZCIsIlNldHRpbmdzVGl0bGUiLCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iLCJsZW5ndGgiLCJkaXNwbGF5IiwibWluSGVpZ2h0IiwibGluZUhlaWdodCIsImhyZWYiLCJjb2xvciIsInVzZXJuYW1lIiwiZGlzY3JpbWluYXRvciIsInBhZGRpbmciXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVlLE1BQU1BLGlCQUFOLFNBQWdDQywyQ0FBSSxDQUFDQyxjQUFyQyxDQUFvRDtBQUUvREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsZUFBTDtBQUNBLFNBQUtDLEtBQUwsR0FBYSxLQUFLQSxLQUFMLENBQVdDLElBQVgsQ0FBZ0IsSUFBaEIsQ0FBYjtBQUNBLFNBQUtDLGNBQUwsR0FBc0IsS0FBS0EsY0FBTCxDQUFvQkQsSUFBcEIsQ0FBeUIsSUFBekIsQ0FBdEI7QUFDQSxTQUFLRSxNQUFMLEdBQWMsS0FBS0EsTUFBTCxDQUFZRixJQUFaLENBQWlCLElBQWpCLENBQWQ7QUFDQSxTQUFLRyxhQUFMLEdBQXFCLEtBQUtBLGFBQUwsQ0FBbUJILElBQW5CLENBQXdCLElBQXhCLENBQXJCO0FBQ0EsU0FBS0ksZUFBTCxHQUF1QixLQUFLQSxlQUFMLENBQXFCSixJQUFyQixDQUEwQixJQUExQixDQUF2QjtBQUNBLFNBQUtLLElBQUwsR0FBWSxLQUFLQSxJQUFMLENBQVVMLElBQVYsQ0FBZSxJQUFmLENBQVo7QUFDQSxTQUFLTSxPQUFMLEdBQWUsS0FBS0EsT0FBTCxDQUFhTixJQUFiLENBQWtCLElBQWxCLENBQWY7QUFFQSxTQUFLTyxVQUFMLEdBQWtCYiwyQ0FBSSxDQUFDYyxj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O0FBRTVCLFdBQU9ySCwyQ0FBSSxDQUFDb0gsS0FBTCxDQUFXQyxhQUFYLENBQ0gsTUFERyxFQUVILElBRkcsRUFHSHJILDJDQUFJLENBQUNvSCxLQUFMLENBQVdDLGFBQVgsQ0FBeUJvQix3REFBekIsRUFBMEMsSUFBMUMsQ0FIRyxFQUlIekksMkNBQUksQ0FBQ29ILEtBQUwsQ0FBV0MsYUFBWCxDQUNJLE1BREosRUFFSTtBQUFDa0IsV0FBSyxFQUFFO0FBQUNnQyxhQUFLLEVBQUUsU0FBUjtBQUFtQi9CLGdCQUFRLEVBQUUsTUFBN0I7QUFBcUNZLGtCQUFVLEVBQUU7QUFBakQ7QUFBUixLQUZKLEVBR0ksZ0JBSEosRUFJSyxHQUFFMUgsVUFBVSxDQUFDQyxJQUFYLENBQWdCNkksUUFBUyxJQUFHOUksVUFBVSxDQUFDQyxJQUFYLENBQWdCOEksYUFBYyxFQUpqRSxDQUpHLEVBVUh6SywyQ0FBSSxDQUFDb0gsS0FBTCxDQUFXQyxhQUFYLENBQ0ksS0FESixFQUVJO0FBQUNrQixXQUFLLEVBQUU7QUFBQ21DLGVBQU8sRUFBRTtBQUFWO0FBQVIsS0FGSixFQUdJMUssMkNBQUksQ0FBQ29ILEtBQUwsQ0FBV0MsYUFBWCxDQUNJLFFBREosRUFFSTtBQUFDa0IsV0FBSyxFQUFFO0FBQUN0RCxhQUFLLEVBQUUsTUFBUjtBQUFnQm1GLGlCQUFTLEVBQUU7QUFBM0IsT0FBUjtBQUE0Q2IsVUFBSSxFQUFFLFFBQWxEO0FBQTREakIsZUFBUyxFQUFFO0FBQXZFLEtBRkosRUFHSXRJLDJDQUFJLENBQUNvSCxLQUFMLENBQVdDLGFBQVgsQ0FDSSxLQURKLEVBRUk7QUFBQ2lCLGVBQVMsRUFBRSxvQkFBWjtBQUFrQ0QsYUFBTyxFQUFFbEcsSUFBSSxDQUFDdkI7QUFBaEQsS0FGSixFQUdJLFdBSEosQ0FISixDQUhKLENBVkcsQ0FBUDtBQXdCUDs7QUF6YWtFIiwiZmlsZSI6Ii4vc3JjL3JlYWN0L3B1YmxpY1NlcnZlcnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQkRWMiBmcm9tIFwiLi4vdjJcIjtcclxuXHJcbmltcG9ydCBUb29scyBmcm9tIFwiLi90b29sc1wiO1xyXG5pbXBvcnQgU2VydmVyQ2FyZCBmcm9tIFwiLi9zZXJ2ZXJDYXJkXCI7XHJcbmltcG9ydCBTaWRlYmFyVmlldyBmcm9tIFwiLi9zaWRlYmFyVmlld1wiO1xyXG5pbXBvcnQgU2V0dGluZ3NUaXRsZSBmcm9tIFwiLi9zZXR0aW5nc1RpdGxlXCI7XHJcbmltcG9ydCBUYWJCYXJTZXBhcmF0b3IgZnJvbSBcIi4vdGFiQmFyU2VwYXJhdG9yXCI7XHJcbmltcG9ydCBUYWJCYXJIZWFkZXIgZnJvbSBcIi4vdGFiQmFySGVhZGVyXCI7XHJcbmltcG9ydCBUYWJCYXJJdGVtIGZyb20gXCIuL3RhYkJhckl0ZW1cIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFYyQ19QdWJsaWNTZXJ2ZXJzIGV4dGVuZHMgQkRWMi5yZWFjdENvbXBvbmVudCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5zZXRJbml0aWFsU3RhdGUoKTtcclxuICAgICAgICB0aGlzLmNsb3NlID0gdGhpcy5jbG9zZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlQ2F0ZWdvcnkgPSB0aGlzLmNoYW5nZUNhdGVnb3J5LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2ggPSB0aGlzLnNlYXJjaC5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoS2V5RG93biA9IHRoaXMuc2VhcmNoS2V5RG93bi5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuY2hlY2tDb25uZWN0aW9uID0gdGhpcy5jaGVja0Nvbm5lY3Rpb24uYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLmpvaW4gPSB0aGlzLmpvaW4uYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLmNvbm5lY3QgPSB0aGlzLmNvbm5lY3QuYmluZCh0aGlzKTtcclxuXHJcbiAgICAgICAgdGhpcy5HdWlsZFN0b3JlID0gQkRWMi5XZWJwYWNrTW9kdWxlcy5maW5kQnlVbmlxdWVQcm9wZXJ0aWVzKFtcImdldEd1aWxkc1wiXSk7XHJcbiAgICAgICAgdGhpcy5BdmF0YXJEZWZhdWx0cyA9IEJEVjIuV2VicGFja01vZHVsZXMuZmluZEJ5VW5pcXVlUHJvcGVydGllcyhbXCJnZXRVc2VyQXZhdGFyVVJMXCIsIFwiREVGQVVMVF9BVkFUQVJTXCJdKTtcclxuICAgICAgICB0aGlzLkludml0ZUFjdGlvbnMgPSBCRFYyLldlYnBhY2tNb2R1bGVzLmZpbmRCeVVuaXF1ZVByb3BlcnRpZXMoW1wiYWNjZXB0SW52aXRlXCJdKTtcclxuICAgICAgICB0aGlzLlNvcnRlZEd1aWxkU3RvcmUgPSBCRFYyLldlYnBhY2tNb2R1bGVzLmZpbmRCeVVuaXF1ZVByb3BlcnRpZXMoW1wiZ2V0U29ydGVkR3VpbGRzXCJdKTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgICAgICB0aGlzLmNoZWNrQ29ubmVjdGlvbigpO1xyXG4gICAgIH1cclxuXHJcbiAgICBzZXRJbml0aWFsU3RhdGUoKSB7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgICAgICAgc2VsZWN0ZWRDYXRlZ29yeTogLTEsXHJcbiAgICAgICAgICAgIHRpdGxlOiBcIkxvYWRpbmcuLi5cIixcclxuICAgICAgICAgICAgbG9hZGluZzogdHJ1ZSxcclxuICAgICAgICAgICAgc2VydmVyczogW10sXHJcbiAgICAgICAgICAgIG5leHQ6IG51bGwsXHJcbiAgICAgICAgICAgIGNvbm5lY3Rpb246IHtcclxuICAgICAgICAgICAgICAgIHN0YXRlOiAwLFxyXG4gICAgICAgICAgICAgICAgdXNlcjogbnVsbFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZSgpIHtcclxuICAgICAgICBCRFYyLnJlYWN0RG9tLnVubW91bnRDb21wb25lbnRBdE5vZGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5wcm9wcy5yb290SWQpKTtcclxuICAgIH1cclxuXHJcbiAgICBzZWFyY2gocXVlcnksIGNsZWFyKSB7XHJcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcblxyXG4gICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcclxuICAgICAgICAgICAgdXJsOiBgJHtzZWxmLmVuZFBvaW50fSR7cXVlcnl9JHtxdWVyeSA/IFwiJnNjaGVtYT1uZXdcIiA6IFwiP3NjaGVtYT1uZXdcIn1gLFxyXG4gICAgICAgICAgICBzdWNjZXNzOiBkYXRhID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBzZXJ2ZXJzID0gZGF0YS5yZXN1bHRzLnJlZHVjZSgoYXJyLCBzZXJ2ZXIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIuam9pbmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgYXJyLnB1c2goc2VydmVyKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBhcnIucHVzaCg8U2VydmVyQ2FyZCBzZXJ2ZXI9e3NlcnZlcn0gam9pbj17c2VsZi5qb2lufS8+KTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJyO1xyXG4gICAgICAgICAgICAgICAgfSwgW10pO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICghY2xlYXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJzID0gc2VsZi5zdGF0ZS5zZXJ2ZXJzLmNvbmNhdChzZXJ2ZXJzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vc2VydmVycy51bnNoaWZ0KHNlbGYuYmRTZXJ2ZXIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGxldCBlbmQgPSBkYXRhLnNpemUgKyBkYXRhLmZyb207XHJcbiAgICAgICAgICAgICAgICBkYXRhLm5leHQgPSBgP2Zyb209JHtlbmR9YDtcclxuICAgICAgICAgICAgICAgIGlmIChzZWxmLnN0YXRlLnRlcm0pIGRhdGEubmV4dCArPSBgJnRlcm09JHtzZWxmLnN0YXRlLnRlcm19YDtcclxuICAgICAgICAgICAgICAgIGlmIChzZWxmLnN0YXRlLnNlbGVjdGVkQ2F0ZWdvcnkpIGRhdGEubmV4dCArPSBgJmNhdGVnb3J5PSR7c2VsZi5jYXRlZ29yeUJ1dHRvbnNbc2VsZi5zdGF0ZS5zZWxlY3RlZENhdGVnb3J5XX1gO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVuZCA+PSBkYXRhLnRvdGFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW5kID0gZGF0YS50b3RhbDtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLm5leHQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IGBTaG93aW5nIDEtJHtlbmR9IG9mICR7ZGF0YS50b3RhbH0gcmVzdWx0cyBpbiAke3NlbGYuY2F0ZWdvcnlCdXR0b25zW3NlbGYuc3RhdGUuc2VsZWN0ZWRDYXRlZ29yeV19YDtcclxuICAgICAgICAgICAgICAgIGlmIChzZWxmLnN0YXRlLnRlcm0pIHRpdGxlICs9IGAgZm9yICR7c2VsZi5zdGF0ZS50ZXJtfWA7XHJcblxyXG4gICAgICAgICAgICAgICAgc2VsZi5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgIHNlcnZlcnM6IHNlcnZlcnMsXHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dDogZGF0YS5uZXh0XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoY2xlYXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKHNlbGYpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGYucmVmcy5zYnYucmVmcy5jb250ZW50U2Nyb2xsZXIuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHNlbGYuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIkZhaWxlZCB0byBsb2FkIHNlcnZlcnMuIENoZWNrIGNvbnNvbGUgZm9yIGRldGFpbHNcIlxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBqb2luKHNlcnZlckNhcmQpIHtcclxuICAgICAgICBpZiAoc2VydmVyQ2FyZC5wcm9wcy5waW5uZWQpIHJldHVybiB0aGlzLkludml0ZUFjdGlvbnMuYWNjZXB0SW52aXRlKHNlcnZlckNhcmQucHJvcHMuaW52aXRlX2NvZGUpO1xyXG4gICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcclxuICAgICAgICAgICAgdXJsOiBgJHt0aGlzLmpvaW5FbmRQb2ludH0vJHtzZXJ2ZXJDYXJkLnByb3BzLnNlcnZlci5pZGVudGlmaWVyfWAsXHJcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgIFwiQWNjZXB0XCI6IFwiYXBwbGljYXRpb24vanNvbjtcIixcclxuICAgICAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvbjtcIiAsXHJcbiAgICAgICAgICAgICAgICBcIngtZGlzY29yZC10b2tlblwiOiB0aGlzLnN0YXRlLmNvbm5lY3Rpb24udXNlci5hY2Nlc3NUb2tlblxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjcm9zc0RvbWFpbjogdHJ1ZSxcclxuICAgICAgICAgICAgeGhyRmllbGRzOiB7XHJcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWVcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3VjY2VzczogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc2VydmVyQ2FyZC5zZXRTdGF0ZSh7am9pbmVkOiB0cnVlfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25uZWN0KCkge1xyXG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBzZWxmLndpbmRvd09wdGlvbnM7XHJcbiAgICAgICAgb3B0aW9ucy54ID0gTWF0aC5yb3VuZCh3aW5kb3cuc2NyZWVuWCArIHdpbmRvdy5pbm5lcldpZHRoIC8gMiAtIG9wdGlvbnMud2lkdGggLyAyKTtcclxuICAgICAgICBvcHRpb25zLnkgPSBNYXRoLnJvdW5kKHdpbmRvdy5zY3JlZW5ZICsgd2luZG93LmlubmVySGVpZ2h0IC8gMiAtIG9wdGlvbnMuaGVpZ2h0IC8gMik7XHJcblxyXG4gICAgICAgIHNlbGYuam9pbldpbmRvdyA9IG5ldyAod2luZG93LnJlcXVpcmUoXCJlbGVjdHJvblwiKS5yZW1vdGUuQnJvd3NlcldpbmRvdykob3B0aW9ucyk7XHJcbiAgICAgICAgY29uc3QgdXJsID0gXCJodHRwczovL2F1dGguZGlzY29yZHNlcnZlcnMuY29tL2Nvbm5lY3Q/c2NvcGVzPWd1aWxkcy5qb2luJnByZXZpb3VzVXJsPWh0dHBzOi8vYXV0aC5kaXNjb3Jkc2VydmVycy5jb20vaW5mb1wiO1xyXG4gICAgICAgIHNlbGYuam9pbldpbmRvdy53ZWJDb250ZW50cy5vbihcImRpZC1uYXZpZ2F0ZVwiLCAoZXZlbnQsIHVybCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodXJsICE9IFwiaHR0cHM6Ly9hdXRoLmRpc2NvcmRzZXJ2ZXJzLmNvbS9pbmZvXCIpIHJldHVybjtcclxuICAgICAgICAgICAgc2VsZi5qb2luV2luZG93LmNsb3NlKCk7XHJcbiAgICAgICAgICAgIHNlbGYuY2hlY2tDb25uZWN0aW9uKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgc2VsZi5qb2luV2luZG93LmxvYWRVUkwodXJsKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgd2luZG93T3B0aW9ucygpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB3aWR0aDogNTAwLFxyXG4gICAgICAgICAgICBoZWlnaHQ6IDU1MCxcclxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMyODJiMzBcIixcclxuICAgICAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICAgICAgcmVzaXphYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgbWF4aW1pemFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBtaW5pbWl6YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIGFsd2F5c09uVG9wOiB0cnVlLFxyXG4gICAgICAgICAgICBmcmFtZTogZmFsc2UsXHJcbiAgICAgICAgICAgIGNlbnRlcjogZmFsc2UsXHJcbiAgICAgICAgICAgIHdlYlByZWZlcmVuY2VzOiB7XHJcbiAgICAgICAgICAgICAgICBub2RlSW50ZWdyYXRpb246IGZhbHNlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBiZFNlcnZlcigpIHtcclxuICAgICAgICBjb25zdCBzZXJ2ZXIgPSB7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiQmV0dGVyRGlzY29yZFwiLFxyXG4gICAgICAgICAgICBvbmxpbmU6IFwiNzUwMCtcIixcclxuICAgICAgICAgICAgbWVtYmVyczogXCIyMDAwMCtcIixcclxuICAgICAgICAgICAgY2F0ZWdvcmllczogW1wiY29tbXVuaXR5XCIsIFwicHJvZ3JhbW1pbmdcIiwgXCJzdXBwb3J0XCJdLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJPZmZpY2lhbCBCZXR0ZXJEaXNjb3JkIHNlcnZlciBmb3Igc3VwcG9ydCBldGNcIixcclxuICAgICAgICAgICAgaWRlbnRpZmllcjogXCI4NjAwNDc0NDk2NjkxNDA0OFwiLFxyXG4gICAgICAgICAgICBpY29uVXJsOiBcImh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2ljb25zLzg2MDA0NzQ0OTY2OTE0MDQ4LzI5MmU3ZjZiZmZmMmI3MWRmZDEzZTUwOGE4NTlhZWRkLndlYnBcIixcclxuICAgICAgICAgICAgbmF0aXZlam9pbjogdHJ1ZSxcclxuICAgICAgICAgICAgaW52aXRlX2NvZGU6IFwiMFRtZm81WmJPUkNScWJBZFwiLFxyXG4gICAgICAgICAgICBwaW5uZWQ6IHRydWVcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IGd1aWxkTGlzdCA9IHRoaXMuU29ydGVkR3VpbGRTdG9yZS5nZXRGbGF0dGVuZWRHdWlsZElkcygpO1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRMaXN0ID0gdGhpcy5BdmF0YXJEZWZhdWx0cy5ERUZBVUxUX0FWQVRBUlM7XHJcbiAgICAgICAgcmV0dXJuIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChTZXJ2ZXJDYXJkLCB7c2VydmVyOiBzZXJ2ZXIsIHBpbm5lZDogdHJ1ZSwgam9pbjogdGhpcy5qb2luLCBndWlsZExpc3Q6IGd1aWxkTGlzdCwgZmFsbGJhY2s6IGRlZmF1bHRMaXN0W01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDUpXX0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBlbmRQb2ludCgpIHtcclxuICAgICAgICByZXR1cm4gXCJodHRwczovL3NlYXJjaC5kaXNjb3Jkc2VydmVycy5jb21cIjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgam9pbkVuZFBvaW50KCkge1xyXG4gICAgICAgIHJldHVybiBcImh0dHBzOi8vai5kaXNjb3Jkc2VydmVycy5jb21cIjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29ubmVjdEVuZFBvaW50KCkge1xyXG4gICAgICAgIHJldHVybiBcImh0dHBzOi8vam9pbi5kaXNjb3Jkc2VydmVycy5jb20vY29ubmVjdFwiO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrQ29ubmVjdGlvbigpIHtcclxuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxyXG4gICAgICAgICAgICAgICAgdXJsOiBgaHR0cHM6Ly9hdXRoLmRpc2NvcmRzZXJ2ZXJzLmNvbS9pbmZvYCxcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICBcIkFjY2VwdFwiOiBcImFwcGxpY2F0aW9uL2pzb247XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uO1wiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgY3Jvc3NEb21haW46IHRydWUsXHJcbiAgICAgICAgICAgICAgICB4aHJGaWVsZHM6IHtcclxuICAgICAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWVcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBkYXRhID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBVdGlscy5sb2coXCJQdWJsaWNTZXJ2ZXJcIiwgXCJHb3QgZGF0YTogXCIgKyBKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2F0ZWdvcnk6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb246IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiAyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcjogZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZWFyY2goXCJcIiwgdHJ1ZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIk5vdCBjb25uZWN0ZWQgdG8gZGlzY29yZHNlcnZlcnMuY29tIVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENhdGVnb3J5OiAtMSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICBzZWxmLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBcIk5vdCBjb25uZWN0ZWQgdG8gZGlzY29yZHNlcnZlcnMuY29tIVwiLFxyXG4gICAgICAgICAgICAgICAgbG9hZGluZzogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2F0ZWdvcnk6IC0xLFxyXG4gICAgICAgICAgICAgICAgY29ubmVjdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlOiAxLFxyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI6IG51bGxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFNpZGViYXJWaWV3LCB7cmVmOiBcInNidlwiLCBjaGlsZHJlbjogdGhpcy5jb21wb25lbnR9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29tcG9uZW50KCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHNpZGViYXI6IHtcclxuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogdGhpcy5zaWRlYmFyXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IHtcclxuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogdGhpcy5jb250ZW50XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHRvb2xzOiB7XHJcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6IEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChUb29scywge2tleTogXCJwdFwiLCByZWY6IFwidG9vbHNcIiwgb25DbGljazogdGhpcy5jbG9zZX0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBzaWRlYmFyKCkge1xyXG4gICAgICAgIHJldHVybiBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXHJcbiAgICAgICAgICAgIFwiZGl2XCIsXHJcbiAgICAgICAgICAgIHtjbGFzc05hbWU6IFwic2lkZWJhclwiLCBrZXk6IFwicHNcIn0sXHJcbiAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgIFwiZGl2XCIsXHJcbiAgICAgICAgICAgICAgICB7Y2xhc3NOYW1lOiBcInVpLXRhYi1iYXIgU0lERVwifSxcclxuICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHtjbGFzc05hbWU6IFwidWktdGFiLWJhci1oZWFkZXJcIiwgc3R5bGU6IHtmb250U2l6ZTogXCIxNnB4XCJ9fSxcclxuICAgICAgICAgICAgICAgICAgICBcIlB1YmxpYyBTZXJ2ZXJzXCJcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoVGFiQmFyU2VwYXJhdG9yLCBudWxsKSxcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXQsXHJcbiAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoVGFiQmFyU2VwYXJhdG9yLCBudWxsKSxcclxuICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChUYWJCYXJIZWFkZXIsIHt0ZXh0OiBcIkNhdGVnb3JpZXNcIn0pLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jYXRlZ29yeUJ1dHRvbnMubWFwKCh2YWx1ZSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFRhYkJhckl0ZW0sIHtpZDogaW5kZXgsIG9uQ2xpY2s6IHRoaXMuY2hhbmdlQ2F0ZWdvcnksIGtleTogaW5kZXgsIHRleHQ6IHZhbHVlLCBzZWxlY3RlZDogdGhpcy5zdGF0ZS5zZWxlY3RlZENhdGVnb3J5ID09PSBpbmRleH0pO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoVGFiQmFyU2VwYXJhdG9yLCBudWxsKSxcclxuICAgICAgICAgICAgICAgIHRoaXMuZm9vdGVyLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBzZWFyY2hJbnB1dCgpIHtcclxuICAgICAgICByZXR1cm4gQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICBcImRpdlwiLFxyXG4gICAgICAgICAgICB7Y2xhc3NOYW1lOiBcInVpLWZvcm0taXRlbVwifSxcclxuICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgXCJkaXZcIixcclxuICAgICAgICAgICAgICAgIHtjbGFzc05hbWU6IFwidWktdGV4dC1pbnB1dCBmbGV4LXZlcnRpY2FsXCIsIHN0eWxlOiB7d2lkdGg6IFwiMTcycHhcIiwgbWFyZ2luTGVmdDogXCIxMHB4XCJ9fSxcclxuICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHtyZWY6IFwic2VhcmNoaW5wdXRcIiwgb25LZXlEb3duOiB0aGlzLnNlYXJjaEtleURvd24sIG9uQ2hhbmdlOiAoKSA9PiB7fSwgdHlwZTogXCJ0ZXh0XCIsIGNsYXNzTmFtZTogXCJpbnB1dCBkZWZhdWx0XCIsIHBsYWNlaG9sZGVyOiBcIlNlYXJjaC4uLlwiLCBtYXhMZW5ndGg6IFwiNTBcIn0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHNlYXJjaEtleURvd24oZSkge1xyXG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIGlmIChzZWxmLnN0YXRlLmxvYWRpbmcgfHwgZS53aGljaCAhPT0gMTMpIHJldHVybjtcclxuICAgICAgICBzZWxmLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgbG9hZGluZzogdHJ1ZSxcclxuICAgICAgICAgICAgdGl0bGU6IFwiTG9hZGluZy4uLlwiLFxyXG4gICAgICAgICAgICB0ZXJtOiBlLnRhcmdldC52YWx1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGxldCBxdWVyeSA9IGA/dGVybT0ke2UudGFyZ2V0LnZhbHVlfWA7XHJcbiAgICAgICAgaWYgKHNlbGYuc3RhdGUuc2VsZWN0ZWRDYXRlZ29yeSAhPT0gMCkge1xyXG4gICAgICAgICAgICBxdWVyeSArPSBgJmNhdGVnb3J5PSR7c2VsZi5jYXRlZ29yeUJ1dHRvbnNbc2VsZi5zdGF0ZS5zZWxlY3RlZENhdGVnb3J5XX1gO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzZWxmLnNlYXJjaChxdWVyeSwgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGNhdGVnb3J5QnV0dG9ucygpIHtcclxuICAgICAgICByZXR1cm4gW1wiQWxsXCIsIFwiRlBTIEdhbWVzXCIsIFwiTU1PIEdhbWVzXCIsIFwiU3RyYXRlZ3kgR2FtZXNcIiwgXCJNT0JBIEdhbWVzXCIsIFwiUlBHIEdhbWVzXCIsIFwiVGFibGV0b3AgR2FtZXNcIiwgXCJTYW5kYm94IEdhbWVzXCIsIFwiU2ltdWxhdGlvbiBHYW1lc1wiLCBcIk11c2ljXCIsIFwiQ29tbXVuaXR5XCIsIFwiTGFuZ3VhZ2VcIiwgXCJQcm9ncmFtbWluZ1wiLCBcIk90aGVyXCJdO1xyXG4gICAgfVxyXG5cclxuICAgIGNoYW5nZUNhdGVnb3J5KGlkKSB7XHJcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgaWYgKHNlbGYuc3RhdGUubG9hZGluZykgcmV0dXJuO1xyXG4gICAgICAgIHNlbGYucmVmcy5zZWFyY2hpbnB1dC52YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgc2VsZi5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIGxvYWRpbmc6IHRydWUsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkQ2F0ZWdvcnk6IGlkLFxyXG4gICAgICAgICAgICB0aXRsZTogXCJMb2FkaW5nLi4uXCIsXHJcbiAgICAgICAgICAgIHRlcm06IG51bGxcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoaWQgPT09IDApIHtcclxuICAgICAgICAgICAgc2VsZi5zZWFyY2goXCJcIiwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2VsZi5zZWFyY2goYD9jYXRlZ29yeT0ke3NlbGYuY2F0ZWdvcnlCdXR0b25zW2lkXX1gLCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29udGVudCgpIHtcclxuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcclxuICAgICAgICBjb25zdCBndWlsZExpc3QgPSB0aGlzLlNvcnRlZEd1aWxkU3RvcmUuZ2V0RmxhdHRlbmVkR3VpbGRJZHMoKTtcclxuICAgICAgICBjb25zdCBkZWZhdWx0TGlzdCA9IHRoaXMuQXZhdGFyRGVmYXVsdHMuREVGQVVMVF9BVkFUQVJTO1xyXG4gICAgICAgIGlmIChzZWxmLnN0YXRlLmNvbm5lY3Rpb24uc3RhdGUgPT09IDEpIHJldHVybiBzZWxmLm5vdENvbm5lY3RlZDtcclxuICAgICAgICByZXR1cm4gW0JEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgXCJkaXZcIixcclxuICAgICAgICAgICAge3JlZjogXCJjb250ZW50XCIsIGtleTogXCJwY1wiLCBjbGFzc05hbWU6IFwiY29udGVudENvbHVtbi0yaHJJWUggY29udGVudENvbHVtbkRlZmF1bHQtMVZRa0dNIGNvbnRlbnQtY29sdW1uIGRlZmF1bHRcIn0sXHJcbiAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChTZXR0aW5nc1RpdGxlLCB7dGV4dDogc2VsZi5zdGF0ZS50aXRsZX0pLFxyXG4gICAgICAgICAgICBzZWxmLmJkU2VydmVyLFxyXG4gICAgICAgICAgICBzZWxmLnN0YXRlLnNlcnZlcnMubWFwKChzZXJ2ZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoU2VydmVyQ2FyZCwge2tleTogc2VydmVyLmlkZW50aWZpZXIsIHNlcnZlcjogc2VydmVyLCBqb2luOiBzZWxmLmpvaW4sIGd1aWxkTGlzdDogZ3VpbGRMaXN0LCBmYWxsYmFjazogZGVmYXVsdExpc3RbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogNSldfSk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBzZWxmLnN0YXRlLm5leHQgJiYgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgXCJidXR0b25cIixcclxuICAgICAgICAgICAgICAgIHt0eXBlOiBcImJ1dHRvblwiLCBvbkNsaWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLnN0YXRlLmxvYWRpbmcpIHJldHVybjtzZWxmLnNldFN0YXRlKHtsb2FkaW5nOiB0cnVlfSk7IHNlbGYuc2VhcmNoKHNlbGYuc3RhdGUubmV4dCwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sIGNsYXNzTmFtZTogXCJ1aS1idXR0b24gZmlsbGVkIGJyYW5kIHNtYWxsIGdyb3dcIiwgc3R5bGU6IHt3aWR0aDogXCIxMDAlXCIsIG1hcmdpblRvcDogXCIxMHB4XCIsIG1hcmdpbkJvdHRvbTogXCIxMHB4XCJ9fSxcclxuICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHtjbGFzc05hbWU6IFwidWktYnV0dG9uLWNvbnRlbnRzXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUubG9hZGluZyA/IFwiTG9hZGluZ1wiIDogXCJMb2FkIE1vcmVcIlxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICBzZWxmLnN0YXRlLnNlcnZlcnMubGVuZ3RoID4gMCAmJiBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoU2V0dGluZ3NUaXRsZSwge3RleHQ6IHNlbGYuc3RhdGUudGl0bGV9KVxyXG4gICAgICAgICldO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBub3RDb25uZWN0ZWQoKSB7XHJcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgLy9yZXR1cm4gQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFNldHRpbmdzVGl0bGUsIHsgdGV4dDogc2VsZi5zdGF0ZS50aXRsZSB9KTtcclxuICAgICAgICByZXR1cm4gW0JEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgXCJkaXZcIixcclxuICAgICAgICAgICAge2tleTogXCJuY2NcIiwgcmVmOiBcImNvbnRlbnRcIiwgY2xhc3NOYW1lOiBcImNvbnRlbnRDb2x1bW4tMmhySVlIIGNvbnRlbnRDb2x1bW5EZWZhdWx0LTFWUWtHTSBjb250ZW50LWNvbHVtbiBkZWZhdWx0XCJ9LFxyXG4gICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXHJcbiAgICAgICAgICAgICAgICBcImgyXCIsXHJcbiAgICAgICAgICAgICAgICB7Y2xhc3NOYW1lOiBcInVpLWZvcm0tdGl0bGUgaDIgbWFyZ2luLXJlc2V0IG1hcmdpbi1ib3R0b20tMjBcIn0sXHJcbiAgICAgICAgICAgICAgICBcIk5vdCBjb25uZWN0ZWQgdG8gZGlzY29yZHNlcnZlcnMuY29tIVwiLFxyXG4gICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgICAgIFwiYnV0dG9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiBzZWxmLmNvbm5lY3QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJ1aS1idXR0b24gZmlsbGVkIGJyYW5kIHNtYWxsIGdyb3dcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IFwiaW5saW5lLWJsb2NrXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6IFwiMThweFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogXCIxMHB4XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiBcIjE0cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtjbGFzc05hbWU6IFwidWktYnV0dG9uLWNvbnRlbnRzXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIkNvbm5lY3RcIlxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKSwgc2VsZi5iZFNlcnZlclxyXG4gICAgICAgICldO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBmb290ZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgXCJkaXZcIixcclxuICAgICAgICAgICAge2NsYXNzTmFtZTogXCJ1aS10YWItYmFyLWhlYWRlclwifSxcclxuICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgXCJhXCIsXHJcbiAgICAgICAgICAgICAgICB7aHJlZjogXCJodHRwczovL2Rpc2NvcmRzZXJ2ZXJzLmNvbVwiLCB0YXJnZXQ6IFwiX2JsYW5rXCJ9LFxyXG4gICAgICAgICAgICAgICAgXCJEaXNjb3Jkc2VydmVycy5jb21cIlxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29ubmVjdGlvbigpIHtcclxuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcclxuICAgICAgICBjb25zdCB7Y29ubmVjdGlvbn0gPSBzZWxmLnN0YXRlO1xyXG4gICAgICAgIGlmIChjb25uZWN0aW9uLnN0YXRlICE9PSAyKSByZXR1cm4gQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCBudWxsKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgXCJzcGFuXCIsXHJcbiAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChUYWJCYXJTZXBhcmF0b3IsIG51bGwpLFxyXG4gICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXHJcbiAgICAgICAgICAgICAgICBcInNwYW5cIixcclxuICAgICAgICAgICAgICAgIHtzdHlsZToge2NvbG9yOiBcIiNiOWJiYmVcIiwgZm9udFNpemU6IFwiMTBweFwiLCBtYXJnaW5MZWZ0OiBcIjEwcHhcIn19LFxyXG4gICAgICAgICAgICAgICAgXCJDb25uZWN0ZWQgYXM6IFwiLFxyXG4gICAgICAgICAgICAgICAgYCR7Y29ubmVjdGlvbi51c2VyLnVzZXJuYW1lfSMke2Nvbm5lY3Rpb24udXNlci5kaXNjcmltaW5hdG9yfWBcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgXCJkaXZcIixcclxuICAgICAgICAgICAgICAgIHtzdHlsZToge3BhZGRpbmc6IFwiNXB4IDEwcHggMCAxMHB4XCJ9fSxcclxuICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgICAgICBcImJ1dHRvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHtzdHlsZToge3dpZHRoOiBcIjEwMCVcIiwgbWluSGVpZ2h0OiBcIjIwcHhcIn0sIHR5cGU6IFwiYnV0dG9uXCIsIGNsYXNzTmFtZTogXCJ1aS1idXR0b24gZmlsbGVkIGJyYW5kIHNtYWxsIGdyb3dcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2xhc3NOYW1lOiBcInVpLWJ1dHRvbi1jb250ZW50c1wiLCBvbkNsaWNrOiBzZWxmLmNvbm5lY3R9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlJlY29ubmVjdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxufVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/react/publicServers.js\n");
+/***/ }),
+/***/ "./src/react/reloadIcon.js":
+/*!*********************************!*\
+ !*** ./src/react/reloadIcon.js ***!
+ \*********************************/
+/*! exports provided: default */
+/***/ (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 V2C_ReloadIcon; });\n/* harmony import */ var _v2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../v2 */ \"./src/v2.js\");\n\nclass V2C_ReloadIcon extends _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].reactComponent {\n constructor(props) {\n super(props);\n }\n\n render() {\n return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"#dcddde\",\n className: \"bd-reload \" + this.props.className,\n onClick: this.props.onClick,\n style: {\n width: this.props.size || \"24px\",\n height: this.props.size || \"24px\"\n }\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].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 }), _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3JlYWN0L3JlbG9hZEljb24uanM/ZmFmMyJdLCJuYW1lcyI6WyJWMkNfUmVsb2FkSWNvbiIsIkJEVjIiLCJyZWFjdENvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJyZW5kZXIiLCJyZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJ4bWxucyIsInZpZXdCb3giLCJmaWxsIiwiY2xhc3NOYW1lIiwib25DbGljayIsInN0eWxlIiwid2lkdGgiLCJzaXplIiwiaGVpZ2h0IiwiZCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxjQUFOLFNBQTZCQywyQ0FBSSxDQUFDQyxjQUFsQyxDQUFpRDtBQUM1REMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0g7O0FBRURDLFFBQU0sR0FBRztBQUNMLFdBQU9KLDJDQUFJLENBQUNLLEtBQUwsQ0FBV0MsYUFBWCxDQUF5QixLQUF6QixFQUFnQztBQUMvQkMsV0FBSyxFQUFFLDRCQUR3QjtBQUUvQkMsYUFBTyxFQUFFLFdBRnNCO0FBRy9CQyxVQUFJLEVBQUUsU0FIeUI7QUFJL0JDLGVBQVMsRUFBRSxlQUFlLEtBQUtQLEtBQUwsQ0FBV08sU0FKTjtBQUsvQkMsYUFBTyxFQUFFLEtBQUtSLEtBQUwsQ0FBV1EsT0FMVztBQU0vQkMsV0FBSyxFQUFFO0FBQUNDLGFBQUssRUFBRSxLQUFLVixLQUFMLENBQVdXLElBQVgsSUFBbUIsTUFBM0I7QUFBbUNDLGNBQU0sRUFBRSxLQUFLWixLQUFMLENBQVdXLElBQVgsSUFBbUI7QUFBOUQ7QUFOd0IsS0FBaEMsRUFRSGQsMkNBQUksQ0FBQ0ssS0FBTCxDQUFXQyxhQUFYLENBQXlCLE1BQXpCLEVBQWlDO0FBQUNVLE9BQUMsRUFBRTtBQUFKLEtBQWpDLENBUkcsRUFTSGhCLDJDQUFJLENBQUNLLEtBQUwsQ0FBV0MsYUFBWCxDQUF5QixNQUF6QixFQUFpQztBQUFDRyxVQUFJLEVBQUUsTUFBUDtBQUFlTyxPQUFDLEVBQUU7QUFBbEIsS0FBakMsQ0FURyxDQUFQO0FBV0g7O0FBakIyRCIsImZpbGUiOiIuL3NyYy9yZWFjdC9yZWxvYWRJY29uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJEVjIgZnJvbSBcIi4uL3YyXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWMkNfUmVsb2FkSWNvbiBleHRlbmRzIEJEVjIucmVhY3RDb21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwge1xyXG4gICAgICAgICAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcclxuICAgICAgICAgICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXHJcbiAgICAgICAgICAgICAgICBmaWxsOiBcIiNkY2RkZGVcIixcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJiZC1yZWxvYWQgXCIgKyB0aGlzLnByb3BzLmNsYXNzTmFtZSxcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2s6IHRoaXMucHJvcHMub25DbGljayxcclxuICAgICAgICAgICAgICAgIHN0eWxlOiB7d2lkdGg6IHRoaXMucHJvcHMuc2l6ZSB8fCBcIjI0cHhcIiwgaGVpZ2h0OiB0aGlzLnByb3BzLnNpemUgfHwgXCIyNHB4XCJ9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge2Q6IFwiTTE3LjY1IDYuMzVDMTYuMiA0LjkgMTQuMjEgNCAxMiA0Yy00LjQyIDAtNy45OSAzLjU4LTcuOTkgOHMzLjU3IDggNy45OSA4YzMuNzMgMCA2Ljg0LTIuNTUgNy43My02aC0yLjA4Yy0uODIgMi4zMy0zLjA0IDQtNS42NSA0LTMuMzEgMC02LTIuNjktNi02czIuNjktNiA2LTZjMS42NiAwIDMuMTQuNjkgNC4yMiAxLjc4TDEzIDExaDdWNGwtMi4zNSAyLjM1elwifSksXHJcbiAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge2ZpbGw6IFwibm9uZVwiLCBkOiBcIk0wIDBoMjR2MjRIMHpcIn0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/react/reloadIcon.js\n");
+/***/ }),
+/***/ "./src/react/scroller.js":
+/*!*******************************!*\
+ !*** ./src/react/scroller.js ***!
+ \*******************************/
+/*! exports provided: default */
+/***/ (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 V2C_Scroller; });\n/* harmony import */ var _v2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../v2 */ \"./src/v2.js\");\n\nclass V2C_Scroller extends _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].reactComponent {\n constructor(props) {\n super(props);\n }\n\n render() {\n //scrollerWrap-2lJEkd scrollerThemed-2oenus themeGhostHairline-DBD-2d scrollerFade-1Ijw5y\n let wrapperClass = `scrollerWrap-2lJEkd scrollerThemed-2oenus themeGhostHairline-DBD-2d${this.props.fade ? \" scrollerFade-1Ijw5y\" : \"\"}`;\n let scrollerClass = \"scroller-2FKFPG scroller\";\n /* fuck */\n\n if (this.props.sidebar) scrollerClass = \"scroller-2FKFPG firefoxFixScrollFlex-cnI2ix sidebarRegionScroller-3MXcoP sidebar-region-scroller scroller\";\n\n if (this.props.contentColumn) {\n scrollerClass = \"scroller-2FKFPG firefoxFixScrollFlex-cnI2ix contentRegionScroller-26nc1e content-region-scroller scroller\";\n /* fuck */\n\n wrapperClass = \"scrollerWrap-2lJEkd firefoxFixScrollFlex-cnI2ix contentRegionScrollerWrap-3YZXdm content-region-scroller-wrap scrollerThemed-2oenus themeGhost-28MSn0 scrollerTrack-1ZIpsv\";\n }\n\n const {\n children\n } = this.props;\n return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n key: \"scrollerwrap\",\n className: wrapperClass\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n key: \"scroller\",\n ref: \"scroller\",\n className: scrollerClass\n }, children));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3JlYWN0L3Njcm9sbGVyLmpzPzFkOWIiXSwibmFtZXMiOlsiVjJDX1Njcm9sbGVyIiwiQkRWMiIsInJlYWN0Q29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInJlbmRlciIsIndyYXBwZXJDbGFzcyIsImZhZGUiLCJzY3JvbGxlckNsYXNzIiwic2lkZWJhciIsImNvbnRlbnRDb2x1bW4iLCJjaGlsZHJlbiIsInJlYWN0IiwiY3JlYXRlRWxlbWVudCIsImtleSIsImNsYXNzTmFtZSIsInJlZiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxZQUFOLFNBQTJCQywyQ0FBSSxDQUFDQyxjQUFoQyxDQUErQztBQUUxREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0g7O0FBRURDLFFBQU0sR0FBRztBQUNMO0FBQ0EsUUFBSUMsWUFBWSxHQUFJLHNFQUFxRSxLQUFLRixLQUFMLENBQVdHLElBQVgsR0FBa0Isc0JBQWxCLEdBQTJDLEVBQUcsRUFBdkk7QUFDQSxRQUFJQyxhQUFhLEdBQUcsMEJBQXBCO0FBQXlGOztBQUN6RixRQUFJLEtBQUtKLEtBQUwsQ0FBV0ssT0FBZixFQUF3QkQsYUFBYSxHQUFHLDJHQUFoQjs7QUFDeEIsUUFBSSxLQUFLSixLQUFMLENBQVdNLGFBQWYsRUFBOEI7QUFDMUJGLG1CQUFhLEdBQUcsMkdBQWhCO0FBQXFLOztBQUNyS0Ysa0JBQVksR0FBRyw0S0FBZjtBQUNIOztBQUNELFVBQU07QUFBQ0s7QUFBRCxRQUFhLEtBQUtQLEtBQXhCO0FBQ0EsV0FBT0gsMkNBQUksQ0FBQ1csS0FBTCxDQUFXQyxhQUFYLENBQ0gsS0FERyxFQUVIO0FBQUNDLFNBQUcsRUFBRSxjQUFOO0FBQXNCQyxlQUFTLEVBQUVUO0FBQWpDLEtBRkcsRUFHSEwsMkNBQUksQ0FBQ1csS0FBTCxDQUFXQyxhQUFYLENBQ0ksS0FESixFQUVJO0FBQUNDLFNBQUcsRUFBRSxVQUFOO0FBQWtCRSxTQUFHLEVBQUUsVUFBdkI7QUFBbUNELGVBQVMsRUFBRVA7QUFBOUMsS0FGSixFQUdJRyxRQUhKLENBSEcsQ0FBUDtBQVNIOztBQXpCeUQiLCJmaWxlIjoiLi9zcmMvcmVhY3Qvc2Nyb2xsZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQkRWMiBmcm9tIFwiLi4vdjJcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFYyQ19TY3JvbGxlciBleHRlbmRzIEJEVjIucmVhY3RDb21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICAvL3Njcm9sbGVyV3JhcC0ybEpFa2Qgc2Nyb2xsZXJUaGVtZWQtMm9lbnVzIHRoZW1lR2hvc3RIYWlybGluZS1EQkQtMmQgc2Nyb2xsZXJGYWRlLTFJanc1eVxyXG4gICAgICAgIGxldCB3cmFwcGVyQ2xhc3MgPSBgc2Nyb2xsZXJXcmFwLTJsSkVrZCBzY3JvbGxlclRoZW1lZC0yb2VudXMgdGhlbWVHaG9zdEhhaXJsaW5lLURCRC0yZCR7dGhpcy5wcm9wcy5mYWRlID8gXCIgc2Nyb2xsZXJGYWRlLTFJanc1eVwiIDogXCJcIn1gO1xyXG4gICAgICAgIGxldCBzY3JvbGxlckNsYXNzID0gXCJzY3JvbGxlci0yRktGUEcgc2Nyb2xsZXJcIjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmdWNrICovXHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuc2lkZWJhcikgc2Nyb2xsZXJDbGFzcyA9IFwic2Nyb2xsZXItMkZLRlBHIGZpcmVmb3hGaXhTY3JvbGxGbGV4LWNuSTJpeCBzaWRlYmFyUmVnaW9uU2Nyb2xsZXItM01YY29QIHNpZGViYXItcmVnaW9uLXNjcm9sbGVyIHNjcm9sbGVyXCI7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuY29udGVudENvbHVtbikge1xyXG4gICAgICAgICAgICBzY3JvbGxlckNsYXNzID0gXCJzY3JvbGxlci0yRktGUEcgZmlyZWZveEZpeFNjcm9sbEZsZXgtY25JMml4IGNvbnRlbnRSZWdpb25TY3JvbGxlci0yNm5jMWUgY29udGVudC1yZWdpb24tc2Nyb2xsZXIgc2Nyb2xsZXJcIjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZ1Y2sgKi9cclxuICAgICAgICAgICAgd3JhcHBlckNsYXNzID0gXCJzY3JvbGxlcldyYXAtMmxKRWtkIGZpcmVmb3hGaXhTY3JvbGxGbGV4LWNuSTJpeCBjb250ZW50UmVnaW9uU2Nyb2xsZXJXcmFwLTNZWlhkbSBjb250ZW50LXJlZ2lvbi1zY3JvbGxlci13cmFwIHNjcm9sbGVyVGhlbWVkLTJvZW51cyB0aGVtZUdob3N0LTI4TVNuMCBzY3JvbGxlclRyYWNrLTFaSXBzdlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB7Y2hpbGRyZW59ID0gdGhpcy5wcm9wcztcclxuICAgICAgICByZXR1cm4gQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICBcImRpdlwiLFxyXG4gICAgICAgICAgICB7a2V5OiBcInNjcm9sbGVyd3JhcFwiLCBjbGFzc05hbWU6IHdyYXBwZXJDbGFzc30sXHJcbiAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgIFwiZGl2XCIsXHJcbiAgICAgICAgICAgICAgICB7a2V5OiBcInNjcm9sbGVyXCIsIHJlZjogXCJzY3JvbGxlclwiLCBjbGFzc05hbWU6IHNjcm9sbGVyQ2xhc3N9LFxyXG4gICAgICAgICAgICAgICAgY2hpbGRyZW5cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/react/scroller.js\n");
+/***/ }),
+/***/ "./src/react/sectionedSettingsPanel.js":
+/*!*********************************************!*\
+ !*** ./src/react/sectionedSettingsPanel.js ***!
+ \*********************************************/
+/*! exports provided: default */
+/***/ (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 V2C_SectionedSettingsPanel; });\n/* harmony import */ var _v2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../v2 */ \"./src/v2.js\");\n/* harmony import */ var _settingsGroup__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./settingsGroup */ \"./src/react/settingsGroup.js\");\n\n\nclass V2C_SectionedSettingsPanel extends _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].reactComponent {\n constructor(props) {\n super(props);\n }\n\n render() {\n return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default\"\n }, this.props.sections.map(section => {\n return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(_settingsGroup__WEBPACK_IMPORTED_MODULE_1__[\"default\"], Object.assign({}, section, {\n onChange: this.props.onChange\n }));\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3JlYWN0L3NlY3Rpb25lZFNldHRpbmdzUGFuZWwuanM/ZTI4ZCJdLCJuYW1lcyI6WyJWMkNfU2VjdGlvbmVkU2V0dGluZ3NQYW5lbCIsIkJEVjIiLCJyZWFjdENvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJyZW5kZXIiLCJyZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJzZWN0aW9ucyIsIm1hcCIsInNlY3Rpb24iLCJTZXR0aW5nc0dyb3VwIiwiT2JqZWN0IiwiYXNzaWduIiwib25DaGFuZ2UiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUVlLE1BQU1BLDBCQUFOLFNBQXlDQywyQ0FBSSxDQUFDQyxjQUE5QyxDQUE2RDtBQUV4RUMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0g7O0FBRURDLFFBQU0sR0FBRztBQUNMLFdBQU9KLDJDQUFJLENBQUNLLEtBQUwsQ0FBV0MsYUFBWCxDQUNILEtBREcsRUFDSTtBQUFDQyxlQUFTLEVBQUU7QUFBWixLQURKLEVBRUgsS0FBS0osS0FBTCxDQUFXSyxRQUFYLENBQW9CQyxHQUFwQixDQUF3QkMsT0FBTyxJQUFJO0FBQy9CLGFBQU9WLDJDQUFJLENBQUNLLEtBQUwsQ0FBV0MsYUFBWCxDQUF5Qkssc0RBQXpCLEVBQXdDQyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCSCxPQUFsQixFQUEyQjtBQUFDSSxnQkFBUSxFQUFFLEtBQUtYLEtBQUwsQ0FBV1c7QUFBdEIsT0FBM0IsQ0FBeEMsQ0FBUDtBQUNILEtBRkQsQ0FGRyxDQUFQO0FBTUg7O0FBYnVFIiwiZmlsZSI6Ii4vc3JjL3JlYWN0L3NlY3Rpb25lZFNldHRpbmdzUGFuZWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQkRWMiBmcm9tIFwiLi4vdjJcIjtcclxuXHJcbmltcG9ydCBTZXR0aW5nc0dyb3VwIGZyb20gXCIuL3NldHRpbmdzR3JvdXBcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFYyQ19TZWN0aW9uZWRTZXR0aW5nc1BhbmVsIGV4dGVuZHMgQkRWMi5yZWFjdENvbXBvbmVudCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXHJcbiAgICAgICAgICAgIFwiZGl2XCIsIHtjbGFzc05hbWU6IFwiY29udGVudENvbHVtbi0yaHJJWUggY29udGVudENvbHVtbkRlZmF1bHQtMVZRa0dNIGNvbnRlbnQtY29sdW1uIGRlZmF1bHRcIn0sXHJcbiAgICAgICAgICAgIHRoaXMucHJvcHMuc2VjdGlvbnMubWFwKHNlY3Rpb24gPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChTZXR0aW5nc0dyb3VwLCBPYmplY3QuYXNzaWduKHt9LCBzZWN0aW9uLCB7b25DaGFuZ2U6IHRoaXMucHJvcHMub25DaGFuZ2V9KSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/react/sectionedSettingsPanel.js\n");
+/***/ }),
+/***/ "./src/react/serverCard.js":
+/*!*********************************!*\
+ !*** ./src/react/serverCard.js ***!
+ \*********************************/
+/*! exports provided: default */
+/***/ (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 V2C_ServerCard; });\n/* harmony import */ var _v2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../v2 */ \"./src/v2.js\");\n\nclass V2C_ServerCard extends _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].reactComponent {\n constructor(props) {\n super(props);\n if (!this.props.server.iconUrl) this.props.server.iconUrl = this.props.fallback;\n this.state = {\n imageError: false,\n joined: this.props.guildList.includes(this.props.server.identifier)\n };\n }\n\n render() {\n const {\n server\n } = this.props;\n return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", // cardPrimary-1Hv-to\n {\n className: `card-3Qj_Yx cardPrimary-1Hv-to marginBottom8-AtZOdT bd-server-card${server.pinned ? \" bd-server-card-pinned\" : \"\"}`\n }, // BDV2.react.createElement(\n // \"div\",\n // { className: \"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY flex-1O1GKY directionRow-3v3tfG justifyStart-2yIZo0 alignStretch-1hwxMa noWrap-3jynv6\" },\n _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"img\", {\n ref: \"img\",\n className: \"bd-server-image\",\n src: server.iconUrl,\n onError: this.handleError.bind(this)\n }), _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"flexChild-faoVW3 bd-server-content\"\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-header\"\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"h5\", {\n className: \"h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-name\"\n }, server.name), _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"h5\", {\n className: \"h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-member-count\"\n }, server.members, \" Members\")), _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6\"\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"scrollerWrap-2lJEkd scrollerThemed-2oenus themeGhostHairline-DBD-2d scrollerFade-1Ijw5y bd-server-description-container\"\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"scroller-2FKFPG scroller bd-server-description\"\n }, server.description))), _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-footer\"\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"flexChild-faoVW3 bd-server-tags\",\n style: {\n flex: \"1 1 auto\"\n }\n }, server.categories.join(\", \")), this.state.joined && _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"button\", {\n type: \"button\",\n className: \"button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN colorGreen-29iAKY\",\n style: {\n minHeight: \"12px\",\n marginTop: \"4px\",\n backgroundColor: \"#3ac15c\"\n }\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"ui-button-contents\"\n }, \"Joined\")), server.error && _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"button\", {\n type: \"button\",\n className: \"button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN disabled-9aF2ug\",\n style: {\n minHeight: \"12px\",\n marginTop: \"4px\",\n backgroundColor: \"#c13a3a\"\n }\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"ui-button-contents\"\n }, \"Error\")), !server.error && !this.state.joined && _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"button\", {\n type: \"button\",\n className: \"button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN\",\n style: {\n minHeight: \"12px\",\n marginTop: \"4px\"\n },\n onClick: () => {\n this.join();\n }\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"ui-button-contents\"\n }, \"Join\")))) // )\n );\n }\n\n handleError() {\n this.props.server.iconUrl = this.props.fallback;\n this.setState({\n imageError: true\n });\n }\n\n join() {\n this.props.join(this); //this.setState({joined: true});\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3JlYWN0L3NlcnZlckNhcmQuanM/YjQ3YSJdLCJuYW1lcyI6WyJWMkNfU2VydmVyQ2FyZCIsIkJEVjIiLCJyZWFjdENvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzZXJ2ZXIiLCJpY29uVXJsIiwiZmFsbGJhY2siLCJzdGF0ZSIsImltYWdlRXJyb3IiLCJqb2luZWQiLCJndWlsZExpc3QiLCJpbmNsdWRlcyIsImlkZW50aWZpZXIiLCJyZW5kZXIiLCJyZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJwaW5uZWQiLCJyZWYiLCJzcmMiLCJvbkVycm9yIiwiaGFuZGxlRXJyb3IiLCJiaW5kIiwibmFtZSIsIm1lbWJlcnMiLCJkZXNjcmlwdGlvbiIsInN0eWxlIiwiZmxleCIsImNhdGVnb3JpZXMiLCJqb2luIiwidHlwZSIsIm1pbkhlaWdodCIsIm1hcmdpblRvcCIsImJhY2tncm91bmRDb2xvciIsImVycm9yIiwib25DbGljayIsInNldFN0YXRlIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLGNBQU4sU0FBNkJDLDJDQUFJLENBQUNDLGNBQWxDLENBQWlEO0FBQzVEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDQSxRQUFJLENBQUMsS0FBS0EsS0FBTCxDQUFXQyxNQUFYLENBQWtCQyxPQUF2QixFQUFnQyxLQUFLRixLQUFMLENBQVdDLE1BQVgsQ0FBa0JDLE9BQWxCLEdBQTRCLEtBQUtGLEtBQUwsQ0FBV0csUUFBdkM7QUFDaEMsU0FBS0MsS0FBTCxHQUFhO0FBQ1RDLGdCQUFVLEVBQUUsS0FESDtBQUVUQyxZQUFNLEVBQUUsS0FBS04sS0FBTCxDQUFXTyxTQUFYLENBQXFCQyxRQUFyQixDQUE4QixLQUFLUixLQUFMLENBQVdDLE1BQVgsQ0FBa0JRLFVBQWhEO0FBRkMsS0FBYjtBQUlIOztBQUVEQyxRQUFNLEdBQUc7QUFDTCxV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QWUsRUFBRTtBQUF2RDtBQUFuSSxLQUZZLEVBR1pqQywyQ0FBSSxDQUFDYyxLQUFMLENBQVdDLGFBQVgsQ0FDSSxLQURKLEVBRUk7QUFBQ0MsZUFBUyxFQUFFO0FBQVosS0FGSixFQUdJLE9BSEosQ0FIWSxDQWpCcEIsRUEwQkksQ0FBQ1osTUFBTSxDQUFDOEIsS0FBUixJQUFpQixDQUFDLEtBQUszQixLQUFMLENBQVdFLE1BQTdCLElBQXVDVCwyQ0FBSSxDQUFDYyxLQUFMLENBQVdDLGFBQVgsQ0FDbkMsUUFEbUMsRUFFbkM7QUFBQ2UsVUFBSSxFQUFFLFFBQVA7QUFBaUJkLGVBQVMsRUFBRSw4RUFBNUI7QUFBNEdVLFdBQUssRUFBRTtBQUFDSyxpQkFBUyxFQUFFLE1BQVo7QUFBb0JDLGlCQUFTLEVBQUU7QUFBL0IsT0FBbkg7QUFBMEpHLGFBQU8sRUFBRSxNQUFNO0FBQUMsYUFBS04sSUFBTDtBQUFhO0FBQXZMLEtBRm1DLEVBR25DN0IsMkNBQUksQ0FBQ2MsS0FBTCxDQUFXQyxhQUFYLENBQ0ksS0FESixFQUVJO0FBQUNDLGVBQVMsRUFBRTtBQUFaLEtBRkosRUFHSSxNQUhKLENBSG1DLENBMUIzQyxDQS9CSixDQVBELENBMkVIO0FBM0VHLEtBQVA7QUE2RUg7O0FBRURLLGFBQVcsR0FBRztBQUNWLFNBQUtsQixLQUFMLENBQVdDLE1BQVgsQ0FBa0JDLE9BQWxCLEdBQTRCLEtBQUtGLEtBQUwsQ0FBV0csUUFBdkM7QUFDQSxTQUFLOEIsUUFBTCxDQUFjO0FBQUM1QixnQkFBVSxFQUFFO0FBQWIsS0FBZDtBQUNIOztBQUVEcUIsTUFBSSxHQUFHO0FBQ0gsU0FBSzFCLEtBQUwsQ0FBVzBCLElBQVgsQ0FBZ0IsSUFBaEIsRUFERyxDQUVIO0FBQ0g7O0FBbkcyRCIsImZpbGUiOiIuL3NyYy9yZWFjdC9zZXJ2ZXJDYXJkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJEVjIgZnJvbSBcIi4uL3YyXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWMkNfU2VydmVyQ2FyZCBleHRlbmRzIEJEVjIucmVhY3RDb21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnByb3BzLnNlcnZlci5pY29uVXJsKSB0aGlzLnByb3BzLnNlcnZlci5pY29uVXJsID0gdGhpcy5wcm9wcy5mYWxsYmFjaztcclxuICAgICAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICAgICAgICBpbWFnZUVycm9yOiBmYWxzZSxcclxuICAgICAgICAgICAgam9pbmVkOiB0aGlzLnByb3BzLmd1aWxkTGlzdC5pbmNsdWRlcyh0aGlzLnByb3BzLnNlcnZlci5pZGVudGlmaWVyKVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHtzZXJ2ZXJ9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICByZXR1cm4gQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICBcImRpdlwiLCAvLyBjYXJkUHJpbWFyeS0xSHYtdG9cclxuICAgICAgICAgICAge2NsYXNzTmFtZTogYGNhcmQtM1FqX1l4IGNhcmRQcmltYXJ5LTFIdi10byBtYXJnaW5Cb3R0b204LUF0Wk9kVCBiZC1zZXJ2ZXItY2FyZCR7c2VydmVyLnBpbm5lZCA/IFwiIGJkLXNlcnZlci1jYXJkLXBpbm5lZFwiIDogXCJcIn1gfSxcclxuICAgICAgICAgICAgLy8gQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgLy8gXCJkaXZcIixcclxuICAgICAgICAgICAgICAgIC8vIHsgY2xhc3NOYW1lOiBcImZsZXgtMXhNUWc1IGZsZXgtMU8xR0tZIGhvcml6b250YWwtMWFlOWNpIGhvcml6b250YWwtMkVFRW5ZIGZsZXgtMU8xR0tZIGRpcmVjdGlvblJvdy0zdjN0ZkcganVzdGlmeVN0YXJ0LTJ5SVpvMCBhbGlnblN0cmV0Y2gtMWh3eE1hIG5vV3JhcC0zanludjZcIiB9LFxyXG4gICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFwiaW1nXCIsIHtyZWY6IFwiaW1nXCIsIGNsYXNzTmFtZTogXCJiZC1zZXJ2ZXItaW1hZ2VcIiwgc3JjOiBzZXJ2ZXIuaWNvblVybCwgb25FcnJvcjogdGhpcy5oYW5kbGVFcnJvci5iaW5kKHRoaXMpfSksXHJcbiAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcclxuICAgICAgICAgICAgICAgICAgICB7Y2xhc3NOYW1lOiBcImZsZXhDaGlsZC1mYW9WVzMgYmQtc2VydmVyLWNvbnRlbnRcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2xhc3NOYW1lOiBcImZsZXgtMXhNUWc1IGZsZXgtMU8xR0tZIGhvcml6b250YWwtMWFlOWNpIGhvcml6b250YWwtMkVFRW5ZIGRpcmVjdGlvblJvdy0zdjN0Zkcgbm9XcmFwLTNqeW52NiBiZC1zZXJ2ZXItaGVhZGVyXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImg1XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2xhc3NOYW1lOiBcImg1LTE4XzFuZCBkZWZhdWx0Q29sb3ItMV9halgwIG1hcmdpbi1yZXNldCBiZC1zZXJ2ZXItbmFtZVwifSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlci5uYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaDVcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjbGFzc05hbWU6IFwiaDUtMThfMW5kIGRlZmF1bHRDb2xvci0xX2FqWDAgbWFyZ2luLXJlc2V0IGJkLXNlcnZlci1tZW1iZXItY291bnRcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIubWVtYmVycyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiIE1lbWJlcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtjbGFzc05hbWU6IFwiZmxleC0xeE1RZzUgZmxleC0xTzFHS1kgaG9yaXpvbnRhbC0xYWU5Y2kgaG9yaXpvbnRhbC0yRUVFblkgZGlyZWN0aW9uUm93LTN2M3RmRyBub1dyYXAtM2p5bnY2XCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2NsYXNzTmFtZTogXCJzY3JvbGxlcldyYXAtMmxKRWtkIHNjcm9sbGVyVGhlbWVkLTJvZW51cyB0aGVtZUdob3N0SGFpcmxpbmUtREJELTJkIHNjcm9sbGVyRmFkZS0xSWp3NXkgYmQtc2VydmVyLWRlc2NyaXB0aW9uLWNvbnRhaW5lclwifSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjbGFzc05hbWU6IFwic2Nyb2xsZXItMkZLRlBHIHNjcm9sbGVyIGJkLXNlcnZlci1kZXNjcmlwdGlvblwifSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyLmRlc2NyaXB0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAge2NsYXNzTmFtZTogXCJmbGV4LTF4TVFnNSBmbGV4LTFPMUdLWSBob3Jpem9udGFsLTFhZTljaSBob3Jpem9udGFsLTJFRUVuWSBkaXJlY3Rpb25Sb3ctM3YzdGZHIG5vV3JhcC0zanludjYgYmQtc2VydmVyLWZvb3RlclwifSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjbGFzc05hbWU6IFwiZmxleENoaWxkLWZhb1ZXMyBiZC1zZXJ2ZXItdGFnc1wiLCBzdHlsZToge2ZsZXg6IFwiMSAxIGF1dG9cIn19LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyLmNhdGVnb3JpZXMuam9pbihcIiwgXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuam9pbmVkICYmIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYnV0dG9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dHlwZTogXCJidXR0b25cIiwgY2xhc3NOYW1lOiBcImJ1dHRvbi0zOGFTY3IgbG9va0ZpbGxlZC0xR3gwMFAgY29sb3JCcmFuZC0zcFhyOTEgc2l6ZU1pbi0xbUpkMXggZ3Jvdy1xNzdPTk4gY29sb3JHcmVlbi0yOWlBS1lcIiwgc3R5bGU6IHttaW5IZWlnaHQ6IFwiMTJweFwiLCBtYXJnaW5Ub3A6IFwiNHB4XCIsIGJhY2tncm91bmRDb2xvcjogXCIjM2FjMTVjXCJ9fSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjbGFzc05hbWU6IFwidWktYnV0dG9uLWNvbnRlbnRzXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiSm9pbmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyLmVycm9yICYmIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYnV0dG9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dHlwZTogXCJidXR0b25cIiwgY2xhc3NOYW1lOiBcImJ1dHRvbi0zOGFTY3IgbG9va0ZpbGxlZC0xR3gwMFAgY29sb3JCcmFuZC0zcFhyOTEgc2l6ZU1pbi0xbUpkMXggZ3Jvdy1xNzdPTk4gZGlzYWJsZWQtOWFGMnVnXCIsIHN0eWxlOiB7bWluSGVpZ2h0OiBcIjEycHhcIiwgbWFyZ2luVG9wOiBcIjRweFwiLCBiYWNrZ3JvdW5kQ29sb3I6IFwiI2MxM2EzYVwifX0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2xhc3NOYW1lOiBcInVpLWJ1dHRvbi1jb250ZW50c1wifSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkVycm9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgIXNlcnZlci5lcnJvciAmJiAhdGhpcy5zdGF0ZS5qb2luZWQgJiYgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJidXR0b25cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0eXBlOiBcImJ1dHRvblwiLCBjbGFzc05hbWU6IFwiYnV0dG9uLTM4YVNjciBsb29rRmlsbGVkLTFHeDAwUCBjb2xvckJyYW5kLTNwWHI5MSBzaXplTWluLTFtSmQxeCBncm93LXE3N09OTlwiLCBzdHlsZToge21pbkhlaWdodDogXCIxMnB4XCIsIG1hcmdpblRvcDogXCI0cHhcIn0sIG9uQ2xpY2s6ICgpID0+IHt0aGlzLmpvaW4oKTt9fSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjbGFzc05hbWU6IFwidWktYnV0dG9uLWNvbnRlbnRzXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiSm9pblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC8vIClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUVycm9yKCkge1xyXG4gICAgICAgIHRoaXMucHJvcHMuc2VydmVyLmljb25VcmwgPSB0aGlzLnByb3BzLmZhbGxiYWNrO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2ltYWdlRXJyb3I6IHRydWV9KTtcclxuICAgIH1cclxuXHJcbiAgICBqb2luKCkge1xyXG4gICAgICAgIHRoaXMucHJvcHMuam9pbih0aGlzKTtcclxuICAgICAgICAvL3RoaXMuc2V0U3RhdGUoe2pvaW5lZDogdHJ1ZX0pO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/react/serverCard.js\n");
+/***/ }),
+/***/ "./src/react/settingsGroup.js":
+/*!************************************!*\
+ !*** ./src/react/settingsGroup.js ***!
+ \************************************/
+/*! exports provided: default */
+/***/ (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 V2C_SettingsGroup; });\n/* harmony import */ var _0globals__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../0globals */ \"./src/0globals.js\");\n/* harmony import */ var _v2__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../v2 */ \"./src/v2.js\");\n/* harmony import */ var _settingsTitle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./settingsTitle */ \"./src/react/settingsTitle.js\");\n/* harmony import */ var _switch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./switch */ \"./src/react/switch.js\");\n\n\n\n\nclass V2C_SettingsGroup extends _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].reactComponent {\n constructor(props) {\n super(props);\n }\n\n render() {\n const {\n title,\n settings,\n button\n } = this.props;\n const buttonComponent = button ? _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(\"button\", {\n key: \"title-button\",\n className: \"bd-pfbtn\",\n onClick: button.onClick\n }, button.title) : null;\n return [_v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(_settingsTitle__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n text: title\n }), buttonComponent, settings.map(setting => {\n return _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(_switch__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n id: setting.id,\n key: setting.id,\n data: setting,\n checked: _0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"][setting.id],\n onChange: (id, checked) => {\n this.props.onChange(id, checked);\n }\n });\n })];\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3JlYWN0L3NldHRpbmdzR3JvdXAuanM/M2ZmOSJdLCJuYW1lcyI6WyJWMkNfU2V0dGluZ3NHcm91cCIsIkJEVjIiLCJyZWFjdENvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJyZW5kZXIiLCJ0aXRsZSIsInNldHRpbmdzIiwiYnV0dG9uIiwiYnV0dG9uQ29tcG9uZW50IiwicmVhY3QiLCJjcmVhdGVFbGVtZW50Iiwia2V5IiwiY2xhc3NOYW1lIiwib25DbGljayIsIlNldHRpbmdzVGl0bGUiLCJ0ZXh0IiwibWFwIiwic2V0dGluZyIsIlN3aXRjaCIsImlkIiwiZGF0YSIsImNoZWNrZWQiLCJzZXR0aW5nc0Nvb2tpZSIsIm9uQ2hhbmdlIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUVlLE1BQU1BLGlCQUFOLFNBQWdDQywyQ0FBSSxDQUFDQyxjQUFyQyxDQUFvRDtBQUUvREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0g7O0FBRURDLFFBQU0sR0FBRztBQUNMLFVBQU07QUFBQ0MsV0FBRDtBQUFRQyxjQUFSO0FBQWtCQztBQUFsQixRQUE0QixLQUFLSixLQUF2QztBQUNBLFVBQU1LLGVBQWUsR0FBR0QsTUFBTSxHQUFHUCwyQ0FBSSxDQUFDUyxLQUFMLENBQVdDLGFBQVgsQ0FBeUIsUUFBekIsRUFBbUM7QUFBQ0MsU0FBRyxFQUFFLGNBQU47QUFBc0JDLGVBQVMsRUFBRSxVQUFqQztBQUE2Q0MsYUFBTyxFQUFFTixNQUFNLENBQUNNO0FBQTdELEtBQW5DLEVBQTBHTixNQUFNLENBQUNGLEtBQWpILENBQUgsR0FBNkgsSUFBM0o7QUFDQSxXQUFPLENBQUNMLDJDQUFJLENBQUNTLEtBQUwsQ0FBV0MsYUFBWCxDQUF5Qkksc0RBQXpCLEVBQXdDO0FBQUNDLFVBQUksRUFBRVY7QUFBUCxLQUF4QyxDQUFELEVBQ0NHLGVBREQsRUFFQ0YsUUFBUSxDQUFDVSxHQUFULENBQWFDLE9BQU8sSUFBSTtBQUNwQixhQUFPakIsMkNBQUksQ0FBQ1MsS0FBTCxDQUFXQyxhQUFYLENBQXlCUSwrQ0FBekIsRUFBaUM7QUFBQ0MsVUFBRSxFQUFFRixPQUFPLENBQUNFLEVBQWI7QUFBaUJSLFdBQUcsRUFBRU0sT0FBTyxDQUFDRSxFQUE5QjtBQUFrQ0MsWUFBSSxFQUFFSCxPQUF4QztBQUFpREksZUFBTyxFQUFFQyx3REFBYyxDQUFDTCxPQUFPLENBQUNFLEVBQVQsQ0FBeEU7QUFBc0ZJLGdCQUFRLEVBQUUsQ0FBQ0osRUFBRCxFQUFLRSxPQUFMLEtBQWlCO0FBQ3JKLGVBQUtsQixLQUFMLENBQVdvQixRQUFYLENBQW9CSixFQUFwQixFQUF3QkUsT0FBeEI7QUFDSDtBQUZ1QyxPQUFqQyxDQUFQO0FBR0gsS0FKRCxDQUZELENBQVA7QUFPSDs7QUFoQjhEIiwiZmlsZSI6Ii4vc3JjL3JlYWN0L3NldHRpbmdzR3JvdXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3NldHRpbmdzQ29va2llfSBmcm9tIFwiLi4vMGdsb2JhbHNcIjtcclxuaW1wb3J0IEJEVjIgZnJvbSBcIi4uL3YyXCI7XHJcblxyXG5pbXBvcnQgU2V0dGluZ3NUaXRsZSBmcm9tIFwiLi9zZXR0aW5nc1RpdGxlXCI7XHJcbmltcG9ydCBTd2l0Y2ggZnJvbSBcIi4vc3dpdGNoXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWMkNfU2V0dGluZ3NHcm91cCBleHRlbmRzIEJEVjIucmVhY3RDb21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCB7dGl0bGUsIHNldHRpbmdzLCBidXR0b259ID0gdGhpcy5wcm9wcztcclxuICAgICAgICBjb25zdCBidXR0b25Db21wb25lbnQgPSBidXR0b24gPyBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIiwge2tleTogXCJ0aXRsZS1idXR0b25cIiwgY2xhc3NOYW1lOiBcImJkLXBmYnRuXCIsIG9uQ2xpY2s6IGJ1dHRvbi5vbkNsaWNrfSwgYnV0dG9uLnRpdGxlKSA6IG51bGw7XHJcbiAgICAgICAgcmV0dXJuIFtCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoU2V0dGluZ3NUaXRsZSwge3RleHQ6IHRpdGxlfSksXHJcbiAgICAgICAgICAgICAgICBidXR0b25Db21wb25lbnQsXHJcbiAgICAgICAgICAgICAgICBzZXR0aW5ncy5tYXAoc2V0dGluZyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChTd2l0Y2gsIHtpZDogc2V0dGluZy5pZCwga2V5OiBzZXR0aW5nLmlkLCBkYXRhOiBzZXR0aW5nLCBjaGVja2VkOiBzZXR0aW5nc0Nvb2tpZVtzZXR0aW5nLmlkXSwgb25DaGFuZ2U6IChpZCwgY2hlY2tlZCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKGlkLCBjaGVja2VkKTtcclxuICAgICAgICAgICAgICAgICAgICB9fSk7XHJcbiAgICAgICAgICAgICAgICB9KV07XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/react/settingsGroup.js\n");
+/***/ }),
+/***/ "./src/react/settingsPanel.js":
+/*!************************************!*\
+ !*** ./src/react/settingsPanel.js ***!
+ \************************************/
+/*! exports provided: default */
+/***/ (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 V2C_SettingsPanel; });\n/* harmony import */ var _0globals__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../0globals */ \"./src/0globals.js\");\n/* harmony import */ var _v2__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../v2 */ \"./src/v2.js\");\n/* harmony import */ var _settingsTitle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./settingsTitle */ \"./src/react/settingsTitle.js\");\n/* harmony import */ var _switch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./switch */ \"./src/react/switch.js\");\n\n\n\n\nclass V2C_SettingsPanel extends _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].reactComponent {\n constructor(props) {\n super(props);\n }\n\n render() {\n const {\n settings\n } = this.props;\n return _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(\"div\", {\n className: \"contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default\"\n }, _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(_settingsTitle__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n text: this.props.title\n }), this.props.button && _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(\"button\", {\n key: \"title-button\",\n className: \"bd-pfbtn\",\n onClick: this.props.button.onClick\n }, this.props.button.title), settings.map(setting => {\n return _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(_switch__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n id: setting.id,\n key: setting.id,\n data: setting,\n checked: _0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"][setting.id],\n onChange: (id, checked) => {\n this.props.onChange(id, checked);\n }\n });\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3JlYWN0L3NldHRpbmdzUGFuZWwuanM/Nzg2YSJdLCJuYW1lcyI6WyJWMkNfU2V0dGluZ3NQYW5lbCIsIkJEVjIiLCJyZWFjdENvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJyZW5kZXIiLCJzZXR0aW5ncyIsInJlYWN0IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsIlNldHRpbmdzVGl0bGUiLCJ0ZXh0IiwidGl0bGUiLCJidXR0b24iLCJrZXkiLCJvbkNsaWNrIiwibWFwIiwic2V0dGluZyIsIlN3aXRjaCIsImlkIiwiZGF0YSIsImNoZWNrZWQiLCJzZXR0aW5nc0Nvb2tpZSIsIm9uQ2hhbmdlIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUVlLE1BQU1BLGlCQUFOLFNBQWdDQywyQ0FBSSxDQUFDQyxjQUFyQyxDQUFvRDtBQUUvREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0g7O0FBRURDLFFBQU0sR0FBRztBQUNMLFVBQU07QUFBQ0M7QUFBRCxRQUFhLEtBQUtGLEtBQXhCO0FBQ0EsV0FBT0gsMkNBQUksQ0FBQ00sS0FBTCxDQUFXQyxhQUFYLENBQ0gsS0FERyxFQUVIO0FBQUNDLGVBQVMsRUFBRTtBQUFaLEtBRkcsRUFHSFIsMkNBQUksQ0FBQ00sS0FBTCxDQUFXQyxhQUFYLENBQXlCRSxzREFBekIsRUFBd0M7QUFBQ0MsVUFBSSxFQUFFLEtBQUtQLEtBQUwsQ0FBV1E7QUFBbEIsS0FBeEMsQ0FIRyxFQUlILEtBQUtSLEtBQUwsQ0FBV1MsTUFBWCxJQUFxQlosMkNBQUksQ0FBQ00sS0FBTCxDQUFXQyxhQUFYLENBQXlCLFFBQXpCLEVBQW1DO0FBQUNNLFNBQUcsRUFBRSxjQUFOO0FBQXNCTCxlQUFTLEVBQUUsVUFBakM7QUFBNkNNLGFBQU8sRUFBRSxLQUFLWCxLQUFMLENBQVdTLE1BQVgsQ0FBa0JFO0FBQXhFLEtBQW5DLEVBQXFILEtBQUtYLEtBQUwsQ0FBV1MsTUFBWCxDQUFrQkQsS0FBdkksQ0FKbEIsRUFLSE4sUUFBUSxDQUFDVSxHQUFULENBQWFDLE9BQU8sSUFBSTtBQUNwQixhQUFPaEIsMkNBQUksQ0FBQ00sS0FBTCxDQUFXQyxhQUFYLENBQXlCVSwrQ0FBekIsRUFBaUM7QUFBQ0MsVUFBRSxFQUFFRixPQUFPLENBQUNFLEVBQWI7QUFBaUJMLFdBQUcsRUFBRUcsT0FBTyxDQUFDRSxFQUE5QjtBQUFrQ0MsWUFBSSxFQUFFSCxPQUF4QztBQUFpREksZUFBTyxFQUFFQyx3REFBYyxDQUFDTCxPQUFPLENBQUNFLEVBQVQsQ0FBeEU7QUFBc0ZJLGdCQUFRLEVBQUUsQ0FBQ0osRUFBRCxFQUFLRSxPQUFMLEtBQWlCO0FBQ2pKLGVBQUtqQixLQUFMLENBQVdtQixRQUFYLENBQW9CSixFQUFwQixFQUF3QkUsT0FBeEI7QUFDSDtBQUZtQyxPQUFqQyxDQUFQO0FBR0gsS0FKRCxDQUxHLENBQVA7QUFXSDs7QUFuQjhEIiwiZmlsZSI6Ii4vc3JjL3JlYWN0L3NldHRpbmdzUGFuZWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3NldHRpbmdzQ29va2llfSBmcm9tIFwiLi4vMGdsb2JhbHNcIjtcclxuaW1wb3J0IEJEVjIgZnJvbSBcIi4uL3YyXCI7XHJcblxyXG5pbXBvcnQgU2V0dGluZ3NUaXRsZSBmcm9tIFwiLi9zZXR0aW5nc1RpdGxlXCI7XHJcbmltcG9ydCBTd2l0Y2ggZnJvbSBcIi4vc3dpdGNoXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWMkNfU2V0dGluZ3NQYW5lbCBleHRlbmRzIEJEVjIucmVhY3RDb21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCB7c2V0dGluZ3N9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICByZXR1cm4gQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICBcImRpdlwiLFxyXG4gICAgICAgICAgICB7Y2xhc3NOYW1lOiBcImNvbnRlbnRDb2x1bW4tMmhySVlIIGNvbnRlbnRDb2x1bW5EZWZhdWx0LTFWUWtHTSBjb250ZW50LWNvbHVtbiBkZWZhdWx0XCJ9LFxyXG4gICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoU2V0dGluZ3NUaXRsZSwge3RleHQ6IHRoaXMucHJvcHMudGl0bGV9KSxcclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5idXR0b24gJiYgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIHtrZXk6IFwidGl0bGUtYnV0dG9uXCIsIGNsYXNzTmFtZTogXCJiZC1wZmJ0blwiLCBvbkNsaWNrOiB0aGlzLnByb3BzLmJ1dHRvbi5vbkNsaWNrfSwgdGhpcy5wcm9wcy5idXR0b24udGl0bGUpLFxyXG4gICAgICAgICAgICBzZXR0aW5ncy5tYXAoc2V0dGluZyA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFN3aXRjaCwge2lkOiBzZXR0aW5nLmlkLCBrZXk6IHNldHRpbmcuaWQsIGRhdGE6IHNldHRpbmcsIGNoZWNrZWQ6IHNldHRpbmdzQ29va2llW3NldHRpbmcuaWRdLCBvbkNoYW5nZTogKGlkLCBjaGVja2VkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DaGFuZ2UoaWQsIGNoZWNrZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH19KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/react/settingsPanel.js\n");
+/***/ }),
+/***/ "./src/react/settingsTitle.js":
+/*!************************************!*\
+ !*** ./src/react/settingsTitle.js ***!
+ \************************************/
+/*! exports provided: default */
+/***/ (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 V2C_SettingsTitle; });\n/* harmony import */ var _v2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../v2 */ \"./src/v2.js\");\n\nclass V2C_SettingsTitle extends _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].reactComponent {\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 return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"h2\", {\n className: \"ui-form-title h2 margin-reset margin-bottom-20 marginTop60-3PGbtK da-marginTop6\"\n }, this.props.text);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3JlYWN0L3NldHRpbmdzVGl0bGUuanM/ODM3ZSJdLCJuYW1lcyI6WyJWMkNfU2V0dGluZ3NUaXRsZSIsIkJEVjIiLCJyZWFjdENvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJyZW5kZXIiLCJyZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJ0ZXh0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLGlCQUFOLFNBQWdDQywyQ0FBSSxDQUFDQyxjQUFyQyxDQUFvRDtBQUMvREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0gsR0FIOEQsQ0FJbkU7OztBQUNJQyxRQUFNLEdBQUc7QUFDTCxXQUFPSiwyQ0FBSSxDQUFDSyxLQUFMLENBQVdDLGFBQVgsQ0FDSCxJQURHLEVBRUg7QUFBQ0MsZUFBUyxFQUFFO0FBQVosS0FGRyxFQUdILEtBQUtKLEtBQUwsQ0FBV0ssSUFIUixDQUFQO0FBS0g7O0FBWDhEIiwiZmlsZSI6Ii4vc3JjL3JlYWN0L3NldHRpbmdzVGl0bGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQkRWMiBmcm9tIFwiLi4vdjJcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFYyQ19TZXR0aW5nc1RpdGxlIGV4dGVuZHMgQkRWMi5yZWFjdENvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgIH1cclxuLy9oMi0yZ1dFLW8gdGl0bGUtM3NaV1lRIHNpemUxNi0xNGNHejUgaGVpZ2h0MjAtbU8yZUlOIHdlaWdodFNlbWlCb2xkLU5KZXh6aSBkYS1oMiBkYS10aXRsZSBkYS1zaXplMTYgZGEtaGVpZ2h0MjAgZGEtd2VpZ2h0U2VtaUJvbGQgZGVmYXVsdENvbG9yLTFfYWpYMCBkYS1kZWZhdWx0Q29sb3IgbWFyZ2luVG9wNjAtM1BHYnRLIGRhLW1hcmdpblRvcDYwIG1hcmdpbkJvdHRvbTIwLTMycUlENyBkYS1tYXJnaW5Cb3R0b20yMFxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXHJcbiAgICAgICAgICAgIFwiaDJcIixcclxuICAgICAgICAgICAge2NsYXNzTmFtZTogXCJ1aS1mb3JtLXRpdGxlIGgyIG1hcmdpbi1yZXNldCBtYXJnaW4tYm90dG9tLTIwIG1hcmdpblRvcDYwLTNQR2J0SyBkYS1tYXJnaW5Ub3A2XCJ9LFxyXG4gICAgICAgICAgICB0aGlzLnByb3BzLnRleHRcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/react/settingsTitle.js\n");
+/***/ }),
+/***/ "./src/react/sidebar.js":
+/*!******************************!*\
+ !*** ./src/react/sidebar.js ***!
+ \******************************/
+/*! exports provided: default */
+/***/ (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 V2C_SideBar; });\n/* harmony import */ var _v2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../v2 */ \"./src/v2.js\");\n/* harmony import */ var _tabBarSeparator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tabBarSeparator */ \"./src/react/tabBarSeparator.js\");\n/* harmony import */ var _tabBarHeader__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tabBarHeader */ \"./src/react/tabBarHeader.js\");\n/* harmony import */ var _tabBarItem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tabBarItem */ \"./src/react/tabBarItem.js\");\n\n\n\n\nclass V2C_SideBar extends _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].reactComponent {\n constructor(props) {\n super(props);\n const self = this;\n const si = $(\"[class*=side-] > [class*=selected]\");\n if (si.length) self.scn = si.attr(\"class\");\n const ns = $(\"[class*=side-] > [class*='item-']:not([class*=selected])\");\n if (ns.length) self.nscn = ns.attr(\"class\");\n $(\"[class*='side-'] > [class*='item-']\").on(\"click\", () => {\n self.setState({\n selected: null\n });\n });\n self.setInitialState();\n self.onClick = self.onClick.bind(self);\n }\n\n setInitialState() {\n const self = this;\n self.state = {\n selected: null,\n items: self.props.items\n };\n const initialSelection = self.props.items.find(item => {\n return item.selected;\n });\n\n if (initialSelection) {\n self.state.selected = initialSelection.id;\n }\n }\n\n render() {\n const self = this;\n const {\n headerText\n } = self.props;\n const {\n items,\n selected\n } = self.state;\n return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", null, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(_tabBarSeparator__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null), _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(_tabBarHeader__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n text: headerText\n }), items.map(item => {\n const {\n id,\n text\n } = item;\n return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(_tabBarItem__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n key: id,\n selected: selected === id,\n text: text,\n id: id,\n onClick: self.onClick\n });\n }));\n }\n\n onClick(id) {\n const self = this;\n const si = $(\"[class*=side] > [class*=selected]\");\n\n if (si.length) {\n si.off(\"click.bdsb\").on(\"click.bsb\", e => {\n $(e.target).attr(\"class\", self.scn);\n });\n si.attr(\"class\", self.nscn);\n }\n\n self.setState({\n selected: null\n });\n self.setState({\n selected: id\n });\n if (self.props.onClick) self.props.onClick(id);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3JlYWN0L3NpZGViYXIuanM/N2VmOSJdLCJuYW1lcyI6WyJWMkNfU2lkZUJhciIsIkJEVjIiLCJyZWFjdENvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzZWxmIiwic2kiLCIkIiwibGVuZ3RoIiwic2NuIiwiYXR0ciIsIm5zIiwibnNjbiIsIm9uIiwic2V0U3RhdGUiLCJzZWxlY3RlZCIsInNldEluaXRpYWxTdGF0ZSIsIm9uQ2xpY2siLCJiaW5kIiwic3RhdGUiLCJpdGVtcyIsImluaXRpYWxTZWxlY3Rpb24iLCJmaW5kIiwiaXRlbSIsImlkIiwicmVuZGVyIiwiaGVhZGVyVGV4dCIsInJlYWN0IiwiY3JlYXRlRWxlbWVudCIsIlRhYkJhclNlcGFyYXRvciIsIlRhYkJhckhlYWRlciIsInRleHQiLCJtYXAiLCJUYWJCYXJJdGVtIiwia2V5Iiwib2ZmIiwiZSIsInRhcmdldCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFZSxNQUFNQSxXQUFOLFNBQTBCQywyQ0FBSSxDQUFDQyxjQUEvQixDQUE4QztBQUV6REMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsVUFBTUMsSUFBSSxHQUFHLElBQWI7QUFDQSxVQUFNQyxFQUFFLEdBQUdDLENBQUMsQ0FBQyxvQ0FBRCxDQUFaO0FBQ0EsUUFBSUQsRUFBRSxDQUFDRSxNQUFQLEVBQWVILElBQUksQ0FBQ0ksR0FBTCxHQUFXSCxFQUFFLENBQUNJLElBQUgsQ0FBUSxPQUFSLENBQVg7QUFDZixVQUFNQyxFQUFFLEdBQUdKLENBQUMsQ0FBQywwREFBRCxDQUFaO0FBQ0EsUUFBSUksRUFBRSxDQUFDSCxNQUFQLEVBQWVILElBQUksQ0FBQ08sSUFBTCxHQUFZRCxFQUFFLENBQUNELElBQUgsQ0FBUSxPQUFSLENBQVo7QUFDZkgsS0FBQyxDQUFDLHFDQUFELENBQUQs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QW1CTyxFQUFuQjtBQUMzQjs7QUEvRHdEIiwiZmlsZSI6Ii4vc3JjL3JlYWN0L3NpZGViYXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQkRWMiBmcm9tIFwiLi4vdjJcIjtcclxuXHJcbmltcG9ydCBUYWJCYXJTZXBhcmF0b3IgZnJvbSBcIi4vdGFiQmFyU2VwYXJhdG9yXCI7XHJcbmltcG9ydCBUYWJCYXJIZWFkZXIgZnJvbSBcIi4vdGFiQmFySGVhZGVyXCI7XHJcbmltcG9ydCBUYWJCYXJJdGVtIGZyb20gXCIuL3RhYkJhckl0ZW1cIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFYyQ19TaWRlQmFyIGV4dGVuZHMgQkRWMi5yZWFjdENvbXBvbmVudCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgY29uc3Qgc2kgPSAkKFwiW2NsYXNzKj1zaWRlLV0gPiBbY2xhc3MqPXNlbGVjdGVkXVwiKTtcclxuICAgICAgICBpZiAoc2kubGVuZ3RoKSBzZWxmLnNjbiA9IHNpLmF0dHIoXCJjbGFzc1wiKTtcclxuICAgICAgICBjb25zdCBucyA9ICQoXCJbY2xhc3MqPXNpZGUtXSA+IFtjbGFzcyo9J2l0ZW0tJ106bm90KFtjbGFzcyo9c2VsZWN0ZWRdKVwiKTtcclxuICAgICAgICBpZiAobnMubGVuZ3RoKSBzZWxmLm5zY24gPSBucy5hdHRyKFwiY2xhc3NcIik7XHJcbiAgICAgICAgJChcIltjbGFzcyo9J3NpZGUtJ10gPiBbY2xhc3MqPSdpdGVtLSddXCIpLm9uKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBzZWxmLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBudWxsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHNlbGYuc2V0SW5pdGlhbFN0YXRlKCk7XHJcbiAgICAgICAgc2VsZi5vbkNsaWNrID0gc2VsZi5vbkNsaWNrLmJpbmQoc2VsZik7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SW5pdGlhbFN0YXRlKCkge1xyXG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIHNlbGYuc3RhdGUgPSB7XHJcbiAgICAgICAgICAgIHNlbGVjdGVkOiBudWxsLFxyXG4gICAgICAgICAgICBpdGVtczogc2VsZi5wcm9wcy5pdGVtc1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbnN0IGluaXRpYWxTZWxlY3Rpb24gPSBzZWxmLnByb3BzLml0ZW1zLmZpbmQoaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBpdGVtLnNlbGVjdGVkO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChpbml0aWFsU2VsZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIHNlbGYuc3RhdGUuc2VsZWN0ZWQgPSBpbml0aWFsU2VsZWN0aW9uLmlkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgY29uc3Qge2hlYWRlclRleHR9ID0gc2VsZi5wcm9wcztcclxuICAgICAgICBjb25zdCB7aXRlbXMsIHNlbGVjdGVkfSA9IHNlbGYuc3RhdGU7XHJcbiAgICAgICAgcmV0dXJuIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgXCJkaXZcIixcclxuICAgICAgICAgICAgbnVsbCxcclxuICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFRhYkJhclNlcGFyYXRvciwgbnVsbCksXHJcbiAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChUYWJCYXJIZWFkZXIsIHt0ZXh0OiBoZWFkZXJUZXh0fSksXHJcbiAgICAgICAgICAgIGl0ZW1zLm1hcChpdGVtID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHtpZCwgdGV4dH0gPSBpdGVtO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChUYWJCYXJJdGVtLCB7a2V5OiBpZCwgc2VsZWN0ZWQ6IHNlbGVjdGVkID09PSBpZCwgdGV4dDogdGV4dCwgaWQ6IGlkLCBvbkNsaWNrOiBzZWxmLm9uQ2xpY2t9KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2xpY2soaWQpIHtcclxuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcclxuICAgICAgICBjb25zdCBzaSA9ICQoXCJbY2xhc3MqPXNpZGVdID4gW2NsYXNzKj1zZWxlY3RlZF1cIik7XHJcbiAgICAgICAgaWYgKHNpLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBzaS5vZmYoXCJjbGljay5iZHNiXCIpLm9uKFwiY2xpY2suYnNiXCIsIGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgJChlLnRhcmdldCkuYXR0cihcImNsYXNzXCIsIHNlbGYuc2NuKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHNpLmF0dHIoXCJjbGFzc1wiLCBzZWxmLm5zY24pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2VsZi5zZXRTdGF0ZSh7c2VsZWN0ZWQ6IG51bGx9KTtcclxuICAgICAgICBzZWxmLnNldFN0YXRlKHtzZWxlY3RlZDogaWR9KTtcclxuXHJcbiAgICAgICAgaWYgKHNlbGYucHJvcHMub25DbGljaykgc2VsZi5wcm9wcy5vbkNsaWNrKGlkKTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/react/sidebar.js\n");
+/***/ }),
+/***/ "./src/react/sidebarView.js":
+/*!**********************************!*\
+ !*** ./src/react/sidebarView.js ***!
+ \**********************************/
+/*! exports provided: default */
+/***/ (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 V2C_SidebarView; });\n/* harmony import */ var _v2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../v2 */ \"./src/v2.js\");\n/* harmony import */ var _scroller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./scroller */ \"./src/react/scroller.js\");\n\n\nclass V2C_SidebarView extends _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].reactComponent {\n constructor(props) {\n super(props);\n }\n\n render() {\n const {\n sidebar,\n content,\n tools\n } = this.props.children;\n return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"standardSidebarView-3F1I7i ui-standard-sidebar-view\"\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"sidebarRegion-VFTUkN sidebar-region\"\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(_scroller__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n key: \"sidebarScroller\",\n ref: \"sidebarScroller\",\n sidebar: true,\n fade: sidebar.fade || true,\n dark: sidebar.dark || true,\n children: sidebar.component\n })), _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"contentRegion-3nDuYy content-region\"\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"contentTransitionWrap-3hqOEW content-transition-wrap\"\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"scrollerWrap-2lJEkd firefoxFixScrollFlex-cnI2ix contentRegionScrollerWrap-3YZXdm content-region-scroller-wrap scrollerThemed-2oenus themeGhost-28MSn0 scrollerTrack-1ZIpsv\"\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"scroller-2FKFPG firefoxFixScrollFlex-cnI2ix contentRegionScroller-26nc1e content-region-scroller scroller\",\n ref: \"contentScroller\"\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default\"\n }, content.component), tools.component)))));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3JlYWN0L3NpZGViYXJWaWV3LmpzPzlhMDQiXSwibmFtZXMiOlsiVjJDX1NpZGViYXJWaWV3IiwiQkRWMiIsInJlYWN0Q29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInJlbmRlciIsInNpZGViYXIiLCJjb250ZW50IiwidG9vbHMiLCJjaGlsZHJlbiIsInJlYWN0IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsIlNjcm9sbGVyIiwia2V5IiwicmVmIiwiZmFkZSIsImRhcmsiLCJjb21wb25lbnQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUVlLE1BQU1BLGVBQU4sU0FBOEJDLDJDQUFJLENBQUNDLGNBQW5DLENBQWtEO0FBRTdEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDSDs7QUFFREMsUUFBTSxHQUFHO0FBQ0wsVUFBTTtBQUFDQyxhQUFEO0FBQVVDLGFBQVY7QUFBbUJDO0FBQW5CLFFBQTRCLEtBQUtKLEtBQUwsQ0FBV0ssUUFBN0M7QUFDQSxXQUFPUiwyQ0FBSSxDQUFDUyxLQUFMLENBQVdDLGFBQVgsQ0FDSCxLQURHLEVBRUg7QUFBQ0MsZUFBUyxFQUFFO0FBQVosS0FGRyxFQUdIWCwyQ0FBSSxDQUFDUyxLQUFMLENBQVdDLGFBQVgsQ0FDSSxLQURKLEVBRUk7QUFBQ0MsZUFBUyxFQUFFO0FBQVosS0FGSixFQUdJWCwyQ0FBSSxDQUFDUyxLQUFMLENBQVdDLGFBQVgsQ0FBeUJFLGlEQUF6QixFQUFtQztBQUFDQyxTQUFHLEVBQUUsaUJBQU47QUFBeUJDLFNBQUcsRUFBRSxpQkFBOUI7QUFBaURULGFBQU8sRUFBRSxJQUExRDtBQUFnRVUsVUFBSSxFQUFFVixPQUFPLENBQUNVLElBQVIsSUFBZ0IsSUFBdEY7QUFBNEZDLFVBQUksRUFBRVgsT0FBTyxDQUFDVyxJQUFSLElBQWdCLElBQWxIO0FBQXdIUixjQUFRLEVBQUVILE9BQU8sQ0FBQ1k7QUFBMUksS0FBbkMsQ0FISixDQUhHLEVBUUhqQiwyQ0FBSSxDQUFDUyxLQUFMLENBQVdDLGFBQVgsQ0FBeUIsS0FBekIsRUFBZ0M7QUFBQ0MsZUFBUyxFQUFFO0FBQVosS0FBaEMsRUFDSVgsMkNBQUksQ0FBQ1MsS0FBTCxDQUFXQyxhQUFYLENBQXlCLEtBQXpCLEVBQWdDO0FBQUNDLGVBQVMsRUFBRTtBQUFaLEtBQWhDLEVBQ0lYLDJDQUFJLENBQUNTLEtBQUwsQ0FBV0MsYUFBWCxDQUF5QixLQUF6QixFQUFnQztBQUFDQyxlQUFTLEVBQUU7QUFBWixLQUFoQyxFQUNJWCwyQ0FBSSxDQUFDUyxLQUFMLENBQVdDLGFBQVgsQ0FBeUIsS0FBekIsRUFBZ0M7QUFBQ0MsZUFBUyxFQUFFLDJHQUFaO0FBQXlIRyxTQUFHLEVBQUU7QUFBOUgsS0FBaEMsRUFDSWQsMkNBQUksQ0FBQ1MsS0FBTCxDQUFXQyxhQUFYLENBQXlCLEtBQXpCLEVBQWdDO0FBQUNDLGVBQVMsRUFBRTtBQUFaLEtBQWhDLEVBQXdITCxPQUFPLENBQUNXLFNBQWhJLENBREosRUFFSVYsS0FBSyxDQUFDVSxTQUZWLENBREosQ0FESixDQURKLENBUkcsQ0FBUDtBQW1CSDs7QUEzQjREIiwiZmlsZSI6Ii4vc3JjL3JlYWN0L3NpZGViYXJWaWV3LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJEVjIgZnJvbSBcIi4uL3YyXCI7XHJcblxyXG5pbXBvcnQgU2Nyb2xsZXIgZnJvbSBcIi4vc2Nyb2xsZXJcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFYyQ19TaWRlYmFyVmlldyBleHRlbmRzIEJEVjIucmVhY3RDb21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCB7c2lkZWJhciwgY29udGVudCwgdG9vbHN9ID0gdGhpcy5wcm9wcy5jaGlsZHJlbjtcclxuICAgICAgICByZXR1cm4gQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICBcImRpdlwiLFxyXG4gICAgICAgICAgICB7Y2xhc3NOYW1lOiBcInN0YW5kYXJkU2lkZWJhclZpZXctM0YxSTdpIHVpLXN0YW5kYXJkLXNpZGViYXItdmlld1wifSxcclxuICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgXCJkaXZcIixcclxuICAgICAgICAgICAgICAgIHtjbGFzc05hbWU6IFwic2lkZWJhclJlZ2lvbi1WRlRVa04gc2lkZWJhci1yZWdpb25cIn0sXHJcbiAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoU2Nyb2xsZXIsIHtrZXk6IFwic2lkZWJhclNjcm9sbGVyXCIsIHJlZjogXCJzaWRlYmFyU2Nyb2xsZXJcIiwgc2lkZWJhcjogdHJ1ZSwgZmFkZTogc2lkZWJhci5mYWRlIHx8IHRydWUsIGRhcms6IHNpZGViYXIuZGFyayB8fCB0cnVlLCBjaGlsZHJlbjogc2lkZWJhci5jb21wb25lbnR9KVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTogXCJjb250ZW50UmVnaW9uLTNuRHVZeSBjb250ZW50LXJlZ2lvblwifSxcclxuICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7Y2xhc3NOYW1lOiBcImNvbnRlbnRUcmFuc2l0aW9uV3JhcC0zaHFPRVcgY29udGVudC10cmFuc2l0aW9uLXdyYXBcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtjbGFzc05hbWU6IFwic2Nyb2xsZXJXcmFwLTJsSkVrZCBmaXJlZm94Rml4U2Nyb2xsRmxleC1jbkkyaXggY29udGVudFJlZ2lvblNjcm9sbGVyV3JhcC0zWVpYZG0gY29udGVudC1yZWdpb24tc2Nyb2xsZXItd3JhcCBzY3JvbGxlclRoZW1lZC0yb2VudXMgdGhlbWVHaG9zdC0yOE1TbjAgc2Nyb2xsZXJUcmFjay0xWklwc3ZcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7Y2xhc3NOYW1lOiBcInNjcm9sbGVyLTJGS0ZQRyBmaXJlZm94Rml4U2Nyb2xsRmxleC1jbkkyaXggY29udGVudFJlZ2lvblNjcm9sbGVyLTI2bmMxZSBjb250ZW50LXJlZ2lvbi1zY3JvbGxlciBzY3JvbGxlclwiLCByZWY6IFwiY29udGVudFNjcm9sbGVyXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtjbGFzc05hbWU6IFwiY29udGVudENvbHVtbi0yaHJJWUggY29udGVudENvbHVtbkRlZmF1bHQtMVZRa0dNIGNvbnRlbnQtY29sdW1uIGRlZmF1bHRcIn0sIGNvbnRlbnQuY29tcG9uZW50KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xzLmNvbXBvbmVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/react/sidebarView.js\n");
+/***/ }),
+/***/ "./src/react/switch.js":
+/*!*****************************!*\
+ !*** ./src/react/switch.js ***!
+ \*****************************/
+/*! exports provided: default */
+/***/ (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 V2C_Switch; });\n/* harmony import */ var _v2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../v2 */ \"./src/v2.js\");\n\nclass V2C_Switch extends _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].reactComponent {\n constructor(props) {\n super(props);\n this.setInitialState();\n this.onChange = this.onChange.bind(this);\n }\n\n setInitialState() {\n this.state = {\n checked: this.props.checked\n };\n }\n\n render() {\n const {\n text,\n info\n } = this.props.data;\n const {\n checked\n } = this.state;\n return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"ui-flex flex-vertical flex-justify-start flex-align-stretch flex-nowrap ui-switch-item\"\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"ui-flex flex-horizontal flex-justify-start flex-align-stretch flex-nowrap\"\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"h3\", {\n className: \"ui-form-title h3 margin-reset margin-reset ui-flex-child\"\n }, text), _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"label\", {\n className: \"ui-switch-wrapper ui-flex-child\",\n style: {\n flex: \"0 0 auto\"\n }\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"input\", {\n className: \"ui-switch-checkbox\",\n type: \"checkbox\",\n checked: checked,\n onChange: e => this.onChange(e)\n }), _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: `ui-switch ${checked ? \"checked\" : \"\"}`\n }))), _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"ui-form-text style-description margin-top-4\",\n style: {\n flex: \"1 1 auto\"\n }\n }, info));\n }\n\n onChange() {\n this.props.onChange(this.props.id, !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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3JlYWN0L3N3aXRjaC5qcz8yZTMyIl0sIm5hbWVzIjpbIlYyQ19Td2l0Y2giLCJCRFYyIiwicmVhY3RDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic2V0SW5pdGlhbFN0YXRlIiwib25DaGFuZ2UiLCJiaW5kIiwic3RhdGUiLCJjaGVja2VkIiwicmVuZGVyIiwidGV4dCIsImluZm8iLCJkYXRhIiwicmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwic3R5bGUiLCJmbGV4IiwidHlwZSIsImUiLCJpZCIsInNldFN0YXRlIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLFVBQU4sU0FBeUJDLDJDQUFJLENBQUNDLGNBQTlCLENBQTZDO0FBRXhEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDQSxTQUFLQyxlQUFMO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQixLQUFLQSxRQUFMLENBQWNDLElBQWQsQ0FBbUIsSUFBbkIsQ0FBaEI7QUFDSDs7QUFFREYsaUJBQWUsR0FBRztBQUNkLFNBQUtHLEtBQUwsR0FBYTtBQUNUQyxhQUFPLEVBQUUsS0FBS0wsS0FBTCxDQUFXSztBQURYLEtBQWI7QUFHSDs7QUFFREMsUUFBTSxHQUFHO0FBQ0wsVUFBTTtBQUFDQyxVQUFEO0FBQU9DO0FBQVAsUUFBZSxLQUFLUixLQUFMLENBQVdTLElBQWhDO0FBQ0EsVUFBTTtBQUFDSjtBQUFELFFBQVksS0FBS0QsS0FBdkI7QUFDQSxXQUFPUCwyQ0FBSSxDQUFDYSxLQUFMLENBQVdDLGFBQVgsQ0FDSCxLQURHLEVBRUg7QUFBQ0MsZUFBUyxFQUFFO0FBQVosS0FGRyxFQUdIZiwyQ0FBSSxDQUFDYSxLQUFMLENBQVdDLGFBQVgsQ0FDSSxLQURKLEVBRUk7QUFBQ0MsZUFBUyxFQUFFO0FBQVosS0FGSixFQUdJZiwyQ0FBSSxDQUFDYSxLQUFMLENBQVdDLGFBQVgsQ0FDSSxJQURKLEVBRUk7QUFBQ0MsZUFBUyxFQUFFO0FBQVosS0FGSixFQUdJTCxJQUhKLENBSEosRUFRSVYsMkNBQUksQ0FBQ2EsS0FBTCxDQUFXQyxhQUFYLENBQ0ksT0FESixFQUVJO0FBQUNDLGVBQVMsRUFBRSxpQ0FBWjtBQUErQ0MsV0FBSyxFQUFFO0FBQUNDLFlBQUksRUFBRTtBQUFQO0FBQXRELEtBRkosRUFHSWpCLDJDQUFJLENBQUNhLEtBQUwsQ0FBV0MsYUFBWCxDQUF5QixPQUF6QixFQUFrQztBQUFDQyxlQUFTLEVBQUUsb0JBQVo7QUFBa0NHLFVBQUksRUFBRSxVQUF4QztBQUFvRFYsYUFBTyxFQUFFQSxPQUE3RDtBQUFzRUgsY0FBUSxFQUFFYyxDQUFDLElBQUksS0FBS2QsUUFBTCxDQUFjYyxDQUFkO0FBQXJGLEtBQWxDLENBSEosRUFJSW5CLDJDQUFJLENBQUNhLEtBQUwsQ0FBV0MsYUFBWCxDQUF5QixLQUF6QixFQUFnQztBQUFDQyxlQUFTLEVBQUcsYUFBWVAsT0FBTyxHQUFHLFNBQUgsR0FBZSxFQUFHO0FBQWxELEtBQWhDLENBSkosQ0FSSixDQUhHLEVBa0JIUiwyQ0FBSSxDQUFDYSxLQUFMLENBQVdDLGFBQVgsQ0FDSSxLQURKLEVBRUk7QUFBQ0MsZUFBUyxFQUFFLDZDQUFaO0FBQTJEQyxXQUFLLEVBQUU7QUFBQ0MsWUFBSSxFQUFFO0FBQVA7QUFBbEUsS0FGSixFQUdJTixJQUhKLENBbEJHLENBQVA7QUF3Qkg7O0FBRUROLFVBQVEsR0FBRztBQUNQLFNBQUtGLEtBQUwsQ0FBV0UsUUFBWCxDQUFvQixLQUFLRixLQUFMLENBQVdpQixFQUEvQixFQUFtQyxDQUFDLEtBQUtiLEtBQUwsQ0FBV0MsT0FBL0M7QUFDQSxTQUFLYSxRQUFMLENBQWM7QUFDVmIsYUFBTyxFQUFFLENBQUMsS0FBS0QsS0FBTCxDQUFXQztBQURYLEtBQWQ7QUFHSDs7QUFoRHVEIiwiZmlsZSI6Ii4vc3JjL3JlYWN0L3N3aXRjaC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCRFYyIGZyb20gXCIuLi92MlwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVjJDX1N3aXRjaCBleHRlbmRzIEJEVjIucmVhY3RDb21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgICAgIHRoaXMuc2V0SW5pdGlhbFN0YXRlKCk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRJbml0aWFsU3RhdGUoKSB7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgICAgICAgY2hlY2tlZDogdGhpcy5wcm9wcy5jaGVja2VkXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qge3RleHQsIGluZm99ID0gdGhpcy5wcm9wcy5kYXRhO1xyXG4gICAgICAgIGNvbnN0IHtjaGVja2VkfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgcmV0dXJuIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgXCJkaXZcIixcclxuICAgICAgICAgICAge2NsYXNzTmFtZTogXCJ1aS1mbGV4IGZsZXgtdmVydGljYWwgZmxleC1qdXN0aWZ5LXN0YXJ0IGZsZXgtYWxpZ24tc3RyZXRjaCBmbGV4LW5vd3JhcCB1aS1zd2l0Y2gtaXRlbVwifSxcclxuICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgXCJkaXZcIixcclxuICAgICAgICAgICAgICAgIHtjbGFzc05hbWU6IFwidWktZmxleCBmbGV4LWhvcml6b250YWwgZmxleC1qdXN0aWZ5LXN0YXJ0IGZsZXgtYWxpZ24tc3RyZXRjaCBmbGV4LW5vd3JhcFwifSxcclxuICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgICAgICBcImgzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAge2NsYXNzTmFtZTogXCJ1aS1mb3JtLXRpdGxlIGgzIG1hcmdpbi1yZXNldCBtYXJnaW4tcmVzZXQgdWktZmxleC1jaGlsZFwifSxcclxuICAgICAgICAgICAgICAgICAgICB0ZXh0XHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGFiZWxcIixcclxuICAgICAgICAgICAgICAgICAgICB7Y2xhc3NOYW1lOiBcInVpLXN3aXRjaC13cmFwcGVyIHVpLWZsZXgtY2hpbGRcIiwgc3R5bGU6IHtmbGV4OiBcIjAgMCBhdXRvXCJ9fSxcclxuICAgICAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7Y2xhc3NOYW1lOiBcInVpLXN3aXRjaC1jaGVja2JveFwiLCB0eXBlOiBcImNoZWNrYm94XCIsIGNoZWNrZWQ6IGNoZWNrZWQsIG9uQ2hhbmdlOiBlID0+IHRoaXMub25DaGFuZ2UoZSl9KSxcclxuICAgICAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTogYHVpLXN3aXRjaCAke2NoZWNrZWQgPyBcImNoZWNrZWRcIiA6IFwiXCJ9YH0pXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcclxuICAgICAgICAgICAgICAgIFwiZGl2XCIsXHJcbiAgICAgICAgICAgICAgICB7Y2xhc3NOYW1lOiBcInVpLWZvcm0tdGV4dCBzdHlsZS1kZXNjcmlwdGlvbiBtYXJnaW4tdG9wLTRcIiwgc3R5bGU6IHtmbGV4OiBcIjEgMSBhdXRvXCJ9fSxcclxuICAgICAgICAgICAgICAgIGluZm9cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UoKSB7XHJcbiAgICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZSh0aGlzLnByb3BzLmlkLCAhdGhpcy5zdGF0ZS5jaGVja2VkKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgY2hlY2tlZDogIXRoaXMuc3RhdGUuY2hlY2tlZFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/react/switch.js\n");
+/***/ }),
+/***/ "./src/react/tabBarHeader.js":
+/*!***********************************!*\
+ !*** ./src/react/tabBarHeader.js ***!
+ \***********************************/
+/*! exports provided: default */
+/***/ (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 V2C_TabBarHeader; });\n/* harmony import */ var _v2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../v2 */ \"./src/v2.js\");\n\nclass V2C_TabBarHeader extends _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].reactComponent {\n constructor(props) {\n super(props);\n }\n\n render() {\n return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"ui-tab-bar-header\"\n }, this.props.text);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3JlYWN0L3RhYkJhckhlYWRlci5qcz83MzE3Il0sIm5hbWVzIjpbIlYyQ19UYWJCYXJIZWFkZXIiLCJCRFYyIiwicmVhY3RDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwicmVuZGVyIiwicmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwidGV4dCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxnQkFBTixTQUErQkMsMkNBQUksQ0FBQ0MsY0FBcEMsQ0FBbUQ7QUFDOURDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2YsVUFBTUEsS0FBTjtBQUNIOztBQUVEQyxRQUFNLEdBQUc7QUFDTCxXQUFPSiwyQ0FBSSxDQUFDSyxLQUFMLENBQVdDLGFBQVgsQ0FDSCxLQURHLEVBRUg7QUFBQ0MsZUFBUyxFQUFFO0FBQVosS0FGRyxFQUdILEtBQUtKLEtBQUwsQ0FBV0ssSUFIUixDQUFQO0FBS0g7O0FBWDZEIiwiZmlsZSI6Ii4vc3JjL3JlYWN0L3RhYkJhckhlYWRlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCRFYyIGZyb20gXCIuLi92MlwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVjJDX1RhYkJhckhlYWRlciBleHRlbmRzIEJEVjIucmVhY3RDb21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXHJcbiAgICAgICAgICAgIFwiZGl2XCIsXHJcbiAgICAgICAgICAgIHtjbGFzc05hbWU6IFwidWktdGFiLWJhci1oZWFkZXJcIn0sXHJcbiAgICAgICAgICAgIHRoaXMucHJvcHMudGV4dFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/react/tabBarHeader.js\n");
+/***/ }),
+/***/ "./src/react/tabBarItem.js":
+/*!*********************************!*\
+ !*** ./src/react/tabBarItem.js ***!
+ \*********************************/
+/*! exports provided: default */
+/***/ (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 V2C_TabBarItem; });\n/* harmony import */ var _v2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../v2 */ \"./src/v2.js\");\n\nclass V2C_TabBarItem extends _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].reactComponent {\n constructor(props) {\n super(props);\n this.setInitialState();\n this.onClick = this.onClick.bind(this);\n }\n\n setInitialState() {\n this.state = {\n selected: this.props.selected || false\n };\n }\n\n render() {\n return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: `ui-tab-bar-item${this.props.selected ? \" selected\" : \"\"}`,\n onClick: this.onClick\n }, this.props.text);\n }\n\n onClick() {\n if (this.props.onClick) {\n this.props.onClick(this.props.id);\n }\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3JlYWN0L3RhYkJhckl0ZW0uanM/YmNhYSJdLCJuYW1lcyI6WyJWMkNfVGFiQmFySXRlbSIsIkJEVjIiLCJyZWFjdENvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzZXRJbml0aWFsU3RhdGUiLCJvbkNsaWNrIiwiYmluZCIsInN0YXRlIiwic2VsZWN0ZWQiLCJyZW5kZXIiLCJyZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJ0ZXh0IiwiaWQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsY0FBTixTQUE2QkMsMkNBQUksQ0FBQ0MsY0FBbEMsQ0FBaUQ7QUFFNURDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2YsVUFBTUEsS0FBTjtBQUNBLFNBQUtDLGVBQUw7QUFDQSxTQUFLQyxPQUFMLEdBQWUsS0FBS0EsT0FBTCxDQUFhQyxJQUFiLENBQWtCLElBQWxCLENBQWY7QUFDSDs7QUFFREYsaUJBQWUsR0FBRztBQUNkLFNBQUtHLEtBQUwsR0FBYTtBQUNUQyxjQUFRLEVBQUUsS0FBS0wsS0FBTCxDQUFXSyxRQUFYLElBQXVCO0FBRHhCLEtBQWI7QUFHSDs7QUFFREMsUUFBTSxHQUFHO0FBQ0wsV0FBT1QsMkNBQUksQ0FBQ1UsS0FBTCxDQUFXQyxhQUFYLENBQ0gsS0FERyxFQUVIO0FBQUNDLGVBQVMsRUFBRyxrQkFBaUIsS0FBS1QsS0FBTCxDQUFXSyxRQUFYLEdBQXNCLFdBQXRCLEdBQW9DLEVBQUcsRUFBckU7QUFBd0VILGFBQU8sRUFBRSxLQUFLQTtBQUF0RixLQUZHLEVBR0gsS0FBS0YsS0FBTCxDQUFXVSxJQUhSLENBQVA7QUFLSDs7QUFFRFIsU0FBTyxHQUFHO0FBQ04sUUFBSSxLQUFLRixLQUFMLENBQVdFLE9BQWYsRUFBd0I7QUFDcEIsV0FBS0YsS0FBTCxDQUFXRSxPQUFYLENBQW1CLEtBQUtGLEtBQUwsQ0FBV1csRUFBOUI7QUFDSDtBQUNKOztBQTFCMkQiLCJmaWxlIjoiLi9zcmMvcmVhY3QvdGFiQmFySXRlbS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCRFYyIGZyb20gXCIuLi92MlwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVjJDX1RhYkJhckl0ZW0gZXh0ZW5kcyBCRFYyLnJlYWN0Q29tcG9uZW50IHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICB0aGlzLnNldEluaXRpYWxTdGF0ZSgpO1xyXG4gICAgICAgIHRoaXMub25DbGljayA9IHRoaXMub25DbGljay5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEluaXRpYWxTdGF0ZSgpIHtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5wcm9wcy5zZWxlY3RlZCB8fCBmYWxzZVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXHJcbiAgICAgICAgICAgIFwiZGl2XCIsXHJcbiAgICAgICAgICAgIHtjbGFzc05hbWU6IGB1aS10YWItYmFyLWl0ZW0ke3RoaXMucHJvcHMuc2VsZWN0ZWQgPyBcIiBzZWxlY3RlZFwiIDogXCJcIn1gLCBvbkNsaWNrOiB0aGlzLm9uQ2xpY2t9LFxyXG4gICAgICAgICAgICB0aGlzLnByb3BzLnRleHRcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2xpY2soKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25DbGljaykge1xyXG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2xpY2sodGhpcy5wcm9wcy5pZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/react/tabBarItem.js\n");
+/***/ }),
+/***/ "./src/react/tabBarSeparator.js":
+/*!**************************************!*\
+ !*** ./src/react/tabBarSeparator.js ***!
+ \**************************************/
+/*! exports provided: default */
+/***/ (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 V2C_TabBarSeparator; });\n/* harmony import */ var _v2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../v2 */ \"./src/v2.js\");\n\nclass V2C_TabBarSeparator extends _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].reactComponent {\n constructor(props) {\n super(props);\n }\n\n render() {\n return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"ui-tab-bar-separator margin-top-8 margin-bottom-8\"\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3JlYWN0L3RhYkJhclNlcGFyYXRvci5qcz9kZWRmIl0sIm5hbWVzIjpbIlYyQ19UYWJCYXJTZXBhcmF0b3IiLCJCRFYyIiwicmVhY3RDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwicmVuZGVyIiwicmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLG1CQUFOLFNBQWtDQywyQ0FBSSxDQUFDQyxjQUF2QyxDQUFzRDtBQUNqRUMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0g7O0FBRURDLFFBQU0sR0FBRztBQUNMLFdBQU9KLDJDQUFJLENBQUNLLEtBQUwsQ0FBV0MsYUFBWCxDQUF5QixLQUF6QixFQUFnQztBQUFDQyxlQUFTLEVBQUU7QUFBWixLQUFoQyxDQUFQO0FBQ0g7O0FBUGdFIiwiZmlsZSI6Ii4vc3JjL3JlYWN0L3RhYkJhclNlcGFyYXRvci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCRFYyIGZyb20gXCIuLi92MlwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVjJDX1RhYkJhclNlcGFyYXRvciBleHRlbmRzIEJEVjIucmVhY3RDb21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTogXCJ1aS10YWItYmFyLXNlcGFyYXRvciBtYXJnaW4tdG9wLTggbWFyZ2luLWJvdHRvbS04XCJ9KTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/react/tabBarSeparator.js\n");
+/***/ }),
+/***/ "./src/react/themeCard.js":
+/*!********************************!*\
+ !*** ./src/react/themeCard.js ***!
+ \********************************/
+/*! exports provided: default */
+/***/ (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 V2C_ThemeCard; });\n/* harmony import */ var _0globals__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../0globals */ \"./src/0globals.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils */ \"./src/utils.js\");\n/* harmony import */ var _v2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../v2 */ \"./src/v2.js\");\n/* harmony import */ var _themeModule__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../themeModule */ \"./src/themeModule.js\");\n/* harmony import */ var _reloadIcon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./reloadIcon */ \"./src/react/reloadIcon.js\");\n/* harmony import */ var _tooltipWrap__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./tooltipWrap */ \"./src/react/tooltipWrap.js\");\n\n\n\n\n\n\nclass V2C_ThemeCard extends _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].reactComponent {\n constructor(props) {\n super(props);\n this.setInitialState();\n this.onChange = this.onChange.bind(this);\n this.reload = this.reload.bind(this);\n }\n\n setInitialState() {\n this.state = {\n checked: _0globals__WEBPACK_IMPORTED_MODULE_0__[\"themeCookie\"][this.props.theme.name],\n reloads: 0\n };\n } // componentDidMount() {\n // BDEvents.on(\"theme-reloaded\", this.onReload);\n // }\n // componentWillUnmount() {\n // BDEvents.off(\"theme-reloaded\", this.onReload);\n // }\n\n\n onReload(themeName) {\n if (themeName !== this.props.theme.name) return;\n this.setState({\n reloads: this.state.reloads + 1\n });\n }\n\n reload() {\n const theme = this.props.theme.name;\n const error = _themeModule__WEBPACK_IMPORTED_MODULE_3__[\"default\"].reloadTheme(theme);\n if (error) _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].showToast(`Could not reload ${_0globals__WEBPACK_IMPORTED_MODULE_0__[\"bdthemes\"][theme].name}. Check console for details.`, {\n type: \"error\"\n });else _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].showToast(`${_0globals__WEBPACK_IMPORTED_MODULE_0__[\"bdthemes\"][theme].name} v${_0globals__WEBPACK_IMPORTED_MODULE_0__[\"bdthemes\"][theme].version} has been reloaded.`, {\n type: \"success\"\n }); // this.setState(this.state);\n\n this.props.theme = _0globals__WEBPACK_IMPORTED_MODULE_0__[\"bdthemes\"][theme];\n this.onReload(this.props.theme.name);\n }\n\n makeLink(title, url) {\n const props = {\n className: \"bda-link bda-link-website\",\n target: \"_blank\"\n };\n if (typeof url == \"string\") props.href = url;\n if (typeof url == \"function\") props.onClick = event => {\n event.preventDefault();\n event.stopPropagation();\n url();\n };\n return _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(\"a\", props, title);\n }\n\n render() {\n const {\n theme\n } = this.props;\n const name = theme.name;\n const description = theme.description;\n const version = theme.version;\n const author = theme.author;\n const meta = _0globals__WEBPACK_IMPORTED_MODULE_0__[\"bdthemes\"][name];\n const links = [];\n if (meta.website) links.push(this.makeLink(\"Website\", meta.website));\n if (meta.source) links.push(this.makeLink(\"Source\", meta.source));\n\n if (meta.invite) {\n links.push(this.makeLink(\"Support Server\", () => {\n const tester = /\\.gg\\/(.*)$/;\n let code = meta.invite;\n if (tester.test(code)) code = code.match(tester)[1];\n _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].LayerStack.popLayer();\n _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].InviteActions.acceptInviteAndTransitionToInviteChannel(code);\n }));\n }\n\n if (meta.donate) links.push(this.makeLink(\"Donate\", meta.donate));\n if (meta.patreon) links.push(this.makeLink(\"Patreon\", meta.patreon));\n const authorProps = {\n className: \"bda-author\"\n };\n\n if (meta.authorLink || meta.authorId) {\n authorProps.className += ` ${_v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].anchorClasses.anchor} ${_v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].anchorClasses.anchorUnderlineOnHover}`;\n authorProps.target = \"_blank\";\n if (meta.authorLink) authorProps.href = meta.authorLink;\n if (meta.authorId) authorProps.onClick = () => {\n _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].LayerStack.popLayer();\n _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].openDM(meta.authorId);\n };\n }\n\n return _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(\"li\", {\n \"data-name\": name,\n \"data-version\": version,\n \"className\": \"settings-closed ui-switch-item\"\n }, _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(\"div\", {\n className: \"bda-header\"\n }, _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(\"span\", {\n className: \"bda-header-title\"\n }, _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(\"span\", {\n className: \"bda-name\"\n }, name), \" v\", _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(\"span\", {\n className: \"bda-version\"\n }, version), \" by \", _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(meta.authorLink || meta.authorId ? \"a\" : \"span\", authorProps, author)), _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(\"div\", {\n className: \"bda-controls\"\n }, !_0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"][\"fork-ps-5\"] && _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(Object(_tooltipWrap__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_reloadIcon__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n color: \"black\",\n side: \"top\",\n text: \"Reload\"\n }), {\n className: \"bd-reload-card\",\n onClick: this.reload\n }), _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(\"label\", {\n className: \"ui-switch-wrapper ui-flex-child\",\n style: {\n flex: \"0 0 auto\"\n }\n }, _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(\"input\", {\n checked: this.state.checked,\n onChange: this.onChange,\n className: \"ui-switch-checkbox\",\n type: \"checkbox\"\n }), _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(\"div\", {\n className: this.state.checked ? \"ui-switch checked\" : \"ui-switch\"\n })))), _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(\"div\", {\n className: \"bda-description-wrap scroller-wrap fade\"\n }, _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(\"div\", {\n className: \"bda-description scroller\"\n }, description)), !!links.length && _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(\"div\", {\n className: \"bda-footer\"\n }, _v2__WEBPACK_IMPORTED_MODULE_2__[\"default\"].react.createElement(\"span\", {\n className: \"bda-links\"\n }, ...links.map((element, index) => index < links.length - 1 ? [element, \" | \"] : element).flat())));\n }\n\n onChange() {\n this.setState({\n checked: !this.state.checked\n });\n _themeModule__WEBPACK_IMPORTED_MODULE_3__[\"default\"].toggleTheme(this.props.theme.name);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3JlYWN0L3RoZW1lQ2FyZC5qcz8xZmFiIl0sIm5hbWVzIjpbIlYyQ19UaGVtZUNhcmQiLCJCRFYyIiwicmVhY3RDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic2V0SW5pdGlhbFN0YXRlIiwib25DaGFuZ2UiLCJiaW5kIiwicmVsb2FkIiwic3RhdGUiLCJjaGVja2VkIiwidGhlbWVDb29raWUiLCJ0aGVtZSIsIm5hbWUiLCJyZWxvYWRzIiwib25SZWxvYWQiLCJ0aGVtZU5hbWUiLCJzZXRTdGF0ZSIsImVycm9yIiwidGhlbWVNb2R1bGUiLCJyZWxvYWRUaGVtZSIsIlV0aWxzIiwic2hvd1RvYXN0IiwiYmR0aGVtZXMiLCJ0eXBlIiwidmVyc2lvbiIsIm1ha2VMaW5rIiwidGl0bGUiLCJ1cmwiLCJjbGFzc05hbWUiLCJ0YXJnZXQiLCJocmVmIiwib25DbGljayIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJyZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJyZW5kZXIiLCJkZXNjcmlwdGlvbiIsImF1dGhvciIsIm1ldGEiLCJsaW5rcyIsIndlYnNpdGUiLCJwdXNoIiwic291cmNlIiwiaW52aXRlIiwidGVzdGVyIiwiY29kZSIsInRlc3QiLCJtYXRjaCIsIkxheWVyU3RhY2siLCJwb3BMYXllciIsIkludml0ZUFjdGlvbnMiLCJhY2NlcHRJbnZpdGVBbmRUcmFuc2l0aW9uVG9JbnZpdGVDaGFubmVsIiwiZG9uYXRlIiwicGF0cmVvbiIsImF1dGhvclByb3BzIiwiYXV0aG9yTGluayIsImF1dGhvcklkIiwiYW5jaG9yQ2xhc3NlcyIsImFuY2hvciIsImFuY2hvclVuZGVybGluZU9uSG92ZXIiLCJvcGVuRE0iLCJzZXR0aW5nc0Nvb2tpZSIsIlRvb2x0aXBXcmFwIiwiUmVsb2FkSWNvbiIsImNvbG9yIiwic2lkZSIsInRleHQiLCJzdHlsZSIsImZsZXgiLCJsZW5ndGgiLCJtYXAi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S0FBTCxDQUFXUSxLQUFYLENBQWlCQyxJQUF6QztBQUNIOztBQTdHMEQiLCJmaWxlIjoiLi9zcmMvcmVhY3QvdGhlbWVDYXJkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzZXR0aW5nc0Nvb2tpZSwgdGhlbWVDb29raWUsIGJkdGhlbWVzfSBmcm9tIFwiLi4vMGdsb2JhbHNcIjtcclxuaW1wb3J0IFV0aWxzIGZyb20gXCIuLi91dGlsc1wiO1xyXG5pbXBvcnQgQkRWMiBmcm9tIFwiLi4vdjJcIjtcclxuaW1wb3J0IHRoZW1lTW9kdWxlIGZyb20gXCIuLi90aGVtZU1vZHVsZVwiO1xyXG5cclxuaW1wb3J0IFJlbG9hZEljb24gZnJvbSBcIi4vcmVsb2FkSWNvblwiO1xyXG5pbXBvcnQgVG9vbHRpcFdyYXAgZnJvbSBcIi4vdG9vbHRpcFdyYXBcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFYyQ19UaGVtZUNhcmQgZXh0ZW5kcyBCRFYyLnJlYWN0Q29tcG9uZW50IHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICB0aGlzLnNldEluaXRpYWxTdGF0ZSgpO1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSB0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5yZWxvYWQgPSB0aGlzLnJlbG9hZC5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEluaXRpYWxTdGF0ZSgpIHtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICAgICAgICBjaGVja2VkOiB0aGVtZUNvb2tpZVt0aGlzLnByb3BzLnRoZW1lLm5hbWVdLFxyXG4gICAgICAgICAgICByZWxvYWRzOiAwXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIC8vICAgICBCREV2ZW50cy5vbihcInRoZW1lLXJlbG9hZGVkXCIsIHRoaXMub25SZWxvYWQpO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIC8vIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgLy8gICAgIEJERXZlbnRzLm9mZihcInRoZW1lLXJlbG9hZGVkXCIsIHRoaXMub25SZWxvYWQpO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIG9uUmVsb2FkKHRoZW1lTmFtZSkge1xyXG4gICAgICAgIGlmICh0aGVtZU5hbWUgIT09IHRoaXMucHJvcHMudGhlbWUubmFtZSkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe3JlbG9hZHM6IHRoaXMuc3RhdGUucmVsb2FkcyArIDF9KTtcclxuICAgIH1cclxuXHJcbiAgICByZWxvYWQoKSB7XHJcbiAgICAgICAgY29uc3QgdGhlbWUgPSB0aGlzLnByb3BzLnRoZW1lLm5hbWU7XHJcbiAgICAgICAgY29uc3QgZXJyb3IgPSB0aGVtZU1vZHVsZS5yZWxvYWRUaGVtZSh0aGVtZSk7XHJcbiAgICAgICAgaWYgKGVycm9yKSBVdGlscy5zaG93VG9hc3QoYENvdWxkIG5vdCByZWxvYWQgJHtiZHRoZW1lc1t0aGVtZV0ubmFtZX0uIENoZWNrIGNvbnNvbGUgZm9yIGRldGFpbHMuYCwge3R5cGU6IFwiZXJyb3JcIn0pO1xyXG4gICAgICAgIGVsc2UgVXRpbHMuc2hvd1RvYXN0KGAke2JkdGhlbWVzW3RoZW1lXS5uYW1lfSB2JHtiZHRoZW1lc1t0aGVtZV0udmVyc2lvbn0gaGFzIGJlZW4gcmVsb2FkZWQuYCwge3R5cGU6IFwic3VjY2Vzc1wifSk7XHJcbiAgICAgICAgLy8gdGhpcy5zZXRTdGF0ZSh0aGlzLnN0YXRlKTtcclxuICAgICAgICB0aGlzLnByb3BzLnRoZW1lID0gYmR0aGVtZXNbdGhlbWVdO1xyXG4gICAgICAgIHRoaXMub25SZWxvYWQodGhpcy5wcm9wcy50aGVtZS5uYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBtYWtlTGluayh0aXRsZSwgdXJsKSB7XHJcbiAgICAgICAgY29uc3QgcHJvcHMgPSB7Y2xhc3NOYW1lOiBcImJkYS1saW5rIGJkYS1saW5rLXdlYnNpdGVcIiwgdGFyZ2V0OiBcIl9ibGFua1wifTtcclxuICAgICAgICBpZiAodHlwZW9mKHVybCkgPT0gXCJzdHJpbmdcIikgcHJvcHMuaHJlZiA9IHVybDtcclxuICAgICAgICBpZiAodHlwZW9mKHVybCkgPT0gXCJmdW5jdGlvblwiKSBwcm9wcy5vbkNsaWNrID0gKGV2ZW50KSA9PiB7ZXZlbnQucHJldmVudERlZmF1bHQoKTsgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHVybCgpO307XHJcbiAgICAgICAgcmV0dXJuIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwgcHJvcHMsIHRpdGxlKTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qge3RoZW1lfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IHRoZW1lLm5hbWU7XHJcbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSB0aGVtZS5kZXNjcmlwdGlvbjtcclxuICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhlbWUudmVyc2lvbjtcclxuICAgICAgICBjb25zdCBhdXRob3IgPSB0aGVtZS5hdXRob3I7XHJcbiAgICAgICAgY29uc3QgbWV0YSA9IGJkdGhlbWVzW25hbWVdO1xyXG5cclxuICAgICAgICBjb25zdCBsaW5rcyA9IFtdO1xyXG4gICAgICAgIGlmIChtZXRhLndlYnNpdGUpIGxpbmtzLnB1c2godGhpcy5tYWtlTGluayhcIldlYnNpdGVcIiwgbWV0YS53ZWJzaXRlKSk7XHJcbiAgICAgICAgaWYgKG1ldGEuc291cmNlKSBsaW5rcy5wdXNoKHRoaXMubWFrZUxpbmsoXCJTb3VyY2VcIiwgbWV0YS5zb3VyY2UpKTtcclxuICAgICAgICBpZiAobWV0YS5pbnZpdGUpIHtcclxuICAgICAgICAgICAgbGlua3MucHVzaCh0aGlzLm1ha2VMaW5rKFwiU3VwcG9ydCBTZXJ2ZXJcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdGVzdGVyID0gL1xcLmdnXFwvKC4qKSQvO1xyXG4gICAgICAgICAgICAgICAgbGV0IGNvZGUgPSBtZXRhLmludml0ZTtcclxuICAgICAgICAgICAgICAgIGlmICh0ZXN0ZXIudGVzdChjb2RlKSkgY29kZSA9IGNvZGUubWF0Y2godGVzdGVyKVsxXTtcclxuICAgICAgICAgICAgICAgIEJEVjIuTGF5ZXJTdGFjay5wb3BMYXllcigpO1xyXG4gICAgICAgICAgICAgICAgQkRWMi5JbnZpdGVBY3Rpb25zLmFjY2VwdEludml0ZUFuZFRyYW5zaXRpb25Ub0ludml0ZUNoYW5uZWwoY29kZSk7XHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG1ldGEuZG9uYXRlKSBsaW5rcy5wdXNoKHRoaXMubWFrZUxpbmsoXCJEb25hdGVcIiwgbWV0YS5kb25hdGUpKTtcclxuICAgICAgICBpZiAobWV0YS5wYXRyZW9uKSBsaW5rcy5wdXNoKHRoaXMubWFrZUxpbmsoXCJQYXRyZW9uXCIsIG1ldGEucGF0cmVvbikpO1xyXG5cclxuICAgICAgICBjb25zdCBhdXRob3JQcm9wcyA9IHtjbGFzc05hbWU6IFwiYmRhLWF1dGhvclwifTtcclxuICAgICAgICBpZiAobWV0YS5hdXRob3JMaW5rIHx8IG1ldGEuYXV0aG9ySWQpIHtcclxuICAgICAgICAgICAgYXV0aG9yUHJvcHMuY2xhc3NOYW1lICs9IGAgJHtCRFYyLmFuY2hvckNsYXNzZXMuYW5jaG9yfSAke0JEVjIuYW5jaG9yQ2xhc3Nlcy5hbmNob3JVbmRlcmxpbmVPbkhvdmVyfWA7XHJcbiAgICAgICAgICAgIGF1dGhvclByb3BzLnRhcmdldCA9IFwiX2JsYW5rXCI7XHJcblxyXG4gICAgICAgICAgICBpZiAobWV0YS5hdXRob3JMaW5rKSBhdXRob3JQcm9wcy5ocmVmID0gbWV0YS5hdXRob3JMaW5rO1xyXG4gICAgICAgICAgICBpZiAobWV0YS5hdXRob3JJZCkgYXV0aG9yUHJvcHMub25DbGljayA9ICgpID0+IHtCRFYyLkxheWVyU3RhY2sucG9wTGF5ZXIoKTsgQkRWMi5vcGVuRE0obWV0YS5hdXRob3JJZCk7fTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJsaVwiLCB7XCJkYXRhLW5hbWVcIjogbmFtZSwgXCJkYXRhLXZlcnNpb25cIjogdmVyc2lvbiwgXCJjbGFzc05hbWVcIjogXCJzZXR0aW5ncy1jbG9zZWQgdWktc3dpdGNoLWl0ZW1cIn0sXHJcbiAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7Y2xhc3NOYW1lOiBcImJkYS1oZWFkZXJcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7Y2xhc3NOYW1lOiBcImJkYS1oZWFkZXItdGl0bGVcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge2NsYXNzTmFtZTogXCJiZGEtbmFtZVwifSwgbmFtZSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiIHZcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7Y2xhc3NOYW1lOiBcImJkYS12ZXJzaW9uXCJ9LCB2ZXJzaW9uKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCIgYnkgXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChtZXRhLmF1dGhvckxpbmsgfHwgbWV0YS5hdXRob3JJZCA/IFwiYVwiIDogXCJzcGFuXCIsIGF1dGhvclByb3BzLCBhdXRob3IpXHJcbiAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTogXCJiZGEtY29udHJvbHNcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFzZXR0aW5nc0Nvb2tpZVtcImZvcmstcHMtNVwiXSAmJiBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoVG9vbHRpcFdyYXAoUmVsb2FkSWNvbiwge2NvbG9yOiBcImJsYWNrXCIsIHNpZGU6IFwidG9wXCIsIHRleHQ6IFwiUmVsb2FkXCJ9KSwge2NsYXNzTmFtZTogXCJiZC1yZWxvYWQtY2FyZFwiLCBvbkNsaWNrOiB0aGlzLnJlbG9hZH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJsYWJlbFwiLCB7Y2xhc3NOYW1lOiBcInVpLXN3aXRjaC13cmFwcGVyIHVpLWZsZXgtY2hpbGRcIiwgc3R5bGU6IHtmbGV4OiBcIjAgMCBhdXRvXCJ9fSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHtjaGVja2VkOiB0aGlzLnN0YXRlLmNoZWNrZWQsIG9uQ2hhbmdlOiB0aGlzLm9uQ2hhbmdlLCBjbGFzc05hbWU6IFwidWktc3dpdGNoLWNoZWNrYm94XCIsIHR5cGU6IFwiY2hlY2tib3hcIn0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtjbGFzc05hbWU6IHRoaXMuc3RhdGUuY2hlY2tlZCA/IFwidWktc3dpdGNoIGNoZWNrZWRcIiA6IFwidWktc3dpdGNoXCJ9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTogXCJiZGEtZGVzY3JpcHRpb24td3JhcCBzY3JvbGxlci13cmFwIGZhZGVcIn0sXHJcbiAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTogXCJiZGEtZGVzY3JpcHRpb24gc2Nyb2xsZXJcIn0sIGRlc2NyaXB0aW9uKVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAoISFsaW5rcy5sZW5ndGgpICYmIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7Y2xhc3NOYW1lOiBcImJkYS1mb290ZXJcIn0sXHJcbiAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtjbGFzc05hbWU6IFwiYmRhLWxpbmtzXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLihsaW5rcy5tYXAoKGVsZW1lbnQsIGluZGV4KSA9PiBpbmRleCA8IGxpbmtzLmxlbmd0aCAtIDEgPyBbZWxlbWVudCwgXCIgfCBcIl0gOiBlbGVtZW50KS5mbGF0KCkpXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2hhbmdlKCkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2NoZWNrZWQ6ICF0aGlzLnN0YXRlLmNoZWNrZWR9KTtcclxuICAgICAgICB0aGVtZU1vZHVsZS50b2dnbGVUaGVtZSh0aGlzLnByb3BzLnRoZW1lLm5hbWUpO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/react/themeCard.js\n");
+/***/ }),
+/***/ "./src/react/tools.js":
+/*!****************************!*\
+ !*** ./src/react/tools.js ***!
+ \****************************/
+/*! exports provided: default */
+/***/ (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 V2C_Tools; });\n/* harmony import */ var _v2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../v2 */ \"./src/v2.js\");\n/* harmony import */ var _xSvg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./xSvg */ \"./src/react/xSvg.js\");\n\n\nclass V2C_Tools extends _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].reactComponent {\n constructor(props) {\n super(props);\n this.onClick = this.onClick.bind(this);\n }\n\n render() {\n return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"tools-container toolsContainer-1edPuj\"\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"tools tools-3-3s-N\"\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"container-1sFeqf\"\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"btn-close closeButton-1tv5uR\",\n onClick: this.onClick\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(_xSvg__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null)), _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"div\", {\n className: \"esc-text keybind-KpFkfr\"\n }, \"ESC\"))));\n }\n\n onClick() {\n if (this.props.onClick) {\n this.props.onClick();\n }\n\n $(\".closeButton-1tv5uR\").first().click();\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3JlYWN0L3Rvb2xzLmpzPzY3ODciXSwibmFtZXMiOlsiVjJDX1Rvb2xzIiwiQkRWMiIsInJlYWN0Q29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsIm9uQ2xpY2siLCJiaW5kIiwicmVuZGVyIiwicmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiWFN2ZyIsIiQiLCJmaXJzdCIsImNsaWNrIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFFZSxNQUFNQSxTQUFOLFNBQXdCQywyQ0FBSSxDQUFDQyxjQUE3QixDQUE0QztBQUV2REMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsT0FBTCxHQUFlLEtBQUtBLE9BQUwsQ0FBYUMsSUFBYixDQUFrQixJQUFsQixDQUFmO0FBQ0g7O0FBRURDLFFBQU0sR0FBRztBQUNMLFdBQU9OLDJDQUFJLENBQUNPLEtBQUwsQ0FBV0MsYUFBWCxDQUF5QixLQUF6QixFQUFnQztBQUFDQyxlQUFTLEVBQUU7QUFBWixLQUFoQyxFQUNIVCwyQ0FBSSxDQUFDTyxLQUFMLENBQVdDLGFBQVgsQ0FBeUIsS0FBekIsRUFBZ0M7QUFBQ0MsZUFBUyxFQUFFO0FBQVosS0FBaEMsRUFDSVQsMkNBQUksQ0FBQ08sS0FBTCxDQUFXQyxhQUFYLENBQXlCLEtBQXpCLEVBQWdDO0FBQUNDLGVBQVMsRUFBRTtBQUFaLEtBQWhDLEVBQ0lULDJDQUFJLENBQUNPLEtBQUwsQ0FBV0MsYUFBWCxDQUF5QixLQUF6QixFQUNJO0FBQUNDLGVBQVMsRUFBRSw4QkFBWjtBQUE0Q0wsYUFBTyxFQUFFLEtBQUtBO0FBQTFELEtBREosRUFFSUosMkNBQUksQ0FBQ08sS0FBTCxDQUFXQyxhQUFYLENBQXlCRSw2Q0FBekIsRUFBK0IsSUFBL0IsQ0FGSixDQURKLEVBS0lWLDJDQUFJLENBQUNPLEtBQUwsQ0FBV0MsYUFBWCxDQUNJLEtBREosRUFFSTtBQUFDQyxlQUFTLEVBQUU7QUFBWixLQUZKLEVBR0ksS0FISixDQUxKLENBREosQ0FERyxDQUFQO0FBZUg7O0FBRURMLFNBQU8sR0FBRztBQUNOLFFBQUksS0FBS0QsS0FBTCxDQUFXQyxPQUFmLEVBQXdCO0FBQ3BCLFdBQUtELEtBQUwsQ0FBV0MsT0FBWDtBQUNIOztBQUNETyxLQUFDLENBQUMscUJBQUQsQ0FBRCxDQUF5QkMsS0FBekIsR0FBaUNDLEtBQWpDO0FBQ0g7O0FBOUJzRCIsImZpbGUiOiIuL3NyYy9yZWFjdC90b29scy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCRFYyIGZyb20gXCIuLi92MlwiO1xyXG5cclxuaW1wb3J0IFhTdmcgZnJvbSBcIi4veFN2Z1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVjJDX1Rvb2xzIGV4dGVuZHMgQkRWMi5yZWFjdENvbXBvbmVudCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5vbkNsaWNrID0gdGhpcy5vbkNsaWNrLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTogXCJ0b29scy1jb250YWluZXIgdG9vbHNDb250YWluZXItMWVkUHVqXCJ9LFxyXG4gICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTogXCJ0b29scyB0b29scy0zLTNzLU5cIn0sXHJcbiAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTogXCJjb250YWluZXItMXNGZXFmXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2xhc3NOYW1lOiBcImJ0bi1jbG9zZSBjbG9zZUJ1dHRvbi0xdHY1dVJcIiwgb25DbGljazogdGhpcy5vbkNsaWNrfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFhTdmcsIG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtjbGFzc05hbWU6IFwiZXNjLXRleHQga2V5YmluZC1LcEZrZnJcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiRVNDXCJcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2xpY2soKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25DbGljaykge1xyXG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2xpY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgJChcIi5jbG9zZUJ1dHRvbi0xdHY1dVJcIikuZmlyc3QoKS5jbGljaygpO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/react/tools.js\n");
+/***/ }),
+/***/ "./src/react/tooltipWrap.js":
+/*!**********************************!*\
+ !*** ./src/react/tooltipWrap.js ***!
+ \**********************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _v2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../v2 */ \"./src/v2.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils */ \"./src/utils.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (Component, options) {\n const {\n style = \"black\",\n side = \"top\",\n text = \"\"\n } = options;\n const id = _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].KeyGenerator();\n return class extends _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].reactComponent {\n constructor(props) {\n super(props);\n this.onMouseEnter = this.onMouseEnter.bind(this);\n this.onMouseLeave = this.onMouseLeave.bind(this);\n }\n\n componentDidMount() {\n this.node = _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].reactDom.findDOMNode(this);\n this.node.addEventListener(\"mouseenter\", this.onMouseEnter);\n this.node.addEventListener(\"mouseleave\", this.onMouseLeave);\n }\n\n componentWillUnmount() {\n this.node.removeEventListener(\"mouseenter\", this.onMouseEnter);\n this.node.removeEventListener(\"mouseleave\", this.onMouseLeave);\n }\n\n onMouseEnter() {\n if (!_v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Tooltips) return;\n const {\n left,\n top,\n width,\n height\n } = this.node.getBoundingClientRect();\n _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Tooltips.show(id, {\n position: side,\n text: text,\n color: style,\n targetWidth: width,\n targetHeight: height,\n windowWidth: _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].screenWidth,\n windowHeight: _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].screenHeight,\n x: left,\n y: top\n });\n const observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n const nodes = Array.from(mutation.removedNodes);\n const directMatch = nodes.indexOf(this.node) > -1;\n const parentMatch = nodes.some(parent => parent.contains(this.node));\n\n if (directMatch || parentMatch) {\n this.onMouseLeave();\n observer.disconnect();\n }\n });\n });\n observer.observe(document.body, {\n subtree: true,\n childList: true\n });\n }\n\n onMouseLeave() {\n if (!_v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Tooltips) return;\n _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Tooltips.hide(id);\n }\n\n render() {\n return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(Component, this.props);\n }\n\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3JlYWN0L3Rvb2x0aXBXcmFwLmpzPzhjNzMiXSwibmFtZXMiOlsiQ29tcG9uZW50Iiwib3B0aW9ucyIsInN0eWxlIiwic2lkZSIsInRleHQiLCJpZCIsIkJEVjIiLCJLZXlHZW5lcmF0b3IiLCJyZWFjdENvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJvbk1vdXNlRW50ZXIiLCJiaW5kIiwib25Nb3VzZUxlYXZlIiwiY29tcG9uZW50RGlkTW91bnQiLCJub2RlIiwicmVhY3REb20iLCJmaW5kRE9NTm9kZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJUb29sdGlwcyIsImxlZnQiLCJ0b3AiLCJ3aWR0aCIsImhlaWdodCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInNob3ciLCJwb3NpdGlvbiIsImNvbG9yIiwidGFyZ2V0V2lkdGgiLCJ0YXJnZXRIZWlnaHQiLCJ3aW5kb3dXaWR0aCIsIlV0aWxzIiwic2NyZWVuV2lkdGgiLCJ3aW5kb3dIZWlnaHQiLCJzY3JlZW5IZWlnaHQiLCJ4IiwieSIsIm9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsIm11dGF0aW9ucyIsImZvckVhY2giLCJtdXRhdGlvbiIsIm5vZGVzIiwiQXJyYXkiLCJmcm9tIiwicmVtb3ZlZE5vZGVzIiwiZGlyZWN0TWF0Y2giLCJpbmRleE9mIiwicGFyZW50TWF0Y2giLCJzb21lIiwicGFyZW50IiwiY29udGFpbnMiLCJkaXNjb25uZWN0Iiwib2JzZXJ2ZSIsImRvY3VtZW50IiwiYm9keSIsInN1YnRyZWUiLCJjaGlsZExpc3QiLCJoaWRlIiwicmVuZGVyIiwicmVhY3QiLCJjcmVhdGVFbGVtZW50Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRWUseUVBQVNBLFNBQVQsRUFBb0JDLE9BQXBCLEVBQTZCO0FBQ3hDLFFBQU07QUFBQ0Ms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QW5CO0FBQ0g7O0FBRUR3RCxVQUFNLEdBQUc7QUFDTCxhQUFPdkQsMkNBQUksQ0FBQ3dELEtBQUwsQ0FBV0MsYUFBWCxDQUF5Qi9ELFNBQXpCLEVBQW9DLEtBQUtVLEtBQXpDLENBQVA7QUFDSDs7QUF2RG9DLEdBQXpDO0FBeURILEMiLCJmaWxlIjoiLi9zcmMvcmVhY3QvdG9vbHRpcFdyYXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQkRWMiBmcm9tIFwiLi4vdjJcIjtcclxuaW1wb3J0IFV0aWxzIGZyb20gXCIuLi91dGlsc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oQ29tcG9uZW50LCBvcHRpb25zKSB7XHJcbiAgICBjb25zdCB7c3R5bGUgPSBcImJsYWNrXCIsIHNpZGUgPSBcInRvcFwiLCB0ZXh0ID0gXCJcIn0gPSBvcHRpb25zO1xyXG4gICAgY29uc3QgaWQgPSBCRFYyLktleUdlbmVyYXRvcigpO1xyXG5cclxuICAgIHJldHVybiBjbGFzcyBleHRlbmRzIEJEVjIucmVhY3RDb21wb25lbnQge1xyXG4gICAgICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICAgICAgdGhpcy5vbk1vdXNlRW50ZXIgPSB0aGlzLm9uTW91c2VFbnRlci5iaW5kKHRoaXMpO1xyXG4gICAgICAgICAgICB0aGlzLm9uTW91c2VMZWF2ZSA9IHRoaXMub25Nb3VzZUxlYXZlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgICAgICAgICAgdGhpcy5ub2RlID0gQkRWMi5yZWFjdERvbS5maW5kRE9NTm9kZSh0aGlzKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsIHRoaXMub25Nb3VzZUVudGVyKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsIHRoaXMub25Nb3VzZUxlYXZlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIiwgdGhpcy5vbk1vdXNlRW50ZXIpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIiwgdGhpcy5vbk1vdXNlTGVhdmUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgb25Nb3VzZUVudGVyKCkge1xyXG4gICAgaWYgKCFCRFYyLlRvb2x0aXBzKSByZXR1cm47XHJcbiAgICAgICAgICAgIGNvbnN0IHtsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHR9ID0gdGhpcy5ub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgICAgICBCRFYyLlRvb2x0aXBzLnNob3coaWQsIHtcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBzaWRlLFxyXG4gICAgICAgICAgICAgICAgdGV4dDogdGV4dCxcclxuICAgICAgICAgICAgICAgIGNvbG9yOiBzdHlsZSxcclxuICAgICAgICAgICAgICAgIHRhcmdldFdpZHRoOiB3aWR0aCxcclxuICAgICAgICAgICAgICAgIHRhcmdldEhlaWdodDogaGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgd2luZG93V2lkdGg6IFV0aWxzLnNjcmVlbldpZHRoLFxyXG4gICAgICAgICAgICAgICAgd2luZG93SGVpZ2h0OiBVdGlscy5zY3JlZW5IZWlnaHQsXHJcbiAgICAgICAgICAgICAgICB4OiBsZWZ0LFxyXG4gICAgICAgICAgICAgICAgeTogdG9wXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBtdXRhdGlvbnMuZm9yRWFjaCgobXV0YXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlcyA9IEFycmF5LmZyb20obXV0YXRpb24ucmVtb3ZlZE5vZGVzKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXJlY3RNYXRjaCA9IG5vZGVzLmluZGV4T2YodGhpcy5ub2RlKSA+IC0xO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudE1hdGNoID0gbm9kZXMuc29tZShwYXJlbnQgPT4gcGFyZW50LmNvbnRhaW5zKHRoaXMubm9kZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkaXJlY3RNYXRjaCB8fCBwYXJlbnRNYXRjaCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTW91c2VMZWF2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7c3VidHJlZTogdHJ1ZSwgY2hpbGRMaXN0OiB0cnVlfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBvbk1vdXNlTGVhdmUoKSB7XHJcbiAgICBpZiAoIUJEVjIuVG9vbHRpcHMpIHJldHVybjtcclxuICAgICAgICAgICAgQkRWMi5Ub29sdGlwcy5oaWRlKGlkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJlbmRlcigpIHtcclxuICAgICAgICAgICAgcmV0dXJuIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChDb21wb25lbnQsIHRoaXMucHJvcHMpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/react/tooltipWrap.js\n");
+/***/ }),
+/***/ "./src/react/xSvg.js":
+/*!***************************!*\
+ !*** ./src/react/xSvg.js ***!
+ \***************************/
+/*! exports provided: default */
+/***/ (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 V2C_XSvg; });\n/* harmony import */ var _v2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../v2 */ \"./src/v2.js\");\n\nclass V2C_XSvg extends _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].reactComponent {\n constructor(props) {\n super(props);\n }\n\n render() {\n return _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 12 12\",\n style: {\n width: \"18px\",\n height: \"18px\"\n }\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"g\", {\n className: \"background\",\n fill: \"none\",\n fillRule: \"evenodd\"\n }, _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].react.createElement(\"path\", {\n d: \"M0 0h12v12H0\"\n }), _v2__WEBPACK_IMPORTED_MODULE_0__[\"default\"].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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3JlYWN0L3hTdmcuanM/MjRhNyJdLCJuYW1lcyI6WyJWMkNfWFN2ZyIsIkJEVjIiLCJyZWFjdENvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJyZW5kZXIiLCJyZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJ4bWxucyIsInZpZXdCb3giLCJzdHlsZSIsIndpZHRoIiwiaGVpZ2h0IiwiY2xhc3NOYW1lIiwiZmlsbCIsImZpbGxSdWxlIiwiZCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxRQUFOLFNBQXVCQywyQ0FBSSxDQUFDQyxjQUE1QixDQUEyQztBQUN0REMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0g7O0FBRURDLFFBQU0sR0FBRztBQUNMLFdBQU9KLDJDQUFJLENBQUNLLEtBQUwsQ0FBV0MsYUFBWCxDQUNILEtBREcsRUFFSDtBQUFDQyxXQUFLLEVBQUUsNEJBQVI7QUFBc0NDLGFBQU8sRUFBRSxXQUEvQztBQUE0REMsV0FBSyxFQUFFO0FBQUNDLGFBQUssRUFBRSxNQUFSO0FBQWdCQyxjQUFNLEVBQUU7QUFBeEI7QUFBbkUsS0FGRyxFQUdIWCwyQ0FBSSxDQUFDSyxLQUFMLENBQVdDLGFBQVgsQ0FDSSxHQURKLEVBRUk7QUFBQ00sZUFBUyxFQUFFLFlBQVo7QUFBMEJDLFVBQUksRUFBRSxNQUFoQztBQUF3Q0MsY0FBUSxFQUFFO0FBQWxELEtBRkosRUFHSWQsMkNBQUksQ0FBQ0ssS0FBTCxDQUFXQyxhQUFYLENBQXlCLE1BQXpCLEVBQWlDO0FBQUNTLE9BQUMsRUFBRTtBQUFKLEtBQWpDLENBSEosRUFJSWYsMkNBQUksQ0FBQ0ssS0FBTCxDQUFXQyxhQUFYLENBQXlCLE1BQXpCLEVBQWlDO0FBQUNNLGVBQVMsRUFBRSxNQUFaO0FBQW9CQyxVQUFJLEVBQUUsU0FBMUI7QUFBcUNFLE9BQUMsRUFBRTtBQUF4QyxLQUFqQyxDQUpKLENBSEcsQ0FBUDtBQVVIOztBQWhCcUQiLCJmaWxlIjoiLi9zcmMvcmVhY3QveFN2Zy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCRFYyIGZyb20gXCIuLi92MlwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVjJDX1hTdmcgZXh0ZW5kcyBCRFYyLnJlYWN0Q29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICBcInN2Z1wiLFxyXG4gICAgICAgICAgICB7eG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgdmlld0JveDogXCIwIDAgMTIgMTJcIiwgc3R5bGU6IHt3aWR0aDogXCIxOHB4XCIsIGhlaWdodDogXCIxOHB4XCJ9fSxcclxuICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgXCJnXCIsXHJcbiAgICAgICAgICAgICAgICB7Y2xhc3NOYW1lOiBcImJhY2tncm91bmRcIiwgZmlsbDogXCJub25lXCIsIGZpbGxSdWxlOiBcImV2ZW5vZGRcIn0sXHJcbiAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtkOiBcIk0wIDBoMTJ2MTJIMFwifSksXHJcbiAgICAgICAgICAgICAgICBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtjbGFzc05hbWU6IFwiZmlsbFwiLCBmaWxsOiBcIiNkY2RkZGVcIiwgZDogXCJNOS41IDMuMjA1TDguNzk1IDIuNSA2IDUuMjk1IDMuMjA1IDIuNWwtLjcwNS43MDVMNS4yOTUgNiAyLjUgOC43OTVsLjcwNS43MDVMNiA2LjcwNSA4Ljc5NSA5LjVsLjcwNS0uNzA1TDYuNzA1IDZcIn0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/react/xSvg.js\n");
+/***/ }),
+/***/ "./src/settingsPanel.js":
+/*!******************************!*\
+ !*** ./src/settingsPanel.js ***!
+ \******************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _0globals__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./0globals */ \"./src/0globals.js\");\n/* harmony import */ var _dataStore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dataStore */ \"./src/dataStore.js\");\n/* harmony import */ var _settingsPanelSidebar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./settingsPanelSidebar */ \"./src/settingsPanelSidebar.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ \"./src/utils.js\");\n/* harmony import */ var _v2__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./v2 */ \"./src/v2.js\");\n/* harmony import */ var _contentManager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./contentManager */ \"./src/contentManager.js\");\n/* harmony import */ var _bdEvents__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./bdEvents */ \"./src/bdEvents.js\");\n/* harmony import */ var _pluginModule__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./pluginModule */ \"./src/pluginModule.js\");\n/* harmony import */ var _themeModule__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./themeModule */ \"./src/themeModule.js\");\n/* harmony import */ var _coloredText__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./coloredText */ \"./src/coloredText.js\");\n/* harmony import */ var _publicServers__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./publicServers */ \"./src/publicServers.js\");\n/* harmony import */ var _voiceMode__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./voiceMode */ \"./src/voiceMode.js\");\n/* harmony import */ var _emoteModule__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./emoteModule */ \"./src/emoteModule.js\");\n/* harmony import */ var _classNormalizer__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./classNormalizer */ \"./src/classNormalizer.js\");\n/* harmony import */ var _devMode__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./devMode */ \"./src/devMode.js\");\n/* harmony import */ var _quickEmoteMenu__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./quickEmoteMenu */ \"./src/quickEmoteMenu.js\");\n/* harmony import */ var _react_tools__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./react/tools */ \"./src/react/tools.js\");\n/* harmony import */ var _react_reloadIcon__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./react/reloadIcon */ \"./src/react/reloadIcon.js\");\n/* harmony import */ var _react_tooltipWrap__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./react/tooltipWrap */ \"./src/react/tooltipWrap.js\");\n/* harmony import */ var _react_scroller__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./react/scroller */ \"./src/react/scroller.js\");\n/* harmony import */ var _react_list__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./react/list */ \"./src/react/list.js\");\n/* harmony import */ var _react_pluginCard__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./react/pluginCard */ \"./src/react/pluginCard.js\");\n/* harmony import */ var _react_themeCard__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./react/themeCard */ \"./src/react/themeCard.js\");\n/* harmony import */ var _react_sectionedSettingsPanel__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./react/sectionedSettingsPanel */ \"./src/react/sectionedSettingsPanel.js\");\n/* harmony import */ var _react_settingsPanel__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./react/settingsPanel */ \"./src/react/settingsPanel.js\");\n/* harmony import */ var _react_cssEditor__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./react/cssEditor */ \"./src/react/cssEditor.js\");\n/* harmony import */ var _react_contentColumn__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./react/contentColumn */ \"./src/react/contentColumn.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class V2_SettingsPanel {\n constructor() {\n const self = this;\n self.sideBarOnClick = self.sideBarOnClick.bind(self);\n self.onChange = self.onChange.bind(self);\n self.updateSettings = this.updateSettings.bind(self);\n self.sidebar = new _settingsPanelSidebar__WEBPACK_IMPORTED_MODULE_2__[\"default\"](self.sideBarOnClick);\n }\n\n get root() {\n const _root = $(\"#bd-settingspane-container\");\n\n if (!_root.length) {\n if (!this.injectRoot()) return null;\n return this.root;\n }\n\n return _root[0];\n }\n\n injectRoot() {\n if (!$(\".layer-3QrUeG .standardSidebarView-3F1I7i, .layer-3QrUeG .ui-standard-sidebar-view\").length) return false;\n const root = $(\"\", {\n \"class\": \"contentRegion-3nDuYy content-region\",\n \"id\": \"bd-settingspane-container\"\n });\n $(\".layer-3QrUeG .standardSidebarView-3F1I7i, .layer-3QrUeG .ui-standard-sidebar-view\").append(root);\n _utils__WEBPACK_IMPORTED_MODULE_3__[\"default\"].onRemoved(root[0], () => {\n _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].reactDom.unmountComponentAtNode(root[0]);\n });\n return true;\n }\n\n get coreSettings() {\n const settings = this.getSettings(\"core\");\n const categories = [...new Set(settings.map(s => s.category))];\n const sections = categories.map(c => {\n return {\n title: c,\n settings: settings.filter(s => s.category == c)\n };\n });\n return sections;\n }\n\n get emoteSettings() {\n return this.getSettings(\"emote\");\n }\n\n getSettings(category) {\n return Object.keys(_0globals__WEBPACK_IMPORTED_MODULE_0__[\"settings\"]).reduce((arr, key) => {\n const setting = _0globals__WEBPACK_IMPORTED_MODULE_0__[\"settings\"][key];\n\n if (setting.cat === category && setting.implemented && !setting.hidden) {\n setting.text = key;\n arr.push(setting);\n }\n\n return arr;\n }, []);\n }\n\n sideBarOnClick(id) {\n const self = this;\n $(\".contentRegion-3nDuYy, .content-region\").first().hide();\n $(self.root).show();\n\n switch (id) {\n case \"core\":\n self.renderCoreSettings();\n break;\n\n case \"emotes\":\n self.renderEmoteSettings();\n break;\n\n case \"customcss\":\n self.renderCustomCssEditor();\n break;\n\n case \"plugins\":\n self.renderPluginPane();\n break;\n\n case \"themes\":\n self.renderThemePane();\n break;\n }\n }\n\n onClick() {}\n\n onChange(id, checked) {\n this.updateSettings(id, checked);\n }\n\n updateSettings(id, enabled) {\n _0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"][id] = enabled; // if (id == \"bda-gs-b\") {\n // if (enabled) $(\"body\").addClass(\"bd-blue\");\n // else $(\"body\").removeClass(\"bd-blue\");\n // }\n\n if (id == \"bda-gs-2\") {\n if (enabled) $(\"body\").addClass(\"bd-minimal\");else $(\"body\").removeClass(\"bd-minimal\");\n }\n\n if (id == \"bda-gs-3\") {\n if (enabled) $(\"body\").addClass(\"bd-minimal-chan\");else $(\"body\").removeClass(\"bd-minimal-chan\");\n }\n\n if (id == \"bda-gs-1\") {\n if (enabled) _publicServers__WEBPACK_IMPORTED_MODULE_10__[\"default\"].addButton();else _publicServers__WEBPACK_IMPORTED_MODULE_10__[\"default\"].removeButton();\n }\n\n if (id == \"bda-gs-4\") {\n if (enabled) _voiceMode__WEBPACK_IMPORTED_MODULE_11__[\"default\"].enable();else _voiceMode__WEBPACK_IMPORTED_MODULE_11__[\"default\"].disable();\n }\n\n if (id == \"bda-gs-5\") {\n if (enabled) $(\"#app-mount\").addClass(\"bda-dark\");else $(\"#app-mount\").removeClass(\"bda-dark\");\n }\n\n if (enabled && id == \"bda-gs-6\") _coloredText__WEBPACK_IMPORTED_MODULE_9__[\"default\"].inject24Hour();\n\n if (id == \"bda-gs-7\") {\n if (enabled) _coloredText__WEBPACK_IMPORTED_MODULE_9__[\"default\"].injectColoredText();else _coloredText__WEBPACK_IMPORTED_MODULE_9__[\"default\"].removeColoredText();\n }\n\n if (id == \"bda-es-4\") {\n if (enabled) _emoteModule__WEBPACK_IMPORTED_MODULE_12__[\"default\"].autoCapitalize();else _emoteModule__WEBPACK_IMPORTED_MODULE_12__[\"default\"].disableAutoCapitalize();\n }\n\n if (id == \"fork-ps-4\") {\n if (enabled) _classNormalizer__WEBPACK_IMPORTED_MODULE_13__[\"default\"].start();else _classNormalizer__WEBPACK_IMPORTED_MODULE_13__[\"default\"].stop();\n }\n\n if (id == \"fork-ps-5\") {\n if (enabled) {\n _contentManager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].watchContent(\"plugin\");\n _contentManager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].watchContent(\"theme\");\n } else {\n _contentManager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].unwatchContent(\"plugin\");\n _contentManager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].unwatchContent(\"theme\");\n }\n }\n\n if (id == \"fork-wp-1\") {} // BdApi.setWindowPreference(\"transparent\", enabled);\n // if (enabled) BdApi.setWindowPreference(\"backgroundColor\", null);\n // else BdApi.setWindowPreference(\"backgroundColor\", \"#2f3136\");\n\n /*if (_c[\"fork-wp-2\"]) {\r\n const current = BdApi.getWindowPreference(\"frame\");\r\n if (current != _c[\"fork-wp-2\"]) BdApi.setWindowPreference(\"frame\", _c[\"fork-wp-2\"]);\r\n }*/\n\n\n if (id == \"bda-gs-8\") {\n if (enabled) _devMode__WEBPACK_IMPORTED_MODULE_14__[\"default\"].enable(_0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"][\"fork-dm-1\"]);else _devMode__WEBPACK_IMPORTED_MODULE_14__[\"default\"].disable();\n }\n\n if (id == \"fork-dm-1\") {\n if (_0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"][\"bda-gs-8\"]) _devMode__WEBPACK_IMPORTED_MODULE_14__[\"default\"].enable(enabled);\n }\n\n this.saveSettings();\n }\n\n initializeSettings() {\n // if (settingsCookie[\"bda-gs-b\"]) $(\"body\").addClass(\"bd-blue\");\n if (_0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"][\"bda-gs-2\"]) $(\"body\").addClass(\"bd-minimal\");\n if (_0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"][\"bda-gs-3\"]) $(\"body\").addClass(\"bd-minimal-chan\");\n if (_0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"][\"bda-gs-1\"]) _publicServers__WEBPACK_IMPORTED_MODULE_10__[\"default\"].addButton();\n if (_0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"][\"bda-gs-4\"]) _voiceMode__WEBPACK_IMPORTED_MODULE_11__[\"default\"].enable();\n if (_0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"][\"bda-gs-5\"]) $(\"#app-mount\").addClass(\"bda-dark\");\n if (_0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"][\"bda-gs-6\"]) _coloredText__WEBPACK_IMPORTED_MODULE_9__[\"default\"].inject24Hour();\n if (_0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"][\"bda-gs-7\"]) _coloredText__WEBPACK_IMPORTED_MODULE_9__[\"default\"].injectColoredText();\n if (_0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"][\"bda-es-4\"]) _emoteModule__WEBPACK_IMPORTED_MODULE_12__[\"default\"].autoCapitalize();\n if (_0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"][\"fork-ps-4\"]) _classNormalizer__WEBPACK_IMPORTED_MODULE_13__[\"default\"].start();\n\n if (_0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"][\"fork-ps-5\"]) {\n _contentManager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].watchContent(\"plugin\");\n _contentManager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].watchContent(\"theme\");\n }\n\n if (_0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"][\"bda-gs-8\"]) _devMode__WEBPACK_IMPORTED_MODULE_14__[\"default\"].enable(_0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"][\"fork-dm-1\"]);\n this.saveSettings();\n }\n\n saveSettings() {\n _dataStore__WEBPACK_IMPORTED_MODULE_1__[\"default\"].setSettingGroup(\"settings\", _0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"]);\n }\n\n loadSettings() {\n Object.assign(_0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"], _dataStore__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getSettingGroup(\"settings\"));\n }\n\n renderSidebar() {\n const self = this;\n $(\"[class*='side-'] > [class*='item-']\").off(\"click.v2settingspanel\").on(\"click.v2settingspanel\", () => {\n _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].reactDom.unmountComponentAtNode(self.root);\n $(self.root).hide();\n $(\".contentRegion-3nDuYy, .content-region\").first().show();\n });\n self.sidebar.render();\n }\n\n get coreComponent() {\n return _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].react.createElement(_react_scroller__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n contentColumn: true,\n fade: true,\n dark: true,\n children: [_v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].react.createElement(_react_sectionedSettingsPanel__WEBPACK_IMPORTED_MODULE_23__[\"default\"], {\n key: \"cspanel\",\n onChange: this.onChange,\n sections: this.coreSettings\n }), _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].react.createElement(_react_tools__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n key: \"tools\"\n })]\n });\n }\n\n get emoteComponent() {\n return _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].react.createElement(_react_scroller__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n contentColumn: true,\n fade: true,\n dark: true,\n children: [_v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].react.createElement(_react_settingsPanel__WEBPACK_IMPORTED_MODULE_24__[\"default\"], {\n key: \"espanel\",\n title: \"Emote Settings\",\n onChange: this.onChange,\n settings: this.emoteSettings,\n button: {\n title: \"Clear Emote Cache\",\n onClick: () => {\n _emoteModule__WEBPACK_IMPORTED_MODULE_12__[\"default\"].clearEmoteData();\n _emoteModule__WEBPACK_IMPORTED_MODULE_12__[\"default\"].init();\n _quickEmoteMenu__WEBPACK_IMPORTED_MODULE_15__[\"default\"].init();\n }\n }\n }), _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].react.createElement(_react_tools__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n key: \"tools\"\n })]\n });\n }\n\n get customCssComponent() {\n return _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].react.createElement(_react_scroller__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n contentColumn: true,\n fade: true,\n dark: true,\n children: [_v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].react.createElement(_react_cssEditor__WEBPACK_IMPORTED_MODULE_25__[\"default\"], {\n key: \"csseditor\"\n }), _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].react.createElement(_react_tools__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n key: \"tools\"\n })]\n });\n }\n\n contentComponent(type) {\n const componentElement = type == \"plugins\" ? this.pluginsComponent : this.themesComponent;\n const prefix = type.replace(\"s\", \"\");\n const settingsList = this;\n\n class ContentList extends _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].react.Component {\n constructor(props) {\n super(props);\n this.onChange = this.onChange.bind(this);\n }\n\n componentDidMount() {\n _bdEvents__WEBPACK_IMPORTED_MODULE_6__[\"default\"].on(`${prefix}-reloaded`, this.onChange);\n _bdEvents__WEBPACK_IMPORTED_MODULE_6__[\"default\"].on(`${prefix}-loaded`, this.onChange);\n _bdEvents__WEBPACK_IMPORTED_MODULE_6__[\"default\"].on(`${prefix}-unloaded`, this.onChange);\n }\n\n componentWillUnmount() {\n _bdEvents__WEBPACK_IMPORTED_MODULE_6__[\"default\"].off(`${prefix}-reloaded`, this.onChange);\n _bdEvents__WEBPACK_IMPORTED_MODULE_6__[\"default\"].off(`${prefix}-loaded`, this.onChange);\n _bdEvents__WEBPACK_IMPORTED_MODULE_6__[\"default\"].off(`${prefix}-unloaded`, this.onChange);\n }\n\n onChange() {\n settingsList.sideBarOnClick(type);\n }\n\n render() {\n return componentElement;\n }\n\n }\n\n return _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].react.createElement(ContentList);\n }\n\n get pluginsComponent() {\n const plugins = Object.keys(_0globals__WEBPACK_IMPORTED_MODULE_0__[\"bdplugins\"]).sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase())).reduce((arr, key) => {\n arr.push(_v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].react.createElement(_react_pluginCard__WEBPACK_IMPORTED_MODULE_21__[\"default\"], {\n key: key,\n plugin: _0globals__WEBPACK_IMPORTED_MODULE_0__[\"bdplugins\"][key].plugin\n }));\n return arr;\n }, []);\n const list = _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].react.createElement(_react_list__WEBPACK_IMPORTED_MODULE_20__[\"default\"], {\n key: \"plugin-list\",\n className: \"bda-slist\",\n children: plugins\n });\n const refreshIcon = !_0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"][\"fork-ps-5\"] && _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].react.createElement(Object(_react_tooltipWrap__WEBPACK_IMPORTED_MODULE_18__[\"default\"])(_react_reloadIcon__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n color: \"black\",\n side: \"top\",\n text: \"Reload Plugin List\"\n }), {\n className: \"bd-reload-header\",\n size: \"18px\",\n onClick: async () => {\n _pluginModule__WEBPACK_IMPORTED_MODULE_7__[\"default\"].updatePluginList();\n this.sideBarOnClick(\"plugins\");\n }\n });\n const pfBtn = _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].react.createElement(\"button\", {\n key: \"folder-button\",\n className: \"bd-pfbtn\",\n onClick: () => {\n __webpack_require__(/*! electron */ \"electron\").shell.openItem(_contentManager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].pluginsFolder);\n }\n }, \"Open Plugin Folder\");\n const contentColumn = _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].react.createElement(_react_contentColumn__WEBPACK_IMPORTED_MODULE_26__[\"default\"], {\n key: \"pcolumn\",\n title: \"Plugins\",\n children: [refreshIcon, pfBtn, list]\n });\n return _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].react.createElement(_react_scroller__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n contentColumn: true,\n fade: true,\n dark: true,\n children: [contentColumn, _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].react.createElement(_react_tools__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n key: \"tools\"\n })]\n });\n }\n\n get themesComponent() {\n const themes = Object.keys(_0globals__WEBPACK_IMPORTED_MODULE_0__[\"bdthemes\"]).sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase())).reduce((arr, key) => {\n arr.push(_v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].react.createElement(_react_themeCard__WEBPACK_IMPORTED_MODULE_22__[\"default\"], {\n key: key,\n theme: _0globals__WEBPACK_IMPORTED_MODULE_0__[\"bdthemes\"][key]\n }));\n return arr;\n }, []);\n const list = _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].react.createElement(_react_list__WEBPACK_IMPORTED_MODULE_20__[\"default\"], {\n key: \"theme-list\",\n className: \"bda-slist\",\n children: themes\n });\n const refreshIcon = !_0globals__WEBPACK_IMPORTED_MODULE_0__[\"settingsCookie\"][\"fork-ps-5\"] && _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].react.createElement(Object(_react_tooltipWrap__WEBPACK_IMPORTED_MODULE_18__[\"default\"])(_react_reloadIcon__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n color: \"black\",\n side: \"top\",\n text: \"Reload Theme List\"\n }), {\n className: \"bd-reload-header\",\n size: \"18px\",\n onClick: async () => {\n _themeModule__WEBPACK_IMPORTED_MODULE_8__[\"default\"].updateThemeList();\n this.sideBarOnClick(\"themes\");\n }\n });\n const tfBtn = _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].react.createElement(\"button\", {\n key: \"folder-button\",\n className: \"bd-pfbtn\",\n onClick: () => {\n __webpack_require__(/*! electron */ \"electron\").shell.openItem(_contentManager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].themesFolder);\n }\n }, \"Open Theme Folder\");\n const contentColumn = _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].react.createElement(_react_contentColumn__WEBPACK_IMPORTED_MODULE_26__[\"default\"], {\n key: \"tcolumn\",\n title: \"Themes\",\n children: [refreshIcon, tfBtn, list]\n });\n return _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].react.createElement(_react_scroller__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n contentColumn: true,\n fade: true,\n dark: true,\n children: [contentColumn, _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].react.createElement(_react_tools__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n key: \"tools\"\n })]\n });\n }\n\n renderCoreSettings() {\n const root = this.root;\n\n if (!root) {\n console.log(\"FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i\");\n return;\n }\n\n _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].reactDom.render(this.coreComponent, root);\n }\n\n renderEmoteSettings() {\n const root = this.root;\n\n if (!root) {\n console.log(\"FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i\");\n return;\n }\n\n _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].reactDom.render(this.emoteComponent, root);\n }\n\n renderCustomCssEditor() {\n const root = this.root;\n\n if (!root) {\n console.log(\"FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i\");\n return;\n }\n\n _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].reactDom.render(this.customCssComponent, root);\n }\n\n renderPluginPane() {\n const root = this.root;\n\n if (!root) {\n console.log(\"FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i\");\n return;\n }\n\n _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].reactDom.render(this.contentComponent(\"plugins\"), root);\n }\n\n renderThemePane() {\n const root = this.root;\n\n if (!root) {\n console.log(\"FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i\");\n return;\n }\n\n _v2__WEBPACK_IMPORTED_MODULE_4__[\"default\"].reactDom.render(this.contentComponent(\"themes\"), root);\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3NldHRpbmdzUGFuZWwuanM/MWRkMyJdLCJuYW1lcyI6WyJWMl9TZXR0aW5nc1BhbmVsIiwiY29uc3RydWN0b3IiLCJzZWxmIiwic2lkZUJhck9uQ2xpY2siLCJiaW5kIiwib25DaGFuZ2UiLCJ1cGRhdGVTZXR0aW5ncyIsInNpZGViYXIiLCJWMl9TZXR0aW5nc1BhbmVsX1NpZGViYXIiLCJyb290IiwiX3Jvb3QiLCIkIiwibGVuZ3RoIiwiaW5qZWN0Um9vdCIsImFwcGVuZCIsIlV0aWxzIiwib25SZW1vdmVkIiwiQkRWMiIsInJlYWN0RG9tIiwidW5tb3VudENvbXBvbmVudEF0Tm9kZSIsImNvcmVTZXR0aW5ncyIsInNldHRpbmdzIiwiZ2V0U2V0dGluZ3MiLCJjYXRlZ29yaWVzIiwiU2V0IiwibWFwIiwicyIsImNhdGVnb3J5Iiwic2VjdGlvbnMiLCJjIiwidGl0bGUiLCJmaWx0ZXIiLCJlbW90ZVNldHRpbmdzIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsImFyciIsImtleSIsInNldHRpbmciLCJjYXQiLCJpbXBsZW1lbnRlZCIsImhpZGRlbiIsInRleHQiLCJwdXNoIiwiaWQiLCJmaXJzdCIsImhpZGUiLCJzaG93IiwicmVuZGVyQ29yZVNldHRpbmdzIiwicmVuZGVyRW1vdGVTZXR0aW5ncyIsInJlbmRlckN1c3RvbUNzc0VkaXRvciIsInJlbmRlclBsdWdpblBhbmUiLCJyZW5kZXJUaGVtZVBhbmUiLCJvbkNsaWNrIiwiY2hlY2tlZCIsImVuYWJsZWQiLCJzZXR0aW5nc0Nvb2tpZSIsImFkZENsYXNzIiwicmVtb3ZlQ2xhc3MiLCJwdWJsaWNTZXJ2ZXJzTW9kdWxlIiwiYWRkQnV0dG9uIiwicmVtb3ZlQnV0dG9uIiwidm9pY2VNb2RlIiwiZW5hYmxlIiwiZGlzYWJsZSIsImNvbG9yZWRUZXh0IiwiaW5qZWN0MjRIb3VyIiwiaW5qZWN0Q29sb3JlZFRleHQiLCJyZW1vdmVDb2xvcmVkVGV4dCIsImVtb3RlTW9kdWxlIiwiYXV0b0NhcGl0YWxpemUiLCJkaXNhYmxlQXV0b0NhcGl0YWxpemUiLCJDbGFzc05vcm1hbGl6ZXIiLCJzdGFydCIsInN0b3AiLCJDb250ZW50TWFuYWdlciIsIndhdGNoQ29udGVudCIsInVud2F0Y2hDb250ZW50IiwiZE1vZGUiLCJzYXZlU2V0dGluZ3MiLCJpbml0aWFsaXplU2V0dGluZ3MiLCJEYXRhU3RvcmUiLCJzZXRTZXR0aW5nR3JvdXAiLCJsb2FkU2V0dGluZ3MiLCJhc3NpZ24iLCJnZXRTZXR0aW5nR3JvdXAiLCJyZW5kZXJTaWRlYmFyIiwib2ZmIiwib24iLCJyZW5kZXIiLCJjb3JlQ29tcG9uZW50IiwicmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiU2Nyb2xsZXIiLCJjb250ZW50Q29sdW1uIiwiZmFkZSIsImRhcmsiLCJjaGlsZHJlbiIsIlNlY3Rpb25lZFNldHRpbmdzUGFuZWwiLCJUb29scyIsImVtb3RlQ29tcG9uZW50IiwiU2V0dGluZ3NQYW5lbCIsImJ1dHRvbiIsImNsZWFyRW1vdGVEYXRhIiwiaW5pdCIsInF1aWNrRW1vdGVNZW51IiwiY3VzdG9tQ3NzQ29tcG9uZW50IiwiQ3NzRWRpdG9yIiwiY29udGVudENvbXBvbmVudCIsInR5cGUiLCJjb21wb25lbnRFbGVtZW50IiwicGx1Z2luc0NvbXBvbmVudCIsInRoZW1lc0NvbXBvbmVudCIsInByZWZpeCIsInJlcGxhY2UiLCJzZXR0aW5nc0xpc3QiLCJDb250ZW50TGlzdCIsIkNvbXBvbmVudCIsInByb3BzIiwiY29tcG9uZW50RGlkTW91bnQiLCJCREV2ZW50cyIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicGx1Z2lucyIsImJkcGx1Z2lucyIsInNvcnQiLCJhIiwiYiIsInRvTG93ZXJDYXNlIiwibG9jYWxlQ29tcGFyZSIsIlBsdWdpbkNhcmQiLCJwbHVnaW4iLCJsaXN0IiwiTGlzdCIsImNsYXNzTmFtZSIsInJlZnJlc2hJY29uIiwiVG9vbHRpcFdyYXAiLCJSZWxvYWRJY29uIiwiY29sb3IiLCJzaWRlIiwic2l6ZSIsInBsdWdpbk1vZHVsZSIsInVwZGF0ZVBsdWdpbkxpc3QiLCJwZkJ0biIsInJlcXVpcmUiLCJzaGVsbCIsIm9wZW5JdGVtIiwicGx1Z2luc0ZvbGRlciIsIkNvbnRlbnRDb2x1bW4iLCJ0aGVtZXMiLCJiZHRoZW1lcyIsIlRoZW1lQ2FyZCIsInRoZW1lIiwidGhlbWVNb2R1bGUiLCJ1cGRhdGVUaGVtZUxpc3QiLCJ0ZkJ0biIsInRoZW1lc0ZvbGRlciIsImNvbnNvbGUiLCJsb2ciXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRWUsbUVBQUksTUFBTUEsZ0JBQU4sQ0FBdUI7QUFFdENDLGFBQVcsR0FBRztBQUNWLFVBQU1DLElBQUksR0FBRyxJQUFiO0FBQ0FBLFFBQUksQ0FBQ0MsY0FBTCxHQUFzQkQsSUFBSSxDQUFDQyxjQUFMLENBQW9CQyxJQUFwQixDQUF5QkYsSUFBekIsQ0FBdEI7QUFDQUEsUUFBSSxDQUFDRyxRQUFMLEdBQWdCSCxJQUFJLENBQUNHLFFBQUwsQ0FBY0QsSUFBZCxDQUFtQkYsSUFBbkIsQ0FBaEI7QUFDQUEsUUFBSSxDQUFDSSxjQUFMLEdBQXNCLEtBQUtBLGNBQUwsQ0FBb0JGLElBQXBCLENBQXlCRixJQUF6QixDQUF0QjtBQUNBQSxRQUFJLENBQUNLLE9BQUwsR0FBZSxJQUFJQyw2REFBSixDQUE2Qk4sSUFBSSxDQUFDQyxjQUFsQyxDQUFmO0FBQ0g7O0FBRUQsTUFBSU0sSUFBSixHQUFXO0FBQ1As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LElBQXZEO0FBQ0g7O0FBRUQyQyxpQkFBZSxHQUFHO0FBQ2QsVUFBTTNDLElBQUksR0FBRyxLQUFLQSxJQUFsQjs7QUFDQSxRQUFJLENBQUNBLElBQUwsRUFBVztBQUNQbUosYUFBTyxDQUFDQyxHQUFSLENBQVksa0VBQVo7QUFDQTtBQUNIOztBQUNENUksK0NBQUksQ0FBQ0MsUUFBTCxDQUFjdUUsTUFBZCxDQUFxQixLQUFLbUIsZ0JBQUwsQ0FBc0IsUUFBdEIsQ0FBckIsRUFBc0RuRyxJQUF0RDtBQUNIOztBQTdVcUMsQ0FBM0IsRUFBZiIsImZpbGUiOiIuL3NyYy9zZXR0aW5nc1BhbmVsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzZXR0aW5ncywgc2V0dGluZ3NDb29raWUsIGJkcGx1Z2lucywgYmR0aGVtZXN9IGZyb20gXCIuLzBnbG9iYWxzXCI7XHJcbmltcG9ydCBEYXRhU3RvcmUgZnJvbSBcIi4vZGF0YVN0b3JlXCI7XHJcbmltcG9ydCBWMl9TZXR0aW5nc1BhbmVsX1NpZGViYXIgZnJvbSBcIi4vc2V0dGluZ3NQYW5lbFNpZGViYXJcIjtcclxuaW1wb3J0IFV0aWxzIGZyb20gXCIuL3V0aWxzXCI7XHJcbmltcG9ydCBCRFYyIGZyb20gXCIuL3YyXCI7XHJcbmltcG9ydCBDb250ZW50TWFuYWdlciBmcm9tIFwiLi9jb250ZW50TWFuYWdlclwiO1xyXG5pbXBvcnQgQkRFdmVudHMgZnJvbSBcIi4vYmRFdmVudHNcIjtcclxuaW1wb3J0IHBsdWdpbk1vZHVsZSBmcm9tIFwiLi9wbHVnaW5Nb2R1bGVcIjtcclxuaW1wb3J0IHRoZW1lTW9kdWxlIGZyb20gXCIuL3RoZW1lTW9kdWxlXCI7XHJcbmltcG9ydCBjb2xvcmVkVGV4dCBmcm9tIFwiLi9jb2xvcmVkVGV4dFwiO1xyXG5cclxuaW1wb3J0IHB1YmxpY1NlcnZlcnNNb2R1bGUgZnJvbSBcIi4vcHVibGljU2VydmVyc1wiO1xyXG5pbXBvcnQgdm9pY2VNb2RlIGZyb20gXCIuL3ZvaWNlTW9kZVwiO1xyXG5pbXBvcnQgZW1vdGVNb2R1bGUgZnJvbSBcIi4vZW1vdGVNb2R1bGVcIjtcclxuaW1wb3J0IENsYXNzTm9ybWFsaXplciBmcm9tIFwiLi9jbGFzc05vcm1hbGl6ZXJcIjtcclxuaW1wb3J0IGRNb2RlIGZyb20gXCIuL2Rldk1vZGVcIjtcclxuaW1wb3J0IHF1aWNrRW1vdGVNZW51IGZyb20gXCIuL3F1aWNrRW1vdGVNZW51XCI7XHJcblxyXG5pbXBvcnQgVG9vbHMgZnJvbSBcIi4vcmVhY3QvdG9vbHNcIjtcclxuaW1wb3J0IFJlbG9hZEljb24gZnJvbSBcIi4vcmVhY3QvcmVsb2FkSWNvblwiO1xyXG5pbXBvcnQgVG9vbHRpcFdyYXAgZnJvbSBcIi4vcmVhY3QvdG9vbHRpcFdyYXBcIjtcclxuaW1wb3J0IFNjcm9sbGVyIGZyb20gXCIuL3JlYWN0L3Njcm9sbGVyXCI7XHJcbmltcG9ydCBMaXN0IGZyb20gXCIuL3JlYWN0L2xpc3RcIjtcclxuaW1wb3J0IFBsdWdpbkNhcmQgZnJvbSBcIi4vcmVhY3QvcGx1Z2luQ2FyZFwiO1xyXG5pbXBvcnQgVGhlbWVDYXJkIGZyb20gXCIuL3JlYWN0L3RoZW1lQ2FyZFwiO1xyXG5pbXBvcnQgU2VjdGlvbmVkU2V0dGluZ3NQYW5lbCBmcm9tIFwiLi9yZWFjdC9zZWN0aW9uZWRTZXR0aW5nc1BhbmVsXCI7XHJcbmltcG9ydCBTZXR0aW5nc1BhbmVsIGZyb20gXCIuL3JlYWN0L3NldHRpbmdzUGFuZWxcIjtcclxuaW1wb3J0IENzc0VkaXRvciBmcm9tIFwiLi9yZWFjdC9jc3NFZGl0b3JcIjtcclxuaW1wb3J0IENvbnRlbnRDb2x1bW4gZnJvbSBcIi4vcmVhY3QvY29udGVudENvbHVtblwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIFYyX1NldHRpbmdzUGFuZWwge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIHNlbGYuc2lkZUJhck9uQ2xpY2sgPSBzZWxmLnNpZGVCYXJPbkNsaWNrLmJpbmQoc2VsZik7XHJcbiAgICAgICAgc2VsZi5vbkNoYW5nZSA9IHNlbGYub25DaGFuZ2UuYmluZChzZWxmKTtcclxuICAgICAgICBzZWxmLnVwZGF0ZVNldHRpbmdzID0gdGhpcy51cGRhdGVTZXR0aW5ncy5iaW5kKHNlbGYpO1xyXG4gICAgICAgIHNlbGYuc2lkZWJhciA9IG5ldyBWMl9TZXR0aW5nc1BhbmVsX1NpZGViYXIoc2VsZi5zaWRlQmFyT25DbGljayk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHJvb3QoKSB7XHJcbiAgICAgICAgY29uc3QgX3Jvb3QgPSAkKFwiI2JkLXNldHRpbmdzcGFuZS1jb250YWluZXJcIik7XHJcbiAgICAgICAgaWYgKCFfcm9vdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmluamVjdFJvb3QoKSkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJvb3Q7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBfcm9vdFswXTtcclxuICAgIH1cclxuXHJcbiAgICBpbmplY3RSb290KCkge1xyXG4gICAgICAgIGlmICghJChcIi5sYXllci0zUXJVZUcgLnN0YW5kYXJkU2lkZWJhclZpZXctM0YxSTdpLCAubGF5ZXItM1FyVWVHIC51aS1zdGFuZGFyZC1zaWRlYmFyLXZpZXdcIikubGVuZ3RoKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgY29uc3Qgcm9vdCA9ICQoXCI8ZGl2Lz5cIiwge1xyXG4gICAgICAgICAgICBcImNsYXNzXCI6IFwiY29udGVudFJlZ2lvbi0zbkR1WXkgY29udGVudC1yZWdpb25cIixcclxuICAgICAgICAgICAgXCJpZFwiOiBcImJkLXNldHRpbmdzcGFuZS1jb250YWluZXJcIlxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgICQoXCIubGF5ZXItM1FyVWVHIC5zdGFuZGFyZFNpZGViYXJWaWV3LTNGMUk3aSwgLmxheWVyLTNRclVlRyAudWktc3RhbmRhcmQtc2lkZWJhci12aWV3XCIpLmFwcGVuZChyb290KTtcclxuXHJcbiAgICAgICAgVXRpbHMub25SZW1vdmVkKHJvb3RbMF0sICgpID0+IHtcclxuICAgICAgICAgICAgQkRWMi5yZWFjdERvbS51bm1vdW50Q29tcG9uZW50QXROb2RlKHJvb3RbMF0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjb3JlU2V0dGluZ3MoKSB7XHJcbiAgICAgICAgY29uc3Qgc2V0dGluZ3MgPSB0aGlzLmdldFNldHRpbmdzKFwiY29yZVwiKTtcclxuICAgICAgICBjb25zdCBjYXRlZ29yaWVzID0gWy4uLm5ldyBTZXQoc2V0dGluZ3MubWFwKHMgPT4gcy5jYXRlZ29yeSkpXTtcclxuICAgICAgICBjb25zdCBzZWN0aW9ucyA9IGNhdGVnb3JpZXMubWFwKGMgPT4ge3JldHVybiB7dGl0bGU6IGMsIHNldHRpbmdzOiBzZXR0aW5ncy5maWx0ZXIocyA9PiBzLmNhdGVnb3J5ID09IGMpfTt9KTtcclxuICAgICAgICByZXR1cm4gc2VjdGlvbnM7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGVtb3RlU2V0dGluZ3MoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U2V0dGluZ3MoXCJlbW90ZVwiKTtcclxuICAgIH1cclxuICAgIGdldFNldHRpbmdzKGNhdGVnb3J5KSB7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHNldHRpbmdzKS5yZWR1Y2UoKGFyciwga2V5KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNldHRpbmcgPSBzZXR0aW5nc1trZXldO1xyXG4gICAgICAgICAgICBpZiAoc2V0dGluZy5jYXQgPT09IGNhdGVnb3J5ICYmIHNldHRpbmcuaW1wbGVtZW50ZWQgJiYgIXNldHRpbmcuaGlkZGVuKSB7XHJcbiAgICAgICAgICAgICAgICBzZXR0aW5nLnRleHQgPSBrZXk7XHJcbiAgICAgICAgICAgICAgICBhcnIucHVzaChzZXR0aW5nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gYXJyO1xyXG4gICAgICAgIH0sIFtdKTtcclxuICAgIH1cclxuXHJcbiAgICBzaWRlQmFyT25DbGljayhpZCkge1xyXG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG4gICAgICAgICQoXCIuY29udGVudFJlZ2lvbi0zbkR1WXksIC5jb250ZW50LXJlZ2lvblwiKS5maXJzdCgpLmhpZGUoKTtcclxuICAgICAgICAkKHNlbGYucm9vdCkuc2hvdygpO1xyXG4gICAgICAgIHN3aXRjaCAoaWQpIHtcclxuICAgICAgICAgICAgY2FzZSBcImNvcmVcIjpcclxuICAgICAgICAgICAgICAgIHNlbGYucmVuZGVyQ29yZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcImVtb3Rlc1wiOlxyXG4gICAgICAgICAgICAgICAgc2VsZi5yZW5kZXJFbW90ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcImN1c3RvbWNzc1wiOlxyXG4gICAgICAgICAgICAgICAgc2VsZi5yZW5kZXJDdXN0b21Dc3NFZGl0b3IoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwicGx1Z2luc1wiOlxyXG4gICAgICAgICAgICAgICAgc2VsZi5yZW5kZXJQbHVnaW5QYW5lKCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcInRoZW1lc1wiOlxyXG4gICAgICAgICAgICAgICAgc2VsZi5yZW5kZXJUaGVtZVBhbmUoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbkNsaWNrKCkge31cclxuXHJcbiAgICBvbkNoYW5nZShpZCwgY2hlY2tlZCkge1xyXG4gICAgICAgIHRoaXMudXBkYXRlU2V0dGluZ3MoaWQsIGNoZWNrZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVNldHRpbmdzKGlkLCBlbmFibGVkKSB7XHJcbiAgICAgICAgc2V0dGluZ3NDb29raWVbaWRdID0gZW5hYmxlZDtcclxuXHJcbiAgICAgICAgLy8gaWYgKGlkID09IFwiYmRhLWdzLWJcIikge1xyXG4gICAgICAgIC8vICAgICBpZiAoZW5hYmxlZCkgJChcImJvZHlcIikuYWRkQ2xhc3MoXCJiZC1ibHVlXCIpO1xyXG4gICAgICAgIC8vICAgICBlbHNlICQoXCJib2R5XCIpLnJlbW92ZUNsYXNzKFwiYmQtYmx1ZVwiKTtcclxuICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgIGlmIChpZCA9PSBcImJkYS1ncy0yXCIpIHtcclxuICAgICAgICAgICAgaWYgKGVuYWJsZWQpICQoXCJib2R5XCIpLmFkZENsYXNzKFwiYmQtbWluaW1hbFwiKTtcclxuICAgICAgICAgICAgZWxzZSAkKFwiYm9keVwiKS5yZW1vdmVDbGFzcyhcImJkLW1pbmltYWxcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaWQgPT0gXCJiZGEtZ3MtM1wiKSB7XHJcbiAgICAgICAgICAgIGlmIChlbmFibGVkKSAkKFwiYm9keVwiKS5hZGRDbGFzcyhcImJkLW1pbmltYWwtY2hhblwiKTtcclxuICAgICAgICAgICAgZWxzZSAkKFwiYm9keVwiKS5yZW1vdmVDbGFzcyhcImJkLW1pbmltYWwtY2hhblwiKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChpZCA9PSBcImJkYS1ncy0xXCIpIHtcclxuICAgICAgICAgICAgaWYgKGVuYWJsZWQpIHB1YmxpY1NlcnZlcnNNb2R1bGUuYWRkQnV0dG9uKCk7XHJcbiAgICAgICAgICAgIGVsc2UgcHVibGljU2VydmVyc01vZHVsZS5yZW1vdmVCdXR0b24oKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChpZCA9PSBcImJkYS1ncy00XCIpIHtcclxuICAgICAgICAgICAgaWYgKGVuYWJsZWQpIHZvaWNlTW9kZS5lbmFibGUoKTtcclxuICAgICAgICAgICAgZWxzZSB2b2ljZU1vZGUuZGlzYWJsZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGlkID09IFwiYmRhLWdzLTVcIikge1xyXG4gICAgICAgICAgICBpZiAoZW5hYmxlZCkgJChcIiNhcHAtbW91bnRcIikuYWRkQ2xhc3MoXCJiZGEtZGFya1wiKTtcclxuICAgICAgICAgICAgZWxzZSAkKFwiI2FwcC1tb3VudFwiKS5yZW1vdmVDbGFzcyhcImJkYS1kYXJrXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGVuYWJsZWQgJiYgaWQgPT0gXCJiZGEtZ3MtNlwiKSBjb2xvcmVkVGV4dC5pbmplY3QyNEhvdXIoKTtcclxuXHJcbiAgICAgICAgaWYgKGlkID09IFwiYmRhLWdzLTdcIikge1xyXG4gICAgICAgICAgICBpZiAoZW5hYmxlZCkgY29sb3JlZFRleHQuaW5qZWN0Q29sb3JlZFRleHQoKTtcclxuICAgICAgICAgICAgZWxzZSBjb2xvcmVkVGV4dC5yZW1vdmVDb2xvcmVkVGV4dCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGlkID09IFwiYmRhLWVzLTRcIikge1xyXG4gICAgICAgICAgICBpZiAoZW5hYmxlZCkgZW1vdGVNb2R1bGUuYXV0b0NhcGl0YWxpemUoKTtcclxuICAgICAgICAgICAgZWxzZSBlbW90ZU1vZHVsZS5kaXNhYmxlQXV0b0NhcGl0YWxpemUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChpZCA9PSBcImZvcmstcHMtNFwiKSB7XHJcbiAgICAgICAgICAgIGlmIChlbmFibGVkKSBDbGFzc05vcm1hbGl6ZXIuc3RhcnQoKTtcclxuICAgICAgICAgICAgZWxzZSBDbGFzc05vcm1hbGl6ZXIuc3RvcCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGlkID09IFwiZm9yay1wcy01XCIpIHtcclxuICAgICAgICAgICAgaWYgKGVuYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgIENvbnRlbnRNYW5hZ2VyLndhdGNoQ29udGVudChcInBsdWdpblwiKTtcclxuICAgICAgICAgICAgICAgIENvbnRlbnRNYW5hZ2VyLndhdGNoQ29udGVudChcInRoZW1lXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgQ29udGVudE1hbmFnZXIudW53YXRjaENvbnRlbnQoXCJwbHVnaW5cIik7XHJcbiAgICAgICAgICAgICAgICBDb250ZW50TWFuYWdlci51bndhdGNoQ29udGVudChcInRoZW1lXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaWQgPT0gXCJmb3JrLXdwLTFcIikge1xyXG4gICAgICAgICAgICAvLyBCZEFwaS5zZXRXaW5kb3dQcmVmZXJlbmNlKFwidHJhbnNwYXJlbnRcIiwgZW5hYmxlZCk7XHJcbiAgICAgICAgICAgIC8vIGlmIChlbmFibGVkKSBCZEFwaS5zZXRXaW5kb3dQcmVmZXJlbmNlKFwiYmFja2dyb3VuZENvbG9yXCIsIG51bGwpO1xyXG4gICAgICAgICAgICAvLyBlbHNlIEJkQXBpLnNldFdpbmRvd1ByZWZlcmVuY2UoXCJiYWNrZ3JvdW5kQ29sb3JcIiwgXCIjMmYzMTM2XCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyppZiAoX2NbXCJmb3JrLXdwLTJcIl0pIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IEJkQXBpLmdldFdpbmRvd1ByZWZlcmVuY2UoXCJmcmFtZVwiKTtcclxuICAgICAgICAgICAgaWYgKGN1cnJlbnQgIT0gX2NbXCJmb3JrLXdwLTJcIl0pIEJkQXBpLnNldFdpbmRvd1ByZWZlcmVuY2UoXCJmcmFtZVwiLCBfY1tcImZvcmstd3AtMlwiXSk7XHJcbiAgICAgICAgfSovXHJcblxyXG5cclxuICAgICAgICBpZiAoaWQgPT0gXCJiZGEtZ3MtOFwiKSB7XHJcbiAgICAgICAgICAgIGlmIChlbmFibGVkKSBkTW9kZS5lbmFibGUoc2V0dGluZ3NDb29raWVbXCJmb3JrLWRtLTFcIl0pO1xyXG4gICAgICAgICAgICBlbHNlIGRNb2RlLmRpc2FibGUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChpZCA9PSBcImZvcmstZG0tMVwiKSB7XHJcbiAgICAgICAgICAgIGlmIChzZXR0aW5nc0Nvb2tpZVtcImJkYS1ncy04XCJdKSBkTW9kZS5lbmFibGUoZW5hYmxlZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXRpYWxpemVTZXR0aW5ncygpIHtcclxuXHJcbiAgICAgICAgLy8gaWYgKHNldHRpbmdzQ29va2llW1wiYmRhLWdzLWJcIl0pICQoXCJib2R5XCIpLmFkZENsYXNzKFwiYmQtYmx1ZVwiKTtcclxuICAgICAgICBpZiAoc2V0dGluZ3NDb29raWVbXCJiZGEtZ3MtMlwiXSkgJChcImJvZHlcIikuYWRkQ2xhc3MoXCJiZC1taW5pbWFsXCIpO1xyXG4gICAgICAgIGlmIChzZXR0aW5nc0Nvb2tpZVtcImJkYS1ncy0zXCJdKSAkKFwiYm9keVwiKS5hZGRDbGFzcyhcImJkLW1pbmltYWwtY2hhblwiKTtcclxuICAgICAgICBpZiAoc2V0dGluZ3NDb29raWVbXCJiZGEtZ3MtMVwiXSkgcHVibGljU2VydmVyc01vZHVsZS5hZGRCdXR0b24oKTtcclxuICAgICAgICBpZiAoc2V0dGluZ3NDb29raWVbXCJiZGEtZ3MtNFwiXSkgdm9pY2VNb2RlLmVuYWJsZSgpO1xyXG4gICAgICAgIGlmIChzZXR0aW5nc0Nvb2tpZVtcImJkYS1ncy01XCJdKSAkKFwiI2FwcC1tb3VudFwiKS5hZGRDbGFzcyhcImJkYS1kYXJrXCIpO1xyXG4gICAgICAgIGlmIChzZXR0aW5nc0Nvb2tpZVtcImJkYS1ncy02XCJdKSBjb2xvcmVkVGV4dC5pbmplY3QyNEhvdXIoKTtcclxuICAgICAgICBpZiAoc2V0dGluZ3NDb29raWVbXCJiZGEtZ3MtN1wiXSkgY29sb3JlZFRleHQuaW5qZWN0Q29sb3JlZFRleHQoKTtcclxuICAgICAgICBpZiAoc2V0dGluZ3NDb29raWVbXCJiZGEtZXMtNFwiXSkgZW1vdGVNb2R1bGUuYXV0b0NhcGl0YWxpemUoKTtcclxuICAgICAgICBpZiAoc2V0dGluZ3NDb29raWVbXCJmb3JrLXBzLTRcIl0pIENsYXNzTm9ybWFsaXplci5zdGFydCgpO1xyXG5cclxuICAgICAgICBpZiAoc2V0dGluZ3NDb29raWVbXCJmb3JrLXBzLTVcIl0pIHtcclxuICAgICAgICAgICAgQ29udGVudE1hbmFnZXIud2F0Y2hDb250ZW50KFwicGx1Z2luXCIpO1xyXG4gICAgICAgICAgICBDb250ZW50TWFuYWdlci53YXRjaENvbnRlbnQoXCJ0aGVtZVwiKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChzZXR0aW5nc0Nvb2tpZVtcImJkYS1ncy04XCJdKSBkTW9kZS5lbmFibGUoc2V0dGluZ3NDb29raWVbXCJmb3JrLWRtLTFcIl0pO1xyXG5cclxuICAgICAgICB0aGlzLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmVTZXR0aW5ncygpIHtcclxuICAgICAgICBEYXRhU3RvcmUuc2V0U2V0dGluZ0dyb3VwKFwic2V0dGluZ3NcIiwgc2V0dGluZ3NDb29raWUpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBsb2FkU2V0dGluZ3MoKSB7XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihzZXR0aW5nc0Nvb2tpZSwgRGF0YVN0b3JlLmdldFNldHRpbmdHcm91cChcInNldHRpbmdzXCIpKTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXJTaWRlYmFyKCkge1xyXG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG4gICAgICAgICQoXCJbY2xhc3MqPSdzaWRlLSddID4gW2NsYXNzKj0naXRlbS0nXVwiKS5vZmYoXCJjbGljay52MnNldHRpbmdzcGFuZWxcIikub24oXCJjbGljay52MnNldHRpbmdzcGFuZWxcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBCRFYyLnJlYWN0RG9tLnVubW91bnRDb21wb25lbnRBdE5vZGUoc2VsZi5yb290KTtcclxuICAgICAgICAgICAgJChzZWxmLnJvb3QpLmhpZGUoKTtcclxuICAgICAgICAgICAgJChcIi5jb250ZW50UmVnaW9uLTNuRHVZeSwgLmNvbnRlbnQtcmVnaW9uXCIpLmZpcnN0KCkuc2hvdygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHNlbGYuc2lkZWJhci5yZW5kZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29yZUNvbXBvbmVudCgpIHtcclxuICAgICAgICByZXR1cm4gQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFNjcm9sbGVyLCB7Y29udGVudENvbHVtbjogdHJ1ZSwgZmFkZTogdHJ1ZSwgZGFyazogdHJ1ZSwgY2hpbGRyZW46IFtcclxuICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFNlY3Rpb25lZFNldHRpbmdzUGFuZWwsIHtrZXk6IFwiY3NwYW5lbFwiLCBvbkNoYW5nZTogdGhpcy5vbkNoYW5nZSwgc2VjdGlvbnM6IHRoaXMuY29yZVNldHRpbmdzfSksXHJcbiAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChUb29scywge2tleTogXCJ0b29sc1wifSlcclxuICAgICAgICBdfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGVtb3RlQ29tcG9uZW50KCkge1xyXG4gICAgICAgIHJldHVybiBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoU2Nyb2xsZXIsIHtcclxuICAgICAgICAgICAgY29udGVudENvbHVtbjogdHJ1ZSwgZmFkZTogdHJ1ZSwgZGFyazogdHJ1ZSwgY2hpbGRyZW46IFtcclxuICAgICAgICAgICAgICAgIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChTZXR0aW5nc1BhbmVsLCB7a2V5OiBcImVzcGFuZWxcIiwgdGl0bGU6IFwiRW1vdGUgU2V0dGluZ3NcIiwgb25DaGFuZ2U6IHRoaXMub25DaGFuZ2UsIHNldHRpbmdzOiB0aGlzLmVtb3RlU2V0dGluZ3MsIGJ1dHRvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIkNsZWFyIEVtb3RlIENhY2hlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljazogKCkgPT4geyBlbW90ZU1vZHVsZS5jbGVhckVtb3RlRGF0YSgpOyBlbW90ZU1vZHVsZS5pbml0KCk7IHF1aWNrRW1vdGVNZW51LmluaXQoKTsgfVxyXG4gICAgICAgICAgICAgICAgfX0pLFxyXG4gICAgICAgICAgICAgICAgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFRvb2xzLCB7a2V5OiBcInRvb2xzXCJ9KVxyXG4gICAgICAgIF19KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY3VzdG9tQ3NzQ29tcG9uZW50KCkge1xyXG4gICAgICAgIHJldHVybiBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoU2Nyb2xsZXIsIHtjb250ZW50Q29sdW1uOiB0cnVlLCBmYWRlOiB0cnVlLCBkYXJrOiB0cnVlLCBjaGlsZHJlbjogW0JEVjIucmVhY3QuY3JlYXRlRWxlbWVudChDc3NFZGl0b3IsIHtrZXk6IFwiY3NzZWRpdG9yXCJ9KSwgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFRvb2xzLCB7a2V5OiBcInRvb2xzXCJ9KV19KTtcclxuICAgIH1cclxuXHJcbiAgICBjb250ZW50Q29tcG9uZW50KHR5cGUpIHtcclxuICAgICAgICBjb25zdCBjb21wb25lbnRFbGVtZW50ID0gdHlwZSA9PSBcInBsdWdpbnNcIiA/IHRoaXMucGx1Z2luc0NvbXBvbmVudCA6IHRoaXMudGhlbWVzQ29tcG9uZW50O1xyXG4gICAgICAgIGNvbnN0IHByZWZpeCA9IHR5cGUucmVwbGFjZShcInNcIiwgXCJcIik7XHJcbiAgICAgICAgY29uc3Qgc2V0dGluZ3NMaXN0ID0gdGhpcztcclxuICAgICAgICBjbGFzcyBDb250ZW50TGlzdCBleHRlbmRzIEJEVjIucmVhY3QuQ29tcG9uZW50IHtcclxuICAgICAgICAgICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICAgICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2UgPSB0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgICAgICAgICAgICAgQkRFdmVudHMub24oYCR7cHJlZml4fS1yZWxvYWRlZGAsIHRoaXMub25DaGFuZ2UpO1xyXG4gICAgICAgICAgICAgICAgQkRFdmVudHMub24oYCR7cHJlZml4fS1sb2FkZWRgLCB0aGlzLm9uQ2hhbmdlKTtcclxuICAgICAgICAgICAgICAgIEJERXZlbnRzLm9uKGAke3ByZWZpeH0tdW5sb2FkZWRgLCB0aGlzLm9uQ2hhbmdlKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICAgICAgICAgICAgICBCREV2ZW50cy5vZmYoYCR7cHJlZml4fS1yZWxvYWRlZGAsIHRoaXMub25DaGFuZ2UpO1xyXG4gICAgICAgICAgICAgICAgQkRFdmVudHMub2ZmKGAke3ByZWZpeH0tbG9hZGVkYCwgdGhpcy5vbkNoYW5nZSk7XHJcbiAgICAgICAgICAgICAgICBCREV2ZW50cy5vZmYoYCR7cHJlZml4fS11bmxvYWRlZGAsIHRoaXMub25DaGFuZ2UpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBvbkNoYW5nZSgpIHtcclxuICAgICAgICAgICAgICAgIHNldHRpbmdzTGlzdC5zaWRlQmFyT25DbGljayh0eXBlKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVuZGVyKCkge3JldHVybiBjb21wb25lbnRFbGVtZW50O31cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChDb250ZW50TGlzdCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHBsdWdpbnNDb21wb25lbnQoKSB7XHJcbiAgICAgICAgY29uc3QgcGx1Z2lucyA9IE9iamVjdC5rZXlzKGJkcGx1Z2lucykuc29ydCgoYSwgYikgPT4gYS50b0xvd2VyQ2FzZSgpLmxvY2FsZUNvbXBhcmUoYi50b0xvd2VyQ2FzZSgpKSkucmVkdWNlKChhcnIsIGtleSkgPT4ge1xyXG4gICAgICAgICAgICBhcnIucHVzaChCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoUGx1Z2luQ2FyZCwge2tleToga2V5LCBwbHVnaW46IGJkcGx1Z2luc1trZXldLnBsdWdpbn0pKTtyZXR1cm4gYXJyO1xyXG4gICAgICAgIH0sIFtdKTtcclxuICAgICAgICBjb25zdCBsaXN0ID0gQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KExpc3QsIHtrZXk6IFwicGx1Z2luLWxpc3RcIiwgY2xhc3NOYW1lOiBcImJkYS1zbGlzdFwiLCBjaGlsZHJlbjogcGx1Z2luc30pO1xyXG4gICAgICAgIGNvbnN0IHJlZnJlc2hJY29uID0gIXNldHRpbmdzQ29va2llW1wiZm9yay1wcy01XCJdICYmIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChUb29sdGlwV3JhcChSZWxvYWRJY29uLCB7Y29sb3I6IFwiYmxhY2tcIiwgc2lkZTogXCJ0b3BcIiwgdGV4dDogXCJSZWxvYWQgUGx1Z2luIExpc3RcIn0pLCB7Y2xhc3NOYW1lOiBcImJkLXJlbG9hZC1oZWFkZXJcIiwgc2l6ZTogXCIxOHB4XCIsIG9uQ2xpY2s6IGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgcGx1Z2luTW9kdWxlLnVwZGF0ZVBsdWdpbkxpc3QoKTtcclxuICAgICAgICAgICAgdGhpcy5zaWRlQmFyT25DbGljayhcInBsdWdpbnNcIik7XHJcbiAgICAgICAgfX0pO1xyXG4gICAgICAgIGNvbnN0IHBmQnRuID0gQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIHtrZXk6IFwiZm9sZGVyLWJ1dHRvblwiLCBjbGFzc05hbWU6IFwiYmQtcGZidG5cIiwgb25DbGljazogKCkgPT4geyByZXF1aXJlKFwiZWxlY3Ryb25cIikuc2hlbGwub3Blbkl0ZW0oQ29udGVudE1hbmFnZXIucGx1Z2luc0ZvbGRlcik7IH19LCBcIk9wZW4gUGx1Z2luIEZvbGRlclwiKTtcclxuICAgICAgICBjb25zdCBjb250ZW50Q29sdW1uID0gQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KENvbnRlbnRDb2x1bW4sIHtrZXk6IFwicGNvbHVtblwiLCB0aXRsZTogXCJQbHVnaW5zXCIsIGNoaWxkcmVuOiBbcmVmcmVzaEljb24sIHBmQnRuLCBsaXN0XX0pO1xyXG4gICAgICAgIHJldHVybiBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoU2Nyb2xsZXIsIHtjb250ZW50Q29sdW1uOiB0cnVlLCBmYWRlOiB0cnVlLCBkYXJrOiB0cnVlLCBjaGlsZHJlbjogW2NvbnRlbnRDb2x1bW4sIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChUb29scywge2tleTogXCJ0b29sc1wifSldfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHRoZW1lc0NvbXBvbmVudCgpIHtcclxuICAgICAgICBjb25zdCB0aGVtZXMgPSBPYmplY3Qua2V5cyhiZHRoZW1lcykuc29ydCgoYSwgYikgPT4gYS50b0xvd2VyQ2FzZSgpLmxvY2FsZUNvbXBhcmUoYi50b0xvd2VyQ2FzZSgpKSkucmVkdWNlKChhcnIsIGtleSkgPT4ge1xyXG4gICAgICAgICAgICBhcnIucHVzaChCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoVGhlbWVDYXJkLCB7a2V5OiBrZXksIHRoZW1lOiBiZHRoZW1lc1trZXldfSkpO3JldHVybiBhcnI7XHJcbiAgICAgICAgfSwgW10pO1xyXG4gICAgICAgIGNvbnN0IGxpc3QgPSBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoTGlzdCwge2tleTogXCJ0aGVtZS1saXN0XCIsIGNsYXNzTmFtZTogXCJiZGEtc2xpc3RcIiwgY2hpbGRyZW46IHRoZW1lc30pO1xyXG4gICAgICAgIGNvbnN0IHJlZnJlc2hJY29uID0gIXNldHRpbmdzQ29va2llW1wiZm9yay1wcy01XCJdICYmIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChUb29sdGlwV3JhcChSZWxvYWRJY29uLCB7Y29sb3I6IFwiYmxhY2tcIiwgc2lkZTogXCJ0b3BcIiwgdGV4dDogXCJSZWxvYWQgVGhlbWUgTGlzdFwifSksIHtjbGFzc05hbWU6IFwiYmQtcmVsb2FkLWhlYWRlclwiLCBzaXplOiBcIjE4cHhcIiwgb25DbGljazogYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGVtZU1vZHVsZS51cGRhdGVUaGVtZUxpc3QoKTtcclxuICAgICAgICAgICAgdGhpcy5zaWRlQmFyT25DbGljayhcInRoZW1lc1wiKTtcclxuICAgICAgICB9fSk7XHJcbiAgICAgICAgY29uc3QgdGZCdG4gPSBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIiwge2tleTogXCJmb2xkZXItYnV0dG9uXCIsIGNsYXNzTmFtZTogXCJiZC1wZmJ0blwiLCBvbkNsaWNrOiAoKSA9PiB7IHJlcXVpcmUoXCJlbGVjdHJvblwiKS5zaGVsbC5vcGVuSXRlbShDb250ZW50TWFuYWdlci50aGVtZXNGb2xkZXIpOyB9fSwgXCJPcGVuIFRoZW1lIEZvbGRlclwiKTtcclxuICAgICAgICBjb25zdCBjb250ZW50Q29sdW1uID0gQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KENvbnRlbnRDb2x1bW4sIHtrZXk6IFwidGNvbHVtblwiLCB0aXRsZTogXCJUaGVtZXNcIiwgY2hpbGRyZW46IFtyZWZyZXNoSWNvbiwgdGZCdG4sIGxpc3RdfSk7XHJcbiAgICAgICAgcmV0dXJuIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChTY3JvbGxlciwge2NvbnRlbnRDb2x1bW46IHRydWUsIGZhZGU6IHRydWUsIGRhcms6IHRydWUsIGNoaWxkcmVuOiBbY29udGVudENvbHVtbiwgQkRWMi5yZWFjdC5jcmVhdGVFbGVtZW50KFRvb2xzLCB7a2V5OiBcInRvb2xzXCJ9KV19KTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXJDb3JlU2V0dGluZ3MoKSB7XHJcbiAgICAgICAgY29uc3Qgcm9vdCA9IHRoaXMucm9vdDtcclxuICAgICAgICBpZiAoIXJvb3QpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJGQUlMRUQgVE8gTE9DQVRFIFJPT1Q6IC5sYXllci0zUXJVZUcgLnN0YW5kYXJkU2lkZWJhclZpZXctM0YxSTdpXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEJEVjIucmVhY3REb20ucmVuZGVyKHRoaXMuY29yZUNvbXBvbmVudCwgcm9vdCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyRW1vdGVTZXR0aW5ncygpIHtcclxuICAgICAgICBjb25zdCByb290ID0gdGhpcy5yb290O1xyXG4gICAgICAgIGlmICghcm9vdCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkZBSUxFRCBUTyBMT0NBVEUgUk9PVDogLmxheWVyLTNRclVlRyAuc3RhbmRhcmRTaWRlYmFyVmlldy0zRjFJN2lcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgQkRWMi5yZWFjdERvbS5yZW5kZXIodGhpcy5lbW90ZUNvbXBvbmVudCwgcm9vdCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyQ3VzdG9tQ3NzRWRpdG9yKCkge1xyXG4gICAgICAgIGNvbnN0IHJvb3QgPSB0aGlzLnJvb3Q7XHJcbiAgICAgICAgaWYgKCFyb290KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRkFJTEVEIFRPIExPQ0FURSBST09UOiAubGF5ZXItM1FyVWVHIC5zdGFuZGFyZFNpZGViYXJWaWV3LTNGMUk3aVwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBCRFYyLnJlYWN0RG9tLnJlbmRlcih0aGlzLmN1c3RvbUNzc0NvbXBvbmVudCwgcm9vdCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyUGx1Z2luUGFuZSgpIHtcclxuICAgICAgICBjb25zdCByb290ID0gdGhpcy5yb290O1xyXG4gICAgICAgIGlmICghcm9vdCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkZBSUxFRCBUTyBMT0NBVEUgUk9PVDogLmxheWVyLTNRclVlRyAuc3RhbmRhcmRTaWRlYmFyVmlldy0zRjFJN2lcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgQkRWMi5yZWFjdERvbS5yZW5kZXIodGhpcy5jb250ZW50Q29tcG9uZW50KFwicGx1Z2luc1wiKSwgcm9vdCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyVGhlbWVQYW5lKCkge1xyXG4gICAgICAgIGNvbnN0IHJvb3QgPSB0aGlzLnJvb3Q7XHJcbiAgICAgICAgaWYgKCFyb290KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRkFJTEVEIFRPIExPQ0FURSBST09UOiAubGF5ZXItM1FyVWVHIC5zdGFuZGFyZFNpZGViYXJWaWV3LTNGMUk3aVwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBCRFYyLnJlYWN0RG9tLnJlbmRlcih0aGlzLmNvbnRlbnRDb21wb25lbnQoXCJ0aGVtZXNcIiksIHJvb3QpO1xyXG4gICAgfVxyXG59O1xyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/settingsPanel.js\n");
+/***/ }),
+/***/ "./src/settingsPanelSidebar.js":
+/*!*************************************!*\
+ !*** ./src/settingsPanelSidebar.js ***!
+ \*************************************/
+/*! exports provided: default */
+/***/ (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 V2_SettingsPanel_Sidebar; });\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ \"./src/utils.js\");\n/* harmony import */ var _v2__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./v2 */ \"./src/v2.js\");\n/* harmony import */ var _react_sidebar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./react/sidebar */ \"./src/react/sidebar.js\");\n\n\n\nclass V2_SettingsPanel_Sidebar {\n constructor(onClick) {\n this.onClick = onClick;\n }\n\n get items() {\n return [{\n text: \"Settings\",\n id: \"core\"\n }, {\n text: \"Emotes\",\n id: \"emotes\"\n }, {\n text: \"Plugins\",\n id: \"plugins\"\n }, {\n text: \"Themes\",\n id: \"themes\"\n }, {\n text: \"Custom CSS\",\n id: \"customcss\"\n }];\n }\n\n get component() {\n return _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(\"span\", null, _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].react.createElement(_react_sidebar__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n onClick: this.onClick,\n headerText: \"Bandaged BD\",\n items: this.items\n }));\n }\n\n get root() {\n const _root = $(\"#bd-settings-sidebar\");\n\n if (!_root.length) {\n if (!this.injectRoot()) return null;\n return this.root;\n }\n\n return _root[0];\n }\n\n injectRoot() {\n const changeLog = $(\"[class*='side-'] > [class*='item-']:not([class*=Danger])\").last();\n if (!changeLog.length) return false;\n $(\"\", {\n id: \"bd-settings-sidebar\"\n }).insertBefore(changeLog.prev());\n return true;\n }\n\n render() {\n const root = this.root;\n\n if (!root) {\n console.log(\"FAILED TO LOCATE ROOT: [class*='side-'] > [class*='item-']:not([class*=Danger])\");\n return;\n }\n\n _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].reactDom.render(this.component, root);\n _utils__WEBPACK_IMPORTED_MODULE_0__[\"default\"].onRemoved(root, () => {\n _v2__WEBPACK_IMPORTED_MODULE_1__[\"default\"].reactDom.unmountComponentAtNode(root);\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3NldHRpbmdzUGFuZWxTaWRlYmFyLmpzP2RiY2IiXSwibmFtZXMiOlsiVjJfU2V0dGluZ3NQYW5lbF9TaWRlYmFyIiwiY29uc3RydWN0b3IiLCJvbkNsaWNrIiwiaXRlbXMiLCJ0ZXh0IiwiaWQiLCJjb21wb25lbnQiLCJCRFYyIiwicmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiU2lkZUJhciIsImhlYWRlclRleHQiLCJyb290IiwiX3Jvb3QiLCIkIiwibGVuZ3RoIiwiaW5qZWN0Um9vdCIsImNoYW5nZUxvZyIsImxhc3QiLCJpbnNlcnRCZWZvcmUiLCJwcmV2IiwicmVuZGVyIiwiY29uc29sZSIsImxvZyIsInJlYWN0RG9tIiwiVXRpbHMiLCJvblJlbW92ZWQiLCJ1bm1vdW50Q29tcG9uZW50QXROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBRWUsTUFBTUEsd0JBQU4sQ0FBK0I7QUFFMUNDLGFBQVcsQ0FBQ0MsT0FBRCxFQUFVO0FBQ2pCLFNBQUtBLE9BQUwsR0FBZUEsT0FBZjtBQUNIOztBQUVELE1BQUlDLEtBQUosR0FBWTtBQUNSLFdBQU8sQ0FBQztBQUFDQyxVQUFJLEVBQUUsVUFBUDtBQUFtQkMsUUFBRSxFQUFFO0FBQXZCLEtBQUQsRUFBaUM7QUFBQ0QsVUFBSSxFQUFFLFFBQVA7QUFBaUJDLFFBQUUsRUFBRTtBQUFyQixLQUFqQyxFQUFpRTtBQUFDRCxVQUFJLEVBQUUsU0FBUDtBQUFrQkMsUUFBRSxFQUFFO0FBQXRCLEtBQWpFLEVBQW1HO0FBQUNELFVBQUksRUFBRSxRQUFQO0FBQWlCQyxRQUFFLEVBQUU7QUFBckIsS0FBbkcsRUFBbUk7QUFBQ0QsVUFBSSxFQUFFLFlBQVA7QUFBcUJDLFFBQUUsRUFBRTtBQUF6QixLQUFuSSxDQUFQO0FBQ0g7O0FBRUQsTUFBSUMsU0FBSixHQUFnQjtBQUNaLFdBQU9DLDJDQUFJLENBQUNDLEtBQUwsQ0FBV0MsYUFBWCxDQUF5QixNQUF6QixFQUFpQyxJQUFqQyxFQUF1Q0YsMkNBQUksQ0FBQ0MsS0FBTCxDQUFXQyxhQUFYLENBQXlCQyxzREFBekIsRUFBa0M7QUFBQ1IsYUFBTyxFQUFFLEtBQUtBLE9BQWY7QUFBd0JTLGdCQUFVLEVBQUUsYUFBcEM7QUFBbURSLFdBQUssRUFBRSxLQUFLQTtBQUEvRCxLQUFsQyxDQUF2QyxDQUFQO0FBQ0g7O0FBRUQsTUFBSVMsSUFBSixHQUFXO0FBQ1AsVUFBTUMsS0FBSyxHQUFHQyxDQUFDLENBQUMsc0JBQUQsQ0FBZjs7QUFDQSxRQUFJLENBQUNELEtBQUssQ0FBQ0UsTUFBWCxFQUFtQjtBQUNmLFVBQUksQ0FBQyxLQUFLQyxVQUFMLEVBQUwsRUFBd0IsT0FBTyxJQUFQO0FBQ3hCLGFBQU8sS0FBS0osSUFBWjtBQUNIOztBQUNELFdBQU9DLEtBQUssQ0FBQyxDQUFELENBQVo7QUFDSDs7QUFFREcsWUFBVSxHQUFHO0FBQ1QsVUFBTUMsU0FBUyxHQUFHSCxDQUFDLENBQUMsMERBQUQsQ0FBRCxDQUE4REksSUFBOUQsRUFBbEI7QUFDQSxRQUFJLENBQUNELFNBQVMsQ0FBQ0YsTUFBZixFQUF1QixPQUFPLEtBQVA7QUFDdkJELEtBQUMsQ0FBQyxTQUFELEVBQVk7QUFBQ1QsUUFBRSxFQUFFO0FBQUwsS0FBWixDQUFELENBQTBDYyxZQUExQyxDQUF1REYsU0FBUyxDQUFDRyxJQUFWLEVBQXZEO0FBQ0EsV0FBTyxJQUFQO0FBQ0g7O0FBRURDLFFBQU0sR0FBRztBQUNMLFVBQU1ULElBQUksR0FBRyxLQUFLQSxJQUFsQjs7QUFDQSxRQUFJLENBQUNBLElBQUwsRUFBVztBQUNQVSxhQUFPLENBQUNDLEdBQVIsQ0FBWSxpRkFBWjtBQUNBO0FBQ0g7O0FBQ0RoQiwrQ0FBSSxDQUFDaUIsUUFBTCxDQUFjSCxNQUFkLENBQXFCLEtBQUtmLFNBQTFCLEVBQXFDTSxJQUFyQztBQUNBYSxrREFBSyxDQUFDQyxTQUFOLENBQWdCZCxJQUFoQixFQUFzQixNQUFNO0FBQ3hCTCxpREFBSSxDQUFDaUIsUUFBTCxDQUFjRyxzQkFBZCxDQUFxQ2YsSUFBckM7QUFDSCxLQUZEO0FBR0g7O0FBeEN5QyIsImZpbGUiOiIuL3NyYy9zZXR0aW5nc1BhbmVsU2lkZWJhci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBVdGlscyBmcm9tIFwiLi91dGlsc1wiO1xyXG5pbXBvcnQgQkRWMiBmcm9tIFwiLi92MlwiO1xyXG5cclxuaW1wb3J0IFNpZGVCYXIgZnJvbSBcIi4vcmVhY3Qvc2lkZWJhclwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVjJfU2V0dGluZ3NQYW5lbF9TaWRlYmFyIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihvbkNsaWNrKSB7XHJcbiAgICAgICAgdGhpcy5vbkNsaWNrID0gb25DbGljaztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXRlbXMoKSB7XHJcbiAgICAgICAgcmV0dXJuIFt7dGV4dDogXCJTZXR0aW5nc1wiLCBpZDogXCJjb3JlXCJ9LCB7dGV4dDogXCJFbW90ZXNcIiwgaWQ6IFwiZW1vdGVzXCJ9LCB7dGV4dDogXCJQbHVnaW5zXCIsIGlkOiBcInBsdWdpbnNcIn0sIHt0ZXh0OiBcIlRoZW1lc1wiLCBpZDogXCJ0aGVtZXNcIn0sIHt0ZXh0OiBcIkN1c3RvbSBDU1NcIiwgaWQ6IFwiY3VzdG9tY3NzXCJ9XTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29tcG9uZW50KCkge1xyXG4gICAgICAgIHJldHVybiBCRFYyLnJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIG51bGwsIEJEVjIucmVhY3QuY3JlYXRlRWxlbWVudChTaWRlQmFyLCB7b25DbGljazogdGhpcy5vbkNsaWNrLCBoZWFkZXJUZXh0OiBcIkJhbmRhZ2VkIEJEXCIsIGl0ZW1zOiB0aGlzLml0ZW1zfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCByb290KCkge1xyXG4gICAgICAgIGNvbnN0IF9yb290ID0gJChcIiNiZC1zZXR0aW5ncy1zaWRlYmFyXCIpO1xyXG4gICAgICAgIGlmICghX3Jvb3QubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5pbmplY3RSb290KCkpIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yb290O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gX3Jvb3RbMF07XHJcbiAgICB9XHJcblxyXG4gICAgaW5qZWN0Um9vdCgpIHtcclxuICAgICAgICBjb25zdCBjaGFuZ2VMb2cgPSAkKFwiW2NsYXNzKj0nc2lkZS0nXSA+IFtjbGFzcyo9J2l0ZW0tJ106bm90KFtjbGFzcyo9RGFuZ2VyXSlcIikubGFzdCgpO1xyXG4gICAgICAgIGlmICghY2hhbmdlTG9nLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICQoXCI8c3Bhbi8+XCIsIHtpZDogXCJiZC1zZXR0aW5ncy1zaWRlYmFyXCJ9KS5pbnNlcnRCZWZvcmUoY2hhbmdlTG9nLnByZXYoKSk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHJvb3QgPSB0aGlzLnJvb3Q7XHJcbiAgICAgICAgaWYgKCFyb290KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRkFJTEVEIFRPIExPQ0FURSBST09UOiBbY2xhc3MqPSdzaWRlLSddID4gW2NsYXNzKj0naXRlbS0nXTpub3QoW2NsYXNzKj1EYW5nZXJdKVwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBCRFYyLnJlYWN0RG9tLnJlbmRlcih0aGlzLmNvbXBvbmVudCwgcm9vdCk7XHJcbiAgICAgICAgVXRpbHMub25SZW1vdmVkKHJvb3QsICgpID0+IHtcclxuICAgICAgICAgICAgQkRWMi5yZWFjdERvbS51bm1vdW50Q29tcG9uZW50QXROb2RlKHJvb3QpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/settingsPanelSidebar.js\n");
+/***/ }),
+/***/ "./src/themeModule.js":
+/*!****************************!*\
+ !*** ./src/themeModule.js ***!
+ \****************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _0globals__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./0globals */ \"./src/0globals.js\");\n/* harmony import */ var _contentManager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./contentManager */ \"./src/contentManager.js\");\n/* harmony import */ var _dataStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dataStore */ \"./src/dataStore.js\");\n/* harmony import */ var _bdEvents__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bdEvents */ \"./src/bdEvents.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils */ \"./src/utils.js\");\n\n\n\n\n\n\nfunction ThemeModule() {}\n\nThemeModule.prototype.loadThemes = function () {\n this.loadThemeData();\n _0globals__WEBPACK_IMPORTED_MODULE_0__[\"bdthemeErrors\"].concat(_contentManager__WEBPACK_IMPORTED_MODULE_1__[\"default\"].loadThemes());\n const themes = Object.keys(_0globals__WEBPACK_IMPORTED_MODULE_0__[\"bdthemes\"]);\n\n for (let i = 0; i < themes.length; i++) {\n const theme = _0globals__WEBPACK_IMPORTED_MODULE_0__[\"bdthemes\"][themes[i]];\n if (!_0globals__WEBPACK_IMPORTED_MODULE_0__[\"themeCookie\"][theme.name]) _0globals__WEBPACK_IMPORTED_MODULE_0__[\"themeCookie\"][theme.name] = false;\n if (_0globals__WEBPACK_IMPORTED_MODULE_0__[\"themeCookie\"][theme.name]) $(\"head\").append($(\"");
- }
- $("#customcss").text(this.editor.session.getValue()).detach().appendTo(document.head);
- }
-
- saveCss() {
- DataStore.setBDData("bdcustomcss", btoa(this.editor.session.getValue()));
- }
-}
-
-class V2C_CssEditor extends BDV2.reactComponent {
-
- constructor(props) {
- super(props);
- let self = this;
- self.props.lines = 0;
- self.setInitialState();
- self.attach = self.attach.bind(self);
- self.detachedEditor = BDV2.react.createElement(V2C_CssEditorDetached, {attach: self.attach});
- self.onClick = self.onClick.bind(self);
- self.updateCss = self.updateCss.bind(self);
- self.saveCss = self.saveCss.bind(self);
- self.detach = self.detach.bind(self);
- }
-
- setInitialState() {
- this.state = {
- detached: this.props.detached || BDV2.editorDetached
- };
- }
-
- componentDidMount() {
- // this.updateLineCount();
- this.editor = ace.edit("bd-customcss-editor");
- this.editor.setTheme("ace/theme/monokai");
- this.editor.session.setMode("ace/mode/css");
- this.editor.setShowPrintMargin(false);
- this.editor.setFontSize(14);
- this.editor.on("change", () => {
- if (!settingsCookie["bda-css-0"]) return;
- this.saveCss();
- this.updateCss();
- });
- }
-
- componentWillUnmount() {
- this.editor.destroy();
- }
-
- componentDidUpdate(prevProps, prevState) {
- let self = this;
- if (prevState.detached && !self.state.detached) {
- BDV2.reactDom.unmountComponentAtNode(self.detachedRoot);
- }
- }
-
- codeMirror() {
- }
-
- get options() {
- return {
- lineNumbers: true,
- mode: "css",
- indentUnit: 4,
- theme: "material",
- scrollbarStyle: "simple"
- };
- }
-
- get css() {
- let _ccss = DataStore.getBDData("bdcustomcss");
- let ccss = "";
- if (_ccss && _ccss !== "") {
- ccss = atob(_ccss);
- }
- return ccss;
- }
-
- updateLineCount() {
- let lineCount = this.refs.editor.value.split("\n").length;
- if (lineCount == this.props.lines) return;
- this.refs.lines.textContent = Array.from(new Array(lineCount), (_, i) => i + 1).join(".\n") + ".";
- this.props.lines = lineCount;
- }
-
- render() {
- let self = this;
-
- let {detached} = self.state;
- return BDV2.react.createElement(
- "div",
- {className: "contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default", style: {padding: "60px 40px 0px"}},
- detached && BDV2.react.createElement(
- "div",
- {id: "editor-detached"},
- BDV2.react.createElement(V2Components.SettingsTitle, {text: "Custom CSS Editor"}),
- BDV2.react.createElement(
- "h3",
- null,
- "Editor Detached"
- ),
- BDV2.react.createElement(
- "button",
- {className: "btn btn-primary", onClick: () => {
- self.attach();
- }},
- "Attach"
- )
- ),
- !detached && BDV2.react.createElement(
- "div",
- null,
- BDV2.react.createElement(V2Components.SettingsTitle, {text: "Custom CSS Editor"}),
- BDV2.react.createElement("div", {className: "editor-wrapper"},
- BDV2.react.createElement("div", {id: "bd-customcss-editor", className: "editor", ref: "editor"}, self.css)
- ),
- BDV2.react.createElement(
- "div",
- {id: "bd-customcss-attach-controls"},
- BDV2.react.createElement(
- "ul",
- {className: "checkbox-group"},
- BDV2.react.createElement(V2Components.Checkbox, {id: "live-update", text: "Live Update", onChange: this.onChange, checked: settingsCookie["bda-css-0"]})
- ),
- BDV2.react.createElement(
- "div",
- {id: "bd-customcss-detach-controls-button"},
- BDV2.react.createElement(
- "button",
- {style: {borderRadius: "3px 0 0 3px", borderRight: "1px solid #3f4146"}, className: "btn btn-primary", onClick: () => {
- self.onClick("update");
- }},
- "Update"
- ),
- BDV2.react.createElement(
- "button",
- {style: {borderRadius: "0", borderLeft: "1px solid #2d2d2d", borderRight: "1px solid #2d2d2d"}, className: "btn btn-primary", onClick: () => {
- self.onClick("save");
- }},
- "Save"
- ),
- BDV2.react.createElement(
- "button",
- {style: {borderRadius: "0 3px 3px 0", borderLeft: "1px solid #3f4146"}, className: "btn btn-primary", onClick: () => {
- self.onClick("detach");
- }},
- "Detach"
- ),
- BDV2.react.createElement(
- "span",
- {style: {fontSize: "10px", marginLeft: "5px"}},
- "Unsaved changes are lost on detach"
- ),
- BDV2.react.createElement("div", {className: "help-text"},
- "Press ",
- BDV2.react.createElement("code", {className: "inline"}, "ctrl"),
- "+",
- BDV2.react.createElement("span", {className: "inline"}, ","),
- " with the editor focused to access the editor's settings."
- )
- )
- )
- )
- );
- }
-
- onClick(arg) {
- let self = this;
- switch (arg) {
- case "update":
- self.updateCss();
- break;
- case "save":
- self.saveCss();
- break;
- case "detach":
- self.detach();
- break;
- }
- }
-
- onChange(id, checked) {
- switch (id) {
- case "live-update":
- settingsCookie["bda-css-0"] = checked;
- mainCore.saveSettings();
- break;
- }
- }
-
- updateCss() {
- if ($("#customcss").length == 0) {
- $("head").append("");
- }
- $("#customcss").text(this.editor.session.getValue()).detach().appendTo(document.head);
- }
-
- saveCss() {
- DataStore.setBDData("bdcustomcss", btoa(this.editor.session.getValue()));
- }
-
- detach() {
- let self = this;
- self.setState({
- detached: true
- });
- let droot = self.detachedRoot;
- if (!droot) {
- console.log("FAILED TO INJECT ROOT: .app");
- return;
- }
- BDV2.reactDom.render(self.detachedEditor, droot);
- }
-
- get detachedRoot() {
- let _root = $("#bd-customcss-detach-container");
- if (!_root.length) {
- if (!this.injectDetachedRoot()) return null;
- return this.detachedRoot;
- }
- return _root[0];
- }
-
- injectDetachedRoot() {
- if (!$(".app, .app-2rEoOp").length) return false;
- $("", {
- id: "bd-customcss-detach-container"
- }).insertAfter($(".app, .app-2rEoOp"));
- return true;
- }
-
- attach() {
- let self = this;
- self.setState({
- detached: false
- });
- }
-}
-
-class V2C_List extends BDV2.reactComponent {
- constructor(props) {
- super(props);
- }
-
- render() {
- return BDV2.react.createElement(
- "ul",
- {className: this.props.className},
- this.props.children
- );
- }
-}
-
-class V2C_ContentColumn extends BDV2.reactComponent {
- constructor(props) {
- super(props);
- }
-
- render() {
- return BDV2.react.createElement(
- "div",
- {className: "contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"},
- BDV2.react.createElement(
- "h2",
- {className: "ui-form-title h2 margin-reset margin-bottom-20"},
- this.props.title
- ),
- this.props.children
- );
- }
-}
-
-class V2C_PluginCard extends BDV2.reactComponent {
-
- constructor(props) {
- super(props);
- let self = this;
- self.onChange = self.onChange.bind(self);
- self.showSettings = self.showSettings.bind(self);
- self.setInitialState();
- self.hasSettings = typeof self.props.plugin.getSettingsPanel === "function";
- self.settingsPanel = "";
-
- this.reload = this.reload.bind(this);
- this.onReload = this.onReload.bind(this);
- }
-
- setInitialState() {
- this.state = {
- checked: pluginCookie[this.props.plugin.getName()],
- settings: false,
- reloads: 0
- };
- }
-
- // componentDidMount() {
- // BDEvents.on("plugin-reloaded", this.onReload);
- // }
-
- // componentWillUnmount() {
- // BDEvents.off("plugin-reloaded", this.onReload);
- // }
-
- onReload(pluginName) {
- if (pluginName !== this.props.plugin.getName()) return;
- this.setState({reloads: this.state.reloads + 1});
- }
-
- componentDidUpdate() {
- if (this.state.settings) {
- if (typeof this.settingsPanel === "object") {
- this.refs.settingspanel.appendChild(this.settingsPanel);
- }
-
- if (!settingsCookie["fork-ps-3"]) return;
- const isHidden = (container, element) => {
-
- const cTop = container.scrollTop;
- const cBottom = cTop + container.clientHeight;
-
- const eTop = element.offsetTop;
- const eBottom = eTop + element.clientHeight;
-
- return (eTop < cTop || eBottom > cBottom);
- };
-
- const self = $(BDV2.reactDom.findDOMNode(this));
- const container = self.parents(".scroller");
- if (!isHidden(container[0], self[0])) return;
- container.animate({
- scrollTop: self.offset().top - container.offset().top + container.scrollTop() - 30
- }, 300);
- }
- }
-
- reload() {
- const plugin = this.props.plugin.getName();
- pluginModule.reloadPlugin(plugin);
- this.props.plugin = bdplugins[plugin].plugin;
- this.onReload(this.props.plugin.getName());
- }
-
- getString(value) {
- return typeof value == "string" ? value : value.toString();
- }
-
- makeLink(title, url) {
- const props = {className: "bda-link bda-link-website", target: "_blank"};
- if (typeof(url) == "string") props.href = url;
- if (typeof(url) == "function") props.onClick = (event) => {event.preventDefault(); event.stopPropagation(); url();};
- return BDV2.react.createElement("a", props, title);
- }
-
- render() {
-
- const self = this;
- const {plugin} = this.props;
- const name = this.getString(plugin.getName());
- const author = this.getString(plugin.getAuthor());
- const description = this.getString(plugin.getDescription());
- const version = this.getString(plugin.getVersion());
- const meta = bdplugins[name];
-
- if (this.state.settings) {
- try { self.settingsPanel = plugin.getSettingsPanel(); }
- catch (err) { Utils.err("Plugins", "Unable to get settings panel for " + plugin.getName() + ".", err); }
-
- return BDV2.react.createElement("li", {className: "settings-open ui-switch-item"},
- BDV2.react.createElement("div", {style: {"float": "right", "cursor": "pointer"}, onClick: () => {
- this.refs.settingspanel.innerHTML = "";
- self.setState({settings: false});
- }},
- BDV2.react.createElement(V2Components.XSvg, null)
- ),
- typeof self.settingsPanel === "object" && BDV2.react.createElement("div", {id: `plugin-settings-${name}`, className: "plugin-settings", ref: "settingspanel"}),
- typeof self.settingsPanel !== "object" && BDV2.react.createElement("div", {id: `plugin-settings-${name}`, className: "plugin-settings", ref: "settingspanel", dangerouslySetInnerHTML: {__html: self.settingsPanel}})
- );
- }
-
- const links = [];
- if (meta.website) links.push(this.makeLink("Website", meta.website));
- if (meta.source) links.push(this.makeLink("Source", meta.source));
- if (meta.invite) {
- links.push(this.makeLink("Support Server", () => {
- const tester = /\.gg\/(.*)$/;
- let code = meta.invite;
- if (tester.test(code)) code = code.match(tester)[1];
- BDV2.LayerStack.popLayer();
- BDV2.InviteActions.acceptInviteAndTransitionToInviteChannel(code);
- }));
- }
- if (meta.donate) links.push(this.makeLink("Donate", meta.donate));
- if (meta.patreon) links.push(this.makeLink("Patreon", meta.patreon));
-
- const authorProps = {className: "bda-author"};
- if (meta.authorLink || meta.authorId) {
- authorProps.className += ` ${BDV2.anchorClasses.anchor} ${BDV2.anchorClasses.anchorUnderlineOnHover}`;
- authorProps.target = "_blank";
-
- if (meta.authorLink) authorProps.href = meta.authorLink;
- if (meta.authorId) authorProps.onClick = () => {BDV2.LayerStack.popLayer(); BDV2.openDM(meta.authorId);};
- }
-
-
- return BDV2.react.createElement("li", {"data-name": name, "data-version": version, "className": "settings-closed ui-switch-item"},
- BDV2.react.createElement("div", {className: "bda-header"},
- BDV2.react.createElement("span", {className: "bda-header-title"},
- BDV2.react.createElement("span", {className: "bda-name"}, name),
- " v",
- BDV2.react.createElement("span", {className: "bda-version"}, version),
- " by ",
- BDV2.react.createElement(meta.authorLink || meta.authorId ? "a" : "span", authorProps, author)
- ),
- BDV2.react.createElement("div", {className: "bda-controls"},
- !settingsCookie["fork-ps-5"] && BDV2.react.createElement(V2Components.TooltipWrap(V2Components.ReloadIcon, {color: "black", side: "top", text: "Reload"}), {className: "bd-reload-card", onClick: this.reload}),
- BDV2.react.createElement("label", {className: "ui-switch-wrapper ui-flex-child", style: {flex: "0 0 auto"}},
- BDV2.react.createElement("input", {checked: this.state.checked, onChange: this.onChange, className: "ui-switch-checkbox", type: "checkbox"}),
- BDV2.react.createElement("div", {className: this.state.checked ? "ui-switch checked" : "ui-switch"})
- )
- )
- ),
- BDV2.react.createElement("div", {className: "bda-description-wrap scroller-wrap fade"},
- BDV2.react.createElement("div", {className: "bda-description scroller"}, description)
- ),
- (links.length || this.hasSettings) && BDV2.react.createElement("div", {className: "bda-footer"},
- BDV2.react.createElement("span", {className: "bda-links"},
- ...(links.map((element, index) => index < links.length - 1 ? [element, " | "] : element).flat())
- ),
- this.hasSettings && BDV2.react.createElement("button", {onClick: this.showSettings, className: "bda-settings-button", disabled: !this.state.checked}, "Settings")
- )
- );
- }
-
- onChange() {
- this.setState({checked: !this.state.checked});
- pluginModule.togglePlugin(this.props.plugin.getName());
- }
-
- showSettings() {
- if (!this.hasSettings) return;
- this.setState({settings: true});
- }
-}
-
-class V2C_ThemeCard extends BDV2.reactComponent {
-
- constructor(props) {
- super(props);
- this.setInitialState();
- this.onChange = this.onChange.bind(this);
- this.reload = this.reload.bind(this);
- }
-
- setInitialState() {
- this.state = {
- checked: themeCookie[this.props.theme.name],
- reloads: 0
- };
- }
-
- // componentDidMount() {
- // BDEvents.on("theme-reloaded", this.onReload);
- // }
-
- // componentWillUnmount() {
- // BDEvents.off("theme-reloaded", this.onReload);
- // }
-
- onReload(themeName) {
- if (themeName !== this.props.theme.name) return;
- this.setState({reloads: this.state.reloads + 1});
- }
-
- reload() {
- const theme = this.props.theme.name;
- const error = themeModule.reloadTheme(theme);
- if (error) mainCore.showToast(`Could not reload ${bdthemes[theme].name}. Check console for details.`, {type: "error"});
- else mainCore.showToast(`${bdthemes[theme].name} v${bdthemes[theme].version} has been reloaded.`, {type: "success"});
- // this.setState(this.state);
- this.props.theme = bdthemes[theme];
- this.onReload(this.props.theme.name);
- }
-
- makeLink(title, url) {
- const props = {className: "bda-link bda-link-website", target: "_blank"};
- if (typeof(url) == "string") props.href = url;
- if (typeof(url) == "function") props.onClick = (event) => {event.preventDefault(); event.stopPropagation(); url();};
- return BDV2.react.createElement("a", props, title);
- }
-
- render() {
- const {theme} = this.props;
- const name = theme.name;
- const description = theme.description;
- const version = theme.version;
- const author = theme.author;
- const meta = bdthemes[name];
-
- const links = [];
- if (meta.website) links.push(this.makeLink("Website", meta.website));
- if (meta.source) links.push(this.makeLink("Source", meta.source));
- if (meta.invite) {
- links.push(this.makeLink("Support Server", () => {
- const tester = /\.gg\/(.*)$/;
- let code = meta.invite;
- if (tester.test(code)) code = code.match(tester)[1];
- BDV2.LayerStack.popLayer();
- BDV2.InviteActions.acceptInviteAndTransitionToInviteChannel(code);
- }));
- }
- if (meta.donate) links.push(this.makeLink("Donate", meta.donate));
- if (meta.patreon) links.push(this.makeLink("Patreon", meta.patreon));
-
- const authorProps = {className: "bda-author"};
- if (meta.authorLink || meta.authorId) {
- authorProps.className += ` ${BDV2.anchorClasses.anchor} ${BDV2.anchorClasses.anchorUnderlineOnHover}`;
- authorProps.target = "_blank";
-
- if (meta.authorLink) authorProps.href = meta.authorLink;
- if (meta.authorId) authorProps.onClick = () => {BDV2.LayerStack.popLayer(); BDV2.openDM(meta.authorId);};
- }
-
- return BDV2.react.createElement("li", {"data-name": name, "data-version": version, "className": "settings-closed ui-switch-item"},
- BDV2.react.createElement("div", {className: "bda-header"},
- BDV2.react.createElement("span", {className: "bda-header-title"},
- BDV2.react.createElement("span", {className: "bda-name"}, name),
- " v",
- BDV2.react.createElement("span", {className: "bda-version"}, version),
- " by ",
- BDV2.react.createElement(meta.authorLink || meta.authorId ? "a" : "span", authorProps, author)
- ),
- BDV2.react.createElement("div", {className: "bda-controls"},
- !settingsCookie["fork-ps-5"] && BDV2.react.createElement(V2Components.TooltipWrap(V2Components.ReloadIcon, {color: "black", side: "top", text: "Reload"}), {className: "bd-reload-card", onClick: this.reload}),
- BDV2.react.createElement("label", {className: "ui-switch-wrapper ui-flex-child", style: {flex: "0 0 auto"}},
- BDV2.react.createElement("input", {checked: this.state.checked, onChange: this.onChange, className: "ui-switch-checkbox", type: "checkbox"}),
- BDV2.react.createElement("div", {className: this.state.checked ? "ui-switch checked" : "ui-switch"})
- )
- )
- ),
- BDV2.react.createElement("div", {className: "bda-description-wrap scroller-wrap fade"},
- BDV2.react.createElement("div", {className: "bda-description scroller"}, description)
- ),
- (!!links.length) && BDV2.react.createElement("div", {className: "bda-footer"},
- BDV2.react.createElement("span", {className: "bda-links"},
- ...(links.map((element, index) => index < links.length - 1 ? [element, " | "] : element).flat())
- )
- )
- );
- }
-
- onChange() {
- this.setState({checked: !this.state.checked});
- themeModule.toggleTheme(this.props.theme.name);
- }
-}
-
-class V2Cs_TabBar {
- static get Item() {
- return V2C_TabBarItem;
- }
- static get Header() {
- return V2C_TabBarHeader;
- }
- static get Separator() {
- return V2C_TabBarSeparator;
- }
-}
-
-
-class V2Components {
- static get SettingsGroup() {
- return V2C_SettingsGroup;
- }
- static get SectionedSettingsPanel() {
- return V2C_SectionedSettingsPanel;
- }
- static get SettingsPanel() {
- return V2C_SettingsPanel;
- }
- static get Switch() {
- return V2C_Switch;
- }
- static get Scroller() {
- return V2C_Scroller;
- }
- static get TabBar() {
- return V2Cs_TabBar;
- }
- static get SideBar() {
- return V2C_SideBar;
- }
- static get Tools() {
- return V2C_Tools;
- }
- static get SettingsTitle() {
- return V2C_SettingsTitle;
- }
- static get CssEditor() {
- return V2C_CssEditor;
- }
- static get Checkbox() {
- return V2C_Checkbox;
- }
- static get List() {
- return V2C_List;
- }
- static get PluginCard() {
- return V2C_PluginCard;
- }
- static get ThemeCard() {
- return V2C_ThemeCard;
- }
- static get ContentColumn() {
- return V2C_ContentColumn;
- }
- static get ReloadIcon() {
- return V2C_ReloadIcon;
- }
- static get XSvg() {
- return V2C_XSvg;
- }
- static get Layer() {
- return V2C_Layer;
- }
- static get SidebarView() {
- return V2C_SidebarView;
- }
- static get ServerCard() {
- return V2C_ServerCard;
- }
-
- static TooltipWrap(Component, options) {
-
- const {style = "black", side = "top", text = ""} = options;
- const id = BDV2.KeyGenerator();
-
- return class extends BDV2.reactComponent {
- constructor(props) {
- super(props);
- this.onMouseEnter = this.onMouseEnter.bind(this);
- this.onMouseLeave = this.onMouseLeave.bind(this);
- }
-
- componentDidMount() {
- this.node = BDV2.reactDom.findDOMNode(this);
- this.node.addEventListener("mouseenter", this.onMouseEnter);
- this.node.addEventListener("mouseleave", this.onMouseLeave);
- }
-
- componentWillUnmount() {
- this.node.removeEventListener("mouseenter", this.onMouseEnter);
- this.node.removeEventListener("mouseleave", this.onMouseLeave);
- }
-
- onMouseEnter() {
- if (!BDV2.Tooltips) return;
- const {left, top, width, height} = this.node.getBoundingClientRect();
- BDV2.Tooltips.show(id, {
- position: side,
- text: text,
- color: style,
- targetWidth: width,
- targetHeight: height,
- windowWidth: Utils.screenWidth,
- windowHeight: Utils.screenHeight,
- x: left,
- y: top
- });
-
- const observer = new MutationObserver((mutations) => {
- mutations.forEach((mutation) => {
- const nodes = Array.from(mutation.removedNodes);
- const directMatch = nodes.indexOf(this.node) > -1;
- const parentMatch = nodes.some(parent => parent.contains(this.node));
- if (directMatch || parentMatch) {
- this.onMouseLeave();
- observer.disconnect();
- }
- });
- });
-
- observer.observe(document.body, {subtree: true, childList: true});
- }
-
- onMouseLeave() {
- if (!BDV2.Tooltips) return;
- BDV2.Tooltips.hide(id);
- }
-
- render() {
- return BDV2.react.createElement(Component, this.props);
- }
- };
- }
-}
-
-class V2_SettingsPanel_Sidebar {
-
- constructor(onClick) {
- this.onClick = onClick;
- }
-
- get items() {
- return [{text: "Settings", id: "core"}, {text: "Emotes", id: "emotes"}, {text: "Plugins", id: "plugins"}, {text: "Themes", id: "themes"}, {text: "Custom CSS", id: "customcss"}];
- }
-
- get component() {
- return BDV2.react.createElement("span", null, BDV2.react.createElement(V2Components.SideBar, {onClick: this.onClick, headerText: "Bandaged BD", items: this.items}));
- }
-
- get root() {
- let _root = $("#bd-settings-sidebar");
- if (!_root.length) {
- if (!this.injectRoot()) return null;
- return this.root;
- }
- return _root[0];
- }
-
- injectRoot() {
- let changeLog = $("[class*='side-'] > [class*='item-']:not([class*=Danger])").last();
- if (!changeLog.length) return false;
- $("", {id: "bd-settings-sidebar"}).insertBefore(changeLog.prev());
- return true;
- }
-
- render() {
- let root = this.root;
- if (!root) {
- console.log("FAILED TO LOCATE ROOT: [class*='side-'] > [class*='item-']:not([class*=Danger])");
- return;
- }
- BDV2.reactDom.render(this.component, root);
- Utils.onRemoved(root, () => {
- BDV2.reactDom.unmountComponentAtNode(root);
- });
- }
-}
-
-class V2_SettingsPanel {
-
- constructor() {
- let self = this;
- self.sideBarOnClick = self.sideBarOnClick.bind(self);
- self.onChange = self.onChange.bind(self);
- self.updateSettings = this.updateSettings.bind(self);
- self.sidebar = new V2_SettingsPanel_Sidebar(self.sideBarOnClick);
- }
-
- get root() {
- let _root = $("#bd-settingspane-container");
- if (!_root.length) {
- if (!this.injectRoot()) return null;
- return this.root;
- }
- return _root[0];
- }
-
- injectRoot() {
- if (!$(".layer-3QrUeG .standardSidebarView-3F1I7i, .layer-3QrUeG .ui-standard-sidebar-view").length) return false;
- const root = $("", {
- "class": "contentRegion-3nDuYy content-region",
- "id": "bd-settingspane-container"
- });
- $(".layer-3QrUeG .standardSidebarView-3F1I7i, .layer-3QrUeG .ui-standard-sidebar-view").append(root);
-
- Utils.onRemoved(root[0], () => {
- BDV2.reactDom.unmountComponentAtNode(root[0]);
- });
- return true;
- }
-
- get coreSettings() {
- const settings = this.getSettings("core");
- const categories = [...new Set(settings.map(s => s.category))];
- const sections = categories.map(c => {return {title: c, settings: settings.filter(s => s.category == c)};});
- return sections;
- }
-
- get emoteSettings() {
- return this.getSettings("emote");
- }
- getSettings(category) {
- return Object.keys(settings).reduce((arr, key) => {
- let setting = settings[key];
- if (setting.cat === category && setting.implemented && !setting.hidden) {
- setting.text = key;
- arr.push(setting);
- }
- return arr;
- }, []);
- }
-
- sideBarOnClick(id) {
- let self = this;
- $(".contentRegion-3nDuYy, .content-region").first().hide();
- $(self.root).show();
- switch (id) {
- case "core":
- self.renderCoreSettings();
- break;
- case "emotes":
- self.renderEmoteSettings();
- break;
- case "customcss":
- self.renderCustomCssEditor();
- break;
- case "plugins":
- self.renderPluginPane();
- break;
- case "themes":
- self.renderThemePane();
- break;
- }
- }
-
- onClick() {}
-
- onChange(id, checked) {
- this.updateSettings(id, checked);
- }
-
- updateSettings(id, enabled) {
- settingsCookie[id] = enabled;
-
- // if (id == "bda-gs-b") {
- // if (enabled) $("body").addClass("bd-blue");
- // else $("body").removeClass("bd-blue");
- // }
-
- if (id == "bda-gs-2") {
- if (enabled) $("body").addClass("bd-minimal");
- else $("body").removeClass("bd-minimal");
- }
-
- if (id == "bda-gs-3") {
- if (enabled) $("body").addClass("bd-minimal-chan");
- else $("body").removeClass("bd-minimal-chan");
- }
-
- if (id == "bda-gs-1") {
- if (enabled) publicServersModule.addButton();
- else publicServersModule.removeButton();
- }
-
- if (id == "bda-gs-4") {
- if (enabled) voiceMode.enable();
- else voiceMode.disable();
- }
-
- if (id == "bda-gs-5") {
- if (enabled) $("#app-mount").addClass("bda-dark");
- else $("#app-mount").removeClass("bda-dark");
- }
-
- if (enabled && id == "bda-gs-6") mainCore.inject24Hour();
-
- if (id == "bda-gs-7") {
- if (enabled) mainCore.injectColoredText();
- else mainCore.removeColoredText();
- }
-
- if (id == "bda-es-4") {
- if (enabled) emoteModule.autoCapitalize();
- else emoteModule.disableAutoCapitalize();
- }
-
- if (id == "fork-ps-4") {
- if (enabled) ClassNormalizer.start();
- else ClassNormalizer.stop();
- }
-
- if (id == "fork-ps-5") {
- if (enabled) {
- ContentManager.watchContent("plugin");
- ContentManager.watchContent("theme");
- }
- else {
- ContentManager.unwatchContent("plugin");
- ContentManager.unwatchContent("theme");
- }
- }
-
- if (id == "fork-wp-1") {
- BdApi.setWindowPreference("transparent", enabled);
- if (enabled) BdApi.setWindowPreference("backgroundColor", null);
- else BdApi.setWindowPreference("backgroundColor", "#2f3136");
- }
-
- /*if (_c["fork-wp-2"]) {
- const current = BdApi.getWindowPreference("frame");
- if (current != _c["fork-wp-2"]) BdApi.setWindowPreference("frame", _c["fork-wp-2"]);
- }*/
-
-
- if (id == "bda-gs-8") {
- if (enabled) dMode.enable(settingsCookie["fork-dm-1"]);
- else dMode.disable();
- }
-
- if (id == "fork-dm-1") {
- if (settingsCookie["bda-gs-8"]) dMode.enable(enabled);
- }
-
- mainCore.saveSettings();
- }
-
- initializeSettings() {
-
- // if (settingsCookie["bda-gs-b"]) $("body").addClass("bd-blue");
- if (settingsCookie["bda-gs-2"]) $("body").addClass("bd-minimal");
- if (settingsCookie["bda-gs-3"]) $("body").addClass("bd-minimal-chan");
- if (settingsCookie["bda-gs-1"]) publicServersModule.addButton();
- if (settingsCookie["bda-gs-4"]) voiceMode.enable();
- if (settingsCookie["bda-gs-5"]) $("#app-mount").addClass("bda-dark");
- if (settingsCookie["bda-gs-6"]) mainCore.inject24Hour();
- if (settingsCookie["bda-gs-7"]) mainCore.injectColoredText();
- if (settingsCookie["bda-es-4"]) emoteModule.autoCapitalize();
- if (settingsCookie["fork-ps-4"]) ClassNormalizer.start();
-
- if (settingsCookie["fork-ps-5"]) {
- ContentManager.watchContent("plugin");
- ContentManager.watchContent("theme");
- }
-
- if (settingsCookie["bda-gs-8"]) dMode.enable(settingsCookie["fork-dm-1"]);
-
- mainCore.saveSettings();
- }
-
- renderSidebar() {
- let self = this;
- $("[class*='side-'] > [class*='item-']").off("click.v2settingspanel").on("click.v2settingspanel", () => {
- BDV2.reactDom.unmountComponentAtNode(self.root);
- $(self.root).hide();
- $(".contentRegion-3nDuYy, .content-region").first().show();
- });
- self.sidebar.render();
- }
-
- get coreComponent() {
- return BDV2.react.createElement(V2Components.Scroller, {contentColumn: true, fade: true, dark: true, children: [
- BDV2.react.createElement(V2Components.SectionedSettingsPanel, {key: "cspanel", onChange: this.onChange, sections: this.coreSettings}),
- BDV2.react.createElement(V2Components.Tools, {key: "tools"})
- ]});
- }
-
- get emoteComponent() {
- return BDV2.react.createElement(V2Components.Scroller, {
- contentColumn: true, fade: true, dark: true, children: [
- BDV2.react.createElement(V2Components.SettingsPanel, {key: "espanel", title: "Emote Settings", onChange: this.onChange, settings: this.emoteSettings, button: {
- title: "Clear Emote Cache",
- onClick: () => { emoteModule.clearEmoteData(); emoteModule.init(); quickEmoteMenu.init(); }
- }}),
- BDV2.react.createElement(V2Components.Tools, {key: "tools"})
- ]});
- }
-
- get customCssComponent() {
- return BDV2.react.createElement(V2Components.Scroller, {contentColumn: true, fade: true, dark: true, children: [BDV2.react.createElement(V2Components.CssEditor, {key: "csseditor"}), BDV2.react.createElement(V2Components.Tools, {key: "tools"})]});
- }
-
- contentComponent(type) {
- const componentElement = type == "plugins" ? this.pluginsComponent : this.themesComponent;
- const prefix = type.replace("s", "");
- const settingsList = this;
- class ContentList extends BDV2.react.Component {
- constructor(props) {
- super(props);
- this.onChange = this.onChange.bind(this);
- }
-
- componentDidMount() {
- BDEvents.on(`${prefix}-reloaded`, this.onChange);
- BDEvents.on(`${prefix}-loaded`, this.onChange);
- BDEvents.on(`${prefix}-unloaded`, this.onChange);
- }
-
- componentWillUnmount() {
- BDEvents.off(`${prefix}-reloaded`, this.onChange);
- BDEvents.off(`${prefix}-loaded`, this.onChange);
- BDEvents.off(`${prefix}-unloaded`, this.onChange);
- }
-
- onChange() {
- settingsList.sideBarOnClick(type);
- }
-
- render() {return componentElement;}
- }
- return BDV2.react.createElement(ContentList);
- }
-
- get pluginsComponent() {
- let plugins = Object.keys(bdplugins).sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase())).reduce((arr, key) => {
- arr.push(BDV2.react.createElement(V2Components.PluginCard, {key: key, plugin: bdplugins[key].plugin}));return arr;
- }, []);
- let list = BDV2.react.createElement(V2Components.List, {key: "plugin-list", className: "bda-slist", children: plugins});
- let refreshIcon = !settingsCookie["fork-ps-5"] && BDV2.react.createElement(V2Components.TooltipWrap(V2Components.ReloadIcon, {color: "black", side: "top", text: "Reload Plugin List"}), {className: "bd-reload-header", size: "18px", onClick: async () => {
- pluginModule.updatePluginList();
- this.sideBarOnClick("plugins");
- }});
- let pfBtn = BDV2.react.createElement("button", {key: "folder-button", className: "bd-pfbtn", onClick: () => { require("electron").shell.openItem(ContentManager.pluginsFolder); }}, "Open Plugin Folder");
- let contentColumn = BDV2.react.createElement(V2Components.ContentColumn, {key: "pcolumn", title: "Plugins", children: [refreshIcon, pfBtn, list]});
- return BDV2.react.createElement(V2Components.Scroller, {contentColumn: true, fade: true, dark: true, children: [contentColumn, BDV2.react.createElement(V2Components.Tools, {key: "tools"})]});
- }
-
- get themesComponent() {
- let themes = Object.keys(bdthemes).sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase())).reduce((arr, key) => {
- arr.push(BDV2.react.createElement(V2Components.ThemeCard, {key: key, theme: bdthemes[key]}));return arr;
- }, []);
- let list = BDV2.react.createElement(V2Components.List, {key: "theme-list", className: "bda-slist", children: themes});
- let refreshIcon = !settingsCookie["fork-ps-5"] && BDV2.react.createElement(V2Components.TooltipWrap(V2Components.ReloadIcon, {color: "black", side: "top", text: "Reload Theme List"}), {className: "bd-reload-header", size: "18px", onClick: async () => {
- themeModule.updateThemeList();
- this.sideBarOnClick("themes");
- }});
- let tfBtn = BDV2.react.createElement("button", {key: "folder-button", className: "bd-pfbtn", onClick: () => { require("electron").shell.openItem(ContentManager.themesFolder); }}, "Open Theme Folder");
- let contentColumn = BDV2.react.createElement(V2Components.ContentColumn, {key: "tcolumn", title: "Themes", children: [refreshIcon, tfBtn, list]});
- return BDV2.react.createElement(V2Components.Scroller, {contentColumn: true, fade: true, dark: true, children: [contentColumn, BDV2.react.createElement(V2Components.Tools, {key: "tools"})]});
- }
-
- renderCoreSettings() {
- let root = this.root;
- if (!root) {
- console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i");
- return;
- }
- BDV2.reactDom.render(this.coreComponent, root);
- }
-
- renderEmoteSettings() {
- let root = this.root;
- if (!root) {
- console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i");
- return;
- }
- BDV2.reactDom.render(this.emoteComponent, root);
- }
-
- renderCustomCssEditor() {
- let root = this.root;
- if (!root) {
- console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i");
- return;
- }
- BDV2.reactDom.render(this.customCssComponent, root);
- }
-
- renderPluginPane() {
- let root = this.root;
- if (!root) {
- console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i");
- return;
- }
- BDV2.reactDom.render(this.contentComponent("plugins"), root);
- }
-
- renderThemePane() {
- let root = this.root;
- if (!root) {
- console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i");
- return;
- }
- BDV2.reactDom.render(this.contentComponent("themes"), root);
- }
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-class V2C_Layer extends BDV2.reactComponent {
-
- constructor(props) {
- super(props);
- }
-
- componentDidMount() {
- $(window).on(`keyup.${this.props.id}`, e => {
- if (e.which === 27) {
- BDV2.reactDom.unmountComponentAtNode(this.refs.root.parentNode);
- }
- });
-
- $(`#${this.props.id}`).animate({opacity: 1}, {
- step: function(now) {
- $(this).css("transform", `scale(${1.1 - 0.1 * now}) translateZ(0px)`);
- },
- duration: 200,
- done: () => {$(`#${this.props.id}`).css("opacity", "").css("transform", "");}
- });
- }
-
- componentWillUnmount() {
- $(window).off(`keyup.${this.props.id}`);
- $(`#${this.props.id}`).animate({opacity: 0}, {
- step: function(now) {
- $(this).css("transform", `scale(${1.1 - 0.1 * now}) translateZ(0px)`);
- },
- duration: 200,
- done: () => {$(`#${this.props.rootId}`).remove();}
- });
-
- $("[class*=\"layer-\"]").removeClass("publicServersOpen").animate({opacity: 1}, {
- step: function(now) {
- $(this).css("transform", `scale(${0.07 * now + 0.93}) translateZ(0px)`);
- },
- duration: 200,
- done: () => {$("[class*=\"layer-\"]").css("opacity", "").css("transform", "");}
- });
-
- }
-
- componentWillMount() {
- $("[class*=\"layer-\"]").addClass("publicServersOpen").animate({opacity: 0}, {
- step: function(now) {
- $(this).css("transform", `scale(${0.07 * now + 0.93}) translateZ(0px)`);
- },
- duration: 200
- });
- }
-
- render() {
- return BDV2.react.createElement(
- "div",
- {className: "layer bd-layer layer-3QrUeG", id: this.props.id, ref: "root", style: {opacity: 0, transform: "scale(1.1) translateZ(0px)"}},
- this.props.children
- );
- }
-}
-
-class V2C_SidebarView extends BDV2.reactComponent {
-
- constructor(props) {
- super(props);
- }
-
- render() {
- let {sidebar, content, tools} = this.props.children;
- return BDV2.react.createElement(
- "div",
- {className: "standardSidebarView-3F1I7i ui-standard-sidebar-view"},
- BDV2.react.createElement(
- "div",
- {className: "sidebarRegion-VFTUkN sidebar-region"},
- BDV2.react.createElement(V2Components.Scroller, {key: "sidebarScroller", ref: "sidebarScroller", sidebar: true, fade: sidebar.fade || true, dark: sidebar.dark || true, children: sidebar.component})
- ),
- BDV2.react.createElement("div", {className: "contentRegion-3nDuYy content-region"},
- BDV2.react.createElement("div", {className: "contentTransitionWrap-3hqOEW content-transition-wrap"},
- BDV2.react.createElement("div", {className: "scrollerWrap-2lJEkd firefoxFixScrollFlex-cnI2ix contentRegionScrollerWrap-3YZXdm content-region-scroller-wrap scrollerThemed-2oenus themeGhost-28MSn0 scrollerTrack-1ZIpsv"},
- BDV2.react.createElement("div", {className: "scroller-2FKFPG firefoxFixScrollFlex-cnI2ix contentRegionScroller-26nc1e content-region-scroller scroller", ref: "contentScroller"},
- BDV2.react.createElement("div", {className: "contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"}, content.component),
- tools.component
- )
- )
- )
- )
- );
- }
-}
-
-
-class V2_PublicServers {
-
- constructor() {
- this._appendButton = this._appendButton.bind(this);
- }
-
- get component() {
- return BDV2.react.createElement(V2Components.Layer, {rootId: "pubslayerroot", id: "pubslayer", children: BDV2.react.createElement(V2C_PublicServers, {rootId: "pubslayerroot"})});
- }
-
- get root() {
- let _root = document.getElementById("pubslayerroot");
- if (!_root) {
- if (!this.injectRoot()) return null;
- return this.root;
- }
- return _root;
- }
-
- injectRoot() {
- if (!$(".layers, .layers-3iHuyZ").length) return false;
- $(".layers, .layers-3iHuyZ").append($("", {
- id: "pubslayerroot"
- }));
- return true;
- }
-
- render() {
- // BdApi.alert("Broken", "Sorry but the Public Servers modules is currently broken, I recommend disabling this feature for now.");
- let root = this.root;
- if (!root) {
- console.log("FAILED TO LOCATE ROOT: .layers");
- return;
- }
- BDV2.reactDom.render(this.component, root);
- }
-
- get button() {
- let btn = $("", {
- "class": BDV2.guildClasses.listItem,
- "id": "bd-pub-li",
- "style": settingsCookie["bda-gs-1"] ? "" : "display: none;"
- }).append($("", {
- "class": "wrapper-25eVIn " + BDV2.guildClasses.circleButtonMask,
- "text": "public",
- "id": "bd-pub-button",
- "click": () => { this.render(); }
- }));
-
- return btn;
- }
-
- _appendButton() {
- if ($("#bd-pub-li").length) return;
- const wrapper = BDV2.guildClasses.wrapper.split(" ")[0];
- const guilds = $(`.${wrapper} .scroller-2FKFPG >:first-child`);
- guilds.after(this.button);
- }
-
- addButton() {
- if (this.guildPatch) return;
- const GuildList = BdApi.findModuleByDisplayName("Guilds");
- this.guildPatch = BdApi.monkeyPatch(GuildList.prototype, "render", {after: this._appendButton});
- this._appendButton();
- }
-
- removeButton() {
- this.guildPatch();
- delete this.guildPatch;
- $("#bd-pub-li").remove();
- }
-}
-
-
-class V2C_ServerCard extends BDV2.reactComponent {
- constructor(props) {
- super(props);
- if (!this.props.server.iconUrl) this.props.server.iconUrl = this.props.fallback;
- this.state = {
- imageError: false,
- joined: this.props.guildList.includes(this.props.server.identifier)
- };
- }
-
- render() {
- let {server} = this.props;
- return BDV2.react.createElement(
- "div", // cardPrimary-1Hv-to
- {className: `card-3Qj_Yx cardPrimary-1Hv-to marginBottom8-AtZOdT bd-server-card${server.pinned ? " bd-server-card-pinned" : ""}`},
- // BDV2.react.createElement(
- // "div",
- // { className: "flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY flex-1O1GKY directionRow-3v3tfG justifyStart-2yIZo0 alignStretch-1hwxMa noWrap-3jynv6" },
- BDV2.react.createElement("img", {ref: "img", className: "bd-server-image", src: server.iconUrl, onError: this.handleError.bind(this)}),
- BDV2.react.createElement(
- "div",
- {className: "flexChild-faoVW3 bd-server-content"},
- BDV2.react.createElement(
- "div",
- {className: "flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-header"},
- BDV2.react.createElement(
- "h5",
- {className: "h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-name"},
- server.name
- ),
- BDV2.react.createElement(
- "h5",
- {className: "h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-member-count"},
- server.members,
- " Members"
- )
- ),
- BDV2.react.createElement(
- "div",
- {className: "flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6"},
- BDV2.react.createElement(
- "div",
- {className: "scrollerWrap-2lJEkd scrollerThemed-2oenus themeGhostHairline-DBD-2d scrollerFade-1Ijw5y bd-server-description-container"},
- BDV2.react.createElement(
- "div",
- {className: "scroller-2FKFPG scroller bd-server-description"},
- server.description
- )
- )
- ),
- BDV2.react.createElement(
- "div",
- {className: "flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-footer"},
- BDV2.react.createElement(
- "div",
- {className: "flexChild-faoVW3 bd-server-tags", style: {flex: "1 1 auto"}},
- server.categories.join(", ")
- ),
- this.state.joined && BDV2.react.createElement(
- "button",
- {type: "button", className: "button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN colorGreen-29iAKY", style: {minHeight: "12px", marginTop: "4px", backgroundColor: "#3ac15c"}},
- BDV2.react.createElement(
- "div",
- {className: "ui-button-contents"},
- "Joined"
- )
- ),
- server.error && BDV2.react.createElement(
- "button",
- {type: "button", className: "button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN disabled-9aF2ug", style: {minHeight: "12px", marginTop: "4px", backgroundColor: "#c13a3a"}},
- BDV2.react.createElement(
- "div",
- {className: "ui-button-contents"},
- "Error"
- )
- ),
- !server.error && !this.state.joined && BDV2.react.createElement(
- "button",
- {type: "button", className: "button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN", style: {minHeight: "12px", marginTop: "4px"}, onClick: () => {this.join();}},
- BDV2.react.createElement(
- "div",
- {className: "ui-button-contents"},
- "Join"
- )
- )
- )
- )
- // )
- );
- }
-
- handleError() {
- this.props.server.iconUrl = this.props.fallback;
- this.setState({imageError: true});
- }
-
- join() {
- this.props.join(this);
- //this.setState({joined: true});
- }
-}
-
-class V2C_PublicServers extends BDV2.reactComponent {
-
- constructor(props) {
- super(props);
- this.setInitialState();
- this.close = this.close.bind(this);
- this.changeCategory = this.changeCategory.bind(this);
- this.search = this.search.bind(this);
- this.searchKeyDown = this.searchKeyDown.bind(this);
- this.checkConnection = this.checkConnection.bind(this);
- this.join = this.join.bind(this);
- this.connect = this.connect.bind(this);
-
- this.GuildStore = BDV2.WebpackModules.findByUniqueProperties(["getGuilds"]);
- this.AvatarDefaults = BDV2.WebpackModules.findByUniqueProperties(["getUserAvatarURL", "DEFAULT_AVATARS"]);
- this.InviteActions = BDV2.WebpackModules.findByUniqueProperties(["acceptInvite"]);
- this.SortedGuildStore = BDV2.WebpackModules.findByUniqueProperties(["getSortedGuilds"]);
- }
-
- componentDidMount() {
- this.checkConnection();
- }
-
- setInitialState() {
- this.state = {
- selectedCategory: -1,
- title: "Loading...",
- loading: true,
- servers: [],
- next: null,
- connection: {
- state: 0,
- user: null
- }
- };
- }
-
- close() {
- BDV2.reactDom.unmountComponentAtNode(document.getElementById(this.props.rootId));
- }
-
- search(query, clear) {
- let self = this;
-
- $.ajax({
- method: "GET",
- url: `${self.endPoint}${query}${query ? "&schema=new" : "?schema=new"}`,
- success: data => {
- let servers = data.results.reduce((arr, server) => {
- server.joined = false;
- arr.push(server);
- // arr.push();
- return arr;
- }, []);
-
- if (!clear) {
- servers = self.state.servers.concat(servers);
- }
- else {
- //servers.unshift(self.bdServer);
- }
-
- let end = data.size + data.from;
- data.next = `?from=${end}`;
- if (self.state.term) data.next += `&term=${self.state.term}`;
- if (self.state.selectedCategory) data.next += `&category=${self.categoryButtons[self.state.selectedCategory]}`;
- if (end >= data.total) {
- end = data.total;
- data.next = null;
- }
-
- let title = `Showing 1-${end} of ${data.total} results in ${self.categoryButtons[self.state.selectedCategory]}`;
- if (self.state.term) title += ` for ${self.state.term}`;
-
- self.setState({
- loading: false,
- title: title,
- servers: servers,
- next: data.next
- });
-
- if (clear) {
- //console.log(self);
- self.refs.sbv.refs.contentScroller.scrollTop = 0;
- }
- },
- error: () => {
- self.setState({
- loading: false,
- title: "Failed to load servers. Check console for details"
- });
- }
- });
- }
-
- join(serverCard) {
- if (serverCard.props.pinned) return this.InviteActions.acceptInvite(serverCard.props.invite_code);
- $.ajax({
- method: "GET",
- url: `${this.joinEndPoint}/${serverCard.props.server.identifier}`,
- headers: {
- "Accept": "application/json;",
- "Content-Type": "application/json;" ,
- "x-discord-token": this.state.connection.user.accessToken
- },
- crossDomain: true,
- xhrFields: {
- withCredentials: true
- },
- success: () => {
- serverCard.setState({joined: true});
- }
- });
- }
-
- connect() {
- let self = this;
- let options = self.windowOptions;
- options.x = Math.round(window.screenX + window.innerWidth / 2 - options.width / 2);
- options.y = Math.round(window.screenY + window.innerHeight / 2 - options.height / 2);
-
- self.joinWindow = new (window.require("electron").remote.BrowserWindow)(options);
- const url = "https://auth.discordservers.com/connect?scopes=guilds.join&previousUrl=https://auth.discordservers.com/info";
- self.joinWindow.webContents.on("did-navigate", (event, url) => {
- if (url != "https://auth.discordservers.com/info") return;
- self.joinWindow.close();
- self.checkConnection();
- });
- self.joinWindow.loadURL(url);
- }
-
- get windowOptions() {
- return {
- width: 500,
- height: 550,
- backgroundColor: "#282b30",
- show: true,
- resizable: false,
- maximizable: false,
- minimizable: false,
- alwaysOnTop: true,
- frame: false,
- center: false,
- webPreferences: {
- nodeIntegration: false
- }
- };
- }
-
- get bdServer() {
- let server = {
- name: "BetterDiscord",
- online: "7500+",
- members: "20000+",
- categories: ["community", "programming", "support"],
- description: "Official BetterDiscord server for support etc",
- identifier: "86004744966914048",
- iconUrl: "https://cdn.discordapp.com/icons/86004744966914048/292e7f6bfff2b71dfd13e508a859aedd.webp",
- nativejoin: true,
- invite_code: "0Tmfo5ZbORCRqbAd",
- pinned: true
- };
- let guildList = this.SortedGuildStore.getFlattenedGuildIds();
- let defaultList = this.AvatarDefaults.DEFAULT_AVATARS;
- return BDV2.react.createElement(V2Components.ServerCard, {server: server, pinned: true, join: this.join, guildList: guildList, fallback: defaultList[Math.floor(Math.random() * 5)]});
- }
-
- get endPoint() {
- return "https://search.discordservers.com";
- }
-
- get joinEndPoint() {
- return "https://j.discordservers.com";
- }
-
- get connectEndPoint() {
- return "https://join.discordservers.com/connect";
- }
-
- checkConnection() {
- let self = this;
- try {
- $.ajax({
- method: "GET",
- url: `https://auth.discordservers.com/info`,
- headers: {
- "Accept": "application/json;",
- "Content-Type": "application/json;"
- },
- crossDomain: true,
- xhrFields: {
- withCredentials: true
- },
- success: data => {
- // Utils.log("PublicServer", "Got data: " + JSON.stringify(data));
- self.setState({
- selectedCategory: 0,
- connection: {
- state: 2,
- user: data
- }
- });
- self.search("", true);
-
- },
- error: () => {
- self.setState({
- title: "Not connected to discordservers.com!",
- loading: true,
- selectedCategory: -1,
- connection: {
- state: 1,
- user: null
- }
- });
- }
- });
- }
- catch (error) {
- self.setState({
- title: "Not connected to discordservers.com!",
- loading: true,
- selectedCategory: -1,
- connection: {
- state: 1,
- user: null
- }
- });
- }
- }
-
- render() {
- return BDV2.react.createElement(V2Components.SidebarView, {ref: "sbv", children: this.component});
- }
-
- get component() {
- return {
- sidebar: {
- component: this.sidebar
- },
- content: {
- component: this.content
- },
- tools: {
- component: BDV2.react.createElement(V2Components.Tools, {key: "pt", ref: "tools", onClick: this.close})
- }
- };
- }
-
- get sidebar() {
- return BDV2.react.createElement(
- "div",
- {className: "sidebar", key: "ps"},
- BDV2.react.createElement(
- "div",
- {className: "ui-tab-bar SIDE"},
- BDV2.react.createElement(
- "div",
- {className: "ui-tab-bar-header", style: {fontSize: "16px"}},
- "Public Servers"
- ),
- BDV2.react.createElement(V2Components.TabBar.Separator, null),
- this.searchInput,
- BDV2.react.createElement(V2Components.TabBar.Separator, null),
- BDV2.react.createElement(V2Components.TabBar.Header, {text: "Categories"}),
- this.categoryButtons.map((value, index) => {
- return BDV2.react.createElement(V2Components.TabBar.Item, {id: index, onClick: this.changeCategory, key: index, text: value, selected: this.state.selectedCategory === index});
- }),
- BDV2.react.createElement(V2Components.TabBar.Separator, null),
- this.footer,
- this.connection
- )
- );
- }
-
- get searchInput() {
- return BDV2.react.createElement(
- "div",
- {className: "ui-form-item"},
- BDV2.react.createElement(
- "div",
- {className: "ui-text-input flex-vertical", style: {width: "172px", marginLeft: "10px"}},
- BDV2.react.createElement("input", {ref: "searchinput", onKeyDown: this.searchKeyDown, onChange: () => {}, type: "text", className: "input default", placeholder: "Search...", maxLength: "50"})
- )
- );
- }
-
- searchKeyDown(e) {
- let self = this;
- if (self.state.loading || e.which !== 13) return;
- self.setState({
- loading: true,
- title: "Loading...",
- term: e.target.value
- });
- let query = `?term=${e.target.value}`;
- if (self.state.selectedCategory !== 0) {
- query += `&category=${self.categoryButtons[self.state.selectedCategory]}`;
- }
- self.search(query, true);
- }
-
- 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"];
- }
-
- changeCategory(id) {
- let self = this;
- if (self.state.loading) return;
- self.refs.searchinput.value = "";
- self.setState({
- loading: true,
- selectedCategory: id,
- title: "Loading...",
- term: null
- });
- if (id === 0) {
- self.search("", true);
- return;
- }
- self.search(`?category=${self.categoryButtons[id]}`, true);
- }
-
- get content() {
- let self = this;
- let guildList = this.SortedGuildStore.getFlattenedGuildIds();
- let defaultList = this.AvatarDefaults.DEFAULT_AVATARS;
- if (self.state.connection.state === 1) return self.notConnected;
- return [BDV2.react.createElement(
- "div",
- {ref: "content", key: "pc", className: "contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"},
- BDV2.react.createElement(V2Components.SettingsTitle, {text: self.state.title}),
- self.bdServer,
- self.state.servers.map((server) => {
- return BDV2.react.createElement(V2Components.ServerCard, {key: server.identifier, server: server, join: self.join, guildList: guildList, fallback: defaultList[Math.floor(Math.random() * 5)]});
- }),
- self.state.next && BDV2.react.createElement(
- "button",
- {type: "button", onClick: () => {
- if (self.state.loading) return;self.setState({loading: true}); self.search(self.state.next, false);
- }, className: "ui-button filled brand small grow", style: {width: "100%", marginTop: "10px", marginBottom: "10px"}},
- BDV2.react.createElement(
- "div",
- {className: "ui-button-contents"},
- self.state.loading ? "Loading" : "Load More"
- )
- ),
- self.state.servers.length > 0 && BDV2.react.createElement(V2Components.SettingsTitle, {text: self.state.title})
- )];
- }
-
- get notConnected() {
- let self = this;
- //return BDV2.react.createElement(V2Components.SettingsTitle, { text: self.state.title });
- return [BDV2.react.createElement(
- "div",
- {key: "ncc", ref: "content", className: "contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"},
- BDV2.react.createElement(
- "h2",
- {className: "ui-form-title h2 margin-reset margin-bottom-20"},
- "Not connected to discordservers.com!",
- BDV2.react.createElement(
- "button",
- {
- onClick: self.connect,
- type: "button",
- className: "ui-button filled brand small grow",
- style: {
- display: "inline-block",
- minHeight: "18px",
- marginLeft: "10px",
- lineHeight: "14px"
- }
- },
- BDV2.react.createElement(
- "div",
- {className: "ui-button-contents"},
- "Connect"
- )
- )
- ), self.bdServer
- )];
- }
-
- get footer() {
- return BDV2.react.createElement(
- "div",
- {className: "ui-tab-bar-header"},
- BDV2.react.createElement(
- "a",
- {href: "https://discordservers.com", target: "_blank"},
- "Discordservers.com"
- )
- );
- }
-
- get connection() {
- let self = this;
- let {connection} = self.state;
- if (connection.state !== 2) return BDV2.react.createElement("span", null);
-
- return BDV2.react.createElement(
- "span",
- null,
- BDV2.react.createElement(V2Components.TabBar.Separator, null),
- BDV2.react.createElement(
- "span",
- {style: {color: "#b9bbbe", fontSize: "10px", marginLeft: "10px"}},
- "Connected as: ",
- `${connection.user.username}#${connection.user.discriminator}`
- ),
- BDV2.react.createElement(
- "div",
- {style: {padding: "5px 10px 0 10px"}},
- BDV2.react.createElement(
- "button",
- {style: {width: "100%", minHeight: "20px"}, type: "button", className: "ui-button filled brand small grow"},
- BDV2.react.createElement(
- "div",
- {className: "ui-button-contents", onClick: self.connect},
- "Reconnect"
- )
- )
- )
- );
-}
-}
+/******/ })["default"];
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 86023ef8..681e8db6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5,238 +5,1213 @@
"requires": true,
"dependencies": {
"@babel/code-frame": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
- "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
+ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
"dev": true,
"requires": {
- "@babel/highlight": "^7.0.0"
+ "@babel/highlight": "^7.8.3"
+ }
+ },
+ "@babel/compat-data": {
+ "version": "7.8.5",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.8.5.tgz",
+ "integrity": "sha512-jWYUqQX/ObOhG1UiEkbH5SANsE/8oKXiQWjj7p7xgj9Zmnt//aUvyz4dBkK0HNsS8/cbyC5NmmH87VekW+mXFg==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.8.5",
+ "invariant": "^2.2.4",
+ "semver": "^5.5.0"
}
},
"@babel/core": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.1.2.tgz",
- "integrity": "sha512-IFeSSnjXdhDaoysIlev//UzHZbdEmm7D0EIH2qtse9xK7mXEZQpYjs2P00XlP1qYsYvid79p+Zgg6tz1mp6iVw==",
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.4.tgz",
+ "integrity": "sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA==",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.0.0",
- "@babel/generator": "^7.1.2",
- "@babel/helpers": "^7.1.2",
- "@babel/parser": "^7.1.2",
- "@babel/template": "^7.1.2",
- "@babel/traverse": "^7.1.0",
- "@babel/types": "^7.1.2",
- "convert-source-map": "^1.1.0",
- "debug": "^3.1.0",
- "json5": "^0.5.0",
- "lodash": "^4.17.10",
+ "@babel/code-frame": "^7.8.3",
+ "@babel/generator": "^7.8.4",
+ "@babel/helpers": "^7.8.4",
+ "@babel/parser": "^7.8.4",
+ "@babel/template": "^7.8.3",
+ "@babel/traverse": "^7.8.4",
+ "@babel/types": "^7.8.3",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.1",
+ "json5": "^2.1.0",
+ "lodash": "^4.17.13",
"resolve": "^1.3.2",
"semver": "^5.4.1",
"source-map": "^0.5.0"
},
"dependencies": {
+ "convert-source-map": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
+ "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.1"
+ }
+ },
"debug": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
- "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
- "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
- "dev": true
- },
- "semver": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
- "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
}
}
},
"@babel/generator": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.1.3.tgz",
- "integrity": "sha512-ZoCZGcfIJFJuZBqxcY9OjC1KW2lWK64qrX1o4UYL3yshVhwKFYgzpWZ0vvtGMNJdTlvkw0W+HR1VnYN8q3QPFQ==",
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz",
+ "integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==",
"dev": true,
"requires": {
- "@babel/types": "^7.1.3",
+ "@babel/types": "^7.8.3",
"jsesc": "^2.5.1",
- "lodash": "^4.17.10",
- "source-map": "^0.5.0",
- "trim-right": "^1.0.1"
- },
- "dependencies": {
- "lodash": {
- "version": "4.17.15",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
- "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
- "dev": true
- }
+ "lodash": "^4.17.13",
+ "source-map": "^0.5.0"
+ }
+ },
+ "@babel/helper-annotate-as-pure": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz",
+ "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-builder-binary-assignment-operator-visitor": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz",
+ "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-explode-assignable-expression": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-builder-react-jsx": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.8.3.tgz",
+ "integrity": "sha512-JT8mfnpTkKNCboTqZsQTdGo3l3Ik3l7QIt9hh0O9DYiwVel37VoJpILKM4YFbP2euF32nkQSb+F9cUk9b7DDXQ==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3",
+ "esutils": "^2.0.0"
+ }
+ },
+ "@babel/helper-call-delegate": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.8.3.tgz",
+ "integrity": "sha512-6Q05px0Eb+N4/GTyKPPvnkig7Lylw+QzihMpws9iiZQv7ZImf84ZsZpQH7QoWN4n4tm81SnSzPgHw2qtO0Zf3A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-hoist-variables": "^7.8.3",
+ "@babel/traverse": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-compilation-targets": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.4.tgz",
+ "integrity": "sha512-3k3BsKMvPp5bjxgMdrFyq0UaEO48HciVrOVF0+lon8pp95cyJ2ujAh0TrBHNMnJGT2rr0iKOJPFFbSqjDyf/Pg==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.8.4",
+ "browserslist": "^4.8.5",
+ "invariant": "^2.2.4",
+ "levenary": "^1.1.1",
+ "semver": "^5.5.0"
+ }
+ },
+ "@babel/helper-create-regexp-features-plugin": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.3.tgz",
+ "integrity": "sha512-Gcsm1OHCUr9o9TcJln57xhWHtdXbA2pgQ58S0Lxlks0WMGNXuki4+GLfX0p+L2ZkINUGZvfkz8rzoqJQSthI+Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-regex": "^7.8.3",
+ "regexpu-core": "^4.6.0"
+ }
+ },
+ "@babel/helper-define-map": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz",
+ "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-function-name": "^7.8.3",
+ "@babel/types": "^7.8.3",
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/helper-explode-assignable-expression": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz",
+ "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==",
+ "dev": true,
+ "requires": {
+ "@babel/traverse": "^7.8.3",
+ "@babel/types": "^7.8.3"
}
},
"@babel/helper-function-name": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz",
- "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==",
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz",
+ "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==",
"dev": true,
"requires": {
- "@babel/helper-get-function-arity": "^7.0.0",
- "@babel/template": "^7.1.0",
- "@babel/types": "^7.0.0"
+ "@babel/helper-get-function-arity": "^7.8.3",
+ "@babel/template": "^7.8.3",
+ "@babel/types": "^7.8.3"
}
},
"@babel/helper-get-function-arity": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz",
- "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==",
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz",
+ "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==",
"dev": true,
"requires": {
- "@babel/types": "^7.0.0"
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-hoist-variables": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz",
+ "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-member-expression-to-functions": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz",
+ "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-module-imports": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz",
+ "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-module-transforms": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.8.3.tgz",
+ "integrity": "sha512-C7NG6B7vfBa/pwCOshpMbOYUmrYQDfCpVL/JCRu0ek8B5p8kue1+BCXpg2vOYs7w5ACB9GTOBYQ5U6NwrMg+3Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.8.3",
+ "@babel/helper-simple-access": "^7.8.3",
+ "@babel/helper-split-export-declaration": "^7.8.3",
+ "@babel/template": "^7.8.3",
+ "@babel/types": "^7.8.3",
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/helper-optimise-call-expression": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz",
+ "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ },
+ "@babel/helper-regex": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz",
+ "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/helper-remap-async-to-generator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz",
+ "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.8.3",
+ "@babel/helper-wrap-function": "^7.8.3",
+ "@babel/template": "^7.8.3",
+ "@babel/traverse": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-replace-supers": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.3.tgz",
+ "integrity": "sha512-xOUssL6ho41U81etpLoT2RTdvdus4VfHamCuAm4AHxGr+0it5fnwoVdwUJ7GFEqCsQYzJUhcbsN9wB9apcYKFA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-member-expression-to-functions": "^7.8.3",
+ "@babel/helper-optimise-call-expression": "^7.8.3",
+ "@babel/traverse": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-simple-access": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz",
+ "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.8.3",
+ "@babel/types": "^7.8.3"
}
},
"@babel/helper-split-export-declaration": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz",
- "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==",
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz",
+ "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==",
"dev": true,
"requires": {
- "@babel/types": "^7.0.0"
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-wrap-function": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz",
+ "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-function-name": "^7.8.3",
+ "@babel/template": "^7.8.3",
+ "@babel/traverse": "^7.8.3",
+ "@babel/types": "^7.8.3"
}
},
"@babel/helpers": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.1.2.tgz",
- "integrity": "sha512-Myc3pUE8eswD73aWcartxB16K6CGmHDv9KxOmD2CeOs/FaEAQodr3VYGmlvOmog60vNQ2w8QbatuahepZwrHiA==",
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz",
+ "integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==",
"dev": true,
"requires": {
- "@babel/template": "^7.1.2",
- "@babel/traverse": "^7.1.0",
- "@babel/types": "^7.1.2"
+ "@babel/template": "^7.8.3",
+ "@babel/traverse": "^7.8.4",
+ "@babel/types": "^7.8.3"
}
},
"@babel/highlight": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz",
- "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==",
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
+ "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
"dev": true,
"requires": {
"chalk": "^2.0.0",
"esutils": "^2.0.2",
"js-tokens": "^4.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
- "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
}
},
"@babel/parser": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.3.tgz",
- "integrity": "sha512-gqmspPZOMW3MIRb9HlrnbZHXI1/KHTOroBwN1NcLL6pWxzqzEKGvRTq0W/PxS45OtQGbaFikSQpkS5zbnsQm2w==",
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz",
+ "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==",
"dev": true
},
- "@babel/template": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.1.2.tgz",
- "integrity": "sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag==",
+ "@babel/plugin-proposal-async-generator-functions": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz",
+ "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.0.0",
- "@babel/parser": "^7.1.2",
- "@babel/types": "^7.1.2"
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/helper-remap-async-to-generator": "^7.8.3",
+ "@babel/plugin-syntax-async-generators": "^7.8.0"
+ }
+ },
+ "@babel/plugin-proposal-dynamic-import": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz",
+ "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.0"
+ }
+ },
+ "@babel/plugin-proposal-json-strings": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz",
+ "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-syntax-json-strings": "^7.8.0"
+ }
+ },
+ "@babel/plugin-proposal-nullish-coalescing-operator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz",
+ "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0"
+ }
+ },
+ "@babel/plugin-proposal-object-rest-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz",
+ "integrity": "sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.0"
+ }
+ },
+ "@babel/plugin-proposal-optional-catch-binding": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz",
+ "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.0"
+ }
+ },
+ "@babel/plugin-proposal-optional-chaining": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz",
+ "integrity": "sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.0"
+ }
+ },
+ "@babel/plugin-proposal-unicode-property-regex": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz",
+ "integrity": "sha512-1/1/rEZv2XGweRwwSkLpY+s60za9OZ1hJs4YDqFHCw0kYWYwL5IFljVY1MYBL+weT1l9pokDO2uhSTLVxzoHkQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-syntax-async-generators": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+ "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-dynamic-import": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+ "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-json-strings": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+ "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-jsx": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz",
+ "integrity": "sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-syntax-nullish-coalescing-operator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+ "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+ "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-optional-chaining": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+ "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-top-level-await": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz",
+ "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-arrow-functions": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz",
+ "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-async-to-generator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz",
+ "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/helper-remap-async-to-generator": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz",
+ "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-block-scoping": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz",
+ "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/plugin-transform-classes": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.3.tgz",
+ "integrity": "sha512-SjT0cwFJ+7Rbr1vQsvphAHwUHvSUPmMjMU/0P59G8U2HLFqSa082JO7zkbDNWs9kH/IUqpHI6xWNesGf8haF1w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.8.3",
+ "@babel/helper-define-map": "^7.8.3",
+ "@babel/helper-function-name": "^7.8.3",
+ "@babel/helper-optimise-call-expression": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/helper-replace-supers": "^7.8.3",
+ "@babel/helper-split-export-declaration": "^7.8.3",
+ "globals": "^11.1.0"
+ }
+ },
+ "@babel/plugin-transform-computed-properties": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz",
+ "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-destructuring": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.3.tgz",
+ "integrity": "sha512-H4X646nCkiEcHZUZaRkhE2XVsoz0J/1x3VVujnn96pSoGCtKPA99ZZA+va+gK+92Zycd6OBKCD8tDb/731bhgQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-dotall-regex": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz",
+ "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-duplicate-keys": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz",
+ "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz",
+ "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-for-of": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.4.tgz",
+ "integrity": "sha512-iAXNlOWvcYUYoV8YIxwS7TxGRJcxyl8eQCfT+A5j8sKUzRFvJdcyjp97jL2IghWSRDaL2PU2O2tX8Cu9dTBq5A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-function-name": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz",
+ "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-function-name": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-literals": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz",
+ "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-member-expression-literals": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz",
+ "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-modules-amd": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz",
+ "integrity": "sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "babel-plugin-dynamic-import-node": "^2.3.0"
+ }
+ },
+ "@babel/plugin-transform-modules-commonjs": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz",
+ "integrity": "sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/helper-simple-access": "^7.8.3",
+ "babel-plugin-dynamic-import-node": "^2.3.0"
+ }
+ },
+ "@babel/plugin-transform-modules-systemjs": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz",
+ "integrity": "sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-hoist-variables": "^7.8.3",
+ "@babel/helper-module-transforms": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "babel-plugin-dynamic-import-node": "^2.3.0"
+ }
+ },
+ "@babel/plugin-transform-modules-umd": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz",
+ "integrity": "sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz",
+ "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-new-target": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz",
+ "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-object-super": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz",
+ "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/helper-replace-supers": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-parameters": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.4.tgz",
+ "integrity": "sha512-IsS3oTxeTsZlE5KqzTbcC2sV0P9pXdec53SU+Yxv7o/6dvGM5AkTotQKhoSffhNgZ/dftsSiOoxy7evCYJXzVA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-call-delegate": "^7.8.3",
+ "@babel/helper-get-function-arity": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-property-literals": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz",
+ "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-react-display-name": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz",
+ "integrity": "sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-react-jsx": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.8.3.tgz",
+ "integrity": "sha512-r0h+mUiyL595ikykci+fbwm9YzmuOrUBi0b+FDIKmi3fPQyFokWVEMJnRWHJPPQEjyFJyna9WZC6Viv6UHSv1g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-builder-react-jsx": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-syntax-jsx": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-react-jsx-self": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.8.3.tgz",
+ "integrity": "sha512-01OT7s5oa0XTLf2I8XGsL8+KqV9lx3EZV+jxn/L2LQ97CGKila2YMroTkCEIE0HV/FF7CMSRsIAybopdN9NTdg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-syntax-jsx": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-react-jsx-source": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.8.3.tgz",
+ "integrity": "sha512-PLMgdMGuVDtRS/SzjNEQYUT8f4z1xb2BAT54vM1X5efkVuYBf5WyGUMbpmARcfq3NaglIwz08UVQK4HHHbC6ag==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-syntax-jsx": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-regenerator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz",
+ "integrity": "sha512-qt/kcur/FxrQrzFR432FGZznkVAjiyFtCOANjkAKwCbt465L6ZCiUQh2oMYGU3Wo8LRFJxNDFwWn106S5wVUNA==",
+ "dev": true,
+ "requires": {
+ "regenerator-transform": "^0.14.0"
+ }
+ },
+ "@babel/plugin-transform-reserved-words": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz",
+ "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-shorthand-properties": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz",
+ "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz",
+ "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-sticky-regex": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz",
+ "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/helper-regex": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-template-literals": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz",
+ "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-typeof-symbol": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz",
+ "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-unicode-regex": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz",
+ "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/preset-env": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.8.4.tgz",
+ "integrity": "sha512-HihCgpr45AnSOHRbS5cWNTINs0TwaR8BS8xIIH+QwiW8cKL0llV91njQMpeMReEPVs+1Ao0x3RLEBLtt1hOq4w==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.8.4",
+ "@babel/helper-compilation-targets": "^7.8.4",
+ "@babel/helper-module-imports": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-proposal-async-generator-functions": "^7.8.3",
+ "@babel/plugin-proposal-dynamic-import": "^7.8.3",
+ "@babel/plugin-proposal-json-strings": "^7.8.3",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-proposal-object-rest-spread": "^7.8.3",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.8.3",
+ "@babel/plugin-proposal-optional-chaining": "^7.8.3",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.8.3",
+ "@babel/plugin-syntax-async-generators": "^7.8.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.0",
+ "@babel/plugin-syntax-json-strings": "^7.8.0",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.0",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.0",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.0",
+ "@babel/plugin-syntax-top-level-await": "^7.8.3",
+ "@babel/plugin-transform-arrow-functions": "^7.8.3",
+ "@babel/plugin-transform-async-to-generator": "^7.8.3",
+ "@babel/plugin-transform-block-scoped-functions": "^7.8.3",
+ "@babel/plugin-transform-block-scoping": "^7.8.3",
+ "@babel/plugin-transform-classes": "^7.8.3",
+ "@babel/plugin-transform-computed-properties": "^7.8.3",
+ "@babel/plugin-transform-destructuring": "^7.8.3",
+ "@babel/plugin-transform-dotall-regex": "^7.8.3",
+ "@babel/plugin-transform-duplicate-keys": "^7.8.3",
+ "@babel/plugin-transform-exponentiation-operator": "^7.8.3",
+ "@babel/plugin-transform-for-of": "^7.8.4",
+ "@babel/plugin-transform-function-name": "^7.8.3",
+ "@babel/plugin-transform-literals": "^7.8.3",
+ "@babel/plugin-transform-member-expression-literals": "^7.8.3",
+ "@babel/plugin-transform-modules-amd": "^7.8.3",
+ "@babel/plugin-transform-modules-commonjs": "^7.8.3",
+ "@babel/plugin-transform-modules-systemjs": "^7.8.3",
+ "@babel/plugin-transform-modules-umd": "^7.8.3",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3",
+ "@babel/plugin-transform-new-target": "^7.8.3",
+ "@babel/plugin-transform-object-super": "^7.8.3",
+ "@babel/plugin-transform-parameters": "^7.8.4",
+ "@babel/plugin-transform-property-literals": "^7.8.3",
+ "@babel/plugin-transform-regenerator": "^7.8.3",
+ "@babel/plugin-transform-reserved-words": "^7.8.3",
+ "@babel/plugin-transform-shorthand-properties": "^7.8.3",
+ "@babel/plugin-transform-spread": "^7.8.3",
+ "@babel/plugin-transform-sticky-regex": "^7.8.3",
+ "@babel/plugin-transform-template-literals": "^7.8.3",
+ "@babel/plugin-transform-typeof-symbol": "^7.8.4",
+ "@babel/plugin-transform-unicode-regex": "^7.8.3",
+ "@babel/types": "^7.8.3",
+ "browserslist": "^4.8.5",
+ "core-js-compat": "^3.6.2",
+ "invariant": "^2.2.2",
+ "levenary": "^1.1.1",
+ "semver": "^5.5.0"
+ }
+ },
+ "@babel/preset-react": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.8.3.tgz",
+ "integrity": "sha512-9hx0CwZg92jGb7iHYQVgi0tOEHP/kM60CtWJQnmbATSPIQQ2xYzfoCI3EdqAhFBeeJwYMdWQuDUHMsuDbH9hyQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-transform-react-display-name": "^7.8.3",
+ "@babel/plugin-transform-react-jsx": "^7.8.3",
+ "@babel/plugin-transform-react-jsx-self": "^7.8.3",
+ "@babel/plugin-transform-react-jsx-source": "^7.8.3"
+ }
+ },
+ "@babel/register": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.8.3.tgz",
+ "integrity": "sha512-t7UqebaWwo9nXWClIPLPloa5pN33A2leVs8Hf0e9g9YwUP8/H9NeR7DJU+4CXo23QtjChQv5a3DjEtT83ih1rg==",
+ "dev": true,
+ "requires": {
+ "find-cache-dir": "^2.0.0",
+ "lodash": "^4.17.13",
+ "make-dir": "^2.1.0",
+ "pirates": "^4.0.0",
+ "source-map-support": "^0.5.16"
+ }
+ },
+ "@babel/template": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz",
+ "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.8.3",
+ "@babel/parser": "^7.8.3",
+ "@babel/types": "^7.8.3"
}
},
"@babel/traverse": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.4.tgz",
- "integrity": "sha512-my9mdrAIGdDiSVBuMjpn/oXYpva0/EZwWL3sm3Wcy/AVWO2eXnsoZruOT9jOGNRXU8KbCIu5zsKnXcAJ6PcV6Q==",
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz",
+ "integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.0.0",
- "@babel/generator": "^7.1.3",
- "@babel/helper-function-name": "^7.1.0",
- "@babel/helper-split-export-declaration": "^7.0.0",
- "@babel/parser": "^7.1.3",
- "@babel/types": "^7.1.3",
- "debug": "^3.1.0",
+ "@babel/code-frame": "^7.8.3",
+ "@babel/generator": "^7.8.4",
+ "@babel/helper-function-name": "^7.8.3",
+ "@babel/helper-split-export-declaration": "^7.8.3",
+ "@babel/parser": "^7.8.4",
+ "@babel/types": "^7.8.3",
+ "debug": "^4.1.0",
"globals": "^11.1.0",
- "lodash": "^4.17.10"
+ "lodash": "^4.17.13"
},
"dependencies": {
"debug": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
- "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
},
- "lodash": {
- "version": "4.17.15",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
- "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
- "dev": true
- },
"ms": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
- "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
}
}
},
"@babel/types": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.3.tgz",
- "integrity": "sha512-RpPOVfK+yatXyn8n4PB1NW6k9qjinrXrRR8ugBN8fD6hCy5RXI6PSbVqpOJBO9oSaY7Nom4ohj35feb0UR9hSA==",
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
+ "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
"dev": true,
"requires": {
"esutils": "^2.0.2",
- "lodash": "^4.17.10",
+ "lodash": "^4.17.13",
"to-fast-properties": "^2.0.0"
- },
- "dependencies": {
- "lodash": {
- "version": "4.17.15",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
- "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
- "dev": true
- }
}
},
+ "@webassemblyjs/ast": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz",
+ "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/helper-module-context": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/wast-parser": "1.8.5"
+ }
+ },
+ "@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz",
+ "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-api-error": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz",
+ "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-buffer": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz",
+ "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-code-frame": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz",
+ "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/wast-printer": "1.8.5"
+ }
+ },
+ "@webassemblyjs/helper-fsm": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz",
+ "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-module-context": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz",
+ "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "mamacro": "^0.0.3"
+ }
+ },
+ "@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz",
+ "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-wasm-section": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz",
+ "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-buffer": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/wasm-gen": "1.8.5"
+ }
+ },
+ "@webassemblyjs/ieee754": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz",
+ "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==",
+ "dev": true,
+ "requires": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "@webassemblyjs/leb128": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz",
+ "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==",
+ "dev": true,
+ "requires": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/utf8": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz",
+ "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==",
+ "dev": true
+ },
+ "@webassemblyjs/wasm-edit": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz",
+ "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-buffer": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/helper-wasm-section": "1.8.5",
+ "@webassemblyjs/wasm-gen": "1.8.5",
+ "@webassemblyjs/wasm-opt": "1.8.5",
+ "@webassemblyjs/wasm-parser": "1.8.5",
+ "@webassemblyjs/wast-printer": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wasm-gen": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz",
+ "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/ieee754": "1.8.5",
+ "@webassemblyjs/leb128": "1.8.5",
+ "@webassemblyjs/utf8": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wasm-opt": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz",
+ "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-buffer": "1.8.5",
+ "@webassemblyjs/wasm-gen": "1.8.5",
+ "@webassemblyjs/wasm-parser": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wasm-parser": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz",
+ "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-api-error": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/ieee754": "1.8.5",
+ "@webassemblyjs/leb128": "1.8.5",
+ "@webassemblyjs/utf8": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wast-parser": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz",
+ "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/floating-point-hex-parser": "1.8.5",
+ "@webassemblyjs/helper-api-error": "1.8.5",
+ "@webassemblyjs/helper-code-frame": "1.8.5",
+ "@webassemblyjs/helper-fsm": "1.8.5",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/wast-printer": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz",
+ "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/wast-parser": "1.8.5",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+ "dev": true
+ },
+ "@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+ "dev": true
+ },
+ "acorn": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz",
+ "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==",
+ "dev": true
+ },
+ "ajv": {
+ "version": "6.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz",
+ "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-errors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
+ "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
+ "dev": true
+ },
+ "ajv-keywords": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz",
+ "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==",
+ "dev": true
+ },
"ansi-colors": {
"version": "1.1.0",
"resolved": "http://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
@@ -279,6 +1254,15 @@
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true
},
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
"ansi-wrap": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
@@ -304,6 +1288,12 @@
"buffer-equal": "^1.0.0"
}
},
+ "aproba": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+ "dev": true
+ },
"archy": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
@@ -418,6 +1408,44 @@
"integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
"dev": true
},
+ "asn1.js": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
+ "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "assert": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
+ "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
+ "dev": true,
+ "requires": {
+ "object-assign": "^4.1.1",
+ "util": "0.10.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+ "dev": true
+ },
+ "util": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+ "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.1"
+ }
+ }
+ }
+ },
"assign-symbols": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
@@ -465,241 +1493,25 @@
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
"dev": true
},
- "babel-helper-evaluate-path": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz",
- "integrity": "sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA==",
- "dev": true
- },
- "babel-helper-flip-expressions": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.4.3.tgz",
- "integrity": "sha1-NpZzahKKwYvCUlS19AoizrPB0/0=",
- "dev": true
- },
- "babel-helper-is-nodes-equiv": {
- "version": "0.0.1",
- "resolved": "http://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz",
- "integrity": "sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=",
- "dev": true
- },
- "babel-helper-is-void-0": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-helper-is-void-0/-/babel-helper-is-void-0-0.4.3.tgz",
- "integrity": "sha1-fZwBtFYee5Xb2g9u7kj1tg5nMT4=",
- "dev": true
- },
- "babel-helper-mark-eval-scopes": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.4.3.tgz",
- "integrity": "sha1-0kSjvvmESHJgP/tG4izorN9VFWI=",
- "dev": true
- },
- "babel-helper-remove-or-void": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.4.3.tgz",
- "integrity": "sha1-pPA7QAd6D/6I5F0HAQ3uJB/1rmA=",
- "dev": true
- },
- "babel-helper-to-multiple-sequence-expressions": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz",
- "integrity": "sha512-m2CvfDW4+1qfDdsrtf4dwOslQC3yhbgyBFptncp4wvtdrDHqueW7slsYv4gArie056phvQFhT2nRcGS4bnm6mA==",
- "dev": true
- },
- "babel-plugin-minify-builtins": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.5.0.tgz",
- "integrity": "sha512-wpqbN7Ov5hsNwGdzuzvFcjgRlzbIeVv1gMIlICbPj0xkexnfoIDe7q+AZHMkQmAE/F9R5jkrB6TLfTegImlXag==",
- "dev": true
- },
- "babel-plugin-minify-constant-folding": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.5.0.tgz",
- "integrity": "sha512-Vj97CTn/lE9hR1D+jKUeHfNy+m1baNiJ1wJvoGyOBUx7F7kJqDZxr9nCHjO/Ad+irbR3HzR6jABpSSA29QsrXQ==",
+ "babel-loader": {
+ "version": "8.0.6",
+ "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz",
+ "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==",
"dev": true,
"requires": {
- "babel-helper-evaluate-path": "^0.5.0"
+ "find-cache-dir": "^2.0.0",
+ "loader-utils": "^1.0.2",
+ "mkdirp": "^0.5.1",
+ "pify": "^4.0.1"
}
},
- "babel-plugin-minify-dead-code-elimination": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.0.tgz",
- "integrity": "sha512-XQteBGXlgEoAKc/BhO6oafUdT4LBa7ARi55mxoyhLHNuA+RlzRmeMAfc31pb/UqU01wBzRc36YqHQzopnkd/6Q==",
+ "babel-plugin-dynamic-import-node": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz",
+ "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==",
"dev": true,
"requires": {
- "babel-helper-evaluate-path": "^0.5.0",
- "babel-helper-mark-eval-scopes": "^0.4.3",
- "babel-helper-remove-or-void": "^0.4.3",
- "lodash.some": "^4.6.0"
- }
- },
- "babel-plugin-minify-flip-comparisons": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.4.3.tgz",
- "integrity": "sha1-AMqHDLjxO0XAOLPB68DyJyk8llo=",
- "dev": true,
- "requires": {
- "babel-helper-is-void-0": "^0.4.3"
- }
- },
- "babel-plugin-minify-guarded-expressions": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.4.3.tgz",
- "integrity": "sha1-zHCbRFP9IbHzAod0RMifiEJ845c=",
- "dev": true,
- "requires": {
- "babel-helper-flip-expressions": "^0.4.3"
- }
- },
- "babel-plugin-minify-infinity": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.4.3.tgz",
- "integrity": "sha1-37h2obCKBldjhO8/kuZTumB7Oco=",
- "dev": true
- },
- "babel-plugin-minify-mangle-names": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.5.0.tgz",
- "integrity": "sha512-3jdNv6hCAw6fsX1p2wBGPfWuK69sfOjfd3zjUXkbq8McbohWy23tpXfy5RnToYWggvqzuMOwlId1PhyHOfgnGw==",
- "dev": true,
- "requires": {
- "babel-helper-mark-eval-scopes": "^0.4.3"
- }
- },
- "babel-plugin-minify-numeric-literals": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.4.3.tgz",
- "integrity": "sha1-jk/VYcefeAEob/YOjF/Z3u6TwLw=",
- "dev": true
- },
- "babel-plugin-minify-replace": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.5.0.tgz",
- "integrity": "sha512-aXZiaqWDNUbyNNNpWs/8NyST+oU7QTpK7J9zFEFSA0eOmtUNMU3fczlTTTlnCxHmq/jYNFEmkkSG3DDBtW3Y4Q==",
- "dev": true
- },
- "babel-plugin-minify-simplify": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.5.0.tgz",
- "integrity": "sha512-TM01J/YcKZ8XIQd1Z3nF2AdWHoDsarjtZ5fWPDksYZNsoOjQ2UO2EWm824Ym6sp127m44gPlLFiO5KFxU8pA5Q==",
- "dev": true,
- "requires": {
- "babel-helper-flip-expressions": "^0.4.3",
- "babel-helper-is-nodes-equiv": "^0.0.1",
- "babel-helper-to-multiple-sequence-expressions": "^0.5.0"
- }
- },
- "babel-plugin-minify-type-constructors": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.4.3.tgz",
- "integrity": "sha1-G8bxW4f3qxCF1CszC3F2V6IVZQA=",
- "dev": true,
- "requires": {
- "babel-helper-is-void-0": "^0.4.3"
- }
- },
- "babel-plugin-transform-inline-consecutive-adds": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.4.3.tgz",
- "integrity": "sha1-Mj1Ho+pjqDp6w8gRro5pQfrysNE=",
- "dev": true
- },
- "babel-plugin-transform-member-expression-literals": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.4.tgz",
- "integrity": "sha1-NwOcmgwzE6OUlfqsL/OmtbnQOL8=",
- "dev": true
- },
- "babel-plugin-transform-merge-sibling-variables": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.4.tgz",
- "integrity": "sha1-hbQi/DN3tEnJ0c3kQIcgNTJAHa4=",
- "dev": true
- },
- "babel-plugin-transform-minify-booleans": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz",
- "integrity": "sha1-rLs+VqNVXdI5KOS1gtKFFi3SsZg=",
- "dev": true
- },
- "babel-plugin-transform-property-literals": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz",
- "integrity": "sha1-mMHSHiVXNlc/k+zlRFn2ziSYXTk=",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "babel-plugin-transform-regexp-constructors": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.4.3.tgz",
- "integrity": "sha1-WLd3W2OvzzMyj66aX4j71PsLSWU=",
- "dev": true
- },
- "babel-plugin-transform-remove-console": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz",
- "integrity": "sha1-uYA2DAZzhOJLNXpYjYB9PINSd4A=",
- "dev": true
- },
- "babel-plugin-transform-remove-debugger": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz",
- "integrity": "sha1-QrcnYxyXl44estGZp67IShgznvI=",
- "dev": true
- },
- "babel-plugin-transform-remove-undefined": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.5.0.tgz",
- "integrity": "sha512-+M7fJYFaEE/M9CXa0/IRkDbiV3wRELzA1kKQFCJ4ifhrzLKn/9VCCgj9OFmYWwBd8IB48YdgPkHYtbYq+4vtHQ==",
- "dev": true,
- "requires": {
- "babel-helper-evaluate-path": "^0.5.0"
- }
- },
- "babel-plugin-transform-simplify-comparison-operators": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz",
- "integrity": "sha1-9ir+CWyrDh9ootdT/fKDiIRxzrk=",
- "dev": true
- },
- "babel-plugin-transform-undefined-to-void": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz",
- "integrity": "sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA=",
- "dev": true
- },
- "babel-preset-minify": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.5.0.tgz",
- "integrity": "sha512-xj1s9Mon+RFubH569vrGCayA9Fm2GMsCgDRm1Jb8SgctOB7KFcrVc2o8K3YHUyMz+SWP8aea75BoS8YfsXXuiA==",
- "dev": true,
- "requires": {
- "babel-plugin-minify-builtins": "^0.5.0",
- "babel-plugin-minify-constant-folding": "^0.5.0",
- "babel-plugin-minify-dead-code-elimination": "^0.5.0",
- "babel-plugin-minify-flip-comparisons": "^0.4.3",
- "babel-plugin-minify-guarded-expressions": "^0.4.3",
- "babel-plugin-minify-infinity": "^0.4.3",
- "babel-plugin-minify-mangle-names": "^0.5.0",
- "babel-plugin-minify-numeric-literals": "^0.4.3",
- "babel-plugin-minify-replace": "^0.5.0",
- "babel-plugin-minify-simplify": "^0.5.0",
- "babel-plugin-minify-type-constructors": "^0.4.3",
- "babel-plugin-transform-inline-consecutive-adds": "^0.4.3",
- "babel-plugin-transform-member-expression-literals": "^6.9.4",
- "babel-plugin-transform-merge-sibling-variables": "^6.9.4",
- "babel-plugin-transform-minify-booleans": "^6.9.4",
- "babel-plugin-transform-property-literals": "^6.9.4",
- "babel-plugin-transform-regexp-constructors": "^0.4.3",
- "babel-plugin-transform-remove-console": "^6.9.4",
- "babel-plugin-transform-remove-debugger": "^6.9.4",
- "babel-plugin-transform-remove-undefined": "^0.5.0",
- "babel-plugin-transform-simplify-comparison-operators": "^6.9.4",
- "babel-plugin-transform-undefined-to-void": "^6.9.4",
- "lodash.isplainobject": "^4.0.6"
+ "object.assign": "^4.1.0"
}
},
"bach": {
@@ -780,12 +1592,36 @@
}
}
},
+ "base64-js": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
+ "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==",
+ "dev": true
+ },
+ "big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+ "dev": true
+ },
"binary-extensions": {
"version": "1.13.1",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
"integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
"dev": true
},
+ "bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
+ "dev": true
+ },
+ "bn.js": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
+ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
+ "dev": true
+ },
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -825,6 +1661,105 @@
}
}
},
+ "brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+ "dev": true
+ },
+ "browserify-aes": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+ "dev": true,
+ "requires": {
+ "buffer-xor": "^1.0.3",
+ "cipher-base": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.3",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "browserify-cipher": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
+ "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+ "dev": true,
+ "requires": {
+ "browserify-aes": "^1.0.4",
+ "browserify-des": "^1.0.0",
+ "evp_bytestokey": "^1.0.0"
+ }
+ },
+ "browserify-des": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
+ "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "des.js": "^1.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "browserify-rsa": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
+ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "randombytes": "^2.0.1"
+ }
+ },
+ "browserify-sign": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
+ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.1",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.2",
+ "elliptic": "^6.0.0",
+ "inherits": "^2.0.1",
+ "parse-asn1": "^5.0.0"
+ }
+ },
+ "browserify-zlib": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
+ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+ "dev": true,
+ "requires": {
+ "pako": "~1.0.5"
+ }
+ },
+ "browserslist": {
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.9.0.tgz",
+ "integrity": "sha512-seffIXhwgB84+OCeT/aMjpZnsAsYDiMSC+CEs3UkF8iU64BZGYcu+TZYs/IBpo4nRi0vJywUJWYdbTsOhFTweg==",
+ "dev": true,
+ "requires": {
+ "caniuse-lite": "^1.0.30001030",
+ "electron-to-chromium": "^1.3.361",
+ "node-releases": "^1.1.50"
+ }
+ },
+ "buffer": {
+ "version": "4.9.2",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
+ "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
+ "dev": true,
+ "requires": {
+ "base64-js": "^1.0.2",
+ "ieee754": "^1.1.4",
+ "isarray": "^1.0.0"
+ }
+ },
"buffer-equal": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz",
@@ -837,6 +1772,57 @@
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
"dev": true
},
+ "buffer-xor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
+ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+ "dev": true
+ },
+ "builtin-status-codes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+ "dev": true
+ },
+ "cacache": {
+ "version": "12.0.3",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz",
+ "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.5",
+ "chownr": "^1.1.1",
+ "figgy-pudding": "^3.5.1",
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.1.15",
+ "infer-owner": "^1.0.3",
+ "lru-cache": "^5.1.1",
+ "mississippi": "^3.0.0",
+ "mkdirp": "^0.5.1",
+ "move-concurrently": "^1.0.1",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^2.6.3",
+ "ssri": "^6.0.1",
+ "unique-filename": "^1.1.1",
+ "y18n": "^4.0.0"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
"cache-base": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
@@ -854,6 +1840,29 @@
"unset-value": "^1.0.0"
}
},
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true
+ },
+ "caniuse-lite": {
+ "version": "1.0.30001030",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001030.tgz",
+ "integrity": "sha512-QGK0W4Ft/Ac+zTjEiRJfwDNATvS3fodDczBXrH42784kcfqcDKpEPfN08N0HQjrAp8He/Jw8QiSS9QRn7XAbUw==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
"chokidar": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz",
@@ -882,6 +1891,37 @@
}
}
},
+ "chownr": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
+ "dev": true
+ },
+ "chrome-trace-event": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz",
+ "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
+ "cipher-base": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
+ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "circular-dependency-plugin": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.0.tgz",
+ "integrity": "sha512-7p4Kn/gffhQaavNfyDFg7LS5S/UT1JAjyGd4UqR2+jzoYF02eDkj0Ec3+48TsIa4zghjLY87nQHIh/ecK9qLdw==",
+ "dev": true
+ },
"class-utils": {
"version": "0.3.6",
"resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
@@ -905,6 +1945,45 @@
}
}
},
+ "cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "dev": true,
+ "requires": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ },
+ "wrap-ansi": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
+ }
+ }
+ }
+ },
"clone": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
@@ -982,6 +2061,18 @@
"integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
"dev": true
},
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true
+ },
+ "commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+ "dev": true
+ },
"component-emitter": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
@@ -1006,6 +2097,18 @@
"typedarray": "^0.0.6"
}
},
+ "console-browserify": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
+ "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
+ "dev": true
+ },
+ "constants-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
+ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+ "dev": true
+ },
"convert-source-map": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
@@ -1015,6 +2118,20 @@
"safe-buffer": "~5.1.1"
}
},
+ "copy-concurrently": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
+ "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1",
+ "fs-write-stream-atomic": "^1.0.8",
+ "iferr": "^0.1.5",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.0"
+ }
+ },
"copy-descriptor": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
@@ -1031,12 +2148,99 @@
"is-plain-object": "^2.0.1"
}
},
+ "core-js-compat": {
+ "version": "3.6.4",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz",
+ "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.8.3",
+ "semver": "7.0.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
+ "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
+ "dev": true
+ }
+ }
+ },
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"dev": true
},
+ "create-ecdh": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
+ "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "elliptic": "^6.0.0"
+ }
+ },
+ "create-hash": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+ "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "inherits": "^2.0.1",
+ "md5.js": "^1.3.4",
+ "ripemd160": "^2.0.1",
+ "sha.js": "^2.4.0"
+ }
+ },
+ "create-hmac": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+ "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.3",
+ "create-hash": "^1.1.0",
+ "inherits": "^2.0.1",
+ "ripemd160": "^2.0.0",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "crypto-browserify": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+ "dev": true,
+ "requires": {
+ "browserify-cipher": "^1.0.0",
+ "browserify-sign": "^4.0.0",
+ "create-ecdh": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.0",
+ "diffie-hellman": "^5.0.0",
+ "inherits": "^2.0.1",
+ "pbkdf2": "^3.0.3",
+ "public-encrypt": "^4.0.0",
+ "randombytes": "^2.0.0",
+ "randomfill": "^1.0.3"
+ }
+ },
"css-tree": {
"version": "1.0.0-alpha.29",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz",
@@ -1056,6 +2260,12 @@
"css-tree": "1.0.0-alpha.29"
}
},
+ "cyclist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
+ "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=",
+ "dev": true
+ },
"d": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
@@ -1159,12 +2369,39 @@
}
}
},
+ "des.js": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
+ "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
"detect-file": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
"integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
"dev": true
},
+ "diffie-hellman": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+ "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "miller-rabin": "^4.0.0",
+ "randombytes": "^2.0.0"
+ }
+ },
+ "domain-browser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
+ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
+ "dev": true
+ },
"duplexify": {
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
@@ -1187,6 +2424,39 @@
"object.defaults": "^1.1.0"
}
},
+ "electron-to-chromium": {
+ "version": "1.3.362",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.362.tgz",
+ "integrity": "sha512-xdU5VCoZyMPMOWtCaMgbr48OwWZHrMLbGnAOlEqibXiIGsb4kiCGWEHK5NOghcVLdBVIbr/BW+yuKxVuGTtzEg==",
+ "dev": true
+ },
+ "elliptic": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz",
+ "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.4.0",
+ "brorand": "^1.0.1",
+ "hash.js": "^1.0.0",
+ "hmac-drbg": "^1.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.0"
+ }
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+ "dev": true
+ },
"end-of-stream": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
@@ -1207,6 +2477,38 @@
}
}
},
+ "enhanced-resolve": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz",
+ "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "memory-fs": "^0.5.0",
+ "tapable": "^1.0.0"
+ },
+ "dependencies": {
+ "memory-fs": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
+ "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
+ "dev": true,
+ "requires": {
+ "errno": "^0.1.3",
+ "readable-stream": "^2.0.1"
+ }
+ }
+ }
+ },
+ "errno": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
+ "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
+ "dev": true,
+ "requires": {
+ "prr": "~1.0.1"
+ }
+ },
"error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
@@ -1266,12 +2568,68 @@
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
"dev": true
},
- "esutils": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
- "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+ "eslint-scope": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
+ "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "esrecurse": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
+ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.1.0"
+ }
+ },
+ "estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
"dev": true
},
+ "esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true
+ },
+ "events": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz",
+ "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==",
+ "dev": true
+ },
+ "evp_bytestokey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "dev": true,
+ "requires": {
+ "md5.js": "^1.3.4",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^4.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
"expand-brackets": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
@@ -1420,6 +2778,24 @@
"time-stamp": "^1.0.0"
}
},
+ "fast-deep-equal": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
+ "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==",
+ "dev": true
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "figgy-pudding": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
+ "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==",
+ "dev": true
+ },
"fill-range": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
@@ -1443,6 +2819,26 @@
}
}
},
+ "find-cache-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
+ "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "make-dir": "^2.0.0",
+ "pkg-dir": "^3.0.0"
+ }
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
"findup-sync": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz",
@@ -1508,6 +2904,16 @@
"map-cache": "^0.2.2"
}
},
+ "from2": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
+ "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
+ }
+ },
"fs-mkdirp-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz",
@@ -1518,6 +2924,18 @@
"through2": "^2.0.3"
}
},
+ "fs-write-stream-atomic": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
+ "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "iferr": "^0.1.5",
+ "imurmurhash": "^0.1.4",
+ "readable-stream": "1 || 2"
+ }
+ },
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -1544,7 +2962,8 @@
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"aproba": {
"version": "1.2.0",
@@ -1587,7 +3006,8 @@
"code-point-at": {
"version": "1.1.0",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"concat-map": {
"version": "0.0.1",
@@ -1598,7 +3018,8 @@
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"core-util-is": {
"version": "1.0.2",
@@ -1715,7 +3136,8 @@
"inherits": {
"version": "2.0.3",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"ini": {
"version": "1.3.5",
@@ -1727,6 +3149,7 @@
"version": "1.0.0",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@@ -1756,6 +3179,7 @@
"version": "2.3.5",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
@@ -1774,6 +3198,7 @@
"version": "0.5.1",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"minimist": "0.0.8"
}
@@ -1867,6 +3292,7 @@
"version": "1.4.0",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"wrappy": "1"
}
@@ -1952,7 +3378,8 @@
"safe-buffer": {
"version": "5.1.2",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"safer-buffer": {
"version": "2.1.2",
@@ -1988,6 +3415,7 @@
"version": "1.0.2",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@@ -2007,6 +3435,7 @@
"version": "3.0.1",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@@ -2050,12 +3479,14 @@
"wrappy": {
"version": "1.0.2",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"yallist": {
"version": "3.0.3",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
}
}
},
@@ -2065,6 +3496,27 @@
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true
},
+ "gensync": {
+ "version": "1.0.0-beta.1",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz",
+ "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==",
+ "dev": true
+ },
+ "get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true
+ },
+ "get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
"get-value": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
@@ -2163,9 +3615,9 @@
}
},
"globals": {
- "version": "11.8.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.8.0.tgz",
- "integrity": "sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA==",
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
"dev": true
},
"glogg": {
@@ -2338,19 +3790,6 @@
}
}
},
- "gulp-babel-minify": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/gulp-babel-minify/-/gulp-babel-minify-0.5.0.tgz",
- "integrity": "sha512-6YrHnLXSizWHITQ3mcwmPbn0ygXIf8CCk7Dv345Cp10kPE9iqBRwfuU8GhG98Y5IwWGAVOWNp2vo6bLanbqCpA==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.1.0",
- "babel-preset-minify": "^0.5.0",
- "plugin-error": "^1.0.1",
- "through2": "^2.0.3",
- "vinyl-sourcemaps-apply": "^0.2.1"
- }
- },
"gulp-csso": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/gulp-csso/-/gulp-csso-3.0.1.tgz",
@@ -2473,6 +3912,37 @@
}
}
},
+ "hash-base": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
+ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "hash.js": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
+ "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "minimalistic-assert": "^1.0.1"
+ }
+ },
+ "hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+ "dev": true,
+ "requires": {
+ "hash.js": "^1.0.3",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.1"
+ }
+ },
"homedir-polyfill": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
@@ -2488,6 +3958,46 @@
"integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
"dev": true
},
+ "https-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
+ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
+ "dev": true
+ },
+ "ieee754": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
+ "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==",
+ "dev": true
+ },
+ "iferr": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
+ "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
+ "dev": true
+ },
+ "import-local": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
+ "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
+ "dev": true,
+ "requires": {
+ "pkg-dir": "^3.0.0",
+ "resolve-cwd": "^2.0.0"
+ }
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true
+ },
+ "infer-owner": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
+ "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
+ "dev": true
+ },
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@@ -2516,6 +4026,21 @@
"integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==",
"dev": true
},
+ "invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "dev": true,
+ "requires": {
+ "loose-envify": "^1.0.0"
+ }
+ },
+ "invert-kv": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
+ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
+ "dev": true
+ },
"is-absolute": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
@@ -2618,6 +4143,12 @@
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
"dev": true
},
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
"is-glob": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
@@ -2671,6 +4202,12 @@
"is-unc-path": "^1.0.0"
}
},
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "dev": true
+ },
"is-unc-path": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
@@ -2698,6 +4235,12 @@
"integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
"dev": true
},
+ "is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+ "dev": true
+ },
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
@@ -2723,9 +4266,21 @@
"dev": true
},
"jsesc": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz",
- "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=",
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "dev": true
+ },
+ "json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
},
"json-stable-stringify-without-jsonify": {
@@ -2735,10 +4290,13 @@
"dev": true
},
"json5": {
- "version": "0.5.1",
- "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
- "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
- "dev": true
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz",
+ "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.0"
+ }
},
"just-debounce": {
"version": "1.0.0",
@@ -2771,6 +4329,15 @@
"readable-stream": "^2.0.5"
}
},
+ "lcid": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
+ "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+ "dev": true,
+ "requires": {
+ "invert-kv": "^2.0.0"
+ }
+ },
"lead": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz",
@@ -2780,6 +4347,21 @@
"flush-write-stream": "^1.0.2"
}
},
+ "leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+ "dev": true
+ },
+ "levenary": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz",
+ "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==",
+ "dev": true,
+ "requires": {
+ "leven": "^3.1.0"
+ }
+ },
"liftoff": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz",
@@ -2817,23 +4399,77 @@
}
}
},
+ "loader-runner": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz",
+ "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+ "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+ "dev": true,
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ },
+ "dependencies": {
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.0"
+ }
+ }
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
"lodash": {
"version": "4.17.15",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
"dev": true
},
- "lodash.isplainobject": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=",
- "dev": true
+ "loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dev": true,
+ "requires": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ }
},
- "lodash.some": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz",
- "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=",
- "dev": true
+ "lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "requires": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "dev": true,
+ "requires": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ }
},
"make-iterator": {
"version": "1.0.1",
@@ -2844,6 +4480,21 @@
"kind-of": "^6.0.2"
}
},
+ "mamacro": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz",
+ "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==",
+ "dev": true
+ },
+ "map-age-cleaner": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
+ "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
+ "dev": true,
+ "requires": {
+ "p-defer": "^1.0.0"
+ }
+ },
"map-cache": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
@@ -2894,12 +4545,44 @@
}
}
},
+ "md5.js": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
+ "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
+ "dev": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
"mdn-data": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz",
"integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==",
"dev": true
},
+ "mem": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
+ "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
+ "dev": true,
+ "requires": {
+ "map-age-cleaner": "^0.1.1",
+ "mimic-fn": "^2.0.0",
+ "p-is-promise": "^2.0.0"
+ }
+ },
+ "memory-fs": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
+ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+ "dev": true,
+ "requires": {
+ "errno": "^0.1.3",
+ "readable-stream": "^2.0.1"
+ }
+ },
"micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -2921,6 +4604,34 @@
"to-regex": "^3.0.2"
}
},
+ "miller-rabin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
+ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "brorand": "^1.0.1"
+ }
+ },
+ "mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true
+ },
+ "minimalistic-assert": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+ "dev": true
+ },
+ "minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+ "dev": true
+ },
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
@@ -2930,6 +4641,30 @@
"brace-expansion": "^1.1.7"
}
},
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ },
+ "mississippi": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
+ "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
+ "dev": true,
+ "requires": {
+ "concat-stream": "^1.5.0",
+ "duplexify": "^3.4.2",
+ "end-of-stream": "^1.1.0",
+ "flush-write-stream": "^1.0.0",
+ "from2": "^2.1.0",
+ "parallel-transform": "^1.1.0",
+ "pump": "^3.0.0",
+ "pumpify": "^1.3.3",
+ "stream-each": "^1.1.0",
+ "through2": "^2.0.0"
+ }
+ },
"mixin-deep": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
@@ -2951,6 +4686,37 @@
}
}
},
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ }
+ }
+ },
+ "move-concurrently": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
+ "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1",
+ "copy-concurrently": "^1.0.0",
+ "fs-write-stream-atomic": "^1.0.8",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.3"
+ }
+ },
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
@@ -2989,12 +4755,86 @@
"to-regex": "^3.0.1"
}
},
+ "neo-async": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
+ "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
+ "dev": true
+ },
"next-tick": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
"dev": true
},
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
+ "node-libs-browser": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
+ "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
+ "dev": true,
+ "requires": {
+ "assert": "^1.1.1",
+ "browserify-zlib": "^0.2.0",
+ "buffer": "^4.3.0",
+ "console-browserify": "^1.1.0",
+ "constants-browserify": "^1.0.0",
+ "crypto-browserify": "^3.11.0",
+ "domain-browser": "^1.1.1",
+ "events": "^3.0.0",
+ "https-browserify": "^1.0.0",
+ "os-browserify": "^0.3.0",
+ "path-browserify": "0.0.1",
+ "process": "^0.11.10",
+ "punycode": "^1.2.4",
+ "querystring-es3": "^0.2.0",
+ "readable-stream": "^2.3.3",
+ "stream-browserify": "^2.0.1",
+ "stream-http": "^2.7.2",
+ "string_decoder": "^1.0.0",
+ "timers-browserify": "^2.0.4",
+ "tty-browserify": "0.0.0",
+ "url": "^0.11.0",
+ "util": "^0.11.0",
+ "vm-browserify": "^1.0.1"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true
+ }
+ }
+ },
+ "node-modules-regexp": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz",
+ "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=",
+ "dev": true
+ },
+ "node-releases": {
+ "version": "1.1.50",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.50.tgz",
+ "integrity": "sha512-lgAmPv9eYZ0bGwUYAKlr8MG6K4CvWliWqnkcT2P8mMAgVrH3lqfBPorFlxiG1pHQnqmavJZ9vbMXUTNyMLbrgQ==",
+ "dev": true,
+ "requires": {
+ "semver": "^6.3.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
"normalize-package-data": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
@@ -3036,12 +4876,27 @@
"once": "^1.3.2"
}
},
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "dev": true,
+ "requires": {
+ "path-key": "^2.0.0"
+ }
+ },
"number-is-nan": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
"dev": true
},
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "dev": true
+ },
"object-copy": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
@@ -3159,6 +5014,96 @@
"readable-stream": "^2.0.1"
}
},
+ "os-browserify": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
+ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
+ "dev": true
+ },
+ "os-locale": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
+ "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
+ "dev": true,
+ "requires": {
+ "execa": "^1.0.0",
+ "lcid": "^2.0.0",
+ "mem": "^4.0.0"
+ }
+ },
+ "p-defer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
+ "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
+ "dev": true
+ },
+ "p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+ "dev": true
+ },
+ "p-is-promise": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
+ "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz",
+ "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ },
+ "pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
+ "dev": true
+ },
+ "parallel-transform": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz",
+ "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
+ "dev": true,
+ "requires": {
+ "cyclist": "^1.0.1",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.1.5"
+ }
+ },
+ "parse-asn1": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz",
+ "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==",
+ "dev": true,
+ "requires": {
+ "asn1.js": "^4.0.0",
+ "browserify-aes": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.0",
+ "pbkdf2": "^3.0.3",
+ "safe-buffer": "^5.1.1"
+ }
+ },
"parse-filepath": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
@@ -3197,18 +5142,36 @@
"integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
"dev": true
},
+ "path-browserify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
+ "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
+ "dev": true
+ },
"path-dirname": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
"integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
"dev": true
},
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true
},
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ },
"path-parse": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
@@ -3249,6 +5212,25 @@
}
}
},
+ "pbkdf2": {
+ "version": "3.0.17",
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
+ "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
+ "dev": true,
+ "requires": {
+ "create-hash": "^1.1.2",
+ "create-hmac": "^1.1.4",
+ "ripemd160": "^2.0.1",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true
+ },
"pinkie": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
@@ -3264,16 +5246,22 @@
"pinkie": "^2.0.0"
}
},
- "plugin-error": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz",
- "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==",
+ "pirates": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz",
+ "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==",
"dev": true,
"requires": {
- "ansi-colors": "^1.0.1",
- "arr-diff": "^4.0.0",
- "arr-union": "^3.1.0",
- "extend-shallow": "^3.0.2"
+ "node-modules-regexp": "^1.0.0"
+ }
+ },
+ "pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0"
}
},
"posix-character-classes": {
@@ -3288,12 +5276,60 @@
"integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=",
"dev": true
},
+ "private": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
+ "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
+ "dev": true
+ },
+ "process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+ "dev": true
+ },
"process-nextick-args": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
"dev": true
},
+ "promise-inflight": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
+ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
+ "dev": true
+ },
+ "prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
+ "dev": true
+ },
+ "public-encrypt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
+ "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "parse-asn1": "^5.0.0",
+ "randombytes": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
"pumpify": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
@@ -3317,6 +5353,43 @@
}
}
},
+ "punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "dev": true
+ },
+ "querystring": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
+ "dev": true
+ },
+ "querystring-es3": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
+ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+ "dev": true
+ },
+ "randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "randomfill": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
+ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+ "dev": true,
+ "requires": {
+ "randombytes": "^2.0.5",
+ "safe-buffer": "^5.1.0"
+ }
+ },
"read-pkg": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
@@ -3394,6 +5467,30 @@
"resolve": "^1.1.6"
}
},
+ "regenerate": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
+ "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
+ "dev": true
+ },
+ "regenerate-unicode-properties": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz",
+ "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==",
+ "dev": true,
+ "requires": {
+ "regenerate": "^1.4.0"
+ }
+ },
+ "regenerator-transform": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz",
+ "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==",
+ "dev": true,
+ "requires": {
+ "private": "^0.1.6"
+ }
+ },
"regex-not": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
@@ -3404,6 +5501,43 @@
"safe-regex": "^1.1.0"
}
},
+ "regexpu-core": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz",
+ "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==",
+ "dev": true,
+ "requires": {
+ "regenerate": "^1.4.0",
+ "regenerate-unicode-properties": "^8.1.0",
+ "regjsgen": "^0.5.0",
+ "regjsparser": "^0.6.0",
+ "unicode-match-property-ecmascript": "^1.0.4",
+ "unicode-match-property-value-ecmascript": "^1.1.0"
+ }
+ },
+ "regjsgen": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz",
+ "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==",
+ "dev": true
+ },
+ "regjsparser": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.3.tgz",
+ "integrity": "sha512-8uZvYbnfAtEm9Ab8NTb3hdLwL4g/LQzEYP7Xs27T96abJCCE2d6r3cPZPQEsLKy0vRSGVNG+/zVGtLr86HQduA==",
+ "dev": true,
+ "requires": {
+ "jsesc": "~0.5.0"
+ },
+ "dependencies": {
+ "jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
+ "dev": true
+ }
+ }
+ },
"remove-bom-buffer": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz",
@@ -3466,6 +5600,12 @@
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
"dev": true
},
+ "require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "dev": true
+ },
"resolve": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz",
@@ -3475,6 +5615,15 @@
"path-parse": "^1.0.5"
}
},
+ "resolve-cwd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
+ "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
+ "dev": true,
+ "requires": {
+ "resolve-from": "^3.0.0"
+ }
+ },
"resolve-dir": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
@@ -3485,6 +5634,12 @@
"global-modules": "^1.0.0"
}
},
+ "resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+ "dev": true
+ },
"resolve-options": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz",
@@ -3506,6 +5661,34 @@
"integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
"dev": true
},
+ "rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "ripemd160": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
+ "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+ "dev": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1"
+ }
+ },
+ "run-queue": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
+ "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1"
+ }
+ },
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
@@ -3521,6 +5704,17 @@
"ret": "~0.1.10"
}
},
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ },
"semver": {
"version": "5.7.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
@@ -3536,6 +5730,12 @@
"sver-compat": "^1.5.0"
}
},
+ "serialize-javascript": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz",
+ "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==",
+ "dev": true
+ },
"set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
@@ -3565,6 +5765,43 @@
}
}
},
+ "setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
+ "dev": true
+ },
+ "sha.js": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+ "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "dev": true
+ },
"snapdragon": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
@@ -3672,6 +5909,12 @@
}
}
},
+ "source-list-map": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
+ "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
+ "dev": true
+ },
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
@@ -3691,6 +5934,24 @@
"urix": "^0.1.0"
}
},
+ "source-map-support": {
+ "version": "0.5.16",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
+ "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
"source-map-url": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
@@ -3744,6 +6005,15 @@
"extend-shallow": "^3.0.0"
}
},
+ "ssri": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
+ "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
+ "dev": true,
+ "requires": {
+ "figgy-pudding": "^3.5.1"
+ }
+ },
"stack-trace": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
@@ -3771,18 +6041,79 @@
}
}
},
+ "stream-browserify": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
+ "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
+ "dev": true,
+ "requires": {
+ "inherits": "~2.0.1",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "stream-each": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
+ "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
"stream-exhaust": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz",
"integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==",
"dev": true
},
+ "stream-http": {
+ "version": "2.8.3",
+ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
+ "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
+ "dev": true,
+ "requires": {
+ "builtin-status-codes": "^3.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.3.6",
+ "to-arraybuffer": "^1.0.0",
+ "xtend": "^4.0.0"
+ }
+ },
"stream-shift": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
"integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
"dev": true
},
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@@ -3810,6 +6141,21 @@
"is-utf8": "^0.2.0"
}
},
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
"sver-compat": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz",
@@ -3820,6 +6166,56 @@
"es6-symbol": "^3.1.1"
}
},
+ "tapable": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
+ "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
+ "dev": true
+ },
+ "terser": {
+ "version": "4.6.4",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.4.tgz",
+ "integrity": "sha512-5fqgBPLgVHZ/fVvqRhhUp9YUiGXhFJ9ZkrZWD9vQtFBR4QIGTnbsb+/kKqSqfgp3WnBwGWAFnedGTtmX1YTn0w==",
+ "dev": true,
+ "requires": {
+ "commander": "^2.20.0",
+ "source-map": "~0.6.1",
+ "source-map-support": "~0.5.12"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "terser-webpack-plugin": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz",
+ "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==",
+ "dev": true,
+ "requires": {
+ "cacache": "^12.0.2",
+ "find-cache-dir": "^2.1.0",
+ "is-wsl": "^1.1.0",
+ "schema-utils": "^1.0.0",
+ "serialize-javascript": "^2.1.2",
+ "source-map": "^0.6.1",
+ "terser": "^4.1.2",
+ "webpack-sources": "^1.4.0",
+ "worker-farm": "^1.7.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
"through2": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
@@ -3878,6 +6274,15 @@
"integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=",
"dev": true
},
+ "timers-browserify": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz",
+ "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==",
+ "dev": true,
+ "requires": {
+ "setimmediate": "^1.0.4"
+ }
+ },
"to-absolute-glob": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz",
@@ -3888,6 +6293,12 @@
"is-negated-glob": "^1.0.0"
}
},
+ "to-arraybuffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
+ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+ "dev": true
+ },
"to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
@@ -3945,10 +6356,16 @@
"through2": "^2.0.3"
}
},
- "trim-right": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
- "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
+ "tslib": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.0.tgz",
+ "integrity": "sha512-BmndXUtiTn/VDDrJzQE7Mm22Ix3PxgLltW9bSNLoeCY31gnG2OPx0QqJnuc9oMIKioYrz487i6K9o4Pdn0j+Kg==",
+ "dev": true
+ },
+ "tty-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
+ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
"dev": true
},
"typedarray": {
@@ -3986,6 +6403,34 @@
"integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=",
"dev": true
},
+ "unicode-canonical-property-names-ecmascript": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
+ "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==",
+ "dev": true
+ },
+ "unicode-match-property-ecmascript": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
+ "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
+ "dev": true,
+ "requires": {
+ "unicode-canonical-property-names-ecmascript": "^1.0.4",
+ "unicode-property-aliases-ecmascript": "^1.0.4"
+ }
+ },
+ "unicode-match-property-value-ecmascript": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz",
+ "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==",
+ "dev": true
+ },
+ "unicode-property-aliases-ecmascript": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz",
+ "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==",
+ "dev": true
+ },
"union-value": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
@@ -3998,6 +6443,24 @@
"set-value": "^2.0.1"
}
},
+ "unique-filename": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
+ "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
+ "dev": true,
+ "requires": {
+ "unique-slug": "^2.0.0"
+ }
+ },
+ "unique-slug": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
+ "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
+ "dev": true,
+ "requires": {
+ "imurmurhash": "^0.1.4"
+ }
+ },
"unique-stream": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz",
@@ -4054,24 +6517,66 @@
"integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==",
"dev": true
},
+ "uri-js": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
+ "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+ "dev": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
"urix": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
"integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
"dev": true
},
+ "url": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
+ "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+ "dev": true,
+ "requires": {
+ "punycode": "1.3.2",
+ "querystring": "0.2.0"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+ "dev": true
+ }
+ }
+ },
"use": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
"integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
"dev": true
},
+ "util": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
+ "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3"
+ }
+ },
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
"dev": true
},
+ "v8-compile-cache": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz",
+ "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==",
+ "dev": true
+ },
"v8flags": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.2.tgz",
@@ -4160,6 +6665,159 @@
"source-map": "^0.5.1"
}
},
+ "vm-browserify": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
+ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
+ "dev": true
+ },
+ "watchpack": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",
+ "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==",
+ "dev": true,
+ "requires": {
+ "chokidar": "^2.0.2",
+ "graceful-fs": "^4.1.2",
+ "neo-async": "^2.5.0"
+ }
+ },
+ "webpack": {
+ "version": "4.41.6",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.6.tgz",
+ "integrity": "sha512-yxXfV0Zv9WMGRD+QexkZzmGIh54bsvEs+9aRWxnN8erLWEOehAKUTeNBoUbA6HPEZPlRo7KDi2ZcNveoZgK9MA==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-module-context": "1.8.5",
+ "@webassemblyjs/wasm-edit": "1.8.5",
+ "@webassemblyjs/wasm-parser": "1.8.5",
+ "acorn": "^6.2.1",
+ "ajv": "^6.10.2",
+ "ajv-keywords": "^3.4.1",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^4.1.0",
+ "eslint-scope": "^4.0.3",
+ "json-parse-better-errors": "^1.0.2",
+ "loader-runner": "^2.4.0",
+ "loader-utils": "^1.2.3",
+ "memory-fs": "^0.4.1",
+ "micromatch": "^3.1.10",
+ "mkdirp": "^0.5.1",
+ "neo-async": "^2.6.1",
+ "node-libs-browser": "^2.2.1",
+ "schema-utils": "^1.0.0",
+ "tapable": "^1.1.3",
+ "terser-webpack-plugin": "^1.4.3",
+ "watchpack": "^1.6.0",
+ "webpack-sources": "^1.4.1"
+ }
+ },
+ "webpack-cli": {
+ "version": "3.3.11",
+ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.11.tgz",
+ "integrity": "sha512-dXlfuml7xvAFwYUPsrtQAA9e4DOe58gnzSxhgrO/ZM/gyXTBowrsYeubyN4mqGhYdpXMFNyQ6emjJS9M7OBd4g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.4.2",
+ "cross-spawn": "6.0.5",
+ "enhanced-resolve": "4.1.0",
+ "findup-sync": "3.0.0",
+ "global-modules": "2.0.0",
+ "import-local": "2.0.0",
+ "interpret": "1.2.0",
+ "loader-utils": "1.2.3",
+ "supports-color": "6.1.0",
+ "v8-compile-cache": "2.0.3",
+ "yargs": "13.2.4"
+ },
+ "dependencies": {
+ "emojis-list": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
+ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
+ "dev": true
+ },
+ "enhanced-resolve": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz",
+ "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "memory-fs": "^0.4.0",
+ "tapable": "^1.0.0"
+ }
+ },
+ "global-modules": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
+ "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
+ "dev": true,
+ "requires": {
+ "global-prefix": "^3.0.0"
+ }
+ },
+ "global-prefix": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
+ "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
+ "dev": true,
+ "requires": {
+ "ini": "^1.3.5",
+ "kind-of": "^6.0.2",
+ "which": "^1.3.1"
+ }
+ },
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.0"
+ }
+ },
+ "loader-utils": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
+ "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
+ "dev": true,
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^2.0.0",
+ "json5": "^1.0.1"
+ }
+ },
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "webpack-sources": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
+ "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
+ "dev": true,
+ "requires": {
+ "source-list-map": "^2.0.0",
+ "source-map": "~0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
"which": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
@@ -4169,6 +6827,21 @@
"isexe": "^2.0.0"
}
},
+ "which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "dev": true
+ },
+ "worker-farm": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
+ "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==",
+ "dev": true,
+ "requires": {
+ "errno": "~0.1.7"
+ }
+ },
"wrap-ansi": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
@@ -4212,6 +6885,47 @@
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
"dev": true
+ },
+ "y18n": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
+ "dev": true
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true
+ },
+ "yargs": {
+ "version": "13.2.4",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz",
+ "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==",
+ "dev": true,
+ "requires": {
+ "cliui": "^5.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "os-locale": "^3.1.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.0"
+ }
+ },
+ "yargs-parser": {
+ "version": "13.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
+ "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
}
}
}
diff --git a/package.json b/package.json
index 66e53ed4..fb13a4fc 100644
--- a/package.json
+++ b/package.json
@@ -4,11 +4,13 @@
"description": "Enhances Discord adding functionality and themes.",
"main": "js/main.js",
"scripts": {
+ "build": "webpack --progress --colors",
+ "watch": "webpack --progress --colors --watch",
+ "build-prod": "webpack --progress --colors --mode production -o js/main.min.js --devtool none",
"test": "echo \"Error: no test specified\" && exit 1",
"minify": "gulp minify-js && gulp minify-css",
"minify-js": "gulp minify-js",
"minify-css": "gulp minify-css",
- "watch": "gulp watch",
"watch-js": "gulp watch-js",
"watch-css": "gulp watch-css"
},
@@ -23,9 +25,16 @@
},
"homepage": "https://github.com/rauenzi/BetterDiscordApp#readme",
"devDependencies": {
+ "@babel/core": "^7.3.4",
+ "@babel/preset-env": "^7.3.4",
+ "@babel/preset-react": "^7.0.0",
+ "@babel/register": "^7.0.0",
+ "babel-loader": "^8.0.6",
+ "circular-dependency-plugin": "^5.0.2",
"gulp": "^4.0.0",
- "gulp-babel-minify": "^0.5.0",
"gulp-csso": "^3.0.1",
- "gulp-rename": "^1.4.0"
+ "gulp-rename": "^1.4.0",
+ "webpack": "^4.29.6",
+ "webpack-cli": "^3.2.3"
}
}
diff --git a/src/0globals.js b/src/0globals.js
new file mode 100644
index 00000000..4233ca56
--- /dev/null
+++ b/src/0globals.js
@@ -0,0 +1,128 @@
+// var settingsPanel, emoteModule, quickEmoteMenu, voiceMode, pluginModule, themeModule, dMode, publicServersModule, mainCore, BDV2;
+export const minSupportedVersion = "0.3.0";
+export const bbdVersion = "0.2.24";
+export const bbdChangelog = {
+ description: "Mostly behind the scenes changes here.",
+ changes: [
+ {title: "What's New?", items: ["**Dark Mode is back!** Or rather... it's toggleable again and no longer forced on.", "**Changes for developers!** Plugin and theme developers will now have more options to customize their plugin cards in their METAs and also a new META structure."]},
+ {title: "Fixes", type: "fixed", items: ["**Emote Menu** should now show both Twich Global emotes and your favorites, you should even be able to click on them again!"]},
+ {title: "Minor Stuff", type: "improved", items: ["**Clean Code.** Well not really. But BD's code is starting to be cleaned up to make it easier to maintain and better performing."]}
+ ]
+};
+
+export const settings = {
+ "Custom css live update": {id: "bda-css-0", info: "", implemented: true, hidden: true, cat: "core"},
+ "Custom css auto udpate": {id: "bda-css-1", info: "", implemented: true, hidden: true, cat: "core"},
+ "BetterDiscord Blue": {id: "bda-gs-b", info: "Replace Discord blue with BD Blue", implemented: false, hidden: false, cat: "core"},
+
+ /* Core */
+ /* ====== */
+ "Public Servers": {id: "bda-gs-1", info: "Display public servers button", implemented: true, hidden: false, cat: "core", category: "modules"},
+ "Minimal Mode": {id: "bda-gs-2", info: "Hide elements and reduce the size of elements.", implemented: true, hidden: false, cat: "core", category: "modules"},
+ "Voice Mode": {id: "bda-gs-4", info: "Only show voice chat", implemented: true, hidden: false, cat: "core", category: "modules"},
+ "Hide Channels": {id: "bda-gs-3", info: "Hide channels in minimal mode", implemented: true, hidden: false, cat: "core", category: "modules"},
+ "Dark Mode": {id: "bda-gs-5", info: "Make certain elements dark by default(wip)", implemented: true, hidden: false, cat: "core", category: "modules"},
+ "Voice Disconnect": {id: "bda-dc-0", info: "Disconnect from voice server when closing Discord", implemented: true, hidden: false, cat: "core", category: "modules"},
+ "24 Hour Timestamps": {id: "bda-gs-6", info: "Replace 12hr timestamps with proper ones", implemented: true, hidden: false, cat: "core", category: "modules"},
+ "Colored Text": {id: "bda-gs-7", info: "Make text color the same as role color", implemented: true, hidden: false, cat: "core", category: "modules"},
+ "Normalize Classes": {id: "fork-ps-4", info: "Adds stable classes to elements to help themes. (e.g. adds .da-channels to .channels-Ie2l6A)", implemented: true, hidden: false, cat: "core", category: "modules"},
+
+ /* Content */
+ "Content Error Modal": {id: "fork-ps-1", info: "Shows a modal with plugin/theme errors", implemented: true, hidden: false, cat: "core", category: "content manager"},
+ "Show Toasts": {id: "fork-ps-2", info: "Shows a small notification for important information", implemented: true, hidden: false, cat: "core", category: "content manager"},
+ "Scroll To Settings": {id: "fork-ps-3", info: "Auto-scrolls to a plugin's settings when the button is clicked (only if out of view)", implemented: true, hidden: false, cat: "core", category: "content manager"},
+ "Automatic Loading": {id: "fork-ps-5", info: "Automatically loads, reloads, and unloads plugins and themes", implemented: true, hidden: false, cat: "core", category: "content manager"},
+
+ /* Developer */
+ "Developer Mode": {id: "bda-gs-8", info: "Developer Mode", implemented: true, hidden: false, cat: "core", category: "developer settings"},
+ "Copy Selector": {id: "fork-dm-1", info: "Adds a \"Copy Selector\" option to context menus when developer mode is active", implemented: true, hidden: false, cat: "core", category: "developer settings"},
+
+ /* Window Prefs */
+ "Enable Transparency": {id: "fork-wp-1", info: "Enables the main window to be see-through (requires restart)", implemented: true, hidden: false, cat: "core", category: "window preferences"},
+ "Window Frame": {id: "fork-wp-2", info: "Adds the native os window frame to the main window", implemented: false, hidden: true, cat: "core", category: "window preferences"},
+
+
+ /* Emotes */
+ /* ====== */
+ "Download Emotes": {id: "fork-es-3", info: "Download emotes when the cache is expired", implemented: true, hidden: false, cat: "emote"},
+ "Twitch Emotes": {id: "bda-es-7", info: "Show Twitch emotes", implemented: true, hidden: false, cat: "emote"},
+ "FrankerFaceZ Emotes": {id: "bda-es-1", info: "Show FrankerFaceZ Emotes", implemented: true, hidden: false, cat: "emote"},
+ "BetterTTV Emotes": {id: "bda-es-2", info: "Show BetterTTV Emotes", implemented: true, hidden: false, cat: "emote"},
+ "Emote Menu": {id: "bda-es-0", info: "Show Twitch/Favourite emotes in emote menu", implemented: true, hidden: false, cat: "emote"},
+ "Emoji Menu": {id: "bda-es-9", info: "Show Discord emoji menu", implemented: true, hidden: false, cat: "emote"},
+ "Emote Auto Capitalization": {id: "bda-es-4", info: "Autocapitalize emote commands", implemented: true, hidden: false, cat: "emote"},
+ "Show Names": {id: "bda-es-6", info: "Show emote names on hover", implemented: true, hidden: false, cat: "emote"},
+ "Show emote modifiers": {id: "bda-es-8", info: "Enable emote mods (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)", implemented: true, hidden: false, cat: "emote"},
+ "Animate On Hover": {id: "fork-es-2", info: "Only animate the emote modifiers on hover", implemented: true, hidden: false, cat: "emote"}
+};
+
+export const defaultCookie = {
+ "bda-gs-1": true,
+ "bda-gs-2": false,
+ "bda-gs-3": false,
+ "bda-gs-4": false,
+ "bda-gs-5": true,
+ "bda-gs-6": false,
+ "bda-gs-7": false,
+ "bda-gs-8": false,
+ "bda-es-0": true,
+ "bda-es-1": true,
+ "bda-es-2": true,
+ "bda-es-4": false,
+ "bda-es-6": true,
+ "bda-es-7": true,
+ "bda-gs-b": false,
+ "bda-es-8": true,
+ "bda-dc-0": false,
+ "bda-css-0": false,
+ "bda-css-1": false,
+ "bda-es-9": true,
+ "fork-dm-1": false,
+ "fork-ps-1": true,
+ "fork-ps-2": true,
+ "fork-ps-3": true,
+ "fork-ps-4": true,
+ "fork-ps-5": true,
+ "fork-es-2": false,
+ "fork-es-3": true,
+ "fork-wp-1": false,
+ "fork-wp-2": false
+};
+
+
+export const settingsCookie = {};
+
+export const bdpluginErrors = [];
+export const bdthemeErrors = []; // define for backwards compatibility
+
+export const bdConfig = {};
+
+export const bemotes = [];
+export const emotesFfz = {};
+export const emotesBTTV = {};
+export const emotesBTTV2 = {};
+export const emotesTwitch = {};
+export const subEmotesTwitch = {};
+
+export const bdEmotes = {
+ TwitchGlobal: {},
+ TwitchSubscriber: {},
+ BTTV: {},
+ FrankerFaceZ: {},
+ BTTV2: {}
+};
+
+export const bdEmoteSettingIDs = {
+ TwitchGlobal: "bda-es-7",
+ TwitchSubscriber: "bda-es-7",
+ BTTV: "bda-es-2",
+ FrankerFaceZ: "bda-es-1",
+ BTTV2: "bda-es-2"
+};
+
+export const bdthemes = {};
+export const bdplugins = {};
+
+export const pluginCookie = {};
+export const themeCookie = {};
+
diff --git a/src/bdApi.js b/src/bdApi.js
new file mode 100644
index 00000000..c250b86f
--- /dev/null
+++ b/src/bdApi.js
@@ -0,0 +1,234 @@
+import {pluginCookie, themeCookie, settingsCookie, bdplugins} from "./0globals";
+import mainCore from "./core";
+import Utils from "./utils";
+import BDV2 from "./v2";
+import DataStore from "./dataStore";
+
+const BdApi = {
+ get React() { return BDV2.react; },
+ get ReactDOM() { return BDV2.reactDom; },
+ get WindowConfigFile() {
+ if (this._windowConfigFile) return this._windowConfigFile;
+ const electron = require("electron").remote.app;
+ const path = require("path");
+ const base = electron.getAppPath();
+ const roamingBase = electron.getPath("userData");
+ const roamingLocation = path.resolve(roamingBase, electron.getVersion(), "modules", "discord_desktop_core", "injector", "config.json");
+ const location = path.resolve(base, "..", "app", "config.json");
+ const fs = require("fs");
+ const realLocation = fs.existsSync(location) ? location : fs.existsSync(roamingLocation) ? roamingLocation : null;
+ if (!realLocation) return this._windowConfigFile = null;
+ return this._windowConfigFile = realLocation;
+ }
+};
+
+BdApi.getAllWindowPreferences = function() {
+ if (!this.WindowConfigFile) return {}; // Tempfix until new injection on other platforms
+ return __non_webpack_require__(this.WindowConfigFile);
+};
+
+BdApi.getWindowPreference = function(key) {
+ if (!this.WindowConfigFile) return undefined; // Tempfix until new injection on other platforms
+ return this.getAllWindowPreferences()[key];
+};
+
+BdApi.setWindowPreference = function(key, value) {
+ if (!this.WindowConfigFile) return; // Tempfix until new injection on other platforms
+ const fs = require("fs");
+ const prefs = this.getAllWindowPreferences();
+ prefs[key] = value;
+ delete require.cache[this.WindowConfigFile];
+ fs.writeFileSync(this.WindowConfigFile, JSON.stringify(prefs, null, 4));
+};
+
+//Inject CSS to document head
+//id = id of element
+//css = custom css
+BdApi.injectCSS = function (id, css) {
+ $("head").append($("");
+ }
+ $("#customcss").text(this.editor.session.getValue()).detach().appendTo(document.head);
+ }
+
+ saveCss() {
+ DataStore.setBDData("bdcustomcss", btoa(this.editor.session.getValue()));
+ }
+
+ detach() {
+ const self = this;
+ self.setState({
+ detached: true
+ });
+ const droot = self.detachedRoot;
+ if (!droot) {
+ console.log("FAILED TO INJECT ROOT: .app");
+ return;
+ }
+ BDV2.reactDom.render(self.detachedEditor, droot);
+ }
+
+ get detachedRoot() {
+ const _root = $("#bd-customcss-detach-container");
+ if (!_root.length) {
+ if (!this.injectDetachedRoot()) return null;
+ return this.detachedRoot;
+ }
+ return _root[0];
+ }
+
+ injectDetachedRoot() {
+ if (!$(".app, .app-2rEoOp").length) return false;
+ $("", {
+ id: "bd-customcss-detach-container"
+ }).insertAfter($(".app, .app-2rEoOp"));
+ return true;
+ }
+
+ attach() {
+ const self = this;
+ self.setState({
+ detached: false
+ });
+ }
+}
\ No newline at end of file
diff --git a/src/react/cssEditorDetached.js b/src/react/cssEditorDetached.js
new file mode 100644
index 00000000..1b3c78b9
--- /dev/null
+++ b/src/react/cssEditorDetached.js
@@ -0,0 +1,175 @@
+import {settingsCookie} from "../0globals";
+import Settings from "../settingsPanel";
+import BDV2 from "../v2";
+import DataStore from "../dataStore";
+
+import Checkbox from "./checkbox";
+
+export default class V2C_CssEditorDetached extends BDV2.reactComponent {
+
+ constructor(props) {
+ super(props);
+ const self = this;
+ self.onClick = self.onClick.bind(self);
+ self.updateCss = self.updateCss.bind(self);
+ self.saveCss = self.saveCss.bind(self);
+ self.onChange = self.onChange.bind(self);
+ }
+
+ componentDidMount() {
+ $("#app-mount").addClass("bd-detached-editor");
+ BDV2.editorDetached = true;
+ // this.updateLineCount();
+ this.editor = ace.edit("bd-customcss-editor-detached");
+ this.editor.setTheme("ace/theme/monokai");
+ this.editor.session.setMode("ace/mode/css");
+ this.editor.setShowPrintMargin(false);
+ this.editor.setFontSize(14);
+ this.editor.on("change", () => {
+ if (!settingsCookie["bda-css-0"]) return;
+ this.saveCss();
+ this.updateCss();
+ });
+
+ }
+
+ componentWillUnmount() {
+ $("#app-mount").removeClass("bd-detached-editor");
+ BDV2.editorDetached = false;
+ this.editor.destroy();
+ }
+
+ updateLineCount() {
+ const lineCount = this.refs.editor.value.split("\n").length;
+ if (lineCount == this.props.lines) return;
+ this.refs.lines.textContent = Array.from(new Array(lineCount), (_, i) => i + 1).join(".\n") + ".";
+ this.props.lines = lineCount;
+ }
+
+ get options() {
+ return {
+ lineNumbers: true,
+ mode: "css",
+ indentUnit: 4,
+ theme: "material",
+ scrollbarStyle: "simple"
+ };
+ }
+
+ get css() {
+ const _ccss = DataStore.getBDData("bdcustomcss");
+ let ccss = "";
+ if (_ccss && _ccss !== "") {
+ ccss = atob(_ccss);
+ }
+ return ccss;
+ }
+
+ get root() {
+ const _root = $("#bd-customcss-detach-container");
+ if (!_root.length) {
+ if (!this.injectRoot()) return null;
+ return this.detachedRoot;
+ }
+ return _root[0];
+ }
+
+ injectRoot() {
+ if (!$(".app, .app-2rEoOp").length) return false;
+ $("", {
+ id: "bd-customcss-detach-container"
+ }).insertAfter($(".app, .app-2rEoOp"));
+ return true;
+ }
+
+ render() {
+ const self = this;
+ return BDV2.react.createElement(
+ "div",
+ {className: "bd-detached-css-editor", id: "bd-customcss-detach-editor"},
+ BDV2.react.createElement(
+ "div",
+ {id: "bd-customcss-innerpane"},
+ BDV2.react.createElement("div", {className: "editor-wrapper"},
+ BDV2.react.createElement("div", {id: "bd-customcss-editor-detached", className: "editor", ref: "editor"}, self.css)
+ ),
+ BDV2.react.createElement(
+ "div",
+ {id: "bd-customcss-attach-controls"},
+ BDV2.react.createElement(
+ "ul",
+ {className: "checkbox-group"},
+ BDV2.react.createElement(Checkbox, {id: "live-update", text: "Live Update", onChange: self.onChange, checked: settingsCookie["bda-css-0"]})
+ ),
+ BDV2.react.createElement(
+ "div",
+ {id: "bd-customcss-detach-controls-button"},
+ BDV2.react.createElement(
+ "button",
+ {style: {borderRadius: "3px 0 0 3px", borderRight: "1px solid #3f4146"}, className: "btn btn-primary", onClick: () => {
+ self.onClick("update");
+ }},
+ "Update"
+ ),
+ BDV2.react.createElement(
+ "button",
+ {style: {borderRadius: "0", borderLeft: "1px solid #2d2d2d", borderRight: "1px solid #2d2d2d"}, className: "btn btn-primary", onClick: () => {
+ self.onClick("save");
+ }},
+ "Save"
+ ),
+ BDV2.react.createElement(
+ "button",
+ {style: {borderRadius: "0 3px 3px 0", borderLeft: "1px solid #3f4146"}, className: "btn btn-primary", onClick: () => {
+ self.onClick("attach");
+ }},
+ "Attach"
+ ),
+ BDV2.react.createElement(
+ "span",
+ {style: {fontSize: "10px", marginLeft: "5px"}},
+ "Unsaved changes are lost on attach"
+ )
+ )
+ )
+ )
+ );
+ }
+
+ onChange(id, checked) {
+ switch (id) {
+ case "live-update":
+ settingsCookie["bda-css-0"] = checked;
+ Settings.saveSettings();
+ break;
+ }
+ }
+
+ onClick(id) {
+ const self = this;
+ switch (id) {
+ case "attach":
+ if ($("#editor-detached").length) self.props.attach();
+ BDV2.reactDom.unmountComponentAtNode(self.root);
+ self.root.remove();
+ break;
+ case "update":
+ self.updateCss();
+ break;
+ case "save":
+ self.saveCss();
+ break;
+ }
+ }
+
+ updateCss() {
+ if ($("#customcss").length == 0) {
+ $("head").append("");
+ }
+ $("#customcss").text(this.editor.session.getValue()).detach().appendTo(document.head);
+ }
+
+ saveCss() {
+ DataStore.setBDData("bdcustomcss", btoa(this.editor.session.getValue()));
+ }
+}
\ No newline at end of file
diff --git a/src/react/layer.js b/src/react/layer.js
new file mode 100644
index 00000000..2aec4dc3
--- /dev/null
+++ b/src/react/layer.js
@@ -0,0 +1,61 @@
+import BDV2 from "../v2";
+
+export default class V2C_Layer extends BDV2.reactComponent {
+
+ constructor(props) {
+ super(props);
+ }
+
+ componentDidMount() {
+ $(window).on(`keyup.${this.props.id}`, e => {
+ if (e.which === 27) {
+ BDV2.reactDom.unmountComponentAtNode(this.refs.root.parentNode);
+ }
+ });
+
+ $(`#${this.props.id}`).animate({opacity: 1}, {
+ step: function(now) {
+ $(this).css("transform", `scale(${1.1 - 0.1 * now}) translateZ(0px)`);
+ },
+ duration: 200,
+ done: () => {$(`#${this.props.id}`).css("opacity", "").css("transform", "");}
+ });
+ }
+
+ componentWillUnmount() {
+ $(window).off(`keyup.${this.props.id}`);
+ $(`#${this.props.id}`).animate({opacity: 0}, {
+ step: function(now) {
+ $(this).css("transform", `scale(${1.1 - 0.1 * now}) translateZ(0px)`);
+ },
+ duration: 200,
+ done: () => {$(`#${this.props.rootId}`).remove();}
+ });
+
+ $("[class*=\"layer-\"]").removeClass("publicServersOpen").animate({opacity: 1}, {
+ step: function(now) {
+ $(this).css("transform", `scale(${0.07 * now + 0.93}) translateZ(0px)`);
+ },
+ duration: 200,
+ done: () => {$("[class*=\"layer-\"]").css("opacity", "").css("transform", "");}
+ });
+
+ }
+
+ componentWillMount() {
+ $("[class*=\"layer-\"]").addClass("publicServersOpen").animate({opacity: 0}, {
+ step: function(now) {
+ $(this).css("transform", `scale(${0.07 * now + 0.93}) translateZ(0px)`);
+ },
+ duration: 200
+ });
+ }
+
+ render() {
+ return BDV2.react.createElement(
+ "div",
+ {className: "layer bd-layer layer-3QrUeG", id: this.props.id, ref: "root", style: {opacity: 0, transform: "scale(1.1) translateZ(0px)"}},
+ this.props.children
+ );
+ }
+}
\ No newline at end of file
diff --git a/src/react/list.js b/src/react/list.js
new file mode 100644
index 00000000..4b6ffdbd
--- /dev/null
+++ b/src/react/list.js
@@ -0,0 +1,15 @@
+import BDV2 from "../v2";
+
+export default class V2C_List extends BDV2.reactComponent {
+ constructor(props) {
+ super(props);
+ }
+
+ render() {
+ return BDV2.react.createElement(
+ "ul",
+ {className: this.props.className},
+ this.props.children
+ );
+ }
+}
\ No newline at end of file
diff --git a/src/react/pluginCard.js b/src/react/pluginCard.js
new file mode 100644
index 00000000..d9e81470
--- /dev/null
+++ b/src/react/pluginCard.js
@@ -0,0 +1,180 @@
+import {settingsCookie, pluginCookie, bdplugins} from "../0globals";
+import BDV2 from "../v2";
+import pluginModule from "../pluginModule";
+import Utils from "../utils";
+
+import XSvg from "./xSvg";
+import ReloadIcon from "./reloadIcon";
+import TooltipWrap from "./tooltipWrap";
+
+export default class V2C_PluginCard extends BDV2.reactComponent {
+
+ constructor(props) {
+ super(props);
+ const self = this;
+ self.onChange = self.onChange.bind(self);
+ self.showSettings = self.showSettings.bind(self);
+ self.setInitialState();
+ self.hasSettings = typeof self.props.plugin.getSettingsPanel === "function";
+ self.settingsPanel = "";
+
+ this.reload = this.reload.bind(this);
+ this.onReload = this.onReload.bind(this);
+ }
+
+ setInitialState() {
+ this.state = {
+ checked: pluginCookie[this.props.plugin.getName()],
+ settings: false,
+ reloads: 0
+ };
+ }
+
+ // componentDidMount() {
+ // BDEvents.on("plugin-reloaded", this.onReload);
+ // }
+
+ // componentWillUnmount() {
+ // BDEvents.off("plugin-reloaded", this.onReload);
+ // }
+
+ onReload(pluginName) {
+ if (pluginName !== this.props.plugin.getName()) return;
+ this.setState({reloads: this.state.reloads + 1});
+ }
+
+ componentDidUpdate() {
+ if (this.state.settings) {
+ if (typeof this.settingsPanel === "object") {
+ this.refs.settingspanel.appendChild(this.settingsPanel);
+ }
+
+ if (!settingsCookie["fork-ps-3"]) return;
+ const isHidden = (container, element) => {
+
+ const cTop = container.scrollTop;
+ const cBottom = cTop + container.clientHeight;
+
+ const eTop = element.offsetTop;
+ const eBottom = eTop + element.clientHeight;
+
+ return (eTop < cTop || eBottom > cBottom);
+ };
+
+ const self = $(BDV2.reactDom.findDOMNode(this));
+ const container = self.parents(".scroller");
+ if (!isHidden(container[0], self[0])) return;
+ container.animate({
+ scrollTop: self.offset().top - container.offset().top + container.scrollTop() - 30
+ }, 300);
+ }
+ }
+
+ reload() {
+ const plugin = this.props.plugin.getName();
+ pluginModule.reloadPlugin(plugin);
+ this.props.plugin = bdplugins[plugin].plugin;
+ this.onReload(this.props.plugin.getName());
+ }
+
+ getString(value) {
+ return typeof value == "string" ? value : value.toString();
+ }
+
+ makeLink(title, url) {
+ const props = {className: "bda-link bda-link-website", target: "_blank"};
+ if (typeof(url) == "string") props.href = url;
+ if (typeof(url) == "function") props.onClick = (event) => {event.preventDefault(); event.stopPropagation(); url();};
+ return BDV2.react.createElement("a", props, title);
+ }
+
+ render() {
+
+ const self = this;
+ const {plugin} = this.props;
+ const name = this.getString(plugin.getName());
+ const author = this.getString(plugin.getAuthor());
+ const description = this.getString(plugin.getDescription());
+ const version = this.getString(plugin.getVersion());
+ const meta = bdplugins[name];
+
+ if (this.state.settings) {
+ try { self.settingsPanel = plugin.getSettingsPanel(); }
+ catch (err) { Utils.err("Plugins", "Unable to get settings panel for " + plugin.getName() + ".", err); }
+
+ return BDV2.react.createElement("li", {className: "settings-open ui-switch-item"},
+ BDV2.react.createElement("div", {style: {"float": "right", "cursor": "pointer"}, onClick: () => {
+ this.refs.settingspanel.innerHTML = "";
+ self.setState({settings: false});
+ }},
+ BDV2.react.createElement(XSvg, null)
+ ),
+ typeof self.settingsPanel === "object" && BDV2.react.createElement("div", {id: `plugin-settings-${name}`, className: "plugin-settings", ref: "settingspanel"}),
+ typeof self.settingsPanel !== "object" && BDV2.react.createElement("div", {id: `plugin-settings-${name}`, className: "plugin-settings", ref: "settingspanel", dangerouslySetInnerHTML: {__html: self.settingsPanel}})
+ );
+ }
+
+ const links = [];
+ if (meta.website) links.push(this.makeLink("Website", meta.website));
+ if (meta.source) links.push(this.makeLink("Source", meta.source));
+ if (meta.invite) {
+ links.push(this.makeLink("Support Server", () => {
+ const tester = /\.gg\/(.*)$/;
+ let code = meta.invite;
+ if (tester.test(code)) code = code.match(tester)[1];
+ BDV2.LayerStack.popLayer();
+ BDV2.InviteActions.acceptInviteAndTransitionToInviteChannel(code);
+ }));
+ }
+ if (meta.donate) links.push(this.makeLink("Donate", meta.donate));
+ if (meta.patreon) links.push(this.makeLink("Patreon", meta.patreon));
+
+ const authorProps = {className: "bda-author"};
+ if (meta.authorLink || meta.authorId) {
+ authorProps.className += ` ${BDV2.anchorClasses.anchor} ${BDV2.anchorClasses.anchorUnderlineOnHover}`;
+ authorProps.target = "_blank";
+
+ if (meta.authorLink) authorProps.href = meta.authorLink;
+ if (meta.authorId) authorProps.onClick = () => {BDV2.LayerStack.popLayer(); BDV2.openDM(meta.authorId);};
+ }
+
+
+ return BDV2.react.createElement("li", {"data-name": name, "data-version": version, "className": "settings-closed ui-switch-item"},
+ BDV2.react.createElement("div", {className: "bda-header"},
+ BDV2.react.createElement("span", {className: "bda-header-title"},
+ BDV2.react.createElement("span", {className: "bda-name"}, name),
+ " v",
+ BDV2.react.createElement("span", {className: "bda-version"}, version),
+ " by ",
+ BDV2.react.createElement(meta.authorLink || meta.authorId ? "a" : "span", authorProps, author)
+ ),
+ BDV2.react.createElement("div", {className: "bda-controls"},
+ !settingsCookie["fork-ps-5"] && BDV2.react.createElement(TooltipWrap(ReloadIcon, {color: "black", side: "top", text: "Reload"}), {className: "bd-reload-card", onClick: this.reload}),
+ BDV2.react.createElement("label", {className: "ui-switch-wrapper ui-flex-child", style: {flex: "0 0 auto"}},
+ BDV2.react.createElement("input", {checked: this.state.checked, onChange: this.onChange, className: "ui-switch-checkbox", type: "checkbox"}),
+ BDV2.react.createElement("div", {className: this.state.checked ? "ui-switch checked" : "ui-switch"})
+ )
+ )
+ ),
+ BDV2.react.createElement("div", {className: "bda-description-wrap scroller-wrap fade"},
+ BDV2.react.createElement("div", {className: "bda-description scroller"}, description)
+ ),
+ (links.length || this.hasSettings) && BDV2.react.createElement("div", {className: "bda-footer"},
+ BDV2.react.createElement("span", {className: "bda-links"},
+ ...(links.map((element, index) => index < links.length - 1 ? [element, " | "] : element).flat())
+ ),
+ this.hasSettings && BDV2.react.createElement("button", {onClick: this.showSettings, className: "bda-settings-button", disabled: !this.state.checked}, "Settings")
+ )
+ );
+ }
+
+ onChange() {
+ this.setState({checked: !this.state.checked});
+ pluginModule.togglePlugin(this.props.plugin.getName());
+ }
+
+ showSettings() {
+ if (!this.hasSettings) return;
+ this.setState({settings: true});
+ }
+}
\ No newline at end of file
diff --git a/src/react/publicServers.js b/src/react/publicServers.js
new file mode 100644
index 00000000..b6fb717c
--- /dev/null
+++ b/src/react/publicServers.js
@@ -0,0 +1,437 @@
+import BDV2 from "../v2";
+
+import Tools from "./tools";
+import ServerCard from "./serverCard";
+import SidebarView from "./sidebarView";
+import SettingsTitle from "./settingsTitle";
+import TabBarSeparator from "./tabBarSeparator";
+import TabBarHeader from "./tabBarHeader";
+import TabBarItem from "./tabBarItem";
+
+export default class V2C_PublicServers extends BDV2.reactComponent {
+
+ constructor(props) {
+ super(props);
+ this.setInitialState();
+ this.close = this.close.bind(this);
+ this.changeCategory = this.changeCategory.bind(this);
+ this.search = this.search.bind(this);
+ this.searchKeyDown = this.searchKeyDown.bind(this);
+ this.checkConnection = this.checkConnection.bind(this);
+ this.join = this.join.bind(this);
+ this.connect = this.connect.bind(this);
+
+ this.GuildStore = BDV2.WebpackModules.findByUniqueProperties(["getGuilds"]);
+ this.AvatarDefaults = BDV2.WebpackModules.findByUniqueProperties(["getUserAvatarURL", "DEFAULT_AVATARS"]);
+ this.InviteActions = BDV2.WebpackModules.findByUniqueProperties(["acceptInvite"]);
+ this.SortedGuildStore = BDV2.WebpackModules.findByUniqueProperties(["getSortedGuilds"]);
+ }
+
+ componentDidMount() {
+ this.checkConnection();
+ }
+
+ setInitialState() {
+ this.state = {
+ selectedCategory: -1,
+ title: "Loading...",
+ loading: true,
+ servers: [],
+ next: null,
+ connection: {
+ state: 0,
+ user: null
+ }
+ };
+ }
+
+ close() {
+ BDV2.reactDom.unmountComponentAtNode(document.getElementById(this.props.rootId));
+ }
+
+ search(query, clear) {
+ const self = this;
+
+ $.ajax({
+ method: "GET",
+ url: `${self.endPoint}${query}${query ? "&schema=new" : "?schema=new"}`,
+ success: data => {
+ let servers = data.results.reduce((arr, server) => {
+ server.joined = false;
+ arr.push(server);
+ // arr.push();
+ return arr;
+ }, []);
+
+ if (!clear) {
+ servers = self.state.servers.concat(servers);
+ }
+ else {
+ //servers.unshift(self.bdServer);
+ }
+
+ let end = data.size + data.from;
+ data.next = `?from=${end}`;
+ if (self.state.term) data.next += `&term=${self.state.term}`;
+ if (self.state.selectedCategory) data.next += `&category=${self.categoryButtons[self.state.selectedCategory]}`;
+ if (end >= data.total) {
+ end = data.total;
+ data.next = null;
+ }
+
+ let title = `Showing 1-${end} of ${data.total} results in ${self.categoryButtons[self.state.selectedCategory]}`;
+ if (self.state.term) title += ` for ${self.state.term}`;
+
+ self.setState({
+ loading: false,
+ title: title,
+ servers: servers,
+ next: data.next
+ });
+
+ if (clear) {
+ //console.log(self);
+ self.refs.sbv.refs.contentScroller.scrollTop = 0;
+ }
+ },
+ error: () => {
+ self.setState({
+ loading: false,
+ title: "Failed to load servers. Check console for details"
+ });
+ }
+ });
+ }
+
+ join(serverCard) {
+ if (serverCard.props.pinned) return this.InviteActions.acceptInvite(serverCard.props.invite_code);
+ $.ajax({
+ method: "GET",
+ url: `${this.joinEndPoint}/${serverCard.props.server.identifier}`,
+ headers: {
+ "Accept": "application/json;",
+ "Content-Type": "application/json;" ,
+ "x-discord-token": this.state.connection.user.accessToken
+ },
+ crossDomain: true,
+ xhrFields: {
+ withCredentials: true
+ },
+ success: () => {
+ serverCard.setState({joined: true});
+ }
+ });
+ }
+
+ connect() {
+ const self = this;
+ const options = self.windowOptions;
+ options.x = Math.round(window.screenX + window.innerWidth / 2 - options.width / 2);
+ options.y = Math.round(window.screenY + window.innerHeight / 2 - options.height / 2);
+
+ self.joinWindow = new (window.require("electron").remote.BrowserWindow)(options);
+ const url = "https://auth.discordservers.com/connect?scopes=guilds.join&previousUrl=https://auth.discordservers.com/info";
+ self.joinWindow.webContents.on("did-navigate", (event, url) => {
+ if (url != "https://auth.discordservers.com/info") return;
+ self.joinWindow.close();
+ self.checkConnection();
+ });
+ self.joinWindow.loadURL(url);
+ }
+
+ get windowOptions() {
+ return {
+ width: 500,
+ height: 550,
+ backgroundColor: "#282b30",
+ show: true,
+ resizable: false,
+ maximizable: false,
+ minimizable: false,
+ alwaysOnTop: true,
+ frame: false,
+ center: false,
+ webPreferences: {
+ nodeIntegration: false
+ }
+ };
+ }
+
+ get bdServer() {
+ const server = {
+ name: "BetterDiscord",
+ online: "7500+",
+ members: "20000+",
+ categories: ["community", "programming", "support"],
+ description: "Official BetterDiscord server for support etc",
+ identifier: "86004744966914048",
+ iconUrl: "https://cdn.discordapp.com/icons/86004744966914048/292e7f6bfff2b71dfd13e508a859aedd.webp",
+ nativejoin: true,
+ invite_code: "0Tmfo5ZbORCRqbAd",
+ pinned: true
+ };
+ const guildList = this.SortedGuildStore.getFlattenedGuildIds();
+ const defaultList = this.AvatarDefaults.DEFAULT_AVATARS;
+ return BDV2.react.createElement(ServerCard, {server: server, pinned: true, join: this.join, guildList: guildList, fallback: defaultList[Math.floor(Math.random() * 5)]});
+ }
+
+ get endPoint() {
+ return "https://search.discordservers.com";
+ }
+
+ get joinEndPoint() {
+ return "https://j.discordservers.com";
+ }
+
+ get connectEndPoint() {
+ return "https://join.discordservers.com/connect";
+ }
+
+ checkConnection() {
+ const self = this;
+ try {
+ $.ajax({
+ method: "GET",
+ url: `https://auth.discordservers.com/info`,
+ headers: {
+ "Accept": "application/json;",
+ "Content-Type": "application/json;"
+ },
+ crossDomain: true,
+ xhrFields: {
+ withCredentials: true
+ },
+ success: data => {
+ // Utils.log("PublicServer", "Got data: " + JSON.stringify(data));
+ self.setState({
+ selectedCategory: 0,
+ connection: {
+ state: 2,
+ user: data
+ }
+ });
+ self.search("", true);
+
+ },
+ error: () => {
+ self.setState({
+ title: "Not connected to discordservers.com!",
+ loading: true,
+ selectedCategory: -1,
+ connection: {
+ state: 1,
+ user: null
+ }
+ });
+ }
+ });
+ }
+ catch (error) {
+ self.setState({
+ title: "Not connected to discordservers.com!",
+ loading: true,
+ selectedCategory: -1,
+ connection: {
+ state: 1,
+ user: null
+ }
+ });
+ }
+ }
+
+ render() {
+ return BDV2.react.createElement(SidebarView, {ref: "sbv", children: this.component});
+ }
+
+ get component() {
+ return {
+ sidebar: {
+ component: this.sidebar
+ },
+ content: {
+ component: this.content
+ },
+ tools: {
+ component: BDV2.react.createElement(Tools, {key: "pt", ref: "tools", onClick: this.close})
+ }
+ };
+ }
+
+ get sidebar() {
+ return BDV2.react.createElement(
+ "div",
+ {className: "sidebar", key: "ps"},
+ BDV2.react.createElement(
+ "div",
+ {className: "ui-tab-bar SIDE"},
+ BDV2.react.createElement(
+ "div",
+ {className: "ui-tab-bar-header", style: {fontSize: "16px"}},
+ "Public Servers"
+ ),
+ BDV2.react.createElement(TabBarSeparator, null),
+ this.searchInput,
+ BDV2.react.createElement(TabBarSeparator, null),
+ BDV2.react.createElement(TabBarHeader, {text: "Categories"}),
+ this.categoryButtons.map((value, index) => {
+ return BDV2.react.createElement(TabBarItem, {id: index, onClick: this.changeCategory, key: index, text: value, selected: this.state.selectedCategory === index});
+ }),
+ BDV2.react.createElement(TabBarSeparator, null),
+ this.footer,
+ this.connection
+ )
+ );
+ }
+
+ get searchInput() {
+ return BDV2.react.createElement(
+ "div",
+ {className: "ui-form-item"},
+ BDV2.react.createElement(
+ "div",
+ {className: "ui-text-input flex-vertical", style: {width: "172px", marginLeft: "10px"}},
+ BDV2.react.createElement("input", {ref: "searchinput", onKeyDown: this.searchKeyDown, onChange: () => {}, type: "text", className: "input default", placeholder: "Search...", maxLength: "50"})
+ )
+ );
+ }
+
+ searchKeyDown(e) {
+ const self = this;
+ if (self.state.loading || e.which !== 13) return;
+ self.setState({
+ loading: true,
+ title: "Loading...",
+ term: e.target.value
+ });
+ let query = `?term=${e.target.value}`;
+ if (self.state.selectedCategory !== 0) {
+ query += `&category=${self.categoryButtons[self.state.selectedCategory]}`;
+ }
+ self.search(query, true);
+ }
+
+ 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"];
+ }
+
+ changeCategory(id) {
+ const self = this;
+ if (self.state.loading) return;
+ self.refs.searchinput.value = "";
+ self.setState({
+ loading: true,
+ selectedCategory: id,
+ title: "Loading...",
+ term: null
+ });
+ if (id === 0) {
+ self.search("", true);
+ return;
+ }
+ self.search(`?category=${self.categoryButtons[id]}`, true);
+ }
+
+ get content() {
+ const self = this;
+ const guildList = this.SortedGuildStore.getFlattenedGuildIds();
+ const defaultList = this.AvatarDefaults.DEFAULT_AVATARS;
+ if (self.state.connection.state === 1) return self.notConnected;
+ return [BDV2.react.createElement(
+ "div",
+ {ref: "content", key: "pc", className: "contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"},
+ BDV2.react.createElement(SettingsTitle, {text: self.state.title}),
+ self.bdServer,
+ self.state.servers.map((server) => {
+ return BDV2.react.createElement(ServerCard, {key: server.identifier, server: server, join: self.join, guildList: guildList, fallback: defaultList[Math.floor(Math.random() * 5)]});
+ }),
+ self.state.next && BDV2.react.createElement(
+ "button",
+ {type: "button", onClick: () => {
+ if (self.state.loading) return;self.setState({loading: true}); self.search(self.state.next, false);
+ }, className: "ui-button filled brand small grow", style: {width: "100%", marginTop: "10px", marginBottom: "10px"}},
+ BDV2.react.createElement(
+ "div",
+ {className: "ui-button-contents"},
+ self.state.loading ? "Loading" : "Load More"
+ )
+ ),
+ self.state.servers.length > 0 && BDV2.react.createElement(SettingsTitle, {text: self.state.title})
+ )];
+ }
+
+ get notConnected() {
+ const self = this;
+ //return BDV2.react.createElement(SettingsTitle, { text: self.state.title });
+ return [BDV2.react.createElement(
+ "div",
+ {key: "ncc", ref: "content", className: "contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"},
+ BDV2.react.createElement(
+ "h2",
+ {className: "ui-form-title h2 margin-reset margin-bottom-20"},
+ "Not connected to discordservers.com!",
+ BDV2.react.createElement(
+ "button",
+ {
+ onClick: self.connect,
+ type: "button",
+ className: "ui-button filled brand small grow",
+ style: {
+ display: "inline-block",
+ minHeight: "18px",
+ marginLeft: "10px",
+ lineHeight: "14px"
+ }
+ },
+ BDV2.react.createElement(
+ "div",
+ {className: "ui-button-contents"},
+ "Connect"
+ )
+ )
+ ), self.bdServer
+ )];
+ }
+
+ get footer() {
+ return BDV2.react.createElement(
+ "div",
+ {className: "ui-tab-bar-header"},
+ BDV2.react.createElement(
+ "a",
+ {href: "https://discordservers.com", target: "_blank"},
+ "Discordservers.com"
+ )
+ );
+ }
+
+ get connection() {
+ const self = this;
+ const {connection} = self.state;
+ if (connection.state !== 2) return BDV2.react.createElement("span", null);
+
+ return BDV2.react.createElement(
+ "span",
+ null,
+ BDV2.react.createElement(TabBarSeparator, null),
+ BDV2.react.createElement(
+ "span",
+ {style: {color: "#b9bbbe", fontSize: "10px", marginLeft: "10px"}},
+ "Connected as: ",
+ `${connection.user.username}#${connection.user.discriminator}`
+ ),
+ BDV2.react.createElement(
+ "div",
+ {style: {padding: "5px 10px 0 10px"}},
+ BDV2.react.createElement(
+ "button",
+ {style: {width: "100%", minHeight: "20px"}, type: "button", className: "ui-button filled brand small grow"},
+ BDV2.react.createElement(
+ "div",
+ {className: "ui-button-contents", onClick: self.connect},
+ "Reconnect"
+ )
+ )
+ )
+ );
+}
+}
\ No newline at end of file
diff --git a/src/react/reloadIcon.js b/src/react/reloadIcon.js
new file mode 100644
index 00000000..89f6af68
--- /dev/null
+++ b/src/react/reloadIcon.js
@@ -0,0 +1,21 @@
+import BDV2 from "../v2";
+
+export default class V2C_ReloadIcon extends BDV2.reactComponent {
+ constructor(props) {
+ super(props);
+ }
+
+ render() {
+ return BDV2.react.createElement("svg", {
+ xmlns: "http://www.w3.org/2000/svg",
+ viewBox: "0 0 24 24",
+ fill: "#dcddde",
+ className: "bd-reload " + this.props.className,
+ onClick: this.props.onClick,
+ style: {width: this.props.size || "24px", height: this.props.size || "24px"}
+ },
+ BDV2.react.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"}),
+ BDV2.react.createElement("path", {fill: "none", d: "M0 0h24v24H0z"})
+ );
+ }
+}
\ No newline at end of file
diff --git a/src/react/scroller.js b/src/react/scroller.js
new file mode 100644
index 00000000..d7dbf637
--- /dev/null
+++ b/src/react/scroller.js
@@ -0,0 +1,29 @@
+import BDV2 from "../v2";
+
+export default class V2C_Scroller extends BDV2.reactComponent {
+
+ constructor(props) {
+ super(props);
+ }
+
+ render() {
+ //scrollerWrap-2lJEkd scrollerThemed-2oenus themeGhostHairline-DBD-2d scrollerFade-1Ijw5y
+ let wrapperClass = `scrollerWrap-2lJEkd scrollerThemed-2oenus themeGhostHairline-DBD-2d${this.props.fade ? " scrollerFade-1Ijw5y" : ""}`;
+ let scrollerClass = "scroller-2FKFPG scroller"; /* fuck */
+ if (this.props.sidebar) scrollerClass = "scroller-2FKFPG firefoxFixScrollFlex-cnI2ix sidebarRegionScroller-3MXcoP sidebar-region-scroller scroller";
+ if (this.props.contentColumn) {
+ scrollerClass = "scroller-2FKFPG firefoxFixScrollFlex-cnI2ix contentRegionScroller-26nc1e content-region-scroller scroller"; /* fuck */
+ wrapperClass = "scrollerWrap-2lJEkd firefoxFixScrollFlex-cnI2ix contentRegionScrollerWrap-3YZXdm content-region-scroller-wrap scrollerThemed-2oenus themeGhost-28MSn0 scrollerTrack-1ZIpsv";
+ }
+ const {children} = this.props;
+ return BDV2.react.createElement(
+ "div",
+ {key: "scrollerwrap", className: wrapperClass},
+ BDV2.react.createElement(
+ "div",
+ {key: "scroller", ref: "scroller", className: scrollerClass},
+ children
+ )
+ );
+ }
+}
\ No newline at end of file
diff --git a/src/react/sectionedSettingsPanel.js b/src/react/sectionedSettingsPanel.js
new file mode 100644
index 00000000..b843b8da
--- /dev/null
+++ b/src/react/sectionedSettingsPanel.js
@@ -0,0 +1,19 @@
+import BDV2 from "../v2";
+
+import SettingsGroup from "./settingsGroup";
+
+export default class V2C_SectionedSettingsPanel extends BDV2.reactComponent {
+
+ constructor(props) {
+ super(props);
+ }
+
+ render() {
+ return BDV2.react.createElement(
+ "div", {className: "contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"},
+ this.props.sections.map(section => {
+ return BDV2.react.createElement(SettingsGroup, Object.assign({}, section, {onChange: this.props.onChange}));
+ })
+ );
+ }
+}
\ No newline at end of file
diff --git a/src/react/serverCard.js b/src/react/serverCard.js
new file mode 100644
index 00000000..0d4a6c91
--- /dev/null
+++ b/src/react/serverCard.js
@@ -0,0 +1,103 @@
+import BDV2 from "../v2";
+
+export default class V2C_ServerCard extends BDV2.reactComponent {
+ constructor(props) {
+ super(props);
+ if (!this.props.server.iconUrl) this.props.server.iconUrl = this.props.fallback;
+ this.state = {
+ imageError: false,
+ joined: this.props.guildList.includes(this.props.server.identifier)
+ };
+ }
+
+ render() {
+ const {server} = this.props;
+ return BDV2.react.createElement(
+ "div", // cardPrimary-1Hv-to
+ {className: `card-3Qj_Yx cardPrimary-1Hv-to marginBottom8-AtZOdT bd-server-card${server.pinned ? " bd-server-card-pinned" : ""}`},
+ // BDV2.react.createElement(
+ // "div",
+ // { className: "flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY flex-1O1GKY directionRow-3v3tfG justifyStart-2yIZo0 alignStretch-1hwxMa noWrap-3jynv6" },
+ BDV2.react.createElement("img", {ref: "img", className: "bd-server-image", src: server.iconUrl, onError: this.handleError.bind(this)}),
+ BDV2.react.createElement(
+ "div",
+ {className: "flexChild-faoVW3 bd-server-content"},
+ BDV2.react.createElement(
+ "div",
+ {className: "flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-header"},
+ BDV2.react.createElement(
+ "h5",
+ {className: "h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-name"},
+ server.name
+ ),
+ BDV2.react.createElement(
+ "h5",
+ {className: "h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-member-count"},
+ server.members,
+ " Members"
+ )
+ ),
+ BDV2.react.createElement(
+ "div",
+ {className: "flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6"},
+ BDV2.react.createElement(
+ "div",
+ {className: "scrollerWrap-2lJEkd scrollerThemed-2oenus themeGhostHairline-DBD-2d scrollerFade-1Ijw5y bd-server-description-container"},
+ BDV2.react.createElement(
+ "div",
+ {className: "scroller-2FKFPG scroller bd-server-description"},
+ server.description
+ )
+ )
+ ),
+ BDV2.react.createElement(
+ "div",
+ {className: "flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-footer"},
+ BDV2.react.createElement(
+ "div",
+ {className: "flexChild-faoVW3 bd-server-tags", style: {flex: "1 1 auto"}},
+ server.categories.join(", ")
+ ),
+ this.state.joined && BDV2.react.createElement(
+ "button",
+ {type: "button", className: "button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN colorGreen-29iAKY", style: {minHeight: "12px", marginTop: "4px", backgroundColor: "#3ac15c"}},
+ BDV2.react.createElement(
+ "div",
+ {className: "ui-button-contents"},
+ "Joined"
+ )
+ ),
+ server.error && BDV2.react.createElement(
+ "button",
+ {type: "button", className: "button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN disabled-9aF2ug", style: {minHeight: "12px", marginTop: "4px", backgroundColor: "#c13a3a"}},
+ BDV2.react.createElement(
+ "div",
+ {className: "ui-button-contents"},
+ "Error"
+ )
+ ),
+ !server.error && !this.state.joined && BDV2.react.createElement(
+ "button",
+ {type: "button", className: "button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN", style: {minHeight: "12px", marginTop: "4px"}, onClick: () => {this.join();}},
+ BDV2.react.createElement(
+ "div",
+ {className: "ui-button-contents"},
+ "Join"
+ )
+ )
+ )
+ )
+ // )
+ );
+ }
+
+ handleError() {
+ this.props.server.iconUrl = this.props.fallback;
+ this.setState({imageError: true});
+ }
+
+ join() {
+ this.props.join(this);
+ //this.setState({joined: true});
+ }
+}
\ No newline at end of file
diff --git a/src/react/settingsGroup.js b/src/react/settingsGroup.js
new file mode 100644
index 00000000..73aa3ee0
--- /dev/null
+++ b/src/react/settingsGroup.js
@@ -0,0 +1,24 @@
+import {settingsCookie} from "../0globals";
+import BDV2 from "../v2";
+
+import SettingsTitle from "./settingsTitle";
+import Switch from "./switch";
+
+export default class V2C_SettingsGroup extends BDV2.reactComponent {
+
+ constructor(props) {
+ super(props);
+ }
+
+ render() {
+ const {title, settings, button} = this.props;
+ const buttonComponent = button ? BDV2.react.createElement("button", {key: "title-button", className: "bd-pfbtn", onClick: button.onClick}, button.title) : null;
+ return [BDV2.react.createElement(SettingsTitle, {text: title}),
+ buttonComponent,
+ settings.map(setting => {
+ return BDV2.react.createElement(Switch, {id: setting.id, key: setting.id, data: setting, checked: settingsCookie[setting.id], onChange: (id, checked) => {
+ this.props.onChange(id, checked);
+ }});
+ })];
+ }
+}
\ No newline at end of file
diff --git a/src/react/settingsPanel.js b/src/react/settingsPanel.js
new file mode 100644
index 00000000..4a523cde
--- /dev/null
+++ b/src/react/settingsPanel.js
@@ -0,0 +1,27 @@
+import {settingsCookie} from "../0globals";
+import BDV2 from "../v2";
+
+import SettingsTitle from "./settingsTitle";
+import Switch from "./switch";
+
+export default class V2C_SettingsPanel extends BDV2.reactComponent {
+
+ constructor(props) {
+ super(props);
+ }
+
+ render() {
+ const {settings} = this.props;
+ return BDV2.react.createElement(
+ "div",
+ {className: "contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"},
+ BDV2.react.createElement(SettingsTitle, {text: this.props.title}),
+ this.props.button && BDV2.react.createElement("button", {key: "title-button", className: "bd-pfbtn", onClick: this.props.button.onClick}, this.props.button.title),
+ settings.map(setting => {
+ return BDV2.react.createElement(Switch, {id: setting.id, key: setting.id, data: setting, checked: settingsCookie[setting.id], onChange: (id, checked) => {
+ this.props.onChange(id, checked);
+ }});
+ })
+ );
+ }
+}
\ No newline at end of file
diff --git a/src/react/settingsTitle.js b/src/react/settingsTitle.js
new file mode 100644
index 00000000..d770cb9b
--- /dev/null
+++ b/src/react/settingsTitle.js
@@ -0,0 +1,15 @@
+import BDV2 from "../v2";
+
+export default class V2C_SettingsTitle extends BDV2.reactComponent {
+ constructor(props) {
+ super(props);
+ }
+//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
+ render() {
+ return BDV2.react.createElement(
+ "h2",
+ {className: "ui-form-title h2 margin-reset margin-bottom-20 marginTop60-3PGbtK da-marginTop6"},
+ this.props.text
+ );
+ }
+}
\ No newline at end of file
diff --git a/src/react/sidebar.js b/src/react/sidebar.js
new file mode 100644
index 00000000..5558f9e5
--- /dev/null
+++ b/src/react/sidebar.js
@@ -0,0 +1,71 @@
+import BDV2 from "../v2";
+
+import TabBarSeparator from "./tabBarSeparator";
+import TabBarHeader from "./tabBarHeader";
+import TabBarItem from "./tabBarItem";
+
+export default class V2C_SideBar extends BDV2.reactComponent {
+
+ constructor(props) {
+ super(props);
+ const self = this;
+ const si = $("[class*=side-] > [class*=selected]");
+ if (si.length) self.scn = si.attr("class");
+ const ns = $("[class*=side-] > [class*='item-']:not([class*=selected])");
+ if (ns.length) self.nscn = ns.attr("class");
+ $("[class*='side-'] > [class*='item-']").on("click", () => {
+ self.setState({
+ selected: null
+ });
+ });
+ self.setInitialState();
+ self.onClick = self.onClick.bind(self);
+ }
+
+ setInitialState() {
+ const self = this;
+ self.state = {
+ selected: null,
+ items: self.props.items
+ };
+
+ const initialSelection = self.props.items.find(item => {
+ return item.selected;
+ });
+ if (initialSelection) {
+ self.state.selected = initialSelection.id;
+ }
+ }
+
+ render() {
+ const self = this;
+ const {headerText} = self.props;
+ const {items, selected} = self.state;
+ return BDV2.react.createElement(
+ "div",
+ null,
+ BDV2.react.createElement(TabBarSeparator, null),
+ BDV2.react.createElement(TabBarHeader, {text: headerText}),
+ items.map(item => {
+ const {id, text} = item;
+ return BDV2.react.createElement(TabBarItem, {key: id, selected: selected === id, text: text, id: id, onClick: self.onClick});
+ })
+ );
+ }
+
+ onClick(id) {
+ const self = this;
+ const si = $("[class*=side] > [class*=selected]");
+ if (si.length) {
+ si.off("click.bdsb").on("click.bsb", e => {
+ $(e.target).attr("class", self.scn);
+ });
+ si.attr("class", self.nscn);
+ }
+
+ self.setState({selected: null});
+ self.setState({selected: id});
+
+ if (self.props.onClick) self.props.onClick(id);
+ }
+}
\ No newline at end of file
diff --git a/src/react/sidebarView.js b/src/react/sidebarView.js
new file mode 100644
index 00000000..c6621994
--- /dev/null
+++ b/src/react/sidebarView.js
@@ -0,0 +1,33 @@
+import BDV2 from "../v2";
+
+import Scroller from "./scroller";
+
+export default class V2C_SidebarView extends BDV2.reactComponent {
+
+ constructor(props) {
+ super(props);
+ }
+
+ render() {
+ const {sidebar, content, tools} = this.props.children;
+ return BDV2.react.createElement(
+ "div",
+ {className: "standardSidebarView-3F1I7i ui-standard-sidebar-view"},
+ BDV2.react.createElement(
+ "div",
+ {className: "sidebarRegion-VFTUkN sidebar-region"},
+ BDV2.react.createElement(Scroller, {key: "sidebarScroller", ref: "sidebarScroller", sidebar: true, fade: sidebar.fade || true, dark: sidebar.dark || true, children: sidebar.component})
+ ),
+ BDV2.react.createElement("div", {className: "contentRegion-3nDuYy content-region"},
+ BDV2.react.createElement("div", {className: "contentTransitionWrap-3hqOEW content-transition-wrap"},
+ BDV2.react.createElement("div", {className: "scrollerWrap-2lJEkd firefoxFixScrollFlex-cnI2ix contentRegionScrollerWrap-3YZXdm content-region-scroller-wrap scrollerThemed-2oenus themeGhost-28MSn0 scrollerTrack-1ZIpsv"},
+ BDV2.react.createElement("div", {className: "scroller-2FKFPG firefoxFixScrollFlex-cnI2ix contentRegionScroller-26nc1e content-region-scroller scroller", ref: "contentScroller"},
+ BDV2.react.createElement("div", {className: "contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"}, content.component),
+ tools.component
+ )
+ )
+ )
+ )
+ );
+ }
+}
\ No newline at end of file
diff --git a/src/react/switch.js b/src/react/switch.js
new file mode 100644
index 00000000..28dd9e9a
--- /dev/null
+++ b/src/react/switch.js
@@ -0,0 +1,52 @@
+import BDV2 from "../v2";
+
+export default class V2C_Switch extends BDV2.reactComponent {
+
+ constructor(props) {
+ super(props);
+ this.setInitialState();
+ this.onChange = this.onChange.bind(this);
+ }
+
+ setInitialState() {
+ this.state = {
+ checked: this.props.checked
+ };
+ }
+
+ render() {
+ const {text, info} = this.props.data;
+ const {checked} = this.state;
+ return BDV2.react.createElement(
+ "div",
+ {className: "ui-flex flex-vertical flex-justify-start flex-align-stretch flex-nowrap ui-switch-item"},
+ BDV2.react.createElement(
+ "div",
+ {className: "ui-flex flex-horizontal flex-justify-start flex-align-stretch flex-nowrap"},
+ BDV2.react.createElement(
+ "h3",
+ {className: "ui-form-title h3 margin-reset margin-reset ui-flex-child"},
+ text
+ ),
+ BDV2.react.createElement(
+ "label",
+ {className: "ui-switch-wrapper ui-flex-child", style: {flex: "0 0 auto"}},
+ BDV2.react.createElement("input", {className: "ui-switch-checkbox", type: "checkbox", checked: checked, onChange: e => this.onChange(e)}),
+ BDV2.react.createElement("div", {className: `ui-switch ${checked ? "checked" : ""}`})
+ )
+ ),
+ BDV2.react.createElement(
+ "div",
+ {className: "ui-form-text style-description margin-top-4", style: {flex: "1 1 auto"}},
+ info
+ )
+ );
+ }
+
+ onChange() {
+ this.props.onChange(this.props.id, !this.state.checked);
+ this.setState({
+ checked: !this.state.checked
+ });
+ }
+}
\ No newline at end of file
diff --git a/src/react/tabBarHeader.js b/src/react/tabBarHeader.js
new file mode 100644
index 00000000..4f49fa50
--- /dev/null
+++ b/src/react/tabBarHeader.js
@@ -0,0 +1,15 @@
+import BDV2 from "../v2";
+
+export default class V2C_TabBarHeader extends BDV2.reactComponent {
+ constructor(props) {
+ super(props);
+ }
+
+ render() {
+ return BDV2.react.createElement(
+ "div",
+ {className: "ui-tab-bar-header"},
+ this.props.text
+ );
+ }
+}
\ No newline at end of file
diff --git a/src/react/tabBarItem.js b/src/react/tabBarItem.js
new file mode 100644
index 00000000..ef27f060
--- /dev/null
+++ b/src/react/tabBarItem.js
@@ -0,0 +1,30 @@
+import BDV2 from "../v2";
+
+export default class V2C_TabBarItem extends BDV2.reactComponent {
+
+ constructor(props) {
+ super(props);
+ this.setInitialState();
+ this.onClick = this.onClick.bind(this);
+ }
+
+ setInitialState() {
+ this.state = {
+ selected: this.props.selected || false
+ };
+ }
+
+ render() {
+ return BDV2.react.createElement(
+ "div",
+ {className: `ui-tab-bar-item${this.props.selected ? " selected" : ""}`, onClick: this.onClick},
+ this.props.text
+ );
+ }
+
+ onClick() {
+ if (this.props.onClick) {
+ this.props.onClick(this.props.id);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/react/tabBarSeparator.js b/src/react/tabBarSeparator.js
new file mode 100644
index 00000000..2e772363
--- /dev/null
+++ b/src/react/tabBarSeparator.js
@@ -0,0 +1,11 @@
+import BDV2 from "../v2";
+
+export default class V2C_TabBarSeparator extends BDV2.reactComponent {
+ constructor(props) {
+ super(props);
+ }
+
+ render() {
+ return BDV2.react.createElement("div", {className: "ui-tab-bar-separator margin-top-8 margin-bottom-8"});
+ }
+}
\ No newline at end of file
diff --git a/src/react/themeCard.js b/src/react/themeCard.js
new file mode 100644
index 00000000..b1e61bd4
--- /dev/null
+++ b/src/react/themeCard.js
@@ -0,0 +1,119 @@
+import {settingsCookie, themeCookie, bdthemes} from "../0globals";
+import Utils from "../utils";
+import BDV2 from "../v2";
+import themeModule from "../themeModule";
+
+import ReloadIcon from "./reloadIcon";
+import TooltipWrap from "./tooltipWrap";
+
+export default class V2C_ThemeCard extends BDV2.reactComponent {
+
+ constructor(props) {
+ super(props);
+ this.setInitialState();
+ this.onChange = this.onChange.bind(this);
+ this.reload = this.reload.bind(this);
+ }
+
+ setInitialState() {
+ this.state = {
+ checked: themeCookie[this.props.theme.name],
+ reloads: 0
+ };
+ }
+
+ // componentDidMount() {
+ // BDEvents.on("theme-reloaded", this.onReload);
+ // }
+
+ // componentWillUnmount() {
+ // BDEvents.off("theme-reloaded", this.onReload);
+ // }
+
+ onReload(themeName) {
+ if (themeName !== this.props.theme.name) return;
+ this.setState({reloads: this.state.reloads + 1});
+ }
+
+ reload() {
+ const theme = this.props.theme.name;
+ const error = themeModule.reloadTheme(theme);
+ if (error) Utils.showToast(`Could not reload ${bdthemes[theme].name}. Check console for details.`, {type: "error"});
+ else Utils.showToast(`${bdthemes[theme].name} v${bdthemes[theme].version} has been reloaded.`, {type: "success"});
+ // this.setState(this.state);
+ this.props.theme = bdthemes[theme];
+ this.onReload(this.props.theme.name);
+ }
+
+ makeLink(title, url) {
+ const props = {className: "bda-link bda-link-website", target: "_blank"};
+ if (typeof(url) == "string") props.href = url;
+ if (typeof(url) == "function") props.onClick = (event) => {event.preventDefault(); event.stopPropagation(); url();};
+ return BDV2.react.createElement("a", props, title);
+ }
+
+ render() {
+ const {theme} = this.props;
+ const name = theme.name;
+ const description = theme.description;
+ const version = theme.version;
+ const author = theme.author;
+ const meta = bdthemes[name];
+
+ const links = [];
+ if (meta.website) links.push(this.makeLink("Website", meta.website));
+ if (meta.source) links.push(this.makeLink("Source", meta.source));
+ if (meta.invite) {
+ links.push(this.makeLink("Support Server", () => {
+ const tester = /\.gg\/(.*)$/;
+ let code = meta.invite;
+ if (tester.test(code)) code = code.match(tester)[1];
+ BDV2.LayerStack.popLayer();
+ BDV2.InviteActions.acceptInviteAndTransitionToInviteChannel(code);
+ }));
+ }
+ if (meta.donate) links.push(this.makeLink("Donate", meta.donate));
+ if (meta.patreon) links.push(this.makeLink("Patreon", meta.patreon));
+
+ const authorProps = {className: "bda-author"};
+ if (meta.authorLink || meta.authorId) {
+ authorProps.className += ` ${BDV2.anchorClasses.anchor} ${BDV2.anchorClasses.anchorUnderlineOnHover}`;
+ authorProps.target = "_blank";
+
+ if (meta.authorLink) authorProps.href = meta.authorLink;
+ if (meta.authorId) authorProps.onClick = () => {BDV2.LayerStack.popLayer(); BDV2.openDM(meta.authorId);};
+ }
+
+ return BDV2.react.createElement("li", {"data-name": name, "data-version": version, "className": "settings-closed ui-switch-item"},
+ BDV2.react.createElement("div", {className: "bda-header"},
+ BDV2.react.createElement("span", {className: "bda-header-title"},
+ BDV2.react.createElement("span", {className: "bda-name"}, name),
+ " v",
+ BDV2.react.createElement("span", {className: "bda-version"}, version),
+ " by ",
+ BDV2.react.createElement(meta.authorLink || meta.authorId ? "a" : "span", authorProps, author)
+ ),
+ BDV2.react.createElement("div", {className: "bda-controls"},
+ !settingsCookie["fork-ps-5"] && BDV2.react.createElement(TooltipWrap(ReloadIcon, {color: "black", side: "top", text: "Reload"}), {className: "bd-reload-card", onClick: this.reload}),
+ BDV2.react.createElement("label", {className: "ui-switch-wrapper ui-flex-child", style: {flex: "0 0 auto"}},
+ BDV2.react.createElement("input", {checked: this.state.checked, onChange: this.onChange, className: "ui-switch-checkbox", type: "checkbox"}),
+ BDV2.react.createElement("div", {className: this.state.checked ? "ui-switch checked" : "ui-switch"})
+ )
+ )
+ ),
+ BDV2.react.createElement("div", {className: "bda-description-wrap scroller-wrap fade"},
+ BDV2.react.createElement("div", {className: "bda-description scroller"}, description)
+ ),
+ (!!links.length) && BDV2.react.createElement("div", {className: "bda-footer"},
+ BDV2.react.createElement("span", {className: "bda-links"},
+ ...(links.map((element, index) => index < links.length - 1 ? [element, " | "] : element).flat())
+ )
+ )
+ );
+ }
+
+ onChange() {
+ this.setState({checked: !this.state.checked});
+ themeModule.toggleTheme(this.props.theme.name);
+ }
+}
\ No newline at end of file
diff --git a/src/react/tools.js b/src/react/tools.js
new file mode 100644
index 00000000..94e82134
--- /dev/null
+++ b/src/react/tools.js
@@ -0,0 +1,36 @@
+import BDV2 from "../v2";
+
+import XSvg from "./xSvg";
+
+export default class V2C_Tools extends BDV2.reactComponent {
+
+ constructor(props) {
+ super(props);
+ this.onClick = this.onClick.bind(this);
+ }
+
+ render() {
+ return BDV2.react.createElement("div", {className: "tools-container toolsContainer-1edPuj"},
+ BDV2.react.createElement("div", {className: "tools tools-3-3s-N"},
+ BDV2.react.createElement("div", {className: "container-1sFeqf"},
+ BDV2.react.createElement("div",
+ {className: "btn-close closeButton-1tv5uR", onClick: this.onClick},
+ BDV2.react.createElement(XSvg, null)
+ ),
+ BDV2.react.createElement(
+ "div",
+ {className: "esc-text keybind-KpFkfr"},
+ "ESC"
+ )
+ )
+ )
+ );
+ }
+
+ onClick() {
+ if (this.props.onClick) {
+ this.props.onClick();
+ }
+ $(".closeButton-1tv5uR").first().click();
+ }
+}
\ No newline at end of file
diff --git a/src/react/tooltipWrap.js b/src/react/tooltipWrap.js
new file mode 100644
index 00000000..93402c1b
--- /dev/null
+++ b/src/react/tooltipWrap.js
@@ -0,0 +1,65 @@
+import BDV2 from "../v2";
+import Utils from "../utils";
+
+export default function(Component, options) {
+ const {style = "black", side = "top", text = ""} = options;
+ const id = BDV2.KeyGenerator();
+
+ return class extends BDV2.reactComponent {
+ constructor(props) {
+ super(props);
+ this.onMouseEnter = this.onMouseEnter.bind(this);
+ this.onMouseLeave = this.onMouseLeave.bind(this);
+ }
+
+ componentDidMount() {
+ this.node = BDV2.reactDom.findDOMNode(this);
+ this.node.addEventListener("mouseenter", this.onMouseEnter);
+ this.node.addEventListener("mouseleave", this.onMouseLeave);
+ }
+
+ componentWillUnmount() {
+ this.node.removeEventListener("mouseenter", this.onMouseEnter);
+ this.node.removeEventListener("mouseleave", this.onMouseLeave);
+ }
+
+ onMouseEnter() {
+ if (!BDV2.Tooltips) return;
+ const {left, top, width, height} = this.node.getBoundingClientRect();
+ BDV2.Tooltips.show(id, {
+ position: side,
+ text: text,
+ color: style,
+ targetWidth: width,
+ targetHeight: height,
+ windowWidth: Utils.screenWidth,
+ windowHeight: Utils.screenHeight,
+ x: left,
+ y: top
+ });
+
+ const observer = new MutationObserver((mutations) => {
+ mutations.forEach((mutation) => {
+ const nodes = Array.from(mutation.removedNodes);
+ const directMatch = nodes.indexOf(this.node) > -1;
+ const parentMatch = nodes.some(parent => parent.contains(this.node));
+ if (directMatch || parentMatch) {
+ this.onMouseLeave();
+ observer.disconnect();
+ }
+ });
+ });
+
+ observer.observe(document.body, {subtree: true, childList: true});
+ }
+
+ onMouseLeave() {
+ if (!BDV2.Tooltips) return;
+ BDV2.Tooltips.hide(id);
+ }
+
+ render() {
+ return BDV2.react.createElement(Component, this.props);
+ }
+ };
+}
\ No newline at end of file
diff --git a/src/react/xSvg.js b/src/react/xSvg.js
new file mode 100644
index 00000000..e6da568c
--- /dev/null
+++ b/src/react/xSvg.js
@@ -0,0 +1,20 @@
+import BDV2 from "../v2";
+
+export default class V2C_XSvg extends BDV2.reactComponent {
+ constructor(props) {
+ super(props);
+ }
+
+ render() {
+ return BDV2.react.createElement(
+ "svg",
+ {xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 12 12", style: {width: "18px", height: "18px"}},
+ BDV2.react.createElement(
+ "g",
+ {className: "background", fill: "none", fillRule: "evenodd"},
+ BDV2.react.createElement("path", {d: "M0 0h12v12H0"}),
+ BDV2.react.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"})
+ )
+ );
+ }
+}
\ No newline at end of file
diff --git a/src/settingsPanel.js b/src/settingsPanel.js
new file mode 100644
index 00000000..73a05164
--- /dev/null
+++ b/src/settingsPanel.js
@@ -0,0 +1,365 @@
+import {settings, settingsCookie, bdplugins, bdthemes} from "./0globals";
+import DataStore from "./dataStore";
+import V2_SettingsPanel_Sidebar from "./settingsPanelSidebar";
+import Utils from "./utils";
+import BDV2 from "./v2";
+import ContentManager from "./contentManager";
+import BDEvents from "./bdEvents";
+import pluginModule from "./pluginModule";
+import themeModule from "./themeModule";
+import coloredText from "./coloredText";
+
+import publicServersModule from "./publicServers";
+import voiceMode from "./voiceMode";
+import emoteModule from "./emoteModule";
+import ClassNormalizer from "./classNormalizer";
+import dMode from "./devMode";
+import quickEmoteMenu from "./quickEmoteMenu";
+
+import Tools from "./react/tools";
+import ReloadIcon from "./react/reloadIcon";
+import TooltipWrap from "./react/tooltipWrap";
+import Scroller from "./react/scroller";
+import List from "./react/list";
+import PluginCard from "./react/pluginCard";
+import ThemeCard from "./react/themeCard";
+import SectionedSettingsPanel from "./react/sectionedSettingsPanel";
+import SettingsPanel from "./react/settingsPanel";
+import CssEditor from "./react/cssEditor";
+import ContentColumn from "./react/contentColumn";
+
+export default new class V2_SettingsPanel {
+
+ constructor() {
+ const self = this;
+ self.sideBarOnClick = self.sideBarOnClick.bind(self);
+ self.onChange = self.onChange.bind(self);
+ self.updateSettings = this.updateSettings.bind(self);
+ self.sidebar = new V2_SettingsPanel_Sidebar(self.sideBarOnClick);
+ }
+
+ get root() {
+ const _root = $("#bd-settingspane-container");
+ if (!_root.length) {
+ if (!this.injectRoot()) return null;
+ return this.root;
+ }
+ return _root[0];
+ }
+
+ injectRoot() {
+ if (!$(".layer-3QrUeG .standardSidebarView-3F1I7i, .layer-3QrUeG .ui-standard-sidebar-view").length) return false;
+ const root = $("", {
+ "class": "contentRegion-3nDuYy content-region",
+ "id": "bd-settingspane-container"
+ });
+ $(".layer-3QrUeG .standardSidebarView-3F1I7i, .layer-3QrUeG .ui-standard-sidebar-view").append(root);
+
+ Utils.onRemoved(root[0], () => {
+ BDV2.reactDom.unmountComponentAtNode(root[0]);
+ });
+ return true;
+ }
+
+ get coreSettings() {
+ const settings = this.getSettings("core");
+ const categories = [...new Set(settings.map(s => s.category))];
+ const sections = categories.map(c => {return {title: c, settings: settings.filter(s => s.category == c)};});
+ return sections;
+ }
+
+ get emoteSettings() {
+ return this.getSettings("emote");
+ }
+ getSettings(category) {
+ return Object.keys(settings).reduce((arr, key) => {
+ const setting = settings[key];
+ if (setting.cat === category && setting.implemented && !setting.hidden) {
+ setting.text = key;
+ arr.push(setting);
+ }
+ return arr;
+ }, []);
+ }
+
+ sideBarOnClick(id) {
+ const self = this;
+ $(".contentRegion-3nDuYy, .content-region").first().hide();
+ $(self.root).show();
+ switch (id) {
+ case "core":
+ self.renderCoreSettings();
+ break;
+ case "emotes":
+ self.renderEmoteSettings();
+ break;
+ case "customcss":
+ self.renderCustomCssEditor();
+ break;
+ case "plugins":
+ self.renderPluginPane();
+ break;
+ case "themes":
+ self.renderThemePane();
+ break;
+ }
+ }
+
+ onClick() {}
+
+ onChange(id, checked) {
+ this.updateSettings(id, checked);
+ }
+
+ updateSettings(id, enabled) {
+ settingsCookie[id] = enabled;
+
+ // if (id == "bda-gs-b") {
+ // if (enabled) $("body").addClass("bd-blue");
+ // else $("body").removeClass("bd-blue");
+ // }
+
+ if (id == "bda-gs-2") {
+ if (enabled) $("body").addClass("bd-minimal");
+ else $("body").removeClass("bd-minimal");
+ }
+
+ if (id == "bda-gs-3") {
+ if (enabled) $("body").addClass("bd-minimal-chan");
+ else $("body").removeClass("bd-minimal-chan");
+ }
+
+ if (id == "bda-gs-1") {
+ if (enabled) publicServersModule.addButton();
+ else publicServersModule.removeButton();
+ }
+
+ if (id == "bda-gs-4") {
+ if (enabled) voiceMode.enable();
+ else voiceMode.disable();
+ }
+
+ if (id == "bda-gs-5") {
+ if (enabled) $("#app-mount").addClass("bda-dark");
+ else $("#app-mount").removeClass("bda-dark");
+ }
+
+ if (enabled && id == "bda-gs-6") coloredText.inject24Hour();
+
+ if (id == "bda-gs-7") {
+ if (enabled) coloredText.injectColoredText();
+ else coloredText.removeColoredText();
+ }
+
+ if (id == "bda-es-4") {
+ if (enabled) emoteModule.autoCapitalize();
+ else emoteModule.disableAutoCapitalize();
+ }
+
+ if (id == "fork-ps-4") {
+ if (enabled) ClassNormalizer.start();
+ else ClassNormalizer.stop();
+ }
+
+ if (id == "fork-ps-5") {
+ if (enabled) {
+ ContentManager.watchContent("plugin");
+ ContentManager.watchContent("theme");
+ }
+ else {
+ ContentManager.unwatchContent("plugin");
+ ContentManager.unwatchContent("theme");
+ }
+ }
+
+ if (id == "fork-wp-1") {
+ // BdApi.setWindowPreference("transparent", enabled);
+ // if (enabled) BdApi.setWindowPreference("backgroundColor", null);
+ // else BdApi.setWindowPreference("backgroundColor", "#2f3136");
+ }
+
+ /*if (_c["fork-wp-2"]) {
+ const current = BdApi.getWindowPreference("frame");
+ if (current != _c["fork-wp-2"]) BdApi.setWindowPreference("frame", _c["fork-wp-2"]);
+ }*/
+
+
+ if (id == "bda-gs-8") {
+ if (enabled) dMode.enable(settingsCookie["fork-dm-1"]);
+ else dMode.disable();
+ }
+
+ if (id == "fork-dm-1") {
+ if (settingsCookie["bda-gs-8"]) dMode.enable(enabled);
+ }
+
+ this.saveSettings();
+ }
+
+ initializeSettings() {
+
+ // if (settingsCookie["bda-gs-b"]) $("body").addClass("bd-blue");
+ if (settingsCookie["bda-gs-2"]) $("body").addClass("bd-minimal");
+ if (settingsCookie["bda-gs-3"]) $("body").addClass("bd-minimal-chan");
+ if (settingsCookie["bda-gs-1"]) publicServersModule.addButton();
+ if (settingsCookie["bda-gs-4"]) voiceMode.enable();
+ if (settingsCookie["bda-gs-5"]) $("#app-mount").addClass("bda-dark");
+ if (settingsCookie["bda-gs-6"]) coloredText.inject24Hour();
+ if (settingsCookie["bda-gs-7"]) coloredText.injectColoredText();
+ if (settingsCookie["bda-es-4"]) emoteModule.autoCapitalize();
+ if (settingsCookie["fork-ps-4"]) ClassNormalizer.start();
+
+ if (settingsCookie["fork-ps-5"]) {
+ ContentManager.watchContent("plugin");
+ ContentManager.watchContent("theme");
+ }
+
+ if (settingsCookie["bda-gs-8"]) dMode.enable(settingsCookie["fork-dm-1"]);
+
+ this.saveSettings();
+ }
+
+ saveSettings() {
+ DataStore.setSettingGroup("settings", settingsCookie);
+ }
+
+ loadSettings() {
+ Object.assign(settingsCookie, DataStore.getSettingGroup("settings"));
+ }
+
+ renderSidebar() {
+ const self = this;
+ $("[class*='side-'] > [class*='item-']").off("click.v2settingspanel").on("click.v2settingspanel", () => {
+ BDV2.reactDom.unmountComponentAtNode(self.root);
+ $(self.root).hide();
+ $(".contentRegion-3nDuYy, .content-region").first().show();
+ });
+ self.sidebar.render();
+ }
+
+ get coreComponent() {
+ return BDV2.react.createElement(Scroller, {contentColumn: true, fade: true, dark: true, children: [
+ BDV2.react.createElement(SectionedSettingsPanel, {key: "cspanel", onChange: this.onChange, sections: this.coreSettings}),
+ BDV2.react.createElement(Tools, {key: "tools"})
+ ]});
+ }
+
+ get emoteComponent() {
+ return BDV2.react.createElement(Scroller, {
+ contentColumn: true, fade: true, dark: true, children: [
+ BDV2.react.createElement(SettingsPanel, {key: "espanel", title: "Emote Settings", onChange: this.onChange, settings: this.emoteSettings, button: {
+ title: "Clear Emote Cache",
+ onClick: () => { emoteModule.clearEmoteData(); emoteModule.init(); quickEmoteMenu.init(); }
+ }}),
+ BDV2.react.createElement(Tools, {key: "tools"})
+ ]});
+ }
+
+ get customCssComponent() {
+ return BDV2.react.createElement(Scroller, {contentColumn: true, fade: true, dark: true, children: [BDV2.react.createElement(CssEditor, {key: "csseditor"}), BDV2.react.createElement(Tools, {key: "tools"})]});
+ }
+
+ contentComponent(type) {
+ const componentElement = type == "plugins" ? this.pluginsComponent : this.themesComponent;
+ const prefix = type.replace("s", "");
+ const settingsList = this;
+ class ContentList extends BDV2.react.Component {
+ constructor(props) {
+ super(props);
+ this.onChange = this.onChange.bind(this);
+ }
+
+ componentDidMount() {
+ BDEvents.on(`${prefix}-reloaded`, this.onChange);
+ BDEvents.on(`${prefix}-loaded`, this.onChange);
+ BDEvents.on(`${prefix}-unloaded`, this.onChange);
+ }
+
+ componentWillUnmount() {
+ BDEvents.off(`${prefix}-reloaded`, this.onChange);
+ BDEvents.off(`${prefix}-loaded`, this.onChange);
+ BDEvents.off(`${prefix}-unloaded`, this.onChange);
+ }
+
+ onChange() {
+ settingsList.sideBarOnClick(type);
+ }
+
+ render() {return componentElement;}
+ }
+ return BDV2.react.createElement(ContentList);
+ }
+
+ get pluginsComponent() {
+ const plugins = Object.keys(bdplugins).sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase())).reduce((arr, key) => {
+ arr.push(BDV2.react.createElement(PluginCard, {key: key, plugin: bdplugins[key].plugin}));return arr;
+ }, []);
+ const list = BDV2.react.createElement(List, {key: "plugin-list", className: "bda-slist", children: plugins});
+ const refreshIcon = !settingsCookie["fork-ps-5"] && BDV2.react.createElement(TooltipWrap(ReloadIcon, {color: "black", side: "top", text: "Reload Plugin List"}), {className: "bd-reload-header", size: "18px", onClick: async () => {
+ pluginModule.updatePluginList();
+ this.sideBarOnClick("plugins");
+ }});
+ const pfBtn = BDV2.react.createElement("button", {key: "folder-button", className: "bd-pfbtn", onClick: () => { require("electron").shell.openItem(ContentManager.pluginsFolder); }}, "Open Plugin Folder");
+ const contentColumn = BDV2.react.createElement(ContentColumn, {key: "pcolumn", title: "Plugins", children: [refreshIcon, pfBtn, list]});
+ return BDV2.react.createElement(Scroller, {contentColumn: true, fade: true, dark: true, children: [contentColumn, BDV2.react.createElement(Tools, {key: "tools"})]});
+ }
+
+ get themesComponent() {
+ const themes = Object.keys(bdthemes).sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase())).reduce((arr, key) => {
+ arr.push(BDV2.react.createElement(ThemeCard, {key: key, theme: bdthemes[key]}));return arr;
+ }, []);
+ const list = BDV2.react.createElement(List, {key: "theme-list", className: "bda-slist", children: themes});
+ const refreshIcon = !settingsCookie["fork-ps-5"] && BDV2.react.createElement(TooltipWrap(ReloadIcon, {color: "black", side: "top", text: "Reload Theme List"}), {className: "bd-reload-header", size: "18px", onClick: async () => {
+ themeModule.updateThemeList();
+ this.sideBarOnClick("themes");
+ }});
+ const tfBtn = BDV2.react.createElement("button", {key: "folder-button", className: "bd-pfbtn", onClick: () => { require("electron").shell.openItem(ContentManager.themesFolder); }}, "Open Theme Folder");
+ const contentColumn = BDV2.react.createElement(ContentColumn, {key: "tcolumn", title: "Themes", children: [refreshIcon, tfBtn, list]});
+ return BDV2.react.createElement(Scroller, {contentColumn: true, fade: true, dark: true, children: [contentColumn, BDV2.react.createElement(Tools, {key: "tools"})]});
+ }
+
+ renderCoreSettings() {
+ const root = this.root;
+ if (!root) {
+ console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i");
+ return;
+ }
+ BDV2.reactDom.render(this.coreComponent, root);
+ }
+
+ renderEmoteSettings() {
+ const root = this.root;
+ if (!root) {
+ console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i");
+ return;
+ }
+ BDV2.reactDom.render(this.emoteComponent, root);
+ }
+
+ renderCustomCssEditor() {
+ const root = this.root;
+ if (!root) {
+ console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i");
+ return;
+ }
+ BDV2.reactDom.render(this.customCssComponent, root);
+ }
+
+ renderPluginPane() {
+ const root = this.root;
+ if (!root) {
+ console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i");
+ return;
+ }
+ BDV2.reactDom.render(this.contentComponent("plugins"), root);
+ }
+
+ renderThemePane() {
+ const root = this.root;
+ if (!root) {
+ console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i");
+ return;
+ }
+ BDV2.reactDom.render(this.contentComponent("themes"), root);
+ }
+};
diff --git a/src/settingsPanelSidebar.js b/src/settingsPanelSidebar.js
new file mode 100644
index 00000000..a2f443e4
--- /dev/null
+++ b/src/settingsPanelSidebar.js
@@ -0,0 +1,47 @@
+import Utils from "./utils";
+import BDV2 from "./v2";
+
+import SideBar from "./react/sidebar";
+
+export default class V2_SettingsPanel_Sidebar {
+
+ constructor(onClick) {
+ this.onClick = onClick;
+ }
+
+ get items() {
+ return [{text: "Settings", id: "core"}, {text: "Emotes", id: "emotes"}, {text: "Plugins", id: "plugins"}, {text: "Themes", id: "themes"}, {text: "Custom CSS", id: "customcss"}];
+ }
+
+ get component() {
+ return BDV2.react.createElement("span", null, BDV2.react.createElement(SideBar, {onClick: this.onClick, headerText: "Bandaged BD", items: this.items}));
+ }
+
+ get root() {
+ const _root = $("#bd-settings-sidebar");
+ if (!_root.length) {
+ if (!this.injectRoot()) return null;
+ return this.root;
+ }
+ return _root[0];
+ }
+
+ injectRoot() {
+ const changeLog = $("[class*='side-'] > [class*='item-']:not([class*=Danger])").last();
+ if (!changeLog.length) return false;
+ $("", {id: "bd-settings-sidebar"}).insertBefore(changeLog.prev());
+ return true;
+ }
+
+ render() {
+ const root = this.root;
+ if (!root) {
+ console.log("FAILED TO LOCATE ROOT: [class*='side-'] > [class*='item-']:not([class*=Danger])");
+ return;
+ }
+ BDV2.reactDom.render(this.component, root);
+ Utils.onRemoved(root, () => {
+ BDV2.reactDom.unmountComponentAtNode(root);
+ });
+ }
+}
\ No newline at end of file
diff --git a/src/themeModule.js b/src/themeModule.js
new file mode 100644
index 00000000..fede0c55
--- /dev/null
+++ b/src/themeModule.js
@@ -0,0 +1,112 @@
+import {bdthemeErrors, themeCookie, settingsCookie, bdthemes} from "./0globals";
+import ContentManager from "./contentManager";
+import DataStore from "./dataStore";
+import BDEvents from "./bdEvents";
+import Utils from "./utils";
+
+function ThemeModule() {
+
+}
+
+ThemeModule.prototype.loadThemes = function () {
+ this.loadThemeData();
+ bdthemeErrors.concat(ContentManager.loadThemes());
+ const themes = Object.keys(bdthemes);
+
+ for (let i = 0; i < themes.length; i++) {
+ const theme = bdthemes[themes[i]];
+ if (!themeCookie[theme.name]) themeCookie[theme.name] = false;
+ if (themeCookie[theme.name]) $("head").append($("