diff options
37 files changed, 8039 insertions, 977 deletions
diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress.yml new file mode 100644 index 00000000000..93bf55ad011 --- /dev/null +++ b/.github/workflows/cypress.yml @@ -0,0 +1,98 @@ +name: Cypress + +on: + pull_request: + push: + branches: + - master + - stable* + +env: + APP_NAME: viewer + BRANCH: ${{ github.base_ref }} + TESTING: true + +jobs: + init: + runs-on: ubuntu-latest + + steps: + - name: Checkout server + uses: actions/checkout@v3 + + - name: Read package.json node and npm engines version + uses: skjnldsv/read-package-engines-version-actions@v1.2 + id: versions + with: + fallbackNode: "^12" + fallbackNpm: "^6" + + - name: Set up node ${{ steps.versions.outputs.nodeVersion }} + uses: actions/setup-node@v3 + with: + cache: 'npm' + node-version: ${{ steps.versions.outputs.nodeVersion }} + + - name: Set up npm ${{ steps.versions.outputs.npmVersion }} + run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}" + + - name: Install dependencies & build app + run: | + npm ci + TESTING=true npm run build --if-present + + - name: Save context + uses: actions/cache@v3 + with: + key: cypress-context-${{ github.run_id }} + path: /home/runner/work/server + + cypress: + runs-on: ubuntu-latest + needs: init + + strategy: + fail-fast: false + matrix: + # run multiple copies of the current job in parallel + containers: [1] + + name: runner ${{ matrix.containers }} + + steps: + - name: Restore context + uses: actions/cache@v3 + with: + key: cypress-context-${{ github.run_id }} + path: /home/runner/work/server + + - name: Run E2E cypress tests + uses: cypress-io/github-action@v4 + with: + record: true + parallel: true + # cypress env + ci-build-id: ${{ github.sha }}-${{ github.run_number }} + tag: ${{ github.event_name }} + env: + # Needs to be prefixed with CYPRESS_ + CYPRESS_BRANCH: ${{ env.BRANCH }} + CYPRESS_GH: true + # https://github.com/cypress-io/github-action/issues/124 + COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }} + # Needed for some specific code workarounds + TESTING: true + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} + + summary: + runs-on: ubuntu-latest + needs: [init, cypress] + + if: always() + + name: cypress-summary + + steps: + - name: Summary status + run: if ${{ needs.init.result != 'success' || ( needs.cypress.result != 'success' && needs.cypress.result != 'skipped' ) }}; then exit 1; fi diff --git a/.gitignore b/.gitignore index a964fae1f92..5845018f9c9 100644 --- a/.gitignore +++ b/.gitignore @@ -163,3 +163,7 @@ composer.phar ./.htaccess core/js/mimetypelist.js + +# Tests - cypress +cypress/snapshots +cypress/videos diff --git a/apps/theming/css/default.css b/apps/theming/css/default.css index d028364ec7b..7b62656c4f9 100644 --- a/apps/theming/css/default.css +++ b/apps/theming/css/default.css @@ -54,9 +54,6 @@ --background-invert-if-dark: no; --background-invert-if-bright: invert(100%); --background-image-invert-if-bright: no; - --image-background: url('/core/img/app-background.jpg'); - --image-background-default: url('/core/img/app-background.jpg'); - --color-background-plain: #0082c9; --primary-invert-if-bright: no; --color-primary: #006aa3; --color-primary-default: #0082c9; @@ -75,4 +72,6 @@ --color-primary-element-light-hover: #dbe5ea; --color-primary-element-text-dark: #ededed; --gradient-primary-background: linear-gradient(40deg, var(--color-primary) 0%, var(--color-primary-hover) 100%); + --image-background-default: url('/apps/theming/img/background/kamil-porembinski-clouds.jpg'); + --color-background-plain: #0082c9; } diff --git a/apps/theming/css/settings-admin.css b/apps/theming/css/settings-admin.css deleted file mode 100644 index 1979387c5dd..00000000000 --- a/apps/theming/css/settings-admin.css +++ /dev/null @@ -1,148 +0,0 @@ -#theming input { - width: 230px; -} -#theming input:focus, -#theming input:active { - padding-right: 30px; -} -#theming .fileupload { - display: none; -} -#theming div > label { - position: relative; -} -#theming .theme-undo { - position: absolute; - top: -7px; - right: 4px; - cursor: pointer; - opacity: 0.3; - padding: 7px; - vertical-align: top; - display: inline-block; - visibility: hidden; - height: 32px; - width: 32px; -} -#theming form.uploadButton { - width: 411px; - display: flex; - align-items: center; -} -#theming form .theme-undo, -#theming .theme-remove-bg { - cursor: pointer; - opacity: 0.3; - padding: 7px; - vertical-align: top; - display: inline-block; - float: right; - position: relative; - top: 4px; - right: 0px; - visibility: visible; - height: 32px; - width: 32px; - margin-left: auto; -} -#theming form .theme-undo:not([style*="display:"]) ~ .theme-remove-bg { - margin-left: 0; -} -#theming input[type=text]:hover + .theme-undo, -#theming input[type=text] + .theme-undo:hover, -#theming input[type=text]:focus + .theme-undo, -#theming input[type=text]:active + .theme-undo, -#theming input[type=url]:hover + .theme-undo, -#theming input[type=url] + .theme-undo:hover, -#theming input[type=url]:focus + .theme-undo, -#theming input[type=url]:active + .theme-undo { - visibility: visible; -} -#theming label span { - display: inline-block; - min-width: 175px; - max-width: 175px; - white-space: wrap; - padding: 8px 0px; - vertical-align: top; -} -#theming .icon-upload, -#theming .uploadButton .icon-loading-small { - padding: 8px 20px; - width: 20px; - margin: 2px 0px; - min-height: 32px; - display: inline-block; -} -#theming #theming_settings_status { - height: 26px; - margin: 10px; -} -#theming #theming_settings_loading { - display: inline-block; - vertical-align: middle; - margin-right: 10px; -} -#theming #theming_settings_msg { - vertical-align: middle; - border-radius: 3px; -} -#theming #theming-preview { - width: 230px; - height: 140px; - background-size: cover; - background-position: center center; - text-align: center; - margin-left: 178px; - margin-top: 10px; - margin-bottom: 20px; - cursor: pointer; - background-color: var(--color-primary-default); - background-image: var(--image-background-default, var(--image-background-plain, linear-gradient(40deg, #0082c9 0%, #30b6ff 100%))); -} -#theming #theming-preview #theming-preview-logo { - cursor: pointer; - width: 20%; - height: 20%; - margin-top: 20px; - display: inline-block; - background-position: center; - background-repeat: no-repeat; - background-size: contain; - background-image: var(--image-logo, url("../../../core/img/logo/logo.svg")); -} -#theming .theming-hints { - margin-top: 20px; -} -#theming .image-preview { - display: inline-block; - width: 80px; - height: 36px; - background-position: center; - background-repeat: no-repeat; - background-size: contain; -} -#theming #theming-preview-logoheader { - background-image: var(--image-logoheader); -} -#theming #theming-preview-favicon { - background-image: var(--image-favicon); -} -#theming #user-theming { - margin-top: 44px; - display: flex; -} -#theming #user-theming > div { - max-width: 400px; - margin-bottom: 44px; -} - -/* transition effects for theming value changes */ -#header { - transition: background-color 500ms linear; -} -#header svg, #header img { - transition: 500ms filter linear; -} - -/*# sourceMappingURL=settings-admin.css.map */ diff --git a/apps/theming/css/settings-admin.scss b/apps/theming/css/settings-admin.scss deleted file mode 100644 index f34dea52698..00000000000 --- a/apps/theming/css/settings-admin.scss +++ /dev/null @@ -1,168 +0,0 @@ -#theming { - input { - width: 230px; - } - - input:focus, - input:active { - padding-right: 30px; - } - - .fileupload { - display: none; - } - - div > label { - position: relative; - } - - .theme-undo { - position: absolute; - top: -7px; // input padding - right: 4px; // input right margin + border - cursor: pointer; - opacity: .3; - padding: 7px; - vertical-align: top; - display: inline-block; - visibility: hidden; - height: 32px; // height of input - width: 32px; // height of input - } - form.uploadButton { - width: 411px; - display: flex; - align-items: center; - } - form .theme-undo, - .theme-remove-bg { - cursor: pointer; - opacity: .3; - padding: 7px; - vertical-align: top; - display: inline-block; - float: right; - position: relative; - top: 4px; - right: 0px; - visibility: visible; - height: 32px; - width: 32px; - // right align - margin-left: auto; - } - form .theme-undo:not([style*="display:"]) ~ .theme-remove-bg { - // Only align the undo button if both are shown - margin-left: 0; - } - - input[type='text']:hover + .theme-undo, - input[type='text'] + .theme-undo:hover, - input[type='text']:focus + .theme-undo, - input[type='text']:active + .theme-undo, - input[type='url']:hover + .theme-undo, - input[type='url'] + .theme-undo:hover, - input[type='url']:focus + .theme-undo, - input[type='url']:active + .theme-undo{ - visibility: visible; - } - - label span { - display: inline-block; - min-width: 175px; - max-width: 175px; - white-space: wrap; - padding: 8px 0px; - vertical-align: top; - } - - .icon-upload, - .uploadButton .icon-loading-small { - padding: 8px 20px; - width: 20px; - margin: 2px 0px; - min-height: 32px; - display: inline-block; - } - - #theming_settings_status { - height: 26px; - margin: 10px; - } - - #theming_settings_loading { - display: inline-block; - vertical-align: middle; - margin-right: 10px; - } - - #theming_settings_msg { - vertical-align: middle; - border-radius: 3px; - } - - #theming-preview { - width: 230px; - height: 140px; - background-size: cover; - background-position: center center; - text-align: center; - margin-left: 178px; - margin-top: 10px; - margin-bottom: 20px; - cursor: pointer; - background-color: var(--color-primary-default); - background-image: var(--image-background-default, var(--image-background-plain, linear-gradient(40deg, #0082c9 0%, #30b6ff 100%))); - - #theming-preview-logo { - cursor: pointer; - width: 20%; - height: 20%; - margin-top: 20px; - display: inline-block; - background-position: center; - background-repeat: no-repeat; - background-size: contain; - background-image: var(--image-logo, url('../../../core/img/logo/logo.svg')); - } - } - - .theming-hints { - margin-top: 20px; - } - - .image-preview { - display: inline-block; - width: 80px; - height: 36px; - background-position: center; - background-repeat: no-repeat; - background-size: contain; - } - - #theming-preview-logoheader { - // Only using --image-logoheader to show the custom value only - background-image: var(--image-logoheader); - } - - #theming-preview-favicon { - background-image: var(--image-favicon); - } - - #user-theming { - margin-top: 44px; - display: flex; - & > div { - max-width: 400px; - margin-bottom: 44px; - } - } -} - -/* transition effects for theming value changes */ -#header { - transition: background-color 500ms linear; - svg, img { - transition: 500ms filter linear; - } -} diff --git a/apps/theming/lib/Controller/UserThemeController.php b/apps/theming/lib/Controller/UserThemeController.php index 888ab9a0ca8..112a8a23638 100644 --- a/apps/theming/lib/Controller/UserThemeController.php +++ b/apps/theming/lib/Controller/UserThemeController.php @@ -168,9 +168,15 @@ class UserThemeController extends OCSController { /** * @NoAdminRequired */ - public function setBackground(string $type = BackgroundService::BACKGROUND_DEFAULT, string $value = ''): JSONResponse { + public function setBackground(string $type = BackgroundService::BACKGROUND_DEFAULT, string $value = '', string $color = null): JSONResponse { $currentVersion = (int)$this->config->getUserValue($this->userId, Application::APP_ID, 'userCacheBuster', '0'); + // Set color if provided + if ($color) { + $this->backgroundService->setColorBackground($color); + } + + // Set background image if provided try { switch ($type) { case BackgroundService::BACKGROUND_SHIPPED: @@ -179,14 +185,13 @@ class UserThemeController extends OCSController { case BackgroundService::BACKGROUND_CUSTOM: $this->backgroundService->setFileBackground($value); break; - case 'color': - $this->backgroundService->setColorBackground($value); - break; case BackgroundService::BACKGROUND_DEFAULT: $this->backgroundService->setDefaultBackground(); break; default: - return new JSONResponse(['error' => 'Invalid type provided'], Http::STATUS_BAD_REQUEST); + if (!$color) { + return new JSONResponse(['error' => 'Invalid type provided'], Http::STATUS_BAD_REQUEST); + } } } catch (\InvalidArgumentException $e) { return new JSONResponse(['error' => $e->getMessage()], Http::STATUS_BAD_REQUEST); diff --git a/apps/theming/lib/ImageManager.php b/apps/theming/lib/ImageManager.php index ce9c2525802..d4f4353b8a8 100644 --- a/apps/theming/lib/ImageManager.php +++ b/apps/theming/lib/ImageManager.php @@ -94,7 +94,7 @@ class ImageManager { case 'favicon': return $this->urlGenerator->imagePath('core', 'logo/logo.png') . '?v=' . $cacheBusterCounter; case 'background': - return $this->urlGenerator->linkTo(Application::APP_ID, "img/background/" . BackgroundService::DEFAULT_BACKGROUND); + return $this->urlGenerator->linkTo(Application::APP_ID, 'img/background/' . BackgroundService::DEFAULT_BACKGROUND); } return ''; } diff --git a/apps/theming/lib/Service/BackgroundService.php b/apps/theming/lib/Service/BackgroundService.php index 667ca99a1f9..002ca169a83 100644 --- a/apps/theming/lib/Service/BackgroundService.php +++ b/apps/theming/lib/Service/BackgroundService.php @@ -30,7 +30,7 @@ namespace OCA\Theming\Service; use InvalidArgumentException; use OC\User\NoUserException; use OCA\Theming\AppInfo\Application; -use OCP\Files\AppData\IAppDataFactory; +use OCA\Theming\ThemingDefaults; use OCP\Files\File; use OCP\Files\IAppData; use OCP\Files\IRootFolder; @@ -140,13 +140,13 @@ class BackgroundService { private IAppData $appData; private IConfig $config; private string $userId; - private IAppDataFactory $appDataFactory; + private ThemingDefaults $themingDefaults; public function __construct(IRootFolder $rootFolder, IAppData $appData, IConfig $config, ?string $userId, - IAppDataFactory $appDataFactory) { + ThemingDefaults $themingDefaults) { if ($userId === null) { return; } @@ -155,11 +155,12 @@ class BackgroundService { $this->config = $config; $this->userId = $userId; $this->appData = $appData; - $this->appDataFactory = $appDataFactory; + $this->themingDefaults = $themingDefaults; } public function setDefaultBackground(): void { $this->config->deleteUserValue($this->userId, Application::APP_ID, 'background_image'); + $this->config->setUserValue($this->userId, Application::APP_ID, 'background_color', $this->themingDefaults->getDefaultColorPrimary()); } /** @@ -171,7 +172,7 @@ class BackgroundService { * @throws NoUserException */ public function setFileBackground($path): void { - $this->config->setUserValue($this->userId, Application::APP_ID, 'background_image', self::BACKGROUND_DEFAULT); + $this->config->setUserValue($this->userId, Application::APP_ID, 'background_image', self::BACKGROUND_CUSTOM); $userFolder = $this->rootFolder->getUserFolder($this->userId); /** @var File $file */ diff --git a/apps/theming/lib/Themes/CommonThemeTrait.php b/apps/theming/lib/Themes/CommonThemeTrait.php index c58a3fd43e3..40feddd2b38 100644 --- a/apps/theming/lib/Themes/CommonThemeTrait.php +++ b/apps/theming/lib/Themes/CommonThemeTrait.php @@ -97,7 +97,7 @@ trait CommonThemeTrait { if ($backgroundDeleted) { $variables['--color-background-plain'] = $this->themingDefaults->getColorPrimary(); if ($this->themingDefaults->isUserThemingDisabled() || $user === null) { - $variables['--image-background-plain'] = 'true'; + $variables['--image-background-plain'] = 'yes'; } } @@ -108,13 +108,12 @@ trait CommonThemeTrait { if ($image === 'background') { // If background deleted is set, ignoring variable if ($backgroundDeleted) { - $variables['--image-background-default'] = 'no'; continue; } $variables['--image-background-size'] = 'cover'; $variables['--image-background-default'] = "url('" . $imageUrl . "')"; } - // --image-background is overriden by user theming + // --image-background is overridden by user theming $variables["--image-$image"] = "url('" . $imageUrl . "')"; } } diff --git a/apps/theming/lib/ThemingDefaults.php b/apps/theming/lib/ThemingDefaults.php index 42965ca6795..954b1be651b 100644 --- a/apps/theming/lib/ThemingDefaults.php +++ b/apps/theming/lib/ThemingDefaults.php @@ -247,7 +247,7 @@ class ThemingDefaults extends \OC_Defaults { * Return the default color primary */ public function getDefaultColorPrimary(): string { - $color = $this->config->getAppValue(Application::APP_ID, 'color'); + $color = $this->config->getAppValue(Application::APP_ID, 'color', ''); if (!preg_match('/^\#([0-9a-f]{3}|[0-9a-f]{6})$/i', $color)) { $color = '#0082c9'; } diff --git a/apps/theming/src/AdminTheming.vue b/apps/theming/src/AdminTheming.vue index 1d9f5b69512..4b1877ccf7d 100644 --- a/apps/theming/src/AdminTheming.vue +++ b/apps/theming/src/AdminTheming.vue @@ -285,8 +285,15 @@ export default { background-position: center; text-align: center; margin-top: 10px; - background-color: var(--color-primary-default); - background-image: var(--image-background-default, var(--image-background-plain, url('../../../core/img/app-background.jpg'), linear-gradient(40deg, #0082c9 0%, #30b6ff 100%))); + /* This is basically https://github.com/nextcloud/server/blob/master/core/css/guest.css + But without the user variables. That way the admin can preview the render as guest*/ + /* As guest, there is no user color color-background-plain */ + background-color: var(--color-primary-default, #0082c9); + /* As guest, there is no user background (--image-background) + 1. Empty background if defined + 2. Else default background + 3. Finally default gradient (should not happened, the background is always defined anyway) */ + background-image: var(--image-background-plain, var(--image-background-default, linear-gradient(40deg, #0082c9 0%, #30b6ff 100%))); &-logo { width: 20%; diff --git a/apps/theming/src/components/BackgroundSettings.vue b/apps/theming/src/components/BackgroundSettings.vue index 9890f9ad3f0..e1d8b731bc4 100644 --- a/apps/theming/src/components/BackgroundSettings.vue +++ b/apps/theming/src/components/BackgroundSettings.vue @@ -1,10 +1,10 @@ <!-- - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net> - - @copyright Copyright (c) 2022 Greta Doci <gretadoci@gmail.com> - - - @author Julius Härtl <jus@bitgrid.net> - - @author Greta Doci <gretadoci@gmail.com> - @author Christopher Ng <chrng8@gmail.com> + - @author Greta Doci <gretadoci@gmail.com> + - @author John Molakvoæ <skjnldsv@protonmail.com> + - @author Julius Härtl <jus@bitgrid.net> - - @license GNU AGPL version 3 or any later version - @@ -24,13 +24,16 @@ --> <template> - <div class="background-selector"> + <div class="background-selector" data-user-theming-background-settings> <!-- Custom background --> <button class="background background__filepicker" - :class="{ 'background--active': backgroundImage === 'custom' }" + :class="{ 'icon-loading': loading === 'custom', 'background--active': backgroundImage === 'custom' }" + :data-color-bright="invertTextColor(Theming.color)" + data-user-theming-background-custom tabindex="0" @click="pickFile"> {{ t('theming', 'Custom background') }} + <Check :size="44" /> </button> <!-- Default background --> @@ -38,6 +41,7 @@ :class="{ 'icon-loading': loading === 'default', 'background--active': backgroundImage === 'default' }" :data-color-bright="invertTextColor(Theming.defaultColor)" :style="{ '--border-color': Theming.defaultColor }" + data-user-theming-background-default tabindex="0" @click="setDefault"> {{ t('theming', 'Default background') }} @@ -50,6 +54,7 @@ :data-color="Theming.color" :data-color-bright="invertTextColor(Theming.color)" :style="{ backgroundColor: Theming.color, '--border-color': Theming.color}" + data-user-theming-background-color tabindex="0"> {{ t('theming', 'Change color') }} </button> @@ -61,6 +66,7 @@ v-tooltip="shippedBackground.details.attribution" :class="{ 'icon-loading': loading === shippedBackground.name, 'background--active': backgroundImage === shippedBackground.name }" :data-color-bright="shippedBackground.details.theming === 'dark'" + :data-user-theming-background-shipped="shippedBackground.name" :style="{ backgroundImage: 'url(' + shippedBackground.preview + ')', '--border-color': shippedBackground.details.primary_color }" class="background background__shipped" tabindex="0" @@ -70,16 +76,17 @@ <!-- Remove background --> <button class="background background__delete" + data-user-theming-background-clear tabindex="0" @click="removeBackground"> {{ t('theming', 'Remove background') }} - <Close :size="24" /> + <Close :size="32" /> </button> </div> </template> <script> -import { generateFilePath, generateUrl } from '@nextcloud/router' +import { generateFilePath, generateRemoteUrl, generateUrl } from '@nextcloud/router' import { loadState } from '@nextcloud/initial-state' import axios from '@nextcloud/axios' import Check from 'vue-material-design-icons/Check.vue' @@ -87,6 +94,10 @@ import Close from 'vue-material-design-icons/Close.vue' import debounce from 'debounce' import NcColorPicker from '@nextcloud/vue/dist/Components/NcColorPicker' import Tooltip from '@nextcloud/vue/dist/Directives/Tooltip' +import Vibrant from 'node-vibrant' +import { Palette } from 'node-vibrant/lib/color' +import { getFilePickerBuilder } from '@nextcloud/dialogs' +import { getCurrentUser } from '@nextcloud/auth' const backgroundColor = loadState('theming', 'backgroundColor') const backgroundImage = loadState('theming', 'backgroundImage') @@ -95,6 +106,12 @@ const themingDefaultBackground = loadState('theming', 'themingDefaultBackground' const defaultShippedBackground = loadState('theming', 'defaultShippedBackground') const prefixWithBaseUrl = (url) => generateFilePath('theming', '', 'img/background/') + url +const picker = getFilePickerBuilder(t('theming', 'Select a background from your files')) + .setMultiSelect(false) + .setModal(true) + .setType(1) + .setMimeTypeFilter(['image/png', 'image/gif', 'image/jpeg', 'image/svg+xml', 'image/svg']) + .build() export default { name: 'BackgroundSettings', @@ -213,9 +230,9 @@ export default { this.update(result.data) }, - async setFile(path) { + async setFile(path, color = null) { this.loading = 'custom' - const result = await axios.post(generateUrl('/apps/theming/background/custom'), { value: path }) + const result = await axios.post(generateUrl('/apps/theming/background/custom'), { value: path, color }) this.update(result.data) }, @@ -228,19 +245,55 @@ export default { async pickColor(event) { this.loading = 'color' const color = event?.target?.dataset?.color || this.Theming?.color || '#0082c9' - const result = await axios.post(generateUrl('/apps/theming/background/color'), { value: color }) + const result = await axios.post(generateUrl('/apps/theming/background/color'), { color }) this.update(result.data) }, debouncePickColor: debounce(function() { this.pickColor(...arguments) }, 200), - pickFile() { - window.OC.dialogs.filepicker(t('theming', 'Select a background from your files'), (path, type) => { - if (type === OC.dialogs.FILEPICKER_TYPE_CHOOSE) { - this.setFile(path) - } - }, false, ['image/png', 'image/gif', 'image/jpeg', 'image/svg'], true, OC.dialogs.FILEPICKER_TYPE_CHOOSE) + async pickFile() { + const path = await picker.pick() + this.loading = 'custom' + + // Extract primary color from image + let response = null + let color = null + try { + const fileUrl = generateRemoteUrl('dav/files/' + getCurrentUser().uid + path) + response = await axios.get(fileUrl, { responseType: 'blob' }) + const blobUrl = URL.createObjectURL(response.data) + const palette = await this.getColorPaletteFromBlob(blobUrl) + + // DarkVibrant is accessible AND visually pleasing + // Vibrant is not accessible enough and others are boring + color = palette?.DarkVibrant?.hex + this.setFile(path, color) + + // Log data + console.debug('Extracted colour', color, 'from custom image', path, palette) + } catch (error) { + this.setFile(path) + console.error('Unable to extract colour from custom image', { error, path, response, color }) + } + }, + + /** + * Extract a Vibrant color palette from a blob URL + * + * @param {string} blobUrl the blob URL + * @return {Promise<Palette>} + */ + getColorPaletteFromBlob(blobUrl) { + return new Promise((resolve, reject) => { + const vibrant = new Vibrant(blobUrl) + vibrant.getPalette((error, palette) => { + if (error) { + reject(error) + } + resolve(palette) + }) + }) }, }, } @@ -263,6 +316,13 @@ export default { background-position: center center; background-size: cover; + &__filepicker { + &.background--active { + color: white; + background-image: var(--image-background); + } + } + &__default { background-color: var(--color-primary-default); background-image: var(--image-background-default); @@ -277,6 +337,12 @@ export default { background-color: var(--color-primary-default); } + // Over a background image + &__default, + &__shipped { + color: white; + } + // Text and svg icon dark on bright background &[data-color-bright] { color: black; @@ -294,18 +360,14 @@ export default { margin: 4px; } - &__default, - &__shipped { - color: white; - span { - display: none; - } + &__filepicker span, + &__default span, + &__shipped span { + display: none; } - &--active:not(.icon-loading) { - span { - display: block; - } + &--active:not(.icon-loading) span { + display: block !important; } } } diff --git a/apps/theming/tests/Controller/ThemingControllerTest.php b/apps/theming/tests/Controller/ThemingControllerTest.php index c67be434631..9042a338fb7 100644 --- a/apps/theming/tests/Controller/ThemingControllerTest.php +++ b/apps/theming/tests/Controller/ThemingControllerTest.php @@ -680,7 +680,7 @@ class ThemingControllerTest extends TestCase { public function testGetLoginBackground() { $file = $this->createMock(ISimpleFile::class); - $file->method('getName')->willReturn('app-background.jpg'); + $file->method('getName')->willReturn('background.png'); $file->method('getMTime')->willReturn(42); $this->imageManager->expects($this->once()) ->method('getImage') diff --git a/apps/theming/tests/Themes/DefaultThemeTest.php b/apps/theming/tests/Themes/DefaultThemeTest.php index 4471dddb01e..2a62211f268 100644 --- a/apps/theming/tests/Themes/DefaultThemeTest.php +++ b/apps/theming/tests/Themes/DefaultThemeTest.php @@ -22,8 +22,10 @@ */ namespace OCA\Theming\Tests\Service; +use OCA\Theming\AppInfo\Application; use OCA\Theming\ImageManager; use OCA\Theming\ITheme; +use OCA\Theming\Service\BackgroundService; use OCA\Theming\Themes\DefaultTheme; use OCA\Theming\ThemingDefaults; use OCA\Theming\Util; @@ -80,6 +82,11 @@ class DefaultThemeTest extends TestCase { ->method('getDefaultColorPrimary') ->willReturn('#0082c9'); + $this->themingDefaults + ->expects($this->any()) + ->method('getBackground') + ->willReturn('/apps/' . Application::APP_ID . '/img/background/' . BackgroundService::DEFAULT_BACKGROUND); + $this->l10n ->expects($this->any()) ->method('t') diff --git a/apps/theming/tests/ThemingDefaultsTest.php b/apps/theming/tests/ThemingDefaultsTest.php index caed7002980..04fce553c33 100644 --- a/apps/theming/tests/ThemingDefaultsTest.php +++ b/apps/theming/tests/ThemingDefaultsTest.php @@ -473,6 +473,7 @@ class ThemingDefaultsTest extends TestCase { public function testGetColorPrimaryWithCustomBackground() { $backgroundIndex = 2; $background = array_values(BackgroundService::SHIPPED_BACKGROUNDS)[$backgroundIndex]; + $user = $this->createMock(IUser::class); $this->userSession->expects($this->any()) ->method('getUser') @@ -484,14 +485,15 @@ class ThemingDefaultsTest extends TestCase { $this->config ->expects($this->once()) ->method('getUserValue') - ->with('user', 'theming', 'background_image', '') - ->willReturn(array_keys(BackgroundService::SHIPPED_BACKGROUNDS)[$backgroundIndex]); + ->with('user', 'theming', 'background_color', '') + ->willReturn($background['primary_color']); + $this->config ->expects($this->exactly(2)) ->method('getAppValue') ->willReturnMap([ - ['theming', 'disable-user-theming', 'no', 'no'], ['theming', 'color', '', ''], + ['theming', 'disable-user-theming', 'no', 'no'], ]); $this->assertEquals($background['primary_color'], $this->template->getColorPrimary()); @@ -509,14 +511,14 @@ class ThemingDefaultsTest extends TestCase { $this->config ->expects($this->once()) ->method('getUserValue') - ->with('user', 'theming', 'background_image', '') + ->with('user', 'theming', 'background_color', '') ->willReturn('#fff'); $this->config ->expects($this->exactly(2)) ->method('getAppValue') ->willReturnMap([ - ['theming', 'disable-user-theming', 'no', 'no'], ['theming', 'color', '', ''], + ['theming', 'disable-user-theming', 'no', 'no'], ]); $this->assertEquals('#fff', $this->template->getColorPrimary()); @@ -534,14 +536,14 @@ class ThemingDefaultsTest extends TestCase { $this->config ->expects($this->once()) ->method('getUserValue') - ->with('user', 'theming', 'background_image', '') + ->with('user', 'theming', 'background_color', '') ->willReturn('nextcloud'); $this->config ->expects($this->exactly(3)) ->method('getAppValue') ->willReturnMap([ - ['theming', 'disable-user-theming', 'no', 'no'], ['theming', 'color', '', ''], + ['theming', 'disable-user-theming', 'no', 'no'], ]); $this->assertEquals($this->template->getDefaultColorPrimary(), $this->template->getColorPrimary()); @@ -650,16 +652,14 @@ class ThemingDefaultsTest extends TestCase { ->method('deleteAppValue') ->with('theming', 'color'); $this->config - ->expects($this->exactly(3)) + ->expects($this->exactly(2)) ->method('getAppValue') ->withConsecutive( ['theming', 'cachebuster', '0'], ['theming', 'color', null], - ['theming', 'disable-user-theming', 'no'], )->willReturnOnConsecutiveCalls( '15', $this->defaults->getColorPrimary(), - 'no', ); $this->config ->expects($this->once()) @@ -778,10 +778,10 @@ class ThemingDefaultsTest extends TestCase { $this->imageManager->expects($this->exactly(4)) ->method('getImageUrl') ->willReturnMap([ - ['logo', true, 'custom-logo?v=0'], - ['logoheader', true, 'custom-logoheader?v=0'], - ['favicon', true, 'custom-favicon?v=0'], - ['background_image', true, 'custom-background?v=0'], + ['logo', 'custom-logo?v=0'], + ['logoheader', 'custom-logoheader?v=0'], + ['favicon', 'custom-favicon?v=0'], + ['background', 'custom-background?v=0'], ]); $expected = [ diff --git a/core/css/apps.css b/core/css/apps.css index 186184a8584..d11f0eeb628 100644 --- a/core/css/apps.css +++ b/core/css/apps.css @@ -90,14 +90,11 @@ html { height: 100%; position: absolute; background-color: var(--color-background-plain, var(--color-main-background)); - background-image: var(--image-background); - background-size: cover; - background-position: center; } body { background-color: var(--color-background-plain, var(--color-main-background)); - background-image: var(--image-background-plain, var(--image-background, var(--image-background-default))); + background-image: var(--image-background, var(--image-background-default)); background-size: cover; background-position: center; position: fixed; diff --git a/core/css/apps.css.map b/core/css/apps.css.map index f5ad4207b9a..c42b876bc2f 100644 --- a/core/css/apps.css.map +++ b/core/css/apps.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["variables.scss","apps.scss","functions.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AD5BA;EACC;AACA;EACA;EACA;;;AAGD;EACC;IACC;IACA;;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;;;AAGD;EACC;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAID;AAEA;EACC;;;AAGD;AACA;AACA;EAEC;EAEA,ODfkB;ECgBlB;EACA;EACA;EACA;EACA;EACA;EAAwD;EACxD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AAkQA;AAAA;AAAA;AAiBA;AAAA;AAAA;AA6EA;AAAA;AAAA;AAmDA;AAAA;AAAA;AAsDA;AAAA;AAAA;AA2BA;AAAA;AAAA;AAeA;AAAA;AAAA;;AAlfA;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAwIA;;AAtIA;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AAwCA;AAMA;AAwBA;;AArEA;EACC;;AACA;EACC;;AAIF;AACC;EACA;;AAED;AACC;AACA;AAAA;EAEA;;AAKA;AAAA;AAAA;AAAA;EAEC;;AAGF;EACC;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAKF;EACC;EACA;;AAMA;EAEC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAKF;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;AAmBA;;AAfC;AAAA;AAAA;EAEC;EACA;;AAKD;AAAA;AAAA;AAAA;EAEC;EACA;;AAKF;EACC;AAAY;;AAGb;AACC;EACA;EACA;;AAGD;AACC;EACA;AACA;AAAA;EAEA;;AAMJ;AAAA;EAEC;EACA;AACA;AAQA;AA2CA;AAkBA;AAKA;;AAxEC;AAAA;AAAA;AAAA;AAEC;EACA;;AAIF;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAc;AACd;AAgBA;;AAdA;AAAA;EACC;;AACA;AAAA;EACC;;AAGF;AAAA;EACC;EACA;EACA;EAEA;;AAID;AAAA;EACC;EACA;;AACA;AAAA;EACC;;AAKH;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AACC;EACA;;AAKF;AAAA;EACC;;AAID;AAAA;EACC;EACA;;AAED;AAAA;EACC;EACA;;AAIH;EACC;;AAMD;AAAA;EAEC;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;EAEC;EACA;;AAOF;AACC;AAAA;AAgDA;;AA9CA;EACC;EACA;EACA;EACA;EACA;EACA;AAEA;AAAA;EAEA;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;AC9XF;EAEA;ED8XE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAMD;EACC;;AAIA;EACC;;AAED;EACC;;AAED;EACC;;AAID;EACC;EACA;EACA;;AAQH;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;AACC;;AACA;AClcF;EAEA;;ADmcE;EAEC;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;AAAiB;;AAEjB;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AASJ;EACC;EACA;EACA;EACA;AAAyB;EACzB;EACA;EACA;EACA;EACA;;AACA;AAAA;EAEC;EACA;;AAED;EACC;EACA;EACA;;AACA;AAEC;EACA;;AAGF;EACC;EACA;AAAc;EACd;EACA;;AAED;AAAA;EAEC;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;EACA;EACA;EACA;;AAQH;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AACA;EAEC;;AAQH;AAAA;EAEC;AAAyB;EACzB;EAGA;EACA;EACA;EACA;;AAMD;EACC;EACA;EACA;;AAGD;EACC;;AAGD;AAAA;EAEC;;;AAKF;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;IACC;IACA;;;EAED;IACC;;;EAED;IACC;;;AAIF;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAOA;EACC;EACA;EACA;EACA;EACA;EACA;AACA;AACA;AAKA;;AAJA;EACC;;AAID;EACC;EACA;EACA;AACA;AAAA;EAEA;AAEA;;AACA;AACC;EACA;;AACA;EACC;;;AAMJ;AACA;AAAA;AAAA;AAAA;AAIA;EACC;EACA,WDvnBmB;ECwnBnB,WDvnBmB;ECwnBnB;EACA;EACA;EACA,KD9nBe;EC+nBf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAKF;AACA;AACA;EAEC;;AAGC;EACC;;;AAKH;EACC;EACA;EACA;EACA;AACA;EACA;EACA;EACA;AAEA;;AACA;EACC;;AAGD;EACC;EACA;;AAOE;EACC;EACA;EACA;;;AAOL;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;;AAEA;EACC;EACA;EACA;;AAED;EAEC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;;AAKH;AACA;EACC;EACA;EACA;AAIA;;AAHA;EACC;;AAIA;EAEC;EACA;;;AAIH;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AACA;EACC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAMA;;AAJA;EACC;;AAID;EACC;;AAED;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAED;EACC;;AAED;EAGC;EACA;EACA;;;AAIH;EACC;;AACA;EACC;;;AAIF;AAOC;AAAA;EACE;;;AAIH;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAmBA;AAUA;;AA3BA;AAAA;AAAA;EACC;EAKA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AACC;EACA;EACA;;AAED;AAAA;AAAA;EACC;EACA;AAuIA;;AArIA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA,aA1FkB;EA2FlB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA2CA;AAkBA;AAIA;AAAA;AAMA;AAyBA;AAKA;;AAnGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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","file":"apps.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["variables.scss","apps.scss","functions.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AD5BA;EACC;AACA;EACA;EACA;;;AAGD;EACC;IACC;IACA;;;AAKF;EACC;EACA;EACA;EAEA;;;AAGD;EAEC;EAEA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;;;AAGD;EACC;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAID;AAEA;EACC;;;AAGD;AACA;AACA;EAEC;EAEA,ODfkB;ECgBlB;EACA;EACA;EACA;EACA;EACA;EAAwD;EACxD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AAkQA;AAAA;AAAA;AAiBA;AAAA;AAAA;AA6EA;AAAA;AAAA;AAmDA;AAAA;AAAA;AAsDA;AAAA;AAAA;AA2BA;AAAA;AAAA;AAeA;AAAA;AAAA;;AAlfA;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAwIA;;AAtIA;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AAwCA;AAMA;AAwBA;;AArEA;EACC;;AACA;EACC;;AAIF;AACC;EACA;;AAED;AACC;AACA;AAAA;EAEA;;AAKA;AAAA;AAAA;AAAA;EAEC;;AAGF;EACC;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAKF;EACC;EACA;;AAMA;EAEC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAKF;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;AAmBA;;AAfC;AAAA;AAAA;EAEC;EACA;;AAKD;AAAA;AAAA;AAAA;EAEC;EACA;;AAKF;EACC;AAAY;;AAGb;AACC;EACA;EACA;;AAGD;AACC;EACA;AACA;AAAA;EAEA;;AAMJ;AAAA;EAEC;EACA;AACA;AAQA;AA2CA;AAkBA;AAKA;;AAxEC;AAAA;AAAA;AAAA;AAEC;EACA;;AAIF;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAc;AACd;AAgBA;;AAdA;AAAA;EACC;;AACA;AAAA;EACC;;AAGF;AAAA;EACC;EACA;EACA;EAEA;;AAID;AAAA;EACC;EACA;;AACA;AAAA;EACC;;AAKH;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AACC;EACA;;AAKF;AAAA;EACC;;AAID;AAAA;EACC;EACA;;AAED;AAAA;EACC;EACA;;AAIH;EACC;;AAMD;AAAA;EAEC;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;EAEC;EACA;;AAOF;AACC;AAAA;AAgDA;;AA9CA;EACC;EACA;EACA;EACA;EACA;EACA;AAEA;AAAA;EAEA;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;AC9XF;EAEA;ED8XE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAMD;EACC;;AAIA;EACC;;AAED;EACC;;AAED;EACC;;AAID;EACC;EACA;EACA;;AAQH;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;AACC;;AACA;AClcF;EAEA;;ADmcE;EAEC;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;AAAiB;;AAEjB;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AASJ;EACC;EACA;EACA;EACA;AAAyB;EACzB;EACA;EACA;EACA;EACA;;AACA;AAAA;EAEC;EACA;;AAED;EACC;EACA;EACA;;AACA;AAEC;EACA;;AAGF;EACC;EACA;AAAc;EACd;EACA;;AAED;AAAA;EAEC;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;EACA;EACA;EACA;;AAQH;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AACA;EAEC;;AAQH;AAAA;EAEC;AAAyB;EACzB;EAGA;EACA;EACA;EACA;;AAMD;EACC;EACA;EACA;;AAGD;EACC;;AAGD;AAAA;EAEC;;;AAKF;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;IACC;IACA;;;EAED;IACC;;;EAED;IACC;;;AAIF;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAOA;EACC;EACA;EACA;EACA;EACA;EACA;AACA;AACA;AAKA;;AAJA;EACC;;AAID;EACC;EACA;EACA;AACA;AAAA;EAEA;AAEA;;AACA;AACC;EACA;;AACA;EACC;;;AAMJ;AACA;AAAA;AAAA;AAAA;AAIA;EACC;EACA,WDvnBmB;ECwnBnB,WDvnBmB;ECwnBnB;EACA;EACA;EACA,KD9nBe;EC+nBf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAKF;AACA;AACA;EAEC;;AAGC;EACC;;;AAKH;EACC;EACA;EACA;EACA;AACA;EACA;EACA;EACA;AAEA;;AACA;EACC;;AAGD;EACC;EACA;;AAOE;EACC;EACA;EACA;;;AAOL;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;;AAEA;EACC;EACA;EACA;;AAED;EAEC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;;AAKH;AACA;EACC;EACA;EACA;AAIA;;AAHA;EACC;;AAIA;EAEC;EACA;;;AAIH;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AACA;EACC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAMA;;AAJA;EACC;;AAID;EACC;;AAED;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAED;EACC;;AAED;EAGC;EACA;EACA;;;AAIH;EACC;;AACA;EACC;;;AAIF;AAOC;AAAA;EACE;;;AAIH;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAmBA;AAUA;;AA3BA;AAAA;AAAA;EACC;EAKA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AACC;EACA;EACA;;AAED;AAAA;AAAA;EACC;EACA;AAuIA;;AArIA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA,aA1FkB;EA2FlB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA2CA;AAkBA;AAIA;AAAA;AAMA;AAyBA;AAKA;;AAnGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAIC;AAAc;EACd;EACA;EACA,iBA9Ge;;AAgHhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEC;AAAA;EAEA;;AAOC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC,aA7He;;AAiIlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAID;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC,OAzKe;EA0Kf;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;AACA;AAAA;EAEA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC,WA7MiB;EA8MjB;AAA0C;EAC1C;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAMD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAKJ;AAAA;AAAA;EACC;;AACA;AAAA;AAAA;EACC;;;AAOJ;AAAA;AAOG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;AACA;AAAA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC,OAhQgB;EAiQhB,QAjQgB;;;AAwQrB;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WDhnCgB;ECinChB,WDhnCgB;ACknChB;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;;AAGC;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAIF;AAAA;AAAA;AAAA;EACC;;AAKH;EAGC;;AAEA;EACC;;AAIF;AAAA;EAEC;EACA;EACA;EACA;;AAQC;EAEC;;AAEA;EACC;;AAIH;EACC;EACA;EAEA;AAIA;;AAHA;EACC;;AAGD;EACC;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;AACA;EACC;EAGA;;AAIH;EACC","file":"apps.css"}
\ No newline at end of file diff --git a/core/css/apps.scss b/core/css/apps.scss index bdc1fe95a06..b98f2e15881 100644 --- a/core/css/apps.scss +++ b/core/css/apps.scss @@ -39,15 +39,15 @@ html { width: 100%; height: 100%; position: absolute; + // color-background-plain should always be defined. It is the primary user colour background-color: var(--color-background-plain, var(--color-main-background)); - background-image: var(--image-background); - background-size: cover; - background-position: center; } body { + // color-background-plain should always be defined. It is the primary user colour background-color: var(--color-background-plain, var(--color-main-background)); - background-image: var(--image-background-plain, var(--image-background, var(--image-background-default))); + // color-background-plain should always be defined. It is the primary user colour + background-image: var(--image-background, var(--image-background-default)); background-size: cover; background-position: center; position: fixed; diff --git a/core/css/guest.css b/core/css/guest.css index 0a26afdf116..26a82b4d53d 100644 --- a/core/css/guest.css +++ b/core/css/guest.css @@ -23,8 +23,14 @@ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; color: var(--color-text); text-align: center; - background-color: var(--color-main-background-not-plain, var(--color-primary)); - background-image: var(--image-background, var(--image-background-plain, linear-gradient(40deg, #0082c9 0%, #30b6ff 100%))); + /* As guest, there is no color-background-plain */ + background-color: var(--color-background-plain, var(--color-primary-default, #0082c9)); + /* As guest, there is no user background (--image-background) + 1. User background if logged in ('no' if removed, that way the variable is _defined_) + 2. Empty background if enabled ('yes' is used, that way the variable is _defined_) + 3. Else default background + 4. Finally default gradient (should not happened, the background is always defined anyway) */ + background-image: var(--image-background, var(--image-background-plain, var(--image-background-default, linear-gradient(40deg, #0082c9 0%, #30b6ff 100%)))); background-attachment: fixed; min-height: 100%; /* fix sticky footer */ height: auto; diff --git a/core/css/server.css b/core/css/server.css index c8333d0b98d..574e044ed1d 100644 --- a/core/css/server.css +++ b/core/css/server.css @@ -2672,14 +2672,11 @@ html { height: 100%; position: absolute; background-color: var(--color-background-plain, var(--color-main-background)); - background-image: var(--image-background); - background-size: cover; - background-position: center; } body { background-color: var(--color-background-plain, var(--color-main-background)); - background-image: var(--image-background-plain, var(--image-background, var(--image-background-default))); + background-image: var(--image-background, var(--image-background-default)); background-size: cover; background-position: center; position: fixed; diff --git a/core/css/server.css.map b/core/css/server.css.map index 9cc0f6ccd69..63bac3baa47 100644 --- a/core/css/server.css.map +++ b/core/css/server.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["variables.scss","icons.scss","styles.scss","inputs.scss","functions.scss","header.scss","apps.scss","global.scss","fixes.scss","mobile.scss","tooltip.scss","../../node_modules/@nextcloud/dialogs/dist/index.css","public.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AC8IQ;AC9IR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;AAAA;EAEC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;AACA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;AACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AACA;EACC;;;AAKH;AAEA;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAID;AAEA;EACC;EACA;;;AAID;AAEA;EACC;;;AAGD;AAEA;AAAA;EAEC;EACA;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;;AAKH;AAEA;EACC;;;AAGD;AAEA;AAEA;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAED;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAIC;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAIA;EACC;;;AAKD;EACC;EACA;;AACA;EACC;EACA;EACA;;AAGF;EACC;EACA;;;AAIF;EACC;EACA;;AACA;EACC;;;AAIF;EACC;;;AAGD;AACA;AAEA;AAEA;AAEA;EACC;EACA;;AACA;EACC;EACA;;;AAIF;EACC;;;AAGD;EACC;;;AAIA;AAAA;EAGC;;;AAIF;EACC;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAIA;EACC;;;AAKD;EACC;;;AAKD;EACC;;;AAKD;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EAGC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAED;EACC;;AAEA;EACC;;AAED;EACC;;AAGF;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;;AAGA;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;;AAMJ;EACC;EACA;;;AAID;AACA;EACC;EACA;EACA;EACA;AAwBA;;AAtBA;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAIF;EACC;;AAGA;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AAGF;EACC;;AAGA;AAAA;AAAA;EAIC;EACA;EACA;;AAGD;EACC;;AAGD;EACC;;;AAMJ;AAGC;AAAA;EACC;EACA;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAMJ;AACA;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGA;EACC;;AAED;EACC;;AAED;EACC;EACA;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGC;EACA;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AACA;EACC;EACA;;AAMH;EACC;EACA;EACA;EACA;AACA;AACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;AACC;EACA;EACA;;AAEC;EACC;EACA;;AACA;EACC;EACA;;AAIH;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;EAGC;;AAED;AAAA;EAEC;;AAGD;EACC;EACA;;AAED;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AACA;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;;AAIH;EACC;;AAED;EACC;;AAED;EAIC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,SAhBS;EAiBT;EACA;EACA;;AAGA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,aA/BU;EAgCV;;AACA;EACC;;AAGF;EACC;EACA;;AAED;EACC;;AAON;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;;;AAGD;AAGC;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;AAGD;EAGC;;AAKD;EACC;;AAEA;EACC;;;AAMJ;AACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AACA;AAAA;EAEC;;AAIF;AACC;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;AA8DA;;AA5DA;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAEA;EACC;EACA;;AAGD;AACC;EACA;EACA;EACA;EACA;;AAED;EACC;;AAIF;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAED;EACC;;AAGD;EAGC;;AAIF;EACC;;AAEA;EACC;EACA;;AAGD;EACC;;AAKF;EACC;EACA;;AAED;EACC;;;AAMH;EACC;EACA;EACA;;;AAGD;AAEA;EACC;;;AAGD;AAGC;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;;;AAIF;AACA;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACA;EACC;;AAIA;EACC;;AAIF;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AACA;EACC;;AAGF;EACC;;AAIH;EACC;;AACA;EACC;;AAGF;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAEA;AAAA;AAAA;EAGC;;AAGF;EACC;EACA;;AAID;EACC;EACA;;AAEA;EACC;;AAGF;EACC;;AAEA;AAAA;AAAA;AAAA;AAAA;EAEC;;;AAKH;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AAGC;EACC;EACA;;AAED;EACC;;;AAIF;AACA;EACC;;AAID;AAEA;EACC;EACA;EACA;EACA;;;AFvsCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AGAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADlCC;AACD;EACC;;;AAED;EACC;;;AAED;EACI;;;AAKJ;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;EACA,YAVgB;EAWhB;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAMA;EACI;;;AAGJ;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA8BA;;AA5BC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;;;AAGD;AACA;AAcC;AAAA;;AAbA;EACC;EACA;EAEA,QAjIe;;AAmIhB;EAIC;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;;AAIF;AACA;AAAA;AAAA;AAAA;AAAA;EAKC;EACA;EACA;EACA,YArKgB;EAsKhB;EACA;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;EACC;;;AAIF;AAAA;AAAA;AAAA;EAIC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;;;AAKA;AAAA;EACC;;AAIA;AAAA;EACC;;;AAKH;AACA;AAAA;AAAA;AAAA;EAIC;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;AAID;AACC;;AACA;EAEC;EACA;EACA;;;AAKH;AAEC;AAuBC;;AApBA;EACC;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA,QAlRc;EAmRd,OAnRc;EAoRd;EACA;EACA;;AACA;EACC;ACpPH;EAEA;;AD0PG;EACC;;AAID;EAGC;EACA;;AACA;EACC;;AAQH;EACC;EACA;AACA;EACA;;;AAOJ;AACA;AAAA;EAEC;;;AAED;AAAA;EAEC;;;AAGD;AAKC;AA8EC;;AA5EA;EAEC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;;AAED;EACC;EACA;EACA,QAxBkB;EAyBlB,OAzBkB;EA0BlB;EACA;EACA;EACA;;AAED;EAEC;;AAED;EACC;EACA;EACA;EACA;;AAED;AAEA;AAAA;EAEC;EACA;EACA;;AAED;EACC;EACA;AAA4D;;AAE7D;EACC;;AAID;EACC;EACA;;AAED;EACC,eA/DkB;;AAmEnB;EACC;EACA,QArEkB;EAsElB,OAtEkB;EAuElB;EACA;;AAED;EACC;;AAED;EACC;;AAOD;EAEC;;AAED;EACC,cAzFyB;;AA2F1B;EACC;EACA;EACA;;AAED;EACC;AAAuE;EACvE;AAAiE;;AAElE;EACC;EACA;AAAiE;EACjE;;AAID;EAEC;AAA0C;EAC1C;AAAsD;EACtD;;AAED;EACC;;AAED;EACC;AAAc;;;AAMlB;AACA;EACC;EACA;;AACA;EACC;;AAED;EACC;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AACA;EACC;;AACA;EACC;EACA;;AAIH;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;;AAGA;EACC;;AAGF;EACE;EACA;;;AAMH;AAAA;AAAA;AAAA;EAEC;;;AAID;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EACC;EACA;;AACA;EAIC;EACA;EACA;EACA;;AAED;EACC;;AAGF;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAKJ;EACC;;AACA;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;EACA;;AAGF;EACC;EACA;EACA;;AACA;EACC;EACA;;AAGF;EAGC;;AAED;EACC;;;AAKH;AACA;EACC;EACA;;AACA;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAED;EACC;EACA;;AACA;EACC;;;AAOL;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEC;EACC;;AAED;EACC;;AAGF;EACC;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;;AAIF;AACA;EACC;IAEC;;EAED;IAEC;;EAED;IAGC;;EAED;IAEC;;;AAGF;EACC;EACA;EACA;;;AAKD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;EACG;;;AH7xBJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AKAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA;AACA;AAAA;EAEC;EACA;EACA;;AACA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;AAIF;AACA;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA,QLoEe;EKnEf;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AASF;AACC;AAqIA;;AAlIA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EAfD;EACA;EAgBC;EACA,KLyBc;EKxBd;EACA;AAMA;AAmBA;;AAvBA;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EAEC;EAzCF;EACA;;AA6CC;EACC;EACA;EACA;EACA;;AAEC;EACC;EACA;EACA;EACA,QAlDuB;EAmDvB;EACA;EACA;EACA;EACA;EACA;;AACA;EAEC;;AAED;EAEC;;AAED;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;AAAA;EAEC;EACA;EACA;EACA;EACA;;AAML;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAGD;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAKA;AAAA;EAEC;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA,OLzGY;EK0GZ;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACC;;AAGD;AAAA;EACC;;;AAOL;AAEA;EACC;;;AAGD;AACA;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;AAEA;;AACA;EACC;AAAY;EACZ;AAqBA;AA2BA;;AA9CA;EAGC;;AAEA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;;AAED;EACC;;AAED;EACC;;AAKF;EACC;EACA;EACA;AAMA;;AAJA;EACC;EACA;;AAGD;EACC;;AAIF;EACC;EACA;EACA;AAEA;;AACA;EACC;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;;;AAIF;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,KLtPc;;;AK2PhB;AAGC;AAAA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;EAEC;EACA;EACA;;;ALhXF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AGAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AHnBA;AACA;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;;;AAKH;AAAA;EAEC;EACA;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAGD;AAEC;EACC;;AAED;EACC;;AAED;EACC;;AAED;EACC;;;AAIF;EACC;IACC;;EAED;IACC;;;AAIF;EACC;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAQC;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADpIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AMAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AFAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AE5BA;EACC;AACA;EACA;EACA;;;AAGD;EACC;IACC;IACA;;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;;;AAGD;EACC;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAID;AAEA;EACC;;;AAGD;AACA;AACA;EAEC;EAEA,ONfkB;EMgBlB;EACA;EACA;EACA;EACA;EACA;EAAwD;EACxD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AAkQA;AAAA;AAAA;AAiBA;AAAA;AAAA;AA6EA;AAAA;AAAA;AAmDA;AAAA;AAAA;AAsDA;AAAA;AAAA;AA2BA;AAAA;AAAA;AAeA;AAAA;AAAA;;AAlfA;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAwIA;;AAtIA;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AAwCA;AAMA;AAwBA;;AArEA;EACC;;AACA;EACC;;AAIF;AACC;EACA;;AAED;AACC;AACA;AAAA;EAEA;;AAKA;AAAA;AAAA;AAAA;EAEC;;AAGF;EACC;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAKF;EACC;EACA;;AAMA;EAEC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAKF;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;AAmBA;;AAfC;AAAA;AAAA;EAEC;EACA;;AAKD;AAAA;AAAA;AAAA;EAEC;EACA;;AAKF;EACC;AAAY;;AAGb;AACC;EACA;EACA;;AAGD;AACC;EACA;AACA;AAAA;EAEA;;AAMJ;AAAA;EAEC;EACA;AACA;AAQA;AA2CA;AAkBA;AAKA;;AAxEC;AAAA;AAAA;AAAA;AAEC;EACA;;AAIF;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAc;AACd;AAgBA;;AAdA;AAAA;EACC;;AACA;AAAA;EACC;;AAGF;AAAA;EACC;EACA;EACA;EAEA;;AAID;AAAA;EACC;EACA;;AACA;AAAA;EACC;;AAKH;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AACC;EACA;;AAKF;AAAA;EACC;;AAID;AAAA;EACC;EACA;;AAED;AAAA;EACC;EACA;;AAIH;EACC;;AAMD;AAAA;EAEC;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;EAEC;EACA;;AAOF;AACC;AAAA;AAgDA;;AA9CA;EACC;EACA;EACA;EACA;EACA;EACA;AAEA;AAAA;EAEA;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;AF9XF;EAEA;EE8XE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAMD;EACC;;AAIA;EACC;;AAED;EACC;;AAED;EACC;;AAID;EACC;EACA;EACA;;AAQH;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;AACC;;AACA;AFlcF;EAEA;;AEmcE;EAEC;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;AAAiB;;AAEjB;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AASJ;EACC;EACA;EACA;EACA;AAAyB;EACzB;EACA;EACA;EACA;EACA;;AACA;AAAA;EAEC;EACA;;AAED;EACC;EACA;EACA;;AACA;AAEC;EACA;;AAGF;EACC;EACA;AAAc;EACd;EACA;;AAED;AAAA;EAEC;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;EACA;EACA;EACA;;AAQH;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AACA;EAEC;;AAQH;AAAA;EAEC;AAAyB;EACzB;EAGA;EACA;EACA;EACA;;AAMD;EACC;EACA;EACA;;AAGD;EACC;;AAGD;AAAA;EAEC;;;AAKF;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;IACC;IACA;;;EAED;IACC;;;EAED;IACC;;;AAIF;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAOA;EACC;EACA;EACA;EACA;EACA;EACA;AACA;AACA;AAKA;;AAJA;EACC;;AAID;EACC;EACA;EACA;AACA;AAAA;EAEA;AAEA;;AACA;AACC;EACA;;AACA;EACC;;;AAMJ;AACA;AAAA;AAAA;AAAA;AAIA;EACC;EACA,WNvnBmB;EMwnBnB,WNvnBmB;EMwnBnB;EACA;EACA;EACA,KN9nBe;EM+nBf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAKF;AACA;AACA;EAEC;;AAGC;EACC;;;AAKH;EACC;EACA;EACA;EACA;AACA;EACA;EACA;EACA;AAEA;;AACA;EACC;;AAGD;EACC;EACA;;AAOE;EACC;EACA;EACA;;;AAOL;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;;AAEA;EACC;EACA;EACA;;AAED;EAEC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;;AAKH;AACA;EACC;EACA;EACA;AAIA;;AAHA;EACC;;AAIA;EAEC;EACA;;;AAIH;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AACA;EACC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAMA;;AAJA;EACC;;AAID;EACC;;AAED;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAED;EACC;;AAED;EAGC;EACA;EACA;;;AAIH;EACC;;AACA;EACC;;;AAIF;AAOC;AAAA;EACE;;;AAIH;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAmBA;AAUA;;AA3BA;AAAA;AAAA;EACC;EAKA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AACC;EACA;EACA;;AAED;AAAA;AAAA;EACC;EACA;AAuIA;;AArIA;AAAA;AAAA;EACC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AA;AAAA;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAIF;AAAA;AAAA;AAAA;EACC;;AAKH;EAGC;;AAEA;EACC;;AAIF;AAAA;EAEC;EACA;EACA;EACA;;AAQC;EAEC;;AAEA;EACC;;AAIH;EACC;EACA;EAEA;AAIA;;AAHA;EACC;;AAGD;EACC;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;AACA;EACC;EAGA;;AAIH;EACC;;;ACp4CF;AAAA;AAAA;AAIA;AAEA;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AChDD;AAEA;AACA;EACC;;;ARJD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ASEA;AAEC;EACA;IACC;IACA;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;IACA;IACA;;;AAGD;EACA;IACC;IACA;IACA;;;EAGA;IACC;;;EAIF;IACC;;;EAGD;IACC;IACA;;;AAGD;EACA;IACC;IACA;IAEA;IAEA;;EACA;IACC;;EAED;IACC;;EACA;IACC;;;AAKH;EAEC;IACC;;EAED;IACC;IACA;IACA,KToCa;ISnCb;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAED;IACC;;;EAKF;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;EAED;AAAA;IAEC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;;;EAED;IACC;;;EAGD;IACC;;;AAGD;EACA;IACC;;;EAED;IACC;;;AAGD;EACA;AAAA;AAAA;AAAA;IAIC;;;EAED;IACC;;;EAGD;IACC;;;AAGD;;AAGD;EACC;IACC;IACA;;EACA;IACC;;;AAGF;EACA;AAoBC;;EAlBC;IACC;;EAGF;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAID;IACC;;;AC/KH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;AA0CA;AAmBA;;AA5DA;EAGI;EACA;EACA;;AAEJ;EAEI;EACA;;AAEJ;EAEI;EACA;;AAEJ;EAEI;EACA;;AACA;EACI;EACA;EACA;EACA;EACA;;AAGR;EAEI;EACA;;AACA;EACI;EACA;EACA;EACA;EACA;;AAQJ;EACI;EACA;EACA;;AAGR;EACI;EACA;;AAEJ;EACI;EACA;;AAOA;EACI;EACA;EACA;;AAGR;EAEI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;ACzIJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;AACA;;;AAEF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;;;AAEF;AAAA;EAEE;EACA;EACA;;;AAEF;AAAA;AAAA;AAAA;EAIE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;AACA;AACE;;;AAEF;EACE;;;AAEF;ACjHA;AA0CC;AAmBA;;AA1DC;EACC;;AAIA;EACC;;AAED;EACC;EACA;EACA;;AAEA;EAGC;;AAID;EACC;;AAED;EACC;;AAED;EACC;;AAMJ;EAEC;;AAKD;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;EAIC;;AAID;EACC;EACA;EACA;EACA;EACA,QArEc;EAsEd;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACA;EACC;EACA;EACA;AACA;EACA;EACA;EACA","file":"server.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["variables.scss","icons.scss","styles.scss","inputs.scss","functions.scss","header.scss","apps.scss","global.scss","fixes.scss","mobile.scss","tooltip.scss","../../node_modules/@nextcloud/dialogs/dist/index.css","public.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AC8IQ;AC9IR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;AAAA;EAEC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;AACA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;AACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AACA;EACC;;;AAKH;AAEA;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAID;AAEA;EACC;EACA;;;AAID;AAEA;EACC;;;AAGD;AAEA;AAAA;EAEC;EACA;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;;AAKH;AAEA;EACC;;;AAGD;AAEA;AAEA;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAED;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAIC;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAIA;EACC;;;AAKD;EACC;EACA;;AACA;EACC;EACA;EACA;;AAGF;EACC;EACA;;;AAIF;EACC;EACA;;AACA;EACC;;;AAIF;EACC;;;AAGD;AACA;AAEA;AAEA;AAEA;EACC;EACA;;AACA;EACC;EACA;;;AAIF;EACC;;;AAGD;EACC;;;AAIA;AAAA;EAGC;;;AAIF;EACC;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAIA;EACC;;;AAKD;EACC;;;AAKD;EACC;;;AAKD;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EAGC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAED;EACC;;AAEA;EACC;;AAED;EACC;;AAGF;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;;AAGA;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;;AAMJ;EACC;EACA;;;AAID;AACA;EACC;EACA;EACA;EACA;AAwBA;;AAtBA;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAIF;EACC;;AAGA;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AAGF;EACC;;AAGA;AAAA;AAAA;EAIC;EACA;EACA;;AAGD;EACC;;AAGD;EACC;;;AAMJ;AAGC;AAAA;EACC;EACA;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAMJ;AACA;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGA;EACC;;AAED;EACC;;AAED;EACC;EACA;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGC;EACA;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AACA;EACC;EACA;;AAMH;EACC;EACA;EACA;EACA;AACA;AACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;AACC;EACA;EACA;;AAEC;EACC;EACA;;AACA;EACC;EACA;;AAIH;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;EAGC;;AAED;AAAA;EAEC;;AAGD;EACC;EACA;;AAED;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AACA;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;;AAIH;EACC;;AAED;EACC;;AAED;EAIC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,SAhBS;EAiBT;EACA;EACA;;AAGA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,aA/BU;EAgCV;;AACA;EACC;;AAGF;EACC;EACA;;AAED;EACC;;AAON;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;;;AAGD;AAGC;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;AAGD;EAGC;;AAKD;EACC;;AAEA;EACC;;;AAMJ;AACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AACA;AAAA;EAEC;;AAIF;AACC;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;AA8DA;;AA5DA;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAEA;EACC;EACA;;AAGD;AACC;EACA;EACA;EACA;EACA;;AAED;EACC;;AAIF;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAED;EACC;;AAGD;EAGC;;AAIF;EACC;;AAEA;EACC;EACA;;AAGD;EACC;;AAKF;EACC;EACA;;AAED;EACC;;;AAMH;EACC;EACA;EACA;;;AAGD;AAEA;EACC;;;AAGD;AAGC;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;;;AAIF;AACA;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACA;EACC;;AAIA;EACC;;AAIF;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AACA;EACC;;AAGF;EACC;;AAIH;EACC;;AACA;EACC;;AAGF;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAEA;AAAA;AAAA;EAGC;;AAGF;EACC;EACA;;AAID;EACC;EACA;;AAEA;EACC;;AAGF;EACC;;AAEA;AAAA;AAAA;AAAA;AAAA;EAEC;;;AAKH;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AAGC;EACC;EACA;;AAED;EACC;;;AAIF;AACA;EACC;;AAID;AAEA;EACC;EACA;EACA;EACA;;;AFvsCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AGAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADlCC;AACD;EACC;;;AAED;EACC;;;AAED;EACI;;;AAKJ;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;EACA,YAVgB;EAWhB;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAMA;EACI;;;AAGJ;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA8BA;;AA5BC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;;;AAGD;AACA;AAcC;AAAA;;AAbA;EACC;EACA;EAEA,QAjIe;;AAmIhB;EAIC;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;;AAIF;AACA;AAAA;AAAA;AAAA;AAAA;EAKC;EACA;EACA;EACA,YArKgB;EAsKhB;EACA;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;EACC;;;AAIF;AAAA;AAAA;AAAA;EAIC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;;;AAKA;AAAA;EACC;;AAIA;AAAA;EACC;;;AAKH;AACA;AAAA;AAAA;AAAA;EAIC;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;AAID;AACC;;AACA;EAEC;EACA;EACA;;;AAKH;AAEC;AAuBC;;AApBA;EACC;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA,QAlRc;EAmRd,OAnRc;EAoRd;EACA;EACA;;AACA;EACC;ACpPH;EAEA;;AD0PG;EACC;;AAID;EAGC;EACA;;AACA;EACC;;AAQH;EACC;EACA;AACA;EACA;;;AAOJ;AACA;AAAA;EAEC;;;AAED;AAAA;EAEC;;;AAGD;AAKC;AA8EC;;AA5EA;EAEC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;;AAED;EACC;EACA;EACA,QAxBkB;EAyBlB,OAzBkB;EA0BlB;EACA;EACA;EACA;;AAED;EAEC;;AAED;EACC;EACA;EACA;EACA;;AAED;AAEA;AAAA;EAEC;EACA;EACA;;AAED;EACC;EACA;AAA4D;;AAE7D;EACC;;AAID;EACC;EACA;;AAED;EACC,eA/DkB;;AAmEnB;EACC;EACA,QArEkB;EAsElB,OAtEkB;EAuElB;EACA;;AAED;EACC;;AAED;EACC;;AAOD;EAEC;;AAED;EACC,cAzFyB;;AA2F1B;EACC;EACA;EACA;;AAED;EACC;AAAuE;EACvE;AAAiE;;AAElE;EACC;EACA;AAAiE;EACjE;;AAID;EAEC;AAA0C;EAC1C;AAAsD;EACtD;;AAED;EACC;;AAED;EACC;AAAc;;;AAMlB;AACA;EACC;EACA;;AACA;EACC;;AAED;EACC;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AACA;EACC;;AACA;EACC;EACA;;AAIH;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;;AAGA;EACC;;AAGF;EACE;EACA;;;AAMH;AAAA;AAAA;AAAA;EAEC;;;AAID;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EACC;EACA;;AACA;EAIC;EACA;EACA;EACA;;AAED;EACC;;AAGF;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAKJ;EACC;;AACA;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;EACA;;AAGF;EACC;EACA;EACA;;AACA;EACC;EACA;;AAGF;EAGC;;AAED;EACC;;;AAKH;AACA;EACC;EACA;;AACA;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAED;EACC;EACA;;AACA;EACC;;;AAOL;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEC;EACC;;AAED;EACC;;AAGF;EACC;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;;AAIF;AACA;EACC;IAEC;;EAED;IAEC;;EAED;IAGC;;EAED;IAEC;;;AAGF;EACC;EACA;EACA;;;AAKD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;EACG;;;AH7xBJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AKAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA;AACA;AAAA;EAEC;EACA;EACA;;AACA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;AAIF;AACA;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA,QLoEe;EKnEf;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AASF;AACC;AAqIA;;AAlIA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EAfD;EACA;EAgBC;EACA,KLyBc;EKxBd;EACA;AAMA;AAmBA;;AAvBA;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EAEC;EAzCF;EACA;;AA6CC;EACC;EACA;EACA;EACA;;AAEC;EACC;EACA;EACA;EACA,QAlDuB;EAmDvB;EACA;EACA;EACA;EACA;EACA;;AACA;EAEC;;AAED;EAEC;;AAED;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;AAAA;EAEC;EACA;EACA;EACA;EACA;;AAML;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAGD;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAKA;AAAA;EAEC;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA,OLzGY;EK0GZ;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACC;;AAGD;AAAA;EACC;;;AAOL;AAEA;EACC;;;AAGD;AACA;AACA;EACC;EACA;EACA;EACA;EACA;E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;;AAIF;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAwIA;;AAtIA;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AAwCA;AAMA;AAwBA;;AArEA;EACC;;AACA;EACC;;AAIF;AACC;EACA;;AAED;AACC;AACA;AAAA;EAEA;;AAKA;AAAA;AAAA;AAAA;EAEC;;AAGF;EACC;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAKF;EACC;EACA;;AAMA;EAEC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAKF;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;AAmBA;;AAfC;AAAA;AAAA;EAEC;EACA;;AAKD;AAAA;AAAA;AAAA;EAEC;EACA;;AAKF;EACC;AAAY;;AAGb;AACC;EACA;EACA;;AAGD;AACC;EACA;AACA;AAAA;EAEA;;AAMJ;AAAA;EAEC;EACA;AACA;AAQA;AA2CA;AAkBA;AAKA;;AAxEC;AAAA;AAAA;AAAA;AAEC;EACA;;AAIF;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAc;AACd;AAgBA;;AAdA;AAAA;EACC;;AACA;AAAA;EACC;;AAGF;AAAA;EACC;EACA;EACA;EAEA;;AAID;AAAA;EACC;EACA;;AACA;AAAA;EACC;;AAKH;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AACC;EACA;;AAKF;AAAA;EACC;;AAID;AAAA;EACC;EACA;;AAED;AAAA;EACC;EACA;;AAIH;EACC;;AAMD;AAAA;EAEC;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;EAEC;EACA;;AAOF;AACC;AAAA;AAgDA;;AA9CA;EACC;EACA;EACA;EACA;EACA;EACA;AAEA;AAAA;EAEA;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;AF9XF;EAEA;EE8XE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAMD;EACC;;AAIA;EACC;;AAED;EACC;;AAED;EACC;;AAID;EACC;EACA;EACA;;AAQH;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;AACC;;AACA;AFlcF;EAEA;;AEmcE;EAEC;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;AAAiB;;AAEjB;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AASJ;EACC;EACA;EACA;EACA;AAAyB;EACzB;EACA;EACA;EACA;EACA;;AACA;AAAA;EAEC;EACA;;AAED;EACC;EACA;EACA;;AACA;AAEC;EACA;;AAGF;EACC;EACA;AAAc;EACd;EACA;;AAED;AAAA;EAEC;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;EACA;EACA;EACA;;AAQH;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AACA;EAEC;;AAQH;AAAA;EAEC;AAAyB;EACzB;EAGA;EACA;EACA;EACA;;AAMD;EACC;EACA;EACA;;AAGD;EACC;;AAGD;AAAA;EAEC;;;AAKF;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;IACC;IACA;;;EAED;IACC;;;EAED;IACC;;;AAIF;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAOA;EACC;EACA;EACA;EACA;EACA;EACA;AACA;AACA;AAKA;;AAJA;EACC;;AAID;EACC;EACA;EACA;AACA;AAAA;EAEA;AAEA;;AACA;AACC;EACA;;AACA;EACC;;;AAMJ;AACA;AAAA;AAAA;AAAA;AAIA;EACC;EACA,WNvnBmB;EMwnBnB,WNvnBmB;EMwnBnB;EACA;EACA;EACA,KN9nBe;EM+nBf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAKF;AACA;AACA;EAEC;;AAGC;EACC;;;AAKH;EACC;EACA;EACA;EACA;AACA;EACA;EACA;EACA;AAEA;;AACA;EACC;;AAGD;EACC;EACA;;AAOE;EACC;EACA;EACA;;;AAOL;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;;AAEA;EACC;EACA;EACA;;AAED;EAEC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;;AAKH;AACA;EACC;EACA;EACA;AAIA;;AAHA;EACC;;AAIA;EAEC;EACA;;;AAIH;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AACA;EACC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAMA;;AAJA;EACC;;AAID;EACC;;AAED;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAED;EACC;;AAED;EAGC;EACA;EACA;;;AAIH;EACC;;AACA;EACC;;;AAIF;AAOC;AAAA;EACE;;;AAIH;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAmBA;AAUA;;AA3BA;AAAA;AAAA;EACC;EAKA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AACC;EACA;EACA;;AAED;AAAA;AAAA;EACC;EACA;AAuIA;;AArIA;AAAA;AAAA;EACC;;AAGD;AAAA;AAA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EC;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAIF;AAAA;AAAA;AAAA;EACC;;AAKH;EAGC;;AAEA;EACC;;AAIF;AAAA;EAEC;EACA;EACA;EACA;;AAQC;EAEC;;AAEA;EACC;;AAIH;EACC;EACA;EAEA;AAIA;;AAHA;EACC;;AAGD;EACC;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;AACA;EACC;EAGA;;AAIH;EACC;;;ACp4CF;AAAA;AAAA;AAIA;AAEA;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AChDD;AAEA;AACA;EACC;;;ARJD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ASEA;AAEC;EACA;IACC;IACA;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;IACA;IACA;;;AAGD;EACA;IACC;IACA;IACA;;;EAGA;IACC;;;EAIF;IACC;;;EAGD;IACC;IACA;;;AAGD;EACA;IACC;IACA;IAEA;IAEA;;EACA;IACC;;EAED;IACC;;EACA;IACC;;;AAKH;EAEC;IACC;;EAED;IACC;IACA;IACA,KToCa;ISnCb;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAED;IACC;;;EAKF;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;EAED;AAAA;IAEC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;;;EAED;IACC;;;EAGD;IACC;;;AAGD;EACA;IACC;;;EAED;IACC;;;AAGD;EACA;AAAA;AAAA;AAAA;IAIC;;;EAED;IACC;;;EAGD;IACC;;;AAGD;;AAGD;EACC;IACC;IACA;;EACA;IACC;;;AAGF;EACA;AAoBC;;EAlBC;IACC;;EAGF;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAID;IACC;;;AC/KH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;AA0CA;AAmBA;;AA5DA;EAGI;EACA;EACA;;AAEJ;EAEI;EACA;;AAEJ;EAEI;EACA;;AAEJ;EAEI;EACA;;AACA;EACI;EACA;EACA;EACA;EACA;;AAGR;EAEI;EACA;;AACA;EACI;EACA;EACA;EACA;EACA;;AAQJ;EACI;EACA;EACA;;AAGR;EACI;EACA;;AAEJ;EACI;EACA;;AAOA;EACI;EACA;EACA;;AAGR;EAEI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;ACzIJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;AACA;;;AAEF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;;;AAEF;AAAA;EAEE;EACA;EACA;;;AAEF;AAAA;AAAA;AAAA;EAIE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;AACA;AACE;;;AAEF;EACE;;;AAEF;ACjHA;AA0CC;AAmBA;;AA1DC;EACC;;AAIA;EACC;;AAED;EACC;EACA;EACA;;AAEA;EAGC;;AAID;EACC;;AAED;EACC;;AAED;EACC;;AAMJ;EAEC;;AAKD;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;EAIC;;AAID;EACC;EACA;EACA;EACA;EACA,QArEc;EAsEd;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACA;EACC;EACA;EACA;AACA;EACA;EACA;EACA","file":"server.css"}
\ No newline at end of file diff --git a/cypress.config.ts b/cypress.config.ts new file mode 100644 index 00000000000..b7c6934689a --- /dev/null +++ b/cypress.config.ts @@ -0,0 +1,85 @@ +/* eslint-disable node/no-unpublished-import */ +import { applyChangesToNextcloud, configureNextcloud, preppingNextcloud, startNextcloud, stopNextcloud, waitOnNextcloud } from './cypress/dockerNode' +import { defineConfig } from 'cypress' + +import browserify from '@cypress/browserify-preprocessor' + +export default defineConfig({ + projectId: '37xpdh', + + // 16/9 screen ratio + viewportWidth: 1280, + viewportHeight: 720, + + // Tries again 2 more times on failure + retries: { + runMode: 2, + // do not retry in `cypress open` + openMode: 0, + }, + + // Needed to trigger `after:run` events with cypress open + experimentalInteractiveRunEvents: true, + + // faster video processing + videoCompression: false, + + // Visual regression testing + env: { + failSilently: false, + type: 'actual', + }, + screenshotsFolder: 'cypress/snapshots/actual', + trashAssetsBeforeRuns: true, + + e2e: { + // Enable session management and disable isolation + experimentalSessionAndOrigin: true, + testIsolation: 'off', + + // We've imported your old cypress plugins here. + // You may want to clean this up later by importing these. + async setupNodeEvents(on, config) { + // Fix browserslist extend https://github.com/cypress-io/cypress/issues/2983#issuecomment-570616682 + on('file:preprocessor', browserify({ typescript: require.resolve('typescript') })) + + // Disable spell checking to prevent rendering differences + on('before:browser:launch', (browser, launchOptions) => { + if (browser.family === 'chromium' && browser.name !== 'electron') { + launchOptions.preferences.default['browser.enable_spellchecking'] = false + return launchOptions + } + + if (browser.family === 'firefox') { + launchOptions.preferences['layout.spellcheckDefault'] = 0 + return launchOptions + } + + if (browser.name === 'electron') { + launchOptions.preferences.spellcheck = false + return launchOptions + } + }) + + // Remove container after run + on('after:run', () => { + stopNextcloud() + }) + + // Before the browser launches + // starting Nextcloud testing container + return startNextcloud(process.env.BRANCH) + .then((ip) => { + // Setting container's IP as base Url + config.baseUrl = `http://${ip}/index.php` + return ip + }) + .then(waitOnNextcloud) + .then(configureNextcloud) + .then(applyChangesToNextcloud) + .then(() => { + return config + }) + }, + }, +}) diff --git a/cypress/dockerNode.ts b/cypress/dockerNode.ts new file mode 100644 index 00000000000..13e75c605b2 --- /dev/null +++ b/cypress/dockerNode.ts @@ -0,0 +1,243 @@ +/** + * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +/* eslint-disable no-console */ +/* eslint-disable node/no-unpublished-import */ + +import Docker from 'dockerode' +import waitOn from 'wait-on' +import tar from 'tar' + +export const docker = new Docker() + +const CONTAINER_NAME = 'nextcloud-cypress-tests-server' +const SERVER_IMAGE = 'ghcr.io/nextcloud/continuous-integration-shallow-server' + +/** + * Start the testing container + * + * @param {string} branch the branch of your current work + */ +export const startNextcloud = async function(branch: string = 'master'): Promise<any> { + + try { + // Pulling images + console.log('\nPulling images... ⏳') + await new Promise((resolve, reject): any => docker.pull(SERVER_IMAGE, (err, stream) => { + if (err) { + reject(err) + } + // https://github.com/apocas/dockerode/issues/357 + docker.modem.followProgress(stream, onFinished) + + function onFinished(err) { + if (!err) { + resolve(true) + return + } + reject(err) + } + })) + console.log('└─ Done') + + // Remove old container if exists + console.log('\nChecking running containers... 🔍') + try { + const oldContainer = docker.getContainer(CONTAINER_NAME) + const oldContainerData = await oldContainer.inspect() + if (oldContainerData) { + console.log('├─ Existing running container found') + console.log('├─ Removing... ⏳') + // Forcing any remnants to be removed just in case + await oldContainer.remove({ force: true }) + console.log('└─ Done') + } + } catch (error) { + console.log('└─ None found!') + } + + // Starting container + console.log('\nStarting Nextcloud container... 🚀') + console.log(`├─ Using branch '${branch}'`) + const container = await docker.createContainer({ + Image: SERVER_IMAGE, + name: CONTAINER_NAME, + HostConfig: { + Binds: [], + }, + }) + await container.start() + + // Get container's IP + const ip = await getContainerIP(container) + + console.log(`├─ Nextcloud container's IP is ${ip} 🌏`) + return ip + } catch (err) { + console.log('└─ Unable to start the container 🛑') + console.log(err) + stopNextcloud() + throw new Error('Unable to start the container') + } +} + +/** + * Configure Nextcloud + */ +export const configureNextcloud = async function() { + console.log('\nConfiguring nextcloud...') + const container = docker.getContainer(CONTAINER_NAME) + await runExec(container, ['php', 'occ', '--version'], true) + + // Be consistent for screenshots + await runExec(container, ['php', 'occ', 'config:system:set', 'default_language', '--value', 'en'], true) + await runExec(container, ['php', 'occ', 'config:system:set', 'force_language', '--value', 'en'], true) + await runExec(container, ['php', 'occ', 'config:system:set', 'default_locale', '--value', 'en_US'], true) + await runExec(container, ['php', 'occ', 'config:system:set', 'force_locale', '--value', 'en_US'], true) + await runExec(container, ['php', 'occ', 'config:system:set', 'enforce_theme', '--value', 'light'], true) + + // Enable the app and give status + await runExec(container, ['php', 'occ', 'app:enable', '--force', 'viewer'], true) + // await runExec(container, ['php', 'occ', 'app:list'], true) + + console.log('└─ Nextcloud is now ready to use 🎉') +} + +/** + * Applying local changes to the container + * Only triggered if we're not in CI. Otherwise the + * continuous-integration-shallow-server image will + * already fetch the proper branch. + */ +export const applyChangesToNextcloud = async function() { + console.log('\nApply local changes to nextcloud...') + const container = docker.getContainer(CONTAINER_NAME) + + const htmlPath = '/var/www/html' + const folderPaths = [ + './apps', + './core', + './dist', + './lib', + './ocs', + ] + + // Tar-streaming the above folder sinto the container + const serverTar = tar.c({ gzip: false }, folderPaths) + await container.putArchive(serverTar, { + path: htmlPath, + }) + + // Making sure we have the proper permissions + await runExec(container, ['chown', '-R', 'www-data:www-data', htmlPath], false, 'root') + + console.log('└─ Changes applied successfully 🎉') +} + +/** + * Force stop the testing container + */ +export const stopNextcloud = async function() { + try { + const container = docker.getContainer(CONTAINER_NAME) + console.log('Stopping Nextcloud container...') + container.remove({ force: true }) + console.log('└─ Nextcloud container removed 🥀') + } catch (err) { + console.log(err) + } +} + +/** + * Get the testing container's IP + * + * @param {Docker.Container} container the container to get the IP from + */ +export const getContainerIP = async function( + container = docker.getContainer(CONTAINER_NAME) +): Promise<string> { + let ip = '' + let tries = 0 + while (ip === '' && tries < 10) { + tries++ + + await container.inspect(function(err, data) { + if (err) { + throw err + } + ip = data?.NetworkSettings?.IPAddress || '' + }) + + if (ip !== '') { + break + } + + await sleep(1000 * tries) + } + + return ip +} + +// Would be simpler to start the container from cypress.config.ts, +// but when checking out different branches, it can take a few seconds +// Until we can properly configure the baseUrl retry intervals, +// We need to make sure the server is already running before cypress +// https://github.com/cypress-io/cypress/issues/22676 +export const waitOnNextcloud = async function(ip: string) { + console.log('├─ Waiting for Nextcloud to be ready... ⏳') + await waitOn({ resources: [`http://${ip}/index.php`] }) + console.log('└─ Done') +} + +const runExec = async function( + container: Docker.Container, + command: string[], + verbose = false, + user = 'www-data' +) { + const exec = await container.exec({ + Cmd: command, + AttachStdout: true, + AttachStderr: true, + User: user, + }) + + return new Promise((resolve, reject) => { + exec.start({}, (err, stream) => { + if (err) { + reject(err) + } + if (stream) { + stream.setEncoding('utf-8') + stream.on('data', str => { + if (verbose && str.trim() !== '') { + console.log(`├─ ${str.trim().replace(/\n/gi, '\n├─ ')}`) + } + }) + stream.on('end', resolve) + } + }) + }) +} + +const sleep = function(milliseconds: number) { + return new Promise((resolve) => setTimeout(resolve, milliseconds)) +} diff --git a/cypress/e2e/files.cy.ts b/cypress/e2e/files.cy.ts new file mode 100644 index 00000000000..7b3a4ff7a56 --- /dev/null +++ b/cypress/e2e/files.cy.ts @@ -0,0 +1,37 @@ +/** + * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +describe('Login with a new user and open the files app', function() { + before(function() { + cy.createRandomUser().then((user) => { + cy.login(user) + }) + }) + + after(function() { + cy.logout() + }) + + it('See the default file welcome.txt in the files list', function() { + cy.visit('/apps/files') + cy.get('.files-fileList tr').should('contain', 'welcome.txt') + }) +}) diff --git a/cypress/e2e/theming/user-background.cy.ts b/cypress/e2e/theming/user-background.cy.ts new file mode 100644 index 00000000000..aaa20134471 --- /dev/null +++ b/cypress/e2e/theming/user-background.cy.ts @@ -0,0 +1,164 @@ +/** + * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +import type { User } from '@nextcloud/cypress' + +const defaultPrimary = '#006aa3' +const defaultBackground = 'kamil-porembinski-clouds.jpg' + +const validateThemingCss = function(expectedPrimary = '#0082c9', expectedBackground = 'kamil-porembinski-clouds.jpg', bright = false) { + return cy.window().then((win) => { + const primary = getComputedStyle(win.document.body).getPropertyValue('--color-primary') + const background = getComputedStyle(win.document.body).getPropertyValue('--image-background') + const invertIfBright = getComputedStyle(win.document.body).getPropertyValue('--background-image-invert-if-bright') + + // Returning boolean for cy.waitUntil usage + return primary === expectedPrimary + && background.includes(expectedBackground) + && invertIfBright === (bright ? 'invert(100%)' : 'no') + }) +} + +describe('User default background settings', function() { + before(function() { + cy.createRandomUser().then((user: User) => { + cy.login(user) + }) + }) + + it('See the user background settings', function() { + cy.visit('/settings/user/theming') + cy.get('[data-user-theming-background-settings]').scrollIntoView().should('be.visible') + }) + + // Default cloud background is not rendered if admin theming background remains unchanged + it('Default cloud background is not rendered', function() { + cy.get(`[data-user-theming-background-shipped="${defaultBackground}"]`).should('not.exist') + }) + + it('Default is selected on new users', function() { + cy.get('[data-user-theming-background-default]').should('be.visible') + cy.get('[data-user-theming-background-default]').should('have.class', 'background--active') + }) +}) + +describe('User select shipped backgrounds', function() { + before(function() { + cy.createRandomUser().then((user: User) => { + cy.login(user) + }) + }) + + it('See the user background settings', function() { + cy.visit('/settings/user/theming') + cy.get('[data-user-theming-background-settings]').scrollIntoView().should('be.visible') + }) + + it('Select a shipped background', function() { + const background = 'anatoly-mikhaltsov-butterfly-wing-scale.jpg' + cy.intercept('*/apps/theming/background/shipped').as('setBackground') + + // Select background + cy.get(`[data-user-theming-background-shipped="${background}"]`).click() + + // Validate changed background and primary + cy.wait('@setBackground') + cy.waitUntil(() => validateThemingCss('#a53c17', background)) + }) + + it('Select a bright shipped background', function() { + const background = 'bernie-cetonia-aurata-take-off-composition.jpg' + cy.intercept('*/apps/theming/background/shipped').as('setBackground') + + // Select background + cy.get(`[data-user-theming-background-shipped="${background}"]`).click() + + // Validate changed background and primary + cy.wait('@setBackground') + cy.waitUntil(() => validateThemingCss('#56633d', background, true)) + }) + + it('Remove background', function() { + cy.intercept('*/apps/theming/background/custom').as('clearBackground') + + // Clear background + cy.get('[data-user-theming-background-clear]').click() + + // Validate clear background + cy.wait('@clearBackground') + cy.waitUntil(() => validateThemingCss('#56633d', '')) + }) +}) + +describe('User select a custom color', function() { + before(function() { + cy.createRandomUser().then((user: User) => { + cy.login(user) + }) + }) + + it('See the user background settings', function() { + cy.visit('/settings/user/theming') + cy.get('[data-user-theming-background-settings]').scrollIntoView().should('be.visible') + }) + + it('Select a custom color', function() { + cy.intercept('*/apps/theming/background/color').as('setColor') + + cy.get('[data-user-theming-background-color]').click() + cy.get('.color-picker__simple-color-circle:eq(3)').click() + + // Validate clear background + cy.wait('@setColor') + cy.waitUntil(() => cy.window().then((win) => { + const primary = getComputedStyle(win.document.body).getPropertyValue('--color-primary') + return primary !== defaultPrimary + })) + }) +}) + +describe('User select a custom background', function() { + const image = 'image.jpg' + before(function() { + cy.createRandomUser().then((user: User) => { + cy.uploadFile(user, image, 'image/jpeg') + cy.login(user) + }) + }) + + it('See the user background settings', function() { + cy.visit('/settings/user/theming') + cy.get('[data-user-theming-background-settings]').scrollIntoView().should('be.visible') + }) + + it('Select a custom background', function() { + cy.intercept('*/apps/theming/background/custom').as('setBackground') + + // Pick background + cy.get('[data-user-theming-background-custom]').click() + cy.get(`#picker-filestable tr[data-entryname="${image}"]`).click() + cy.get('#oc-dialog-filepicker-content ~ .oc-dialog-buttonrow button.primary').click() + + // Wait for background to be set + cy.wait('@setBackground') + cy.waitUntil(() => validateThemingCss('#4c0c04', 'apps/theming/background?v=')) + }) +}) diff --git a/cypress/fixtures/image.jpg b/cypress/fixtures/image.jpg Binary files differnew file mode 100644 index 00000000000..46dac8cc283 --- /dev/null +++ b/cypress/fixtures/image.jpg diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts new file mode 100644 index 00000000000..2b51f719452 --- /dev/null +++ b/cypress/support/commands.ts @@ -0,0 +1,86 @@ +/** + * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +/* eslint-disable node/no-unpublished-import */ +import axios from '@nextcloud/axios' +import { addCommands, type User} from '@nextcloud/cypress' +import { basename } from 'path' + +// Add custom commands +import 'cypress-wait-until' +addCommands() + +// Register this file's custom commands types +declare global { + // eslint-disable-next-line @typescript-eslint/no-namespace + namespace Cypress { + interface Chainable<Subject = any> { + uploadFile(user: User, fixture: string, mimeType: string, target ?: string): Cypress.Chainable<void> + } + } +} + +const url = (Cypress.config('baseUrl') || '').replace(/\/index.php\/?$/g, '') +Cypress.env('baseUrl', url) + +/** + * cy.uploadedFile - uploads a file from the fixtures folder + * TODO: standardise in @nextcloud/cypress + * + * @param {User} user the owner of the file, e.g. admin + * @param {string} fixture the fixture file name, e.g. image1.jpg + * @param {string} mimeType e.g. image/png + * @param {string} [target] the target of the file relative to the user root + */ +Cypress.Commands.add('uploadFile', (user, fixture, mimeType, target = `/${fixture}`) => { + cy.clearCookies() + const fileName = basename(target) + + // get fixture + return cy.fixture(fixture, 'base64').then(async file => { + // convert the base64 string to a blob + const blob = Cypress.Blob.base64StringToBlob(file, mimeType) + + // Process paths + const rootPath = `${Cypress.env('baseUrl')}/remote.php/dav/files/${encodeURIComponent(user.userId)}` + const filePath = target.split('/').map(encodeURIComponent).join('/') + try { + const file = new File([blob], fileName, { type: mimeType }) + await axios({ + url: `${rootPath}${filePath}`, + method: 'PUT', + data: file, + headers: { + 'Content-Type': mimeType, + }, + auth: { + username: user.userId, + password: user.password, + }, + }).then(response => { + cy.log(`Uploaded ${fixture} as ${fileName}`, response) + }) + } catch (error) { + cy.log('error', error) + throw new Error(`Unable to process fixture ${fixture}`) + } + }) +}) diff --git a/cypress/support/e2e.ts b/cypress/support/e2e.ts new file mode 100644 index 00000000000..ad3b70e8910 --- /dev/null +++ b/cypress/support/e2e.ts @@ -0,0 +1,22 @@ +/** + * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +import './commands'
\ No newline at end of file diff --git a/cypress/tsconfig.json b/cypress/tsconfig.json new file mode 100644 index 00000000000..7aeacf0778e --- /dev/null +++ b/cypress/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../tsconfig.json", + "include": ["./**/*.ts"], + "compilerOptions": { + "types": ["cypress", "dockerode", "cypress-wait-until"], + } +} diff --git a/dist/theming-admin-theming.js b/dist/theming-admin-theming.js index 4e6ea414fb2..9abdb467fdd 100644 --- a/dist/theming-admin-theming.js +++ b/dist/theming-admin-theming.js @@ -1,3 +1,3 @@ /*! For license information please see theming-admin-theming.js.LICENSE.txt */ -!function(){"use strict";var A,g={34475:function(A,g,C){var i=C(20144),l=C(16453),o=C(15961),E=C(4820),h=C(79753),e=["color","logo","background","logoheader","favicon","disable-user-theming"],n={emits:["update:theming"],data:function(){return{showSuccess:!1,errorMessage:""}},computed:{id:function(){return"admin-theming-".concat(this.name)}},methods:{reset:function(){this.showSuccess=!1,this.errorMessage=""},handleSuccess:function(){var A=this;this.showSuccess=!0,setTimeout((function(){A.showSuccess=!1}),2e3),e.includes(this.name)&&this.$emit("update:theming")}}};function s(A,g,C,i,l,o,E){try{var h=A[o](E),e=h.value}catch(A){return void C(A)}h.done?g(e):Promise.resolve(e).then(i,l)}function K(A){return function(){var g=this,C=arguments;return new Promise((function(i,l){var o=A.apply(g,C);function E(A){s(o,i,l,E,h,"next",A)}function h(A){s(o,i,l,E,h,"throw",A)}E(void 0)}))}}var S={mixins:[n],watch:{value:function(A){this.localValue=A}},data:function(){return{localValue:this.value}},methods:{save:function(){var A=this;return K(regeneratorRuntime.mark((function g(){var C,i,l;return regeneratorRuntime.wrap((function(g){for(;;)switch(g.prev=g.next){case 0:return A.reset(),C=(0,h.generateUrl)("/apps/theming/ajax/updateStylesheet"),i=!0===A.localValue?"yes":!1===A.localValue?"no":A.localValue,g.prev=3,g.next=6,E.default.post(C,{setting:A.name,value:i});case 6:A.$emit("update:value",A.localValue),A.handleSuccess(),g.next=13;break;case 10:g.prev=10,g.t0=g.catch(3),A.errorMessage=null===(l=g.t0.response.data.data)||void 0===l?void 0:l.message;case 13:case"end":return g.stop()}}),g,null,[[3,10]])})))()},undo:function(){var A=this;return K(regeneratorRuntime.mark((function g(){var C,i;return regeneratorRuntime.wrap((function(g){for(;;)switch(g.prev=g.next){case 0:return A.reset(),C=(0,h.generateUrl)("/apps/theming/ajax/undoChanges"),g.prev=2,g.next=5,E.default.post(C,{setting:A.name});case 5:A.$emit("update:value",A.defaultValue),A.handleSuccess(),g.next=12;break;case 9:g.prev=9,g.t0=g.catch(2),A.errorMessage=null===(i=g.t0.response.data.data)||void 0===i?void 0:i.message;case 12:case"end":return g.stop()}}),g,null,[[2,9]])})))()}}},U={name:"CheckboxField",components:{NcCheckboxRadioSwitch:o.rw,NcNoteCard:o.qf},mixins:[S],props:{name:{type:String,required:!0},value:{type:Boolean,required:!0},defaultValue:{type:Boolean,required:!0},displayName:{type:String,required:!0},label:{type:String,required:!0},description:{type:String,required:!0}}},Q=C(93379),L=C.n(Q),a=C(7795),p=C.n(a),F=C(90569),r=C.n(F),R=C(3565),I=C.n(R),w=C(19216),m=C.n(w),J=C(44589),x=C.n(J),N=C(57631),u={};u.styleTagTransform=x(),u.setAttributes=I(),u.insert=r().bind(null,"head"),u.domAPI=p(),u.insertStyleElement=m(),L()(N.Z,u),N.Z&&N.Z.locals&&N.Z.locals;var W=C(51900),Y=(0,W.Z)(U,(function(){var A=this,g=A.$createElement,C=A._self._c||g;return C("div",{staticClass:"field"},[C("label",{attrs:{for:A.id}},[A._v(A._s(A.displayName))]),A._v(" "),C("div",{staticClass:"field__row"},[C("NcCheckboxRadioSwitch",{attrs:{type:"switch",id:A.id,checked:A.localValue},on:{"update:checked":[function(g){A.localValue=g},A.save]}},[A._v("\n\t\t\t"+A._s(A.label)+"\n\t\t")])],1),A._v(" "),C("p",{staticClass:"field__description"},[A._v(A._s(A.description))]),A._v(" "),A.errorMessage?C("NcNoteCard",{attrs:{type:"error","show-alert":!0}},[C("p",[A._v(A._s(A.errorMessage))])]):A._e()],1)}),[],!1,null,"17145f08",null).exports,X=C(20296),c=C(45923);function T(A,g,C,i,l,o,E){try{var h=A[o](E),e=h.value}catch(A){return void C(A)}h.done?g(e):Promise.resolve(e).then(i,l)}function f(A){return function(){var g=this,C=arguments;return new Promise((function(i,l){var o=A.apply(g,C);function E(A){T(o,i,l,E,h,"next",A)}function h(A){T(o,i,l,E,h,"throw",A)}E(void 0)}))}}var y={name:"ColorPickerField",components:{NcButton:o.P2,NcColorPicker:o.m,NcNoteCard:o.qf,Undo:c.default},mixins:[S],props:{name:{type:String,required:!0},value:{type:String,required:!0},defaultValue:{type:String,required:!0},displayName:{type:String,required:!0}},methods:{debounceSave:(0,X.debounce)(f(regeneratorRuntime.mark((function A(){return regeneratorRuntime.wrap((function(A){for(;;)switch(A.prev=A.next){case 0:return A.next=2,this.save();case 2:case"end":return A.stop()}}),A,this)}))),200)}},M=C(41910),G={};G.styleTagTransform=x(),G.setAttributes=I(),G.insert=r().bind(null,"head"),G.domAPI=p(),G.insertStyleElement=m(),L()(M.Z,G),M.Z&&M.Z.locals&&M.Z.locals;var B=(0,W.Z)(y,(function(){var A=this,g=A.$createElement,C=A._self._c||g;return C("div",{staticClass:"field"},[C("label",{attrs:{for:A.id}},[A._v(A._s(A.displayName))]),A._v(" "),C("div",{staticClass:"field__row"},[C("NcColorPicker",{attrs:{value:A.localValue,"advanced-fields":!0},on:{"update:value":[function(g){A.localValue=g},A.debounceSave]}},[C("NcButton",{staticClass:"field__button",attrs:{type:"primary",id:A.id,"aria-label":A.t("theming","Select a custom color")}},[A._v("\n\t\t\t\t"+A._s(A.value)+"\n\t\t\t")])],1),A._v(" "),A.value!==A.defaultValue?C("NcButton",{attrs:{type:"tertiary","aria-label":A.t("theming","Reset to default")},on:{click:A.undo},scopedSlots:A._u([{key:"icon",fn:function(){return[C("Undo",{attrs:{size:20}})]},proxy:!0}],null,!1,33666776)}):A._e()],1),A._v(" "),A.errorMessage?C("NcNoteCard",{attrs:{type:"error","show-alert":!0}},[C("p",[A._v(A._s(A.errorMessage))])]):A._e()],1)}),[],!1,null,"6b238a3e",null).exports,v=C(33691),Z=C(75843);function j(A,g,C,i,l,o,E){try{var h=A[o](E),e=h.value}catch(A){return void C(A)}h.done?g(e):Promise.resolve(e).then(i,l)}function P(A){return function(){var g=this,C=arguments;return new Promise((function(i,l){var o=A.apply(g,C);function E(A){j(o,i,l,E,h,"next",A)}function h(A){j(o,i,l,E,h,"throw",A)}E(void 0)}))}}var V={name:"FileInputField",components:{Delete:v.Z,NcButton:o.P2,NcLoadingIcon:o.lb,NcNoteCard:o.qf,Undo:c.default,Upload:Z.Z},mixins:[n],props:{name:{type:String,required:!0},mimeName:{type:String,required:!0},mimeValue:{type:String,required:!0},defaultMimeValue:{type:String,required:!0},displayName:{type:String,required:!0},ariaLabel:{type:String,required:!0}},data:function(){return{showLoading:!1}},computed:{showReset:function(){return this.mimeValue!==this.defaultMimeValue},showRemove:function(){if("background"===this.name){if(this.mimeValue.startsWith("image/"))return!0;if(this.mimeValue===this.defaultMimeValue)return!0}return!1}},methods:{activateLocalFilePicker:function(){this.reset(),this.$refs.input.value=null,this.$refs.input.click()},onChange:function(A){var g=this;return P(regeneratorRuntime.mark((function C(){var i,l,o,e;return regeneratorRuntime.wrap((function(C){for(;;)switch(C.prev=C.next){case 0:return i=A.target.files[0],(l=new FormData).append("key",g.name),l.append("image",i),o=(0,h.generateUrl)("/apps/theming/ajax/uploadImage"),C.prev=5,g.showLoading=!0,C.next=9,E.default.post(o,l);case 9:g.showLoading=!1,g.$emit("update:mime-value",i.type),g.handleSuccess(),C.next=18;break;case 14:C.prev=14,C.t0=C.catch(5),g.showLoading=!1,g.errorMessage=null===(e=C.t0.response.data.data)||void 0===e?void 0:e.message;case 18:case"end":return C.stop()}}),C,null,[[5,14]])})))()},undo:function(){var A=this;return P(regeneratorRuntime.mark((function g(){var C,i;return regeneratorRuntime.wrap((function(g){for(;;)switch(g.prev=g.next){case 0:return A.reset(),C=(0,h.generateUrl)("/apps/theming/ajax/undoChanges"),g.prev=2,g.next=5,E.default.post(C,{setting:A.mimeName});case 5:A.$emit("update:mime-value",A.defaultMimeValue),A.handleSuccess(),g.next=12;break;case 9:g.prev=9,g.t0=g.catch(2),A.errorMessage=null===(i=g.t0.response.data.data)||void 0===i?void 0:i.message;case 12:case"end":return g.stop()}}),g,null,[[2,9]])})))()},removeBackground:function(){var A=this;return P(regeneratorRuntime.mark((function g(){var C,i;return regeneratorRuntime.wrap((function(g){for(;;)switch(g.prev=g.next){case 0:return A.reset(),C=(0,h.generateUrl)("/apps/theming/ajax/updateStylesheet"),g.prev=2,g.next=5,E.default.post(C,{setting:A.mimeName,value:"backgroundColor"});case 5:A.$emit("update:mime-value","backgroundColor"),A.handleSuccess(),g.next=12;break;case 9:g.prev=9,g.t0=g.catch(2),A.errorMessage=null===(i=g.t0.response.data.data)||void 0===i?void 0:i.message;case 12:case"end":return g.stop()}}),g,null,[[2,9]])})))()}}},d=V,b=C(2572),k={};k.styleTagTransform=x(),k.setAttributes=I(),k.insert=r().bind(null,"head"),k.domAPI=p(),k.insertStyleElement=m(),L()(b.Z,k),b.Z&&b.Z.locals&&b.Z.locals;var q=(0,W.Z)(d,(function(){var A=this,g=A.$createElement,C=A._self._c||g;return C("div",{staticClass:"field"},[C("label",{attrs:{for:A.id}},[A._v(A._s(A.displayName))]),A._v(" "),C("div",{staticClass:"field__row"},[C("NcButton",{attrs:{type:"secondary",id:A.id,"aria-label":A.ariaLabel},on:{click:A.activateLocalFilePicker},scopedSlots:A._u([{key:"icon",fn:function(){return[C("Upload",{attrs:{size:20}})]},proxy:!0}])},[A._v("\n\t\t\t"+A._s(A.t("theming","Upload"))+"\n\t\t")]),A._v(" "),A.showReset?C("NcButton",{attrs:{type:"tertiary","aria-label":A.t("theming","Reset to default")},on:{click:A.undo},scopedSlots:A._u([{key:"icon",fn:function(){return[C("Undo",{attrs:{size:20}})]},proxy:!0}],null,!1,33666776)}):A._e(),A._v(" "),A.showRemove?C("NcButton",{attrs:{type:"tertiary","aria-label":A.t("theming","Remove background image")},on:{click:A.removeBackground},scopedSlots:A._u([{key:"icon",fn:function(){return[C("Delete",{attrs:{size:20}})]},proxy:!0}],null,!1,2705356561)}):A._e(),A._v(" "),A.showLoading?C("NcLoadingIcon",{staticClass:"field__loading-icon",attrs:{size:20}}):A._e()],1),A._v(" "),"logoheader"!==A.name&&"favicon"!==A.name||A.mimeValue===A.defaultMimeValue?A._e():C("div",{staticClass:"field__preview",class:{"field__preview--logoheader":"logoheader"===A.name,"field__preview--favicon":"favicon"===A.name}}),A._v(" "),A.errorMessage?C("NcNoteCard",{attrs:{type:"error","show-alert":!0}},[C("p",[A._v(A._s(A.errorMessage))])]):A._e(),A._v(" "),C("input",{ref:"input",attrs:{type:"file"},on:{change:A.onChange}})],1)}),[],!1,null,"137dd337",null).exports,D={name:"TextField",components:{NcTextField:o.h3},mixins:[S],props:{name:{type:String,required:!0},value:{type:String,required:!0},defaultValue:{type:String,required:!0},type:{type:String,required:!0},displayName:{type:String,required:!0},placeholder:{type:String,required:!0},maxlength:{type:Number,required:!0}}},z=C(91967),H={};H.styleTagTransform=x(),H.setAttributes=I(),H.insert=r().bind(null,"head"),H.domAPI=p(),H.insertStyleElement=m(),L()(z.Z,H),z.Z&&z.Z.locals&&z.Z.locals;var O=(0,W.Z)(D,(function(){var A=this,g=A.$createElement,C=A._self._c||g;return C("div",{staticClass:"field"},[C("NcTextField",{attrs:{value:A.localValue,label:A.displayName,"label-visible":!0,placeholder:A.placeholder,type:A.type,maxlength:A.maxlength,spellcheck:!1,success:A.showSuccess,error:Boolean(A.errorMessage),"helper-text":A.errorMessage,"show-trailing-button":A.value!==A.defaultValue,"trailing-button-icon":"undo"},on:{"update:value":function(g){A.localValue=g},"trailing-button-click":A.undo,keydown:function(g){return!g.type.indexOf("key")&&A._k(g.keyCode,"enter",13,g.key,"Enter")?null:A.save.apply(null,arguments)},blur:A.save}})],1)}),[],!1,null,"21244e1d",null),_=O.exports,$=(0,l.loadState)("theming","adminThemingParameters"),AA=$.backgroundMime,gA=$.canThemeIcons,CA=$.color,iA=$.docUrl,lA=$.docUrlIcons,oA=$.faviconMime,EA=$.isThemable,hA=$.legalNoticeUrl,eA=$.logoheaderMime,nA=$.logoMime,sA=$.name,KA=$.notThemableErrorMessage,SA=$.privacyPolicyUrl,UA=$.slogan,QA=$.url,LA=$.userThemingDisabled,aA=[{name:"name",value:sA,defaultValue:"Nextcloud",type:"text",displayName:t("theming","Name"),placeholder:t("theming","Name"),maxlength:250},{name:"url",value:QA,defaultValue:"https://nextcloud.com",type:"url",displayName:t("theming","Web link"),placeholder:"https://…",maxlength:500},{name:"slogan",value:UA,defaultValue:t("theming","a safe home for all your data"),type:"text",displayName:t("theming","Slogan"),placeholder:t("theming","Slogan"),maxlength:500}],pA={name:"color",value:CA,defaultValue:"#0082c9",displayName:t("theming","Color")},FA=[{name:"logo",mimeName:"logoMime",mimeValue:nA,defaultMimeValue:"",displayName:t("theming","Logo"),ariaLabel:t("theming","Upload new logo")},{name:"background",mimeName:"backgroundMime",mimeValue:AA,defaultMimeValue:"",displayName:t("theming","Background and login image"),ariaLabel:t("theming","Upload new background and login image")}],rA=[{name:"imprintUrl",value:hA,defaultValue:"",type:"url",displayName:t("theming","Legal notice link"),placeholder:"https://…",maxlength:500},{name:"privacyUrl",value:SA,defaultValue:"",type:"url",displayName:t("theming","Privacy policy link"),placeholder:"https://…",maxlength:500}],RA=[{name:"logoheader",mimeName:"logoheaderMime",mimeValue:eA,defaultMimeValue:"",displayName:t("theming","Header logo"),ariaLabel:t("theming","Upload new header logo")},{name:"favicon",mimeName:"faviconMime",mimeValue:oA,defaultMimeValue:"",displayName:t("theming","Favicon"),ariaLabel:t("theming","Upload new favicon")}],IA={name:"disable-user-theming",value:LA,defaultValue:!1,displayName:t("theming","User settings"),label:t("theming","Disable user theming"),description:t("theming","Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on.")},tA={name:"AdminTheming",components:{CheckboxField:Y,ColorPickerField:B,FileInputField:q,NcNoteCard:o.qf,NcSettingsSection:o.gE,TextField:_},emits:["update:theming"],data:function(){return{textFields:aA,colorPickerField:pA,fileInputFields:FA,advancedTextFields:rA,advancedFileInputFields:RA,userThemingField:IA,canThemeIcons:gA,docUrl:iA,docUrlIcons:lA,isThemable:EA,notThemableErrorMessage:KA}}},wA=C(61834),mA={};mA.styleTagTransform=x(),mA.setAttributes=I(),mA.insert=r().bind(null,"head"),mA.domAPI=p(),mA.insertStyleElement=m(),L()(wA.Z,mA),wA.Z&&wA.Z.locals&&wA.Z.locals;var JA=(0,W.Z)(tA,(function(){var A=this,g=A.$createElement,C=A._self._c||g;return C("section",[C("NcSettingsSection",{attrs:{title:A.t("theming","Theming"),description:A.t("theming","Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users."),"doc-url":A.docUrl}},[C("div",{staticClass:"admin-theming"},[A.isThemable?A._e():C("NcNoteCard",{attrs:{type:"error","show-alert":!0}},[C("p",[A._v(A._s(A.notThemableErrorMessage))])]),A._v(" "),A._l(A.textFields,(function(g){return C("TextField",{key:g.name,attrs:{name:g.name,value:g.value,"default-value":g.defaultValue,type:g.type,"display-name":g.displayName,placeholder:g.placeholder,maxlength:g.maxlength},on:{"update:value":function(C){return A.$set(g,"value",C)},"update:theming":function(g){return A.$emit("update:theming")}}})})),A._v(" "),C("ColorPickerField",{attrs:{name:A.colorPickerField.name,value:A.colorPickerField.value,"default-value":A.colorPickerField.defaultValue,"display-name":A.colorPickerField.displayName},on:{"update:value":function(g){return A.$set(A.colorPickerField,"value",g)},"update:theming":function(g){return A.$emit("update:theming")}}}),A._v(" "),A._l(A.fileInputFields,(function(g){return C("FileInputField",{key:g.name,attrs:{name:g.name,"mime-name":g.mimeName,"mime-value":g.mimeValue,"default-mime-value":g.defaultMimeValue,"display-name":g.displayName,"aria-label":g.ariaLabel},on:{"update:mimeValue":function(C){return A.$set(g,"mimeValue",C)},"update:mime-value":function(C){return A.$set(g,"mimeValue",C)},"update:theming":function(g){return A.$emit("update:theming")}}})})),A._v(" "),C("div",{staticClass:"admin-theming__preview"},[C("div",{staticClass:"admin-theming__preview-logo"})])],2)]),A._v(" "),C("NcSettingsSection",{attrs:{title:A.t("theming","Advanced options")}},[C("div",{staticClass:"admin-theming-advanced"},[A._l(A.advancedTextFields,(function(g){return C("TextField",{key:g.name,attrs:{name:g.name,value:g.value,"default-value":g.defaultValue,type:g.type,"display-name":g.displayName,placeholder:g.placeholder,maxlength:g.maxlength},on:{"update:value":function(C){return A.$set(g,"value",C)},"update:theming":function(g){return A.$emit("update:theming")}}})})),A._v(" "),A._l(A.advancedFileInputFields,(function(g){return C("FileInputField",{key:g.name,attrs:{name:g.name,"mime-name":g.mimeName,"mime-value":g.mimeValue,"default-mime-value":g.defaultMimeValue,"display-name":g.displayName,"aria-label":g.ariaLabel},on:{"update:mimeValue":function(C){return A.$set(g,"mimeValue",C)},"update:mime-value":function(C){return A.$set(g,"mimeValue",C)},"update:theming":function(g){return A.$emit("update:theming")}}})})),A._v(" "),C("CheckboxField",{attrs:{name:A.userThemingField.name,value:A.userThemingField.value,"default-value":A.userThemingField.defaultValue,"display-name":A.userThemingField.displayName,label:A.userThemingField.label,description:A.userThemingField.description},on:{"update:theming":function(g){return A.$emit("update:theming")}}}),A._v(" "),A.canThemeIcons?A._e():C("a",{attrs:{href:A.docUrlIcons,rel:"noreferrer noopener"}},[C("em",[A._v(A._s(A.t("theming","Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color.")))])])],2)])],1)}),[],!1,null,"5557ff20",null).exports;function xA(A,g){(null==g||g>A.length)&&(g=A.length);for(var C=0,i=new Array(g);C<g;C++)i[C]=A[C];return i}i.ZP.prototype.OC=OC,i.ZP.prototype.t=t;var NA=new(i.ZP.extend(JA));NA.$mount("#admin-theming"),NA.$on("update:theming",(function(){var A;(A=document.head.querySelectorAll("link.theme"),function(A){if(Array.isArray(A))return xA(A)}(A)||function(A){if("undefined"!=typeof Symbol&&null!=A[Symbol.iterator]||null!=A["@@iterator"])return Array.from(A)}(A)||function(A,g){if(A){if("string"==typeof A)return xA(A,g);var C=Object.prototype.toString.call(A).slice(8,-1);return"Object"===C&&A.constructor&&(C=A.constructor.name),"Map"===C||"Set"===C?Array.from(A):"Arguments"===C||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(C)?xA(A,g):void 0}}(A)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).forEach((function(A){var g=new URL(A.href);g.searchParams.set("v",Date.now());var C=A.cloneNode();C.href=g.toString(),C.onload=function(){return A.remove()},document.head.append(C)}))}))},61834:function(A,g,C){var i=C(87537),l=C.n(i),o=C(23645),E=C.n(o),h=C(61667),e=C.n(h),n=new URL(C(64946),C.b),s=new URL(C(92770),C.b),K=E()(l()),S=e()(n),U=e()(s);K.push([A.id,".admin-theming[data-v-5557ff20],.admin-theming-advanced[data-v-5557ff20]{display:flex;flex-direction:column;gap:8px 0}.admin-theming__preview[data-v-5557ff20]{width:230px;height:140px;background-size:cover;background-position:center;text-align:center;margin-top:10px;background-color:var(--color-primary-default);background-image:var(--image-background-default, var(--image-background-plain, url("+S+"), linear-gradient(40deg, #0082c9 0%, #30b6ff 100%)))}.admin-theming__preview-logo[data-v-5557ff20]{width:20%;height:20%;margin-top:20px;display:inline-block;background-size:contain;background-position:center;background-repeat:no-repeat;background-image:var(--image-logo, url("+U+"))}","",{version:3,sources:["webpack://./apps/theming/src/AdminTheming.vue"],names:[],mappings:"AAgRA,yEAEC,YAAA,CACA,qBAAA,CACA,SAAA,CAIA,yCACC,WAAA,CACA,YAAA,CACA,qBAAA,CACA,0BAAA,CACA,iBAAA,CACA,eAAA,CACA,6CAAA,CACA,0KAAA,CAEA,8CACC,SAAA,CACA,UAAA,CACA,eAAA,CACA,oBAAA,CACA,uBAAA,CACA,0BAAA,CACA,2BAAA,CACA,2EAAA",sourcesContent:["\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\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\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\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\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\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\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\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\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.admin-theming,\n.admin-theming-advanced {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n}\n\n.admin-theming {\n\t&__preview {\n\t\twidth: 230px;\n\t\theight: 140px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center;\n\t\ttext-align: center;\n\t\tmargin-top: 10px;\n\t\tbackground-color: var(--color-primary-default);\n\t\tbackground-image: var(--image-background-default, var(--image-background-plain, url('../../../core/img/app-background.jpg'), linear-gradient(40deg, #0082c9 0%, #30b6ff 100%)));\n\n\t\t&-logo {\n\t\t\twidth: 20%;\n\t\t\theight: 20%;\n\t\t\tmargin-top: 20px;\n\t\t\tdisplay: inline-block;\n\t\t\tbackground-size: contain;\n\t\t\tbackground-position: center;\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-image: var(--image-logo, url('../../../core/img/logo/logo.svg'));\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),g.Z=K},57631:function(A,g,C){var i=C(87537),l=C.n(i),o=C(23645),E=C.n(o)()(l());E.push([A.id,".field[data-v-17145f08]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-17145f08]{display:flex;gap:0 4px}.field__description[data-v-17145f08]{color:var(--color-text-maxcontrast)}","",{version:3,sources:["webpack://./apps/theming/src/components/admin/shared/field.scss","webpack://./apps/theming/src/components/admin/CheckboxField.vue"],names:[],mappings:"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCoED,qCACC,mCAAA",sourcesContent:["/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n.field {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px 0;\n\n\t&__row {\n\t\tdisplay: flex;\n\t\tgap: 0 4px;\n\t}\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\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\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\n\n\n\n\n\n\n\n\n\n\n\n@import './shared/field.scss';\n\n.field {\n\t&__description {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]),g.Z=E},41910:function(A,g,C){var i=C(87537),l=C.n(i),o=C(23645),E=C.n(o)()(l());E.push([A.id,".field[data-v-6b238a3e]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-6b238a3e]{display:flex;gap:0 4px}.field__button[data-v-6b238a3e]{width:230px !important;border-radius:var(--border-radius-large) !important;background-color:var(--color-primary-default) !important}.field__button[data-v-6b238a3e]:hover{background-color:var(--color-primary-element-default-hover) !important}","",{version:3,sources:["webpack://./apps/theming/src/components/admin/shared/field.scss","webpack://./apps/theming/src/components/admin/ColorPickerField.vue"],names:[],mappings:"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCkFD,gCACC,sBAAA,CACA,mDAAA,CACA,wDAAA,CACA,sCACC,sEAAA",sourcesContent:["/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n.field {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px 0;\n\n\t&__row {\n\t\tdisplay: flex;\n\t\tgap: 0 4px;\n\t}\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\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\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\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@import './shared/field.scss';\n\n.field {\n\t// Override default NcButton styles\n\t&__button {\n\t\twidth: 230px !important;\n\t\tborder-radius: var(--border-radius-large) !important;\n\t\tbackground-color: var(--color-primary-default) !important;\n\t\t&:hover {\n\t\t\tbackground-color: var(--color-primary-element-default-hover) !important;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),g.Z=E},2572:function(A,g,C){var i=C(87537),l=C.n(i),o=C(23645),E=C.n(o)()(l());E.push([A.id,".field[data-v-137dd337]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-137dd337]{display:flex;gap:0 4px}.field__loading-icon[data-v-137dd337]{width:44px;height:44px}.field__preview[data-v-137dd337]{width:70px;height:70px;background-size:contain;background-position:center;background-repeat:no-repeat;margin:10px 0}.field__preview--logoheader[data-v-137dd337]{background-image:var(--image-logoheader)}.field__preview--favicon[data-v-137dd337]{background-image:var(--image-favicon)}input[type=file][data-v-137dd337]{display:none}","",{version:3,sources:["webpack://./apps/theming/src/components/admin/shared/field.scss","webpack://./apps/theming/src/components/admin/FileInputField.vue"],names:[],mappings:"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCgMD,sCACC,UAAA,CACA,WAAA,CAGD,iCACC,UAAA,CACA,WAAA,CACA,uBAAA,CACA,0BAAA,CACA,2BAAA,CACA,aAAA,CAEA,6CACC,wCAAA,CAGD,0CACC,qCAAA,CAKH,kCACC,YAAA",sourcesContent:["/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n.field {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px 0;\n\n\t&__row {\n\t\tdisplay: flex;\n\t\tgap: 0 4px;\n\t}\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\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\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\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\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\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\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@import './shared/field.scss';\n\n.field {\n\t&__loading-icon {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t}\n\n\t&__preview {\n\t\twidth: 70px;\n\t\theight: 70px;\n\t\tbackground-size: contain;\n\t\tbackground-position: center;\n\t\tbackground-repeat: no-repeat;\n\t\tmargin: 10px 0;\n\n\t\t&--logoheader {\n\t\t\tbackground-image: var(--image-logoheader);\n\t\t}\n\n\t\t&--favicon {\n\t\t\tbackground-image: var(--image-favicon);\n\t\t}\n\t}\n}\n\ninput[type=\"file\"] {\n\tdisplay: none;\n}\n"],sourceRoot:""}]),g.Z=E},91967:function(A,g,C){var i=C(87537),l=C.n(i),o=C(23645),E=C.n(o)()(l());E.push([A.id,".field[data-v-21244e1d]{max-width:400px}","",{version:3,sources:["webpack://./apps/theming/src/components/admin/TextField.vue"],names:[],mappings:"AA4FA,wBACC,eAAA",sourcesContent:["\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\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\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\n\n\n\n\n\n\n\n.field {\n\tmax-width: 400px;\n}\n"],sourceRoot:""}]),g.Z=E},64946:function(A){A.exports="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEA8ADwAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEPERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wgARCAn2DwADASIAAhEBAxEB/8QAGwABAQEBAAMBAAAAAAAAAAAAAAECAwQFBgf/xAAaAQEBAQEBAQEAAAAAAAAAAAAAAQIEAwUG/9oADAMBAAIQAxAAAAH1A/W/hgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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KxsuKUpSlwy4o2UuLmly2XLe77xdWPP/2gAMAwEAAgADAAAAEAgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggiDSPsgH7ywgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghpVesvdJnW6CwgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghB8EUTriG3i4gAwgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggsmsxFfbNKRy2bhQggggggggCTiAggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggmYk3xGM2vyXnDbIwx6Agggksc5aSwQwggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggkc0UtlBJOUHt1/nRdJQRgwhUgAau/Au7wgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggiB9CQQ5IAxtUEsTbkguUZZg01tyX4YZXas3gt5YzQ7gwgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggyRCSv53RRAgggggggggggggggggggggggggggggggggggggggggzRQr5V7BsXaXfl1oE0TNz42+wZ46RIhfM6h+gRHVQ+EUX5gowgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggxRiyN4CwwggggwwhyiAgwgDDQlDRqERJ2ugCQggggggggggggggggggggggggggggggggggggggh6tR6svQfSlN6WcF87goWQJs5+qS1bYWdbE9aY8YapmZJXLGCwwgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghwGwrj/V+q35Jsm811vUARRi72XAQVp037XlKe4AgggggggggggggggggggggggggggggggggggwSFrjWcSP6Sosi4cCHrwg47dggiA0NVv7Zy/EMBeyNARjvIEzoJ6gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggs+yvI0rxFegbxma+OzKvc6nUUqkfLQ0i2axukQcCQgggggggggggggggggggggggggggggggg00kKN1mUoYfIchUJhtj4vKqviyTvogkneYsUWTAKYtVqtpz0gc6fvYwggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggjw277+EL1KXd0IlMzbTfvsTW3LWfPB+0Th6vII7R2fCAgggggggggggggggggggggggggggggg5atqAhpNOzScUaLDCKG52dMNCgylIzChi1bcimvYEvSqujqEDfu0EepAgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggiW5LEqu3nTz1Au9DUKh1Sfll3K6k7jgYWnTShTz3bTWeAggggggggggggggggggggggggggglmapLAvzOf52TIdOCdEQQRQt59PKx1BPAPvCAQl8lJmgUshAHhXL2G7SeoQggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggkCKZntP1mEBEa9AYw3MiTtwaEN5/CEEunnWr/HKW8Ucgl6LgggggggggggggggggggggggggZwaHX/AOCm9hm5GnekHDxUUEVeo4oEcoJ0wDuW87T73yL/AB2OBCupuyhGYJk6LDCCCCCDOCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCHQoCOACCDFLCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDnmnibUG7zEefhoVt+7MaW7M/I/8b0BVtGe4XbdqTKl4HhHTCCCCCCCCCCCCCCCCCCCCA2RU4wBz0CHxaDQZtujGRrMhkn404GbzwnTM8dRzEbYFBynqY0xSmiixpophDOhuQBVwSUoR3XPBECCCCCCCCCCCCCCCCHLHDICCCCCCCCCRbFeHwILEFAu3OBn9cJDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCSOejLWWTXjsbhlNcSVz1/fndDdOwb2L5KIcQNsmGfUqH1ttJICCCCCCCCCCCCCCCCCCFvHEOr8p0Gl67UuKuS6f1FWJt9Cik/rCGjhONGdgQx70BDr995WEA+VwVabszft8fFH4m33FwSV4xZ8kCCCCCCCCCCCCDM9ScmOLjCCCCCDjlNhpdPGdDRwxI0IrxOPvoCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCGV1Mi5rfUyeow7y9IVKlvr3B0OfRFjjpk57zuN1xlxRyABCWxlCICCCCCHFPLCCCCMDxnNZ4ZQv/AJpQrtpDRsXuLKPMfY+OZVqgnetHQekUY3G0dLq/efKToDpux0m3Aw0l0o7ePRU6f2ZiU0mbJQgggggggggg+MC9EJiiQqDgggnWs4GJJZI0VUMdWVS2kXDdWjwggggggggggggggggggggggggggggggggggggggggggzl4hwXZLGvLKLTQY63YODGn0E/x4sE2kOUHsrtjgSLHfq1IAi1d1SAz2cA3O6wggiRX7APRsJ3AZuqYwcWXn4qxxvdelgSIFtd6Y1BIBvoQSkiFPf3eX1eBNQ4+SczzaFDPNUbmvXfrLgggJitajKCwgggggggjhXclSESUgeowzlVubE0xuAa+oFTte7TXtrCXO0ohCwgggggggggggggggggggggggghxxiTSACAggggglxOUozEHtV6xWfMd27z1RwDcEmpT4szbt/IsmMiRENLwGHhgStoUfY3V5csTPYO0ACNhuK9Zmhwayx4iPsKy2Gpgq9YL06pRTUNSPZiwVlgshbu3FffZ/VSkc31DHH/YN4bnWdQkxws1qsYCQMDlHrJggggggggwsUeixQRwoNFK6BOXorDFbbXokUst7OraUu+mXHNuW4hgQgggggggggggggggggggiulcErBLWoQA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gggggglwggggls085wggggnflJCN0pOJBrDGMnOrHGj0lAQV8QAAAAAAAGct6UGJfvPwhzyZQKYurbbAAp14VFL21uY2sbWpFFvXdax1cOqrU6xhBUsPSEIZkAABDDPPPMfLDAAAAAAFLr36wAAAAAFAAAAPwG/T+dYGG6IkAAAAAAAAAAEgaCHrGQyggggggkohiggjhihqzoM3wwIgAFZwQwvYo3Qq5P5ggg16oggggoxwixzwggksygjykigggijz8/c8x3vrMz25zzwm+0O8wgiimyVqAAAAAAAAH9AYIHhcy9vmPvnIXrxgdenBTQUTiAWZvmxjvXgkkSzUAhYdFlRAF4PQ8V+LfRP4BHPOMcceKA2dfKAAHPCAAAFNwzQAAHYBLAACwFLd8/aBuI/hhQQAAAAAAAMRfucdKIwgggggggghmhgTYw4qwiB1IgyAAADkTpeRx6Qkogrw46kiy26ggggowggsghzzwwiwswgggggjHPrvvuNPrLPogh2x4gggglwwgqXqAAAAAAABCBRSSQAT6www6EikVS/QWxoomRAB3SUkQAlcepyZmfhcrle4+jOfSvrJhUs+uYkDPOKQwggs4w0VcLCGCfLAAAAADgsgVwAPPKAA6FPffT4Fww/gbogQAAAAAAFUKwFOakORiggggggigiwoDEApwht3zEAgAALwd/w+whjiFTULg6hiqgpwgggggggggggososz77wgggggsMMMIAgtPvsDDAt9wggigkojYUf6rwACg4hmf2iAAIQeayEG04WaMXLQcGgRG0BDxVSBgQWiIoUMom1dnj9zMsoQBiKyhEQyinPOKYxghgggggk8ePVcQh/LDAAAIoAAAAHPPIAAKwNffbB7BkMD6wggQAAABCVWK1JJ7ffPXLQhjjTDapZ2MfiUmNi8WRAwAAO0UYsogkjBZqM8cCr2wgmwggggghigggggggggstzzzwghywgggggsdOFM1rCNwhlQQggwQUcIWNWcMNHPZjKBB0RDY3fjNNxnui1aghgOSQTEhGoQQQREgeQXVRt03DVogmQaAGsYeksLq2E4jmrtsgggsrCkwwggggl/PLAAAAAAABPPIAAALwAPaHuVVmPt6gggAAAAHUheIpAoCMccfPPSfPJvqqtin/o3RvQmiRQAQE7SI8858gn1VBbHo934ggqgggggmKNCgggggggggggggo84kssowzyk28ihPvqExqaLwkoQQQQR88tMOtsAAoglHdoTZep87ArUZquAh+hkVbtQgXRAQQQaylBzfDU9L5Q+qoQYQJpTRgghgRzmpjfc88xyhnuhigggggwl/LCCAAAADadLAAAAAiAPbPzO84OwaiggQFbXfQmaEcyksgAAEYUKZ3q88MDs3Kg9PDjWjIAQgTst/FwQkk04WEBGEE4wggqgggglgIgsggggggggggggggggggggggo08gl0NPuAzfsSgmRrmMEATIgggggggjiUuPhXRS01oqM+lFCZvgSgGrgcogQZKASLKkSHAnb2HTfROM5PqpQQFNgw4ow089f/AP8AJDDDD3CW66KCCDDV88MsMcBwQ08sIAAABA544jKtFwluqCBA9999gOdXWNCKyIAAEADoDCAAA3c1uPTTRUl7AUCFpG9ixNLCCCn/ANDDzAQkgglwgggqBEEOEggghggggggggggggggggggggogpzzwgEKmgguI80gbIggggghqiqRVDRxdRulYy93cW9x5uQQwgokigQqeGARsmlDFco8VB+4/udbOs2unWtQySQwwwxf8A/wD/ALTTTSU7kglnqgowgnPPPPPCYWXPNJF7EgXYGvWkn3kgWaigQAEMfXq8QmsaXRgDGIkpKwAAAMrJAC6F/wDRtC8+MDIkLXzlIIIIIRQH0I9cEIIJcIIIaiV1jTzYIJLKIIIIIIIIIIIIIZyQ4w4IIIJcKpDTEIbIwgF+Y9vMoIYxEfgV/wB98cbAAOlBVqLtMXvBCDCeqPbRMoakuup7msaLduV5H2pS3Q2RFFG4t/pDDDDB/wC9/wD/AP8A/wD8NO44IIaYIIIILPMrTW23w1ha6FUzW6KoUqewoNV0kgAAABDG2pIeTADRKoII9KgAAAzhR4BA4bXPPDsATkd1moOAco2NcCEWUYsZ6wKRcIIaAOLAoIEqcIoIIIJIIpW23XlX08IAAADCQ4J9CAJmIIIIJKHhMIJ/1FUETgETxP2jyyU/lgIuvjsMPUqJAYZ+hQJEGwKnf/bwsysKWX2IZcyOmZWDnUr538kV3/H8AHD/AP8A/wD+kMNcIIq78oIIIIJJXnzV7RC7iToRQ5PdKRCmB/8ALw0t91IAAAU+a/sgMdJaChCCIAYGEm0ICLgZABjhiAADJQRB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"},92770:function(A){A.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjU2IiBoZWlnaHQ9IjEyOCIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMjU2IDEyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMTI4IDdjLTI1Ljg3MSAwLTQ3LjgxNyAxNy40ODUtNTQuNzEzIDQxLjIwOS01Ljk3OTUtMTIuNDYxLTE4LjY0Mi0yMS4yMDktMzMuMjg3LTIxLjIwOS0yMC4zMDQgMC0zNyAxNi42OTYtMzcgMzdzMTYuNjk2IDM3IDM3IDM3YzE0LjY0NSAwIDI3LjMwOC04Ljc0ODEgMzMuMjg3LTIxLjIwOSA2Ljg5NTcgMjMuNzI0IDI4Ljg0MiA0MS4yMDkgNTQuNzEzIDQxLjIwOXM0Ny44MTctMTcuNDg1IDU0LjcxMy00MS4yMDljNS45Nzk1IDEyLjQ2MSAxOC42NDIgMjEuMjA5IDMzLjI4NyAyMS4yMDkgMjAuMzA0IDAgMzctMTYuNjk2IDM3LTM3cy0xNi42OTYtMzctMzctMzdjLTE0LjY0NSAwLTI3LjMwOCA4Ljc0ODEtMzMuMjg3IDIxLjIwOS02Ljg5NTctMjMuNzI0LTI4Ljg0Mi00MS4yMDktNTQuNzEzLTQxLjIwOXptMCAyMmMxOS40NiAwIDM1IDE1LjU0IDM1IDM1cy0xNS41NCAzNS0zNSAzNS0zNS0xNS41NC0zNS0zNSAxNS41NC0zNSAzNS0zNXptLTg4IDIwYzguNDE0NiAwIDE1IDYuNTg1NCAxNSAxNXMtNi41ODU0IDE1LTE1IDE1LTE1LTYuNTg1NC0xNS0xNSA2LjU4NTQtMTUgMTUtMTV6bTE3NiAwYzguNDE0NiAwIDE1IDYuNTg1NCAxNSAxNXMtNi41ODU0IDE1LTE1IDE1LTE1LTYuNTg1NC0xNS0xNSA2LjU4NTQtMTUgMTUtMTV6IiBjb2xvcj0iIzAwMDAwMCIgZmlsbD0iI2ZmZiIgc3R5bGU9Ii1pbmtzY2FwZS1zdHJva2U6bm9uZSIvPjwvc3ZnPgo="}},C={};function i(A){var l=C[A];if(void 0!==l)return l.exports;var o=C[A]={id:A,loaded:!1,exports:{}};return g[A].call(o.exports,o,o.exports,i),o.loaded=!0,o.exports}i.m=g,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},A=[],i.O=function(g,C,l,o){if(!C){var E=1/0;for(s=0;s<A.length;s++){C=A[s][0],l=A[s][1],o=A[s][2];for(var h=!0,e=0;e<C.length;e++)(!1&o||E>=o)&&Object.keys(i.O).every((function(A){return i.O[A](C[e])}))?C.splice(e--,1):(h=!1,o<E&&(E=o));if(h){A.splice(s--,1);var n=l();void 0!==n&&(g=n)}}return g}o=o||0;for(var s=A.length;s>0&&A[s-1][2]>o;s--)A[s]=A[s-1];A[s]=[C,l,o]},i.n=function(A){var g=A&&A.__esModule?function(){return A.default}:function(){return A};return i.d(g,{a:g}),g},i.d=function(A,g){for(var C in g)i.o(g,C)&&!i.o(A,C)&&Object.defineProperty(A,C,{enumerable:!0,get:g[C]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(A){if("object"==typeof window)return window}}(),i.o=function(A,g){return Object.prototype.hasOwnProperty.call(A,g)},i.r=function(A){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})},i.nmd=function(A){return A.paths=[],A.children||(A.children=[]),A},i.j=5544,function(){i.b=document.baseURI||self.location.href;var A={5544:0};i.O.j=function(g){return 0===A[g]};var g=function(g,C){var l,o,E=C[0],h=C[1],e=C[2],n=0;if(E.some((function(g){return 0!==A[g]}))){for(l in h)i.o(h,l)&&(i.m[l]=h[l]);if(e)var s=e(i)}for(g&&g(C);n<E.length;n++)o=E[n],i.o(A,o)&&A[o]&&A[o][0](),A[o]=0;return i.O(s)},C=self.webpackChunknextcloud=self.webpackChunknextcloud||[];C.forEach(g.bind(null,0)),C.push=g.bind(null,C.push.bind(C))}(),i.nc=void 0;var l=i.O(void 0,[7874],(function(){return i(34475)}));l=i.O(l)}(); -//# sourceMappingURL=theming-admin-theming.js.map?v=39dced3148443bc49234
\ No newline at end of file +!function(){"use strict";var n,e={31901:function(n,e,a){var r=a(20144),i=a(16453),o=a(15961),l=a(4820),s=a(79753),u=["color","logo","background","logoheader","favicon","disable-user-theming"],d={emits:["update:theming"],data:function(){return{showSuccess:!1,errorMessage:""}},computed:{id:function(){return"admin-theming-".concat(this.name)}},methods:{reset:function(){this.showSuccess=!1,this.errorMessage=""},handleSuccess:function(){var n=this;this.showSuccess=!0,setTimeout((function(){n.showSuccess=!1}),2e3),u.includes(this.name)&&this.$emit("update:theming")}}};function c(n,e,t,a,r,i,o){try{var l=n[i](o),s=l.value}catch(n){return void t(n)}l.done?e(s):Promise.resolve(s).then(a,r)}function m(n){return function(){var e=this,t=arguments;return new Promise((function(a,r){var i=n.apply(e,t);function o(n){c(i,a,r,o,l,"next",n)}function l(n){c(i,a,r,o,l,"throw",n)}o(void 0)}))}}var p={mixins:[d],watch:{value:function(n){this.localValue=n}},data:function(){return{localValue:this.value}},methods:{save:function(){var n=this;return m(regeneratorRuntime.mark((function e(){var t,a,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.reset(),t=(0,s.generateUrl)("/apps/theming/ajax/updateStylesheet"),a=!0===n.localValue?"yes":!1===n.localValue?"no":n.localValue,e.prev=3,e.next=6,l.default.post(t,{setting:n.name,value:a});case 6:n.$emit("update:value",n.localValue),n.handleSuccess(),e.next=13;break;case 10:e.prev=10,e.t0=e.catch(3),n.errorMessage=null===(r=e.t0.response.data.data)||void 0===r?void 0:r.message;case 13:case"end":return e.stop()}}),e,null,[[3,10]])})))()},undo:function(){var n=this;return m(regeneratorRuntime.mark((function e(){var t,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.reset(),t=(0,s.generateUrl)("/apps/theming/ajax/undoChanges"),e.prev=2,e.next=5,l.default.post(t,{setting:n.name});case 5:n.$emit("update:value",n.defaultValue),n.handleSuccess(),e.next=12;break;case 9:e.prev=9,e.t0=e.catch(2),n.errorMessage=null===(a=e.t0.response.data.data)||void 0===a?void 0:a.message;case 12:case"end":return e.stop()}}),e,null,[[2,9]])})))()}}},g={name:"CheckboxField",components:{NcCheckboxRadioSwitch:o.rw,NcNoteCard:o.qf},mixins:[p],props:{name:{type:String,required:!0},value:{type:Boolean,required:!0},defaultValue:{type:Boolean,required:!0},displayName:{type:String,required:!0},label:{type:String,required:!0},description:{type:String,required:!0}}},h=a(93379),f=a.n(h),A=a(7795),v=a.n(A),y=a(90569),b=a.n(y),C=a(3565),x=a.n(C),N=a(19216),w=a.n(N),k=a(44589),_=a.n(k),S=a(57631),M={};M.styleTagTransform=_(),M.setAttributes=x(),M.insert=b().bind(null,"head"),M.domAPI=v(),M.insertStyleElement=w(),f()(S.Z,M),S.Z&&S.Z.locals&&S.Z.locals;var T=a(51900),I=(0,T.Z)(g,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{staticClass:"field"},[t("label",{attrs:{for:n.id}},[n._v(n._s(n.displayName))]),n._v(" "),t("div",{staticClass:"field__row"},[t("NcCheckboxRadioSwitch",{attrs:{type:"switch",id:n.id,checked:n.localValue},on:{"update:checked":[function(e){n.localValue=e},n.save]}},[n._v("\n\t\t\t"+n._s(n.label)+"\n\t\t")])],1),n._v(" "),t("p",{staticClass:"field__description"},[n._v(n._s(n.description))]),n._v(" "),n.errorMessage?t("NcNoteCard",{attrs:{type:"error","show-alert":!0}},[t("p",[n._v(n._s(n.errorMessage))])]):n._e()],1)}),[],!1,null,"17145f08",null).exports,L=a(20296),F=a(45923);function U(n,e,t,a,r,i,o){try{var l=n[i](o),s=l.value}catch(n){return void t(n)}l.done?e(s):Promise.resolve(s).then(a,r)}function E(n){return function(){var e=this,t=arguments;return new Promise((function(a,r){var i=n.apply(e,t);function o(n){U(i,a,r,o,l,"next",n)}function l(n){U(i,a,r,o,l,"throw",n)}o(void 0)}))}}var P={name:"ColorPickerField",components:{NcButton:o.P2,NcColorPicker:o.m,NcNoteCard:o.qf,Undo:F.default},mixins:[p],props:{name:{type:String,required:!0},value:{type:String,required:!0},defaultValue:{type:String,required:!0},displayName:{type:String,required:!0}},methods:{debounceSave:(0,L.debounce)(E(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.save();case 2:case"end":return n.stop()}}),n,this)}))),200)}},j=a(41910),D={};D.styleTagTransform=_(),D.setAttributes=x(),D.insert=b().bind(null,"head"),D.domAPI=v(),D.insertStyleElement=w(),f()(j.Z,D),j.Z&&j.Z.locals&&j.Z.locals;var V=(0,T.Z)(P,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{staticClass:"field"},[t("label",{attrs:{for:n.id}},[n._v(n._s(n.displayName))]),n._v(" "),t("div",{staticClass:"field__row"},[t("NcColorPicker",{attrs:{value:n.localValue,"advanced-fields":!0},on:{"update:value":[function(e){n.localValue=e},n.debounceSave]}},[t("NcButton",{staticClass:"field__button",attrs:{type:"primary",id:n.id,"aria-label":n.t("theming","Select a custom color")}},[n._v("\n\t\t\t\t"+n._s(n.value)+"\n\t\t\t")])],1),n._v(" "),n.value!==n.defaultValue?t("NcButton",{attrs:{type:"tertiary","aria-label":n.t("theming","Reset to default")},on:{click:n.undo},scopedSlots:n._u([{key:"icon",fn:function(){return[t("Undo",{attrs:{size:20}})]},proxy:!0}],null,!1,33666776)}):n._e()],1),n._v(" "),n.errorMessage?t("NcNoteCard",{attrs:{type:"error","show-alert":!0}},[t("p",[n._v(n._s(n.errorMessage))])]):n._e()],1)}),[],!1,null,"6b238a3e",null).exports,z=a(33691),R=a(75843);function O(n,e,t,a,r,i,o){try{var l=n[i](o),s=l.value}catch(n){return void t(n)}l.done?e(s):Promise.resolve(s).then(a,r)}function B(n){return function(){var e=this,t=arguments;return new Promise((function(a,r){var i=n.apply(e,t);function o(n){O(i,a,r,o,l,"next",n)}function l(n){O(i,a,r,o,l,"throw",n)}o(void 0)}))}}var Z={name:"FileInputField",components:{Delete:z.Z,NcButton:o.P2,NcLoadingIcon:o.lb,NcNoteCard:o.qf,Undo:F.default,Upload:R.Z},mixins:[d],props:{name:{type:String,required:!0},mimeName:{type:String,required:!0},mimeValue:{type:String,required:!0},defaultMimeValue:{type:String,required:!0},displayName:{type:String,required:!0},ariaLabel:{type:String,required:!0}},data:function(){return{showLoading:!1}},computed:{showReset:function(){return this.mimeValue!==this.defaultMimeValue},showRemove:function(){if("background"===this.name){if(this.mimeValue.startsWith("image/"))return!0;if(this.mimeValue===this.defaultMimeValue)return!0}return!1}},methods:{activateLocalFilePicker:function(){this.reset(),this.$refs.input.value=null,this.$refs.input.click()},onChange:function(n){var e=this;return B(regeneratorRuntime.mark((function t(){var a,r,i,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=n.target.files[0],(r=new FormData).append("key",e.name),r.append("image",a),i=(0,s.generateUrl)("/apps/theming/ajax/uploadImage"),t.prev=5,e.showLoading=!0,t.next=9,l.default.post(i,r);case 9:e.showLoading=!1,e.$emit("update:mime-value",a.type),e.handleSuccess(),t.next=18;break;case 14:t.prev=14,t.t0=t.catch(5),e.showLoading=!1,e.errorMessage=null===(o=t.t0.response.data.data)||void 0===o?void 0:o.message;case 18:case"end":return t.stop()}}),t,null,[[5,14]])})))()},undo:function(){var n=this;return B(regeneratorRuntime.mark((function e(){var t,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.reset(),t=(0,s.generateUrl)("/apps/theming/ajax/undoChanges"),e.prev=2,e.next=5,l.default.post(t,{setting:n.mimeName});case 5:n.$emit("update:mime-value",n.defaultMimeValue),n.handleSuccess(),e.next=12;break;case 9:e.prev=9,e.t0=e.catch(2),n.errorMessage=null===(a=e.t0.response.data.data)||void 0===a?void 0:a.message;case 12:case"end":return e.stop()}}),e,null,[[2,9]])})))()},removeBackground:function(){var n=this;return B(regeneratorRuntime.mark((function e(){var t,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.reset(),t=(0,s.generateUrl)("/apps/theming/ajax/updateStylesheet"),e.prev=2,e.next=5,l.default.post(t,{setting:n.mimeName,value:"backgroundColor"});case 5:n.$emit("update:mime-value","backgroundColor"),n.handleSuccess(),e.next=12;break;case 9:e.prev=9,e.t0=e.catch(2),n.errorMessage=null===(a=e.t0.response.data.data)||void 0===a?void 0:a.message;case 12:case"end":return e.stop()}}),e,null,[[2,9]])})))()}}},Y=Z,q=a(2572),$={};$.styleTagTransform=_(),$.setAttributes=x(),$.insert=b().bind(null,"head"),$.domAPI=v(),$.insertStyleElement=w(),f()(q.Z,$),q.Z&&q.Z.locals&&q.Z.locals;var G=(0,T.Z)(Y,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{staticClass:"field"},[t("label",{attrs:{for:n.id}},[n._v(n._s(n.displayName))]),n._v(" "),t("div",{staticClass:"field__row"},[t("NcButton",{attrs:{type:"secondary",id:n.id,"aria-label":n.ariaLabel},on:{click:n.activateLocalFilePicker},scopedSlots:n._u([{key:"icon",fn:function(){return[t("Upload",{attrs:{size:20}})]},proxy:!0}])},[n._v("\n\t\t\t"+n._s(n.t("theming","Upload"))+"\n\t\t")]),n._v(" "),n.showReset?t("NcButton",{attrs:{type:"tertiary","aria-label":n.t("theming","Reset to default")},on:{click:n.undo},scopedSlots:n._u([{key:"icon",fn:function(){return[t("Undo",{attrs:{size:20}})]},proxy:!0}],null,!1,33666776)}):n._e(),n._v(" "),n.showRemove?t("NcButton",{attrs:{type:"tertiary","aria-label":n.t("theming","Remove background image")},on:{click:n.removeBackground},scopedSlots:n._u([{key:"icon",fn:function(){return[t("Delete",{attrs:{size:20}})]},proxy:!0}],null,!1,2705356561)}):n._e(),n._v(" "),n.showLoading?t("NcLoadingIcon",{staticClass:"field__loading-icon",attrs:{size:20}}):n._e()],1),n._v(" "),"logoheader"!==n.name&&"favicon"!==n.name||n.mimeValue===n.defaultMimeValue?n._e():t("div",{staticClass:"field__preview",class:{"field__preview--logoheader":"logoheader"===n.name,"field__preview--favicon":"favicon"===n.name}}),n._v(" "),n.errorMessage?t("NcNoteCard",{attrs:{type:"error","show-alert":!0}},[t("p",[n._v(n._s(n.errorMessage))])]):n._e(),n._v(" "),t("input",{ref:"input",attrs:{type:"file"},on:{change:n.onChange}})],1)}),[],!1,null,"137dd337",null).exports,W={name:"TextField",components:{NcTextField:o.h3},mixins:[p],props:{name:{type:String,required:!0},value:{type:String,required:!0},defaultValue:{type:String,required:!0},type:{type:String,required:!0},displayName:{type:String,required:!0},placeholder:{type:String,required:!0},maxlength:{type:Number,required:!0}}},H=a(91967),Q={};Q.styleTagTransform=_(),Q.setAttributes=x(),Q.insert=b().bind(null,"head"),Q.domAPI=v(),Q.insertStyleElement=w(),f()(H.Z,Q),H.Z&&H.Z.locals&&H.Z.locals;var X=(0,T.Z)(W,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{staticClass:"field"},[t("NcTextField",{attrs:{value:n.localValue,label:n.displayName,"label-visible":!0,placeholder:n.placeholder,type:n.type,maxlength:n.maxlength,spellcheck:!1,success:n.showSuccess,error:Boolean(n.errorMessage),"helper-text":n.errorMessage,"show-trailing-button":n.value!==n.defaultValue,"trailing-button-icon":"undo"},on:{"update:value":function(e){n.localValue=e},"trailing-button-click":n.undo,keydown:function(e){return!e.type.indexOf("key")&&n._k(e.keyCode,"enter",13,e.key,"Enter")?null:n.save.apply(null,arguments)},blur:n.save}})],1)}),[],!1,null,"21244e1d",null),J=X.exports,K=(0,i.loadState)("theming","adminThemingParameters"),nn=K.backgroundMime,en=K.canThemeIcons,tn=K.color,an=K.docUrl,rn=K.docUrlIcons,on=K.faviconMime,ln=K.isThemable,sn=K.legalNoticeUrl,un=K.logoheaderMime,dn=K.logoMime,cn=K.name,mn=K.notThemableErrorMessage,pn=K.privacyPolicyUrl,gn=K.slogan,hn=K.url,fn=K.userThemingDisabled,An=[{name:"name",value:cn,defaultValue:"Nextcloud",type:"text",displayName:t("theming","Name"),placeholder:t("theming","Name"),maxlength:250},{name:"url",value:hn,defaultValue:"https://nextcloud.com",type:"url",displayName:t("theming","Web link"),placeholder:"https://…",maxlength:500},{name:"slogan",value:gn,defaultValue:t("theming","a safe home for all your data"),type:"text",displayName:t("theming","Slogan"),placeholder:t("theming","Slogan"),maxlength:500}],vn={name:"color",value:tn,defaultValue:"#0082c9",displayName:t("theming","Color")},yn=[{name:"logo",mimeName:"logoMime",mimeValue:dn,defaultMimeValue:"",displayName:t("theming","Logo"),ariaLabel:t("theming","Upload new logo")},{name:"background",mimeName:"backgroundMime",mimeValue:nn,defaultMimeValue:"",displayName:t("theming","Background and login image"),ariaLabel:t("theming","Upload new background and login image")}],bn=[{name:"imprintUrl",value:sn,defaultValue:"",type:"url",displayName:t("theming","Legal notice link"),placeholder:"https://…",maxlength:500},{name:"privacyUrl",value:pn,defaultValue:"",type:"url",displayName:t("theming","Privacy policy link"),placeholder:"https://…",maxlength:500}],Cn=[{name:"logoheader",mimeName:"logoheaderMime",mimeValue:un,defaultMimeValue:"",displayName:t("theming","Header logo"),ariaLabel:t("theming","Upload new header logo")},{name:"favicon",mimeName:"faviconMime",mimeValue:on,defaultMimeValue:"",displayName:t("theming","Favicon"),ariaLabel:t("theming","Upload new favicon")}],xn={name:"disable-user-theming",value:fn,defaultValue:!1,displayName:t("theming","User settings"),label:t("theming","Disable user theming"),description:t("theming","Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on.")},Nn={name:"AdminTheming",components:{CheckboxField:I,ColorPickerField:V,FileInputField:G,NcNoteCard:o.qf,NcSettingsSection:o.gE,TextField:J},emits:["update:theming"],data:function(){return{textFields:An,colorPickerField:vn,fileInputFields:yn,advancedTextFields:bn,advancedFileInputFields:Cn,userThemingField:xn,canThemeIcons:en,docUrl:an,docUrlIcons:rn,isThemable:ln,notThemableErrorMessage:mn}}},wn=a(34029),kn={};kn.styleTagTransform=_(),kn.setAttributes=x(),kn.insert=b().bind(null,"head"),kn.domAPI=v(),kn.insertStyleElement=w(),f()(wn.Z,kn),wn.Z&&wn.Z.locals&&wn.Z.locals;var _n=(0,T.Z)(Nn,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("section",[t("NcSettingsSection",{attrs:{title:n.t("theming","Theming"),description:n.t("theming","Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users."),"doc-url":n.docUrl}},[t("div",{staticClass:"admin-theming"},[n.isThemable?n._e():t("NcNoteCard",{attrs:{type:"error","show-alert":!0}},[t("p",[n._v(n._s(n.notThemableErrorMessage))])]),n._v(" "),n._l(n.textFields,(function(e){return t("TextField",{key:e.name,attrs:{name:e.name,value:e.value,"default-value":e.defaultValue,type:e.type,"display-name":e.displayName,placeholder:e.placeholder,maxlength:e.maxlength},on:{"update:value":function(t){return n.$set(e,"value",t)},"update:theming":function(e){return n.$emit("update:theming")}}})})),n._v(" "),t("ColorPickerField",{attrs:{name:n.colorPickerField.name,value:n.colorPickerField.value,"default-value":n.colorPickerField.defaultValue,"display-name":n.colorPickerField.displayName},on:{"update:value":function(e){return n.$set(n.colorPickerField,"value",e)},"update:theming":function(e){return n.$emit("update:theming")}}}),n._v(" "),n._l(n.fileInputFields,(function(e){return t("FileInputField",{key:e.name,attrs:{name:e.name,"mime-name":e.mimeName,"mime-value":e.mimeValue,"default-mime-value":e.defaultMimeValue,"display-name":e.displayName,"aria-label":e.ariaLabel},on:{"update:mimeValue":function(t){return n.$set(e,"mimeValue",t)},"update:mime-value":function(t){return n.$set(e,"mimeValue",t)},"update:theming":function(e){return n.$emit("update:theming")}}})})),n._v(" "),t("div",{staticClass:"admin-theming__preview"},[t("div",{staticClass:"admin-theming__preview-logo"})])],2)]),n._v(" "),t("NcSettingsSection",{attrs:{title:n.t("theming","Advanced options")}},[t("div",{staticClass:"admin-theming-advanced"},[n._l(n.advancedTextFields,(function(e){return t("TextField",{key:e.name,attrs:{name:e.name,value:e.value,"default-value":e.defaultValue,type:e.type,"display-name":e.displayName,placeholder:e.placeholder,maxlength:e.maxlength},on:{"update:value":function(t){return n.$set(e,"value",t)},"update:theming":function(e){return n.$emit("update:theming")}}})})),n._v(" "),n._l(n.advancedFileInputFields,(function(e){return t("FileInputField",{key:e.name,attrs:{name:e.name,"mime-name":e.mimeName,"mime-value":e.mimeValue,"default-mime-value":e.defaultMimeValue,"display-name":e.displayName,"aria-label":e.ariaLabel},on:{"update:mimeValue":function(t){return n.$set(e,"mimeValue",t)},"update:mime-value":function(t){return n.$set(e,"mimeValue",t)},"update:theming":function(e){return n.$emit("update:theming")}}})})),n._v(" "),t("CheckboxField",{attrs:{name:n.userThemingField.name,value:n.userThemingField.value,"default-value":n.userThemingField.defaultValue,"display-name":n.userThemingField.displayName,label:n.userThemingField.label,description:n.userThemingField.description},on:{"update:theming":function(e){return n.$emit("update:theming")}}}),n._v(" "),n.canThemeIcons?n._e():t("a",{attrs:{href:n.docUrlIcons,rel:"noreferrer noopener"}},[t("em",[n._v(n._s(n.t("theming","Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color.")))])])],2)])],1)}),[],!1,null,"6dcac59d",null).exports;function Sn(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,a=new Array(e);t<e;t++)a[t]=n[t];return a}r.ZP.prototype.OC=OC,r.ZP.prototype.t=t;var Mn=new(r.ZP.extend(_n));Mn.$mount("#admin-theming"),Mn.$on("update:theming",(function(){var n;(n=document.head.querySelectorAll("link.theme"),function(n){if(Array.isArray(n))return Sn(n)}(n)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||function(n,e){if(n){if("string"==typeof n)return Sn(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Sn(n,e):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).forEach((function(n){var e=new URL(n.href);e.searchParams.set("v",Date.now());var t=n.cloneNode();t.href=e.toString(),t.onload=function(){return n.remove()},document.head.append(t)}))}))},34029:function(n,e,t){var a=t(87537),r=t.n(a),i=t(23645),o=t.n(i),l=t(61667),s=t.n(l),u=new URL(t(92770),t.b),d=o()(r()),c=s()(u);d.push([n.id,".admin-theming[data-v-6dcac59d],.admin-theming-advanced[data-v-6dcac59d]{display:flex;flex-direction:column;gap:8px 0}.admin-theming__preview[data-v-6dcac59d]{width:230px;height:140px;background-size:cover;background-position:center;text-align:center;margin-top:10px;background-color:var(--color-primary-default, #0082c9);background-image:var(--image-background-plain, var(--image-background-default, linear-gradient(40deg, #0082c9 0%, #30b6ff 100%)))}.admin-theming__preview-logo[data-v-6dcac59d]{width:20%;height:20%;margin-top:20px;display:inline-block;background-size:contain;background-position:center;background-repeat:no-repeat;background-image:var(--image-logo, url("+c+"))}","",{version:3,sources:["webpack://./apps/theming/src/AdminTheming.vue"],names:[],mappings:"AAgRA,yEAEC,YAAA,CACA,qBAAA,CACA,SAAA,CAIA,yCACC,WAAA,CACA,YAAA,CACA,qBAAA,CACA,0BAAA,CACA,iBAAA,CACA,eAAA,CAIA,sDAAA,CAKA,iIAAA,CAEA,8CACC,SAAA,CACA,UAAA,CACA,eAAA,CACA,oBAAA,CACA,uBAAA,CACA,0BAAA,CACA,2BAAA,CACA,2EAAA",sourcesContent:["\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\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\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\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\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\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\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\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\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.admin-theming,\n.admin-theming-advanced {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n}\n\n.admin-theming {\n\t&__preview {\n\t\twidth: 230px;\n\t\theight: 140px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center;\n\t\ttext-align: center;\n\t\tmargin-top: 10px;\n\t\t/* This is basically https://github.com/nextcloud/server/blob/master/core/css/guest.css\n\t\t But without the user variables. That way the admin can preview the render as guest*/\n\t\t/* As guest, there is no user color color-background-plain */\n\t\tbackground-color: var(--color-primary-default, #0082c9);\n\t\t/* As guest, there is no user background (--image-background)\n\t\t1. Empty background if defined\n\t\t2. Else default background\n\t\t3. Finally default gradient (should not happened, the background is always defined anyway) */\n\t\tbackground-image: var(--image-background-plain, var(--image-background-default, linear-gradient(40deg, #0082c9 0%, #30b6ff 100%)));\n\n\t\t&-logo {\n\t\t\twidth: 20%;\n\t\t\theight: 20%;\n\t\t\tmargin-top: 20px;\n\t\t\tdisplay: inline-block;\n\t\t\tbackground-size: contain;\n\t\t\tbackground-position: center;\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-image: var(--image-logo, url('../../../core/img/logo/logo.svg'));\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),e.Z=d},57631:function(n,e,t){var a=t(87537),r=t.n(a),i=t(23645),o=t.n(i)()(r());o.push([n.id,".field[data-v-17145f08]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-17145f08]{display:flex;gap:0 4px}.field__description[data-v-17145f08]{color:var(--color-text-maxcontrast)}","",{version:3,sources:["webpack://./apps/theming/src/components/admin/shared/field.scss","webpack://./apps/theming/src/components/admin/CheckboxField.vue"],names:[],mappings:"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCoED,qCACC,mCAAA",sourcesContent:["/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n.field {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px 0;\n\n\t&__row {\n\t\tdisplay: flex;\n\t\tgap: 0 4px;\n\t}\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\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\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\n\n\n\n\n\n\n\n\n\n\n\n@import './shared/field.scss';\n\n.field {\n\t&__description {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]),e.Z=o},41910:function(n,e,t){var a=t(87537),r=t.n(a),i=t(23645),o=t.n(i)()(r());o.push([n.id,".field[data-v-6b238a3e]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-6b238a3e]{display:flex;gap:0 4px}.field__button[data-v-6b238a3e]{width:230px !important;border-radius:var(--border-radius-large) !important;background-color:var(--color-primary-default) !important}.field__button[data-v-6b238a3e]:hover{background-color:var(--color-primary-element-default-hover) !important}","",{version:3,sources:["webpack://./apps/theming/src/components/admin/shared/field.scss","webpack://./apps/theming/src/components/admin/ColorPickerField.vue"],names:[],mappings:"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCkFD,gCACC,sBAAA,CACA,mDAAA,CACA,wDAAA,CACA,sCACC,sEAAA",sourcesContent:["/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n.field {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px 0;\n\n\t&__row {\n\t\tdisplay: flex;\n\t\tgap: 0 4px;\n\t}\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\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\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\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@import './shared/field.scss';\n\n.field {\n\t// Override default NcButton styles\n\t&__button {\n\t\twidth: 230px !important;\n\t\tborder-radius: var(--border-radius-large) !important;\n\t\tbackground-color: var(--color-primary-default) !important;\n\t\t&:hover {\n\t\t\tbackground-color: var(--color-primary-element-default-hover) !important;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),e.Z=o},2572:function(n,e,t){var a=t(87537),r=t.n(a),i=t(23645),o=t.n(i)()(r());o.push([n.id,".field[data-v-137dd337]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-137dd337]{display:flex;gap:0 4px}.field__loading-icon[data-v-137dd337]{width:44px;height:44px}.field__preview[data-v-137dd337]{width:70px;height:70px;background-size:contain;background-position:center;background-repeat:no-repeat;margin:10px 0}.field__preview--logoheader[data-v-137dd337]{background-image:var(--image-logoheader)}.field__preview--favicon[data-v-137dd337]{background-image:var(--image-favicon)}input[type=file][data-v-137dd337]{display:none}","",{version:3,sources:["webpack://./apps/theming/src/components/admin/shared/field.scss","webpack://./apps/theming/src/components/admin/FileInputField.vue"],names:[],mappings:"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCgMD,sCACC,UAAA,CACA,WAAA,CAGD,iCACC,UAAA,CACA,WAAA,CACA,uBAAA,CACA,0BAAA,CACA,2BAAA,CACA,aAAA,CAEA,6CACC,wCAAA,CAGD,0CACC,qCAAA,CAKH,kCACC,YAAA",sourcesContent:["/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n.field {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px 0;\n\n\t&__row {\n\t\tdisplay: flex;\n\t\tgap: 0 4px;\n\t}\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\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\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\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\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\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\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@import './shared/field.scss';\n\n.field {\n\t&__loading-icon {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t}\n\n\t&__preview {\n\t\twidth: 70px;\n\t\theight: 70px;\n\t\tbackground-size: contain;\n\t\tbackground-position: center;\n\t\tbackground-repeat: no-repeat;\n\t\tmargin: 10px 0;\n\n\t\t&--logoheader {\n\t\t\tbackground-image: var(--image-logoheader);\n\t\t}\n\n\t\t&--favicon {\n\t\t\tbackground-image: var(--image-favicon);\n\t\t}\n\t}\n}\n\ninput[type=\"file\"] {\n\tdisplay: none;\n}\n"],sourceRoot:""}]),e.Z=o},91967:function(n,e,t){var a=t(87537),r=t.n(a),i=t(23645),o=t.n(i)()(r());o.push([n.id,".field[data-v-21244e1d]{max-width:400px}","",{version:3,sources:["webpack://./apps/theming/src/components/admin/TextField.vue"],names:[],mappings:"AA4FA,wBACC,eAAA",sourcesContent:["\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\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\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\n\n\n\n\n\n\n\n.field {\n\tmax-width: 400px;\n}\n"],sourceRoot:""}]),e.Z=o},92770:function(n){n.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjU2IiBoZWlnaHQ9IjEyOCIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMjU2IDEyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMTI4IDdjLTI1Ljg3MSAwLTQ3LjgxNyAxNy40ODUtNTQuNzEzIDQxLjIwOS01Ljk3OTUtMTIuNDYxLTE4LjY0Mi0yMS4yMDktMzMuMjg3LTIxLjIwOS0yMC4zMDQgMC0zNyAxNi42OTYtMzcgMzdzMTYuNjk2IDM3IDM3IDM3YzE0LjY0NSAwIDI3LjMwOC04Ljc0ODEgMzMuMjg3LTIxLjIwOSA2Ljg5NTcgMjMuNzI0IDI4Ljg0MiA0MS4yMDkgNTQuNzEzIDQxLjIwOXM0Ny44MTctMTcuNDg1IDU0LjcxMy00MS4yMDljNS45Nzk1IDEyLjQ2MSAxOC42NDIgMjEuMjA5IDMzLjI4NyAyMS4yMDkgMjAuMzA0IDAgMzctMTYuNjk2IDM3LTM3cy0xNi42OTYtMzctMzctMzdjLTE0LjY0NSAwLTI3LjMwOCA4Ljc0ODEtMzMuMjg3IDIxLjIwOS02Ljg5NTctMjMuNzI0LTI4Ljg0Mi00MS4yMDktNTQuNzEzLTQxLjIwOXptMCAyMmMxOS40NiAwIDM1IDE1LjU0IDM1IDM1cy0xNS41NCAzNS0zNSAzNS0zNS0xNS41NC0zNS0zNSAxNS41NC0zNSAzNS0zNXptLTg4IDIwYzguNDE0NiAwIDE1IDYuNTg1NCAxNSAxNXMtNi41ODU0IDE1LTE1IDE1LTE1LTYuNTg1NC0xNS0xNSA2LjU4NTQtMTUgMTUtMTV6bTE3NiAwYzguNDE0NiAwIDE1IDYuNTg1NCAxNSAxNXMtNi41ODU0IDE1LTE1IDE1LTE1LTYuNTg1NC0xNS0xNSA2LjU4NTQtMTUgMTUtMTV6IiBjb2xvcj0iIzAwMDAwMCIgZmlsbD0iI2ZmZiIgc3R5bGU9Ii1pbmtzY2FwZS1zdHJva2U6bm9uZSIvPjwvc3ZnPgo="}},a={};function r(n){var t=a[n];if(void 0!==t)return t.exports;var i=a[n]={id:n,loaded:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}r.m=e,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},n=[],r.O=function(e,t,a,i){if(!t){var o=1/0;for(d=0;d<n.length;d++){t=n[d][0],a=n[d][1],i=n[d][2];for(var l=!0,s=0;s<t.length;s++)(!1&i||o>=i)&&Object.keys(r.O).every((function(n){return r.O[n](t[s])}))?t.splice(s--,1):(l=!1,i<o&&(o=i));if(l){n.splice(d--,1);var u=a();void 0!==u&&(e=u)}}return e}i=i||0;for(var d=n.length;d>0&&n[d-1][2]>i;d--)n[d]=n[d-1];n[d]=[t,a,i]},r.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(e,{a:e}),e},r.d=function(n,e){for(var t in e)r.o(e,t)&&!r.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),r.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},r.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},r.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},r.j=5544,function(){r.b=document.baseURI||self.location.href;var n={5544:0};r.O.j=function(e){return 0===n[e]};var e=function(e,t){var a,i,o=t[0],l=t[1],s=t[2],u=0;if(o.some((function(e){return 0!==n[e]}))){for(a in l)r.o(l,a)&&(r.m[a]=l[a]);if(s)var d=s(r)}for(e&&e(t);u<o.length;u++)i=o[u],r.o(n,i)&&n[i]&&n[i][0](),n[i]=0;return r.O(d)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(e.bind(null,0)),t.push=e.bind(null,t.push.bind(t))}(),r.nc=void 0;var i=r.O(void 0,[7874],(function(){return r(31901)}));i=r.O(i)}(); +//# sourceMappingURL=theming-admin-theming.js.map?v=32b1b81d6863b93c7294
\ No newline at end of file diff --git a/dist/theming-admin-theming.js.map b/dist/theming-admin-theming.js.map index 572c942fc5b..57cce4774bf 100644 --- a/dist/theming-admin-theming.js.map +++ b/dist/theming-admin-theming.js.map @@ -1 +1 @@ -{"version":3,"file":"theming-admin-theming.js?v=39dced3148443bc49234","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/theming/src/mixins/admin/FieldMixin.js","webpack:///nextcloud/apps/theming/src/mixins/admin/TextValueMixin.js","webpack:///nextcloud/apps/theming/src/components/admin/CheckboxField.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/theming/src/components/admin/CheckboxField.vue","webpack://nextcloud/./apps/theming/src/components/admin/CheckboxField.vue?4277","webpack://nextcloud/./apps/theming/src/components/admin/CheckboxField.vue?8981","webpack:///nextcloud/apps/theming/src/components/admin/CheckboxField.vue?vue&type=template&id=17145f08&scoped=true&","webpack:///nextcloud/apps/theming/src/components/admin/ColorPickerField.vue","webpack:///nextcloud/apps/theming/src/components/admin/ColorPickerField.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/components/admin/ColorPickerField.vue?e0c8","webpack://nextcloud/./apps/theming/src/components/admin/ColorPickerField.vue?977d","webpack:///nextcloud/apps/theming/src/components/admin/ColorPickerField.vue?vue&type=template&id=6b238a3e&scoped=true&","webpack:///nextcloud/apps/theming/src/components/admin/FileInputField.vue","webpack:///nextcloud/apps/theming/src/components/admin/FileInputField.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/components/admin/FileInputField.vue?5358","webpack://nextcloud/./apps/theming/src/components/admin/FileInputField.vue?4d24","webpack:///nextcloud/apps/theming/src/components/admin/FileInputField.vue?vue&type=template&id=137dd337&scoped=true&","webpack:///nextcloud/apps/theming/src/components/admin/TextField.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/theming/src/components/admin/TextField.vue","webpack://nextcloud/./apps/theming/src/components/admin/TextField.vue?91e3","webpack://nextcloud/./apps/theming/src/components/admin/TextField.vue?c7b6","webpack:///nextcloud/apps/theming/src/components/admin/TextField.vue?vue&type=template&id=21244e1d&scoped=true&","webpack:///nextcloud/apps/theming/src/AdminTheming.vue","webpack:///nextcloud/apps/theming/src/AdminTheming.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/AdminTheming.vue?a2ad","webpack://nextcloud/./apps/theming/src/AdminTheming.vue?6138","webpack:///nextcloud/apps/theming/src/AdminTheming.vue?vue&type=template&id=5557ff20&scoped=true&","webpack:///nextcloud/apps/theming/src/admin-settings.js","webpack:///nextcloud/apps/theming/src/helpers/refreshStyles.js","webpack:///nextcloud/apps/theming/src/AdminTheming.vue?vue&type=style&index=0&id=5557ff20&lang=scss&scoped=true&","webpack:///nextcloud/apps/theming/src/components/admin/CheckboxField.vue?vue&type=style&index=0&id=17145f08&lang=scss&scoped=true&","webpack:///nextcloud/apps/theming/src/components/admin/ColorPickerField.vue?vue&type=style&index=0&id=6b238a3e&lang=scss&scoped=true&","webpack:///nextcloud/apps/theming/src/components/admin/FileInputField.vue?vue&type=style&index=0&id=137dd337&lang=scss&scoped=true&","webpack:///nextcloud/apps/theming/src/components/admin/TextField.vue?vue&type=style&index=0&id=21244e1d&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst styleRefreshFields = [\n\t'color',\n\t'logo',\n\t'background',\n\t'logoheader',\n\t'favicon',\n\t'disable-user-theming',\n]\n\nexport default {\n\temits: [\n\t\t'update:theming',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tshowSuccess: false,\n\t\t\terrorMessage: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tid() {\n\t\t\treturn `admin-theming-${this.name}`\n\t\t},\n\t},\n\n\tmethods: {\n\t\treset() {\n\t\t\tthis.showSuccess = false\n\t\t\tthis.errorMessage = ''\n\t\t},\n\n\t\thandleSuccess() {\n\t\t\tthis.showSuccess = true\n\t\t\tsetTimeout(() => { this.showSuccess = false }, 2000)\n\t\t\tif (styleRefreshFields.includes(this.name)) {\n\t\t\t\tthis.$emit('update:theming')\n\t\t\t}\n\t\t},\n\t},\n}\n","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\nimport FieldMixin from './FieldMixin.js'\n\nexport default {\n\tmixins: [\n\t\tFieldMixin,\n\t],\n\n\twatch: {\n\t\tvalue(value) {\n\t\t\tthis.localValue = value\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlocalValue: this.value,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync save() {\n\t\t\tthis.reset()\n\t\t\tconst url = generateUrl('/apps/theming/ajax/updateStylesheet')\n\t\t\t// Convert boolean to string as server expects string value\n\t\t\tconst valueToPost = this.localValue === true ? 'yes' : this.localValue === false ? 'no' : this.localValue\n\t\t\ttry {\n\t\t\t\tawait axios.post(url, {\n\t\t\t\t\tsetting: this.name,\n\t\t\t\t\tvalue: valueToPost,\n\t\t\t\t})\n\t\t\t\tthis.$emit('update:value', this.localValue)\n\t\t\t\tthis.handleSuccess()\n\t\t\t} catch (e) {\n\t\t\t\tthis.errorMessage = e.response.data.data?.message\n\t\t\t}\n\t\t},\n\n\t\tasync undo() {\n\t\t\tthis.reset()\n\t\t\tconst url = generateUrl('/apps/theming/ajax/undoChanges')\n\t\t\ttry {\n\t\t\t\tawait axios.post(url, {\n\t\t\t\t\tsetting: this.name,\n\t\t\t\t})\n\t\t\t\tthis.$emit('update:value', this.defaultValue)\n\t\t\t\tthis.handleSuccess()\n\t\t\t} catch (e) {\n\t\t\t\tthis.errorMessage = e.response.data.data?.message\n\t\t\t}\n\t\t},\n\t},\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxField.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxField.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<div class=\"field\">\n\t\t<label :for=\"id\">{{ displayName }}</label>\n\t\t<div class=\"field__row\">\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\t:id=\"id\"\n\t\t\t\t:checked.sync=\"localValue\"\n\t\t\t\t@update:checked=\"save\">\n\t\t\t\t{{ label }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</div>\n\n\t\t<p class=\"field__description\">{{ description }}</p>\n\n\t\t<NcNoteCard v-if=\"errorMessage\"\n\t\t\ttype=\"error\"\n\t\t\t:show-alert=\"true\">\n\t\t\t<p>{{ errorMessage }}</p>\n\t\t</NcNoteCard>\n\t</div>\n</template>\n\n<script>\nimport {\n\tNcCheckboxRadioSwitch,\n\tNcNoteCard,\n} from '@nextcloud/vue'\n\nimport TextValueMixin from '../../mixins/admin/TextValueMixin.js'\n\nexport default {\n\tname: 'CheckboxField',\n\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t\tNcNoteCard,\n\t},\n\n\tmixins: [\n\t\tTextValueMixin,\n\t],\n\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tdefaultValue: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdescription: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import './shared/field.scss';\n\n.field {\n\t&__description {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n</style>\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxField.vue?vue&type=style&index=0&id=17145f08&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxField.vue?vue&type=style&index=0&id=17145f08&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CheckboxField.vue?vue&type=template&id=17145f08&scoped=true&\"\nimport script from \"./CheckboxField.vue?vue&type=script&lang=js&\"\nexport * from \"./CheckboxField.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CheckboxField.vue?vue&type=style&index=0&id=17145f08&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"17145f08\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"field\"},[_c('label',{attrs:{\"for\":_vm.id}},[_vm._v(_vm._s(_vm.displayName))]),_vm._v(\" \"),_c('div',{staticClass:\"field__row\"},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"id\":_vm.id,\"checked\":_vm.localValue},on:{\"update:checked\":[function($event){_vm.localValue=$event},_vm.save]}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.label)+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('p',{staticClass:\"field__description\"},[_vm._v(_vm._s(_vm.description))]),_vm._v(\" \"),(_vm.errorMessage)?_c('NcNoteCard',{attrs:{\"type\":\"error\",\"show-alert\":true}},[_c('p',[_vm._v(_vm._s(_vm.errorMessage))])]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<div class=\"field\">\n\t\t<label :for=\"id\">{{ displayName }}</label>\n\t\t<div class=\"field__row\">\n\t\t\t<NcColorPicker :value.sync=\"localValue\"\n\t\t\t\t:advanced-fields=\"true\"\n\t\t\t\t@update:value=\"debounceSave\">\n\t\t\t\t<NcButton class=\"field__button\"\n\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t:id=\"id\"\n\t\t\t\t\t:aria-label=\"t('theming', 'Select a custom color')\">\n\t\t\t\t\t{{ value }}\n\t\t\t\t</NcButton>\n\t\t\t</NcColorPicker>\n\t\t\t<NcButton v-if=\"value !== defaultValue\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\t:aria-label=\"t('theming', 'Reset to default')\"\n\t\t\t\t@click=\"undo\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Undo :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t</div>\n\n\t\t<NcNoteCard v-if=\"errorMessage\"\n\t\t\ttype=\"error\"\n\t\t\t:show-alert=\"true\">\n\t\t\t<p>{{ errorMessage }}</p>\n\t\t</NcNoteCard>\n\t</div>\n</template>\n\n<script>\nimport { debounce } from 'debounce'\nimport {\n\tNcButton,\n\tNcColorPicker,\n\tNcNoteCard,\n} from '@nextcloud/vue'\nimport Undo from 'vue-material-design-icons/UndoVariant.vue'\n\nimport TextValueMixin from '../../mixins/admin/TextValueMixin.js'\n\nexport default {\n\tname: 'ColorPickerField',\n\n\tcomponents: {\n\t\tNcButton,\n\t\tNcColorPicker,\n\t\tNcNoteCard,\n\t\tUndo,\n\t},\n\n\tmixins: [\n\t\tTextValueMixin,\n\t],\n\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdefaultValue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tmethods: {\n\t\tdebounceSave: debounce(async function() {\n\t\t\tawait this.save()\n\t\t}, 200),\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import './shared/field.scss';\n\n.field {\n\t// Override default NcButton styles\n\t&__button {\n\t\twidth: 230px !important;\n\t\tborder-radius: var(--border-radius-large) !important;\n\t\tbackground-color: var(--color-primary-default) !important;\n\t\t&:hover {\n\t\t\tbackground-color: var(--color-primary-element-default-hover) !important;\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=style&index=0&id=6b238a3e&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=style&index=0&id=6b238a3e&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ColorPickerField.vue?vue&type=template&id=6b238a3e&scoped=true&\"\nimport script from \"./ColorPickerField.vue?vue&type=script&lang=js&\"\nexport * from \"./ColorPickerField.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ColorPickerField.vue?vue&type=style&index=0&id=6b238a3e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6b238a3e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"field\"},[_c('label',{attrs:{\"for\":_vm.id}},[_vm._v(_vm._s(_vm.displayName))]),_vm._v(\" \"),_c('div',{staticClass:\"field__row\"},[_c('NcColorPicker',{attrs:{\"value\":_vm.localValue,\"advanced-fields\":true},on:{\"update:value\":[function($event){_vm.localValue=$event},_vm.debounceSave]}},[_c('NcButton',{staticClass:\"field__button\",attrs:{\"type\":\"primary\",\"id\":_vm.id,\"aria-label\":_vm.t('theming', 'Select a custom color')}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.value)+\"\\n\\t\\t\\t\")])],1),_vm._v(\" \"),(_vm.value !== _vm.defaultValue)?_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('theming', 'Reset to default')},on:{\"click\":_vm.undo},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Undo',{attrs:{\"size\":20}})]},proxy:true}],null,false,33666776)}):_vm._e()],1),_vm._v(\" \"),(_vm.errorMessage)?_c('NcNoteCard',{attrs:{\"type\":\"error\",\"show-alert\":true}},[_c('p',[_vm._v(_vm._s(_vm.errorMessage))])]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<div class=\"field\">\n\t\t<label :for=\"id\">{{ displayName }}</label>\n\t\t<div class=\"field__row\">\n\t\t\t<NcButton type=\"secondary\"\n\t\t\t\t:id=\"id\"\n\t\t\t\t:aria-label=\"ariaLabel\"\n\t\t\t\t@click=\"activateLocalFilePicker\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Upload :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('theming', 'Upload') }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if=\"showReset\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\t:aria-label=\"t('theming', 'Reset to default')\"\n\t\t\t\t@click=\"undo\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Undo :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if=\"showRemove\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\t:aria-label=\"t('theming', 'Remove background image')\"\n\t\t\t\t@click=\"removeBackground\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Delete :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t\t<NcLoadingIcon v-if=\"showLoading\"\n\t\t\t\tclass=\"field__loading-icon\"\n\t\t\t\t:size=\"20\" />\n\t\t</div>\n\n\t\t<div v-if=\"(name === 'logoheader' || name === 'favicon') && mimeValue !== defaultMimeValue\"\n\t\t\tclass=\"field__preview\"\n\t\t\t:class=\"{\n\t\t\t\t'field__preview--logoheader': name === 'logoheader',\n\t\t\t\t'field__preview--favicon': name === 'favicon',\n\t\t\t}\" />\n\n\t\t<NcNoteCard v-if=\"errorMessage\"\n\t\t\ttype=\"error\"\n\t\t\t:show-alert=\"true\">\n\t\t\t<p>{{ errorMessage }}</p>\n\t\t</NcNoteCard>\n\n\t\t<input ref=\"input\"\n\t\t\ttype=\"file\"\n\t\t\t@change=\"onChange\">\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\nimport {\n\tNcButton,\n\tNcLoadingIcon,\n\tNcNoteCard,\n} from '@nextcloud/vue'\nimport Delete from 'vue-material-design-icons/Delete.vue'\nimport Undo from 'vue-material-design-icons/UndoVariant.vue'\nimport Upload from 'vue-material-design-icons/Upload.vue'\n\nimport FieldMixin from '../../mixins/admin/FieldMixin.js'\n\nexport default {\n\tname: 'FileInputField',\n\n\tcomponents: {\n\t\tDelete,\n\t\tNcButton,\n\t\tNcLoadingIcon,\n\t\tNcNoteCard,\n\t\tUndo,\n\t\tUpload,\n\t},\n\n\tmixins: [\n\t\tFieldMixin,\n\t],\n\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tmimeName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tmimeValue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdefaultMimeValue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tshowLoading: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tshowReset() {\n\t\t\treturn this.mimeValue !== this.defaultMimeValue\n\t\t},\n\n\t\tshowRemove() {\n\t\t\tif (this.name === 'background') {\n\t\t\t\tif (this.mimeValue.startsWith('image/')) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tif (this.mimeValue === this.defaultMimeValue) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t},\n\n\tmethods: {\n\t\tactivateLocalFilePicker() {\n\t\t\tthis.reset()\n\t\t\t// Set to null so that selecting the same file will trigger the change event\n\t\t\tthis.$refs.input.value = null\n\t\t\tthis.$refs.input.click()\n\t\t},\n\n\t\tasync onChange(e) {\n\t\t\tconst file = e.target.files[0]\n\n\t\t\tconst formData = new FormData()\n\t\t\tformData.append('key', this.name)\n\t\t\tformData.append('image', file)\n\n\t\t\tconst url = generateUrl('/apps/theming/ajax/uploadImage')\n\t\t\ttry {\n\t\t\t\tthis.showLoading = true\n\t\t\t\tawait axios.post(url, formData)\n\t\t\t\tthis.showLoading = false\n\t\t\t\tthis.$emit('update:mime-value', file.type)\n\t\t\t\tthis.handleSuccess()\n\t\t\t} catch (e) {\n\t\t\t\tthis.showLoading = false\n\t\t\t\tthis.errorMessage = e.response.data.data?.message\n\t\t\t}\n\t\t},\n\n\t\tasync undo() {\n\t\t\tthis.reset()\n\t\t\tconst url = generateUrl('/apps/theming/ajax/undoChanges')\n\t\t\ttry {\n\t\t\t\tawait axios.post(url, {\n\t\t\t\t\tsetting: this.mimeName,\n\t\t\t\t})\n\t\t\t\tthis.$emit('update:mime-value', this.defaultMimeValue)\n\t\t\t\tthis.handleSuccess()\n\t\t\t} catch (e) {\n\t\t\t\tthis.errorMessage = e.response.data.data?.message\n\t\t\t}\n\t\t},\n\n\t\tasync removeBackground() {\n\t\t\tthis.reset()\n\t\t\tconst url = generateUrl('/apps/theming/ajax/updateStylesheet')\n\t\t\ttry {\n\t\t\t\tawait axios.post(url, {\n\t\t\t\t\tsetting: this.mimeName,\n\t\t\t\t\tvalue: 'backgroundColor',\n\t\t\t\t})\n\t\t\t\tthis.$emit('update:mime-value', 'backgroundColor')\n\t\t\t\tthis.handleSuccess()\n\t\t\t} catch (e) {\n\t\t\t\tthis.errorMessage = e.response.data.data?.message\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import './shared/field.scss';\n\n.field {\n\t&__loading-icon {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t}\n\n\t&__preview {\n\t\twidth: 70px;\n\t\theight: 70px;\n\t\tbackground-size: contain;\n\t\tbackground-position: center;\n\t\tbackground-repeat: no-repeat;\n\t\tmargin: 10px 0;\n\n\t\t&--logoheader {\n\t\t\tbackground-image: var(--image-logoheader);\n\t\t}\n\n\t\t&--favicon {\n\t\t\tbackground-image: var(--image-favicon);\n\t\t}\n\t}\n}\n\ninput[type=\"file\"] {\n\tdisplay: none;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileInputField.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileInputField.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileInputField.vue?vue&type=style&index=0&id=137dd337&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileInputField.vue?vue&type=style&index=0&id=137dd337&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileInputField.vue?vue&type=template&id=137dd337&scoped=true&\"\nimport script from \"./FileInputField.vue?vue&type=script&lang=js&\"\nexport * from \"./FileInputField.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FileInputField.vue?vue&type=style&index=0&id=137dd337&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"137dd337\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"field\"},[_c('label',{attrs:{\"for\":_vm.id}},[_vm._v(_vm._s(_vm.displayName))]),_vm._v(\" \"),_c('div',{staticClass:\"field__row\"},[_c('NcButton',{attrs:{\"type\":\"secondary\",\"id\":_vm.id,\"aria-label\":_vm.ariaLabel},on:{\"click\":_vm.activateLocalFilePicker},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Upload',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Upload'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.showReset)?_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('theming', 'Reset to default')},on:{\"click\":_vm.undo},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Undo',{attrs:{\"size\":20}})]},proxy:true}],null,false,33666776)}):_vm._e(),_vm._v(\" \"),(_vm.showRemove)?_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('theming', 'Remove background image')},on:{\"click\":_vm.removeBackground},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete',{attrs:{\"size\":20}})]},proxy:true}],null,false,2705356561)}):_vm._e(),_vm._v(\" \"),(_vm.showLoading)?_c('NcLoadingIcon',{staticClass:\"field__loading-icon\",attrs:{\"size\":20}}):_vm._e()],1),_vm._v(\" \"),((_vm.name === 'logoheader' || _vm.name === 'favicon') && _vm.mimeValue !== _vm.defaultMimeValue)?_c('div',{staticClass:\"field__preview\",class:{\n\t\t\t'field__preview--logoheader': _vm.name === 'logoheader',\n\t\t\t'field__preview--favicon': _vm.name === 'favicon',\n\t\t}}):_vm._e(),_vm._v(\" \"),(_vm.errorMessage)?_c('NcNoteCard',{attrs:{\"type\":\"error\",\"show-alert\":true}},[_c('p',[_vm._v(_vm._s(_vm.errorMessage))])]):_vm._e(),_vm._v(\" \"),_c('input',{ref:\"input\",attrs:{\"type\":\"file\"},on:{\"change\":_vm.onChange}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextField.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextField.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<div class=\"field\">\n\t\t<NcTextField :value.sync=\"localValue\"\n\t\t\t:label=\"displayName\"\n\t\t\t:label-visible=\"true\"\n\t\t\t:placeholder=\"placeholder\"\n\t\t\t:type=\"type\"\n\t\t\t:maxlength=\"maxlength\"\n\t\t\t:spellcheck=\"false\"\n\t\t\t:success=\"showSuccess\"\n\t\t\t:error=\"Boolean(errorMessage)\"\n\t\t\t:helper-text=\"errorMessage\"\n\t\t\t:show-trailing-button=\"value !== defaultValue\"\n\t\t\ttrailing-button-icon=\"undo\"\n\t\t\t@trailing-button-click=\"undo\"\n\t\t\t@keydown.enter=\"save\"\n\t\t\t@blur=\"save\" />\n\t</div>\n</template>\n\n<script>\nimport { NcTextField } from '@nextcloud/vue'\n\nimport TextValueMixin from '../../mixins/admin/TextValueMixin.js'\n\nexport default {\n\tname: 'TextField',\n\n\tcomponents: {\n\t\tNcTextField,\n\t},\n\n\tmixins: [\n\t\tTextValueMixin,\n\t],\n\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdefaultValue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tmaxlength: {\n\t\t\ttype: Number,\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.field {\n\tmax-width: 400px;\n}\n</style>\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextField.vue?vue&type=style&index=0&id=21244e1d&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextField.vue?vue&type=style&index=0&id=21244e1d&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TextField.vue?vue&type=template&id=21244e1d&scoped=true&\"\nimport script from \"./TextField.vue?vue&type=script&lang=js&\"\nexport * from \"./TextField.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TextField.vue?vue&type=style&index=0&id=21244e1d&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"21244e1d\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"field\"},[_c('NcTextField',{attrs:{\"value\":_vm.localValue,\"label\":_vm.displayName,\"label-visible\":true,\"placeholder\":_vm.placeholder,\"type\":_vm.type,\"maxlength\":_vm.maxlength,\"spellcheck\":false,\"success\":_vm.showSuccess,\"error\":Boolean(_vm.errorMessage),\"helper-text\":_vm.errorMessage,\"show-trailing-button\":_vm.value !== _vm.defaultValue,\"trailing-button-icon\":\"undo\"},on:{\"update:value\":function($event){_vm.localValue=$event},\"trailing-button-click\":_vm.undo,\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.save.apply(null, arguments)},\"blur\":_vm.save}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<section>\n\t\t<NcSettingsSection :title=\"t('theming', 'Theming')\"\n\t\t\t:description=\"t('theming', 'Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users.')\"\n\t\t\t:doc-url=\"docUrl\">\n\t\t\t<div class=\"admin-theming\">\n\t\t\t\t<NcNoteCard v-if=\"!isThemable\"\n\t\t\t\t\ttype=\"error\"\n\t\t\t\t\t:show-alert=\"true\">\n\t\t\t\t\t<p>{{ notThemableErrorMessage }}</p>\n\t\t\t\t</NcNoteCard>\n\t\t\t\t<TextField v-for=\"field in textFields\"\n\t\t\t\t\t:key=\"field.name\"\n\t\t\t\t\t:name=\"field.name\"\n\t\t\t\t\t:value.sync=\"field.value\"\n\t\t\t\t\t:default-value=\"field.defaultValue\"\n\t\t\t\t\t:type=\"field.type\"\n\t\t\t\t\t:display-name=\"field.displayName\"\n\t\t\t\t\t:placeholder=\"field.placeholder\"\n\t\t\t\t\t:maxlength=\"field.maxlength\"\n\t\t\t\t\t@update:theming=\"$emit('update:theming')\" />\n\t\t\t\t<ColorPickerField :name=\"colorPickerField.name\"\n\t\t\t\t\t:value.sync=\"colorPickerField.value\"\n\t\t\t\t\t:default-value=\"colorPickerField.defaultValue\"\n\t\t\t\t\t:display-name=\"colorPickerField.displayName\"\n\t\t\t\t\t@update:theming=\"$emit('update:theming')\" />\n\t\t\t\t<FileInputField v-for=\"field in fileInputFields\"\n\t\t\t\t\t:key=\"field.name\"\n\t\t\t\t\t:name=\"field.name\"\n\t\t\t\t\t:mime-name=\"field.mimeName\"\n\t\t\t\t\t:mime-value.sync=\"field.mimeValue\"\n\t\t\t\t\t:default-mime-value=\"field.defaultMimeValue\"\n\t\t\t\t\t:display-name=\"field.displayName\"\n\t\t\t\t\t:aria-label=\"field.ariaLabel\"\n\t\t\t\t\t@update:theming=\"$emit('update:theming')\" />\n\t\t\t\t<div class=\"admin-theming__preview\">\n\t\t\t\t\t<div class=\"admin-theming__preview-logo\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</NcSettingsSection>\n\t\t<NcSettingsSection :title=\"t('theming', 'Advanced options')\">\n\t\t\t<div class=\"admin-theming-advanced\">\n\t\t\t\t<TextField v-for=\"field in advancedTextFields\"\n\t\t\t\t\t:key=\"field.name\"\n\t\t\t\t\t:name=\"field.name\"\n\t\t\t\t\t:value.sync=\"field.value\"\n\t\t\t\t\t:default-value=\"field.defaultValue\"\n\t\t\t\t\t:type=\"field.type\"\n\t\t\t\t\t:display-name=\"field.displayName\"\n\t\t\t\t\t:placeholder=\"field.placeholder\"\n\t\t\t\t\t:maxlength=\"field.maxlength\"\n\t\t\t\t\t@update:theming=\"$emit('update:theming')\" />\n\t\t\t\t<FileInputField v-for=\"field in advancedFileInputFields\"\n\t\t\t\t\t:key=\"field.name\"\n\t\t\t\t\t:name=\"field.name\"\n\t\t\t\t\t:mime-name=\"field.mimeName\"\n\t\t\t\t\t:mime-value.sync=\"field.mimeValue\"\n\t\t\t\t\t:default-mime-value=\"field.defaultMimeValue\"\n\t\t\t\t\t:display-name=\"field.displayName\"\n\t\t\t\t\t:aria-label=\"field.ariaLabel\"\n\t\t\t\t\t@update:theming=\"$emit('update:theming')\" />\n\t\t\t\t<CheckboxField :name=\"userThemingField.name\"\n\t\t\t\t\t:value=\"userThemingField.value\"\n\t\t\t\t\t:default-value=\"userThemingField.defaultValue\"\n\t\t\t\t\t:display-name=\"userThemingField.displayName\"\n\t\t\t\t\t:label=\"userThemingField.label\"\n\t\t\t\t\t:description=\"userThemingField.description\"\n\t\t\t\t\t@update:theming=\"$emit('update:theming')\" />\n\t\t\t\t<a v-if=\"!canThemeIcons\"\n\t\t\t\t\t:href=\"docUrlIcons\"\n\t\t\t\t\trel=\"noreferrer noopener\">\n\t\t\t\t\t<em>{{ t('theming', 'Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color.') }}</em>\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t</NcSettingsSection>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport {\n\tNcNoteCard,\n\tNcSettingsSection,\n} from '@nextcloud/vue'\nimport CheckboxField from './components/admin/CheckboxField.vue'\nimport ColorPickerField from './components/admin/ColorPickerField.vue'\nimport FileInputField from './components/admin/FileInputField.vue'\nimport TextField from './components/admin/TextField.vue'\n\nconst {\n\tbackgroundMime,\n\tcanThemeIcons,\n\tcolor,\n\tdocUrl,\n\tdocUrlIcons,\n\tfaviconMime,\n\tisThemable,\n\tlegalNoticeUrl,\n\tlogoheaderMime,\n\tlogoMime,\n\tname,\n\tnotThemableErrorMessage,\n\tprivacyPolicyUrl,\n\tslogan,\n\turl,\n\tuserThemingDisabled,\n} = loadState('theming', 'adminThemingParameters')\n\nconst textFields = [\n\t{\n\t\tname: 'name',\n\t\tvalue: name,\n\t\tdefaultValue: 'Nextcloud',\n\t\ttype: 'text',\n\t\tdisplayName: t('theming', 'Name'),\n\t\tplaceholder: t('theming', 'Name'),\n\t\tmaxlength: 250,\n\t},\n\t{\n\t\tname: 'url',\n\t\tvalue: url,\n\t\tdefaultValue: 'https://nextcloud.com',\n\t\ttype: 'url',\n\t\tdisplayName: t('theming', 'Web link'),\n\t\tplaceholder: 'https://…',\n\t\tmaxlength: 500,\n\t},\n\t{\n\t\tname: 'slogan',\n\t\tvalue: slogan,\n\t\tdefaultValue: t('theming', 'a safe home for all your data'),\n\t\ttype: 'text',\n\t\tdisplayName: t('theming', 'Slogan'),\n\t\tplaceholder: t('theming', 'Slogan'),\n\t\tmaxlength: 500,\n\t},\n]\n\nconst colorPickerField = {\n\tname: 'color',\n\tvalue: color,\n\tdefaultValue: '#0082c9',\n\tdisplayName: t('theming', 'Color'),\n}\n\nconst fileInputFields = [\n\t{\n\t\tname: 'logo',\n\t\tmimeName: 'logoMime',\n\t\tmimeValue: logoMime,\n\t\tdefaultMimeValue: '',\n\t\tdisplayName: t('theming', 'Logo'),\n\t\tariaLabel: t('theming', 'Upload new logo'),\n\t},\n\t{\n\t\tname: 'background',\n\t\tmimeName: 'backgroundMime',\n\t\tmimeValue: backgroundMime,\n\t\tdefaultMimeValue: '',\n\t\tdisplayName: t('theming', 'Background and login image'),\n\t\tariaLabel: t('theming', 'Upload new background and login image'),\n\t},\n]\n\nconst advancedTextFields = [\n\t{\n\t\tname: 'imprintUrl',\n\t\tvalue: legalNoticeUrl,\n\t\tdefaultValue: '',\n\t\ttype: 'url',\n\t\tdisplayName: t('theming', 'Legal notice link'),\n\t\tplaceholder: 'https://…',\n\t\tmaxlength: 500,\n\t},\n\t{\n\t\tname: 'privacyUrl',\n\t\tvalue: privacyPolicyUrl,\n\t\tdefaultValue: '',\n\t\ttype: 'url',\n\t\tdisplayName: t('theming', 'Privacy policy link'),\n\t\tplaceholder: 'https://…',\n\t\tmaxlength: 500,\n\t},\n]\n\nconst advancedFileInputFields = [\n\t{\n\t\tname: 'logoheader',\n\t\tmimeName: 'logoheaderMime',\n\t\tmimeValue: logoheaderMime,\n\t\tdefaultMimeValue: '',\n\t\tdisplayName: t('theming', 'Header logo'),\n\t\tariaLabel: t('theming', 'Upload new header logo'),\n\t},\n\t{\n\t\tname: 'favicon',\n\t\tmimeName: 'faviconMime',\n\t\tmimeValue: faviconMime,\n\t\tdefaultMimeValue: '',\n\t\tdisplayName: t('theming', 'Favicon'),\n\t\tariaLabel: t('theming', 'Upload new favicon'),\n\t},\n]\n\nconst userThemingField = {\n\tname: 'disable-user-theming',\n\tvalue: userThemingDisabled,\n\tdefaultValue: false,\n\tdisplayName: t('theming', 'User settings'),\n\tlabel: t('theming', 'Disable user theming'),\n\tdescription: t('theming', 'Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on.'),\n}\n\nexport default {\n\tname: 'AdminTheming',\n\n\tcomponents: {\n\t\tCheckboxField,\n\t\tColorPickerField,\n\t\tFileInputField,\n\t\tNcNoteCard,\n\t\tNcSettingsSection,\n\t\tTextField,\n\t},\n\n\temits: [\n\t\t'update:theming',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\ttextFields,\n\t\t\tcolorPickerField,\n\t\t\tfileInputFields,\n\t\t\tadvancedTextFields,\n\t\t\tadvancedFileInputFields,\n\t\t\tuserThemingField,\n\n\t\t\tcanThemeIcons,\n\t\t\tdocUrl,\n\t\t\tdocUrlIcons,\n\t\t\tisThemable,\n\t\t\tnotThemableErrorMessage,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.admin-theming,\n.admin-theming-advanced {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n}\n\n.admin-theming {\n\t&__preview {\n\t\twidth: 230px;\n\t\theight: 140px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center;\n\t\ttext-align: center;\n\t\tmargin-top: 10px;\n\t\tbackground-color: var(--color-primary-default);\n\t\tbackground-image: var(--image-background-default, var(--image-background-plain, url('../../../core/img/app-background.jpg'), linear-gradient(40deg, #0082c9 0%, #30b6ff 100%)));\n\n\t\t&-logo {\n\t\t\twidth: 20%;\n\t\t\theight: 20%;\n\t\t\tmargin-top: 20px;\n\t\t\tdisplay: inline-block;\n\t\t\tbackground-size: contain;\n\t\t\tbackground-position: center;\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-image: var(--image-logo, url('../../../core/img/logo/logo.svg'));\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTheming.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTheming.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTheming.vue?vue&type=style&index=0&id=5557ff20&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTheming.vue?vue&type=style&index=0&id=5557ff20&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AdminTheming.vue?vue&type=template&id=5557ff20&scoped=true&\"\nimport script from \"./AdminTheming.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTheming.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AdminTheming.vue?vue&type=style&index=0&id=5557ff20&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5557ff20\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('NcSettingsSection',{attrs:{\"title\":_vm.t('theming', 'Theming'),\"description\":_vm.t('theming', 'Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users.'),\"doc-url\":_vm.docUrl}},[_c('div',{staticClass:\"admin-theming\"},[(!_vm.isThemable)?_c('NcNoteCard',{attrs:{\"type\":\"error\",\"show-alert\":true}},[_c('p',[_vm._v(_vm._s(_vm.notThemableErrorMessage))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.textFields),function(field){return _c('TextField',{key:field.name,attrs:{\"name\":field.name,\"value\":field.value,\"default-value\":field.defaultValue,\"type\":field.type,\"display-name\":field.displayName,\"placeholder\":field.placeholder,\"maxlength\":field.maxlength},on:{\"update:value\":function($event){return _vm.$set(field, \"value\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}})}),_vm._v(\" \"),_c('ColorPickerField',{attrs:{\"name\":_vm.colorPickerField.name,\"value\":_vm.colorPickerField.value,\"default-value\":_vm.colorPickerField.defaultValue,\"display-name\":_vm.colorPickerField.displayName},on:{\"update:value\":function($event){return _vm.$set(_vm.colorPickerField, \"value\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}}),_vm._v(\" \"),_vm._l((_vm.fileInputFields),function(field){return _c('FileInputField',{key:field.name,attrs:{\"name\":field.name,\"mime-name\":field.mimeName,\"mime-value\":field.mimeValue,\"default-mime-value\":field.defaultMimeValue,\"display-name\":field.displayName,\"aria-label\":field.ariaLabel},on:{\"update:mimeValue\":function($event){return _vm.$set(field, \"mimeValue\", $event)},\"update:mime-value\":function($event){return _vm.$set(field, \"mimeValue\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}})}),_vm._v(\" \"),_c('div',{staticClass:\"admin-theming__preview\"},[_c('div',{staticClass:\"admin-theming__preview-logo\"})])],2)]),_vm._v(\" \"),_c('NcSettingsSection',{attrs:{\"title\":_vm.t('theming', 'Advanced options')}},[_c('div',{staticClass:\"admin-theming-advanced\"},[_vm._l((_vm.advancedTextFields),function(field){return _c('TextField',{key:field.name,attrs:{\"name\":field.name,\"value\":field.value,\"default-value\":field.defaultValue,\"type\":field.type,\"display-name\":field.displayName,\"placeholder\":field.placeholder,\"maxlength\":field.maxlength},on:{\"update:value\":function($event){return _vm.$set(field, \"value\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}})}),_vm._v(\" \"),_vm._l((_vm.advancedFileInputFields),function(field){return _c('FileInputField',{key:field.name,attrs:{\"name\":field.name,\"mime-name\":field.mimeName,\"mime-value\":field.mimeValue,\"default-mime-value\":field.defaultMimeValue,\"display-name\":field.displayName,\"aria-label\":field.ariaLabel},on:{\"update:mimeValue\":function($event){return _vm.$set(field, \"mimeValue\", $event)},\"update:mime-value\":function($event){return _vm.$set(field, \"mimeValue\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}})}),_vm._v(\" \"),_c('CheckboxField',{attrs:{\"name\":_vm.userThemingField.name,\"value\":_vm.userThemingField.value,\"default-value\":_vm.userThemingField.defaultValue,\"display-name\":_vm.userThemingField.displayName,\"label\":_vm.userThemingField.label,\"description\":_vm.userThemingField.description},on:{\"update:theming\":function($event){return _vm.$emit('update:theming')}}}),_vm._v(\" \"),(!_vm.canThemeIcons)?_c('a',{attrs:{\"href\":_vm.docUrlIcons,\"rel\":\"noreferrer noopener\"}},[_c('em',[_vm._v(_vm._s(_vm.t('theming', 'Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color.')))])]):_vm._e()],2)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport App from './AdminTheming.vue'\nimport { refreshStyles } from './helpers/refreshStyles.js'\n\nVue.prototype.OC = OC\nVue.prototype.t = t\n\nconst View = Vue.extend(App)\nconst theming = new View()\ntheming.$mount('#admin-theming')\ntheming.$on('update:theming', refreshStyles)\n","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const refreshStyles = () => {\n\t// Refresh server-side generated theming CSS\n\t[...document.head.querySelectorAll('link.theme')].forEach(theme => {\n\t\tconst url = new URL(theme.href)\n\t\turl.searchParams.set('v', Date.now())\n\t\tconst newTheme = theme.cloneNode()\n\t\tnewTheme.href = url.toString()\n\t\tnewTheme.onload = () => theme.remove()\n\t\tdocument.head.append(newTheme)\n\t})\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../../../core/img/app-background.jpg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"../../../core/img/logo/logo.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".admin-theming[data-v-5557ff20],.admin-theming-advanced[data-v-5557ff20]{display:flex;flex-direction:column;gap:8px 0}.admin-theming__preview[data-v-5557ff20]{width:230px;height:140px;background-size:cover;background-position:center;text-align:center;margin-top:10px;background-color:var(--color-primary-default);background-image:var(--image-background-default, var(--image-background-plain, url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \"), linear-gradient(40deg, #0082c9 0%, #30b6ff 100%)))}.admin-theming__preview-logo[data-v-5557ff20]{width:20%;height:20%;margin-top:20px;display:inline-block;background-size:contain;background-position:center;background-repeat:no-repeat;background-image:var(--image-logo, url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \"))}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/AdminTheming.vue\"],\"names\":[],\"mappings\":\"AAgRA,yEAEC,YAAA,CACA,qBAAA,CACA,SAAA,CAIA,yCACC,WAAA,CACA,YAAA,CACA,qBAAA,CACA,0BAAA,CACA,iBAAA,CACA,eAAA,CACA,6CAAA,CACA,0KAAA,CAEA,8CACC,SAAA,CACA,UAAA,CACA,eAAA,CACA,oBAAA,CACA,uBAAA,CACA,0BAAA,CACA,2BAAA,CACA,2EAAA\",\"sourcesContent\":[\"\\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\\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\\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\\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\\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\\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\\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\\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\\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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.admin-theming,\\n.admin-theming-advanced {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 8px 0;\\n}\\n\\n.admin-theming {\\n\\t&__preview {\\n\\t\\twidth: 230px;\\n\\t\\theight: 140px;\\n\\t\\tbackground-size: cover;\\n\\t\\tbackground-position: center;\\n\\t\\ttext-align: center;\\n\\t\\tmargin-top: 10px;\\n\\t\\tbackground-color: var(--color-primary-default);\\n\\t\\tbackground-image: var(--image-background-default, var(--image-background-plain, url('../../../core/img/app-background.jpg'), linear-gradient(40deg, #0082c9 0%, #30b6ff 100%)));\\n\\n\\t\\t&-logo {\\n\\t\\t\\twidth: 20%;\\n\\t\\t\\theight: 20%;\\n\\t\\t\\tmargin-top: 20px;\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\tbackground-size: contain;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\tbackground-image: var(--image-logo, url('../../../core/img/logo/logo.svg'));\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".field[data-v-17145f08]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-17145f08]{display:flex;gap:0 4px}.field__description[data-v-17145f08]{color:var(--color-text-maxcontrast)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/shared/field.scss\",\"webpack://./apps/theming/src/components/admin/CheckboxField.vue\"],\"names\":[],\"mappings\":\"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCoED,qCACC,mCAAA\",\"sourcesContent\":[\"/**\\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\\n *\\n * @author Christopher Ng <chrng8@gmail.com>\\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n.field {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 4px 0;\\n\\n\\t&__row {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 4px;\\n\\t}\\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\\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\\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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n@import './shared/field.scss';\\n\\n.field {\\n\\t&__description {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".field[data-v-6b238a3e]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-6b238a3e]{display:flex;gap:0 4px}.field__button[data-v-6b238a3e]{width:230px !important;border-radius:var(--border-radius-large) !important;background-color:var(--color-primary-default) !important}.field__button[data-v-6b238a3e]:hover{background-color:var(--color-primary-element-default-hover) !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/shared/field.scss\",\"webpack://./apps/theming/src/components/admin/ColorPickerField.vue\"],\"names\":[],\"mappings\":\"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCkFD,gCACC,sBAAA,CACA,mDAAA,CACA,wDAAA,CACA,sCACC,sEAAA\",\"sourcesContent\":[\"/**\\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\\n *\\n * @author Christopher Ng <chrng8@gmail.com>\\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n.field {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 4px 0;\\n\\n\\t&__row {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 4px;\\n\\t}\\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\\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\\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\\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@import './shared/field.scss';\\n\\n.field {\\n\\t// Override default NcButton styles\\n\\t&__button {\\n\\t\\twidth: 230px !important;\\n\\t\\tborder-radius: var(--border-radius-large) !important;\\n\\t\\tbackground-color: var(--color-primary-default) !important;\\n\\t\\t&:hover {\\n\\t\\t\\tbackground-color: var(--color-primary-element-default-hover) !important;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".field[data-v-137dd337]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-137dd337]{display:flex;gap:0 4px}.field__loading-icon[data-v-137dd337]{width:44px;height:44px}.field__preview[data-v-137dd337]{width:70px;height:70px;background-size:contain;background-position:center;background-repeat:no-repeat;margin:10px 0}.field__preview--logoheader[data-v-137dd337]{background-image:var(--image-logoheader)}.field__preview--favicon[data-v-137dd337]{background-image:var(--image-favicon)}input[type=file][data-v-137dd337]{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/shared/field.scss\",\"webpack://./apps/theming/src/components/admin/FileInputField.vue\"],\"names\":[],\"mappings\":\"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCgMD,sCACC,UAAA,CACA,WAAA,CAGD,iCACC,UAAA,CACA,WAAA,CACA,uBAAA,CACA,0BAAA,CACA,2BAAA,CACA,aAAA,CAEA,6CACC,wCAAA,CAGD,0CACC,qCAAA,CAKH,kCACC,YAAA\",\"sourcesContent\":[\"/**\\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\\n *\\n * @author Christopher Ng <chrng8@gmail.com>\\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n.field {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 4px 0;\\n\\n\\t&__row {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 4px;\\n\\t}\\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\\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\\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\\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\\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\\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\\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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n@import './shared/field.scss';\\n\\n.field {\\n\\t&__loading-icon {\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t}\\n\\n\\t&__preview {\\n\\t\\twidth: 70px;\\n\\t\\theight: 70px;\\n\\t\\tbackground-size: contain;\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tmargin: 10px 0;\\n\\n\\t\\t&--logoheader {\\n\\t\\t\\tbackground-image: var(--image-logoheader);\\n\\t\\t}\\n\\n\\t\\t&--favicon {\\n\\t\\t\\tbackground-image: var(--image-favicon);\\n\\t\\t}\\n\\t}\\n}\\n\\ninput[type=\\\"file\\\"] {\\n\\tdisplay: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".field[data-v-21244e1d]{max-width:400px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/TextField.vue\"],\"names\":[],\"mappings\":\"AA4FA,wBACC,eAAA\",\"sourcesContent\":[\"\\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\\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\\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\\n\\n\\n\\n\\n\\n\\n\\n.field {\\n\\tmax-width: 400px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 5544;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t5544: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(34475); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","styleRefreshFields","emits","data","showSuccess","errorMessage","computed","id","this","name","methods","reset","handleSuccess","setTimeout","includes","$emit","mixins","FieldMixin","watch","value","localValue","save","url","generateUrl","valueToPost","axios","setting","response","message","undo","defaultValue","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_h","$createElement","_c","_self","staticClass","attrs","_v","_s","displayName","on","$event","label","description","_e","debounceSave","t","scopedSlots","_u","key","fn","proxy","ariaLabel","activateLocalFilePicker","removeBackground","mimeValue","defaultMimeValue","class","ref","onChange","placeholder","type","maxlength","Boolean","indexOf","_k","keyCode","apply","arguments","docUrl","isThemable","notThemableErrorMessage","_l","field","$set","colorPickerField","mimeName","userThemingField","canThemeIcons","docUrlIcons","Vue","OC","theming","App","$mount","$on","document","head","querySelectorAll","forEach","theme","URL","href","searchParams","set","Date","now","newTheme","cloneNode","toString","onload","remove","append","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"theming-admin-theming.js?v=32b1b81d6863b93c7294","mappings":";6BAAIA,qFCsBEC,EAAqB,CAC1B,QACA,OACA,aACA,aACA,UACA,wBAGD,GACCC,MAAO,CACN,kBAGDC,KALc,WAMb,MAAO,CACNC,aAAa,EACbC,aAAc,GAEf,EAEDC,SAAU,CACTC,GADS,WAER,8BAAwBC,KAAKC,KAC7B,GAGFC,QAAS,CACRC,MADQ,WAEPH,KAAKJ,aAAc,EACnBI,KAAKH,aAAe,EACpB,EAEDO,cANQ,WAMQ,WACfJ,KAAKJ,aAAc,EACnBS,YAAW,WAAQ,EAAKT,aAAc,CAAO,GAAE,KAC3CH,EAAmBa,SAASN,KAAKC,OACpCD,KAAKO,MAAM,iBAEZ,gUClCH,OACCC,OAAQ,CACPC,GAGDC,MAAO,CACNC,MADM,SACAA,GACLX,KAAKY,WAAaD,CAClB,GAGFhB,KAXc,WAYb,MAAO,CACNiB,WAAYZ,KAAKW,MAElB,EAEDT,QAAS,CACFW,KADE,WACK,2JACZ,EAAKV,QACCW,GAAMC,EAAAA,EAAAA,aAAY,uCAElBC,GAAkC,IAApB,EAAKJ,WAAsB,OAA4B,IAApB,EAAKA,WAAuB,KAAO,EAAKA,WAJnF,kBAMLK,EAAAA,QAAAA,KAAWH,EAAK,CACrBI,QAAS,EAAKjB,KACdU,MAAOK,IARG,OAUX,EAAKT,MAAM,eAAgB,EAAKK,YAChC,EAAKR,gBAXM,kDAaX,EAAKP,aAAL,UAAoB,KAAEsB,SAASxB,KAAKA,YAApC,aAAoB,EAAsByB,QAb/B,2DAeZ,EAEKC,KAlBE,WAkBK,yJACZ,EAAKlB,QACCW,GAAMC,EAAAA,EAAAA,aAAY,kCAFZ,kBAILE,EAAAA,QAAAA,KAAWH,EAAK,CACrBI,QAAS,EAAKjB,OALJ,OAOX,EAAKM,MAAM,eAAgB,EAAKe,cAChC,EAAKlB,gBARM,gDAUX,EAAKP,aAAL,UAAoB,KAAEsB,SAASxB,KAAKA,YAApC,aAAoB,EAAsByB,QAV/B,0DAYZ,IC1E6L,ECoDhM,CACA,qBAEA,YACA,2BACA,iBAGA,QACA,GAGA,OACA,MACA,YACA,aAEA,OACA,aACA,aAEA,cACA,aACA,aAEA,aACA,YACA,aAEA,OACA,YACA,aAEA,aACA,YACA,gJC5EIG,EAAU,CAAC,EAEfA,EAAQC,kBAAoB,IAC5BD,EAAQE,cAAgB,IAElBF,EAAQG,OAAS,SAAc,KAAM,QAE3CH,EAAQI,OAAS,IACjBJ,EAAQK,mBAAqB,IAEhB,IAAI,IAASL,GAKJ,KAAW,YAAiB,WALlD,eCFA,GAXgB,OACd,GCTW,WAAa,IAAIM,EAAI7B,KAAS8B,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,SAAS,CAACF,EAAG,QAAQ,CAACG,MAAM,CAAC,IAAMN,EAAI9B,KAAK,CAAC8B,EAAIO,GAAGP,EAAIQ,GAAGR,EAAIS,gBAAgBT,EAAIO,GAAG,KAAKJ,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,wBAAwB,CAACG,MAAM,CAAC,KAAO,SAAS,GAAKN,EAAI9B,GAAG,QAAU8B,EAAIjB,YAAY2B,GAAG,CAAC,iBAAiB,CAAC,SAASC,GAAQX,EAAIjB,WAAW4B,CAAM,EAAEX,EAAIhB,QAAQ,CAACgB,EAAIO,GAAG,WAAWP,EAAIQ,GAAGR,EAAIY,OAAO,aAAa,GAAGZ,EAAIO,GAAG,KAAKJ,EAAG,IAAI,CAACE,YAAY,sBAAsB,CAACL,EAAIO,GAAGP,EAAIQ,GAAGR,EAAIa,gBAAgBb,EAAIO,GAAG,KAAMP,EAAgB,aAAEG,EAAG,aAAa,CAACG,MAAM,CAAC,KAAO,QAAQ,cAAa,IAAO,CAACH,EAAG,IAAI,CAACH,EAAIO,GAAGP,EAAIQ,GAAGR,EAAIhC,mBAAmBgC,EAAIc,MAAM,EAAE,GACrqB,IDWpB,EACA,KACA,WACA,MAI8B,0VE8ChC,ICjEmM,EDiEnM,CACA,wBAEA,YACA,cACA,kBACA,gBACA,gBAGA,QACA,GAGA,OACA,MACA,YACA,aAEA,OACA,YACA,aAEA,cACA,YACA,aAEA,aACA,YACA,cAIA,SACA,oKACA,YADA,gDAEA,kBE1FI,EAAU,CAAC,EAEf,EAAQnB,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,YAAiB,WALlD,ICFA,GAXgB,OACd,GCTW,WAAa,IAAIC,EAAI7B,KAAS8B,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,SAAS,CAACF,EAAG,QAAQ,CAACG,MAAM,CAAC,IAAMN,EAAI9B,KAAK,CAAC8B,EAAIO,GAAGP,EAAIQ,GAAGR,EAAIS,gBAAgBT,EAAIO,GAAG,KAAKJ,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,gBAAgB,CAACG,MAAM,CAAC,MAAQN,EAAIjB,WAAW,mBAAkB,GAAM2B,GAAG,CAAC,eAAe,CAAC,SAASC,GAAQX,EAAIjB,WAAW4B,CAAM,EAAEX,EAAIe,gBAAgB,CAACZ,EAAG,WAAW,CAACE,YAAY,gBAAgBC,MAAM,CAAC,KAAO,UAAU,GAAKN,EAAI9B,GAAG,aAAa8B,EAAIgB,EAAE,UAAW,2BAA2B,CAAChB,EAAIO,GAAG,aAAaP,EAAIQ,GAAGR,EAAIlB,OAAO,eAAe,GAAGkB,EAAIO,GAAG,KAAMP,EAAIlB,QAAUkB,EAAIP,aAAcU,EAAG,WAAW,CAACG,MAAM,CAAC,KAAO,WAAW,aAAaN,EAAIgB,EAAE,UAAW,qBAAqBN,GAAG,CAAC,MAAQV,EAAIR,MAAMyB,YAAYjB,EAAIkB,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAO,CAACjB,EAAG,OAAO,CAACG,MAAM,CAAC,KAAO,MAAM,EAAEe,OAAM,IAAO,MAAK,EAAM,YAAYrB,EAAIc,MAAM,GAAGd,EAAIO,GAAG,KAAMP,EAAgB,aAAEG,EAAG,aAAa,CAACG,MAAM,CAAC,KAAO,QAAQ,cAAa,IAAO,CAACH,EAAG,IAAI,CAACH,EAAIO,GAAGP,EAAIQ,GAAGR,EAAIhC,mBAAmBgC,EAAIc,MAAM,EAAE,GACt/B,IDWpB,EACA,KACA,WACA,MAI8B,0VEuEhC,OACA,sBAEA,YACA,WACA,cACA,mBACA,gBACA,eACA,YAGA,QACA,GAGA,OACA,MACA,YACA,aAEA,UACA,YACA,aAEA,WACA,YACA,aAEA,kBACA,YACA,aAEA,aACA,YACA,aAEA,WACA,YACA,cAIA,KA3CA,WA4CA,OACA,eAEA,EAEA,UACA,UADA,WAEA,6CACA,EAEA,WALA,WAMA,6BACA,uCACA,SAEA,0CACA,QAEA,CACA,QACA,GAGA,SACA,wBADA,WAEA,aAEA,4BACA,wBACA,EAEA,SARA,SAQA,gKACA,qBAEA,gBACA,qBACA,oBAEA,sDAPA,SASA,iBATA,SAUA,oBAVA,OAWA,iBACA,oCACA,kBAbA,kDAeA,iBACA,+EAhBA,2DAkBA,EAEA,KA5BA,WA4BA,yJACA,UACA,sDAFA,kBAIA,kBACA,qBALA,OAOA,gDACA,kBARA,gDAUA,+EAVA,0DAYA,EAEA,iBA1CA,WA0CA,yJACA,UACA,2DAFA,kBAIA,kBACA,mBACA,0BANA,OAQA,+CACA,kBATA,gDAWA,+EAXA,0DAaA,ICpNiM,cCW7L,EAAU,CAAC,EAEf,EAAQnB,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,YAAiB,WALlD,ICFA,GAXgB,OACd,GCTW,WAAa,IAAIC,EAAI7B,KAAS8B,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,SAAS,CAACF,EAAG,QAAQ,CAACG,MAAM,CAAC,IAAMN,EAAI9B,KAAK,CAAC8B,EAAIO,GAAGP,EAAIQ,GAAGR,EAAIS,gBAAgBT,EAAIO,GAAG,KAAKJ,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,WAAW,CAACG,MAAM,CAAC,KAAO,YAAY,GAAKN,EAAI9B,GAAG,aAAa8B,EAAIsB,WAAWZ,GAAG,CAAC,MAAQV,EAAIuB,yBAAyBN,YAAYjB,EAAIkB,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAO,CAACjB,EAAG,SAAS,CAACG,MAAM,CAAC,KAAO,MAAM,EAAEe,OAAM,MAAS,CAACrB,EAAIO,GAAG,WAAWP,EAAIQ,GAAGR,EAAIgB,EAAE,UAAW,WAAW,YAAYhB,EAAIO,GAAG,KAAMP,EAAa,UAAEG,EAAG,WAAW,CAACG,MAAM,CAAC,KAAO,WAAW,aAAaN,EAAIgB,EAAE,UAAW,qBAAqBN,GAAG,CAAC,MAAQV,EAAIR,MAAMyB,YAAYjB,EAAIkB,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAO,CAACjB,EAAG,OAAO,CAACG,MAAM,CAAC,KAAO,MAAM,EAAEe,OAAM,IAAO,MAAK,EAAM,YAAYrB,EAAIc,KAAKd,EAAIO,GAAG,KAAMP,EAAc,WAAEG,EAAG,WAAW,CAACG,MAAM,CAAC,KAAO,WAAW,aAAaN,EAAIgB,EAAE,UAAW,4BAA4BN,GAAG,CAAC,MAAQV,EAAIwB,kBAAkBP,YAAYjB,EAAIkB,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAO,CAACjB,EAAG,SAAS,CAACG,MAAM,CAAC,KAAO,MAAM,EAAEe,OAAM,IAAO,MAAK,EAAM,cAAcrB,EAAIc,KAAKd,EAAIO,GAAG,KAAMP,EAAe,YAAEG,EAAG,gBAAgB,CAACE,YAAY,sBAAsBC,MAAM,CAAC,KAAO,MAAMN,EAAIc,MAAM,GAAGd,EAAIO,GAAG,KAAoB,eAAbP,EAAI5B,MAAsC,YAAb4B,EAAI5B,MAAuB4B,EAAIyB,YAAczB,EAAI0B,iBAG/xC1B,EAAIc,KAH6yCX,EAAG,MAAM,CAACE,YAAY,iBAAiBsB,MAAM,CACj2C,6BAA2C,eAAb3B,EAAI5B,KAClC,0BAAwC,YAAb4B,EAAI5B,QACnB4B,EAAIO,GAAG,KAAMP,EAAgB,aAAEG,EAAG,aAAa,CAACG,MAAM,CAAC,KAAO,QAAQ,cAAa,IAAO,CAACH,EAAG,IAAI,CAACH,EAAIO,GAAGP,EAAIQ,GAAGR,EAAIhC,mBAAmBgC,EAAIc,KAAKd,EAAIO,GAAG,KAAKJ,EAAG,QAAQ,CAACyB,IAAI,QAAQtB,MAAM,CAAC,KAAO,QAAQI,GAAG,CAAC,OAASV,EAAI6B,aAAa,EAAE,GACpO,IDQpB,EACA,KACA,WACA,MAI8B,QEnB4J,EC+C5L,CACA,iBAEA,YACA,kBAGA,QACA,GAGA,OACA,MACA,YACA,aAEA,OACA,YACA,aAEA,cACA,YACA,aAEA,MACA,YACA,aAEA,aACA,YACA,aAEA,aACA,YACA,aAEA,WACA,YACA,0BC1EI,EAAU,CAAC,EAEf,EAAQlC,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,YAAiB,WALlD,ICbI,GAAY,OACd,GCTW,WAAa,IAAIC,EAAI7B,KAAS8B,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,SAAS,CAACF,EAAG,cAAc,CAACG,MAAM,CAAC,MAAQN,EAAIjB,WAAW,MAAQiB,EAAIS,YAAY,iBAAgB,EAAK,YAAcT,EAAI8B,YAAY,KAAO9B,EAAI+B,KAAK,UAAY/B,EAAIgC,UAAU,YAAa,EAAM,QAAUhC,EAAIjC,YAAY,MAAQkE,QAAQjC,EAAIhC,cAAc,cAAcgC,EAAIhC,aAAa,uBAAuBgC,EAAIlB,QAAUkB,EAAIP,aAAa,uBAAuB,QAAQiB,GAAG,CAAC,eAAe,SAASC,GAAQX,EAAIjB,WAAW4B,CAAM,EAAE,wBAAwBX,EAAIR,KAAK,QAAU,SAASmB,GAAQ,OAAIA,EAAOoB,KAAKG,QAAQ,QAAQlC,EAAImC,GAAGxB,EAAOyB,QAAQ,QAAQ,GAAGzB,EAAOQ,IAAI,SAAkB,KAAcnB,EAAIhB,KAAKqD,MAAM,KAAMC,UAAU,EAAE,KAAOtC,EAAIhB,SAAS,EAAE,GAC5uB,IDWpB,EACA,KACA,WACA,MAIF,EAAe,EAAiB,QE6FhC,GAiBA,mDAhBA,GADA,EACA,eACA,GAFA,EAEA,cACA,GAHA,EAGA,MACA,GAJA,EAIA,OACA,GALA,EAKA,YACA,GANA,EAMA,YACA,GAPA,EAOA,WACA,GARA,EAQA,eACA,GATA,EASA,eACA,GAVA,EAUA,SACA,GAXA,EAWA,KACA,GAZA,EAYA,wBACA,GAbA,EAaA,iBACA,GAdA,EAcA,OACA,GAfA,EAeA,IACA,GAhBA,EAgBA,oBAGA,IACA,CACA,YACA,SACA,yBACA,YACA,gCACA,gCACA,eAEA,CACA,WACA,SACA,qCACA,WACA,oCACA,wBACA,eAEA,CACA,cACA,SACA,0DACA,YACA,kCACA,kCACA,gBAIA,IACA,aACA,SACA,uBACA,kCAGA,IACA,CACA,YACA,oBACA,aACA,oBACA,gCACA,0CAEA,CACA,kBACA,0BACA,aACA,oBACA,sDACA,iEAIA,IACA,CACA,kBACA,SACA,gBACA,WACA,6CACA,wBACA,eAEA,CACA,kBACA,SACA,gBACA,WACA,+CACA,wBACA,gBAIA,IACA,CACA,kBACA,0BACA,aACA,oBACA,uCACA,iDAEA,CACA,eACA,uBACA,aACA,oBACA,mCACA,8CAIA,IACA,4BACA,SACA,gBACA,yCACA,0CACA,kMCzOmL,GD4OnL,CACA,oBAEA,YACA,gBACA,mBACA,iBACA,gBACA,uBACA,aAGA,OACA,kBAGA,KAhBA,WAiBA,OACA,cACA,oBACA,mBACA,sBACA,2BACA,oBAEA,iBACA,UACA,eACA,cACA,2BAEA,eEhQI,GAAU,CAAC,EAEf,GAAQW,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIC,EAAI7B,KAAS8B,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACA,EAAG,oBAAoB,CAACG,MAAM,CAAC,MAAQN,EAAIgB,EAAE,UAAW,WAAW,YAAchB,EAAIgB,EAAE,UAAW,+IAA+I,UAAUhB,EAAIuC,SAAS,CAACpC,EAAG,MAAM,CAACE,YAAY,iBAAiB,CAAGL,EAAIwC,WAAgIxC,EAAIc,KAAxHX,EAAG,aAAa,CAACG,MAAM,CAAC,KAAO,QAAQ,cAAa,IAAO,CAACH,EAAG,IAAI,CAACH,EAAIO,GAAGP,EAAIQ,GAAGR,EAAIyC,8BAAuCzC,EAAIO,GAAG,KAAKP,EAAI0C,GAAI1C,EAAc,YAAE,SAAS2C,GAAO,OAAOxC,EAAG,YAAY,CAACgB,IAAIwB,EAAMvE,KAAKkC,MAAM,CAAC,KAAOqC,EAAMvE,KAAK,MAAQuE,EAAM7D,MAAM,gBAAgB6D,EAAMlD,aAAa,KAAOkD,EAAMZ,KAAK,eAAeY,EAAMlC,YAAY,YAAckC,EAAMb,YAAY,UAAYa,EAAMX,WAAWtB,GAAG,CAAC,eAAe,SAASC,GAAQ,OAAOX,EAAI4C,KAAKD,EAAO,QAAShC,EAAO,EAAE,iBAAiB,SAASA,GAAQ,OAAOX,EAAItB,MAAM,iBAAiB,IAAI,IAAGsB,EAAIO,GAAG,KAAKJ,EAAG,mBAAmB,CAACG,MAAM,CAAC,KAAON,EAAI6C,iBAAiBzE,KAAK,MAAQ4B,EAAI6C,iBAAiB/D,MAAM,gBAAgBkB,EAAI6C,iBAAiBpD,aAAa,eAAeO,EAAI6C,iBAAiBpC,aAAaC,GAAG,CAAC,eAAe,SAASC,GAAQ,OAAOX,EAAI4C,KAAK5C,EAAI6C,iBAAkB,QAASlC,EAAO,EAAE,iBAAiB,SAASA,GAAQ,OAAOX,EAAItB,MAAM,iBAAiB,KAAKsB,EAAIO,GAAG,KAAKP,EAAI0C,GAAI1C,EAAmB,iBAAE,SAAS2C,GAAO,OAAOxC,EAAG,iBAAiB,CAACgB,IAAIwB,EAAMvE,KAAKkC,MAAM,CAAC,KAAOqC,EAAMvE,KAAK,YAAYuE,EAAMG,SAAS,aAAaH,EAAMlB,UAAU,qBAAqBkB,EAAMjB,iBAAiB,eAAeiB,EAAMlC,YAAY,aAAakC,EAAMrB,WAAWZ,GAAG,CAAC,mBAAmB,SAASC,GAAQ,OAAOX,EAAI4C,KAAKD,EAAO,YAAahC,EAAO,EAAE,oBAAoB,SAASA,GAAQ,OAAOX,EAAI4C,KAAKD,EAAO,YAAahC,EAAO,EAAE,iBAAiB,SAASA,GAAQ,OAAOX,EAAItB,MAAM,iBAAiB,IAAI,IAAGsB,EAAIO,GAAG,KAAKJ,EAAG,MAAM,CAACE,YAAY,0BAA0B,CAACF,EAAG,MAAM,CAACE,YAAY,mCAAmC,KAAKL,EAAIO,GAAG,KAAKJ,EAAG,oBAAoB,CAACG,MAAM,CAAC,MAAQN,EAAIgB,EAAE,UAAW,sBAAsB,CAACb,EAAG,MAAM,CAACE,YAAY,0BAA0B,CAACL,EAAI0C,GAAI1C,EAAsB,oBAAE,SAAS2C,GAAO,OAAOxC,EAAG,YAAY,CAACgB,IAAIwB,EAAMvE,KAAKkC,MAAM,CAAC,KAAOqC,EAAMvE,KAAK,MAAQuE,EAAM7D,MAAM,gBAAgB6D,EAAMlD,aAAa,KAAOkD,EAAMZ,KAAK,eAAeY,EAAMlC,YAAY,YAAckC,EAAMb,YAAY,UAAYa,EAAMX,WAAWtB,GAAG,CAAC,eAAe,SAASC,GAAQ,OAAOX,EAAI4C,KAAKD,EAAO,QAAShC,EAAO,EAAE,iBAAiB,SAASA,GAAQ,OAAOX,EAAItB,MAAM,iBAAiB,IAAI,IAAGsB,EAAIO,GAAG,KAAKP,EAAI0C,GAAI1C,EAA2B,yBAAE,SAAS2C,GAAO,OAAOxC,EAAG,iBAAiB,CAACgB,IAAIwB,EAAMvE,KAAKkC,MAAM,CAAC,KAAOqC,EAAMvE,KAAK,YAAYuE,EAAMG,SAAS,aAAaH,EAAMlB,UAAU,qBAAqBkB,EAAMjB,iBAAiB,eAAeiB,EAAMlC,YAAY,aAAakC,EAAMrB,WAAWZ,GAAG,CAAC,mBAAmB,SAASC,GAAQ,OAAOX,EAAI4C,KAAKD,EAAO,YAAahC,EAAO,EAAE,oBAAoB,SAASA,GAAQ,OAAOX,EAAI4C,KAAKD,EAAO,YAAahC,EAAO,EAAE,iBAAiB,SAASA,GAAQ,OAAOX,EAAItB,MAAM,iBAAiB,IAAI,IAAGsB,EAAIO,GAAG,KAAKJ,EAAG,gBAAgB,CAACG,MAAM,CAAC,KAAON,EAAI+C,iBAAiB3E,KAAK,MAAQ4B,EAAI+C,iBAAiBjE,MAAM,gBAAgBkB,EAAI+C,iBAAiBtD,aAAa,eAAeO,EAAI+C,iBAAiBtC,YAAY,MAAQT,EAAI+C,iBAAiBnC,MAAM,YAAcZ,EAAI+C,iBAAiBlC,aAAaH,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOX,EAAItB,MAAM,iBAAiB,KAAKsB,EAAIO,GAAG,KAAOP,EAAIgD,cAAgRhD,EAAIc,KAArQX,EAAG,IAAI,CAACG,MAAM,CAAC,KAAON,EAAIiD,YAAY,IAAM,wBAAwB,CAAC9C,EAAG,KAAK,CAACH,EAAIO,GAAGP,EAAIQ,GAAGR,EAAIgB,EAAE,UAAW,qJAA8J,MAAM,EAAE,GAClsH,IDWpB,EACA,KACA,WACA,MAI8B,mHEOhCkC,EAAAA,GAAAA,UAAAA,GAAmBC,GACnBD,EAAAA,GAAAA,UAAAA,EAAkBlC,EAElB,IACMoC,GAAU,IADHF,EAAAA,GAAAA,OAAWG,KAExBD,GAAQE,OAAO,kBACfF,GAAQG,IAAI,kBCViB,oBAExBC,SAASC,KAAKC,iBAAiB,moBAAeC,SAAQ,SAAAC,GACzD,IAAM3E,EAAM,IAAI4E,IAAID,EAAME,MAC1B7E,EAAI8E,aAAaC,IAAI,IAAKC,KAAKC,OAC/B,IAAMC,EAAWP,EAAMQ,YACvBD,EAASL,KAAO7E,EAAIoF,WACpBF,EAASG,OAAS,kBAAMV,EAAMW,QAAZ,EAClBf,SAASC,KAAKe,OAAOL,EACrB,GACD,2FC5BGM,EAAgC,IAAIZ,IAAI,cACxCa,EAA0B,IAA4B,KACtDC,EAAqC,IAAgCF,GAEzEC,EAAwBE,KAAK,CAACC,EAAO3G,GAAI,qqBAAuqByG,EAAqC,MAAO,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,iDAAiD,MAAQ,GAAG,SAAW,8NAA8N,eAAiB,CAAC,kzDAAkzD,WAAa,MAE74F,gECPID,QAA0B,GAA4B,KAE1DA,EAAwBE,KAAK,CAACC,EAAO3G,GAAI,qMAAsM,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,kEAAkE,mEAAmE,MAAQ,GAAG,SAAW,oFAAoF,eAAiB,CAAC,w8BAAw8B,mTAAmT,WAAa,MAEnxD,gECJIwG,QAA0B,GAA4B,KAE1DA,EAAwBE,KAAK,CAACC,EAAO3G,GAAI,6YAA8Y,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,kEAAkE,sEAAsE,MAAQ,GAAG,SAAW,2HAA2H,eAAiB,CAAC,w8BAAw8B,mkBAAmkB,WAAa,MAErxE,+DCJIwG,QAA0B,GAA4B,KAE1DA,EAAwBE,KAAK,CAACC,EAAO3G,GAAI,miBAAoiB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,kEAAkE,oEAAoE,MAAQ,GAAG,SAAW,oNAAoN,eAAiB,CAAC,w8BAAw8B,o6BAAo6B,WAAa,MAEn2F,gECJIwG,QAA0B,GAA4B,KAE1DA,EAAwBE,KAAK,CAACC,EAAO3G,GAAI,2CAA4C,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,+DAA+D,MAAQ,GAAG,SAAW,mBAAmB,eAAiB,CAAC,8NAA8N,WAAa,MAErd,koCCNI4G,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIN,EAASC,EAAyBE,GAAY,CACjD9G,GAAI8G,EACJI,QAAQ,EACRD,QAAS,CAAC,GAUX,OANAE,EAAoBL,GAAUM,KAAKT,EAAOM,QAASN,EAAQA,EAAOM,QAASJ,GAG3EF,EAAOO,QAAS,EAGTP,EAAOM,OACf,CAGAJ,EAAoBQ,EAAIF,EC5BxBN,EAAoBS,KAAO,WAC1B,MAAM,IAAIC,MAAM,iCACjB,ECFAV,EAAoBW,KAAO,CAAC,ErCAxB/H,EAAW,GACfoH,EAAoBY,EAAI,SAASC,EAAQC,EAAUzE,EAAI0E,GACtD,IAAGD,EAAH,CAMA,IAAIE,EAAeC,IACnB,IAASC,EAAI,EAAGA,EAAItI,EAASuI,OAAQD,IAAK,CACrCJ,EAAWlI,EAASsI,GAAG,GACvB7E,EAAKzD,EAASsI,GAAG,GACjBH,EAAWnI,EAASsI,GAAG,GAE3B,IAJA,IAGIE,GAAY,EACPC,EAAI,EAAGA,EAAIP,EAASK,OAAQE,MACpB,EAAXN,GAAsBC,GAAgBD,IAAaO,OAAOC,KAAKvB,EAAoBY,GAAGY,OAAM,SAASpF,GAAO,OAAO4D,EAAoBY,EAAExE,GAAK0E,EAASO,GAAK,IAChKP,EAASW,OAAOJ,IAAK,IAErBD,GAAY,EACTL,EAAWC,IAAcA,EAAeD,IAG7C,GAAGK,EAAW,CACbxI,EAAS6I,OAAOP,IAAK,GACrB,IAAIQ,EAAIrF,SACE8D,IAANuB,IAAiBb,EAASa,EAC/B,CACD,CACA,OAAOb,CArBP,CAJCE,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAItI,EAASuI,OAAQD,EAAI,GAAKtI,EAASsI,EAAI,GAAG,GAAKH,EAAUG,IAAKtI,EAASsI,GAAKtI,EAASsI,EAAI,GACrGtI,EAASsI,GAAK,CAACJ,EAAUzE,EAAI0E,EAwB/B,EsC5BAf,EAAoB2B,EAAI,SAAS7B,GAChC,IAAI8B,EAAS9B,GAAUA,EAAO+B,WAC7B,WAAa,OAAO/B,EAAgB,OAAG,EACvC,WAAa,OAAOA,CAAQ,EAE7B,OADAE,EAAoB8B,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,CACR,ECNA5B,EAAoB8B,EAAI,SAAS1B,EAAS4B,GACzC,IAAI,IAAI5F,KAAO4F,EACXhC,EAAoBiC,EAAED,EAAY5F,KAAS4D,EAAoBiC,EAAE7B,EAAShE,IAC5EkF,OAAOY,eAAe9B,EAAShE,EAAK,CAAE+F,YAAY,EAAMC,IAAKJ,EAAW5F,IAG3E,ECPA4D,EAAoBqC,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOlJ,MAAQ,IAAImJ,SAAS,cAAb,EAGhB,CAFE,MAAOC,GACR,GAAsB,iBAAXC,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBzC,EAAoBiC,EAAI,SAASS,EAAKC,GAAQ,OAAOrB,OAAOsB,UAAUC,eAAetC,KAAKmC,EAAKC,EAAO,ECCtG3C,EAAoB0B,EAAI,SAAStB,GACX,oBAAX0C,QAA0BA,OAAOC,aAC1CzB,OAAOY,eAAe9B,EAAS0C,OAAOC,YAAa,CAAEhJ,MAAO,WAE7DuH,OAAOY,eAAe9B,EAAS,aAAc,CAAErG,OAAO,GACvD,ECNAiG,EAAoBgD,IAAM,SAASlD,GAGlC,OAFAA,EAAOmD,MAAQ,GACVnD,EAAOoD,WAAUpD,EAAOoD,SAAW,IACjCpD,CACR,ECJAE,EAAoBqB,EAAI,gBCAxBrB,EAAoBmD,EAAI1E,SAAS2E,SAAWC,KAAKC,SAASvE,KAK1D,IAAIwE,EAAkB,CACrB,KAAM,GAaPvD,EAAoBY,EAAES,EAAI,SAASmC,GAAW,OAAoC,IAA7BD,EAAgBC,EAAgB,EAGrF,IAAIC,EAAuB,SAASC,EAA4B3K,GAC/D,IAKIkH,EAAUuD,EALV1C,EAAW/H,EAAK,GAChB4K,EAAc5K,EAAK,GACnB6K,EAAU7K,EAAK,GAGImI,EAAI,EAC3B,GAAGJ,EAAS+C,MAAK,SAAS1K,GAAM,OAA+B,IAAxBoK,EAAgBpK,EAAW,IAAI,CACrE,IAAI8G,KAAY0D,EACZ3D,EAAoBiC,EAAE0B,EAAa1D,KACrCD,EAAoBQ,EAAEP,GAAY0D,EAAY1D,IAGhD,GAAG2D,EAAS,IAAI/C,EAAS+C,EAAQ5D,EAClC,CAEA,IADG0D,GAA4BA,EAA2B3K,GACrDmI,EAAIJ,EAASK,OAAQD,IACzBsC,EAAU1C,EAASI,GAChBlB,EAAoBiC,EAAEsB,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOxD,EAAoBY,EAAEC,EAC9B,EAEIiD,EAAqBT,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FS,EAAmBlF,QAAQ6E,EAAqBM,KAAK,KAAM,IAC3DD,EAAmBjE,KAAO4D,EAAqBM,KAAK,KAAMD,EAAmBjE,KAAKkE,KAAKD,OClDvF9D,EAAoBgE,QAAK7D,ECGzB,IAAI8D,EAAsBjE,EAAoBY,OAAET,EAAW,CAAC,OAAO,WAAa,OAAOH,EAAoB,MAAQ,IACnHiE,EAAsBjE,EAAoBY,EAAEqD","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/theming/src/mixins/admin/FieldMixin.js","webpack:///nextcloud/apps/theming/src/mixins/admin/TextValueMixin.js","webpack:///nextcloud/apps/theming/src/components/admin/CheckboxField.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/theming/src/components/admin/CheckboxField.vue","webpack://nextcloud/./apps/theming/src/components/admin/CheckboxField.vue?4277","webpack://nextcloud/./apps/theming/src/components/admin/CheckboxField.vue?8981","webpack:///nextcloud/apps/theming/src/components/admin/CheckboxField.vue?vue&type=template&id=17145f08&scoped=true&","webpack:///nextcloud/apps/theming/src/components/admin/ColorPickerField.vue","webpack:///nextcloud/apps/theming/src/components/admin/ColorPickerField.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/components/admin/ColorPickerField.vue?e0c8","webpack://nextcloud/./apps/theming/src/components/admin/ColorPickerField.vue?977d","webpack:///nextcloud/apps/theming/src/components/admin/ColorPickerField.vue?vue&type=template&id=6b238a3e&scoped=true&","webpack:///nextcloud/apps/theming/src/components/admin/FileInputField.vue","webpack:///nextcloud/apps/theming/src/components/admin/FileInputField.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/components/admin/FileInputField.vue?5358","webpack://nextcloud/./apps/theming/src/components/admin/FileInputField.vue?4d24","webpack:///nextcloud/apps/theming/src/components/admin/FileInputField.vue?vue&type=template&id=137dd337&scoped=true&","webpack:///nextcloud/apps/theming/src/components/admin/TextField.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/theming/src/components/admin/TextField.vue","webpack://nextcloud/./apps/theming/src/components/admin/TextField.vue?91e3","webpack://nextcloud/./apps/theming/src/components/admin/TextField.vue?c7b6","webpack:///nextcloud/apps/theming/src/components/admin/TextField.vue?vue&type=template&id=21244e1d&scoped=true&","webpack:///nextcloud/apps/theming/src/AdminTheming.vue","webpack:///nextcloud/apps/theming/src/AdminTheming.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/AdminTheming.vue?5704","webpack://nextcloud/./apps/theming/src/AdminTheming.vue?6138","webpack:///nextcloud/apps/theming/src/AdminTheming.vue?vue&type=template&id=6dcac59d&scoped=true&","webpack:///nextcloud/apps/theming/src/admin-settings.js","webpack:///nextcloud/apps/theming/src/helpers/refreshStyles.js","webpack:///nextcloud/apps/theming/src/AdminTheming.vue?vue&type=style&index=0&id=6dcac59d&lang=scss&scoped=true&","webpack:///nextcloud/apps/theming/src/components/admin/CheckboxField.vue?vue&type=style&index=0&id=17145f08&lang=scss&scoped=true&","webpack:///nextcloud/apps/theming/src/components/admin/ColorPickerField.vue?vue&type=style&index=0&id=6b238a3e&lang=scss&scoped=true&","webpack:///nextcloud/apps/theming/src/components/admin/FileInputField.vue?vue&type=style&index=0&id=137dd337&lang=scss&scoped=true&","webpack:///nextcloud/apps/theming/src/components/admin/TextField.vue?vue&type=style&index=0&id=21244e1d&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst styleRefreshFields = [\n\t'color',\n\t'logo',\n\t'background',\n\t'logoheader',\n\t'favicon',\n\t'disable-user-theming',\n]\n\nexport default {\n\temits: [\n\t\t'update:theming',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tshowSuccess: false,\n\t\t\terrorMessage: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tid() {\n\t\t\treturn `admin-theming-${this.name}`\n\t\t},\n\t},\n\n\tmethods: {\n\t\treset() {\n\t\t\tthis.showSuccess = false\n\t\t\tthis.errorMessage = ''\n\t\t},\n\n\t\thandleSuccess() {\n\t\t\tthis.showSuccess = true\n\t\t\tsetTimeout(() => { this.showSuccess = false }, 2000)\n\t\t\tif (styleRefreshFields.includes(this.name)) {\n\t\t\t\tthis.$emit('update:theming')\n\t\t\t}\n\t\t},\n\t},\n}\n","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\nimport FieldMixin from './FieldMixin.js'\n\nexport default {\n\tmixins: [\n\t\tFieldMixin,\n\t],\n\n\twatch: {\n\t\tvalue(value) {\n\t\t\tthis.localValue = value\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlocalValue: this.value,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync save() {\n\t\t\tthis.reset()\n\t\t\tconst url = generateUrl('/apps/theming/ajax/updateStylesheet')\n\t\t\t// Convert boolean to string as server expects string value\n\t\t\tconst valueToPost = this.localValue === true ? 'yes' : this.localValue === false ? 'no' : this.localValue\n\t\t\ttry {\n\t\t\t\tawait axios.post(url, {\n\t\t\t\t\tsetting: this.name,\n\t\t\t\t\tvalue: valueToPost,\n\t\t\t\t})\n\t\t\t\tthis.$emit('update:value', this.localValue)\n\t\t\t\tthis.handleSuccess()\n\t\t\t} catch (e) {\n\t\t\t\tthis.errorMessage = e.response.data.data?.message\n\t\t\t}\n\t\t},\n\n\t\tasync undo() {\n\t\t\tthis.reset()\n\t\t\tconst url = generateUrl('/apps/theming/ajax/undoChanges')\n\t\t\ttry {\n\t\t\t\tawait axios.post(url, {\n\t\t\t\t\tsetting: this.name,\n\t\t\t\t})\n\t\t\t\tthis.$emit('update:value', this.defaultValue)\n\t\t\t\tthis.handleSuccess()\n\t\t\t} catch (e) {\n\t\t\t\tthis.errorMessage = e.response.data.data?.message\n\t\t\t}\n\t\t},\n\t},\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxField.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxField.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<div class=\"field\">\n\t\t<label :for=\"id\">{{ displayName }}</label>\n\t\t<div class=\"field__row\">\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\t:id=\"id\"\n\t\t\t\t:checked.sync=\"localValue\"\n\t\t\t\t@update:checked=\"save\">\n\t\t\t\t{{ label }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</div>\n\n\t\t<p class=\"field__description\">{{ description }}</p>\n\n\t\t<NcNoteCard v-if=\"errorMessage\"\n\t\t\ttype=\"error\"\n\t\t\t:show-alert=\"true\">\n\t\t\t<p>{{ errorMessage }}</p>\n\t\t</NcNoteCard>\n\t</div>\n</template>\n\n<script>\nimport {\n\tNcCheckboxRadioSwitch,\n\tNcNoteCard,\n} from '@nextcloud/vue'\n\nimport TextValueMixin from '../../mixins/admin/TextValueMixin.js'\n\nexport default {\n\tname: 'CheckboxField',\n\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t\tNcNoteCard,\n\t},\n\n\tmixins: [\n\t\tTextValueMixin,\n\t],\n\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tdefaultValue: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdescription: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import './shared/field.scss';\n\n.field {\n\t&__description {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n</style>\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxField.vue?vue&type=style&index=0&id=17145f08&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxField.vue?vue&type=style&index=0&id=17145f08&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CheckboxField.vue?vue&type=template&id=17145f08&scoped=true&\"\nimport script from \"./CheckboxField.vue?vue&type=script&lang=js&\"\nexport * from \"./CheckboxField.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CheckboxField.vue?vue&type=style&index=0&id=17145f08&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"17145f08\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"field\"},[_c('label',{attrs:{\"for\":_vm.id}},[_vm._v(_vm._s(_vm.displayName))]),_vm._v(\" \"),_c('div',{staticClass:\"field__row\"},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"id\":_vm.id,\"checked\":_vm.localValue},on:{\"update:checked\":[function($event){_vm.localValue=$event},_vm.save]}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.label)+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('p',{staticClass:\"field__description\"},[_vm._v(_vm._s(_vm.description))]),_vm._v(\" \"),(_vm.errorMessage)?_c('NcNoteCard',{attrs:{\"type\":\"error\",\"show-alert\":true}},[_c('p',[_vm._v(_vm._s(_vm.errorMessage))])]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<div class=\"field\">\n\t\t<label :for=\"id\">{{ displayName }}</label>\n\t\t<div class=\"field__row\">\n\t\t\t<NcColorPicker :value.sync=\"localValue\"\n\t\t\t\t:advanced-fields=\"true\"\n\t\t\t\t@update:value=\"debounceSave\">\n\t\t\t\t<NcButton class=\"field__button\"\n\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t:id=\"id\"\n\t\t\t\t\t:aria-label=\"t('theming', 'Select a custom color')\">\n\t\t\t\t\t{{ value }}\n\t\t\t\t</NcButton>\n\t\t\t</NcColorPicker>\n\t\t\t<NcButton v-if=\"value !== defaultValue\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\t:aria-label=\"t('theming', 'Reset to default')\"\n\t\t\t\t@click=\"undo\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Undo :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t</div>\n\n\t\t<NcNoteCard v-if=\"errorMessage\"\n\t\t\ttype=\"error\"\n\t\t\t:show-alert=\"true\">\n\t\t\t<p>{{ errorMessage }}</p>\n\t\t</NcNoteCard>\n\t</div>\n</template>\n\n<script>\nimport { debounce } from 'debounce'\nimport {\n\tNcButton,\n\tNcColorPicker,\n\tNcNoteCard,\n} from '@nextcloud/vue'\nimport Undo from 'vue-material-design-icons/UndoVariant.vue'\n\nimport TextValueMixin from '../../mixins/admin/TextValueMixin.js'\n\nexport default {\n\tname: 'ColorPickerField',\n\n\tcomponents: {\n\t\tNcButton,\n\t\tNcColorPicker,\n\t\tNcNoteCard,\n\t\tUndo,\n\t},\n\n\tmixins: [\n\t\tTextValueMixin,\n\t],\n\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdefaultValue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tmethods: {\n\t\tdebounceSave: debounce(async function() {\n\t\t\tawait this.save()\n\t\t}, 200),\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import './shared/field.scss';\n\n.field {\n\t// Override default NcButton styles\n\t&__button {\n\t\twidth: 230px !important;\n\t\tborder-radius: var(--border-radius-large) !important;\n\t\tbackground-color: var(--color-primary-default) !important;\n\t\t&:hover {\n\t\t\tbackground-color: var(--color-primary-element-default-hover) !important;\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=style&index=0&id=6b238a3e&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=style&index=0&id=6b238a3e&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ColorPickerField.vue?vue&type=template&id=6b238a3e&scoped=true&\"\nimport script from \"./ColorPickerField.vue?vue&type=script&lang=js&\"\nexport * from \"./ColorPickerField.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ColorPickerField.vue?vue&type=style&index=0&id=6b238a3e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6b238a3e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"field\"},[_c('label',{attrs:{\"for\":_vm.id}},[_vm._v(_vm._s(_vm.displayName))]),_vm._v(\" \"),_c('div',{staticClass:\"field__row\"},[_c('NcColorPicker',{attrs:{\"value\":_vm.localValue,\"advanced-fields\":true},on:{\"update:value\":[function($event){_vm.localValue=$event},_vm.debounceSave]}},[_c('NcButton',{staticClass:\"field__button\",attrs:{\"type\":\"primary\",\"id\":_vm.id,\"aria-label\":_vm.t('theming', 'Select a custom color')}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.value)+\"\\n\\t\\t\\t\")])],1),_vm._v(\" \"),(_vm.value !== _vm.defaultValue)?_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('theming', 'Reset to default')},on:{\"click\":_vm.undo},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Undo',{attrs:{\"size\":20}})]},proxy:true}],null,false,33666776)}):_vm._e()],1),_vm._v(\" \"),(_vm.errorMessage)?_c('NcNoteCard',{attrs:{\"type\":\"error\",\"show-alert\":true}},[_c('p',[_vm._v(_vm._s(_vm.errorMessage))])]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<div class=\"field\">\n\t\t<label :for=\"id\">{{ displayName }}</label>\n\t\t<div class=\"field__row\">\n\t\t\t<NcButton type=\"secondary\"\n\t\t\t\t:id=\"id\"\n\t\t\t\t:aria-label=\"ariaLabel\"\n\t\t\t\t@click=\"activateLocalFilePicker\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Upload :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('theming', 'Upload') }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if=\"showReset\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\t:aria-label=\"t('theming', 'Reset to default')\"\n\t\t\t\t@click=\"undo\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Undo :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if=\"showRemove\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\t:aria-label=\"t('theming', 'Remove background image')\"\n\t\t\t\t@click=\"removeBackground\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Delete :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t\t<NcLoadingIcon v-if=\"showLoading\"\n\t\t\t\tclass=\"field__loading-icon\"\n\t\t\t\t:size=\"20\" />\n\t\t</div>\n\n\t\t<div v-if=\"(name === 'logoheader' || name === 'favicon') && mimeValue !== defaultMimeValue\"\n\t\t\tclass=\"field__preview\"\n\t\t\t:class=\"{\n\t\t\t\t'field__preview--logoheader': name === 'logoheader',\n\t\t\t\t'field__preview--favicon': name === 'favicon',\n\t\t\t}\" />\n\n\t\t<NcNoteCard v-if=\"errorMessage\"\n\t\t\ttype=\"error\"\n\t\t\t:show-alert=\"true\">\n\t\t\t<p>{{ errorMessage }}</p>\n\t\t</NcNoteCard>\n\n\t\t<input ref=\"input\"\n\t\t\ttype=\"file\"\n\t\t\t@change=\"onChange\">\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\nimport {\n\tNcButton,\n\tNcLoadingIcon,\n\tNcNoteCard,\n} from '@nextcloud/vue'\nimport Delete from 'vue-material-design-icons/Delete.vue'\nimport Undo from 'vue-material-design-icons/UndoVariant.vue'\nimport Upload from 'vue-material-design-icons/Upload.vue'\n\nimport FieldMixin from '../../mixins/admin/FieldMixin.js'\n\nexport default {\n\tname: 'FileInputField',\n\n\tcomponents: {\n\t\tDelete,\n\t\tNcButton,\n\t\tNcLoadingIcon,\n\t\tNcNoteCard,\n\t\tUndo,\n\t\tUpload,\n\t},\n\n\tmixins: [\n\t\tFieldMixin,\n\t],\n\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tmimeName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tmimeValue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdefaultMimeValue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tshowLoading: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tshowReset() {\n\t\t\treturn this.mimeValue !== this.defaultMimeValue\n\t\t},\n\n\t\tshowRemove() {\n\t\t\tif (this.name === 'background') {\n\t\t\t\tif (this.mimeValue.startsWith('image/')) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tif (this.mimeValue === this.defaultMimeValue) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t},\n\n\tmethods: {\n\t\tactivateLocalFilePicker() {\n\t\t\tthis.reset()\n\t\t\t// Set to null so that selecting the same file will trigger the change event\n\t\t\tthis.$refs.input.value = null\n\t\t\tthis.$refs.input.click()\n\t\t},\n\n\t\tasync onChange(e) {\n\t\t\tconst file = e.target.files[0]\n\n\t\t\tconst formData = new FormData()\n\t\t\tformData.append('key', this.name)\n\t\t\tformData.append('image', file)\n\n\t\t\tconst url = generateUrl('/apps/theming/ajax/uploadImage')\n\t\t\ttry {\n\t\t\t\tthis.showLoading = true\n\t\t\t\tawait axios.post(url, formData)\n\t\t\t\tthis.showLoading = false\n\t\t\t\tthis.$emit('update:mime-value', file.type)\n\t\t\t\tthis.handleSuccess()\n\t\t\t} catch (e) {\n\t\t\t\tthis.showLoading = false\n\t\t\t\tthis.errorMessage = e.response.data.data?.message\n\t\t\t}\n\t\t},\n\n\t\tasync undo() {\n\t\t\tthis.reset()\n\t\t\tconst url = generateUrl('/apps/theming/ajax/undoChanges')\n\t\t\ttry {\n\t\t\t\tawait axios.post(url, {\n\t\t\t\t\tsetting: this.mimeName,\n\t\t\t\t})\n\t\t\t\tthis.$emit('update:mime-value', this.defaultMimeValue)\n\t\t\t\tthis.handleSuccess()\n\t\t\t} catch (e) {\n\t\t\t\tthis.errorMessage = e.response.data.data?.message\n\t\t\t}\n\t\t},\n\n\t\tasync removeBackground() {\n\t\t\tthis.reset()\n\t\t\tconst url = generateUrl('/apps/theming/ajax/updateStylesheet')\n\t\t\ttry {\n\t\t\t\tawait axios.post(url, {\n\t\t\t\t\tsetting: this.mimeName,\n\t\t\t\t\tvalue: 'backgroundColor',\n\t\t\t\t})\n\t\t\t\tthis.$emit('update:mime-value', 'backgroundColor')\n\t\t\t\tthis.handleSuccess()\n\t\t\t} catch (e) {\n\t\t\t\tthis.errorMessage = e.response.data.data?.message\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import './shared/field.scss';\n\n.field {\n\t&__loading-icon {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t}\n\n\t&__preview {\n\t\twidth: 70px;\n\t\theight: 70px;\n\t\tbackground-size: contain;\n\t\tbackground-position: center;\n\t\tbackground-repeat: no-repeat;\n\t\tmargin: 10px 0;\n\n\t\t&--logoheader {\n\t\t\tbackground-image: var(--image-logoheader);\n\t\t}\n\n\t\t&--favicon {\n\t\t\tbackground-image: var(--image-favicon);\n\t\t}\n\t}\n}\n\ninput[type=\"file\"] {\n\tdisplay: none;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileInputField.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileInputField.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileInputField.vue?vue&type=style&index=0&id=137dd337&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileInputField.vue?vue&type=style&index=0&id=137dd337&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileInputField.vue?vue&type=template&id=137dd337&scoped=true&\"\nimport script from \"./FileInputField.vue?vue&type=script&lang=js&\"\nexport * from \"./FileInputField.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FileInputField.vue?vue&type=style&index=0&id=137dd337&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"137dd337\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"field\"},[_c('label',{attrs:{\"for\":_vm.id}},[_vm._v(_vm._s(_vm.displayName))]),_vm._v(\" \"),_c('div',{staticClass:\"field__row\"},[_c('NcButton',{attrs:{\"type\":\"secondary\",\"id\":_vm.id,\"aria-label\":_vm.ariaLabel},on:{\"click\":_vm.activateLocalFilePicker},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Upload',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Upload'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.showReset)?_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('theming', 'Reset to default')},on:{\"click\":_vm.undo},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Undo',{attrs:{\"size\":20}})]},proxy:true}],null,false,33666776)}):_vm._e(),_vm._v(\" \"),(_vm.showRemove)?_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('theming', 'Remove background image')},on:{\"click\":_vm.removeBackground},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete',{attrs:{\"size\":20}})]},proxy:true}],null,false,2705356561)}):_vm._e(),_vm._v(\" \"),(_vm.showLoading)?_c('NcLoadingIcon',{staticClass:\"field__loading-icon\",attrs:{\"size\":20}}):_vm._e()],1),_vm._v(\" \"),((_vm.name === 'logoheader' || _vm.name === 'favicon') && _vm.mimeValue !== _vm.defaultMimeValue)?_c('div',{staticClass:\"field__preview\",class:{\n\t\t\t'field__preview--logoheader': _vm.name === 'logoheader',\n\t\t\t'field__preview--favicon': _vm.name === 'favicon',\n\t\t}}):_vm._e(),_vm._v(\" \"),(_vm.errorMessage)?_c('NcNoteCard',{attrs:{\"type\":\"error\",\"show-alert\":true}},[_c('p',[_vm._v(_vm._s(_vm.errorMessage))])]):_vm._e(),_vm._v(\" \"),_c('input',{ref:\"input\",attrs:{\"type\":\"file\"},on:{\"change\":_vm.onChange}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextField.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextField.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<div class=\"field\">\n\t\t<NcTextField :value.sync=\"localValue\"\n\t\t\t:label=\"displayName\"\n\t\t\t:label-visible=\"true\"\n\t\t\t:placeholder=\"placeholder\"\n\t\t\t:type=\"type\"\n\t\t\t:maxlength=\"maxlength\"\n\t\t\t:spellcheck=\"false\"\n\t\t\t:success=\"showSuccess\"\n\t\t\t:error=\"Boolean(errorMessage)\"\n\t\t\t:helper-text=\"errorMessage\"\n\t\t\t:show-trailing-button=\"value !== defaultValue\"\n\t\t\ttrailing-button-icon=\"undo\"\n\t\t\t@trailing-button-click=\"undo\"\n\t\t\t@keydown.enter=\"save\"\n\t\t\t@blur=\"save\" />\n\t</div>\n</template>\n\n<script>\nimport { NcTextField } from '@nextcloud/vue'\n\nimport TextValueMixin from '../../mixins/admin/TextValueMixin.js'\n\nexport default {\n\tname: 'TextField',\n\n\tcomponents: {\n\t\tNcTextField,\n\t},\n\n\tmixins: [\n\t\tTextValueMixin,\n\t],\n\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdefaultValue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tmaxlength: {\n\t\t\ttype: Number,\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.field {\n\tmax-width: 400px;\n}\n</style>\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextField.vue?vue&type=style&index=0&id=21244e1d&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextField.vue?vue&type=style&index=0&id=21244e1d&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TextField.vue?vue&type=template&id=21244e1d&scoped=true&\"\nimport script from \"./TextField.vue?vue&type=script&lang=js&\"\nexport * from \"./TextField.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TextField.vue?vue&type=style&index=0&id=21244e1d&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"21244e1d\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"field\"},[_c('NcTextField',{attrs:{\"value\":_vm.localValue,\"label\":_vm.displayName,\"label-visible\":true,\"placeholder\":_vm.placeholder,\"type\":_vm.type,\"maxlength\":_vm.maxlength,\"spellcheck\":false,\"success\":_vm.showSuccess,\"error\":Boolean(_vm.errorMessage),\"helper-text\":_vm.errorMessage,\"show-trailing-button\":_vm.value !== _vm.defaultValue,\"trailing-button-icon\":\"undo\"},on:{\"update:value\":function($event){_vm.localValue=$event},\"trailing-button-click\":_vm.undo,\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.save.apply(null, arguments)},\"blur\":_vm.save}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<section>\n\t\t<NcSettingsSection :title=\"t('theming', 'Theming')\"\n\t\t\t:description=\"t('theming', 'Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users.')\"\n\t\t\t:doc-url=\"docUrl\">\n\t\t\t<div class=\"admin-theming\">\n\t\t\t\t<NcNoteCard v-if=\"!isThemable\"\n\t\t\t\t\ttype=\"error\"\n\t\t\t\t\t:show-alert=\"true\">\n\t\t\t\t\t<p>{{ notThemableErrorMessage }}</p>\n\t\t\t\t</NcNoteCard>\n\t\t\t\t<TextField v-for=\"field in textFields\"\n\t\t\t\t\t:key=\"field.name\"\n\t\t\t\t\t:name=\"field.name\"\n\t\t\t\t\t:value.sync=\"field.value\"\n\t\t\t\t\t:default-value=\"field.defaultValue\"\n\t\t\t\t\t:type=\"field.type\"\n\t\t\t\t\t:display-name=\"field.displayName\"\n\t\t\t\t\t:placeholder=\"field.placeholder\"\n\t\t\t\t\t:maxlength=\"field.maxlength\"\n\t\t\t\t\t@update:theming=\"$emit('update:theming')\" />\n\t\t\t\t<ColorPickerField :name=\"colorPickerField.name\"\n\t\t\t\t\t:value.sync=\"colorPickerField.value\"\n\t\t\t\t\t:default-value=\"colorPickerField.defaultValue\"\n\t\t\t\t\t:display-name=\"colorPickerField.displayName\"\n\t\t\t\t\t@update:theming=\"$emit('update:theming')\" />\n\t\t\t\t<FileInputField v-for=\"field in fileInputFields\"\n\t\t\t\t\t:key=\"field.name\"\n\t\t\t\t\t:name=\"field.name\"\n\t\t\t\t\t:mime-name=\"field.mimeName\"\n\t\t\t\t\t:mime-value.sync=\"field.mimeValue\"\n\t\t\t\t\t:default-mime-value=\"field.defaultMimeValue\"\n\t\t\t\t\t:display-name=\"field.displayName\"\n\t\t\t\t\t:aria-label=\"field.ariaLabel\"\n\t\t\t\t\t@update:theming=\"$emit('update:theming')\" />\n\t\t\t\t<div class=\"admin-theming__preview\">\n\t\t\t\t\t<div class=\"admin-theming__preview-logo\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</NcSettingsSection>\n\t\t<NcSettingsSection :title=\"t('theming', 'Advanced options')\">\n\t\t\t<div class=\"admin-theming-advanced\">\n\t\t\t\t<TextField v-for=\"field in advancedTextFields\"\n\t\t\t\t\t:key=\"field.name\"\n\t\t\t\t\t:name=\"field.name\"\n\t\t\t\t\t:value.sync=\"field.value\"\n\t\t\t\t\t:default-value=\"field.defaultValue\"\n\t\t\t\t\t:type=\"field.type\"\n\t\t\t\t\t:display-name=\"field.displayName\"\n\t\t\t\t\t:placeholder=\"field.placeholder\"\n\t\t\t\t\t:maxlength=\"field.maxlength\"\n\t\t\t\t\t@update:theming=\"$emit('update:theming')\" />\n\t\t\t\t<FileInputField v-for=\"field in advancedFileInputFields\"\n\t\t\t\t\t:key=\"field.name\"\n\t\t\t\t\t:name=\"field.name\"\n\t\t\t\t\t:mime-name=\"field.mimeName\"\n\t\t\t\t\t:mime-value.sync=\"field.mimeValue\"\n\t\t\t\t\t:default-mime-value=\"field.defaultMimeValue\"\n\t\t\t\t\t:display-name=\"field.displayName\"\n\t\t\t\t\t:aria-label=\"field.ariaLabel\"\n\t\t\t\t\t@update:theming=\"$emit('update:theming')\" />\n\t\t\t\t<CheckboxField :name=\"userThemingField.name\"\n\t\t\t\t\t:value=\"userThemingField.value\"\n\t\t\t\t\t:default-value=\"userThemingField.defaultValue\"\n\t\t\t\t\t:display-name=\"userThemingField.displayName\"\n\t\t\t\t\t:label=\"userThemingField.label\"\n\t\t\t\t\t:description=\"userThemingField.description\"\n\t\t\t\t\t@update:theming=\"$emit('update:theming')\" />\n\t\t\t\t<a v-if=\"!canThemeIcons\"\n\t\t\t\t\t:href=\"docUrlIcons\"\n\t\t\t\t\trel=\"noreferrer noopener\">\n\t\t\t\t\t<em>{{ t('theming', 'Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color.') }}</em>\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t</NcSettingsSection>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport {\n\tNcNoteCard,\n\tNcSettingsSection,\n} from '@nextcloud/vue'\nimport CheckboxField from './components/admin/CheckboxField.vue'\nimport ColorPickerField from './components/admin/ColorPickerField.vue'\nimport FileInputField from './components/admin/FileInputField.vue'\nimport TextField from './components/admin/TextField.vue'\n\nconst {\n\tbackgroundMime,\n\tcanThemeIcons,\n\tcolor,\n\tdocUrl,\n\tdocUrlIcons,\n\tfaviconMime,\n\tisThemable,\n\tlegalNoticeUrl,\n\tlogoheaderMime,\n\tlogoMime,\n\tname,\n\tnotThemableErrorMessage,\n\tprivacyPolicyUrl,\n\tslogan,\n\turl,\n\tuserThemingDisabled,\n} = loadState('theming', 'adminThemingParameters')\n\nconst textFields = [\n\t{\n\t\tname: 'name',\n\t\tvalue: name,\n\t\tdefaultValue: 'Nextcloud',\n\t\ttype: 'text',\n\t\tdisplayName: t('theming', 'Name'),\n\t\tplaceholder: t('theming', 'Name'),\n\t\tmaxlength: 250,\n\t},\n\t{\n\t\tname: 'url',\n\t\tvalue: url,\n\t\tdefaultValue: 'https://nextcloud.com',\n\t\ttype: 'url',\n\t\tdisplayName: t('theming', 'Web link'),\n\t\tplaceholder: 'https://…',\n\t\tmaxlength: 500,\n\t},\n\t{\n\t\tname: 'slogan',\n\t\tvalue: slogan,\n\t\tdefaultValue: t('theming', 'a safe home for all your data'),\n\t\ttype: 'text',\n\t\tdisplayName: t('theming', 'Slogan'),\n\t\tplaceholder: t('theming', 'Slogan'),\n\t\tmaxlength: 500,\n\t},\n]\n\nconst colorPickerField = {\n\tname: 'color',\n\tvalue: color,\n\tdefaultValue: '#0082c9',\n\tdisplayName: t('theming', 'Color'),\n}\n\nconst fileInputFields = [\n\t{\n\t\tname: 'logo',\n\t\tmimeName: 'logoMime',\n\t\tmimeValue: logoMime,\n\t\tdefaultMimeValue: '',\n\t\tdisplayName: t('theming', 'Logo'),\n\t\tariaLabel: t('theming', 'Upload new logo'),\n\t},\n\t{\n\t\tname: 'background',\n\t\tmimeName: 'backgroundMime',\n\t\tmimeValue: backgroundMime,\n\t\tdefaultMimeValue: '',\n\t\tdisplayName: t('theming', 'Background and login image'),\n\t\tariaLabel: t('theming', 'Upload new background and login image'),\n\t},\n]\n\nconst advancedTextFields = [\n\t{\n\t\tname: 'imprintUrl',\n\t\tvalue: legalNoticeUrl,\n\t\tdefaultValue: '',\n\t\ttype: 'url',\n\t\tdisplayName: t('theming', 'Legal notice link'),\n\t\tplaceholder: 'https://…',\n\t\tmaxlength: 500,\n\t},\n\t{\n\t\tname: 'privacyUrl',\n\t\tvalue: privacyPolicyUrl,\n\t\tdefaultValue: '',\n\t\ttype: 'url',\n\t\tdisplayName: t('theming', 'Privacy policy link'),\n\t\tplaceholder: 'https://…',\n\t\tmaxlength: 500,\n\t},\n]\n\nconst advancedFileInputFields = [\n\t{\n\t\tname: 'logoheader',\n\t\tmimeName: 'logoheaderMime',\n\t\tmimeValue: logoheaderMime,\n\t\tdefaultMimeValue: '',\n\t\tdisplayName: t('theming', 'Header logo'),\n\t\tariaLabel: t('theming', 'Upload new header logo'),\n\t},\n\t{\n\t\tname: 'favicon',\n\t\tmimeName: 'faviconMime',\n\t\tmimeValue: faviconMime,\n\t\tdefaultMimeValue: '',\n\t\tdisplayName: t('theming', 'Favicon'),\n\t\tariaLabel: t('theming', 'Upload new favicon'),\n\t},\n]\n\nconst userThemingField = {\n\tname: 'disable-user-theming',\n\tvalue: userThemingDisabled,\n\tdefaultValue: false,\n\tdisplayName: t('theming', 'User settings'),\n\tlabel: t('theming', 'Disable user theming'),\n\tdescription: t('theming', 'Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on.'),\n}\n\nexport default {\n\tname: 'AdminTheming',\n\n\tcomponents: {\n\t\tCheckboxField,\n\t\tColorPickerField,\n\t\tFileInputField,\n\t\tNcNoteCard,\n\t\tNcSettingsSection,\n\t\tTextField,\n\t},\n\n\temits: [\n\t\t'update:theming',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\ttextFields,\n\t\t\tcolorPickerField,\n\t\t\tfileInputFields,\n\t\t\tadvancedTextFields,\n\t\t\tadvancedFileInputFields,\n\t\t\tuserThemingField,\n\n\t\t\tcanThemeIcons,\n\t\t\tdocUrl,\n\t\t\tdocUrlIcons,\n\t\t\tisThemable,\n\t\t\tnotThemableErrorMessage,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.admin-theming,\n.admin-theming-advanced {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n}\n\n.admin-theming {\n\t&__preview {\n\t\twidth: 230px;\n\t\theight: 140px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center;\n\t\ttext-align: center;\n\t\tmargin-top: 10px;\n\t\t/* This is basically https://github.com/nextcloud/server/blob/master/core/css/guest.css\n\t\t But without the user variables. That way the admin can preview the render as guest*/\n\t\t/* As guest, there is no user color color-background-plain */\n\t\tbackground-color: var(--color-primary-default, #0082c9);\n\t\t/* As guest, there is no user background (--image-background)\n\t\t1. Empty background if defined\n\t\t2. Else default background\n\t\t3. Finally default gradient (should not happened, the background is always defined anyway) */\n\t\tbackground-image: var(--image-background-plain, var(--image-background-default, linear-gradient(40deg, #0082c9 0%, #30b6ff 100%)));\n\n\t\t&-logo {\n\t\t\twidth: 20%;\n\t\t\theight: 20%;\n\t\t\tmargin-top: 20px;\n\t\t\tdisplay: inline-block;\n\t\t\tbackground-size: contain;\n\t\t\tbackground-position: center;\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-image: var(--image-logo, url('../../../core/img/logo/logo.svg'));\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTheming.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTheming.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTheming.vue?vue&type=style&index=0&id=6dcac59d&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTheming.vue?vue&type=style&index=0&id=6dcac59d&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AdminTheming.vue?vue&type=template&id=6dcac59d&scoped=true&\"\nimport script from \"./AdminTheming.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTheming.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AdminTheming.vue?vue&type=style&index=0&id=6dcac59d&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6dcac59d\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('NcSettingsSection',{attrs:{\"title\":_vm.t('theming', 'Theming'),\"description\":_vm.t('theming', 'Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users.'),\"doc-url\":_vm.docUrl}},[_c('div',{staticClass:\"admin-theming\"},[(!_vm.isThemable)?_c('NcNoteCard',{attrs:{\"type\":\"error\",\"show-alert\":true}},[_c('p',[_vm._v(_vm._s(_vm.notThemableErrorMessage))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.textFields),function(field){return _c('TextField',{key:field.name,attrs:{\"name\":field.name,\"value\":field.value,\"default-value\":field.defaultValue,\"type\":field.type,\"display-name\":field.displayName,\"placeholder\":field.placeholder,\"maxlength\":field.maxlength},on:{\"update:value\":function($event){return _vm.$set(field, \"value\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}})}),_vm._v(\" \"),_c('ColorPickerField',{attrs:{\"name\":_vm.colorPickerField.name,\"value\":_vm.colorPickerField.value,\"default-value\":_vm.colorPickerField.defaultValue,\"display-name\":_vm.colorPickerField.displayName},on:{\"update:value\":function($event){return _vm.$set(_vm.colorPickerField, \"value\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}}),_vm._v(\" \"),_vm._l((_vm.fileInputFields),function(field){return _c('FileInputField',{key:field.name,attrs:{\"name\":field.name,\"mime-name\":field.mimeName,\"mime-value\":field.mimeValue,\"default-mime-value\":field.defaultMimeValue,\"display-name\":field.displayName,\"aria-label\":field.ariaLabel},on:{\"update:mimeValue\":function($event){return _vm.$set(field, \"mimeValue\", $event)},\"update:mime-value\":function($event){return _vm.$set(field, \"mimeValue\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}})}),_vm._v(\" \"),_c('div',{staticClass:\"admin-theming__preview\"},[_c('div',{staticClass:\"admin-theming__preview-logo\"})])],2)]),_vm._v(\" \"),_c('NcSettingsSection',{attrs:{\"title\":_vm.t('theming', 'Advanced options')}},[_c('div',{staticClass:\"admin-theming-advanced\"},[_vm._l((_vm.advancedTextFields),function(field){return _c('TextField',{key:field.name,attrs:{\"name\":field.name,\"value\":field.value,\"default-value\":field.defaultValue,\"type\":field.type,\"display-name\":field.displayName,\"placeholder\":field.placeholder,\"maxlength\":field.maxlength},on:{\"update:value\":function($event){return _vm.$set(field, \"value\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}})}),_vm._v(\" \"),_vm._l((_vm.advancedFileInputFields),function(field){return _c('FileInputField',{key:field.name,attrs:{\"name\":field.name,\"mime-name\":field.mimeName,\"mime-value\":field.mimeValue,\"default-mime-value\":field.defaultMimeValue,\"display-name\":field.displayName,\"aria-label\":field.ariaLabel},on:{\"update:mimeValue\":function($event){return _vm.$set(field, \"mimeValue\", $event)},\"update:mime-value\":function($event){return _vm.$set(field, \"mimeValue\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}})}),_vm._v(\" \"),_c('CheckboxField',{attrs:{\"name\":_vm.userThemingField.name,\"value\":_vm.userThemingField.value,\"default-value\":_vm.userThemingField.defaultValue,\"display-name\":_vm.userThemingField.displayName,\"label\":_vm.userThemingField.label,\"description\":_vm.userThemingField.description},on:{\"update:theming\":function($event){return _vm.$emit('update:theming')}}}),_vm._v(\" \"),(!_vm.canThemeIcons)?_c('a',{attrs:{\"href\":_vm.docUrlIcons,\"rel\":\"noreferrer noopener\"}},[_c('em',[_vm._v(_vm._s(_vm.t('theming', 'Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color.')))])]):_vm._e()],2)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport App from './AdminTheming.vue'\nimport { refreshStyles } from './helpers/refreshStyles.js'\n\nVue.prototype.OC = OC\nVue.prototype.t = t\n\nconst View = Vue.extend(App)\nconst theming = new View()\ntheming.$mount('#admin-theming')\ntheming.$on('update:theming', refreshStyles)\n","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const refreshStyles = () => {\n\t// Refresh server-side generated theming CSS\n\t[...document.head.querySelectorAll('link.theme')].forEach(theme => {\n\t\tconst url = new URL(theme.href)\n\t\turl.searchParams.set('v', Date.now())\n\t\tconst newTheme = theme.cloneNode()\n\t\tnewTheme.href = url.toString()\n\t\tnewTheme.onload = () => theme.remove()\n\t\tdocument.head.append(newTheme)\n\t})\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../../../core/img/logo/logo.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".admin-theming[data-v-6dcac59d],.admin-theming-advanced[data-v-6dcac59d]{display:flex;flex-direction:column;gap:8px 0}.admin-theming__preview[data-v-6dcac59d]{width:230px;height:140px;background-size:cover;background-position:center;text-align:center;margin-top:10px;background-color:var(--color-primary-default, #0082c9);background-image:var(--image-background-plain, var(--image-background-default, linear-gradient(40deg, #0082c9 0%, #30b6ff 100%)))}.admin-theming__preview-logo[data-v-6dcac59d]{width:20%;height:20%;margin-top:20px;display:inline-block;background-size:contain;background-position:center;background-repeat:no-repeat;background-image:var(--image-logo, url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \"))}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/AdminTheming.vue\"],\"names\":[],\"mappings\":\"AAgRA,yEAEC,YAAA,CACA,qBAAA,CACA,SAAA,CAIA,yCACC,WAAA,CACA,YAAA,CACA,qBAAA,CACA,0BAAA,CACA,iBAAA,CACA,eAAA,CAIA,sDAAA,CAKA,iIAAA,CAEA,8CACC,SAAA,CACA,UAAA,CACA,eAAA,CACA,oBAAA,CACA,uBAAA,CACA,0BAAA,CACA,2BAAA,CACA,2EAAA\",\"sourcesContent\":[\"\\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\\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\\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\\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\\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\\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\\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\\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\\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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.admin-theming,\\n.admin-theming-advanced {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 8px 0;\\n}\\n\\n.admin-theming {\\n\\t&__preview {\\n\\t\\twidth: 230px;\\n\\t\\theight: 140px;\\n\\t\\tbackground-size: cover;\\n\\t\\tbackground-position: center;\\n\\t\\ttext-align: center;\\n\\t\\tmargin-top: 10px;\\n\\t\\t/* This is basically https://github.com/nextcloud/server/blob/master/core/css/guest.css\\n\\t\\t But without the user variables. That way the admin can preview the render as guest*/\\n\\t\\t/* As guest, there is no user color color-background-plain */\\n\\t\\tbackground-color: var(--color-primary-default, #0082c9);\\n\\t\\t/* As guest, there is no user background (--image-background)\\n\\t\\t1. Empty background if defined\\n\\t\\t2. Else default background\\n\\t\\t3. Finally default gradient (should not happened, the background is always defined anyway) */\\n\\t\\tbackground-image: var(--image-background-plain, var(--image-background-default, linear-gradient(40deg, #0082c9 0%, #30b6ff 100%)));\\n\\n\\t\\t&-logo {\\n\\t\\t\\twidth: 20%;\\n\\t\\t\\theight: 20%;\\n\\t\\t\\tmargin-top: 20px;\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\tbackground-size: contain;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\tbackground-image: var(--image-logo, url('../../../core/img/logo/logo.svg'));\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".field[data-v-17145f08]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-17145f08]{display:flex;gap:0 4px}.field__description[data-v-17145f08]{color:var(--color-text-maxcontrast)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/shared/field.scss\",\"webpack://./apps/theming/src/components/admin/CheckboxField.vue\"],\"names\":[],\"mappings\":\"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCoED,qCACC,mCAAA\",\"sourcesContent\":[\"/**\\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\\n *\\n * @author Christopher Ng <chrng8@gmail.com>\\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n.field {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 4px 0;\\n\\n\\t&__row {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 4px;\\n\\t}\\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\\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\\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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n@import './shared/field.scss';\\n\\n.field {\\n\\t&__description {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".field[data-v-6b238a3e]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-6b238a3e]{display:flex;gap:0 4px}.field__button[data-v-6b238a3e]{width:230px !important;border-radius:var(--border-radius-large) !important;background-color:var(--color-primary-default) !important}.field__button[data-v-6b238a3e]:hover{background-color:var(--color-primary-element-default-hover) !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/shared/field.scss\",\"webpack://./apps/theming/src/components/admin/ColorPickerField.vue\"],\"names\":[],\"mappings\":\"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCkFD,gCACC,sBAAA,CACA,mDAAA,CACA,wDAAA,CACA,sCACC,sEAAA\",\"sourcesContent\":[\"/**\\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\\n *\\n * @author Christopher Ng <chrng8@gmail.com>\\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n.field {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 4px 0;\\n\\n\\t&__row {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 4px;\\n\\t}\\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\\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\\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\\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@import './shared/field.scss';\\n\\n.field {\\n\\t// Override default NcButton styles\\n\\t&__button {\\n\\t\\twidth: 230px !important;\\n\\t\\tborder-radius: var(--border-radius-large) !important;\\n\\t\\tbackground-color: var(--color-primary-default) !important;\\n\\t\\t&:hover {\\n\\t\\t\\tbackground-color: var(--color-primary-element-default-hover) !important;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".field[data-v-137dd337]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-137dd337]{display:flex;gap:0 4px}.field__loading-icon[data-v-137dd337]{width:44px;height:44px}.field__preview[data-v-137dd337]{width:70px;height:70px;background-size:contain;background-position:center;background-repeat:no-repeat;margin:10px 0}.field__preview--logoheader[data-v-137dd337]{background-image:var(--image-logoheader)}.field__preview--favicon[data-v-137dd337]{background-image:var(--image-favicon)}input[type=file][data-v-137dd337]{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/shared/field.scss\",\"webpack://./apps/theming/src/components/admin/FileInputField.vue\"],\"names\":[],\"mappings\":\"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCgMD,sCACC,UAAA,CACA,WAAA,CAGD,iCACC,UAAA,CACA,WAAA,CACA,uBAAA,CACA,0BAAA,CACA,2BAAA,CACA,aAAA,CAEA,6CACC,wCAAA,CAGD,0CACC,qCAAA,CAKH,kCACC,YAAA\",\"sourcesContent\":[\"/**\\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\\n *\\n * @author Christopher Ng <chrng8@gmail.com>\\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n.field {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 4px 0;\\n\\n\\t&__row {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 4px;\\n\\t}\\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\\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\\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\\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\\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\\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\\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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n@import './shared/field.scss';\\n\\n.field {\\n\\t&__loading-icon {\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t}\\n\\n\\t&__preview {\\n\\t\\twidth: 70px;\\n\\t\\theight: 70px;\\n\\t\\tbackground-size: contain;\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tmargin: 10px 0;\\n\\n\\t\\t&--logoheader {\\n\\t\\t\\tbackground-image: var(--image-logoheader);\\n\\t\\t}\\n\\n\\t\\t&--favicon {\\n\\t\\t\\tbackground-image: var(--image-favicon);\\n\\t\\t}\\n\\t}\\n}\\n\\ninput[type=\\\"file\\\"] {\\n\\tdisplay: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".field[data-v-21244e1d]{max-width:400px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/TextField.vue\"],\"names\":[],\"mappings\":\"AA4FA,wBACC,eAAA\",\"sourcesContent\":[\"\\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\\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\\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\\n\\n\\n\\n\\n\\n\\n\\n.field {\\n\\tmax-width: 400px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 5544;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t5544: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(31901); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","styleRefreshFields","emits","data","showSuccess","errorMessage","computed","id","this","name","methods","reset","handleSuccess","setTimeout","includes","$emit","mixins","FieldMixin","watch","value","localValue","save","url","generateUrl","valueToPost","axios","setting","response","message","undo","defaultValue","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_h","$createElement","_c","_self","staticClass","attrs","_v","_s","displayName","on","$event","label","description","_e","debounceSave","t","scopedSlots","_u","key","fn","proxy","ariaLabel","activateLocalFilePicker","removeBackground","mimeValue","defaultMimeValue","class","ref","onChange","placeholder","type","maxlength","Boolean","indexOf","_k","keyCode","apply","arguments","docUrl","isThemable","notThemableErrorMessage","_l","field","$set","colorPickerField","mimeName","userThemingField","canThemeIcons","docUrlIcons","Vue","OC","theming","App","$mount","$on","document","head","querySelectorAll","forEach","theme","URL","href","searchParams","set","Date","now","newTheme","cloneNode","toString","onload","remove","append","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/theming-personal-theming.js b/dist/theming-personal-theming.js index 26396fd2c15..a402fd9e7a3 100644 --- a/dist/theming-personal-theming.js +++ b/dist/theming-personal-theming.js @@ -1,3 +1,3 @@ /*! For license information please see theming-personal-theming.js.LICENSE.txt */ -!function(){"use strict";var n,e={40539:function(n,e,r){var a=r(20144),o=r(79753),i=r(16453),c=r(4820),s=r(20571),u=r.n(s),l=r(13299),d=r.n(l),g=function(n){return(0,o.generateFilePath)("theming","","img/background/")+n},h=function(n){var e,t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",i=(null===(e=window.OCA)||void 0===e||null===(t=e.Theming)||void 0===t?void 0:t.enabledThemes)||[],c=0===i.length||"default"===i[0]?window.matchMedia("(prefers-color-scheme: dark)").matches:-1!==i.join("").indexOf("dark");return"default"===n?a&&"backgroundColor"!==a?(0,o.generateUrl)("/apps/theming/image/background")+"?v="+window.OCA.Theming.cacheBuster:g(c?"eduardo-neves-pedra-azul.jpg":"kamil-porembinski-clouds.jpg"):"custom"===n?(0,o.generateUrl)("/apps/theming/background")+"?v="+r:g(n)},p=r(20296),m=r.n(p),f=r(69867),A=r.n(f),v=r(15168),b=r.n(v);function k(n,e,t,r,a,o,i){try{var c=n[o](i),s=c.value}catch(n){return void t(n)}c.done?e(s):Promise.resolve(s).then(r,a)}function C(n){return function(){var e=this,t=arguments;return new Promise((function(r,a){var o=n.apply(e,t);function i(n){k(o,r,a,i,c,"next",n)}function c(n){k(o,r,a,i,c,"throw",n)}i(void 0)}))}}function y(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}var w=(0,i.loadState)("theming","shippedBackgrounds"),x={name:"BackgroundSettings",directives:{Tooltip:b()},components:{NcColorPicker:A()},props:{background:{type:String,default:"default"},themingDefaultBackground:{type:String,default:""}},data:function(){return{backgroundImage:(0,o.generateUrl)("/apps/theming/background")+"?v="+Date.now(),loading:!1,Theming:(0,i.loadState)("theming","data",{})}},computed:{shippedBackgrounds:function(){return Object.keys(w).map((function(n){return{name:n,url:g(n),preview:g("preview/"+n),details:w[n]}}))}},methods:{invertTextColor:function(n){return this.calculateLuma(n)>.6},calculateLuma:function(n){var e,t,r=(e=this.hexToRGB(n),t=3,function(n){if(Array.isArray(n))return n}(e)||function(n,e){var t=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=t){var r,a,o=[],i=!0,c=!1;try{for(t=t.call(n);!(i=(r=t.next()).done)&&(o.push(r.value),!e||o.length!==e);i=!0);}catch(n){c=!0,a=n}finally{try{i||null==t.return||t.return()}finally{if(c)throw a}}return o}}(e,t)||function(n,e){if(n){if("string"==typeof n)return y(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?y(n,e):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}());return(.2126*r[0]+.7152*r[1]+.0722*r[2])/255},hexToRGB:function(n){var e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n);return e?[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]:null},update:function(n){var e=this;return C(regeneratorRuntime.mark((function t(){var r,a;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r="custom"===n.type||"default"===n.type?n.type:n.value,e.backgroundImage=h(r,n.version,e.themingDefaultBackground),"color"!==n.type&&("default"!==n.type||"backgroundColor"!==e.themingDefaultBackground)){t.next=6;break}return e.$emit("update:background",n),e.loading=!1,t.abrupt("return");case 6:(a=new Image).onload=function(){e.$emit("update:background",n),e.loading=!1},a.src=e.backgroundImage;case 9:case"end":return t.stop()}}),t)})))()},setDefault:function(){var n=this;return C(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading="default",e.next=3,c.default.post((0,o.generateUrl)("/apps/theming/background/default"));case 3:t=e.sent,n.update(t.data);case 5:case"end":return e.stop()}}),e)})))()},setShipped:function(n){var e=this;return C(regeneratorRuntime.mark((function t(){var r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.loading=n,t.next=3,c.default.post((0,o.generateUrl)("/apps/theming/background/shipped"),{value:n});case 3:r=t.sent,e.update(r.data);case 5:case"end":return t.stop()}}),t)})))()},setFile:function(n){var e=this;return C(regeneratorRuntime.mark((function t(){var r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.loading="custom",t.next=3,c.default.post((0,o.generateUrl)("/apps/theming/background/custom"),{value:n});case 3:r=t.sent,e.update(r.data);case 5:case"end":return t.stop()}}),t)})))()},debouncePickColor:m()((function(){this.pickColor.apply(this,arguments)}),200),pickColor:function(n){var e=this;return C(regeneratorRuntime.mark((function t(){var r,a,i,s,u;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.loading="color",s=(null==n||null===(r=n.target)||void 0===r||null===(a=r.dataset)||void 0===a?void 0:a.color)||(null===(i=e.Theming)||void 0===i?void 0:i.color)||"#0082c9",t.next=4,c.default.post((0,o.generateUrl)("/apps/theming/background/color"),{value:s});case 4:u=t.sent,e.update(u.data);case 6:case"end":return t.stop()}}),t)})))()},pickFile:function(){var n=this;window.OC.dialogs.filepicker(t("theming","Select a background from your files"),(function(e,t){t===OC.dialogs.FILEPICKER_TYPE_CHOOSE&&n.setFile(e)}),!1,["image/png","image/gif","image/jpeg","image/svg"],!0,OC.dialogs.FILEPICKER_TYPE_CHOOSE)}}},_=x,T=r(93379),S=r.n(T),B=r(7795),I=r.n(B),D=r(90569),E=r.n(D),O=r(3565),P=r.n(O),j=r(19216),R=r.n(j),U=r(44589),Z=r.n(U),q=r(12588),F={};F.styleTagTransform=Z(),F.setAttributes=P(),F.insert=E().bind(null,"head"),F.domAPI=I(),F.insertStyleElement=R(),S()(q.Z,F),q.Z&&q.Z.locals&&q.Z.locals;var L=r(51900),$=(0,L.Z)(_,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{staticClass:"background-selector"},[t("button",{staticClass:"background filepicker",class:{active:"custom"===n.background},attrs:{tabindex:"0"},on:{click:n.pickFile}},[n._v("\n\t\t"+n._s(n.t("theming","Pick from Files"))+"\n\t")]),n._v(" "),t("button",{staticClass:"background default",class:{"icon-loading":"default"===n.loading,active:"default"===n.background},attrs:{tabindex:"0"},on:{click:n.setDefault}},[n._v("\n\t\t"+n._s(n.t("theming","Default image"))+"\n\t")]),n._v(" "),t("NcColorPicker",{on:{input:n.debouncePickColor},model:{value:n.Theming.color,callback:function(e){n.$set(n.Theming,"color",e)},expression:"Theming.color"}},[t("button",{staticClass:"background color",class:{active:n.background===n.Theming.color},style:{backgroundColor:n.Theming.color,color:n.invertTextColor(n.Theming.color)?"#000000":"#ffffff"},attrs:{tabindex:"0","data-color":n.Theming.color,"data-color-bright":n.invertTextColor(n.Theming.color)}},[n._v("\n\t\t\t"+n._s(n.t("theming","Custom color"))+"\n\t\t")])]),n._v(" "),t("button",{staticClass:"background color",class:{active:n.background===n.Theming.defaultColor},style:{color:n.invertTextColor(n.Theming.defaultColor)?"#000000":"#ffffff"},attrs:{tabindex:"0","data-color":n.Theming.defaultColor,"data-color-bright":n.invertTextColor(n.Theming.defaultColor)},on:{click:n.debouncePickColor}},[n._v("\n\t\t"+n._s(n.t("theming","Plain background"))+"\n\t")]),n._v(" "),n._l(n.shippedBackgrounds,(function(e){return t("button",{directives:[{name:"tooltip",rawName:"v-tooltip",value:e.details.attribution,expression:"shippedBackground.details.attribution"}],key:e.name,staticClass:"background",class:{"icon-loading":n.loading===e.name,active:n.background===e.name},style:{"background-image":"url("+e.preview+")"},attrs:{tabindex:"0","data-color-bright":"dark"===e.details.theming},on:{click:function(t){return n.setShipped(e.name)}}})}))],2)}),[],!1,null,"9a360ac4",null).exports,N={name:"ItemPreview",components:{NcCheckboxRadioSwitch:u()},props:{enforced:{type:Boolean,default:!1},selected:{type:Boolean,default:!1},theme:{type:Object,required:!0},type:{type:String,default:""},unique:{type:Boolean,default:!1}},computed:{switchType:function(){return this.unique?"switch":"radio"},name:function(){return this.unique?null:this.type},img:function(){return(0,o.generateFilePath)("theming","img",this.theme.id+".jpg")},checked:{get:function(){return this.selected},set:function(n){console.debug("Changed theme",this.theme.id,n),this.unique?this.$emit("change",{enabled:!0===n,id:this.theme.id}):this.$emit("change",{enabled:!0,id:this.theme.id})}}},methods:{onToggle:function(){"radio"!==this.switchType?this.checked=!this.checked:this.checked=!0}}},G=r(83005),K={};K.styleTagTransform=Z(),K.setAttributes=P(),K.insert=E().bind(null,"head"),K.domAPI=I(),K.insertStyleElement=R(),S()(G.Z,K),G.Z&&G.Z.locals&&G.Z.locals;var W=(0,L.Z)(N,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{staticClass:"theming__preview",class:"theming__preview--"+n.theme.id},[t("div",{staticClass:"theming__preview-image",style:{backgroundImage:"url("+n.img+")"},on:{click:n.onToggle}}),n._v(" "),t("div",{staticClass:"theming__preview-description"},[t("h3",[n._v(n._s(n.theme.title))]),n._v(" "),t("p",[n._v(n._s(n.theme.description))]),n._v(" "),n.enforced?t("span",{staticClass:"theming__preview-warning",attrs:{role:"note"}},[n._v("\n\t\t\t"+n._s(n.t("theming","Theme selection is enforced"))+"\n\t\t")]):n._e(),n._v(" "),t("NcCheckboxRadioSwitch",{staticClass:"theming__preview-toggle",attrs:{checked:n.checked,disabled:n.enforced,name:n.name,type:n.switchType},on:{"update:checked":function(e){n.checked=e}}},[n._v("\n\t\t\t"+n._s(n.theme.enableLabel)+"\n\t\t")])],1)])}),[],!1,null,"37ca8ab2",null).exports;function M(n){return function(n){if(Array.isArray(n))return z(n)}(n)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||function(n,e){if(n){if("string"==typeof n)return z(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?z(n,e):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function z(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}function Y(n,e,t,r,a,o,i){try{var c=n[o](i),s=c.value}catch(n){return void t(n)}c.done?e(s):Promise.resolve(s).then(r,a)}function H(n){return function(){var e=this,t=arguments;return new Promise((function(r,a){var o=n.apply(e,t);function i(n){Y(o,r,a,i,c,"next",n)}function c(n){Y(o,r,a,i,c,"throw",n)}i(void 0)}))}}var Q=(0,i.loadState)("theming","themes",[]),V=(0,i.loadState)("theming","enforceTheme",""),J=(0,i.loadState)("theming","shortcutsDisabled",!1),X=(0,i.loadState)("theming","background"),nn=(0,i.loadState)("theming","themingDefaultBackground"),en=(0,i.loadState)("theming","isUserThemingDisabled");console.debug("Available themes",Q);var tn={name:"UserThemes",components:{ItemPreview:W,NcCheckboxRadioSwitch:u(),NcSettingsSection:d(),BackgroundSettings:$},data:function(){return{availableThemes:Q,enforceTheme:V,shortcutsDisabled:J,background:X,themingDefaultBackground:nn,isUserThemingDisabled:en}},computed:{themes:function(){return this.availableThemes.filter((function(n){return 1===n.type}))},fonts:function(){return this.availableThemes.filter((function(n){return 2===n.type}))},selectedTheme:function(){return this.themes.find((function(n){return!0===n.enabled}))||this.themes[0]},description:function(){return t("theming","Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.").replace("{guidelines}",this.guidelinesLink).replace("{linkend}","</a>")},guidelinesLink:function(){return'<a target="_blank" href="https://www.w3.org/WAI/standards-guidelines/wcag/" rel="noreferrer nofollow">'},descriptionDetail:function(){return t("theming","If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!").replace("{issuetracker}",this.issuetrackerLink).replace("{designteam}",this.designteamLink).replace(/\{linkend\}/g,"</a>")},issuetrackerLink:function(){return'<a target="_blank" href="https://github.com/nextcloud/server/issues/" rel="noreferrer nofollow">'},designteamLink:function(){return'<a target="_blank" href="https://nextcloud.com/design" rel="noreferrer nofollow">'}},watch:{shortcutsDisabled:function(n){this.changeShortcutsDisabled(n)}},methods:{updateBackground:function(n){this.background="custom"===n.type||"default"===n.type?n.type:n.value,this.$emit("update:background")},changeTheme:function(n){var e=n.enabled,t=n.id;this.themes.forEach((function(n){n.id===t&&e?n.enabled=!0:n.enabled=!1})),this.updateBodyAttributes(),this.selectItem(e,t)},changeFont:function(n){var e=n.enabled,t=n.id;this.fonts.forEach((function(n){n.id===t&&e?n.enabled=!0:n.enabled=!1})),this.updateBodyAttributes(),this.selectItem(e,t)},changeShortcutsDisabled:function(n){return H(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!n){e.next=5;break}return e.next=3,(0,c.default)({url:(0,o.generateOcsUrl)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"shortcuts_disabled"}),data:{configValue:"yes"},method:"POST"});case 3:e.next=7;break;case 5:return e.next=7,(0,c.default)({url:(0,o.generateOcsUrl)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"shortcuts_disabled"}),method:"DELETE"});case 7:case"end":return e.stop()}}),e)})))()},updateBodyAttributes:function(){var n=this.themes.filter((function(n){return!0===n.enabled})).map((function(n){return n.id})),e=this.fonts.filter((function(n){return!0===n.enabled})).map((function(n){return n.id}));this.themes.forEach((function(n){document.body.toggleAttribute("data-theme-".concat(n.id),n.enabled)})),this.fonts.forEach((function(n){document.body.toggleAttribute("data-theme-".concat(n.id),n.enabled)})),document.body.setAttribute("data-themes",[].concat(M(n),M(e)).join(","))},selectItem:function(n,e){return H(regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(r.prev=0,!n){r.next=6;break}return r.next=4,(0,c.default)({url:(0,o.generateOcsUrl)("apps/theming/api/v1/theme/{themeId}/enable",{themeId:e}),method:"PUT"});case 4:r.next=8;break;case 6:return r.next=8,(0,c.default)({url:(0,o.generateOcsUrl)("apps/theming/api/v1/theme/{themeId}",{themeId:e}),method:"DELETE"});case 8:r.next=14;break;case 10:r.prev=10,r.t0=r.catch(0),console.error(r.t0,r.t0.response),OC.Notification.showTemporary(t("theming",r.t0.response.data.ocs.meta.message+". Unable to apply the setting."));case 14:case"end":return r.stop()}}),r,null,[[0,10]])})))()}}},rn=r(18867),an={};an.styleTagTransform=Z(),an.setAttributes=P(),an.insert=E().bind(null,"head"),an.domAPI=I(),an.insertStyleElement=R(),S()(rn.Z,an),rn.Z&&rn.Z.locals&&rn.Z.locals;var on=(0,L.Z)(tn,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("section",[t("NcSettingsSection",{staticClass:"theming",attrs:{title:n.t("theming","Appearance and accessibility"),"limit-width":!1}},[t("p",{domProps:{innerHTML:n._s(n.description)}}),n._v(" "),t("p",{domProps:{innerHTML:n._s(n.descriptionDetail)}}),n._v(" "),t("div",{staticClass:"theming__preview-list"},n._l(n.themes,(function(e){return t("ItemPreview",{key:e.id,attrs:{enforced:e.id===n.enforceTheme,selected:n.selectedTheme.id===e.id,theme:e,unique:1===n.themes.length,type:"theme"},on:{change:n.changeTheme}})})),1),n._v(" "),t("div",{staticClass:"theming__preview-list"},n._l(n.fonts,(function(e){return t("ItemPreview",{key:e.id,attrs:{selected:e.enabled,theme:e,unique:1===n.fonts.length,type:"font"},on:{change:n.changeFont}})})),1)]),n._v(" "),t("NcSettingsSection",{attrs:{title:n.t("theming","Keyboard shortcuts")}},[t("p",[n._v(n._s(n.t("theming","In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.")))]),n._v(" "),t("NcCheckboxRadioSwitch",{staticClass:"theming__preview-toggle",attrs:{checked:n.shortcutsDisabled,name:"shortcuts_disabled",type:"switch"},on:{"update:checked":function(e){n.shortcutsDisabled=e},change:n.changeShortcutsDisabled}},[n._v("\n\t\t\t"+n._s(n.t("theming","Disable all keyboard shortcuts"))+"\n\t\t")])],1),n._v(" "),t("NcSettingsSection",{staticClass:"background",attrs:{title:n.t("theming","Background")}},[n.isUserThemingDisabled?[t("p",[n._v(n._s(n.t("theming","Customization has been disabled by your administrator")))])]:[t("p",[n._v(n._s(n.t("theming","Set a custom background")))]),n._v(" "),t("BackgroundSettings",{staticClass:"background__grid",attrs:{background:n.background,"theming-default-background":n.themingDefaultBackground},on:{"update:background":n.updateBackground}})]],2)],1)}),[],!1,null,"b77e949c",null).exports;function cn(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}a.ZP.prototype.OC=OC,a.ZP.prototype.t=t;var sn=new(a.ZP.extend(on));sn.$mount("#theming"),sn.$on("update:background",(function(){var n;(n=document.head.querySelectorAll("link.theme"),function(n){if(Array.isArray(n))return cn(n)}(n)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||function(n,e){if(n){if("string"==typeof n)return cn(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?cn(n,e):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).forEach((function(n){var e=new URL(n.href);e.searchParams.set("v",Date.now());var t=n.cloneNode();t.href=e.toString(),t.onload=function(){return n.remove()},document.head.append(t)}))}))},18867:function(n,e,t){var r=t(87537),a=t.n(r),o=t(23645),i=t.n(o)()(a());i.push([n.id,".theming p[data-v-b77e949c]{max-width:800px}.theming[data-v-b77e949c] a{font-weight:bold}.theming[data-v-b77e949c] a:hover,.theming[data-v-b77e949c] a:focus{text-decoration:underline}.theming__preview-list[data-v-b77e949c]{--gap: 30px;display:grid;margin-top:var(--gap);column-gap:var(--gap);row-gap:var(--gap);grid-template-columns:1fr 1fr}.background__grid[data-v-b77e949c]{margin-top:30px}@media(max-width: 1440px){.theming__preview-list[data-v-b77e949c]{display:flex;flex-direction:column}}","",{version:3,sources:["webpack://./apps/theming/src/UserThemes.vue"],names:[],mappings:"AAsRC,4BACC,eAAA,CAID,4BACC,gBAAA,CAEA,oEAEC,yBAAA,CAIF,wCACC,WAAA,CAEA,YAAA,CACA,qBAAA,CACA,qBAAA,CACA,kBAAA,CACA,6BAAA,CAKD,mCACC,eAAA,CAIF,0BACC,wCACC,YAAA,CACA,qBAAA,CAAA",sourcesContent:["\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\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\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\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\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\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\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\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\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.theming {\n\t// Limit width of settings sections for readability\n\tp {\n\t\tmax-width: 800px;\n\t}\n\n\t// Proper highlight for links and focus feedback\n\t&::v-deep a {\n\t\tfont-weight: bold;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t}\n\n\t&__preview-list {\n\t\t--gap: 30px;\n\n\t\tdisplay: grid;\n\t\tmargin-top: var(--gap);\n\t\tcolumn-gap: var(--gap);\n\t\trow-gap: var(--gap);\n\t\tgrid-template-columns: 1fr 1fr;\n\t}\n}\n\n.background {\n\t&__grid {\n\t\tmargin-top: 30px;\n\t}\n}\n\n@media (max-width: 1440px) {\n\t.theming__preview-list {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n}\n"],sourceRoot:""}]),e.Z=i},12588:function(n,e,t){var r=t(87537),a=t.n(r),o=t(23645),i=t.n(o)()(a());i.push([n.id,'.background-selector[data-v-9a360ac4]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background[data-v-9a360ac4]{width:176px;height:96px;margin:8px;background-size:cover;background-position:center center;text-align:center;border-radius:var(--border-radius-large);border:2px solid var(--color-main-background);overflow:hidden}.background-selector .background.current[data-v-9a360ac4]{background-image:var(--color-background-dark)}.background-selector .background.filepicker[data-v-9a360ac4],.background-selector .background.default[data-v-9a360ac4],.background-selector .background.color[data-v-9a360ac4]{border-color:var(--color-border)}.background-selector .background.color[data-v-9a360ac4]{background-color:var(--color-primary-default);color:var(--color-primary-text)}.background-selector .background.active[data-v-9a360ac4],.background-selector .background[data-v-9a360ac4]:hover,.background-selector .background[data-v-9a360ac4]:focus{border:2px solid var(--color-primary)}.background-selector .background.active[data-v-9a360ac4]:not(.icon-loading):after{background-image:var(--original-icon-checkmark-white);background-repeat:no-repeat;background-position:center;background-size:44px;content:"";display:block;height:100%}.background-selector .background.active:not(.icon-loading)[data-color-bright][data-v-9a360ac4]:after{background-image:var(--original-icon-checkmark-dark)}',"",{version:3,sources:["webpack://./apps/theming/src/components/BackgroundSettings.vue"],names:[],mappings:"AA6NA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,kDACC,WAAA,CACA,WAAA,CACA,UAAA,CACA,qBAAA,CACA,iCAAA,CACA,iBAAA,CACA,wCAAA,CACA,6CAAA,CACA,eAAA,CAEA,0DACC,6CAAA,CAGD,+KACC,gCAAA,CAGD,wDACC,6CAAA,CACA,+BAAA,CAGD,yKAGC,qCAAA,CAIA,kFACC,qDAAA,CACA,2BAAA,CACA,0BAAA,CACA,oBAAA,CACA,UAAA,CACA,aAAA,CACA,WAAA,CAGD,qGACC,oDAAA",sourcesContent:["\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\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\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\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\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\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\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\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.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background {\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center center;\n\t\ttext-align: center;\n\t\tborder-radius: var(--border-radius-large);\n\t\tborder: 2px solid var(--color-main-background);\n\t\toverflow: hidden;\n\n\t\t&.current {\n\t\t\tbackground-image: var(--color-background-dark);\n\t\t}\n\n\t\t&.filepicker, &.default, &.color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t&.color {\n\t\t\tbackground-color: var(--color-primary-default);\n\t\t\tcolor: var(--color-primary-text);\n\t\t}\n\n\t\t&.active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tborder: 2px solid var(--color-primary);\n\t\t}\n\n\t\t&.active:not(.icon-loading) {\n\t\t\t&:after {\n\t\t\t\tbackground-image: var(--original-icon-checkmark-white);\n\t\t\t\tbackground-repeat: no-repeat;\n\t\t\t\tbackground-position: center;\n\t\t\t\tbackground-size: 44px;\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: block;\n\t\t\t\theight: 100%;\n\t\t\t}\n\n\t\t\t&[data-color-bright]:after {\n\t\t\t\tbackground-image: var(--original-icon-checkmark-dark);\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),e.Z=i},83005:function(n,e,t){var r=t(87537),a=t.n(r),o=t(23645),i=t.n(o)()(a());i.push([n.id,".theming__preview[data-v-37ca8ab2]{--ratio: 16;position:relative;display:flex;justify-content:flex-start;max-width:800px}.theming__preview[data-v-37ca8ab2],.theming__preview *[data-v-37ca8ab2]{user-select:none}.theming__preview-image[data-v-37ca8ab2]{flex-basis:calc(16px*var(--ratio));flex-shrink:0;height:calc(10px*var(--ratio));margin-right:var(--gap);cursor:pointer;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:top left;background-size:cover}.theming__preview-description[data-v-37ca8ab2]{display:flex;flex-direction:column}.theming__preview-description label[data-v-37ca8ab2]{padding:12px 0}.theming__preview--default[data-v-37ca8ab2]{grid-column:span 2}.theming__preview-warning[data-v-37ca8ab2]{color:var(--color-warning)}@media(max-width: 682.6666666667px){.theming__preview[data-v-37ca8ab2]{flex-direction:column}.theming__preview-image[data-v-37ca8ab2]{margin:0}}","",{version:3,sources:["webpack://./apps/theming/src/components/ItemPreview.vue"],names:[],mappings:"AAiGA,mCAEC,WAAA,CAEA,iBAAA,CACA,YAAA,CACA,0BAAA,CACA,eAAA,CAEA,wEAEC,gBAAA,CAGD,yCACC,kCAAA,CACA,aAAA,CACA,8BAAA,CACA,uBAAA,CACA,cAAA,CACA,kCAAA,CACA,2BAAA,CACA,4BAAA,CACA,qBAAA,CAGD,+CACC,YAAA,CACA,qBAAA,CAEA,qDACC,cAAA,CAIF,4CACC,kBAAA,CAGD,2CACC,0BAAA,CAIF,oCACC,mCACC,qBAAA,CAEA,yCACC,QAAA,CAAA",sourcesContent:["\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\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\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\n\n\n\n\n\n\n\n\n\n\n\n\n.theming__preview {\n\t// We make previews on 16/10 screens\n\t--ratio: 16;\n\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tmax-width: 800px;\n\n\t&,\n\t* {\n\t\tuser-select: none;\n\t}\n\n\t&-image {\n\t\tflex-basis: calc(16px * var(--ratio));\n\t\tflex-shrink: 0;\n\t\theight: calc(10px * var(--ratio));\n\t\tmargin-right: var(--gap);\n\t\tcursor: pointer;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: top left;\n\t\tbackground-size: cover;\n\t}\n\n\t&-description {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\tlabel {\n\t\t\tpadding: 12px 0;\n\t\t}\n\t}\n\n\t&--default {\n\t\tgrid-column: span 2;\n\t}\n\n\t&-warning {\n\t\tcolor: var(--color-warning);\n\t}\n}\n\n@media (max-width: (1024px / 1.5)) {\n\t.theming__preview {\n\t\tflex-direction: column;\n\n\t\t&-image {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]),e.Z=i}},r={};function a(n){var t=r[n];if(void 0!==t)return t.exports;var o=r[n]={id:n,loaded:!1,exports:{}};return e[n].call(o.exports,o,o.exports,a),o.loaded=!0,o.exports}a.m=e,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},n=[],a.O=function(e,t,r,o){if(!t){var i=1/0;for(l=0;l<n.length;l++){t=n[l][0],r=n[l][1],o=n[l][2];for(var c=!0,s=0;s<t.length;s++)(!1&o||i>=o)&&Object.keys(a.O).every((function(n){return a.O[n](t[s])}))?t.splice(s--,1):(c=!1,o<i&&(i=o));if(c){n.splice(l--,1);var u=r();void 0!==u&&(e=u)}}return e}o=o||0;for(var l=n.length;l>0&&n[l-1][2]>o;l--)n[l]=n[l-1];n[l]=[t,r,o]},a.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return a.d(e,{a:e}),e},a.d=function(n,e){for(var t in e)a.o(e,t)&&!a.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),a.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},a.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},a.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},a.j=1474,function(){a.b=document.baseURI||self.location.href;var n={1474:0};a.O.j=function(e){return 0===n[e]};var e=function(e,t){var r,o,i=t[0],c=t[1],s=t[2],u=0;if(i.some((function(e){return 0!==n[e]}))){for(r in c)a.o(c,r)&&(a.m[r]=c[r]);if(s)var l=s(a)}for(e&&e(t);u<i.length;u++)o=i[u],a.o(n,o)&&n[o]&&n[o][0](),n[o]=0;return a.O(l)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(e.bind(null,0)),t.push=e.bind(null,t.push.bind(t))}(),a.nc=void 0;var o=a.O(void 0,[7874],(function(){return a(40539)}));o=a.O(o)}(); -//# sourceMappingURL=theming-personal-theming.js.map?v=16e90bc215b6505604d0
\ No newline at end of file +!function(){"use strict";var n,e={10106:function(n,e,r){var a=r(20144),o=r(79753),i=r(16453),c=r(4820),s=r(20571),l=r.n(s),u=r(13299),d=r.n(u),g=r(14625),m=r(31894),p=r(20296),h=r.n(p),f=r(69867),A=r.n(f),b=r(15168),v=r.n(b),k=r(1082),C=r.n(k),_=(r(97248),r(26932)),y=r(22200);function w(n,e,t,r,a,o,i){try{var c=n[o](i),s=c.value}catch(n){return void t(n)}c.done?e(s):Promise.resolve(s).then(r,a)}function x(n){return function(){var e=this,t=arguments;return new Promise((function(r,a){var o=n.apply(e,t);function i(n){w(o,r,a,i,c,"next",n)}function c(n){w(o,r,a,i,c,"throw",n)}i(void 0)}))}}function S(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}var T=(0,i.loadState)("theming","backgroundColor"),I=(0,i.loadState)("theming","backgroundImage"),B=(0,i.loadState)("theming","shippedBackgrounds"),D=(0,i.loadState)("theming","themingDefaultBackground"),E=(0,i.loadState)("theming","defaultShippedBackground"),P=function(n){return(0,o.generateFilePath)("theming","","img/background/")+n},R=(0,_.fn)(t("theming","Select a background from your files")).setMultiSelect(!1).setModal(!0).setType(1).setMimeTypeFilter(["image/png","image/gif","image/jpeg","image/svg+xml","image/svg"]).build(),U={name:"BackgroundSettings",directives:{Tooltip:v()},components:{Check:g.default,Close:m.default,NcColorPicker:A()},data:function(){return{loading:!1,Theming:(0,i.loadState)("theming","data",{}),backgroundImage:I,backgroundColor:T}},computed:{shippedBackgrounds:function(){var n=this;return Object.keys(B).map((function(n){return{name:n,url:P(n),preview:P("preview/"+n),details:B[n]}})).filter((function(e){return!(!n.isGlobalBackgroundDeleted&&!n.isGlobalBackgroundDefault)||e.name!==E}))},isGlobalBackgroundDefault:function(){return!!D},isGlobalBackgroundDeleted:function(){return"backgroundColor"===D}},methods:{invertTextColor:function(n){return this.calculateLuma(n)>.6},calculateLuma:function(n){var e,t,r=(e=this.hexToRGB(n),t=3,function(n){if(Array.isArray(n))return n}(e)||function(n,e){var t=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=t){var r,a,o=[],i=!0,c=!1;try{for(t=t.call(n);!(i=(r=t.next()).done)&&(o.push(r.value),!e||o.length!==e);i=!0);}catch(n){c=!0,a=n}finally{try{i||null==t.return||t.return()}finally{if(c)throw a}}return o}}(e,t)||function(n,e){if(n){if("string"==typeof n)return S(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?S(n,e):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}());return(.2126*r[0]+.7152*r[1]+.0722*r[2])/255},hexToRGB:function(n){var e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n);return e?[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]:null},update:function(n){var e=this;return x(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.backgroundImage=n.backgroundImage,e.backgroundColor=n.backgroundColor,e.Theming.color=n.backgroundColor,e.$emit("update:background"),e.loading=!1;case 5:case"end":return t.stop()}}),t)})))()},setDefault:function(){var n=this;return x(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading="default",e.next=3,c.default.post((0,o.generateUrl)("/apps/theming/background/default"));case 3:t=e.sent,n.update(t.data);case 5:case"end":return e.stop()}}),e)})))()},setShipped:function(n){var e=this;return x(regeneratorRuntime.mark((function t(){var r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.loading=n,t.next=3,c.default.post((0,o.generateUrl)("/apps/theming/background/shipped"),{value:n});case 3:r=t.sent,e.update(r.data);case 5:case"end":return t.stop()}}),t)})))()},setFile:function(n){var e=arguments,t=this;return x(regeneratorRuntime.mark((function r(){var a,i;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return a=e.length>1&&void 0!==e[1]?e[1]:null,t.loading="custom",r.next=4,c.default.post((0,o.generateUrl)("/apps/theming/background/custom"),{value:n,color:a});case 4:i=r.sent,t.update(i.data);case 6:case"end":return r.stop()}}),r)})))()},removeBackground:function(){var n=this;return x(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading="remove",e.next=3,c.default.delete((0,o.generateUrl)("/apps/theming/background/custom"));case 3:t=e.sent,n.update(t.data);case 5:case"end":return e.stop()}}),e)})))()},pickColor:function(n){var e=this;return x(regeneratorRuntime.mark((function t(){var r,a,i,s,l;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.loading="color",s=(null==n||null===(r=n.target)||void 0===r||null===(a=r.dataset)||void 0===a?void 0:a.color)||(null===(i=e.Theming)||void 0===i?void 0:i.color)||"#0082c9",t.next=4,c.default.post((0,o.generateUrl)("/apps/theming/background/color"),{color:s});case 4:l=t.sent,e.update(l.data);case 6:case"end":return t.stop()}}),t)})))()},debouncePickColor:h()((function(){this.pickColor.apply(this,arguments)}),200),pickFile:function(){var n=this;return x(regeneratorRuntime.mark((function e(){var t,r,a,i,s,l,u;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,R.pick();case 2:return t=e.sent,n.loading="custom",r=null,a=null,e.prev=6,s=(0,o.generateRemoteUrl)("dav/files/"+(0,y.getCurrentUser)().uid+t),e.next=10,c.default.get(s,{responseType:"blob"});case 10:return r=e.sent,l=URL.createObjectURL(r.data),e.next=14,n.getColorPaletteFromBlob(l);case 14:u=e.sent,a=null==u||null===(i=u.DarkVibrant)||void 0===i?void 0:i.hex,n.setFile(t,a),console.debug("Extracted colour",a,"from custom image",t,u),e.next=24;break;case 20:e.prev=20,e.t0=e.catch(6),n.setFile(t),console.error("Unable to extract colour from custom image",{error:e.t0,path:t,response:r,color:a});case 24:case"end":return e.stop()}}),e,null,[[6,20]])})))()},getColorPaletteFromBlob:function(n){return new Promise((function(e,t){new(C())(n).getPalette((function(n,r){n&&t(n),e(r)}))}))}}},O=U,j=r(93379),G=r.n(j),Z=r(7795),F=r.n(Z),q=r(90569),L=r.n(q),N=r(3565),$=r.n(N),M=r(19216),z=r.n(M),W=r(44589),K=r.n(W),Y=r(18208),H={};H.styleTagTransform=K(),H.setAttributes=$(),H.insert=L().bind(null,"head"),H.domAPI=F(),H.insertStyleElement=z(),G()(Y.Z,H),Y.Z&&Y.Z.locals&&Y.Z.locals;var V=r(51900),Q=(0,V.Z)(O,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{staticClass:"background-selector",attrs:{"data-user-theming-background-settings":""}},[t("button",{staticClass:"background background__filepicker",class:{"icon-loading":"custom"===n.loading,"background--active":"custom"===n.backgroundImage},attrs:{"data-color-bright":n.invertTextColor(n.Theming.color),"data-user-theming-background-custom":"",tabindex:"0"},on:{click:n.pickFile}},[n._v("\n\t\t"+n._s(n.t("theming","Custom background"))+"\n\t\t"),t("Check",{attrs:{size:44}})],1),n._v(" "),t("button",{staticClass:"background background__default",class:{"icon-loading":"default"===n.loading,"background--active":"default"===n.backgroundImage},style:{"--border-color":n.Theming.defaultColor},attrs:{"data-color-bright":n.invertTextColor(n.Theming.defaultColor),"data-user-theming-background-default":"",tabindex:"0"},on:{click:n.setDefault}},[n._v("\n\t\t"+n._s(n.t("theming","Default background"))+"\n\t\t"),t("Check",{attrs:{size:44}})],1),n._v(" "),t("NcColorPicker",{on:{input:n.debouncePickColor},model:{value:n.Theming.color,callback:function(e){n.$set(n.Theming,"color",e)},expression:"Theming.color"}},[t("button",{staticClass:"background background__color",style:{backgroundColor:n.Theming.color,"--border-color":n.Theming.color},attrs:{"data-color":n.Theming.color,"data-color-bright":n.invertTextColor(n.Theming.color),"data-user-theming-background-color":"",tabindex:"0"}},[n._v("\n\t\t\t"+n._s(n.t("theming","Change color"))+"\n\t\t")])]),n._v(" "),n._l(n.shippedBackgrounds,(function(e){return t("button",{directives:[{name:"tooltip",rawName:"v-tooltip",value:e.details.attribution,expression:"shippedBackground.details.attribution"}],key:e.name,staticClass:"background background__shipped",class:{"icon-loading":n.loading===e.name,"background--active":n.backgroundImage===e.name},style:{backgroundImage:"url("+e.preview+")","--border-color":e.details.primary_color},attrs:{"data-color-bright":"dark"===e.details.theming,"data-user-theming-background-shipped":e.name,tabindex:"0"},on:{click:function(t){return n.setShipped(e.name)}}},[t("Check",{attrs:{size:44}})],1)})),n._v(" "),t("button",{staticClass:"background background__delete",attrs:{"data-user-theming-background-clear":"",tabindex:"0"},on:{click:n.removeBackground}},[n._v("\n\t\t"+n._s(n.t("theming","Remove background"))+"\n\t\t"),t("Close",{attrs:{size:32}})],1)],2)}),[],!1,null,"16031e91",null).exports,J={name:"ItemPreview",components:{NcCheckboxRadioSwitch:l()},props:{enforced:{type:Boolean,default:!1},selected:{type:Boolean,default:!1},theme:{type:Object,required:!0},type:{type:String,default:""},unique:{type:Boolean,default:!1}},computed:{switchType:function(){return this.unique?"switch":"radio"},name:function(){return this.unique?null:this.type},img:function(){return(0,o.generateFilePath)("theming","img",this.theme.id+".jpg")},checked:{get:function(){return this.selected},set:function(n){console.debug("Changed theme",this.theme.id,n),this.unique?this.$emit("change",{enabled:!0===n,id:this.theme.id}):this.$emit("change",{enabled:!0,id:this.theme.id})}}},methods:{onToggle:function(){"radio"!==this.switchType?this.checked=!this.checked:this.checked=!0}}},X=r(83005),nn={};nn.styleTagTransform=K(),nn.setAttributes=$(),nn.insert=L().bind(null,"head"),nn.domAPI=F(),nn.insertStyleElement=z(),G()(X.Z,nn),X.Z&&X.Z.locals&&X.Z.locals;var en=(0,V.Z)(J,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{staticClass:"theming__preview",class:"theming__preview--"+n.theme.id},[t("div",{staticClass:"theming__preview-image",style:{backgroundImage:"url("+n.img+")"},on:{click:n.onToggle}}),n._v(" "),t("div",{staticClass:"theming__preview-description"},[t("h3",[n._v(n._s(n.theme.title))]),n._v(" "),t("p",[n._v(n._s(n.theme.description))]),n._v(" "),n.enforced?t("span",{staticClass:"theming__preview-warning",attrs:{role:"note"}},[n._v("\n\t\t\t"+n._s(n.t("theming","Theme selection is enforced"))+"\n\t\t")]):n._e(),n._v(" "),t("NcCheckboxRadioSwitch",{staticClass:"theming__preview-toggle",attrs:{checked:n.checked,disabled:n.enforced,name:n.name,type:n.switchType},on:{"update:checked":function(e){n.checked=e}}},[n._v("\n\t\t\t"+n._s(n.theme.enableLabel)+"\n\t\t")])],1)])}),[],!1,null,"37ca8ab2",null).exports;function tn(n,e,t,r,a,o,i){try{var c=n[o](i),s=c.value}catch(n){return void t(n)}c.done?e(s):Promise.resolve(s).then(r,a)}function rn(n){return function(){var e=this,t=arguments;return new Promise((function(r,a){var o=n.apply(e,t);function i(n){tn(o,r,a,i,c,"next",n)}function c(n){tn(o,r,a,i,c,"throw",n)}i(void 0)}))}}function an(n){return function(n){if(Array.isArray(n))return on(n)}(n)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||function(n,e){if(n){if("string"==typeof n)return on(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?on(n,e):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function on(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}var cn=(0,i.loadState)("theming","themes",[]),sn=(0,i.loadState)("theming","enforceTheme",""),ln=(0,i.loadState)("theming","shortcutsDisabled",!1),un=(0,i.loadState)("theming","isUserThemingDisabled");console.debug("Available themes",cn);var dn={name:"UserThemes",components:{ItemPreview:en,NcCheckboxRadioSwitch:l(),NcSettingsSection:d(),BackgroundSettings:Q},data:function(){return{availableThemes:cn,enforceTheme:sn,shortcutsDisabled:ln,isUserThemingDisabled:un}},computed:{themes:function(){return this.availableThemes.filter((function(n){return 1===n.type}))},fonts:function(){return this.availableThemes.filter((function(n){return 2===n.type}))},selectedTheme:function(){return this.themes.find((function(n){return!0===n.enabled}))||this.themes[0]},description:function(){return t("theming","Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.").replace("{guidelines}",this.guidelinesLink).replace("{linkend}","</a>")},guidelinesLink:function(){return'<a target="_blank" href="https://www.w3.org/WAI/standards-guidelines/wcag/" rel="noreferrer nofollow">'},descriptionDetail:function(){return t("theming","If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!").replace("{issuetracker}",this.issuetrackerLink).replace("{designteam}",this.designteamLink).replace(/\{linkend\}/g,"</a>")},issuetrackerLink:function(){return'<a target="_blank" href="https://github.com/nextcloud/server/issues/" rel="noreferrer nofollow">'},designteamLink:function(){return'<a target="_blank" href="https://nextcloud.com/design" rel="noreferrer nofollow">'}},watch:{shortcutsDisabled:function(n){this.changeShortcutsDisabled(n)}},methods:{refreshGlobalStyles:function(){an(document.head.querySelectorAll("link.theme")).forEach((function(n){var e=new URL(n.href);e.searchParams.set("v",Date.now());var t=n.cloneNode();t.href=e.toString(),t.onload=function(){return n.remove()},document.head.append(t)}))},updateBackground:function(n){this.background="custom"===n.type||"default"===n.type?n.type:n.value,this.refreshGlobalStyles()},changeTheme:function(n){var e=n.enabled,t=n.id;this.themes.forEach((function(n){n.id===t&&e?n.enabled=!0:n.enabled=!1})),this.updateBodyAttributes(),this.selectItem(e,t)},changeFont:function(n){var e=n.enabled,t=n.id;this.fonts.forEach((function(n){n.id===t&&e?n.enabled=!0:n.enabled=!1})),this.updateBodyAttributes(),this.selectItem(e,t)},changeShortcutsDisabled:function(n){return rn(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!n){e.next=5;break}return e.next=3,(0,c.default)({url:(0,o.generateOcsUrl)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"shortcuts_disabled"}),data:{configValue:"yes"},method:"POST"});case 3:e.next=7;break;case 5:return e.next=7,(0,c.default)({url:(0,o.generateOcsUrl)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"shortcuts_disabled"}),method:"DELETE"});case 7:case"end":return e.stop()}}),e)})))()},updateBodyAttributes:function(){var n=this.themes.filter((function(n){return!0===n.enabled})).map((function(n){return n.id})),e=this.fonts.filter((function(n){return!0===n.enabled})).map((function(n){return n.id}));this.themes.forEach((function(n){document.body.toggleAttribute("data-theme-".concat(n.id),n.enabled)})),this.fonts.forEach((function(n){document.body.toggleAttribute("data-theme-".concat(n.id),n.enabled)})),document.body.setAttribute("data-themes",[].concat(an(n),an(e)).join(","))},selectItem:function(n,e){return rn(regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(r.prev=0,!n){r.next=6;break}return r.next=4,(0,c.default)({url:(0,o.generateOcsUrl)("apps/theming/api/v1/theme/{themeId}/enable",{themeId:e}),method:"PUT"});case 4:r.next=8;break;case 6:return r.next=8,(0,c.default)({url:(0,o.generateOcsUrl)("apps/theming/api/v1/theme/{themeId}",{themeId:e}),method:"DELETE"});case 8:r.next=14;break;case 10:r.prev=10,r.t0=r.catch(0),console.error(r.t0,r.t0.response),OC.Notification.showTemporary(t("theming",r.t0.response.data.ocs.meta.message+". Unable to apply the setting."));case 14:case"end":return r.stop()}}),r,null,[[0,10]])})))()}}},gn=r(7013),mn={};mn.styleTagTransform=K(),mn.setAttributes=$(),mn.insert=L().bind(null,"head"),mn.domAPI=F(),mn.insertStyleElement=z(),G()(gn.Z,mn),gn.Z&&gn.Z.locals&&gn.Z.locals;var pn=(0,V.Z)(dn,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("section",[t("NcSettingsSection",{staticClass:"theming",attrs:{title:n.t("theming","Appearance and accessibility"),"limit-width":!1}},[t("p",{domProps:{innerHTML:n._s(n.description)}}),n._v(" "),t("p",{domProps:{innerHTML:n._s(n.descriptionDetail)}}),n._v(" "),t("div",{staticClass:"theming__preview-list"},n._l(n.themes,(function(e){return t("ItemPreview",{key:e.id,attrs:{enforced:e.id===n.enforceTheme,selected:n.selectedTheme.id===e.id,theme:e,unique:1===n.themes.length,type:"theme"},on:{change:n.changeTheme}})})),1),n._v(" "),t("div",{staticClass:"theming__preview-list"},n._l(n.fonts,(function(e){return t("ItemPreview",{key:e.id,attrs:{selected:e.enabled,theme:e,unique:1===n.fonts.length,type:"font"},on:{change:n.changeFont}})})),1)]),n._v(" "),t("NcSettingsSection",{attrs:{title:n.t("theming","Keyboard shortcuts")}},[t("p",[n._v(n._s(n.t("theming","In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.")))]),n._v(" "),t("NcCheckboxRadioSwitch",{staticClass:"theming__preview-toggle",attrs:{checked:n.shortcutsDisabled,name:"shortcuts_disabled",type:"switch"},on:{"update:checked":function(e){n.shortcutsDisabled=e},change:n.changeShortcutsDisabled}},[n._v("\n\t\t\t"+n._s(n.t("theming","Disable all keyboard shortcuts"))+"\n\t\t")])],1),n._v(" "),t("NcSettingsSection",{staticClass:"background",attrs:{title:n.t("theming","Background")}},[n.isUserThemingDisabled?[t("p",[n._v(n._s(n.t("theming","Customization has been disabled by your administrator")))])]:[t("p",[n._v(n._s(n.t("theming","Set a custom background")))]),n._v(" "),t("BackgroundSettings",{staticClass:"background__grid",on:{"update:background":n.refreshGlobalStyles}})]],2)],1)}),[],!1,null,"f871767a",null).exports;function hn(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}a.ZP.prototype.OC=OC,a.ZP.prototype.t=t;var fn=new(a.ZP.extend(pn));fn.$mount("#theming"),fn.$on("update:background",(function(){var n;(n=document.head.querySelectorAll("link.theme"),function(n){if(Array.isArray(n))return hn(n)}(n)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||function(n,e){if(n){if("string"==typeof n)return hn(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?hn(n,e):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).forEach((function(n){var e=new URL(n.href);e.searchParams.set("v",Date.now());var t=n.cloneNode();t.href=e.toString(),t.onload=function(){return n.remove()},document.head.append(t)}))}))},7013:function(n,e,t){var r=t(87537),a=t.n(r),o=t(23645),i=t.n(o)()(a());i.push([n.id,".theming p[data-v-f871767a]{max-width:800px}.theming[data-v-f871767a] a{font-weight:bold}.theming[data-v-f871767a] a:hover,.theming[data-v-f871767a] a:focus{text-decoration:underline}.theming__preview-list[data-v-f871767a]{--gap: 30px;display:grid;margin-top:var(--gap);column-gap:var(--gap);row-gap:var(--gap);grid-template-columns:1fr 1fr}.background__grid[data-v-f871767a]{margin-top:30px}@media(max-width: 1440px){.theming__preview-list[data-v-f871767a]{display:flex;flex-direction:column}}","",{version:3,sources:["webpack://./apps/theming/src/UserThemes.vue"],names:[],mappings:"AA6RC,4BACC,eAAA,CAID,4BACC,gBAAA,CAEA,oEAEC,yBAAA,CAIF,wCACC,WAAA,CAEA,YAAA,CACA,qBAAA,CACA,qBAAA,CACA,kBAAA,CACA,6BAAA,CAKD,mCACC,eAAA,CAIF,0BACC,wCACC,YAAA,CACA,qBAAA,CAAA",sourcesContent:["\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\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\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\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\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\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\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\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\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\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\n\n\n.theming {\n\t// Limit width of settings sections for readability\n\tp {\n\t\tmax-width: 800px;\n\t}\n\n\t// Proper highlight for links and focus feedback\n\t&::v-deep a {\n\t\tfont-weight: bold;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t}\n\n\t&__preview-list {\n\t\t--gap: 30px;\n\n\t\tdisplay: grid;\n\t\tmargin-top: var(--gap);\n\t\tcolumn-gap: var(--gap);\n\t\trow-gap: var(--gap);\n\t\tgrid-template-columns: 1fr 1fr;\n\t}\n}\n\n.background {\n\t&__grid {\n\t\tmargin-top: 30px;\n\t}\n}\n\n@media (max-width: 1440px) {\n\t.theming__preview-list {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n}\n"],sourceRoot:""}]),e.Z=i},18208:function(n,e,t){var r=t(87537),a=t.n(r),o=t(23645),i=t.n(o)()(a());i.push([n.id,".background-selector[data-v-16031e91]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background[data-v-16031e91]{overflow:hidden;width:176px;height:96px;margin:8px;text-align:center;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-position:center center;background-size:cover}.background-selector .background__filepicker.background--active[data-v-16031e91]{color:#fff;background-image:var(--image-background)}.background-selector .background__default[data-v-16031e91]{background-color:var(--color-primary-default);background-image:var(--image-background-default)}.background-selector .background__filepicker[data-v-16031e91],.background-selector .background__default[data-v-16031e91],.background-selector .background__color[data-v-16031e91]{border-color:var(--color-border)}.background-selector .background__color[data-v-16031e91]{color:var(--color-primary-text);background-color:var(--color-primary-default)}.background-selector .background__default[data-v-16031e91],.background-selector .background__shipped[data-v-16031e91]{color:#fff}.background-selector .background[data-color-bright][data-v-16031e91]{color:#000}.background-selector .background--active[data-v-16031e91],.background-selector .background[data-v-16031e91]:hover,.background-selector .background[data-v-16031e91]:focus{border:2px solid var(--border-color, var(--color-primary)) !important}.background-selector .background span[data-v-16031e91]{margin:4px}.background-selector .background__filepicker span[data-v-16031e91],.background-selector .background__default span[data-v-16031e91],.background-selector .background__shipped span[data-v-16031e91]{display:none}.background-selector .background--active:not(.icon-loading) span[data-v-16031e91]{display:block !important}","",{version:3,sources:["webpack://./apps/theming/src/components/BackgroundSettings.vue"],names:[],mappings:"AA8SA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,kDACC,eAAA,CACA,WAAA,CACA,WAAA,CACA,UAAA,CACA,iBAAA,CACA,6CAAA,CACA,wCAAA,CACA,iCAAA,CACA,qBAAA,CAGC,iFACC,UAAA,CACA,wCAAA,CAIF,2DACC,6CAAA,CACA,gDAAA,CAGD,kLACC,gCAAA,CAGD,yDACC,+BAAA,CACA,6CAAA,CAID,sHAEC,UAAA,CAID,qEACC,UAAA,CAGD,0KAIC,qEAAA,CAID,uDACC,UAAA,CAGD,mMAGC,YAAA,CAGD,kFACC,wBAAA",sourcesContent:["\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\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\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\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\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\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\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\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\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\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background {\n\t\toverflow: hidden;\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\ttext-align: center;\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-position: center center;\n\t\tbackground-size: cover;\n\n\t\t&__filepicker {\n\t\t\t&.background--active {\n\t\t\t\tcolor: white;\n\t\t\t\tbackground-image: var(--image-background);\n\t\t\t}\n\t\t}\n\n\t\t&__default {\n\t\t\tbackground-color: var(--color-primary-default);\n\t\t\tbackground-image: var(--image-background-default);\n\t\t}\n\n\t\t&__filepicker, &__default, &__color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t&__color {\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tbackground-color: var(--color-primary-default);\n\t\t}\n\n\t\t// Over a background image\n\t\t&__default,\n\t\t&__shipped {\n\t\t\tcolor: white;\n\t\t}\n\n\t\t// Text and svg icon dark on bright background\n\t\t&[data-color-bright] {\n\t\t\tcolor: black;\n\t\t}\n\n\t\t&--active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\t// Use theme color primary, see inline css variable in template\n\t\t\tborder: 2px solid var(--border-color, var(--color-primary)) !important;\n\t\t}\n\n\t\t// Icon\n\t\tspan {\n\t\t\tmargin: 4px;\n\t\t}\n\n\t\t&__filepicker span,\n\t\t&__default span,\n\t\t&__shipped span {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t&--active:not(.icon-loading) span {\n\t\t\tdisplay: block !important;\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]),e.Z=i},83005:function(n,e,t){var r=t(87537),a=t.n(r),o=t(23645),i=t.n(o)()(a());i.push([n.id,".theming__preview[data-v-37ca8ab2]{--ratio: 16;position:relative;display:flex;justify-content:flex-start;max-width:800px}.theming__preview[data-v-37ca8ab2],.theming__preview *[data-v-37ca8ab2]{user-select:none}.theming__preview-image[data-v-37ca8ab2]{flex-basis:calc(16px*var(--ratio));flex-shrink:0;height:calc(10px*var(--ratio));margin-right:var(--gap);cursor:pointer;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:top left;background-size:cover}.theming__preview-description[data-v-37ca8ab2]{display:flex;flex-direction:column}.theming__preview-description label[data-v-37ca8ab2]{padding:12px 0}.theming__preview--default[data-v-37ca8ab2]{grid-column:span 2}.theming__preview-warning[data-v-37ca8ab2]{color:var(--color-warning)}@media(max-width: 682.6666666667px){.theming__preview[data-v-37ca8ab2]{flex-direction:column}.theming__preview-image[data-v-37ca8ab2]{margin:0}}","",{version:3,sources:["webpack://./apps/theming/src/components/ItemPreview.vue"],names:[],mappings:"AAiGA,mCAEC,WAAA,CAEA,iBAAA,CACA,YAAA,CACA,0BAAA,CACA,eAAA,CAEA,wEAEC,gBAAA,CAGD,yCACC,kCAAA,CACA,aAAA,CACA,8BAAA,CACA,uBAAA,CACA,cAAA,CACA,kCAAA,CACA,2BAAA,CACA,4BAAA,CACA,qBAAA,CAGD,+CACC,YAAA,CACA,qBAAA,CAEA,qDACC,cAAA,CAIF,4CACC,kBAAA,CAGD,2CACC,0BAAA,CAIF,oCACC,mCACC,qBAAA,CAEA,yCACC,QAAA,CAAA",sourcesContent:["\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\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\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\n\n\n\n\n\n\n\n\n\n\n\n\n.theming__preview {\n\t// We make previews on 16/10 screens\n\t--ratio: 16;\n\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tmax-width: 800px;\n\n\t&,\n\t* {\n\t\tuser-select: none;\n\t}\n\n\t&-image {\n\t\tflex-basis: calc(16px * var(--ratio));\n\t\tflex-shrink: 0;\n\t\theight: calc(10px * var(--ratio));\n\t\tmargin-right: var(--gap);\n\t\tcursor: pointer;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: top left;\n\t\tbackground-size: cover;\n\t}\n\n\t&-description {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\tlabel {\n\t\t\tpadding: 12px 0;\n\t\t}\n\t}\n\n\t&--default {\n\t\tgrid-column: span 2;\n\t}\n\n\t&-warning {\n\t\tcolor: var(--color-warning);\n\t}\n}\n\n@media (max-width: (1024px / 1.5)) {\n\t.theming__preview {\n\t\tflex-direction: column;\n\n\t\t&-image {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]),e.Z=i}},r={};function a(n){var t=r[n];if(void 0!==t)return t.exports;var o=r[n]={id:n,loaded:!1,exports:{}};return e[n].call(o.exports,o,o.exports,a),o.loaded=!0,o.exports}a.m=e,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},n=[],a.O=function(e,t,r,o){if(!t){var i=1/0;for(u=0;u<n.length;u++){t=n[u][0],r=n[u][1],o=n[u][2];for(var c=!0,s=0;s<t.length;s++)(!1&o||i>=o)&&Object.keys(a.O).every((function(n){return a.O[n](t[s])}))?t.splice(s--,1):(c=!1,o<i&&(i=o));if(c){n.splice(u--,1);var l=r();void 0!==l&&(e=l)}}return e}o=o||0;for(var u=n.length;u>0&&n[u-1][2]>o;u--)n[u]=n[u-1];n[u]=[t,r,o]},a.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return a.d(e,{a:e}),e},a.d=function(n,e){for(var t in e)a.o(e,t)&&!a.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),a.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},a.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},a.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},a.j=1474,function(){a.b=document.baseURI||self.location.href;var n={1474:0};a.O.j=function(e){return 0===n[e]};var e=function(e,t){var r,o,i=t[0],c=t[1],s=t[2],l=0;if(i.some((function(e){return 0!==n[e]}))){for(r in c)a.o(c,r)&&(a.m[r]=c[r]);if(s)var u=s(a)}for(e&&e(t);l<i.length;l++)o=i[l],a.o(n,o)&&n[o]&&n[o][0](),n[o]=0;return a.O(u)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(e.bind(null,0)),t.push=e.bind(null,t.push.bind(t))}(),a.nc=void 0;var o=a.O(void 0,[7874],(function(){return a(10106)}));o=a.O(o)}(); +//# sourceMappingURL=theming-personal-theming.js.map?v=b24868c29b8f93386bf7
\ No newline at end of file diff --git a/dist/theming-personal-theming.js.map b/dist/theming-personal-theming.js.map index 022a17f3684..64ba94f4caf 100644 --- a/dist/theming-personal-theming.js.map +++ b/dist/theming-personal-theming.js.map @@ -1 +1 @@ -{"version":3,"file":"theming-personal-theming.js?v=16e90bc215b6505604d0","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/theming/src/helpers/prefixWithBaseUrl.js","webpack:///nextcloud/apps/theming/src/helpers/getBackgroundUrl.js","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?d003","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?65db","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue?vue&type=template&id=9a360ac4&scoped=true&","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?f1c6","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?8797","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue?vue&type=template&id=37ca8ab2&scoped=true&","webpack:///nextcloud/apps/theming/src/UserThemes.vue","webpack:///nextcloud/apps/theming/src/UserThemes.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/UserThemes.vue?915f","webpack://nextcloud/./apps/theming/src/UserThemes.vue?7eb2","webpack:///nextcloud/apps/theming/src/UserThemes.vue?vue&type=template&id=b77e949c&scoped=true&","webpack:///nextcloud/apps/theming/src/personal-settings.js","webpack:///nextcloud/apps/theming/src/helpers/refreshStyles.js","webpack:///nextcloud/apps/theming/src/UserThemes.vue?vue&type=style&index=0&id=b77e949c&lang=scss&scoped=true&","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue?vue&type=style&index=0&id=9a360ac4&scoped=true&lang=scss&","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue?vue&type=style&index=0&id=37ca8ab2&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { generateFilePath } from '@nextcloud/router'\n\nexport const prefixWithBaseUrl = (url) => generateFilePath('theming', '', 'img/background/') + url\n","/**\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Avior <florian.bouillon@delta-wings.net>\n * @author Julien Veyssier <eneiluj@posteo.net>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { generateUrl } from '@nextcloud/router'\nimport { prefixWithBaseUrl } from './prefixWithBaseUrl.js'\n\nexport const getBackgroundUrl = (background, time = 0, themingDefaultBackground = '') => {\n\tconst enabledThemes = window.OCA?.Theming?.enabledThemes || []\n\tconst isDarkTheme = (enabledThemes.length === 0 || enabledThemes[0] === 'default')\n\t\t? window.matchMedia('(prefers-color-scheme: dark)').matches\n\t\t: enabledThemes.join('').indexOf('dark') !== -1\n\n\tif (background === 'default') {\n\t\tif (themingDefaultBackground && themingDefaultBackground !== 'backgroundColor') {\n\t\t\treturn generateUrl('/apps/theming/image/background') + '?v=' + window.OCA.Theming.cacheBuster\n\t\t}\n\n\t\tif (isDarkTheme) {\n\t\t\treturn prefixWithBaseUrl('eduardo-neves-pedra-azul.jpg')\n\t\t}\n\n\t\treturn prefixWithBaseUrl('kamil-porembinski-clouds.jpg')\n\t} else if (background === 'custom') {\n\t\treturn generateUrl('/apps/theming/background') + '?v=' + time\n\t}\n\n\treturn prefixWithBaseUrl(background)\n}\n","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n - @copyright Copyright (c) 2022 Greta Doci <gretadoci@gmail.com>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n - @author Greta Doci <gretadoci@gmail.com>\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"background-selector\">\n\t\t<!-- Custom background -->\n\t\t<button class=\"background filepicker\"\n\t\t\t:class=\"{ active: background === 'custom' }\"\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"pickFile\">\n\t\t\t{{ t('theming', 'Pick from Files') }}\n\t\t</button>\n\n\t\t<!-- Default background -->\n\t\t<button class=\"background default\"\n\t\t\ttabindex=\"0\"\n\t\t\t:class=\"{ 'icon-loading': loading === 'default', active: background === 'default' }\"\n\t\t\t@click=\"setDefault\">\n\t\t\t{{ t('theming', 'Default image') }}\n\t\t</button>\n\n\t\t<!-- Custom color picker -->\n\t\t<NcColorPicker v-model=\"Theming.color\" @input=\"debouncePickColor\">\n\t\t\t<button class=\"background color\"\n\t\t\t\t:class=\"{ active: background === Theming.color}\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\t:data-color=\"Theming.color\"\n\t\t\t\t:data-color-bright=\"invertTextColor(Theming.color)\"\n\t\t\t\t:style=\"{ backgroundColor: Theming.color, color: invertTextColor(Theming.color) ? '#000000' : '#ffffff'}\">\n\t\t\t\t{{ t('theming', 'Custom color') }}\n\t\t\t</button>\n\t\t</NcColorPicker>\n\n\t\t<!-- Default admin primary color -->\n\t\t<button class=\"background color\"\n\t\t\t:class=\"{ active: background === Theming.defaultColor }\"\n\t\t\ttabindex=\"0\"\n\t\t\t:data-color=\"Theming.defaultColor\"\n\t\t\t:data-color-bright=\"invertTextColor(Theming.defaultColor)\"\n\t\t\t:style=\"{ color: invertTextColor(Theming.defaultColor) ? '#000000' : '#ffffff'}\"\n\t\t\t@click=\"debouncePickColor\">\n\t\t\t{{ t('theming', 'Plain background') }}\n\t\t</button>\n\n\t\t<!-- Background set selection -->\n\t\t<button v-for=\"shippedBackground in shippedBackgrounds\"\n\t\t\t:key=\"shippedBackground.name\"\n\t\t\tv-tooltip=\"shippedBackground.details.attribution\"\n\t\t\t:class=\"{ 'icon-loading': loading === shippedBackground.name, active: background === shippedBackground.name }\"\n\t\t\ttabindex=\"0\"\n\t\t\tclass=\"background\"\n\t\t\t:data-color-bright=\"shippedBackground.details.theming === 'dark'\"\n\t\t\t:style=\"{ 'background-image': 'url(' + shippedBackground.preview + ')' }\"\n\t\t\t@click=\"setShipped(shippedBackground.name)\" />\n\t</div>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { getBackgroundUrl } from '../helpers/getBackgroundUrl.js'\nimport { loadState } from '@nextcloud/initial-state'\nimport { prefixWithBaseUrl } from '../helpers/prefixWithBaseUrl.js'\nimport axios from '@nextcloud/axios'\nimport debounce from 'debounce'\nimport NcColorPicker from '@nextcloud/vue/dist/Components/NcColorPicker'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\n\nconst shippedBackgroundList = loadState('theming', 'shippedBackgrounds')\n\nexport default {\n\tname: 'BackgroundSettings',\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tcomponents: {\n\t\tNcColorPicker,\n\t},\n\n\tprops: {\n\t\tbackground: {\n\t\t\ttype: String,\n\t\t\tdefault: 'default',\n\t\t},\n\t\tthemingDefaultBackground: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tbackgroundImage: generateUrl('/apps/theming/background') + '?v=' + Date.now(),\n\t\t\tloading: false,\n\t\t\tTheming: loadState('theming', 'data', {}),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tshippedBackgrounds() {\n\t\t\treturn Object.keys(shippedBackgroundList).map(fileName => {\n\t\t\t\treturn {\n\t\t\t\t\tname: fileName,\n\t\t\t\t\turl: prefixWithBaseUrl(fileName),\n\t\t\t\t\tpreview: prefixWithBaseUrl('preview/' + fileName),\n\t\t\t\t\tdetails: shippedBackgroundList[fileName],\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Do we need to invert the text if color is too bright?\n\t\t *\n\t\t * @param {string} color the hex color\n\t\t */\n\t\tinvertTextColor(color) {\n\t\t\treturn this.calculateLuma(color) > 0.6\n\t\t},\n\n\t\t/**\n\t\t * Calculate luminance of provided hex color\n\t\t *\n\t\t * @param {string} color the hex color\n\t\t */\n\t\tcalculateLuma(color) {\n\t\t\tconst [red, green, blue] = this.hexToRGB(color)\n\t\t\treturn (0.2126 * red + 0.7152 * green + 0.0722 * blue) / 255\n\t\t},\n\n\t\t/**\n\t\t * Convert hex color to RGB\n\t\t *\n\t\t * @param {string} hex the hex color\n\t\t */\n\t\thexToRGB(hex) {\n\t\t\tconst result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n\t\t\treturn result\n\t\t\t\t? [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)]\n\t\t\t\t: null\n\t\t},\n\n\t\tasync update(data) {\n\t\t\tconst background = data.type === 'custom' || data.type === 'default' ? data.type : data.value\n\t\t\tthis.backgroundImage = getBackgroundUrl(background, data.version, this.themingDefaultBackground)\n\t\t\tif (data.type === 'color' || (data.type === 'default' && this.themingDefaultBackground === 'backgroundColor')) {\n\t\t\t\tthis.$emit('update:background', data)\n\t\t\t\tthis.loading = false\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst image = new Image()\n\t\t\timage.onload = () => {\n\t\t\t\tthis.$emit('update:background', data)\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t\timage.src = this.backgroundImage\n\t\t},\n\n\t\tasync setDefault() {\n\t\t\tthis.loading = 'default'\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/default'))\n\t\t\tthis.update(result.data)\n\t\t},\n\n\t\tasync setShipped(shipped) {\n\t\t\tthis.loading = shipped\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/shipped'), { value: shipped })\n\t\t\tthis.update(result.data)\n\t\t},\n\n\t\tasync setFile(path) {\n\t\t\tthis.loading = 'custom'\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/custom'), { value: path })\n\t\t\tthis.update(result.data)\n\t\t},\n\n\t\tdebouncePickColor: debounce(function() {\n\t\t\tthis.pickColor(...arguments)\n\t\t}, 200),\n\t\tasync pickColor(event) {\n\t\t\tthis.loading = 'color'\n\t\t\tconst color = event?.target?.dataset?.color || this.Theming?.color || '#0082c9'\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/color'), { value: color })\n\t\t\tthis.update(result.data)\n\t\t},\n\n\t\tpickFile() {\n\t\t\twindow.OC.dialogs.filepicker(t('theming', 'Select a background from your files'), (path, type) => {\n\t\t\t\tif (type === OC.dialogs.FILEPICKER_TYPE_CHOOSE) {\n\t\t\t\t\tthis.setFile(path)\n\t\t\t\t}\n\t\t\t}, false, ['image/png', 'image/gif', 'image/jpeg', 'image/svg'], true, OC.dialogs.FILEPICKER_TYPE_CHOOSE)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background {\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center center;\n\t\ttext-align: center;\n\t\tborder-radius: var(--border-radius-large);\n\t\tborder: 2px solid var(--color-main-background);\n\t\toverflow: hidden;\n\n\t\t&.current {\n\t\t\tbackground-image: var(--color-background-dark);\n\t\t}\n\n\t\t&.filepicker, &.default, &.color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t&.color {\n\t\t\tbackground-color: var(--color-primary-default);\n\t\t\tcolor: var(--color-primary-text);\n\t\t}\n\n\t\t&.active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tborder: 2px solid var(--color-primary);\n\t\t}\n\n\t\t&.active:not(.icon-loading) {\n\t\t\t&:after {\n\t\t\t\tbackground-image: var(--original-icon-checkmark-white);\n\t\t\t\tbackground-repeat: no-repeat;\n\t\t\t\tbackground-position: center;\n\t\t\t\tbackground-size: 44px;\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: block;\n\t\t\t\theight: 100%;\n\t\t\t}\n\n\t\t\t&[data-color-bright]:after {\n\t\t\t\tbackground-image: var(--original-icon-checkmark-dark);\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=style&index=0&id=9a360ac4&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=style&index=0&id=9a360ac4&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BackgroundSettings.vue?vue&type=template&id=9a360ac4&scoped=true&\"\nimport script from \"./BackgroundSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./BackgroundSettings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BackgroundSettings.vue?vue&type=style&index=0&id=9a360ac4&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9a360ac4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"background-selector\"},[_c('button',{staticClass:\"background filepicker\",class:{ active: _vm.background === 'custom' },attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.pickFile}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Pick from Files'))+\"\\n\\t\")]),_vm._v(\" \"),_c('button',{staticClass:\"background default\",class:{ 'icon-loading': _vm.loading === 'default', active: _vm.background === 'default' },attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.setDefault}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Default image'))+\"\\n\\t\")]),_vm._v(\" \"),_c('NcColorPicker',{on:{\"input\":_vm.debouncePickColor},model:{value:(_vm.Theming.color),callback:function ($$v) {_vm.$set(_vm.Theming, \"color\", $$v)},expression:\"Theming.color\"}},[_c('button',{staticClass:\"background color\",class:{ active: _vm.background === _vm.Theming.color},style:({ backgroundColor: _vm.Theming.color, color: _vm.invertTextColor(_vm.Theming.color) ? '#000000' : '#ffffff'}),attrs:{\"tabindex\":\"0\",\"data-color\":_vm.Theming.color,\"data-color-bright\":_vm.invertTextColor(_vm.Theming.color)}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Custom color'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('button',{staticClass:\"background color\",class:{ active: _vm.background === _vm.Theming.defaultColor },style:({ color: _vm.invertTextColor(_vm.Theming.defaultColor) ? '#000000' : '#ffffff'}),attrs:{\"tabindex\":\"0\",\"data-color\":_vm.Theming.defaultColor,\"data-color-bright\":_vm.invertTextColor(_vm.Theming.defaultColor)},on:{\"click\":_vm.debouncePickColor}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Plain background'))+\"\\n\\t\")]),_vm._v(\" \"),_vm._l((_vm.shippedBackgrounds),function(shippedBackground){return _c('button',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(shippedBackground.details.attribution),expression:\"shippedBackground.details.attribution\"}],key:shippedBackground.name,staticClass:\"background\",class:{ 'icon-loading': _vm.loading === shippedBackground.name, active: _vm.background === shippedBackground.name },style:({ 'background-image': 'url(' + shippedBackground.preview + ')' }),attrs:{\"tabindex\":\"0\",\"data-color-bright\":shippedBackground.details.theming === 'dark'},on:{\"click\":function($event){return _vm.setShipped(shippedBackground.name)}}})})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=script&lang=js&\"","<template>\n\t<div :class=\"'theming__preview--' + theme.id\" class=\"theming__preview\">\n\t\t<div class=\"theming__preview-image\" :style=\"{ backgroundImage: 'url(' + img + ')' }\" @click=\"onToggle\" />\n\t\t<div class=\"theming__preview-description\">\n\t\t\t<h3>{{ theme.title }}</h3>\n\t\t\t<p>{{ theme.description }}</p>\n\t\t\t<span v-if=\"enforced\" class=\"theming__preview-warning\" role=\"note\">\n\t\t\t\t{{ t('theming', 'Theme selection is enforced') }}\n\t\t\t</span>\n\t\t\t<NcCheckboxRadioSwitch class=\"theming__preview-toggle\"\n\t\t\t\t:checked.sync=\"checked\"\n\t\t\t\t:disabled=\"enforced\"\n\t\t\t\t:name=\"name\"\n\t\t\t\t:type=\"switchType\">\n\t\t\t\t{{ theme.enableLabel }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { generateFilePath } from '@nextcloud/router'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch'\n\nexport default {\n\tname: 'ItemPreview',\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t},\n\tprops: {\n\t\tenforced: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tselected: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\ttheme: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tunique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tcomputed: {\n\t\tswitchType() {\n\t\t\treturn this.unique ? 'switch' : 'radio'\n\t\t},\n\n\t\tname() {\n\t\t\treturn !this.unique ? this.type : null\n\t\t},\n\n\t\timg() {\n\t\t\treturn generateFilePath('theming', 'img', this.theme.id + '.jpg')\n\t\t},\n\n\t\tchecked: {\n\t\t\tget() {\n\t\t\t\treturn this.selected\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tconsole.debug('Changed theme', this.theme.id, checked)\n\n\t\t\t\t// If this is a radio, we can only enable\n\t\t\t\tif (!this.unique) {\n\t\t\t\t\tthis.$emit('change', { enabled: true, id: this.theme.id })\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// If this is a switch, we can disable the theme\n\t\t\t\tthis.$emit('change', { enabled: checked === true, id: this.theme.id })\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonToggle() {\n\t\t\tif (this.switchType === 'radio') {\n\t\t\t\tthis.checked = true\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Invert state\n\t\t\tthis.checked = !this.checked\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.theming__preview {\n\t// We make previews on 16/10 screens\n\t--ratio: 16;\n\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tmax-width: 800px;\n\n\t&,\n\t* {\n\t\tuser-select: none;\n\t}\n\n\t&-image {\n\t\tflex-basis: calc(16px * var(--ratio));\n\t\tflex-shrink: 0;\n\t\theight: calc(10px * var(--ratio));\n\t\tmargin-right: var(--gap);\n\t\tcursor: pointer;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: top left;\n\t\tbackground-size: cover;\n\t}\n\n\t&-description {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\tlabel {\n\t\t\tpadding: 12px 0;\n\t\t}\n\t}\n\n\t&--default {\n\t\tgrid-column: span 2;\n\t}\n\n\t&-warning {\n\t\tcolor: var(--color-warning);\n\t}\n}\n\n@media (max-width: (1024px / 1.5)) {\n\t.theming__preview {\n\t\tflex-direction: column;\n\n\t\t&-image {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=style&index=0&id=37ca8ab2&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=style&index=0&id=37ca8ab2&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ItemPreview.vue?vue&type=template&id=37ca8ab2&scoped=true&\"\nimport script from \"./ItemPreview.vue?vue&type=script&lang=js&\"\nexport * from \"./ItemPreview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ItemPreview.vue?vue&type=style&index=0&id=37ca8ab2&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"37ca8ab2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"theming__preview\",class:'theming__preview--' + _vm.theme.id},[_c('div',{staticClass:\"theming__preview-image\",style:({ backgroundImage: 'url(' + _vm.img + ')' }),on:{\"click\":_vm.onToggle}}),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-description\"},[_c('h3',[_vm._v(_vm._s(_vm.theme.title))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.theme.description))]),_vm._v(\" \"),(_vm.enforced)?_c('span',{staticClass:\"theming__preview-warning\",attrs:{\"role\":\"note\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Theme selection is enforced'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{staticClass:\"theming__preview-toggle\",attrs:{\"checked\":_vm.checked,\"disabled\":_vm.enforced,\"name\":_vm.name,\"type\":_vm.switchType},on:{\"update:checked\":function($event){_vm.checked=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.theme.enableLabel)+\"\\n\\t\\t\")])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n - @copyright Copyright (c) 2022 Greta Doci <gretadoci@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<section>\n\t\t<NcSettingsSection :title=\"t('theming', 'Appearance and accessibility')\"\n\t\t\t:limit-width=\"false\"\n\t\t\tclass=\"theming\">\n\t\t\t<p v-html=\"description\" />\n\t\t\t<p v-html=\"descriptionDetail\" />\n\n\t\t\t<div class=\"theming__preview-list\">\n\t\t\t\t<ItemPreview v-for=\"theme in themes\"\n\t\t\t\t\t:key=\"theme.id\"\n\t\t\t\t\t:enforced=\"theme.id === enforceTheme\"\n\t\t\t\t\t:selected=\"selectedTheme.id === theme.id\"\n\t\t\t\t\t:theme=\"theme\"\n\t\t\t\t\t:unique=\"themes.length === 1\"\n\t\t\t\t\ttype=\"theme\"\n\t\t\t\t\t@change=\"changeTheme\" />\n\t\t\t</div>\n\n\t\t\t<div class=\"theming__preview-list\">\n\t\t\t\t<ItemPreview v-for=\"theme in fonts\"\n\t\t\t\t\t:key=\"theme.id\"\n\t\t\t\t\t:selected=\"theme.enabled\"\n\t\t\t\t\t:theme=\"theme\"\n\t\t\t\t\t:unique=\"fonts.length === 1\"\n\t\t\t\t\ttype=\"font\"\n\t\t\t\t\t@change=\"changeFont\" />\n\t\t\t</div>\n\t\t</NcSettingsSection>\n\n\t\t<NcSettingsSection :title=\"t('theming', 'Keyboard shortcuts')\">\n\t\t\t<p>{{ t('theming', 'In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.') }}</p>\n\t\t\t<NcCheckboxRadioSwitch class=\"theming__preview-toggle\"\n\t\t\t\t:checked.sync=\"shortcutsDisabled\"\n\t\t\t\tname=\"shortcuts_disabled\"\n\t\t\t\ttype=\"switch\"\n\t\t\t\t@change=\"changeShortcutsDisabled\">\n\t\t\t\t{{ t('theming', 'Disable all keyboard shortcuts') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcSettingsSection>\n\n\t\t<NcSettingsSection :title=\"t('theming', 'Background')\"\n\t\t\tclass=\"background\">\n\t\t\t<template v-if=\"isUserThemingDisabled\">\n\t\t\t\t<p>{{ t('theming', 'Customization has been disabled by your administrator') }}</p>\n\t\t\t</template>\n\t\t\t<template v-else>\n\t\t\t\t<p>{{ t('theming', 'Set a custom background') }}</p>\n\t\t\t\t<BackgroundSettings class=\"background__grid\"\n\t\t\t\t\t:background=\"background\"\n\t\t\t\t\t:theming-default-background=\"themingDefaultBackground\"\n\t\t\t\t\t@update:background=\"updateBackground\" />\n\t\t\t</template>\n\t\t</NcSettingsSection>\n\t</section>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch'\nimport NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection'\n\nimport BackgroundSettings from './components/BackgroundSettings.vue'\nimport ItemPreview from './components/ItemPreview.vue'\n\nconst availableThemes = loadState('theming', 'themes', [])\nconst enforceTheme = loadState('theming', 'enforceTheme', '')\nconst shortcutsDisabled = loadState('theming', 'shortcutsDisabled', false)\n\nconst background = loadState('theming', 'background')\nconst themingDefaultBackground = loadState('theming', 'themingDefaultBackground')\nconst isUserThemingDisabled = loadState('theming', 'isUserThemingDisabled')\n\nconsole.debug('Available themes', availableThemes)\n\nexport default {\n\tname: 'UserThemes',\n\n\tcomponents: {\n\t\tItemPreview,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcSettingsSection,\n\t\tBackgroundSettings,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tavailableThemes,\n\t\t\tenforceTheme,\n\t\t\tshortcutsDisabled,\n\t\t\tbackground,\n\t\t\tthemingDefaultBackground,\n\t\t\tisUserThemingDisabled,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tthemes() {\n\t\t\treturn this.availableThemes.filter(theme => theme.type === 1)\n\t\t},\n\n\t\tfonts() {\n\t\t\treturn this.availableThemes.filter(theme => theme.type === 2)\n\t\t},\n\n\t\t// Selected theme, fallback on first (default) if none\n\t\tselectedTheme() {\n\t\t\treturn this.themes.find(theme => theme.enabled === true) || this.themes[0]\n\t\t},\n\n\t\tdescription() {\n\t\t\t// using the `t` replace method escape html, we have to do it manually :/\n\t\t\treturn t(\n\t\t\t\t'theming',\n\t\t\t\t'Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.'\n\t\t\t)\n\t\t\t\t.replace('{guidelines}', this.guidelinesLink)\n\t\t\t\t.replace('{linkend}', '</a>')\n\t\t},\n\n\t\tguidelinesLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://www.w3.org/WAI/standards-guidelines/wcag/\" rel=\"noreferrer nofollow\">'\n\t\t},\n\n\t\tdescriptionDetail() {\n\t\t\treturn t(\n\t\t\t\t'theming',\n\t\t\t\t'If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!'\n\t\t\t)\n\t\t\t\t.replace('{issuetracker}', this.issuetrackerLink)\n\t\t\t\t.replace('{designteam}', this.designteamLink)\n\t\t\t\t.replace(/\\{linkend\\}/g, '</a>')\n\t\t},\n\n\t\tissuetrackerLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://github.com/nextcloud/server/issues/\" rel=\"noreferrer nofollow\">'\n\t\t},\n\n\t\tdesignteamLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://nextcloud.com/design\" rel=\"noreferrer nofollow\">'\n\t\t},\n\t},\n\n\twatch: {\n\t\tshortcutsDisabled(newState) {\n\t\t\tthis.changeShortcutsDisabled(newState)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tupdateBackground(data) {\n\t\t\tthis.background = (data.type === 'custom' || data.type === 'default') ? data.type : data.value\n\t\t\tthis.$emit('update:background')\n\t\t},\n\n\t\tchangeTheme({ enabled, id }) {\n\t\t\t// Reset selected and select new one\n\t\t\tthis.themes.forEach(theme => {\n\t\t\t\tif (theme.id === id && enabled) {\n\t\t\t\t\ttheme.enabled = true\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\ttheme.enabled = false\n\t\t\t})\n\n\t\t\tthis.updateBodyAttributes()\n\t\t\tthis.selectItem(enabled, id)\n\t\t},\n\n\t\tchangeFont({ enabled, id }) {\n\t\t\t// Reset selected and select new one\n\t\t\tthis.fonts.forEach(font => {\n\t\t\t\tif (font.id === id && enabled) {\n\t\t\t\t\tfont.enabled = true\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tfont.enabled = false\n\t\t\t})\n\n\t\t\tthis.updateBodyAttributes()\n\t\t\tthis.selectItem(enabled, id)\n\t\t},\n\n\t\tasync changeShortcutsDisabled(newState) {\n\t\t\tif (newState) {\n\t\t\t\tawait axios({\n\t\t\t\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\t\t\t\t\tappId: 'theming',\n\t\t\t\t\t\tconfigKey: 'shortcuts_disabled',\n\t\t\t\t\t}),\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tconfigValue: 'yes',\n\t\t\t\t\t},\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tawait axios({\n\t\t\t\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\t\t\t\t\tappId: 'theming',\n\t\t\t\t\t\tconfigKey: 'shortcuts_disabled',\n\t\t\t\t\t}),\n\t\t\t\t\tmethod: 'DELETE',\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tupdateBodyAttributes() {\n\t\t\tconst enabledThemesIDs = this.themes.filter(theme => theme.enabled === true).map(theme => theme.id)\n\t\t\tconst enabledFontsIDs = this.fonts.filter(font => font.enabled === true).map(font => font.id)\n\n\t\t\tthis.themes.forEach(theme => {\n\t\t\t\tdocument.body.toggleAttribute(`data-theme-${theme.id}`, theme.enabled)\n\t\t\t})\n\t\t\tthis.fonts.forEach(font => {\n\t\t\t\tdocument.body.toggleAttribute(`data-theme-${font.id}`, font.enabled)\n\t\t\t})\n\n\t\t\tdocument.body.setAttribute('data-themes', [...enabledThemesIDs, ...enabledFontsIDs].join(','))\n\t\t},\n\n\t\t/**\n\t\t * Commit a change and force reload css\n\t\t * Fetching the file again will trigger the server update\n\t\t *\n\t\t * @param {boolean} enabled the theme state\n\t\t * @param {string} themeId the theme ID to change\n\t\t */\n\t\tasync selectItem(enabled, themeId) {\n\t\t\ttry {\n\t\t\t\tif (enabled) {\n\t\t\t\t\tawait axios({\n\t\t\t\t\t\turl: generateOcsUrl('apps/theming/api/v1/theme/{themeId}/enable', { themeId }),\n\t\t\t\t\t\tmethod: 'PUT',\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tawait axios({\n\t\t\t\t\t\turl: generateOcsUrl('apps/theming/api/v1/theme/{themeId}', { themeId }),\n\t\t\t\t\t\tmethod: 'DELETE',\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(err, err.response)\n\t\t\t\tOC.Notification.showTemporary(t('theming', err.response.data.ocs.meta.message + '. Unable to apply the setting.'))\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.theming {\n\t// Limit width of settings sections for readability\n\tp {\n\t\tmax-width: 800px;\n\t}\n\n\t// Proper highlight for links and focus feedback\n\t&::v-deep a {\n\t\tfont-weight: bold;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t}\n\n\t&__preview-list {\n\t\t--gap: 30px;\n\n\t\tdisplay: grid;\n\t\tmargin-top: var(--gap);\n\t\tcolumn-gap: var(--gap);\n\t\trow-gap: var(--gap);\n\t\tgrid-template-columns: 1fr 1fr;\n\t}\n}\n\n.background {\n\t&__grid {\n\t\tmargin-top: 30px;\n\t}\n}\n\n@media (max-width: 1440px) {\n\t.theming__preview-list {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=style&index=0&id=b77e949c&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=style&index=0&id=b77e949c&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserThemes.vue?vue&type=template&id=b77e949c&scoped=true&\"\nimport script from \"./UserThemes.vue?vue&type=script&lang=js&\"\nexport * from \"./UserThemes.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserThemes.vue?vue&type=style&index=0&id=b77e949c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b77e949c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('NcSettingsSection',{staticClass:\"theming\",attrs:{\"title\":_vm.t('theming', 'Appearance and accessibility'),\"limit-width\":false}},[_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.description)}}),_vm._v(\" \"),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.descriptionDetail)}}),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-list\"},_vm._l((_vm.themes),function(theme){return _c('ItemPreview',{key:theme.id,attrs:{\"enforced\":theme.id === _vm.enforceTheme,\"selected\":_vm.selectedTheme.id === theme.id,\"theme\":theme,\"unique\":_vm.themes.length === 1,\"type\":\"theme\"},on:{\"change\":_vm.changeTheme}})}),1),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-list\"},_vm._l((_vm.fonts),function(theme){return _c('ItemPreview',{key:theme.id,attrs:{\"selected\":theme.enabled,\"theme\":theme,\"unique\":_vm.fonts.length === 1,\"type\":\"font\"},on:{\"change\":_vm.changeFont}})}),1)]),_vm._v(\" \"),_c('NcSettingsSection',{attrs:{\"title\":_vm.t('theming', 'Keyboard shortcuts')}},[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.')))]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{staticClass:\"theming__preview-toggle\",attrs:{\"checked\":_vm.shortcutsDisabled,\"name\":\"shortcuts_disabled\",\"type\":\"switch\"},on:{\"update:checked\":function($event){_vm.shortcutsDisabled=$event},\"change\":_vm.changeShortcutsDisabled}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Disable all keyboard shortcuts'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcSettingsSection',{staticClass:\"background\",attrs:{\"title\":_vm.t('theming', 'Background')}},[(_vm.isUserThemingDisabled)?[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'Customization has been disabled by your administrator')))])]:[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'Set a custom background')))]),_vm._v(\" \"),_c('BackgroundSettings',{staticClass:\"background__grid\",attrs:{\"background\":_vm.background,\"theming-default-background\":_vm.themingDefaultBackground},on:{\"update:background\":_vm.updateBackground}})]],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport App from './UserThemes.vue'\nimport { refreshStyles } from './helpers/refreshStyles.js'\n\nVue.prototype.OC = OC\nVue.prototype.t = t\n\nconst View = Vue.extend(App)\nconst theming = new View()\ntheming.$mount('#theming')\ntheming.$on('update:background', refreshStyles)\n","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const refreshStyles = () => {\n\t// Refresh server-side generated theming CSS\n\t[...document.head.querySelectorAll('link.theme')].forEach(theme => {\n\t\tconst url = new URL(theme.href)\n\t\turl.searchParams.set('v', Date.now())\n\t\tconst newTheme = theme.cloneNode()\n\t\tnewTheme.href = url.toString()\n\t\tnewTheme.onload = () => theme.remove()\n\t\tdocument.head.append(newTheme)\n\t})\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".theming p[data-v-b77e949c]{max-width:800px}.theming[data-v-b77e949c] a{font-weight:bold}.theming[data-v-b77e949c] a:hover,.theming[data-v-b77e949c] a:focus{text-decoration:underline}.theming__preview-list[data-v-b77e949c]{--gap: 30px;display:grid;margin-top:var(--gap);column-gap:var(--gap);row-gap:var(--gap);grid-template-columns:1fr 1fr}.background__grid[data-v-b77e949c]{margin-top:30px}@media(max-width: 1440px){.theming__preview-list[data-v-b77e949c]{display:flex;flex-direction:column}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/UserThemes.vue\"],\"names\":[],\"mappings\":\"AAsRC,4BACC,eAAA,CAID,4BACC,gBAAA,CAEA,oEAEC,yBAAA,CAIF,wCACC,WAAA,CAEA,YAAA,CACA,qBAAA,CACA,qBAAA,CACA,kBAAA,CACA,6BAAA,CAKD,mCACC,eAAA,CAIF,0BACC,wCACC,YAAA,CACA,qBAAA,CAAA\",\"sourcesContent\":[\"\\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\\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\\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\\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\\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\\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\\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\\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\\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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.theming {\\n\\t// Limit width of settings sections for readability\\n\\tp {\\n\\t\\tmax-width: 800px;\\n\\t}\\n\\n\\t// Proper highlight for links and focus feedback\\n\\t&::v-deep a {\\n\\t\\tfont-weight: bold;\\n\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\ttext-decoration: underline;\\n\\t\\t}\\n\\t}\\n\\n\\t&__preview-list {\\n\\t\\t--gap: 30px;\\n\\n\\t\\tdisplay: grid;\\n\\t\\tmargin-top: var(--gap);\\n\\t\\tcolumn-gap: var(--gap);\\n\\t\\trow-gap: var(--gap);\\n\\t\\tgrid-template-columns: 1fr 1fr;\\n\\t}\\n}\\n\\n.background {\\n\\t&__grid {\\n\\t\\tmargin-top: 30px;\\n\\t}\\n}\\n\\n@media (max-width: 1440px) {\\n\\t.theming__preview-list {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".background-selector[data-v-9a360ac4]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background[data-v-9a360ac4]{width:176px;height:96px;margin:8px;background-size:cover;background-position:center center;text-align:center;border-radius:var(--border-radius-large);border:2px solid var(--color-main-background);overflow:hidden}.background-selector .background.current[data-v-9a360ac4]{background-image:var(--color-background-dark)}.background-selector .background.filepicker[data-v-9a360ac4],.background-selector .background.default[data-v-9a360ac4],.background-selector .background.color[data-v-9a360ac4]{border-color:var(--color-border)}.background-selector .background.color[data-v-9a360ac4]{background-color:var(--color-primary-default);color:var(--color-primary-text)}.background-selector .background.active[data-v-9a360ac4],.background-selector .background[data-v-9a360ac4]:hover,.background-selector .background[data-v-9a360ac4]:focus{border:2px solid var(--color-primary)}.background-selector .background.active[data-v-9a360ac4]:not(.icon-loading):after{background-image:var(--original-icon-checkmark-white);background-repeat:no-repeat;background-position:center;background-size:44px;content:\\\"\\\";display:block;height:100%}.background-selector .background.active:not(.icon-loading)[data-color-bright][data-v-9a360ac4]:after{background-image:var(--original-icon-checkmark-dark)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/BackgroundSettings.vue\"],\"names\":[],\"mappings\":\"AA6NA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,kDACC,WAAA,CACA,WAAA,CACA,UAAA,CACA,qBAAA,CACA,iCAAA,CACA,iBAAA,CACA,wCAAA,CACA,6CAAA,CACA,eAAA,CAEA,0DACC,6CAAA,CAGD,+KACC,gCAAA,CAGD,wDACC,6CAAA,CACA,+BAAA,CAGD,yKAGC,qCAAA,CAIA,kFACC,qDAAA,CACA,2BAAA,CACA,0BAAA,CACA,oBAAA,CACA,UAAA,CACA,aAAA,CACA,WAAA,CAGD,qGACC,oDAAA\",\"sourcesContent\":[\"\\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\\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\\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\\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\\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\\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\\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\\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.background-selector {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tjustify-content: center;\\n\\n\\t.background {\\n\\t\\twidth: 176px;\\n\\t\\theight: 96px;\\n\\t\\tmargin: 8px;\\n\\t\\tbackground-size: cover;\\n\\t\\tbackground-position: center center;\\n\\t\\ttext-align: center;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\toverflow: hidden;\\n\\n\\t\\t&.current {\\n\\t\\t\\tbackground-image: var(--color-background-dark);\\n\\t\\t}\\n\\n\\t\\t&.filepicker, &.default, &.color {\\n\\t\\t\\tborder-color: var(--color-border);\\n\\t\\t}\\n\\n\\t\\t&.color {\\n\\t\\t\\tbackground-color: var(--color-primary-default);\\n\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t}\\n\\n\\t\\t&.active,\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\tborder: 2px solid var(--color-primary);\\n\\t\\t}\\n\\n\\t\\t&.active:not(.icon-loading) {\\n\\t\\t\\t&:after {\\n\\t\\t\\t\\tbackground-image: var(--original-icon-checkmark-white);\\n\\t\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\t\\tbackground-position: center;\\n\\t\\t\\t\\tbackground-size: 44px;\\n\\t\\t\\t\\tcontent: '';\\n\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\theight: 100%;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&[data-color-bright]:after {\\n\\t\\t\\t\\tbackground-image: var(--original-icon-checkmark-dark);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".theming__preview[data-v-37ca8ab2]{--ratio: 16;position:relative;display:flex;justify-content:flex-start;max-width:800px}.theming__preview[data-v-37ca8ab2],.theming__preview *[data-v-37ca8ab2]{user-select:none}.theming__preview-image[data-v-37ca8ab2]{flex-basis:calc(16px*var(--ratio));flex-shrink:0;height:calc(10px*var(--ratio));margin-right:var(--gap);cursor:pointer;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:top left;background-size:cover}.theming__preview-description[data-v-37ca8ab2]{display:flex;flex-direction:column}.theming__preview-description label[data-v-37ca8ab2]{padding:12px 0}.theming__preview--default[data-v-37ca8ab2]{grid-column:span 2}.theming__preview-warning[data-v-37ca8ab2]{color:var(--color-warning)}@media(max-width: 682.6666666667px){.theming__preview[data-v-37ca8ab2]{flex-direction:column}.theming__preview-image[data-v-37ca8ab2]{margin:0}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/ItemPreview.vue\"],\"names\":[],\"mappings\":\"AAiGA,mCAEC,WAAA,CAEA,iBAAA,CACA,YAAA,CACA,0BAAA,CACA,eAAA,CAEA,wEAEC,gBAAA,CAGD,yCACC,kCAAA,CACA,aAAA,CACA,8BAAA,CACA,uBAAA,CACA,cAAA,CACA,kCAAA,CACA,2BAAA,CACA,4BAAA,CACA,qBAAA,CAGD,+CACC,YAAA,CACA,qBAAA,CAEA,qDACC,cAAA,CAIF,4CACC,kBAAA,CAGD,2CACC,0BAAA,CAIF,oCACC,mCACC,qBAAA,CAEA,yCACC,QAAA,CAAA\",\"sourcesContent\":[\"\\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\\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\\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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.theming__preview {\\n\\t// We make previews on 16/10 screens\\n\\t--ratio: 16;\\n\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tjustify-content: flex-start;\\n\\tmax-width: 800px;\\n\\n\\t&,\\n\\t* {\\n\\t\\tuser-select: none;\\n\\t}\\n\\n\\t&-image {\\n\\t\\tflex-basis: calc(16px * var(--ratio));\\n\\t\\tflex-shrink: 0;\\n\\t\\theight: calc(10px * var(--ratio));\\n\\t\\tmargin-right: var(--gap);\\n\\t\\tcursor: pointer;\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-position: top left;\\n\\t\\tbackground-size: cover;\\n\\t}\\n\\n\\t&-description {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\n\\t\\tlabel {\\n\\t\\t\\tpadding: 12px 0;\\n\\t\\t}\\n\\t}\\n\\n\\t&--default {\\n\\t\\tgrid-column: span 2;\\n\\t}\\n\\n\\t&-warning {\\n\\t\\tcolor: var(--color-warning);\\n\\t}\\n}\\n\\n@media (max-width: (1024px / 1.5)) {\\n\\t.theming__preview {\\n\\t\\tflex-direction: column;\\n\\n\\t\\t&-image {\\n\\t\\t\\tmargin: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 1474;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t1474: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(40539); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","prefixWithBaseUrl","url","generateFilePath","getBackgroundUrl","background","time","themingDefaultBackground","enabledThemes","window","OCA","Theming","isDarkTheme","length","matchMedia","matches","join","indexOf","generateUrl","cacheBuster","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","class","active","attrs","on","pickFile","_v","_s","t","loading","setDefault","debouncePickColor","model","value","callback","$$v","$set","expression","color","style","backgroundColor","invertTextColor","defaultColor","_l","shippedBackground","directives","name","rawName","details","key","preview","theming","$event","setShipped","theme","id","backgroundImage","img","onToggle","title","description","_e","checked","enforced","switchType","enableLabel","console","debug","availableThemes","domProps","descriptionDetail","enforceTheme","selectedTheme","themes","changeTheme","enabled","fonts","changeFont","shortcutsDisabled","changeShortcutsDisabled","updateBackground","Vue","OC","App","$mount","$on","document","head","querySelectorAll","forEach","URL","href","searchParams","set","Date","now","newTheme","cloneNode","toString","onload","remove","append","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"theming-personal-theming.js?v=b24868c29b8f93386bf7","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?75ec","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?65db","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue?vue&type=template&id=16031e91&scoped=true&","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?f1c6","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?8797","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue?vue&type=template&id=37ca8ab2&scoped=true&","webpack:///nextcloud/apps/theming/src/UserThemes.vue","webpack:///nextcloud/apps/theming/src/UserThemes.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/UserThemes.vue?1553","webpack://nextcloud/./apps/theming/src/UserThemes.vue?7eb2","webpack:///nextcloud/apps/theming/src/UserThemes.vue?vue&type=template&id=f871767a&scoped=true&","webpack:///nextcloud/apps/theming/src/personal-settings.js","webpack:///nextcloud/apps/theming/src/helpers/refreshStyles.js","webpack:///nextcloud/apps/theming/src/UserThemes.vue?vue&type=style&index=0&id=f871767a&lang=scss&scoped=true&","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue?vue&type=style&index=0&id=16031e91&scoped=true&lang=scss&","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue?vue&type=style&index=0&id=37ca8ab2&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n - @author Greta Doci <gretadoci@gmail.com>\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"background-selector\" data-user-theming-background-settings>\n\t\t<!-- Custom background -->\n\t\t<button class=\"background background__filepicker\"\n\t\t\t:class=\"{ 'icon-loading': loading === 'custom', 'background--active': backgroundImage === 'custom' }\"\n\t\t\t:data-color-bright=\"invertTextColor(Theming.color)\"\n\t\t\tdata-user-theming-background-custom\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"pickFile\">\n\t\t\t{{ t('theming', 'Custom background') }}\n\t\t\t<Check :size=\"44\" />\n\t\t</button>\n\n\t\t<!-- Default background -->\n\t\t<button class=\"background background__default\"\n\t\t\t:class=\"{ 'icon-loading': loading === 'default', 'background--active': backgroundImage === 'default' }\"\n\t\t\t:data-color-bright=\"invertTextColor(Theming.defaultColor)\"\n\t\t\t:style=\"{ '--border-color': Theming.defaultColor }\"\n\t\t\tdata-user-theming-background-default\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"setDefault\">\n\t\t\t{{ t('theming', 'Default background') }}\n\t\t\t<Check :size=\"44\" />\n\t\t</button>\n\n\t\t<!-- Custom color picker -->\n\t\t<NcColorPicker v-model=\"Theming.color\" @input=\"debouncePickColor\">\n\t\t\t<button class=\"background background__color\"\n\t\t\t\t:data-color=\"Theming.color\"\n\t\t\t\t:data-color-bright=\"invertTextColor(Theming.color)\"\n\t\t\t\t:style=\"{ backgroundColor: Theming.color, '--border-color': Theming.color}\"\n\t\t\t\tdata-user-theming-background-color\n\t\t\t\ttabindex=\"0\">\n\t\t\t\t{{ t('theming', 'Change color') }}\n\t\t\t</button>\n\t\t</NcColorPicker>\n\n\t\t<!-- Background set selection -->\n\t\t<button v-for=\"shippedBackground in shippedBackgrounds\"\n\t\t\t:key=\"shippedBackground.name\"\n\t\t\tv-tooltip=\"shippedBackground.details.attribution\"\n\t\t\t:class=\"{ 'icon-loading': loading === shippedBackground.name, 'background--active': backgroundImage === shippedBackground.name }\"\n\t\t\t:data-color-bright=\"shippedBackground.details.theming === 'dark'\"\n\t\t\t:data-user-theming-background-shipped=\"shippedBackground.name\"\n\t\t\t:style=\"{ backgroundImage: 'url(' + shippedBackground.preview + ')', '--border-color': shippedBackground.details.primary_color }\"\n\t\t\tclass=\"background background__shipped\"\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"setShipped(shippedBackground.name)\">\n\t\t\t<Check :size=\"44\" />\n\t\t</button>\n\n\t\t<!-- Remove background -->\n\t\t<button class=\"background background__delete\"\n\t\t\tdata-user-theming-background-clear\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"removeBackground\">\n\t\t\t{{ t('theming', 'Remove background') }}\n\t\t\t<Close :size=\"32\" />\n\t\t</button>\n\t</div>\n</template>\n\n<script>\nimport { generateFilePath, generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\nimport Check from 'vue-material-design-icons/Check.vue'\nimport Close from 'vue-material-design-icons/Close.vue'\nimport debounce from 'debounce'\nimport NcColorPicker from '@nextcloud/vue/dist/Components/NcColorPicker'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\nimport Vibrant from 'node-vibrant'\nimport { Palette } from 'node-vibrant/lib/color'\nimport { getFilePickerBuilder } from '@nextcloud/dialogs'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nconst backgroundColor = loadState('theming', 'backgroundColor')\nconst backgroundImage = loadState('theming', 'backgroundImage')\nconst shippedBackgroundList = loadState('theming', 'shippedBackgrounds')\nconst themingDefaultBackground = loadState('theming', 'themingDefaultBackground')\nconst defaultShippedBackground = loadState('theming', 'defaultShippedBackground')\n\nconst prefixWithBaseUrl = (url) => generateFilePath('theming', '', 'img/background/') + url\nconst picker = getFilePickerBuilder(t('theming', 'Select a background from your files'))\n\t.setMultiSelect(false)\n\t.setModal(true)\n\t.setType(1)\n\t.setMimeTypeFilter(['image/png', 'image/gif', 'image/jpeg', 'image/svg+xml', 'image/svg'])\n\t.build()\n\nexport default {\n\tname: 'BackgroundSettings',\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tcomponents: {\n\t\tCheck,\n\t\tClose,\n\t\tNcColorPicker,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tTheming: loadState('theming', 'data', {}),\n\n\t\t\t// User background image and color settings\n\t\t\tbackgroundImage,\n\t\t\tbackgroundColor,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tshippedBackgrounds() {\n\t\t\treturn Object.keys(shippedBackgroundList)\n\t\t\t\t.map(fileName => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tname: fileName,\n\t\t\t\t\t\turl: prefixWithBaseUrl(fileName),\n\t\t\t\t\t\tpreview: prefixWithBaseUrl('preview/' + fileName),\n\t\t\t\t\t\tdetails: shippedBackgroundList[fileName],\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.filter(background => {\n\t\t\t\t\t// If the admin did not changed the global background\n\t\t\t\t\t// let's hide the default background to not show it twice\n\t\t\t\t\tif (!this.isGlobalBackgroundDeleted && !this.isGlobalBackgroundDefault) {\n\t\t\t\t\t\treturn background.name !== defaultShippedBackground\n\t\t\t\t\t}\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t},\n\n\t\tisGlobalBackgroundDefault() {\n\t\t\treturn !!themingDefaultBackground\n\t\t},\n\n\t\tisGlobalBackgroundDeleted() {\n\t\t\treturn themingDefaultBackground === 'backgroundColor'\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Do we need to invert the text if color is too bright?\n\t\t *\n\t\t * @param {string} color the hex color\n\t\t */\n\t\tinvertTextColor(color) {\n\t\t\treturn this.calculateLuma(color) > 0.6\n\t\t},\n\n\t\t/**\n\t\t * Calculate luminance of provided hex color\n\t\t *\n\t\t * @param {string} color the hex color\n\t\t */\n\t\tcalculateLuma(color) {\n\t\t\tconst [red, green, blue] = this.hexToRGB(color)\n\t\t\treturn (0.2126 * red + 0.7152 * green + 0.0722 * blue) / 255\n\t\t},\n\n\t\t/**\n\t\t * Convert hex color to RGB\n\t\t *\n\t\t * @param {string} hex the hex color\n\t\t */\n\t\thexToRGB(hex) {\n\t\t\tconst result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n\t\t\treturn result\n\t\t\t\t? [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)]\n\t\t\t\t: null\n\t\t},\n\n\t\t/**\n\t\t * Update local state\n\t\t *\n\t\t * @param {object} data destructuring object\n\t\t * @param {string} data.backgroundColor background color value\n\t\t * @param {string} data.backgroundImage background image value\n\t\t * @param {string} data.version cache buster number\n\t\t * @see https://github.com/nextcloud/server/blob/c78bd45c64d9695724fc44fe8453a88824b85f2f/apps/theming/lib/Controller/UserThemeController.php#L187-L191\n\t\t */\n\t\tasync update(data) {\n\t\t\t// Update state\n\t\t\tthis.backgroundImage = data.backgroundImage\n\t\t\tthis.backgroundColor = data.backgroundColor\n\t\t\tthis.Theming.color = data.backgroundColor\n\n\t\t\t// Notify parent and reload style\n\t\t\tthis.$emit('update:background')\n\t\t\tthis.loading = false\n\t\t},\n\n\t\tasync setDefault() {\n\t\t\tthis.loading = 'default'\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/default'))\n\t\t\tthis.update(result.data)\n\t\t},\n\n\t\tasync setShipped(shipped) {\n\t\t\tthis.loading = shipped\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/shipped'), { value: shipped })\n\t\t\tthis.update(result.data)\n\t\t},\n\n\t\tasync setFile(path, color = null) {\n\t\t\tthis.loading = 'custom'\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/custom'), { value: path, color })\n\t\t\tthis.update(result.data)\n\t\t},\n\n\t\tasync removeBackground() {\n\t\t\tthis.loading = 'remove'\n\t\t\tconst result = await axios.delete(generateUrl('/apps/theming/background/custom'))\n\t\t\tthis.update(result.data)\n\t\t},\n\n\t\tasync pickColor(event) {\n\t\t\tthis.loading = 'color'\n\t\t\tconst color = event?.target?.dataset?.color || this.Theming?.color || '#0082c9'\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/color'), { color })\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tdebouncePickColor: debounce(function() {\n\t\t\tthis.pickColor(...arguments)\n\t\t}, 200),\n\n\t\tasync pickFile() {\n\t\t\tconst path = await picker.pick()\n\t\t\tthis.loading = 'custom'\n\n\t\t\t// Extract primary color from image\n\t\t\tlet response = null\n\t\t\tlet color = null\n\t\t\ttry {\n\t\t\t\tconst fileUrl = generateRemoteUrl('dav/files/' + getCurrentUser().uid + path)\n\t\t\t\tresponse = await axios.get(fileUrl, { responseType: 'blob' })\n\t\t\t\tconst blobUrl = URL.createObjectURL(response.data)\n\t\t\t\tconst palette = await this.getColorPaletteFromBlob(blobUrl)\n\n\t\t\t\t// DarkVibrant is accessible AND visually pleasing\n\t\t\t\t// Vibrant is not accessible enough and others are boring\n\t\t\t\tcolor = palette?.DarkVibrant?.hex\n\t\t\t\tthis.setFile(path, color)\n\n\t\t\t\t// Log data\n\t\t\t\tconsole.debug('Extracted colour', color, 'from custom image', path, palette)\n\t\t\t} catch (error) {\n\t\t\t\tthis.setFile(path)\n\t\t\t\tconsole.error('Unable to extract colour from custom image', { error, path, response, color })\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Extract a Vibrant color palette from a blob URL\n\t\t *\n\t\t * @param {string} blobUrl the blob URL\n\t\t * @return {Promise<Palette>}\n\t\t */\n\t\tgetColorPaletteFromBlob(blobUrl) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tconst vibrant = new Vibrant(blobUrl)\n\t\t\t\tvibrant.getPalette((error, palette) => {\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\treject(error)\n\t\t\t\t\t}\n\t\t\t\t\tresolve(palette)\n\t\t\t\t})\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background {\n\t\toverflow: hidden;\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\ttext-align: center;\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-position: center center;\n\t\tbackground-size: cover;\n\n\t\t&__filepicker {\n\t\t\t&.background--active {\n\t\t\t\tcolor: white;\n\t\t\t\tbackground-image: var(--image-background);\n\t\t\t}\n\t\t}\n\n\t\t&__default {\n\t\t\tbackground-color: var(--color-primary-default);\n\t\t\tbackground-image: var(--image-background-default);\n\t\t}\n\n\t\t&__filepicker, &__default, &__color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t&__color {\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tbackground-color: var(--color-primary-default);\n\t\t}\n\n\t\t// Over a background image\n\t\t&__default,\n\t\t&__shipped {\n\t\t\tcolor: white;\n\t\t}\n\n\t\t// Text and svg icon dark on bright background\n\t\t&[data-color-bright] {\n\t\t\tcolor: black;\n\t\t}\n\n\t\t&--active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\t// Use theme color primary, see inline css variable in template\n\t\t\tborder: 2px solid var(--border-color, var(--color-primary)) !important;\n\t\t}\n\n\t\t// Icon\n\t\tspan {\n\t\t\tmargin: 4px;\n\t\t}\n\n\t\t&__filepicker span,\n\t\t&__default span,\n\t\t&__shipped span {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t&--active:not(.icon-loading) span {\n\t\t\tdisplay: block !important;\n\t\t}\n\t}\n}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=style&index=0&id=16031e91&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=style&index=0&id=16031e91&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BackgroundSettings.vue?vue&type=template&id=16031e91&scoped=true&\"\nimport script from \"./BackgroundSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./BackgroundSettings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BackgroundSettings.vue?vue&type=style&index=0&id=16031e91&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"16031e91\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"background-selector\",attrs:{\"data-user-theming-background-settings\":\"\"}},[_c('button',{staticClass:\"background background__filepicker\",class:{ 'icon-loading': _vm.loading === 'custom', 'background--active': _vm.backgroundImage === 'custom' },attrs:{\"data-color-bright\":_vm.invertTextColor(_vm.Theming.color),\"data-user-theming-background-custom\":\"\",\"tabindex\":\"0\"},on:{\"click\":_vm.pickFile}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Custom background'))+\"\\n\\t\\t\"),_c('Check',{attrs:{\"size\":44}})],1),_vm._v(\" \"),_c('button',{staticClass:\"background background__default\",class:{ 'icon-loading': _vm.loading === 'default', 'background--active': _vm.backgroundImage === 'default' },style:({ '--border-color': _vm.Theming.defaultColor }),attrs:{\"data-color-bright\":_vm.invertTextColor(_vm.Theming.defaultColor),\"data-user-theming-background-default\":\"\",\"tabindex\":\"0\"},on:{\"click\":_vm.setDefault}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Default background'))+\"\\n\\t\\t\"),_c('Check',{attrs:{\"size\":44}})],1),_vm._v(\" \"),_c('NcColorPicker',{on:{\"input\":_vm.debouncePickColor},model:{value:(_vm.Theming.color),callback:function ($$v) {_vm.$set(_vm.Theming, \"color\", $$v)},expression:\"Theming.color\"}},[_c('button',{staticClass:\"background background__color\",style:({ backgroundColor: _vm.Theming.color, '--border-color': _vm.Theming.color}),attrs:{\"data-color\":_vm.Theming.color,\"data-color-bright\":_vm.invertTextColor(_vm.Theming.color),\"data-user-theming-background-color\":\"\",\"tabindex\":\"0\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Change color'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_vm._l((_vm.shippedBackgrounds),function(shippedBackground){return _c('button',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(shippedBackground.details.attribution),expression:\"shippedBackground.details.attribution\"}],key:shippedBackground.name,staticClass:\"background background__shipped\",class:{ 'icon-loading': _vm.loading === shippedBackground.name, 'background--active': _vm.backgroundImage === shippedBackground.name },style:({ backgroundImage: 'url(' + shippedBackground.preview + ')', '--border-color': shippedBackground.details.primary_color }),attrs:{\"data-color-bright\":shippedBackground.details.theming === 'dark',\"data-user-theming-background-shipped\":shippedBackground.name,\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.setShipped(shippedBackground.name)}}},[_c('Check',{attrs:{\"size\":44}})],1)}),_vm._v(\" \"),_c('button',{staticClass:\"background background__delete\",attrs:{\"data-user-theming-background-clear\":\"\",\"tabindex\":\"0\"},on:{\"click\":_vm.removeBackground}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Remove background'))+\"\\n\\t\\t\"),_c('Close',{attrs:{\"size\":32}})],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=script&lang=js&\"","<template>\n\t<div :class=\"'theming__preview--' + theme.id\" class=\"theming__preview\">\n\t\t<div class=\"theming__preview-image\" :style=\"{ backgroundImage: 'url(' + img + ')' }\" @click=\"onToggle\" />\n\t\t<div class=\"theming__preview-description\">\n\t\t\t<h3>{{ theme.title }}</h3>\n\t\t\t<p>{{ theme.description }}</p>\n\t\t\t<span v-if=\"enforced\" class=\"theming__preview-warning\" role=\"note\">\n\t\t\t\t{{ t('theming', 'Theme selection is enforced') }}\n\t\t\t</span>\n\t\t\t<NcCheckboxRadioSwitch class=\"theming__preview-toggle\"\n\t\t\t\t:checked.sync=\"checked\"\n\t\t\t\t:disabled=\"enforced\"\n\t\t\t\t:name=\"name\"\n\t\t\t\t:type=\"switchType\">\n\t\t\t\t{{ theme.enableLabel }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { generateFilePath } from '@nextcloud/router'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch'\n\nexport default {\n\tname: 'ItemPreview',\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t},\n\tprops: {\n\t\tenforced: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tselected: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\ttheme: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tunique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tcomputed: {\n\t\tswitchType() {\n\t\t\treturn this.unique ? 'switch' : 'radio'\n\t\t},\n\n\t\tname() {\n\t\t\treturn !this.unique ? this.type : null\n\t\t},\n\n\t\timg() {\n\t\t\treturn generateFilePath('theming', 'img', this.theme.id + '.jpg')\n\t\t},\n\n\t\tchecked: {\n\t\t\tget() {\n\t\t\t\treturn this.selected\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tconsole.debug('Changed theme', this.theme.id, checked)\n\n\t\t\t\t// If this is a radio, we can only enable\n\t\t\t\tif (!this.unique) {\n\t\t\t\t\tthis.$emit('change', { enabled: true, id: this.theme.id })\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// If this is a switch, we can disable the theme\n\t\t\t\tthis.$emit('change', { enabled: checked === true, id: this.theme.id })\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonToggle() {\n\t\t\tif (this.switchType === 'radio') {\n\t\t\t\tthis.checked = true\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Invert state\n\t\t\tthis.checked = !this.checked\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.theming__preview {\n\t// We make previews on 16/10 screens\n\t--ratio: 16;\n\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tmax-width: 800px;\n\n\t&,\n\t* {\n\t\tuser-select: none;\n\t}\n\n\t&-image {\n\t\tflex-basis: calc(16px * var(--ratio));\n\t\tflex-shrink: 0;\n\t\theight: calc(10px * var(--ratio));\n\t\tmargin-right: var(--gap);\n\t\tcursor: pointer;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: top left;\n\t\tbackground-size: cover;\n\t}\n\n\t&-description {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\tlabel {\n\t\t\tpadding: 12px 0;\n\t\t}\n\t}\n\n\t&--default {\n\t\tgrid-column: span 2;\n\t}\n\n\t&-warning {\n\t\tcolor: var(--color-warning);\n\t}\n}\n\n@media (max-width: (1024px / 1.5)) {\n\t.theming__preview {\n\t\tflex-direction: column;\n\n\t\t&-image {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=style&index=0&id=37ca8ab2&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=style&index=0&id=37ca8ab2&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ItemPreview.vue?vue&type=template&id=37ca8ab2&scoped=true&\"\nimport script from \"./ItemPreview.vue?vue&type=script&lang=js&\"\nexport * from \"./ItemPreview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ItemPreview.vue?vue&type=style&index=0&id=37ca8ab2&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"37ca8ab2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"theming__preview\",class:'theming__preview--' + _vm.theme.id},[_c('div',{staticClass:\"theming__preview-image\",style:({ backgroundImage: 'url(' + _vm.img + ')' }),on:{\"click\":_vm.onToggle}}),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-description\"},[_c('h3',[_vm._v(_vm._s(_vm.theme.title))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.theme.description))]),_vm._v(\" \"),(_vm.enforced)?_c('span',{staticClass:\"theming__preview-warning\",attrs:{\"role\":\"note\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Theme selection is enforced'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{staticClass:\"theming__preview-toggle\",attrs:{\"checked\":_vm.checked,\"disabled\":_vm.enforced,\"name\":_vm.name,\"type\":_vm.switchType},on:{\"update:checked\":function($event){_vm.checked=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.theme.enableLabel)+\"\\n\\t\\t\")])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n - @copyright Copyright (c) 2022 Greta Doci <gretadoci@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<section>\n\t\t<NcSettingsSection :title=\"t('theming', 'Appearance and accessibility')\"\n\t\t\t:limit-width=\"false\"\n\t\t\tclass=\"theming\">\n\t\t\t<p v-html=\"description\" />\n\t\t\t<p v-html=\"descriptionDetail\" />\n\n\t\t\t<div class=\"theming__preview-list\">\n\t\t\t\t<ItemPreview v-for=\"theme in themes\"\n\t\t\t\t\t:key=\"theme.id\"\n\t\t\t\t\t:enforced=\"theme.id === enforceTheme\"\n\t\t\t\t\t:selected=\"selectedTheme.id === theme.id\"\n\t\t\t\t\t:theme=\"theme\"\n\t\t\t\t\t:unique=\"themes.length === 1\"\n\t\t\t\t\ttype=\"theme\"\n\t\t\t\t\t@change=\"changeTheme\" />\n\t\t\t</div>\n\n\t\t\t<div class=\"theming__preview-list\">\n\t\t\t\t<ItemPreview v-for=\"theme in fonts\"\n\t\t\t\t\t:key=\"theme.id\"\n\t\t\t\t\t:selected=\"theme.enabled\"\n\t\t\t\t\t:theme=\"theme\"\n\t\t\t\t\t:unique=\"fonts.length === 1\"\n\t\t\t\t\ttype=\"font\"\n\t\t\t\t\t@change=\"changeFont\" />\n\t\t\t</div>\n\t\t</NcSettingsSection>\n\n\t\t<NcSettingsSection :title=\"t('theming', 'Keyboard shortcuts')\">\n\t\t\t<p>{{ t('theming', 'In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.') }}</p>\n\t\t\t<NcCheckboxRadioSwitch class=\"theming__preview-toggle\"\n\t\t\t\t:checked.sync=\"shortcutsDisabled\"\n\t\t\t\tname=\"shortcuts_disabled\"\n\t\t\t\ttype=\"switch\"\n\t\t\t\t@change=\"changeShortcutsDisabled\">\n\t\t\t\t{{ t('theming', 'Disable all keyboard shortcuts') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcSettingsSection>\n\n\t\t<NcSettingsSection :title=\"t('theming', 'Background')\"\n\t\t\tclass=\"background\">\n\t\t\t<template v-if=\"isUserThemingDisabled\">\n\t\t\t\t<p>{{ t('theming', 'Customization has been disabled by your administrator') }}</p>\n\t\t\t</template>\n\t\t\t<template v-else>\n\t\t\t\t<p>{{ t('theming', 'Set a custom background') }}</p>\n\t\t\t\t<BackgroundSettings class=\"background__grid\" @update:background=\"refreshGlobalStyles\" />\n\t\t\t</template>\n\t\t</NcSettingsSection>\n\t</section>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch'\nimport NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection'\n\nimport BackgroundSettings from './components/BackgroundSettings.vue'\nimport ItemPreview from './components/ItemPreview.vue'\n\nconst availableThemes = loadState('theming', 'themes', [])\nconst enforceTheme = loadState('theming', 'enforceTheme', '')\nconst shortcutsDisabled = loadState('theming', 'shortcutsDisabled', false)\n\nconst isUserThemingDisabled = loadState('theming', 'isUserThemingDisabled')\n\nconsole.debug('Available themes', availableThemes)\n\nexport default {\n\tname: 'UserThemes',\n\n\tcomponents: {\n\t\tItemPreview,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcSettingsSection,\n\t\tBackgroundSettings,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tavailableThemes,\n\n\t\t\t// Admin defined configs\n\t\t\tenforceTheme,\n\t\t\tshortcutsDisabled,\n\t\t\tisUserThemingDisabled,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tthemes() {\n\t\t\treturn this.availableThemes.filter(theme => theme.type === 1)\n\t\t},\n\n\t\tfonts() {\n\t\t\treturn this.availableThemes.filter(theme => theme.type === 2)\n\t\t},\n\n\t\t// Selected theme, fallback on first (default) if none\n\t\tselectedTheme() {\n\t\t\treturn this.themes.find(theme => theme.enabled === true) || this.themes[0]\n\t\t},\n\n\t\tdescription() {\n\t\t\t// using the `t` replace method escape html, we have to do it manually :/\n\t\t\treturn t(\n\t\t\t\t'theming',\n\t\t\t\t'Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.'\n\t\t\t)\n\t\t\t\t.replace('{guidelines}', this.guidelinesLink)\n\t\t\t\t.replace('{linkend}', '</a>')\n\t\t},\n\n\t\tguidelinesLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://www.w3.org/WAI/standards-guidelines/wcag/\" rel=\"noreferrer nofollow\">'\n\t\t},\n\n\t\tdescriptionDetail() {\n\t\t\treturn t(\n\t\t\t\t'theming',\n\t\t\t\t'If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!'\n\t\t\t)\n\t\t\t\t.replace('{issuetracker}', this.issuetrackerLink)\n\t\t\t\t.replace('{designteam}', this.designteamLink)\n\t\t\t\t.replace(/\\{linkend\\}/g, '</a>')\n\t\t},\n\n\t\tissuetrackerLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://github.com/nextcloud/server/issues/\" rel=\"noreferrer nofollow\">'\n\t\t},\n\n\t\tdesignteamLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://nextcloud.com/design\" rel=\"noreferrer nofollow\">'\n\t\t},\n\t},\n\n\twatch: {\n\t\tshortcutsDisabled(newState) {\n\t\t\tthis.changeShortcutsDisabled(newState)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t// Refresh server-side generated theming CSS\n\t\trefreshGlobalStyles() {\n\t\t\t[...document.head.querySelectorAll('link.theme')].forEach(theme => {\n\t\t\t\tconst url = new URL(theme.href)\n\t\t\t\turl.searchParams.set('v', Date.now())\n\t\t\t\tconst newTheme = theme.cloneNode()\n\t\t\t\tnewTheme.href = url.toString()\n\t\t\t\tnewTheme.onload = () => theme.remove()\n\t\t\t\tdocument.head.append(newTheme)\n\t\t\t})\n\t\t},\n\n\t\tupdateBackground(data) {\n\t\t\tthis.background = (data.type === 'custom' || data.type === 'default') ? data.type : data.value\n\t\t\tthis.refreshGlobalStyles()\n\t\t},\n\n\t\tchangeTheme({ enabled, id }) {\n\t\t\t// Reset selected and select new one\n\t\t\tthis.themes.forEach(theme => {\n\t\t\t\tif (theme.id === id && enabled) {\n\t\t\t\t\ttheme.enabled = true\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\ttheme.enabled = false\n\t\t\t})\n\n\t\t\tthis.updateBodyAttributes()\n\t\t\tthis.selectItem(enabled, id)\n\t\t},\n\n\t\tchangeFont({ enabled, id }) {\n\t\t\t// Reset selected and select new one\n\t\t\tthis.fonts.forEach(font => {\n\t\t\t\tif (font.id === id && enabled) {\n\t\t\t\t\tfont.enabled = true\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tfont.enabled = false\n\t\t\t})\n\n\t\t\tthis.updateBodyAttributes()\n\t\t\tthis.selectItem(enabled, id)\n\t\t},\n\n\t\tasync changeShortcutsDisabled(newState) {\n\t\t\tif (newState) {\n\t\t\t\tawait axios({\n\t\t\t\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\t\t\t\t\tappId: 'theming',\n\t\t\t\t\t\tconfigKey: 'shortcuts_disabled',\n\t\t\t\t\t}),\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tconfigValue: 'yes',\n\t\t\t\t\t},\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tawait axios({\n\t\t\t\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\t\t\t\t\tappId: 'theming',\n\t\t\t\t\t\tconfigKey: 'shortcuts_disabled',\n\t\t\t\t\t}),\n\t\t\t\t\tmethod: 'DELETE',\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tupdateBodyAttributes() {\n\t\t\tconst enabledThemesIDs = this.themes.filter(theme => theme.enabled === true).map(theme => theme.id)\n\t\t\tconst enabledFontsIDs = this.fonts.filter(font => font.enabled === true).map(font => font.id)\n\n\t\t\tthis.themes.forEach(theme => {\n\t\t\t\tdocument.body.toggleAttribute(`data-theme-${theme.id}`, theme.enabled)\n\t\t\t})\n\t\t\tthis.fonts.forEach(font => {\n\t\t\t\tdocument.body.toggleAttribute(`data-theme-${font.id}`, font.enabled)\n\t\t\t})\n\n\t\t\tdocument.body.setAttribute('data-themes', [...enabledThemesIDs, ...enabledFontsIDs].join(','))\n\t\t},\n\n\t\t/**\n\t\t * Commit a change and force reload css\n\t\t * Fetching the file again will trigger the server update\n\t\t *\n\t\t * @param {boolean} enabled the theme state\n\t\t * @param {string} themeId the theme ID to change\n\t\t */\n\t\tasync selectItem(enabled, themeId) {\n\t\t\ttry {\n\t\t\t\tif (enabled) {\n\t\t\t\t\tawait axios({\n\t\t\t\t\t\turl: generateOcsUrl('apps/theming/api/v1/theme/{themeId}/enable', { themeId }),\n\t\t\t\t\t\tmethod: 'PUT',\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tawait axios({\n\t\t\t\t\t\turl: generateOcsUrl('apps/theming/api/v1/theme/{themeId}', { themeId }),\n\t\t\t\t\t\tmethod: 'DELETE',\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(err, err.response)\n\t\t\t\tOC.Notification.showTemporary(t('theming', err.response.data.ocs.meta.message + '. Unable to apply the setting.'))\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.theming {\n\t// Limit width of settings sections for readability\n\tp {\n\t\tmax-width: 800px;\n\t}\n\n\t// Proper highlight for links and focus feedback\n\t&::v-deep a {\n\t\tfont-weight: bold;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t}\n\n\t&__preview-list {\n\t\t--gap: 30px;\n\n\t\tdisplay: grid;\n\t\tmargin-top: var(--gap);\n\t\tcolumn-gap: var(--gap);\n\t\trow-gap: var(--gap);\n\t\tgrid-template-columns: 1fr 1fr;\n\t}\n}\n\n.background {\n\t&__grid {\n\t\tmargin-top: 30px;\n\t}\n}\n\n@media (max-width: 1440px) {\n\t.theming__preview-list {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=style&index=0&id=f871767a&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=style&index=0&id=f871767a&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserThemes.vue?vue&type=template&id=f871767a&scoped=true&\"\nimport script from \"./UserThemes.vue?vue&type=script&lang=js&\"\nexport * from \"./UserThemes.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserThemes.vue?vue&type=style&index=0&id=f871767a&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f871767a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('NcSettingsSection',{staticClass:\"theming\",attrs:{\"title\":_vm.t('theming', 'Appearance and accessibility'),\"limit-width\":false}},[_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.description)}}),_vm._v(\" \"),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.descriptionDetail)}}),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-list\"},_vm._l((_vm.themes),function(theme){return _c('ItemPreview',{key:theme.id,attrs:{\"enforced\":theme.id === _vm.enforceTheme,\"selected\":_vm.selectedTheme.id === theme.id,\"theme\":theme,\"unique\":_vm.themes.length === 1,\"type\":\"theme\"},on:{\"change\":_vm.changeTheme}})}),1),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-list\"},_vm._l((_vm.fonts),function(theme){return _c('ItemPreview',{key:theme.id,attrs:{\"selected\":theme.enabled,\"theme\":theme,\"unique\":_vm.fonts.length === 1,\"type\":\"font\"},on:{\"change\":_vm.changeFont}})}),1)]),_vm._v(\" \"),_c('NcSettingsSection',{attrs:{\"title\":_vm.t('theming', 'Keyboard shortcuts')}},[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.')))]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{staticClass:\"theming__preview-toggle\",attrs:{\"checked\":_vm.shortcutsDisabled,\"name\":\"shortcuts_disabled\",\"type\":\"switch\"},on:{\"update:checked\":function($event){_vm.shortcutsDisabled=$event},\"change\":_vm.changeShortcutsDisabled}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Disable all keyboard shortcuts'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcSettingsSection',{staticClass:\"background\",attrs:{\"title\":_vm.t('theming', 'Background')}},[(_vm.isUserThemingDisabled)?[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'Customization has been disabled by your administrator')))])]:[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'Set a custom background')))]),_vm._v(\" \"),_c('BackgroundSettings',{staticClass:\"background__grid\",on:{\"update:background\":_vm.refreshGlobalStyles}})]],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport App from './UserThemes.vue'\nimport { refreshStyles } from './helpers/refreshStyles.js'\n\nVue.prototype.OC = OC\nVue.prototype.t = t\n\nconst View = Vue.extend(App)\nconst theming = new View()\ntheming.$mount('#theming')\ntheming.$on('update:background', refreshStyles)\n","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const refreshStyles = () => {\n\t// Refresh server-side generated theming CSS\n\t[...document.head.querySelectorAll('link.theme')].forEach(theme => {\n\t\tconst url = new URL(theme.href)\n\t\turl.searchParams.set('v', Date.now())\n\t\tconst newTheme = theme.cloneNode()\n\t\tnewTheme.href = url.toString()\n\t\tnewTheme.onload = () => theme.remove()\n\t\tdocument.head.append(newTheme)\n\t})\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".theming p[data-v-f871767a]{max-width:800px}.theming[data-v-f871767a] a{font-weight:bold}.theming[data-v-f871767a] a:hover,.theming[data-v-f871767a] a:focus{text-decoration:underline}.theming__preview-list[data-v-f871767a]{--gap: 30px;display:grid;margin-top:var(--gap);column-gap:var(--gap);row-gap:var(--gap);grid-template-columns:1fr 1fr}.background__grid[data-v-f871767a]{margin-top:30px}@media(max-width: 1440px){.theming__preview-list[data-v-f871767a]{display:flex;flex-direction:column}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/UserThemes.vue\"],\"names\":[],\"mappings\":\"AA6RC,4BACC,eAAA,CAID,4BACC,gBAAA,CAEA,oEAEC,yBAAA,CAIF,wCACC,WAAA,CAEA,YAAA,CACA,qBAAA,CACA,qBAAA,CACA,kBAAA,CACA,6BAAA,CAKD,mCACC,eAAA,CAIF,0BACC,wCACC,YAAA,CACA,qBAAA,CAAA\",\"sourcesContent\":[\"\\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\\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\\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\\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\\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\\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\\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\\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\\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\\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\\n\\n\\n.theming {\\n\\t// Limit width of settings sections for readability\\n\\tp {\\n\\t\\tmax-width: 800px;\\n\\t}\\n\\n\\t// Proper highlight for links and focus feedback\\n\\t&::v-deep a {\\n\\t\\tfont-weight: bold;\\n\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\ttext-decoration: underline;\\n\\t\\t}\\n\\t}\\n\\n\\t&__preview-list {\\n\\t\\t--gap: 30px;\\n\\n\\t\\tdisplay: grid;\\n\\t\\tmargin-top: var(--gap);\\n\\t\\tcolumn-gap: var(--gap);\\n\\t\\trow-gap: var(--gap);\\n\\t\\tgrid-template-columns: 1fr 1fr;\\n\\t}\\n}\\n\\n.background {\\n\\t&__grid {\\n\\t\\tmargin-top: 30px;\\n\\t}\\n}\\n\\n@media (max-width: 1440px) {\\n\\t.theming__preview-list {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".background-selector[data-v-16031e91]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background[data-v-16031e91]{overflow:hidden;width:176px;height:96px;margin:8px;text-align:center;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-position:center center;background-size:cover}.background-selector .background__filepicker.background--active[data-v-16031e91]{color:#fff;background-image:var(--image-background)}.background-selector .background__default[data-v-16031e91]{background-color:var(--color-primary-default);background-image:var(--image-background-default)}.background-selector .background__filepicker[data-v-16031e91],.background-selector .background__default[data-v-16031e91],.background-selector .background__color[data-v-16031e91]{border-color:var(--color-border)}.background-selector .background__color[data-v-16031e91]{color:var(--color-primary-text);background-color:var(--color-primary-default)}.background-selector .background__default[data-v-16031e91],.background-selector .background__shipped[data-v-16031e91]{color:#fff}.background-selector .background[data-color-bright][data-v-16031e91]{color:#000}.background-selector .background--active[data-v-16031e91],.background-selector .background[data-v-16031e91]:hover,.background-selector .background[data-v-16031e91]:focus{border:2px solid var(--border-color, var(--color-primary)) !important}.background-selector .background span[data-v-16031e91]{margin:4px}.background-selector .background__filepicker span[data-v-16031e91],.background-selector .background__default span[data-v-16031e91],.background-selector .background__shipped span[data-v-16031e91]{display:none}.background-selector .background--active:not(.icon-loading) span[data-v-16031e91]{display:block !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/BackgroundSettings.vue\"],\"names\":[],\"mappings\":\"AA8SA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,kDACC,eAAA,CACA,WAAA,CACA,WAAA,CACA,UAAA,CACA,iBAAA,CACA,6CAAA,CACA,wCAAA,CACA,iCAAA,CACA,qBAAA,CAGC,iFACC,UAAA,CACA,wCAAA,CAIF,2DACC,6CAAA,CACA,gDAAA,CAGD,kLACC,gCAAA,CAGD,yDACC,+BAAA,CACA,6CAAA,CAID,sHAEC,UAAA,CAID,qEACC,UAAA,CAGD,0KAIC,qEAAA,CAID,uDACC,UAAA,CAGD,mMAGC,YAAA,CAGD,kFACC,wBAAA\",\"sourcesContent\":[\"\\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\\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\\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\\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\\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\\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\\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\\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\\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\\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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.background-selector {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tjustify-content: center;\\n\\n\\t.background {\\n\\t\\toverflow: hidden;\\n\\t\\twidth: 176px;\\n\\t\\theight: 96px;\\n\\t\\tmargin: 8px;\\n\\t\\ttext-align: center;\\n\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tbackground-position: center center;\\n\\t\\tbackground-size: cover;\\n\\n\\t\\t&__filepicker {\\n\\t\\t\\t&.background--active {\\n\\t\\t\\t\\tcolor: white;\\n\\t\\t\\t\\tbackground-image: var(--image-background);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__default {\\n\\t\\t\\tbackground-color: var(--color-primary-default);\\n\\t\\t\\tbackground-image: var(--image-background-default);\\n\\t\\t}\\n\\n\\t\\t&__filepicker, &__default, &__color {\\n\\t\\t\\tborder-color: var(--color-border);\\n\\t\\t}\\n\\n\\t\\t&__color {\\n\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t\\tbackground-color: var(--color-primary-default);\\n\\t\\t}\\n\\n\\t\\t// Over a background image\\n\\t\\t&__default,\\n\\t\\t&__shipped {\\n\\t\\t\\tcolor: white;\\n\\t\\t}\\n\\n\\t\\t// Text and svg icon dark on bright background\\n\\t\\t&[data-color-bright] {\\n\\t\\t\\tcolor: black;\\n\\t\\t}\\n\\n\\t\\t&--active,\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\t// Use theme color primary, see inline css variable in template\\n\\t\\t\\tborder: 2px solid var(--border-color, var(--color-primary)) !important;\\n\\t\\t}\\n\\n\\t\\t// Icon\\n\\t\\tspan {\\n\\t\\t\\tmargin: 4px;\\n\\t\\t}\\n\\n\\t\\t&__filepicker span,\\n\\t\\t&__default span,\\n\\t\\t&__shipped span {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\n\\t\\t&--active:not(.icon-loading) span {\\n\\t\\t\\tdisplay: block !important;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".theming__preview[data-v-37ca8ab2]{--ratio: 16;position:relative;display:flex;justify-content:flex-start;max-width:800px}.theming__preview[data-v-37ca8ab2],.theming__preview *[data-v-37ca8ab2]{user-select:none}.theming__preview-image[data-v-37ca8ab2]{flex-basis:calc(16px*var(--ratio));flex-shrink:0;height:calc(10px*var(--ratio));margin-right:var(--gap);cursor:pointer;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:top left;background-size:cover}.theming__preview-description[data-v-37ca8ab2]{display:flex;flex-direction:column}.theming__preview-description label[data-v-37ca8ab2]{padding:12px 0}.theming__preview--default[data-v-37ca8ab2]{grid-column:span 2}.theming__preview-warning[data-v-37ca8ab2]{color:var(--color-warning)}@media(max-width: 682.6666666667px){.theming__preview[data-v-37ca8ab2]{flex-direction:column}.theming__preview-image[data-v-37ca8ab2]{margin:0}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/ItemPreview.vue\"],\"names\":[],\"mappings\":\"AAiGA,mCAEC,WAAA,CAEA,iBAAA,CACA,YAAA,CACA,0BAAA,CACA,eAAA,CAEA,wEAEC,gBAAA,CAGD,yCACC,kCAAA,CACA,aAAA,CACA,8BAAA,CACA,uBAAA,CACA,cAAA,CACA,kCAAA,CACA,2BAAA,CACA,4BAAA,CACA,qBAAA,CAGD,+CACC,YAAA,CACA,qBAAA,CAEA,qDACC,cAAA,CAIF,4CACC,kBAAA,CAGD,2CACC,0BAAA,CAIF,oCACC,mCACC,qBAAA,CAEA,yCACC,QAAA,CAAA\",\"sourcesContent\":[\"\\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\\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\\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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.theming__preview {\\n\\t// We make previews on 16/10 screens\\n\\t--ratio: 16;\\n\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tjustify-content: flex-start;\\n\\tmax-width: 800px;\\n\\n\\t&,\\n\\t* {\\n\\t\\tuser-select: none;\\n\\t}\\n\\n\\t&-image {\\n\\t\\tflex-basis: calc(16px * var(--ratio));\\n\\t\\tflex-shrink: 0;\\n\\t\\theight: calc(10px * var(--ratio));\\n\\t\\tmargin-right: var(--gap);\\n\\t\\tcursor: pointer;\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-position: top left;\\n\\t\\tbackground-size: cover;\\n\\t}\\n\\n\\t&-description {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\n\\t\\tlabel {\\n\\t\\t\\tpadding: 12px 0;\\n\\t\\t}\\n\\t}\\n\\n\\t&--default {\\n\\t\\tgrid-column: span 2;\\n\\t}\\n\\n\\t&-warning {\\n\\t\\tcolor: var(--color-warning);\\n\\t}\\n}\\n\\n@media (max-width: (1024px / 1.5)) {\\n\\t.theming__preview {\\n\\t\\tflex-direction: column;\\n\\n\\t\\t&-image {\\n\\t\\t\\tmargin: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 1474;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t1474: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(10106); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","class","loading","backgroundImage","invertTextColor","Theming","color","on","pickFile","_v","_s","t","style","defaultColor","setDefault","debouncePickColor","model","value","callback","$$v","$set","expression","backgroundColor","_l","shippedBackground","directives","name","rawName","details","key","preview","primary_color","theming","$event","setShipped","removeBackground","theme","id","img","onToggle","title","description","_e","checked","enforced","switchType","enableLabel","console","debug","availableThemes","domProps","descriptionDetail","enforceTheme","selectedTheme","themes","length","changeTheme","enabled","fonts","changeFont","shortcutsDisabled","changeShortcutsDisabled","refreshGlobalStyles","Vue","OC","App","$mount","$on","document","head","querySelectorAll","forEach","url","URL","href","searchParams","set","Date","now","newTheme","cloneNode","toString","onload","remove","append","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 91136685f19..8ab0b464dc2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -58,6 +58,7 @@ "moment": "^2.29.4", "moment-timezone": "^0.5.38", "nextcloud-vue-collections": "^0.10.0", + "node-vibrant": "^3.1.6", "p-limit": "^4.0.0", "p-queue": "^7.3.0", "path": "^0.12.7", @@ -87,18 +88,28 @@ }, "devDependencies": { "@babel/node": "^7.20.0", + "@cypress/browserify-preprocessor": "^3.0.2", "@nextcloud/babel-config": "^1.0.0", + "@nextcloud/cypress": "^1.0.0-beta.1", "@nextcloud/eslint-config": "^8.0.0", "@nextcloud/stylelint-config": "^2.1.2", "@testing-library/jest-dom": "^5.16.4", "@testing-library/user-event": "^14.4.3", "@testing-library/vue": "^5.8.3", + "@types/dockerode": "^3.3.14", + "@typescript-eslint/eslint-plugin": "^5.44.0", + "@typescript-eslint/parser": "^5.44.0", "@vue/test-utils": "^1.3.0", + "@vue/tsconfig": "^0.1.3", "@vue/vue2-jest": "^29.1.1", "babel-jest": "^29.0.3", "babel-loader": "^8.2.5", "babel-loader-exclude-node-modules-except": "^1.2.1", "css-loader": "^6.7.1", + "cypress": "^11.2.0", + "cypress-wait-until": "^1.7.2", + "dockerode": "^3.3.4", + "eslint-plugin-cypress": "^2.12.1", "eslint-plugin-es": "^4.1.0", "exports-loader": "^4.0.0", "file-loader": "^6.2.0", @@ -123,8 +134,12 @@ "sass-loader": "^12.6.0", "sinon": "<= 5.0.7", "style-loader": "^3.3.1", + "ts-node": "^10.9.1", + "tslib": "^2.4.1", + "typescript": "^4.9.3", "vue-loader": "^15.9.8", "vue-template-compiler": "^2.7.13", + "wait-on": "^6.0.1", "webpack": "^5.75.0", "webpack-cli": "^4.9.2", "webpack-merge": "^5.8.0" @@ -147,9 +162,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz", - "integrity": "sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz", + "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==", "dev": true, "engines": { "node": ">=6.9.0" @@ -219,13 +234,12 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", "dev": true, - "peer": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -236,7 +250,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-explode-assignable-expression": "^7.16.7", "@babel/types": "^7.16.7" @@ -246,14 +259,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", "semver": "^6.3.0" }, "engines": { @@ -268,7 +281,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.7.tgz", "integrity": "sha512-kIFozAvVfK05DM4EVQYKK+zteWvY85BFdGBRQBytRyY3y+6PX0DkDOn/CZ3lEuczCfrCxEzwt0YtP/87YPTWSw==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.16.7", "@babel/helper-environment-visitor": "^7.16.7", @@ -290,7 +302,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz", "integrity": "sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.16.7", "regexpu-core": "^4.7.1" @@ -303,16 +314,13 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", "dev": true, - "peer": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", "resolve": "^1.14.2", @@ -339,7 +347,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", "dev": true, - "peer": true, "dependencies": { "@babel/types": "^7.16.7" }, @@ -390,7 +397,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", "dev": true, - "peer": true, "dependencies": { "@babel/types": "^7.16.7" }, @@ -399,12 +405,12 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -434,7 +440,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", "dev": true, - "peer": true, "dependencies": { "@babel/types": "^7.16.7" }, @@ -456,7 +461,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.16.7", "@babel/helper-wrap-function": "^7.16.8", @@ -471,7 +475,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-member-expression-to-functions": "^7.16.7", @@ -500,7 +503,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, - "peer": true, "dependencies": { "@babel/types": "^7.16.0" }, @@ -520,19 +522,28 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", "dev": true, "engines": { "node": ">=6.9.0" @@ -543,7 +554,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-function-name": "^7.16.7", "@babel/template": "^7.16.7", @@ -621,7 +631,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, @@ -637,7 +646,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", @@ -655,7 +663,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-remap-async-to-generator": "^7.16.8", @@ -673,7 +680,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7" @@ -690,7 +696,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz", "integrity": "sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7", @@ -708,7 +713,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -725,7 +729,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -742,7 +745,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -759,7 +761,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -776,7 +777,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -793,7 +793,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -810,7 +809,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz", "integrity": "sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==", "dev": true, - "peer": true, "dependencies": { "@babel/compat-data": "^7.16.4", "@babel/helper-compilation-targets": "^7.16.7", @@ -830,7 +828,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -847,7 +844,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", @@ -865,7 +861,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.7.tgz", "integrity": "sha512-7twV3pzhrRxSwHeIvFE6coPgvo+exNDOiGUMg39o2LiLo1Y+4aKpfkcLGcg1UHonzorCt7SNXnoMyCnnIOA8Sw==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7" @@ -882,7 +877,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.16.7", "@babel/helper-create-class-features-plugin": "^7.16.7", @@ -901,7 +895,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7" @@ -954,7 +947,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -970,7 +962,6 @@ "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, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -983,7 +974,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -1107,7 +1097,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1153,7 +1142,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, @@ -1169,7 +1157,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-module-imports": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7", @@ -1187,7 +1174,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, @@ -1203,7 +1189,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, @@ -1219,7 +1204,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.16.7", "@babel/helper-environment-visitor": "^7.16.7", @@ -1242,7 +1226,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, @@ -1258,7 +1241,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz", "integrity": "sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, @@ -1274,7 +1256,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7" @@ -1291,7 +1272,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, @@ -1307,7 +1287,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7" @@ -1324,7 +1303,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, @@ -1340,7 +1318,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-compilation-targets": "^7.16.7", "@babel/helper-function-name": "^7.16.7", @@ -1358,7 +1335,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, @@ -1374,7 +1350,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, @@ -1390,7 +1365,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-module-transforms": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7", @@ -1426,7 +1400,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz", "integrity": "sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-module-transforms": "^7.16.7", @@ -1446,7 +1419,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-module-transforms": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7" @@ -1463,7 +1435,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.16.7" }, @@ -1479,7 +1450,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, @@ -1495,7 +1465,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-replace-supers": "^7.16.7" @@ -1512,7 +1481,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, @@ -1528,7 +1496,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, @@ -1539,12 +1506,76 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", + "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", + "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "dev": true, + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz", + "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-transform-regenerator": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", "dev": true, - "peer": true, "dependencies": { "regenerator-transform": "^0.14.2" }, @@ -1560,7 +1591,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, @@ -1571,12 +1601,56 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz", + "integrity": "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-transform-shorthand-properties": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, @@ -1592,7 +1666,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" @@ -1609,7 +1682,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, @@ -1625,7 +1697,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, @@ -1641,7 +1712,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, @@ -1657,7 +1727,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, @@ -1673,7 +1742,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7" @@ -1712,7 +1780,6 @@ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.8.tgz", "integrity": "sha512-9rNKgVCdwHb3z1IlbMyft6yIXIeP3xz6vWvGaLHrJThuEIqWfHb0DNBH9VuTgnDfdbUDhkmkvMZS/YMCtP7Elg==", "dev": true, - "peer": true, "dependencies": { "@babel/compat-data": "^7.16.8", "@babel/helper-compilation-targets": "^7.16.7", @@ -1801,7 +1868,6 @@ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", @@ -1813,6 +1879,26 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/preset-react": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz", + "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-react-display-name": "^7.18.6", + "@babel/plugin-transform-react-jsx": "^7.18.6", + "@babel/plugin-transform-react-jsx-development": "^7.18.6", + "@babel/plugin-transform-react-pure-annotations": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/register": { "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.18.9.tgz", @@ -1988,18 +2074,25 @@ } }, "node_modules/@babel/types": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", - "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz", + "integrity": "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@balena/dockerignore": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz", + "integrity": "sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==", + "dev": true + }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", @@ -2026,6 +2119,194 @@ "node": ">=0.1.90" } }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@cypress/browserify-preprocessor": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@cypress/browserify-preprocessor/-/browserify-preprocessor-3.0.2.tgz", + "integrity": "sha512-y6mlFR+IR2cqcm3HabSp7AEcX9QfF1EUL4eOaw/7xexdhmdQU8ez6piyRopZQob4BK8oKTsc9PkupsU2rzjqMA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-transform-runtime": "^7.16.0", + "@babel/preset-env": "^7.16.0", + "@babel/preset-react": "^7.16.0", + "@babel/runtime": "^7.16.0", + "babel-plugin-add-module-exports": "^1.0.4", + "babelify": "^10.0.0", + "bluebird": "^3.7.2", + "browserify": "^16.2.3", + "coffeeify": "^3.0.1", + "coffeescript": "^1.12.7", + "debug": "^4.3.2", + "fs-extra": "^9.0.0", + "lodash.clonedeep": "^4.5.0", + "through2": "^2.0.0", + "watchify": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@cypress/browserify-preprocessor/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@cypress/browserify-preprocessor/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@cypress/request": { + "version": "2.88.10", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", + "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "http-signature": "~1.3.6", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@cypress/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/@cypress/request/node_modules/http-signature": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", + "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.14.1" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/@cypress/request/node_modules/jsprim": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "node_modules/@cypress/request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/@cypress/request/node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "dependencies": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + } + }, + "node_modules/@cypress/xvfb/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", @@ -2151,6 +2432,21 @@ "optional": true, "peer": true }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.9.2", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz", @@ -3419,6 +3715,178 @@ "node": ">=8" } }, + "node_modules/@jimp/bmp": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.2.tgz", + "integrity": "sha512-4g9vW45QfMoGhLVvaFj26h4e7cC+McHUQwyFQmNTLW4FfC1OonN9oUr2m/FEDGkTYKR7aqdXR5XUqqIkHWLaFw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "bmp-js": "^0.1.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/core": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.2.tgz", + "integrity": "sha512-dp7HcyUMzjXphXYodI6PaXue+I9PXAavbb+AN+1XqFbotN22Z12DosNPEyy+UhLY/hZiQQqUkEaJHkvV31rs+w==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "exif-parser": "^0.1.12", + "file-type": "^9.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "^0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + } + }, + "node_modules/@jimp/core/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/@jimp/core/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/@jimp/custom": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.2.tgz", + "integrity": "sha512-GtNwOs4hcVS2GIbqRUf42rUuX07oLB92cj7cqxZb0ZGWwcwhnmSW0TFLAkNafXmqn9ug4VTpNvcJSUdiuECVKg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/core": "^0.16.2" + } + }, + "node_modules/@jimp/gif": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.2.tgz", + "integrity": "sha512-TMdyT9Q0paIKNtT7c5KzQD29CNCsI/t8ka28jMrBjEK7j5RRTvBfuoOnHv7pDJRCjCIqeUoaUSJ7QcciKic6CA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "gifwrap": "^0.9.2", + "omggif": "^1.0.9" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/jpeg": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.2.tgz", + "integrity": "sha512-BW5gZydgq6wdIwHd+3iUNgrTklvoQc/FUKSj9meM6A0FU21lUaansRX5BDdJqHkyXJLnnlDGwDt27J+hQuBAVw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "jpeg-js": "^0.4.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-resize": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.2.tgz", + "integrity": "sha512-gE4N9l6xuwzacFZ2EPCGZCJ/xR+aX2V7GdMndIl/6kYIw5/eib1SFuF9AZLvIPSFuE1FnGo8+vT0pr++SSbhYg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/png": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.2.tgz", + "integrity": "sha512-sFOtOSz/tzDwXEChFQ/Nxe+0+vG3Tj0eUxnZVDUG/StXE9dI8Bqmwj3MIa0EgK5s+QG3YlnDOmlPUa4JqmeYeQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "pngjs": "^3.3.3" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/png/node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@jimp/tiff": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.2.tgz", + "integrity": "sha512-ADcdqmtZF+U2YoaaHTzFX8D6NFpmN4WZUT0BPMerEuY7Cq8QoLYU22z2h034FrVW+Rbi1b3y04sB9iDiQAlf2w==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "utif": "^2.0.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/types": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.2.tgz", + "integrity": "sha512-0Ue5Sq0XnDF6TirisWv5E+8uOnRcd8vRLuwocJOhF76NIlcQrz+5r2k2XWKcr3d+11n28dHLXW5TKSqrUopxhA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/bmp": "^0.16.2", + "@jimp/gif": "^0.16.2", + "@jimp/jpeg": "^0.16.2", + "@jimp/png": "^0.16.2", + "@jimp/tiff": "^0.16.2", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/utils": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.2.tgz", + "integrity": "sha512-XENrPvmigiXZQ8E2nxJqO6UVvWBLzbNwyYi3Y8Q1IECoYhYI3kgOQ0fmy4G269Vz1V0omh1bNmC42r4OfXg1Jg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", @@ -3606,6 +4074,19 @@ "core-js": "^3.6.4" } }, + "node_modules/@nextcloud/cypress": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/@nextcloud/cypress/-/cypress-1.0.0-beta.1.tgz", + "integrity": "sha512-2tO8lGaeMLfyNDhqSXN8FVUXV6E6MPJSBdJs7y2jMg2lljtqJFo4ofgPi4bFksAVJK0qiqZInGn3UIzqMycyqQ==", + "dev": true, + "engines": { + "node": "^16.0.0", + "npm": "^7.0.0 || ^8.0.0" + }, + "peerDependencies": { + "cypress": "^11.0.1" + } + }, "node_modules/@nextcloud/dialogs": { "version": "4.0.0-beta.2", "resolved": "https://registry.npmjs.org/@nextcloud/dialogs/-/dialogs-4.0.0-beta.2.tgz", @@ -4310,7 +4791,6 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, - "peer": true, "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -4324,7 +4804,6 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "peer": true, "engines": { "node": ">= 8" } @@ -4334,7 +4813,6 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "peer": true, "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -4390,6 +4868,27 @@ "node": ">=10" } }, + "node_modules/@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", + "dev": true + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, "node_modules/@sinclair/typebox": { "version": "0.24.43", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.43.tgz", @@ -4800,6 +5299,30 @@ "node": ">= 10" } }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, "node_modules/@types/aria-query": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", @@ -4859,6 +5382,26 @@ "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", "dev": true }, + "node_modules/@types/docker-modem": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/docker-modem/-/docker-modem-3.0.2.tgz", + "integrity": "sha512-qC7prjoEYR2QEe6SmCVfB1x3rfcQtUr1n4x89+3e0wSTMQ/KYCyf+/RAA9n2tllkkNc6//JMUZePdFRiGIWfaQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/ssh2": "*" + } + }, + "node_modules/@types/dockerode": { + "version": "3.3.14", + "resolved": "https://registry.npmjs.org/@types/dockerode/-/dockerode-3.3.14.tgz", + "integrity": "sha512-PUTwtySPzCbjZ/uqRMBWKHtLGqBAlhnLitzHuom19NEX0KBYsQXqbVlig+zbUgYQU1paDeQURXj7QNglh1RI6A==", + "dev": true, + "dependencies": { + "@types/docker-modem": "*", + "@types/node": "*" + } + }, "node_modules/@types/eslint": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", @@ -4993,6 +5536,11 @@ "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==", "dev": true }, + "node_modules/@types/lodash": { + "version": "4.14.190", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.190.tgz", + "integrity": "sha512-5iJ3FBJBvQHQ8sFhEhJfjUP+G+LalhavTkYyrAYqz5MEJG+erSv0k9KJLb6q7++17Lafk1scaTIFXcMJlwK8Mw==" + }, "node_modules/@types/markdown-it": { "version": "12.2.3", "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", @@ -5042,9 +5590,30 @@ "dev": true }, "node_modules/@types/semver": { - "version": "7.3.9", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.9.tgz", - "integrity": "sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==" + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==" + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", + "dev": true + }, + "node_modules/@types/sizzle": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", + "dev": true + }, + "node_modules/@types/ssh2": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-1.11.6.tgz", + "integrity": "sha512-8Mf6bhzYYBLEB/G6COux7DS/F5bCWwojv/qFo2yH/e4cLzAavJnxvFXrYW59iKfXdhG6OmzJcXDasgOb/s0rxw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } }, "node_modules/@types/stack-utils": { "version": "2.0.1", @@ -5104,6 +5673,265 @@ "@types/node": "*" } }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.45.0.tgz", + "integrity": "sha512-CXXHNlf0oL+Yg021cxgOdMHNTXD17rHkq7iW6RFHoybdFgQBjU3yIXhhcPpGwr1CjZlo6ET8C6tzX5juQoXeGA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.45.0", + "@typescript-eslint/type-utils": "5.45.0", + "@typescript-eslint/utils": "5.45.0", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.45.0.tgz", + "integrity": "sha512-brvs/WSM4fKUmF5Ot/gEve6qYiCMjm6w4HkHPfS6ZNmxTS0m0iNN4yOChImaCkqc1hRwFGqUyanMXuGal6oyyQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.45.0", + "@typescript-eslint/types": "5.45.0", + "@typescript-eslint/typescript-estree": "5.45.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.45.0.tgz", + "integrity": "sha512-noDMjr87Arp/PuVrtvN3dXiJstQR1+XlQ4R1EvzG+NMgXi8CuMCXpb8JqNtFHKceVSQ985BZhfRdowJzbv4yKw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.45.0", + "@typescript-eslint/visitor-keys": "5.45.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.45.0.tgz", + "integrity": "sha512-DY7BXVFSIGRGFZ574hTEyLPRiQIvI/9oGcN8t1A7f6zIs6ftbrU0nhyV26ZW//6f85avkwrLag424n+fkuoJ1Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.45.0", + "@typescript-eslint/utils": "5.45.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.45.0.tgz", + "integrity": "sha512-QQij+u/vgskA66azc9dCmx+rev79PzX8uDHpsqSjEFtfF2gBUTRCpvYMh2gw2ghkJabNkPlSUCimsyBEQZd1DA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.45.0.tgz", + "integrity": "sha512-maRhLGSzqUpFcZgXxg1qc/+H0bT36lHK4APhp0AEUVrpSwXiRAomm/JGjSG+kNUio5kAa3uekCYu/47cnGn5EQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.45.0", + "@typescript-eslint/visitor-keys": "5.45.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.45.0.tgz", + "integrity": "sha512-OUg2JvsVI1oIee/SwiejTot2OxwU8a7UfTFMOdlhD2y+Hl6memUSL4s98bpUTo8EpVEr0lmwlU7JSu/p2QpSvA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.45.0", + "@typescript-eslint/types": "5.45.0", + "@typescript-eslint/typescript-estree": "5.45.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.45.0.tgz", + "integrity": "sha512-jc6Eccbn2RtQPr1s7th6jJWQHBHI6GBVQkCHoJFQ5UreaKm59Vxw+ynQUPPY2u2Amquc+7tmEoC2G52ApsGNNg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.45.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/@vue/compiler-sfc": { "version": "2.7.13", "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.13.tgz", @@ -5204,6 +6032,20 @@ "vue-template-compiler": "^2.x" } }, + "node_modules/@vue/tsconfig": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.1.3.tgz", + "integrity": "sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==", + "dev": true, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, "node_modules/@vue/vue2-jest": { "version": "29.1.1", "resolved": "https://registry.npmjs.org/@vue/vue2-jest/-/vue2-jest-29.1.1.tgz", @@ -5477,6 +6319,17 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dev": true, + "dependencies": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, "node_modules/acorn-walk": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", @@ -5519,8 +6372,6 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -5552,6 +6403,15 @@ "ajv": "^6.9.1" } }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -5587,6 +6447,11 @@ "node": ">=4" } }, + "node_modules/any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" + }, "node_modules/anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", @@ -5608,6 +6473,26 @@ "optional": true, "peer": true }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/are-we-there-yet": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", @@ -5639,6 +6524,12 @@ "node": ">= 6" } }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -5696,7 +6587,6 @@ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "peer": true, "engines": { "node": ">=8" } @@ -5734,29 +6624,67 @@ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "safer-buffer": "~2.1.0" } }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "util": "0.10.3" + } + }, "node_modules/assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true, - "optional": true, - "peer": true, "engines": { "node": ">=0.8" } }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", + "dev": true + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", + "dev": true, + "dependencies": { + "inherits": "2.0.1" + } + }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, - "peer": true, "engines": { "node": ">=8" } @@ -5783,6 +6711,15 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", @@ -5800,13 +6737,23 @@ "resolved": "https://registry.npmjs.org/autosize/-/autosize-5.0.1.tgz", "integrity": "sha512-UIWUlE4TOVPNNj2jjrU39wI4hEYbneUypEqcyRmRFIx5CC2gNdg3rQr+Zh7/3h6egbBvm33TDQjNQKtj9Tk1HA==" }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", "dev": true, - "optional": true, - "peer": true, "engines": { "node": "*" } @@ -5815,9 +6762,7 @@ "version": "1.11.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "node_modules/axios": { "version": "0.27.2", @@ -5976,6 +6921,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/babel-plugin-add-module-exports": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.4.tgz", + "integrity": "sha512-g+8yxHUZ60RcyaUpfNzy56OtWW+x9cyEe9j+CranqLiqbju2yf/Cy6ZtYK40EZxtrdHllzlVZgLmcOUCTlJ7Jg==", + "dev": true + }, "node_modules/babel-plugin-dynamic-import-node": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", @@ -6017,14 +6968,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", - "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", "dev": true, - "peer": true, "dependencies": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", "semver": "^6.1.1" }, "peerDependencies": { @@ -6036,7 +6986,6 @@ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.1.tgz", "integrity": "sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-define-polyfill-provider": "^0.3.1", "core-js-compat": "^3.20.0" @@ -6050,7 +6999,6 @@ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-define-polyfill-provider": "^0.3.1" }, @@ -6097,6 +7045,18 @@ "@babel/core": "^7.0.0" } }, + "node_modules/babelify": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/babelify/-/babelify-10.0.0.tgz", + "integrity": "sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/backbone": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/backbone/-/backbone-1.4.1.tgz", @@ -6148,8 +7108,6 @@ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dev": true, - "optional": true, - "peer": true, "dependencies": { "tweetnacl": "^0.14.3" } @@ -6220,6 +7178,12 @@ "node": ">= 6" } }, + "node_modules/blob-util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true + }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -6231,6 +7195,17 @@ "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==" }, + "node_modules/bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==" + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, "node_modules/body-parser": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", @@ -6326,32 +7301,273 @@ "node": ">=8" } }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "node_modules/browser-pack": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", + "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", + "dev": true, + "dependencies": { + "combine-source-map": "~0.8.0", + "defined": "^1.0.0", + "JSONStream": "^1.0.3", + "safe-buffer": "^5.1.1", + "through2": "^2.0.0", + "umd": "^3.0.0" + }, + "bin": { + "browser-pack": "bin/cmd.js" + } + }, "node_modules/browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", "dev": true }, + "node_modules/browser-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", + "dev": true, + "dependencies": { + "resolve": "^1.17.0" + } + }, + "node_modules/browserify": { + "version": "16.5.2", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-16.5.2.tgz", + "integrity": "sha512-TkOR1cQGdmXU9zW4YukWzWVSJwrxmNdADFbqbE3HFgQWe5wqZmOawqZ7J/8MPCwk/W8yY7Y0h+7mOtcZxLP23g==", + "dev": true, + "dependencies": { + "assert": "^1.4.0", + "browser-pack": "^6.0.1", + "browser-resolve": "^2.0.0", + "browserify-zlib": "~0.2.0", + "buffer": "~5.2.1", + "cached-path-relative": "^1.0.0", + "concat-stream": "^1.6.0", + "console-browserify": "^1.1.0", + "constants-browserify": "~1.0.0", + "crypto-browserify": "^3.0.0", + "defined": "^1.0.0", + "deps-sort": "^2.0.0", + "domain-browser": "^1.2.0", + "duplexer2": "~0.1.2", + "events": "^2.0.0", + "glob": "^7.1.0", + "has": "^1.0.0", + "htmlescape": "^1.1.0", + "https-browserify": "^1.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "^7.0.0", + "JSONStream": "^1.0.3", + "labeled-stream-splicer": "^2.0.0", + "mkdirp-classic": "^0.5.2", + "module-deps": "^6.2.3", + "os-browserify": "~0.3.0", + "parents": "^1.0.1", + "path-browserify": "~0.0.0", + "process": "~0.11.0", + "punycode": "^1.3.2", + "querystring-es3": "~0.2.0", + "read-only-stream": "^2.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.4", + "shasum": "^1.0.0", + "shell-quote": "^1.6.1", + "stream-browserify": "^2.0.0", + "stream-http": "^3.0.0", + "string_decoder": "^1.1.1", + "subarg": "^1.0.0", + "syntax-error": "^1.1.1", + "through2": "^2.0.0", + "timers-browserify": "^1.0.1", + "tty-browserify": "0.0.1", + "url": "~0.11.0", + "util": "~0.10.1", + "vm-browserify": "^1.0.0", + "xtend": "^4.0.0" + }, + "bin": { + "browserify": "bin/cmd.js" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/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, + "dependencies": { + "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" + } + }, + "node_modules/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, + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/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, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/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, + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserify/node_modules/buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "dev": true, + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "node_modules/browserify/node_modules/events": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-2.1.0.tgz", + "integrity": "sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/browserify/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/browserify/node_modules/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, + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, "node_modules/browserslist": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], "dependencies": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" }, "bin": { "browserslist": "cli.js" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" } }, "node_modules/browserslist-useragent-regexp": { @@ -6483,11 +7699,41 @@ "node": "*" } }, + "node_modules/buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "node_modules/buildcheck": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.3.tgz", + "integrity": "sha512-pziaA+p/wdVImfcbsZLNF32EiWyujlQLwolMqUQE8xpKNOH7KmZQaY8sXN7DGOEzPAElo9QTaeNRfGnf3iOJbA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true + }, "node_modules/byte-length": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/byte-length/-/byte-length-1.0.2.tgz", @@ -6533,6 +7779,21 @@ "node": ">= 10" } }, + "node_modules/cached-path-relative": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz", + "integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==", + "dev": true + }, + "node_modules/cachedir": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -6595,21 +7856,25 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001300", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001300.tgz", - "integrity": "sha512-cVjiJHWGcNlJi8TZVKNMnvMid3Z3TTdDHmLDzlOdIiZq138Exvo0G+G0wTdVYolxKb4AYwC+38pxodiInVtJSA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } + "version": "1.0.30001434", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz", + "integrity": "sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] }, "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "node_modules/catharsis": { "version": "0.9.0", @@ -6662,6 +7927,15 @@ "node": "*" } }, + "node_modules/check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -6714,6 +7988,16 @@ "integrity": "sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==", "dev": true }, + "node_modules/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, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "node_modules/cjs-module-lexer": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", @@ -6730,12 +8014,100 @@ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, - "optional": true, - "peer": true, "engines": { "node": ">=6" } }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cli-truncate/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cli-truncate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/cli-truncate/node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/clipboard": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.10.tgz", @@ -6814,6 +8186,32 @@ "node": ">= 0.12.0" } }, + "node_modules/coffeeify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/coffeeify/-/coffeeify-3.0.1.tgz", + "integrity": "sha512-Qjnr7UX6ldK1PHV7wCnv7AuCd4q19KTUtwJnu/6JRJB4rfm12zvcXtKdacUoePOKr1I4ka/ydKiwWpNAdsQb0g==", + "dev": true, + "dependencies": { + "convert-source-map": "^1.3.0", + "through2": "^2.0.0" + }, + "peerDependencies": { + "coffeescript": ">1.9.2 <3" + } + }, + "node_modules/coffeescript": { + "version": "1.12.7", + "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.12.7.tgz", + "integrity": "sha512-pLXHFxQMPklVoEekowk8b3erNynC+DVJzChxS/LCBBgR6/8AJkHivkm//zbowcfc7BTCAjryuhx6gPqPRfsFoA==", + "dev": true, + "bin": { + "cake": "bin/cake", + "coffee": "bin/coffee" + }, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/collect-v8-coverage": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", @@ -6868,6 +8266,24 @@ "node": ">=0.1.90" } }, + "node_modules/combine-source-map": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", + "integrity": "sha512-UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==", + "dev": true, + "dependencies": { + "convert-source-map": "~1.1.0", + "inline-source-map": "~0.6.0", + "lodash.memoize": "~3.0.3", + "source-map": "~0.5.3" + } + }, + "node_modules/combine-source-map/node_modules/convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==", + "dev": true + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -6898,6 +8314,15 @@ "node": ">= 12.0.0" } }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -6910,6 +8335,21 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, "node_modules/condense-newlines": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", @@ -6976,6 +8416,12 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "node_modules/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 + }, "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -6996,6 +8442,12 @@ "node": ">= 0.10.0" } }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, "node_modules/content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", @@ -7034,30 +8486,18 @@ } }, "node_modules/core-js-compat": { - "version": "3.20.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.3.tgz", - "integrity": "sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw==", + "version": "3.26.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", + "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", "dev": true, - "peer": true, "dependencies": { - "browserslist": "^4.19.1", - "semver": "7.0.0" + "browserslist": "^4.21.4" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" } }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/core-js-pure": { "version": "3.20.3", "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.20.3.tgz", @@ -7073,9 +8513,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "node_modules/cors": { "version": "2.8.5", @@ -7107,6 +8545,70 @@ "node": ">=10" } }, + "node_modules/cpu-features": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.4.tgz", + "integrity": "sha512-fKiZ/zp1mUwQbnzb9IghXtHtDoTMtNeb8oYGx6kX2SYfhnG0HNdBEBIzB9b5KlXu5DQPhfy3mInbBxFcgwAr3A==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "buildcheck": "0.0.3", + "nan": "^2.15.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/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, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/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, + "dependencies": { + "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" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, "node_modules/cropperjs": { "version": "1.5.12", "resolved": "https://registry.npmjs.org/cropperjs/-/cropperjs-1.5.12.tgz", @@ -7143,6 +8645,28 @@ "node": "*" } }, + "node_modules/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, + "dependencies": { + "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" + }, + "engines": { + "node": "*" + } + }, "node_modules/css": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", @@ -7271,13 +8795,281 @@ "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", "dev": true }, + "node_modules/cypress": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-11.2.0.tgz", + "integrity": "sha512-u61UGwtu7lpsNWLUma/FKNOsrjcI6wleNmda/TyKHe0dOBcVjbCPlp1N6uwFZ0doXev7f/91YDpU9bqDCFeBLA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@cypress/request": "^2.88.10", + "@cypress/xvfb": "^1.2.4", + "@types/node": "^14.14.31", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.6.0", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^5.1.0", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.2", + "enquirer": "^2.3.6", + "eventemitter2": "6.4.7", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-ci": "^3.0.0", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.6", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.3.2", + "supports-color": "^8.1.1", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + }, + "bin": { + "cypress": "bin/cypress" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/cypress-wait-until": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/cypress-wait-until/-/cypress-wait-until-1.7.2.tgz", + "integrity": "sha512-uZ+M8/MqRcpf+FII/UZrU7g1qYZ4aVlHcgyVopnladyoBrpoaMJ4PKZDrdOJ05H5RHbr7s9Tid635X3E+ZLU/Q==", + "dev": true + }, + "node_modules/cypress/node_modules/@types/node": { + "version": "14.18.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.33.tgz", + "integrity": "sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg==", + "dev": true + }, + "node_modules/cypress/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cypress/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/cypress/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cypress/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cypress/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cypress/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/cypress/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/cypress/node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/cypress/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cypress/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cypress/node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/cypress/node_modules/proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", + "dev": true + }, + "node_modules/cypress/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cypress/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/cypress/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/dash-ast": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", + "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", + "dev": true + }, "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, - "optional": true, - "peer": true, "dependencies": { "assert-plus": "^1.0.0" }, @@ -7331,6 +9123,12 @@ "resolved": "git+ssh://git@github.com/owncloud/davclient.js.git#1ab200d099a3c2cd2ef919c3a56353ce26865994", "license": "BSD-3-Clause" }, + "node_modules/dayjs": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.6.tgz", + "integrity": "sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ==", + "dev": true + }, "node_modules/de-indent": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", @@ -7450,6 +9248,15 @@ "node": ">= 0.4" } }, + "node_modules/defined": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", + "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -7482,6 +9289,31 @@ "node": ">= 0.6" } }, + "node_modules/deps-sort": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", + "integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==", + "dev": true, + "dependencies": { + "JSONStream": "^1.0.3", + "shasum-object": "^1.0.0", + "subarg": "^1.0.0", + "through2": "^2.0.0" + }, + "bin": { + "deps-sort": "bin/cmd.js" + } + }, + "node_modules/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, + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, "node_modules/destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -7501,6 +9333,23 @@ "node": ">=8" } }, + "node_modules/detective": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", + "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", + "dev": true, + "dependencies": { + "acorn-node": "^1.8.2", + "defined": "^1.0.0", + "minimist": "^1.2.6" + }, + "bin": { + "detective": "bin/detective.js" + }, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/devtools-protocol": { "version": "0.0.1019158", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1019158.tgz", @@ -7531,6 +9380,23 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/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, + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "node_modules/dijkstrajs": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz", @@ -7541,7 +9407,6 @@ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, - "peer": true, "dependencies": { "path-type": "^4.0.0" }, @@ -7549,6 +9414,67 @@ "node": ">=8" } }, + "node_modules/docker-modem": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-3.0.6.tgz", + "integrity": "sha512-h0Ow21gclbYsZ3mkHDfsYNDqtRhXS8fXr51bU0qr1dxgTMJj0XufbzX+jhNOvA8KuEEzn6JbvLVhXyv+fny9Uw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "readable-stream": "^3.5.0", + "split-ca": "^1.0.1", + "ssh2": "^1.11.0" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/docker-modem/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/dockerode": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-3.3.4.tgz", + "integrity": "sha512-3EUwuXnCU+RUlQEheDjmBE0B7q66PV9Rw5NiH1sXwINq0M9c5ERP9fxgkw36ZHOtzf4AGEEYySnkx/sACC9EgQ==", + "dev": true, + "dependencies": { + "@balena/dockerignore": "^1.0.2", + "docker-modem": "^3.0.0", + "tar-fs": "~2.0.1" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/dockerode/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/dockerode/node_modules/tar-fs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", + "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", + "dev": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.0.0" + } + }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -7601,6 +9527,21 @@ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "node_modules/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, + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, "node_modules/domelementtype": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", @@ -7662,6 +9603,15 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.2" + } + }, "node_modules/easy-table": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.2.0.tgz", @@ -7678,8 +9628,6 @@ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "dev": true, - "optional": true, - "peer": true, "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -7738,9 +9686,30 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.47", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.47.tgz", - "integrity": "sha512-ZHc8i3/cgeCRK/vC7W2htAG6JqUmOUgDNn/f9yY9J8UjfLjwzwOVEt4MWmgJAdvmxyrsR5KIFA/6+kUHGY0eUA==" + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true }, "node_modules/emittery": { "version": "0.10.2", @@ -7904,6 +9873,18 @@ "node": ">=10.13.0" } }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/ent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", @@ -8317,6 +10298,18 @@ "node": ">=4" } }, + "node_modules/eslint-plugin-cypress": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.12.1.tgz", + "integrity": "sha512-c2W/uPADl5kospNDihgiLc7n87t5XhUbFDoTl6CfVkmG+kDAb5Ux10V9PoLPu9N+r7znpc+iQlcmAqT1A/89HA==", + "dev": true, + "dependencies": { + "globals": "^11.12.0" + }, + "peerDependencies": { + "eslint": ">= 3.2.1" + } + }, "node_modules/eslint-plugin-es": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", @@ -8638,7 +10631,6 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, - "peer": true, "engines": { "node": ">=10" } @@ -8967,6 +10959,12 @@ "node": ">=0.10.0" } }, + "node_modules/eventemitter2": { + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", + "dev": true + }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -8980,6 +10978,16 @@ "node": ">=0.8.x" } }, + "node_modules/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, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -9028,6 +11036,32 @@ "node": ">=8" } }, + "node_modules/executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "dependencies": { + "pify": "^2.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/executable/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==" + }, "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -9126,9 +11160,7 @@ "dev": true, "engines": [ "node >=0.6.0" - ], - "optional": true, - "peer": true + ] }, "node_modules/fast-deep-equal": { "version": "3.1.3", @@ -9140,7 +11172,6 @@ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", "dev": true, - "peer": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -9163,6 +11194,12 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true + }, "node_modules/fast-xml-parser": { "version": "3.21.1", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.21.1.tgz", @@ -9195,7 +11232,6 @@ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, - "peer": true, "dependencies": { "reusify": "^1.0.4" } @@ -9218,6 +11254,30 @@ "pend": "~1.2.0" } }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -9283,6 +11343,14 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/file-type": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", + "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==", + "engines": { + "node": ">=6" + } + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -9444,13 +11512,20 @@ } } }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "dev": true, - "optional": true, - "peer": true, "engines": { "node": "*" } @@ -9488,18 +11563,6 @@ "node": ">=12" } }, - "node_modules/fs-extra/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/fs-extra/node_modules/universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -9587,6 +11650,12 @@ "node": ">=6.9.0" } }, + "node_modules/get-assigned-identifiers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", + "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==", + "dev": true + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -9596,14 +11665,14 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "dev": true, "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9660,17 +11729,33 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/getos": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", + "dev": true, + "dependencies": { + "async": "^3.2.0" + } + }, "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, - "optional": true, - "peer": true, "dependencies": { "assert-plus": "^1.0.0" } }, + "node_modules/gifwrap": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", + "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", + "dependencies": { + "image-q": "^4.0.0", + "omggif": "^1.0.10" + } + }, "node_modules/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -9708,6 +11793,39 @@ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", @@ -9763,7 +11881,6 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, - "peer": true, "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -9832,6 +11949,18 @@ "delegate": "^3.1.2" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.9", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", @@ -9999,9 +12128,9 @@ } }, "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, "engines": { "node": ">= 0.4" @@ -10033,12 +12162,70 @@ "optional": true, "peer": true }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/hash-sum": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", "dev": true }, + "node_modules/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, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -10047,6 +12234,17 @@ "he": "bin/he" } }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "node_modules/homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", @@ -10105,6 +12303,15 @@ "node": ">=8" } }, + "node_modules/htmlescape": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", + "integrity": "sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, "node_modules/htmlparser2": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", @@ -10225,6 +12432,12 @@ "npm": ">=1.3.7" } }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true + }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -10316,11 +12529,23 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true, - "peer": true, "engines": { "node": ">= 4" } }, + "node_modules/image-q": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", + "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", + "dependencies": { + "@types/node": "16.9.1" + } + }, + "node_modules/image-q/node_modules/@types/node": { + "version": "16.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", + "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" + }, "node_modules/immutable": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", @@ -10430,6 +12655,36 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, + "node_modules/inline-source-map": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", + "integrity": "sha512-0mVWSSbNDvedDWIN4wxLsdPM4a7cIPcpyMxj3QZ406QRwQ6ePGB1YIHxVPjqpcUGbWQ5C+nHTwGNWAGvt7ggVA==", + "dev": true, + "dependencies": { + "source-map": "~0.5.3" + } + }, + "node_modules/insert-module-globals": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz", + "integrity": "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==", + "dev": true, + "dependencies": { + "acorn-node": "^1.5.2", + "combine-source-map": "^0.8.0", + "concat-stream": "^1.6.1", + "is-buffer": "^1.1.0", + "JSONStream": "^1.0.3", + "path-is-absolute": "^1.0.1", + "process": "~0.11.0", + "through2": "^2.0.0", + "undeclared-identifiers": "^1.1.2", + "xtend": "^4.0.0" + }, + "bin": { + "insert-module-globals": "bin/cmd.js" + } + }, "node_modules/internal-slot": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", @@ -10461,6 +12716,22 @@ "optional": true, "peer": true }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -10524,6 +12795,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, "node_modules/is-core-module": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", @@ -10577,6 +12860,11 @@ "node": ">=8" } }, + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + }, "node_modules/is-generator-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", @@ -10586,6 +12874,21 @@ "node": ">=6" } }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -10598,6 +12901,22 @@ "node": ">=0.10.0" } }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", @@ -10642,6 +12961,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -10759,12 +13087,42 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, - "peer": true + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/is-weakref": { "version": "1.0.2", @@ -10791,9 +13149,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "node_modules/isbinaryfile": { "version": "4.0.8", @@ -10826,9 +13182,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", @@ -13967,6 +16321,24 @@ "node": ">=8" } }, + "node_modules/joi": { + "version": "17.7.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz", + "integrity": "sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/jpeg-js": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", + "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" + }, "node_modules/jquery": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", @@ -14055,9 +16427,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "node_modules/jsdoc": { "version": "3.6.10", @@ -14177,15 +16547,22 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "node_modules/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==" }, + "node_modules/json-stable-stringify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", + "integrity": "sha512-nKtD/Qxm7tWdZqJoldEC7fF0S41v0mWbeaXG3637stOWfyGxTgWTYE2wtfKmjzpvxv2MA2xzxsXOIiwUpkX6Qw==", + "dev": true, + "dependencies": { + "jsonify": "~0.0.0" + } + }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -14197,9 +16574,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "node_modules/json5": { "version": "2.2.0", @@ -14215,6 +16590,45 @@ "node": ">=6" } }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonfile/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/jsonify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, "node_modules/jsonschema": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.0.tgz", @@ -14224,6 +16638,22 @@ "node": "*" } }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, "node_modules/jsprim": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", @@ -14529,11 +16959,30 @@ "dev": true, "peer": true }, + "node_modules/labeled-stream-splicer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", + "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "stream-splicer": "^2.0.0" + } + }, "node_modules/layerr": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/layerr/-/layerr-0.1.2.tgz", "integrity": "sha512-ob5kTd9H3S4GOG2nVXyQhOu9O8nBgP555XxWPkJI0tR0JeRilfyTp8WtPdIJHLXBmHMSdEq5+KMxiYABeScsIQ==" }, + "node_modules/lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", + "dev": true, + "engines": { + "node": "> 0.8" + } + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -14591,6 +17040,109 @@ "integrity": "sha512-/VSoCZiglX0VMsXmL5PN3lRg45M86lrD9PskdkA2abWaTKap1bIcJ11LS4EE55bcUl9ZOR4eZ792UtQ9E/5xLA==", "peer": true }, + "node_modules/listr2": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", + "dev": true, + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.1", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/listr2/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/listr2/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/listr2/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/load-bmfont": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", + "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", + "dependencies": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^2.9.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + } + }, + "node_modules/load-bmfont/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/loader-runner": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", @@ -14641,18 +17193,29 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true + }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true, - "peer": true + "dev": true }, "node_modules/lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" }, + "node_modules/lodash.memoize": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", + "integrity": "sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==", + "dev": true + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -14660,6 +17223,12 @@ "dev": true, "peer": true }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true + }, "node_modules/lodash.throttle": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", @@ -14672,6 +17241,110 @@ "dev": true, "peer": true }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/log4js": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.4.1.tgz", @@ -14748,6 +17421,12 @@ "semver": "bin/semver" } }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, "node_modules/make-fetch-happen": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", @@ -14895,6 +17574,17 @@ "is-buffer": "~1.1.6" } }, + "node_modules/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, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, "node_modules/mdn-data": { "version": "2.0.28", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", @@ -14984,7 +17674,6 @@ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, - "peer": true, "engines": { "node": ">= 8" } @@ -15002,6 +17691,25 @@ "node": ">=8.6" } }, + "node_modules/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, + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "node_modules/mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", @@ -15042,6 +17750,14 @@ "node": ">=6" } }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dependencies": { + "dom-walk": "^0.1.0" + } + }, "node_modules/min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", @@ -15051,6 +17767,18 @@ "node": ">=4" } }, + "node_modules/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 + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, "node_modules/minimatch": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", @@ -15205,6 +17933,35 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "dev": true }, + "node_modules/module-deps": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz", + "integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==", + "dev": true, + "dependencies": { + "browser-resolve": "^2.0.0", + "cached-path-relative": "^1.0.2", + "concat-stream": "~1.6.0", + "defined": "^1.0.0", + "detective": "^5.2.0", + "duplexer2": "^0.1.2", + "inherits": "^2.0.1", + "JSONStream": "^1.0.3", + "parents": "^1.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.4.0", + "stream-combiner2": "^1.1.1", + "subarg": "^1.0.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" + }, + "bin": { + "module-deps": "bin/cmd.js" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/moment": { "version": "2.29.4", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", @@ -15231,12 +17988,11 @@ "dev": true }, "node_modules/nan": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", "dev": true, - "optional": true, - "peer": true + "optional": true }, "node_modules/nanoid": { "version": "3.3.4", @@ -15255,6 +18011,12 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -15660,9 +18422,9 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" }, "node_modules/node-sass": { "version": "7.0.3", @@ -15778,6 +18540,25 @@ "node": ">=8" } }, + "node_modules/node-vibrant": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/node-vibrant/-/node-vibrant-3.1.6.tgz", + "integrity": "sha512-Wlc/hQmBMOu6xon12ZJHS2N3M+I6J8DhrD3Yo6m5175v8sFkVIN+UjhKVRcO+fqvre89ASTpmiFEP3nPO13SwA==", + "dependencies": { + "@jimp/custom": "^0.16.1", + "@jimp/plugin-resize": "^0.16.1", + "@jimp/types": "^0.16.1", + "@types/lodash": "^4.14.53", + "@types/node": "^10.11.7", + "lodash": "^4.17.20", + "url": "^0.11.0" + } + }, + "node_modules/node-vibrant/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + }, "node_modules/nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", @@ -15963,6 +18744,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/omggif": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" + }, "node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -16017,6 +18803,12 @@ "node": ">= 0.8.0" } }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true + }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -16025,6 +18817,21 @@ "node": ">=0.10.0" } }, + "node_modules/ospath": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", + "dev": true + }, + "node_modules/outpipe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/outpipe/-/outpipe-1.1.1.tgz", + "integrity": "sha512-BnNY/RwnDrkmQdUa9U+OfN/Y7AWmKuUPCCd+hbRclZnnANvYpO72zp/a6Q4n829hPbdqEac31XCcsvlEvb+rtA==", + "dev": true, + "dependencies": { + "shell-quote": "^1.4.2" + } + }, "node_modules/p-limit": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", @@ -16077,8 +18884,6 @@ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "aggregate-error": "^3.0.0" }, @@ -16125,6 +18930,11 @@ "node": ">=4" } }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -16138,6 +18948,52 @@ "node": ">=6" } }, + "node_modules/parents": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", + "integrity": "sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==", + "dev": true, + "dependencies": { + "path-platform": "~0.11.15" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==" + }, + "node_modules/parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==" + }, + "node_modules/parse-bmfont-xml": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", + "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", + "dependencies": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.4.5" + } + }, + "node_modules/parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -16189,6 +19045,12 @@ "util": "^0.10.3" } }, + "node_modules/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 + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -16221,6 +19083,15 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-platform": { + "version": "0.11.15", + "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", + "integrity": "sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/path-posix": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/path-posix/-/path-posix-1.0.0.tgz", @@ -16246,11 +19117,26 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, - "peer": true, "engines": { "node": ">=8" } }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -16261,9 +19147,12 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true, - "optional": true, - "peer": true + "dev": true + }, + "node_modules/phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" }, "node_modules/picocolors": { "version": "1.0.0", @@ -16300,6 +19189,25 @@ "node": ">= 6" } }, + "node_modules/pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", + "dependencies": { + "pngjs": "^3.0.0" + }, + "bin": { + "pixelmatch": "bin/pixelmatch" + } + }, + "node_modules/pixelmatch/node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -16531,6 +19439,18 @@ "node": ">=0.10.0" } }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/pretty-format": { "version": "27.4.6", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.4.6.tgz", @@ -16569,9 +19489,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "node_modules/progress": { "version": "2.0.3", @@ -16641,6 +19559,26 @@ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -16741,6 +19679,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -16764,8 +19720,7 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "peer": true + ] }, "node_modules/quick-lru": { "version": "4.0.1", @@ -16785,6 +19740,16 @@ "safe-buffer": "^5.1.0" } }, + "node_modules/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, + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -16842,6 +19807,15 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, + "node_modules/read-only-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", + "integrity": "sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.2" + } + }, "node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -16931,8 +19905,6 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -16984,15 +19956,13 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true, - "peer": true + "dev": true }, "node_modules/regenerate-unicode-properties": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, - "peer": true, "dependencies": { "regenerate": "^1.4.2" }, @@ -17010,7 +19980,6 @@ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, - "peer": true, "dependencies": { "@babel/runtime": "^7.8.4" } @@ -17032,7 +20001,6 @@ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, - "peer": true, "dependencies": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^9.0.0", @@ -17058,15 +20026,13 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true, - "peer": true + "dev": true }, "node_modules/regjsparser": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, - "peer": true, "dependencies": { "jsesc": "~0.5.0" }, @@ -17079,7 +20045,6 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true, - "peer": true, "bin": { "jsesc": "bin/jsesc" } @@ -17118,6 +20083,15 @@ "node": ">= 6" } }, + "node_modules/request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", + "dev": true, + "dependencies": { + "throttleit": "^1.0.0" + } + }, "node_modules/request/node_modules/form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", @@ -17266,6 +20240,19 @@ "node": ">=10" } }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", @@ -17282,7 +20269,6 @@ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, - "peer": true, "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -17309,6 +20295,16 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -17328,11 +20324,19 @@ "url": "https://feross.org/support" } ], - "peer": true, "dependencies": { "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", + "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -17539,6 +20543,11 @@ } } }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, "node_modules/saxes": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", @@ -17645,6 +20654,19 @@ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, + "node_modules/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, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -17657,6 +20679,25 @@ "node": ">=8" } }, + "node_modules/shasum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", + "integrity": "sha512-UTzHm/+AzKfO9RgPgRpDIuMSNie1ubXRaljjlhFMNGYoG7z+rm9AHLPMf70R7887xboDH9Q+5YQbWKObFHEAtw==", + "dev": true, + "dependencies": { + "json-stable-stringify": "~0.0.0", + "sha.js": "~2.4.4" + } + }, + "node_modules/shasum-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", + "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==", + "dev": true, + "dependencies": { + "fast-safe-stringify": "^2.0.7" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -17678,6 +20719,15 @@ "node": ">=8" } }, + "node_modules/shell-quote": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", + "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -17704,6 +20754,26 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/sinon": { "version": "5.0.7", "resolved": "https://registry.npmjs.org/sinon/-/sinon-5.0.7.tgz", @@ -17739,7 +20809,6 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, - "peer": true, "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -17757,7 +20826,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -17773,7 +20841,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -17785,8 +20852,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true }, "node_modules/smart-buffer": { "version": "4.2.0", @@ -17969,6 +21035,12 @@ "specificity": "bin/specificity" } }, + "node_modules/split-ca": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", + "integrity": "sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==", + "dev": true + }, "node_modules/split-on-first": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", @@ -17988,13 +21060,29 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, + "node_modules/ssh2": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.11.0.tgz", + "integrity": "sha512-nfg0wZWGSsfUe/IBJkXVll3PEZ//YH2guww+mP88gTpuSU4FtZN7zu9JoeTGOyCNx2dTDtT9fOpWwlzyj4uOOw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "asn1": "^0.2.4", + "bcrypt-pbkdf": "^1.0.2" + }, + "engines": { + "node": ">=10.16.0" + }, + "optionalDependencies": { + "cpu-features": "~0.0.4", + "nan": "^2.16.0" + } + }, "node_modules/sshpk": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -18083,6 +21171,52 @@ "node": ">= 6" } }, + "node_modules/stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", + "dev": true, + "dependencies": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dev": true, + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + } + }, + "node_modules/stream-http/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/stream-splicer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", + "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" + } + }, "node_modules/streamroller": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.0.2.tgz", @@ -18435,6 +21569,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==", + "dev": true, + "dependencies": { + "minimist": "^1.1.0" + } + }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -18506,6 +21649,15 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, + "node_modules/syntax-error": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", + "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", + "dev": true, + "dependencies": { + "acorn-node": "^1.2.0" + } + }, "node_modules/tabbable": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.0.1.tgz", @@ -18761,12 +21913,45 @@ "dev": true, "peer": true }, + "node_modules/throttleit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", + "dev": true + }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/timers-browserify": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", + "integrity": "sha512-PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q==", + "dev": true, + "dependencies": { + "process": "~0.11.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/timm": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", + "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" + }, "node_modules/tiny-emitter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", @@ -18885,6 +22070,79 @@ "glob": "^7.1.2" } }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ts-node/node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/tsconfig": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", @@ -18952,17 +22210,42 @@ } }, "node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", + "dev": true }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, - "optional": true, - "peer": true, "dependencies": { "safe-buffer": "^5.0.1" }, @@ -18974,9 +22257,7 @@ "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "node_modules/type-check": { "version": "0.4.0", @@ -19025,6 +22306,12 @@ "node": ">= 0.6" } }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -19035,6 +22322,19 @@ "is-typedarray": "^1.0.0" } }, + "node_modules/typescript": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", + "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, "node_modules/ua-parser-js": { "version": "0.7.31", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", @@ -19073,6 +22373,15 @@ "node": ">=0.8.0" } }, + "node_modules/umd": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", + "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==", + "dev": true, + "bin": { + "umd": "bin/cli.js" + } + }, "node_modules/unbox-primitive": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", @@ -19122,6 +22431,22 @@ "ieee754": "^1.1.13" } }, + "node_modules/undeclared-identifiers": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", + "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", + "dev": true, + "dependencies": { + "acorn-node": "^1.3.0", + "dash-ast": "^1.0.0", + "get-assigned-identifiers": "^1.2.0", + "simple-concat": "^1.0.0", + "xtend": "^4.0.1" + }, + "bin": { + "undeclared-identifiers": "bin.js" + } + }, "node_modules/underscore": { "version": "1.13.4", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.4.tgz", @@ -19132,7 +22457,6 @@ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, - "peer": true, "engines": { "node": ">=4" } @@ -19142,7 +22466,6 @@ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, - "peer": true, "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -19156,7 +22479,6 @@ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true, - "peer": true, "engines": { "node": ">=4" } @@ -19166,7 +22488,6 @@ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true, - "peer": true, "engines": { "node": ">=4" } @@ -19211,6 +22532,40 @@ "node": ">= 0.8" } }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -19219,6 +22574,15 @@ "punycode": "^2.1.0" } }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, "node_modules/url-join": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", @@ -19238,6 +22602,11 @@ "resolved": "https://registry.npmjs.org/url-search-params-polyfill/-/url-search-params-polyfill-8.1.1.tgz", "integrity": "sha512-KmkCs6SjE6t4ihrfW9JelAPQIIIFbJweaaSLTh/4AO+c58JlDcb+GbdPt8yr5lRcFg4rPswRFRRhBGpWwh0K/Q==" }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + }, "node_modules/useragent": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", @@ -19272,6 +22641,14 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" }, + "node_modules/utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "dependencies": { + "pako": "^1.0.5" + } + }, "node_modules/util": { "version": "0.10.4", "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", @@ -19333,6 +22710,12 @@ "dev": true, "peer": true }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, "node_modules/v8-to-istanbul": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", @@ -19387,8 +22770,6 @@ "engines": [ "node >=0.6.0" ], - "optional": true, - "peer": true, "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -19399,9 +22780,13 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true, - "optional": true, - "peer": true + "dev": true + }, + "node_modules/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 }, "node_modules/void-elements": { "version": "2.0.1", @@ -19716,6 +23101,34 @@ "node": ">=12" } }, + "node_modules/wait-on": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", + "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==", + "dev": true, + "dependencies": { + "axios": "^0.25.0", + "joi": "^17.6.0", + "lodash": "^4.17.21", + "minimist": "^1.2.5", + "rxjs": "^7.5.4" + }, + "bin": { + "wait-on": "bin/wait-on" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/wait-on/node_modules/axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.14.7" + } + }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -19725,6 +23138,157 @@ "makeerror": "1.0.12" } }, + "node_modules/watchify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/watchify/-/watchify-4.0.0.tgz", + "integrity": "sha512-2Z04dxwoOeNxa11qzWumBTgSAohTC0+ScuY7XMenPnH+W2lhTcpEOJP4g2EIG/SWeLadPk47x++Yh+8BqPM/lA==", + "dev": true, + "dependencies": { + "anymatch": "^3.1.0", + "browserify": "^17.0.0", + "chokidar": "^3.4.0", + "defined": "^1.0.0", + "outpipe": "^1.1.0", + "through2": "^4.0.2", + "xtend": "^4.0.2" + }, + "bin": { + "watchify": "bin/cmd.js" + }, + "engines": { + "node": ">= 8.10.0" + } + }, + "node_modules/watchify/node_modules/browserify": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz", + "integrity": "sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==", + "dev": true, + "dependencies": { + "assert": "^1.4.0", + "browser-pack": "^6.0.1", + "browser-resolve": "^2.0.0", + "browserify-zlib": "~0.2.0", + "buffer": "~5.2.1", + "cached-path-relative": "^1.0.0", + "concat-stream": "^1.6.0", + "console-browserify": "^1.1.0", + "constants-browserify": "~1.0.0", + "crypto-browserify": "^3.0.0", + "defined": "^1.0.0", + "deps-sort": "^2.0.1", + "domain-browser": "^1.2.0", + "duplexer2": "~0.1.2", + "events": "^3.0.0", + "glob": "^7.1.0", + "has": "^1.0.0", + "htmlescape": "^1.1.0", + "https-browserify": "^1.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "^7.2.1", + "JSONStream": "^1.0.3", + "labeled-stream-splicer": "^2.0.0", + "mkdirp-classic": "^0.5.2", + "module-deps": "^6.2.3", + "os-browserify": "~0.3.0", + "parents": "^1.0.1", + "path-browserify": "^1.0.0", + "process": "~0.11.0", + "punycode": "^1.3.2", + "querystring-es3": "~0.2.0", + "read-only-stream": "^2.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.4", + "shasum-object": "^1.0.0", + "shell-quote": "^1.6.1", + "stream-browserify": "^3.0.0", + "stream-http": "^3.0.0", + "string_decoder": "^1.1.1", + "subarg": "^1.0.0", + "syntax-error": "^1.1.1", + "through2": "^2.0.0", + "timers-browserify": "^1.0.1", + "tty-browserify": "0.0.1", + "url": "~0.11.0", + "util": "~0.12.0", + "vm-browserify": "^1.0.0", + "xtend": "^4.0.0" + }, + "bin": { + "browserify": "bin/cmd.js" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/watchify/node_modules/browserify/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/watchify/node_modules/buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "dev": true, + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "node_modules/watchify/node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "node_modules/watchify/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/watchify/node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/watchify/node_modules/through2/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/watchify/node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, "node_modules/watchpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", @@ -20034,6 +23598,26 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", @@ -20149,6 +23733,17 @@ } } }, + "node_modules/xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "dependencies": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, "node_modules/xml-name-validator": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", @@ -20158,6 +23753,31 @@ "node": ">=12" } }, + "node_modules/xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==" + }, + "node_modules/xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", @@ -20170,6 +23790,14 @@ "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", "dev": true }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, "node_modules/y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", @@ -20250,6 +23878,15 @@ "fd-slicer": "~1.1.0" } }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/yocto-queue": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", @@ -20273,9 +23910,9 @@ } }, "@babel/compat-data": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz", - "integrity": "sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz", + "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==", "dev": true }, "@babel/core": { @@ -20325,13 +23962,12 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", "dev": true, - "peer": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { @@ -20339,21 +23975,20 @@ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", "dev": true, - "peer": true, "requires": { "@babel/helper-explode-assignable-expression": "^7.16.7", "@babel/types": "^7.16.7" } }, "@babel/helper-compilation-targets": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", "semver": "^6.3.0" } }, @@ -20362,7 +23997,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.7.tgz", "integrity": "sha512-kIFozAvVfK05DM4EVQYKK+zteWvY85BFdGBRQBytRyY3y+6PX0DkDOn/CZ3lEuczCfrCxEzwt0YtP/87YPTWSw==", "dev": true, - "peer": true, "requires": { "@babel/helper-annotate-as-pure": "^7.16.7", "@babel/helper-environment-visitor": "^7.16.7", @@ -20378,23 +24012,19 @@ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz", "integrity": "sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==", "dev": true, - "peer": true, "requires": { "@babel/helper-annotate-as-pure": "^7.16.7", "regexpu-core": "^4.7.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", "dev": true, - "peer": true, "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", "resolve": "^1.14.2", @@ -20415,7 +24045,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", "dev": true, - "peer": true, "requires": { "@babel/types": "^7.16.7" } @@ -20454,18 +24083,17 @@ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", "dev": true, - "peer": true, "requires": { "@babel/types": "^7.16.7" } }, "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-module-transforms": { @@ -20489,7 +24117,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", "dev": true, - "peer": true, "requires": { "@babel/types": "^7.16.7" } @@ -20505,7 +24132,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", "dev": true, - "peer": true, "requires": { "@babel/helper-annotate-as-pure": "^7.16.7", "@babel/helper-wrap-function": "^7.16.8", @@ -20517,7 +24143,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", "dev": true, - "peer": true, "requires": { "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-member-expression-to-functions": "^7.16.7", @@ -20540,7 +24165,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, - "peer": true, "requires": { "@babel/types": "^7.16.0" } @@ -20554,16 +24178,22 @@ "@babel/types": "^7.16.7" } }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true + }, "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", "dev": true }, "@babel/helper-wrap-function": { @@ -20571,7 +24201,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", "dev": true, - "peer": true, "requires": { "@babel/helper-function-name": "^7.16.7", "@babel/template": "^7.16.7", @@ -20625,7 +24254,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } @@ -20635,7 +24263,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", @@ -20647,7 +24274,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-remap-async-to-generator": "^7.16.8", @@ -20659,7 +24285,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", "dev": true, - "peer": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7" @@ -20670,7 +24295,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz", "integrity": "sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==", "dev": true, - "peer": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7", @@ -20682,7 +24306,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -20693,7 +24316,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -20704,7 +24326,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -20715,7 +24336,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -20726,7 +24346,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -20737,7 +24356,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -20748,7 +24366,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz", "integrity": "sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==", "dev": true, - "peer": true, "requires": { "@babel/compat-data": "^7.16.4", "@babel/helper-compilation-targets": "^7.16.7", @@ -20762,7 +24379,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -20773,7 +24389,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", @@ -20785,7 +24400,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.7.tgz", "integrity": "sha512-7twV3pzhrRxSwHeIvFE6coPgvo+exNDOiGUMg39o2LiLo1Y+4aKpfkcLGcg1UHonzorCt7SNXnoMyCnnIOA8Sw==", "dev": true, - "peer": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7" @@ -20796,7 +24410,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", "dev": true, - "peer": true, "requires": { "@babel/helper-annotate-as-pure": "^7.16.7", "@babel/helper-create-class-features-plugin": "^7.16.7", @@ -20809,7 +24422,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", "dev": true, - "peer": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7" @@ -20847,7 +24459,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -20857,7 +24468,6 @@ "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, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -20867,7 +24477,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" } @@ -20958,7 +24567,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -20986,7 +24594,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } @@ -20996,7 +24603,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", "dev": true, - "peer": true, "requires": { "@babel/helper-module-imports": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7", @@ -21008,7 +24614,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } @@ -21018,7 +24623,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } @@ -21028,7 +24632,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", "dev": true, - "peer": true, "requires": { "@babel/helper-annotate-as-pure": "^7.16.7", "@babel/helper-environment-visitor": "^7.16.7", @@ -21045,7 +24648,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } @@ -21055,7 +24657,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz", "integrity": "sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } @@ -21065,7 +24666,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", "dev": true, - "peer": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7" @@ -21076,7 +24676,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } @@ -21086,7 +24685,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", "dev": true, - "peer": true, "requires": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7" @@ -21097,7 +24695,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } @@ -21107,7 +24704,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", "dev": true, - "peer": true, "requires": { "@babel/helper-compilation-targets": "^7.16.7", "@babel/helper-function-name": "^7.16.7", @@ -21119,7 +24715,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } @@ -21129,7 +24724,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } @@ -21139,7 +24733,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", "dev": true, - "peer": true, "requires": { "@babel/helper-module-transforms": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7", @@ -21163,7 +24756,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz", "integrity": "sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==", "dev": true, - "peer": true, "requires": { "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-module-transforms": "^7.16.7", @@ -21177,7 +24769,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", "dev": true, - "peer": true, "requires": { "@babel/helper-module-transforms": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7" @@ -21188,7 +24779,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", "dev": true, - "peer": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.16.7" } @@ -21198,7 +24788,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } @@ -21208,7 +24797,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-replace-supers": "^7.16.7" @@ -21219,7 +24807,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } @@ -21229,17 +24816,56 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } }, + "@babel/plugin-transform-react-display-name": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", + "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", + "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.19.0" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "dev": true, + "requires": { + "@babel/plugin-transform-react-jsx": "^7.18.6" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz", + "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, "@babel/plugin-transform-regenerator": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", "dev": true, - "peer": true, "requires": { "regenerator-transform": "^0.14.2" } @@ -21249,17 +24875,50 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } }, + "@babel/plugin-transform-runtime": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz", + "integrity": "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "semver": "^6.3.0" + }, + "dependencies": { + "babel-plugin-polyfill-corejs3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + } + } + } + }, "@babel/plugin-transform-shorthand-properties": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } @@ -21269,7 +24928,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" @@ -21280,7 +24938,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } @@ -21290,7 +24947,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } @@ -21300,7 +24956,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } @@ -21310,7 +24965,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } @@ -21320,7 +24974,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", "dev": true, - "peer": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7" @@ -21352,7 +25005,6 @@ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.8.tgz", "integrity": "sha512-9rNKgVCdwHb3z1IlbMyft6yIXIeP3xz6vWvGaLHrJThuEIqWfHb0DNBH9VuTgnDfdbUDhkmkvMZS/YMCtP7Elg==", "dev": true, - "peer": true, "requires": { "@babel/compat-data": "^7.16.8", "@babel/helper-compilation-targets": "^7.16.7", @@ -21435,7 +25087,6 @@ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", @@ -21444,6 +25095,20 @@ "esutils": "^2.0.2" } }, + "@babel/preset-react": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz", + "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-react-display-name": "^7.18.6", + "@babel/plugin-transform-react-jsx": "^7.18.6", + "@babel/plugin-transform-react-jsx-development": "^7.18.6", + "@babel/plugin-transform-react-pure-annotations": "^7.18.6" + } + }, "@babel/register": { "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.18.9.tgz", @@ -21576,15 +25241,22 @@ } }, "@babel/types": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", - "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz", + "integrity": "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" } }, + "@balena/dockerignore": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz", + "integrity": "sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==", + "dev": true + }, "@bcoe/v8-coverage": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", @@ -21605,6 +25277,172 @@ "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true }, + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, + "@cypress/browserify-preprocessor": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@cypress/browserify-preprocessor/-/browserify-preprocessor-3.0.2.tgz", + "integrity": "sha512-y6mlFR+IR2cqcm3HabSp7AEcX9QfF1EUL4eOaw/7xexdhmdQU8ez6piyRopZQob4BK8oKTsc9PkupsU2rzjqMA==", + "dev": true, + "requires": { + "@babel/core": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-transform-runtime": "^7.16.0", + "@babel/preset-env": "^7.16.0", + "@babel/preset-react": "^7.16.0", + "@babel/runtime": "^7.16.0", + "babel-plugin-add-module-exports": "^1.0.4", + "babelify": "^10.0.0", + "bluebird": "^3.7.2", + "browserify": "^16.2.3", + "coffeeify": "^3.0.1", + "coffeescript": "^1.12.7", + "debug": "^4.3.2", + "fs-extra": "^9.0.0", + "lodash.clonedeep": "^4.5.0", + "through2": "^2.0.0", + "watchify": "^4.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "@cypress/request": { + "version": "2.88.10", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", + "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "http-signature": "~1.3.6", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "http-signature": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", + "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.14.1" + } + }, + "jsprim": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, + "@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, "@discoveryjs/json-ext": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", @@ -21705,6 +25543,21 @@ "optional": true, "peer": true }, + "@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, "@humanwhocodes/config-array": { "version": "0.9.2", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz", @@ -22687,6 +26540,141 @@ } } }, + "@jimp/bmp": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.2.tgz", + "integrity": "sha512-4g9vW45QfMoGhLVvaFj26h4e7cC+McHUQwyFQmNTLW4FfC1OonN9oUr2m/FEDGkTYKR7aqdXR5XUqqIkHWLaFw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "bmp-js": "^0.1.0" + } + }, + "@jimp/core": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.2.tgz", + "integrity": "sha512-dp7HcyUMzjXphXYodI6PaXue+I9PXAavbb+AN+1XqFbotN22Z12DosNPEyy+UhLY/hZiQQqUkEaJHkvV31rs+w==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "exif-parser": "^0.1.12", + "file-type": "^9.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "^0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + } + } + }, + "@jimp/custom": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.2.tgz", + "integrity": "sha512-GtNwOs4hcVS2GIbqRUf42rUuX07oLB92cj7cqxZb0ZGWwcwhnmSW0TFLAkNafXmqn9ug4VTpNvcJSUdiuECVKg==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/core": "^0.16.2" + } + }, + "@jimp/gif": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.2.tgz", + "integrity": "sha512-TMdyT9Q0paIKNtT7c5KzQD29CNCsI/t8ka28jMrBjEK7j5RRTvBfuoOnHv7pDJRCjCIqeUoaUSJ7QcciKic6CA==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "gifwrap": "^0.9.2", + "omggif": "^1.0.9" + } + }, + "@jimp/jpeg": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.2.tgz", + "integrity": "sha512-BW5gZydgq6wdIwHd+3iUNgrTklvoQc/FUKSj9meM6A0FU21lUaansRX5BDdJqHkyXJLnnlDGwDt27J+hQuBAVw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "jpeg-js": "^0.4.2" + } + }, + "@jimp/plugin-resize": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.2.tgz", + "integrity": "sha512-gE4N9l6xuwzacFZ2EPCGZCJ/xR+aX2V7GdMndIl/6kYIw5/eib1SFuF9AZLvIPSFuE1FnGo8+vT0pr++SSbhYg==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2" + } + }, + "@jimp/png": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.2.tgz", + "integrity": "sha512-sFOtOSz/tzDwXEChFQ/Nxe+0+vG3Tj0eUxnZVDUG/StXE9dI8Bqmwj3MIa0EgK5s+QG3YlnDOmlPUa4JqmeYeQ==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.2", + "pngjs": "^3.3.3" + }, + "dependencies": { + "pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" + } + } + }, + "@jimp/tiff": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.2.tgz", + "integrity": "sha512-ADcdqmtZF+U2YoaaHTzFX8D6NFpmN4WZUT0BPMerEuY7Cq8QoLYU22z2h034FrVW+Rbi1b3y04sB9iDiQAlf2w==", + "requires": { + "@babel/runtime": "^7.7.2", + "utif": "^2.0.1" + } + }, + "@jimp/types": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.2.tgz", + "integrity": "sha512-0Ue5Sq0XnDF6TirisWv5E+8uOnRcd8vRLuwocJOhF76NIlcQrz+5r2k2XWKcr3d+11n28dHLXW5TKSqrUopxhA==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/bmp": "^0.16.2", + "@jimp/gif": "^0.16.2", + "@jimp/jpeg": "^0.16.2", + "@jimp/png": "^0.16.2", + "@jimp/tiff": "^0.16.2", + "timm": "^1.6.1" + } + }, + "@jimp/utils": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.2.tgz", + "integrity": "sha512-XENrPvmigiXZQ8E2nxJqO6UVvWBLzbNwyYi3Y8Q1IECoYhYI3kgOQ0fmy4G269Vz1V0omh1bNmC42r4OfXg1Jg==", + "requires": { + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" + } + }, "@jridgewell/gen-mapping": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", @@ -22827,6 +26815,13 @@ "core-js": "^3.6.4" } }, + "@nextcloud/cypress": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/@nextcloud/cypress/-/cypress-1.0.0-beta.1.tgz", + "integrity": "sha512-2tO8lGaeMLfyNDhqSXN8FVUXV6E6MPJSBdJs7y2jMg2lljtqJFo4ofgPi4bFksAVJK0qiqZInGn3UIzqMycyqQ==", + "dev": true, + "requires": {} + }, "@nextcloud/dialogs": { "version": "4.0.0-beta.2", "resolved": "https://registry.npmjs.org/@nextcloud/dialogs/-/dialogs-4.0.0-beta.2.tgz", @@ -23380,7 +27375,6 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, - "peer": true, "requires": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -23390,15 +27384,13 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "peer": true + "dev": true }, "@nodelib/fs.walk": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "peer": true, "requires": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -23441,6 +27433,27 @@ "rimraf": "^3.0.2" } }, + "@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", + "dev": true + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, "@sinclair/typebox": { "version": "0.24.43", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.43.tgz", @@ -23760,6 +27773,30 @@ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, "@types/aria-query": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", @@ -23819,6 +27856,26 @@ "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", "dev": true }, + "@types/docker-modem": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/docker-modem/-/docker-modem-3.0.2.tgz", + "integrity": "sha512-qC7prjoEYR2QEe6SmCVfB1x3rfcQtUr1n4x89+3e0wSTMQ/KYCyf+/RAA9n2tllkkNc6//JMUZePdFRiGIWfaQ==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/ssh2": "*" + } + }, + "@types/dockerode": { + "version": "3.3.14", + "resolved": "https://registry.npmjs.org/@types/dockerode/-/dockerode-3.3.14.tgz", + "integrity": "sha512-PUTwtySPzCbjZ/uqRMBWKHtLGqBAlhnLitzHuom19NEX0KBYsQXqbVlig+zbUgYQU1paDeQURXj7QNglh1RI6A==", + "dev": true, + "requires": { + "@types/docker-modem": "*", + "@types/node": "*" + } + }, "@types/eslint": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", @@ -23946,6 +28003,11 @@ "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==", "dev": true }, + "@types/lodash": { + "version": "4.14.190", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.190.tgz", + "integrity": "sha512-5iJ3FBJBvQHQ8sFhEhJfjUP+G+LalhavTkYyrAYqz5MEJG+erSv0k9KJLb6q7++17Lafk1scaTIFXcMJlwK8Mw==" + }, "@types/markdown-it": { "version": "12.2.3", "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", @@ -23995,9 +28057,30 @@ "dev": true }, "@types/semver": { - "version": "7.3.9", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.9.tgz", - "integrity": "sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==" + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==" + }, + "@types/sinonjs__fake-timers": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", + "dev": true + }, + "@types/sizzle": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", + "dev": true + }, + "@types/ssh2": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-1.11.6.tgz", + "integrity": "sha512-8Mf6bhzYYBLEB/G6COux7DS/F5bCWwojv/qFo2yH/e4cLzAavJnxvFXrYW59iKfXdhG6OmzJcXDasgOb/s0rxw==", + "dev": true, + "requires": { + "@types/node": "*" + } }, "@types/stack-utils": { "version": "2.0.1", @@ -24057,6 +28140,154 @@ "@types/node": "*" } }, + "@typescript-eslint/eslint-plugin": { + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.45.0.tgz", + "integrity": "sha512-CXXHNlf0oL+Yg021cxgOdMHNTXD17rHkq7iW6RFHoybdFgQBjU3yIXhhcPpGwr1CjZlo6ET8C6tzX5juQoXeGA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.45.0", + "@typescript-eslint/type-utils": "5.45.0", + "@typescript-eslint/utils": "5.45.0", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.45.0.tgz", + "integrity": "sha512-brvs/WSM4fKUmF5Ot/gEve6qYiCMjm6w4HkHPfS6ZNmxTS0m0iNN4yOChImaCkqc1hRwFGqUyanMXuGal6oyyQ==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.45.0", + "@typescript-eslint/types": "5.45.0", + "@typescript-eslint/typescript-estree": "5.45.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.45.0.tgz", + "integrity": "sha512-noDMjr87Arp/PuVrtvN3dXiJstQR1+XlQ4R1EvzG+NMgXi8CuMCXpb8JqNtFHKceVSQ985BZhfRdowJzbv4yKw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.45.0", + "@typescript-eslint/visitor-keys": "5.45.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.45.0.tgz", + "integrity": "sha512-DY7BXVFSIGRGFZ574hTEyLPRiQIvI/9oGcN8t1A7f6zIs6ftbrU0nhyV26ZW//6f85avkwrLag424n+fkuoJ1Q==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.45.0", + "@typescript-eslint/utils": "5.45.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.45.0.tgz", + "integrity": "sha512-QQij+u/vgskA66azc9dCmx+rev79PzX8uDHpsqSjEFtfF2gBUTRCpvYMh2gw2ghkJabNkPlSUCimsyBEQZd1DA==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.45.0.tgz", + "integrity": "sha512-maRhLGSzqUpFcZgXxg1qc/+H0bT36lHK4APhp0AEUVrpSwXiRAomm/JGjSG+kNUio5kAa3uekCYu/47cnGn5EQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.45.0", + "@typescript-eslint/visitor-keys": "5.45.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/utils": { + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.45.0.tgz", + "integrity": "sha512-OUg2JvsVI1oIee/SwiejTot2OxwU8a7UfTFMOdlhD2y+Hl6memUSL4s98bpUTo8EpVEr0lmwlU7JSu/p2QpSvA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.45.0", + "@typescript-eslint/types": "5.45.0", + "@typescript-eslint/typescript-estree": "5.45.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + }, + "dependencies": { + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.45.0.tgz", + "integrity": "sha512-jc6Eccbn2RtQPr1s7th6jJWQHBHI6GBVQkCHoJFQ5UreaKm59Vxw+ynQUPPY2u2Amquc+7tmEoC2G52ApsGNNg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.45.0", + "eslint-visitor-keys": "^3.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + } + } + }, "@vue/compiler-sfc": { "version": "2.7.13", "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.13.tgz", @@ -24142,6 +28373,13 @@ "pretty": "^2.0.0" } }, + "@vue/tsconfig": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.1.3.tgz", + "integrity": "sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==", + "dev": true, + "requires": {} + }, "@vue/vue2-jest": { "version": "29.1.1", "resolved": "https://registry.npmjs.org/@vue/vue2-jest/-/vue2-jest-29.1.1.tgz", @@ -24374,6 +28612,17 @@ "peer": true, "requires": {} }, + "acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dev": true, + "requires": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, "acorn-walk": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", @@ -24407,8 +28656,6 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, - "optional": true, - "peer": true, "requires": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -24431,6 +28678,12 @@ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "requires": {} }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true + }, "ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -24454,6 +28707,11 @@ "color-convert": "^1.9.0" } }, + "any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" + }, "anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", @@ -24472,6 +28730,12 @@ "optional": true, "peer": true }, + "arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true + }, "are-we-there-yet": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", @@ -24499,6 +28763,12 @@ } } }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -24543,8 +28813,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "peer": true + "dev": true }, "array.prototype.flat": { "version": "1.2.5", @@ -24570,26 +28839,68 @@ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dev": true, - "optional": true, - "peer": true, "requires": { "safer-buffer": "~2.1.0" } }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "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": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "peer": true + "dev": true }, "async": { "version": "3.2.4", @@ -24610,6 +28921,12 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", @@ -24621,21 +28938,23 @@ "resolved": "https://registry.npmjs.org/autosize/-/autosize-5.0.1.tgz", "integrity": "sha512-UIWUlE4TOVPNNj2jjrU39wI4hEYbneUypEqcyRmRFIx5CC2gNdg3rQr+Zh7/3h6egbBvm33TDQjNQKtj9Tk1HA==" }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "aws4": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "axios": { "version": "0.27.2", @@ -24755,6 +29074,12 @@ "escape-string-regexp": "2.0.0" } }, + "babel-plugin-add-module-exports": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.4.tgz", + "integrity": "sha512-g+8yxHUZ60RcyaUpfNzy56OtWW+x9cyEe9j+CranqLiqbju2yf/Cy6ZtYK40EZxtrdHllzlVZgLmcOUCTlJ7Jg==", + "dev": true + }, "babel-plugin-dynamic-import-node": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", @@ -24790,14 +29115,13 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", - "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", "dev": true, - "peer": true, "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", "semver": "^6.1.1" } }, @@ -24806,7 +29130,6 @@ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.1.tgz", "integrity": "sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A==", "dev": true, - "peer": true, "requires": { "@babel/helper-define-polyfill-provider": "^0.3.1", "core-js-compat": "^3.20.0" @@ -24817,7 +29140,6 @@ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", "dev": true, - "peer": true, "requires": { "@babel/helper-define-polyfill-provider": "^0.3.1" } @@ -24852,6 +29174,13 @@ "babel-preset-current-node-syntax": "^1.0.0" } }, + "babelify": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/babelify/-/babelify-10.0.0.tgz", + "integrity": "sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg==", + "dev": true, + "requires": {} + }, "backbone": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/backbone/-/backbone-1.4.1.tgz", @@ -24886,8 +29215,6 @@ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dev": true, - "optional": true, - "peer": true, "requires": { "tweetnacl": "^0.14.3" } @@ -24937,6 +29264,12 @@ } } }, + "blob-util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true + }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -24948,6 +29281,17 @@ "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==" }, + "bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==" + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, "body-parser": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", @@ -25025,22 +29369,232 @@ "fill-range": "^7.0.1" } }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "browser-pack": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", + "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", + "dev": true, + "requires": { + "combine-source-map": "~0.8.0", + "defined": "^1.0.0", + "JSONStream": "^1.0.3", + "safe-buffer": "^5.1.1", + "through2": "^2.0.0", + "umd": "^3.0.0" + } + }, "browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", "dev": true }, + "browser-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", + "dev": true, + "requires": { + "resolve": "^1.17.0" + } + }, + "browserify": { + "version": "16.5.2", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-16.5.2.tgz", + "integrity": "sha512-TkOR1cQGdmXU9zW4YukWzWVSJwrxmNdADFbqbE3HFgQWe5wqZmOawqZ7J/8MPCwk/W8yY7Y0h+7mOtcZxLP23g==", + "dev": true, + "requires": { + "assert": "^1.4.0", + "browser-pack": "^6.0.1", + "browser-resolve": "^2.0.0", + "browserify-zlib": "~0.2.0", + "buffer": "~5.2.1", + "cached-path-relative": "^1.0.0", + "concat-stream": "^1.6.0", + "console-browserify": "^1.1.0", + "constants-browserify": "~1.0.0", + "crypto-browserify": "^3.0.0", + "defined": "^1.0.0", + "deps-sort": "^2.0.0", + "domain-browser": "^1.2.0", + "duplexer2": "~0.1.2", + "events": "^2.0.0", + "glob": "^7.1.0", + "has": "^1.0.0", + "htmlescape": "^1.1.0", + "https-browserify": "^1.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "^7.0.0", + "JSONStream": "^1.0.3", + "labeled-stream-splicer": "^2.0.0", + "mkdirp-classic": "^0.5.2", + "module-deps": "^6.2.3", + "os-browserify": "~0.3.0", + "parents": "^1.0.1", + "path-browserify": "~0.0.0", + "process": "~0.11.0", + "punycode": "^1.3.2", + "querystring-es3": "~0.2.0", + "read-only-stream": "^2.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.4", + "shasum": "^1.0.0", + "shell-quote": "^1.6.1", + "stream-browserify": "^2.0.0", + "stream-http": "^3.0.0", + "string_decoder": "^1.1.1", + "subarg": "^1.0.0", + "syntax-error": "^1.1.1", + "through2": "^2.0.0", + "timers-browserify": "^1.0.1", + "tty-browserify": "0.0.1", + "url": "~0.11.0", + "util": "~0.10.1", + "vm-browserify": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "events": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-2.1.0.tgz", + "integrity": "sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "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" + } + } + } + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "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.19.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", "requires": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" } }, "browserslist-useragent-regexp": { @@ -25130,11 +29684,35 @@ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", "dev": true }, + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==" + }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "buildcheck": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.3.tgz", + "integrity": "sha512-pziaA+p/wdVImfcbsZLNF32EiWyujlQLwolMqUQE8xpKNOH7KmZQaY8sXN7DGOEzPAElo9QTaeNRfGnf3iOJbA==", + "dev": true, + "optional": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true + }, "byte-length": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/byte-length/-/byte-length-1.0.2.tgz", @@ -25174,6 +29752,18 @@ "unique-filename": "^1.1.1" } }, + "cached-path-relative": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz", + "integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==", + "dev": true + }, + "cachedir": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "dev": true + }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -25217,17 +29807,15 @@ } }, "caniuse-lite": { - "version": "1.0.30001300", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001300.tgz", - "integrity": "sha512-cVjiJHWGcNlJi8TZVKNMnvMid3Z3TTdDHmLDzlOdIiZq138Exvo0G+G0wTdVYolxKb4AYwC+38pxodiInVtJSA==" + "version": "1.0.30001434", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz", + "integrity": "sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==" }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "catharsis": { "version": "0.9.0", @@ -25267,6 +29855,12 @@ "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" }, + "check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", + "dev": true + }, "chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -25302,6 +29896,16 @@ "integrity": "sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==", "dev": true }, + "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" + } + }, "cjs-module-lexer": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", @@ -25317,9 +29921,73 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, - "optional": true, - "peer": true + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "string-width": "^4.2.0" + } + }, + "cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "requires": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + } + } }, "clipboard": { "version": "2.0.10", @@ -25385,6 +30053,22 @@ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true }, + "coffeeify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/coffeeify/-/coffeeify-3.0.1.tgz", + "integrity": "sha512-Qjnr7UX6ldK1PHV7wCnv7AuCd4q19KTUtwJnu/6JRJB4rfm12zvcXtKdacUoePOKr1I4ka/ydKiwWpNAdsQb0g==", + "dev": true, + "requires": { + "convert-source-map": "^1.3.0", + "through2": "^2.0.0" + } + }, + "coffeescript": { + "version": "1.12.7", + "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.12.7.tgz", + "integrity": "sha512-pLXHFxQMPklVoEekowk8b3erNynC+DVJzChxS/LCBBgR6/8AJkHivkm//zbowcfc7BTCAjryuhx6gPqPRfsFoA==", + "dev": true + }, "collect-v8-coverage": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", @@ -25433,6 +30117,26 @@ "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true }, + "combine-source-map": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", + "integrity": "sha512-UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==", + "dev": true, + "requires": { + "convert-source-map": "~1.1.0", + "inline-source-map": "~0.6.0", + "lodash.memoize": "~3.0.3", + "source-map": "~0.5.3" + }, + "dependencies": { + "convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==", + "dev": true + } + } + }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -25454,6 +30158,12 @@ "dev": true, "peer": true }, + "common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true + }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -25466,6 +30176,18 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, "condense-newlines": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", @@ -25527,6 +30249,12 @@ } } }, + "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 + }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -25544,6 +30272,12 @@ "bluebird": "^3.1.1" } }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, "content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", @@ -25571,23 +30305,12 @@ "integrity": "sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw==" }, "core-js-compat": { - "version": "3.20.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.3.tgz", - "integrity": "sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw==", + "version": "3.26.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", + "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", "dev": true, - "peer": true, "requires": { - "browserslist": "^4.19.1", - "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, - "peer": true - } + "browserslist": "^4.21.4" } }, "core-js-pure": { @@ -25600,9 +30323,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "cors": { "version": "2.8.5", @@ -25628,6 +30349,68 @@ "yaml": "^1.10.0" } }, + "cpu-features": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.4.tgz", + "integrity": "sha512-fKiZ/zp1mUwQbnzb9IghXtHtDoTMtNeb8oYGx6kX2SYfhnG0HNdBEBIzB9b5KlXu5DQPhfy3mInbBxFcgwAr3A==", + "dev": true, + "optional": true, + "requires": { + "buildcheck": "0.0.3", + "nan": "^2.15.0" + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "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" + } + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, "cropperjs": { "version": "1.5.12", "resolved": "https://registry.npmjs.org/cropperjs/-/cropperjs-1.5.12.tgz", @@ -25658,6 +30441,25 @@ "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" }, + "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": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", @@ -25760,13 +30562,213 @@ "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", "dev": true }, + "cypress": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-11.2.0.tgz", + "integrity": "sha512-u61UGwtu7lpsNWLUma/FKNOsrjcI6wleNmda/TyKHe0dOBcVjbCPlp1N6uwFZ0doXev7f/91YDpU9bqDCFeBLA==", + "dev": true, + "requires": { + "@cypress/request": "^2.88.10", + "@cypress/xvfb": "^1.2.4", + "@types/node": "^14.14.31", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.6.0", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^5.1.0", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.2", + "enquirer": "^2.3.6", + "eventemitter2": "6.4.7", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-ci": "^3.0.0", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.6", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.3.2", + "supports-color": "^8.1.1", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + }, + "dependencies": { + "@types/node": { + "version": "14.18.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.33.tgz", + "integrity": "sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + }, + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", + "dev": true + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "cypress-wait-until": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/cypress-wait-until/-/cypress-wait-until-1.7.2.tgz", + "integrity": "sha512-uZ+M8/MqRcpf+FII/UZrU7g1qYZ4aVlHcgyVopnladyoBrpoaMJ4PKZDrdOJ05H5RHbr7s9Tid635X3E+ZLU/Q==", + "dev": true + }, + "dash-ast": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", + "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", + "dev": true + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, - "optional": true, - "peer": true, "requires": { "assert-plus": "^1.0.0" } @@ -25809,6 +30811,12 @@ "version": "git+ssh://git@github.com/owncloud/davclient.js.git#1ab200d099a3c2cd2ef919c3a56353ce26865994", "from": "davclient.js@git+https://github.com/owncloud/davclient.js.git#0.2.1" }, + "dayjs": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.6.tgz", + "integrity": "sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ==", + "dev": true + }, "de-indent": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", @@ -25901,6 +30909,12 @@ "object-keys": "^1.0.12" } }, + "defined": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", + "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", + "dev": true + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -25927,6 +30941,28 @@ "optional": true, "peer": true }, + "deps-sort": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", + "integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "shasum-object": "^1.0.0", + "subarg": "^1.0.0", + "through2": "^2.0.0" + } + }, + "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" + } + }, "destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -25939,6 +30975,17 @@ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true }, + "detective": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", + "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", + "dev": true, + "requires": { + "acorn-node": "^1.8.2", + "defined": "^1.0.0", + "minimist": "^1.2.6" + } + }, "devtools-protocol": { "version": "0.0.1019158", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1019158.tgz", @@ -25963,6 +31010,25 @@ "integrity": "sha512-YqiQzkrsmHMH5uuh8OdQFU9/ZpADnwzml8z0O5HvRNda+5UZsaX/xN+AAxfR2hWq1Y7HZnAzO9J5lJXOuDz2Ww==", "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" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, "dijkstrajs": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz", @@ -25973,11 +31039,66 @@ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, - "peer": true, "requires": { "path-type": "^4.0.0" } }, + "docker-modem": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-3.0.6.tgz", + "integrity": "sha512-h0Ow21gclbYsZ3mkHDfsYNDqtRhXS8fXr51bU0qr1dxgTMJj0XufbzX+jhNOvA8KuEEzn6JbvLVhXyv+fny9Uw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "readable-stream": "^3.5.0", + "split-ca": "^1.0.1", + "ssh2": "^1.11.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "dockerode": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-3.3.4.tgz", + "integrity": "sha512-3EUwuXnCU+RUlQEheDjmBE0B7q66PV9Rw5NiH1sXwINq0M9c5ERP9fxgkw36ZHOtzf4AGEEYySnkx/sACC9EgQ==", + "dev": true, + "requires": { + "@balena/dockerignore": "^1.0.2", + "docker-modem": "^3.0.0", + "tar-fs": "~2.0.1" + }, + "dependencies": { + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "tar-fs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", + "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.0.0" + } + } + } + }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -26024,6 +31145,17 @@ "entities": "^2.0.0" } }, + "dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "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 + }, "domelementtype": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", @@ -26067,6 +31199,15 @@ "domhandler": "^4.2.0" } }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, "easy-table": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.2.0.tgz", @@ -26081,8 +31222,6 @@ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "dev": true, - "optional": true, - "peer": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -26137,9 +31276,32 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.47", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.47.tgz", - "integrity": "sha512-ZHc8i3/cgeCRK/vC7W2htAG6JqUmOUgDNn/f9yY9J8UjfLjwzwOVEt4MWmgJAdvmxyrsR5KIFA/6+kUHGY0eUA==" + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } }, "emittery": { "version": "0.10.2", @@ -26268,6 +31430,15 @@ "tapable": "^2.2.0" } }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, "ent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", @@ -26736,6 +31907,15 @@ } } }, + "eslint-plugin-cypress": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.12.1.tgz", + "integrity": "sha512-c2W/uPADl5kospNDihgiLc7n87t5XhUbFDoTl6CfVkmG+kDAb5Ux10V9PoLPu9N+r7znpc+iQlcmAqT1A/89HA==", + "dev": true, + "requires": { + "globals": "^11.12.0" + } + }, "eslint-plugin-es": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", @@ -26961,8 +32141,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "peer": true + "dev": true }, "espree": { "version": "9.3.0", @@ -27043,6 +32222,12 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "eventemitter2": { + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", + "dev": true + }, "eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -27053,6 +32238,16 @@ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" }, + "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": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -27088,6 +32283,28 @@ "clone-regexp": "^2.1.0" } }, + "executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "requires": { + "pify": "^2.2.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, + "exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==" + }, "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -27155,9 +32372,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "fast-deep-equal": { "version": "3.1.3", @@ -27169,7 +32384,6 @@ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", "dev": true, - "peer": true, "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -27189,6 +32403,12 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true + }, "fast-xml-parser": { "version": "3.21.1", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.21.1.tgz", @@ -27214,7 +32434,6 @@ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, - "peer": true, "requires": { "reusify": "^1.0.4" } @@ -27237,6 +32456,23 @@ "pend": "~1.2.0" } }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + } + } + }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -27281,6 +32517,11 @@ } } }, + "file-type": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", + "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==" + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -27402,13 +32643,20 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==" }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "form-data": { "version": "4.0.0", @@ -27437,16 +32685,6 @@ "universalify": "^2.0.0" }, "dependencies": { - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, "universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -27521,20 +32759,26 @@ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, + "get-assigned-identifiers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", + "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==", + "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==" }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.3" } }, "get-package-type": { @@ -27570,17 +32814,33 @@ "get-intrinsic": "^1.1.1" } }, + "getos": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", + "dev": true, + "requires": { + "async": "^3.2.0" + } + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, - "optional": true, - "peer": true, "requires": { "assert-plus": "^1.0.0" } }, + "gifwrap": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", + "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", + "requires": { + "image-q": "^4.0.0", + "omggif": "^1.0.10" + } + }, "glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -27609,6 +32869,32 @@ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, + "global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "requires": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "requires": { + "ini": "2.0.0" + }, + "dependencies": { + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true + } + } + }, "global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", @@ -27654,7 +32940,6 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, - "peer": true, "requires": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -27710,6 +32995,15 @@ "delegate": "^3.1.2" } }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, "graceful-fs": { "version": "4.2.9", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", @@ -27833,9 +33127,9 @@ "dev": true }, "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true }, "has-tostringtag": { @@ -27855,17 +33149,68 @@ "optional": true, "peer": true }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, "hash-sum": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", "dev": true }, + "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" + } + }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "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", @@ -27912,6 +33257,12 @@ "dev": true, "peer": true }, + "htmlescape": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", + "integrity": "sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==", + "dev": true + }, "htmlparser2": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", @@ -28004,6 +33355,12 @@ "sshpk": "^1.7.0" } }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true + }, "https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -28066,8 +33423,22 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "peer": true + "dev": true + }, + "image-q": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", + "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", + "requires": { + "@types/node": "16.9.1" + }, + "dependencies": { + "@types/node": { + "version": "16.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", + "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" + } + } }, "immutable": { "version": "4.0.0", @@ -28153,6 +33524,33 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, + "inline-source-map": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", + "integrity": "sha512-0mVWSSbNDvedDWIN4wxLsdPM4a7cIPcpyMxj3QZ406QRwQ6ePGB1YIHxVPjqpcUGbWQ5C+nHTwGNWAGvt7ggVA==", + "dev": true, + "requires": { + "source-map": "~0.5.3" + } + }, + "insert-module-globals": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz", + "integrity": "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==", + "dev": true, + "requires": { + "acorn-node": "^1.5.2", + "combine-source-map": "^0.8.0", + "concat-stream": "^1.6.1", + "is-buffer": "^1.1.0", + "JSONStream": "^1.0.3", + "path-is-absolute": "^1.0.1", + "process": "~0.11.0", + "through2": "^2.0.0", + "undeclared-identifiers": "^1.1.2", + "xtend": "^4.0.0" + } + }, "internal-slot": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", @@ -28178,6 +33576,16 @@ "optional": true, "peer": true }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -28223,6 +33631,15 @@ "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true }, + "is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "requires": { + "ci-info": "^3.2.0" + } + }, "is-core-module": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", @@ -28258,12 +33675,26 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, + "is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + }, "is-generator-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -28273,6 +33704,16 @@ "is-extglob": "^2.1.1" } }, + "is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "requires": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + } + }, "is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", @@ -28302,6 +33743,12 @@ "has-tostringtag": "^1.0.0" } }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -28377,12 +33824,30 @@ "has-symbols": "^1.0.2" } }, + "is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true, - "peer": true + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true }, "is-weakref": { "version": "1.0.2", @@ -28403,9 +33868,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "isbinaryfile": { "version": "4.0.8", @@ -28429,9 +33892,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "istanbul-lib-coverage": { "version": "3.2.0", @@ -30812,6 +36273,24 @@ } } }, + "joi": { + "version": "17.7.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz", + "integrity": "sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "jpeg-js": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", + "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" + }, "jquery": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", @@ -30887,9 +36366,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "jsdoc": { "version": "3.6.10", @@ -30979,15 +36456,22 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true, - "optional": true, - "peer": true + "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==" }, + "json-stable-stringify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", + "integrity": "sha512-nKtD/Qxm7tWdZqJoldEC7fF0S41v0mWbeaXG3637stOWfyGxTgWTYE2wtfKmjzpvxv2MA2xzxsXOIiwUpkX6Qw==", + "dev": true, + "requires": { + "jsonify": "~0.0.0" + } + }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -30999,9 +36483,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "json5": { "version": "2.2.0", @@ -31011,12 +36493,52 @@ "minimist": "^1.2.5" } }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + }, + "dependencies": { + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "jsonify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", + "dev": true + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true + }, "jsonschema": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.0.tgz", "integrity": "sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw==", "dev": true }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, "jsprim": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", @@ -31256,11 +36778,27 @@ "dev": true, "peer": true }, + "labeled-stream-splicer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", + "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "stream-splicer": "^2.0.0" + } + }, "layerr": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/layerr/-/layerr-0.1.2.tgz", "integrity": "sha512-ob5kTd9H3S4GOG2nVXyQhOu9O8nBgP555XxWPkJI0tR0JeRilfyTp8WtPdIJHLXBmHMSdEq5+KMxiYABeScsIQ==" }, + "lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", + "dev": true + }, "leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -31310,6 +36848,81 @@ "integrity": "sha512-/VSoCZiglX0VMsXmL5PN3lRg45M86lrD9PskdkA2abWaTKap1bIcJ11LS4EE55bcUl9ZOR4eZ792UtQ9E/5xLA==", "peer": true }, + "listr2": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", + "dev": true, + "requires": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.1", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "load-bmfont": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", + "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", + "requires": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^2.9.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + } + } + }, "loader-runner": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", @@ -31350,18 +36963,29 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true + }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true, - "peer": true + "dev": true }, "lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" }, + "lodash.memoize": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", + "integrity": "sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==", + "dev": true + }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -31369,6 +36993,12 @@ "dev": true, "peer": true }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true + }, "lodash.throttle": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", @@ -31381,6 +37011,79 @@ "dev": true, "peer": true }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + } + }, "log4js": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.4.1.tgz", @@ -31441,6 +37144,12 @@ } } }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, "make-fetch-happen": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", @@ -31561,6 +37270,17 @@ "is-buffer": "~1.1.6" } }, + "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": "2.0.28", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", @@ -31635,8 +37355,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "peer": true + "dev": true }, "micromatch": { "version": "4.0.4", @@ -31648,6 +37367,24 @@ "picomatch": "^2.2.3" } }, + "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" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, "mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", @@ -31673,12 +37410,32 @@ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "requires": { + "dom-walk": "^0.1.0" + } + }, "min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "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": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, "minimatch": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", @@ -31798,6 +37555,29 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "dev": true }, + "module-deps": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz", + "integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==", + "dev": true, + "requires": { + "browser-resolve": "^2.0.0", + "cached-path-relative": "^1.0.2", + "concat-stream": "~1.6.0", + "defined": "^1.0.0", + "detective": "^5.2.0", + "duplexer2": "^0.1.2", + "inherits": "^2.0.1", + "JSONStream": "^1.0.3", + "parents": "^1.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.4.0", + "stream-combiner2": "^1.1.1", + "subarg": "^1.0.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" + } + }, "moment": { "version": "2.29.4", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", @@ -31818,12 +37598,11 @@ "dev": true }, "nan": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", "dev": true, - "optional": true, - "peer": true + "optional": true }, "nanoid": { "version": "3.3.4", @@ -31836,6 +37615,12 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, "negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -32166,9 +37951,9 @@ "dev": true }, "node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" }, "node-sass": { "version": "7.0.3", @@ -32258,6 +38043,27 @@ } } }, + "node-vibrant": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/node-vibrant/-/node-vibrant-3.1.6.tgz", + "integrity": "sha512-Wlc/hQmBMOu6xon12ZJHS2N3M+I6J8DhrD3Yo6m5175v8sFkVIN+UjhKVRcO+fqvre89ASTpmiFEP3nPO13SwA==", + "requires": { + "@jimp/custom": "^0.16.1", + "@jimp/plugin-resize": "^0.16.1", + "@jimp/types": "^0.16.1", + "@types/lodash": "^4.14.53", + "@types/node": "^10.11.7", + "lodash": "^4.17.20", + "url": "^0.11.0" + }, + "dependencies": { + "@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + } + } + }, "nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", @@ -32394,6 +38200,11 @@ "es-abstract": "^1.19.1" } }, + "omggif": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -32436,11 +38247,32 @@ "word-wrap": "^1.2.3" } }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true + }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" }, + "ospath": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", + "dev": true + }, + "outpipe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/outpipe/-/outpipe-1.1.1.tgz", + "integrity": "sha512-BnNY/RwnDrkmQdUa9U+OfN/Y7AWmKuUPCCd+hbRclZnnANvYpO72zp/a6Q4n829hPbdqEac31XCcsvlEvb+rtA==", + "dev": true, + "requires": { + "shell-quote": "^1.4.2" + } + }, "p-limit": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", @@ -32477,8 +38309,6 @@ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, - "optional": true, - "peer": true, "requires": { "aggregate-error": "^3.0.0" } @@ -32504,6 +38334,11 @@ "dev": true, "peer": true }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -32514,6 +38349,52 @@ "callsites": "^3.0.0" } }, + "parents": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", + "integrity": "sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==", + "dev": true, + "requires": { + "path-platform": "~0.11.15" + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==" + }, + "parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==" + }, + "parse-bmfont-xml": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", + "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", + "requires": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.4.5" + } + }, + "parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + }, "parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -32553,6 +38434,12 @@ "util": "^0.10.3" } }, + "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-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -32576,6 +38463,12 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "path-platform": { + "version": "0.11.15", + "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", + "integrity": "sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==", + "dev": true + }, "path-posix": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/path-posix/-/path-posix-1.0.0.tgz", @@ -32602,8 +38495,20 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, - "peer": 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" + } }, "pend": { "version": "1.2.0", @@ -32615,9 +38520,12 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true, - "optional": true, - "peer": true + "dev": true + }, + "phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" }, "picocolors": { "version": "1.0.0", @@ -32642,6 +38550,21 @@ "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", "dev": true }, + "pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", + "requires": { + "pngjs": "^3.0.0" + }, + "dependencies": { + "pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" + } + } + }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -32790,6 +38713,12 @@ "js-beautify": "^1.6.12" } }, + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true + }, "pretty-format": { "version": "27.4.6", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.4.6.tgz", @@ -32818,9 +38747,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "progress": { "version": "2.0.3", @@ -32881,6 +38808,28 @@ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "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" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -32953,6 +38902,17 @@ "strict-uri-encode": "^2.0.0" } }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true + }, "querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -32962,8 +38922,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "peer": true + "dev": true }, "quick-lru": { "version": "4.0.1", @@ -32980,6 +38939,16 @@ "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" + } + }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -33025,6 +38994,15 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, + "read-only-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", + "integrity": "sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, "read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -33100,8 +39078,6 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, - "optional": true, - "peer": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -33144,15 +39120,13 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true, - "peer": true + "dev": true }, "regenerate-unicode-properties": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, - "peer": true, "requires": { "regenerate": "^1.4.2" } @@ -33167,7 +39141,6 @@ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, - "peer": true, "requires": { "@babel/runtime": "^7.8.4" } @@ -33183,7 +39156,6 @@ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, - "peer": true, "requires": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^9.0.0", @@ -33203,15 +39175,13 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true, - "peer": true + "dev": true }, "regjsparser": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, - "peer": true, "requires": { "jsesc": "~0.5.0" }, @@ -33220,8 +39190,7 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true, - "peer": true + "dev": true } } }, @@ -33298,6 +39267,15 @@ } } }, + "request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", + "dev": true, + "requires": { + "throttleit": "^1.0.0" + } + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -33368,6 +39346,16 @@ "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", "dev": true }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, "retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", @@ -33380,8 +39368,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "peer": true + "dev": true }, "rfdc": { "version": "1.3.0", @@ -33398,16 +39385,34 @@ "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-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, - "peer": true, "requires": { "queue-microtask": "^1.2.2" } }, + "rxjs": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", + "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -33551,6 +39556,11 @@ "neo-async": "^2.6.2" } }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, "saxes": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", @@ -33643,6 +39653,16 @@ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "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" + } + }, "shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -33652,6 +39672,25 @@ "kind-of": "^6.0.2" } }, + "shasum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", + "integrity": "sha512-UTzHm/+AzKfO9RgPgRpDIuMSNie1ubXRaljjlhFMNGYoG7z+rm9AHLPMf70R7887xboDH9Q+5YQbWKObFHEAtw==", + "dev": true, + "requires": { + "json-stable-stringify": "~0.0.0", + "sha.js": "~2.4.4" + } + }, + "shasum-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", + "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==", + "dev": true, + "requires": { + "fast-safe-stringify": "^2.0.7" + } + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -33667,6 +39706,12 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, + "shell-quote": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", + "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", + "dev": true + }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -33690,6 +39735,12 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true + }, "sinon": { "version": "5.0.7", "resolved": "https://registry.npmjs.org/sinon/-/sinon-5.0.7.tgz", @@ -33722,7 +39773,6 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -33734,7 +39784,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -33744,7 +39793,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -33753,8 +39801,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "dev": true } } }, @@ -33911,6 +39958,12 @@ "dev": true, "peer": true }, + "split-ca": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", + "integrity": "sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==", + "dev": true + }, "split-on-first": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", @@ -33927,13 +39980,23 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, + "ssh2": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.11.0.tgz", + "integrity": "sha512-nfg0wZWGSsfUe/IBJkXVll3PEZ//YH2guww+mP88gTpuSU4FtZN7zu9JoeTGOyCNx2dTDtT9fOpWwlzyj4uOOw==", + "dev": true, + "requires": { + "asn1": "^0.2.4", + "bcrypt-pbkdf": "^1.0.2", + "cpu-features": "~0.0.4", + "nan": "^2.16.0" + } + }, "sshpk": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "dev": true, - "optional": true, - "peer": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -34004,6 +40067,51 @@ } } }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", + "dev": true, + "requires": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "stream-splicer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", + "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" + } + }, "streamroller": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.0.2.tgz", @@ -34262,6 +40370,15 @@ "postcss-value-parser": "^4.1.0" } }, + "subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==", + "dev": true, + "requires": { + "minimist": "^1.1.0" + } + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -34317,6 +40434,15 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, + "syntax-error": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", + "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", + "dev": true, + "requires": { + "acorn-node": "^1.2.0" + } + }, "tabbable": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.0.1.tgz", @@ -34511,12 +40637,42 @@ "dev": true, "peer": true }, + "throttleit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", + "dev": true + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "timers-browserify": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", + "integrity": "sha512-PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q==", + "dev": true, + "requires": { + "process": "~0.11.0" + } + }, + "timm": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", + "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" + }, "tiny-emitter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", @@ -34611,6 +40767,47 @@ "glob": "^7.1.2" } }, + "ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "dependencies": { + "acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + } + } + }, "tsconfig": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", @@ -34670,17 +40867,38 @@ } }, "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", + "dev": true }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, - "optional": true, - "peer": true, "requires": { "safe-buffer": "^5.0.1" } @@ -34689,9 +40907,7 @@ "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "type-check": { "version": "0.4.0", @@ -34725,6 +40941,12 @@ "mime-types": "~2.1.24" } }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -34735,6 +40957,12 @@ "is-typedarray": "^1.0.0" } }, + "typescript": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", + "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", + "dev": true + }, "ua-parser-js": { "version": "0.7.31", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", @@ -34754,6 +40982,12 @@ "dev": true, "optional": true }, + "umd": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", + "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==", + "dev": true + }, "unbox-primitive": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", @@ -34788,6 +41022,19 @@ } } }, + "undeclared-identifiers": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", + "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", + "dev": true, + "requires": { + "acorn-node": "^1.3.0", + "dash-ast": "^1.0.0", + "get-assigned-identifiers": "^1.2.0", + "simple-concat": "^1.0.0", + "xtend": "^4.0.1" + } + }, "underscore": { "version": "1.13.4", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.4.tgz", @@ -34797,15 +41044,13 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, - "peer": true + "dev": true }, "unicode-match-property-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, - "peer": true, "requires": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -34815,15 +41060,13 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true, - "peer": true + "dev": true }, "unicode-property-aliases-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true, - "peer": true + "dev": true }, "unique-filename": { "version": "1.1.1", @@ -34859,6 +41102,21 @@ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", "dev": true }, + "untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -34867,6 +41125,22 @@ "punycode": "^2.1.0" } }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "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": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + } + } + }, "url-join": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", @@ -34919,6 +41193,14 @@ } } }, + "utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "requires": { + "pako": "^1.0.5" + } + }, "util": { "version": "0.10.4", "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", @@ -34973,6 +41255,12 @@ "dev": true, "peer": true }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, "v8-to-istanbul": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", @@ -35015,8 +41303,6 @@ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, - "optional": true, - "peer": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -35027,12 +41313,16 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true, - "optional": true, - "peer": true + "dev": true } } }, + "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 + }, "void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", @@ -35286,6 +41576,30 @@ "xml-name-validator": "^4.0.0" } }, + "wait-on": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", + "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==", + "dev": true, + "requires": { + "axios": "^0.25.0", + "joi": "^17.6.0", + "lodash": "^4.17.21", + "minimist": "^1.2.5", + "rxjs": "^7.5.4" + }, + "dependencies": { + "axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.7" + } + } + } + }, "walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -35295,6 +41609,148 @@ "makeerror": "1.0.12" } }, + "watchify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/watchify/-/watchify-4.0.0.tgz", + "integrity": "sha512-2Z04dxwoOeNxa11qzWumBTgSAohTC0+ScuY7XMenPnH+W2lhTcpEOJP4g2EIG/SWeLadPk47x++Yh+8BqPM/lA==", + "dev": true, + "requires": { + "anymatch": "^3.1.0", + "browserify": "^17.0.0", + "chokidar": "^3.4.0", + "defined": "^1.0.0", + "outpipe": "^1.1.0", + "through2": "^4.0.2", + "xtend": "^4.0.2" + }, + "dependencies": { + "browserify": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz", + "integrity": "sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==", + "dev": true, + "requires": { + "assert": "^1.4.0", + "browser-pack": "^6.0.1", + "browser-resolve": "^2.0.0", + "browserify-zlib": "~0.2.0", + "buffer": "~5.2.1", + "cached-path-relative": "^1.0.0", + "concat-stream": "^1.6.0", + "console-browserify": "^1.1.0", + "constants-browserify": "~1.0.0", + "crypto-browserify": "^3.0.0", + "defined": "^1.0.0", + "deps-sort": "^2.0.1", + "domain-browser": "^1.2.0", + "duplexer2": "~0.1.2", + "events": "^3.0.0", + "glob": "^7.1.0", + "has": "^1.0.0", + "htmlescape": "^1.1.0", + "https-browserify": "^1.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "^7.2.1", + "JSONStream": "^1.0.3", + "labeled-stream-splicer": "^2.0.0", + "mkdirp-classic": "^0.5.2", + "module-deps": "^6.2.3", + "os-browserify": "~0.3.0", + "parents": "^1.0.1", + "path-browserify": "^1.0.0", + "process": "~0.11.0", + "punycode": "^1.3.2", + "querystring-es3": "~0.2.0", + "read-only-stream": "^2.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.4", + "shasum-object": "^1.0.0", + "shell-quote": "^1.6.1", + "stream-browserify": "^3.0.0", + "stream-http": "^3.0.0", + "string_decoder": "^1.1.1", + "subarg": "^1.0.0", + "syntax-error": "^1.1.1", + "through2": "^2.0.0", + "timers-browserify": "^1.0.1", + "tty-browserify": "0.0.1", + "url": "~0.11.0", + "util": "~0.12.0", + "vm-browserify": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "requires": { + "readable-stream": "3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + } + } + }, "watchpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", @@ -35517,6 +41973,20 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, + "which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + } + }, "wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", @@ -35605,12 +42075,42 @@ "dev": true, "requires": {} }, + "xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "requires": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, "xml-name-validator": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", "dev": true }, + "xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==" + }, + "xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" + }, "xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", @@ -35623,6 +42123,11 @@ "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", "dev": true }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, "y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", @@ -35690,6 +42195,12 @@ "fd-slicer": "~1.1.0" } }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, "yocto-queue": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", diff --git a/package.json b/package.json index 0f0e4d5e5c7..4b39657d0b9 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,10 @@ "test:jsunit": "karma start tests/karma.config.js --single-run", "sass": "sass --load-path core/css core/css/ apps/*/css", "sass:watch": "sass --watch --load-path core/css core/css/ apps/*/css", - "sass:icons": "babel-node core/src/icons.js" + "sass:icons": "babel-node core/src/icons.js", + "cypress": "npm run cypress:e2e", + "cypress:e2e": "cypress run --e2e", + "cypress:gui": "cypress open --e2e" }, "repository": { "type": "git", @@ -78,6 +81,7 @@ "moment": "^2.29.4", "moment-timezone": "^0.5.38", "nextcloud-vue-collections": "^0.10.0", + "node-vibrant": "^3.1.6", "p-limit": "^4.0.0", "p-queue": "^7.3.0", "path": "^0.12.7", @@ -107,18 +111,28 @@ }, "devDependencies": { "@babel/node": "^7.20.0", + "@cypress/browserify-preprocessor": "^3.0.2", "@nextcloud/babel-config": "^1.0.0", + "@nextcloud/cypress": "^1.0.0-beta.1", "@nextcloud/eslint-config": "^8.0.0", "@nextcloud/stylelint-config": "^2.1.2", "@testing-library/jest-dom": "^5.16.4", "@testing-library/user-event": "^14.4.3", "@testing-library/vue": "^5.8.3", + "@types/dockerode": "^3.3.14", + "@typescript-eslint/eslint-plugin": "^5.44.0", + "@typescript-eslint/parser": "^5.44.0", "@vue/test-utils": "^1.3.0", + "@vue/tsconfig": "^0.1.3", "@vue/vue2-jest": "^29.1.1", "babel-jest": "^29.0.3", "babel-loader": "^8.2.5", "babel-loader-exclude-node-modules-except": "^1.2.1", "css-loader": "^6.7.1", + "cypress": "^11.2.0", + "cypress-wait-until": "^1.7.2", + "dockerode": "^3.3.4", + "eslint-plugin-cypress": "^2.12.1", "eslint-plugin-es": "^4.1.0", "exports-loader": "^4.0.0", "file-loader": "^6.2.0", @@ -143,8 +157,12 @@ "sass-loader": "^12.6.0", "sinon": "<= 5.0.7", "style-loader": "^3.3.1", + "ts-node": "^10.9.1", + "tslib": "^2.4.1", + "typescript": "^4.9.3", "vue-loader": "^15.9.8", "vue-template-compiler": "^2.7.13", + "wait-on": "^6.0.1", "webpack": "^5.75.0", "webpack-cli": "^4.9.2", "webpack-merge": "^5.8.0" diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000000..dcf7ae20ff7 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "@vue/tsconfig/tsconfig.json", + "include": ["./**/*.ts"], + "compilerOptions": { + "types": ["node"], + "allowSyntheticDefaultImports": true, + "moduleResolution": "node", + "target": "ESNext", + "module": "esnext", + "declaration": true, + "strict": true, + "noImplicitAny": false, + "resolveJsonModule": true + }, + "ts-node": { + // these options are overrides used only by ts-node + // same as our --compilerOptions flag and our TS_NODE_COMPILER_OPTIONS environment variable + "compilerOptions": { + "module": "commonjs" + } + } +} diff --git a/webpack.common.js b/webpack.common.js index c28bd764e4e..d1a07e10800 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -166,8 +166,9 @@ module.exports = { extensions: ['*', '.js', '.vue'], symlinks: true, fallback: { - stream: require.resolve('stream-browserify'), buffer: require.resolve('buffer'), + fs: false, + stream: require.resolve('stream-browserify'), }, }, } |